[PATCH/RFC] rev-parse: stop interpreting flags as options to rev-parse once --flags is specified
From: Jon Seymour <hidden>
Date: 2016-06-15 22:49:37
Subsystem:
the rest · Maintainer:
Linus Torvalds
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 <redacted> --- 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