On 03/20, Duy Nguyen wrote: > On Sun, Mar 19, 2017 at 8:43 PM, Ævar Arnfjörð Bjarmason > <avarab@xxxxxxxxx> wrote: > > On Sun, Mar 19, 2017 at 2:18 PM, brian m. carlson > > <sandals@xxxxxxxxxxxxxxxxxxxx> wrote: > >> On Sun, Mar 19, 2017 at 11:15:33AM +0100, Matthieu Moy wrote: > >>> I think the main problem is indeed "stop the users from shooting > >>> themselves in the foot". Many command-line options change the behavior > >>> completely so allowing users to enable them by default means allowing > >>> the users to change Git in such a way that scripts calling it are > >>> broken. > >>> > >>> This also doesn't help when troublshouting an issue as these options are > >>> typically something set once and for all and which you forget about. > >>> This typically leads to discussion in Q&A forums like: > >>> > >>> A: Can you run "git foo"? > >>> B: Here's the result: ... > >>> A: I don't understand, I can't reproduce here. > >>> > >>> just because B has a CLI option enabled by default. > >>> > >>> This is the same reasoning that leads Git to forbid aliasing an existing > >>> command to something else. > >>> > >>> OTOH, we already have almost "enable such or such option by default" > >>> with aliases. People who always run "git am" with "-3" can write > >>> > >>> [alias] > >>> a3 = am -3 > >>> > >>> and just run "git a3". > > > > I can't find the E-Mail chain now but this has been discussed on-list > > a while ago. I.e. having some getopt support to say for the push > > command, that the --rebase option can also come from the config, i.e. > > in this case the pull.rebase option. > > > > IIRC the consensus was that such a facility would allow commands or > > individual options to say "this command/option is configurable", thus > > of course all plumbing utilities would be unconfigurable, but > > porcelain scripts would be configurable by default, with some > > exceptions. > > This is exactly it! It's much better than adding individual config > variables (less work for sure, but messier). Maybe we should promote > the microproject "Add configuration options for commonly used cmdline > options" to project. If it's too short (I'm guessing the core code > could be done in a month), the gsoc student can always convert more > config to the new way. If in the future we did want better support for making user defaults (apart from aliases) for commands we could entertain creating a command like bash's 'command' which ignores any user defaults and executes a particular command in a vanilla mode. So if the user configured 'git am' to always use the -3 option then running `git command am` (or something akin to that) would just run the vanilla 'am' command with no options. Probably not the best idea since tooling would need to become aware of such a paradigm change, but its just a thought. -- Brandon Williams