1

これは私がしたことです:

hg init
hg qnew -m "p1" p1.patch
; some changes
hg qrefresh
hg qpop
hg qnew -m "p2" p2.patch
; some changes
hg qrefresh
hg qpop

現在、これら 2 つのパッチは別個の機能であり、互いに何の関係もありません。それらは互いに独立している必要があります。

今はそうします(最初の機能だけが欲しいので)

hg qpush p1.patch

それは言います:

applying p2.patch
applying p1.patch

そして、それは私が行った両方の変更を私に与えます!

私は何か間違ったことをしていますか?

特定のパッチをプッシュするように指示すると、他のパッチもプッシュされます。

4

1 に答える 1

4

1 つ忘れていたことがあります。MQ パッチのセットはキュー(FIFO キュー) です。つまり、 に複数のパッチが表示されるhg qseries場合は、覚えておく必要があります - qpush|qpop は、パッチをランダムな順序ではなく、順番に適用または適用解除します。つまり、下から上にプッシュし、逆の順序でポップします。

ランダム アクセス (および副作用として一連のパッチの順序を変更すること) は--move、qpush のオプションです。あなたの場合(一度に1つのパッチのみを使用)とパッチ名

  • hg qpop -a
  • hg qpush --move p1.patch
  • hg qpop -a
  • hg qpush --move p2.patch

間違いを避けるために、always use--moveオプションのエイリアス セクションで qpush (このリポジトリ用) を再定義できます。

于 2013-04-19T22:54:34.890 に答える