Version control Mercurial:您能跟踪已重命名为另一个跟踪文件的文件中的更改吗?
我知道,您可以跟踪从repo到克隆的重命名文件的更改。然而,当我将一个文件重命名为一个已经被跟踪的文件名时,我似乎遇到了一个问题。本质上,我想复制一个跟踪文件 原始回购中的文件:Version control Mercurial:您能跟踪已重命名为另一个跟踪文件的文件中的更改吗?,version-control,mercurial,merge,Version Control,Mercurial,Merge,我知道,您可以跟踪从repo到克隆的重命名文件的更改。然而,当我将一个文件重命名为一个已经被跟踪的文件名时,我似乎遇到了一个问题。本质上,我想复制一个跟踪文件 原始回购中的文件: application.txt special.txt 然后克隆回购,删除application.txt并将special.txt重命名为application.txt 我希望下次我在原始回购协议中对special.txt进行更改时,这些更改将继续到application.txt。然而,事实并非如此。我收到这个消息
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中尝试同样的东西似乎会得到同样的结果。将文件重命名为全新名称没有问题,而尝试重命名已“获取”的文件会导致冲突。有什么办法可以解决这个问题吗?我不认为这是一个bug,因为您已经更改了mercurial已经跟踪的文件的内容。Mercurial按文件名和扩展名跟踪文件,您可以认为这与替换文件的全部内容没有什么不同。我在Mercurial的实际项目中遇到了这个问题。GIT也发现了虚假冲突(special.txt被删除并更新) Bazaar提供了适当的重命名支持,并且它正确地合并了这个案例(对special.txt的更改将继续进行,application.txt将按预期进行更新)。 Bazaar的问题是(至少对我来说)缺少IntelliJ支持。有2个插件,最近的一个已经3年没有更新了,上次我尝试的时候,它在最近的IntelliJ版本中不可用。 由于重构时IDE需要调用“bzr mv”和“bzr rename”,因此缺少支持使Bazaar对我来说不可用
如果您希望IntelliJ对此提供支持,请在此处投票:您是否用
hg mv
告诉hg重命名?Hg不会自动跟踪文件重命名,如果要重命名或复制文件,必须明确告诉Hg。是。首先我尝试了hg rm application.txt
然后hg mv special.txt application.txt
。我还尝试了hg mv special.txt application.txt-f
。无论哪种方式,在进行下一次合并时,我都会遇到冲突。在删除application.txt
然后重命名special.txt
之后,我还尝试了提交。还是不行。我在Mercurial的bug追踪器上记录了一个bug。将随着我了解的更多而更新。同意。虽然我似乎不能做我想做的事情有点让人沮丧,但Mercurial的行为还是如愿的。