chiark / gitweb /
dgit-repos-server: tag2upload: Better message from upstream mismatch
[dgit.git] / infra / dgit-repos-server
index 82b2c438a983968d7586e5cfa2929160c79934fd..65fda22d7ed76808337bf68b9385f65bd2a814a4 100755 (executable)
@@ -1228,11 +1228,11 @@ END
 
     reject "missing \"$_\"" foreach keys %need;
 
+    verifytag();
+
     reject "upstream tag and not commitish, or v-v"
        unless defined $upstreamt == defined $upstreamc;
 
-    verifytag();
-
     my @dgit;
     push @dgit, $ENV{DGIT_DRS_DGIT} // 'dgit';
     push @dgit, '-wn';
@@ -1244,7 +1244,6 @@ END
 
     my @fetch = qw(git fetch origin --unshallow);
     if (defined $upstreamt) {
-       runcmd qw(git check-ref-format), "refs/tags/$upstreamt";
        runcmd qw(git check-ref-format), "refs/tags/$upstreamt";
        my $utagref = "refs/tags/$upstreamt";
        push @fetch, "$utagref:$utagref";
@@ -1261,7 +1260,9 @@ END
     }
     # this is just to get the orig, so we don't really care about the ref
     if (defined $upstreamc) {
-       $upstreamc eq git_rev_parse "refs/tags/$upstreamt" or die;
+       my $need_upstreamc = git_rev_parse "refs/tags/$upstreamt";
+       $upstreamc eq $need_upstreamc or reject
+           "upstream-commitish=$upstreamc but tag refers to $need_upstreamc";
        runcmd qw(git deborig), "$upstreamc";
     }