Hacking B2G: What Are All of These Repos

Posted at August 8, 2013

So now that I've worked at Mozilla for a few weeks, I've started to get into the B2G code in earnest. The first problem I encountered was understanding the purpose and relationship between all of the various repos. This blog post will hopefully document the repos I have encountered so far and what they are for. One caveat, I am writing this from the perspective of a B2G hacker so there may be more repos I don't mention but aren't really relevant to my work.

Mozilla Central

https://hg.mozilla.org/mozilla-central

This is the primary repo for hacking on Gecko, the main rendering engine in Firefox and B2G. This is a Mercurial repo that theoretically contains all of the tested and reviewed patches coming from either Mozilla Incoming or B2G Incoming.

Mozilla Inbound

https://hg.mozilla.org/integration/mozilla-inbound

This is the Mercurial repo where patches are landed after being reviewed. This repo is frequently closed and therefore the B2G Incoming repo was born.

B2G Inbound

https://hg.mozilla.org/integration/b2g-inbound

This is the Mercurial repo with the same purpose as Mozilla Inbound but is specifically for B2G patch landing.

Mozilla B2G18

https://hg.mozilla.org/releases/mozilla-b2g18

This is a Mercurial repo that was forked from the Mozilla Central repo back in October of 2012. It is the "release stable" branch that contains the tags for our released versions of B2G.

B2G

git://github.com/mozilla-b2g/b2g.git

This Git repo contains the build scripts for building B2G. This is typically the first repo you fork when building B2G from source. The config.sh, build.sh, and flash.sh scripts all reside in this repo. The config.sh script will clone the B2G Manifests repo and will use a manifest for the device you are building for.

B2G Manifests

git://github.com/mozilla-b2g/b2g-manifests

This repo contains all of the "official" manifests for each of the supported B2G devices. The manifest files specify which repos need to be cloned to build a full, flashable B2G image.

Gecko.git

http://git.mozilla.org/releases/gecko.git

This is a Git repo that tracks Mozilla Central. It is synchronized with Mozilla Central multiple times a day and contains remote branches linked to Mozilla Central. If you like using Git rather than Mercurial, this will be the primary repo you'll work in when hacking Gecko.

Gaia.git

git://github.com/mozilla-b2g/gaia.git

This is a Git repo that contains all of the UI for B2G.