git サーバー構築メモ
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.conf
に repo hoge
のように
リポジトリの名前とアクセスを許可するユーザーを書く2。
add して commit して push すると、空のリポジトリが
ssh://git@192.168.0.254:12345/hoge.git
という名前でアクセスできるよ
うになるので、 clone したり remote に追加したりできる。
ユーザーを追加したい場合は公開鍵を keydir/
に置いて、同様に add/commit/push する。