【2014-06-20】書き直しました。
http://kzy52.com/entry/2014/06/20/085203
GitoliteをつかってGitリポジトリを権限管理したいと思います。
前提条件
・SSHの設定が終わっていること
「CentOS でWebサーバー構築」の記事を参考に
Gitoliteをインストールする
・Gitolite用のユーザーを作成する
$ sudo useradd git
・追加したユーザーでSSH接続できるようにする
$ sudo vi /etc/ssh/sshd_config AllowUsers git
・SSHを再起動
$ sudo /etc/init.d/sshd restart
・ローカルPCで公開鍵と秘密鍵を作成する
[local]$ cd ~/.ssh [local]$ ssh-keygen -t rsa -f git-admin
※ パスフレーズなし
・公開鍵をサーバーに送る
$ scp -P [ポート番号] ~/.ssh/git-admin.pub [ユーザー名]@[ホスト名]:~/
・サーバーで公開鍵を/home/git に移動して所有権をgitユーザーに変更する
$ sudo mv ~/git-admin.pub /home/git/git-admin.pub $ sudo chown git:git /home/git/git-admin.pub
・ここからはgitユーザーで作業する
$ sudo su - git
・Gitoliteをインストールする。
$ mkdir ~/tmp;cd ~/tmp $ git clone git://github.com/sitaramc/gitolite $ mkdir -p ~/bin $ gitolite/install -to ~/bin $ ~/bin/gitolite setup -pk ~/git-admin.pub
・こんなエラーが出る場合
Can't locate Time/HiRes.pm in @INC (@INC contains: /home/git/tmp/gitolite/src/lib /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /home/git/tmp/gitolite/src/lib/Gitolite/Common.pm line 76. BEGIN failed--compilation aborted at /home/git/tmp/gitolite/src/lib/Gitolite/Common.pm line 76. Compilation failed in require at gitolite/install line 15. BEGIN failed--compilation aborted at gitolite/install line 15.
$ sudo yum install perl-Time-HiRes -y
・不要なファイルを削除する
$ rm -rf ~/tmp $ rm -rf ~/git-admin.pub
・ローカルからGitolite経由でアクセスができるようにする
$ vim ~/.ssh/config Host git-admin.example.com HostName [ホスト名] User git Port [ポート番号] IdentityFile ~/.ssh/git-admin
・ローカルPCでファイルをクローンしてみる
$ cd $ git clone git-admin.example.com:gitolite-admin
・Gitoliteにユーザーを追加する
$ cd ~/gitolite-admin $ cp ~/.ssh/id_rsa.pub ./keydir/[追加するユーザー名].pub
$ vim conf/gitolite.conf repo testing RW+ = [追加するユーザー名]
$ git add . $ git commit -m "add user: [追加するユーザー名]" $ git push
・リポジトリを作成する
$ vim ~/gitolite-admin/conf/gitolite.conf repo my-project RW+ = git-admin
・変更したファイルをサーバーへ送る
$ git commit -am "add repo: my-project" $ git push