diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2018-07-07 22:44:09 +0100 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2018-07-08 19:31:15 +0100 |
commit | 4bee0e93df9c621e0fbfe22d670676e53dd7076a (patch) | |
tree | f92ae999f0f1adcb8021147c92ad22b01575116d /git-debrebase | |
parent | 238568870c670cd067578807c0a4f369f9af1c8a (diff) |
git-debrebase: Break out ff_check (for reuse by convert-from-gbp)
No functional change.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Diffstat (limited to 'git-debrebase')
-rwxr-xr-x | git-debrebase | 44 |
1 files changed, 32 insertions, 12 deletions
diff --git a/git-debrebase b/git-debrebase index ddb7840..b029e5c 100755 --- a/git-debrebase +++ b/git-debrebase @@ -980,19 +980,19 @@ sub ffq_prev_branchinfo () { return gdr_ffq_prev_branchinfo($current); } -sub record_ffq_prev_deferred () { - # => ('status', "message") - # 'status' may be - # deferred message is undef +sub ffq_check ($$$) { + # calls $ff and/or $notff zero or more times + # then returns either (status,message) where status is # exists # detached # weird-symref # notbranch - # if not ff from some branch we should be ff from, is an snag - # if "deferred", will have added something about that to - # @deferred_update_messages, and also maybe printed (already) - # some messages about ff checks - my $currentval = get_head(); + # or (undef,undef, $ffq_prev,$gdrlast) + # $ff and $notff are called like this: + # $ff->("message for stdout\n"); + # $notff->('snag-name', $message); + # normally $currentval should be HEAD + my ($currentval, $ff, $notff) =@_; my ($status, $message, $current, $ffq_prev, $gdrlast) = ffq_prev_branchinfo(); @@ -1024,14 +1024,14 @@ sub record_ffq_prev_deferred () { return unless length $lrval; if (is_fast_fwd $lrval, $currentval) { - print "OK, you are ahead of $lrref\n" or die $!; + $ff->("OK, you are ahead of $lrref\n"); $checked{$lrref} = 1; } elsif (is_fast_fwd $currentval, $lrval) { $checked{$lrref} = -1; - snag 'behind', "you are behind $lrref, divergence risk"; + $notff->('behind', "you are behind $lrref, divergence risk"); } else { $checked{$lrref} = -1; - snag 'diverged', "you have diverged from $lrref"; + $notff->('diverged', "you have diverged from $lrref"); } }; @@ -1056,6 +1056,26 @@ sub record_ffq_prev_deferred () { } elsif ($branch =~ m{^master$}) { $check->("refs/remotes/dgit/dgit/sid", 'remote dgit branch for sid'); } + return (undef, undef, $ffq_prev, $gdrlast); +} + +sub record_ffq_prev_deferred () { + # => ('status', "message") + # 'status' may be + # deferred message is undef + # exists + # detached + # weird-symref + # notbranch + # if not ff from some branch we should be ff from, is an snag + # if "deferred", will have added something about that to + # @deferred_update_messages, and also maybe printed (already) + # some messages about ff checks + my $currentval = get_head(); + + my ($status,$message, $ffq_prev,$gdrlast) = + ffq_check $currentval, sub { print $_[0] or die $!; }, \&snag; + return ($status,$message) if defined $status; snags_maybe_bail(); |