ホームページ > 記事 > システムチュートリアル > パッチファイルの深い理解: diff 命令の生成と共通パラメータの分析
パッチ ファイルは diff 命令 (linuxdiff、svndiff、gitdiff、gitformat-patch) によって生成されます。
まず、diff コマンドとその共通パラメータを紹介しましょう:
差分:
diff の機能は、2 つのファイル間の差異を比較して記録することであり、いわゆる diff パッチです。文形式: diff [オプション] ソースファイル(フォルダー) 宛先ファイル(フォルダー) Linuxオペレーティングシステムは良いです、それはソースファイル(フォルダー)にlinux patchMarco linuxをパッチして宛先ファイル(クリップ)にすることです、用語は「アップグレード」です。最も一般的に使用される 3 つのオプションを以下に紹介します:
-r は再帰的オプションです。このオプション linux を patch に設定すると、diff は 2 つの異なるバージョンのソース コード ディレクトリ内の対応するすべてのファイル (サブディレクトリ ファイルも含む) を一度に比較します。
-N オプションを使用すると、ファイルが作成または削除された状況をパッチ ファイルが正しく処理できるようになります。
-u オプションは、デフォルト形式よりもコンパクトな統一形式でパッチ ファイルを作成します。
2、パッチ
————————————————————————
名前
オリジナルのパッチ適用diffファイル
あらすじ
パッチ[オプション][オリジナルファイル[パッチファイル]]
でもいつもはただ
パッチプナム
————————————————————————
パッチとは簡単に言うと、diffで作ったパッチを使って変換元のファイル(フォルダ)と変換先のファイル(フォルダ)を変換することです。これは、ソース ファイル (フォルダー) -> 宛先ファイル (フォルダー)、または宛先ファイル (フォルダー) -> ソース ファイル (フォルダー) を使用できることを意味します。最も一般的に使用されるオプションのいくつかを次に示します:
-p0 オプションは、現在のディレクトリから宛先ファイル (フォルダー) を検索することです
-p1 オプションは、第 1 レベルのディレクトリを無視し、現在のディレクトリから検索を開始します。
同様の -p2 オプションは、第 2 レベルのディレクトリを無視する必要があります。
......************************************************ ***** *************
ここに例があります:
---old/modules/pcitableMonSep2711:03:561999
+++new/modules/pcitableTueDec1920:05:412000
パラメータ -p0 を使用する場合、現在のディレクトリから old という名前のフォルダを見つけ、その下のモジュールにある pcitable ファイルを探してパッチ操作を実行することを意味します。
パラメータ -p1 を使用すると、第 1 レベルのディレクトリ (つまり、古いディレクトリに関係なく) を無視し、現在のディレクトリから modules フォルダーを検索し、その下にある pcitable を検索することを意味します。この前提として、現在のディレクトリはモジュールが配置されているディレクトリである必要があります。差分パッチ ファイルへのパスが指定されている限り、差分パッチ ファイルは任意の場所に置くことができます。実際、相対パスまたは絶対パスを使用できます。ただし、通常は相対パスを使用します。
************************************************ ***** *************
-E オプションは、空のファイルが見つかった場合はそれを削除することを示します
-R オプションは、パッチ ファイル内の「新しい」ファイルと「古い」ファイルが交換されることを示します (実際には、新しいバージョンにパッチを適用して古いバージョンにすることです)
パッチファイルの構造
パッチヘッド
パッチヘッダーは ---/+++ で始まる 2 行で、パッチが適用されるファイルを表します。 --- は古いファイルを示し、+++ は新しいファイルを示します。
1つのパッチファイルに複数のパッチ
パッチ ファイルには ---/+++ で始まる多くのセクションが含まれる場合があり、各セクションはパッチの適用に使用されます。したがって、パッチ ファイルには多数のパッチを含めることができます。
ブロック
ブロックはパッチ内で変更する場所です。通常、変更する必要のない何かで始まり、何かで終わります。これらは、変更される場所を示すためにのみ使用されます。通常、これらは @@ で始まり、別のブロックまたは新しいパッチ ヘッダーの先頭で終わります。
ブロックインデント
ブロックは 1 列分インデントされ、この列は行を下げるか削除するかを示すために使用されます。
ブロックの最初の列
+ 記号は、この行を追加する必要があることを示します。
- 記号は、この行を削除する必要があることを示します。
マイナス記号やマイナス記号がない場合は、それが単なる参照であり、変更する必要がないことを意味します。
使用法:
patch-p0 patch-p1
以上がパッチファイルの深い理解: diff 命令の生成と共通パラメータの分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。