git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] rebase -i: Remember merge options beyond continue actions

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Jun 10, 2014, 00:17 UTC
Message-ID
<CAPig+cSHFFPUEQz8==HLQr0My2Bfsth_F16wVf9giytqGwzZww@mail.gmail.com>
In-Reply-To
<53964B32.2090804@gmail.com>
On Mon, Jun 9, 2014 at 8:02 PM, Fabian Ruch <bafain@gmail.com> wrote:
> If the user explicitly specified a merge strategy or strategy options,
> "rebase --interactive" started using the default merge strategy again
> after "rebase --continue".
For reference, this problem was reported as far back as 2013-08-09 [1].
[1]: http://article.gmane.org/gmane.comp.version-control.git/232013
Show 6 quoted lines
> This problem gets fixed by this commit. Add test.
>
> Since the "rebase" options "-s" and "-X" imply "--merge", we can simply
> remove the "do_merge" guard in the interactive mode and always compile
> the "cherry-pick" arguments from the "rebase" state variables "strategy"
> and "strategy_opts".
Missing sign-off.
Show 63 quoted lines
> ---
>  git-rebase--interactive.sh    | 18 +++++++-----------
>  t/t3404-rebase-interactive.sh | 16 ++++++++++++++++
>  2 files changed, 23 insertions(+), 11 deletions(-)
>
> diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
> index 6ec9d3c..817c933 100644
> --- a/git-rebase--interactive.sh
> +++ b/git-rebase--interactive.sh
> @@ -77,17 +77,13 @@ amend="$state_dir"/amend
>  rewritten_list="$state_dir"/rewritten-list
>  rewritten_pending="$state_dir"/rewritten-pending
>
> -strategy_args=
> -if test -n "$do_merge"
> -then
> -       strategy_args=${strategy:+--strategy=$strategy}
> -       eval '
> -               for strategy_opt in '"$strategy_opts"'
> -               do
> -                       strategy_args="$strategy_args -X$(git rev-parse --sq-quote "${strategy_opt#--}")"
> -               done
> -       '
> -fi
> +strategy_args=${strategy:+--strategy=$strategy}
> +eval '
> +       for strategy_opt in '"$strategy_opts"'
> +       do
> +               strategy_args="$strategy_args -X$(git rev-parse --sq-quote "${strategy_opt#--}")"
> +       done
> +'
>
>  GIT_CHERRY_PICK_HELP="$resolvemsg"
>  export GIT_CHERRY_PICK_HELP
> diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
> index c0023a5..73849f1 100755
> --- a/t/t3404-rebase-interactive.sh
> +++ b/t/t3404-rebase-interactive.sh
> @@ -998,6 +998,22 @@ test_expect_success 'rebase -i with --strategy and -X' '
>         test $(cat file1) = Z
>  '
>
> +test_expect_success 'interrupted rebase -i with --strategy and -X' '
> +       git checkout -b conflict-merge-use-theirs-interrupted conflict-branch &&
> +       git reset --hard HEAD^ &&
> +       >breakpoint &&
> +       git add breakpoint &&
> +       git commit -m "breakpoint for interactive mode" &&
> +       echo five >conflict &&
> +       echo Z >file1 &&
> +       git commit -a -m "one file conflict" &&
> +       set_fake_editor &&
> +       FAKE_LINES="edit 1 2" git rebase -i --strategy=recursive -Xours conflict-branch &&
> +       git rebase --continue &&
> +       test $(git show conflict-branch:conflict) = $(cat conflict) &&
> +       test $(cat file1) = Z
> +'
> +
>  test_expect_success 'rebase -i error on commits with \ in message' '
>         current_head=$(git rev-parse HEAD)
>         test_when_finished "git rebase --abort; git reset --hard $current_head; rm -f error" &&
> --
> 2.0.0
Previous: Fabian RuchNext: Fabian Ruch
Message 2 of 8 in “rebase -i: Remember merge options beyond continue actions”
  1. rebase -i: Remember merge options beyond continue actionsFabian Ruch, Jun 10, 2014
  2. Eric SunshineJun 10, 2014
  3. Fabian RuchJun 10, 2014
  4. Michael HaggertyJun 11, 2014
  5. Ralf ThielowJul 18, 2014
  6. rebase -i: remember merge options beyond continue actionsRalf Thielow, Dec 11, 2015
  7. Junio C HamanoDec 11, 2015
  8. rebase -i: remember merge options beyond continue actionsRalf Thielow, Dec 11, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.