1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-11 11:16:08 +02:00

git-cvsexportcommit: Add -f(orce) and -m(essage prefix) flags, small cleanups.

This commit is contained in:
Martin Langhoff 2006-04-26 12:26:16 +12:00
parent 36932eab77
commit 992793c832
2 changed files with 23 additions and 8 deletions

View File

@ -8,7 +8,7 @@ git-cvsexportcommit - Export a commit to a CVS checkout
SYNOPSIS SYNOPSIS
-------- --------
'git-cvsexportcommmit' [-h] [-v] [-c] [-p] [PARENTCOMMIT] COMMITID 'git-cvsexportcommmit' [-h] [-v] [-c] [-p] [-f] [-m msgprefix] [PARENTCOMMIT] COMMITID
DESCRIPTION DESCRIPTION
@ -39,6 +39,13 @@ OPTIONS
Be pedantic (paranoid) when applying patches. Invokes patch with Be pedantic (paranoid) when applying patches. Invokes patch with
--fuzz=0 --fuzz=0
-f::
Force the merge even if the files are not up to date.
-m::
Prepend the commit message with the provided prefix.
Useful for patch series and the like.
-v:: -v::
Verbose. Verbose.

View File

@ -10,9 +10,9 @@
die "GIT_DIR is not defined or is unreadable"; die "GIT_DIR is not defined or is unreadable";
} }
our ($opt_h, $opt_p, $opt_v, $opt_c ); our ($opt_h, $opt_p, $opt_v, $opt_c, $opt_f, $opt_m );
getopts('hpvc'); getopts('hpvcfm:');
$opt_h && usage(); $opt_h && usage();
@ -77,12 +77,16 @@
$opt_v && print "Applying to CVS commit $commit from parent $parent\n"; $opt_v && print "Applying to CVS commit $commit from parent $parent\n";
# grab the commit message # grab the commit message
`git-cat-file commit $commit | sed -e '1,/^\$/d' > .msg`; open(MSG, ">.msg") or die "Cannot open .msg for writing";
print MSG $opt_m;
close MSG;
`git-cat-file commit $commit | sed -e '1,/^\$/d' >> .msg`;
$? && die "Error extracting the commit message"; $? && die "Error extracting the commit message";
my (@afiles, @dfiles, @mfiles); my (@afiles, @dfiles, @mfiles);
my @files = safe_pipe_capture('git-diff-tree', '-r', $parent, $commit); my @files = safe_pipe_capture('git-diff-tree', '-r', $parent, $commit);
print @files; #print @files;
$? && die "Error in git-diff-tree"; $? && die "Error in git-diff-tree";
foreach my $f (@files) { foreach my $f (@files) {
chomp $f; chomp $f;
@ -109,7 +113,7 @@
if (@status > 1) { warn 'Strange! cvs status returned more than one line?'}; if (@status > 1) { warn 'Strange! cvs status returned more than one line?'};
unless ($status[0] =~ m/Status: Unknown$/) { unless ($status[0] =~ m/Status: Unknown$/) {
$dirty = 1; $dirty = 1;
warn "File $f is already known in your CVS checkout!\n"; warn "File $f is already known in your CVS checkout -- perhaps it has been added by another user. Or this may indicate that it exists on a different branch. If this is the case, use -f to force the merge.\n";
} }
} }
foreach my $f (@mfiles, @dfiles) { foreach my $f (@mfiles, @dfiles) {
@ -122,7 +126,11 @@
} }
} }
if ($dirty) { if ($dirty) {
die "Exiting: your CVS tree is not clean for this merge."; if ($opt_f) { warn "The tree is not clean -- forced merge\n";
$dirty = 0;
} else {
die "Exiting: your CVS tree is not clean for this merge.";
}
} }
### ###
@ -215,7 +223,7 @@
} }
sub usage { sub usage {
print STDERR <<END; print STDERR <<END;
Usage: GIT_DIR=/path/to/.git ${\basename $0} [-h] [-p] [-v] [-c] [ parent ] commit Usage: GIT_DIR=/path/to/.git ${\basename $0} [-h] [-p] [-v] [-c] [-f] [-m msgprefix] [ parent ] commit
END END
exit(1); exit(1);
} }