在我当前的工作流程中,每当我需要分支时,我都会使用书签,但是为了从当前版本创建一个新头,我必须提交一些虚拟更改并返回一个修订版,然后提交到那个,否则提交将无论我有多少书签,都要做同一个头。
例如,假设我在转40:
hg bookmark main
hg ci somefile -m 'dummy commit' # on rev 41 now
hg up -r 40
# make some changes
hg ci -A -m 'changes in bookmark' # created new head
hg bookmark test
这是常见还是有一些迫使创建一个新头?
答案 0 :(得分:1)
我认为您想要练习nvie的工作流程,因此您希望使用--no-ff与上游合并。
据我所知,hg不支持在同一分支中与上游合并。正如这个post所说,hg的头部/书签是git't分支,而hg的分支是血统。
因此,解决方案是在分叉点,你改变书签和分支,然后你可以合并分支,因为它们是不同的血统。
您可以在我的示例中轻松hg branch -f dev
,即使没有连接,也要重新打开分支。
所以你可以拥有像:
这样的分支然后书签应该是前缀:
他们应该分支相应的分支。
然后他们可以
答案 1 :(得分:1)
您的示例中不需要创建第二个头,您也不应该强制创建它。
您的工作流程的优势在于您可以停止使用功能test
来对主分支执行更紧急的更改,如下所示:
> hg bookmark main
> hg bookmark test # Start work on feature test
... do some code ...
> hg commit -m "Working on feature test"
> hg update main # Stop working on test, start working on main
... do an urgent fix ...
> hg commit -m "Urgent fix"
> hg update test # Back to work on feature test
... do some more code ...
> hg update main # Finished the work so back to main
> hg merge test # Merge the work into main
> hg commit -m "Merge in feature test"
完成后,您将完成新功能并将其合并回主开发分支。
如果您在处理完功能main
后未对test
分支进行任何更改,那么您无法尽可能地合并这些更改' t将变更集合并到祖先中,因此您需要将main
书签移动到test
书签,如下所示:
> hg update test
> hg bookmark main -f
(我相信这被称为git
中的快进合并,你可以根据需要强制合并,但据我所知,没有mercurial
等价物。