我正在使用VisualSVN Server和TortoiseSVN,而我正在尝试查找特定行的多个修订版中显示特定行的位置。
我正在尝试查看过去的修订版save(12);
出现在哪里,以及与我的工作副本相比,它在哪些版本中移动了。
r1和我的工作副本之间的统一差异仅显示初始位置。我试过单独查看差异,但有数百个版本。
有没有办法做到这一点?
答案 0 :(得分:0)
如果您在文件的当前版本上运行TortoiseSVN blame工具,您应该会看到该行已成为现在的版本(以及由谁完成)。
答案 1 :(得分:0)
这可以手动完成,也可以使用脚本自动完成,并分阶段运行,但你会惊讶地发现:
答案 2 :(得分:0)
<强>前言强>
不是随时可用的代码,但是草稿想法很糟糕
Pure Subversion方式
这种方式(至少)有两种方法:从上到下探索历史,从下到上用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将等于当前 - 它出现了“save(12)”的修订版
Log + diff-method 1)svn log -q -v FILE
(获取修订列表,以任何形式影响FILE)2)对于列表中的每个修订,从最旧到最新修订方向执行svn diff -c REV | grep save(12) > FILE-REV
3)查找修订,与前言中的第二个注释相关,检查FILE-REV
Mercurial + hgsubversion方式
测试当地材料。我想在文件
中看到“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
为什么我使用substring而不是full-string?只是因为在完整字符串的情况下我得到了奇怪和意想不到的结果(与之前的grep相比)
>hg grep --all -n Region=-MA Charter.ini
Charter.ini:597:26:+:Region=-MA