2012-04-26 21 views
20

httpd.conf用のSVNタイプのパッチファイルを作成したいので、他のホストに簡単に適用できます。SVNパッチを作成して適用するには?

私は

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: 

質問

私が間違って何をしているのですか?

答えて

32

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

patch -p0 < httpd.patch

-p後の番号はファイル名のパスから削除する方法を多くのレベルにそれを伝えます。スラッシュ数Nを含む-p Nまで、あらゆるアップを取り除き、最初のスラッシュが1番なので、-p0は「何も削除しません」という意味。)

一般的に、あなたは完全なパスを持つに頼らない方が良いかもしれませんしかし、パッチファイルでは、このパッチは、異なるディレクトリレイアウトのファイルに対しても機能する場合、より一般的に役立ちます。パッチを実行する前に、ファイルが格納されているディレクトリにいつでもcdできます(必要に応じて、完全なパスを使用してパッチファイル自体を検索してください)。

30

使用svn patch

ケース1:/usr/bin/patchを使用してsvn patchを使用して::

何の追加/ svn addまたはsvn delete

ケース2を介してファイルが削除されていない場合は

svn diff > $TMPDIR/mypatchfile.patch 
cd myOtherCheckOut 
patch -p0 < $TMPDIR/mypatchfile.patch 

が良くて、変更を適用します

svn diff > $TMPDIR/mypatchfile.patch 
cd myOtherCheckOut 
svn patch $TMPDIR/mypatchfile.patch 

トラックが追加され、削除されたファイルもあります。

なお、どちらのトラックsvn move sおよびrename

3

あなたが作成したパッチを適用するためのインタフェースを使用して簡単があるTortoiseSVNのを使用している場合。

を作成するには、次のフォルダに

右クリック - > TortoiseSVNは - >パッチを作成し

あなたは、出力ファイルを選択するように求められます

を適用するには:

フォルダを右クリック - > TortoiseSVN - >パッチ適用

パッチを適用するファイルを選択し、必要に応じてマージするためのインタフェースが表示されます。

関連する問題