gitサーバをインストールする

サーバを再構築したあと、gitのリポジトリを管理するものをまだ入れていなかったのですが、あると便利なので、入れることにしました。
gitosisを入れようと思ったのですが、最近はgitoliteが人気だそうなので、せっかくなのでgitoliteを入れることにしました。
実際にインストールしてみたところ、gitosisよりもgitoliteのほうがはるかにインストール作業が楽でした。

環境は、Ubuntu Server 12.04 LTSを想定しています。

サーバにgitoliteをインストール

端末を開いてこんな感じでgitoliteをインストールします。

$ sudo aptitude install gitolite

これで、インストールはできたものの、使用するための設定ができていないので、以下のように端末に入力します。

$ sudo dpkg-reonfigure gitolite

すると、
f:id:kuro_m88:20120603123929p:image
こんな感じの画面になるので、"gitoliteで利用するシステムユーザ名"というところに"git"と入力し、Enterを押します。"git"である必要はありませんが、わかりやすくするためにこの名前にしました。
次は、リポジトリを保存するパスを聞かれますが、
f:id:kuro_m88:20120603123930p:image
ここでは、"/home/gitolite"としました。ここも好きなパスで結構です。
最後に、gitoliteの管理者のアカウントの公開鍵の場所を尋ねられます。
f:id:kuro_m88:20120603123931p:image
管理者のsshの公開鍵が置いてあるパスを書いてください。sshの鍵がなければ生成して、ここに指定してください。
Enterを押せば、初期設定が終了するはずです。
これで、サーバ側で作業することは終了しました。

クライアントの設定

次に、管理者のクライアントの設定です。サーバに接続することができるマシンを使います。(サーバ上からそのまま作業を続けても可)
sshの設定をします。(sshのconfigファイルを記述してある場合はこの作業は必要ありません。)
適当なエディタで、"~/.ssh/config"ファイルを編集します。なければ新規に作成してください。
ファイルを開いたら、以下のような記述を書き足します。

Host [サーバのホスト名]
    Port [サーバのsshのポート番号]
	Hostname [サーバのホスト名]
	IdentityFile [sshの秘密鍵の場所]
    TCPKeepAlive yes
    IdentitiesOnly yes

sshの秘密鍵は、先ほどサーバの設定の時に指定した公開鍵に対応するものを指定してください。
これでクライアント側の設定も終了しました。

新しくリポジトリを作ってみる

リポジトリをサーバに新しく作るには、まず設定が記述されたgitリポジトリを取ってくる必要があります。
クライアントの端末で、

$ git clone git@[サーバのホスト名]:gitolite-admin

とすれば、設定が記述されたリポジトリがクローンされます。
次に、そのリポジトリの中の、"conf/gitolite.conf"を編集します。

repo    gitolite-admin
        RW+     =   admin

repo    testing
        RW+     =   @all

となっているので、それらの記述にならって、

repo    gitolite-admin
        RW+     =   admin

repo    testing
        RW+     =   @all

repo	hoge
        RW+     =   @all

リポジトリ"hoge"を書き足してみましょう。
その後、端末から

$ git commit -a -m "add hoge"
$ git push

のようにすれば、リポジトリが追加されます。
試しに、

$ git clone git@[サーバのホスト名]:hoge

としてみると、空のhogeリポジトリがクローンされます。


あとは、作業するときは、clone/pullで取ってきて、commitしてpushして…という一連の流れになります。
複数人でのアカウント管理機能などもgitoliteは持っていて、非常に便利そうなので、そこらへんについても調べてみようと思います。