git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Dave Olszewski <cxreg@pobox.com>, git@vger.kernel.org
Subject: Re: [PATCH 2/2] builtin/push.c: make push_default a static variable
Date: Wed, 18 Feb 2015 14:25:18 -0500	[thread overview]
Message-ID: <20150218192518.GA7891@peff.net> (raw)
In-Reply-To: <xmqqh9uj2g25.fsf@gitster.dls.corp.google.com>

On Wed, Feb 18, 2015 at 11:08:34AM -0800, Junio C Hamano wrote:

> 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

  reply	other threads:[~2015-02-18 19:25 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-16  3:01 [PATCH] push: allow --follow-tags to be set by config push.followTags Dave Olszewski
2015-02-16  5:20 ` Jeff King
2015-02-16  5:45   ` [PATCH 0/2] clean up push config callbacks Jeff King
2015-02-16  5:46     ` [PATCH 1/2] git_push_config: drop cargo-culted wt_status pointer Jeff King
2015-02-16  5:47     ` [PATCH 2/2] builtin/push.c: make push_default a static variable Jeff King
2015-02-16  5:57       ` Junio C Hamano
2015-02-17 10:46       ` Jeff King
2015-02-17 17:45         ` Junio C Hamano
2015-02-17 18:23           ` Jeff King
2015-02-17 22:16             ` Junio C Hamano
2015-02-18 18:50               ` Jeff King
2015-02-18 19:08                 ` Junio C Hamano
2015-02-18 19:25                   ` Jeff King [this message]
2015-02-18 19:50                     ` Junio C Hamano
2015-02-18 20:03                       ` Jeff King
2015-02-16  5:54     ` [PATCH 3/2] push: allow --follow-tags to be set by config push.followTags Jeff King
2015-02-16  6:02       ` Junio C Hamano
2015-02-16  6:10         ` [PATCH 0/3] cleaner bit-setting in cmd_push Jeff King
2015-02-16  6:12           ` [PATCH 1/3] cmd_push: set "atomic" bit directly Jeff King
2015-02-16  6:13           ` [PATCH 2/3] cmd_push: pass "flags" pointer to config callback Jeff King
2015-02-16  7:05             ` Junio C Hamano
2015-02-16  7:16               ` Jeff King
2015-02-16  6:16           ` [PATCH 3/3] push: allow --follow-tags to be set by config push.followTags Jeff King
2015-03-14  6:06             ` Junio C Hamano
2015-03-14 17:34               ` Jeff King
2015-03-14 17:50               ` Dave Olszewski
2015-03-14 22:08                 ` Junio C Hamano
2015-02-16  6:11         ` [PATCH 3/2] " Junio C Hamano
2015-02-16  6:17           ` Jeff King

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150218192518.GA7891@peff.net \
    --to=peff@peff.net \
    --cc=cxreg@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).