2011-01-13 26 views
3

(I是新手在水銀。和版本控制)。推輓與多個遠程位置中水銀

我使用從到位桶(水銀)一個開源框架克隆。每當框架更新我運行hg拉hg更新獲得最近的副本。現在我爲了自己的目的對該框架進行了一些修改,我在另一個存儲庫上存儲了bitbucket。現在如果更新了原始框架,我如何將這些更改合併到我自己的存儲庫中,保持我自己的更改不變。

+1

在大多數分佈式源代碼管理系統,你可以從上游的遠程存儲庫中取出ry,找到並修復合併衝突,在您的本地工作副本中檢入合併,然後最終推送到遠程存儲庫。 – sarnold 2011-01-13 10:46:43

回答

6

嗯,這是這個工作流程。

首先,你從第三方項目克隆上到位桶,要修改,所以你會得到如下的歷史在您的本地克隆:

3rd: 1---2---3 
clone: 1---2---3 

然後你在你的到位桶帳戶創建一個新的項目,並推到回購,所以現在你有:

3rd: 1---2---3 
clone: 1---2---3 
fork: 1---2---3 

「叉」這裏只是意味着公共克隆在bitbucket。

然後你做一些更改您的克隆,並推到自己的BB倉庫,現在您有:

3rd: 1---2---3 
clone: 1---2---3---4---5 
fork: 1---2---3---4---5 
在某些時候

然後,第三方更新自己的資料庫,所以現在您有:

3rd: 1---2---3---4'--5' 
clone: 1---2---3---4---5 
fork: 1---2---3---4---5 

修正號後面的數字只是表示數字相同,但變更內容不是。

在這一點上,你拉第三方改變下來到自己的克隆:

3rd: 1---2---3---4'--5' 

clone: 1---2---3---4---5 
       \ 
       \-6'--7' 

fork: 1---2---3---4---5 

然後你在你的克隆進行合併,並且還實現了一些新的變化:

3rd: 1---2---3---4'--5' 

clone: 1---2---3---4---5----8---9---10 
       \  /
       \-6'--7'-/ 

fork: 1---2---3---4---5 

,並推送到你的BB庫:

3rd: 1---2---3---4'--5' 

clone: 1---2---3---4---5----8---9---10 
       \  /
       \-6'--7'-/ 

fork: 1---2---3---4---5----8---9---10 
       \  /
       +-6'--7'-+ 

同樣,在某些時候,第三方開發板的每更新其回購:

3rd: 1---2---3---4'--5'--6'--7' 

clone: 1---2---3---4---5----8---9---10 
       \  /
       +-6'--7'-+ 

fork: 1---2---3---4---5----8---9---10 
       \  /
       +-6'--7'-+ 

所以你重複這個過程,第一拉:

​​

您合併:

3rd: 1---2---3---4'--5'--6'--7' 

clone: 1---2---3---4---5----8---9---10---13 
       \  /  /
       +-6'--7'-+--11'---12'-+ 


fork: 1---2---3---4---5----8---9---10 
       \  /
       \-6'--7'-/ 

推:

3rd: 1---2---3---4'--5'--6'--7' 

clone: 1---2---3---4---5----8---9---10---13 
       \  /  /
       +-6'--7'-+--11'---12'-+  <-- 11' and 12' corresponds to 6'/7' 

fork: 1---2---3---4---5----8---9---10---13 
       \  /  /
       +-6'--7'-+--11'---12'-+ 
+0

感謝細節。現在看起來很容易。 :) – iamgopal 2011-01-16 07:44:43