Gitサーバをgitosisで管理する

今まで手動でリモート側にgit init --bareでリポジトリつくって、
ユーザの公開鍵をgitユーザのauthorized_keysに公開鍵追加していたものを
うまいことやってくれるようなツール

環境

  • CentOS 5.6 32bit

サーバ側

インストール

EPELリポジトリにあるのでリポジトリの追加を行ってから

$ sudo yum install -y gitosis

yumでインストールを行うとgitosisユーザをつくってくれたりする
ホームディレクトリは/var/lib/gitosis

設定
## 初期化
$ sudo -H -u gitosis gitosis-init < id_rsa.pub

## パーミッション
$ sudo chmod 755 /var/lib/gitosis/repositories/gitosis-admin.git/hooks/post-update

公開鍵を指定して初期化を行う。クライアント側の公開鍵を設定しておくといい。

クライアント側

gitosis設定

git cloneして設定とかしてみる

$ git clone ssh://gitosis@host/gitosis-admin.git
$ cd gitosis-admin
$ vim gitosis.conf


gitosis.confに追加してみる

[group homuhomu]
writable = homuhomu
members = user@hostname

membersのところに書くと権限付与できる。
値はkeydirにある公開鍵の拡張子より前の部分になる
上記の例だとkeydir/user@hostname.pubがそのユーザの公開鍵になる必要がある

リポジトリ追加
mkdir homuhomu
cd homuhomu
git init
git remote add origin ssh://gitosis@host/homuhomu.git
touch file
git add .
git ci -m "homu"
git push origin master

こうするとリモート側の/var/lib/gitosis/repositoriesにhomuhomu.gitが作られている!すごい
いちいちリモート側にログインしなくてもいろいろできるようになるるるる