2012-03-19 6 views
1

私はgitwebとgitoliteをインストールしました。私はgitwebアクセス用のレポを設定することができ、それは "projects.list"ファイルに表示されますが、リポジトリはブラウザのgitwebには表示されません。gitolite/gitwebを一緒に使うには?

私は検索してきましたが、この作業に欠けているものは見つかりませんでした。

マイgitweb.confが

$git_temp = "/tmp"; 

# The directories where your projects are. Must not end with a slash. 
$projectroot = "/srv/git/repositories"; 
$projects_list = "/srv/git/projects.list"; 

私.gitolite.rcは、私がチェックしたとprojects.listファイルを一度gitlite設定への変更につきなど最新情報を入手行く

$PROJECTS_LIST = $ENV{HOME} . "/projects.list"; 

が含まれていますが含まれていますそれはレポにプッシュバックされます。だから私はそれがリストを見てそれに取り組んでいないのは単なるギブスだと思うが、なぜそれが分からないのか分からない。

私はちょうど "404 - プロジェクトが見つかりません"というgitwebページをプロジェクトリストのどこに入れるべきですか?

UPDATE:

私は、私の場合には問題が間違ったApacheの設定によって引き起こされたことがわかりました。私はhttp://[email protected]/testing.gitに続いた。直接

# Make sure we can execute gitweb okay 
<Directory "/srv/http/gitweb"> 
     Options ExecCGI 
     AllowOverride None 
     AddHandler cgi-script .cgi 
     DirectoryIndex gitweb.cgi 
     Order allow,deny 
     Allow from all 
</Directory> 

この実行gitweb.cgi、httpdのユーザーとして、あらゆる環境設定なし:私は私のVirtualHostで次のようでした。私はこのブロックをsuexecラッパーへの明示的な呼び出しで置き換えました:

# Call GitoWeb cgi via suexec wrapper for relevant URLs 
ScriptAliasMatch "^/$" /srv/http/git-suexec/gitweb.cgi.suexec-wrapper 

それで私の問題は解決しました。

+0

正しいhttpd.confを含めるように私の回答を編集しました。私はそれがあなたよりも少し完全であると信じています。 – VonC

答えて

0

OPはコメントで述べているように、あなたは、Apache configにごVirtulaHostは、右のパラメータ/環境変数とgitweb.cgiを呼び出すことを確認する必要があります。ここでは

は、そのサービスのための私のhttpd.confです:
お知らせどのようにしてScriptAliasMatchを避け、どのように設定するのですかGIT_HTTP_BACKEND

# GitWeb on 8443 # or any port you want 
Listen 8443 
<VirtualHost hostname> 
    ServerName hostname 
    ServerAlias short-hostname 
    SSLCertificateFile "/path/to/apache/crt" 
    SSLCertificateKeyFile "/path/to/apache/key" 
    SSLEngine on 
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL 
    SetEnv GIT_HTTP_BACKEND /path/to/git/libexec/git-core/git-http-backend 
    DocumentRoot /path/to/gitweb 
    Alias /gitweb /path/to/gitweb 
    <FilesMatch "\.(cgi|shtml|phtml|php)$"> 
     SSLOptions +StdEnvVars 
    </FilesMatch> 
    <Directory /path/to/gitweb> 
     SSLOptions +StdEnvVars 
     Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch 
     AllowOverride All 
     order allow,deny 
     Allow from all 

     AuthName "LDAP authentication for GitWeb repositories" 
     AuthType Basic 
     AuthBasicProvider myldap companyldap 
     AuthzLDAPAuthoritative On 
     Require valid-user 

     AddHandler cgi-script cgi 
     DirectoryIndex gitweb.cgi 

     RewriteEngine Off 
     RewriteCond %{REQUEST_FILENAME} !-f 
     RewriteCond %{REQUEST_FILENAME} !-d 
     RewriteRule ^[a-zA-Z0-9_\-]+\.git/?(\?.*)?$ /gitweb.cgi%{REQUEST_URI} [L,PT] 
    </Directory> 
</VirtualHost> 

オリジナルの答え:ここで

は私gitweb.conf.plです:

my $gl_home = $ENV{HOME} = "@[email protected]"; 

# the following variables are needed by gitolite; please edit before using 

# this should normally not be anything else 
$ENV{GL_RC} = "$gl_home/.gitolite.rc"; 
# this can have different values depending on how you installed. 

# if you used RPM/DEB or "root" methods it **might** be this: 
$ENV{GL_BINDIR} = "/usr/local/bin"; 
# if you used the "non-root" method it **might** be this: 
$ENV{GL_BINDIR} = "$gl_home/gitolite/bin"; 
# If in doubt take a look at ~/.ssh/authorized_keys; at least one of the lines 
# might contain something like: 
#  command="/home/git/.gitolite/src/gl-auth-command 
# and you should use whatever directory the gl-auth-command is in (in this 
# example /home/git/.gitolite.src) 

# finally the user name 
$ENV{GL_USER} = $cgi->remote_user || "gitweb"; 

# now get gitolite stuff in... 
unshift @INC, $ENV{GL_BINDIR}; 
require gitolite_rc; gitolite_rc -> import; 
require gitolite;  gitolite -> import; 

# set project root etc. absolute paths 
$ENV{GL_REPO_BASE_ABS} = ($REPO_BASE =~ m(^/) ? $REPO_BASE : "$gl_home/$REPO_BASE"); 
$projects_list = $projectroot = $ENV{GL_REPO_BASE_ABS}; 

$export_auth_hook = sub { 
    my $repo = shift; 
    # gitweb passes us the full repo path; so we strip the beginning 
    # and the end, to get the repo name as it is specified in gitolite conf 
    return unless $repo =~ s/^\Q$projectroot\E\/?(.+)\.git$/$1/; 

    # check for (at least) "R" permission 
    my ($perm, $creator) = &repo_rights($repo); 
    return ($perm =~ /R/); 
}; 

はあなたの.gitolite.gitolitercrepositoriesproject.listファイルがあるパスでの@ Hの@を交換してください。私は$ENV{GL_BINDIR}を定義した方法

注:

$ENV{GL_BINDIR} = "$gl_home/gitolite/bin"; 

gitweb_config.perlとを持っていることを確認してください:私の場合、私は、非ルート・インストールをしたので、私は、したがって、2番目の定義をコメントしなかった

をgitoliteを呼び出します gitwebと余分な gitweb.conf.plとのリンクを行いますものです
our $home_link_str = "ITSVC projects"; 
our $site_name = "ITSVC Gitweb"; 

use lib ("."); 
require "gitweb.conf.pl"; 

+0

ありがとうございます。私は今朝私の問題を解決しました。私は私のために働いたもので質問を更新しました。私は様々な記事でgitweb.conf.plへの参照をいくつか見つけましたが、私はこのファイルを持っていないようですが、私はgitweb.confを持っています。私はまだ何かが欠けているかどうかは分かりませんが、私の設定は今のところうまくいくようです。 – starfry

関連する問題