diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2018-02-10 18:14:44 +0000 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2018-06-16 12:25:49 +0100 |
commit | 954dc1be0a631c5a0728328f7241f94ceada8afd (patch) | |
tree | 90fc17859a9afa60f3e22b280d0cb27b90bc0c09 /git-debrebase | |
parent | e61834ee5d6dc6e38d946b75112dbed6982a8560 (diff) |
git-debrebase: provide -f<tag>
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Diffstat (limited to 'git-debrebase')
-rwxr-xr-x | git-debrebase | 34 |
1 files 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<tag>, 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; |