On Tue, 29 Sep 2015 20:03:45 +0200
Gilles Chanteperdrix <gilles.chanteperd...@xenomai.org> wrote:

> On Wed, Sep 09, 2015 at 11:31:51AM +0200, Henning Schild wrote:
> > Hi,
> > 
> > i am about to merge ipipe into a more recent kernel and would like
> > to discuss the approach with you guys. As far as i have seen and
> > been told i should merge and not rebase.
> > 
> > My current plan:
> > 1 choose release (4.1 since its LTS)
> > 2 merge it into ipipe
> > 3 resolve obvious conflicts
> > 4 commit broken merge
> > 5 repair common bits and x86
> > 6 publish my tree for others to repair other archs
> > 
> > Steps 2,3 and 4 might become iterations stepping over 3.19 and 4.0.
> > The merges will not work but the smaller steps will result in less
> > conflicts at a time.
> > 
> > What do you guys think of the approach? Are my version choices sane
> > or are there any reasons to consider other releases as well?
> 
> I did not answer because I am not sure my opinion really matters. I
> am only maintaining one architecture, and have not even worked on it
> for a long time. And have already expressed this opinion several
> times. But since you are asking for it:
> 
> - merging with mainline to maintain the modifications made by the
> I-pipe tree is a bad solution: 
> . first because it is more time consuming than what we did before,
> that is reapplying the I-pipe patch and fixing the conflicts:
> . second because the I-pipe changes get lost in the middle of the
> upstream commits, so the idea that by doing this we could keep the
> history of changes in the I-pipe tree does not work;
> . third because when you do the merge, you can not easily ignore the
> conflicts for the other architecture than the one you are currently
> working on.
>
> - merging by iterating over releases is even more time consuming: it
> is far from exceptional to see the same piece of code changed by
> several consecutive releases, with your method you get one conflict
> by iteration, if you skip all the releases with one big iteration,
> that means fixing only one conflict.

I found the approach to work OK and surprisingly fast. In some series i
had to resolve conflicts on the same files, but it was different
conflicts. Not particularly time consuming or annoying.

I did not ignore the other archs when merging, i just did not test
them. 4.0 is currently at a state as if i had applied the big patch on
it and merged to my best knowledge.

> - I believe the right solution is to maintain the changes made by
> the I-pipe tree as a stack of commits applied on top of the upstream
> kernel, maintained with git. That means using git rebase to switch
> from one release to the next, and amend each commit to fix the
> conflicts. This way, every patch becomes a meaningful change to the
> upstream kernel, we keep the history of changes, and they all appear
> on top of the upstream commits, making them easy to identify in the
> git logs. Splitting architecture specific patches allows every
> architecture maintainer to focus on his architecture, and not have
> to care about the other architecture commits. Note that I have
> maintained the FCSE patch (split in something like 7 or 8 commits)
> for several kernel releases, and I noticed no particular difficulty
> doing so.

That also does not sound too bad. At the moment we are probably >30
commits away from mainline, with 95% of the code in one big change that
does have a broken history. But sorting that into a nice queue of
independantly working commits will also take a lot of time. And
maintaining that feature will also cost.

Using a queue has the problem that changing the history (rebasing)
becomes an essential part of your workflow. I know a lot of people like
doing that to keep things nice and clean but i am not a big fan. My
experience is that you end up investing a lot of work to alter
history that could be useful later.

Henning

_______________________________________________
Xenomai mailing list
Xenomai@xenomai.org
http://xenomai.org/mailman/listinfo/xenomai

Reply via email to