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のアクセス制御をより細やかにできるようにする