Re: Newbie question: equiv of: cvs co -p <filename> ?
- From
Linus Torvalds <torvalds@osdl.org>
- Date
- Aug 10, 2005, 00:36 UTC
- Message-ID
- <Pine.LNX.4.58.0508091725120.3258@g5.osdl.org>
- In-Reply-To
- <ddb8vl$ifq$1@sea.gmane.org>
On Tue, 9 Aug 2005, John Ellson wrote:
Show 5 quoted lines
> > I hacked this: > > #!/bin/bash > ID=`git-ls-files -s | grep $1 | cut -d ' ' -f 2`
No. "git-ls-files" shows the latest _index_ state, not the latest committed state.
Use "git-ls-tree HEAD pathname" to get the latest committed state for the pathname, and then pick out the SHA1 from there, use
git-cat-file blob <sha1>
to cat the result.
Of course, this will work with any revision, not just HEAD. So you could do something like
git-ls-tree $(git-rev-parse --default HEAD "$@") | while read mode type sha name do case "$type" in blob) git-cat-file blob "$sha" ;; tree) git-ls-tree "$sha" ;; *) exit 1 done
(totally untested)
Linus