If you have a patch to the master branch (e.g. an important bug fix) that needs to be merged into one of the production V8 branches, read on.
For the examples, a branched 2.4 version of V8 will be used. Substitute “2.4” with your version number. See [[Release Process|Release Process]] for more information about version numbers.
An associated issue on Chromium‘s or V8’s issue tracker is mandatory if a patch is merged. This helps with keeping track of merges. You can use a template to create an issue.
More information can be found on the relevant Chromium page. When in doubt, send an email to v8-dev@googlegroups.com.
The merge process in the Chromium and V8 tracker is driven by labels in the form of
Merge-[Status]-[Branch]
The currently important labels for V8 are:
Use mergeinfo.py to get all the commits which are connected to the HASH according to Git.
tools/release/mergeinfo.py HASH
If it tells you Is on Canary: No Canary coverage
you should not merge yet because the fix was not yet deployed on a Canary build. A good rule of the thumb is to wait at least 3 days after the fix has landed until the merge is conducted.
Let‘s assume you’re merging revision af3cf11 to branch 2.4 (please specify full git hashes - abbreviations are used here for simplicity).
tools/release/merge_to_branch.py --branch 2.4 af3cf11
Run the script with ‘-h’ to display its help message, which includes more options (e.g. you can specify a file containing your patch, or you can reverse a patch, specify a custom commit message, or resume a merging process you‘ve canceled before). Note that the script will use a temporary checkout of v8 - it won’t touch your work space. You can also merge more than one revision at once, just list them all.
tools/release/merge_to_branch.py --branch 2.4 af3cf11 cf33f1b sf3cf09
If one of the builders is not green after handling your patch, revert the merge immediately. A bot (AutoTagBot) will take care of the correct versioning after a 10 minute wait.
In case you need to patch a Canary/Dev version, which should not happen often follow these instructions:
Example version used is 2.4.4.
tools/release/roll_merge.py --branch 5.7.433 af3cf11
Example Chromium branch used is 2978
$ git checkout chromium/2978 $ git merge 5.7.433.1 $ git push
Chrome/Chromium should should pick of the change when they build automatically.
When two people are merging at the same time a race-condition can happen in the merge scripts. If this is the case, contact machenbach@chromium.org and hablich@chromium.org.
tools/release/mergeinfo.py