git/builtin
Elijah Newren e4dc25ed49 pull: since --ff-only overrides, handle it first
There are both merge and rebase branches in the logic, and previously
both had to handle fast-forwarding.  Merge handled that implicitly
(because git merge handles it directly), while in rebase it was
explicit.  Given that the --ff-only flag is meant to override any
--rebase or --no-rebase, make the code reflect that by handling
--ff-only before the merge-vs-rebase logic.

It turns out that this also fixes a bug for submodules.  Previously,
when --ff-only was given, the code would run `merge --ff-only` on the
main module, and then run `submodule update --recursive --rebase` on the
submodules.  With this change, we still run `merge --ff-only` on the
main module, but now run `submodule update --recursive --checkout` on
the submodules.  I believe this better reflects the intent of --ff-only
to have it apply to both the main module and the submodules.

(Sidenote: It is somewhat interesting that all merges pass `--checkout`
to submodule update, even when `--no-ff` is specified, meaning that it
will only do fast-forward merges for submodules.  This was discussed in
commit a6d7eb2c7a ("pull: optionally rebase submodules (remote submodule
changes only)", 2017-06-23).  The same limitations apply now as then, so
we are not trying to fix this at this time.)

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-07-22 11:54:29 -07:00
..
2021-05-14 08:26:09 +09:00
2020-07-30 19:18:06 -07:00
2021-02-25 16:43:29 -08:00
2021-04-20 11:09:50 -07:00
2020-08-11 18:04:11 -07:00
2021-06-04 07:50:26 +09:00
2021-05-07 12:47:41 +09:00
2021-05-20 08:54:59 +09:00
2021-01-06 15:10:49 -08:00
2020-10-16 12:30:45 -07:00
2021-02-25 16:43:30 -08:00
2021-02-25 16:43:30 -08:00
2021-04-27 16:31:39 +09:00
2020-03-24 15:04:43 -07:00
2021-05-07 12:47:41 +09:00
2021-06-02 07:34:27 +09:00
2021-05-12 07:00:45 +09:00
2021-06-14 10:16:06 +09:00
2021-05-20 08:54:59 +09:00
2021-04-07 16:54:08 -07:00
2021-04-14 13:47:21 -07:00
2021-03-13 16:00:09 -08:00
2020-03-24 15:04:44 -07:00
2020-05-13 12:19:18 -07:00
2021-06-02 10:12:03 +09:00
2021-04-07 16:54:08 -07:00
2020-07-30 19:18:06 -07:00
2021-05-07 12:47:41 +09:00
2021-01-25 14:19:19 -08:00
2021-06-14 13:33:27 +09:00
2021-04-20 11:09:50 -07:00
2021-04-14 13:47:29 -07:00
2020-07-30 19:18:06 -07:00
2020-08-11 18:04:11 -07:00
2019-06-19 08:19:21 -07:00
2021-05-20 08:54:59 +09:00