summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2016-10-10 00:54:19 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2016-10-11 00:40:08 +0100
commit7fdea3dc94e1ea2615b304a7833b951425b2357f (patch)
tree367b52da238f996b466439713379e59e90c40baf
parent3d70fbf05b9b0ff766dd2f837e3ed962eef36cf4 (diff)
dgit: HEAD/.dsc mismatch error: Much better message
Closes:#809516. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
-rw-r--r--debian/changelog2
-rwxr-xr-xdgit15
-rwxr-xr-xtests/tests/quilt-gbp2
3 files changed, 12 insertions, 7 deletions
diff --git a/debian/changelog b/debian/changelog
index 9c52188..0dda1c7 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -49,6 +49,8 @@ dgit (1.5~~) unstable; urgency=medium
Closes:#833025.
* Better error message if HEAD contains changes unrepresentable
by `3.0 (quilt)'. Closes:#834618.
+ * Much better error message when HEAD and .dsc do not match.
+ Closes:#809516.
Infrastructure:
* Better error handling in dgit-repos-policy-debian.
diff --git a/dgit b/dgit
index 7b16ff3..469f6bf 100755
--- a/dgit
+++ b/dgit
@@ -3211,17 +3211,20 @@ END
my ($tree,$dir) = mktree_in_ud_from_only_subdir();
check_for_vendor_patches() if madformat($dsc->{format});
changedir '../../../..';
- my $diffopt = $debuglevel>0 ? '--exit-code' : '--quiet';
- my @diffcmd = (@git, qw(diff), $diffopt, $tree, $dgithead);
+ my @diffcmd = (@git, qw(diff --quiet), $tree, $dgithead);
debugcmd "+",@diffcmd;
$!=0; $?=-1;
my $r = system @diffcmd;
if ($r) {
if ($r==256) {
- fail "$dscfn specifies a different tree to your HEAD commit;".
- " perhaps you forgot to build".
- ($diffopt eq '--exit-code' ? "" :
- " (run with -D to see full diff output)");
+ my $diffs = cmdoutput @git, qw(diff --stat), $tree, $dgithead;
+ fail <<END
+HEAD specifies a different tree to $dscfn:
+$diffs
+Perhaps you forgot to build. Or perhaps there is a problem with your
+ source tree (see dgit(7) for some hints). To see a full diff, run
+ git diff $tree HEAD
+END
} else {
failedcmd @diffcmd;
}
diff --git a/tests/tests/quilt-gbp b/tests/tests/quilt-gbp
index 23083a7..fe68222 100755
--- a/tests/tests/quilt-gbp
+++ b/tests/tests/quilt-gbp
@@ -27,7 +27,7 @@ t-dgit --quilt=gbp --clean=git --gbp-pq=no-such-command-gbp build-source
t-dgit --quilt=gbp --clean=git build-source
-t-expect-fail 'specifies a different tree to your HEAD commit' \
+t-expect-fail "HEAD specifies a different tree to $p" \
t-dgit push
test-push () {