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目录下。希望能帮助大家,谢谢。

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值