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

Re: Should reset_revision_walk clear more flags?

From
Jeff King <peff@peff.net>
Date
Dec 5, 2016, 05:40 UTC
Message-ID
<20161205054013.taosbwjamxiwzocn@sigill.intra.peff.net>
In-Reply-To
<20161204230958.h3ilhueqqptv253u@glandium.org>
On Mon, Dec 05, 2016 at 08:09:58AM +0900, Mike Hommey wrote:
Show 8 quoted lines
> While trying to use the revision walking API twice in a row, I noticed
> that the second time for the same setup would not yield the same result.
> In my case, it turns out I was requesting boundaries, and
> reset_revision_walk() is not resetting CHILD_SHOWN and BOUNDARY, both
> required to be reset for the second revision walk to work.
> 
> So the question is, are consumers supposed to reset those flags on their
> own, or should reset_revision_walk clear them?

I would think that reset_revision_walk() should reset any flags set by the revision-walking code (so anything set by calling init_revisions(), and then either a call into list_objects() or repeated calls of get_revision()).

Which I think would include both of the flags you mentioned, along with others like SYMMETRIC_LEFT, PATCHSAME, etc. Probably really everything mentioned in revision.h, which should be summed up as ALL_REV_FLAGS. Some callsites already seem to feed that to clear_commit_marks().

I doubt you can go too wrong by clearing more flags. It's possible that some caller is relying on a flag _not_ being cleared between two traversals, but in that case it should probably be using clear_commit_marks() or clear_object_flags() explicitly to make it clear what it expects to be saved.

-Peff
Previous: Mike HommeyNext: Junio C Hamano
Message 3 of 5 in “Should reset_revision_walk clear more flags?”
  1. Mike HommeyDec 4, 2016
  2. Mike HommeyDec 4, 2016
  3. Jeff KingDec 5, 2016
  4. Junio C HamanoDec 5, 2016
  5. Jeff KingDec 5, 2016

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.