Patch Queue Managerを使ってみる(その2)

Patch Queue Managerはサインされたメールを処理するので、Patchを投稿する側はGPGで鍵を作った上でサインしてPatch Qeueu Managerへメールする。Patch Queue Managerではあらかじめ、投稿者のアカウントの公開鍵をGPGにインポートしたうえで信頼するように設定しておく。

Patch Queue Managerのインストールと設定

ArXのtoolsディレクトリにpqmがあるのでそこで./configure; make; make installする。pqm.confファイルを元にPatch Queue Manager用のアカウントに~/.pqm.confを作成する。ポイントは、ワークディレクトリに~/.arxをコピーしておくこと。tools/pqm/pqmにあるpythonライブラリを手動でPYTHONPATHが通るところにコピーしておくこと。一度pqmを手動で実行しておくとよい。

procmailの設定

ロックファイルなど基本設定を除くと、

0
pqm --read

のようにすれば良い。pqmは必要の無いメールはそのままスプールへ流す。

確認

ここまでで、メールを出してpqmに読ませることができるようになる。実際にサインをするためには、
echo content | gpg --cleasign | mail -s 'commit message' PQMアカウント
のようになる。こうするとpqmのワーキングディレクトリにpatch-000000のようなファイルが出来上がるはず。

確認2

手動で、pqm --runとすることで、パッチが実行される。このときに気を付けることは、Fromが信頼している相手のメールアドレスになっていることと、qpmがマージを実行する際に必要となるリポジトリにアクセスできることである。
うまく行ったら、crontabに登録しておこう。
ノートパソコンで作業してpqmと連係したいなどの場合、以下のようにすると良いだろう。

  1. ノートPCのリポジトリのミラーをホスティングサービスなど情事アクセス可能なところに作っておく(arx make-archive --mirrorコマンドで行う)。
  2. mirrorをpqmへレジスタしておく(pqmアカウントでarx archives -a コマンドで行う)。
  3. ノートPCでpqmからgetして手元に展開する。
  4. ノートPCでは自分のリポジトリにforkして、作業を行う(arx forkコマンドで行う)。
  5. コミットは自分のリポジトリに対して行う。
  6. 上流からの変更分をマージして整頓する(arx merge 上流 コマンドで行う)
  7. マイルストーンに到達すると、ミラーを更新する(arx mirror コマンドで行う)
  8. echo 'star-merge'|gpg --clearsign|mail -s 'commit message' pqmアカウント のようにしてマージリクエストをpqmアカウントへ送信する。そういうシェルスクリプトを作成しておくと便利だ。というか、なぜかpqmパッケージにはそういうスクリプトは入っていない。
  9. pqm側で自動的にマージされる。
  10. 新たに作業したいときには、また別のブランチとして上流からforkしてもよいし、前の作業のブランチを上流からの差分をマージして同期させてから作業しても良い。arx historyコマンドで取り込んだブランチが表示されるので、作業内容に適した名前のブランチにしたほうが良い。

このようにして複数の独立したリポジトリが協調しあってプロジェクトが成長するようになる。