Re: How to tell if a file was renamed between two commits

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



In article <ron1-08A0F6.18483502022010@xxxxxxxxxxxxxx>,
 Ron Garret <ron1@xxxxxxxxxxx> wrote:

> In article <20100203023219.GA13092@xxxxxxxxxxx>,
>  "Shawn O. Pearce" <spearce@xxxxxxxxxxx> wrote:
> 
> > Ron Garret <ron1@xxxxxxxxxxx> wrote:
> > > I'm trying to write a little utility that will extract all the revisions 
> > > of a particular file.  I start with a git rev-list HEAD -- filename, get 
> > > the tree objects with git cat-file commit, the file objects with git 
> > > ls-tree, and finally the file contents themselves with git cat-file 
> > > blob.  It works, except in the case where the file name was changed.  
> > > git rev-list is smart enough to track those name changes, but my little 
> > > revision tracker isn't.  It dies when suddenly there is no file with the 
> > > right name in the tree.
> > > 
> > > So... is there an easy way to work around this?  Is there a way to get, 
> > > say, rev-list to tell me when the file it is tracking changed names?  Or 
> > > a git-diff incantation?  I just need something that will tell me given 
> > > two commits and a file name whether the file was renamed between those 
> > > two commits and if so what its new name is.  There must be an easy way 
> > > to do this, but I can't figure out what it is.
> > 
> > Maybe use the -M flag to git log, or the --follow flag to
> > log/rev-list?
> 
> Nope.  git log --follow will follow through a name change but won't 
> actually say when the name changed happened or what the previous name of 
> the file was.
> 
> And actually playing around with it some more, it appears that git 
> rev-list doesn't actually track file renames, or at least it doesn't do 
> it all the time.  Weird.  I'm going to have to play around with this 
> some more.
> 
> rg

Ah, I think I found it:

git log --follow --raw -- [filename]

gives you e.g.:

:100644 100644 01e79c3... 01e79c3... R100       foo     baz

which seems to be what I'm looking for.

rg

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]