On Fri, Oct 02, 2015 at 03:36:32PM +0200, Henning Schild wrote:
> 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.

That is a problem. It is easier to find bugs in something you
merged, than in something someone else merged.

> 
> > - 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.

I was talking about rebasing only when switching from one mainline
release to the next. An I-pipe branch for a mainline release would
never been rebased. You would use the opportunity of the rebase to
the next release to clean up the history.

-- 
                                            Gilles.
https://click-hack.org

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

Reply via email to