2010-07-26 306 views

回答

5

你可以讓他們命名分支的唯一方法是重寫他們的歷史,因爲分支的名字是歷史的一部分。然而,如果你可以在沒有分支機構過去的命名的情況下生存下來(未來是好的),那麼你可以把所有的回購機制放入主體(不合並!),然後在你的分支機構進入時標記你的分支機構。

舉例來說,如果你有MainRepo,Feature1Repo和Feature2Repo,你會做以下幾點:

$ cd MainRepo 
$ hg pull ../Feature1Repo 
$ hg pull ../Feature2Repo 

現在,如果你像TortoiseHg看DAG,你會看到一對夫婦不同的頭。從這裏,你只是hg uphg branch

$ hg up feature1headrev 
$ hg branch Feature1 
$ hg up feature2headrev 
$ hg branch Feature2 

從這裏向前,你有你命名的分支機構。

注意:如果hg pull抱怨存儲庫不相關,則可以執行hg pull -f,這將在存儲庫中創建多個尾部。這通常不是真正的分支,但它有時是有用的。

3

您可以使用hg export創建一組更改,然後將它們hg import分配給您的新分支。

比方說,你有一個共同的基礎,revA,然後兩個克隆,每個克隆分別從revA到revB和revC。

在第一個克隆:hg export -r revA -r revB > revB.patch
在第二克隆:hg export -r revA -r revC > revC.patch

現在你有一個包含在克隆的所有更改兩個補丁。

在原有的庫:

hg up revA 
hg branch branchB 
hg commit 
hg import revB.patch 
hg up revA 
hg branch branchC 
hg commit 
hg import revC.patch 

現在你有兩個命名分支從REVA分歧。如果您在revA-> revB或revA-> revC之間的區域進行合併,我不確定這會完美保留它們。

另一種選擇是使用移植擴展。或者,您可以將克隆的更改推入一個回購庫,然後將創建的頭移至新分支。

+0

你可以擴展一下嗎?我仍然在學習版本控制,並且仍然熟悉Mercurial的工作方式。 – 2010-07-26 20:25:02

+0

@奧斯汀海德你走了。 – Borealid 2010-07-26 20:35:16