如何从mercurial中删除历史记录中的大文件?

时间:2012-04-11 09:26:29

标签: version-control mercurial dvcs

我刚刚创建了一个由其他回购的异构生态系统创建的mercurial repo。在我将它发布给我的同事之前,我想尽可能地清理它。为此,我想从历史中删除一些大的旧文件(假装它们从未存在过),因此repo会更小。

这可以用mercurial吗?

1 个答案:

答案 0 :(得分:35)

查看convert扩展程序,尤其是--filemap选项。

通过将以下内容添加到mercurial.ini

来启用
[extensions]
convert =

创建要排除的文件地图:

exclude path/to/file1
exclude path/to/file2

然后转换回购:

hg convert srcrepo destrepo --filemap <map>

注意Mercurial 2.1.1中存在一个错误,导致上述命令出错:

initializing destination destrepo repository
abort: invalid mode ('r') or filename

只需添加--splicemap <nonexistent file>选项即可解决问题。