52 lines
1.9 KiB
Plaintext
52 lines
1.9 KiB
Plaintext
# --------------------------------------------
|
|
# Per-repo authorization based on gitolite ACL
|
|
# Include this in gitweb.conf
|
|
# See doc/3-faq-tips-etc.mkd for more info
|
|
|
|
# please note that the author does not have personal experience with gitweb
|
|
# and does not use it. Some testing may be required. Patches welcome but
|
|
# please make sure they are tested against a "github" version of gitolite
|
|
# and not an RPM or a DEB, for obvious reasons.
|
|
|
|
# HOME of the gitolite user
|
|
my $gl_home = $ENV{HOME} = "/home/git";
|
|
|
|
# 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/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/);
|
|
};
|