关闭Hg分支机构

Nat*_*ate 99 mercurial

当使用hg branch FeatureBranchName并将其发布到开发人员共享的中央仓库时,有没有办法最终关闭FeatureBranchName它的开发何时正式与默认分支合并?

如果FeatureBranchName在执行hg branches命令时不可见,也会有所帮助.

Von*_*onC 151

hg commit --close-branch
Run Code Online (Sandbox Code Playgroud)

应足以标记分支关闭.(见hg commit)

--close-branch
Run Code Online (Sandbox Code Playgroud)

将分支标记为已关闭,将其隐藏在分支列表中.

另见这个帖子:

我的期望是我关闭了一个分支,因为这条开发线已经走到了尽头,我不想再被它打扰了.
因此,当一个分支被关闭时,我不应该看到它(例如在分支,头部,日志中),除非我明确要求看到封闭的分支.

我应该注意到,我希望一个封闭的分支保留在存储库中; 它可能在将来有用,而且这个commit --close-branch消息至少应该解释为什么分支机构被关闭了.
修剪树枝完全是另一回事.


注意:与Mercurial相比,"结束分支"业务是Git中缺少的一个方面:

我们总是告诉git中的分支,使用和丢弃短暂的东西,据我所知,git没有办法向你的同事表明你已经完成了分支;
唯一的方法是删除它,或希望他们看到最后的合并提交,并了解该分支是关闭进一步开发.

[在Mercurial中]但是,当您完成分支时,您无法从存储库中删除它; 相反,您发出一个关闭分支的提交,Mercurial注意到该分支已关闭.它仍将是您的存储库历史记录的永久部分.

  • 有没有办法关闭非当前分支? (3认同)
  • @托马斯S。是的,[这个答案](/sf/ask/1618552841/)帮助我解决了这个问题。`hg debugsetparent <revision>` `hgbranch <branchOfRevision>` 请注意,顺序很重要。这将使您的存储库认为它是新版本的,而您的所有文件都来自初始版本。之后,您可以使用 --close-branch 提交,但使用 -X * 选项进行空提交。`hg commit --close-branch -X * -m "关闭分支。"` (2认同)

Ros*_*yal 7

我写了一个简单的脚本来完成分支关闭,在PruningDeadBranches找到的命令.

##脚本##

#!/bin/bash
#script to close the not required branch in mercurial

hg up -C $1
if [ $? -eq 0 ]; then
    echo "$1 is up"
else
    echo "branch not found, please recheck your argument"
    exit 1
fi 
# if we are here then the branch is up, so we do the following
hg commit --close-branch -m 'this branch no longer required' 
echo "$1 is closed"
hg up -C default
echo "default is up" 
Run Code Online (Sandbox Code Playgroud)

如何

移动到存储库的本地副本,并通过提供参数来运行此脚本.例如:

$./the_script_above.sh bad_branch_name_to_close
Run Code Online (Sandbox Code Playgroud)

它有什么作用

这样做如下:

  1. 如果分支存在,它将更新到给定分支,否则存在错误消息.
  2. 它关闭了分支.
  3. 更新默认分支.
  4. 停止.