GitHub/Gecko Repositories: Difference between revisions
(add link to Git replace command docs) |
(add command to connect "cvs" branch to "central" branch) |
||
Line 19: | Line 19: | ||
== mozilla/gecko == | == mozilla/gecko == | ||
mozilla/gecko is a mirror of a single Mercurial repository, mozilla-central as well as CVS history (in the "cvs" branch). It doesn't include other Mercurial repositories (aurora, inbound, etc.). Its "central" branch is read-only, but Gecko developers are welcome to create and commit to other branches in the repo. It's maintained by [https://mozillians.org/en-US/u/myk/ Myk Melez] and is synchronized manually via Git and [https://github.com/glandium/git-cinnabar git-cinnabar] daily on weekdays and occasionally on weekends. | mozilla/gecko is a mirror of a single Mercurial repository, mozilla-central as well as CVS history (in the "cvs" branch, which can be attached to the "central" branch via <code>git fetch origin 'refs/replace/*:refs/replace/*'</code>). It doesn't include other Mercurial repositories (aurora, inbound, etc.). Its "central" branch is read-only, but Gecko developers are welcome to create and commit to other branches in the repo. It's maintained by [https://mozillians.org/en-US/u/myk/ Myk Melez] and is synchronized manually via Git and [https://github.com/glandium/git-cinnabar git-cinnabar] daily on weekdays and occasionally on weekends. | ||
Myk created mozilla/gecko because he was synchronizing mozilla-central to a Git repo using git-cinnabar for his own development, and he thought it might be helpful for other developers who want to clone a Gecko repo that is smaller than gecko-dev and/or use git-cinnabar to interact with a Mercurial repo. | Myk created mozilla/gecko because he was synchronizing mozilla-central to a Git repo using git-cinnabar for his own development, and he thought it might be helpful for other developers who want to clone a Gecko repo that is smaller than gecko-dev and/or use git-cinnabar to interact with a Mercurial repo. |
Revision as of 15:31, 7 May 2018
Gecko Repositories on GitHub
There are several repositories in the "mozilla" organization on GitHub that contain the Gecko source code, in particular mozilla/gecko-dev, mozilla/gecko-projects, and mozilla/gecko.
Generally, mozilla/gecko-dev and mozilla/gecko-projects are organization-supported mirrors using production synchronization, while mozilla/gecko is an unsupported mirror using best-effort synchronization. Issues with the gecko-dev and gecko-projects, such as bug 1350696 and bug 1362350, are a high priority for Mozilla, and are actively addressed. It isn't obvious how to report an issue with mozilla/gecko.
mozilla/gecko-dev
mozilla/gecko-dev is a read-only mirror of a variety of Mercurial repositories, including mozilla-central, aurora, beta, release, fx-team, inbound, ESR releases, and every branch that led to a published release. It includes the entire history of Gecko, including the history from CVS, before Mozilla migrated Gecko to its Mercurial repository (which doesn't include that history). It is maintained by Developer Services or Release Engineering and is synchronized automatically via a service multiple times per day.
No commits are made in Git on gecko-dev. All commits are made on hg.mozilla.org. So committer emails don't always match to GitHub accounts.
gecko-projects
mozilla/gecko-projects is a read-only mirror of hg.mozilla.org/projects/ that is maintained and synchronized similarly to gecko-dev. It contains experimental work (mirrors of various hg.mozilla.org/projects/ repos) which are "reset" often, so they only show the most recent experiment. (Successful experiments are merged into mozilla-central.)
As with gecko-dev, no commits are made in Git on gecko-projects.
mozilla/gecko
mozilla/gecko is a mirror of a single Mercurial repository, mozilla-central as well as CVS history (in the "cvs" branch, which can be attached to the "central" branch via git fetch origin 'refs/replace/*:refs/replace/*'
). It doesn't include other Mercurial repositories (aurora, inbound, etc.). Its "central" branch is read-only, but Gecko developers are welcome to create and commit to other branches in the repo. It's maintained by Myk Melez and is synchronized manually via Git and git-cinnabar daily on weekdays and occasionally on weekends.
Myk created mozilla/gecko because he was synchronizing mozilla-central to a Git repo using git-cinnabar for his own development, and he thought it might be helpful for other developers who want to clone a Gecko repo that is smaller than gecko-dev and/or use git-cinnabar to interact with a Mercurial repo.
Integrating mozilla-central and CVS History
mozilla/gecko integrates the mozilla-central and CVS histories via Git replace. To traverse the combined history of those repos, clone/fetch mozilla/gecko, then fetch replacement refs via this command:
git fetch origin 'refs/replace/*:refs/replace/*'
(Replace "origin" with the name of your mozilla/gecko remote, if it differs.)
Then common Git commands (diff, log, bisect, etc.) will behave as if the oldest commit on the "central" branch (e18f9a3) is the newest commit on the "cvs" branch (3ec464b), and you can traverse history accordingly.
Using mozilla/gecko With try/inbound
Note that cloning mozilla/gecko doesn't fetch git-cinnabar metadata, so you can't use it to push to Mercurial repositories like try and inbound unless you also fetch mozilla-central using git-cinnabar. Thus, for developers that need to push to such repos, it's better to clone mozilla-central via git-cinnabar directly (unless you need CVS history).
(This may change with git-cinnabar 0.5.0, which is in beta as of this writing.)