Re: bug: compactionheuristic config var case issue
- From
Jeff King <peff@peff.net>
- Date
- Jun 16, 2016, 09:48 UTC
- Message-ID
- <20160616094815.GH15851@sigill.intra.peff.net>
- In-Reply-To
- <CACsJy8Dp_s9avkkA4x=EfTjkObBNF8sB3zhkdgXmjkipDNdvNw@mail.gmail.com>
On Wed, Jun 15, 2016 at 07:33:31PM +0700, Duy Nguyen wrote:
Show 12 quoted lines
> On Wed, Jun 15, 2016 at 5:39 PM, Brian Lalor <blalor@bravo5.org> wrote: > > I’m very happy to see the new compaction heuristic option; it’s the way I always thought diffs should read! > > > > The config option in the documentation references > > “diff.compactionHeuristic”, but diff.c does a case-sensitive > > comparison on “diff.compactionheuristic” (note the case of the “h” > > in “heuristic”) > > I think this misled you. All configuration variable names are > lower-cased before they reach that strcmp() call, the whole picture is > more like strcmp(tolower(var), "diff.compactionheuristic"), which I > believe is correct.
Yep, that is correct. Config keys are case-insensitive (except for the middle portion "Y" of a key like "X.Y.Z"), and the downcasing happens before they even hit the config callbacks.
> > and `git diff` does not honor the config. Confusingly, `git config > > diff.compactionheuristic` returns true when diff.compactionHeuristic > > is set in ~/.gitconfig. When diff.compactionheuristic is set to > > true in ~/.gitconfig, the desired behavior is achieved.
Brian, do you have a case you can share where it is not working as expected?
Config isn't enabled automatically for plumbing commands like diff-tree. So some commands may not respect it, but "git diff" definitely should.
-Peff