水银队列是关于补丁,补丁对文件重命名一无所知。这是Mercurial队列不支持文件重命名的原因,还是我在重命名文件时做了错误的操作?我曾在修补程序队列中修改过一个名为foo
的文件。现在我回去通过hg mv
修补4和重命名文件:如何使用Mercurial队列重命名文件?
hg qpop 4 # Unapply all patches until patch 4.
hg mv foo bar # Rename file and led Mercuial know about it.
hg qrefresh # Should apply changes to unapplied patch 4.
hg qpush -a # Should apply all unapplied patches.
我得到以下错误:
unable to find 'foo' for patching
1 out of 1 hunks FAILED -- saving rejects to file foo.rej
patch failed, unable to continue (try -v)
patch failed, rejects left in working dir
errors during apply, please fix and refresh 5.diff
所以,我应该怎么做才能处理文件重命名与水银队列? Mercurial 提交句柄文件重命名的原因(因为没有,它将失去重命名后的文件编辑的整个历史)。
更新
只注意到hg histedit
折叠的变更和hg collapse
也失去了重命名文件的信息,文件显示为一个新的,而不是一个重命名一个,我想这是出于同样的原因。似乎崩溃私有变更集是不可能在Mercurial没有丢失信息?
更新2
实测出塌陷私人的变更而不会丢失信息重命名是可能的hg rebase
及其--collapse
选项,例如hg rebase -s 5 -d 4 --collapse
。其他命令应该重新获得重命名信息的问题仍然存在,但使用hg rebase
命令至少有一种方法可以实现所需的结果。
它看起来有点怪,因为'汞帮助mq'拥有究竟你的情况注:_“在默认情况下,MQ会自动必要时使用git补丁,以避免丢失文件模式更改,复制记录,二进制文件或空文件创建或删除。“_ – develop7