Ubuntu のドキュメントに従って Ubuntu 14.04.1 LTS にセットアップした。

gitolite のインストール

git サーバーを作るには、gitolite なるものを入れる。「SSH-based gatekeeper for git repositories」1らしい。 サーバーにアカウントがなくても公開キーを登録しておけばリポジトリにアクセスできるようになる仕組み。

plonk@server:~$ sudo apt-get install gitolite
Reading package lists... Done
Building dependency tre
Reading state information... Done
Suggested packages:
  git-daemon-run gitweb
The following NEW packages will be installed:
  gitolite
0 upgraded, 1 newly installed, 0 to remove and 135 not upgraded.
Need to get 246 kB of archives.
After this operation, 552 kB of additional disk space will be used.
Get:1 http://jp.archive.ubuntu.com/ubuntu/ trusty/universe gitolite all 2.3-1 [246 kB]
Fetched 246 kB in 0s (606 kB/s)
Preconfiguring packages ...
Selecting previously unselected package gitolite.
(Reading database ... 164214 files and directories currently installed.)
Preparing to unpack .../gitolite_2.3-1_all.deb ...
Unpacking gitolite (2.3-1) ...
Setting up gitolite (2.3-1) ...
No adminkey given - not setting up gitolite.

ユーザー git を作る

git サーバーのアカウントを作ってやる。

plonk@server:~$ sudo adduser --system --shell /bin/bash --group --disabled-password --home /home/git git
Adding system user `git' (UID 111) ...
Adding new group `git' (GID 122) ...
Adding new user `git' (UID 111) with group `git' ...
Creating home directory `/home/git' ...

ホームディレクトリができた。ここに設定やリポジトリが置かれる。

plonk@server:~$ ls /home
git  plonk

通常ユーザーの公開鍵を /tmp にコピーしておく。(~/.ssh は他のユーザーからは読めないので)

plonk@server:~$ cp ~/.ssh/id_rsa.pub /tmp/plonk.pub

git になる。

plonk@server:~$ sudo su - git

gl-setup というコマンドに公開鍵を指定して管理者として登録する。

git@server:~$ gl-setup /tmp/plonk.pub
The default settings in the rc file (/home/git/.gitolite.rc) are fine for most
people but if you wish to make any changes, you can do so now.

hit enter...

Select an editor.  To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano        <---- easiest
  3. /usr/bin/emacs24
  4. /usr/bin/vim.nox
  5. /usr/bin/vim.tiny

Choose 1-5 [2]: 4

設定ファイルを開くエディタを選ぶように言われる。nano が推されていたが、よくわからないので vim を選んだ。

.gitolite.rc が表示されるが、ちんぷんかんぷんなので ZZ する。設定ファイルを置くリポジトリが出来た。

creating gitolite-admin...
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
creating testing...
Initialized empty Git repository in /home/git/repositories/testing.git/
[master (root-commit) 83a35ef] start
 2 files changed, 6 insertions(+)
 create mode 100644 conf/gitolite.conf
 create mode 100644 keydir/plonk.pub

一般ユーザーに戻る。

git@server:~$ exit
logout

gitolite の設定リポジトリを clone するのだが、指定がうまくいかなかった。

plonk@server:~$ git clone git@192.168.0.254:gitolite-admin.git
Cloning into 'gitolite-admin'...
ssh: connect to host 192.168.0.254 port 22: Connection refused
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

セキュリティに配慮して sshd のポート番号を変えていたのが原因だった。 ポート番号を指定するには、スキーマから始まる URL の形にしないといけないようだ。

plonk@server:~$ git clone ssh://git@192.168.0.254:12345/gitolite-admin.git
Cloning into 'gitolite-admin'...
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (6/6), done.
Checking connectivity... done.

リポジトリを追加したい場合は conf/gitolite.confrepo hoge のように リポジトリの名前とアクセスを許可するユーザーを書く2。 add して commit して push すると、空のリポジトリが ssh://git@192.168.0.254:12345/hoge.git という名前でアクセスできるよ うになるので、 clone したり remote に追加したりできる。

ユーザーを追加したい場合は公開鍵を keydir/ に置いて、同様に add/commit/push する。

  1. apt-cache show gitolite 

  2. ユーザーの名前はシステムのものではなくて、keydir に置かれている公開鍵ファイルの拡張子 .pub を抜いた名前になる。