2

現在取り組んでいる変更が完了する前に、別の変更に切り替える必要がある状況に陥ることがよくあります。Mercurialで、他の人が利用できない(つまり、クローン可能/プッシュ可能/プル可能ではない)未完成の変更を保存/コミットできる方法があるかどうかを知りたいです。

4

3 に答える 3

4

Mercurialphasesがこれに対する答えかもしれません。

Mercurial v2.1以降、mqチェンジセットを自動的にマークされるように構成できますsecretsecretチェンジセットは、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)
于 2012-06-11T14:07:17.220 に答える
2

ShelveExtensionを見てください。これはあなたに基本を与え、あなたが必要とするものには十分すぎるかもしれません。

Mercurial Queues Extensionもありますが、これを使用するのは少し奇妙かもしれません。

最後の代替手段として、メインラインの開発に影響を与えないように、いつでも別のブランチに変更をコミットすることができますが、これらはまだ表示されている可能性があります。

于 2012-06-11T13:38:58.833 に答える
1

リポジトリを新しい場所に複製して、新しい変更に取り組むことができます。そうすれば、保留中の変更はローカルマシンに保持され、プッシュされることはありません。もちろん、これはリポジトリのサイズによって異なります。大きすぎると、クローン作成が少し禁止になります。

他の人が示唆しているように、利用できない変更をプライベートブランチにマークすることができます。-bプッシュするときは、引数を使用して明示的なブランチをプッシュできます。したがって、プライベートブランチがTimPrivateBranchで、他の変更がオンになっている場合default

 hg push -b default

TimPrivateBranchローカルコンピュータにとどまります。もちろん、これには、-bプッシュするたびに引数を覚えておく必要があります。

プライベートブランチが終了したら、デフォルトにマージして戻します。

hg up default
hg merge TimPrivateBranch
于 2012-06-12T01:40:28.117 に答える