• Fabian Ruch's avatar
    rebase -i: remember merge options beyond continue actions · 040fd39e
    Fabian Ruch authored
    If the user explicitly specified a merge strategy or strategy
    options, continue to use that strategy/option after
    "rebase --continue".  Add a test of the corrected behavior.
    
    If --merge is specified or implied by -s or -X, then "strategy and
    "strategy_opts" are set to values from which "strategy_args" can be
    derived; otherwise they are set to empty strings.  Either way,
    their values are propagated from one step of an interactive rebase
    to the next via state files.
    
    "do_merge", on the other hand, is *not* propagated to later steps of
    an interactive rebase.  Therefore, making the initialization of
    "strategy_args" conditional on "do_merge" being set prevents later
    steps of an interactive rebase from setting it correctly.
    
    Luckily, we don't need the "do_merge" guard at all.  If the rebase
    was started without --merge, then "strategy" and "strategy_opts"
    are both the empty string, which results in "strategy_args" also
    being set to the empty string, which is just what we want in that
    situation.  So remove the "do_merge" guard and derive
    "strategy_args" from "strategy" and "strategy_opts" every time.
    Reported-by: default avatarDiogo de Campos <campos@esss.com.br>
    Signed-off-by: default avatarFabian Ruch <bafain@gmail.com>
    Helped-by: default avatarMichael Haggerty <mhagger@alum.mit.edu>
    Signed-off-by: default avatarRalf Thielow <ralf.thielow@gmail.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    040fd39e
git-rebase--interactive.sh 33.3 KB