chiark / gitweb /
git-debrebase: keycommits: Pass $cl to callbacks
[dgit.git] / git-debrebase
index fbf2a58a7188b49203ee78197b0ad406b1ced34a..c0600126ba5df7701c6823330bd6d030c2ddec4f 100755 (executable)
@@ -238,8 +238,8 @@ sub make_commit ($$) {
 }
 
 our @snag_force_opts;
-sub snag ($$) {
-    my ($tag,$msg) = @_;
+sub snag ($$;@) {
+    my ($tag,$msg) = @_; # ignores extra args, for benefit of keycommits
     if (grep { $_ eq $tag } @snag_force_opts) {
        $snags_forced++;
        print STDERR "git-debrebase: snag ignored (-f$tag): $msg\n";
@@ -542,9 +542,9 @@ sub keycommits ($;$$$) {
     my ($head, $furniture, $unclean, $trouble) = @_;
     # => ($anchor, $breakwater)
 
-    # $unclean->("unclean-$tagsfx", $msg)
-    # $furniture->("unclean-$tagsfx", $msg)
-    # $dgitimport->("unclean-$tagsfx", $msg)
+    # $unclean->("unclean-$tagsfx", $msg, $cl)
+    # $furniture->("unclean-$tagsfx", $msg, $cl)
+    # $dgitimport->("unclean-$tagsfx", $msg, $cl))
     #   is callled for each situation or commit that
     #   wouldn't be found in a laundered branch
     # $furniture is for furniture commits such as might be found on an
@@ -561,15 +561,16 @@ sub keycommits ($;$$$) {
 
     my ($anchor, $breakwater);
     my $clogonly;
+    my $cl;
     my $x = sub {
        my ($cb, $tagsfx, $why) = @_;
        my $m = "branch needs laundering (run git-debrebase): $why";
        fail $m unless defined $cb;
        return unless $cb;
-       $cb->("unclean-$tagsfx", $why);
+       $cb->("unclean-$tagsfx", $why, $cl);
     };
     for (;;) {
-       my $cl = classify $head;
+       $cl = classify $head;
        my $ty = $cl->{Type};
        if ($ty eq 'Packaging') {
            $breakwater //= $clogonly;