tags:

views:

26

answers:

1

I am looking at the man page for git ls-tree . It has an option for path.

I have a directory called db and in that directory I have a few .rb files.

Then why my command is failing

git ls-tree db/*.rb
+2  A: 

First the actual man page is here. That is the page for the latest Git version.

Second, that official man page says:

Lists the contents of a given tree object, like what "/bin/ls -a" does in the current working directory.
Note that:

  • the behaviour is slightly different from that of "/bin/ls" in that the paths denote just a list of patterns to match, e.g. so specifying directory name (without -r) will behave differently, and order of the arguments does not matter.

  • the behaviour is similar to that of "/bin/ls" in that the paths is taken as relative to the current working directory.
    E.g. when you are in a directory sub that has a directory dir, you can run git ls-tree -r HEAD dir to list the contents of the tree (that is sub/dir in HEAD).
    You don't want to give a tree that is not at the root level (e.g. git ls-tree -r HEAD:sub dir) in this case, as that would result in asking for sub/sub/dir in the HEAD commit. However, the current working directory can be ignored by passing --full-tree option.

In your case:

git ls-tree HEAD db/*.rb

might work better.

VonC
Note: depending on what you want to do, `git ls-files' might be more appropriate (http://kernel.org/pub/software/scm/git/docs/git-ls-files.html)
VonC