Hg:如何移动文件(到子文件夹)而不会丢失历史?

如何移动文件(到子文件夹),而不会丢失他们的历史?

在我的Mercurial存储库(我的意思是在其中的.hg文件夹)我有MyProject /文件夹与所有项目文件。 现在我需要在里面创buildsrc /文件夹,并将所有文件移动到它(从MyProject /MyProject / src / )。 我怎样才能做到而不会失去所有的历史?

 hg mv 

没有做正确的事情,但hg log不会列出移动过去的条目,除非你给它的-f选项。 看到这个问题的更多信息

为什么'hg mv'(mercurial)默认不移动文件的历史logging?

在你这样做之后,你可能想要把-g选项添加到hg log到hgrc的repo文件中。

 .hg/hgrc [defaults] log = -f 

既然你有一个“tortoisehg”标签,我想我会解释我使用GUI做这个的方式。

通常,我只是重命名/移动文件在我的IDE,或从Windows资源pipe理器,然后当我去提交,THG将显示一堆(?)未知文件和(R)删除的文件。 只需右键单击任何文件,然后select“检测重命名…”,然后单击“查找重命名”button。

您可能需要调整“Min Similarity”(最小相似度)滑块,直到获得所需的所有文件以及所需的文件,但通常非常简单。

在安装了Tortoise HG的Windows中,有一个Windowsshell扩展可以很好地处理这个问题。

在Windows资源pipe理器中,只需右键单击并拖动想要移动到目标文件夹的文件即可。 然后你会看到一个popup窗口,给你这些select:

HG在此处移动版本化的项目

HG在此处复制版本化的项目

使用hg mv移动文件,然后使用hg log -f (follow)查看包括重命名的历史logging。