我在SVN的评论中犯了一个错误.签到后可以编辑吗?
提交消息是"无版本属性",例如,可以使用svn propset命令进行更改
$ svn propset --revprop -r 25 svn:log "Journaled about trip to New York." property 'svn:log' set on repository revision '25'
这是在修订版25上设置名为"svn:log"的修订版属性
因为这些是无版本的,所以除非您提供pre-revprop-change挂钩脚本,否则默认安装的subversion将不允许您修改这些属性 .
这是一个典型的脚本,来自我的系统上的/ var/lib/svn/hooks/pre-revprop-change:
#!/bin/sh REPOS="$1" REV="$2" USER="$3" PROPNAME="$4" ACTION="$5" if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then echo "$1 $2 $3 $4 $5" >> /var/lib/svn/logchanges.log exit 0; fi echo "Changing revision properties other than svn:log is prohibited" >&2 exit 1
这会将更改记录到svn:log revision属性,并允许使用exit 0进行编辑,使用exit 1拒绝任何其他修订属性更改.请参阅patmortech的Windows等效答案.
要启用修订属性修改,需要创建pre-revprop-change挂钩脚本.可以在这里阅读:http://svnbook.red-bean.com/en/1.0/ch05s02.html(查找Hook Scripts部分).
对于Windows,这里是一个示例批处理文件的链接,该文件仅允许更改日志消息(而不是其他属性):http://ayria.livejournal.com/33438.html.基本上将下面的代码复制到一个文本文件中,并将其命名为pre-revprop-change.bat并将其保存在存储库的/ hooks子目录中.
@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
在不必创建pre-revprop-change挂钩脚本的情况下快速更改日志消息的方法是使用以下svnadmin
命令:
svnadmin setlog --bypass-hooks REPOS_PATH -r N FILE
其中REPOS_PATH
是服务器上存储库的路径(例如/ srv/svn/repository),N
是修订号(例如25),FILE是包含正确提交日志条目的文本文件.
两件事:这需要文件系统访问存储库文件,但创建一个pre-revprop-change钩子脚本也是如此......其次,这个命令将绕过任何可能存在的钩子脚本,所以建议使用...
使用Tortoise SVN将使您非常轻松.只需打开日志消息窗口,右键单击要编辑的修订日志,然后从上下文菜单中选择"编辑日志".
在Tortoise SVN中,您可以按照以下步骤操作.
1.转到资源库浏览器.
2.右键单击要处理的文件夹.
3.单击"显示日志".
4.在修订列表中,选择并右键单击所需的修订.
5.单击"编辑日志消息".
您现在可以在svn checkin修订版中编辑您的评论.
谢谢!