X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=git-debrebase;h=19beef8c3ffc422eba8e7468e43ac2ccb29ecb6b;hb=0943c19e7dcccf0ac05fb266b232a9c36781264e;hp=50fa1bc96cfb22e169f9c27406b165047e5b1152;hpb=237fe933713ea3d86ed8fbdb86819797b770405b;p=dgit.git diff --git a/git-debrebase b/git-debrebase index 50fa1bc9..19beef8c 100755 --- a/git-debrebase +++ b/git-debrebase @@ -100,7 +100,7 @@ sub badusage ($) { sub cfg ($;$) { my ($k, $optional) = @_; - $/ = "\0"; + local $/ = "\0"; my @cmd = qw(git config -z); push @cmd, qw(--get-all) if wantarray; push @cmd, $k; @@ -832,6 +832,12 @@ sub cmd_launder () { sub defaultcmd_rebase () { my $old = get_head(); + my ($status, $message) = record_ffq_prev(); + if ($status eq 'written' || $status eq 'exists') { + } else { + fproblem $status, "could not record ffq-prev: $message"; + fproblems_maybe_bail(); + } my ($tip,$breakwater) = walk $old; update_head_postlaunder $old, $tip, 'launder for rebase'; runcmd @git, qw(rebase), @ARGV, $breakwater; @@ -850,6 +856,20 @@ sub cmd_analyse () { STDOUT->error and die $!; } +sub ffq_prev_branchinfo () { + # => ('status', "message", [$current, $ffq_prev]) + # 'status' may be + # branch message is undef + # weird-symref } no $current, + # notbranch } no $ffq_prev + my $current = git_get_symref(); + return ('detached', 'detached HEAD') unless defined $current; + return ('weird-symref', 'HEAD symref is not to refs/') + unless $current =~ m{^refs/}; + my $ffq_prev = "refs/$ffq_refprefix/$'"; + return ('branch', undef, $current, $ffq_prev); +} + sub record_ffq_prev () { # => ('status', "message") # 'status' may be @@ -861,11 +881,8 @@ sub record_ffq_prev () { # if not ff from some branch we should be ff from, is an fproblem # if "written", will have printed something about that to stdout, # and also some messages about ff checks - my $current = git_get_symref(); - return ('detached', 'detached HEAD') unless defined $current; - return ('weird-symref', 'HEAD symref is not to refs/') - unless $current =~ m{^refs/}; - my $ffq_prev = "refs/$ffq_refprefix/$'"; + my ($status, $message, $current, $ffq_prev) = ffq_prev_branchinfo(); + return ($status, $message) unless $status eq 'branch'; my $currentval = get_head();