git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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
Previous: Rene ScharfeNext: John Ellson
Message 4 of 7 in “Newbie question: equiv of: cvs co -p <filename> ?”
  1. John EllsonAug 9, 2005
  2. Johannes SchindelinAug 9, 2005
  3. Rene ScharfeAug 9, 2005
  4. Linus TorvaldsAug 10, 2005
  5. cg-cat [was: Re: Newbie question: equiv of: cvs co -p <filename> ? ]John Ellson, Aug 10, 2005
  6. Petr BaudisAug 11, 2005
  7. Matthias UrlichsAug 12, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.