chiark / gitweb /
git-debrebase: breakwater_of: permit unclean to be an fproblem
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 25 Mar 2018 11:53:59 +0000 (12:53 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 16 Jun 2018 15:07:00 +0000 (16:07 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
git-debrebase

index 54431a7731a4718a4cb57d85a80ffb445fa724af..f79aef5ff2241478bb98e452fe134d30492208a1 100755 (executable)
@@ -494,12 +494,19 @@ sub classify ($) {
     return $unknown->("complex merge");
 }
 
     return $unknown->("complex merge");
 }
 
-sub breakwater_of ($) {
-    my ($head) = @_; # must be laundered
+sub breakwater_of ($;$) {
+    my ($head, $unclean_fproblem_tag) = @_;
+    # $head should be laundered; if not, $unclean_fproblem_tag controls:
+    # if falseish, calls fail; otherwise, calls fproblem and returns undef
     my $breakwater;
     my $unclean = sub {
        my ($why) = @_;
     my $breakwater;
     my $unclean = sub {
        my ($why) = @_;
-       fail "branch needs laundering (run git-debrebase): $why";
+       my $m = "branch needs laundering (run git-debrebase): $why";
+       fail $m unless $unclean_fproblem_tag;
+       fproblem $unclean_fproblem_tag, $m;
+       $breakwater = undef;
+       no warnings qw(exiting);
+       last;
     };
     for (;;) {
        my $cl = classify $head;
     };
     for (;;) {
        my $cl = classify $head;