OLD | NEW |
1 # Convert Rietveld patches to apply them locally | 1 # Convert Rietveld patches to apply them locally |
2 | 2 |
3 The `patchconv` module and `patchconv` script convert SVN-style patches that | 3 The `patchconv` module and `patchconv` script convert SVN-style patches that |
4 are downloaded from [Rietveld](https://github.com/rietveld-codereview/rietveld) | 4 are downloaded from [Rietveld](https://github.com/rietveld-codereview/rietveld) |
5 code reviews to Git-style patches that can be used as input for `hg import` or | 5 code reviews to Git-style patches that can be used as input for `hg import` or |
6 `git apply`. | 6 `git apply`. |
7 | 7 |
8 In many cases the patches from the review can be applied directly with | 8 In many cases the patches from the review can be applied directly with |
9 `patch -p1`. However, if the changes contain copies or renames or include | 9 `patch -p1`. However, if the changes contain copies or renames or include |
10 binary files, `patch` will not apply them correctly. Git and Mercurial commands | 10 binary files, `patch` will not apply them correctly. Git and Mercurial commands |
11 will also not work because when the changes are uploaded to the review, they | 11 will also not work because when the changes are uploaded to the review, they |
12 are converted to SVN-like format that Rietveld normally works with. `patchconv` | 12 are converted to SVN-like format that Rietveld normally works with. `patchconv` |
13 undoes this conversion and returns the patch to the state where it can be | 13 undoes this conversion and returns the patch to the state where it can be |
14 applied using Git or Mercurial. | 14 applied using Git or Mercurial. |
15 | 15 |
16 ## Installation | 16 ## Installation |
17 | 17 |
18 Install directly from Mercurial repository using pip: | 18 Install directly from Mercurial repository using pip: |
19 | 19 |
20 $ pip install 'hg+https://hg.adblockplus.org/codingtools#egg=patchconv&subdi
rectory=patchconv' | 20 $ pip install 'hg+https://hg.adblockplus.org/codingtools#egg=patchconv&subdi
rectory=patchconv' |
21 | 21 |
22 ## Usage | 22 ## Usage |
23 | 23 |
24 The script in the package will be available immediately after the installation. | 24 The script in the package will be available immediately after the installation. |
25 Its interface is simple: it reads from stdin and writes to stdout. | 25 Its interface is simple: it reads from stdin and writes to stdout. |
26 | 26 |
27 $ patchconv <patch-from-rietveld.diff >git-patch.diff | 27 $ patchconv <patch-from-rietveld.diff >git-patch.diff |
28 | 28 |
| 29 For additional convenience you can use the provided `rapply.sh` script that |
| 30 downloads, converts and applies patches from Rietveld reviews to your local |
| 31 working copy. In order to use it, open a review, copy the URL of a `[raw]` |
| 32 download link in the top right corner of a patch set overview and then paste it |
| 33 into the console: |
| 34 |
| 35 $ rapply.sh https://codereview.adblockplus.org/download/issue3322_4433.diff |
| 36 |
| 37 or, if you've already downloaded the diff to a local file: |
| 38 |
| 39 $ rapply.sh issue3322_4433.diff |
| 40 |
| 41 In both cases you need to be in the directory containing the repository to |
| 42 which you are applying the diff. |
| 43 |
29 ## Testing | 44 ## Testing |
30 | 45 |
31 The tests can be run via [Tox](http://tox.readthedocs.org/) | 46 The tests can be run via [Tox](http://tox.readthedocs.org/) |
OLD | NEW |