在 Git 和 Mercurial 中重命名:准确性和自动化
Posted
技术标签:
【中文标题】在 Git 和 Mercurial 中重命名:准确性和自动化【英文标题】:Renaming in Git and Mercurial: Accuracy and automaticity 【发布时间】:2011-08-22 21:34:16 【问题描述】:我只有几天的 Git 和 Mercurial 经验,没有太多编程经验。
在过去的几天里,我阅读了很多比较两者的帖子。根据我的阅读和测试,我得出以下结论:
Git 的重命名是 100% 自动的,但不是 100% 准确的。它依靠算法来猜测重命名。即使完全错误,最终用户也无法更改其决定。
我猜 Git 的方法可能适用于 99% 的情况,但那 1% 会让人头疼。这让我对重构我的代码犹豫不决(同时更改类名和内容),因为如果重构太多,我可能会丢失文件历史记录。
Mercurial 可以 100% 自动和 100% 准确,只要我总是在 Visual Studio 中重命名/移动我的东西并安装了 VisualHG,VisualHG 应该准确并自动跟踪移动和重命名(目前 VisualHG 有一个错误 - @987654321 @)。如果它犯了错误,最终用户可以改变它的决定。
如果我没有 Visual Studio,我仍然可以使用 TortoiseHg 的“检测副本/重命名”窗口,我可以设置相似度百分比,让 Mercurial 自动检测重命名。如有错误,我有机会改正。
我的结论是对还是错?
参考:
Git and Mercurial - Compare and Contrast
【问题讨论】:
【参考方案1】:Here 你可以看到解释的差异,但大多数情况下你是对的。 Mercurial 有rename
和mv
命令可以“真正”重命名,而Git 的mv
只执行rm
和add
。 Mercurial 似乎也可以模仿 Git 行为并猜测您的重命名,这是非常不错的功能。根据经验,Git 的重命名检测算法会做出很多错误决定——尤其是如果你复制一个文件并稍微更改两个副本——大多数情况下它都会出错。
【讨论】:
【参考方案2】:我不认为 Mercurial 跟踪文件重命名的能力几乎没有您想象的那么完美。我对 Git 没有太多经验,但我对 Mercurial 确实有一点经验,而且在某些情况下重命名文件似乎可以正常工作(hg view
理解它们),只要你没有做过任何“有趣的事情” "(这似乎经常发生)。
而且,至少从声誉上来说,Git 应该允许您在需要时对历史进行低级更改。
【讨论】:
以上是关于在 Git 和 Mercurial 中重命名:准确性和自动化的主要内容,如果未能解决你的问题,请参考以下文章