summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2018-02-18 00:07:05 +0000
committerIan Jackson <ijackson@chiark.greenend.org.uk>2018-06-16 16:06:58 +0100
commit0b6c2ca9024f4060476084b128a1a0e6fe395d68 (patch)
tree6790477a20626496e7c9b31bdaacc61e88934a25
parent6122e79e9fe147a285cd98aa938de6c1f024a0c3 (diff)
git-debrebase: fix ffq divergence checking (many bugs)
Also add some debugging to ffq checking Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
-rwxr-xr-xgit-debrebase24
1 files changed, 15 insertions, 9 deletions
diff --git a/git-debrebase b/git-debrebase
index 403fba1..2b65846 100755
--- a/git-debrebase
+++ b/git-debrebase
@@ -915,6 +915,7 @@ sub ffq_prev_branchinfo () {
return ('weird-symref', 'HEAD symref is not to refs/')
unless $current =~ m{^refs/};
my $ffq_prev = "refs/$ffq_refprefix/$'";
+ printdebug "ffq_prev_branchinfo branch current $current\n";
return ('branch', undef, $current, $ffq_prev);
}
@@ -944,12 +945,15 @@ sub record_ffq_prev () {
my @check_specs = split /\;/, (cfg "branch.$branch.ffq-ffrefs",1) // '*';
my %checked;
+ printdebug "ffq check_specs @check_specs\n";
+
my $check = sub {
my ($lrref, $desc) = @_;
+ printdebug "ffq might check $lrref ($desc)\n";
my $invert;
for my $chk (@check_specs) {
my $glob = $chk;
- $invert = $glob =~ s{^[^!]}{};
+ $invert = $glob =~ s{^[!^]}{};
last if fnmatch $glob, $lrref;
}
return if $invert;
@@ -959,7 +963,7 @@ sub record_ffq_prev () {
if (is_fast_fwd $lrval, $currentval) {
print "OK, you are ahead of $lrref\n" or die $!;
$checked{$lrref} = 1;
- } if (is_fast_fwd $currentval, $lrval) {
+ } elsif (is_fast_fwd $currentval, $lrval) {
$checked{$lrref} = -1;
fproblem 'behind', "you are behind $lrref, divergence risk";
} else {
@@ -969,23 +973,25 @@ sub record_ffq_prev () {
};
my $merge = cfg "branch.$branch.merge",1;
- if (defined $merge && $merge =~ m{^refs/heads/}) {
+ if (defined $merge and $merge =~ m{^refs/heads/}) {
my $rhs = $';
+ printdebug "ffq merge $rhs\n";
my $check_remote = sub {
- my ($remote, $desc) = (@_);
+ my ($remote, $desc) = @_;
+ printdebug "ffq check_remote ".($remote//'undef')." $desc\n";
return unless defined $remote;
$check->("refs/remotes/$remote/$rhs", $desc);
};
- $check_remote->((cfg "branch.$branch.remote",1),
+ $check_remote->((scalar cfg "branch.$branch.remote",1),
'remote fetch/merge branch');
- $check_remote->((cfg "branch.$branch.pushRemote",1) //
- (cfg "branch.$branch.pushDefault",1),
+ $check_remote->((scalar cfg "branch.$branch.pushRemote",1) //
+ (scalar cfg "branch.$branch.pushDefault",1),
'remote push branch');
}
if ($branch =~ m{^dgit/}) {
- $check->("remotes/dgit/$branch", 'remote dgit branch');
+ $check->("refs/remotes/dgit/$branch", 'remote dgit branch');
} elsif ($branch =~ m{^master$}) {
- $check->("remotes/dgit/dgit/sid", 'remote dgit branch for sid');
+ $check->("refs/remotes/dgit/dgit/sid", 'remote dgit branch for sid');
}
fproblems_maybe_bail();