追溯性地更改 SVN 提交消息?

Change SVN commit message retroactively?

提问人:Pekka 提问时间:2/2/2010 最后编辑:bahrepPekka 更新时间:2/10/2017 访问量:60483

问:

我想将大量 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

svn tortoisesvn visualsvn-server

评论


答:

7赞 Josh Lee 2/2/2010 #1

在酒店使用。svn 书中的例子svn propsetsvn:log

100赞 JesperE 2/2/2010 #2

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

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

评论

0赞 Ed Daniel 9/17/2010
+1 谢谢你。我做了一些涉及一些 API 更改的工作,我想将这些更改单独提交到其余部分,我编写了日志消息来反映这一点......在不小心犯下整个批次之前。我通过提交空格更改来“修复”它,并带有解释其余部分的日志消息!下次,我会知道该怎么做。
1赞 J.Merrill 10/21/2011
我也给了它一个+1,但随后它不起作用,并显示一条消息“存储库尚未启用以接受修订道具更改;要求管理员创建一个 pre-revprop-change 钩子”。管理员会自动知道必须做什么吗?
19赞 JesperE 10/22/2011
你是在问我有没有一个称职的 Subversion 管理员吗?:)
0赞 sa_leinad 11/1/2018
@J.Merrill 您必须浏览到存储库位置的文件夹,然后重命名 to 才能使其正常工作。hookspre-revprop-change.tmplpre-revprop-change.bat
59赞 Adam Bellaire 2/2/2010 #3

您当然可以追溯更改日志消息,常见问题解答中对此进行了介绍。我不确定 VisualSVN 的命令行界面是如何工作的,但对于 vanilla svn 来说,命令将是

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

如果要在不转储存储库和重新加载的情况下对所有修订执行此操作,则可以编写此命令的脚本以处理所有修订的列表。这样做需要一些时间,具体取决于存储库的大小,但原则上没有理由不能这样做,并且它不涉及转储和重新加载。

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

评论

4赞 tutuDajuju 7/21/2013
多亏了@kazark,我必须这样做才能在我的编辑器中更改消息。svn propedit -r N --revprop svn:log
3赞 Matthias 11/19/2013
补充一点:默认情况下,该命令将不起作用,因为默认情况下不允许更改修订版属性。为了允许它,svn 管理员必须创建一个名为 “pre-revprop-change” 的钩子。如上所述,此信息在常见问题解答中
0赞 Enwired 3/4/2015
在 Windows 上,您需要在运行命令之前设置环境变量“SVN_EDITOR”、“VISUAL”或“EDITOR”。例如:set SVN_EDITOR=notepad.exe
27赞 Andrew Aylett 2/2/2010 #4

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

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

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

评论

0赞 Pekka 2/2/2010
+1 优秀的信息先生。如果没有预 revprop-change 钩子,它不会让我这样做。我必须将模板 bash 脚本移植到 windows,但这应该不是问题。
0赞 Andrew Aylett 2/2/2010
我添加了一个指向示例命令脚本的链接:svn.haxx.se/users/archive-2006-03/0107.shtml
1赞 Julien B. 8/30/2013 #5

刚刚遇到了这篇文章,遇到了确切的问题,在 Windows 服务器上使用 Tortoise SVN 作为客户端和 VisualSVN。

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

完成此操作后,点击上下文菜单中的“编辑日志消息”应该终于可以工作了!

3赞 Raffi Khatchadourian 1/3/2014 #6

svn propedit -r N --revprop svn:log URL

URL如果您已经在工作目录中,则上面是可选的。然后会出现一个编辑器,以便可以更改消息。