我可以回去编辑SVN签到的评论吗?

时间:2009-03-28 14:42:54

标签: svn tortoisesvn

我在SVN的评论中犯了一个错误。我可以在签到后编辑吗?

7 个答案:

答案 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”的修订版属性

配置subversion以允许修订属性更改

由于这些是无版本的,因此除非您提供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;显示历史记录然后右键单击要更改其注释的修订,然后选择“设置提交属性”,您可以更改注释和/或作者。