【发布时间】:2010-10-16 02:59:08
【问题描述】:
我在 SVN 的评论中输入了一个错误。签入后可以修改吗?
【问题讨论】:
标签: svn tortoisesvn
我在 SVN 的评论中输入了一个错误。签入后可以修改吗?
【问题讨论】:
标签: svn tortoisesvn
svn propset svn:log --revprop -r <REVISION> "My corrected log message" <PATH-TO-REPOSITORY>
【讨论】:
提交消息为"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 挂钩脚本。
这是一个典型的脚本,来自我系统上的 /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 修订属性的更改,并允许使用出口 0 进行编辑,使用出口 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
【讨论】:
使用 Tortoise SVN 将使您轻松完成这项工作。只需打开日志消息窗口,右键单击要编辑的修订日志,然后从上下文菜单中选择编辑日志。
【讨论】:
一种无需创建 pre-revprop-change 挂钩脚本即可快速更改日志消息的方法是使用以下svnadmincommand:
svnadmin setlog --bypass-hooks REPOS_PATH -r N FILE
其中REPOS_PATH 是服务器上存储库的路径(例如/srv/svn/repository),N 是修订号(例如25),FILE 是包含正确提交日志条目的文本文件。
两件事: 这需要文件系统访问存储库文件,但创建 pre-revprop-change 挂钩脚本也是如此...其次,此命令将绕过可能存在的任何挂钩脚本,因此建议使用...
【讨论】:
在 Eclipse(或 Rational Application Developer)中使用 Subclipse:
选择团队 --> 显示历史,然后右键单击要更改其 cmets 的修订,然后选择“设置提交属性”,您可以更改评论和/或作者。
【讨论】:
在 Tortoise SVN 中,您可以按照以下步骤操作。
1. 转到存储库浏览器。
2. 右键单击要处理的文件夹。
3. 单击显示日志。
4. 在修订列表中,选择并右键单击所需的修订。
5. 点击编辑日志消息。
您现在可以在 svn checkin 修订版中编辑您的 cmets。
谢谢!
【讨论】: