These are the steps to merge the TraceMonkey repository to mozilla-central. Between resolving conflicts, finding a good time to land, watching the tree, and marking bugs as fixed, it takes around half a day.
- Let the mozilla-central sheriff know that you intend to perform a tracemonkey merge to mozilla-central.
- Checkout repos.
- Pull mozilla-central into tracemonkey via hg pull ../mozilla-central
- You will see a notice about adding at least one head to the repository -- this is the mozilla-central head that you are about to merge.
- Merge via hg merge
- You may see a number of conflicts. Conflicting files can be listed via hg resolve -l. Exercise caution, because leaving off the -l will re-merge and lose all of the resolutions you've already performed.
- For each unresolved file (with a U next to it), open the file and find the conflict markers that look like <<<<<<.
- If it's obvious how to fix the conflict, just do it. Otherwise, you can run hg parents filename to find the changesets which may have contributed to the conflict.
- Inspecting the files at those two changesets can be helpful: hg cat -c changeset filename
- Once all the conflict markers are removed, you've performed the manual resolution, which you tell to mercurial by running hg resolve -m filename. Again, exercuse caution.
- Once you've resolved all the files, all the entries in hg resolve -l will have Rs next to them.
- Perform a build.
- If the tree does not build successfully you've likely merged something incorrectly. Historically, auto-merge doesn't mess up much.
- Land.
- Mark Bugzilla bugs as fixed.
- Once you've pushed to mozilla-central, do a Bugzilla search for bugs that are not marked as RESOLVED but have fixed-in-tracemonkey in the whiteboard.
- For each bug in the results, find the corresponding changesets that we just merged (i.e. from the TBPL changeset display) and paste the link into the comment field while resolving as fixed.
- If something goes wrong!?
- There's no cookie cutter way to handle it. You can't really back out a merge easily, so rambo-ing a fix or figuring out how to back out an offending changeset is the only way it has been resolved historically.