On Thu, Apr 25, 2019 at 9:36 PM Jonathan Nieder <jrnieder@xxxxxxxxx> wrote: > > Hi, > > Ævar Arnfjörð Bjarmason wrote: > > > Because we don't have some general config facility for this it keeps > > coming up, and various existing/proposed options have their own little > > custom hacks for doing it, e.g. this for Barret Rhoden's proposed "blame > > skip commits" feature > > https://public-inbox.org/git/878swhfzxb.fsf@xxxxxxxxxxxxxxxxxxx/ > > (b.t.w. I *meant* /dev/null in that E-Mail, but due to PEBCAK wrote > > /dev/zero). > > I'm confused. Isn't that bog-standard Git usage, not a custom hack? > That is, I thought the intended behavior is always > > 1. For single-valued options, last value wins. > 2. For multi-valued options, empty clears the list. I didn't know this! Should it be documented? At least a quick skimming through config.txt does not mention anything about empty value clearing multi-valued options. I also wanted to see if it's true. However, the first var I checked, branch.*.merge does not follow this rule. I got disappointed and stopped. > 3. When there is a special behavior triggered by not supplying the > option at all, offer an explicit value like "default" that triggers > the same behavior, too. > > and that any instance of a command that isn't following that is a bug. Not sure how many we need to fix. The behaviour does make sense to me though. > Which of course leaves room for improvement in documentation and how > we organize the implementation (as Peff discussed in [1]), but isn't > it nice to already have something in place that doesn't require > inventing a new syntax? This cannot undefine a variable though, especially those single-valued ones. But I think for most cases, the user just needs to find out what is the default value and set to that one. I don't know if there is any case where the lack of a variable behaves differently (or the default value is too dynamic to be set manually) though. > Thanks, > Jonahtan > > [1] https://public-inbox.org/git/20180406175044.GA32228@xxxxxxxxxxxxxxxxxxxxx/ -- Duy