目次
DokuWiki の Git リポジトリについて
DokuWiki のソースコードは、バージョン管理システム Git によって管理されています。
Git は、高速性と効率性を備えつつ小さなプロジェクトから巨大なプロジェクトまでのすべてを取り扱うために設計された、オープンソースでフリーな分散バージョン管理システムです。
Git の使い方
どこかで説明されていることをこのページで繰り返すことはしません。代わりに、情報源のリンクを示しておきます。
DokuWiki 向けの Git の使い方
Git を使用し始める前に、以下のようにして Git にあなたの名前とメールアドレスを設定してください。
git config --global user.name "Your Name Comes Here" git config --global user.email you@yourdomain.example.com
現在の開発版の DokuWiki を取得するには、以下のコマンドを実行します (このコマンドは dokuwiki というディレクトリを作成します)。
git clone git://github.com/splitbrain/dokuwiki.git
git コマンドで取得した DokuWiki をアップデートするには、その DokuWiki ディレクトリの中で以下のコマンドを実行します。
git pull
新しいソースファイルを作成した場合は、以下のコマンドでそのファイルを Git リポジトリに加えてください。
git add somenewfile
既にバージョン管理下にあるファイルに変更を加えた場合は、以下のコマンドでそれを Git に伝える必要があります。
git add --patch
--patch
では、どの部分をチェックインしたいのかを対話形式で聞いてきます (Darcs と非常に良く似た振る舞いです)。
ソースファイルの編集が完了した場合は、以下のコマンドを実行します。
git commit
上記のコマンドはあなたのローカルの Git リポジトリをスキャンし、変更箇所を検索し、ローカルのリポジトリにコミットします。このコマンドでコミットしておくと、git pull
コマンドで新規の変更箇所を取得してもローカルで行った変更箇所が上書きされなくなります。CVS とは異なり、この時点では変更したファイルは外部サーバには送信されません。あなた自身のリポジトリ専用の「ローカルタグ」のようなものです。
あなたが変更した箇所を公式リポジトリに反映したい場合は、まず以下のコマンドでパッチファイルを作成してください。
git format-patch
このコマンドは、メーリングリスト宛てに手作業で送信できる形式のパッチファイルを 1 つ (もしくは複数個) ローカルディスク上に出力します。
使い方のヒント
変更箇所の競合を避けるため、何か新しいパッチを作成する前にはいつでも
git pull
を実行してください。- あなたのエディタが改行コードを変更 (Unix の
LF
から DOS のCRLF
へ) してしまわないように気をつけてください。改行コードが変更された場合はファイル内のすべての行が更新されるため、実際にはわずかな変更でも、ファイル全体が変更されたことになってしまいます。 - 1 つの機能に対して 1 つのパッチを作成してください。もし 2 つの機能 (例: 言語ファイル編集と機能の追加) に取り掛かっている場合は、それぞれに 1 つずつ、計 2 つのパッチを
git add
とgit commit
コマンドで作成してください。git add --patch
コマンドは実行時にどの変更箇所をパッチに含めるのか質問してきますので、簡単にパッチファイルを分けて出力することができます。 - パッチはメーリングリスト宛てに送信してください。そこで、そのパッチが何をするもので、なぜ作成されたのかを説明してください。
- Git リポジトリの Web インタフェースは http://github.com/splitbrain/dokuwiki から利用できます。
公式ツリーと自分のパッチのマージ
explain branches
安定版のメンテナンスも Git で
Git は DokuWiki の開発者だけでなく、利用者にとっても有益です。Git は、安定版のインストールや次の安定版がリリースされたときのアップデートといった用途にも利用できます。これを行うには、以下のようにリポジトリをコピーしてから安定版ブランチに移動する必要があります。
git clone git://github.com/splitbrain/dokuwiki.git git checkout -b stable origin/stable
これで、新規リリースが作成された時はいつでも以下のようにしてすべての必要な更新処理を行うことができます。
git pull
なぜ Git なのか
分散バージョン管理システムを採用する理由はなぜ Darcs なのかでよく説明されています。では、なぜ Darcs から Git に乗り換えたのでしょうか。
Darcs は Git よりも少しだけ直感的に使用することができますが、両者の違いはそれほど大きくありません。Git が現在 Darcs よりもはるかに多くのプロジェクトで使用されていることを除けば、ですが。さらに、Darcs は大きなプロジェクトではあまりパフォーマンスが良くありません。DokuWiki は拡大しており、時折 Darcs の奇妙な動作と遅さがかなり負担となることがありました。
また、より人気のあるバージョン管理システムを使用することは、GitHub のようなホスティングサービスにアウトソースすることを可能にします。これは、運営のための労力を抑え、DokuWiki のサーバへのトラフィックを減少させるということを意味します。
もう 1 点、より人気のあるバージョン管理システムは、新規参入する開発者やその他の貢献者にとって、プロジェクトに参加することをより簡単にします。もしコードの修正に取り掛かるだけのために新しいバージョン管理システムを学ばなければならないとしたら、それは乗り越えにくい参入障壁となります (それでもこれまで多くの人々に参加していただけたことは素晴らしいことです!)。このようにして新規貢献者の入り口を整備しておくことは、コードのクオリティを大いに向上させることでしょう。