ソースツリーにパッチを適用するのに問題があり、通常の-p
ストリッピングの問題ではありません。patch
パッチを適用するファイルを見つけることができます。
具体的には、私の質問は、いくつかのハンクで失敗したときに作成される.rej
ファイルをどのように読み取って解釈するかです。/私が見patch
たほとんどの議論はこれを含んでいません。patch
diff
簡単な例:
$ echo -e "line 1\nline 2\nline 3" > a
$ sed -e 's/2/b/' <a >b
$ sed -e 's/2/c/' <a >c
$ diff a b > ab.diff
$ patch c < ab.diff
$ cat c.rej
***************
*** 2
- line 2
--- 2 -----
+ line b
ご覧のとおり、古いファイルには行 2 が含まれており、新しいファイルには行 b が含まれている必要があります。ただし、実際には行 c が含まれています (拒否ファイルには表示されません)。
実際、このような問題を解決する最も簡単な方法は、.diff/.patch ファイルから diff フラグメントを取得し、パッチを適用するファイルの適切な場所に挿入し、コードを手で比較して、どの行が実際に紛争を引き起こします。
または - 別の方法: 元のファイル (変更されていない) を取得し、パッチを適用して、ファイルに対して 3 方向のマージを実行します。
Wiggleは、パッチが成功しない場合に .rej ファイルを適用するための優れたツールです。
私はパッチ ファイルを扱う専門家ではありませんが、パッチ ファイルに含まれる情報の理解に基づいて、パッチ ファイルの読み方を明確にしたいと思います。
ファイルから次の.rej
ことがわかります。
したがって、このメッセージが与えられた場合、.rej ファイルの冒頭に次のように記載されています。
diff a/www/js/app.js b/www/js/app.js (rejected hunks)
@@ -4,12 +4,24 @@
私の問題ファイル ( ) では、元のファイル (最初の行にあると記されている) と .rej ファイル ( と示されている)www/js/app
の違いは、元のファイルの 4 行目から始まり、12 行 ( 2 行目のコンマ)、新しいバージョンのファイルの 4 行目から始まり、24 行続きます ( .a/www/js/app.js
b/www/js/
@@ -4,12, +4,24 @@
@@ -4,12, +4,24 @@
詳細については、http://blog.humphd.org/vocamus-906/にあるパッチ ファイルの優れた概要 (上記の情報と、追加された行および/またはファイル バージョン間の詳細を含む) を参照してください。
もちろん、修正や説明は大歓迎です。