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

Re: [PATCH] commit: skip already cleared parents in clear_commit_marks_1()

From
Derrick Stolee <derrickstolee@github.com>
Date
Dec 15, 2022, 15:13 UTC
Message-ID
<112d189c-f2f9-8e12-fe13-82e41316c41b@github.com>
In-Reply-To
<7cf2ea1f-8dbf-5639-3874-86de391ae20a@web.de>
On 12/13/22 1:27 AM, René Scharfe wrote:
> Don't put clean parents on the pending list, as they and their ancestors
> don't need any treatment and would be skipped later anyway.  This saves
> the allocation and release of a commit list item in ca. 20% of the cases
> during a run of the test suite.
Show 6 quoted lines
> -		while ((parents = parents->next))
> -			commit_list_insert(parents->item, plist);
> +		while ((parents = parents->next)) {
> +			if (parents->item->object.flags & mark)
> +				commit_list_insert(parents->item, plist);
> +		}

From this context, it looks like this is a change of behavior (the walk only continues to parents that have the flag, so if the flag is not closed under reachability, such as the UNINTERESTING flag, then we won't clear all flags) but above this we already skip a commit that doesn't have the flag enabled.

One thing that is odd about this method is that it sets the 'commit' value to the first parent, and adds the later parents to the list. It's a minor point, but that check for the flag on the 'commit' is what prevents us from walking too far along the first-parent history.

All this to say, this is a safe change with a nice upside.

Thanks, -Stolee

Previous: René Scharfe
Message 2 of 2 in “commit: skip already cleared parents in clear_commit_marks_1()”
  1. commit: skip already cleared parents in clear_commit_marks_1()René Scharfe, Dec 13, 2022
  2. Derrick StoleeDec 15, 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.