aboutsummaryrefslogtreecommitdiffhomepage
path: root/site/dev/contrib/patch.md
diff options
context:
space:
mode:
Diffstat (limited to 'site/dev/contrib/patch.md')
-rw-r--r--site/dev/contrib/patch.md72
1 files changed, 72 insertions, 0 deletions
diff --git a/site/dev/contrib/patch.md b/site/dev/contrib/patch.md
new file mode 100644
index 0000000000..cf8b35bdeb
--- /dev/null
+++ b/site/dev/contrib/patch.md
@@ -0,0 +1,72 @@
+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:
+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.)
+