summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2017-04-26 15:39:03 +0900
committerLibravatar Junio C Hamano <gitster@pobox.com>2017-04-26 15:39:03 +0900
commit44427a0c18c0179be72223650715f031a10a5e66 (patch)
tree09eac9c685901b249bef83acaa93e21e18dd366a
parentMerge branch 'pc/t2027-git-to-pipe-cleanup' (diff)
parentpathspec: honor `PATHSPEC_PREFIX_ORIGIN` with empty prefix (diff)
downloadtgif-44427a0c18c0179be72223650715f031a10a5e66.tar.xz
Merge branch 'ps/pathspec-empty-prefix-origin'
A recent update broke "git add -p ../foo" from a subdirectory. * ps/pathspec-empty-prefix-origin: pathspec: honor `PATHSPEC_PREFIX_ORIGIN` with empty prefix
-rw-r--r--pathspec.c2
-rwxr-xr-xt/t3701-add-interactive.sh22
2 files changed, 23 insertions, 1 deletions
diff --git a/pathspec.c b/pathspec.c
index 69ef86b85a..50f76fff45 100644
--- a/pathspec.c
+++ b/pathspec.c
@@ -505,7 +505,7 @@ static void init_pathspec_item(struct pathspec_item *item, unsigned flags,
* original. Useful for passing to another command.
*/
if ((flags & PATHSPEC_PREFIX_ORIGIN) &&
- prefixlen && !get_literal_global()) {
+ !get_literal_global()) {
struct strbuf sb = STRBUF_INIT;
/* Preserve the actual prefix length of each pattern */
diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh
index f9528fa00c..2ecb43a616 100755
--- a/t/t3701-add-interactive.sh
+++ b/t/t3701-add-interactive.sh
@@ -436,6 +436,28 @@ test_expect_success 'add -p handles globs' '
test_cmp expect actual
'
+test_expect_success 'add -p handles relative paths' '
+ git reset --hard &&
+
+ echo base >relpath.c &&
+ git add "*.c" &&
+ git commit -m relpath &&
+
+ echo change >relpath.c &&
+ mkdir -p subdir &&
+ git -C subdir add -p .. 2>error <<-\EOF &&
+ y
+ EOF
+
+ test_must_be_empty error &&
+
+ cat >expect <<-\EOF &&
+ relpath.c
+ EOF
+ git diff --cached --name-only >actual &&
+ test_cmp expect actual
+'
+
test_expect_success 'add -p does not expand argument lists' '
git reset --hard &&