threads / discuss / 16837

Bugs in sub argsfromdir of git-cvsserver

Subject: Bugs in sub argsfromdir of git-cvsserver

## tl;dr

2 messages between Dec 22, 2008 and Dec 22, 2008.

replies: 1people: 1as markdown or json

Le· Dec 22, 2008, 20:33 UTC · lore
Hi, all,

I found a bug in git-cvsserver. sub argsfromdir {

    if ( scalar(@{$state->{args}}) == 1 )
    {
        my $arg = $state->{args}[0];
        #$arg .= $state->{prependdir} if ( defined ( 
$state->{prependdir} ) );
        $arg = $state->{prependdir} . $arg if ( defined ( 
$state->{prependdir} ) );
        $log->info("Only one arg specified, checking for directory 
expansion on '$arg'");
...
    }
...
}
It makes not sense of the above remarked out code.

But when I use the code followed remarked out, I have problem to use cvs diff or cvs log in a sub directory of the root (may other commands as well). Eg.:

I have a project called test1 and in test1 there is a test2 subdirectory and a file test2/test3.txt. I have no problem to cvs diff and cvs log in test1 directory. But if I enter test1/test2 to check these commands then they are not working.

I tried to fixed the problem to remarked out the code: #$filename = filecleanup($filename); in req_log and req_diff, then both cvs diff and cvs log work.

In sub filecleanup { ... $filename = $state->{prependdir} . $filename; return $filename; }

inserts $state->{prependdir} into the $filename.
But I don't know if what I did brings incompatibilities.
Can anybody check this issue?
Thanks!
Le Wen
Le· Dec 22, 2008, 21:42 UTC · re: Le · lore

Re: Bugs in sub argsfromdir of git-cvsserver

Le wrote:
Show 57 quoted lines
> Hi, all,
>
> I found a bug in git-cvsserver.
> sub argsfromdir
> {
>
>    if ( scalar(@{$state->{args}}) == 1 )
>    {
>        my $arg = $state->{args}[0];
>        #$arg .= $state->{prependdir} if ( defined ( 
> $state->{prependdir} ) );
>        $arg = $state->{prependdir} . $arg if ( defined ( 
> $state->{prependdir} ) );
>        $log->info("Only one arg specified, checking for directory 
> expansion on '$arg'");
> ...
>    }
> ...
> }
>
> It makes not sense of the above remarked out code.
>
> But when I use the code followed remarked out, I have problem to use 
> cvs diff or cvs log in a sub directory of the root (may other commands 
> as well). Eg.:
>
> I have a project called test1 and in test1 there is a test2 
> subdirectory and a file test2/test3.txt.
> I have no problem to cvs diff and cvs log in test1 directory. But if I 
> enter test1/test2 to check these commands then they are not working.
>
> I tried to fixed the problem to remarked out the code:
> #$filename = filecleanup($filename);
> in req_log and req_diff, then both cvs diff and cvs log work.
>
> In
> sub filecleanup
> {
> ...
> $filename = $state->{prependdir} . $filename;
> return $filename;
> }
>
> inserts $state->{prependdir} into the $filename.
>
> But I don't know if what I did brings incompatibilities.
>
> Can anybody check this issue?
>
> Thanks!
>
> Le Wen
> -- 
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

It seems that req_up and req_status need to be changed as well. I am not which subs need to be changed.

Le Wen

← back to recent threads