On Sun, 16 Apr 2006, Johannes Schindelin wrote: > > just to make it clearer what I want: > > git-whatchanged -p next | grep parse_whatchanged > > as well as > > git log -p next | grep parse_whatchanged > > do not find that any line like > > int parse_whatchanged_opt(int ac, [...] > > was removed, but they find that this line was added. However, in the > working tree (which has a fresh checkout of next), there is no such line > in log-tree.c. So I really would like to know where it vanished! It was removed by merge 43f934aa: "Merge branch 'lt/logopt' into next". The "parse_whatchanged_opt()" function never existed in that lt/logopt branch, and merging it (manually, I assume) it doesn't exist in the result either. General hint: if you don't find it in "--cc", then that means that it's almost certainly a merge. "--cc" will only find things that _clash_, ie the end result is different from either of the branches (and in this case, it wasn't different, since parse_whatchanged_opt() simply didn't exist in the branch that was merged). Now, finding things in merges can be a bit painful, but the sure-fire safe way is the old one: use "-m -p" to show _all_ sides of a merge as a diff. That's a really inconvenient format for reading, but it literally shows all changes to all parents. Again, "git log log-tree.c" actually does do the right thing: the current state of "log-tree.c" really has _all_ of its history coming from the lt/logopt branch, which is why when you do git log -m -p log-tree.c | grep int parse_whatchanged_opt you won't get any result at all: the _current_ state of log-tree.c really has no history what-so-ever that involved parse_whatchanged_opt. That may sound strange, but it really is very true. Doing a "gitk log-tree.c" shows what the real history of the contents of that file is. And this actually comes back to a very fundamental git issue: git tracks _contents_. It doesn't care one whit if there was another branch that had some other history for that file: if that other branch didn't affect the contents of the file, then that other branch simply doesn't exist as far as that particular file history is concerned. It only exists as a "bigger" issue. But that "-m -p" thing can be useful when you do want to see the bigger issue. As might "--no-prune-merges". Linus - : 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