管理者向けGit

このページでは、Gitを使って簡単にアップグレードすることができるあなたの運用サーバ上でMoodleのコピーを管理する方法について説明します。あなたがMoodleコアコードのカスタマイズをお持ちの場合は、開発者向けガイドGitの指示に従うことをお勧めします。

Gitを最大限に活用するには、その基本概念を理解するために努力する価値があります。以下のセクションを参照してください。特にあなたがCVSやSubversionに慣れている場合、それは少し急な習熟曲線になるかもしれません。

Gitを手に入れる(Windows、OSX、Linuxなど)

Gitのサポートは、最近までほとんどLinuxに限られていましたが、ビルドは現在最も人気のあるオペレーティングシステムで利用可能です。

OS関連のgitインストールをダウンロードしてインストールしたら、この文書のgitコマンドはあなたのオペレーティングシステムで動作するはずです。

Gitからコードを取得する

Gitのコマンドライン版についてはここで説明します。グラフィカルクライアントは、コマンドラインバージョンのラッパーにすぎないので、正しいパラメータを簡単に推測できるはずです。

公式のMoodle gitリポジトリはgit://git.moodle.org/moodle.gitgit://github.com/moodle/moodle.gitの公式クローン付き)にあります。ローカルチェックアウトを初期化するには、

$ cd / path / to / your / webroot
$ git clone git://git.moodle.org/moodle.git(1)
$ cdムードル
$ git branch -a(2)
$ git branch --track MOODLE_35_STABLEの原点/ MOODLE_35_STABLE(3)
$ gitチェックアウトMOODLE_35_STABLE(4)
  • コマンド(1)は、新しいローカルリポジトリを 'アップストリーム'(つまりリモートサーバーベース)のmoodle.gitリポジトリのクローンとして初期化します。上流のリポジトリはデフォルトで 'origin'と呼ばれています。 moodleという名前の新しいディレクトリが作成され、そこにすべてのファイルがダウンロードされます。実際にすべてのMoodleバージョンの全履歴を取得しているため、この操作にはしばらく時間がかかります。
  • コマンド(2)は利用可能なすべてのブランチをリストします。
  • コマンド(3)を使用して、MOODLE_35_STABLEという新しいローカルブランチを作成し、上流のリポジトリからリモートブランチMOODLE_35_STABLEを追跡するように設定します。
  • コマンド(4)は実際には新しく作成されたローカルブランチに切り替えます。

Git接続拒否エラー

fatal:git.moodle.orgに接続できません: git.moodle.org [0:34.210.133.53]:errno =接続が拒否されました

Gitにはコマンドごとに膨大な数のオプションがあり、実際には1つのコマンドで上記のプロセスを実行することができます(演習として残してください)。

ファイアウォールの内側からGit

Gitはあなたのファイアウォール(ポート9418)によってブロックされているかもしれない読み取り専用プロトコルを使用しています。これが問題になる場合は、Githubのhttpバージョンhttps://github.com/moodle/moodle.gitを使用できます。少し遅いので、可能であればGitプロトコルを使用してください。

インストールを更新する

Moodle開発チームは毎週月曜日と火曜日に修正されたバグの統合とテストを行います。水曜日には、コードを更新することによってすべてのパッチをインストールできます。 ショートログをチェックして、公式リポジトリがすでに更新されているかどうかを確認してください。

(MOODLE_35_STABLEブランチ上の)最新版へのあなたのコードを更新するには、あなたがしなければならないすべては、次のとおりです。

$ cd / path / to /あなたの/ moodle /
$ git pull

これが本番サイトの場合は、 アップグレードの手順を考慮する必要があります(例:バックアップを取る)。

Gitリポジトリから貢献された拡張機能をインストールする

これは他のGitリポジトリからあなたのMoodleリポジトリにプラグインを追加する方法の一つです。他の方法はGitサブモジュールを使うことです。ただし、これを書いている時点では、これはGitのより粗い機能の1つであり、高度なオプションと見なすべきです。

例えば、GitリポジトリからCertificateモジュールをMoodle 3.5にインストールしたいとしましょう。

$ cd / path / to /あなたの/ moodle /
$ cd mod(1)
$ gitクローンhttps://github.com/markn86/moodle-mod_certificate.git certificate(2)
$ cd証明書
$ git checkout -b MOODLE_35_STABLEの起源/ MOODLE_35_STABLE(3)
$ git branch -dマスター(4)

