diff options
author | Sitaram Chamarty <sitaram@atc.tcs.com> | 2013-06-28 09:40:22 +0530 |
---|---|---|
committer | Sitaram Chamarty <sitaram@atc.tcs.com> | 2013-06-28 22:12:30 +0530 |
commit | 63865a16eb06218318f5d7c21faa4878db9b6693 (patch) | |
tree | 5a29a2099c92213d6439fcff0d06cc6505c7ef94 | |
parent | 05e4093fb21150a223c1d98d69de1e39fdfa7f3e (diff) |
setup some ENV vars from gitolite.conf options...
makes things much easier in hooks and triggers
-rwxr-xr-x | src/gitolite-shell | 3 | ||||
-rw-r--r-- | src/lib/Gitolite/Conf/Load.pm | 19 | ||||
-rw-r--r-- | src/lib/Gitolite/Rc.pm | 6 |
3 files changed, 28 insertions, 0 deletions
diff --git a/src/gitolite-shell b/src/gitolite-shell index a3ec321..0ee48e3 100755 --- a/src/gitolite-shell +++ b/src/gitolite-shell @@ -103,6 +103,9 @@ sub main { $ENV{GL_REPO} = $repo; my $aa = ( $verb =~ 'upload' ? 'R' : 'W' ); + # set up env vars from options set for this repo + env_options($repo); + # auto-create? if ( repo_missing($repo) and access( $repo, $user, '^C', 'any' ) !~ /DENIED/ ) { require Gitolite::Conf::Store; diff --git a/src/lib/Gitolite/Conf/Load.pm b/src/lib/Gitolite/Conf/Load.pm index c4051e4..295e888 100644 --- a/src/lib/Gitolite/Conf/Load.pm +++ b/src/lib/Gitolite/Conf/Load.pm @@ -8,6 +8,7 @@ package Gitolite::Conf::Load; access git_config + env_options option repo_missing @@ -18,6 +19,7 @@ package Gitolite::Conf::Load; ); use Exporter 'import'; +use Cwd; use Gitolite::Common; use Gitolite::Rc; @@ -184,6 +186,23 @@ sub git_config { return \%ret; } +sub env_options { + return unless -f "$rc{GL_ADMIN_BASE}/conf/gitolite.conf-compiled.pm"; + # prevent catch-22 during initial install + + my $cwd = getcwd(); + + my $repo = shift; + map { delete $ENV{$_} } grep { /^GL_OPTION_/ } keys %ENV; + my $h = git_config( $repo, '^gitolite-options.ENV\.' ); + while (my ($k, $v) = each %$h) { + next unless $k =~ /^gitolite-options.ENV\.(\w+)$/; + $ENV{"GL_OPTION_" . $1} = $v; + } + + chdir($cwd); +} + sub option { my ( $repo, $option ) = @_; $option = "gitolite-options.$option"; diff --git a/src/lib/Gitolite/Rc.pm b/src/lib/Gitolite/Rc.pm index a3f0c59..5e1f21e 100644 --- a/src/lib/Gitolite/Rc.pm +++ b/src/lib/Gitolite/Rc.pm @@ -271,6 +271,12 @@ sub version { sub trigger { my $rc_section = shift; + # if arg-2 (now arg-1, due to the 'shift' above) exists, it is a repo + # name, so setup env from options + require Gitolite::Conf::Load; + Gitolite::Conf::Load->import('env_options'); + env_options($_[0]) if $_[0]; + if ( exists $rc{$rc_section} ) { if ( ref( $rc{$rc_section} ) ne 'ARRAY' ) { _die "'$rc_section' section in rc file is not a perl list"; |