[PATCH/RFC] rev-parse: stop interpreting flags as options to rev-parse once --flags is specified
- From
Jon Seymour <jon.seymour@gmail.com>
- Date
- Sep 25, 2010, 07:19 UTC
- Message-ID
- <1285399156-21792-1-git-send-email-jon.seymour@gmail.com>
- In-Reply-To
- <robbat2-20100924T191752-102740530Z@orbis-terrarum.net>
Current git rev-parse behaviour makes --flags hard to use if the remaining arguments to git rev-parse contain an option that would otherwise be interpreted as an option by git rev-parse itself.
So, for example:
$> git rev-parse --flags -q -X -X
Normally one might expect to use -- to prevent -q being interpreted:
$> git rev-parse --flags -- -q -X -q -X
But we can't really use -- in this way, because commands that use git rev-parse might reasonably expect:
$> git rev-parse --flags -Y -- -q -X -Y
That is, -Y to be regarded as a flag but everything after -- to be uninterpreted.
This proposed change modifies git rev-parse so that git rev-parse stops interpreting flag arguments as options to git rev-parse once --flags is interpreted. We also exit early once -- is found.
Tests will follow in subsequent iterations of this patch, if the consensus is that the approach is correct.
Signed-off-by: Jon Seymour <jon.seymour@gmail.com> --- builtin/rev-parse.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c index a5a1c86..9e340c7 100644 --- a/builtin/rev-parse.c +++ b/builtin/rev-parse.c @@ -497,8 +497,15 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix) /* Pass on the "--" if we show anything but files.. */ if (filter & (DO_FLAGS | DO_REVS)) show_file(arg); + if (!(filter & DO_NONFLAGS)) { + return 0; + } continue; } + if (!(filter & DO_NONFLAGS)) { + show_flag(arg); + continue; + } if (!strcmp(arg, "--default")) { def = argv[i+1]; i++;
-- 1.7.2.14.gbde03.dirty