chiark / gitweb /
git-debrebase: record_ffq_prev_deferred: Move get_head();
[dgit.git] / git-debrebase
index 292471de90c33fc2e359a717d5a5ab5907eb56dd..ddb7840cf997236d4d604c6468f84923209a2e53 100755 (executable)
@@ -270,7 +270,7 @@ sub snags_maybe_bail () {
                $us, $snags_tripped;
        } else {
            fail sprintf
-  "%s: snags: %d blockers (you could -f<tag>, or --force)",
+  "%s: snags: %d blocker(s) (you could -f<tag>, or --force)",
                $us, $snags_tripped;
        }
     }
@@ -992,12 +992,12 @@ sub record_ffq_prev_deferred () {
     # if "deferred", will have added something about that to
     #   @deferred_update_messages, and also maybe printed (already)
     #   some messages about ff checks
+    my $currentval = get_head();
+
     my ($status, $message, $current, $ffq_prev, $gdrlast)
        = ffq_prev_branchinfo();
     return ($status, $message) unless $status eq 'branch';
 
-    my $currentval = get_head();
-
     my $exists = git_get_ref $ffq_prev;
     return ('exists',"$ffq_prev already exists") if $exists;
 
@@ -1140,7 +1140,11 @@ sub cmd_new_upstream () {
     badusage "need NEW-VERSION [UPS-COMMITTISH]" unless @ARGV >= 1;
 
     # parse args - low commitment
-    my $new_version = (new Dpkg::Version scalar(shift @ARGV), check => 1);
+    my $spec_version = shift @ARGV;
+    my $new_version = (new Dpkg::Version $spec_version, check => 1);
+    if ($new_version->is_native()) {
+       $new_version = (new Dpkg::Version "$spec_version-1", check => 1);
+    }
     my $new_upstream_version = $new_version->version();
 
     my $new_upstream = shift @ARGV;
@@ -1389,15 +1393,20 @@ sub cmd_status () {
     # todo: gdr status should print upstream component(s) info
     # todo: gdr should leave/maintain some refs with this kind of info ?
 
-    my $oldest = [ 0 ];
+    my $oldest = { Badness => 0 };
     my $newest;
     my $note = sub {
-       my ($badness, $ourmsg, $snagname, $kcmsg, $cl) = @_;
-       if ($oldest->[0] < $badness) {
+       my ($badness, $ourmsg, $snagname, $dummy, $cl, $kcmsg) = @_;
+       if ($oldest->{Badness} < $badness) {
            $oldest = $newest = undef;
        }
-       $oldest = \@_; # we're walking backwards
-       $newest //= \@_;
+       $oldest = {
+                  Badness => $badness,
+                  CommitId => $cl->{CommitId},
+                  OurMsg => $ourmsg,
+                  KcMsg => $kcmsg,
+                 };
+       $newest //= $oldest;
     };
     my ($anchor, $bw) = keycommits +(git_rev_parse 'HEAD'),
        sub { $note->(1, 'branch contains furniture (not laundered)', @_); },
@@ -1414,16 +1423,16 @@ sub cmd_status () {
     };
 
     print "current branch contents, in git-debrebase terms:\n";
-    if (!$oldest->[0]) {
+    if (!$oldest->{Badness}) {
        print "  branch is laundered\n";
     } else {
-       print "  $oldest->[1]\n";
+       print "  $oldest->{OurMsg}\n";
        my $printed = '';
        foreach my $info ($oldest, $newest) {
-           my $cid = $info->[4]{CommitId};
+           my $cid = $info->{CommitId};
            next if $cid eq $printed;
            $printed = $cid;
-           print "  $info->[3]\n";
+           print "  $info->{KcMsg}\n";
            $prcommitinfo->($cid);
        }
     }