なか日記

一度きりの人生、楽しく生きよう。

TracLightningのApache(http)でGitを使う

TracLightningでGitを使うの設定を行うことでTracLightingでGitが使えるようになりましたが、他のPCからgit cloneするには、http・git・ssh等のプロトコルで接続できるようにしないといけません。

今回はhttpでGitを使えるように設定してみます。

仮想ディレクトリの作成

C:\TracLight\CollabNetSVN\httpd\conf\httpd.conf をテキストエディタで開きます。
で、最後の行に以下の様な仮想ディレクトリの設定を追加します。

DAVLockDB "C:\TracLight\projects\DavLock"
Alias /git "C:\TracLight\projects\git"
<Directory "C:\TracLight\projects\git">
  DAV on

  Order Allow,Deny
  Allow from all
</Directory>

編集が終わったら、TracLightningのサービスを再起動します。
認証の設定してませんので、セキュリティ的に問題ありです。
ご注意下さいっていうか、設定教えてw

リポジトリの作成

共有したいリポジトリを作成するために以下のコマンドを実行します。

nakaji@STUDIO15 /c/TracLight/projects/git/GitTest.git
$ git --bare init
Initialized empty Git repository in C:/TracLight/projects/git/GitTest.git/

nakaji@STUDIO15 /c/TracLight/projects/git/GitTest.git (BARE:master)
$ git update-server-info

nakaji@STUDIO15 /c/TracLight/projects/git/GitTest.git (BARE:master)
$

git cloneしてみる

以上で設定は終わりなので、git cloneしてみます。

nakaji@STUDIO15 /tmp
$ git clone http://studio15/git/GitTest.git
Initialized empty Git repository in D:/Temp/GitTest/.git/
warning: You appear to have cloned an empty repository.

というわけで、無事cloneできました。

git pushしてみる

次はgit pushです。

nakaji@STUDIO15 /tmp
$ cd GitTest/

nakaji@STUDIO15 /tmp/GitTest (master)
$ vi hoge.c

nakaji@STUDIO15 /tmp/GitTest (master)
$ git add .

nakaji@STUDIO15 /tmp/GitTest (master)
$ git commit -m "test commit"
[master (root-commit) df8d33a] test commit
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 hoge.c

nakaji@STUDIO15 /tmp/GitTest (master)
$ git push origin master
Fetching remote heads...
  refs/
  refs/heads/
  refs/tags/
updating 'refs/heads/master'
  from 0000000000000000000000000000000000000000
  to   df8d33a0cc188f5ed859532032bc3d51a56aec94
    sending 3 objects
    done
Updating remote server info

課題

上記では認証設定を行っていません。
というのも、以下の様に設定するもうまくいきませんでした。

<Directory "C:\TracLight\projects\git">
  DAV on

  Order Allow,Deny
  Allow from all

  AuthType Digest
  AuthName trac
  AuthUserFile "C:\TracLight\projects\trac.htdigest"
  Require valid-user
</Directory>

git cloneした時のエラーは以下の通り。

$ git clone http://localhost/git/GitProject.git
Initialized empty Git repository in D:/Temp/GitProject/.git/
error: The requested URL returned error: 401 while accessing http://localhost/git/GitProject.git/info/refs

fatal: HTTP request failed

認証情報を渡せてないから何でしょうけどね。
どうやって渡せば良いのやら…