SVN diff命令在實際中常常使用,在此記錄使用點滴。html
--- wwl.test (revision 15) ---表示對比old版本
+++ wwl.test (revision 16) +++表示對比new版本java
@@ -7,7 +7,7 @@ -:表示old版本;+:表示new版本;7,7:表示從第七行開始的後七行(即7-13行)old和new的對比;若是行數比較多系統會自動分行;只會顯示增刪改行和相近行數,其餘不會顯示。git
-:表示old版本有new沒有apache
+:表示new版本有old沒有windows
沒有標識的表示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」)。svn
若是你指定的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%