日志消息作为附加到每个修订版的属性保留在资源库中。默认情况下,提交日志消息属性(svn:log)后就无法对其进行编辑。这是因为对修订版属性(其中svn:log是其中之一)的更改导致该属性的先前值被永久丢弃,并且Subversion试图防止您意外地这样做。但是,有两种方法可以让Subversion更改修订版属性。
第一种方法是让存储库管理员启用修订版属性修改。这是通过创建一个称为“ pre-revprop-change”的钩子来完成的(有关如何执行此操作的更多详细信息,请参见Subversion书中的本节)。“ pre-revprop-change”挂钩在更改之前可以访问旧日志消息,因此它可以以某种方式(例如,通过发送电子邮件)进行保存。启用修订属性修改后,您可以通过将--revprop开关传递给svn propedit或svn propset来更改修订的日志消息,如以下任意一种:
$svn propedit -r N --revprop svn:log URL
$svn propset -r N --revprop svn:log "new log message" URL
其中N是您要更改其日志消息的修订号,URL是存储库的位置。如果从工作副本中运行此命令,则可以省略URL。
更改日志消息的第二种方法是使用svnadmin setlog。
这必须通过引用存储库在文件系统上的位置来完成。您不能使用此命令修改远程存储库。
$ svnadmin setlog REPOS_PATH -r N FILE
其中REPOS_PATH是存储库位置,N是要更改其日志消息的修订号,而FILE是包含新日志消息的文件。如果“ pre-revprop-change”钩子不存在(或者由于某些原因要绕过钩子脚本),则还可以使用--bypass-hooks选项。但是,如果决定使用此选项,请非常小心。您可能会绕过诸如更改的电子邮件通知或跟踪修订属性的备份系统之类的内容。