我正在使用: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内容?
最佳答案
当您使用.hg\patches
更新hg --mq update
内部的补丁时,您将更改mq背后的mq补丁。换句话说:补丁本身会获取新内容,但不会自动重新应用它们。
因此,您要执行的工作流程是:
> hg qpop -a
> hg --mq update -r X
> hg qpush -a
首先删除所有补丁,然后将它们更新为所需的样子,然后重新应用它们。
让
hg --mq update
为您执行此操作实际上是一个有趣的主意,而且我知道您并不是第一个对这两个命令之间缺乏集成感到惊讶的人。关于mercurial - Mercurial 更新--MQ无法正常工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7548897/