【问题标题】:Merge and commit in a single step with Mercurial使用 Mercurial 一步合并和提交
【发布时间】:2014-05-15 14:59:02
【问题描述】:

在 Mercurial 上,如果我想合并一个分支,我总是必须分两步执行:

hg merge my_branch
hg ci -m "I just merged my branch"

有没有一种方法可以在单个命令中执行相同的操作(如果发现冲突则中止它)?

hg merge my_branch -ci "I merged my branch" 

【问题讨论】:

    标签: bash merge mercurial


    【解决方案1】:

    hg merge my_branch && hg ci -m "I just merged my branch" 可以接受还是只需要给hg 打一次电话?

    && 只有在第一个成功返回时才会执行以下命令。

    编辑:

    如果您需要将命令作为带参数的别名,这会变得有点复杂,因为别名不接受参数。您可以使用函数并为其命名:

    branch_and_commit() { hg merge $1 && hg ci -m $2; } ; alias bac=branch_and_commit

    你可以这样称呼它:

    bac my_branch_id "this is the comment"

    【讨论】:

    • 我可能会,但如果我想扩展它以便在单行中包含最新的 my_branch 变更集 ID,我正在寻找类似别名的东西。
    • bac 别名会放在 hgrc 文件中吗?在那里包含它是否有效?
    • 我会把它放在 .bashrc 中以便随时可用,并将它与我的其他别名组合在一起。
    • bac 必须移动到 shell-alias 到 .hgrc 中才能拥有hg bac ...
    【解决方案2】:

    我不建议同时执行这两个操作。主要原因是,在合并冲突期间,您需要在提交之前解决它。因此,当第一个操作失败时,您将处于需要再次提交的状态。

    如果您需要这样做,为了简化理想案例工作流程,至少创建一个脚本来处理冲突案例并恢复到起始修订,以便用户可以正常合并和提交。但是使用一个简单的别名最终会给你带来更多的麻烦而不是帮助你。

    【讨论】:

    • 虽然我喜欢@eric 方法的简单性,但我认为这是正确的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多