2010-12-23 196 views
3

有沒有辦法讓Mercurial讀取我想從響應文件中提供的大部分/所有命令,選項和參數,而不是在命令行上傳遞它們?Mercurial命令行客戶端,從文件中讀取命令,選項和參數?

例如,而不是這樣的:

hg commit -m "commit message" --INCLUDE file1 --INCLUDE file2 ... 

我會創建一個包含

-m "commit message" --INCLUDE file1 --INCLUDE file2 ... 

一個文本文件,然後問水銀與這個(hyphotetical)語法來閱讀:

hg commit @responses.txt 

我問的原因是我爲Mercurial co創建了一個.NET包裝庫命令行客戶端,這個問題讓我擔心命令行的長度在某些時候對我來說可能是個問題:「Resulting command line for hg.exe too long」 error in Mercurial

回答

1

就我所知,沒有內置的方法可以做到這一點,但我認爲有一種方法可以構建您所需的內容。使用Mercurial internal API並編寫自己的包裝腳本。而不是試圖讓它讀取任何和所有的命令和選項,堅持你的特定目標(即「提交」和你需要的選項)會更容易。 (注意API頁面上的警告如果你正在構建的這個包裝將被分發給其他人,請查看許可問題並制定如何處理未來Mercurial升級的計劃,這可能會破壞你的)

+0

這意味着我將不得不使用Mercurial的python版本。由於我正在編寫自己的包裝庫,因此我認爲我會堅持使用完全不需要Python的純二進制版本,它隨附了自己的Python庫。 – 2011-01-02 00:04:20

0

這裏有一個缺憾解決辦法...

  1. 創建一個虛擬,在回購的.hg目錄空響應文件,例如.hg \響應。

  2. 在回購的.hg \ hgrc,添加行

    %include response

  3. 做任何存儲庫操作之前,寫命令行選項來此響應文件。使用[defaults]部分(我知道已棄用)指定您的選項。

    [defaults]
    commit = -m "This is a commit message" -I file1 -I file2 ...

(據Microsoft's support,最大的命令行是XP 8,191個字符及更高版本。如果你甚至需要用這一招可能是需要了解的。)

+0

因爲我正在爲Mercurial編寫一個包裝庫,所以我會避免修改不屬於我的存儲庫的hgrc文件,並且包括其他人可能擁有並使用我的庫的任何存儲庫。我已經開始了一個遊說活動,以獲得內置在Mercurial中的正確響應文件。 – 2011-01-02 00:05:08