在将存储库与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
脚本可以修改传输中的日志属性吗?答案 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