X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=git-debrebase;h=4bfe0952518214203c5e3ac397b27c53ceb93354;hb=52b97bd1b16a5db0b3b58e4864b5fdd6fc5e2689;hp=d80c8d35bb1875e509f658077eb3a1ed7cb7c69a;hpb=8f28dfa084b6d63e385d7fe538214eee2f90ea9e;p=dgit.git diff --git a/git-debrebase b/git-debrebase index d80c8d35..4bfe0952 100755 --- a/git-debrebase +++ b/git-debrebase @@ -439,6 +439,48 @@ sub record_gdrlast ($$;$) { push @deferred_updates, "update $gdrlast $newvalue $oldvalue"; } +sub fail_unprocessable ($) { + my ($msg) = @_; + changedir $maindir; + my ($ffqs, $ffqm, $symref, $ffq_prev, $gdrlast) = ffq_prev_branchinfo(); + + my $mangled = <{Why} ? "; $cl->{Why}:": ':'). " (commit $cur) (d.". (join ' ', map { sprintf "%#x", $_->{Differs} } @@ -2416,15 +2458,19 @@ sub begin_convert_from () { fail "ffq-prev exists, this is already managed by git-debrebase!" if $ffq_prev && git_get_ref $ffq_prev; + + my $gdrlast_obj = $gdrlast && git_get_ref $gdrlast; snag 'already-converted', "ahead of debrebase-last, this is already managed by git-debrebase!" - if $gdrlast && git_get_ref $gdrlast && is_fast_fwd $gdrlast, $head; - return ($head, undef); + if $gdrlast_obj && is_fast_fwd $gdrlast_obj, $head; + return ($head, { LastRef => $gdrlast, LastObj => $gdrlast_obj }); } sub complete_convert_from ($$$$) { my ($old_head, $new_head, $gi, $mrest) = @_; ffq_check $new_head; + record_gdrlast $gi->{LastRef}, $new_head, $gi->{LastObj} + if $gi->{LastRef}; snags_maybe_bail(); update_head_checkout $old_head, $new_head, $mrest; }