6

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

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

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

我猜 Git 的方法可能适用于 99% 的情况,但那 1% 的情况会让人头疼。这让我对重构代码犹豫不决(同时更改类名和内容),因为如果重构太多,我可能会丢失文件历史记录。

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

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

我的结论是对还是错?

参考:

Git 和 Mercurial - 比较和对比

4

2 回答 2

6

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

于 2011-05-11T00:28:44.937 回答
4

我不认为 Mercurial 跟踪文件重命名的能力几乎没有你想象的那么完美。我对 Git 没有太多经验,但我对 Mercurial 确实有一点经验,而且在某些情况下重命名文件似乎可以正常工作(hg view理解它们),只要你没有做任何太“有趣”的事情(其中似乎经常发生)。

而且,至少从声誉上来说,Git 应该允许您在需要时对历史进行低级更改。

于 2011-05-11T00:27:57.083 回答