Re: git/cscope with x86 merge

From: Linus Torvalds
Date: Sat Oct 20 2007 - 14:20:44 EST




On Sat, 20 Oct 2007, Sam Ravnborg wrote:
>
> But you do not see the rename arch/x86_64/kernel/{vmlinux.lds.S => vmlinux.lds.S}

Umm. What you are describing isn't a rename - that's the same name. Do you
perhaps mean vmlinux.lds.S => vmlinux_64.lds.S ?

And yes, it doesn't show that as a rename, because of the fact that the

arch/x86_64/kernel/vmlinux.lds.S

file actually *remained*, so it wasn't really a rename. It just got almost
all of its data changed.

So there was never really a rename: there was a "copy" and a "rewrite".
And "git --follow" doesn't follow copies.

However, "git blame" does do so. So if you do

git blame -C arch/x86/kernel/vmlinux_64.lds.S

(where that -C tells it to follow data across file copies), it will
actually show the history down, line for line!

But when you try to follow the history of the whole *file*, git sees that
the filename still existed of the source, so it won't consider that a
candidate for renames!

I could perhaps look at making "git log --follow" also break up files that
got totally rewritten (git already has a notion of "-B" to do that), but
no, we don't do it right now. (But one of the advantages of the git model
is that none of this is hardcoded in the repository data itself, so we can
improve the rename following and it will automatically work with any repo,
even one created with older git versions)

Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/