diff
and patch
do not handle some changes to directory
structure. For example, suppose one directory tree contains a directory
named ‘D’ with some subsidiary files, and another contains a file
with the same name ‘D’. ‘diff -r’ does not output enough
information for patch
to transform the directory subtree into
the file.
There should be a way to specify that a file has been removed without
having to include its entire contents in the patch file. There should
also be a way to tell patch
that a file was renamed, even if
there is no way for diff
to generate such information.
There should be a way to tell patch
that a file’s timestamp
has changed, even if its contents have not changed.
These problems can be fixed by extending the diff
output format
to represent changes in directory structure, and extending patch
to understand these extensions.