アップグレードせずに1つのバグを修正する方法
このページは更新が必要です。 更新して終了したらこのテンプレートを削除してください。
仮定:
- 古いバージョンのMoodleを実行しています。
- 特定のバグが発生しています。
- trackerで検索したところ、問題はMDL-abcであり、最新バージョンで修正されていることがわかりました。
- 何らかの理由で、最新バージョンにセキュリティ修正が含まれている場合でも、サイト全体をアップグレードすることはできません。
このページでは、バグ修正を抽出してサイトに適用する方法について説明します。
何が変わったかを見つける
トラッカーのコメントセクションの上部(説明の下)には、すべて、コメント、変更履歴、バージョン管理のタブの行があります。
必要な情報は、バージョン管理タブ(および、すべてのタブ)にあります。それをクリックしてください。次のようなものが表示されます。
あなたがそこに見るものは次のとおりです。
- 要約行 "誰か が n ファイルをブランチ BRANCH_ID の 'MoodleCVS' コミットしました - 日付。
- 一部のテキスト(この場合、フォーラムサブスクリプション:MDL-14876-フォローアップ-正しいテーブルプレフィックスを使用してください...)。これは、開発者がバージョン管理システムに変更をコミットしているときに行ったコメントであり、彼らが何をしたかを説明しています。
- 何が変更されたかを示すファイルのリスト。
ここで重要なのは(+ n -m行)リンクです。これは、このコミットの一部として、そのファイルで何が変更されたかを正確に示すパッチへのリンクです。リンクは、変更のきれいなHTMLビューに直接移動します。そのページの上部には、同じ情報の機械可読バージョンに移動するリンク 'パッチ' があります。
現在使用しているMoodleのバージョンに関連するすべての変更をまとめる必要があります。たとえば、Moodle 1.9.xを実行している場合、ブランチ上のすべての 'MOODLE_19_STABLE の変更を探し、すべてのファイルに対するすべての変更をまとめる必要があります。
すべてをバックアップ
Moodleサイトのコードを編集しようとしています。何かがうまくいかないかもしれません。完全バックアップを作成 しなければなりません。推奨されるアプローチは次のとおりです。
- サイト全体をテストサーバにコピーします。
- テストサーバで実行されているコピーに変更を加える練習をします。
- テストして、両方を確認します。加えた変更によって、修正しようとしている特定の問題が修正されたこと、および変更によって他に問題がないことを確認します。
- すべて問題がない場合は、ライブシステムの完全バックアップを作成します。
- 次に、テストサーバで行ったコードとまったく同じ変更をライブサーバに加えます。
- もう一度テストして、問題が修正され、他に何も壊れていないことを確認します。
- サーバログやヘルプデスクなどを、テストをすり抜けた問題が表示された場合に備えて、今後数日間はより注意深く監視します。
もちろん。それほど注意する余裕がない場合もありますが、上記が理想的であり、それに比べて手抜きをしているときは少なくとも注意する必要があります。
サイトに同じ変更を加える
これで、どのファイルが変更されたかがわかったので、Moodleのコピーに同じ変更を加える必要があります。 2つのアプローチがあります:
- 特に変更が少ない場合は、コードのコピーを手動で変更する方が簡単な場合があります。
- 変更が大きい場合は、機械可読パッチファイルを保存できます(たとえば、mdl-abc.patch.txtとして保存できます)。次に、パッチの適用方法の指示に従って、ご使用のバージョンのMoodleにまったく同じ変更を加えます。
何がうまくいかない可能性がある
問題なしでコミットID
開発者がバージョン管理システムに変更をコミットするときに問題ID(MDL-abc)について言及しなかった場合、トラッカーはそれらの変更をトラッカーの問題に関連付けることができません。もちろん、開発者は常に問題IDについて言及する必要がありますが、間違いが発生することもあります。もう1つの間違いは、問題IDを入力することです。たとえば、MDL-14876を意味する場合はMDL-14875と入力します。
このバグ修正は他の変更に依存しています
Moodle1.9.2を実行していると仮定します。 Moodle1.9.3で他のいくつかのバグが修正されました。そして、あなたはMoodle 1.9.4で修正されたバグを見ていて、その2番目のバグ修正をあなたのサイトに適用したいと思っています。 Moodle 1.9.4のバグ修正は、1.9.3の他のバグを修正するために行われた変更に依存している場合があります。
この場合、興味のあるバグ修正をMoodle1.9.2に直接適用しようとしても機能しません。
これが発生する可能性を最小限に抑えるには、もう少し調査する必要があります。
- バグのバージョン管理タブで、ファイルの名前をクリックします(たとえば、上のスクリーンショットの 'mod/forum/lib.php' リンク)。
- これにより、そのファイルの完全なバージョンログが表示されます。実際、完全なログは必要ないので、
- そのページの上部近くに、'スティッキータグ:' 選択があります。それをMOODLE_19_STABLE、または興味のある安定したブランチに変更します。これにより、バージョンに関連する変更のみが表示されます。
- ページを下にスクロールして、現在持っているファイルのバージョンを見つけます。
- そのバージョンと、関心のあるバグを修正するバージョンとの間のすべての変更を確認してください。トラッカーの問題IDが言及されるたびに、それがトラッカーの問題へのリンクであることに気付くでしょう。必要に応じて、リンクをたどってトラッカーの問題を読んでください。
そのすべての調査に基づいて、気になる変更が他の変更に依存しているかどうかを判断できる場合があります。
ショートカットとして、自分で(またはそれに加えて)調査を行う代わりに、moodle.orgの適切なフォーラムに投稿して、特定のバグ修正を独立して適用することが「安全」であるかどうかを誰かが知っているかどうかを尋ねることができます。
ファイルのどのバージョンがありますか?
現在使用している各ファイルのバージョンを正確に見つけるには、ファイルの内部を調べます。最初の行はおそらく次のようになります。
<?php // $Id: lib.php,v 1.609.2.89 2009/03/03 06:46:28 dongsheng Exp $
'v' の後の番号、この場合は1.609.2.89は、このファイルのバージョンです。 これをCVSログのバージョン番号と一致させることができるはずです。
最後の注意
ここで説明するのは実際にはプランBであることを忘れないでください。プランAは、常にサイト全体を最新の安定バージョンにアップグレードすることです。 これにより、最新のセキュリティ修正を含むすべてのバグ修正が得られます。 ただし、ここでの手順が必要な場合もあります。