[Releasing] rethinking the branching scheme
Frederik Gladhorn
frederik.gladhorn at digia.com
Wed Feb 19 14:36:19 CET 2014
Onsdag 19. februar 2014 12.56.33 skrev Turunen Tuukka:
> This, I think, is a good topic to be discussed in the next QtCS.
>
> For now we anyway need to focus in keeping the existing setup and process
> working.
It's not working.
Greetings,
Frederik
>
> Yours,
>
> Tuukka
>
> On 19/02/14 13:47, "Oswald Buddenhagen" <oswald.buddenhagen at digia.com>
>
> wrote:
> >moin,
> >
> >you may remember that we arrived at the dev/stable/release scheme after
> >a some lengthly discussion a few years back.
> >
> >now i'll explain that imo that scheme failed, and that we need to go
> >back to a more traditional one. hurray!
> >
> >the crucial issue is - surprise surprise - the CI system:
> >- a straight downmerge just doesn't work due to the reverse
> >
> > dependencies.
> > this can be temporarily disabled, but that is a hassle. also, even
> > when we tried that, things were a huge mess.
> >
> >- the workaround is doing a forward merge and then direct-pushing a
> >
> > fast-forward downwards.
> > for this to work, the target branch needs to be locked down for a day
> > or two. that alone is obviously quite a disruption for people not
> > involved in the release process.
> > another lesson from today's experience is that despite fairly heavy
> > restrictions as to who can stage, we *still* got three "rogue" commits
> > in qtbase/stable today from people who happened to have the rights,
> > but were not involved in the release process this time. locking this
> > down even further, tailored to the particular situation each time
> > around, would be hassle (and thus error-prone).
> >
> >so it basically comes down to non-atomicity, exacerbated by the enormous
> >CI delay.
> >the answer to that is quite obviously using an operation that is
> >naturally atomic: branch creation.
> >
> >on top of that, we already realized that we need the old/ branch
> >namespace to be able to release from older versions (in case of security
> >fixes). this is quite a hassle to maintain as well, and the asymmetry
> >makes things hard to understand (and virtually impossible to actually
> >release).
> >
> >so i'm proposing that we switch to a master/5.x/5.x.y scheme as we had
> >before opengov (and as we still have for qt creator).
> >
> >the implications are, afaict:
> >- we solve the downmerge problem ... by not having it in the first
> >
> > place. only forward merges and branch creations.
> > the biggest advantage here is that branching can be done very quickly
> > in a uniform process by somebody from the release team, without
> > coordinating every step with half a dozen people.
> >
> >- CI configs will need to be cloned for each new branch. we need to make
> >
> > sure that this is reasonably low-hassle.
> >
> >- one of the strong arguments for the current scheme was the purported
> >
> > simplicity for the developers.
> > i think experience shows that this didn't really work out:
> > - the branches still have phases (e.g., "soft freeze" right after a
> >
> > downmerge)
> >
> > - people think in release versions anyway
> > - the "missed the deadline and need to cherry-pick" scenario continued
> >
> > to exist, and was actually made much worse due to the fuzziness of
> > the date (again the CI delays). that's why we now have the staging
> > lockdowns on the *source* branches (i.e. dev around the dev =>
> > stable downmerge).
> >
> > with the traditional scheme:
> > - people will need to figure out what "stable" is. no biggie - they
> >
> > really do that anyway (in the other direction).
> >
> > - pushing to a too high branch will still be prevented by the
> >
> > staging lockdown for around two days
> >
> > - pushing to a too low branch is no big deal, as we'll just forward
> >
> > merge. at some point we'll lock down old branches, too (we
> > actually did that in the pre-opengov times)
> >
> > - making anything but master the default git branch will be
> >
> > unrealistic (we can't script updating gitorious and github). i don't
> > think that is a big deal.
> >
> >- i can retroactively create/move the branches for previous releases
> >- we need a new picture for http://qt-project.org/wiki/Branch-Guidelines
> >;)
> >- ...?
> >
> >everybody on irc involved in the current disaster^Wrelease was in favor
> >of giving this some serious consideration.
> >
> >regards
> >_______________________________________________
> >Releasing mailing list
> >Releasing at qt-project.org
> >http://lists.qt-project.org/mailman/listinfo/releasing
>
> _______________________________________________
> Releasing mailing list
> Releasing at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/releasing
--
Best regards,
Frederik Gladhorn
Senior Software Engineer - Digia, Qt
Visit us on: http://qt.digia.com
More information about the Releasing
mailing list