2008-09-10 225 views

回答

44

我不知道在Subversion中通过时间跟踪语句的方法。

但是很简单,但是看到文件中的任何特定行最后一次使用svn blame进行了更改。检查SVNBook:svn blame reference

简介

svn blame TARGET[@REV]... 

说明

只看该作者和修订版本信息行中指定的文件或URL。文本的每一行都在开头用作者(用户名)和最后一次更改的修订号进行注释。

+0

你已经解决了OP的问题,但是我仍然想知道是否有某种方法可以跟踪特定行的历史记录 - 当有太多的行和太多的修订版来手动查看时。 – JohnK 2016-03-25 19:46:46

+1

许多gui工具,例如tortoiseSVN(在Windows上)在构建此功能方面做得很好,可以让您走过历史。通常突出显示任何相邻线条一起变化并使其容易进入该差异,然后从早期版本中选取相关行号并重复。我很高兴并且很快追踪了大型回购(> 10岁),其中包括从CVS迁移,甚至将存储库克隆作为历史记录的一部分进行剪切和粘贴。为了实现更多自动化,也许你可以将repo导入到git中,并使用其更高级的基于内容的责任能力。 – morechilli 2016-04-04 14:13:00

0

svn blame显示哪个checkin修改了上一次文件中的任何行。

这也适用于旧版本。

0

一开始就是命令svn blame(或注释,赞美)。它会显示一行代码的最后修改时间和修改人。例如: -

4564 wiemann # $Id$ 
    4564 wiemann # Author: David Goodger <[email protected]> 
    778 goodger # Copyright: This module has been placed in the public domain. 
    217 goodger 
37

TortoiseSVN客户端有一个非常不错的功能,让你:

  • 怪文件,显示每行的最后一个变化(这是标准)
  • “追溯以前版本”后,点击上面视图中的特定行(这是好的一行)

第二个功能是按照它说的 - 它显示最后修改行之前的注释修订。通过迭代使用此功能,您可以追溯特定行的历史记录。

+0

如果怪不显示该行怎么办?我有这种情况,我寻找特定线路的变化。用tortoise->责备修改lates修改。在文件中,我可以看到一个特定的行,在责备我无法找到它。 – Offler 2013-03-20 07:17:38

12

我通常:

  1. 运行svn blame FILE第一。
  2. 请注意特定行的最后修订版。从那里手动

    svn blame FILE -r 1:REV 
    
  3. 跟踪:
  4. 请与-r说法另一个查询。

0

这可以分两个阶段进行:

  1. svn blame /path/to/your/file > blame.tmp
  2. grep "your_line_of_text" blame.tmp

您可以稍后删除blame.tmp文件,如果你不需要它。

原则上,可以用大致相同的任何脚本语言编写简单的脚本。

2

Eclipse就可以知道,当你的代码的每一行已经使用SVN注释视图,或者在文件上点击右键→团队注解显示...承诺。

2

这里的关键是需要多少历史记录。正如其他人指出的,简短的答案是:svn blame(详情请参阅svn help blame)。如果你在历史或远期处理重大变化,你可能需要的不仅仅是这一个命令。

我只是自己做了这件事,并发现这(ye ole)线程在这里。下面是我用CLI解决这个问题的方法,特别是针对我的情况,API改变了(例如,将某人远远过时的工作(不在分支上,)移回到基于up到最新的中继线)。例如。函数名称已经发生了变化,以至于不清楚哪个函数需要被调用。

第一步

下命令让我通过网页提交,事情的文件“fileName.h”在发生了变化,并查看相应的版本号(注意:您可能需要改变“10”根据你的svn日志文本或多或少的情况)。

svn log | grep -C 10 "fileName.h" | less

这导致此文件的修改版本列表。

第二步

然后,它是使用blame(或其他人指出,annotate)缩小到感兴趣的修订一件简单的事情。

cd trunk 
svn blame [email protected] | less 

例如,找到感兴趣的修订是35948.

第三步

已经发现通过指责感兴趣的修订版本,一个差异可以生产充分利用SVN工具。

svn diff -r35948:PREV fileName.h 

结论

有一个视觉差异使得它更容易与新的/更新的API名称标识旧的API名称。

相关问题