チーム開発ではもちろん、1人でシステム開発する時にもバージョン管理は必須ですね。ツールはGitを使います。
GitはGitHubとかBacklogとか既存のサービスで使えるのがあるけど、せっかくなので自前で構築します。
Gitインストール
CentOS6.5にはGit1.7.1という古いバージョンが入っています。リポジトリにも古いのしか無いので、自分でコンパイルします。
まずは既存バージョンをアンインストール。
# yum remove git
必要なパッケージを先にインストール。
# yum install zlib-devel perl-devel gettext
Gitをダウンロードしてコンパイル。現在の最新バージョンは1.9.0です。
# wget http://git-core.googlecode.com/files/git-1.9.0.tar.gz
# tar zxvf git-1.9.0.tar.gz
# cd git-1.9.0
# ./configure
# make
# make install
正常にインストールできてるか確認します。
# git --version
git version 1.9.0
Gitoliteインストール
Gitoliteはユーザやリポジトリを管理をしてくれる便利ツールです。
まずはGitolite用のユーザを作成します。
# useradd gitolite
そしたらgitoliteユーザでログインして、鍵用のディレクトリを作成しておきます。
# su gitolite
(gitolite)$ cd ~
(gitolite)$ mkdir .ssh -m 0700
(gitolite)$ exit
rootでユーザ管理するために、rootの鍵を作成してgitoliteのディレクトリにコピーします。
# mkdir ~/.ssh -m 0700
# ssh-keygen -t rsa (選択肢は全部エンターでOK)
# cp ~/.ssh/id_rsa.pub /home/gitolite/root.pub
# chmod 666 /home/gitolite/root.pub
GitoliteをGitHubから取得してインストールします。
# su gitolite
(gitolite)$ mkdir ~/tmp
(gitolite)$ cd ~/tmp
(gitolite)$ git clone git://github.com/sitaramc/gitolite
(gitolite)$ mkdir -p ~/bin
(gitolite)$ gitolite/install -to ~/bin
rootの鍵をgitoliteに設定します。
(gitolite)$ cd ~
(gitolite)$ ./bin/gitolite setup -pk root.pub
不要なファイルを削除します。
(gitolite)$ rm -f ~/root.pub
(gitolite)$ rm -rf ~/tmp
(gitolite)$ exit
ローカルに出来たgitolite-adminというリポジトリでユーザとかの管理が出来るようになります。
# cd ~
# git clone gitolite@localhost:gitolite-admin
上記のコマンドでちゃんとcloneできたら設定完了です。
ユーザ追加
gitolite-adminリポジトリにアクセスしたいユーザの公開鍵を追加します。この鍵は自分のPCで作成したものです。作成方法は省略。
# cd ~/gitolite-admin
# vi keydir/kuro.pub
kuro.pubにユーザkuroの公開鍵を追加しました。ファイル内では末尾に改行が入ってるとうまくいきません。気付かず苦労した……
変更を反映させます。
# git add keydir
# git commit -m 'add users'
# git push
これでkuroの秘密鍵を持つユーザがGitにアクセスできるようになります。
リポジトリ作成
ユーザと同じくgitolite-adminでリポジトリを追加します。
# cd ~/gitolite-admin
# vi conf/gitolite.conf
gitolite.confには例えば以下のように記述します。
repo unity
RW+ = kuro
変更を反映させます。
# git add conf
# git commit -m 'add projects'
# git push
これでkuroだけがアクセスできるunityリポジトリが作成されました。
アクセスする
ユーザとリポジトリの設定が完了したので、以下のコマンドでアクセス出来るようになりました。
git clone ssh://gitolite@(サーバのIPアドレス)/unity
失敗する場合はsshの設定なども確認してみてください。