是否有一个 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
来选择性地只删除一些大文件。
因为我认为没有办法从存储库中删除大文件,所以我正在寻找一种方法:
克隆到(创建)一个至少包含所有相同文件的新存储库,即使没有历史记录(仅导出提示修订),如有必要,删除所有大文件。
无需手动导出然后重新导入文件即可获得类似的结果,这是一个艰苦的手动过程。
如果没有这样的命令,我也许可以写出我想要的命令(在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
来选择性地只删除一些大文件。