如何在不丢失文件历史记录的情况下将文件移动到子文件夹?
在我的Mercurial存储库(我的意思是其中带有.hg的文件夹)中,我具有MyProject /文件夹,其中包含所有项目文件。 现在,我需要在其中创建src /文件夹并将所有文件移至其中(从MyProject /移至MyProject / src /)。 在不丢失所有历史记录的情况下该如何做?
因为您有一个“ tortoisehg”标签,所以我认为我将使用GUI来说明执行此操作的方式。
通常,我只是在我的IDE中或从Windows资源管理器中重命名/移动文件,然后当我提交时,THG将显示一堆(?)未知文件和(R)删除的文件。 只需右键单击任何文件,然后选择“检测重命名...”,然后单击“查找重命名”按钮。
您可能需要调整“最小相似度”滑块,直到获得所需的所有文件以及仅所需的文件,但这通常非常简单。
hg mv
确实做正确的事,但-f不会列出移动后的条目,除非您给它hg log选项。 有关更多信息,请参见此问题
-f
hg log
为什么默认情况下,“ hg mv”(Mercurial)不移动文件的历史记录?
执行完此操作后,您可能希望将275570333746620102010选项添加到hg log到回购的hgrc文件中。
.hg/hgrc [defaults] log = -f
在安装了Tortoise HG的Windows中,有一个Windows shell扩展可以很好地处理此问题。
在Windows资源管理器中,只需右键单击并将要移动的文件拖到目标文件夹中。 然后,您会看到一个弹出窗口,为您提供以下选择:
HG在此处移动版本化的项目
HG在此处复制版本化的项目
使用hg mv移动文件,然后使用hg log -f(如下)查看历史记录,包括重命名。
hg log -f