在Git和Mercurial中重命名:准确性和自动性

6 git mercurial rename tortoisehg visualhg

我只有几天的Git和Mercurial经验,而且我没有太多的编程经验.

在过去的几天里,我读了许多比较两者的帖子.根据我的阅读和测试,我得出以下结论:

Git的重命名是100%自动但不是100%准确.它依赖于算法来猜测重命名.最终用户即使完全错误也无法改变其决定.

我猜Git的方法可能适用于99%的病例,但1%会导致头痛.这让我对重构我的代码(同时更改类名和内容)犹豫不决,因为如果重构太多,我冒着丢失文件历史的风险.

Mercurial可以100%自动且100%准确,只要我总是在Visual Studio中重命名/移动我的东西并安装VisualHG,VisualHG应该准确并自动跟踪移动和重命名(目前VisualHG有一个错误 - 文件未重命名时我在项目之间移动它).如果最终用户犯错,最终用户可以改变决策.

如果我没有Visual Studio,我仍然可以使用TortoiseHg的"检测副本/重命名"窗口,我可以设置相似度百分比,让Mercurial自动检测重命名.如果它出错了,我有机会纠正它.

我的结论是对还是错?

参考:

Git和Mercurial - 比较和对比

Mar*_*ota 6

在这里你可以看到解释的差异,但大多数情况下你是对的.Mercurial有renamemv命令做"真正的"重命名,而Git mv只是做rmadd.也似乎Mercurial可以模仿Git行为并猜测你的重命名,相当不错的功能.根据经验,Git的重命名检测算法会做出错误的决定 - 特别是如果你复制一个文件并稍微更改两个副本 - 大多数情况下它会是错误的.