開発:パッチの適用方法
内容
前書き
このページではパッチファイルの適用方法について説明します。パッチは標準的なフォーマットであり、適用方法には多くの選択肢があります。あなたにとって最も簡単なものを選んでください。
おそらく最も重要なのは、 -pフラグの使用です 。これは、パッチファイルが配置されているディレクトリとパッチが適用されるファイルの関係についてpatchに指示します。詳細については下記の参考文献を参照してください。何も仮定しないでください。
gnuwin32を使ってWindowsにパッチを適用する
- sourceforgeからWindows用のパッチをダウンロードして解凍します。patch.exeバイナリをC:\ binに置きます(注:空白のないディレクトリに置くと、作業がはるかに簡単になります)。
- Moodleをダウンロードしてどこかに展開してください。例:C:\ moodle
- パッチファイルをダウンロードして、あなたがMoodleを置いたのと同じディレクトリ(C:\ moodle \ password-policy-17.diff)に置いてください。
- ワードパッドでパッチファイルを開き、「ファイル」>>「名前を付けて保存...」をクリックし、ファイルに別の名前を選択します(例: 'mynewpatch.diff')、「タイプとして保存」>>「テキストドキュメント - MS -DOSフォーマット
- コマンドテキストウィンドウを開き、次のように入力します。
cd \moodle c:\bin\patch.exe --dry-run -p1 < mynewpatch.diff
- '-p'オプションの後の数字は、パッチファイルの生成方法によって異なるため、パッチファイルによって異なります。 'patch'ユーティリティのマニュアルページを見て、 ' - p'オプションがどのように機能するかを確かめてください。この差分とパッチのチュートリアルもご覧ください 。
- これに似た出力が得られるはずです(パッチを当てたファイルの名前と数はパッチごとに異なります)。
patching file admin/settings/security.php patching file lang/en_utf8/admin.php patching file lib/moodlelib.php patching file login/change_password.php patching file login/signup.php patching file user/edit.php Hunk #1 succeeded at 430 (offset 2 lines).
- この段階ではパッチは適用されていません 。アプリケーションを( '--dry-run'オプションで)シミュレートして、問題があるかどうかを確認します。パッチを実際に適用する方法を説明する前に、何が間違っている可能性があるのか、そしてその対処方法について説明します。
潜在的な問題とその対処方法
潜在的な問題
すべてうまくいけば、パッチはきれいに適用され、人生は良いはずです。しかし、パッチファイルの作成に使用されたオリジナルファイルとローカルファイルとの間のバージョンの不一致により、パッチが100%きれいに適用されない場合があります。この場合、 'patch'コマンドはできるだけ多くの変更を適用しようとし、それが遭遇した問題を説明するいくつかの診断を発行します。
- 「Hunk #n succeeded ...」というメッセージが表示された場合は、元のファイルとは異なる行番号でパッチが正しく適用されているはずです。実際にパッチを適用した場合、 'patch'コマンドは、ハンクが異なるオフセットで適用されたファイルごとに追加のファイルを作成します。これは、追加の拡張子.origを持つ元のファイルのような名前です 。
- 「Hunk #n failed ...」というメッセージが表示された場合は、パッチは正しく適用されていません。この場合、 'patch'コマンドは、ハンクが正しく適用されなかった各ファイルに対して、次の2つの追加ファイルを作成します。
- original-file-name.origこれはパッチが適用される前のオリジナルファイルです。
- original-file-name.rejこのファイルには正しく適用できなかったハンクが含まれているので、それらを調べることができます。
潜在的な問題への対処
最初の問題(オフセットハンク)への対処は簡単です。実際にパッチを適用したら、.origファイルを削除するだけです。
後者の場合(失敗したハンク)、失敗したハンクを手動で修正する方法が分からない限り、パッチを適用しないでください。Moodleのインストールが破損する可能性があります。パッチを適用して失敗したハンクを手で修正しようとするなら、 ' - b'オプションを使うべきです。このオプションを選択すると、パッチが適用されるすべてのファイルの拡張子が.origになります。それはあなたが単にそれらの.origバックアップで修正されたファイルを上書きすることによってあなたが元のファイル状態に戻ることを可能にするでしょう。
場合によっては、パッチが生成されてからパッチが適用されないため、行番号に大きな違いがあります。あなたはpatchが行数の違いがあり得る行数を増やすためにファズオプション '-F'を使うことによって行数のより大きな違いを許すように言うことができます。例えば、パッチ-F 100は100行の違いを許容します。
実際にパッチを適用する
何が問題になっているのか、またその対処方法がわかったところで、パッチの適用方法を見てみましょう。 '--dry-run'を削除するだけです。
cd \moodle c:\bin\patch.exe -p1 < mynewpatch.diff
失敗したハンクを手動で修正する場合は、オプションで'-b'オプションを使用します。
cd \moodle c:\bin\patch.exe -b -p1 < mynewpatch.diff
NetBeansを使用してWindowsにパッチを適用する
NetBeansには、強力なグラフィカルDiffツールやパッチの適用(および作成)を容易にする、 バージョン管理と開発者コラボレーションのための統合ツールが付属しています。ファイルのコンテキストメニューから任意のパッチをファイルに適用できます。
"patch"を使ってLinuxにパッチを適用する
patch -p1 <patchfile.diff LinuxでのPatchの使用方法の詳細については、 こちらを参照してください。