diffutils: Generating Smaller Patches
11.4 Generating Smaller Patches
===============================
The simplest way to generate a patch is to use 'diff -Naur' (⇒Tips
for Patch Producers), but you might be able to reduce the size of the
patch by renaming or removing some files before making the patch. If
the older version of the package contains any files that the newer
version does not, or if any files have been renamed between the two
versions, make a list of 'rm' and 'mv' commands for the user to execute
in the old version directory before applying the patch. Then run those
commands yourself in the scratch directory.
If there are any files that you don't need to include in the patch
because they can easily be rebuilt from other files (for example, 'TAGS'
and output from 'yacc' and 'makeinfo'), exclude them from the patch by
giving 'diff' the '-x PATTERN' option (⇒Comparing Directories).
If you want your patch to modify a derived file because your recipients
lack tools to build it, make sure that the patch for the derived file
follows any patches for files that it depends on, so that the
recipients' timestamps will not confuse 'make'.
Now you can create the patch using 'diff -Naur'. Make sure to
specify the scratch directory first and the newer directory second.
Add to the top of the patch a note telling the user any 'rm' and 'mv'
commands to run before applying the patch. Then you can remove the
scratch directory.
You can also shrink the patch size by using fewer lines of context,
but bear in mind that 'patch' typically needs at least two lines for
proper operation when patches do not exactly match the input files.