git help needed for 2.6.34 kernel branch revival

Daniel Drake dsd at laptop.org
Tue Aug 17 17:01:20 EDT 2010


Hi,

I'm playing with a few forward-looking ideas, one of them being
upgrading OLPC's kernel from version 2.6.31 to 2.6.34. And always open
to learning more about git...

Now, a good while back, Deepak started working on a 2.6.34 branch,
presumably forked from the 2.6.31 one that we were working on at the
time. I'm not sure of the details of how the branch or merge was done.
http://dev.laptop.org/git/olpc-2.6/log/?h=olpc-2.6.34-dev

It would be nice to be able to use his work, given that it appears a
big chunk of the work is already done. But there are 2 complications:

 1. The 2.6.31 branch has seen a lot of developments and fixes since
the 2.6.34 branch was created. So, we need to pull in all the recent
changes that we've made in olpc-2.6.31.
 2. The olpc-2.6.31 branch has merged in a few of the 2.6.31.x
"linux-stable" releases; those familiar with kernel development will
understand that those releases are outside of Linus' official tree
(i.e. the 2.6.31 to 2.6.32 history in Linus' tree does *not* literally
include the 2.6.31.x releases)

If I try the obvious:
 git checkout olpc-2.6.34-dev
 git merge olpc-2.6.31

then we end up pulling in all of the linux-stable-2.6.31 changes into
the 2.6.34 branch. For the majority there will be no problem. But now
and then, fixes are made in -stable which differ from the equivalent
fixes that end up in mainline. For example
http://dev.laptop.org/git/olpc-2.6/commit/?h=olpc-2.6.31&id=5c7fba322917ef91842676de55fba470bc2af5f3
(note how it says "fixed in a different way")

So I end up with a large task on my hands (finding all these little
differences and figuring out the right course of action), and a
resultant kernel that I don't really trust.

Another option could be to undo the merges of the linux-stable trees
from olpc-2.6.31. But I don't know how.

What's the best course of action?


Perhaps the best answer is "start again with a 2.6.34 rebase". I can
use this command to determine all the OLPC commits that aren't in
mainline or the linux-stable merges:
git log --pretty=oneline 120f68c4..olpc-2.6.31
(120f68c4 is the 2.6.31.6 linux-stable release commit, the last
2.6.31-stable release merged into olpc-2.6.31)

Maybe this is the best course of action? The headache is that we're
looking at 399 commits.


On a separate note, I guess it would make sense for OLPC to define a
policy where -stable updates are not brought into the OLPC kernel
tree. This would avoid this headache in future, as the history would
flow consistent with Linus' tree.


Thoughts?

Thanks,
Daniel



More information about the Devel mailing list