int git_get_log_estimate_commit_count(GIT_LOG handle) { struct rev_info *p_Rev; p_Rev=(struct rev_info *)handle; return estimate_commit_count(p_Rev, p_Rev->commits); }
static void log_show_early(struct rev_info *revs, struct commit_list *list) { int i = revs->early_output; int show_header = 1; sort_in_topological_order(&list, revs->lifo); while (list && i) { struct commit *commit = list->item; switch (simplify_commit(revs, commit)) { case commit_show: if (show_header) { int n = estimate_commit_count(revs, list); show_early_header(revs, "incomplete", n); show_header = 0; } log_tree_commit(revs, commit); i--; break; case commit_ignore: break; case commit_error: return; } list = list->next; } /* Did we already get enough commits for the early output? */ if (!i) return; /* * ..if no, then repeat it twice a second until we * do. * * NOTE! We don't use "it_interval", because if the * reader isn't listening, we want our output to be * throttled by the writing, and not have the timer * trigger every second even if we're blocked on a * reader! */ early_output_timer.it_value.tv_sec = 0; early_output_timer.it_value.tv_usec = 500000; setitimer(ITIMER_REAL, &early_output_timer, NULL); }
static void finish_early_output(struct rev_info *rev) { int n = estimate_commit_count(rev, rev->commits); signal(SIGALRM, SIG_IGN); show_early_header(rev, "done", n); }