SCM/HGtoGit: Difference between revisions

< SCM
(Replaced content with "(Old content removed)")
 
(10 intermediate revisions by 4 users not shown)
Line 1: Line 1:
=Migrating from Hg to Git/Github=
(Old content removed)
In discussing a migration from Mercurial (Hg) to Git, there are really two issues to address:
# migration from Hg to Git
# migration from Mozilla hosted to third party hosted (Github) repositories
 
This page summarizes the benefits, issues, and requirements for both #1 and #2. The material is flagged by role to allow people to easily view the information relevant to them.
 
There are three primary roles that make use of Mozilla's source code management (SCM) systems: developers {{devs}}, release engineers {{releng}}, and IT system admins {{IT}}.
 
==Migration from Hg to Git==
===Benefits===
* Simplified onboarding for new contributors as Git is better known today than Hg {{devs}}
* Git supports new workflows not supported by Hg {{devs}}
* Hg occasionally corrupts repositories, no such known issues with Git.
* Mozilla currently makes use of Hg and Git, consolidation is easier for all devs {{devs}}
* Better review tools (Gerrit) available for devs {{devs}}
* Simplified debugging (no longer have to debug Hg) {{releng}} {{IT}}
* Simplified management as only one SCM system {{releng}} {{IT}}
 
===Issues===
* Overhead in having a large number of people learn new tools {{devs}}
* There is a question about whether the [http://msysgit.github.com/ Git for Windows] tools perform as well as the Hg tools {{devs}}
* IT team has limited experience with Git at this point {{IT}}
* git.m.o has had limited usage, need to review and stress test to ensure deployment can support scale {{IT}}
* Cost to releng to update build and related tools {{releng}}
 
===Requirements===
* Update build tools (Windows tools specifically) to support Git {{devs}}
** jlebar's tools https://github.com/jlebar/moz-git-tools
* Must be able to create user repos as can do on Hg {{devs}}
* [https://hg.mozilla.org/hgcustom/pushlog/ Pushlog] equivalent needs to be created for Git {{devs}} {{releng}}
* [https://hg.mozilla.org/hgcustom/hghooks/file/93dc9c506add/mozhghooks Repository hooks] {{releng}}
**tree closure
**approval required hook
**try syntax
**l10n change protector for aurora + beta (not yet implemented - see {{bug|859358}})
* Update for Nightly about:buildconfig to link to Git revision {{releng}}
* Bugzilla must be updated to links to Git change sets, existing Hg links must not break {{devs}}
* [https://tbpl.mozilla.org tbpl.mozilla.org] (links to changeset id) must be updated to support Git or an equivalent system put in place {{devs}} {{releng}}
* Will need to scale Git infrastructure (currently 2 machines) but should be able to reuse Hg machines {{IT}}
* Replacements for third party tools currently in use by dev community
** Dave Townsend's [http://hgchanges.fractalbrew.com/ HG Change Feed] ([https://github.com/Mossop/hgchangefeed source])
 
==Moving from Mozilla hosted to third party (Github) hosted==
===Benefits===
* Easier onboarding/discoverability for community {{devs}}
* Nice change review system {{devs}}
 
===Issues===
* Security of repo on hosted provider (can we trust our code to live there?) {{releng}} {{IT}}
* Up-time of hosted repos (Mozilla up-time is very good, have had sync problems with GitHub repos) {{releng}}
* Latency and failed pulls, some builds must pull from ~30 repos {{releng}}
* Some teams (NSS, security) require internal hosting {{devs}} {{IT}}
* Stability of repo / long term viability {{devs}} {{releng}} {{IT}}
* Github issues cause confusion as work is tracked in Bugzilla (can issues be disabled?) {{devs}}
* No pre-commit hooks, only post-commit hooks {{releng}}
** no ability to block code commits, only react to bad commits
* Limited ability to add new features
 
===Requirements===
* Must be able to back out changes without leaving history {{releng}}
* Must have ability to duplicate current repository hooks (see requirements) functionality {{releng}}
 
==References==
* [https://etherpad.mozilla.org/value-of-github Value of GitHub etherpad]

Latest revision as of 16:10, 7 November 2023

(Old content removed)