【问题标题】:Make another branch default?让另一个分支默认?
【发布时间】:2011-07-22 09:58:51
【问题描述】:

我在 Bitbucket 和我的本地机器上有一个 Mercurial 存储库,它们都是最新的镜像。我创建了一个功能分支,反映在两个存储库中。我在功能分支中完成了所有工作。

功能分支现已完成,我现在想将其设为主存储库和我的本地副本的默认设置。我并不真正关心默认分支,功能分支已经做了足够多的工作,我要做的就是将其指定为新的默认分支。

我认为我不想合并也不应该?我怎样才能做到这一点,这样本地和远程都不会混淆?

【问题讨论】:

标签: mercurial branch


【解决方案1】:

只需将feature-branch 合并到default 然后关闭feature-branch

$ hg checkout default
$ hg merge feature-branch
$ hg commit
$ hg checkout feature-branch
$ hg commit --close-branch

没有更简洁和明智的方式(据我所知)“将feature-branch 设为默认值”。

一件不太好的事情,但你可以做,就是在feature-branch 之上提交default

$ hg checkout feature-branch
$ hg branch default
$ hg commit

但这会在default 分支中留下两个头,这是次优的。

【讨论】:

  • 希望有更多类似切换和重命名的东西,但如果是这样,那就这样吧!感谢您的快速回复..
【解决方案2】:

我通过关闭默认分支没有合并就成功了。

在我的开发存储库工作目录中:

$ hg update default

$ hg commit --close

然后我的开发分支成为新的默认分支。 但我不知道为什么选择我的开发分支的规则 作为新的默认值。 我想是因为这是我的 tip 吗? (或者可能是上次更改的分支?(提示?))

我也认为你下次必须重复一遍。 因为我认为我选择的分支名称被“默认”名称“覆盖”。

如果有分店名就好了。

dev-projectname-version.x=default

问候

【讨论】:

    【解决方案3】:

    从 Mercurial 2.4 开始,您可以创建一个名为 @ 的书签,然后 Mercurial 将签出该修订版的新克隆。

    但是,我仍然会尝试使用 default 作为主要开发发生的分支。这样做对于已经习惯于 Mercurial 的开发人员(Mercurial 中的 wiki describes the standard way to use branches)来说,会带来最少的惊喜。

    如果您遵循使用default 作为开发主分支的常规建议,那么您应该在合并之前关闭您的功能分支:

    $ hg update feature-branch
    $ hg commit --close-branch -m "Feature done, merging into default branch"
    $ hg update default
    $ hg merge feature-branch
    $ hg commit
    

    如果自启动功能分支以来您没有在默认分支上完成任何工作,那么此合并将是微不足道的并且没有冲突。否则你将不得不解决冲突。如果您确定要保留功能分支中的所有内容,那么您可以这样做

    $ hg merge --noninteractive --tool internal:local feature-branch
    $ hg revert --all --rev feature-branch
    

    而不仅仅是上面的hg merge。这将确保default 上的新提交看起来与feature-branch 上的最后一次提交完全相同。

    【讨论】:

    • 添加书签不起作用:“中止:书签不能具有现有分支的名称”即使分支已关闭(hg 2.7.2)
    • @user35186:感谢您的提醒。我猜这个限制是后来添加的。幸运的是,后来还添加了另一个机制:Mercurial 现在将自动签出新克隆中的 @ 书签。
    【解决方案4】:

    我想做你所描述的事情并四处寻找,直到我找到一个使用 revert 命令来做你所描述的事情的答案。这是我使用的代码:

    hg revert --all --rev ${1}

    hg commit -m "恢复分支 ${1} 为默认值"

    其中 ${1} 是修订号或分支名称。这两行实际上是 bash 脚本的一部分,但如果您想手动执行,它们本身就可以正常工作。

    如果您需要向发布分支添加热修复,但需要从默认构建(直到我们获得正确的 CI 工具并能够从分支构建并且稍后也取消发布分支),这很有用。

    【讨论】:

      猜你喜欢
      • 2017-08-03
      • 1970-01-01
      • 2021-04-16
      • 2012-02-15
      • 1970-01-01
      • 2023-03-05
      • 2016-12-12
      • 2016-07-11
      • 1970-01-01
      相关资源
      最近更新 更多