fetch: skip tasks related to fetching objects
commit135a12bc1472290ca6b9a4c2f06c838a1495a612
authorGlen Choo <chooglen@google.com>
Wed, 19 Jan 2022 00:00:55 +0000 (18 16:00 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 19 Jan 2022 00:22:57 +0000 (18 16:22 -0800)
treef35a1c2886cda9e518476eb325d8c672c4d4b26a
parentbec587d4c11e851c1e7b5ed7890d627c8346d1cb
fetch: skip tasks related to fetching objects

cmd_fetch() does the following with the assumption that objects are
fetched:

* Run gc
* Write commit graphs (if enabled by fetch.writeCommitGraph=true)

However, neither of these tasks makes sense if objects are not fetched
e.g. `git fetch --negotiate-only` never fetches objects.

Speed up cmd_fetch() by bailing out early if we know for certain that
objects will not be fetched. cmd_fetch() can bail out early whenever
objects are not fetched, but for now this only considers
--negotiate-only.

The same optimization does not apply to `git fetch --dry-run` because
that actually fetches objects; the dry run refers to not updating refs.

Signed-off-by: Glen Choo <chooglen@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/fetch.c