chiark / gitweb /
git-debrebase: Provide hints for unprocessable commits
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 19 Aug 2018 23:24:18 +0000 (00:24 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 19 Aug 2018 23:24:19 +0000 (00:24 +0100)
Depending on the apparent branch ffq state.  Closes:#905005.

In particular, if it doesn't look like this branch was ever used with
gdr, suggest that the user is on the wrong branch, or needs to use
convert-from-*.  Closes:#905279.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
debian/changelog
git-debrebase

index 058ce000cacf9c7f458a3a4d28bf0994e36f7a32..3fe4ea8c08454765d7bcb92f73ea6c37c501d39d 100644 (file)
@@ -23,6 +23,9 @@ dgit (6.7~) unstable; urgency=medium
     debrebase-last indicate that we are already in gdr format.
   * git-debrebase: convert-from-*: leave debrebase-last refs to
     hint to everyone that this is now a gdr branch.
+  * git-debrebase: Provide hints for unprocessable commits, depending
+    on the apparent branch ffq state, including possible suggestion
+    to use convert-from-*.  Closes:#905005.  Closes:#905279.
 
  --
 
index 484fcdca01644b0fec740d51e1ddfade437591eb..4bfe0952518214203c5e3ac397b27c53ceb93354 100755 (executable)
@@ -441,7 +441,44 @@ sub record_gdrlast ($$;$) {
 
 sub fail_unprocessable ($) {
     my ($msg) = @_;
-    fail $msg;
+    changedir $maindir;
+    my ($ffqs, $ffqm, $symref, $ffq_prev, $gdrlast) = ffq_prev_branchinfo();
+
+    my $mangled = <<END;
+Branch/history seems mangled - no longer in gdr format.
+See ILLEGAL OPERATIONS in git-debrebase(5).
+END
+    chomp $mangled;
+
+    if (defined $ffqm) {
+       fail <<END;
+$msg
+Is this meant to be a gdr branch?  $ffqm
+END
+    } elsif (git_get_ref $ffq_prev) {
+       fail <<END;
+$msg
+$mangled
+Consider git-debrebase scrap, to throw away your recent work.
+END
+    } elsif (!git_get_ref $gdrlast) {
+       fail <<END;
+$msg
+Branch does not seem to be meant to be a git-debrebase branch?
+Wrong branch, or maybe you needed git-debrebase convert-from-*.
+END
+    } elsif (is_fast_fwd $gdrlast, git_rev_parse 'HEAD') {
+       fail <<END;
+$msg
+$mangled
+END
+    } else {
+       fail <<END;
+$msg
+Branch/history mangled, and diverged since last git-debrebase.
+Maybe you reset to, or rebased from, somewhere inappropriate.
+END
+    }
 };
 
 sub gbp_pq_export ($$$) {