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

Re: [PATCH 2/2] builtin/push.c: make push_default a static variable

From
Jeff King <peff@peff.net>
Date
Feb 18, 2015, 19:25 UTC
Message-ID
<20150218192518.GA7891@peff.net>
In-Reply-To
<xmqqh9uj2g25.fsf@gitster.dls.corp.google.com>
On Wed, Feb 18, 2015 at 11:08:34AM -0800, Junio C Hamano wrote:
Show 20 quoted lines
> Jeff King <peff@peff.net> writes:
> 
> >> +	if (!strcmp(k, "push.followtags")) {
> >> +		if (git_config_bool(k, v))
> >> +			*flags |= TRANSPORT_PUSH_FOLLOW_TAGS;
> >> +		else
> >> +			*flags &= ~TRANSPORT_PUSH_FOLLOW_TAGS;
> >> +		return 0;
> >> +	}
> >
> > Did you have an opinion on sticking this behind a helper function?
> 
> Not very strongly either way.  Seeing the above does not bother me
> too much, but I do not know how I would feel when I start seeing
> 
> 	val = git_config_book(k, v);
> 	flip_bool(val, &flags, TRANSPORT_PUSH_FOLLOW_TAGS);
> 
> often.  Not having to make sure that the bit constant whose name
> tends to get long is not misspelled is certainly a plus.
I think it would be even nicer as:
  git_config_bits(k, v, &flags, TRANSPORT_PUSH_FOLLOW_TAGS);

There is a similar spot in the tar.*.remote config. And that could of course build on a "flip_bool" or similar, which itself has many other uses. But after taking a quick peek, I noticed that one call around diff.c:3600 would look like:

  flip_bool(!negate, &opt->filter, bit);

IOW, it is the same pattern of conditional, but it flips the AND and OR, because its flag is flipped. Reading that line makes me head hurt, because we've really introduced an extra double-negative into the flow.

That "negate" flag is local to the loop we are in, and we could flip it for clarity. But it makes me second-guess the technique.

-Peff
Previous: Junio C HamanoNext: Junio C Hamano
Message 13 of 29 in “push: allow --follow-tags to be set by config push.followTags”
  1. push: allow --follow-tags to be set by config push.followTagsDave Olszewski, Feb 16, 2015
  2. Jeff KingFeb 16, 2015
  3. 0/2 clean up push config callbacksJeff King, Feb 16, 2015
  4. 1/2 git_push_config: drop cargo-culted wt_status pointerJeff King, Feb 16, 2015
  5. 2/2 builtin/push.c: make push_default a static variableJeff King, Feb 16, 2015
  6. Junio C HamanoFeb 16, 2015
  7. Jeff KingFeb 17, 2015
  8. Junio C HamanoFeb 17, 2015
  9. Jeff KingFeb 17, 2015
  10. Junio C HamanoFeb 17, 2015
  11. Jeff KingFeb 18, 2015
  12. Junio C HamanoFeb 18, 2015
  13. Jeff KingFeb 18, 2015
  14. Junio C HamanoFeb 18, 2015
  15. Jeff KingFeb 18, 2015
  16. 3/2 push: allow --follow-tags to be set by config push.followTagsJeff King, Feb 16, 2015
  17. Junio C HamanoFeb 16, 2015
  18. 0/3 cleaner bit-setting in cmd_pushJeff King, Feb 16, 2015
  19. 1/3 cmd_push: set "atomic" bit directlyJeff King, Feb 16, 2015
  20. 2/3 cmd_push: pass "flags" pointer to config callbackJeff King, Feb 16, 2015
  21. Junio C HamanoFeb 16, 2015
  22. Jeff KingFeb 16, 2015
  23. 3/3 push: allow --follow-tags to be set by config push.followTagsJeff King, Feb 16, 2015
  24. Junio C HamanoMar 14, 2015
  25. Jeff KingMar 14, 2015
  26. Dave OlszewskiMar 14, 2015
  27. Junio C HamanoMar 14, 2015
  28. Junio C HamanoFeb 16, 2015
  29. Jeff KingFeb 16, 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.