コマンド(1)は現在のディレクトリをあなたのローカルMoodleクローンのmodフォルダに変更します。コマンド(2)は新しいサブディレクトリ証明書を作成し、バニラ証明書リポジトリのローカルクローンを作成します。コマンド(3)は、Moodle 3.5の証明書バージョンでリモートブランチを追跡する新しいローカルブランチを作成します。このプロダクションチェックアウトでは必要ないので、コマンド(4)は(2)でgit-cloneによって自動的に作成されたマスターを削除します。

注意:レポジトリのクローンを作成する前にメンテナに直接問い合わせるか、 - 推測したい場合は - コマンド(3)を実行する前に以下のコマンドを発行して、まずMoodleブランチとモジュールの互換性を確認してください。ブランチ間で利用可能なものを確認します

$ git branch -a
* マスター
  リモート/ origin / HEAD  - > origin / master
  リモート/起源/ MOODLE_20_STABLE
  リモート/起源/ MOODLE_21_STABLE
  リモート/起源/ MOODLE_22_STABLE
  リモート/起源/ MOODLE_23_STABLE
  リモート/起源/ MOODLE_24_STABLE
  リモート/起源/ MOODLE_25_STABLE
  リモート/起源/ MOODLE_26_STABLE
  リモート/起源/ MOODLE_27_STABLE
  リモート/起源/ MOODLE_28_STABLE
  リモート/起源/ MOODLE_29_STABLE
  リモート/起源/ MOODLE_30_STABLE
 リモート/起源/ MOODLE_31_STABLE
  リモート/起源/マスター

これにより、存在しないブランチに対してコマンド(3)を発行したときにエラーメッセージが表示されなくなります。

§git checkout -b MOODLE_31_STABLEの原点/ MOODLE_31_STABLE
fatal:git checkout:パスの更新はブランチの切り替えと互換性がありません。
コミットとして解決できない 'origin / MOODLE_31_STABLE'をチェックアウトしますか?
注:上記のエラーを修正するには、 "git fetch origin MOODLE_31_STABLE:LOCAL_MOODLE_31_STABLE"を使用してください。

メインのMoodleクローンの無視されたファイルのリストに新しいディレクトリmod / certificate /を追加するのが賢明です。そうでなければメインのクローンのステータスは新しいコードがチェックインされていないことをあなたに思い出させ続けるでしょう。

$ cd / path / to /あなたの/ moodle /
$ echo / mod / certificate / >> .git / info / exclude

あなたのMoodleインストールを今すぐ更新するには、両方のGitリポジトリにアクセスして上流から変更を取得する必要があります。

$ cd / path / to /あなたの/ moodle /
$ git pull
$ cd mod / certificate
$ git pull

Moodleインストールのルートにこれらの行を含むシェルスクリプトを書くことはとても良い考えです。そうでなければ、メインのMoodleリポジトリ内にGitリポジトリがあることを忘れがちです。

Gitサブモジュールを使った貢献された拡張機能のインストールと保守

前のセクションで述べたように、これは上級ユーザー向けです。したがって、Gitとそのコマンドについてある程度の経験があることが必要です。段階的な説明が提供されますが、これらのステップに従うために理解することは有用です、これらのコマンドが何をするか。

高度なオプションやコマンドは[ Git book ]にあります。 Gitサブモジュールについて質問がある場合は、最初に上記のサイトにアクセスしてください。

既存のMoodleに新しいエクステンションをインストールする

例として、前のセクションのCertificateモジュールを使います

$ cd / path / to / your / moodle
$ gitサブモジュール追加https://github.com/markn86/moodle-mod_certificate.git mod / certificate

Gitがリポジトリに2つの新しいファイルを報告していることに注意してください。

$ gitステータス
#分岐MOODLE_29_STABLE
#コミットする変更点
#(ステージを解除するには "git reset HEAD <file> ..."を使用してください)
#
#新しいファイル:.gitmodules
#新しいファイル:mod / certificate
#

ファイル.gitmodulesには、すべてのサブモジュールのローカルパスとURLが含まれています。後でリポジトリのクローンを作成する予定の場合は、コミットする必要があります( Gitサブモジュールを含むMoodle開発環境のページをご覧ください)。コミットする前に、プラグインのGitリポジトリの設定を確認してください。自動的に生成された設定では不十分な場合があります。将来の更新のために、あなたのリポジトリのMoodleバージョンに対応するリモートブランチを追跡することは有用です。

