Re: Wanted - a file browser interface to git
- From
Linus Torvalds <torvalds@osdl.org>
- Date
- Oct 19, 2005, 03:03 UTC
- Message-ID
- <Pine.LNX.4.64.0510181952350.3369@g5.osdl.org>
- In-Reply-To
- <4355A00B.4000806@research.att.com>
On Tue, 18 Oct 2005, John Ellson wrote:
Show 10 quoted lines
> Linus Torvalds wrote: > > > > You are aware of "git whatchanged -p xxx", right? > > I wasn't aware of it, no. Looks very useful. Thanks. > > I see that you can take the tree id from the diff-tree lines and > then produce the state of the file at that time with "cg-admin-cat -r <id> > xxx" > Is that how you would do it?
Well, I'd do it with the git commands: once you see the diff, you should know the SHA1's of the source and destination, and then you can just do
git-cat-file blob [sha1]
to get the before (or after) state.
The way I'd get the SHA1 is either (now with the extended diff format) in the short form from the diff itself (the "index" line), or by just separately doing a
git-diff-tree -r [sha-of-commit]
to see the "raw" diff format.
All the diff things can take a pathname limiter, the same way "git-whatchanged" does, so if you are only interested in one file, just name the file:
git-diff-tree -r [sha-of-commit] [filename]
And just to make clear how powerful this is: "filename" doesn't have to be a single file. It can be a set of files and/or directories, so if you want to track multiple things at the same time, just do multiple filenames.
What I do a lot is to check what has changed in some particular subsystem, ie somebody says that something broke in SCSI, and then I do
git-whatchanged -p drivers/scsi/ include/scsi/
and it will show any changes to anything under either of those directories.
"git-whatchanged" really is very powerful. The silly thing is that it really boils down to just a single line script (well, with various argument handling etc it's actually five lines, but the "core" is really just a single pipeline of "git-rev-list | git-diff-tree --stdin".
> Are there any plans for cogito to support it?
Well, cogito could certainly just do a "cg-whatchanged", but it's really the same thing. Since cogito depends on git anyway, cogito users could just use the git-whatchanged functionality.
Or to make it more seamless, just do
alias cg-whatchanged=git-whatchanged
or something like that ;^)
Linus