From: Jeff King Date: Fri, 14 May 2010 04:37:04 GMT Subject: Re: Git log follow question Message-ID: <20100514043704.GC6075@coredump.intra.peff.net> In-Reply-To: <006d01caf300$703e96a0$50bbc3e0$@burgmann.anu.edu.au> On Fri, May 14, 2010 at 10:57:34AM +1000, Albert Krawczyk wrote: > I'm having an issue understanding the way git log --follow works with git > log --parents > > When I run > git log --parents --pretty=format:Commit:%H%nParent:%P%n%n alloc.c > I get: > Commit:4b25d091ba53c758fae0096b8c0662371857b9d9 > Parent:100c5f3b0b27ec6617de1a785c4ff481e92636c1 > > [...] > > When I try to run git log --parents --follow I get this: > git log --parents --follow --pretty=format:Commit:%H%nParent:%P%n%n alloc.c > > Commit:4b25d091ba53c758fae0096b8c0662371857b9d9 > Parent:75b44066f3ed7cde238cdea1f0bf9e2f1744c820 Hmm. The actual parent is 75b44066. You get 100c5f in the first case because basic revision path-limiting simplifies the history graph to remove uninteresting commits (and rewrites the parents). So the answer isn't _wrong_ exactly, but it is less useful. Seeing the simplified graph is generally what we want. This is a limitation of the way --follow is implemented. It turns off history pruning because our list of what to prune will be changing over time. Probably we would have to special-case the FOLLOW_RENAMES code to rewrite the parent list before display. I'm cc'ing Linus, who has more of a clue in both of those areas than I do. -Peff