アップグレードせずにバグを1つだけ修正する方法

このページは更新が必要です。終了したら、このテンプレートを削除してください。


と仮定します。

  • あなたは古いMoodleバージョンを実行しています。
  • あなたは特定のバグを経験しています。
  • あなたはトラッカーを検索しました、そしてあなたの問題がMDL-abcであること、そしてそれが最新版で修正されたことを発見しました。
  • 最新のバージョンにはおそらくセキュリティ上の修正があるにもかかわらず、何らかの理由で、あなたはあなたのサイト全体をアップグレードすることができません。

このページでは、バグ修正を抽出してサイトに適用する方法について説明します。

何が変わったのかを見つける

トラッカーのコメントセクションの上部(説明の下)には、すべて、コメント、変更履歴、バージョン管理のタブがあります。

必要な情報は[バージョン管理]タブ(および[すべて]タブ)にあります。それをクリックしてください。次のように表示されます。

バージョン管理tab.png

あなたがそこに見るものは:

  • 要約行 " 誰かがブランチBRANCH_ID - dateで n個のファイルを 'Moodle CVS'にコミットし ました
  • 一部のテキスト(この場合は「フォーラム購読: MDL-14876 - フォローアップ - 正しいテーブルプレフィックスを使用してください...」)。これは、開発者が行ったことを説明するために、バージョン管理システムへの変更をコミットしている間に作成したコメントです。
  • 変更点を示すファイルのリスト。

ここで重要な部分は(+ n -m lines)リンクです。これは、このコミットの一環として、そのファイルの変更点を正確に示すパッチへのリンクです。リンクは、変更内容のかなりのHTMLビューに直接移動します。そのページの一番上には、同じ情報の機械可読バージョンへのリンク「パッチ」があります。

あなたがいるMoodleのバージョンに関連するすべての変更を集める必要があります。例えば、あなたがMoodle 1.9.xを実行しているなら、あなたは全ての "on branch 'MOODLE_19_STABLE'"変更を探し、そして全てのファイルへの全ての変更を集める必要があります。

すべてをバックアップする

あなたはあなたのMoodleサイトのコードを編集しようとしています。何かがおかしくなるかもしれません。 フルバックアップを作成する必要あります。推奨される方法は次のとおりです。

  1. サイト全体をテストサーバーにコピーします。
  2. テストサーバーで実行されているコピーに変更を加える練習をします。
  3. 両方を確認するために、行った変更によって解決しようとしていた特定の問題が解決されたこと、およびその変更によって他に問題が発生していないことをテストします。
  4. すべて問題なければ、ライブシステムのフルバックアップを作成してください。
  5. 次に、テストサーバーで行ったコードと実際のサーバーのコードをまったく同じように変更します。
  6. もう一度テストして、問題が修正され、それ以外に壊れているものがないことを確認します。
  7. テスト中に問題が発生した場合に備えて、今後数日間はサーバーのログやヘルプデスクなどをより慎重に監視してください。

もちろん。時々あなたはそれほど注意を払う余裕がないことができますが、上記は理想であり、あなたはそれと比較してコーナーを切っているとき少なくともあなたは気をつけるべきです。

あなたのサイトにも同じ変更を加える

これで、どのファイルが変更されたのかがわかりました。Moodleのコピーにも同じ変更を加える必要があります。 2つの方法があります。

  • 特に変更が少ない場合は、コードのコピーを手作業で変更するのが最も簡単な場合があります。
  • 変更が大きい場合は、機械可読パッチファイルを保存できます(たとえば、mdl-abc.patch.txtとして保存できます)。それから、あなたのMoodleのバージョンに全く同じ変更を加えるためにパッチを適用する方法の指示に従ってください。

何がうまくいかない

課題IDなしでコミットする

開発者が変更をバージョン管理システムにコミットするときにissue ID(MDL-abc)に言及できなかった場合、トラッカーはそれらの変更をトラッカーissueに関連付けることができません。もちろん、開発者は常にissue idを言及するべきですが、時々間違いが起こります。もう1つの間違いは、issue IDの入力ミスです。たとえば、 MDL-14876の場合はMDL-14875と入力します。

このバグ修正は他の変更に依存しています

あなたがMoodle 1.9.2を実行しているとしましょう。他のいくつかのバグはMoodle 1.9.3で修正されました。そして、あなたはMoodle 1.9.4で修正されたバグを見ています、そしてあなたはあなたのサイトにその2番目のバグ修正を適用したいです。 Moodle 1.9.4のバグ修正が、1.9.3の他のバグを修正するために行われた変更に依存しているのかもしれません。

この場合、あなたが直接興味を持っているバグ修正をMoodle 1.9.2に適用しようとしてもうまくいきません。

これが起こる可能性を最小限に抑えるためには、もう少し調査する必要があります。

  1. バグのバージョン管理タブで、ファイルの名前をクリックしてください(例えば、上のスクリーンショットの 'mod / forum / lib.php'リンク)。
  2. これにより、そのファイルのフルバージョンログが表示されます。実際、あなたは完全なログが欲しくないので、
  3. そのページの上部近くに、 'Sticky Tag:'選択があります。それをMOODLE_19_STABLE、またはあなたが興味を持っている安定したブランチのいずれかに変更してください。そうするとあなたのバージョンに関連する変更だけが表示されます。
  4. ページを下にスクロールして、 現在持っているファイルのバージョンを見つけます
  5. そのバージョンと、あなたが興味を持っているバグを修正するバージョンとの間のすべての変更を読んでください。あなたは、トラッカーissue idが言及されるたびに、それがトラッカーissueへのリンクであることに気付くでしょう。必要ならば、リンクをたどってトラッカーの問題を読んでください。

そのすべての調査に基づいて、あなたが気にしている変更が他の変更に依存しているかどうかを判断できるかもしれません。

近道として、自分自身で(またはそれに加えて)研究を行う代わりに、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は常にあなたのサイト全体を最新の安定版にアップグレードすることです。これにより、最新のセキュリティ修正を含め、すべてのバグ修正が行われます。ただし、ここでの手順が必要になることがあります。

関連情報