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

时间:2015-05-23 15:42:17

标签: python mercurial large-files

由于我认为无法从存储库中删除大文件,我正在寻找一种方法:

  • 克隆到(创建)包含至少所有相同文件的新repo,即使没有历史记录(仅限导出提示修订版),也可以删除所有大文件。

  • 在不手动导出然后重新导入文件的情况下实现类似的结果,这是一个艰苦的手动过程。

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

1 个答案:

答案 0 :(得分:4)

只需使用

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

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

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

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

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

exclude .hglf

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

此转换将排除.hglf目录,该目录包含大文件的所有“替换”文件。请注意,这样的转换也会破坏所有只更改大文件及其提交消息的提交(因为它们变为空提交)。

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