patch コマンドの使い方
今まで、”patch当ててね”見たいな差分テキストがあっても、見て見ぬ振りをしてきた。
さっきhttp://mattn.kaoriya.net/software/lang/python/20080424212547.htmのページをみて、またもや差分が載っていたので、patchの使い方を調べてみた。
意外と簡単な使い方だった、自分の為にメモ。
- 環境
- OSX 10.5.2
- patch 2.5.8
#patchのバージョン調べたら”Copyright (C) 1988 Larry Wall” がでた。ちょっと感動した。
欲しい動作としては、持ってきたパッチを適用する、自分でパッチを作成するの2つを出来るようになりたい。
前提条件として
original.txt
this is a pen
を変更して new.txtが作成されたとする
this is a pen on the table.
## パッチを作成する。
original.txt と new.txtの差分をnow_patchという差分ファイルを作成する
% diff -c original.txt new.txt > now_patch [~/tmp/test]
作成されたファイルは
*** original.txt 2008-04-30 21:48:29.000000000 +0900 --- new.txt 2008-04-30 21:51:49.000000000 +0900 *************** *** 3,5 **** --- 3,11 ---- a pen + + on + the + table. + +
こんな感じになっている。ひとまず成功か?
# パッチを適用する
今出来た、now_patchファイルをoriginal.txtと同じ階層に持ってきて、patchコマンドを実行する。
$ patch < now_patch patching file new.txt Reversed (or previously applied) patch detected! Assume -R? [n] n Apply anyway? [n] n Skipping patch. 1 out of 1 hunk ignored -- saving rejects to file new.txt.rej
ノッフ。怒られた・・・
なんかよく分からんが、パッチが適用されてないしnew.txt.rejとかいう、意味不明なファイルも出来てしまった。
>new.txt.rej
*************** *** 3,5 **** a pen --- 3,11 ---- a pen + + on + the + table. + +
結論
自分には、使うのはまだ早いのかも知れない。
パッチの中身をみて、手で直していくか・・・悲しいけど
手で直せない位複雑なのが出てきたら、また、勉強してみる