ログ日記

作業ログと日記とメモ

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 サーバーの管理 - 武内@筑波大ここを参考に。