2012-05-08 20 views
8

Mercurial - ブランチが作成されコミットされた後(ブランチと中央リポジトリの両方で)ブランチの名前変更を行うために必要なステップは何ですか?Mercurialのブランチにコミットされた名前を変更

たとえば、私はZeldaというブランチを作成し、コミットしてセントラルリポジトリにプッシュしました。私は今、支店の名前をTriforceに変更したいと思っています。

これを実行する拡張機能はありますか?どのような拡張ソリューションに加えて、長い道のりがありますか?

+3

多分このスレッドの答えは適合します:http://stackoverflow.com/questions/4378684/mercurial-can-i-rename-a-branch – birryree

答えて

10

短い答えはです。

長い答えは、Mercurialブランチはという名前で、チェンジセットにはという名前が付けられています。 zeldaブランチにコミットされたいくつかのチェンジセットがある場合、それらのチェンジセットを再作成せずにそのブランチの名前を変更することはできません。これは履歴を書き換えることを意味します。あなたはレポで、中央レポの両方で、これらのチェンジセットを取り除く

た場合でも、その後、ブランチにトライフォースを属するものとしてそれらを再作成し、再度「名前を変更」ブランチをプッシュし、あなたの協力者のすべてが終わるだろうチェンジセットの2つのコピーを持ち、1つはブランチに設定します。zelda、別のブランチで、triforce

だから、あなたがするべきことはhttps://stackoverflow.com/a/7245187/67988に記載されています。そこから引用するには、ブランチ名に合わせて調整してください。すなわち、zeldaは閉じられる古いブランチで、triforceは新しいブランチです。

hg update zelda 
hg commit --close-branch -m "mgmt: Close branch zelda" 
hg branch triforce 
hg commit -m "mgmt: Create branch triforce" 
hg push --new-branch 

P.S.他の誰も中央のレポから引っ張られていない場合は、そこからzeldaを取り除くことができます。または、他のすべてのdevsのPC(管理された環境を想定している)にアクセスしていて、本当に1つの非常に危険な道に行きたい場合は、このブランチをすべてのreposから取り除くことができます。これは間違いなく良い習慣とはみなされず、最後の手段としてのみ使用できます。

+1

良い答え。しかし、私は 'triforce'を開く前に' zelda'を閉じて歴史を線形に保ちます。私はそれがきれいに見えると思う。 –

+0

@MartinGeisler:あなたの提案通りに支店でいくつか問題が発生したことを思い出します。私が覚えている限り、hgwebでは、クローズされたブランチがクローズドではなく、非アクティブとして表示されました。私は知らないかもしれませんが、これは修正されたバグだったかもしれませんが、通常はセーフティサイドにするだけでクローズチェンジセットを残しています。 – Helgi

+1

現代版のMercurialでは、hgwebに* closed *ブランチが淡い色で表示されます。 * inactive *ブランチは、少なくとも "paper"というデフォルトスタイルではなく、異なったスタイルになっています。マージする前に閉じているということは、あなたの歴史のトポロジカルな頭部が少なくなったことを意味します。一部のプロトコル要求では、すべてのトポロジカルヘッドのハッシュが送信されるため、ヘッド数を制限するとパフォーマンスが向上します。以前は、多くのヘッドがHTTP要求を一般的なWebサーバーで許可されている最大長を超えるようにすることができましたが、代わりにHTTPヘッダーでデータを送信します。 –

関連する問題