Firefox Git Migration Update
Apr 2025
Overview
We are migrating Firefox development from Mercurial to Git.
The work has two main phases:
(1) Change the source of truth for Firefox from Mercurial to Git
- All engineers will use Git locally, submit to Phabricator for review, with Lando pushing approved changes to Git
- After a change lands on the Git repository it will be synchronised to the existing Mercurial repository allowing the existing CI and other infrastructure relying on Mercurial to continue to function unmodified
(2) Decommission Mercurial
- Over time all existing infrastructure will be migrated from Mercurial to Git
- Mercurial will be decommissioned once it is no longer required
When? When?
We are currently expecting to make the change for phase one on the 30th April 2025.
No decisions have been made around the timing of the second phase, and therefore the timing of decommissioning of the Mercurial infrastructure. We expect hg.mozilla.org to be available in some capacity for at least another year.
What Will Be Different, What Will Stay The Same?
- As per the decision at the end of 2023, the new repository will be hosted on GitHub
- The final repository location on GitHub will be https://github.com/mozilla-firefox/firefox, however for convenience https://github.com/mozilla/firefox will also work
- Developers working on Firefox will perform a standard Git clone of the repository; a git-cinnabar clone will no longer be required
- We will continue to use Bugzilla, Phabricator, and Lando
- Core development processes are not changing; if you are already using Git for Firefox development the biggest change is a one-time migration to the new repository
- GitHub Pull Requests are not supported, and there are no plans in the foreseeable future to support them
- The try repository will initially remain on Mercurial, and will be migrated at a later date. Direct push access to try will be revoked some time after the initial migration, with all developers expected to use mach try to submit to try via Lando
- mozilla/gecko-dev will be archived and stop receiving updates; it will continue to be accessible. Like gecko-dev, the new repository will have CVS history.
- We will update documentation and provide communications including "how to migrate" guides and the duration of the migration-day outage closer to the date
What's Going To Happen To All The Repos?
- Most repositories (which are also called "branches" or "channels") will become similarly named branches on the Git repository. The default branch will be named main.
- Tags, such as FIREFOX_NIGHTLY_135_END, will be migrated to Git as-is
- Project repositories (cedar, cypress, elm, holly, larch, maple, oak, pine, etc) will become their own separate repository under the target GitHub org - e.g. mozilla-firefox/pine
- Mercurial "user" repositories will not be migrated to GitHub; please use GitHub forks instead of a hg.mozilla.org/users repository. If you do not have a user repository on hg, nothing will change for you. User repositories will remain active until close to the decommissioning of the Mercurial infrastructure
- Repositories for other projects (comm-central, NSS, NSPR, etc) will be migrated to GitHub over time once the Firefox migration has been completed; we will reach out to the relevant teams directly
Mercurial Repository | Git Branch |
mozilla-central | main |
mozilla-beta | beta |
mozilla-release | release |
mozilla-esr* | esr-* |
autoland | autoland |