Files
git/builtin
Junio C Hamano 0353c68818 fetch: do not run a redundant fetch from submodule
When 7dce19d3 (fetch/pull: Add the --recurse-submodules option,
2010-11-12) introduced the "--recurse-submodule" option, the
approach taken was to perform fetches in submodules only once, after
all the main fetching (it may usually be a fetch from a single
remote, but it could be fetching from a group of remotes using
fetch_multiple()) succeeded.  Later we added "--all" to fetch from
all defined remotes, which complicated things even more.

If your project has a submodule, and you try to run "git fetch
--recurse-submodule --all", you'd see a fetch for the top-level,
which invokes another fetch for the submodule, followed by another
fetch for the same submodule.  All but the last fetch for the
submodule come from a "git fetch --recurse-submodules" subprocess
that is spawned via the fetch_multiple() interface for the remotes,
and the last fetch comes from the code at the end.

Because recursive fetching from submodules is done in each fetch for
the top-level in fetch_multiple(), the last fetch in the submodule
is redundant.  It only matters when fetch_one() interacts with a
single remote at the top-level.

While we are at it, there is one optimization that exists in dealing
with a group of remote, but is missing when "--all" is used.  In the
former, when the group turns out to be a group of one, instead of
spawning "git fetch" as a subprocess via the fetch_multiple()
interface, we use the normal fetch_one() code path.  Do the same
when handing "--all", if it turns out that we have only one remote
defined.

Reviewed-by: Glen Choo <chooglen@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2022-05-18 09:08:57 -07:00
..
2022-01-27 18:00:15 -08:00
2022-02-25 15:47:36 -08:00
2022-02-25 15:47:35 -08:00
2022-02-17 16:25:05 -08:00
2022-03-21 15:14:24 -07:00
2021-10-28 09:57:09 -07:00
2021-02-25 16:43:30 -08:00
2022-04-04 10:56:23 -07:00
2022-03-13 22:23:16 +00:00
2022-03-09 13:38:24 -08:00
2022-04-06 15:21:59 -07:00
2021-04-14 13:47:21 -07:00
2021-09-28 10:31:02 -07:00
2022-01-03 16:24:15 -08:00
2022-02-25 15:47:35 -08:00
2022-03-28 15:45:46 -07:00
2022-03-21 15:14:24 -07:00
2022-01-10 11:52:56 -08:00
2022-03-30 18:01:10 -07:00
2021-11-03 13:25:36 -07:00