When using 'git subtree' to add an external project at a given prefix,
log of a pathspec within the prefix fails to give the expected output.
This failure can be interpreted as log expecting all trees to be read
into /.  Document this bug by adding a failing test.

Signed-off-by: Ramkumar Ramachandra <artag...@gmail.com>
---
 I normally don't use git-subtree, but happened to notice this when I
 was checking it out: a 'git log <pathspec>', when referring to a file
 inside the subtree, doesn't work as expected: it only displays the
 HEAD commit.  I know this is not related to git-subtree at all, and
 has to do with how 'git log' (and probably 'git merge -Xsubtree',
 'git merge -s subtree') works.  I suspect that 'git log' expects all
 trees to be read into /, and I've tried to prove this with a failing
 test.

 I think this is a bug, but I might be missing something.  Can someone
 tell me what is actually happening?

 t/t4202-log.sh | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/t/t4202-log.sh b/t/t4202-log.sh
index 9243a97..523c1be 100755
--- a/t/t4202-log.sh
+++ b/t/t4202-log.sh
@@ -168,6 +168,37 @@ test_expect_success 'git log --follow' '
 
 '
 
+test_expect_failure 'log pathspec in tree read into prefix' '
+       git checkout --orphan subtree &&
+       git rm -rf . &&
+       echo foodle >ichi &&
+       git add ichi &&
+       test_tick &&
+       git commit -m foom &&
+       echo moodle >unrelated &&
+       git add unrelated &&
+       test_tick &&
+       git commit -m quux &&
+       subtree_h=$(git rev-parse HEAD) &&
+       git checkout master &&
+       orig_h=$(git rev-parse HEAD) &&
+       git read-tree --prefix=bar $subtree_h &&
+       new_t=$(git write-tree) &&
+       new_h=$(echo "new subtree" |
+       git commit-tree $new_t -p $orig_h -p $subtree_h) &&
+       git reset --hard $new_h &&
+       (
+               cd bar &&
+               git log --oneline ichi >../actual
+       ) &&
+       cat >expect <<-\EOF &&
+       61dcd8e new subtree
+       130a8fb foom
+       EOF
+       git reset --hard HEAD~1 &&
+       test_cmp expect actual
+'
+
 cat > expect << EOF
 804a787 sixth
 394ef78 fifth
-- 
1.8.2.1.546.gea3475a

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to