X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=git-cvsserver.perl;h=5ccca4f99f31b9fa370baaf7e85795ed2bf49f13;hb=7122f82f56425d942bc5e892ed5e6b3bbd0a6724;hp=f3149bbc413c3a1eaa0018ce8e7b519b0ca462be;hpb=7d90095abe322f72820f334839afb75c23e009ff;p=git.git diff --git a/git-cvsserver.perl b/git-cvsserver.perl index f3149bbc..5ccca4f9 100755 --- a/git-cvsserver.perl +++ b/git-cvsserver.perl @@ -291,8 +291,7 @@ sub req_Directory $log->debug("Prepending '$state->{prependdir}' to state|directory"); $state->{directory} = $state->{prependdir} . $state->{directory} } - - $log->debug("req_Directory : localdir=$data repository=$repository directory=$state->{directory} module=$state->{module}"); + $log->debug("req_Directory : localdir=$data repository=$repository path=$state->{path} directory=$state->{directory} module=$state->{module}"); } # Entry entry-line \n @@ -1705,17 +1704,34 @@ sub argsfromdir $state->{args} = [] if ( scalar(@{$state->{args}}) == 1 and $state->{args}[0] eq "." ); - return if ( scalar ( @{$state->{args}} ) > 0 ); + return if ( scalar ( @{$state->{args}} ) > 1 ); - $log->info("No args specified, populating file list automatically"); + if ( scalar(@{$state->{args}}) == 1 ) + { + my $arg = $state->{args}[0]; + $arg .= $state->{prependdir} if ( defined ( $state->{prependdir} ) ); - $state->{args} = []; + $log->info("Only one arg specified, checking for directory expansion on '$arg'"); - foreach my $file ( @{$updater->gethead} ) - { - next if ( $file->{filehash} eq "deleted" and not defined ( $state->{entries}{$file->{name}} ) ); - next unless ( $file->{name} =~ s/^$state->{directory}// ); - push @{$state->{args}}, $file->{name}; + foreach my $file ( @{$updater->gethead} ) + { + next if ( $file->{filehash} eq "deleted" and not defined ( $state->{entries}{$file->{name}} ) ); + next unless ( $file->{name} =~ /^$arg\// or $file->{name} eq $arg ); + push @{$state->{args}}, $file->{name}; + } + + shift @{$state->{args}} if ( scalar(@{$state->{args}}) > 1 ); + } else { + $log->info("Only one arg specified, populating file list automatically"); + + $state->{args} = []; + + foreach my $file ( @{$updater->gethead} ) + { + next if ( $file->{filehash} eq "deleted" and not defined ( $state->{entries}{$file->{name}} ) ); + next unless ( $file->{name} =~ s/^$state->{prependdir}// ); + push @{$state->{args}}, $file->{name}; + } } } @@ -1816,7 +1832,7 @@ sub filecleanup } $filename =~ s/^\.\///g; - $filename = $state->{directory} . $filename; + $filename = $state->{prependdir} . $filename; return $filename; }