关闭Hg分支机构

时间:2010-07-12 11:19:49

标签: mercurial

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

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

2 个答案:

答案 0 :(得分:144)

hg commit --close-branch

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

--close-branch
  

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

另见this thread

  

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

     

我应该注意到,我希望一个封闭的分支保留在存储库中;   它可能在将来有用,并且commit --close-branch消息   至少应该解释为什么分行被关闭了   Pruning branches完全是另一回事。


注意:“结束分支”业务是一个aspect seen as missing in Git, when compared to Mercurial

  

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

     

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

答案 1 :(得分:7)

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

## Script ##

#!/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" 

如何

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

$./the_script_above.sh bad_branch_name_to_close

它做什么

执行以下操作:

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