是否有一个 mercurial 命令可以生成没有大文件的克隆?

Is there a mercurial command which can generate a clone without largefiles?

因为我认为没有办法从存储库中删除大文件,所以我正在寻找一种方法:

如果没有这样的命令,我也许可以写出我想要的命令(在Python)。

只需使用

hg lfconvert --to-normal <old> <new>

这会将目录 <old> 中的存储库转换为目录 <new> 中的存储库,并将所有大文件转换回普通文件。修订哈希值会发生变化,但除此之外,修订历史应该保持不变。

如果您真的想首先从存储库中删除所有大文件并丢失所有与它们关联的信息(即,如果您的目的是销毁大文件而不是保留它们),首先 运行:

hg convert --filemap <nolf> <old> <new>

其中 <nolf> 是包含单行的文件的路径:

exclude .hglf

<old>是原始存储库,<new>是转换的目标目录。

此转换将排除 .hglf 目录,其中包含大型文件的所有 "stand-in" 文件。请注意,这样的转换还将销毁所有仅更改大文件的提交及其提交消息(因为它们变为空提交)。

您还可以在 hg lfconvert --to-normal 之后使用 hg convert 和适当的 --filemap 来选择性地只删除一些大文件。