关闭汞分行

当使用 hg branch FeatureBranchName并将其发布到开发人员共享的中央回购协议中时,是否有办法在其开发正式与默认分支合并后最终关闭 FeatureBranchName

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

87415 次浏览
hg commit --close-branch

should be enough to mark a branch close. (see hg commit)

--close-branch

mark a branch as closed, hiding it from the branch list.

See also this thread:

My expectation is that I close a branch because this line of development has come to a dead end, and I don't want to be bothered with it any more.
Therefore, when a branch has been closed I shouldn't see it (in branches, heads, log, for instance) unless I explicitly ask to see closed branches.

I should note that I expect a closed branch to remain in the repository; it may be useful in the future, and the commit --close-branch message should at least explain why the branch was closed.
Pruning branches is another thing altogether.


Note: that "closing branch" business is one aspect seen as missing in Git, when compared to Mercurial:

Branches in git are, we’re always told, ephemeral things to be used and thrown away, and so far as I know git doesn’t have a way to indicate to your colleagues that you’re done with a branch;
the only way to do this is to delete it, or to hope they see the final merge commit and understand that the branch is closed to further development.

[In Mercurial] When you’re done with a branch, however, you cannot delete it from the repository; instead, you issue a commit which closes the branch, and Mercurial notes that the branch is closed. It’ll remain a permanent part of your repository history.

I wrote a simple script that completes the branch close, commands found at 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"

How to

Move to the local copy of the repository, and run this script by giving an argument. For example:

$./the_script_above.sh bad_branch_name_to_close

What does it do

This does the following:

  1. If the branch exists, it updates to the given branch or else exists with an error message.
  2. It closes the branch.
  3. Updates to the default branch.
  4. Stops.