Subversion中特定代码行的更改历史

lin*_*lof 75 svn

是否可以在Subversion存储库中查看特定代码行的更改历史记录?

例如,我希望能够查看添加特定语句的时间或更改该语句的时间,即使其行号不再相同.

mor*_*lli 53

我不知道在Subversion中跟踪语句的方法.

但是,很容易看到文件中的任何特定行最后一次更改时使用svn blame.检查SVNBook:svn blame参考:

概要

svn blame TARGET[@REV]...
Run Code Online (Sandbox Code Playgroud)

描述

显示指定文件或URL的内嵌作者和修订信息.每行文本在开头用作者(用户名)和最后一次更改到该行的修订号进行注释.

  • 您已经解决了 OP 的问题,但我仍然想知道是否有某种方法可以跟踪特定行的历史记录——当有太多行和太多修订无法手动查看时。 (2认同)
  • 许多 GUI 工具,例如 tortoiseSVN(在 Windows 上)都很好地构建了此功能,让您可以回顾历史。通常会突出显示一起更改的任何相邻行,并使其易于进入该差异,然后从早期版本中选取相关行号并重复。我很高兴并快速地追踪了大型存储库(> 10 年),其中包括从 CVS 进行的迁移,甚至剪切和粘贴存储库克隆作为历史的一部分。为了获得更多自动化,也许您可​​以将存储库导入 git 并使用其更高级的基于内容的责备功能。 (2认同)

Raf*_*ird 43

TortoiseSVN客户端中有一个非常好的功能,可以让你:

  • 责怪文件,显示每行的最后一次更改(这是标准的)
  • 点击上面视图中的特定行后,"责备以前的修订"(这是好的)

第二个功能就是它所说的 - 它显示了对该行的最后一次修改之前的注释修订.通过迭代使用此功能,您可以追溯特定行的历史记录.


ate*_*dja 13

我通常会:

  1. svn blame FILE第一.
  2. 请注意特定行的最后一个修订版.
  3. 使用-r参数执行另一个查询:

    svn blame FILE -r 1:REV
    
    Run Code Online (Sandbox Code Playgroud)
  4. 从那里手动跟踪.


小智 5

这可以分两个阶段完成:

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

如果你不需要,你可以在之后删除blame.tmp文件。

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