关闭汞分行


103

当使用hg branch FeatureBranchName它并将其发布到开发人员之间共享的中央存储库时,是否有一种方法可以最终关闭FeatureBranchName当其开发已与默认分支正式合并时?

如果FeatureBranchName在执行hg branches命令时看不到,这也将很有帮助。

Answers:


158
hg commit --close-branch

应该足以标记分支关闭。(请参阅hg commit

--close-branch

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

另请参见此线程

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

我应该注意,我希望封闭的分支保留在资源库中。将来可能会有用,并且该commit --close-branch消息至少应说明分支为什么关闭。
修剪分支完全是另一回事。


注意:与Mercurial相比,“关闭分支机构”业务是Git中缺少的一个方面

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

[在Mercurial中]但是,完成分支后,就无法将其从存储库中删除。相反,您发出关闭分支的提交,Mercurial指出分支已关闭。它将一直是您存储库历史记录的永久部分。


3
有没有办法关闭非当前分支?
Thomas S.

@ThomasS。5年后,我不确定。该文档最近已更新:mercurial.808500.n3.nabble.com/…–
VonC

1
@ThomasS。是的,这个答案帮助我解决了这个问题。 hg debugsetparent <revision> hg branch <branchOfRevision> 请注意,顺序很重要。这将使您的存储库认为它在新修订版上,而所有文件都来自初始版本。之后,可以使用--close-branch提交,但可以使用-X *选项进行空提交。 hg commit --close-branch -X * -m "Closing branch."
Maske

8

我写了一个简单的脚本来完成分支的关闭,这些命令可以在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" 

如何

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

$./the_script_above.sh bad_branch_name_to_close

它有什么作用

这将执行以下操作:

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

该脚本不处理名称中带有空格的分支。
贾里德(Jared)

@Jared您可以通过分支运行独立的up命令吗?例如:$ hg update yourbranchnamecontainingspace。我认为我们可以用空格创建一个分支名称,但是当您运行诸如update之类的辅助命令时,您会遇到解析错误。您可能希望在将分支名称作为参数传递给脚本时考虑转义空格字符。干杯。
Roshan Poudyal,2016年

echo "$1 is up"这里没有重复吗?在then之后fi?此外,如果支持立即合并到默认选项的脚本,这种脚本可能会有所帮助
YakovL

1
@YakovL yes =)。感谢您的通知。我更新了脚本。当然,这对于可选合并会有所帮助,我会在将来尝试更新,但在此之前,您可以根据自己的喜好缩放脚本=)
Roshan Poudyal
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.