svnadmin仅转储文本,没有二进制文件

时间:2012-12-20 10:17:28

标签: svn svnadmin svndump

可以过滤由svndamin dump生成的SVN转储,因此它不会包含编码的二进制数据,只包括文本增量和数据?

我希望转储现有的大型SVN存储库,但只能转储代码。我对存储的二进制文件没兴趣。但是,二进制文件将使转储文件不必要地变大。如何生成转储并排除二进制内容?

尝试并失败了,已经:

  1. 处理svn log差异是不切实际的。它是一个庞大而又旧的存储库,只在很短的时间内获得差异需要花费大量时间并且经常被卡住。
  2. 二进制文件遍布各地,并且不存储在单个已知路径下,因此我无法使用svndumpfilter来排除它们 - 除非有某种方法可以将此过滤器与正则表达式一起使用,例如: *.jar

2 个答案:

答案 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属性并不总是设置,我没有看到其他指示字段。所以你必须通过名称检查或(以某种方式)尝试查看文件的内容(但我从未做过后者)。