aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--builtin-apply.c4
-rwxr-xr-xt/t4128-apply-root.sh15
2 files changed, 15 insertions, 4 deletions
diff --git a/builtin-apply.c b/builtin-apply.c
index bf528966c..6c3db60b6 100644
--- a/builtin-apply.c
+++ b/builtin-apply.c
@@ -3130,10 +3130,10 @@ int cmd_apply(int argc, const char **argv, const char *unused_prefix)
inaccurate_eof = 1;
continue;
}
- if (!strncmp(arg, "--root=", strlen("--root="))) {
+ if (!prefixcmp(arg, "--root=")) {
arg += strlen("--root=");
root_len = strlen(arg);
- if (root_len && arg[root_len + 1] != '/') {
+ if (root_len && arg[root_len - 1] != '/') {
char *new_root;
root = new_root = xmalloc(root_len + 2);
strcpy(new_root, arg);
diff --git a/t/t4128-apply-root.sh b/t/t4128-apply-root.sh
index 80b5af2b4..b65024545 100755
--- a/t/t4128-apply-root.sh
+++ b/t/t4128-apply-root.sh
@@ -8,7 +8,9 @@ test_expect_success 'setup' '
mkdir -p some/sub/dir &&
echo Hello > some/sub/dir/file &&
- git add some/sub/dir/file
+ git add some/sub/dir/file &&
+ git commit -m initial &&
+ git tag initial
'
@@ -21,7 +23,7 @@ diff a/bla/blub/dir/file b/bla/blub/dir/file
+Bello
EOF
-test_expect_success 'apply --root -p --index' '
+test_expect_success 'apply --root -p (1)' '
git apply --root=some/sub -p3 --index patch &&
test Bello = $(git show :some/sub/dir/file) &&
@@ -29,4 +31,13 @@ test_expect_success 'apply --root -p --index' '
'
+test_expect_success 'apply --root -p (2) ' '
+
+ git reset --hard initial &&
+ git apply --root=some/sub/ -p3 --index patch &&
+ test Bello = $(git show :some/sub/dir/file) &&
+ test Bello = $(cat some/sub/dir/file)
+
+'
+
test_done