You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.7 KiB
75 lines
2.7 KiB
7 months ago
|
---
|
||
|
title: 'Applying patches'
|
||
|
linkTitle: 'Applying patches'
|
||
|
---
|
||
|
|
||
|
If you are a Skia committer and have been asked to commit an
|
||
|
externally-submitted patch, this is how to do it. (This technique is useful in
|
||
|
other situations too, like if you just want to try out somebody else's patch
|
||
|
locally.)
|
||
|
|
||
|
Notes:
|
||
|
|
||
|
- For the examples below, we will assume that this is the change you want to
|
||
|
patch into your local checkout: https://codereview.appspot.com/6201055/
|
||
|
- These instructions should work on Mac or Linux; Windows is trickier, because
|
||
|
there is no standard Windows "patch" tool.
|
||
|
|
||
|
See also [Contributing Code for The Chromium Projects]
|
||
|
(http://dev.chromium.org/developers/contributing-code#TOC-Instructions-for-Reviewer:-Checking-in-the-patch-for-a-non-committer).
|
||
|
|
||
|
If you use `git cl`, then you should be able to use the shortcut:
|
||
|
|
||
|
```
|
||
|
git cl patch 6201055
|
||
|
```
|
||
|
|
||
|
If you use `gcl`, or the above doesn't work, the following should always work.
|
||
|
|
||
|
1. Prepare your local workspace to accept the patch.
|
||
|
|
||
|
- cd into the root directory (usually `trunk/`) of the workspace where you
|
||
|
want to apply the patch.
|
||
|
- Make sure that the workspace is up-to-date and clean (or "updated and clean
|
||
|
enough" for your purposes). If the codereview patch was against an old
|
||
|
revision of the repo, you may need to sync your local workspace to that
|
||
|
same revision.
|
||
|
|
||
|
2. Download the raw patch set.
|
||
|
|
||
|
- Open the codereview web page and look for the "Download raw patch set" link
|
||
|
near the upper right-hand corner. Right-click on that link and copy it to
|
||
|
the clipboard. (In my case, the link is
|
||
|
https://codereview.appspot.com/download/issue6201055_1.diff )
|
||
|
- If you are on Linux or Mac and have "curl" or "wget" installed, you can
|
||
|
download the patch from the command line:
|
||
|
|
||
|
```
|
||
|
curl https://codereview.appspot.com/download/issue6201055_1.diff
|
||
|
--output patch.txt
|
||
|
# or...
|
||
|
wget https://codereview.appspot.com/download/issue6201055_1.diff
|
||
|
--output-document=patch.txt
|
||
|
```
|
||
|
|
||
|
- Otherwise, figure out some other way to download this file and save it as
|
||
|
`patch.txt`
|
||
|
|
||
|
3. Apply this patch to your local checkout.
|
||
|
|
||
|
- You should still be in the root directory of the workspace where you want
|
||
|
to apply the patch.
|
||
|
|
||
|
```
|
||
|
patch -p1 <patch.txt
|
||
|
```
|
||
|
|
||
|
- Then you can run `diff` and visually check the local changes.
|
||
|
|
||
|
4. Complications: If the patch fails to apply, the following may be happening:
|
||
|
|
||
|
- Wrong revision. Maybe your local workspace is not up to date? Or maybe the
|
||
|
patch was made against an old revision of the repository, and cannot be
|
||
|
applied to the latest revision? (In that case, revert any changes and sync
|
||
|
your workspace to an older revision, then re-apply the patch.)
|