2010-07-26 224 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