diff --git a/src/gitolite.pm b/src/gitolite.pm index 0a36bff..be59488 100644 --- a/src/gitolite.pm +++ b/src/gitolite.pm @@ -182,17 +182,17 @@ sub new_repo # "who created this repo", "am I on the R list", and "am I on the RW list"? sub wild_repo_rights { - my ($repo_base_abs, $repo, $user) = @_; + my ($repo, $user) = @_; # creator my $c = ''; - if ( -f "$repo_base_abs/$repo.git/gl-creater") { - my $fh = wrap_open("<", "$repo_base_abs/$repo.git/gl-creater"); + if ( -f "$ENV{GL_REPO_BASE_ABS}/$repo.git/gl-creater") { + my $fh = wrap_open("<", "$ENV{GL_REPO_BASE_ABS}/$repo.git/gl-creater"); chomp($c = <$fh>); } # $user's R and W rights my ($r, $w); $r = ''; $w = ''; - if ($user and -f "$repo_base_abs/$repo.git/gl-perms") { - my $fh = wrap_open("<", "$repo_base_abs/$repo.git/gl-perms"); + if ($user and -f "$ENV{GL_REPO_BASE_ABS}/$repo.git/gl-perms") { + my $fh = wrap_open("<", "$ENV{GL_REPO_BASE_ABS}/$repo.git/gl-perms"); my $perms = join ("", <$fh>); if ($perms) { $r = $user if $perms =~ /^\s*R(?=\s).*\s(\@all|$user)(\s|$)/m; @@ -209,10 +209,10 @@ sub wild_repo_rights sub get_set_perms { - my($repo_base_abs, $repo, $verb, $user) = @_; - my ($creator, $dummy, $dummy2) = &wild_repo_rights($repo_base_abs, $repo, ""); + my($repo, $verb, $user) = @_; + my ($creator, $dummy, $dummy2) = &wild_repo_rights($repo, ""); die "$repo doesnt exist or is not yours\n" unless $user eq $creator; - wrap_chdir("$repo_base_abs"); + wrap_chdir("$ENV{GL_REPO_BASE_ABS}"); wrap_chdir("$repo.git"); if ($verb eq 'getperms') { system("cat", "gl-perms") if -f "gl-perms"; @@ -229,10 +229,10 @@ sub get_set_perms sub get_set_desc { - my($repo_base_abs, $repo, $verb, $user) = @_; - my ($creator, $dummy, $dummy2) = &wild_repo_rights($repo_base_abs, $repo, ""); + my($repo, $verb, $user) = @_; + my ($creator, $dummy, $dummy2) = &wild_repo_rights($repo, ""); die "$repo doesnt exist or is not yours\n" unless $user eq $creator; - wrap_chdir("$repo_base_abs"); + wrap_chdir("$ENV{GL_REPO_BASE_ABS}"); wrap_chdir("$repo.git"); if ($verb eq 'getdesc') { system("cat", "description") if -f "description"; @@ -416,7 +416,7 @@ sub report_basic sub expand_wild { - my($GL_ADMINDIR, $GL_CONF_COMPILED, $repo_base_abs, $repo, $user) = @_; + my($GL_ADMINDIR, $GL_CONF_COMPILED, $repo, $user) = @_; &report_version($GL_ADMINDIR, $user); print "\ryou have access to the following repos on the server:\r\n"; @@ -427,7 +427,7 @@ sub expand_wild # display matching repos (from *all* the repos in the system) that $user # has at least "R" access to - chdir("$repo_base_abs") or die "chdir $repo_base_abs failed: $!\n"; + chdir("$ENV{GL_REPO_BASE_ABS}") or die "chdir $ENV{GL_REPO_BASE_ABS} failed: $!\n"; my $count = 0; for my $actual_repo (`find . -type d -name "*.git"|sort`) { chomp ($actual_repo); @@ -477,7 +477,7 @@ sub expand_wild if ($exists) { # these will be empty if it's not a wildcard repo anyway my ($read, $write); - ($creator, $read, $write) = &wild_repo_rights($ENV{GL_REPO_BASE_ABS}, $repo, $ENV{GL_USER}); + ($creator, $read, $write) = &wild_repo_rights($repo, $ENV{GL_USER}); # get access list with these substitutions $wild = &parse_acl($GL_CONF_COMPILED, $repo, $creator || "NOBODY", $read || "NOBODY", $write || "NOBODY"); } else { diff --git a/src/gl-auth-command b/src/gl-auth-command index 623ab91..aa4c5eb 100755 --- a/src/gl-auth-command +++ b/src/gl-auth-command @@ -53,7 +53,7 @@ $ENV{GL_WILDREPOS_DEFPERMS} = $GL_WILDREPOS_DEFPERMS if $GL_WILDREPOS_DEFPERMS; # set the umask before creating any files umask($REPO_UMASK); -my $repo_base_abs = $ENV{GL_REPO_BASE_ABS} = ( $REPO_BASE =~ m(^/) ? $REPO_BASE : "$ENV{HOME}/$REPO_BASE" ); +$ENV{GL_REPO_BASE_ABS} = ( $REPO_BASE =~ m(^/) ? $REPO_BASE : "$ENV{HOME}/$REPO_BASE" ); # ---------------------------------------------------------------------------- # start... @@ -153,16 +153,16 @@ if ($ENV{SSH_ORIGINAL_COMMAND} =~ $CUSTOM_COMMANDS) { $verb eq 'expand' ? $repo = '^' : die "$verb needs an argument\n" unless $repo; if ($repo =~ $REPONAME_PATT and $verb =~ /getperms|setperms/) { # with an actual reponame, you can "getperms" or "setperms" - get_set_perms($repo_base_abs, $repo, $verb, $user); + get_set_perms($repo, $verb, $user); } elsif ($repo =~ $REPONAME_PATT and $verb =~ /(get|set)desc/) { # with an actual reponame, you can "getdesc" or "setdesc" - get_set_desc($repo_base_abs, $repo, $verb, $user); + get_set_desc($repo, $verb, $user); } elsif ($verb eq 'expand') { # with a wildcard, you can "expand" it to see what repos actually match die "$repo has invalid characters" unless "x$repo" =~ $REPOPATT_PATT; - expand_wild($GL_ADMINDIR, $GL_CONF_COMPILED, $repo_base_abs, $repo, $user); + expand_wild($GL_ADMINDIR, $GL_CONF_COMPILED, $repo, $user); } else { die "$cmd doesn't make sense to me\n"; } @@ -205,7 +205,7 @@ $ENV{GL_REPO}=$repo; my ($perm, $creator, $wild) = &repo_rights($repo); if ($perm =~ /C/) { # it was missing, and you have create perms - wrap_chdir("$repo_base_abs"); + wrap_chdir("$ENV{GL_REPO_BASE_ABS}"); new_repo($repo, "$GL_ADMINDIR/hooks/common", $user); &setup_repo_configs(\%repo_config, $repo, 1); wrap_chdir($ENV{HOME}); diff --git a/src/gl-compile-conf b/src/gl-compile-conf index eedff31..25b4a67 100755 --- a/src/gl-compile-conf +++ b/src/gl-compile-conf @@ -433,10 +433,10 @@ die "\n\t\t***** AAARGH! *****\n" . # repo-base needs to be an absolute path for this loop to work right # so if it was not already absolute, prefix $HOME. -my $repo_base_abs = ( $REPO_BASE =~ m(^/) ? $REPO_BASE : "$ENV{HOME}/$REPO_BASE" ); +$ENV{GL_REPO_BASE_ABS} = ( $REPO_BASE =~ m(^/) ? $REPO_BASE : "$ENV{HOME}/$REPO_BASE" ); unless ($GL_NO_CREATE_REPOS) { - wrap_chdir("$repo_base_abs"); + wrap_chdir("$ENV{GL_REPO_BASE_ABS}"); # autocreate repos. Start with the ones that are normal repos in %repos my @repos = grep { $_ =~ $REPONAME_PATT and not /^@/ } sort keys %repos; @@ -453,7 +453,7 @@ unless ($GL_NO_CREATE_REPOS) { print STDERR "creating $repo...\n"; new_repo($repo, "$GL_ADMINDIR/hooks/common"); # new_repo would have chdir'd us away; come back - wrap_chdir("$repo_base_abs"); + wrap_chdir("$ENV{GL_REPO_BASE_ABS}"); } # when repos are copied over from elsewhere, one had to run easy install @@ -483,7 +483,7 @@ for my $repo (keys %repo_config) { # wild if (%repo_config and $GL_WILDREPOS and $GL_GITCONFIG_WILD) { - wrap_chdir("$repo_base_abs"); + wrap_chdir("$ENV{GL_REPO_BASE_ABS}"); for my $repo (`find . -type d -name "*.git"`) { chomp ($repo); next unless -f "$ENV{GL_REPO_BASE_ABS}/$repo/gl-creater"; # all/only wild repos have this file @@ -503,7 +503,7 @@ if (%repo_config and $GL_WILDREPOS and $GL_GITCONFIG_WILD) { # :-) These are now "pseduo users" -- giving them "R" access to a repo is all # you have to do -wrap_chdir("$repo_base_abs"); +wrap_chdir("$ENV{GL_REPO_BASE_ABS}"); unless ($GL_NO_DAEMON_NO_GITWEB) { # daemons first... diff --git a/src/gl-install b/src/gl-install index 9454ad9..ad51af3 100755 --- a/src/gl-install +++ b/src/gl-install @@ -50,8 +50,8 @@ die "parse $ENV{GL_RC} failed: " . ($! or $@) unless do $ENV{GL_RC}; $ENV{PATH} .= ":$GIT_PATH" if $GIT_PATH; # mkdir $REPO_BASE, $GL_ADMINDIR if they don't already exist -my $repo_base_abs = ( $REPO_BASE =~ m(^/) ? $REPO_BASE : "$ENV{HOME}/$REPO_BASE" ); -wrap_mkdir($repo_base_abs); +$ENV{GL_REPO_BASE_ABS} = ( $REPO_BASE =~ m(^/) ? $REPO_BASE : "$ENV{HOME}/$REPO_BASE" ); +wrap_mkdir($ENV{GL_REPO_BASE_ABS}); wrap_mkdir($GL_ADMINDIR); # mkdir $GL_ADMINDIR's subdirs for my $dir qw(conf doc keydir logs src hooks hooks/common hooks/gitolite-admin) { @@ -80,7 +80,7 @@ EOF } # finally, hooks must be propagated to all the repos in case they changed -chdir("$repo_base_abs") or die "chdir $repo_base_abs failed: $!\n"; +chdir("$ENV{GL_REPO_BASE_ABS}") or die "chdir $ENV{GL_REPO_BASE_ABS} failed: $!\n"; for my $repo (`find . -type d -name "*.git"`) { chomp ($repo); # propagate our own, plus any local admin-defined, hooks