使用Mercurial推动多个头

时间:2011-04-15 03:40:10

标签: mercurial bitbucket

对于像这样的工作流程,

$hg clone <bitbucket repo>
... fix, fix ...
$hg commit -m "good comment!"

$hg bookmark stable 
...new fix on stable...
$hg commit -m "new fix on stable bookmark"

$hg bookmark experimental --> I would like to defer merging until its stable.
... hack hack more hack ....
$hg commit -m "more hack on experimental"
$created new head

$hg push <bitbucket repo>
"abort: push creates new remote heads!"
(did you forget to merge? use push -f to force)

我读了很多说'永远不要用push -f强制'。

但是,是的,实验头需要被推动,因为我不想合并直到其足够稳定。我不想在我的机器上保留对这个书签的更改太长时间(如果系统崩溃会发生什么?)我想拉这个书签并稍后继续实验。它虽然是一种“集中”的方法。 什么是应对各种情况的最佳方式? 有没有办法使用书签来处理这个工作流程?不想使用命名分支。

注意:我刚使用'push -f',但Bitbucket从未在存储库的“标签”链接上显示此书签。

1 个答案:

答案 0 :(得分:11)

你正在做的事情很好。 “不要使用push -f”是针对那些已经拉扯,多头,并且不知道这意味着什么的人的建议。

书签不会出现在bitbucket上。当然,变更集将显示为头部,但是标记不会存储在仓库中。当两个版本1.6或更高版本Mercurial的推/拉变更集时,他们会在带外传输书签,但bitbucket还没有支持(据我所知)。