Git リポジトリを WebDAV で扱う
Git に挑戦して悪戦苦闘の末に WebDAV 経由で使えるようになったのでメモっとく。
メインリポジトリを置くサーバは CentOS 5.4 に git-1.5.2.1-1.el5.rf
クライアントは Win7 + msysGit git version 1.6.5.1.1367.gcd48
Apache の WebDAV 設定
/var/www/gitrepos/ 以下にリポジトリを置くことにして、外からは http://***/git/リポジトリ名 でアクセスするようにする。
設定は git.conf に書いて、再起動
# emacs /etc/httpd/conf.d/git.conf
Alias /git/ /var/www/gitrepos/ <Location /git/> DAV on AuthType Basic AuthName "Git" AuthUserFile /var/www/gitrepos/.htpasswd Require valid-user </Location>
# /etc/init.d/httpd restart
Git リポジトリの作成
テストとして test.git というリポジトリを作る。
# cd /var/www/gitrepos/ # mkdir test.git # ディレクトリを作って # cd test.git/ # git --bare init --shared=true # リポジトリ初期化 Initialized empty shared Git repository in /home/gitrepos/test.git/ # git --bare update-server-info # chown -R apache: . # WebDAV 経由で扱うためオーナーを apache:apache に変更
これで http://サーバ名/git/test.git にアクセスすれば test.git リポジトリを操作できるようになる。
クライアントで clone & commit & push
C:\>git clone http://ユーザ名@***/git/test.git test # clone する Basic認証があるきは ユーザ名@ を忘れずに Initialized empty Git repository in C:/test/.git/ Password: # パスワード入力 warning: You appear to have cloned an empty repository. C:\>cd test C:\test>touch test.txt # 適当にファイルを作って add C:\test>git add test.txt C:\test>git commit -m "init commit" # 適当に commit [master (root-commit) 8816b32] init commit 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test.txt C:\test>git push origin master # リモートリポジトリに push Password: Fetching remote heads... refs/ refs/tags/ refs/heads/ updating 'refs/heads/master' from 0000000000000000000000000000000000000000 to 8816b323d4d5a0727110bf74c9d517dd376ec737 sending 3 objects done Updating remote server info C:\test> cd .. # push できたか別ディレクトリに clone してみる C:\>git clone http://ユーザ名@***/git/test.git test2 Initialized empty Git repository in C:/test2/.git/ Password: # パスワード入力 C:\>dir test2 ドライブ C のボリューム ラベルは RamDisk-PAE です ボリューム シリアル番号は 1234-5678 です C:\test2 のディレクトリ 2010/04/21 17:22 <DIR> . 2010/04/21 17:22 <DIR> .. 2010/04/21 17:22 0 test.txt 1 個のファイル 0 バイト 2 個のディレクトリ 461,811,712 バイトの空き領域