Mercurial では、いくつかの方法で物事を保留にすることができます。最も簡単な方法は、どこにもプッシュしないことです。歴史を遡ってから
$ hg update 3200
あなたが使用することができます
$ hg push -r .
リビジョン 3200 までのみプッシュします。これ.
は重要です — これは、作業コピーの親リビジョン、この場合は 3200 を意味します。リビジョン 3200 は、まだリビジョン 3201 ~ 3206 を持っているため、ローカル リポジトリの「ヒント」にはなりません。番号付きのリビジョンは、常に「ヒント」と呼ばれるものです。つまり、履歴は次のようになります。
[3199] -- [3200] -- [3201] ... [3205] -- [3206]
^ ^
"." "tip"
ここで、現在の作業コピーの親リビジョンとヒント リビジョンをマークしました。
リビジョン 3200 に基づいて作業を開始すると、グラフは次のように変化します。
[3199] -- [3200] -- [3201] ... [3205] -- [3206]
\
\-------------------------------- [3207]
^
".", "tip"
「ヒント」を強調しすぎないようにしてください。それは常に変化し、一般的にあまり興味深いものではありません。3206 に戻ってコミットすると、ヒントはリポジトリに新しく作成されたリビジョン 3208 を示します。別のリポジトリでは、tip は、あなたからプルされたものとプルされた時期に応じて、別のものになる可能性があります。
頻繁に行う必要がある場合は、エイリアスhg push -r .
を作成することをお勧めします。このようなエイリアスはより穏やかなプッシュになるため、「ナッジ」と呼ぶことができます。
[alias]
nudge = push -r .
ツールボックスにそれがあれば、いつでもできる
$ hg nudge
作成したばかりの変更セットをサーバーに送信するため、保留にした可能性のある他のブランチを送信することを心配する必要はありません。
最後に、使用できることを覚えておいてください
$ hg update 3206
$ hg commit --close-branch -m "Abandoning this line of development"
3206チェンジセットを「クローズ」としてマークします。これは、 に表示されhg heads
ず、実行時にマージの対象とは見なされないことを意味しますhg merge
。サーバーにプッシュする場合は使用する必要がありますhg push --force
が、複数の開いたヘッドを作成していないため、別の閉じたヘッドを追加するだけで問題ありません。
複数のオープン ヘッドの問題は、新しいヘッドがhg clone
そのうちの 1 つに更新される可能性があり、混乱を招く可能性があることです。人々はどこから作業を開始すればよいかわかりません。Mercurial の最近のバージョンでは、hg clone
クローズド ヘッドに更新されないため、この問題を回避できます。
閉じたヘッドは、それに基づいて子コミットを作成するだけで再度開くことができます。これは、ある時点でブランチが閉じられたことを示すグラフ内のメモを除いて、悪影響を与えることなく開発ラインを一時的に閉じることができることを意味します。