[Development] Notes on "Managing Qt's branches" session @ QCS 2016

Marc Mutz marc.mutz at kdab.com
Thu Sep 8 09:12:32 CEST 2016


On Wednesday 07 September 2016 08:37:01 Friedemann Kleint wrote:
> ** After 5.7 is closed and sanity bot is upgraded (to handle 
> cherry-picking), go into cherrypicking mode for 5.6. Developer is 
> responsible for doing the cherrypicking
> ** Cherry-picking technicalities need to be figured out: Let sanity bot 
> verify source ("cherrypicked from") the SHA1

I'm sorry, but this is nonsense. The source control system works by committing 
on the older branches and merging up. Cherry-picking from younger branches 
works against the source control system. We put up with cherry-picking for 
4.8, because there we dealt with separate repositories, but that doesn't make 
is a good model.

There's another aspect to this: I develop part of my patches on gt5.git/5.6 
and the rest on qtbase.git/dev. I guess for most people with non-unlimited 
processing power it will be similar. For sure this is the only way if your 
development focus is on qtbase (and you can't just submit your changes to COIN 
manually).

If I submit from the qt5.git/5.6 built, the changes have gone through testing 
in the stable branch. If I submit from there to younger branches, test 
coverage is not as good, but the point is that the stable branch receives the 
changes tested locally in-situ. If I change this to qt5.git/5.8 and cherry-
pick changes back to 5.6, all local testing will have been done in-situ for 
5.8, and when submitting to 5.6, no in-situ testing has happened locally.

IOW: cherry-picking causes *more* risk to the stable branch than submitting 
there and merging up. I am not convinced that the perceived security of having 
a patch integrated into a younger branch and then submitting it to the older 
branch outweights the loss of test coverage.

If the merging strain is too much, only merge 5.6 up once a fortnight/month.

Currently, it feels like there's

   5.6 -> 5.7
   5.7 -> 5.8
   5.8 -> dev
   5.6 -> 5.7

with maximum speed. That's nice for developers who are splitting changes into 
a bugfix part for 5.6 and a feature part for 5.8/dev, but it hasn't been like 
that in the past and we survived, too. And the git history looked cleaner, too 
:)

Thanks,
Marc

-- 
Marc Mutz <marc.mutz at kdab.com> | Senior Software Engineer
KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company
Tel: +49-30-521325470
KDAB - Qt, C++ and OpenGL Experts



More information about the Development mailing list