You've looked at one side of the patch process, creating a patch to describe changes to a code base. The other side of patching is being able to apply a patch to an unchanged (also known as pristine or vanilla) code base. Patches are created using the diff
command and are applied using the patch
command. In the simplest form, a patch can be applied by feeding the input of a patch file into the patch
command:
$ patch < new-feature.patch
The above command assumes that the files to be patched are located in the same directory in which you are running the patch
command. Another common way to run patch
is using the -p
flag followed by a number indicating the number of directory layers to strip off of the filenames specified in the patch. This makes sense when running patch
from the root directory of the code in question. Using -p0
passes patch
the entire filename unmodified. This is generally the standard for submitted patches.
$ patch -p0 < fix-output-display.patch
Of course, whether you use -p0
, -p1
, or no -p
flag at all depends on how the patch was created. The patch
manual page (accessed by typing man patch
on the command line of a Linux machine) contains a description of the -p
and other options that can be used with the patch
command.