本文字档尚在编写中,内容随时可能更改,可能无法准确描述 Apache™ Subversion® 软件的任何已发布版本。将此页面加入书签或以其他方式推荐给其他人可能不是一个明智的选择。请访问 http://svnbooks.subversion.org.cn/ 获取本书的稳定版本。

名称

svn blame (praise, annotate, ann) - 显示指定文件或 URL 的行内作者和版本信息。

概要

svn blame TARGET[@REV]...

描述

显示指定文件或 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>
$
TortoiseSVN 官方中文版 1.14.7 发布