diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 09:55:51 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 09:55:51 +0000 |
commit | 7685305e1f82212323ec32a321b1f5c623751b6c (patch) | |
tree | a1af617672e26aee4c1031a3aa83e8ff08f6a0a5 /t/glt | |
parent | Initial commit. (diff) | |
download | gitolite3-upstream/3.6.12.tar.xz gitolite3-upstream/3.6.12.zip |
Adding upstream version 3.6.12.upstream/3.6.12upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
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; |