* [PATCH 0/3] diff topic tweaks @ 2007-12-14 11:23 Wincent Colaiuta 2007-12-14 11:23 ` [PATCH 1/3] Revert changes and extend diff option documentation Wincent Colaiuta 0 siblings, 1 reply; 24+ messages in thread From: Wincent Colaiuta @ 2007-12-14 11:23 UTC (permalink / raw) To: git; +Cc: gitster I've eyeballed and done some testing of the changes that Junio pushed out to "next" and they all look good to me. Some minor adjustments: [1/3] Revert changes and extend diff option documentation Seeing as Junio's adjustments changed the behaviour, the documentation needs to be changed as well. [2/3] Use shorter error messages for whitespace problems Cosmetic only. [3/3] Test interaction between diff --check and --exit-code Just to make sure it does what we think it does (and it does). Cheers, Wincent ^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH 1/3] Revert changes and extend diff option documentation 2007-12-14 11:23 [PATCH 0/3] diff topic tweaks Wincent Colaiuta @ 2007-12-14 11:23 ` Wincent Colaiuta 2007-12-14 11:23 ` [PATCH 2/3] Use shorter error messages for whitespace problems Wincent Colaiuta 2007-12-16 19:43 ` [PATCH 1/3] Revert changes and extend diff option documentation Junio C Hamano 0 siblings, 2 replies; 24+ messages in thread From: Wincent Colaiuta @ 2007-12-14 11:23 UTC (permalink / raw) To: git; +Cc: gitster, Wincent Colaiuta Revert the part of 62c6489 which says that --check affects the exit code of "git diff"; as of da31b35 this is only true if you pass --exit-code as well or disable the pager with --no-pager or GIT_PAGER=cat. Instead extend the discussion of the --exit-code switch. Also, instead of hard-coding "what whitespace errors are", mention that their classification can be controlled via config and per-path attributes. Signed-off-by: Wincent Colaiuta <win@wincent.com> --- Documentation/diff-options.txt | 13 +++++++------ 1 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt index 9ecc1d7..54207f0 100644 --- a/Documentation/diff-options.txt +++ b/Documentation/diff-options.txt @@ -92,10 +92,10 @@ endif::git-format-patch[] file gives the default to do so. --check:: - Warn if changes introduce trailing whitespace - or an indent that uses a space before a tab. Exits with - non-zero status if problems are found. Not compatible with - --exit-code. + Warn if changes introduce whitespace problems (such as + trailing whitespace). Configuration and per-path attributes + control what git classifies as a whitespace problem (see + gitlink:git-config[1] and gitlink:gitattributes[5]). --full-index:: Instead of the first handful characters, show full @@ -197,8 +197,9 @@ endif::git-format-patch[] --exit-code:: Make the program exit with codes similar to diff(1). - That is, it exits with 1 if there were differences and - 0 means no differences. + That is, it exits with 0 if there were no differences + and 1 if there were. If --check is used and the + differences introduce whitespace problems exits with 3. --quiet:: Disable all output of the program. Implies --exit-code. -- 1.5.4.rc0.1099.g76fa0-dirty ^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH 2/3] Use shorter error messages for whitespace problems 2007-12-14 11:23 ` [PATCH 1/3] Revert changes and extend diff option documentation Wincent Colaiuta @ 2007-12-14 11:23 ` Wincent Colaiuta 2007-12-14 11:23 ` [PATCH 3/3] Test interaction between diff --check and --exit-code Wincent Colaiuta 2007-12-16 19:43 ` [PATCH 1/3] Revert changes and extend diff option documentation Junio C Hamano 1 sibling, 1 reply; 24+ messages in thread From: Wincent Colaiuta @ 2007-12-14 11:23 UTC (permalink / raw) To: git; +Cc: gitster, Wincent Colaiuta The initial version of the whitespace_error_string() function took the messages from builtin-apply.c rather than the shorter messages from diff.c. This commit addresses Junio's concern that these messages might be too long (now that we can emit multiple warnings per line). Signed-off-by: Wincent Colaiuta <win@wincent.com> --- t/t4015-diff-whitespace.sh | 2 +- ws.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/t/t4015-diff-whitespace.sh b/t/t4015-diff-whitespace.sh index 05ef78b..9bff8f5 100755 --- a/t/t4015-diff-whitespace.sh +++ b/t/t4015-diff-whitespace.sh @@ -121,7 +121,7 @@ test_expect_success 'check mixed spaces and tabs in indent' ' # This is indented with SP HT SP. echo " foo();" > x && - git diff --check | grep "Space in indent is followed by a tab" + git diff --check | grep "space before tab in indent" ' diff --git a/ws.c b/ws.c index d7d1522..46cbdd6 100644 --- a/ws.c +++ b/ws.c @@ -101,16 +101,16 @@ char *whitespace_error_string(unsigned ws) struct strbuf err; strbuf_init(&err, 0); if (ws & WS_TRAILING_SPACE) - strbuf_addstr(&err, "Adds trailing whitespace"); + strbuf_addstr(&err, "trailing whitespace"); if (ws & WS_SPACE_BEFORE_TAB) { if (err.len) strbuf_addstr(&err, ", "); - strbuf_addstr(&err, "Space in indent is followed by a tab"); + strbuf_addstr(&err, "space before tab in indent"); } if (ws & WS_INDENT_WITH_NON_TAB) { if (err.len) strbuf_addstr(&err, ", "); - strbuf_addstr(&err, "Indent more than 8 places with spaces"); + strbuf_addstr(&err, "indent with spaces"); } return strbuf_detach(&err, NULL); } -- 1.5.4.rc0.1099.g76fa0-dirty ^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH 3/3] Test interaction between diff --check and --exit-code 2007-12-14 11:23 ` [PATCH 2/3] Use shorter error messages for whitespace problems Wincent Colaiuta @ 2007-12-14 11:23 ` Wincent Colaiuta 0 siblings, 0 replies; 24+ messages in thread From: Wincent Colaiuta @ 2007-12-14 11:23 UTC (permalink / raw) To: git; +Cc: gitster, Wincent Colaiuta Make sure that it works as advertised in the man page. Signed-off-by: Wincent Colaiuta <win@wincent.com> --- t/t4017-diff-retval.sh | 29 +++++++++++++++++++++++++++++ 1 files changed, 29 insertions(+), 0 deletions(-) diff --git a/t/t4017-diff-retval.sh b/t/t4017-diff-retval.sh index 6873190..dc0b712 100755 --- a/t/t4017-diff-retval.sh +++ b/t/t4017-diff-retval.sh @@ -76,4 +76,33 @@ test_expect_success 'git diff-index --cached HEAD' ' } ' +test_expect_success '--check --exit-code returns 0 for no difference' ' + + git diff --check --exit-code + +' + +test_expect_success '--check --exit-code returns 1 for a clean difference' ' + + echo "good" > a && + git diff --check --exit-code + test $? = 1 + +' + +test_expect_success '--check --exit-code returns 3 for a dirty difference' ' + + echo "bad " >> a && + git diff --check --exit-code + test $? = 3 + +' + +test_expect_success '--check with --no-pager returns 2 for dirty difference' ' + + git --no-pager diff --check + test $? = 2 + +' + test_done -- 1.5.4.rc0.1099.g76fa0-dirty ^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: [PATCH 1/3] Revert changes and extend diff option documentation 2007-12-14 11:23 ` [PATCH 1/3] Revert changes and extend diff option documentation Wincent Colaiuta 2007-12-14 11:23 ` [PATCH 2/3] Use shorter error messages for whitespace problems Wincent Colaiuta @ 2007-12-16 19:43 ` Junio C Hamano 2007-12-17 8:27 ` git.c option parsing (was: [PATCH 1/3] Revert changes and extend diff option documentation) Wincent Colaiuta 1 sibling, 1 reply; 24+ messages in thread From: Junio C Hamano @ 2007-12-16 19:43 UTC (permalink / raw) To: Wincent Colaiuta; +Cc: git Wincent Colaiuta <win@wincent.com> writes: > diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt > index 9ecc1d7..54207f0 100644 > --- a/Documentation/diff-options.txt > +++ b/Documentation/diff-options.txt > @@ -92,10 +92,10 @@ endif::git-format-patch[] > file gives the default to do so. > > --check:: > - Warn if changes introduce trailing whitespace > - or an indent that uses a space before a tab. Exits with > - non-zero status if problems are found. Not compatible with > - --exit-code. > + Warn if changes introduce whitespace problems (such as > + trailing whitespace). Configuration and per-path attributes > + control what git classifies as a whitespace problem (see > + gitlink:git-config[1] and gitlink:gitattributes[5]). This is not quite right, is it? The command still exits with exit code. It is just that the calling process does not see it if you let it spawn the pager. > @@ -197,8 +197,9 @@ endif::git-format-patch[] > > --exit-code:: > Make the program exit with codes similar to diff(1). > - That is, it exits with 1 if there were differences and > - 0 means no differences. > + That is, it exits with 0 if there were no differences > + and 1 if there were. If --check is used and the > + differences introduce whitespace problems exits with 3. This side is correct. ^ permalink raw reply [flat|nested] 24+ messages in thread
* git.c option parsing (was: [PATCH 1/3] Revert changes and extend diff option documentation) 2007-12-16 19:43 ` [PATCH 1/3] Revert changes and extend diff option documentation Junio C Hamano @ 2007-12-17 8:27 ` Wincent Colaiuta 2007-12-17 8:48 ` git.c option parsing Junio C Hamano 0 siblings, 1 reply; 24+ messages in thread From: Wincent Colaiuta @ 2007-12-17 8:27 UTC (permalink / raw) To: Junio C Hamano; +Cc: git El 16/12/2007, a las 20:43, Junio C Hamano escribió: > Wincent Colaiuta <win@wincent.com> writes: > >> diff --git a/Documentation/diff-options.txt b/Documentation/diff- >> options.txt >> index 9ecc1d7..54207f0 100644 >> --- a/Documentation/diff-options.txt >> +++ b/Documentation/diff-options.txt >> @@ -92,10 +92,10 @@ endif::git-format-patch[] >> file gives the default to do so. >> >> --check:: >> - Warn if changes introduce trailing whitespace >> - or an indent that uses a space before a tab. Exits with >> - non-zero status if problems are found. Not compatible with >> - --exit-code. >> + Warn if changes introduce whitespace problems (such as >> + trailing whitespace). Configuration and per-path attributes >> + control what git classifies as a whitespace problem (see >> + gitlink:git-config[1] and gitlink:gitattributes[5]). > > This is not quite right, is it? The command still exits with exit > code. > It is just that the calling process does not see it if you let it > spawn > the pager. Yes, I know, but I thought that in the interests of brevity it would be best not to clutter up the man page with that kind of detail. If a user is interested in the exit code they will probably do a search of the man page for "exit" and find the --exit-code section, which gives them the answer they want. Adding a line like "Also, if you pass --no- pager will exit with a non-zero exit code" doesn't really add much other than clutter IMO. Incidentally, and this is really tangential, I find the whole "--no- pager" UI pretty horrendous, along with all the other switches parsed by git.c. Basically, understanding these switches requires the user to know internal implementation details that he/she should most definitely not have to know. For example, "git --no-pager diff --check" works as expected but "git diff --no-pager --check" carps with "error: invalid option: --no- pager". To understand why this is so, the user needs to know too many things which should be internal implementation details: - that "git" is just a wrapper tool that chooses a low level command to run and runs it - that there are some parameters that affect the way all the other commands run and should be passed to "git" only, prior to the "subcommand" part - that those parameters can't be passed after the "subcommand" specification And seeing as we are actively encouraging users to always use the "git diff" form rather than "git-diff", in a sense we are actively encourage them to think of Git as a single tool rather than a collection of commands, it seems like an ugly wart that we then have to teach them that some parameters must go *between* the "git" and the "diff" but not after. And of course, if you always use the "git-diff" then there's no way to use the --no-pager switch at all; you instead have to use an environment variable. I've been thinking about ways to iron out these wrinkles and unify things. Here's my thinking about a possible cause of action: 1. Factor out the code in git.c which handles the common arguments into separate functions; at this stage it's just a refactoring and the behaviour is unchanged, but those separate functions will later be used from the builtins. 2. Teach the builtin commands to handle those common arguments by using the common functions. For example, we teach "git diff" to understand the --no-pager option by leveraging the functions we just factored out in the previous step. 3. Now, when git.c sees an argument that would normally go before a "subcommand" it no longer needs to handle it directly itself but can instead pass it along to the subcommand. In other words, where it formerly saw "git --no-pager diff args..." and handled the --no-pager part itself, it can instead just pass "--no-pager args..." to the builtin diff. This gives us backward compatibility with the old format, but the new format (user types "git diff --no-pager args...") will work also. 4. Update the docs: make a common-options.txt page which is included in all other manual pages either listing the options explicitly or directing users to the git(7) manpage (which should probably become git(1) if we are talking about Git as a single tool) to learn about them. Benefits of this approach: we'd have a consistent UI which didn't require too much knowledge of the internals of Git, and all of the following would work: git diff --no-pager args... git-diff --no-pager args... git --no-pager diff args... Looking at the options currently parsed by git.c, I think most of them would be very straightforward to support in the way described above: --paginate --no-pager --git-dir --work-tree --bare Existing special cases: --help (calls "git help foo") --version Problematic: -p (short form of --paginate: seeing as -p is already used to mean other things by other commands, I think this should be deprecated as a synonym for --paginate) Tricky: --exec-path (this is the only one which git.c *must* handle before passing control to the "subcommand", so it actually has to look ahead past the "subcommand" part in order to see it and act upon it. Basically it would just have to look at all the arguments up to but not including a "--" pathspec marker checking to see if --exec-path is supplied) Of course, the above plan will only work for builtins, not for scripts. An additional step would be needed to enable scripts to handle these options; perhaps teaching "git rev-parse" something... Cheers, Wincent ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: git.c option parsing 2007-12-17 8:27 ` git.c option parsing (was: [PATCH 1/3] Revert changes and extend diff option documentation) Wincent Colaiuta @ 2007-12-17 8:48 ` Junio C Hamano 2007-12-17 9:01 ` Wincent Colaiuta 0 siblings, 1 reply; 24+ messages in thread From: Junio C Hamano @ 2007-12-17 8:48 UTC (permalink / raw) To: Wincent Colaiuta; +Cc: git Wincent Colaiuta <win@wincent.com> writes: > Of course, the above plan will only work for builtins, not for > scripts. An additional step would be needed to enable scripts to > handle these options; perhaps teaching "git rev-parse" something... As long as special options stay special and we make a rule not to allow any subcommand to assign its own meaning to them, the git wrapper can lookahead and reorder, when seeing a command line: git scripted-command --special into git --special scripted-command And that approach would work well for built-ins as well, I would imagine. There is one minor detail, though. There could be an option-parameter that is literally --special. E.g. git grep -e --no-paginate should not be reordered to git --no-paginate grep -e ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: git.c option parsing 2007-12-17 8:48 ` git.c option parsing Junio C Hamano @ 2007-12-17 9:01 ` Wincent Colaiuta 2007-12-17 9:20 ` Pierre Habouzit 0 siblings, 1 reply; 24+ messages in thread From: Wincent Colaiuta @ 2007-12-17 9:01 UTC (permalink / raw) To: Junio C Hamano; +Cc: git El 17/12/2007, a las 9:48, Junio C Hamano escribió: > Wincent Colaiuta <win@wincent.com> writes: > >> Of course, the above plan will only work for builtins, not for >> scripts. An additional step would be needed to enable scripts to >> handle these options; perhaps teaching "git rev-parse" something... > > As long as special options stay special and we make a rule not to > allow > any subcommand to assign its own meaning to them, the git wrapper can > lookahead and reorder, when seeing a command line: > > git scripted-command --special > > into > > git --special scripted-command > > And that approach would work well for built-ins as well, I would > imagine. Yes, and it would be simpler to implement also. The only downside is that without all the other proposed changes things like "git-dashed -- special" wouldn't work; only teaching the builtins to actually handle the special options would work in that case. And in the interests of consistency I think it's pretty important that "git subcommand -- special" and "git-subcommand --special" both work the same as the user would (reasonably) expect them to... > There is one minor detail, though. There could be an option-parameter > that is literally --special. E.g. > > git grep -e --no-paginate > > should not be reordered to > > git --no-paginate grep -e Yes, that's definitely one that would need to be treated as a special case. Cheers, Wincent ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: git.c option parsing 2007-12-17 9:01 ` Wincent Colaiuta @ 2007-12-17 9:20 ` Pierre Habouzit 2007-12-17 9:26 ` Pierre Habouzit 2007-12-17 9:50 ` [PATCH] Have a flag to stop the option parsing at the first argument Pierre Habouzit 0 siblings, 2 replies; 24+ messages in thread From: Pierre Habouzit @ 2007-12-17 9:20 UTC (permalink / raw) To: Wincent Colaiuta; +Cc: Junio C Hamano, git [-- Attachment #1: Type: text/plain, Size: 2703 bytes --] On Mon, Dec 17, 2007 at 09:01:56AM +0000, Wincent Colaiuta wrote: > El 17/12/2007, a las 9:48, Junio C Hamano escribió: > > >Wincent Colaiuta <win@wincent.com> writes: > > > >>Of course, the above plan will only work for builtins, not for > >>scripts. An additional step would be needed to enable scripts to > >>handle these options; perhaps teaching "git rev-parse" something... > > > >As long as special options stay special and we make a rule not to allow > >any subcommand to assign its own meaning to them, the git wrapper can > >lookahead and reorder, when seeing a command line: > > > > git scripted-command --special > > > >into > > > > git --special scripted-command > > > >And that approach would work well for built-ins as well, I would > >imagine. > > Yes, and it would be simpler to implement also. The only downside is that > without all the other proposed changes things like "git-dashed --special" > wouldn't work; only teaching the builtins to actually handle the special > options would work in that case. And in the interests of consistency I > think it's pretty important that "git subcommand --special" and > "git-subcommand --special" both work the same as the user would > (reasonably) expect them to... There is a simple way to do that, that wouldn't conflict with the git grep -e one, that would be to define an array of "Special" flags, in a macro, and have every builtin using parseopt adding that macro at the end. Then in git.c, you would have to scan for the command name when called through `git --opt1 --opt2 foo`, and pass it to parseopt with as argc the position of `foo` in the argument array. Parseopt will trust you for it, and if it returns a non zero count, you have to barf, then you just need to work on the rest of the array. That would mean in pseudo code that this would work like: // ... /* when in `git --opt1 --opt2 foo -a -b -c` mode: */ int cmd_pos = git_find_builtin_command_name(argc, argv); int count = parse_options(cmd_pos, argv, git_generic_options, "git [special-options] cmd [options]", 0); if (count) die("unknown git command: `%s`", argv[0]); argv += cmd_pos; argc -= cmd_pos; /* here we simulate an argv of {"foo", "-a", "-b", "-c"} */ Of course this only works on builtins that do support parseopt other ones will need the massage you describe. For them the sole thing to change would be to replace the OPT_END() with a GIT_SPECIAL_OPTS() or sth alike. -- ·O· Pierre Habouzit ··O madcoder@debian.org OOO http://www.madism.org [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: git.c option parsing 2007-12-17 9:20 ` Pierre Habouzit @ 2007-12-17 9:26 ` Pierre Habouzit 2007-12-17 9:50 ` [PATCH] Have a flag to stop the option parsing at the first argument Pierre Habouzit 1 sibling, 0 replies; 24+ messages in thread From: Pierre Habouzit @ 2007-12-17 9:26 UTC (permalink / raw) To: Wincent Colaiuta, Junio C Hamano, git [-- Attachment #1: Type: text/plain, Size: 1946 bytes --] On Mon, Dec 17, 2007 at 09:20:13AM +0000, Pierre Habouzit wrote: > There is a simple way to do that, that wouldn't conflict with the git > grep -e one, that would be to define an array of "Special" flags, in a > macro, and have every builtin using parseopt adding that macro at the > end. > > Then in git.c, you would have to scan for the command name when called > through `git --opt1 --opt2 foo`, and pass it to parseopt with as argc > the position of `foo` in the argument array. Parseopt will trust you for > it, and if it returns a non zero count, you have to barf, then you just > need to work on the rest of the array. That would mean in pseudo code > that this would work like: > > // ... > /* when in `git --opt1 --opt2 foo -a -b -c` mode: */ > int cmd_pos = git_find_builtin_command_name(argc, argv); > int count = parse_options(cmd_pos, argv, git_generic_options, > "git [special-options] cmd [options]", 0); > if (count) > die("unknown git command: `%s`", argv[0]); > argv += cmd_pos; > argc -= cmd_pos; > /* here we simulate an argv of {"foo", "-a", "-b", "-c"} */ > > Of course this only works on builtins that do support parseopt other > ones will need the massage you describe. For them the sole thing to > change would be to replace the OPT_END() with a GIT_SPECIAL_OPTS() or > sth alike. Oh and I forgot to say that I find this is a brilliant idea, because there is quite a _lot_ of options that are very pervasive: --quiet, --verbose, … are pretty obvious candidates, but things like: `--abbrev=12` does make a lot of sense to me, and it would factor quite a lot of option structures :) Okay `git --abbrev=12 status` probably makes no real sense, but who cares ? -- ·O· Pierre Habouzit ··O madcoder@debian.org OOO http://www.madism.org [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH] Have a flag to stop the option parsing at the first argument. 2007-12-17 9:20 ` Pierre Habouzit 2007-12-17 9:26 ` Pierre Habouzit @ 2007-12-17 9:50 ` Pierre Habouzit 2007-12-17 10:34 ` Johannes Schindelin 2007-12-17 11:10 ` Wincent Colaiuta 1 sibling, 2 replies; 24+ messages in thread From: Pierre Habouzit @ 2007-12-17 9:50 UTC (permalink / raw) To: Wincent Colaiuta, Junio C Hamano, git [-- Attachment #1: Type: text/plain, Size: 1737 bytes --] Signed-off-by: Pierre Habouzit <madcoder@debian.org> --- > // ... > /* when in `git --opt1 --opt2 foo -a -b -c` mode: */ > int cmd_pos = git_find_builtin_command_name(argc, argv); > int count = parse_options(cmd_pos, argv, git_generic_options, > "git [special-options] cmd [options]", 0); > if (count) > die("unknown git command: `%s`", argv[0]); > argv += cmd_pos; > argc -= cmd_pos; > /* here we simulate an argv of {"foo", "-a", "-b", "-c"} */ Or even simpler, with the following specifically tailored patch you can directly write: argc = parse_options(argc, argv, git_generic_options, "git [generic-options] <command> [cmd-options]", PARSE_OPT_STOP_AT_ARG); and then {argc, argv} will exactly be the NULL-terminated array starting with the builtin command. Kind of nice :) parse-options.c | 2 ++ parse-options.h | 1 + 2 files changed, 3 insertions(+), 0 deletions(-) diff --git a/parse-options.c b/parse-options.c index 7a08a0c..4f5c55e 100644 --- a/parse-options.c +++ b/parse-options.c @@ -229,6 +229,8 @@ int parse_options(int argc, const char **argv, const struct option *options, const char *arg = args.argv[0]; if (*arg != '-' || !arg[1]) { + if (flags & PARSE_OPT_STOP_AT_ARG) + break; argv[j++] = args.argv[0]; continue; } diff --git a/parse-options.h b/parse-options.h index 102ac31..7c636b9 100644 --- a/parse-options.h +++ b/parse-options.h @@ -18,6 +18,7 @@ enum parse_opt_type { enum parse_opt_flags { PARSE_OPT_KEEP_DASHDASH = 1, + PARSE_OPT_STOP_AT_ARG = 2, }; enum parse_opt_option_flags { -- 1.5.4.rc0.1147.gfd22d [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: [PATCH] Have a flag to stop the option parsing at the first argument. 2007-12-17 9:50 ` [PATCH] Have a flag to stop the option parsing at the first argument Pierre Habouzit @ 2007-12-17 10:34 ` Johannes Schindelin 2007-12-17 11:10 ` Wincent Colaiuta 1 sibling, 0 replies; 24+ messages in thread From: Johannes Schindelin @ 2007-12-17 10:34 UTC (permalink / raw) To: Pierre Habouzit; +Cc: Wincent Colaiuta, Junio C Hamano, git Hi, On Mon, 17 Dec 2007, Pierre Habouzit wrote: > diff --git a/parse-options.c b/parse-options.c > index 7a08a0c..4f5c55e 100644 > --- a/parse-options.c > +++ b/parse-options.c > @@ -229,6 +229,8 @@ int parse_options(int argc, const char **argv, const struct option *options, > const char *arg = args.argv[0]; > > if (*arg != '-' || !arg[1]) { > + if (flags & PARSE_OPT_STOP_AT_ARG) > + break; > argv[j++] = args.argv[0]; > continue; > } > diff --git a/parse-options.h b/parse-options.h > index 102ac31..7c636b9 100644 > --- a/parse-options.h > +++ b/parse-options.h > @@ -18,6 +18,7 @@ enum parse_opt_type { > > enum parse_opt_flags { > PARSE_OPT_KEEP_DASHDASH = 1, > + PARSE_OPT_STOP_AT_ARG = 2, > }; > > enum parse_opt_option_flags { Funny. I already posted this: http://repo.or.cz/w/git/dscho.git?a=commitdiff;h=504f763a28b3109fce258b36f9e94e7c54be6f3d Ciao, Dscho ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] Have a flag to stop the option parsing at the first argument. 2007-12-17 9:50 ` [PATCH] Have a flag to stop the option parsing at the first argument Pierre Habouzit 2007-12-17 10:34 ` Johannes Schindelin @ 2007-12-17 11:10 ` Wincent Colaiuta 2007-12-17 11:47 ` Pierre Habouzit 1 sibling, 1 reply; 24+ messages in thread From: Wincent Colaiuta @ 2007-12-17 11:10 UTC (permalink / raw) To: Pierre Habouzit; +Cc: Junio C Hamano, git El 17/12/2007, a las 10:50, Pierre Habouzit escribió: > Signed-off-by: Pierre Habouzit <madcoder@debian.org> > --- >> // ... >> /* when in `git --opt1 --opt2 foo -a -b -c` mode: */ >> int cmd_pos = git_find_builtin_command_name(argc, argv); >> int count = parse_options(cmd_pos, argv, git_generic_options, >> "git [special-options] cmd [options]", 0); >> if (count) >> die("unknown git command: `%s`", argv[0]); >> argv += cmd_pos; >> argc -= cmd_pos; >> /* here we simulate an argv of {"foo", "-a", "-b", "-c"} */ > > Or even simpler, with the following specifically tailored patch you > can directly write: > > argc = parse_options(argc, argv, git_generic_options, > "git [generic-options] <command> [cmd-options]", > PARSE_OPT_STOP_AT_ARG); > > and then {argc, argv} will exactly be the NULL-terminated array > starting with the builtin command. Kind of nice :) Indeed, nice ideas. I think all this will lead to a nice UI improvement post-1.5.4. About the only thing that I think would merit action *prior* to 1.5.4 is marking the "-p" switch to git (synonym for --paginate) as deprecated, see as it clashes with other commands' uses of that switch ("git log -p" for example). Are there any other conflicting specials that a currently parsed in git.c? Cheers, Wincent ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] Have a flag to stop the option parsing at the first argument. 2007-12-17 11:10 ` Wincent Colaiuta @ 2007-12-17 11:47 ` Pierre Habouzit 2007-12-17 11:50 ` Johannes Schindelin 0 siblings, 1 reply; 24+ messages in thread From: Pierre Habouzit @ 2007-12-17 11:47 UTC (permalink / raw) To: Wincent Colaiuta; +Cc: Junio C Hamano, git [-- Attachment #1: Type: text/plain, Size: 2205 bytes --] On Mon, Dec 17, 2007 at 11:10:00AM +0000, Wincent Colaiuta wrote: > El 17/12/2007, a las 10:50, Pierre Habouzit escribió: > > >Signed-off-by: Pierre Habouzit <madcoder@debian.org> > >--- > >> // ... > >> /* when in `git --opt1 --opt2 foo -a -b -c` mode: */ > >> int cmd_pos = git_find_builtin_command_name(argc, argv); > >> int count = parse_options(cmd_pos, argv, git_generic_options, > >> "git [special-options] cmd [options]", 0); > >> if (count) > >> die("unknown git command: `%s`", argv[0]); > >> argv += cmd_pos; > >> argc -= cmd_pos; > >> /* here we simulate an argv of {"foo", "-a", "-b", "-c"} */ > > > > Or even simpler, with the following specifically tailored patch you > > can directly write: > > > > argc = parse_options(argc, argv, git_generic_options, > > "git [generic-options] <command> [cmd-options]", > > PARSE_OPT_STOP_AT_ARG); > > > > and then {argc, argv} will exactly be the NULL-terminated array > > starting with the builtin command. Kind of nice :) > > Indeed, nice ideas. I think all this will lead to a nice UI improvement > post-1.5.4. > > About the only thing that I think would merit action *prior* to 1.5.4 is > marking the "-p" switch to git (synonym for --paginate) as deprecated, > see as it clashes with other commands' uses of that switch ("git log -p" > for example). Are there any other conflicting specials that a currently > parsed in git.c? You don't need to, and I'd see that as a regression. With my proposal, there isn't any kind of need that git commands do not clash with git ones. The parse-option mechanism will properly hide options that are masked this way, dscho wrote the patch for that. git -p log -p ... just makes sense to me. CVS or SVN e.g. (don't hit me !) have the same kind of "issues", and I never found that weird. In fact I see this the other way around: git status -p that is in fact the same as git -p status, is the conveniency, git -p status is the canonical form. -- ·O· Pierre Habouzit ··O madcoder@debian.org OOO http://www.madism.org [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] Have a flag to stop the option parsing at the first argument. 2007-12-17 11:47 ` Pierre Habouzit @ 2007-12-17 11:50 ` Johannes Schindelin 2007-12-17 12:06 ` Wincent Colaiuta 0 siblings, 1 reply; 24+ messages in thread From: Johannes Schindelin @ 2007-12-17 11:50 UTC (permalink / raw) To: Pierre Habouzit; +Cc: Wincent Colaiuta, Junio C Hamano, git [-- Attachment #1: Type: TEXT/PLAIN, Size: 2208 bytes --] Hi, On Mon, 17 Dec 2007, Pierre Habouzit wrote: > On Mon, Dec 17, 2007 at 11:10:00AM +0000, Wincent Colaiuta wrote: > > El 17/12/2007, a las 10:50, Pierre Habouzit escribió: > > > > >Signed-off-by: Pierre Habouzit <madcoder@debian.org> > > >--- > > >> // ... > > >> /* when in `git --opt1 --opt2 foo -a -b -c` mode: */ > > >> int cmd_pos = git_find_builtin_command_name(argc, argv); > > >> int count = parse_options(cmd_pos, argv, git_generic_options, > > >> "git [special-options] cmd [options]", 0); > > >> if (count) > > >> die("unknown git command: `%s`", argv[0]); > > >> argv += cmd_pos; > > >> argc -= cmd_pos; > > >> /* here we simulate an argv of {"foo", "-a", "-b", "-c"} */ > > > > > > Or even simpler, with the following specifically tailored patch you > > > can directly write: > > > > > > argc = parse_options(argc, argv, git_generic_options, > > > "git [generic-options] <command> [cmd-options]", > > > PARSE_OPT_STOP_AT_ARG); > > > > > > and then {argc, argv} will exactly be the NULL-terminated array > > > starting with the builtin command. Kind of nice :) > > > > Indeed, nice ideas. I think all this will lead to a nice UI improvement > > post-1.5.4. > > > > About the only thing that I think would merit action *prior* to 1.5.4 is > > marking the "-p" switch to git (synonym for --paginate) as deprecated, > > see as it clashes with other commands' uses of that switch ("git log -p" > > for example). Are there any other conflicting specials that a currently > > parsed in git.c? > > You don't need to, and I'd see that as a regression. With my proposal, > there isn't any kind of need that git commands do not clash with git > ones. The parse-option mechanism will properly hide options that are > masked this way, dscho wrote the patch for that. > > git -p log -p ... > > just makes sense to me. CVS or SVN e.g. (don't hit me !) have the same > kind of "issues", and I never found that weird. > > In fact I see this the other way around: git status -p that is in fact > the same as git -p status, is the conveniency, git -p status is the > canonical form. I would even go further: "git status -p" looks utterly wrong to me. Ciao, Dscho ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] Have a flag to stop the option parsing at the first argument. 2007-12-17 11:50 ` Johannes Schindelin @ 2007-12-17 12:06 ` Wincent Colaiuta 2007-12-17 12:26 ` Johannes Schindelin 0 siblings, 1 reply; 24+ messages in thread From: Wincent Colaiuta @ 2007-12-17 12:06 UTC (permalink / raw) To: Johannes Schindelin; +Cc: Pierre Habouzit, Junio C Hamano, git El 17/12/2007, a las 12:50, Johannes Schindelin escribió: > On Mon, 17 Dec 2007, Pierre Habouzit wrote: > >> On Mon, Dec 17, 2007 at 11:10:00AM +0000, Wincent Colaiuta wrote: >>> El 17/12/2007, a las 10:50, Pierre Habouzit escribió: >>> >>>> Signed-off-by: Pierre Habouzit <madcoder@debian.org> >>>> --- >>>>> // ... >>>>> /* when in `git --opt1 --opt2 foo -a -b -c` mode: */ >>>>> int cmd_pos = git_find_builtin_command_name(argc, argv); >>>>> int count = parse_options(cmd_pos, argv, git_generic_options, >>>>> "git [special-options] cmd [options]", 0); >>>>> if (count) >>>>> die("unknown git command: `%s`", argv[0]); >>>>> argv += cmd_pos; >>>>> argc -= cmd_pos; >>>>> /* here we simulate an argv of {"foo", "-a", "-b", "-c"} */ >>>> >>>> Or even simpler, with the following specifically tailored patch >>>> you >>>> can directly write: >>>> >>>> argc = parse_options(argc, argv, git_generic_options, >>>> "git [generic-options] <command> [cmd-options]", >>>> PARSE_OPT_STOP_AT_ARG); >>>> >>>> and then {argc, argv} will exactly be the NULL-terminated array >>>> starting with the builtin command. Kind of nice :) >>> >>> Indeed, nice ideas. I think all this will lead to a nice UI >>> improvement >>> post-1.5.4. >>> >>> About the only thing that I think would merit action *prior* to >>> 1.5.4 is >>> marking the "-p" switch to git (synonym for --paginate) as >>> deprecated, >>> see as it clashes with other commands' uses of that switch ("git >>> log -p" >>> for example). Are there any other conflicting specials that a >>> currently >>> parsed in git.c? >> >> You don't need to, and I'd see that as a regression. With my >> proposal, >> there isn't any kind of need that git commands do not clash with git >> ones. The parse-option mechanism will properly hide options that are >> masked this way, dscho wrote the patch for that. >> >> git -p log -p ... >> >> just makes sense to me. CVS or SVN e.g. (don't hit me !) have the >> same >> kind of "issues", and I never found that weird. Yes, we know what it does because we know that "git ... log ..." is actually two commands and each one handles one of the -p switches, but it is much easier to present git as a single tool to the newcomer (and I guess I don't need to argue that case here seeing as the decision has already been taken long ago to talk using dashless forms), and it is much easier to explain to a newcomer something like: git log --paginate -p Than: git -p log -p (Incidentally, who actually uses "git -p log -p"? Doesn't everybody have a pager set-up by default?) >> In fact I see this the other way around: git status -p that is in >> fact >> the same as git -p status, is the conveniency, git -p status is the >> canonical form. > > I would even go further: "git status -p" looks utterly wrong to me. This is exactly the kind of insider knowledge that will baffle newcomers. The canonical form is canonical only because it relies on an historical (and continuing) implementation detail, but we shouldn't expect newcomers to have to learn such details in order to know where to stick their command line arguments; they already have enough things to learn about, I think. But it doesn't really matter. The proposed changes allow old-timers to continue putting their special options between the "git" and the "command". If you don't want to deprecate the -p special because of the confusion it might cause, I think we should at least not give it a very prominent place in the documentation, nor use it any examples. Cheers, Wincent ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] Have a flag to stop the option parsing at the first argument. 2007-12-17 12:06 ` Wincent Colaiuta @ 2007-12-17 12:26 ` Johannes Schindelin 2007-12-17 12:40 ` Wincent Colaiuta 0 siblings, 1 reply; 24+ messages in thread From: Johannes Schindelin @ 2007-12-17 12:26 UTC (permalink / raw) To: Wincent Colaiuta; +Cc: Pierre Habouzit, Junio C Hamano, git Hi, On Mon, 17 Dec 2007, Wincent Colaiuta wrote: > Yes, we know what it does because we know that "git ... log ..." is > actually two commands and each one handles one of the -p switches, but > it is much easier to present git as a single tool to the newcomer (and I > guess I don't need to argue that case here seeing as the decision has > already been taken long ago to talk using dashless forms), and it is > much easier to explain to a newcomer something like: > > git log --paginate -p > > Than: > > git -p log -p How about git log -p Hmm? Fact is: you make the tool easier by having sane defaults. Not by moving around command line options. The option "-p" for git is an option that holds for _all_ subcommands. That's why it belongs _before_ the subcommand. > But it doesn't really matter. The proposed changes allow old-timers to > continue putting their special options between the "git" and the > "command". If you don't want to deprecate the -p special because of the > confusion it might cause, I think we should at least not give it a very > prominent place in the documentation, nor use it any examples. I think it is wrong to go out of our way to support "git status -p" as a synonym to "git -p status". I simply do not believe that newcomers are not intelligent enough to understand that "git -p <subcommand>" means that the output goes into their pager. Ciao, Dscho ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] Have a flag to stop the option parsing at the first argument. 2007-12-17 12:26 ` Johannes Schindelin @ 2007-12-17 12:40 ` Wincent Colaiuta 2007-12-17 12:55 ` Johannes Schindelin 0 siblings, 1 reply; 24+ messages in thread From: Wincent Colaiuta @ 2007-12-17 12:40 UTC (permalink / raw) To: Johannes Schindelin; +Cc: Pierre Habouzit, Junio C Hamano, git El 17/12/2007, a las 13:26, Johannes Schindelin escribió: > Hi, > > On Mon, 17 Dec 2007, Wincent Colaiuta wrote: > >> Yes, we know what it does because we know that "git ... log ..." is >> actually two commands and each one handles one of the -p switches, >> but >> it is much easier to present git as a single tool to the newcomer >> (and I >> guess I don't need to argue that case here seeing as the decision has >> already been taken long ago to talk using dashless forms), and it is >> much easier to explain to a newcomer something like: >> >> git log --paginate -p >> >> Than: >> >> git -p log -p > > How about > > git log -p > > Hmm? > > Fact is: you make the tool easier by having sane defaults. Not by > moving > around command line options. The option "-p" for git is an option > that > holds for _all_ subcommands. That's why it belongs _before_ the > subcommand. > >> But it doesn't really matter. The proposed changes allow old-timers >> to >> continue putting their special options between the "git" and the >> "command". If you don't want to deprecate the -p special because of >> the >> confusion it might cause, I think we should at least not give it a >> very >> prominent place in the documentation, nor use it any examples. > > I think it is wrong to go out of our way to support "git status -p" > as a > synonym to "git -p status". I simply do not believe that newcomers > are > not intelligent enough to understand that "git -p <subcommand>" > means that > the output goes into their pager. But the point is, of all the special options, -p is the *only* that can't unambiguously go after the subcommand. I'm arguing that the world would be a simpler place, friendlier to newcomers if *all* git commands looked like "git subcommand opts...", and at the moment -p is the only obstacle to making this so. And just in case it's necessary to restate this, I am not proposing removing support for the git specials subcommand opts..." form; I'm just trying to make it so that we don't have to advertise it so prominently. This seems to be the natural complement to the move to dashless forms. Cheers, Wincent ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] Have a flag to stop the option parsing at the first argument. 2007-12-17 12:40 ` Wincent Colaiuta @ 2007-12-17 12:55 ` Johannes Schindelin 2007-12-17 13:12 ` Wincent Colaiuta 0 siblings, 1 reply; 24+ messages in thread From: Johannes Schindelin @ 2007-12-17 12:55 UTC (permalink / raw) To: Wincent Colaiuta; +Cc: Pierre Habouzit, Junio C Hamano, git Hi, On Mon, 17 Dec 2007, Wincent Colaiuta wrote: > El 17/12/2007, a las 13:26, Johannes Schindelin escribi?: > > > I think it is wrong to go out of our way to support "git status -p" as > > a synonym to "git -p status". I simply do not believe that newcomers > > are not intelligent enough to understand that "git -p <subcommand>" > > means that the output goes into their pager. > > But the point is, of all the special options, -p is the *only* that > can't unambiguously go after the subcommand. It should not be put after the subcommand. That's my point. Exactly because it is -- even conceptually -- no subcommand option. CVS has many shortcomings, but one lesson here is that people had no problems with "cvs -z3 update -d -P". See, the "-z3" is an option that has nothing to do with the subcommand. Exactly the same situation here. I never had any problems explaining why "-p" goes before the subcommand here. Never. Ciao, Dscho ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] Have a flag to stop the option parsing at the first argument. 2007-12-17 12:55 ` Johannes Schindelin @ 2007-12-17 13:12 ` Wincent Colaiuta 2007-12-17 13:30 ` Johannes Schindelin 2007-12-17 15:13 ` Johannes Sixt 0 siblings, 2 replies; 24+ messages in thread From: Wincent Colaiuta @ 2007-12-17 13:12 UTC (permalink / raw) To: Johannes Schindelin; +Cc: Pierre Habouzit, Junio C Hamano, git El 17/12/2007, a las 13:55, Johannes Schindelin escribió: > On Mon, 17 Dec 2007, Wincent Colaiuta wrote: > >> El 17/12/2007, a las 13:26, Johannes Schindelin escribi?: >> >>> I think it is wrong to go out of our way to support "git status - >>> p" as >>> a synonym to "git -p status". I simply do not believe that >>> newcomers >>> are not intelligent enough to understand that "git -p <subcommand>" >>> means that the output goes into their pager. >> >> But the point is, of all the special options, -p is the *only* that >> can't unambiguously go after the subcommand. > > It should not be put after the subcommand. That's my point. Exactly > because it is -- even conceptually -- no subcommand option. > > CVS has many shortcomings, but one lesson here is that people had no > problems with "cvs -z3 update -d -P". See, the "-z3" is an option > that > has nothing to do with the subcommand. > > Exactly the same situation here. I never had any problems > explaining why > "-p" goes before the subcommand here. Never. Would be even better if there was nothing to explain and it all just worked, which is what I'm proposing here. As I said, -p is the only special option which clashes with any non-special uses. But leaving -p aside, will you oppose any patches that make it possible for people to write stuff like: git init --bare Personally, I think this is an obvious usability improvement worth striving for. Given that "git --bare init" will continue to work under what I'm proposing, I really can't see any worthwhile argument against it. Because we're talking about a UI improvement for newcomers at no cost to old timers. Cheers, Wincent ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] Have a flag to stop the option parsing at the first argument. 2007-12-17 13:12 ` Wincent Colaiuta @ 2007-12-17 13:30 ` Johannes Schindelin 2007-12-17 13:57 ` Wincent Colaiuta 2007-12-17 15:13 ` Johannes Sixt 1 sibling, 1 reply; 24+ messages in thread From: Johannes Schindelin @ 2007-12-17 13:30 UTC (permalink / raw) To: Wincent Colaiuta; +Cc: Pierre Habouzit, Junio C Hamano, git Hi, On Mon, 17 Dec 2007, Wincent Colaiuta wrote: > El 17/12/2007, a las 13:55, Johannes Schindelin escribi?: > > > I never had any problems explaining why "-p" goes before the > > subcommand here. Never. > > Would be even better if there was nothing to explain and it all just > worked, which is what I'm proposing here. As I said, -p is the only > special option which clashes with any non-special uses. Even in the best of circumstances, you have to teach people a little. > But leaving -p aside, will you oppose any patches that make it possible > for people to write stuff like: > > git init --bare > > Personally, I think this is an obvious usability improvement worth > striving for. Given that "git --bare init" will continue to work under > what I'm proposing, I really can't see any worthwhile argument against > it. Because we're talking about a UI improvement for newcomers at no > cost to old timers. My reasoning is like as for "-p". "--bare" is not special to "init". It makes git not guess, but work on the current directory as a bare repository. In my experience, it is easier to give people a clear-cut distinction between different concepts. Then way fewer surprises will hassle them later. Ciao, Dscho ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] Have a flag to stop the option parsing at the first argument. 2007-12-17 13:30 ` Johannes Schindelin @ 2007-12-17 13:57 ` Wincent Colaiuta 0 siblings, 0 replies; 24+ messages in thread From: Wincent Colaiuta @ 2007-12-17 13:57 UTC (permalink / raw) To: Johannes Schindelin; +Cc: Pierre Habouzit, Junio C Hamano, git El 17/12/2007, a las 14:30, Johannes Schindelin escribió: >> But leaving -p aside, will you oppose any patches that make it >> possible >> for people to write stuff like: >> >> git init --bare >> >> Personally, I think this is an obvious usability improvement worth >> striving for. Given that "git --bare init" will continue to work >> under >> what I'm proposing, I really can't see any worthwhile argument >> against >> it. Because we're talking about a UI improvement for newcomers at no >> cost to old timers. > > My reasoning is like as for "-p". "--bare" is not special to > "init". It > makes git not guess, but work on the current directory as a bare > repository. Yes, I know what --bare does. It seems to me your argument is as follows: - "git subcommand" is actually "git" (which does setup) followed by "git-subcommand" (which performs an action)[*] - the newcomer should be taught this, and know which options go between "git" and "subcommand" and which options go after - even though there is a straightforward way to have "git subcommand specials args" work without breaking compatibility, you oppose it on the grounds that users should know how Git works - the fact that CVS also has some options that go before the subcommand makes it OK for git to do the same - even though we could have a better UI that didn't require any of this explanation at all, we should keep the UI we have seeing as it is easy to explain And possibly some combination of these two as well: - requiring arguments to be inserted between "git" and "subcommand" doesn't undermine the effort to make git appear like a single tool to users - the effort to move to dashless forms has nothing to do with presenting git as a single tool to users Well, I basically disagree with you on most of these points; all but the first one(*), really. I think it's fairly clear what both you and I think on this and I'm not very interested in debating it further; I am more interested in hearing other people's points on this to get a feeling for whether there is a consensus (or lack thereof). Cheers, Wincent ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] Have a flag to stop the option parsing at the first argument. 2007-12-17 13:12 ` Wincent Colaiuta 2007-12-17 13:30 ` Johannes Schindelin @ 2007-12-17 15:13 ` Johannes Sixt 2007-12-17 16:29 ` Pierre Habouzit 1 sibling, 1 reply; 24+ messages in thread From: Johannes Sixt @ 2007-12-17 15:13 UTC (permalink / raw) To: Wincent Colaiuta Cc: Johannes Schindelin, Pierre Habouzit, Junio C Hamano, git Wincent Colaiuta schrieb: > But leaving -p aside, will you oppose any patches that make it possible > for people to write stuff like: > > git init --bare > > Personally, I think this is an obvious usability improvement worth > striving for. Given that "git --bare init" will continue to work under > what I'm proposing, I really can't see any worthwhile argument against > it. Because we're talking about a UI improvement for newcomers at no > cost to old timers. Your point. I hate to have to think hard each time whether it's "git --bare init" or "git init --bare" and "git clone --bare" or "git --bare clone" and wouldn't mind if I no longer needed to. -- Hannes ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] Have a flag to stop the option parsing at the first argument. 2007-12-17 15:13 ` Johannes Sixt @ 2007-12-17 16:29 ` Pierre Habouzit 0 siblings, 0 replies; 24+ messages in thread From: Pierre Habouzit @ 2007-12-17 16:29 UTC (permalink / raw) To: Johannes Sixt; +Cc: Wincent Colaiuta, Johannes Schindelin, Junio C Hamano, git [-- Attachment #1: Type: text/plain, Size: 958 bytes --] On Mon, Dec 17, 2007 at 03:13:56PM +0000, Johannes Sixt wrote: > Wincent Colaiuta schrieb: > > But leaving -p aside, will you oppose any patches that make it possible > > for people to write stuff like: > > > > git init --bare > > > > Personally, I think this is an obvious usability improvement worth > > striving for. Given that "git --bare init" will continue to work under > > what I'm proposing, I really can't see any worthwhile argument against > > it. Because we're talking about a UI improvement for newcomers at no > > cost to old timers. > > Your point. I hate to have to think hard each time whether it's "git --bare > init" or "git init --bare" and "git clone --bare" or "git --bare clone" and > wouldn't mind if I no longer needed to. Seconded. -- ·O· Pierre Habouzit ··O madcoder@debian.org OOO http://www.madism.org [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 24+ messages in thread
end of thread, other threads:[~2007-12-17 16:29 UTC | newest] Thread overview: 24+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-12-14 11:23 [PATCH 0/3] diff topic tweaks Wincent Colaiuta 2007-12-14 11:23 ` [PATCH 1/3] Revert changes and extend diff option documentation Wincent Colaiuta 2007-12-14 11:23 ` [PATCH 2/3] Use shorter error messages for whitespace problems Wincent Colaiuta 2007-12-14 11:23 ` [PATCH 3/3] Test interaction between diff --check and --exit-code Wincent Colaiuta 2007-12-16 19:43 ` [PATCH 1/3] Revert changes and extend diff option documentation Junio C Hamano 2007-12-17 8:27 ` git.c option parsing (was: [PATCH 1/3] Revert changes and extend diff option documentation) Wincent Colaiuta 2007-12-17 8:48 ` git.c option parsing Junio C Hamano 2007-12-17 9:01 ` Wincent Colaiuta 2007-12-17 9:20 ` Pierre Habouzit 2007-12-17 9:26 ` Pierre Habouzit 2007-12-17 9:50 ` [PATCH] Have a flag to stop the option parsing at the first argument Pierre Habouzit 2007-12-17 10:34 ` Johannes Schindelin 2007-12-17 11:10 ` Wincent Colaiuta 2007-12-17 11:47 ` Pierre Habouzit 2007-12-17 11:50 ` Johannes Schindelin 2007-12-17 12:06 ` Wincent Colaiuta 2007-12-17 12:26 ` Johannes Schindelin 2007-12-17 12:40 ` Wincent Colaiuta 2007-12-17 12:55 ` Johannes Schindelin 2007-12-17 13:12 ` Wincent Colaiuta 2007-12-17 13:30 ` Johannes Schindelin 2007-12-17 13:57 ` Wincent Colaiuta 2007-12-17 15:13 ` Johannes Sixt 2007-12-17 16:29 ` Pierre Habouzit
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).