doc: how to cherry-pick to release branch

BUG=none
TEST=mdbook serve

Change-Id: Ie21d9e3c8e575785d0907b5a39bcb8bca1d5e8f6
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5201654
Commit-Queue: Shin Kawamura <kawasin@google.com>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
This commit is contained in:
Shintaro Kawamura 2024-01-17 14:16:16 +09:00 committed by crosvm LUCI
parent 2d47d34a66
commit aa0e6ea99a

View file

@ -107,6 +107,8 @@ If it cannot be avoided at all, please follow this process:
## Cherry-picking
### Cherry-picking without the usual merge process
If you need your changes faster than the usual merge frequency, please follow this process:
1. Upload and submit your change to upstream crosvm.
@ -116,6 +118,30 @@ If you need your changes faster than the usual merge frequency, please follow th
**Never** submit code just to ChromeOS, as it will cause upstream to diverge and result in merge
conflicts down the road.
### Cherry-picking to release branch
Your change need to be merged into [chromiumos/platform/crosvm] to cherry-pick it to a release
branch. You should follow
[ChromiumOS Merge Workflow](https://chromium.googlesource.com/chromiumos/docs/+/HEAD/work_on_branch.md)
to cherry-pick your changes. Since changes are merged from [crosvm/crosvm] to
[chromiumos/platform/crosvm] through [the merge process](#the-merge-process), you can't use gerrit
to cherry-pick your changes but need to use git command locally.
```
$ cd chromiumos/src/platform/crosvm
$ git branch -a | grep remotes/cros/release-R120
remotes/cros/release-R120-15662.B
$ git checkout -b my-cherry-pick cros/release-R120-15662.B
$ git cherry-pick -x $COMMIT
$ git push cros HEAD:refs/for/release-R120-15662.B
```
`$COMMIT` is the commit hash of the original change you want to cherry-pick not the merge commit.
Note that you push to special gerrit `refs/for/`, not pushing directly to the release branch.
Also note that release branch cherry picks don't get CQ tested at all - they are submitted directly
once you CQ+2 - so it is very important to test locally first.
## Running a Tryjob
For googlers, see go/cdg-site