Junio C Hamano <junkio@xxxxxxx> wrote: > Timo Hirvonen <tihirvon@xxxxxxxxx> writes: > > > Eric Wong <normalperson@xxxxxxxx> wrote: > > > >> * unbundling of short options: -uC20n20z => -u -C20 -n20 -z > > > > Does anyone ever use this? I think this makes sense only for flags that > > don't have parameters but that would create an ugly special case. Is it > > too hard to type "-u -C=20 -n=20 -z"? > > I can already hear in my head that people would start talking > about "git understands insane abbeviations of options". It > might be unambiguous, but that does not change it is a bit on > the insane side. People would probably expect -nuz can be split > into -n -u -z, and the current handcrafted mess (although it is > more obvious and easy to work with when reading and maintaining > the existing code) is not abbreviation friendly, which we would > want to do something about. But I think squashing options with > parameters together is going a bit too far. I think numeric parameters are unambiguous when bundled. I'm used to things like `diff -ru10p` working, *shrug* Non-numeric parameters can only be used if the option is at the end of the bundled string: git commit -sam'this is my commit message' would work git commit -m'say hello' would also work but git commit -mas'this is my commit message' would not work as intended (where user wanted -a -s, too) > > --with-r => --patch-with-raw works great > > I personally think this also is too much. There are (currently) two types of abbreviations, one is the prefix one used commonly in shell scripts: -e|--e|--ed|--edi|--edit. I think this should always be supported as most of our shell scripts already do. The other one tokenizes on '-' first and looks for a prefix match after each '-'. I'd like to make that at least optional: diff --git a/gitopt.c b/gitopt.c index 056e163..9ca6025 100644 --- a/gitopt.c +++ b/gitopt.c gitopt.c @@ -427,7 +427,7 @@ static void fallback_long(const struct o } /* ok, try harder, based on tokenization on '-' */ - if (found < 0) { + if (found < 0 && getenv("GIT_ABBREV_HARDER")) { for (i = 0; ost[i].l || ost[i].s; i++) { s = &(ost[i]); if (s->l && opt_token_match(s,cur)) { -- Eric Wong - : 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