Mercurial:您可以跟踪已重命名为另一个跟踪文件的文件的更改吗?

时间:2011-01-14 04:42:16

标签: version-control mercurial merge

我知道您可以跟踪对从repo重命名文件到其克隆的更改。但是,当我将文件重命名为已经被跟踪的文件名时,我似乎遇到了问题。本质上,我想复制一个跟踪文件。

原始仓库中的文件:

application.txt
special.txt

然后克隆存储库,删除application.txt并将special.txt重命名为application.txt

我希望下次我在原始回购邮件中对special.txt进行更改时,更改会转移到application.txt。但事实并非如此。我收到此消息

local changed special.txt which remote deleted
use (c)hanged version or (d)eleted?

在Git中尝试同样的事情似乎也有相同的结果。将文件重命名为全新名称没有问题,而尝试重命名已被“处理​​”的文件会导致冲突。有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:1)

我不会把这称为错误,因为你出于各种目的只更改了mercurial已经跟踪的文件的内容。 Mercurial按文件名和扩展名跟踪文件,您可以证明这与仅替换文件的全部内容没有区别。

答案 1 :(得分:0)

我在Mercurial的实际项目中遇到了这个问题。 GIT也看到了伪造的冲突(special.txt被删除和更新)。

Bazaar具有正确的重命名支持,并且它正确地合并了这个案例(对special.txt的更改被转移,application.txt按预期更新)。 Bazaar的问题(至少对我而言)是它缺乏IntelliJ支持。有2个插件,最近一次没有更新3年,上次我尝试使用最近的IntelliJ版本无法使用。 由于IDE在重构时需要调用“bzr mv”和“bzr rename”,缺乏支持会使Bazaar无法使用。

如果您需要IntelliJ支持,请在此处投票:http://youtrack.jetbrains.com/issue/IDEABKL-5344