[Development] CI doing merge release->stable->dev

Frederik Gladhorn frederik.gladhorn at digia.com
Tue Jan 22 16:36:54 CET 2013


Tirsdag 22. januar 2013 07.14.01 skrev Fält Simo:
> Hi,
> I've been getting requests from several fronts to make ci to handle merge's
> between branches. Having automated merge from dev->stable->release doesn't
> make sense. But merging from release->stable->dev might be doable, but
> before doing that I would like to hear your input.

It obviously only makes sense in the direction you indicated.
As one of the people pushing for that, here is why:
The longer we wait in detecting merge conflicts, the more tedious and error 
prone the merges become. Solving one or two conflicts is not big deal usually, 
but the more it gets the more error prone (I messed up simple stuff in my 
first qtbase attempts because there were around 20 different conflicts and at 
some point my concentration was gone).

The merges when resolving cleanly should still be CI tested, we had one merge 
in declarative where the merge was clean but in the end a test failed since it 
was changed in a different place in dev than in stable and together it didn't 
work.

This will help detect problems early which is a good thing.

When there is a merge conflict, someone needs to manually resolve it - that 
means creating and pushing a merge commit.

I think for Qt 4.x this was in place and worked quite nicely. Some people 
(Olivier and Thiago?) still spent quite some time resolving the merges. Once 
you know git well enough it's not a big pain any more though.

> At the moment, automated merge would always face a merge conflict due to
> sync.profile pointing to same branch where it currently is. To get this
> sorted out, we would have to leave the sync.profile to serve only one
> branch and let the others being hard coded to same branch as the module
> being tested. Currently it kind of behaves like this already, while I think
> sync.profile in each branch is picking the dependencies from same branch.
> But is this ok for developers, is that how you like it to behave? If it is,
> which branch should keep obeying the sync.profile and which ones we can
> hard code?

No, as Thiago said, this is done once, git records that the commit changing 
the sync.profile is merged in a certain way. After that it will only be a 
problem when changing sync.profile again. When I now do a merge stable->dev I 
don't have to worry about sync.profile any more, it'll just be a conflict when 
merging for the first time.

Greetings
Frederik


 
> Simo Fält
> Digia, Qt
> 
> Visit us on: http://qt.digia.com<http://qt.digia.com/>
-- 
Best regards,
Frederik Gladhorn
Senior Software Engineer - Digia, Qt
Visit us on: http://qt.digia.com




More information about the Development mailing list