diff options
Diffstat (limited to '')
-rwxr-xr-x | t/glt | 43 |
1 files changed, 43 insertions, 0 deletions
@@ -0,0 +1,43 @@ +#!/usr/bin/perl +use strict; +use warnings; + +use FindBin; +BEGIN { $ENV{GL_BINDIR} = $FindBin::RealBin; } + +my $cmd = shift or die "need command"; +my $user = shift or die "need user"; +my $rc; + +my %extcmds = ( + help => 1, + info => 1, + desc => 1, + fork => 1, + perms => 1, + writable => 1, +); + +$ENV{G3T_USER} = $user; +if ($extcmds{$cmd}) { + $ENV{SSH_ORIGINAL_COMMAND} = join(" ", $cmd, @ARGV); + exec( "$ENV{GL_BINDIR}/../src/gitolite-shell", $user ); +} elsif ( $cmd eq 'push' ) { + print STDERR "TRACE: glt(", join( ")(", @ARGV ), ")\n"; + $rc = system( "git", $cmd, "--receive-pack=$ENV{GL_BINDIR}/gitolite-receive-pack", @ARGV ); +} else { + print STDERR "TRACE: glt(", join( ")(", @ARGV ), ")\n"; + $rc = system( "git", $cmd, "--upload-pack=$ENV{GL_BINDIR}/gitolite-upload-pack", @ARGV ); +} + +if ( $? == -1 ) { + die "F: failed to execute: $!\n"; +} elsif ( $? & 127 ) { + printf STDERR "E: child died with signal %d\n", ( $? & 127 ); + exit 1; +} else { + printf STDERR "W: child exited with value %d\n", $? >> 8 if $? >> 8; + exit( $? >> 8 ); +} + +exit 0; |