是否可以在Subversion存储库中查看特定代码行的更改历史记录?
例如,我希望能够查看添加特定语句的时间或更改该语句的时间,即使其行号不再相同。
答案 0 :(得分:51)
我不知道在Subversion中跟踪语句的方法。
但是,使用svn blame
查看文件中的任何特定行的上次更改时很简单。检查SVNBook:svn blame
reference:
<强>概要强>
svn blame TARGET[@REV]...
<强>描述强>
显示指定文件或网址的内嵌作者和修订信息。每行文本都以作者(用户名)开头注释,最后一次更改为该行的修订号。
答案 1 :(得分:42)
在TortoiseSVN客户端中有一个非常好的功能,可以让你:
第二个功能完成它所说的内容 - 它显示了对该行的最后一次修改之前的注释修订。通过迭代使用此功能,您可以追溯特定行的历史记录。
答案 2 :(得分:13)
我通常会:
svn blame FILE
。使用-r
参数执行另一个查询:
svn blame FILE -r 1:REV
答案 3 :(得分:2)
这可以分两个阶段完成:
svn blame /path/to/your/file > blame.tmp
grep "your_line_of_text" blame.tmp
如果您不需要,可以删除blame.tmp文件。
原则上,一个简单的脚本可以用大致相同的任何脚本语言编写。
答案 4 :(得分:2)
在Eclipse中,您可以知道代码的每一行何时使用SVN注释视图提交,或者右键单击文件→团队→显示注释.. 的。
答案 5 :(得分:2)
这里的关键是需要多少历史。正如其他人所指出的那样,简短的回答是:svn blame
(详见svn help blame
)。如果你在历史上遥远或处理重大变化,你可能需要的不仅仅是这一个命令。
我必须自己做,并在SO上发现这个(ye ole)线程。这就是我用CLI
来解决它的问题,特别是对于我已经改变了API的情况(例如,移植某人远期过时的工作(不是在分支上, arrgh!)进入基于最新主干的功能分支。例如。函数名称已经改变到足以显示需要调用哪个函数的地方。
以下命令允许我翻阅文件“fileName.h”中已更改内容的提交,并查看相应的修订号(注意:您可能需要根据您的更多或更少内容更改'10' svn log text)。
svn log | grep -C 10 "fileName.h" | less
这会生成修改此文件的修订列表。
然后,使用blame
(或其他人指出,annotate
)缩小到感兴趣的修订是一件简单的事情。
cd trunk
svn blame fileName.h@r35948 | less
E.g。发现感兴趣的修订版是35948。
通过blame找到感兴趣的修订版后,可以生成差异以利用SVN工具。
svn diff -r35948:PREV fileName.h
使用可视化差异,可以更容易地使用更新/更新的API名称识别旧的API名称。
答案 6 :(得分:1)
svn annotate
来自TortoiseSVN的AKA SVN Blame 。
答案 7 :(得分:0)
svn blame向您显示上次修复文件中的哪一行。
这也适用于旧版本。
答案 8 :(得分:0)
一个开始是命令svn blame(或注释,赞美)。它会在最后一次修改代码行以及修改它时向您显示。 e.g:
4564 wiemann # $Id$
4564 wiemann # Author: David Goodger <goodger@python.org>
778 goodger # Copyright: This module has been placed in the public domain.
217 goodger
答案 9 :(得分:0)
如果您使用Emacs,则内置软件包vc
可以执行此操作。
vc-annotate
或 Cx v g vc-annotate >。svn blame
。vc-annotate-revision-previous-to-line
)将导航到您所在行的修订版本之前的修订版本。答案 10 :(得分:-1)
您正在寻找的命令是svn blame
。