How to apply patches

Occasionally I write things here simply so that I won't forget them, here's one of them. Applying patches is something I do infrequently enough that I have to re-figure it out each time.

If you have a patch file called my.patch that looks like this (in part):

=== modified file 'cogapp/cogapp.py'
—- cogapp/cogapp.py 2005-12-04 20:27:41 +0000
+++ cogapp/cogapp.py 2008-05-21 09:00:08 +0000
@@ -37,6 +37,7 @@
                     A %s in the CMD will be filled with the filename.
     -x          Excise all the generated output without running the generator
     -z          The [[[end]]] marker can be omitted, and is assumed at eof.
+    -N          Write the output as binary file (with LF line-endings).
     -v          Print the version of cog and exit.
     -h          Print this help.
 """

then to apply the patch, cd to the directory that has cogapp in it, and use this command:

patch -p0 < my.patch

The patch command is one of those inscrutable Unix-culture tools which does not behave as I expect. In this case, there seems to be no syntax that names my.patch explicitly, only an input redirect works. And zero seems not to be the default for the -p switch, so it needs to be specified, but the help text doesn't mention the default value, so I'm not sure what it is.

Comments

Post new comment

The content of this field is kept private and will not be shown publicly.