From: Linus Torvalds <torvalds@osdl.org>
To: Matt McCutchen <hashproduct@verizon.net>
Cc: git@vger.kernel.org
Subject: Re: How to switch kernel customizations from 2.6.15.6 to 2.6.16?
Date: Thu, 30 Mar 2006 09:32:38 -0800 (PST) [thread overview]
Message-ID: <Pine.LNX.4.64.0603300919280.27203@g5.osdl.org> (raw)
In-Reply-To: <1143687710.2524.1.camel@mattlaptop.metaesthetics.net>
On Wed, 29 Mar 2006, Matt McCutchen wrote:
>
> Perhaps this is just politics, but which kernel repository is more
> official, and why? Linus's or the one I have been using,
> git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.16.y.git
> ?
The beauty of git should be (and maybe that's not entirely true simply
because of practical concerns) that there really need not be any notion of
"more official".
You can fetch multiple different git trees from different sources into the
same git tree, and then keep them _all_ around equally as different
branches. You can move fixes between the different branches with "git
cherry-pick", and you can merge different branches with "git merge"
Now, the reason I say "_should_ be" rather than "is" is two-fold:
- right now, a lot of the infrastructure is simply set up more towards
the "one single source repository" model. When you do a "git clone", it
kind of makes the origin special. That's how all the documentation is
written, and that's also the only remote branch that git creates
_automatically_ for you.
This really isn't a technical issue: the git code code doesn't care
about any special "original" repository. But the fact that you have to
create the ".git/remotes/linus" file by hand, and that all the examples
in the docs end up talking about a single "origin" branch means that
people _think_ of git as a "single origin" thing.
- the more fundamental one is that when you start mixing branches, you
have to be very careful if you expect the upstream projects to pull the
changes _back_. In particular, that's where you have to think twice (or
three times) about doing a "git merge" (or a "git pull", which
implicitly merges for you if it's not a pure fast-forward).
In particular, the fact that _you_ want to merge two trees that came
from different sources does _not_ imply that either of the two sources
might want to merge with each other. So if you merge the two together,
you may find it impossible to have either of them then pull from you:
they way want your changes, but they might not like the merge you did,
because they have different policies about that work than you did.
So while the first point is purely a "mental model" issue and about lack
of helper scripts, the second point is fundamental.
For example, in your case it was almost certainly the right thing to do to
cherry-pick your changes from the 2.6.15.6 branch onto the development
branch, because I simply don't want to merge the 2.6.15.6 stuff into the
standard tree: part of the _rules_ for the stable branch is that the
things it fixes should have been fixed in the development tree already, so
merging the stable tree should always be unnecessary (and often clash,
although _hopefully_ in many cases the fixes in the stable tree are 1:1
identical and will merge beautifully).
Anyway: from a technical standpoint, no tree should be "special" or "more
official" for git usage. But when merging data back to any of those trees
that aren't special, the source/history of the data is important to keep
in mind. Branch "a" may not be any more special than branch "b", but when
you push changes back to the source of branch "a", the history of those
changes (relative to what the source was) is meaningful.
Linus
next prev parent reply other threads:[~2006-03-30 17:32 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-03-29 1:43 How to switch kernel customizations from 2.6.15.6 to 2.6.16? Matt McCutchen
2006-03-29 2:10 ` Linus Torvalds
2006-03-29 2:30 ` Junio C Hamano
2006-03-29 3:58 ` Junio C Hamano
2006-03-29 19:27 ` Linus Torvalds
2006-03-29 19:39 ` Linus Torvalds
2006-03-29 20:24 ` Junio C Hamano
2006-03-30 1:59 ` Rebase semantic and cherry-pick Jakub Narebski
2006-03-30 2:38 ` Junio C Hamano
2006-03-30 2:54 ` Linus Torvalds
2006-03-30 3:40 ` Junio C Hamano
2006-03-30 3:15 ` How to switch kernel customizations from 2.6.15.6 to 2.6.16? Junio C Hamano
2006-03-29 2:23 ` Shawn Pearce
2006-03-29 2:26 ` Junio C Hamano
2006-03-30 3:01 ` Matt McCutchen
2006-03-30 3:22 ` Junio C Hamano
2006-03-30 3:47 ` Matt McCutchen
2006-03-30 17:32 ` Linus Torvalds [this message]
2006-03-30 21:50 ` Matt McCutchen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Pine.LNX.4.64.0603300919280.27203@g5.osdl.org \
--to=torvalds@osdl.org \
--cc=git@vger.kernel.org \
--cc=hashproduct@verizon.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).