Thread (7 messages) 7 messages, 3 authors, 2008-03-04

Re: kernel.org git tree corrupt?

From: Linus Torvalds <torvalds@linux-foundation.org>
Date: 2008-03-02 21:28:10
Also in: lkml


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 [off-list ref]
	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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help