可以过滤由svndamin dump
生成的SVN转储,因此它不会包含编码的二进制数据,只包括文本增量和数据?
我希望转储现有的大型SVN存储库,但只能转储代码。我对存储的二进制文件没兴趣。但是,二进制文件将使转储文件不必要地变大。如何生成转储并排除二进制内容?
尝试并失败了,已经:
svn log
差异是不切实际的。它是一个庞大而又旧的存储库,只在很短的时间内获得差异需要花费大量时间并且经常被卡住。svndumpfilter
来排除它们 - 除非有某种方法可以将此过滤器与正则表达式一起使用,例如: *.jar
。答案 0 :(得分:2)
svndumpfilter是任何Subversion安装的一部分
svndumpfilter exclude
- 从转储流中过滤出具有给定前缀的节点。
从Subversion 1.7开始,svndumpfilter可以选择将PATH_PREFIXs视为显式子串,而不是文件模式。
$ svndumpfilter exclude --pattern "*.OLD" < dumpfile > filtered-dumpfile
Excluding prefix patterns:
'/*.OLD'
答案 1 :(得分:1)
我不知道这样做的股票工具。但是,如果你从这个perl模块开始,那应该不难做到:SVN::Dumpfilter
其中一个示例脚本(svndump_delpathfilter)可能非常接近你想要的。我对这个模块的经验是,你可能不得不修补它以使它做你想做的事。
现在,我认为没有办法从文本文件中可靠地告诉二进制文件,因为Subversion(在最低级别)并不真正关心。快速扫描我的存储库显示svn:mime-type属性并不总是设置,我没有看到其他指示字段。所以你必须通过名称检查或(以某种方式)尝试查看文件的内容(但我从未做过后者)。