2009-05-26 61 views
1

我是Windows上的一個mercurial用戶,我試圖編寫一個批處理文件來檢查存儲在公共文件夾中的多個存儲庫的傳入更改(即可能有10個或者在主文件夾下的小型水銀回購)。我有以下批處理文件成功地遍歷多個存儲庫並運行hg傳入。但是,當我發現有一個遠程更改的存儲庫時,我似乎無法執行hg -pull -u。mercurial windows批處理文件用於將更改提取到多個存儲庫

FOR /D /r %%G in (".hg*") DO (
    @echo Processing: %%G 
    cd /d %%G\.. 
    hg incoming 
    IF NOT ERRORLEVEL 0 (
     echo Pulling changes from the server 
     hg pull -u 
    ) 
    cd.. 
    ) 

我很確定問題在於If語句。 hg傳入似乎沒有可以被ERRORLEVEL解釋的返回值。這是正確的方法,還是應該使用python?

+0

我已經結束了創建兩個批處理文件。一個執行hg pull,另一個執行hg更新。這似乎是最安全的解決方案,因爲hg pull的輸出表明是否需要合併或可以簡單更新回購。非常感謝您的回覆。 – Bluebill 2009-05-26 12:11:36

回答

3

hg incominghg outgoing退出代碼是1如果沒有呼入/呼出的變更和0否則這意味着你的測試是倒退。 (退出代碼已記錄在案,因爲這問題有人問,現在可在hg help incominghg help outgoing被發現。)

而且,這樣做既hg incominghg pull做這項工作兩次:你只需要使用hg pull。爲hg incoming幫助說:

對於遠程倉庫,使用--bundle避免下載 的變更兩次,如果傳入的後面拉。

所以你實際上下載所有變更集兩次,使用兩倍的帶寬。

+0

我的印象是,hg傳入和傳出只是預覽將會被拉/推而不實際拉動所有變化集。如果我理解正確hg傳入抓取變更集,並完成時拋棄他們?如果是這種情況,那麼簡單地使用hg pull -u就足夠了。 – Bluebill 2009-05-26 11:59:20

相關問題