チーム開発ではもちろん、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の設定なども確認してみてください。