chiark / gitweb /
git-debpush: check for target suite change since last upload
[dgit.git] / dgit
diff --git a/dgit b/dgit
index 6febb07aa45ef0e69b0a8283a9b5f0afcbe29565..0d7c62d7589a8aa3b1b7bad19d5eef4554792d45 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -4363,7 +4363,6 @@ sub push_mktags ($$ $$ $) {
     # We make the git tag by hand because (a) that makes it easier
     # to control the "tagger" (b) we can do remote signing
     my $authline = clogp_authline $clogp;
-    my @dtxinfo = @deliberatelies;
 
     my $mktag = sub {
        my ($tw) = @_;
@@ -4379,27 +4378,33 @@ tag $tag
 tagger $authline
 
 END
-       if ($tw->{View} eq 'dgit') {
-           print TO f_ <<ENDT, $package, $cversion, $clogsuite, $csuite
-%s release %s for %s (%s) [dgit]
-ENDT
-               or confess "$!";
-           unshift @dtxinfo, "--quilt=$quilt_mode" if madformat($format);
-           unshift @dtxinfo, do_split_brain() ? "split" : "no-split"
-               # rpush protocol 5 and earlier don't tell us
-               unless $we_are_initiator && $protovsn < 6;
-           my $dtxinfo = join(" ", "",@dtxinfo);
-           print TO <<END or confess "$!";
+
+       my @dtxinfo = @deliberatelies;
+       unshift @dtxinfo, "--quilt=$quilt_mode" if madformat($format);
+       unshift @dtxinfo, do_split_brain() ? "split" : "no-split"
+           # rpush protocol 5 and earlier don't tell us
+           unless $we_are_initiator && $protovsn < 6;
+       my $dtxinfo = join(" ", "",@dtxinfo);
+       my $tag_metadata = <<END;
 [dgit distro=$declaredistro$dtxinfo]
 END
-           foreach my $ref (sort keys %previously) {
-               print TO <<END or confess "$!";
+       foreach my $ref (sort keys %previously) {
+           $tag_metadata .= <<END or confess "$!";
 [dgit previously:$ref=$previously{$ref}]
 END
-           }
+       }
+
+       if ($tw->{View} eq 'dgit') {
+           print TO sprintf <<ENDT, $package, $cversion, $clogsuite, $csuite
+%s release %s for %s (%s) [dgit]
+ENDT
+               or confess "$!";
        } elsif ($tw->{View} eq 'maint') {
-           print TO f_ <<END, $package, $cversion, $clogsuite, $csuite,
+           print TO sprintf <<END, $package, $cversion, $clogsuite, $csuite;
 %s release %s for %s (%s)
+
+END
+           print TO f_ <<END,
 (maintainer view tag generated by dgit --quilt=%s)
 END
                $quilt_mode
@@ -4407,6 +4412,7 @@ END
        } else {
            confess Dumper($tw)."?";
        }
+       print TO "\n", $tag_metadata;
 
        close TO or confess "$!";
 
@@ -6575,12 +6581,15 @@ sub WANTSRC_BUILDER () { 02; } # caller should run dpkg-buildpackage
 sub build_or_push_prep_early () {
     our $build_or_push_prep_early_done //= 0;
     return if $build_or_push_prep_early_done++;
-    badusage f_ "-p is not allowed with dgit %s", $subcommand
-       if defined $package;
     my $clogp = parsechangelog();
     $isuite = getfield $clogp, 'Distribution';
-    $package = getfield $clogp, 'Source';
+    my $gotpackage = getfield $clogp, 'Source';
     $version = getfield $clogp, 'Version';
+    $package //= $gotpackage;
+    if ($package ne $gotpackage) {
+       fail f_ "-p specified package %s, but changelog says %s",
+           $package, $gotpackage;
+    }
     $dscfn = dscfn($version);
 }