[Development] Branches and time based releases
Oswald Buddenhagen
oswald.buddenhagen at digia.com
Tue Feb 25 22:06:44 CET 2014
On Tue, Feb 25, 2014 at 11:28:46AM -0800, Thiago Macieira wrote:
> Em ter 25 fev 2014, às 20:09:41, Oswald Buddenhagen escreveu:
> > > If it passes reliably within half an hour, no lockdown is necessary. The
> > > lockdown is only necessary today so the people doing the merging don't
> > > have to tear their hair out to keep track of two moving targets.
> >
> > eh?
> > the merging goes from stable to dev, then a fast-forward to stable.
> > from before the start of the merge, through the integration in dev, to the
> > push, stable must be frozen. and the actual start would be delayed if an
> > integration was already going on on stable. so we are still talking
> > about an hour lockdown time on stable.
>
> Again, the main issue is passing the CI. If the CI is working reliably and we
> can get stuff done quickly, it doesn't matter that there are more changes.
>
> The merges of the stable branch into the development branch will continue to
> happen periodically. Nothing changes there.
>
> The big question is what happens at feature freeze. If the merging of dev into
> stable were quick and painless, we wouldn't be having this discussion. So my
> point is: we're working around the root problem because we can't fix the root
> problem right now.
>
we already established that merging from dev to stable is simply not
working due to revdeps (which are a good thing in principle, see other
thread). that's why it is forward merging + fast-forward downwards. to
ensure the fast-forward, stable would need to be locked.
> I'm no longer disputing the use of branches, after Lars made his decision. I
> just wanted to be clear on what we're actually doing. Let's move on.
>
good. i'm also just clarifying that you are still wrong, despite this
being irrelevant now. :P
> > > But I think you're suggesting something like this:
> > >
> > > A--B--C--D--> 5.3
> > >
> > > \--E--F
> >
> > no, i'm suggesting this:
> >
> > A--B--C--D--E--F--> 5.3
> > \--C'--F' ^ shadow/v5.2
> > ^ v5.2
>
> Sorry, this one has a fatal flaw: if F gets tagged, like you show, then it
> would imply that E is also is in that release, which your graph shows it
> isn't.
>
correct. that's why the tag would be a shadow, and not the real thing,
and it would be an error-prone hack. whether it would still make sense
would depend on the actual use cases we want to cover.
> > > If F is tagged v5.3.1, then B is tagged "branchpoint-5.3.1". That means D
> > > gets described as "branchpoint-5.3.1-2-gXXXXXX".
> >
> > to get this, on can simply use git merge-base.
>
> If it isn't merged, yes. But then when I do git describe on the 5.5 branch, it
> will tell me it's v5.2.1 + 10000 commits.
>
correct, "forward" describe would become useless. describe --contains
would still return useful results, though, and i think that's what is
more useful in practice (i suspect it's not the default only because
it's more expensive).
> > > Maybe it could be tagged "branchpoint-5.3.2". Maybe instead C should be
> > > the
> > > "Bump version" commit and be tagged.
> >
> > we could even guarantee that the version bump is the first commit - we are
> > during source branch lockdown at the time anyway.
> > but tagging that commit seems unnecessarily complex anyway.
>
> Not to mention that it sometimes fails to integrate, [...]
>
during the lockdown we could simply direct-push the bump. the risk that
something goes wrong with that at this point is virtually non-existing.
but anyway ... irrelevant.
> > > I dislike duplicating the number of tags in the repository. It will
> > > create confusion.
> >
> > we can give them a prefix, like forks/v5.2.0. still twice as many
> > tags, but not really confusing.
>
> The number of tags creates the confusion, IMHO. You can't argue that having
> them twice is more complex than having them once, all else being equal.
>
if you have the complexity of 1 and you make it more complex by .05 as a
trade-off for a useful feature, that seems quite reasonable to me.
> > > So I would prefer the merge back, since the duplication of commits
> > > doesn't cause confusion, regardless of the number of them.
> >
> > when looking at a simple git log (or even worse a bit blame if you are
> > unlucky), merged cherry-picks are always confusing, even if properly
> > marked. the only worse thing is cherry-picks mixed with reverts.
>
> I don't agree. The git log is more complex, indeed, since it shows the
> duplication, but each duplicated commit has the SHA-1 of the original commit
> so you know what it meant.
>
the problem is assembling the topological order in the brain, thus
enabling a reliable judgement which commit is in which release.
almost nobody is able to visualize the precise graph, especially with
duplicated/reverted commits (it's kinda indexed by summary, at least in
my head).
> What's more, it won't show on git blame: blame will choose one of the
> two sides of the merge and display it.
>
> If it chooses the one from the mainline, unfortunately, it will still break my
> workflow above.
>
funny thing you are saying that, because for the "normal" (not
release-bound) research workflow, choosing the picked version would be
the worse outcome.
i think this allows only one conclusion: merged cherry-picks (and
reverts) are bad, and should be avoided if at all possible.
so to come back to the starting point: i think we should continue to
target the release branch directly. the burden for the developers isn't
very big (actually, one can even argue that the burden being there is a
good thing ... it discourages people from pushing for release), and it
makes the discussion about merging back irrelevant (because then it is
both harmless and required).
> > > A reasonable developer is not what you get in the #qt channel.
> >
> > this is not an audience to optimize *our* repositories for.
> > make a wiki page Building-Qt5-From-Git-For-Users and hand that out
> > whenever somebody botches a git build, without further words.
>
> We can expect contributing developers to be reasonable and execute a few more
> commands to get to the branch they want to be in. Plus, as I said, I truly
> believe that even our devs should land on the currently stable branch at first,
> not the development one.
>
you didn't give good reasons for that position, though.
> The non-contributing developers, however, are the vast majority. Writing wiki
> pages isn't enough because people don't find them. It's amazing how many things
> are answered by a simple Google search, yet people don't do them.
>
i don't buy that argument. laziness/stupidity should not be rewarded in an
environment that is supposed to be productive. if a nice RTFM link is
not good enough for somebody, they deserve losing time.
More information about the Development
mailing list