如何在不丢失历史的情况下移动文件(到子文件夹)?
在我的Mercurial存储库(我的意思是包含.hg的文件夹)中,我有MyProject /文件夹和所有项目文件。现在我需要在里面创建src /文件夹并将所有文件移动到它(从 MyProject / 到 MyProject / src / )。如何在不丢失所有历史的情况下做到这一点?
答案 0 :(得分:44)
由于你有一个“tortoisehg”标签,我想我会用GUI解释我这样做的方式。
通常,我只是在我的IDE或Windows资源管理器中重命名/移动文件,然后当我去提交时,THG将显示一堆(?)未知文件和(R)删除的文件。只需右键单击任何文件,然后选择“检测重命名...”,然后单击“查找重命名”按钮。
您可能需要调整“最小相似度”滑块,直到获得所需的所有文件,并且只获得所需的文件,但这通常非常简单。
答案 1 :(得分:38)
hg mv
做了正确的事情,但hg log
除了你之外没有列出移动的条目
给它-f
选项。有关详细信息,请参阅此问题
Why 'hg mv' (mercurial) doesn't move a file's history by default?
执行此操作后,您可能希望将-f
选项添加到hg log
回购的hgrc文件。
.hg/hgrc
[defaults]
log = -f
答案 2 :(得分:10)
在安装了Tortoise HG的Windows中,有一个可以很好地处理这个问题的Windows shell扩展。
在Windows资源管理器中,只需右键单击并将要移动的文件拖到目标文件夹中即可。然后会向您显示一个弹出窗口,为您提供以下选择:
HG移动版本化项目
HG复制版本化项目
答案 3 :(得分:5)
使用hg mv
移动文件,然后使用hg log -f
(关注)查看包含重命名的历史记录。