On Wed, Mar 16, 2016 at 1:54 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Pranit Bauva <pranit.bauva@xxxxxxxxx> writes: > >> First one to introduce a new variable `config_verbose` to store the >> value read by the config. Till then the value of verbose can be set >> through command line options. Depending on the situation as you >> described, it can then make the modification. Another approach would >> be to swap the places where the configuration file is read and where >> arguments are parsed. I personally think the first approach as more >> appropriate as in the latter one, there might be some parts of code >> which can break. > > Changing config-first-and-then-command-line is likely to break > things, unless you do a lot more work to avoid breakage ;-) I had guessed this correctly! :) > Wouldn't it be the simplest to do: > > * initialize opt-verbose to "unspecified"; > * initialize config-verbosity to "unspecified"; > * let git_config() update config-verbosity; > * let parse_options() update opt-verbose. > > and then > > * if opt-verbose is still "unspecified", then overwrite it with > config-verbosity. > > * if opt-verbose is still "unspecified" after that, then neither > the command line nor the configuration gave you verbosity. > > * otherwise opt-verbose at this point has what verbosity level to > use. > > ? I just realized that both of our approaches breaks the condition with no-verbose. If commit.verbose is set to true and --no-verbose is passed, then it should not give verbose output. But I suppose that is the reason you are saying "unspecified". If `opt-verbose` is 0 then it would mean --no-verbose is activated. If it is still "unspecified" then there would not be any such option. But now the question is how do you set a variable as "unspecified". I can set `opt-verbose` as -1. But then I am still not convinced for the requirement of another variable `opt-verbose` as I believe that the `verbose` and `config_verbose` are quite enough for this. First `config_verbose` will read from configuration file. Then `verbose` will read from command line options. If `verbose` is unspecified then it will use `config_verbose`, else if `verbose` is 0 it will ignore `config_verbose` else if `verbose` has a value greater than 0 then it will stay as it is. Or is there something else which I forgot to consider? -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html