зеркало из https://github.com/microsoft/git.git
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>
This commit is contained in:
Родитель
bec587d4c1
Коммит
135a12bc14
|
@ -2133,6 +2133,17 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)
|
|||
strvec_clear(&options);
|
||||
}
|
||||
|
||||
/*
|
||||
* Skip irrelevant tasks because we know objects were not
|
||||
* fetched.
|
||||
*
|
||||
* NEEDSWORK: as a future optimization, we can return early
|
||||
* whenever objects were not fetched e.g. if we already have all
|
||||
* of them.
|
||||
*/
|
||||
if (negotiate_only)
|
||||
goto cleanup;
|
||||
|
||||
prepare_repo_settings(the_repository);
|
||||
if (fetch_write_commit_graph > 0 ||
|
||||
(fetch_write_commit_graph < 0 &&
|
||||
|
|
Загрузка…
Ссылка в новой задаче