diffutils: Reversed Patches

 
 10.3.2 Applying Reversed Patches
 --------------------------------
 
 Sometimes people run 'diff' with the new file first instead of second.
 This creates a diff that is "reversed".  To apply such patches, give
 'patch' the '--reverse' ('-R') option.  'patch' then attempts to swap
 each hunk around before applying it.  Rejects come out in the swapped
 format.
 
    Often 'patch' can guess that the patch is reversed.  If the first
 hunk of a patch fails, 'patch' reverses the hunk to see if it can apply
 it that way.  If it can, 'patch' asks you if you want to have the '-R'
 option set; if it can't, 'patch' continues to apply the patch normally.
 This method cannot detect a reversed patch if it is a normal diff and
 the first command is an append (which should have been a delete) since
 appends always succeed, because a null context matches anywhere.  But
 most patches add or change lines rather than delete them, so most
 reversed normal diffs begin with a delete, which fails, and 'patch'
 notices.
 
    If you apply a patch that you have already applied, 'patch' thinks it
 is a reversed patch and offers to un-apply the patch.  This could be
 construed as a feature.  If you did this inadvertently and you don't
 want to un-apply the patch, just answer 'n' to this offer and to the
 subsequent "apply anyway" question--or type 'C-c' to kill the 'patch'
 process.