svnadmin 只转储文本,没有二进制文件
Posted
技术标签:
【中文标题】svnadmin 只转储文本,没有二进制文件【英文标题】:svnadmin dump of text only, without binary files 【发布时间】:2012-12-20 10:17:27 【问题描述】:可以过滤svndamin dump
生成的SVN转储,所以它不会包含编码的二进制数据,只包含文本增量和数据?
我想转储现有的大型 SVN 存储库,但只转储代码。我对存储的二进制文件不感兴趣。但是,二进制文件会使转储文件变得不必要地大。如何生成转储并排除二进制内容?
已经尝试过但失败了:
-
处理
svn log
差异是不切实际的。它是一个大型且旧的存储库,仅在短时间内获取差异会花费大量时间并且经常卡住。
二进制文件分散在各处,并且没有存储在单个已知路径下,因此我不能使用svndumpfilter
排除它们 - 除非有某种方法可以将此过滤器与正则表达式一起使用,例如*.jar
。
【问题讨论】:
【参考方案1】:svndumpfilter 是任何 Subversion 安装的一部分
svndumpfilter exclude
— 从转储流中过滤出具有给定前缀的节点。
从 Subversion 1.7 开始,svndumpfilter 可以选择性地将 PATH_PREFIX 不仅视为显式子字符串,还可以视为文件模式。
$ svndumpfilter exclude --pattern "*.OLD" < dumpfile > filtered-dumpfile
Excluding prefix patterns:
'/*.OLD'
【讨论】:
你知道svndumpfilter是否接受“or-patterns”,比如“*.jar|*.pdf
”吗?
@LittleBobbyTables - 不,只有单一模式。但是您可以在单个命令中使用多个 exclude
【参考方案2】:
我不知道有什么库存工具可以做到这一点。但是如果你从这个 perl 模块开始,应该不难做到:SVN::Dumpfilter
其中的一个示例脚本 (svndump_delpathfilter) 可能与您想要的非常接近。我对这个模块的经验是,你可能需要稍微修改一下才能让它做你想做的事情。
现在,我认为没有任何方法可以可靠地从文本文件中分辨出二进制文件,因为 Subversion(在最低级别)并不真正关心。快速扫描我的存储库显示 svn:mime-type 属性并不总是设置,并且我看不到其他指示性字段。因此,您必须通过名称检查或(以某种方式)尝试查看文件的内容(但我从未做过后者)。
【讨论】:
以上是关于svnadmin 只转储文本,没有二进制文件的主要内容,如果未能解决你的问题,请参考以下文章