2010-07-27 48 views
1

我加入了一個擁有綠地代碼的團隊。當我加入時,他們沒有共同的存儲庫,他們通過電子郵件向我發送了最新的tarball。 (是的,我知道...)我一直在努力解決這個tarball問題,進行更改和添加文件。現在團隊擁有一個Mercurial倉庫(hooray!),並且已經使用包含其他人最近更改的相同代碼進行填充。換句話說,我的目錄中有原始的tarballed代碼,我在另一個目錄中進行了更改,第三個目錄中有一個hg克隆,原始的目標代碼是共同的祖先。如何使用Mercurial合併在存儲庫之外進行的更改?

什麼是將我的更改合併到Mercurial存儲庫的好方法? Mercurial沒有共同祖先的歷史。我是Mercurial的全新品牌。我的VCS體驗是CVS,Perforce和一些SVN。我可以創建兩個本地hg克隆,並使用原始代碼重寫一個,另一個使用我更改後的代碼,並使用Mercurial以某種方式合併它們? (如果是這樣,如何?)或者我應該考慮使用一個獨立的合併工具,然後將合併版本複製到我的克隆目錄中?或者是其他東西?

這些都在RHE Linux上。

謝謝。嘗試

回答

1

一種選擇是這樣的:

diff -urN your-original-tarball your-current-code > mychanges.patch 
hg clone their-current-repo your-local-clone 
cd your-local-clone 
hg update -r 0 # go to their oldest item in history 
hg import --no-commit ../mychanges.patch 
# check it out, test, fix any rejected changes, etc. 
hg commit -m 'my changes' # <-- you'll be warned this creates new heads 
hg merge # merge your changes with their changes since they started using mercurial 
hg commit -m 'merged my solo work with yours' 

這是把所有的工作至今,進口其作爲基於最早修訂了新的變更,他們確實有,然後合併與工作的自從他們開始使用它後,在mercurial上工作。

理想情況下,他們的r0將是他們給你的tarball,但有一個希望是沒有太大的不同。

+0

謝謝你的迴應;我不知道你可以導入這樣的補丁。事實證明,他們的新代碼與原始tarball有顯着的變化,目錄結構有一些變化,這些變化混淆了我的diff工具。我想我需要使用獨立的合併實用程序逐個文件。 *嘆* – jasper77 2010-07-27 20:06:32

+0

無賴。 Mercurial將啓動任何合併工具,教您如何啓動http://mercurial.selenic.com/wiki/MergeToolConfiguration,您可以在'hg merge'和'hg commit'步驟之間使用'hg resolve'來迭代處理它。 – 2010-07-27 21:22:23

相關問題