From: Dan Aloni <alonid@gmail.com>
To: Jeff King <peff@peff.net>
Cc: Eric Sunshine <sunshine@sunshineco.com>, Git List <git@vger.kernel.org>
Subject: Re: [PATCH v3] Add user.explicit boolean for when ident shouldn't be guessed
Date: Thu, 4 Feb 2016 07:36:46 +0200 [thread overview]
Message-ID: <20160204053646.GA24453@gmail.com> (raw)
In-Reply-To: <20160204040111.GA27371@sigill.intra.peff.net>
On Wed, Feb 03, 2016 at 11:01:11PM -0500, Jeff King wrote:
>[..]
> > > * Do these new tests really deserve a new test script, or would they
> > > fit into an existing script? (Genuine question.)
> >
> > I am not sure. IMHO it makes sense to have a new test script for a new
> > feature.
>
> I hope we never have more than 9999 features, then. :)
>
> On to the patch itself...
>
> > @@ -373,6 +374,21 @@ const char *fmt_ident(const char *name, const char *email,
> > die("unable to auto-detect email address (got '%s')", email);
> > }
> >
> > + if (ident_explicit) {
> > + if (name == git_default_name.buf &&
> > + !(committer_ident_explicitly_given & IDENT_NAME_GIVEN) &&
> > + !(author_ident_explicitly_given & IDENT_NAME_GIVEN))
> > + die("requested explicitly given ident in config, "
> > + "but user.name is not set, or environment is "
> > + "not set");
> > + if (email == git_default_email.buf &&
> > + !(committer_ident_explicitly_given & IDENT_MAIL_GIVEN) &&
> > + !(author_ident_explicitly_given & IDENT_MAIL_GIVEN))
> > + die("requested explicitly given ident in config, "
> > + "but user.email is not set, or environment is "
> > + "not set");
> > + }
> > +
>
> I'm not sure why this block is effectively repeated here, in
> git_author_info(), and in git_committer_info(). Don't the latter two
> just call fmt_ident?
Suspected that. Originally I started changing git_committer_info() and
git_author_info(), and only changed fmt_ident() later when I saw it
covers more cases. But the flow was confusing enough so I wasn't sure
whether to keep it.
> To be honest, I had expected something much simpler, like this (I
> omitted the config parsing for brevity):
>[..]
> In a sense, that encourages a nice workflow for your intended feature.
> You have to do:
>
> git clone -c user.name=... -c user.email=... clone ...
>
> to set up your ident in the newly-cloned repository, or else clone will
> yell at you. But it's a little unfriendly. If you are just cloning to
> view and not make commits, you don't need your ident set up. And worse,
> if you forget to add your "-c" ident, clone will go through the trouble
> to copy all of the objects, and only then complain about your ident.
I think that forcing to give the configuration in 'git clone' could be
problematic for automated tools (e.g. o build) that invoke 'git clone'
just for building purposes (i.e. read-only) to a tool-managed directory.
And what about sub-modules clones? It would be hard to distinguish manual
clones and automatic clones anyway.
> So I'd argue that this should only kick in for the strict case. Which
> means the check _has_ to go into fmt_ident, and we have to somehow
> inform fmt_ident of the four cases:
>
> 1. this ident came from git config
>
> 2. this ident came from the environment, but from explicit variables
>
> 3. this ident came from the environment; we guessed but the results
> look pretty good
>
> 4. this ident came from the environment; it's probably bogus
>
> Right now we can identify type 4, with the *_is_bogus flags. We can
> identify 3, because EXPLICITLY_GIVEN flags won't be set. But we can't
> tell the difference between types 1 and 2.
>
> I suppose there is also a type 0: "this ident was from GIT_COMMITTER_*
> and we did not bother to look up ident at all". But I think we agree
> that strictness and explicitness don't even come into play there.
Looks like an enum type would be better here instead of a set of booleans.
> So I think we can make this work by adding another variable to
> communicate the difference between types 1 and 2, and then act on it in
> fmt_ident only when "strict" is set. And I think "user.explicit" is not
> quite the right config name there. "user.guessIdent" is perhaps closer,
> but what we are really saying is "the ident must come from git config".
> So maybe "user.useConfigOnly" or something?
Yes, seems to me that useConfigOnly is better than both so far.
> I also wonder if we could simply expose the 4 levels of above in a
> variable, and default it to type-3. That would let people loosen or
> tighten as they see fit. But it would be a more complicated patch, so if
> nobody really cares about it beyond this use case, it may be overkill.
I get the impression from this and your later E-Mails that there are
much more cases to cover when testing this feature (and I would not
like to break stuff implementing this, obviously).
The code should be cleaned up anyway. I only delved into that code for
the first time two days ago, so it would take me more time to come up
with a new one (though reading your overview here of the cases is going
to be helpful, thanks).
--
Dan Aloni
next prev parent reply other threads:[~2016-02-04 5:36 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-02 19:54 [PATCH] Trick to force setup of a specific configured E-Mail per repo Dan Aloni
2016-02-03 3:56 ` Jeff King
2016-02-03 5:19 ` Duy Nguyen
2016-02-03 5:22 ` Jeff King
2016-02-03 5:26 ` Duy Nguyen
2016-02-03 5:53 ` Jeff King
2016-02-03 8:01 ` Junio C Hamano
2016-02-03 8:21 ` Dan Aloni
2016-02-03 17:47 ` Eric Sunshine
2016-02-03 19:22 ` [PATCH v3] Add user.explicit boolean for when ident shouldn't be guessed Dan Aloni
2016-02-04 4:01 ` Jeff King
2016-02-04 4:19 ` Jeff King
2016-02-04 4:32 ` Jeff King
2016-02-04 5:36 ` Dan Aloni [this message]
2016-02-04 5:50 ` Jeff King
2016-02-04 9:07 ` Dan Aloni
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=20160204053646.GA24453@gmail.com \
--to=alonid@gmail.com \
--cc=git@vger.kernel.org \
--cc=peff@peff.net \
--cc=sunshine@sunshineco.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).