我在Windows上设置了Subversion Edge服务器,作为迁移练习的一部分。 目前我正在努力使用svnsync 尝试执行命令时(在主服务器上):
svnsync initialize https://main.subversion.server/svn/main.svn https://mirror.subversion.server/svn/main.svn --disable-locking --username=svnsync --password=SubversionEdge
它给了我以下2个错误:
svnsync: E175002: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent
和
svnsync: E175002: Repository has not been enabled to accept revision propchanges; ask the administrator to create a pre-revprop-change hook
我尝试了几种不同的pre-revprop-change挂钩,但没有任何成功,包括"exit /b 1"
。我也试过,如果它是一个权利问题(服务用来运行的更改用户,并确保该帐户可以访问所有必要的文件)
有没有人知道如何解决(或绕过)这个?
答案 0 :(得分:1)
必须是exit 0
,而不是exit 1
,请参阅SVNBook | pre-revprop-change hook reference:
钩子必须实际存在,并在a之前返回零退出值 修订属性修改可能发生。
例如,将exit 0
放入目标存储库就足够了
的pre-revprop变化挂机。但是,这样任何经过身份验证和授权的用户都可以更改修订版我想,这不是你想要的。
您可以在钩子脚本中实现某些逻辑,以便只允许' svnsync'用户更改修订版属性:
IF "%3" == "svnsync" (goto :label1) else (echo "Only svnsync user can change revision properties" >&2 )
exit 1
goto :eof
:label1
exit 0
答案 1 :(得分:0)
对于Windows,请使用pre-revprop-change-hook.bat
并检查帐户(例如您的情况下的“svnsync”)是否具有目标仓库的写入权限。