Pixel Pedals of Tomakomai

北海道苫小牧市出身の初老の日常

Gitで共有リポジトリを作るならgitosisが便利

ちょろっと渡邉さんのエントリに補足を。

実用Git
吉藤 英明 (監訳)
4873114403

ちなみに、本には直接関係ありませんが、この本の翻訳もGitを使って進められました。

共訳させていただいた「実用Git」が発売になります

原稿はGitで管理しようと言う話は最初から訳者3人の間で出ていたのですが、原稿を管理するとなると当然read権限も含めたパーミッションの管理が必要でした。3人がgit-daemonを立ててお互いにpullしようかとも思ったのですが、git-daemonを使うと匿名で誰でも読めるリポジトリとなってしまいます。HTTP経由だとWEBサーバによってアクセスコントロールはできますが、速度に不安が残ります。ということでsshがベストなんでしょうが、gitのためだけに3人分のアカウントを作るのはちょっと気が引けました。

そこで、今回使ったのがgitosisです。gitosisについては入門gitにも入門Gitにも出ていますが、以下のような特徴があります。

  • サーバにアカウントを作らなくても、gitリポジトリへのアクセス権を管理できる
  • readとwriteのパーミッションを細かく設定できる
  • サーバにログインしなくても、gitリポジトリ経由で設定変更できる

これらは、gitのフックを使って巧みに実装されています。例えば、gitosis-adminリポジトリのkeys/USER.pub にファイルを入れてpushすると、これらの公開鍵がサーバ上のgitosisユーザの .ssh/authorized_keys に書き込まれるようなフックが動作します。このような原理で、サーバにアカウントを作らなくても(gitosisアカウントによって)gitリポジトリへアクセスできたり、サーバにログインしなくても(フック経由で)gitosisのアクセス権の設定を変更することができるようになっています。

gitのコマンドだけ覚えていればリポジトリパーミッションの管理ができるというのは便利ですので、複数人で扱うgitのサーバを運用している方は、導入を検討してみてはいかがでしょうか? gitosisは git clone git://eagain.net/gitosis.git することで入手できます。

余談

実用Git のP216 の訳注は、実際に翻訳中に起こった事件ですw テンパってたとこを吉藤さんに助けて頂きましたm(_ _)m