Index: site/dev/contrib/patch.md |
diff --git a/site/dev/contrib/patch.md b/site/dev/contrib/patch.md |
new file mode 100644 |
index 0000000000000000000000000000000000000000..cf8b35bdebaece394b64bfdea14bf985f74564b4 |
--- /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.) |
+ |