0

パッチは、元のバージョンのソース コード ファイル (rev1 と呼びましょう) を取得し、それに変更を加え (したがって rev2 になります)、diff を使用して行われます。

パッチは rev1 に問題なく適用されます。

ただし、同じパッチが同じファイルの他の変更されたバージョンに完全に適用される場合があります (ただし、常にではありません)。正確にはいつこれが起こりますか?

4

1 に答える 1

0

これが発生する正確な条件は、使用しているパッチ アプリケーション プログラムによって異なります。ただし、ほとんどのパッチ プログラムにはヒューリスティック アルゴリズムがあり、パッチの作成に最初に使用されたベース ファイルとは特定の方法で異なるベース ファイルを使用できます。

最も有用なパッチ形式には、変更された行の周りに変更されていない「コンテキスト」行が数行含まれています。パッチ プログラムは、パッチ ファイルの行番号情報 (異なる場合があります) をコンテキスト行と組み合わせて使用​​して、変更を適用する適切な場所が新しいベース ファイルのどこにあるかを見つけます。通常、行番号は多少異なることは許されますが、コンテキスト行は正確に一致する必要があります。

コンテキスト行が異なっていて、パッチ プログラムが変更箇所を見つけられない場合、競合が発生します (「拒否されたハンク」出力が生成される可能性があります)。

于 2012-08-20T23:55:59.970 に答える