From 954dc1be0a631c5a0728328f7241f94ceada8afd Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sat, 10 Feb 2018 18:14:44 +0000 Subject: git-debrebase: provide -f Signed-off-by: Ian Jackson --- git-debrebase | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/git-debrebase b/git-debrebase index 11a1896..a9f510c 100755 --- a/git-debrebase +++ b/git-debrebase @@ -90,6 +90,8 @@ use Dpkg::Version; our ($opt_force); +our $us = qw(git-debrebase); + sub badusage ($) { my ($m) = @_; die "bad usage: $m\n"; @@ -252,27 +254,40 @@ sub make_commit ($$) { return cmdoutput @cmd; } -our $fproblems; +our @fproblem_force_opts; +our $fproblems_forced; +our $fproblems_tripped; sub fproblem ($$) { my ($tag,$msg) = @_; - $fproblems++; - print STDERR "git-debrebase: safety catch tripped: $msg\n"; + if (grep { $_ eq $tag } @fproblem_force_opts) { + $fproblems_forced++; + print STDERR "git-debrebase: safety catch overridden (-f$tag): $msg\n"; + } else { + $fproblems_tripped++; + print STDERR "git-debrebase: safety catch tripped (-f$tag): $msg\n"; + } } + sub fproblems_maybe_bail () { - if ($fproblems) { + if ($fproblems_forced) { + printf STDERR + "%s: safety catch trips: %d overriden by individual -f options\n", + $us, $fproblems_forced; + } + if ($fproblems_tripped) { if ($opt_force) { printf STDERR - "safety catch trips (%d) overriden by --force\n", - $fproblems; + "%s: safety catch trips: %d overriden by global --force\n", + $us, $fproblems_tripped; } else { fail sprintf - "safety catch trips (%d) (you could --force)", - $fproblems; + "%s: safety catch trips: %d blockers (you could -f, or --force)", + $us, $fproblems_tripped; } } } sub any_fproblems () { - return !!$fproblems; + return $fproblems_forced || $fproblems_tripped; } # classify returns an info hash like this @@ -1125,6 +1140,7 @@ sub cmd_downstream_rebase_launder_v0 () { } GetOptions("D+" => \$debuglevel, + 'f=s' => \@fproblem_force_opts, 'force!') or die badusage "bad options\n"; initdebug('git-debrebase '); enabledebug if $debuglevel; -- cgit v1.2.3