From: Robie Basak Date: Wed, 16 Nov 2011 12:04:03 GMT Subject: [PATCH] apply: squash consecutive slashes with p_value > 0 Message-ID: <20111116120403.GA10342@mal.justgohome.co.uk> "patch" works with -p1 and diffs in the following form: --- foo.orig//bar +++ foo//bar ... patch(1) says that "A sequence of one or more adjacent slashes is counted as a single slash." This patch amends git-apply's filename parsing to behave in the same way, eliminating both '/'s with -p1 in this example. Test case included. Signed-off-by: Robie Basak --- builtin/apply.c | 8 ++++++-- t/t4153-apply-doubleslash.sh | 29 +++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) create mode 100755 t/t4153-apply-doubleslash.sh diff --git a/builtin/apply.c b/builtin/apply.c index 84a8a0b..78e25fa 100644 --- a/builtin/apply.c +++ b/builtin/apply.c @@ -627,9 +627,13 @@ static char *find_name_common(const char *line, char *def, int p_value, if (name_terminate(start, line-start, c, terminate)) break; } - line++; - if (c == '/' && !--p_value) + if (c == '/' && !--p_value) { + while (*line == '/') + line++; start = line; + } else { + line++; + } } if (!start) return squash_slash(def); diff --git a/t/t4153-apply-doubleslash.sh b/t/t4153-apply-doubleslash.sh new file mode 100755 index 0000000..1ea76b5 --- /dev/null +++ b/t/t4153-apply-doubleslash.sh @@ -0,0 +1,29 @@ +#!/bin/sh +# +# Copyright (c) 2011 Canonical Ltd. +# + +test_description='git apply filenames with double slashes + +Try to apply a patch with git-apply where the filename specified has a double +slash after the first (to-be-stripped) component' + +. ./test-lib.sh + +test_expect_success setup ' + test_commit 1 f && + cat > good.patch <err +' + +test_done -- 1.7.5.4