假如要 merge code 的話, SVN 有些現成的 function 可以用. 不過對於兩個沒有直接血緣關係的 branch (或者說因為 merge 又 copy 把原來的關係弄混了), merge function 就會失靈. 我猜 merge code 的時候, 看到 skipped missing target 或許就是這樣來的.
此時, diff 和 patch 應該可以幫得上忙. 首先產生 diff.
diff -parameter oldURL newURL>patch_file
parameter 可能是 ruNp 或是 ruNa
r 表示 recursive 比較下面的所有子目錄
u 表示以統一的方式來表示檔案間的不同, ‘-‘ 表示刪除, ‘+’表示新增.
N (= new-file) 表示某個 file 可以對應到同一個目錄底下的空 file, 因為這個 file 本身可能是新增或是刪除的.
p 對 C 語言的意義是: 可以比較兩者 function 的不同
a 表示是 ascii file, text file
例如: diff -ruNa oldDirectory newDirectory > patch_file
—————————————————
接著要 patch, patch 的格式是 patch -pX
X = 0, 表示從第一層目錄 patch, X = 1, 表示從第二層目錄 patch,…
例如:
cd /D1/D2/D3
cd ../../..
patch -p2 < patch_file
這樣會 patch 到 D3 這一層