summaryrefslogtreecommitdiff
path: root/git-debrebase
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2018-02-10 18:14:44 +0000
committerIan Jackson <ijackson@chiark.greenend.org.uk>2018-06-16 12:25:49 +0100
commit954dc1be0a631c5a0728328f7241f94ceada8afd (patch)
tree90fc17859a9afa60f3e22b280d0cb27b90bc0c09 /git-debrebase
parente61834ee5d6dc6e38d946b75112dbed6982a8560 (diff)
git-debrebase: provide -f<tag>
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Diffstat (limited to 'git-debrebase')
-rwxr-xr-xgit-debrebase34
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;