我正在使用 VisualSVN Server 和 TortoiseSVN,我试图在特定文件的多个修订版中找到特定行的出现位置。
save(12);
与我的工作副本相比,我正在尝试查看在过去的修订版中出现的位置以及移动的修订版。
r1 和我的工作副本之间的统一差异仅显示初始位置。我试过单独查看差异,但有数百个修订。
有没有办法做到这一点?
我正在使用 VisualSVN Server 和 TortoiseSVN,我试图在特定文件的多个修订版中找到特定行的出现位置。
save(12);
与我的工作副本相比,我正在尝试查看在过去的修订版中出现的位置以及移动的修订版。
r1 和我的工作副本之间的统一差异仅显示初始位置。我试过单独查看差异,但有数百个修订。
有没有办法做到这一点?
如果您在文件的当前版本上运行 TortoiseSVN 责备工具,您应该看到该行变成现在的版本,(以及是谁做的)。
前言
不是现成的代码,而是肮脏的草稿想法
纯粹的颠覆方式
这种方式(至少)有两种方法:从上到下用责备探索历史,从下到上用 log+diff
Blame-method 1) svn blame FILE > BLAMED-FILE
, 2) 在 BLAMED-FILE 字符串“save(12)”中查找,注意字符串编号(任何方式)和修订最后更改(第一列)REV 3)回溯到历史svn blame -r REV FILE > BLAMED-FILE
重复步骤 2-3,同时 a) 更改“save(12)”的字符串编号将不会显示“Movement revision”(它是前一行,而不是当前)b)文件中的 REV 将等于当前 - 它是出现“保存(12)”
Log+diff-method 1)svn log -q -v FILE
(获取修订列表,以任何形式影响文件) 2)列表中的每个修订执行svn diff -c REV | grep save(12) > FILE-REV
从最旧到最新的修订方向 3)查找与前言中的第二个注释相关的修订,检查文件-REV
Mercurial+hg颠覆方式
在当地材料上进行了测试。我想查看文件中“Region=-MA”行的历史记录
>hg grep --all -n Region Charter.ini
Charter.ini:599:28:+:Region=-NE
Charter.ini:598:23:-:Region=
Charter.ini:598:26:-:Region=-MA
Charter.ini:598:24:+:Region=-MA
Charter.ini:597:13:+:Region=-MI
Charter.ini:597:16:+:Region=-GA
Charter.ini:597:19:+:Region=-CA
Charter.ini:597:23:+:Region=
Charter.ini:597:26:+:Region=-MA
一个带有答案“Region=-MA
字符串的命令出现在字符串 26 中的修订版 597(SVN 编号为 598,+1)中。在修订版 598 中,字符串被移至字符串 24”,并且差异确认了这一点。
597(文件添加)
>hg diff -c 597 Charter.ini
diff -r 7e3dfc891358 -r 25efa70e5350 Charter.ini
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Charter.ini Tue Dec 29 08:27:48 2009 +0000
...
+Region=-MA
+75.130.96.0-75.130.111.255
598
>hg diff -c 598 Charter.ini
diff -r 25efa70e5350 -r 5665435f74b4 Charter.ini
--- a/Charter.ini Tue Dec 29 08:27:48 2009 +0000
+++ b/Charter.ini Tue Dec 29 13:09:58 2009 +0000
...
-//CHARTER-NET-5BLK
66.188.0.0-66.191.255.255
+71.80.0.0-71.95.255.255
+75.128.0.0-75.143.255.255
...
-
-//NETBLK-CHARTER-NET
-Region=
-75.128.0.0-75.143.255.255
+71.84.32.0-71.84.63.255
Region=-MA
75.130.96.0-75.130.111.255
为什么我使用子字符串而不是全字符串?只是因为在完整字符串的情况下我得到了奇怪和意想不到的结果(与以前的 grep 相比)
>hg grep --all -n Region=-MA Charter.ini
Charter.ini:597:26:+:Region=-MA
这可以手动完成,也可以使用脚本自动完成,并且分阶段进行,但您会惊讶于速度有多快: