[2010/9/16 更新]
昨夜これを調べた後、最初の質問が実際には2つの別々のことを求めていることに気付きました。
1) gitosis によって作成されたすべてのリモート リポジトリに更新後のフックを設定することは可能ですか (つまり、gitosismv hooks/post-update.sample hooks/post-update
でリポジトリを作成した後に手動で実行する必要はありません)。git update-server-info
post update フック内から呼び出されるという事実)。
2) HTTP 経由でリポジトリにアクセスできるようになったら、gitosis.conf のオプションを使用してアクセスのオンとオフを切り替えることができますか (daemon = no
またはに似たものgitweb = yes
)
--- 質問 1 の解答 ---
git init
Git はテンプレートを使用して、コマンドで新しいリポジトリを作成することが判明しました。mv hooks/post-update.sample hooks/post-update
テンプレートディレクトリ内で実行することによりgit init
、私のサーバーでの今後のすべての呼び出しで、更新後のフックが正しく構成されます。(OSXでは、テンプレートディレクトリは/opt/local/share/git-core/templates/
気にする人のためのものです)
これが機能するためのもう 1 つの要件は、リポジトリの HTTP クローン URL が次のようになるように、Apache 書き換えルールを有効にすることです。http//git.example.com/repo.git
私の書き換えルールは次の/etc/apache2/extra/httpd-vhosts.conf
ようになります。
# turning on mod rewrite
RewriteEngine on
# make the front page an internal rewrite to the gitweb script
RewriteRule ^/$ /cgi-bin/gitweb.cgi [L,PT]
# make access for "dumb clients" work
RewriteRule ^/(.*\.git/(?!/?(HEAD|info|objects|refs)).*)?$ /cgi-bin/gitweb.cgi%{REQUEST_URI} [L,PT]
--- 質問 2 の解決策をまだ探しています...ヘルプ! :) ---
HTTP クローンがすべてのリポジトリで機能するようになったので、gitosis を使用して HTTP アクセス制御を管理する方法があるかどうか疑問に思っています。リポジトリへの git-daemon およびgitwebアクセスを設定daemon = no
しgitweb = no
てオフにしますが、Apache 書き換えルールがまだ有効であるため、リポジトリは. これを管理するために gitosis を使用する方法についてのアイデアはありますか?http://git.example.com/repo.git
【最初に投稿した質問】
gitosis を使用して git リポジトリへの http アクセスを管理することは可能ですか? たとえば、gitosis.conf では、次を使用して gitweb と git-demon のアクセスを管理できます。
# Allow gitweb to show this repository.
gitweb = yes
# Allow git-daemon to publish this repository.
daemon = no
現在、次のコマンドを発行してリポジトリのクローンを作成できます。
$ git clone git://git.example.com/repo.git
ただし、次のコマンドを発行すると:
$ git clone http://git.example.com/repo.git
次のエラー メッセージが表示されます。
fatal: http://git.example.com/repo.git/info/refs not found: did you run git update-server-info on the server?
ただし、サーバーにログインして repo.git 内から次を実行すると:
# From http://progit.org/book/ch4-5.html
$ cd project.git
$ mv hooks/post-update.sample hooks/post-update
$ chmod a+x hooks/post-update
$ git update-server-info
その後、http によるクローン作成は正常に機能します。
gitosis 内からリポジトリへの http アクセスを管理する方法はありますか?