Patch

The path stripping directive '-p'
The -p argument directs patch to strip a certain number of leading directories from a diff generated path when applying the patch to the current working directory. The -p directive is immediately followed by a number representing the number of leading directories to strip when applying the patch. For instance, given the following diff line snippet from e.patch,

--- linux-2.6.15-rc5/include/asm-powerpc/hvconsole.h     2005-12-19 10:49:35.136173560 -0500 +++ linux-2.6.15-rc5-new/include/asm-powerpc/hvconsole.h 2005-12-19 10:57:35.101154584 -0500

And given the following directory structure, «user@host»:~/kernels/linux-2.6.15-rc5§ ls arch    Documentation  init    MAINTAINERS  REPORTING-BUGS block   drivers        ipc     Makefile     scripts COPYING e.patch        Kbuild  mm           security CREDITS fs             kernel  net          sound crypto  include        lib     README       usr

The following 'patch' invocation: «user@host»:~/kernels/linux-2.6.15-rc5§ patch -p1 < example.patch will strip the leading directory linux-2.6.15-rc5-new from the diff string "linux-2.6.15-rc5-new/include/asm-powerpc/hvconsole.h" and apply the patch to the local include/ directory.

The Linux Kernel Mailing List and all other related Linux related mailing lists require that patches be created with a leading directory, such that patch -p1 applies the patch when the current working directory is in the kernel tree base directory, as indicated by the example.

Test apply with '--dry-run'
The --dry-run directive can be passed to the patch application on invocation to direct patch to simulate the apply. This is useful to determine whether the patch will apply cleanly to the directory tree presently in the current directory. It is invoked as follows: «user@host»:~/kernels/linux-2.6.15-rc5§ patch --dry-run -p1 < example.patch