【问题标题】:How to change the default branch to push in mercurial?如何更改默认分支以推送 mercurial?
【发布时间】:2010-05-05 23:26:15
【问题描述】:

我喜欢在 Mercurial 中创建命名分支来处理可能需要一段时间才能编写代码的功能,所以当我推送时,我会执行 hg push -r default 以确保我只是将更改推送到默认分支。但是,每次执行推送或传出命令时都必须记住 -r default 是一件很痛苦的事情。

所以我尝试通过将此配置添加到我的 ~/.hgrc 来解决此问题:

[defaults]
push = push -r default
outgoing = outgoing -r default

问题是,那些配置行并不是真正的默认值,它们是别名。他们按预期工作,直到我尝试做一个hg push -r <some revision>。而我设置的“默认”只是删除了我传入的修订版。(我看到defaults are deprecated,但别名也有同样的问题)。

我试着环顾四周,但我找不到任何可以让我设置默认分支来推送并允许我在必要时覆盖它的东西。有人知道我还能做些什么吗?

ps:我确实意识到我可以为每个分支创建单独的克隆,但我宁愿不这样做。切换目录很烦人,尤其是当您共享配置或编辑器工作区时。

【问题讨论】:

    标签: mercurial dvcs branch


    【解决方案1】:

    我认为你不能用纯 mercurial 来做到这一点,除非你有一个只有那个分支的克隆(我正要建议,直到你说这不是你的那杯茶)。如果它真的要杀了你,你可以创建一个小包装脚本,如:

    #!/bin/sh
    HG=/full/path/to/hg # executable
    if echo $* | grep -P -q -- 'push.*\s-r($|\s)' ; then
       $HG $*
    else
       $HG $* -r default
    fi
    

    将其命名为“hg”并将其放在路径的前面。

    【讨论】:

    • 我不得不对脚本进行一些修改,使其不在推送和传出以外的命令中添加“-r 默认”,但非常感谢您朝着正确的方向推进。
    【解决方案2】:

    您可能在使用 Tortoise HG 吗?完全恢复到明确的分支名称将导致 Tortoise HG 在后续提交期间记住您正在处理的分支。我不确定它是从什么元数据中收集的。

    hg up -r {branchname}
    

    例如

    hg up -r dev 
    

    【讨论】:

      【解决方案3】:

      由于通常您应该在您正在工作的当前分支中推送变更集,因此我修改了 ry4an-brase 提出的上述答案,以通知推送当前分支。

      #!/bin/sh
      HG=/usr/bin/hg # executable
      
      if echo $* | grep -P -q -- 'push\s*$' ; then
          printf "\033[1;31mChanged to: hg push -r .\033[0m\n"
          $HG $* -r .
      else
          $HG $*
      fi
      

      【讨论】:

        猜你喜欢
        • 2022-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-04
        • 2011-04-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多