Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mercurial中创建新的头_Mercurial_Branch - Fatal编程技术网

在mercurial中创建新的头

在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

在我当前的工作流中,每当我需要一个分支时,我都会使用书签,但是为了从当前版本创建一个新的头部,我必须提交一些虚拟更改并返回一个版本,然后提交该版本,否则无论我有多少书签,都会提交到同一头部

例如,假设我在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' # 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”说一些关于旧版本的事情,在你自己测试之前很难知道什么是有效的。