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

6
我只使用Git和Mercurial几天,并没有很多编程经验。
在过去的几天中,我阅读了许多比较两者的文章。根据我的阅读和测试,我得出以下结论:
Git的重命名是100%自动化的,但不是100%准确的。它依靠算法来猜测重命名。即使完全错误,最终用户也无法更改其决策。
我猜Git的方法对于99%的情况可能没问题,但那1%会导致头痛。如果我尝试大量修改代码(同时更改类名和内容),那么我可能会失去文件历史记录,这让我犹豫不决。
只要我始终在Visual Studio内重命名/移动我的文件并安装了VisualHG,Mercurial就可以是100%自动化和100%准确的,VisualHG应该准确且自动地跟踪移动和重命名(目前VisualHG有一个错误- 当我将文件移动到其他项目中时,文件未被重命名)。而且最终用户可以更改其决策,如果出现错误。
如果我没有Visual Studio,我仍然可以使用TortoiseHg的“检测复制/重命名”窗口。我可以设置相似度百分比,要求Mercurial自动检测重命名。如果出现错误,我有机会进行更正。
我的结论是对还是错?
参考文献: Git and Mercurial - Compare and Contrast
2个回答

6
这里,你可以看到它们之间的差异解释,但大多数情况下,你是正确的。Mercurial有renamemv命令进行“真实”的重命名,而Git的mv只执行rmadd。此外,似乎Mercurial可以模仿Git的行为并猜测你的重命名,这是一个非常好的特性。从经验来看,Git的重命名检测算法往往会做出错误的决策 - 特别是如果你复制一个文件并稍微修改两个副本 - 大多数时间它都会是错误的。

4
我认为Mercurial跟踪文件重命名的能力并不像你认为的那样完美。我对Git没有太多经验,但我对Mercurial有很多了解,在某些情况下(hg view可以理解它们),重命名文件似乎运作良好,只要您没有做过太“有趣”的事情(这种情况似乎经常发生)。
而Git至少以声誉而言,应该让您对历史进行低级更改,如果需要的话。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接