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

Re: [RFC 2/2] exclude-promisor-objects: declare when option is allowed

From
Jeff King <peff@peff.net>
Date
Dec 3, 2018, 21:15 UTC
Message-ID
<20181203211555.GA8700@sigill.intra.peff.net>
In-Reply-To
<80a08b99-14cb-e398-e6c2-2aa94a5fdda3@comcast.net>
On Mon, Dec 03, 2018 at 11:10:49AM -0800, Matthew DeVore wrote:
Show 14 quoted lines
> > > +	memset(&s_r_opt, 0, sizeof(s_r_opt));
> > > +	s_r_opt.allow_exclude_promisor_objects = 1;
> > > +	setup_revisions(ac, av, &revs, &s_r_opt);
> > 
> > I wonder if a static initializer for setup_revision_opt is worth it. It
> > would remove the need for this memset. Probably not a big deal either
> > way, though.
> I think you mean something like this:
> 
> static struct setup_revision_opt s_r_opt = {NULL, NULL, NULL, 0, 1, 0};
> 
> This is a bit cryptic (I have to read the struct declaration in order to
> know what is being set to 1) and if the struct ever gets a new field before
> allow_exclude_promisor_objects, this initializer has to be updated.
I agree that's pretty awful.  I meant something like this:
  struct setup_revision_opt s_r_opt = { NULL };
  ...
  s_r_opt.allow_exclude_promisor_objects = 1;
  setup_revisions(...);

It's functionally equivalent to the memset(), but you don't have to wonder about whether we peek at the uninitialized state in between.

That said, our C99 designated initializer weather-balloons haven't gotten any complaints yet. So I think you could actually do:

  struct setup_revision_opt s_r_opt = {
	.allow_exclude_promisor_objects = 1,
  };
  ...
  setup_revisions(...);
which is pretty nice.
-Peff
Previous: Matthew DeVoreNext: Matthew DeVore
Message 11 of 19 in “[RFC 0/2] explicitly support or not support --exclude-promisor-objects”
  1. Matthew DeVoreOct 23, 2018
  2. 1/2 Documentation/git-log.txt: do not show --exclude-promisor-objectsMatthew DeVore, Oct 23, 2018
  3. 2/2 exclude-promisor-objects: declare when option is allowedMatthew DeVore, Oct 23, 2018
  4. Junio C HamanoOct 23, 2018
  5. Matthew DeVoreOct 23, 2018
  6. Junio C HamanoOct 24, 2018
  7. Jeff KingNov 21, 2018
  8. Matthew DeVoreDec 1, 2018
  9. Jeff KingDec 1, 2018
  10. Matthew DeVoreDec 3, 2018
  11. Jeff KingDec 3, 2018
  12. Matthew DeVoreDec 3, 2018
  13. Junio C HamanoDec 4, 2018
  14. revisions.c: put promisor option in specialized structMatthew DeVore, Dec 3, 2018
  15. Jeff KingDec 3, 2018
  16. Matthew DeVoreDec 3, 2018
  17. Matthew DeVoreOct 23, 2018
  18. Junio C HamanoOct 23, 2018
  19. Matthew DeVoreOct 23, 2018

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.