зеркало из https://github.com/microsoft/git.git
fetch: add trace2 instrumentation
Add trace2 regions to fetch-pack.c to better track time spent in the various phases of a fetch: * parsing remote refs and finding a cutoff * marking local refs as complete * marking complete remote refs as common All stages could potentially be slow for repositories with many refs. Signed-off-by: Erik Chen <erikchen@chromium.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
da72936f54
Коммит
9e5afdf997
13
fetch-pack.c
13
fetch-pack.c
|
@ -669,6 +669,7 @@ static void mark_complete_and_common_ref(struct fetch_negotiator *negotiator,
|
|||
|
||||
save_commit_buffer = 0;
|
||||
|
||||
trace2_region_enter("fetch-pack", "parse_remote_refs_and_find_cutoff", NULL);
|
||||
for (ref = *refs; ref; ref = ref->next) {
|
||||
struct object *o;
|
||||
|
||||
|
@ -679,7 +680,8 @@ static void mark_complete_and_common_ref(struct fetch_negotiator *negotiator,
|
|||
if (!o)
|
||||
continue;
|
||||
|
||||
/* We already have it -- which may mean that we were
|
||||
/*
|
||||
* We already have it -- which may mean that we were
|
||||
* in sync with the other side at some time after
|
||||
* that (it is OK if we guess wrong here).
|
||||
*/
|
||||
|
@ -689,7 +691,13 @@ static void mark_complete_and_common_ref(struct fetch_negotiator *negotiator,
|
|||
cutoff = commit->date;
|
||||
}
|
||||
}
|
||||
trace2_region_leave("fetch-pack", "parse_remote_refs_and_find_cutoff", NULL);
|
||||
|
||||
/*
|
||||
* This block marks all local refs as COMPLETE, and then recursively marks all
|
||||
* parents of those refs as COMPLETE.
|
||||
*/
|
||||
trace2_region_enter("fetch-pack", "mark_complete_local_refs", NULL);
|
||||
if (!args->deepen) {
|
||||
for_each_ref(mark_complete_oid, NULL);
|
||||
for_each_cached_alternate(NULL, mark_alternate_complete);
|
||||
|
@ -697,11 +705,13 @@ static void mark_complete_and_common_ref(struct fetch_negotiator *negotiator,
|
|||
if (cutoff)
|
||||
mark_recent_complete_commits(args, cutoff);
|
||||
}
|
||||
trace2_region_leave("fetch-pack", "mark_complete_local_refs", NULL);
|
||||
|
||||
/*
|
||||
* Mark all complete remote refs as common refs.
|
||||
* Don't mark them common yet; the server has to be told so first.
|
||||
*/
|
||||
trace2_region_enter("fetch-pack", "mark_common_remote_refs", NULL);
|
||||
for (ref = *refs; ref; ref = ref->next) {
|
||||
struct object *o = deref_tag(the_repository,
|
||||
lookup_object(the_repository,
|
||||
|
@ -714,6 +724,7 @@ static void mark_complete_and_common_ref(struct fetch_negotiator *negotiator,
|
|||
negotiator->known_common(negotiator,
|
||||
(struct commit *)o);
|
||||
}
|
||||
trace2_region_leave("fetch-pack", "mark_common_remote_refs", NULL);
|
||||
|
||||
save_commit_buffer = old_save_commit_buffer;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче