Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git和Mercurial中的重命名:准确性和自动化_Git_Mercurial_Rename_Tortoisehg_Visualhg - Fatal编程技术网

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

Git和Mercurial中的重命名:准确性和自动化,git,mercurial,rename,tortoisehg,visualhg,Git,Mercurial,Rename,Tortoisehg,Visualhg,我只有几天使用Git和Mercurial的经验,没有太多编程经验 在过去的几天里,我读了很多比较两者的帖子。根据我的阅读和测试,我得出以下结论: Git的重命名是100%自动的,但不是100%准确。它依赖于算法来猜测重命名。即使完全错误,最终用户也无法改变其决定 我想Git的方法可能适合99%的病例,但这1%会引起头痛。这让我在重构代码时犹豫不决(同时更改类名和内容),因为如果重构太多,我就有可能丢失文件历史记录 Mercurial可以100%自动和100%准确,只要我总是在Visual Stu

我只有几天使用Git和Mercurial的经验,没有太多编程经验

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

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

我想Git的方法可能适合99%的病例,但这1%会引起头痛。这让我在重构代码时犹豫不决(同时更改类名和内容),因为如果重构太多,我就有可能丢失文件历史记录

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

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

我的结论是对的还是错的

参考:


我认为Mercurial跟踪文件重命名的能力并不像您想象的那样完美。我对Git没有太多的经验,但我对Mercurial有很好的了解,在某些上下文中重命名文件似乎可以正常工作(
hg view
了解它们),只要您没有做任何太“有趣”的事情(这似乎是经常发生的)

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

您可以看到差异的解释,但大多数情况下您是对的。Mercurial有
rename
mv
命令进行“真正”的重命名,而Git的
mv
只执行
rm
add
。而且Mercurial似乎可以模仿Git的行为并猜测您的重命名,这是一个非常好的特性。根据经验,Git的重命名检测算法经常做出错误的决定——特别是如果您复制一个文件并稍微修改两个副本——大多数情况下都是错误的