Gitのソースコードには、mw-to-gitという、MediaWikiのデータをgitで取得、投稿できるコードが含まれています。これは、Perlのコードですが、セットアップすると、gitのラッパーとして動作します。
この記事は、概ねGit-MediaWikiの内容に倣います。
下準備
まずは、以下のライブラリを入れます。
- MediaWiki::API
- DateTime::Format::ISO8601
CPANで導入します。
$ sudo cpan DateTime::Format::ISO8601
httpsでアクセスしたい場合は、
- LWP::Protocol::https
を入れます。
これらのライブラリがperlの実行時に含まれるようにしてください。
インストール
ライブラリが整ったら、ソースをインストールします。gitをビルドしてもいいし、Perlのコードだけで利用しても構いません。要点は2つあって、
-
git --exec-path
の相当するパスにgit-remote-mediawikiとgit-mwがあること(.perlなどの拡張子はつけません。シンボリックリンクで構いません) -
$PERL5LIB
にgitのソースツリーにあるperlのコード$GIT/perl
以下と、mw-to-gitのコード$GIT/contrib/mw-to-git
が含まれていること
です。
実行
コマンドは、以下のとおりです。
でMediaWikiのデータを取得することができます。
あとは、記事をMediaWikiのフォーマットで編集して、いつもどおりgit commit
、git push
をすれば、記事を書いた分が反映されます。git log
でもちろん記事の履歴を見ることができます。コミットメッセージはMediaWikiの履歴に掲載されます。
取得するためのURLは、MediaWikiのURLがデフォルトの場合には、何もすることがありませんが、Wikipediaのようにmod_rewriteなどで操作している場合には、APIの位置に合わせる必要があります。Wikipediaで言えば、https://ja.wikipedia.org/w になります。これは、MediaWikiの「特別ページ」→「バージョン情報」の「スクリプトパス」で確認できます。
オプション
MediaWikiの特定のコンテンツだけを取得する場合は、
としてください。
また、記事のうち、履歴を取得しない場合は、
と実行してください。
認証が必要な場合は、remote.origin.mwLoginとremote.origin.mwPasswordをgitのオプションで設定してください。
注意点
記事をプッシュする前には、必ずgit pullをしてください。編集が競合した時の対処法がないからです。
また、Wikipediaのような巨大なプロジェクトのソースを取得するのは、慎重に行ってください。容量が相当大きくなります。