git-ls-tree: add "-t" option to always show the tree entries
authorLinus Torvalds <torvalds@osdl.org>
Thu, 1 Dec 2005 18:35:51 +0000 (10:35 -0800)
committerJunio C Hamano <junkio@cox.net>
Thu, 1 Dec 2005 20:27:22 +0000 (12:27 -0800)
commit0f8f45cb4a7e664b396f73c25891da46b953b8b8
treef45efeb7a6efb41d72beaf45ef3dc8b2758cd274
parent2731d04883317f5de03a942bb0ea8c1eba6babad
git-ls-tree: add "-t" option to always show the tree entries

The old (new) behaviour was that it only shows trees if the object is
specified exactly, and recursive is not set. That makes sense, because
there is obviously nothing else it can show for that case.

However, with the new "-t" option, it will show the tree even with "-r",
as it traverses down into it.

NOTE! This also means that it will show all trees leading up to that tree.

For example, if you do a

git-ls-tree -t HEAD -- drivers/char/this/file/does/not/exist

it will show the trees that lead up to the files that do not exist:

[torvalds@g5 linux]$ git-ls-tree -t HEAD -- drivers/char/this/file/does/not/exist
040000 tree 9cb687b77dcd64bf82e9a73214db467c964c1266    drivers
040000 tree 298e2fadf0ff3867d1ef49936fd2c7bf6ce1eb66    drivers/char
[torvalds@g5 linux]$

and note how this is true even though I didn't specify "-r": the fact that
I supplied a pathspec automatically implies "enough recursion" for that
particular pathspec.

I think the code is cleaner and easier to understand too: the patch looks
bigger, but it's really just splitting up the "should we recurse into this
tree" into a function of its own.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
ls-tree.c