如何在svnsync中更改svn url?

sdu*_*sdu 18 svn svnsync

如何更改(重定位)我在使用"svnsync init"(示例来自#https://whateverto svn://whatever)创建镜像存储库时输入的subversion URL ?

试图用新的url再次运行svnsync init但是

svnsync init file:///<path_to_mirror> http:///<new_url>
svnsync: Destination repository is already synchronizing from 'http:///<old_url>'
Run Code Online (Sandbox Code Playgroud)

Bob*_*nny 21

sync-from 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
Run Code Online (Sandbox Code Playgroud)

您将看到镜像当前正在同步的repo的URL.在上面的示例中,主仓库URL以... / foo结尾.它最后可能没有换行符,因此您的shell提示符可能会跟随.现在您需要将其转换为文件,因为svnadmin使用文件进行输入以更改revprops.

user@q.r[~]$ svnlook pg --revprop -r0 /path/to/mirror/repo svn:sync-from-url > t.txt
Run Code Online (Sandbox Code Playgroud)

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

user@q.r[~]$ cat t.txt | tr -d '\n' > t2.txt
Run Code Online (Sandbox Code Playgroud)

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

user@q.r[~]$ svnadmin setrevprop /path/to/mirror/repo -r0 svn:sync-from-url t2.txt
Run Code Online (Sandbox Code Playgroud)

请注意,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
Run Code Online (Sandbox Code Playgroud)

您应该看到新的repo URL后面紧跟shell提示符,没有换行符.在上面的示例中,URL以foo结尾,紧接着是shell提示符user @ qr [〜] $.

  • 修改文件db\revprops\0\0并更改svn:sync-from-uuid属性.现在一切都好 (2认同)

8DH*_*8DH 14

如果您使用用于运行svnsync的帐户,您只需使用:

svn propset --revprop -r 0 svn:sync-from-url http://my.new/url url://to.my.repo
Run Code Online (Sandbox Code Playgroud)

如果您按照手册中的说明进行操作并添加了一个pre-rev-props挂钩,除了svnsync用户之外,除了svnsync用户之外,它还可以更改rev道具.