昨天,我想在SVN上修改一个文件的注释,但提交时提示:
DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent At least one property change failed; repository is uncahnaged Error setting property "log": Repository has not been enabled to accept revision propchanges; ask the administrator to create a pre-revprop-change hook
google了一下,有两种解决办法。
第一种是直接在svn服务器上的工程库目录下 hooks 目录下新建一个空的 pre-revprop-change.bat即可,这样就好象没有对修改权限进行限制,如果是个人使用的服务器,可以这样处理,如果是项目组中使用,则建议采用下面的方法。
第二种方法跟第一种一样,新建一个pre-revprop-change.bat文件,然后把下面的内容粘贴到该文件中:
@ECHO OFF :: Set all parameters. Even though most are not used, in case you want to add :: changes that allow, for example, editing of the author or addition of log messages. set repository=%1 set revision=%2 set userName=%3 set propertyName=%4 set action=%5 :: Only allow the log message to be changed, but not author, etc. if /I not "%propertyName%" == "svn:log" goto ERROR_PROPNAME :: Only allow modification of a log message, not addition or deletion. if /I not "%action%" == "M" goto ERROR_ACTION :: Make sure that the new svn:log message is not empty. set bIsEmpty=true for /f "tokens=*" %%g in ('find /V ""') do ( set bIsEmpty=false ) if "%bIsEmpty%" == "true" goto ERROR_EMPTY goto :eof :ERROR_EMPTY echo Empty svn:log messages are not allowed. >&2 goto ERROR_EXIT :ERROR_PROPNAME echo Only changes to svn:log messages are allowed. >&2 goto ERROR_EXIT :ERROR_ACTION echo Only modifications to svn:log revision properties are allowed. >&2 goto ERROR_EXIT :ERROR_EXIT exit /b 1
至于在Linux/Unix上,则可以复制 hooks 目录下的 pre-revprop-change.tmpl 为 pre-revprop-change.sh,然后根据实现需要做相应修改即可。