am: let command-line options override saved options
commit852a171018be4695f21848b03d001b5ed3ee96a0
authorPaul Tan <pyokagan@gmail.com>
Tue, 4 Aug 2015 14:08:50 +0000 (4 22:08 +0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 12 Aug 2015 17:33:47 +0000 (12 10:33 -0700)
treea0a21f1e6c5f18d821d3b369a2e4078492f4be37
parent18d8c26930acbba1627d2a8b7323be30ac2bd9bb
am: let command-line options override saved options

When resuming, git-am mistakenly ignores command-line options.

For instance, when a patch fails to apply with "git am patch",
subsequently running "git am --3way" would not cause git-am to fall
back on attempting a threeway merge.  This occurs because by default
the --3way option is saved as "false", and the saved am options are
loaded after the command-line options are parsed, thus overwriting
the command-line options when resuming.

Fix this by moving the am_load() function call before parse_options(),
so that command-line options will override the saved am options.

The purpose of supporting this use case is to enable users to "wiggle"
that one conflicting patch. As such, it is expected that the
command-line options do not affect subsequent applied patches. Implement
this by calling am_load() once we apply the conflicting patch
successfully.

Noticed-by: Junio C Hamano <gitster@pobox.com>
Helped-by: Junio C Hamano <gitster@pobox.com>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Paul Tan <pyokagan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/am.c
t/t4153-am-resume-override-opts.sh [new file with mode: 0755]