Re: How do get a specific version of a particular file?
Theodore Ts'o <tytso@mit.edu> schrieb:
Show 39 quoted lines
>
> So given a particular tree-ish and a pathname, I'd like get the contents
> of that particular file as of a particular revision. i.e., the
> equivalent of:
>
> cvs -r v1.37 -p e2fsck/pass1.c
> or
> bk cat -r 2345 e2fsck/pass1.c
>
> The closest I've been able to come is to use
>
> git archive --format=zip v1.37 e2fsck/pass1.c | gunzip
>
> But that seems kinda silly.
>
> git-checkout will only write the output to the working tree.
> git-cat-file and git-show only work on a object identifier (they are
> low-level plumbing commands).
>
> So if it is a matter of we don't have an easy way to do this (as opposed
> to me being stupid or the git documentation just failing to mention it
> in the right places), what's the best way to add it?
>
> One easy way would be to add --format=raw to git-archive, but that might
> seem counter-intuitive to an average git user; they just want to see the
> output of a file at a particular point in time, which doesn't have much
> to do with archiving.
>
> Should we add a new command like "git-cat"? Should we add a -p option
> to the "git-checkout <treeish> <path>" form of git-checkout?
>
> I'm currently leaning towards the last; it would be pretty simple to
> enhance git-checkout so that a -p option would run "git archive
> --format=zip ...", even though that would be a pretty nasty hack, and it
> wouldn't be much harder to add --format=raw support to git-archive, but
> I still think that's not a intuitive place to find that particular
> functionality.
>
> - Ted
You you could do this with
git show v1.5.0:Makefile
to show you the Makefile in revision v1.5.0.
-Peter