git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* How to use git for Linux kernel development ?
@ 2006-02-01 11:38 Laurent Pinchart
  2006-02-01 20:38 ` J. Bruce Fields
  2006-02-01 21:43 ` Junio C Hamano
  0 siblings, 2 replies; 3+ messages in thread
From: Laurent Pinchart @ 2006-02-01 11:38 UTC (permalink / raw)
  To: git

Hi everybody,

my company decided to port the Linux kernel to custom hardware. As we need a 
repository for the sources, I thought I would give git a try. The man pages 
and tutorials are quite helpful to understand the git commands, but none of 
the documentation I found has been able to answer my (not so simple) 
question : given my use cases, how do I use git ?

Here are the use cases.

I need to port the Linux kernel to custom hardware. This means fixing bugs in 
the kernel, adding new features and new device drivers. Some of the 
modifications I make (bug fixes) will be pushed upstream by myself, some 
others by other developers (for instance I will apply patches found on 
sourceforge to support our non-UHCI/OHCI USB host controller, and I don't 
want to push code for which I'm not the maintainer upstream), and some device 
drivers will not be pushed at all.

I will base my work on the Linux kernel 2.6.15, which is the most recent 
release that has the features I need (2.6.16-rc1 broke serial port support on 
Freescale PowerQuickII processors). I plan to stay up-to-date with the main 
kernel repository by either fixing the problems in future releases or waiting 
for someone to fix them, depending on how much time I can spend on the 
project.

I have no idea how to layout my git repository to work on day-to-day 
development. I need to :

- commit bug fixes, external patches and internal modifications to a branch 
(or possibly on separate branches depending on what I commit if needed). The 
work will be based on Linux kernel 2.6.15 but I'd like to stay up-to-date 
with the master repository as much as possible.
- push bug fixes upstream by creating a patchset and submitting it by email.
- pull changes from upstream and merge them in my various branches when the 
upstream versions become stable enough.
- keep branches for all the versions shipped to the customers for bug fixes.

I'm the only developer working on the Linux kernel in my company, but that 
might change in a few months, so other developers will need to use git as 
well.

Is git able to accomodate my needs ? I've been trying to setup a git 
repository with a few branches over the last two days, but I always had to 
throw everything away and start back from zero. I haven't been able to figure 
out which branches I should create and how I should use them.

Thanks in advance for your help, and I hope I'm not asking too much. If really 
unable to use git, I'll go for SVN (or SourceSafe as that's what my company 
used until today, but I'd like to avoid it) even if I feel it will make 
keeping up-to-date with upstream more difficult.

Laurent Pinchart

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: How to use git for Linux kernel development ?
  2006-02-01 11:38 How to use git for Linux kernel development ? Laurent Pinchart
@ 2006-02-01 20:38 ` J. Bruce Fields
  2006-02-01 21:43 ` Junio C Hamano
  1 sibling, 0 replies; 3+ messages in thread
From: J. Bruce Fields @ 2006-02-01 20:38 UTC (permalink / raw)
  To: Laurent Pinchart; +Cc: git

On Wed, Feb 01, 2006 at 12:38:44PM +0100, Laurent Pinchart wrote:
> I have no idea how to layout my git repository to work on day-to-day 
> development. I need to :
> 
> - commit bug fixes, external patches and internal modifications to a branch 
> (or possibly on separate branches depending on what I commit if needed). The 
> work will be based on Linux kernel 2.6.15 but I'd like to stay up-to-date 
> with the master repository as much as possible.
> - push bug fixes upstream by creating a patchset and submitting it by email.
> - pull changes from upstream and merge them in my various branches when the 
> upstream versions become stable enough.
> - keep branches for all the versions shipped to the customers for bug fixes.
> 
> I'm the only developer working on the Linux kernel in my company, but that 
> might change in a few months, so other developers will need to use git as 
> well.
> 
> Is git able to accomodate my needs ?

Those certainly sound like the kinds of things it's meant for.

> I've been trying to setup a git repository with a few branches over
> the last two days, but I always had to throw everything away and start
> back from zero. I haven't been able to figure out which branches I
> should create and how I should use them.

Maybe you could be more specific about the problems you've had?

--b.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: How to use git for Linux kernel development ?
  2006-02-01 11:38 How to use git for Linux kernel development ? Laurent Pinchart
  2006-02-01 20:38 ` J. Bruce Fields
@ 2006-02-01 21:43 ` Junio C Hamano
  1 sibling, 0 replies; 3+ messages in thread
From: Junio C Hamano @ 2006-02-01 21:43 UTC (permalink / raw)
  To: Laurent Pinchart; +Cc: git

Laurent Pinchart <laurent.pinchart@tbox.biz> writes:

> ... I haven't been able to figure 
> out which branches I should create and how I should use them.

Bruce already responded to this part in a more polite way, but
let me be more blunt.  You need to figure out how your project
and workflow is to be organized first, and that needs your own
thinking.  We could help, but you know your project better than
any of us.  The organization of what git branches to use and how
would fall out as a natural consequence of your workflow.

> ... If really unable to use git, I'll go for SVN (or
> SourceSafe as that's what my company used until today, but I'd
> like to avoid it) even if I feel it will make keeping
> up-to-date with upstream more difficult.

And I suspect you would have the same workflow issues regardless
of the choice of any SCM (some SCM may _force_ particular
workflow on you though; which may be a good thing -- it reduces
confusion coming from having too many possibilities to choose
from).

For example, with my simplified world view, I would do something
like this:

master::
	the tip of the latest of your product.

vanilla::
	the tip of the Linus vanilla kernel. you do not
        commit to it---you only update it via "git fetch".

kfix::
	forked somewhere from refs/heads/vanilla, and may
        occasionally be updated by merging from it, to
        hold your own bugfixes meant for mainline.

maint/1.0, maint/1.1, maint/1.2,...::
	forked somewhere from master when you do a release.


Your product specific work is done in master.  In practice, you
probably would emply "topic branch" workflow to grow the master,
but that is covered pretty well by Tony Luck in one of our howto
documents, so I would not repeat it here. External patches you
pick up from elsewhere would go in the master as well.

When working on bugs present in the vanilla kernel, You checkout
kfix, work in there and commit fixes to this branch.  It may be
a good idea to occasionally sync this branch with vanilla when
your changes conflict with upstream changes.  This is the branch
you would publish to the outside world for consumption by the
kernel community (other branches probably need to be published
to satisfy your GPL obligations as well).

You would merge from kfix into master as needed.

When you release your version 1.0 product, you would tag
"master", and at the same time, branch "maint/1.0" from there.
Further post-release fixes you would commit to maint/1.0
branch.  You might make further tags 1.0.1, 1.0.2 on this branch
as needed.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2006-02-01 21:43 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-02-01 11:38 How to use git for Linux kernel development ? Laurent Pinchart
2006-02-01 20:38 ` J. Bruce Fields
2006-02-01 21:43 ` Junio C Hamano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).