Hgブランチを閉じる


103

それを使用してhg branch FeatureBranchName、開発者間で共有される中央リポジトリに公開するFeatureBranchName場合、その開発がデフォルトのブランチと正式にマージされたときに最終的にを閉じる方法はありますか?

コマンドのFeatureBranchName実行時にが表示されなかった場合にも役立ちますhg branches

回答:


158
hg commit --close-branch

ブランチを閉じるのに十分なはずです。(を参照hg commit

--close-branch

ブランチをクローズ済みとしてマークし、ブランチリストから非表示にします。

このスレッドも参照してください:

この開発ラインが行き止まりになり、もう迷惑をかけたくないので、ブランチを閉じることを期待しています。
したがって、ブランチが閉じられている場合、閉じたブランチを表示するように明示的に要求しない限り、(ブランチ、ヘッド、ログなどで)ブランチを表示するべきではありません。

閉じたブランチがリポジトリに残ることを期待していることに注意する必要があります。これは将来的に役立つ可能性があり、commit --close-branchメッセージは少なくともブランチが閉じられた理由を説明する必要があります。
枝の剪定は、まったく別のことです。


注:Mercurialと比較すると、「支店を閉鎖する」ビジネスはGitで欠落していると見なされる側面の 1つです。

gitのブランチは、常に言われますが、使用されて破棄される一時的なものであり、私が知る限り、gitにはブランチが完了したことを同僚に示す方法がありません。
これを行う唯一の方法は、それを削除するか、最終的なマージコミットが表示され、さらなる開発のためにブランチが閉じられていることを彼らに理解してもらうことです。

[Mercurialの場合]ブランチを使い終わったら、リポジトリから削除することはできません。代わりに、ブランチを閉じるコミットを発行すると、Mercurialはブランチが閉じたことを通知します。リポジトリの履歴の一部として残ります。


3
現在ではないブランチを閉じる方法はありますか?
トーマス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。私はあなたのようなMercurialのコマンド実行時に、しかし、あなたがパースエラーを取得し、我々はスペースでbranchnameを作成することができると思い更新を。スクリプトにパラメーターとしてブランチ名を渡すときに、スペース文字をエスケープすることを検討する必要がある場合があります。乾杯。
Roshan Poudyal

echo "$1 is up"ここで複製されていませんか?中thenおよび後fi?また、このようなスクリプトは、デフォルトに一度にマージするオプションをサポートしている場合にも役立ちます
YakovL

1
@YakovLはい=)。お知らせありがとうございます。スクリプトを更新しました。もちろん、オプションのマージには役立ちます。将来的に更新を試みますが、それまではスクリプトを好みに合わせてスケールすることができます=)
Roshan Poudyal
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.