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
Version control 使用Mercurial记录两个文件之间的代码转换_Version Control_Mercurial_Dvcs - Fatal编程技术网

Version control 使用Mercurial记录两个文件之间的代码转换

Version control 使用Mercurial记录两个文件之间的代码转换,version-control,mercurial,dvcs,Version Control,Mercurial,Dvcs,我在正在开发的游戏中错误地组织了代码,并打算将状态更新代码从GameView类移动到级别类。我想以某种方式记录这个剪切和粘贴。我使用Mercurial进行版本控制。Mercurial有可能做到这一点吗?是否有其他VCS提供此功能 再多读一点,看看Linus在Google上关于git的演讲,以及回顾答案和评论,我知道这是git的责怪命令的一个特性,它通过启发式工作 我可以通过使用导出Mercurial变更集,然后只使用git-M-C命令来获得此功能。有没有更简单的方法不涉及git 如果不是,我将

我在正在开发的游戏中错误地组织了代码,并打算将状态更新代码从
GameView
类移动到
级别
类。我想以某种方式记录这个剪切和粘贴。我使用Mercurial进行版本控制。Mercurial有可能做到这一点吗?是否有其他VCS提供此功能


再多读一点,看看Linus在Google上关于git的演讲,以及回顾答案和评论,我知道这是git的
责怪
命令的一个特性,它通过启发式工作

我可以通过使用导出Mercurial变更集,然后只使用
git-M-C
命令来获得此功能。有没有更简单的方法不涉及git


如果不是,我将接受一个现有的答案,其中提到git并描述如何最好地使用它的功能。

如果级别类还不存在,您可以使用:

hg copy GameView.ext Level.ext

然后从GameView中删除您移动到关卡的任何内容,并修改关卡以反映正确的名称,并排除留在GameView中的所有内容


如果Level已经存在,我不认为有什么好的方法可以做到这一点,除非您愿意将代码提取到它自己的类中,该类可以作为GameView的副本开始,并被包括在Level中(通过include、composition或extension)。请参见

我认为Mercurial不会显式跟踪文件重命名/移动,至少它不是变更集的一部分(尽管它可以根据特定文件的内容猜测其来源)


也就是说,我恐怕不知道有哪家VCS跟踪文件之间的代码移动,只跟踪目标代码的加法和源代码的减法。

对于这种情况,我所做的是将更改与我的其他开发隔离开来,然后在一次提交中提交移动,并附上一条注释,“moved function munge()在文件之间


据我所知,没有VCS跟踪数据的移动。重命名可以使用
git
Clearcase

Mercurial支持文件重命名检测,如下所示:

hg addremove-s100

-s表示“相似性”,100表示100%。它将查找名称已更改但内容保持相同的文件

我经常以85%或90%的相似性使用这个命令。再加上允许干运行的
-n
开关(即只做报告),它可能非常强大


我不认为检测实际移动的代码真的是不可能的。

这是关于重命名的,而不是让函数在文件之间移动的更困难的情况。另一方面,跟踪重命名实际上只是跟踪内容在树中移动的一种特殊情况。在某些情况下,您可能会对查询函数何时添加或移动到其他文件感兴趣是的,但是跟踪整个文件的移动似乎更容易让人接受性能方面的影响,因为只需要比较文件哈希值。然而git以其出色的性能而闻名!疯狂。:)嘿,我不是想暗示git很慢或类似的东西,@clee-@clee:我想我是站得住脚了。在这篇文章之后,你认为
hg吗注释
是对
git gull
的有效替代品(在符合所述功能时)?