1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-04-27 15:15:09 +02:00

cvsserver: split up long lines in req_{status,diff,log}

Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Matthew Ogilvie 2012-10-13 23:42:20 -06:00 committed by Junio C Hamano
parent 566c69e715
commit 4d804c0e64

View File

@ -1559,10 +1559,12 @@ sub req_status
#$log->debug("status state : " . Dumper($state));
# Grab a handle to the SQLite db and do any necessary updates
my $updater = GITCVS::updater->new($state->{CVSROOT}, $state->{module}, $log);
my $updater;
$updater = GITCVS::updater->new($state->{CVSROOT}, $state->{module}, $log);
$updater->update();
# if no files were specified, we need to work out what files we should be providing status on ...
# if no files were specified, we need to work out what files we should
# be providing status on ...
argsfromdir($updater);
# foreach file specified on the command line ...
@ -1570,14 +1572,19 @@ sub req_status
{
$filename = filecleanup($filename);
next if exists($state->{opt}{l}) && index($filename, '/', length($state->{prependdir})) >= 0;
if ( exists($state->{opt}{l}) &&
index($filename, '/', length($state->{prependdir})) >= 0 )
{
next;
}
my $meta = $updater->getmeta($filename);
my $oldmeta = $meta;
my $wrev = revparse($filename);
# If the working copy is an old revision, lets get that version too for comparison.
# If the working copy is an old revision, lets get that
# version too for comparison.
if ( defined($wrev) and $wrev != $meta->{revision} )
{
$oldmeta = $updater->getmeta($filename, $wrev);
@ -1585,49 +1592,95 @@ sub req_status
# TODO : All possible statuses aren't yet implemented
my $status;
# Files are up to date if the working copy and repo copy have the same revision, and the working copy is unmodified
$status = "Up-to-date" if ( defined ( $wrev ) and defined($meta->{revision}) and $wrev == $meta->{revision}
and
( ( $state->{entries}{$filename}{unchanged} and ( not defined ( $state->{entries}{$filename}{conflict} ) or $state->{entries}{$filename}{conflict} !~ /^\+=/ ) )
or ( defined($state->{entries}{$filename}{modified_hash}) and $state->{entries}{$filename}{modified_hash} eq $meta->{filehash} ) )
);
# Files are up to date if the working copy and repo copy have
# the same revision, and the working copy is unmodified
if ( defined ( $wrev ) and defined($meta->{revision}) and
$wrev == $meta->{revision} and
( ( $state->{entries}{$filename}{unchanged} and
( not defined ( $state->{entries}{$filename}{conflict} ) or
$state->{entries}{$filename}{conflict} !~ /^\+=/ ) ) or
( defined($state->{entries}{$filename}{modified_hash}) and
$state->{entries}{$filename}{modified_hash} eq
$meta->{filehash} ) ) )
{
$status = "Up-to-date";
}
# Need checkout if the working copy has an older revision than the repo copy, and the working copy is unmodified
$status ||= "Needs Checkout" if ( defined ( $wrev ) and defined ( $meta->{revision} ) and $meta->{revision} > $wrev
and
( $state->{entries}{$filename}{unchanged}
or ( defined($state->{entries}{$filename}{modified_hash}) and $state->{entries}{$filename}{modified_hash} eq $oldmeta->{filehash} ) )
);
# Need checkout if the working copy has an older revision than
# the repo copy, and the working copy is unmodified
if ( defined ( $wrev ) and defined ( $meta->{revision} ) and
$meta->{revision} > $wrev and
( $state->{entries}{$filename}{unchanged} or
( defined($state->{entries}{$filename}{modified_hash}) and
$state->{entries}{$filename}{modified_hash} eq
$oldmeta->{filehash} ) ) )
{
$status ||= "Needs Checkout";
}
# Need checkout if it exists in the repo but doesn't have a working copy
$status ||= "Needs Checkout" if ( not defined ( $wrev ) and defined ( $meta->{revision} ) );
# Need checkout if it exists in the repo but doesn't have a working
# copy
if ( not defined ( $wrev ) and defined ( $meta->{revision} ) )
{
$status ||= "Needs Checkout";
}
# Locally modified if working copy and repo copy have the same revision but there are local changes
$status ||= "Locally Modified" if ( defined ( $wrev ) and defined($meta->{revision}) and $wrev == $meta->{revision} and $state->{entries}{$filename}{modified_filename} );
# Locally modified if working copy and repo copy have the
# same revision but there are local changes
if ( defined ( $wrev ) and defined($meta->{revision}) and
$wrev == $meta->{revision} and
$state->{entries}{$filename}{modified_filename} )
{
$status ||= "Locally Modified";
}
# Needs Merge if working copy revision is less than repo copy and there are local changes
$status ||= "Needs Merge" if ( defined ( $wrev ) and defined ( $meta->{revision} ) and $meta->{revision} > $wrev and $state->{entries}{$filename}{modified_filename} );
# Needs Merge if working copy revision is less than repo copy
# and there are local changes
if ( defined ( $wrev ) and defined ( $meta->{revision} ) and
$meta->{revision} > $wrev and
$state->{entries}{$filename}{modified_filename} )
{
$status ||= "Needs Merge";
}
$status ||= "Locally Added" if ( defined ( $state->{entries}{$filename}{revision} ) and not defined ( $meta->{revision} ) );
$status ||= "Locally Removed" if ( defined ( $wrev ) and defined ( $meta->{revision} ) and -$wrev == $meta->{revision} );
$status ||= "Unresolved Conflict" if ( defined ( $state->{entries}{$filename}{conflict} ) and $state->{entries}{$filename}{conflict} =~ /^\+=/ );
$status ||= "File had conflicts on merge" if ( 0 );
if ( defined ( $state->{entries}{$filename}{revision} ) and
not defined ( $meta->{revision} ) )
{
$status ||= "Locally Added";
}
if ( defined ( $wrev ) and defined ( $meta->{revision} ) and
-$wrev == $meta->{revision} )
{
$status ||= "Locally Removed";
}
if ( defined ( $state->{entries}{$filename}{conflict} ) and
$state->{entries}{$filename}{conflict} =~ /^\+=/ )
{
$status ||= "Unresolved Conflict";
}
if ( 0 )
{
$status ||= "File had conflicts on merge";
}
$status ||= "Unknown";
my ($filepart) = filenamesplit($filename);
print "M ===================================================================\n";
print "M =======" . ( "=" x 60 ) . "\n";
print "M File: $filepart\tStatus: $status\n";
if ( defined($state->{entries}{$filename}{revision}) )
{
print "M Working revision:\t" . $state->{entries}{$filename}{revision} . "\n";
print "M Working revision:\t" .
$state->{entries}{$filename}{revision} . "\n";
} else {
print "M Working revision:\tNo entry for $filename\n";
}
if ( defined($meta->{revision}) )
{
print "M Repository revision:\t1." . $meta->{revision} . "\t$state->{CVSROOT}/$state->{module}/$filename,v\n";
print "M Repository revision:\t1." .
$meta->{revision} .
"\t$state->{CVSROOT}/$state->{module}/$filename,v\n";
print "M Sticky Tag:\t\t(none)\n";
print "M Sticky Date:\t\t(none)\n";
print "M Sticky Options:\t\t(none)\n";
@ -1661,13 +1714,17 @@ sub req_diff
$revision1 =~ s/^1\.// if ( defined ( $revision1 ) );
$revision2 =~ s/^1\.// if ( defined ( $revision2 ) );
$log->debug("Diffing revisions " . ( defined($revision1) ? $revision1 : "[NULL]" ) . " and " . ( defined($revision2) ? $revision2 : "[NULL]" ) );
$log->debug("Diffing revisions " .
( defined($revision1) ? $revision1 : "[NULL]" ) .
" and " . ( defined($revision2) ? $revision2 : "[NULL]" ) );
# Grab a handle to the SQLite db and do any necessary updates
my $updater = GITCVS::updater->new($state->{CVSROOT}, $state->{module}, $log);
my $updater;
$updater = GITCVS::updater->new($state->{CVSROOT}, $state->{module}, $log);
$updater->update();
# if no files were specified, we need to work out what files we should be providing status on ...
# if no files were specified, we need to work out what files we should
# be providing status on ...
argsfromdir($updater);
# foreach file specified on the command line ...
@ -1722,7 +1779,8 @@ sub req_diff
$file2 = $state->{entries}{$filename}{modified_filename};
}
# if we have been given -r, and we don't have a $file2 yet, lets get one
# if we have been given -r, and we don't have a $file2 yet, lets
# get one
if ( defined ( $revision1 ) and not defined ( $file2 ) )
{
( undef, $file2 ) = tempfile( DIR => $TEMP_DIR, OPEN => 0 );
@ -1733,21 +1791,37 @@ sub req_diff
# We need to have retrieved something useful
next unless ( defined ( $meta1 ) );
# Files to date if the working copy and repo copy have the same revision, and the working copy is unmodified
next if ( not defined ( $meta2 ) and $wrev == $meta1->{revision}
and
( ( $state->{entries}{$filename}{unchanged} and ( not defined ( $state->{entries}{$filename}{conflict} ) or $state->{entries}{$filename}{conflict} !~ /^\+=/ ) )
or ( defined($state->{entries}{$filename}{modified_hash}) and $state->{entries}{$filename}{modified_hash} eq $meta1->{filehash} ) )
);
# Files to date if the working copy and repo copy have the same
# revision, and the working copy is unmodified
if ( not defined ( $meta2 ) and $wrev == $meta1->{revision} and
( ( $state->{entries}{$filename}{unchanged} and
( not defined ( $state->{entries}{$filename}{conflict} ) or
$state->{entries}{$filename}{conflict} !~ /^\+=/ ) ) or
( defined($state->{entries}{$filename}{modified_hash}) and
$state->{entries}{$filename}{modified_hash} eq
$meta1->{filehash} ) ) )
{
next;
}
# Apparently we only show diffs for locally modified files
next unless ( defined($meta2) or defined ( $state->{entries}{$filename}{modified_filename} ) );
unless ( defined($meta2) or
defined ( $state->{entries}{$filename}{modified_filename} ) )
{
next;
}
print "M Index: $filename\n";
print "M ===================================================================\n";
print "M =======" . ( "=" x 60 ) . "\n";
print "M RCS file: $state->{CVSROOT}/$state->{module}/$filename,v\n";
print "M retrieving revision 1.$meta1->{revision}\n" if ( defined ( $meta1 ) );
print "M retrieving revision 1.$meta2->{revision}\n" if ( defined ( $meta2 ) );
if ( defined ( $meta1 ) )
{
print "M retrieving revision 1.$meta1->{revision}\n"
}
if ( defined ( $meta2 ) )
{
print "M retrieving revision 1.$meta2->{revision}\n"
}
print "M diff ";
foreach my $opt ( keys %{$state->{opt}} )
{
@ -1759,18 +1833,27 @@ sub req_diff
}
} else {
print "-$opt ";
print "$state->{opt}{$opt} " if ( defined ( $state->{opt}{$opt} ) );
if ( defined ( $state->{opt}{$opt} ) )
{
print "$state->{opt}{$opt} "
}
}
}
print "$filename\n";
$log->info("Diffing $filename -r $meta1->{revision} -r " . ( $meta2->{revision} or "workingcopy" ));
$log->info("Diffing $filename -r $meta1->{revision} -r " .
( $meta2->{revision} or "workingcopy" ));
( $fh, $filediff ) = tempfile ( DIR => $TEMP_DIR );
if ( exists $state->{opt}{u} )
{
system("diff -u -L '$filename revision 1.$meta1->{revision}' -L '$filename " . ( defined($meta2->{revision}) ? "revision 1.$meta2->{revision}" : "working copy" ) . "' $file1 $file2 > $filediff");
system("diff -u -L '$filename revision 1.$meta1->{revision}'" .
" -L '$filename " .
( defined($meta2->{revision}) ?
"revision 1.$meta2->{revision}" :
"working copy" ) .
"' $file1 $file2 > $filediff" );
} else {
system("diff $file1 $file2 > $filediff");
}
@ -1795,7 +1878,8 @@ sub req_log
#$log->debug("log state : " . Dumper($state));
my ( $minrev, $maxrev );
if ( defined ( $state->{opt}{r} ) and $state->{opt}{r} =~ /([\d.]+)?(::?)([\d.]+)?/ )
if ( defined ( $state->{opt}{r} ) and
$state->{opt}{r} =~ /([\d.]+)?(::?)([\d.]+)?/ )
{
my $control = $2;
$minrev = $1;
@ -1806,10 +1890,12 @@ sub req_log
}
# Grab a handle to the SQLite db and do any necessary updates
my $updater = GITCVS::updater->new($state->{CVSROOT}, $state->{module}, $log);
my $updater;
$updater = GITCVS::updater->new($state->{CVSROOT}, $state->{module}, $log);
$updater->update();
# if no files were specified, we need to work out what files we should be providing status on ...
# if no files were specified, we need to work out what files we
# should be providing status on ...
argsfromdir($updater);
# foreach file specified on the command line ...
@ -1825,7 +1911,8 @@ sub req_log
if ( defined ( $minrev ) )
{
$log->debug("Removing revisions less than $minrev");
while ( scalar(@$revisions) > 0 and $revisions->[-1]{revision} < $minrev )
while ( scalar(@$revisions) > 0 and
$revisions->[-1]{revision} < $minrev )
{
pop @$revisions;
}
@ -1833,7 +1920,8 @@ sub req_log
if ( defined ( $maxrev ) )
{
$log->debug("Removing revisions greater than $maxrev");
while ( scalar(@$revisions) > 0 and $revisions->[0]{revision} > $maxrev )
while ( scalar(@$revisions) > 0 and
$revisions->[0]{revision} > $maxrev )
{
shift @$revisions;
}
@ -1850,7 +1938,8 @@ sub req_log
print "M access list:\n";
print "M symbolic names:\n";
print "M keyword substitution: kv\n";
print "M total revisions: $totalrevisions;\tselected revisions: " . scalar(@$revisions) . "\n";
print "M total revisions: $totalrevisions;\tselected revisions: " .
scalar(@$revisions) . "\n";
print "M description:\n";
foreach my $revision ( @$revisions )
@ -1858,14 +1947,23 @@ sub req_log
print "M ----------------------------\n";
print "M revision 1.$revision->{revision}\n";
# reformat the date for log output
$revision->{modified} = sprintf('%04d/%02d/%02d %s', $3, $DATE_LIST->{$2}, $1, $4 ) if ( $revision->{modified} =~ /(\d+)\s+(\w+)\s+(\d+)\s+(\S+)/ and defined($DATE_LIST->{$2}) );
if ( $revision->{modified} =~ /(\d+)\s+(\w+)\s+(\d+)\s+(\S+)/ and
defined($DATE_LIST->{$2}) )
{
$revision->{modified} = sprintf('%04d/%02d/%02d %s',
$3, $DATE_LIST->{$2}, $1, $4 );
}
$revision->{author} = cvs_author($revision->{author});
print "M date: $revision->{modified}; author: $revision->{author}; state: " . ( $revision->{filehash} eq "deleted" ? "dead" : "Exp" ) . "; lines: +2 -3\n";
my $commitmessage = $updater->commitmessage($revision->{commithash});
print "M date: $revision->{modified};" .
" author: $revision->{author}; state: " .
( $revision->{filehash} eq "deleted" ? "dead" : "Exp" ) .
"; lines: +2 -3\n";
my $commitmessage;
$commitmessage = $updater->commitmessage($revision->{commithash});
$commitmessage =~ s/^/M /mg;
print $commitmessage . "\n";
}
print "M =============================================================================\n";
print "M =======" . ( "=" x 70 ) . "\n";
}
print "ok\n";