【问题标题】:How to change svn url in svnsync?如何在 svnsync 中更改 svn url?
【发布时间】:2011-05-08 12:04:04
【问题描述】:

如何更改(重新定位)使用“svnsync init”创建镜像存储库时输入的 subversion url(例如从 #https://whateversvn://whatever)?

尝试使用新的 url 再次运行 svnsync init,但是

svnsync init file:///<path_to_mirror> http:///<new_url>
svnsync: Destination repository is already synchronizing from 'http:///<old_url>'

【问题讨论】:

  • 您是否尝试使用带有新网址的 svnsync 进行后续同步。我的直觉是它应该起作用。
  • 确实尝试使用新 url 再次调用 svnsync init 但这不起作用 - svnsync 表示镜像存储库与“旧”url 同步

标签: svn svnsync


【解决方案1】:

同步来源 URL 作为 revprop 存储在镜像存储库中。如果在有镜像仓库的机器上(我的情况),使用 svnlook 工具查看并使用 svnadmin 进行更改:

user@q.r[~]$ svnlook pg --revprop -r0 /path/to/mirror/repo svn:sync-from-url
svn+ssh://svn.abc.com:1234/svn/foo

您将看到您的镜像当前正在同步到的存储库的 URL。在上面的示例中,主存储库 URL 以 .../foo 结尾。它的末尾可能没有换行符,因此您的 shell 提示符可能会跟随。现在你需要把它放到一个文件中,因为 svnadmin 使用一个文件作为输入来改变 revprops。

user@q.r[~]$ svnlook pg --revprop -r0 /path/to/mirror/repo svn:sync-from-url > t.txt

现在编辑 t.txt 以更改主存储库的 URL。这可能会导致 t.txt 末尾出现换行符,并导致来自 svnsync 的模糊/无意义的错误消息。所以摆脱它:

user@q.r[~]$ cat t.txt | tr -d '\n' > t2.txt

请注意,我们现在有 t2.txt,它是经过清理的文件。然后使用 svnadmin 将 revprop 更改为刚刚编辑和清理过的文件的内容:

user@q.r[~]$ svnadmin setrevprop /path/to/mirror/repo -r0 svn:sync-from-url t2.txt

请注意,使用的是 t2.txt 而不是 t.txt。 最后,检查您的更改:

user@q.r[~]$ svnlook pg --revprop -r0 /path/to/mirror/repo svn:sync-from-url
svn+ssh://svn.def.com:5678/svn/foo

您应该会立即看到新的 repo URL,然后是 shell 提示符,没有换行符。在上面的例子中,URL 以 foo 结尾,紧接着是 shell 提示 user@q.r[~]$。

【讨论】:

  • 我在尝试 svnsync sync /repo/path svnsync: Repository UUID '72fa8357-5795-f84a-b72d-10573eb4d6c2' doesn't match expected UUID 'a3f6904a-36ca-4011 -b160-aab731c98da0'
  • 修改文件 db\revprops\0\0 并更改 svn:sync-from-uuid 属性。现在一切正常
【解决方案2】:

如果您使用用于运行 svnsync 的帐户,您可以简单地使用:

svn propset --revprop -r 0 svn:sync-from-url http://my.new/url url://to.my.repo

如果您按照手册中的说明添加了一个 pre-rev-props 钩子,该钩子会拒绝除 svnsync 用户之外的所有人更改 rev 道具,这应该可以工作。

【讨论】:

    【解决方案3】:

    Svnsync 将远程存储库 URL 存储在存储库镜像的第一个修订版本的修订属性中。因此,您可以像这样在本地镜像上view当前配置的存储库 URL:

    $ svn pg --revprop -r0 svn:sync-from-url file:///path/to/svn-mirror
    

    这意味着要将远程存储库 URL 更改为 change the revision property。例如:

    $ svn ps --revprop -r0 svn:sync-from-url https://svn.example.org/repo \
             file:///path/to/svn-mirror/
    

    示例输出:

    property 'svn:sync-from-url' set on repository revision 0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      • 2014-03-31
      • 2010-09-18
      • 1970-01-01
      相关资源
      最近更新 更多