星期四, 2月 09, 2006

patch and diff - how to make patch

diff 用來產生 差異檔 (patch file)
patch 利用差異檔將源檔案修改為新檔。



diff

diff -u oldfile newfile 
option "-u" 代表 採用universal
diff會將結果輸出到console,所以要存檔的話,用管線符號重導到新檔。
diff -u oldfile newfile > patchfile
diff可以用來對整個目錄或是單一檔案動作。
對目錄動作時要這注意,有時候新目錄會增加新檔,所以diff時要加上"-N" option.

"-N" option 意旨:若舊檔不存在,就當原來該檔案是Null file.
若是沒有"-N" option。diff 只會標示"有一個新檔",但是不會將新檔內容輸出。

比較目錄還要加上"-r" option,代表"recursive".
所以一般diff 目錄用:
 diff -Nur olddir newdir %gt; patchfile



patch

patch [option] orgfile patchfile
會將 orgfile的內容改為patch後的內容,但是"檔名"不變喔。
所以只改一個file時,用這樣的patch比較方便(option 不用)。

patch 目錄的話有一點麻煩,要將diff檔放在目錄的上一層(否則也會被patch)。
然後到目錄下...
$ patch -p1 < ../patch_file.diff
-p1 option 忽略diff file中的一階path。

沒有留言:

張貼留言