Re: [PATCH 0/8] fix git-config with duplicate variable entries
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Nov 20, 2012, 19:08 UTC
- Message-ID
- <7vsj84rt1g.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <20121023223502.GA23194@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 26 quoted lines
> On Tue, Oct 23, 2012 at 04:13:44PM +0200, Ævar Arnfjörð Bjarmason wrote: > >> > It fails a few tests in t1300, but it looks like those tests are testing >> > for the behavior we have identified as wrong, and should be fixed. >> >> I think this patch looks good. > > Thanks. It had a few minor flaws (like a memory leak). I fixed those, > updated the tests, and split it out into a few more readable commits. In > the process, I managed to uncover and fix a few other memory leaks in > the area. I think this version is much more readable, and writing the > rationale for patch 7 convinced me that it's the right thing to do. > Another round of review would be appreciated. > > [1/8]: t1300: style updates > [2/8]: t1300: remove redundant test > [3/8]: t1300: test "git config --get-all" more thoroughly > [4/8]: git-config: remove memory leak of key regexp > [5/8]: git-config: fix regexp memory leaks on error conditions > [6/8]: git-config: collect values instead of immediately printing > [7/8]: git-config: do not complain about duplicate entries > [8/8]: git-config: use git_config_with_options > > For those just joining us, the interesting bit is patch 7, which fixes > some inconsistencies between the "git-config" tool and how the internal > config callbacks work.
The way for the Porcelain scripts to mimick the internal "last one wins" has been to grab values out of --get-all and do the "last one wins" themselves, and I agree that a mode that frees them from having to worry about it is a good *addition*. I would even say that if we were designing "git config" plumbing without existing users, it would be the only sensible behaviour for "--get".
But "git config --get" users have been promised to get errors on duplicate values so far, so I have to say this needs to come with a big red sign about API breakage.
I would feel safer to introduce --get-one or something now, and worry about migration as a separate step.