本手册旨在描述 Apache™ Subversion® 的 1.7.x 系列。如果您运行的是其他版本的 Subversion,强烈建议您访问 https://svnbook.subversion.org.cn/ 并查阅适合您 Subversion 版本的文档。
svn blame (praise, annotate, ann) — 显示指定文件或 URL 的作者和修订信息。
如果您想查看测试库中 readme.txt
的 blame 注解源代码
$ svn blame http://svn.red-bean.com/repos/test/readme.txt 3 sally This is a README file. 5 harry Don't bother reading it. The boss is a knucklehead. 3 sally …
现在,仅仅因为 svn blame 显示 Harry 在修订版 5 中最后修改了 readme.txt
,请理解这个子命令默认情况下对构成更改非常挑剔。在责怪 Harry 似乎不服从命令之前,首先要考虑他可能对文件的更改只是针对其特定字符内容,而不是其整体语义含义。也许他的更改是由于盲目地对该文件运行了空白清理脚本造成的。您可能需要检查具体的差异和相关的日志消息,以准确了解 Harry 在修订版 5 中对该文件做了什么。
$ svn log -c 5 http://svn.red-bean.com/repos/test/readme.txt ------------------------------------------------------------------------ r5 | harry | 2008-05-29 07:26:12 -0600 (Thu, 29 May 2008) | 1 line Commit the results of 'double-space-after-period.sh'. ------------------------------------------------------------------------ $ svn diff -c 5 http://svn.red-bean.com/repos/test/readme.txt Index: http://svn.red-bean.com/repos/test/readme.txt =================================================================== --- http://svn.red-bean.com/repos/test/readme.txt (revision 4) +++ http://svn.red-bean.com/repos/test/readme.txt (revision 5) @@ -1,5 +1,5 @@ This is a README file. -Don't bother reading it. The boss is a knucklehead. +Don't bother reading it. The boss is a knucklehead. INSTRUCTIONS ============ $
果然,Harry 只更改了该行的空白。幸运的是,--extensions
(-x
) 选项可以帮助您更好地确定对给定文本行进行 有意义 更改的最后时间。例如,以下是如何在忽略空白更改的同时查看注释信息
$ svn blame -x -b http://svn.red-bean.com/repos/test/readme.txt 3 sally This is a README file. 4 jess Don't bother reading it. The boss is a knucklehead. 3 sally …
如果您使用 --xml
选项,您可以获得描述 blame 注解的 XML 输出,但不会显示行的内容本身
$ svn blame --xml http://svn.red-bean.com/repos/test/readme.txt <?xml version="1.0"?> <blame> <target path="readme.txt"> <entry line-number="1"> <commit revision="3"> <author>sally</author> <date>2008-05-25T19:12:31.428953Z</date> </commit> </entry> <entry line-number="2"> <commit revision="5"> <author>harry</author> <date>2008-05-29T13:26:12.293121Z</date> </commit> </entry> <entry line-number="3"> … </entry> </target> </blame> $