我使用VisualSVN服務器和TortoiseSVN,我試圖尋找到一個特定的線出現,穿過一個特定文件的多個版本。如何找到的代碼行被移動文件的哪些修訂?
我想看看在過去的版本中,save(12);
在哪裏出現,以及它在哪些版本中被移動,與我的工作副本相比。
R1和我的工作副本之間的標準差異僅顯示初始位置。我試過單獨查看差異,但有數百個版本。
有沒有辦法做到這一點?
我使用VisualSVN服務器和TortoiseSVN,我試圖尋找到一個特定的線出現,穿過一個特定文件的多個版本。如何找到的代碼行被移動文件的哪些修訂?
我想看看在過去的版本中,save(12);
在哪裏出現,以及它在哪些版本中被移動,與我的工作副本相比。
R1和我的工作副本之間的標準差異僅顯示初始位置。我試過單獨查看差異,但有數百個版本。
有沒有辦法做到這一點?
如果你運行該文件的當前版本的TortoiseSVN的怪工具,您應該看到修訂版該行成爲它現在是什麼,(和誰做的)。
這可以手動完成,或者使用自動腳本,並分階段的作品,但你會驚訝的速度有多快:
BTW分佈式VCS如git和mercurial可以選擇自動執行此操作。 –
前言
不準備使用的代碼,但髒意見草案
純顛覆方式
這種方式已經(至少)兩種方法:探索從上歷史底部,指責和從底部到頂部使用log + diff
責備方法1)svn blame FILE > BLAMED-FILE
,2)在BLAMED-FILE字符串中找到「save(12)」,註釋字符串編號(任何方式)和修訂版本最後更改(第一列) REV 3)移回歷史svn blame -r REV FILE > BLAMED-FILE
重複步驟2-3,wh ile a)更改「save(12)」的字符串編號不會顯示「Movement revision」(它在前一行,而不是當前)b)文件中的REV等於當前 - 它是出現「save(12) 「
登錄+ DIFF-方法1)svn log -q -v FILE
(得到修正,任何形式的文件,其中影響的列表)2),用於在列表中的每個版本在從最舊的執行svn diff -c REV | grep save(12) > FILE-REV
到最新修訂3方向)求修正,其關聯到第二個音符在前言中,檢查文件-REV
水銀+ hgsubversion方式
在測試了當地的材料。我希望看到的線「地區= -MA」歷史文件,回答「Region=-MA
串出現在改版597(SVN號碼是598,+ 1)字符串26.修訂598串
>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
一個命令被移動到字符串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
>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
你錯過歷史方面的要求 - 必須在循環中進行。這樣怪,使用字符串中-問題作爲新的修訂版源版本 –
如果該行的最後更改是移動,它將顯示爲責備工具顯示最後修訂誰的行格式。 –
史蒂夫,謝謝你,但它並沒有讓我知道我在做什麼。在最新修訂版本中,它只顯示一行,處於當前狀態。我認爲@LazyBadger是對的。 –