$ cd mod / certificate
$ git branch -avv
* master 345f5b1 [origin / master]廃止予定の関数を置き換えました
  リモート/ origin / HEAD  - > origin / master
  remotes / origin / MOODLE_20_STABLE 1aa1040「評定カテゴリ」評定を印刷するためのオプションを追加しました
  remotes / origin / MOODLE_21_STABLE 1aa1040「評定カテゴリ」評定を印刷するためのオプションを追加しました
  remotes / origin / MOODLE_22_STABLE 1aa1040「評定カテゴリ」評定を印刷するためのオプションを追加しました
  remotes / origin / MOODLE_23_STABLE fe047de Moodleバージョンに頼るのではなく、関数が存在することを確認してください
  remotes / origin / MOODLE_24_STABLE 1051f7d CONTRIB-4892他人への電子メールの機能を修正
  remotes / origin / MOODLE_25_STABLE cdb221a CONTRIB-4946:言語ファイルからAMOSを壊す文字を削除
  リモート/起源/ MOODLE_26_STABLE 696802aバージョンアップ
  リモート/起源/ MOODLE_27_STABLE d3c0379バージョンアップ
  リモート/起源/ MOODLE_28_STABLE fa8df83バージョンアップ
  remotes / origin / MOODLE_29_STABLE 3f03740置き換えられた非推奨関数
  remotes / origin / master 345f5b1置き換えられた非推奨関数

リモートリポジトリがmasterをチェックアウトしたので、Gitは自動的にorigin / masterを追跡するブランチマスターを作成しました。したがって、適切なリモートブランチを追跡する新しいブランチを作成します。もちろん、これはリモートリポジトリがそれらのブランチを提供している場合にのみ可能です。

$ git checkout -b MOODLE_29_STABLEの原点/ MOODLE_29_STABLE
ブランチMOODLE_29_STABLEは、リモートブランチMOODLE_29_STABLEを起点から追跡するように設定されています。
新しい支店「MOODLE_29_STABLE」に切り替えました
$ git branch -Dマスター
ブランチマスターを削除しました(345f5b1でした)。

マスターブランチを削除する必要はありませんが、維持するのは無駄です。実際、これらの設定は後で触れる必要はありません。

最後のステップは、変更をメインリポジトリにコミットすることです。

$ cd / path / to / your / moodle
$ git commit -a -m "新しい拡張モジュールmod_certificateがインストールされました"

コミットには新しいGitサブモジュールの変更だけが含まれるようにする必要があります( -aはすべての非段階的変更をコミットするため)。

Gitサブモジュールを保守する

一連のサブモジュールを保守するのは非常に簡単です。いくつかのサブモジュールがインストールされたMoodleリポジトリを考えてください。拡張機能mod_mylittleextensionは、この例のテストシナリオ用に作成された偽のプラグインであることに注意してください。これは公式のMoodleモジュールではありません。一度にすべてのサブモジュールを更新するには、次のように入力します。

$ cd / path / to / your / moodle
$ gitサブモジュールforeach git pull
'block / coursefeedback'を入力
すでに最新です。
「mod / certificate」と入力してください
すでに最新です。
'mod / mylittleextension'を入力してください
remote:オブジェクトの数を数える:6、終わった。
リモート:オブジェクトの圧縮:100%(4/4)、完了。
リモート:合計4(デルタ0)、再利用0(デルタ0)
オブジェクトの開梱:100%(4/4)、完了
/ local / repositories / mleから
   89d9eae..64c122dマスター - >起源/マスター
89d9eae..64c122dを更新中
早送り
 index.html | 9 +++++++++
 version.php | 6 +++ ---
 2ファイルが変更され、12挿入(+)、3削除( - )
 作成モード100644 index.html
$ gitステータス
#分岐MOODLE_29_STABLE
#変更がコミット用にステージングされていません。
#(コミットされる内容を更新するには "git add <file> ..."を使用してください)
#(作業ディレクトリの変更を破棄するには "git checkout  -  <file> ..."を使用してください)
#
#変更:mod / mylittleextension(新しいコミット)
#

コマンドgit submodule foreach [another command]は、すべてのサブモジュールレポジトリを調べて、 [another command]で指定されたものを実行します。この場合はgit pullです。そのため、モジュールmylittleextensionが更新され、変更がコミットされるまでメインリポジトリはクリーンになりません。

$ git commit -a -m "プラグインの更新"

Gitサブモジュールでプラグインを管理することには、単に更新プロセスを単純化すること以外に別の用途があります。より大規模には、外部のプラグインを手動で整理することなく複数の開発者があなたのMoodleの正確なコピーを持っている必要があるMoodleプロジェクトを維持するために使用することができます。このトピックに関する詳細は、 Gitサブモジュールを含むMoodle開発環境のページをご覧ください。

関連情報

Moodleフォーラムのディスカッション
外部リソース