将SVN repo(svnsync)与编码错误同步

时间:2011-01-15 22:01:43

标签: svn utf-8 svnsync

在将存储库与svnsync同步时是否可以修复/绕过非UTF8编码的svn:log记录?

背景

我正在接管一个开源模块的维护过程,该模块存储在一个大型(超过10,000个版本)的subversion(1.5.5)存储库中。我没有远程存储库的管理员权限来转储/过滤/加载模块。旧存储库正在停止,我正在尝试使用svnsync将原始子模块同步到我的本地(1.6+)存储库。例如:

svnsync file://home/svn/temp-repo/ http://path.to.repo/modulename/

问题是旧的存储库没有强制执行UTF8编码,我遇到的错误如下:

svnsync: Cannot accept 'svn:log' property because it is not encoded in UTF-8

我无法修改源存储库中的log属性,因此当编码未知/无效时,我需要以某种方式修改或忽略属性值。

有什么想法吗?

例如:

  • pre-revprop-change脚本可以修改传输中的日志属性吗?
  • 我被告知git-svn可以处理它但使用中间git repo - 这究竟是怎么做的?
  • 可以完全忽略日志属性,还是可以忽略特定的修订

3 个答案:

答案 0 :(得分:2)

您需要等待下一版本的Subversion,有一个pending patch可以将对非UTF8编码的支持添加到svnsync

答案 1 :(得分:2)

您需要修改pre-revprop-change.tmpl

# cp pre-revprop-change.tmpl pre-revprop-change.tmp
# vim pre-revprop-change.tmp
exit 1 ==> exit 0

否则,您可以使用svnadmin setrevprop修改回购

答案 2 :(得分:1)

有一个简单的解决方法。使用以下语句更改源存储库中的日志条目:

修订版10281和/ home / svn / repos中的存储库

的示例

svn proplist -v --revprop -r 10281 file:///home/svn/repos | iconv --to-code UTF8//IGNORE -o /tmp/iconv.out

svn propset svn:log --revprop -r 10281 -F /tmp/iconv.out file:///home/svn/repos