git-daemonを使ってみたメモ
作業ログ。
aptitude install git-daemon-run vi /etc/sv/git-daemon/run # exec git-daemon --verbose --base-path=/var/cache/git --export-all --enable=receive-pack # に変更する。 sv restart git-daemon
runsvとかsvとか初めて見たので使い方がよく分からない。
とりあえず/usr/share/doc/git-daemon-run/README.Debianに書いてある通りにしてみた。
リポジトリの位置も、READMEに書いてある通りにシンボリックリンクを張るようにする。
cat /etc/apache2/sites-available/git <VirtualHost *:80> DocumentRoot "/var/cache/git" ServerName git.server <Directory "/var/cache/git"> AddHandler cgi-script .cgi Options ExecCGI FollowSymLinks </Directory> </VirtualHost> a2ensite git /etc/init.d/apache2 reload cd /var/cache/git/ ln -s /usr/share/gitweb/* . ln -s /usr/lib/cgi-bin/gitweb.cgi index.cgi
公開用のリポジトリ置き場を/var/local/gitに作る。
gitのグループも追加。
厳密にするならgitグループではなくてproject用のグループを作るのがいいかも。
groupadd git usermod -G .....,git
cd /var/local mkdir git cd git mkdir user1 user2 chown user1 user1/ chown user2 user2/ mkdir project chown manager:git project chmod g+w project ln -s /var/local/git/* /var/cache/git/
一般ユーザでリポジトリを初期化する。
cd user1 mkdir test.git cd test.git git init --bare cd ../project mkdir test.git cd test.git git init --bare --shared
開発環境から公開用リポジトリにpushする。
cd working_directory git push git://server/user1/test.git master git push git://server/project/test.git master
ここまでやって気付いたけど、書き込みはgit-daemonが実行されているユーザの権限で書き込まれるのね。
これでは複数ユーザで使いにくい。
git-daemon-runのオプションのreceive-packはanonymous pushを許す設定とのこと。これを削除して
git push ssh://server/var/local/git/user1/test.git master # または git push server:/var/local/git/user1/test.git master
とすればユーザのアクセス権を考慮した書き込みができる。でもこっちの場合はPATHがgitプロトコルと違うのでいただけない。
git-daemonはやめてsshのみにするかgitosis入れるのがいいかなぁ。
あとでやる。
Debianでgitosis使うならプログラミング/gitosis による git サーバーの管理 - 武内@筑波大ここを参考に。