1

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

例如,假设我在第 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

这是常见的还是有一些捷径可以强制创建一个新的头部?

4

2 回答 2

1

我想你想练习 nvie 的工作流程,所以你想用 --no-ff 与上游合并。

据我所知, hg 不支持与同一分支中的上游合并。正如这篇文章所说,hg 的头/书签是 git't 分支,而 hg 的分支是血统。

因此,解决方案是在分叉点,您更改书签和分支,然后您可以合并分支,因为它们是不同的沿袭。

在我的示例中,您可以轻松地hg branch -f dev重新打开分支,即使它们没有连接。

所以你可以有这样的分支:

  • 默认
  • 稳定的
  • 特征
  • 修补程序

那么书签的前缀应该是:

  • 特征-*
  • 修补程序-*

并且它们应该从相应的分支分支出来。

然后他们可以

我的示例的 Graphlog

于 2013-03-05T22:16:02.013 回答
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那么您无法合并更改,因为您无法将变更集合并到祖先中,因此您需要将main书签移动到test书签如下:

> hg update test
> hg bookmark main -f

(我相信这被称为快进合并,如果你愿意,你可以强制合并,但据我所知git没有等价物)mercurial

于 2013-03-05T22:23:37.757 回答