Mercurial Queues 是关于补丁的,补丁对文件重命名一无所知。这就是Mercurial Queues不支持文件重命名的原因,还是我在重命名文件时做错了什么?我一直在修改一个补丁队列,只修改一个名为foo
的文件。现在我回到补丁4并通过hg mv
重命名该文件:
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 Queues处理文件重命名? Mercurial 提交处理文件重命名是有原因的(因为没有,它会丢失关于重命名后编辑文件。)
更新
注意到hg histedit
折叠变更集和hg collapse
也丢失了文件重命名的信息,文件显示为新文件而不是重命名文件,我猜这是出于同样的原因。在不丢失信息的情况下,Mercurial无法折叠私有变更集吗?
更新2
使用hg rebase
及其--collapse
选项可以找到折叠私有变更集而不会丢失重命名信息,例如hg rebase -s 5 -d 4 --collapse
。其他命令应该重命名信息的问题仍然是空的,但使用hg rebase
命令至少有一种方法可以实现所需的结果。
答案 0 :(得分:0)
这就是Mercurial Queues不支持文件重命名的原因,
没有
或者我在重命名文件时做错了什么?
没有
是的,链中的补丁如果准备好foo
文件会有麻烦,但稍后会bar
,但由于不同的原因:补丁是独立的,每个补丁都不知道其他补丁的变化 - 它们与上下文一起工作,而不是单独补丁中的操作顺序。您已正确重命名,但此更改集使以后的更改集无效,在旧内容上准备