Skip to content

Commit

Permalink
cvsserver: Eclipse compat -- now "compare with latest from HEAD" works
Browse files Browse the repository at this point in the history
The Eclipse client uses cvs update when that menu option is triggered.
And doesn't like the standard cvs update response. Give it *exactly* what
it wants.

And hope the other clients don't lose the plot too badly.

Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Martin Langhoff authored and Junio C Hamano committed Mar 2, 2006
1 parent c8c4f22 commit ec58db1
Showing 1 changed file with 24 additions and 3 deletions.
27 changes: 24 additions & 3 deletions git-cvsserver.perl
Original file line number Diff line number Diff line change
Expand Up @@ -714,8 +714,27 @@ sub req_update

#$log->debug("Target revision is $meta->{revision}, current working revision is $wrev");

# Files are up to date if the working copy and repo copy have the same revision, and the working copy is unmodified _and_ the user hasn't specified -C
next if ( defined ( $wrev ) and defined($meta->{revision}) and $wrev == $meta->{revision} and $state->{entries}{$filename}{unchanged} and not exists ( $state->{opt}{C} ) );
# Files are up to date if the working copy and repo copy have the same revision,
# and the working copy is unmodified _and_ the user hasn't specified -C
next if ( defined ( $wrev )
and defined($meta->{revision})
and $wrev == $meta->{revision}
and $state->{entries}{$filename}{unchanged}
and not exists ( $state->{opt}{C} ) );

# If the working copy and repo copy have the same revision,
# but the working copy is modified, tell the client it's modified
if ( defined ( $wrev )
and defined($meta->{revision})
and $wrev == $meta->{revision}
and not exists ( $state->{opt}{C} ) )
{
$log->info("Tell the client the file is modified");
print "MT text U\n";
print "MT fname $filename\n";
print "MT newline\n";
next;
}

if ( $meta->{filehash} eq "deleted" )
{
Expand All @@ -727,7 +746,8 @@ sub req_update
print "Removed $dirpart\n";
print "$filepart\n";
}
elsif ( not defined ( $state->{entries}{$filename}{modified_hash} ) or $state->{entries}{$filename}{modified_hash} eq $oldmeta->{filehash} )
elsif ( not defined ( $state->{entries}{$filename}{modified_hash} )
or $state->{entries}{$filename}{modified_hash} eq $oldmeta->{filehash} )
{
$log->info("Updating '$filename'");
# normal update, just send the new revision (either U=Update, or A=Add, or R=Remove)
Expand Down Expand Up @@ -763,6 +783,7 @@ sub req_update
# transmit file
transmitfile($meta->{filehash});
} else {
$log->info("Updating '$filename'");
my ( $filepart, $dirpart ) = filenamesplit($meta->{name});

my $dir = tempdir( DIR => $TEMP_DIR, CLEANUP => 1 ) . "/";
Expand Down

0 comments on commit ec58db1

Please sign in to comment.