如何编辑Subversion中已提交的日志消息?


狗头军师
2024-09-06 10:20:12 (7月前)

有没有一种方法可以在Subversion中编辑某个修订版本的日志消息?我不小心在提交消息中输入了错误的文件名,以后可能会造成混淆。

我已经看到了如何在Git中编辑错误的提交消息?,但对于Subversion而言,该问题的解决方案似乎并不相似(根据svn help commit)。

2 条回复
  1. 1# v-star*위위 | 2020-08-18 15-40

    本质上,您必须具有(直接或间接)存储库的管理员权限才能执行此操作。您可以配置存储库以允许所有用户执行此操作,也可以直接在服务器上修改日志消息。

    请参见本部分中的颠覆常见问题解答(重点煤矿):

    日志消息作为附加到每个修订版的属性保留在资源库中。默认情况下,提交日志消息属性(svn:log)后就无法对其进行编辑。这是因为对修订版属性(其中svn:log是其中之一)的更改导致该属性的先前值被永久丢弃,并且Subversion试图防止您意外地执行此操作。但是,有两种方法可以让Subversion更改修订版属性。

    第一种方法是使存储库管理员启用修订版属性修改。这是通过创建一个称为“ pre-revprop-change”的钩子来完成的(有关如何执行此操作的更多详细信息,请参见Subversion书中的本节)。“ pre-revprop-change”挂钩在更改之前可以访问旧日志消息,因此它可以以某种方式(例如,通过发送电子邮件)进行保存。启用修订属性修改后,您可以通过将—revprop开关传递给svn propedit或svn propset来更改修订的日志消息,如以下任意一种:

    1. $svn propedit -r N --revprop svn:log URL
    2. $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选项。但是,如果决定使用此选项,请务必小心。您可能会绕过诸如更改的电子邮件通知之类的事情,或跟踪修订属性的备份系统。

登录 后才能参与评论