もっと、みやびちゃんぷりちー!

みやびちゃんぷりちー!

GitをSSHで運用する (Cont'd)

構築ができましたので、簡単な手順を

尚、gitはインストール済みであることを想定して書きます。

1.から3.はサーバ上で行います。

1. リポジトリアクセス用のユーザ(git)を作成

[root@server ~]$ useradd -m -U git
[root@server ~]$ passwd {anypassword}

2. パスの設定

  • gitユーザの.bashrcにパスを追加
export PATH="/home/gituser/bin:$PATH"
  • .cshrcなら
setenv PATH "/home/gituser/bin:$PATH"

3. gitoliteのインストール

  • 作業ディレクトリの作成
[git@server ~]$ mkdir -p $HOME/bin $HOME/gitolite/conf $HOME/gitolite/hooks
  • gitoliteのソースをチェックアウト(clone)
[git@server ~]$ git clone git://github.com/sitaramc/gitolite gitolite-source
  • rsaの公開/暗号鍵の作成
[git@server ~]$ ssh-keygen -t rsa -f ./admin -P "adminpassword"
  • gitoliteのセットアップ
[git@server ~]$ ./gitolite-sourcesrc/gl-system-install $HOME/bin $HOME/gitolite/conf $HOME/gitolite/hooks
[git@server ~]$ gl-setup $HOME/admin.pub
  • サーバ側に環境変数追加
    • gitユーザの.bashrcに以下を追加
export GL_RC=~/.gitolite.rc
export GL_ADMINDIR=~/.gitolite
export GL_BINDIR=~/bin
export GL_REPO=gitolite-admin
export GL_USER=git
export GL_TS=”$y-$m-$d.$h:$min:$s”
export GL_REPO_BASE_ABS=repositories # ここは~/.gitolite.rcの$REPO_BASEに合わせる

4. gitoliteの設定

1.から3.とは異なり、ここでの作業はローカルマシンで行います。

  • gitolite-adminのエクスポート
[user@local ~]$ git clone git@gitserver.domain:gitolite-admin
注意)
ローカルマシンに3.で作った秘密鍵をインポートするなど、ローカルからサーバにはSSHで繋げられるようにしておくこと!
  • ユーザの追加
    • rsaの公開/暗号鍵の作成
[user@local ~]$ ssh-keygen -t rsa -f ./user -P "userpassword"
    • 公開鍵の追加
[user@local ~]$ cp ./user.pub ./gitolite-admin/keydir
    • gitolite-admin/conf/gitolite.conf を修正
repo    gitolite-admin
        RW+     =   admin

repo    testing
        RW+     =   @all

# この様に追記・修正
repo    myrepo
        RW+     =   admin
        R       =   user

R: 読み込みのみ、RW: 読み込み/書き込み、RW+: 読み込み/書き込み/rewind

  • コミット
[user@local ~]$ cd ./gitolite-admin
[user@local ~]$ git add ./keydir/user.pub
[user@local ~]$ git commit -a -m "any comment Please!"
[user@local ~]$ git push

コミット後に、レポジトリ myrepo が作成されます。

追加ユーザの動作確認は、対象ユーザに秘密鍵(user)をインポートして貰い、以下のコマンドを実行します。

[another@machine ~]$ ssh git@gitserver.domain
PTY allocation request failed on channel 0
hello ogino, the gitolite version here is v1.5.8-17-gc8b1d8c
the gitolite config gives you the following access:
     R     	myrepo
     @R_ @W_	testing
Connection to gitserver.domain closed.

ユーザのグループ化も可能です。

gitolite-admin/conf/gitolite.conf を以下の様に設定すると

@group = aaron jacques hans roberto

repo    repo
        RW+     =   @group

ユーザ aaron、jacques、hans、robertoは、レポジトリ repoに「読み込み/書き込み/rewind」ができます。