diffutils: Changing Structure
18.1.2 Handling Changes to the Directory Structure
--------------------------------------------------
'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.