【问题标题】:Hg: How to move files (to subfolder) without losing history?Hg:如何在不丢失历史记录的情况下移动文件(到子文件夹)?
【发布时间】:2014-02-26 15:02:52
【问题描述】:

如何在不丢失历史记录的情况下移动文件(到子文件夹)?

在我的 Mercurial 存储库(我的意思是其中包含 .hg 的文件夹)中,我有 MyProject/ 文件夹,其中包含所有项目文件。现在我需要在其中创建 src/ 文件夹并将所有文件移动到其中(从 MyProject/MyProject/src/)。如何在不丢失所有历史记录的情况下做到这一点?

【问题讨论】:

  • 移动后您希望存储库根在哪里?在MyProject/MyProject/src/
  • @black_wizard 这与存储库根目录无关。它应该保持在原来的位置。 MyProject 不是存储库根目录。它是存储库中的一个文件夹。我只想在这个文件夹中再创建一个子文件夹并移动文件。

标签: mercurial tortoisehg


【解决方案1】:

既然你有一个“tortoisehg”标签,我想我会解释一下我使用 GUI 执行此操作的方式。

通常,我只是在我的 IDE 或 Windows 资源管理器中重命名/移动文件,然后当我提交时,THG 将显示一堆 (?) 未知文件和 (R) 已删除文件。只需右键单击任何文件并选择“检测重命名...”,然后单击“查找重命名”按钮。

您可能需要调整“最小相似度”滑块,直到获得所有想要的文件并且只获得想要的文件,但这通常非常简单。

【讨论】:

  • 这为我节省了很多时间。
【解决方案2】:
hg mv 

确实做了正确的事,但 hg log 不会列出移动后的条目,除非您 给它-f 选项。有关更多信息,请参阅此问题

Why 'hg mv' (mercurial) doesn't move a file's history by default?

完成此操作后,您可能希望将 -f 选项添加到 hg log 到 repo 的 hgrc 文件。

.hg/hgrc

[defaults] 
log = -f 

【讨论】:

  • 是否可以 hg mv 目录中的所有文件?还是只有一件一件?我尝试了“hg mv MyProject/MyProject/src/”,但这并不是我想要的。它将 MyProject 文件夹移动到 src,因此 MyProject/src/MyProject/ 而不是只是将所有文件从 MyProject/ 移动到 src/
【解决方案3】:

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

在 Windows 资源管理器中,只需右键单击并拖动要移动的文件到目标文件夹。然后,您会看到一个弹出窗口,为您提供以下选择:

HG 将版本化项目移至此处

HG 在此处复制版本化项目

【讨论】:

  • 如果你和我一样,在 MacBook 上的虚拟化 Windows 上运行 TortoiseHG,这是行不通的 - 在这种情况下,你可以使用 Rename...,它还可以让你更改目录,不仅仅是文件名本身。
  • 这对我不起作用。它移动/复制文件,但历史记录丢失。
【解决方案4】:

使用hg mv 移动文件,然后使用hg log -f(关注)查看历史记录,包括重命名。

【讨论】:

    猜你喜欢
    • 2016-03-17
    • 1970-01-01
    • 2011-03-09
    • 2012-06-05
    • 2012-08-06
    • 1970-01-01
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多