現在、SVN から GIT に切り替えることができるように、GIT リポジトリ サーバーの設定を試しています。ほぼすべてカバーしましたが、問題が残っています。
現在のセットアップは次のとおりです。
- サーバーはNISクライアントであるため、すべての開発者(および非開発者)はユーザーアカウントと正しいグループを持っています
- すべてのリポジトリは /var/git/ で作成されます
- すべてのプル/プッシュは ssh 経由で行われます
これは今のところ完全に機能し、gitosis や gitolite の必要がなくなります。
リポジトリの概要を閲覧できるようにしたいので、pathinfo を含む gitweb をセットアップしました。リポジトリは非公開であるため、Perl AuthenNIS を介して認証を設定しましたが、これは機能しますが、ここで問題が発生します。
すべての開発者がすべてのリポジトリにアクセスできることは望ましくありませんが、gitweb は (apache ユーザーが) 読み取ることができるすべてのリポジトリを表示するだけです。
だから私の質問は:現在ログインしているユーザーがアクセスできるGITリポジトリのみをgitwebに表示させることは可能ですか?
考えられる解決策:
- .htaccess によるさらなるアクセス制御。pathinfo はこれを有効にしますが、pathinfo 以外の URL を介してリポジトリにアクセスすることを妨げません (たとえば、/repo.git/ は機能しませんが、/gitweb.cgi?p=repo.git は機能します)。
- 完全な gitosis/gitolite 環境をセットアップし、それを gitweb に統合します (本質的には this )。オーバーヘッドが望ましくないため、これを防ぎたい
- 認証された HTTP ユーザーとして gitweb を実行します。これにより、すべてのアクセス制御の問題が修正されますが、これを行う方法がわかりません
- gitweb との
$export_auth_hook
組み合わせ$cgi->remote_user
は有望に思えますが、perl についての私の理解はそれを使用するにはあまりにも限られています (フックは、表示/エクスポートする前に、ユーザーがリポジトリ ディレクトリにアクセスする権限を持っていることを確認する必要があります)。
3つまたは4つを機能させる方法を知っている人、または別の解決策を持っている人はいますか?