11

我正在尝试使用 svnsync 复制使用过的存储库(我这样做是为了确保只要我的存储库的机器正在工作,就可以最佳地使用我的存储库),但它似乎不起作用。

我有两台机器(我更改了名称,但没有更改其他信息)

  • INITIAL:使用 Subversion 1.4.5 (r25188) 的自定义 Linux(由 svnadmin 报告)。在这台机器上,我正在尝试在名为 SOURCE 的存储库上进行同步。可以使用 http 协议访问此存储库,并且已创建 svnsync 用户。在SOURCE/hooks中,只存在一个可执行文件:pre-revprops-change.
  • 最终:带有 Subversion 1.6.6 (r40053) 的 Ubuntu(由 svnadmin 报告)。在这台机器上,我将在一个名为 svn16 的存储库上进行同步。可以使用 http 协议访问此存储库,并且已创建 svnsync 用户。在svn16/hooks中,可执行文件是pre-revprop-changestart-commit。在这台机器上,dav_svn.conf包含指令SVNParentPath /var/svn,使所有存储库都可以在http://FINAL/svn下访问

我通过在浏览器中打开每个存储库 URL 并发出身份验证对话框来确保 URL 和登录名/密码是正确的,这似乎总是有效的。

我正在尝试执行以下命令

svnsync initialize http://FINAL/svn/svn16 http://INITIAL/SOURCE

但它总是最终显示

Authentication realm: <http://FINAL:80> All Subversion Repositories hosted on FINAL
Password for 'ubunut-user':
Authentication realm: <http://FINAL.fr:80> All Subversion Repositories hosted on FINAL
Username: svnsync
Password for 'svnsync':
svnsync: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent
svnsync: At least one property change failed; repository is unchanged
svnsync: Error setting property 'sync-lock':
Revprop change blocked by pre-revprop-change hook (exit code 255) with no output.

我想某处存在某种配置问题§。但是什么?在哪里?我已经达到了我的极限,网络似乎在这里没有帮助,因为我看到的各种文档都建议让整个宇宙都可以执行钩子是一种有效的解决方案(在我的情况下不是这样)。

4

3 回答 3

14

原来我比笨还笨。

在这种错误情况下,确保一切正常工作的最简单方法是手动调用各种钩子。

它显示我的pre-revprop-change钩子写错了

"#!/bin/sh"
exit 0

显然,删除"解决了这个问题。

于 2010-08-23T09:32:08.733 回答
12

只是一点点注意,以避免经常出错。

如果出现此类错误,请首先确保pre-revprops-change文件是可执行的。如果没有,请执行:

chmod +x $DEST_SVN_REPO/hooks/pre-revprops-change,

其中$DEST_SVN_REPO -- 目标存储库的路径。

于 2012-04-22T14:51:25.477 回答
1

见这里: https ://svn.apache.org/repos/asf/subversion/trunk/notes/svnsync.txt

您的目标配置失败。必须完成初始化阶段(复制属性)。在 pre-revprops-change 脚本中,您应该对允许更新的用户名进行编码。否则目的地将被用户损坏。svn 不能作为主动-主动节点工作。通常您配置挂钩脚本以防止用户进行任何修改。他们应该只有读取权限。

一般去超级用户网络服务。这不在主题范围内。

于 2013-11-04T13:34:46.170 回答