cvsimport: Add -S <skipfileregex> support and -v announces files retrieved
A couple of things that seem to help importing broken CVS repos... -S '<slash-delimited-regex>' skips files with a matching path -v prints file name and version before fetching from cvs Signed-off-by: Martin Langhoff <martin@catalyst.net.nz> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
36b5b3c659
commit
5179c8a54f
@ -29,7 +29,7 @@ use IPC::Open2;
|
|||||||
$SIG{'PIPE'}="IGNORE";
|
$SIG{'PIPE'}="IGNORE";
|
||||||
$ENV{'TZ'}="UTC";
|
$ENV{'TZ'}="UTC";
|
||||||
|
|
||||||
our($opt_h,$opt_o,$opt_v,$opt_k,$opt_u,$opt_d,$opt_p,$opt_C,$opt_z,$opt_i,$opt_P, $opt_s,$opt_m,$opt_M,$opt_A);
|
our($opt_h,$opt_o,$opt_v,$opt_k,$opt_u,$opt_d,$opt_p,$opt_C,$opt_z,$opt_i,$opt_P, $opt_s,$opt_m,$opt_M,$opt_A,$opt_S);
|
||||||
my (%conv_author_name, %conv_author_email);
|
my (%conv_author_name, %conv_author_email);
|
||||||
|
|
||||||
sub usage() {
|
sub usage() {
|
||||||
@ -37,7 +37,7 @@ sub usage() {
|
|||||||
Usage: ${\basename $0} # fetch/update GIT from CVS
|
Usage: ${\basename $0} # fetch/update GIT from CVS
|
||||||
[-o branch-for-HEAD] [-h] [-v] [-d CVSROOT] [-A author-conv-file]
|
[-o branch-for-HEAD] [-h] [-v] [-d CVSROOT] [-A author-conv-file]
|
||||||
[-p opts-for-cvsps] [-C GIT_repository] [-z fuzz] [-i] [-k] [-u]
|
[-p opts-for-cvsps] [-C GIT_repository] [-z fuzz] [-i] [-k] [-u]
|
||||||
[-s subst] [-m] [-M regex] [CVS_module]
|
[-s subst] [-m] [-M regex] [-S regex] [CVS_module]
|
||||||
END
|
END
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
@ -85,7 +85,7 @@ sub write_author_info($) {
|
|||||||
close ($f);
|
close ($f);
|
||||||
}
|
}
|
||||||
|
|
||||||
getopts("hivmkuo:d:p:C:z:s:M:P:A:") or usage();
|
getopts("hivmkuo:d:p:C:z:s:M:P:A:S:") or usage();
|
||||||
usage if $opt_h;
|
usage if $opt_h;
|
||||||
|
|
||||||
@ARGV <= 1 or usage();
|
@ARGV <= 1 or usage();
|
||||||
@ -579,7 +579,7 @@ unless($pid) {
|
|||||||
my $state = 0;
|
my $state = 0;
|
||||||
|
|
||||||
my($patchset,$date,$author_name,$author_email,$branch,$ancestor,$tag,$logmsg);
|
my($patchset,$date,$author_name,$author_email,$branch,$ancestor,$tag,$logmsg);
|
||||||
my(@old,@new);
|
my(@old,@new,@skipped);
|
||||||
my $commit = sub {
|
my $commit = sub {
|
||||||
my $pid;
|
my $pid;
|
||||||
while(@old) {
|
while(@old) {
|
||||||
@ -675,6 +675,11 @@ my $commit = sub {
|
|||||||
substr($logmsg,32767) = "" if length($logmsg) > 32767;
|
substr($logmsg,32767) = "" if length($logmsg) > 32767;
|
||||||
$logmsg =~ s/[\s\n]+\z//;
|
$logmsg =~ s/[\s\n]+\z//;
|
||||||
|
|
||||||
|
if (@skipped) {
|
||||||
|
$logmsg .= "\n\n\nSKIPPED:\n\t";
|
||||||
|
$logmsg .= join("\n\t", @skipped) . "\n";
|
||||||
|
}
|
||||||
|
|
||||||
print $pw "$logmsg\n"
|
print $pw "$logmsg\n"
|
||||||
or die "Error writing to git-commit-tree: $!\n";
|
or die "Error writing to git-commit-tree: $!\n";
|
||||||
$pw->close();
|
$pw->close();
|
||||||
@ -832,6 +837,12 @@ while(<CVS>) {
|
|||||||
my $fn = $1;
|
my $fn = $1;
|
||||||
my $rev = $3;
|
my $rev = $3;
|
||||||
$fn =~ s#^/+##;
|
$fn =~ s#^/+##;
|
||||||
|
if ($opt_S && $fn =~ m/$opt_S/) {
|
||||||
|
print "SKIPPING $fn v $rev\n";
|
||||||
|
push(@skipped, $fn);
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
print "Fetching $fn v $rev\n" if $opt_v;
|
||||||
my ($tmpname, $size) = $cvs->file($fn,$rev);
|
my ($tmpname, $size) = $cvs->file($fn,$rev);
|
||||||
if($size == -1) {
|
if($size == -1) {
|
||||||
push(@old,$fn);
|
push(@old,$fn);
|
||||||
|
Loading…
Reference in New Issue
Block a user