gitのインストールと設定

毎度毎度ネタがバラバラなのは、その時の興味が移り変わり過ぎるから?w


というわけで、今回はgitネタです。仕事でgitのリポジトリを公開する設定をしてみたはいいけど、いかんせん自分がgitを使ったことがなく、動作確認を他の人に頼らなくてはいけないということが発生して
非常に面倒だったのです。今後はそんなことがないようにも、インフラ周りの設定ファイルやらスクリプトやらをgitで管理できるように、ちゃんと使い方を覚えたいと思います。


今まではどうしていたかって?本番サーバとテストサーバにおいてあるだけ。いい時はファイルサーバにバックアップをおいてあるくらいという体たらくぶり。これはさすがにまずいので、重い腰を上げます。

gitのインストール〜設定まで

環境はいつもの通りノートPC上のFedora15といきたいところだが、実践で役立つようにKVM上のCentOS6にしておく。公開するために、gitolite *1 を使ってリポジトリを作成&管理するようにします。CentOS5系の時はgitのインストールにrpmforgeやepelを使わなければインストールできなかったが、CentOS6はデフォルトのリポジトリからインストールできる。

  • とりあえず git をインストール
# yum install git
    • gitolite 自体が git で管理されているため
  • gitolite 用ユーザの作成とPATHの設定
# useradd git
# su - git
$ vi .bashrc
以下を追記
PATH=$HOME/bin:$PATH
$ source .bashrc
$ ssh-keygen -t rsa -f .ssh/id_rsa_git
$ cp .ssh/id_rsa_git /tmp/git-admin.pub
    • ここで作るのは、上で作った "gitolite用ユーザ ではなく、"gitolite 管理下ユーザ" の鍵となる(gitolite用ユーザのでもあるんだけど)。
    • gitoliteのセットアップ時に指定をして適切なパスにコピーされるので、今の段階では /tmp コピーしておく。最初に作るのは管理者ユーザのものとする(UserName.pubとなるようにする)。
  • gitolite のインストール〜管理者ユーザをアクセスできるようにするまで
$ git clone git://github.com/sitaramc/gitlite
$ cd gitolite
$ ./src/gl-system-install
$ gl-setup /tmp/git-admin.pub|
    • gl-setup実行直後に設定ファイルの編集ができるが、ひとまずそのままにしておく
    • これだけで完了
  • セットアップ完了後の gitolite用ユーザの .ssh.authorized_keys の中身
# gitolite start
command="/home/git/bin/gl-auth-command git-admin",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa ...
# gitolite end
    • このようにして、OSのユーザとは別のユーザの認証を実現しているのですね

ユーザの追加とリポジトリの追加

ユーザの追加やリポジトリの追加、リポジトリの設定もすべて git 経由で行う。作成された gitolite-admin リポジトリをクライアントマシンから git-clone -> 変更 -> git-add -> git-commit -> git-push という手順を取れば変更が反映される。ステキ!

$ git clone git@git-server:gitolite-admin
$ cd gitolite-admin
$ vi conf/gitolite.conf
>> 以下を追記することで、test-proj リポジトリの作成と、hoge ユーザの作成をする
repo    test-proj
        RW+     =   git-admin
        RW      =   hoge

<<
$ cat pub_key_hoge > keydir/hoge.pub # hogeユーザの公開鍵を設定
$ git add .
$ git commit
$ git push

あとは追加したhogeユーザでtest-projへのアクセスが出来るかどうかを確認すればOK。すごく簡単ですね。


今後は、git-webやリポジトリをHTTP(S)で公開する方法も書きたいと思います。

*1:http://progit.org/book/ja/ch4-8.html gitのアクセス制御をより細やかにできるようにする