git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 2/4] log: add --count option to git log

From
Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Date
Jul 3, 2015, 07:29 UTC
Message-ID
<vpqa8vd66ms.fsf@anie.imag.fr>
In-Reply-To
<1435881011-13879-3-git-send-email-lawrencesiebert@gmail.com>
Lawrence Siebert <lawrencesiebert@gmail.com> writes:
Show 6 quoted lines
> +static void show_object(struct object *obj,
> +			const struct name_path *path, const char *component,
> +			void *cb_data)
> +{
> +	return;
> +}

It seems streange to me to have a function named show_object when it does not show anything. Maybe name it null_travers_cb to make it clear it's a callback and it does nothing?

Not a strong objection though, it's only a static function.
Show 27 quoted lines
> +static void show_commit(struct commit *commit, void *data)
> +{
> +	struct rev_info *revs = (struct rev_info *)data;
> +	if (commit->object.flags & PATCHSAME)
> +		revs->count_same++;
> +	else if (commit->object.flags & SYMMETRIC_LEFT)
> +		revs->count_left++;
> +	else
> +		revs->count_right++;
> +	if (commit->parents) {
> +		free_commit_list(commit->parents);
> +		commit->parents = NULL;
> +	}
> +	free_commit_buffer(commit);
> +}
> +
>  static int cmd_log_walk(struct rev_info *rev)
>  {
>  	struct commit *commit;
>  	int saved_nrl = 0;
>  	int saved_dcctc = 0;
>  
> +	if (rev->count) {
> +		prepare_revision_walk(rev);
> +		traverse_commit_list(rev, show_commit, show_object, rev);
> +		get_commit_count(rev);
> +	}

I didn't test, but it seems this does a full graph traversal before starting the output. A very important property of "git log" is that it starts showing revisions immediately, even when ran on a very long history (it shows the first screen immediately and continues working in the background while the first page is displayed in the pager).

Is it the case? If so, it should be changed. If not, perhaps explain why in the commit message.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
Previous: Lawrence SiebertNext: Lawrence Siebert
Message 7 of 17 in “git log --count”
  1. 0/4 git log --countLawrence Siebert, Jul 2, 2015
  2. 1/4 list-object: add get_commit_count functionLawrence Siebert, Jul 2, 2015
  3. Matthieu MoyJul 3, 2015
  4. Lawrence SiebertJul 3, 2015
  5. Matthieu MoyJul 3, 2015
  6. 2/4 log: add --count option to git logLawrence Siebert, Jul 2, 2015
  7. Matthieu MoyJul 3, 2015
  8. Lawrence SiebertJul 3, 2015
  9. Matthieu MoyJul 3, 2015
  10. 3/4 log --count: added testLawrence Siebert, Jul 2, 2015
  11. Matthieu MoyJul 3, 2015
  12. Lawrence SiebertJul 3, 2015
  13. Matthieu MoyJul 3, 2015
  14. Matthieu MoyJul 3, 2015
  15. Junio C HamanoJul 4, 2015
  16. Junio C HamanoJul 4, 2015
  17. 4/4 git-log: update man documentation for --countLawrence Siebert, Jul 2, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.