Gitのリポジトリを柔軟に管理する gitosis

gitosisLinux
GitHubの大普及で、もうプログラマーさんはみんなgitで開発しているかと思います。

でも、大人数でリポジトリを扱ったり、いくつものプロジェクトを扱うと、アクセス管理が大変です。

gitosis

アクセス管理を柔軟におこない、リポジトリの追加も簡単なgitosisを使いましょう。

gitsisはgitの管理ツールです。gitosisを使えば、

  • サーバにログインすることなくリポジトリの追加ができる
  • 読み取り専用などユーザーごとに細かいアクセス管理ができる
  • 設定ファイル自体もgitで管理されているので、万が一のことが起きても戻せる

それでは、Ubuntu 10.04にインストールしてみましょう。

$ sudo apt-get install gitosis

gitosisのイニシャライズをします。SSH_KEY.pubは管理者の公開鍵を指定してください。

$ sudo -H -u gitosis gitosis-init < SSH_KEY.pub
Initialized empty Git repository in /srv/gitosis/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /srv/gitosis/repositories/gitosis-admin.git/

外部からこんな感じでsshの応答があれば成功しています。

$ ssh gitosis@example.hiroki.jp
PTY allocation request failed on channel 0

gitosisの設定ファイルをcloneできるので、手元にcloneしてgitosisの設定をしましょう。

$ git clone gitosis@example.hiroki.jp:gitosis-admin.git
$ cd gitosis-admin

gitosis-adminというリポジトリはgitosisの設定を管理しているリポジトリです。

gitosis-admin
├── gitosis.conf           # gitosisの設定ファイル
└── keydir
    └── hirocaster.pub     # ユーザー名.pub 各ユーザーの公開鍵

それでは、gitosis.confに新しいリポジトリを追加してみます。

[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = hirocaster               # 管理者を追加する場合はここに追加
[group developer]
writable = twitterbotA twitterbotB # 2つの新しいリポジトリを追加
readonly = masason                 # masason は読取専用
members = hirocaster matz          # hirocasterとmatzは書込許可

設定ファイルと追加したユーザーの公開鍵を含めてコミットします。

$ git add ./gitosis.conf
$ git add ./keydir/masason.pub ./keydir/matz.pub
$ git commit -m "2つの新しいリポジトリと2名のユーザーを追加"
$ git push

では、twitterbotAリポジトリに書き込んでみましょう。

$ mkdir twitterbotA
$ cd twitterbotA
$ git init
$ git remote add origin gitosis@example.hiroki.jp:twitterbotA.git
$ touch README
$ git add README
$ git commit -m "first commit"
$ git push origin master

あとは通常通りgitのリモートリポジトリとして使えます。ちなみにcloneするならば以下のとおり。

$ git clone gitosis@example.hiroki.jp:twitterbotA.git
スポンサーリンク

gitweb

一緒にgitブラウザであるgitwebもインストールしていまいましょう。

$ apt-get install gitweb

/etc/gitweb.conf

設定ファイルを以下のように変更。

#$projectroot = "/var/cache/git";
$projectroot = "/srv/gitosis/repositories";

http://example.hiroki.jp/gitweb/にアクセスすればリポジトリが閲覧できます。

/etc/apache2/conf.d/gitwebがapacheの設定ファイルなので、お好みに修正してください。

これで、いくつものリポジトリを簡単に追加して、大人数でのアクセス管理も可能です。

いちいちサーバのアカウントがなくても追加できるので、大助かりです。

2011年もみんなでガンガンgitで開発しましょう。

以上のようなかゆいところに手が届くgitの参考書はこちら。

濱野 純(Junio C Hamano)¥ 2,310

gitメンテナーの濱野さんが書いた書籍。はじめてのGitってよりGitマスター入門書って感じ。ほんと、おすすめ。これだけあればどうにかなるのが現実。

タイトルとURLをコピーしました