水銀隊列是關於補丁,補丁對文件重命名一無所知。這是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