我正在尝试使用svnsync复制已使用的存储库(我这样做是为了确保我的存储库的最佳使用,只要它的机器正常工作)但它似乎不起作用。
我有两台机器(我已更改名称,但不更改其他信息)
SOURCE/hooks
中,只存在一个可执行文件:pre-revprops-change
。svn16/hooks
中,可执行文件为pre-revprop-change
和start-commit
。在此计算机上,dav_svn.conf
包含指令SVNParentPath /var/svn
,可在http://FINAL/svn 通过在浏览器中打开每个存储库URL并发出身份验证对话框,我确保URL和login / pwd都是正确的。这些对话框似乎总能正常工作。
我正在尝试执行以下命令
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.
我想某处存在某种配置问题§。但是什么?在哪里?我已达到极限,网络似乎没有任何帮助,因为我看到的各种文档建议使整个Universe可执行的钩子是一种有效的解决方案(在我的情况下不是这样)。
答案 0 :(得分:14)
原来我是笨蛋而不是笨蛋。
在这种错误的情况下,确保所有正常工作的最简单方法是手动调用各种钩子。
它显示我的pre-revprop-change
挂钩错误地写了
"#!/bin/sh"
exit 0
显然,删除"
解决了问题。
答案 1 :(得分:12)
只是一点注意,以避免经常出错。
如果出现此类错误,请首先确保 pre-revprops-change 文件是可执行的。 如果没有,请执行:
chmod +x $DEST_SVN_REPO/hooks/pre-revprops-change
,
其中 $ DEST_SVN_REPO - 目标存储库的路径。
答案 2 :(得分:1)
见这里: https://svn.apache.org/repos/asf/subversion/trunk/notes/svnsync.txt
您的目标配置失败。必须完成INIT阶段(复制属性)。 在pre-revprops-change脚本内部,您应该编写允许更新的用户名。 否则目的地将被用户损坏。 svn无法作为主动 - 主动节点工作。 通常您配置钩子脚本以防止用户进行任何修改。他们应该只获得reaad access。
一般去超级用户网络服务。这是不可能的。