如何获取历史修订中特定行的行号?

时间:2013-11-22 09:19:05

标签: git svn version-control

如何获取历史修订中特定行的行号?

例如,我有

  
    

修订版123:第77行:doSomething()

  

在代码文件的当前版本(修订版123)中。

我想知道以前版本的代码中该行的位置。 对于上一行代码,我想在修订版121中获取其行信息

  
    

修订版121:第71行:doSomething()

  

如何在svn(和git)中执行此操作?

---更具体一点---

我的目的是获取一些代码的revisionNo-lineNo的历史,构建一些函数来满足查询:

  
    

Rev.121中XXX.java的Rev.123中的第77行=>第71行。

         

Rev.121中XXX.java的Rev.123中的第123行(r123中新增内容)=>新

         

Rev.121中XXX.java的Rev.123中的第9999行(r123中不存在)=> NotExist

  

1 个答案:

答案 0 :(得分:2)

我认为svn和git没有内置功能,但您可以使用像grep这样的工具来查找。

在svn中(其中$ {reva}和$ {revb}是修订版,$ {file}是文件):

$ svn cat -r ${reva} ${file} | grep -n doSomething
19:void doSomething()

$ svn cat -r ${revb} ${file} | grep -n doSomething
49:void doSomething()

在git中:

$ git show ${reva}:${file} | grep -n doSomething
19:void doSomething()

$ git show ${revb}:${file} | grep -n doSomething
49:void doSomething()