On Fri, Oct 14, 2022 at 5:37 PM Junio C Hamano <gitster@xxxxxxxxx> wrote: > > Tao Klerks <tao@xxxxxxxxxx> writes: > > > My understanding, from ad-hoc testing, is that using OPT_BOOL causes > > the target variable ("use_gui_tool" in this case) to *always* be set > > to either "1" or "0", regardless of whether the user sets the main > > flag, the --no form of the flag, or sets nothing at all. > > You are saying "git gc --keep-largest-pack" is broken ;-) Now that I look at that, that does appear to have been implied by what I was saying, yes! > > OPT_BOOL() and OPT_BOOL_F() are OPT_SET_INT() in disguise and there > is no "set to this default value if no command line option is given" > involved. At least I do not recall allowing such a code in. > I can confirm that it works the way you expected. I was sure I had experienced such behavior during my early attempts at tristate handling here, but in retrospect I was very much mistaken, not only because --keep-largest-pack is not broken, but also because I just ripped out all the arg-parsing function and enum stuff, and it all works fine with -1, 0 and 1 as you pointed out it should. I don't know exactly how I messed up my early testing, but I don't suppose it matters. Substantial simplification in the next update. Thanks!