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.
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.
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.
This is the Mercurial repo with the same purpose as Mozilla Inbound but is specifically for B2G patch landing.
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.
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.
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.
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.
This is a Git repo that contains all of the UI for B2G.