apply --root: thinkofix.
authorJunio C Hamano <gitster@pobox.com>
Wed, 2 Jul 2008 22:28:22 +0000 (15:28 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 2 Jul 2008 22:28:22 +0000 (15:28 -0700)
The end of a string is string[length-1], not string[length+1].
I pointed it out during the review, but I forgot about it when applying the
patch.  This should fix it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-apply.c
t/t4128-apply-root.sh

index bf528966cabd23d844add6dcc6e414a7ca32be7c..6c3db60b659533c612d17852f93fd4ae99519ad6 100644 (file)
@@ -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);
index 80b5af2b412d3ecec20bc787261b44af363ea1d1..b6502454556feaf026ad358e18b7c09a62a0c765 100755 (executable)
@@ -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