在mercurial中创建新的头
在我当前的工作流中,每当我需要一个分支时,我都会使用书签,但是为了从当前版本创建一个新的头部,我必须提交一些虚拟更改并返回一个版本,然后提交该版本,否则无论我有多少书签,都会提交到同一头部 例如,假设我在rev 40上:在mercurial中创建新的头,mercurial,branch,Mercurial,Branch,在我当前的工作流中,每当我需要一个分支时,我都会使用书签,但是为了从当前版本创建一个新的头部,我必须提交一些虚拟更改并返回一个版本,然后提交该版本,否则无论我有多少书签,都会提交到同一头部 例如,假设我在rev 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' # creat
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
这是常见的还是存在一些强制创建新头部的限制?我认为您希望实践nvie的工作流,因此您希望与上游合并,而不使用ff 就我所知,hg不支持在同一分支中与上游合并。如上所述,hg的头/书签是git的分支,而hg的分支是血统 因此,解决方案是在分叉点,更改书签和分支,然后可以合并分支,因为它们是不同的沿袭 您可以轻松地
hg branch-f dev
在我的示例中,即使分支未连接,也可以重新打开分支
因此,您可以有如下分支:
- 违约
- 马厩
- 特征
- 修补程序
- 特征-*
- 修补程序-*
在您的示例中不需要创建第二个头部,您不应该强制创建 工作流程的优点是,您可以停止feature
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"
完成后,您将完成新功能并将其合并回主开发分支
如果在完成功能test
后未对main
分支进行任何更改,则无法在中合并更改,因为无法将更改集合并到祖先,因此需要将main
书签移到test
书签,如下所示:
> hg update test
> hg bookmark main -f
(我相信这在
git
中被称为快进合并,如果你愿意,你可以强制合并,但据我所知没有mercurial
等价物)我没有上游,只是本地,我使用书签来避免分支,只是测试一些更改。@dhunter抱歉误解你的需要。是的,当hg up BOOKMARK-NAME
时,书签将被激活。无需道歉,感谢您的关注。我一直在查看nvie的工作流程,它非常完整,但我的公司还没有其他人使用hg,所以现在可以用一种更简单的方法了。@dhunter我同意,在我的团队中,我们遵循hg的工作流程,默认/稳定运行得很好。我认为hg的方法是鼓励人们升级到最新的stable,从而使维护更加容易。我明白了,但是当我创建两个书签并提交时,是对其中一个还是两个都写了更改?明白了,它只提交到活动书签,这正是我想要的,有太多过时的帖子“git vs mercurial”说一些关于旧版本的事情,在你自己测试之前很难知道什么是有效的。