我可以看到两种可能性(考虑到马丁的回答,你建议保留default
作为主要的开发分支)。
一个马丁已经覆盖,因此你在新的资料库做的第一件事就是“初始设置”。通常这可能包括您的标准模板.hgignore
文件。顺便说一句,我觉得这是不是一个更好的选择......
另一种选择,如果你已经承诺另一个名为分支更新到null
变更(清空你的工作目录),然后merge
进去。这会创建一个名为“default”的分支。
首先,我们将做一个开发分支的一些工作:
C:\tmp\test>hg init .
C:\tmp\test>hg branch devbranch
marked working directory as branch devbranch
C:\tmp\test>echo something > out.txt
C:\tmp\test>hg add .
adding out.txt
C:\tmp\test>hg commit -m "some work"
C:\tmp\test>hg log
changeset: 0:4631a4a10552
branch: devbranch
tag: tip
summary: some work
在这里,我们对我们的devbranch
分支合并为单一提交。当工作完成(这偶然在这种情况下,它是),我们要工作合并到我们的(不存在)default
分支。因此,我们要null
执行合并之前更新:
C:\tmp\test>hg update null
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
C:\tmp\test>hg merge devbranch
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
C:\tmp\test>hg commit -m "merged"
C:\tmp\test>hg log
changeset: 1:55e879b67c69
tag: tip
parent: -1:000000000000
parent: 0:4631a4a10552
summary: merged
changeset: 0:4631a4a10552
branch: devbranch
summary: some work
C:\tmp\test>hg branches
default 1:55e879b67c69
devbranch 0:4631a4a10552 (inactive)
正如你所看到的,在分行default
与该分支上有两个父母,-1
和0
第一变更创建。在此之后,当您想合并时,您只需更新到default
分支的提示 - hg update null
只能在第一次完成。
我接受这个,因为它是对我的问题更实际的答案。我同意Martin的看法,实际上我们可能会在处理特性之前将一些样板文件,配置文件,README等提交到默认分支。但很高兴知道我们不必为了能够在稍后将其合并为默认值而执行操作。 – 2012-01-17 18:18:46
我很高兴你能使用这个答案!当我写我的时候,我有点怀疑你真正想要什么。你也可以用'hg branch default'创建默认分支......就我所见,没有必要更新到'null'并做一个时髦的合并:-)正常的变更集有'null'作为他们的第二个家长。合并变更集有两个非'null'变更集作为父母。您已使用'null'作为第一个父级创建了一个正常的变更集。结果与'hg branch default'和'hg commit'并没有什么不同。 – 2012-01-17 22:05:35
好的。我不喜欢在'hg branch default'之后默认分支以非空父结束的事实。但是,当然也是在与null合并后的情况。无论如何,我从这次讨论中了解了更多有关hg的信息,这非常棒。在实践中,我确信我们只会确保在分支之前将某些东西置于默认状态。 – 2012-01-18 08:55:38