【问题标题】:Fastest way to get all files from a particular revision?从特定版本中获取所有文件的最快方法?
【发布时间】:2016-03-29 09:12:46
【问题描述】:

我正在尝试找到从特定变更集中获取所有文件的最快方法;我不在乎历史。

到目前为止,我发现的最好的方法是将cd 放入存储库,然后

hg archive -u <changeset> /path/to/put/files

但我发现即使这样在大型存储库上也很慢,即使它没有创建 .hg 文件夹。

我在想也许我可以改用hg update,因为这似乎运行得更快了,但我不想更新当前目录,我希望将文件写入当前 repo 之外的新目录.这可能吗?

或者有其他快速的方法吗?

【问题讨论】:

  • 一般来说没有更好或更快的方法。 hg archive 正是为此目的,它通常是导出某个版本的存储库状态的最佳方式。
  • 即使在更新后(具有不良副作用),也需要将文件复制出来..
  • 另一种方法是先到clone to a particular revision,然后再到"uninit"。它会以任何方式更快或更好吗?我对此表示怀疑(因为它也复制了初始商店的祖先历史);但它会在不修改当前工作副本的情况下完成请求的任务。 YMMV。

标签: mercurial


【解决方案1】:

您可以尝试以下方法来加快速度:

hg archive --config ui.archivemeta=false /path/to/target

此选项抑制.hg_archival.txt 的生成,有时生成相对昂贵。

此外,hg update 可以在本地更快,因为并非所有文件都必须更新(仅相对于当前版本更改的文件)。 hg clone -Uhg share -U 之后的新更新应该不会更快。

您可以尝试递归硬链接(通过cp -al 或类似工具),然后是hg update,但是您必须格外小心,因为在一个结帐中修改文件会影响另一个结帐中的文件。如果您想要一个只读副本,或者如果您知道(例如,肯定知道,而不仅仅是猜测)您不会对任何文件。

【讨论】:

  • 硬链接可能会起作用。我只是用它来进行构建,然后删除整个目录,这应该可以防止意外修改。感谢您的建议!
猜你喜欢
  • 2014-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-11
相关资源
最近更新 更多