バージョン管理システムGitのインストール、初期設定、Tipsなど。
git-daemon
Ubuntu 10.04でgit-daemonをxinetd経由で起動させるための設定方法。 ここではローカルネットワーク内からのアクセスのみを許可する条件で設定を行う。
設定
まずはgit-coreパッケージをインストールしておく。
sudo apt-get install git-core
まずはsvnserveを動作させるためのユーザ(ここではgitとする)を作成する。
sudo useradd git
続いてリポジトリを格納するルートディレクトリ(ここでは/srv/git)を作成する。 git-daemonが書き込めるようにオーナをgitにしておく。
sudo mkdir /srv/git
sudo chown -R git:git /srv/git
/etc/servicesにgitのサービス名と使用ポート番号が記述されていることを確認する(もしなければ追記する)。
$ grep Git /etc/services git 9418/tcp # Git Version Control System
/etc/hosts.allowに下記の内容を追記し、内部ネットワークからの接続のみを許可する。
git-daemon : 127.0.0.1 192.168.0.0/24
また、iptablesなどを使ってファイヤーウォールの設定がされている場合は、9418番のポート(/etc/servicesで指定したポート)を忘れずに空けておくこと。
続いて、xinetdでgit-daemonを起動するための設定を行う。 /etc/xinetd.d配下にgit-daemonというファイルを作成し、下記の内容を書き込む。
service git
{
disable = no
type = UNLISTED
port = 9418
socket_type = stream
wait = no
user = git
server = /usr/lib/git-core/git-daemon
server_args = --inetd --export-all --enable=receive-pack --base-path=/srv/git
log_on_failure += USERID
only_from = 192.168.0.0/24 127.0.0.1
}
設定項目の意味は次の通り。
- user
- git-daemonを実行するユーザ
- server
- git-daemonへのフルパス
- server_args
- git-daemonに渡す引数
- --base-path=/srv/git
- リポジトリのルートディレクトリを/srv/gitに設定
- --enable=receive-pack
- 認証なしでpushできるようにする(xinetd経由で動作させた場合は認証機構がないため)
- log_on_failure
- 接続に失敗した場合、ユーザ名をログに記録する
起動設定が整ったところで、xinetdの設定を再読み込みする。
sudo service xinetd reload
公開用のリポジトリの作成
sandboxというリポジトリを/srv/gitに作成する場合の例。 まずは適当な場所でローカルリポジトリを作成、コミットする。
mkdir temp
cd temp/
git init
touch README
git add README
git commit -m "initial commit"
--bareオプションを付けて公開用のリポジトリを作成する。 (リポジトリのオーナgitで実行するか、chown -Rしてオーナを変更するのを忘れないこと)
sudo -u git -s
git clone --bare temp/ /srv/git/sandbox.git
exit
作成したローカルリポジトリは不要になるので削除する。
rm -rf temp/
git cloneで公開用リポジトリを複製できるかどうか試す。
$ git clone git://localhost/sandbox.git Initialized empty Git repository in /home/smdn/sandbox/.git/ remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 0 (delta 0) Receiving objects: 100% (3/3), done.