A bare dgit dsc import is not a legal gdr branch, because the main
merge contains debian/patches/. So it cannot be processed without
conversion.
Previously an attempt to launder such a branch would crash with a
stack trace, although keycommits would falsely claim it was OK
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Rename --dgit-view-save to --save-dgit-view, leaving an alias.
* dgit: Provide print-unapplied-treeish subcommand.
* dgit: Improve error message for unknown suite, to suggest -d.
* dgit: Rename --dgit-view-save to --save-dgit-view, leaving an alias.
* dgit: Provide print-unapplied-treeish subcommand.
* dgit: Improve error message for unknown suite, to suggest -d.
+ * git-debrebase: Properly reject bare dgit dsc imports
my ($anchor, $breakwater);
my $clogonly;
my $cl;
my ($anchor, $breakwater);
my $clogonly;
my $cl;
$fatal //= sub { fail $_[1]; };
my $x = sub {
my ($cb, $tagsfx, $mainwhy, $xwhy) = @_;
$fatal //= sub { fail $_[1]; };
my $x = sub {
my ($cb, $tagsfx, $mainwhy, $xwhy) = @_;
$breakwater = undef;
} elsif ($ty eq 'Pseudomerge' or
$ty eq 'AddPatches') {
$breakwater = undef;
} elsif ($ty eq 'Pseudomerge' or
$ty eq 'AddPatches') {
$x->($furniture, (lc $ty),
"found interchange bureaucracy commit ($ty)"," ($head)");
} elsif ($ty eq 'DgitImportUnpatched') {
$x->($furniture, (lc $ty),
"found interchange bureaucracy commit ($ty)"," ($head)");
} elsif ($ty eq 'DgitImportUnpatched') {
- $x->($trouble, 'dgitimport',
- "found dgit dsc import ($head)");
- return (undef,undef);
+ if ($found_pm) {
+ $x->($trouble, 'dgitimport',
+ "found dgit dsc import"," ($head)");
+ return (undef,undef);
+ } else {
+ $x->($fatal, 'unprocessable',
+ "found bare dgit dsc import with no prior history",
+ " ($head)");
+ return (undef,undef);
+ }
} else {
$x->($fatal, 'unprocessable',
"found unprocessable commit, cannot cope: $cl->{Why}",
} else {
$x->($fatal, 'unprocessable',
"found unprocessable commit, cannot cope: $cl->{Why}",
next;
} else {
# Everything is from this import. This kind of import
next;
} else {
# Everything is from this import. This kind of import
- # is already in valid breakwater format, with the
- # patches as commits.
- printf $report " NoPM" if $report;
- # last thing we processed will have been the first patch,
- # if there is one; which is fine, so no need to rewrite
- # on account of this import
- $build_start->("ImportOrigin", $cur);
+ # is already nearly in valid breakwater format, with the
+ # patches as commits. Unfortunately it contains
+ # debian/patches/.
+ printdebug "*** WALK BOMB bare dgit import\n";
+ $cl->{Why} = "bare dgit dsc import";
+ return $bomb->();