1. ホーム
  2. linux

[解決済み] SVNパッチの作成と適用方法について教えてください。

2022-01-26 10:20:14

質問

のSVN形式のパッチファイルを作りたいのですが。 httpd.conf 他のホストにも簡単に適用できるようにするためです。

もし私が

cd /root
diff -Naur /etc/httpd/conf/httpd.conf_original /etc/httpd/conf/httpd.conf > httpd.patch
cp /etc/httpd/conf/httpd.conf_original /etc/httpd/conf/httpd.conf
patch < httpd.patch

得ることができる。

can't find file to patch at input line 3
Perhaps you should have used the -p or --strip option?
The text leading up to this was:
--------------------------
|--- /etc/httpd/conf/httpd.conf_original    2012-04-26 13:36:08.331068438 +0200
|+++ /etc/httpd/conf/httpd.conf 2012-04-26 14:27:36.857075085 +0200
--------------------------
File to patch: 

質問

何が間違っているのでしょうか?

どうすればいいですか?

デフォルトでは patch はターゲットファイル名のディレクトリ部分を無視し、現在の作業ディレクトリにある "httpd.conf" を探すだけです。 フルパスを使用したい場合は、明示的に -p オプションで指定します。

patch -p 0 < httpd.patch

の後の数字は -p は、ファイル名のパスから削除するレベルの数です。 -p N は、スラッシュ番号 N までのすべてを削除します。 -p 0 は、何も剥がさないという意味です。

一般的には、パッチファイル内のフルパスに依存しない方が良いかもしれません。パッチは、異なるディレクトリレイアウトのファイルに対しても機能する方が、より一般的に有用となります。 パッチは、異なるディレクトリレイアウトのファイルに対しても機能する方が、より一般的に有用です。patch を実行する前に、ファイルを含むディレクトリに cd することはいつでも可能です(そして、必要ならば、パッチファイル自体を見つけるために、代わりにフルパスを使用します)。