【问题标题】:Synchronize an SVN repo (svnsync) with encoding errors同步带有编码错误的 SVN 存储库 (svnsync)
【发布时间】:2011-06-09 19:09:57
【问题描述】:

在将存储库与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

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

有什么想法吗?

例如:

  • pre-revprop-change 脚本可以在传输中修改日志属性吗?
  • 有人告诉我 git-svn 可以处理它,但使用中间 git repo - 这是如何完成的?
  • 是否可以完全忽略日志属性,或忽略特定修订版

【问题讨论】:

    标签: svn utf-8 svnsync


    【解决方案1】:

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

    【讨论】:

      【解决方案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 修改repos

      【讨论】:

        【解决方案3】:

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

        版本 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

        【讨论】:

        • 感谢您的回答,不幸的是,正如问题中所述,我无法更改日志属性(无提交访问权限)。
        猜你喜欢
        • 2011-11-12
        • 2010-09-18
        • 2010-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-09
        相关资源
        最近更新 更多