SVN diff命令在實際中經常使用,在此記錄使用點滴。

--- wwl.test (revision 15) ---表示對比old版本
+++ wwl.test (revision 16) +++表示對比new版本
@@ -7,7 +7,7 @@ -:表示old版本;+:表示new版本;7,7:表示從第七行開始的后七行(即7-13行)old和new的對比;如果行數比較多系統會自動分行;只會顯示增刪改行和相近行數,其他不會顯示。
-:表示old版本有new沒有
+:表示new版本有old沒有
沒有標識的表示old和new版本此行一致
下圖為刪除5,6兩行后的diff輸出:
當使用一個外部的diff命令時,Subversion會生成一個非常復雜的命令行。第一個參數就是具體的--diff-cmd,然后就是具體的--extensions (盡管使用空白的 --符號時會忽略擴展),或者如果沒有指定--extensions或者--extensions為空的話,就加上‘-u’參數。第三和第四個參數,Subversion會傳遞一個“-L”還有第一個文件的標簽(例如,“"project_issues.html (revision 11209)”)。第五個和第六個就是另一個“-L”和第二個文件的標簽。第七和第八個參數分別是第一個和第二個文件的名稱(例如,“.svn/text-base/project_issues.html.svn-base”和“.svn/tmp/project_issues.html.tmp”)。
如果你指定的diff命令不支持這些參數的話,你可能需要創建一個簡單的封裝腳本來忽略這些參數,然后將最后的你需要的文件的路徑參數傳遞給diff命令。
警告:Subversion並不希望外部的diff工具會改變它接收到的文件,否則可能會破壞當前工作拷貝。
http://subversion.apache.org/faq.zh.html#diff-cmd
因此比較2個文件時,只要知道這2個文件的路徑及文件名就可以了,也就是上述diff內部命令中的第7個和第8個2個參數。
#安裝:
1 #!/bin/sh 2 #Configure your diff program here 3 #DIFF="usr/bin/meld" 4 DIFF="meld" 5 OLD=${6} 6 NEW=${7} 7 $DIFF $OLD $NEW
#如果腳本目錄和名稱不同自行使用絕對路徑




1 #!/bin/sh 2 #Configure your diff program here 3 #DIFF="usr/bin/kdiff3" 4 DIFF="kdiff3" 5 OLD=${6} 6 NEW=${7} 7 YOUR=${8} 8 $DIFF $OLD $NEW $YOUR
#如果腳本目錄和名稱不同自行使用絕對路徑
@ECHO OFF REM Configure your favorite kdiff3/merge program here. SET DIFF3="D:\Software\KDiff3\kdiff3.exe"
REM 有效使用的只有OLD和NEW,YOURS只是湊數的 SET OLD=%6 SET NEW=%7 SET YOURS=%8 REM %DIFF3% %OLD% %NEW% %YOURS% %DIFF3% %OLD% %NEW% %YOURS%
svn help diff:
diff (di): 顯示兩個版本或路徑的差異。