0

以下を使用してパッチを作成しましたdiff

diff -u /home/user/onderzoeksstage/omf/Rakefile /home/user/onderzoeksstage/Rakefile > rakefile2.patch

この rakefile2.patch を別のディレクトリに配置しました: /home/user/onderzoeksstage/omf/confine/patches. ここで、すべてのパッチが収集されているディレクトリに移動して呼び出し、 rakefile2.patch ヘッダーを読み取ることで、パッチを適用するファイル (元のファイル) の場所を知ることができると想定していpatch < rakefile2.patchましたpatch/home/user/onderzoeksstage/omf/Rakefile

しかし、それを行うと、patchパッチを適用するファイルが見つからないと言われます。

[user@localhost patches]$ patch < rakefile2.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:
--------------------------
|--- /home/user/onderzoeksstage/omf/Rakefile    2013-02-12 14:11:49.809792527 +0100
|+++ /home/user/onderzoeksstage/Rakefile    2013-02-12 12:17:50.314831492 +0100
--------------------------
File to patch: ...
...

私の仮定は明らかに間違っていましたが、ではどのように機能するpatchのでしょうか? 行って/home/user/onderzoeksstage/omf/電話をかけるとうまくいきpatch < rakefile2.patchます。patchパスの末尾にあるファイル名のヘッダーのみを見て、ディレクトリを考慮しませんか? そして、私が達成しようとすることは決してうまくいかないのですか?どうしてこれなの; これは、Rakefile と呼ばれる任意のファイルにパッチを適用して (たとえば、私の場合)、より「一般的な」パッチにすることができるためですか?

ありがとう、グレン

4

1 に答える 1

1

パッチは、パスの末尾にあるファイル名のヘッダーだけを見て、ディレクトリを考慮しませんか?

それがデフォルトで行うことです。-pのオプションの説明を参照してくださいman patch。ここにあなたが欲しいものがあるように見え-p0ます。

于 2013-02-12T13:41:10.783 に答える