All of lore.kernel.org
 help / color / mirror / Atom feed
From: Brandon Williams <bmwill@google.com>
To: Jeff King <peff@peff.net>
Cc: Jonathan Nieder <jrnieder@gmail.com>,
	git@vger.kernel.org, gitster@pobox.com,
	Johannes.Schindelin@gmx.de
Subject: Re: [PATCH v2 4/6] config: don't implicitly use gitdir
Date: Wed, 14 Jun 2017 10:14:54 -0700	[thread overview]
Message-ID: <20170614171454.GA55677@google.com> (raw)
In-Reply-To: <20170614062505.zojevt553sfhbt2h@sigill.intra.peff.net>

On 06/14, Jeff King wrote:
> On Tue, Jun 13, 2017 at 02:38:15PM -0700, Brandon Williams wrote:
> 
> > > The same comments as before still apply:
> > > 
> > > - this changes API to make opts->git_dir mandatory, which is error prone
> > >   and easily avoidable, e.g. by making git_dir an argument to
> > >   git_config_with_options
> > 
> > I still don't agree with this.  I have looked at all callers and ensured
> > that 'git_dir' will be set when appropriate in the 'config_options'
> > struct.  I find the notion ridiculous that I would need to change a
> > function's name or arguments every time the internals of the function
> > are adjusted or when an options struct obtains a new field.  Plus, there
> > is already an aptly named parameter of type 'config_options' with which
> > to hold options for the config machinery.  This struct is also added to
> > in a later patch to include commondir so that the gitdir vs commondir
> > issue can be resolved.
> 
> I've already said "I'm OK either way for this case", but let me clarify
> a bit.
> 
> It's not about changing a function's internals, or even the struct
> obtaining a new field. The key change here is that the _interface_
> changed. Callers used to be able to pass NULL for the git_dir and have
> the function behave one way, and now if they do so it behaves
> differently. That leads to spooky action at a distance. Code which you
> didn't know about still compiles but does something subtly different.
> 
> We can catch that at the compile stage, or we can catch it at the test
> stage, or we can decide it's somebody else's problem to deal with if
> they wrote code that the rest of the project hasn't seen.
> 
> But it is a real thing that comes up in a big, open project. There is no
> "looked at all the callers", because you can't see the whole universe of
> code. I do think it's a much bigger deal in a project like the kernel,
> which has hundreds of long-lasting forks. Git has only a handful, and we
> don't necessarily need to bend over backwards for people whose code
> hasn't been shared.

At this point I'm done arguing, I'll rename the function and drop the
'git' prefix as that's the only sensible name I can think of.

> 
> > > - the commit message doesn't say anything about to git dir vs common dir
> > >   change.  It needs to, or even better, the switch to use common dir
> > >   instead of git dir can happen as a separate patch.
> > 
> > There really isn't any switching in this patch.  One of the following
> > patches in this series addresses this problem in more detail though.
> 
> I would have expected that patch to actually come earlier. That fixes
> the bug there, and then this conversion patch becomes that much more
> straightforward.

True, I can reorder the patches in v3 so that this change flows better.

-- 
Brandon Williams

  reply	other threads:[~2017-06-14 17:15 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-12 21:34 [PATCH 0/4] config.h Brandon Williams
2017-06-12 21:34 ` [PATCH 1/4] config: create config.h Brandon Williams
2017-06-12 21:34 ` [PATCH 2/4] config: remove git_config_iter Brandon Williams
2017-06-13  0:49   ` Jonathan Nieder
2017-06-13  0:57     ` Jeff King
2017-06-12 21:34 ` [PATCH 3/4] config: don't include config.h by default Brandon Williams
2017-06-12 21:34 ` [PATCH 4/4] config: don't implicitly use gitdir Brandon Williams
2017-06-13  1:05   ` Jonathan Nieder
2017-06-13  1:23     ` Brandon Williams
2017-06-13  1:33       ` Jonathan Nieder
2017-06-13  1:38       ` Jonathan Nieder
2017-06-13  2:59         ` Jeff King
2017-06-13  6:16           ` Brandon Williams
2017-06-13  6:45             ` Jeff King
2017-06-13  7:08             ` Jeff King
2017-06-13 14:43               ` Brandon Williams
2017-06-13 17:06           ` Jonathan Nieder
2017-06-13  5:52         ` Brandon Williams
2017-06-13  6:29           ` Jeff King
2017-06-13 14:47             ` Brandon Williams
2017-06-12 21:45 ` [PATCH 0/4] config.h Jeff King
2017-06-12 21:53   ` Brandon Williams
2017-06-12 22:02     ` Jeff King
2017-06-12 22:06       ` Brandon Williams
2017-06-13  1:07 ` Jonathan Nieder
2017-06-13 21:03 ` [PATCH v2 0/6] config.h Brandon Williams
2017-06-13 21:03   ` [PATCH v2 1/6] config: create config.h Brandon Williams
2017-06-13 21:13     ` Jonathan Nieder
2017-06-13 21:03   ` [PATCH v2 2/6] config: remove git_config_iter Brandon Williams
2017-06-13 21:14     ` Jonathan Nieder
2017-06-13 21:03   ` [PATCH v2 3/6] config: don't include config.h by default Brandon Williams
2017-06-13 21:58     ` Jonathan Nieder
2017-06-13 21:03   ` [PATCH v2 4/6] config: don't implicitly use gitdir Brandon Williams
2017-06-13 21:08     ` Jonathan Nieder
2017-06-13 21:38       ` Brandon Williams
2017-06-13 21:51         ` Jonathan Nieder
2017-06-13 21:55           ` Junio C Hamano
2017-06-13 22:05             ` Jonathan Nieder
2017-06-14  4:40               ` Jacob Keller
2017-06-14  6:25         ` Jeff King
2017-06-14 17:14           ` Brandon Williams [this message]
2017-06-13 21:03   ` [PATCH v2 5/6] setup: teach discover_git_directory to respect the commondir Brandon Williams
2017-06-14  6:15     ` Jeff King
2017-06-14 17:19       ` Brandon Williams
2017-06-13 21:03   ` [PATCH v2 6/6] config: respect commondir Brandon Williams
2017-06-14 18:07   ` [PATCH v3 0/6] config.h Brandon Williams
2017-06-14 18:07     ` [PATCH v3 1/6] config: create config.h Brandon Williams
2017-06-14 18:07     ` [PATCH v3 2/6] config: remove git_config_iter Brandon Williams
2017-06-14 18:07     ` [PATCH v3 3/6] config: don't include config.h by default Brandon Williams
2017-06-14 18:07     ` [PATCH v3 4/6] setup: teach discover_git_directory to respect the commondir Brandon Williams
2017-06-14 18:07     ` [PATCH v3 5/6] config: respect commondir Brandon Williams
2017-06-14 18:07     ` [PATCH v3 6/6] config: don't implicitly use gitdir or commondir Brandon Williams
2017-06-15 19:59     ` [PATCH v3 0/6] config.h Junio C Hamano
2017-06-15 20:33       ` Brandon Williams
2017-06-15 21:09         ` Junio C Hamano
2017-06-15 21:18           ` Brandon Williams
2017-06-16  0:12             ` Brandon Williams

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=20170614171454.GA55677@google.com \
    --to=bmwill@google.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jrnieder@gmail.com \
    --cc=peff@peff.net \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.