ククログ

株式会社クリアコード > ククログ > commit-email.info: コミットメール配信サービス

commit-email.info: コミットメール配信サービス

コミットメール配信機能を提供するサービスcommit-email.infoを紹介します。

(commit-email.infoはクリアコードが運営しているサービスではなくクリアコードのメンバーが個人で運営しているサービスです。)

フリーソフトウェアの開発で学んだことのひとつに「コミットを共有する」ということがあります。

「コミットを共有する」とは、他の開発者のコミットを自分が読む、自分のコミットを他の開発者が読む、ということです。最近はpull requestを使った開発がよい開発というイメージが広がっているようなので、「pull requestをしたら他の開発者が自分のコミットを見てくれる」と言えばどういうことかピンときやすいかもしれません。ただ、「コミットを共有する」は「requestされなくても自分が読みたいから読む」という点が「pull requestを使った開発」のケースと違います。

「自分が読みたいからコミットを読む」ことを支援するサービスがcommit-email.infoです。pull requestきっかけでコミットを読みたい場合はGitHubのwatch機能を使うとよいでしょう。

機能

commit-email.infoの機能を説明します。

commit-email.infoはリポジトリーにコミットがpushされたらそのコミットの情報(diff入り)をEメールで配信するサービスです。このEメールのことをコミットメールと呼びます。コミットメールにはdiffが入っているので別途Webブラウザーを開いたりgit log -pを実行しなくても変更の詳細まで確認できるところがポイントです。diffが入っていると確認するひと手間が減るのです。

diffは変更点がわかりやすくなるように工夫しています。次のように色付きでフォーマットしています。これはdiffをわかりやすく表示するツールがよく使うやり方です。

たとえば、GitHubにミラーされたRubyのr52117は次のようになります。

最初にコミットのメタデータがあります。

コミットメールのヘッダー部分

続いてdiffがあります。このスクリーンショットではAF_UNSPECを引数として追加したことがわかりやすくなっています。

コミットメールのdiff部分

コミットメールはメーリングリストで配信します。コミットメールを受信したい場合はメーリングリストを購読し、受信をやめたい場合はメーリングリストから退会します。購読・退会処理は自動化されているため、ユーザーは自分の好きなタイミングで実行できます。

このサービスが提供する機能はこれだけです。

使い方

commit-email.infoの使い方を説明します。

まず、自分がコミットを読みたいプロジェクトのコミットメールを配信しているメーリングリストをリストから探します。たとえば、Rubyのリポジトリーのコミットメールならruby@ml.commit-email.infoです。

このメーリングリストに次の内容のメールを送ります。Ccnull@commit-email.infoを指定することを忘れないでください。

To: ruby@ml.commit-email.info
Cc: null@commit-email.info
Subject: Subscribe
--
subscribe

このメールを送ると購読完了です。それ以降にpushされたコミットはコミットメールとして届きます。

もし、リストにコミットを読みたいプロジェクトがなく、そのプロジェクトのリポジトリーがGitHubにある場合はメーリングリストを購読する前にそのプロジェクトをリストに追加する必要があります。リストに追加する方法は次の通りです。

  1. kou/commit-email.infoにあるansible/files/web-hooks-receiver/config.yamlにそのリポジトリーを追加するpull requestを送ります。

  2. もし、自分がそのリポジトリーの管理者権限を持っているなら、そのリポジトリーのWebフックにhttp://web-hooks-receiver.commit-email.info/を追加します。(リポジトリー単位のWebフックでもorganization単位のWebフックでも構いません。複数のリポジトリーを対象にするならorganization単位のWebフックが便利です。)

  3. もし、自分がそのリポジトリーの管理者権限を持っていないなら、kou/commit-email.infoにあるansible/files/github-event-watcher/config.yamlにそのリポジトリーを追加するpull requestを送ります。

どのケースでも「1.」は必須です。「2.」と「3.」はどちらかをやればいいです。「2.」の方がおすすめです。理由はタイムラグが小さいからです。

まとめ

コミットメール配信機能を提供するサービスcommit-email.infoを紹介しました。GitHubにあるリポジトリーに対応しています。GitLab.comに対応することは容易なので、必要な人はissueを作って相談してください。

commit-email.infoを使って自分が使っているプロダクトのコミットを読み始めてみてはいかがでしょうか?きっと学ぶことがたくさんあるはずです。

そういえば、www.commit-email.infoがやけに質素なデザインだと思いませんでしたか?実はスタイルシートが空っぽなのです。

関連情報: