[PATCH v3 1/3] 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, 11:22 UTC
- Message-ID
- <1285413763-25082-2-git-send-email-jon.seymour@gmail.com>
- In-Reply-To
- <1285413763-25082-1-git-send-email-jon.seymour@gmail.com>
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.
Signed-off-by: Jon Seymour <jon.seymour@gmail.com> --- builtin/rev-parse.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c index a5a1c86..2ad269a 100644 --- a/builtin/rev-parse.c +++ b/builtin/rev-parse.c @@ -497,8 +497,16 @@ 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)) { + /* once we see --flags, we stop interpreting other flags */ + show_flag(arg); + continue; + } if (!strcmp(arg, "--default")) { def = argv[i+1]; i++;
-- 1.7.3.2.g216ca.dirty