SVN提交之后补写或改写log信息的方法及错误问题解决

补写或修改log信息的方法:

       使用SVN作为版本控制,在执行svn commit的时候,可能一时手快忘记写log,或者log写的有误、不详细等原因,想要补写或者修改log。此时可以通过执行如下命令来补写或者修改log信息:

svn propset svn:log 'the log you want to modify or add' -r 20 --revprop

       现在来解释一下上面的语句,log信息其实是作为svn中的一个属性。每次在提交(commit)的时候,SVN自动将-m 后面的信息作为log属性的值进行添加。因此想要补写或者修改的时候就可以更改这个svn:log属性值就行了。
       其中单引号中是要补写或修改的log信息,-r后的数字是版本号。执行完之后会提示:

property 'svn:log' set on repository revision 20。

然后可以执行svn log -r 20进行查看。

错误提示及解决办法:

       当然,不是执行完就一定会成功的,有时会出现如下的错误提示:

svn:Repository has not been enabled to accept revision propchanges;
ask the administrator to create a pre-revprop-change hook

这是因为在SVN的服务器端没有配置pre-revprop-change hook脚本。此时需要在服务器端的hooks文件下将pre-revprop-change.tmpl文件的后缀去掉,然后修改权限即可:

chmod 777 pre-revprop-change

*.tmpl文件是创建SVN时默认生成的hook脚本。但默认是没有使用的,需要去掉后缀。然后对于补写或者修改log,使用默认的脚本即可,如需其他功能,可以打开该文件自行编写修改。
       然而不一定打开hook就有*.tmpl文件。此时需要新建一个脚本,对于Linux系统内容如下:

#!/bin/sh
#Linux
REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"

if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi

echo "Changing revision properties other than svn:log is prohibited" >&2
exit 1

然后保存名为pre-revprop-change,放在hooks文件夹下并修改权限:

chmod 777 pre-revprop-change

如果不修改权限会提示:

svn:Revprop change blocked by pre-revprop-change hook (exit code 255) with no output.

在Windows系统中内容如下:

SET REPOS="%1"
SET REV="%2"
SET USER="%3"
SET PROPNAME="%4"
SET ACTION="%5"
IF %ACTION% == "M" (IF %PROPNAME% == "svn:log" (EXIT 0))
ECHO "Changing revision properties %PROPNAME% is prohibited" >&2
EXIT 1 

并修改文件名及后缀为pre-revprop-change.bat,然后同样放在hooks目录下。希望能帮助大家,谢谢。

你可能感兴趣的:(SVN版本控制)