Subject: Git setup for kernel in-house development + mainstream submissions?

From: PaV <[email-masked]>
Date: Sun, 01 Feb 2009 22:25:55 +0100

Hello,

I would like to kindly ask for suggestions how to setup and use git in a
company that performs in-house kernel development (drivers mostly) for
its own devices and would like to occasionaly submit patches for mainstream.

I've come up with a short list of use cases/requirements (possibly not
exhaustive, any suggestions here as well please?):

1) a way to separate development of in-house code (various drivers)

2) a place to merge everything done in-house and provide current
development snapshot for internal use

3) something that tracks the current mainstream tree, to be merged with
(3) ocassionaly (or (2)?)

4) a simple way to select changes (which may be as small as only parts
of any of the drivers), format them and submit for upstream merge.
Preferably, if possible, prepare those series of patches and store them
for later use (immediate submission might not be possible and might not
be done at all).

5) (more?)

So the proposed setup might be:
(1) - in-house devel could be done on separate branches for each driver
(2) - a master branch (on the main server) for in-house snapshots and
distribution
(3) - a separate tracking branch for mainstream
(4) - now this is hard.
The main problems are how to create, how to diff and how to manage those
patches (stgit?) and what to do when mainstream gets updated, etc...

So ideas are: rebase and/or stgit/quilt. Or/and maybe topic branches,
creating new branches for each new kernel version for each driver,
copying the old branch and rebasing?
This is the most important part for which I'd like to ask for suggestions...

Any other suggestions are of course also welcome, my experience in git
is small and I might have missed things.

Thank you!
Paul