0

作为迁移练习的一部分,我在 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". 我也尝试过是否是权限问题(更改了服务用来运行的用户并确保该帐户可以访问所有必要的文件)有没有人知道如何解决(或解决)这个问题?

4

2 回答 2

1

它必须是exit 0,不是exit 1,参见SVNBook | pre-revprop-change 挂钩参考

挂钩必须实际存在并返回零退出值,然后才能进行修订属性修改。

例如,放入exit 0目标存储库的 pre-revprop-change-hook 就足够了。但是,通过这种方式,任何经过身份验证和授权的用户都可以更改修订属性。这不是你想要的,我猜。

您可以在挂钩脚本中实现一些逻辑,以仅允许“svnsync”用户更改修订属性:

IF "%3" == "svnsync" (goto :label1) else (echo "Only svnsync user can change revision properties" >&2 )

exit 1
goto :eof

:label1
exit 0
于 2014-06-10T13:35:57.937 回答
0

对于 Windows,请使用 pre-revprop-change-hook.bat

并检查帐户(例如您的情况下的“svnsync”)是否具有对目标存储库的写入权限。

于 2015-03-26T12:16:46.007 回答