# Skia SK Tool

**Fetching**

The `sk` program is fetched into the Skia repo by:

1. `cd bin`
2. `./fetch-sk`

## `release-branch`

The release-branch subcommand automates several tasks done on each Skia
release. It is safe to run as it only creates Gerrit CLs to be reviewed and
makes no permanent changes. It does the following:

1. Creates a CL to update the Skia milestone in `include/core/SkMilestone.h` in
   the **main** branch.
   Example: http://review.skia.org/661110
2. Creates a CL to update [supported-branches.json](https://skia.googlesource.com/skia/+/refs/heads/infra/config/supported-branches.json)
   in the **infra/config** branch to edit the commit queue config to add the new
   branch and remove the outgoing (e.g. M-4).
   Example: http://review.skia.org/661111
3. Creates a CL to filter out unsupported CQ try jobs on the **new milestone**
   branch.
   Example: http://review.skia.org/661360
4. Creates a CL to remove the M-4 branch from the CQ in the **M-4** branch.
   Example: http://review.skia.org/661361
5. Creates a CL to merge individual release notes into the top level
   RELEASE_NOTES.md file in the **new milestone** branch.
   Example: http://review.skia.org/751627
6. Creates a CL to cherry-pick the RELEASE_NOTES.md merge into the **main
   branch**.
   Example: http://review.skia.org/752136

### Running `release-branch`

Run as so:

```sh
./sk release-branch <release branch name>
```

For example:

```sh
./sk release-branch chrome/m113
```

### Testing `release-branch`

release-branch works by creating CLs – which eventually merge into their target
branches. Once this is done, running a second time will fail as the changes
have already been made and `release-branch` treats empty CLs as an error. To
enable testing run with the `allow-empty` flag:

```sh
./sk release-branch --allow-empty chrome/m113
```

After running, if all goes well, new CLs will be in the outgoing section of
https://skia-review.googlesource.com **in your name**. Some steps are smart
enough to know that the change is already made and will not produce a new CL.
As this is a test, they can be deleted once verified.

## `sk` Deployment

Changes to `sk` are automatically pulled into Skia via an autoroller.
Skia's `fetch-sk` retrieves the `sk` version from the DEPS file and pulls that
version down from CIPD for the correct platform.

Avoid changing `sk` in the final days before a Skia branch without first
coordinating with the Skia release manager. Skia is branched alongside Chrome,
and the Chrome branch schedule can be found at
https://chromiumdash.appspot.com/schedule.
