Re: kernel.org git tree corrupt?

From: Linus Torvalds
Date: Sun Mar 02 2008 - 16:28:10 EST




On Sun, 2 Mar 2008, Steve French wrote:
>
> In preparation for a merge request I do
> cg-diff -m -r origin: | diffstat -p1
> (git diff -m -r origin: shows the same problem) and
> cg-log -m -r origin:

First off, you really should lay off the cogito thing, it's pretty much
guaranteed that any cogito usage will just be harder and less likely to be
correct than just usign native git (and almost nobody will be able to help
you any more - it's not like it's been maintained for the last year).

It *sounds* like your "origin" isn't what you expect it to be.

> Was the linux-2.6.git rebuilt in the last four weeks with different
> changeset numbers? Something seems to have drastically changed in the
> kernel.org tree in the last few weeks.

Nope, nothing has been rebuilt, but there's been another merge window, so
there's certainly been drastic changes.

> Doing "cg-log -m -r origin: fs/cifs" shows changesets that are already
> in linux-2.6.git (e.g. the vfs-wide changes to add path_put
> 1d957f9bf87da74f420424d16ece005202bbebd3 and
> 4ac9137858e08a19f29feac4e1f4df7c268b0ba5 )

In that case, your "origin" simply isn't updated, but points somewhere
long back in history. I can only assume that cogito has done something
wrong, like not been able to handle packed refs or something, and you have
an updated tree but "origin" pointing to way back in the history.

> Ideas for another solution short of recloning and sorting through all
> of the last month or two of patches that affect this directory by
> hand?

Do this:

- get rid of cogito (or at least make sure that it doesn't mess up the
following sequence)

- look at your .git/config file to make sure that the remote branches are
sane. It should have something like this (and if it doesn't, add it):

[remote "origin"]
url = git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
fetch = +refs/heads/*:refs/remotes/origin/*

[branch "master"]
remote = origin
merge = refs/heads/master

- look at your "origin" branch, and make sure it's a *remote* branch, not
the old-style local one. Ie it should *not* show up when you do a
plain

git branch

but it *should* show up (as both "origin/HEAD" and "origin/master")
when you do

git branch -a

and if it's a local branch (very possible, since you're using cogito
that may not even understand remote branches), then just blow it away
entirely with "git branch -D origin".

- do "git fetch" to make sure that the remote branches are up-to-date

- now do "git log origin" an it should show something recent like

commit 038f2f725503b55ab76cfd2645915a85594710fe
Merge: 8d07a67... 855c603...
Author: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxxxxxxxx>
Date: Sun Mar 2 12:38:17 2008 -0800

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux139
...

- and if it does, now you should be all good, and you can dothe normal
"gitk origin.." and see the commits that are in your tree but not in
mine.

Now your setup should be ok again. I *suspect* that what has happened is
that you got a local "origin" branch - probably through cogito - that hid
the remote one.

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/