Hi, On Tue, 18 Dec 2007, Linus Torvalds wrote: > But I obviously think the version by Dscho is better (exactly because it's > *not* enough to just clear the name prefix entirely), although I think > that one is broken too - using ':' to separate the prefixes is *not* > acceptable, since ':' is very possibly part of the prefix. > > So I think you'd need separate arguments for the from/to prefixes, and not > try to shoehorn it into one argument. With possibly some simple form to > say "no prefix". So maybe something like > > --src-prefix=<string> // default "a/" > --dst-prefix=<string> // default "b/" > --no-prefix // shorthand for --src-prefix="" --dst-prefix="" > > would work for everybody? If this is preferred, please squash this: -- snipsnap -- Documentation/diff-options.txt | 11 ++++++++--- diff.c | 24 ++++++++++++++---------- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt index 672a2d0..0d3dccc 100644 --- a/Documentation/diff-options.txt +++ b/Documentation/diff-options.txt @@ -211,9 +211,14 @@ endif::git-format-patch[] --no-ext-diff:: Disallow external diff drivers. ---prefix=<prefix1>[:<prefix2>]:: - Show the given path prefixes instead of "a/" and "b/". Leave - it empty to show no prefix at all. +--src-prefix <prefix>:: + Show the given source prefix instead of "a/". + +--dst-prefix <prefix>:: + Show the given destination prefix instead of "b/". + +--no-prefix:: + Do not show any source or destination prefix. For more detailed explanation on these common options, see also link:diffcore.html[diffcore documentation]. diff --git a/diff.c b/diff.c index 095bbb5..9bc5fea 100644 --- a/diff.c +++ b/diff.c @@ -2317,16 +2317,20 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac) else if (40 < options->abbrev) options->abbrev = 40; } - else if (!strcmp(arg, "--prefix=")) { - char *colon = strchr(arg + 9, ':'); - options->a_prefix = arg + 9; - if (colon) { - *colon = '\0'; - options->b_prefix = colon + 1; - } - else - options->b_prefix = options->a_prefix; - } + else if (!strcmp(arg, "--src-prefix")) { + if (ac < 2) + return error("--src-prefix needs a parameter"); + options->a_prefix = arg + 1; + return 2; + } + else if (!strcmp(arg, "--dst-prefix")) { + if (ac < 2) + return error("--dst-prefix needs a parameter"); + options->b_prefix = arg + 1; + return 2; + } + else if (!strcmp(arg, "--no-prefix")) + options->a_prefix = options->b_prefix = ""; else return 0; return 1; - To unsubscribe from this list: 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