追溯更改SVN提交消息?


85

我想将大量SVN提交消息重写为不同的结构,例如为类别添加前缀。从:

"foo" now accepts "bar" format for connection string.

我想要

core - database - "foo" now accepts "bar" format for connection string.

有没有一种简单的方法可以做到这一点,而不包括使用以下方法转储整个存储库svndumpfilter

我在客户端使用TortoiseSVN,在服务器端使用VisualSVN。(VisualSVN是classic的包装svn,我也可以通过命令行与之交谈。)

Answers:


98

是的,提交消息可以更改。它们被实现为修订版的属性,类似于常规的文件属性。

在TortoiseSVN日志窗口中,您可以右键单击提交,然后选择“编辑日志消息”。


+1谢谢你。我做了一些涉及一些API更改的工作,这些更改我想分别提交给其余部分,并在意外提交全部内容之前写了日志消息来反映这一点。我通过提交空白消息并解释了其余内容的日志更改来“修复”它!下次,我会知道该怎么办。
Ed Daniel

1
我也为此设置了+1,但随后它却与“无法启用存储库以接受修订版本更改;请管理员创建pre-revprop-change挂钩”消息不起作用。管理员会自动知道该做什么吗?
J.Merrill 2011年

19
您是否在问是否有胜任的Subversion管理员?:)
JesperE 2011年

@ J.Merrill您必须浏览到hooks存储库所在位置的文件夹,并将其重命名为pre-revprop-change.tmpl,该文件夹pre-revprop-change.bat才能正常工作。
sa_leinad

59

您当然可以追溯地更改日志消息,这在FAQ中进行了介绍。我不确定VisualSVN的命令行界面如何工作,但是对于vanilla svn来说,命令是

svn propset -r N --revprop svn:log "new log message" URL

如果要对所有修订执行此操作,而无需转储存储库并重新加载,则可以对该命令编写脚本以处理所有修订的列表。根据存储库的大小,这种方式将花费一些时间,但是原则上没有理由不这样做,并且不涉及转储和重新加载。

此外,vanilla SVN具有一个命令svnlook,它是一种直接与存储库文件一起使用的管理工具。该工具不理解URL(您必须具有对存储库的文件系统级访问权限),但速度快得多。语法略有不同,但是您可以使用该工具以相同的方式修改属性。


3
感谢@kazark,我必须要做svn propedit -r N --revprop svn:log的是能够在编辑器中更改消息。
tutuDajuju

3
只是要添加一条注释:默认情况下,该命令将不起作用,因为默认情况下不允许更改修订版属性。为了允许它,svn管理员必须创建一个名为“ pre-revprop-change”的钩子。如上所述,此信息位于FAQ中。
Matthias

在Windows上,您需要在运行命令之前设置环境变量“ SVN_EDITOR”,“ VISUAL”或“ EDITOR”。例如:set SVN_EDITOR=notepad.exe
连线

26

是的,可以,但是您需要首先在存储库上启用它。

在存储库中,在hooks目录中,有一个名为pre-revprop-change.tmpl的文件。它对它的功能有几页评论,并且设置为仅允许更改日志属性。要启用它,请将文件重命名为pre-revprop-change并使其可执行(我假设是POSIX托管的版本,如果您使用Windows托管,则可能会发现此消息很有用)。

一旦存储库允许,您就可以使用Tortoise从提交的右键菜单中更改提交的日志消息,也可以使用命令行。


+1先生,信息很棒。没有pre-revprop-change钩子,它就不允许我这样做。我将不得不将模板bash脚本移植到Windows,但这不是问题。
Pekka '02

我添加了指向示例命令脚本的链接:svn.haxx.se/users/archive-2006-03/0107.shtml
Andrew Aylett



1

在本文中遇到了确切的问题,在Windows服务器上使用Tortoise SVN for Client和VisualSVN。

如果您碰巧遇到“ DAV请求失败”错误消息,请查看Andrew Aylett的回答,然后在存储库hooks子目录中编辑“ pre-revprop-change.tmpl”。

一旦完成,点击上下文菜单中的“编辑日志消息”就可以正常工作了!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.