Re: [PATCH] Add format-patch option --no-name-prefix.
Hi,
On Tue, 18 Dec 2007, Linus Torvalds wrote:
Show 14 quoted lines
> 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;