I don't particularly care for our model of a single Mercurial repository per logical entity. I think it makes sense for things like twigs and to some extent integration repositories - you can do your work in your own little world without disrupting others. But for all the release branches, I think the model is suboptimal.

I'm proposing that we merge all the release repositories (central, aurora, beta, release, esr, and b2g) into a single Mercurial repository. The "default" branch/bookmark of this repository would be the equivalent of mozilla-central. At train uplift time, we create a new branch (or bookmark) called gecko-N (or similar) where N is the core gecko/platform release version. If default/central is on 25, Aurora changes land in gecko-24, Beta in gecko-23, etc. These could be supplemented with build and release tags/branches as appropriate.

A benefit of this model is it introduces a linear repository history for release branches. Contrast this with today, where we do non fast-forward pushes at uplift time as a new "default" head becomes aurora, beta, etc. gecko-25 is always "Firefox" 25 as it rides the trains: it doesn't go through an identity crisis as it crosses channels.

Another benefit is it's a single repository. Wouldn't it be nice to have the full history of all landings for released code in one unified location rather than spread out over multiple repositories? I think it would. I know it would have better performance characteristics than maintaining multiple repos (reducing round trips, data duplication, etc). These are all reasons I've switched to a monolithic/unified repository for local development (just like the Github mirror).

A downside of this approach (other than that it is work to change) is people may not realize which version aurora, beta, etc are on. However, that can easily be corrected with tools. e.g. |hg land beta| or even having friendly channel tags/aliases mirroring the core version numbers.

Anyway, I believe the decisions on repository structure were made many years ago, apparently due to limitations in now ancient versions of Mercurial. Times have changed. I think we should revisit old decisions.

Gregory
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to