Re: Following renames
- From
Petr Baudis <pasky@suse.cz>
- Date
- Mar 26, 2006, 19:14 UTC
- Message-ID
- <20060326191445.GQ18185@pasky.or.cz>
- In-Reply-To
- <Pine.LNX.4.64.0603260829550.15714@g5.osdl.org>
Dear diary, on Sun, Mar 26, 2006 at 06:33:13PM CEST, I got a letter where Linus Torvalds <torvalds@osdl.org> said that...
Show 12 quoted lines
> If you do > > git-rev-list --parents --remove-empty $REV -- $filename > > then you'll get the whole history for that filename. When it ends, you > know the file went away, and then you do basically _one_ "where the hell > did it go" thing. > > And yes, it's not git-ls-tree (unless you only want to follow pure > renames), it's actually one "git-diff-tree -M $lastrev". Then you just > continue with the new filename (and do another "git-rev-list" until you > hit the next rename).
I wrote a long rant but then it all suddenly fit together and I have now an idea how to implement it reasonably elegantly.
So only a bugreport remains:
My current target is to support this tree (letters are filenames, numbers are commit ids; I'll translate any git output to those digits):
2 4
b -- d
1 / \ 6
a d
\ 3 5 /
c -- dWith the commits created in the numerical order (so log shows 1,2,3,4,5,6, and my target is cg-log d showing the same output). If anyone wants the sample history, it's at
http://pasky.or.cz/~xpasky/renametree1.git/
Curiously, git-rev-list does something totally strange when trying to list per-file history at this point:
$ git-rev-list HEAD -- d 4
Huh? (It should list 6, 5, 4 instead.)
I worked it around by recording a change in d in the merge 6:
http://pasky.or.cz/~xpasky/renametree2.git/
$ git-rev-list --parents --remove-empty HEAD -- d 6 4 5 5 4
Which is the expected output.
-- Petr "Pasky" Baudis Stuff: http://pasky.or.cz/ Right now I am having amnesia and deja-vu at the same time. I think I have forgotten this before.