* [Q] merging from one (kernel) stable to another?
@ 2009-03-30 8:24 Brian Foster
2009-03-30 9:33 ` Andreas Ericsson
` (2 more replies)
0 siblings, 3 replies; 14+ messages in thread
From: Brian Foster @ 2009-03-30 8:24 UTC (permalink / raw)
To: git mailing list
Whilst this question involves linux(-mips) kernel tree,
it's a git(-related?) question, not a kernel question ....
We are currently in the process of upgrading our embedded
system from kernel 2.6.21(-ish) to at least 2.6.26.8; and
later, at some time in the future on to 2.6.3x or something.
Going from 2.6.21 to .22 to .23 and so on to .26, then to
.26.1 and so on to .26.8 is “easy” in the sense there are
very few conflicts with our existing baseline (e.g., just
2 or 3 in 2 or 3 files).
.21 --> me --> .22 --> .23 ... --> .26 --> .27 --> master
\ \ \ \ \
.21-stable .22-stable .23-stable \ .27-stable
.26.8
\
.26-stable
But (using 2.6.21-stable and 2.6.22-stable as proxies),
tests indicate that going from .26.8 to .27 or anything
later will have numerous conflicts (100s? in more than
30 files). Thinking about it, this isn't too surprising
since the -stable branches cherry-pick important/benign
fixes from later revisions.
What's frustrating is that in essentially all “conflict”
cases, the resolution is simple: Use the later version.
Very few conflicts are caused by our local changes. But
the merge tool I used (‘tkdiff’ via ‘git mergetool’) for
my tests doesn't seem to make that resolution an easy
thing to do — I (seem to) have to manually check each
and every conflict, which very quickly becomes tedious
(read: error-prone).
Is there a (relatively) easy way to manage this situation?
Trying some internet searches didn't find much of anything,
albeit just what to search for isn't too clear.
Thanks for any suggestions (including “RFT<a named>M”).
cheers!
-blf-
--
“How many surrealists does it take to | Brian Foster
change a lightbulb? Three. One calms | somewhere in south of France
the warthog, and two fill the bathtub | Stop E$$o (ExxonMobil)!
with brightly-coloured machine tools.” | http://www.stopesso.com
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Q] merging from one (kernel) stable to another?
2009-03-30 8:24 [Q] merging from one (kernel) stable to another? Brian Foster
@ 2009-03-30 9:33 ` Andreas Ericsson
2009-03-30 10:38 ` Johannes Sixt
` (2 more replies)
2009-03-30 17:31 ` Daniel Barkalow
2009-03-30 18:23 ` Uwe Kleine-König
2 siblings, 3 replies; 14+ messages in thread
From: Andreas Ericsson @ 2009-03-30 9:33 UTC (permalink / raw)
To: Brian Foster; +Cc: git mailing list
Brian Foster wrote:
> Whilst this question involves linux(-mips) kernel tree,
> it's a git(-related?) question, not a kernel question ....
>
> We are currently in the process of upgrading our embedded
> system from kernel 2.6.21(-ish) to at least 2.6.26.8; and
> later, at some time in the future on to 2.6.3x or something.
> Going from 2.6.21 to .22 to .23 and so on to .26, then to
> .26.1 and so on to .26.8 is “easy” in the sense there are
> very few conflicts with our existing baseline (e.g., just
> 2 or 3 in 2 or 3 files).
>
> .21 --> me --> .22 --> .23 ... --> .26 --> .27 --> master
> \ \ \ \ \
> .21-stable .22-stable .23-stable \ .27-stable
> .26.8
> \
> .26-stable
>
> But (using 2.6.21-stable and 2.6.22-stable as proxies),
> tests indicate that going from .26.8 to .27 or anything
> later will have numerous conflicts (100s? in more than
> 30 files). Thinking about it, this isn't too surprising
> since the -stable branches cherry-pick important/benign
> fixes from later revisions.
>
> What's frustrating is that in essentially all “conflict”
> cases, the resolution is simple: Use the later version.
The trouble is "essentially all", as opposed to "all". Git
can never know which of the conflicts are which, so it will
leave it all up to you.
A possibly better approach for you is to "git format-patch"
your own changes and apply them to a clean 2.6.26.8 tree
instead of trying to merge 2.6.26.8 into 2.6.21. That's
how we do such things where I work (although not with the
kernel), and it's working wonderfully (we had that multi-
conflict problem earlier too). Note that this will cause
you to either get a new branch-name for your release-
branch, or your current release-branch to get rebuilt.
Neither is actually horrible in this case, since you could
easily justify taking a flag-day when doing a kernel upgrade.
--
Andreas Ericsson andreas.ericsson@op5.se
OP5 AB www.op5.se
Tel: +46 8-230225 Fax: +46 8-230231
Considering the successes of the wars on alcohol, poverty, drugs and
terror, I think we should give some serious thought to declaring war
on peace.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Q] merging from one (kernel) stable to another?
2009-03-30 9:33 ` Andreas Ericsson
@ 2009-03-30 10:38 ` Johannes Sixt
2009-03-30 11:58 ` Brian Foster
2009-03-30 15:20 ` Ping Yin
2009-03-31 4:20 ` Kris Shannon
2 siblings, 1 reply; 14+ messages in thread
From: Johannes Sixt @ 2009-03-30 10:38 UTC (permalink / raw)
To: Andreas Ericsson; +Cc: Brian Foster, git mailing list
Andreas Ericsson schrieb:
> A possibly better approach for you is to "git format-patch"
> your own changes and apply them to a clean 2.6.26.8 tree
> instead of trying to merge 2.6.26.8 into 2.6.21.
After you have successfully done *that*, you know how the resulting tree
must look like, and you give it a tag, say "like-this". If you really want
to have a merge, then you can just repeat the merge with your original
branch, at which time you will get tons of conflicts. Now you just 'git
checkout like-this -- .' and you have all your conflicts resolved in the
way you need them.
-- Hannes
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Q] merging from one (kernel) stable to another?
2009-03-30 10:38 ` Johannes Sixt
@ 2009-03-30 11:58 ` Brian Foster
2009-03-30 12:19 ` Johannes Sixt
2009-03-30 12:19 ` Andreas Ericsson
0 siblings, 2 replies; 14+ messages in thread
From: Brian Foster @ 2009-03-30 11:58 UTC (permalink / raw)
To: Johannes Sixt, Andreas Ericsson; +Cc: git mailing list
On Monday 30 March 2009 12:38:43 Johannes Sixt wrote:
> Andreas Ericsson schrieb:
> > A possibly better approach for you is to "git format-patch"
> > your own changes and apply them to a clean 2.6.26.8 tree
> > instead of trying to merge 2.6.26.8 into 2.6.21.
[ I'm going from .21 to .26.8, so I think you've got that reversed? ]
>
> After you have successfully done *that*, you know how the resulting
> tree must look like, and you give it a tag, say "like-this".
> If you really want to have a merge, then you can just repeat the
> merge with your original branch, at which time you will get tons
> of conflicts. Now you just 'git checkout like-this -- .' and you
> have all your conflicts resolved in the way you need them.
Andreas & Hannes,
Thanks for the suggestion. I'll have to experiment,
but off-the-top-of-my-head, I think I do want a merge,
so that it's easier to track the history of individual
local changes. Having said that, I'm not entirely sure
I follow your suggestions. What I think you mean is:
(1) Create a patch which is all (local) changes
(née diffs) from linux-mips.21 to our.21;
(2) Checkout linux-mips.26.8 (e.g.);
(3) Apply the patch created in (1), above;
(4) Tag the result `like-this';
(5) Checkout our.21; and
(6) Merge with `like-this'.
I admit that now that I write the steps out, it seems
to make sense ....? Am I understanding correctly?
Thanks for the suggestions. Other suggestions are also
quite welcome.
cheers!
-blf-
--
“How many surrealists does it take to | Brian Foster
change a lightbulb? Three. One calms | somewhere in south of France
the warthog, and two fill the bathtub | Stop E$$o (ExxonMobil)!
with brightly-coloured machine tools.” | http://www.stopesso.com
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Q] merging from one (kernel) stable to another?
2009-03-30 11:58 ` Brian Foster
@ 2009-03-30 12:19 ` Johannes Sixt
2009-03-30 12:40 ` Brian Foster
2009-03-30 12:19 ` Andreas Ericsson
1 sibling, 1 reply; 14+ messages in thread
From: Johannes Sixt @ 2009-03-30 12:19 UTC (permalink / raw)
To: Brian Foster; +Cc: Andreas Ericsson, git mailing list
Brian Foster schrieb:
> On Monday 30 March 2009 12:38:43 Johannes Sixt wrote:
>> Andreas Ericsson schrieb:
>>> A possibly better approach for you is to "git format-patch"
>>> your own changes and apply them to a clean 2.6.26.8 tree
>>> instead of trying to merge 2.6.26.8 into 2.6.21.
> [ I'm going from .21 to .26.8, so I think you've got that reversed? ]
>> After you have successfully done *that*, you know how the resulting
>> tree must look like, and you give it a tag, say "like-this".
>> If you really want to have a merge, then you can just repeat the
>> merge with your original branch, at which time you will get tons
>> of conflicts. Now you just 'git checkout like-this -- .' and you
>> have all your conflicts resolved in the way you need them.
>
> Andreas & Hannes,
>
> Thanks for the suggestion. I'll have to experiment,
> but off-the-top-of-my-head, I think I do want a merge,
> so that it's easier to track the history of individual
> local changes. Having said that, I'm not entirely sure
> I follow your suggestions. What I think you mean is:
>
> (1) Create a patch which is all (local) changes
> (née diffs) from linux-mips.21 to our.21;
> (2) Checkout linux-mips.26.8 (e.g.);
> (3) Apply the patch created in (1), above;
format-patch creates a patch series. You apply the whole series, e.g. with
'git am'. But for this workflow you could also just create a single patch
and apply it to linux-mips.26.8, just as you wrote.
The important point is that you forge this tree into the shape that you
finally want to have in the merge (that you will make later). At this
point you only have to deal with conflicts and regressions that arise from
your own changes, which makes your life much easier than if you also had
to deal with conflicts that are outside your own changes.
> (4) Tag the result `like-this';
> (5) Checkout our.21; and
> (6) Merge with `like-this'.
No, you merge with linux-mips.26.8. This will again give you a lot of
conflicts. But you do
(7) git checkout like-this -- .
that is, you overwrite the merge result (that has conflicts) with your
known-good tree called "like-this". This resolves all conflicts in the way
that you wanted them.
-- Hannes
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Q] merging from one (kernel) stable to another?
2009-03-30 11:58 ` Brian Foster
2009-03-30 12:19 ` Johannes Sixt
@ 2009-03-30 12:19 ` Andreas Ericsson
2009-03-30 12:51 ` Brian Foster
1 sibling, 1 reply; 14+ messages in thread
From: Andreas Ericsson @ 2009-03-30 12:19 UTC (permalink / raw)
To: Brian Foster; +Cc: Johannes Sixt, git mailing list
Brian Foster wrote:
> On Monday 30 March 2009 12:38:43 Johannes Sixt wrote:
>> Andreas Ericsson schrieb:
>>> A possibly better approach for you is to "git format-patch"
>>> your own changes and apply them to a clean 2.6.26.8 tree
>>> instead of trying to merge 2.6.26.8 into 2.6.21.
> [ I'm going from .21 to .26.8, so I think you've got that reversed? ]
>> After you have successfully done *that*, you know how the resulting
>> tree must look like, and you give it a tag, say "like-this".
>> If you really want to have a merge, then you can just repeat the
>> merge with your original branch, at which time you will get tons
>> of conflicts. Now you just 'git checkout like-this -- .' and you
>> have all your conflicts resolved in the way you need them.
>
> Andreas & Hannes,
>
> Thanks for the suggestion. I'll have to experiment,
> but off-the-top-of-my-head, I think I do want a merge,
> so that it's easier to track the history of individual
> local changes. Having said that, I'm not entirely sure
> I follow your suggestions. What I think you mean is:
>
> (1) Create a patch which is all (local) changes
> (née diffs) from linux-mips.21 to our.21;
This is wrong. Create several git-patches, each containing
the equivalence of one commit (complete with diff, author
info and commit message).
> (2) Checkout linux-mips.26.8 (e.g.);
> (3) Apply the patch created in (1), above;
Except it'll be "apply the patches, re-creating history
as if it had been done with a different base from the
start".
> (4) Tag the result `like-this';
> (5) Checkout our.21; and
> (6) Merge with `like-this'.
>
Merge is not necessary.
> I admit that now that I write the steps out, it seems
> to make sense ....? Am I understanding correctly?
>
Almost. "git help format-patch" and "git help am" will get
you the rest of the way, I think.
--
Andreas Ericsson andreas.ericsson@op5.se
OP5 AB www.op5.se
Tel: +46 8-230225 Fax: +46 8-230231
Considering the successes of the wars on alcohol, poverty, drugs and
terror, I think we should give some serious thought to declaring war
on peace.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Q] merging from one (kernel) stable to another?
2009-03-30 12:19 ` Johannes Sixt
@ 2009-03-30 12:40 ` Brian Foster
0 siblings, 0 replies; 14+ messages in thread
From: Brian Foster @ 2009-03-30 12:40 UTC (permalink / raw)
To: Johannes Sixt; +Cc: Andreas Ericsson, git mailing list
On Monday 30 March 2009 14:19:08 Johannes Sixt wrote:
> Brian Foster schrieb:
>[ ... ]
> > Thanks for the suggestion. I'll have to experiment,
> > but off-the-top-of-my-head, I think I do want a merge,
> > so that it's easier to track the history of individual
> > local changes. Having said that, I'm not entirely sure
> > I follow your suggestions. What I think you mean is:
> >
> > (1) Create a patch which is all (local) changes
> > (née diffs) from linux-mips.21 to our.21;
> > (2) Checkout linux-mips.26.8 (e.g.);
> > (3) Apply the patch created in (1), above;
>
> format-patch creates a patch series. You apply the whole series,
> e.g. with 'git am'. But for this workflow you could also just create
> a single patch and apply it to linux-mips.26.8, just as you wrote.
Point taken. I was being a bit sloppy there; I well know
`git format-patch' (which we use in our internal workflow)
generates a patch series, and that `git am' applies them.
Apologies for the confusion. Sorry!
> The important point is that you forge this tree into the shape that
> you finally want to have in the merge (that you will make later).
> At this point you only have to deal with conflicts and regressions
> that arise from your own changes, which makes your life much easier
> than if you also had to deal with conflicts that are outside your
> own changes.
Gottcha. Thanks for clarifying.
> > (4) Tag the result `like-this';
> > (5) Checkout our.21; and
> > (6) Merge with `like-this'.
>
> No, you merge with linux-mips.26.8. This will again give you a lot
> of conflicts. But you do
>
> (7) git checkout like-this -- .
>
> that is, you overwrite the merge result (that has conflicts) with
> your known-good tree called "like-this". This resolves all conflicts
> in the way that you wanted them.
Ah! Neat. I think I get it (er, git it?) now ....
Many thanks for your patient and very helpful replies!
cheers!
-blf-
--
“How many surrealists does it take to | Brian Foster
change a lightbulb? Three. One calms | somewhere in south of France
the warthog, and two fill the bathtub | Stop E$$o (ExxonMobil)!
with brightly-coloured machine tools.” | http://www.stopesso.com
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Q] merging from one (kernel) stable to another?
2009-03-30 12:19 ` Andreas Ericsson
@ 2009-03-30 12:51 ` Brian Foster
2009-03-30 13:52 ` Andreas Ericsson
0 siblings, 1 reply; 14+ messages in thread
From: Brian Foster @ 2009-03-30 12:51 UTC (permalink / raw)
To: Andreas Ericsson; +Cc: Johannes Sixt, git mailing list
On Monday 30 March 2009 14:19:11 Andreas Ericsson wrote:
> Brian Foster wrote:
> >[ ... ]
> > (1) Create a patch which is all (local) changes
> > (née diffs) from linux-mips.21 to our.21;
>
> This is wrong. Create several git-patches, each containing
> the equivalence of one commit (complete with diff, author
> info and commit message).
Yes, I was being sloppy there. Internally, we use both
`git format-patch' and `git am', but have a bad(?) habit
of referring to a patch series as “a patch”. Apologies
for the confusion. Sorry!
> > (2) Checkout linux-mips.26.8 (e.g.);
> > (3) Apply the patch created in (1), above;
>
> Except it'll be "apply the patches, re-creating history
> as if it had been done with a different base from the
> start".
Yes.
> > (4) Tag the result `like-this';
> > (5) Checkout our.21; and
> > (6) Merge with `like-this'.
>
> Merge is not necessary.
<Shrugs/> I'll going to try in both ways (with and without
merging) to better understand just what the results are like.
> > I admit that now that I write the steps out, it seems
> > to make sense ....? Am I understanding correctly?
>
> Almost. "git help format-patch" and "git help am" will get
> you the rest of the way, I think.
;-) Well, I did say “RTF<a named>M” is useful....!
Many thanks for your patient and very helpful replies.
cheers!
-blf-
--
“How many surrealists does it take to | Brian Foster
change a lightbulb? Three. One calms | somewhere in south of France
the warthog, and two fill the bathtub | Stop E$$o (ExxonMobil)!
with brightly-coloured machine tools.” | http://www.stopesso.com
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Q] merging from one (kernel) stable to another?
2009-03-30 12:51 ` Brian Foster
@ 2009-03-30 13:52 ` Andreas Ericsson
0 siblings, 0 replies; 14+ messages in thread
From: Andreas Ericsson @ 2009-03-30 13:52 UTC (permalink / raw)
To: Brian Foster; +Cc: Johannes Sixt, git mailing list
Brian Foster wrote:
> On Monday 30 March 2009 14:19:11 Andreas Ericsson wrote:
>> Brian Foster wrote:
>
>>> (4) Tag the result `like-this';
>>> (5) Checkout our.21; and
>>> (6) Merge with `like-this'.
>> Merge is not necessary.
>
> <Shrugs/> I'll going to try in both ways (with and without
> merging) to better understand just what the results are like.
If you get the tree into the state you want and simply want to
connect the histories, you can do
git merge -s ours $other_branch
which will record the tree from the current commit as the tree
for the merge-commit (ie, all changes from $other_branch are
thrown away, and the merge always succeeds without conflicts).
--
Andreas Ericsson andreas.ericsson@op5.se
OP5 AB www.op5.se
Tel: +46 8-230225 Fax: +46 8-230231
Considering the successes of the wars on alcohol, poverty, drugs and
terror, I think we should give some serious thought to declaring war
on peace.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Q] merging from one (kernel) stable to another?
2009-03-30 9:33 ` Andreas Ericsson
2009-03-30 10:38 ` Johannes Sixt
@ 2009-03-30 15:20 ` Ping Yin
2009-03-31 4:20 ` Kris Shannon
2 siblings, 0 replies; 14+ messages in thread
From: Ping Yin @ 2009-03-30 15:20 UTC (permalink / raw)
To: Andreas Ericsson; +Cc: Brian Foster, git mailing list
On Mon, Mar 30, 2009 at 5:33 PM, Andreas Ericsson <ae@op5.se> wrote:
> Brian Foster wrote:
>>
>> Whilst this question involves linux(-mips) kernel tree,
>> it's a git(-related?) question, not a kernel question ....
>>
>> We are currently in the process of upgrading our embedded
>> system from kernel 2.6.21(-ish) to at least 2.6.26.8; and
>> later, at some time in the future on to 2.6.3x or something.
>> Going from 2.6.21 to .22 to .23 and so on to .26, then to
>> .26.1 and so on to .26.8 is “easy” in the sense there are
>> very few conflicts with our existing baseline (e.g., just
>> 2 or 3 in 2 or 3 files).
>>
>> .21 --> me --> .22 --> .23 ... --> .26 --> .27 --> master
>> \ \ \ \ \
>> .21-stable .22-stable .23-stable \ .27-stable
>> .26.8
>> \
>> .26-stable
>>
>> But (using 2.6.21-stable and 2.6.22-stable as proxies),
>> tests indicate that going from .26.8 to .27 or anything
>> later will have numerous conflicts (100s? in more than
>> 30 files). Thinking about it, this isn't too surprising
>> since the -stable branches cherry-pick important/benign
>> fixes from later revisions.
>>
>> What's frustrating is that in essentially all “conflict”
>> cases, the resolution is simple: Use the later version.
>
> The trouble is "essentially all", as opposed to "all". Git
> can never know which of the conflicts are which, so it will
> leave it all up to you.
>
> A possibly better approach for you is to "git format-patch"
> your own changes and apply them to a clean 2.6.26.8 tree
> instead of trying to merge 2.6.26.8 into 2.6.21.
Or just (say, always use rebase instead of merge)
git rebase -i 2.6.26.8 --onto 2.6.27
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Q] merging from one (kernel) stable to another?
2009-03-30 8:24 [Q] merging from one (kernel) stable to another? Brian Foster
2009-03-30 9:33 ` Andreas Ericsson
@ 2009-03-30 17:31 ` Daniel Barkalow
2009-03-31 7:30 ` Brian Foster
2009-03-30 18:23 ` Uwe Kleine-König
2 siblings, 1 reply; 14+ messages in thread
From: Daniel Barkalow @ 2009-03-30 17:31 UTC (permalink / raw)
To: Brian Foster; +Cc: git mailing list
[-- Attachment #1: Type: TEXT/PLAIN, Size: 2135 bytes --]
On Mon, 30 Mar 2009, Brian Foster wrote:
> Whilst this question involves linux(-mips) kernel tree,
> it's a git(-related?) question, not a kernel question ....
>
> We are currently in the process of upgrading our embedded
> system from kernel 2.6.21(-ish) to at least 2.6.26.8; and
> later, at some time in the future on to 2.6.3x or something.
> Going from 2.6.21 to .22 to .23 and so on to .26, then to
> .26.1 and so on to .26.8 is “easy” in the sense there are
> very few conflicts with our existing baseline (e.g., just
> 2 or 3 in 2 or 3 files).
>
> .21 --> me --> .22 --> .23 ... --> .26 --> .27 --> master
> \ \ \ \ \
> .21-stable .22-stable .23-stable \ .27-stable
> .26.8
> \
> .26-stable
>
> But (using 2.6.21-stable and 2.6.22-stable as proxies),
> tests indicate that going from .26.8 to .27 or anything
> later will have numerous conflicts (100s? in more than
> 30 files). Thinking about it, this isn't too surprising
> since the -stable branches cherry-pick important/benign
> fixes from later revisions.
Why are you going from .26.8 to .27? Based on the -stable policy, there
should be no reason not to skip .26.x between .26 and .27. In fact, it's
not unlikely that merging both .26.8 and .27 will introduce bugs when the
same issue was fixed in different places in the two branches: a narrow
patch to paper over the identified problem in -stable and an intrusive
patch to change some API to make simpler code correct in the mainline.
That is, the correct way of merging changes from -stable with the latest
mainline series is always to take the mainline version, even if the
-stable changes don't conflict at all.
It should actually be ideal to just merge your local changes directly with
the mainline kernel you want to end up using. But you might want to merge
first with earlier mainline kernels in order to get fewer or easier
conflicts per step.
-Daniel
*This .sig left intentionally blank*
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Q] merging from one (kernel) stable to another?
2009-03-30 8:24 [Q] merging from one (kernel) stable to another? Brian Foster
2009-03-30 9:33 ` Andreas Ericsson
2009-03-30 17:31 ` Daniel Barkalow
@ 2009-03-30 18:23 ` Uwe Kleine-König
2 siblings, 0 replies; 14+ messages in thread
From: Uwe Kleine-König @ 2009-03-30 18:23 UTC (permalink / raw)
To: Brian Foster; +Cc: git mailing list
On Mon, Mar 30, 2009 at 10:24:08AM +0200, Brian Foster wrote:
> Whilst this question involves linux(-mips) kernel tree,
> it's a git(-related?) question, not a kernel question ....
>
> We are currently in the process of upgrading our embedded
> system from kernel 2.6.21(-ish) to at least 2.6.26.8; and
> later, at some time in the future on to 2.6.3x or something.
> Going from 2.6.21 to .22 to .23 and so on to .26, then to
> .26.1 and so on to .26.8 is “easy” in the sense there are
> very few conflicts with our existing baseline (e.g., just
> 2 or 3 in 2 or 3 files).
>
> .21 --> me --> .22 --> .23 ... --> .26 --> .27 --> master
> \ \ \ \ \
> .21-stable .22-stable .23-stable \ .27-stable
> .26.8
> \
> .26-stable
>
> But (using 2.6.21-stable and 2.6.22-stable as proxies),
> tests indicate that going from .26.8 to .27 or anything
> later will have numerous conflicts (100s? in more than
> 30 files). Thinking about it, this isn't too surprising
> since the -stable branches cherry-pick important/benign
> fixes from later revisions.
Assuming you have your master on top of .21-stable and want to go to
.26-stable, the following might work better for you:
$ git checkout -b mydot26stable .26-stable
$ git merge -s ours .21-stable
$ git checkout master
$ git merge mydot26stable
Note this is not tested, just came to my mind...
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | http://www.pengutronix.de/ |
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Q] merging from one (kernel) stable to another?
2009-03-30 9:33 ` Andreas Ericsson
2009-03-30 10:38 ` Johannes Sixt
2009-03-30 15:20 ` Ping Yin
@ 2009-03-31 4:20 ` Kris Shannon
2 siblings, 0 replies; 14+ messages in thread
From: Kris Shannon @ 2009-03-31 4:20 UTC (permalink / raw)
To: Git Mailing List
2009/3/30 Andreas Ericsson <ae@op5.se>
>
> Brian Foster wrote:
>>
>> Whilst this question involves linux(-mips) kernel tree,
>> it's a git(-related?) question, not a kernel question ....
>>
...
>> But (using 2.6.21-stable and 2.6.22-stable as proxies),
>> tests indicate that going from .26.8 to .27 or anything
>> later will have numerous conflicts (100s? in more than
>> 30 files). Thinking about it, this isn't too surprising
>> since the -stable branches cherry-pick important/benign
>> fixes from later revisions.
>>
>> What's frustrating is that in essentially all “conflict”
>> cases, the resolution is simple: Use the later version.
>
> The trouble is "essentially all", as opposed to "all". Git
> can never know which of the conflicts are which, so it will
> leave it all up to you.
git mailing list <git@vger.kernel.org>
What you could do is something like:
git checkout -b mystable-27 linux-2.6.27-stable
git merge -s ours linux-2.6.26-stable
git checkout local-changes-26
git merge mystable-27
The extra merge might allow git to distinguish between 26->27
conflicts and conflicts due to your local-changes.
BTW, when doing these merges between release branches you
probably want to increase merge.renamelimit.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Q] merging from one (kernel) stable to another?
2009-03-30 17:31 ` Daniel Barkalow
@ 2009-03-31 7:30 ` Brian Foster
0 siblings, 0 replies; 14+ messages in thread
From: Brian Foster @ 2009-03-31 7:30 UTC (permalink / raw)
To: Daniel Barkalow; +Cc: git mailing list
On Monday 30 March 2009 19:31:18 Daniel Barkalow wrote:
> On Mon, 30 Mar 2009, Brian Foster wrote:
> > Whilst this question involves linux(-mips) kernel tree,
> > it's a git(-related?) question, not a kernel question ....
> >
> > We are currently in the process of upgrading our embedded
> > system from kernel 2.6.21(-ish) to at least 2.6.26.8; and
> > later, at some time in the future on to 2.6.3x or something.
> > Going from 2.6.21 to .22 to .23 and so on to .26, then to
> > .26.1 and so on to .26.8 is “easy” in the sense there are
> > very few conflicts with our existing baseline (e.g., just
> > 2 or 3 in 2 or 3 files).
> >
> > .21 --> me --> .22 --> .23 ... --> .26 --> .27 --> master
> > \ \ \ \ \
> > .21-stable .22-stable .23-stable \ .27-stable
> > .26.8
> > \
> > .26-stable
> >
> > But (using 2.6.21-stable and 2.6.22-stable as proxies),
> > tests indicate that going from .26.8 to .27 or anything
> > later will have numerous conflicts (100s? in more than
> > 30 files). Thinking about it, this isn't too surprising
> > since the -stable branches cherry-pick important/benign
> > fixes from later revisions.
>
> Why are you going from .26.8 to .27? Based on the -stable policy,
> there should be no reason not to skip .26.x between .26 and .27.
Daniel,
That's a good question! The policy to-date has been to
ignore the -stable branches entirely, and go from release
to release; i.e., .21 to .22 to ... to .26 to .27 et al.
We (deliberately!) stay several releases behind (being
bang-up-to-date isn't too important to our market/product,
but having a robust secure system is extremely important).
The current feeling is we should probably be moving from
-stable to -stable, i.e., .21-stable to .22-stable to ...
to .26-stable and later to .27-stable and so on. This is
based, in part, on observing the changes that are in -stable
and realizing some of them are highly desirable. This new
idea/plan of going from -stable to -stable can change if
there's a good reason. It's currently in a state of flux.
So I somewhat incorrectly described the thinking, mixing
up our historical practice with the proposed new policy.
In my defense, my I point out that we are particularly
interested in some MIPS changes on .26-stable, and, at the
the moment, have decided to not go to .27 for this cycle.
(Admittedly, with the release of .29, the decision not to
go to .27 has been challenged, but the issue hasn't been
looked into in any detail (yet? as far as I know).)
Anyways, good catch! I take your point. Many thanks.
> In fact, it's
> not unlikely that merging both .26.8 and .27 will introduce bugs when the
> same issue was fixed in different places in the two branches: a narrow
> patch to paper over the identified problem in -stable and an intrusive
> patch to change some API to make simpler code correct in the mainline.
>
> That is, the correct way of merging changes from -stable with the latest
> mainline series is always to take the mainline version, even if the
> -stable changes don't conflict at all.
Yep! We don't want to merge changes from -stable
into master (mainline). That was a mistake in my
description. Again, thanks for pointing it out.
> It should actually be ideal to just merge your local changes directly with
> the mainline kernel you want to end up using. But you might want to merge
> first with earlier mainline kernels in order to get fewer or easier
> conflicts per step.
Indeed. We are progressing one release at a time.
(I've been insisting on this!) However, given we're
not targeting .27 or later at this cycle, and that
we know there are changes on .26-stable we want/need,
it's (almost) a dead cert our next release will be
based on some point in .26-stable (I'm using .26.8
as a proxy as it's the latest (when I checked) tag
on .26-stable).
Things are in flux, and suggestions are certainly
welcome. Thanks for your very helpful observations.
cheers!
-blf-
--
“How many surrealists does it take to | Brian Foster
change a lightbulb? Three. One calms | somewhere in south of France
the warthog, and two fill the bathtub | Stop E$$o (ExxonMobil)!
with brightly-coloured machine tools.” | http://www.stopesso.com
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2009-03-31 7:32 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-30 8:24 [Q] merging from one (kernel) stable to another? Brian Foster
2009-03-30 9:33 ` Andreas Ericsson
2009-03-30 10:38 ` Johannes Sixt
2009-03-30 11:58 ` Brian Foster
2009-03-30 12:19 ` Johannes Sixt
2009-03-30 12:40 ` Brian Foster
2009-03-30 12:19 ` Andreas Ericsson
2009-03-30 12:51 ` Brian Foster
2009-03-30 13:52 ` Andreas Ericsson
2009-03-30 15:20 ` Ping Yin
2009-03-31 4:20 ` Kris Shannon
2009-03-30 17:31 ` Daniel Barkalow
2009-03-31 7:30 ` Brian Foster
2009-03-30 18:23 ` Uwe Kleine-König
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).