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

Re: [PATCH 2/3] log: add a config option for --graph

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 9, 2022, 18:25 UTC
Message-ID
<xmqq4k5799sf.fsf@gitster.g>
In-Reply-To
<20220209162350.169971-2-alexhenrie24@gmail.com>
Alex Henrie <alexhenrie24@gmail.com> writes:
> +	if (default_graph &&
> +	    !rev->graph &&
This part I can see why we want to check ;-)
> +	    !rev->track_linear &&
> +	    !rev->reverse &&
> +	    !rev->reflog_info &&
> +	    !rev->no_walk) {

But this makes me wonder how we plan to keep this list of "if the user asked for any of these options, we shouldn't turn graph on by default" up-to-date. The scheme looks brittle.

Also, what would happen when a developer wants to add, say log.reverse, configuration variable in the future? I can see the block to do the equivalent of this for .log.reverse begins with

	if (default_reverse &&
	    !rev->reverse &&

but I am not sure what other conditions need to be checked, especially with 'graph'---should it check for !rev->graph or default_graph of both? Are we playing with a potential combinatorial explosion?

> +		rev->topo_order = 1;
> +		rev->rewrite_parents = 1;
> +		rev->graph = graph_init(rev);

In any case, it probably makes sense to encapsulate these three lines in a small helper function "when --graph is asked for on a rev, call this function" in the PREVIOUS step of the series, and change this patch to read more like

	if (default_graph &&
	    /* check for incompatible options */
	    !rev->track_linear && !rev->reverse && ...)
		rev_add_graph_option(rev);

Most importantly, the helper should be one that handles "wow, we see that rev->graph is already populated, what should we do?", and not this caller. And that helper can be called unconditionally by the command line parser when it finds !strcmp(arg, "--graph") yields true.

Thanks.
Previous: Alex HenrieNext: Alex Henrie
Message 3 of 9 in “log: fix memory leak if --graph is passed multiple times”
  1. 1/3 log: fix memory leak if --graph is passed multiple timesAlex Henrie, Feb 9, 2022
  2. 2/3 log: add a config option for --graphAlex Henrie, Feb 9, 2022
  3. Junio C HamanoFeb 9, 2022
  4. Alex HenrieFeb 10, 2022
  5. 3/3 gitk: set log.graph=false when running `git log`Alex Henrie, Feb 9, 2022
  6. Junio C HamanoFeb 9, 2022
  7. Alex HenrieFeb 10, 2022
  8. Junio C HamanoFeb 10, 2022
  9. Junio C HamanoFeb 9, 2022

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.