我在SVN的评论中犯了一个错误。我可以在签到后编辑吗?
答案 0 :(得分:65)
提交消息为"unversioned properties",可以使用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 on my system:
#!/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等效答案。
答案 1 :(得分:55)
要启用修订属性修改,您需要创建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
答案 2 :(得分:23)
在不必创建pre-revprop-change挂钩脚本的情况下快速更改日志消息的方法是使用以下svnadmin
command:
svnadmin setlog --bypass-hooks REPOS_PATH -r N FILE
其中REPOS_PATH
是服务器上存储库的路径(例如/ srv / svn / repository),N
是修订号(例如25),FILE是包含正确的文本文件提交日志条目。
两件事: 这需要文件系统访问存储库文件,但创建pre-revprop-change钩子脚本也是如此......其次,此命令将绕过任何可能存在的钩子脚本,因此建议使用...
答案 3 :(得分:9)
使用Tortoise SVN将使您非常轻松。只需打开日志消息窗口,右键单击要编辑的修订日志,然后从上下文菜单中选择“编辑日志”。
答案 4 :(得分:6)
在Tortoise SVN中,您可以按照以下步骤操作。
1.转到资源库浏览器。
2.右键单击要处理的文件夹。
3.单击“显示日志”。
4.在修订列表中,选择并右键单击所需的修订。
5.单击“编辑日志消息”。
您现在可以在svn checkin修订版中编辑您的评论。
谢谢!
答案 5 :(得分:4)
svn propset svn:log --revprop -r <REVISION> "My corrected log message" <PATH-TO-REPOSITORY>
答案 6 :(得分:4)
在Eclipse(或Rational Application Developer)中使用Subclipse:
选择团队 - &gt;显示历史记录然后右键单击要更改其注释的修订,然后选择“设置提交属性”,您可以更改注释和/或作者。