The simplest way to generate a patch is to use ‘diff -Naur’
(see 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 (see 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.