summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2018-06-21 01:00:41 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2018-06-21 01:11:11 +0100
commit1967603885cd0fe76230fdfa9c026238da6c12a9 (patch)
treee54fa0b263aa27386033012b7070ff5569c94fcc
parenta57e3b1aaf62ca5d28b4e65fdaf46340067b5748 (diff)
dgit: Non-noop git fetch is not available with --dry-run, so fail
When fetch or push wants git fetch (other than in a situation where it happes to be a noop) but --dry-run was specified, we would loop with a false coplaint about git fetch. False, because we didn't actually run git fetch so of course it didn't do anything. Instead, fail with an explanation. Closes:#871317. This does not occur, and we do not fail, if git-fetch would be a no-op. We can tell when this is the case, because we use git-ls-remote too. This leads to one suggestion for a workaround for the user, which is to do a not --dry-run fetch first. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
-rw-r--r--debian/changelog4
-rwxr-xr-xdgit5
2 files changed, 9 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog
index 3216e4a..2c30556 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -10,6 +10,10 @@ dgit (5.2~) unstable; urgency=medium
Closes:#883340.
* When quilt fixup fails because of discrepancies, print a
git diff rune which will show them. Closes:#865446.
+ * When fetch or push wants git fetch (other than in a situation where it
+ happes to be a noop) but --dry-run was specified, fail with an
+ explanation, rather than looping with a false coplaint about git
+ fetch. Closes:#871317.
--
diff --git a/dgit b/dgit
index 961d974..3409e18 100755
--- a/dgit
+++ b/dgit
@@ -2757,6 +2757,11 @@ END
my $want = $wantr{$rrefname};
next if $got eq $want;
if (!defined $objgot{$want}) {
+ fail <<END unless act_local();
+--dry-run specified but we actually wanted the results of git fetch,
+so this is not going to work. Try running dgit fetch first,
+or using --damp-run instead of --dry-run.
+END
print STDERR <<END;
warning: git ls-remote suggests we want $lrefname
warning: and it should refer to $want