【问题标题】:Pushing multiple heads with Mercurial用 Mercurial 推多个头
【发布时间】:2011-04-15 03:40:10
【问题描述】:

对于这样的工作流程,

$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 从未在存储库“标签”链接上显示此书签。

【问题讨论】:

  • 创建远程磁头和推送书签是不一样的——记得hg push -B bkname发送你的书签,同样,它们必须手动拉入。当前的bitbucket(DEC2011)支持书签为“分支”,虽然更新似乎很慢:(

标签: mercurial bitbucket


【解决方案1】:

你正在做的很好。 “不要使用push -f”是给那些拉过头、有多个头并且不知道这意味着什么的人的建议。

书签不会显示在 bitbucket 上。当然,变更集将显示为 head,但 boomarks 不会存储在 repo 中。当两个 1.6 或更高版本 Mercurial 的推送/拉取变更集时,它们会带外传输书签,但 bitbucket 尚不支持(据我所知)。

【讨论】:

  • 当前版本的 bitbucket(截至 2011 年 12 月)支持书签。当然,它们必须被远程推送(hg push -B bkname),而且它们似乎不会触发修订图缓存的“刷新”(grr!)......但它们出现在“分支”下......最终。
  • 拉取请求仍然不支持书签。见bitbucket.org/site/master/issue/6705/…
  • 从书签拉取请求不是超级用户友好,但支持 - stackoverflow.com/questions/21726865/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多