3

私は使用しています:Mercurial Distributed SCM (version 1.9.1)、そして私は次のことをしました:

D:\code\mqtest>hg init
D:\code\mqtest>hg qinit -c
D:\code\mqtest>echo NonQueue > first
D:\code\mqtest>hg st
? first
D:\code\mqtest>hg add first
D:\code\mqtest>hg commit -m nonqueue
D:\code\mqtest>hg log
changeset:   0:2d4bac63616a
tag:         tip
user:        Tempos
date:        Mon Sep 26 00:52:49 2011 +0300
summary:     nonqueue

D:\code\mqtest>hg log --mq
D:\code\mqtest>hg qnew a
D:\code\mqtest>echo Queue0 > first
D:\code\mqtest>hg st
M first   
D:\code\mqtest>hg qref
D:\code\mqtest>hg qcommit -m "queue 0"
D:\code\mqtest>echo Queue1 > first
D:\code\mqtest>hg qref
D:\code\mqtest>hg qcommit -m "queue 1"
D:\code\mqtest>echo Queue2 > first
D:\code\mqtest>hg qref
D:\code\mqtest>hg qcommit -m "queue 2"
D:\code\mqtest>hg st
D:\code\mqtest>hg log --mq
changeset:   2:38d08315a300
tag:         tip
user:        Tempos
date:        Mon Sep 26 00:53:46 2011 +0300
summary:     queue 2

changeset:   1:bb8b7da2e728
user:        Tempos
date:        Mon Sep 26 00:53:33 2011 +0300
summary:     queue 1

changeset:   0:1ac551a65492
user:        Tempos
date:        Mon Sep 26 00:53:22 2011 +0300
summary:     queue 0

そして、私はmqの特定のリビジョンに戻ろうとしました:

D:\code\mqtest>hg up -r 0 --mq
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
D:\code\mqtest>cat first
Queue2

Queue0のコンテンツが表示されないのはなぜですか?

4

2 に答える 2

2

内部のパッチをで更新する.hg\patcheshg --mq update、mqの背後にあるmqパッチが変更されます。つまり、パッチ自体は新しいコンテンツを取得しますが、自動的に再適用されることはありません。

したがって、必要なワークフローは次のとおりです。

> hg qpop -a
> hg --mq update -r X
> hg qpush -a

最初にすべてのパッチを削除し、希望どおりに更新してから、再適用します。

あなたのためにこれをhg --mq update行うことは実際には興味深い考えであり、2つのコマンドが統合されていないことに驚いたのはあなたが最初ではないことを私は知っています。

于 2011-09-26T15:17:05.640 に答える
-1

qpushキュー内のパッチを使用してqpop移動する場合は、を使用する必要があります。

チュートリアルから:

パッチキューの側面も実際には非常に優れています。たとえば、アプリケーションの2つの異なるレイヤー(低レベルのものとその上に構築されたもの)を、何かを壊すことなく同時に同じキューで作業できます。qpushとqpopは、変更を個別に保ちながら上下に移動するのに役立ちます。

于 2011-09-25T23:41:13.910 に答える