2013-10-11 29 views
1

我有一個父庫A.從創建符合HG轉換回其父Mercurial庫

我已經創建了包含櫻桃採摘小母庫的一個小的孩子庫B孩子Mercurial庫同步更改其他團隊使用hg-convert訪問的子文件夾列表

hg convert A B --filemap filemap.txt 

其中filemap.txt不進行任何重命名。它只包含或排除文件夾。如:

exclude * 
include folder1 
include folder2/subfolder1 
include folder2/subfolder2 
include folder2/subfolder3 
exclude folder3_that_was_pulled_in_for_some_reason 

從A轉換到B工作正常。我也可以重新運行hg convert命令來「推」A到B的後續更改(我在此處使用術語「鬆散地推...」)

但是,如果要「推送」 B回到A?運行hg convert B A沒有filemap重新創建B中的所有提交,所以我在A中有大量的重複提交。

有沒有合理的方法讓A和B在未來保持同步?如果更改以不同的順序應用於A和B,可能不可能?

回答

2

有沒有好的方法來做到這一點,這就是爲什麼convert不應該是雙向工作流程的一部分。可以遞增地使用convert,所以你可以多次使用A到B,但是你不能B到A.你可以嘗試從B和hg import中將hg export補丁裝入到A中,它可能會工作,但是當然後你再把它們變成B,他們會翻倍,合併可能會很難。

考慮將回購拆分爲兩個單獨的回購, 作爲整個回購的子存儲庫。

/projectname 
    stuff.txt 
    /folder1 
    /folder3_that_was_pulled_in_for_some_reason 
    /projectname-public 
     /folder2/subfolder1 
     /folder2/subfolder2 

projectname-public是一個子庫,那麼可以分別克隆,單獨發佈,並且可以採取拉請求和修補,並輕鬆地將它們合併。

Subrepos不適合初學者,但它們比在convert上往返更容易。

+0

感謝您的直接答覆。猜猜我的選擇是重組我的回購或放棄輕鬆同步。可能會做後者,因爲將B同步回A不如將新的更改從A推送到B. – persiflage

+0

@persiflage,如果從事B工作的團隊開始向您發送大量修訂,您可能會後悔該決定被簡單地集成:你的設置沒有共享的版本控制 - 你有一個回報,另一個回到另一個團隊,而你負責通過外部手段保持同步。 – alexis

+0

@alexis。謝謝,我明白你的意思。如果將B的變化整合回A是業務重點,那麼我會採用子庫方法。在這種情況下,業務優先級是將A中的變化傳送給B.在B項目結束時,B的變化_might_可以被重新整合到A中,但更可能的是B項目將成爲孤兒或走向獨立的方向。 – persiflage

相關問題