hg update --mq не работает? - PullRequest
       38

hg update --mq не работает?

3 голосов
/ 26 сентября 2011

Я использую: 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?

Ответы [ 2 ]

2 голосов
/ 26 сентября 2011

Когда вы обновляете патчи внутри .hg\patches с помощью hg --mq update, вы изменяете патчи mq за спиной mq.Другими словами: патчи сами получают новый контент, но они не применяются повторно автоматически.

Итак, рабочий процесс, который вы хотите сделать:

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

, где вы сначала удаляете всепатчи, обновите их, чтобы они выглядели так, как вы хотите, и затем примените их заново.

Выполнение этого для вас hg --mq update было бы действительно интересной идеей, и я знаю, что вы не первыйудивляйтесь отсутствию интеграции между двумя командами.

0 голосов
/ 26 сентября 2011

Вы должны использовать qpush и qpop при перемещении через патчи в своей очереди.

Из учебника :

Очередь патчейаспект на самом деле довольно приятный.Например, вы можете одновременно работать на двух разных уровнях вашего приложения (что-то низкоуровневое и что-то построенное поверх этого) в одной и той же очереди, не нарушая работу. qpush и qpop помогут вам двигаться вверх и вниз, сохраняя свои изменения отдельно.

...