Skip to content

Commit

Permalink
cvsserver: Allow to "add" a removed file
Browse files Browse the repository at this point in the history
CVS allows you to add a removed file (where the
removal is not yet committed) which will
cause the server to send the latest revision of the
file and to delete the "removed" status.

Copy this behaviour.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Frank Lichtenheld authored and Junio C Hamano committed Apr 12, 2007
1 parent febe7dc commit 4db0c8d
Showing 1 changed file with 40 additions and 0 deletions.
40 changes: 40 additions & 0 deletions git-cvsserver.perl
Original file line number Diff line number Diff line change
Expand Up @@ -360,12 +360,52 @@ sub req_add

argsplit("add");

my $updater = GITCVS::updater->new($state->{CVSROOT}, $state->{module}, $log);
$updater->update();

argsfromdir($updater);

my $addcount = 0;

foreach my $filename ( @{$state->{args}} )
{
$filename = filecleanup($filename);

my $meta = $updater->getmeta($filename);
my $wrev = revparse($filename);

if ($wrev && $meta && ($wrev < 0))
{
# previously removed file, add back
$log->info("added file $filename was previously removed, send 1.$meta->{revision}");

print "MT +updated\n";
print "MT text U \n";
print "MT fname $filename\n";
print "MT newline\n";
print "MT -updated\n";

unless ( $state->{globaloptions}{-n} )
{
my ( $filepart, $dirpart ) = filenamesplit($filename,1);

print "Created $dirpart\n";
print $state->{CVSROOT} . "/$state->{module}/$filename\n";

# this is an "entries" line
my $kopts = kopts_from_path($filepart);
$log->debug("/$filepart/1.$meta->{revision}//$kopts/");
print "/$filepart/1.$meta->{revision}//$kopts/\n";
# permissions
$log->debug("SEND : u=$meta->{mode},g=$meta->{mode},o=$meta->{mode}");
print "u=$meta->{mode},g=$meta->{mode},o=$meta->{mode}\n";
# transmit file
transmitfile($meta->{filehash});
}

next;
}

unless ( defined ( $state->{entries}{$filename}{modified_filename} ) )
{
print "E cvs add: nothing known about `$filename'\n";
Expand Down

0 comments on commit 4db0c8d

Please sign in to comment.