現在取り組んでいる変更が完了する前に、別の変更に切り替える必要がある状況に陥ることがよくあります。Mercurialで、他の人が利用できない(つまり、クローン可能/プッシュ可能/プル可能ではない)未完成の変更を保存/コミットできる方法があるかどうかを知りたいです。
3 に答える
Mercurialphases
がこれに対する答えかもしれません。
Mercurial v2.1以降、mq
チェンジセットを自動的にマークされるように構成できますsecret
。secret
チェンジセットは、incoming/pullおよびoutgoing/pushコマンドでは無視されます。
この動作を有効にするには、構成に以下を追加する必要があります。
[mq]
secret = True
有効にすると、次のように動作します。
$ hg qpush --all
applying my-patch
now at: my-patch
$ hg phase -r .
16873: secret
$ hg outgoing
comparing with https://www.mercurial-scm.org/repo/hg
searching for changes
no changes found (ignored 1 secret changesets)
ShelveExtensionを見てください。これはあなたに基本を与え、あなたが必要とするものには十分すぎるかもしれません。
Mercurial Queues Extensionもありますが、これを使用するのは少し奇妙かもしれません。
最後の代替手段として、メインラインの開発に影響を与えないように、いつでも別のブランチに変更をコミットすることができますが、これらはまだ表示されている可能性があります。
リポジトリを新しい場所に複製して、新しい変更に取り組むことができます。そうすれば、保留中の変更はローカルマシンに保持され、プッシュされることはありません。もちろん、これはリポジトリのサイズによって異なります。大きすぎると、クローン作成が少し禁止になります。
他の人が示唆しているように、利用できない変更をプライベートブランチにマークすることができます。-b
プッシュするときは、引数を使用して明示的なブランチをプッシュできます。したがって、プライベートブランチがTimPrivateBranch
で、他の変更がオンになっている場合default
:
hg push -b default
TimPrivateBranch
ローカルコンピュータにとどまります。もちろん、これには、-b
プッシュするたびに引数を覚えておく必要があります。
プライベートブランチが終了したら、デフォルトにマージして戻します。
hg up default
hg merge TimPrivateBranch