Skip to content
  • Junio C Hamano's avatar
    [PATCH] Add -B flag to diff-* brothers. · f345b0a0
    Junio C Hamano authored
    
    
    A new diffcore transformation, diffcore-break.c, is introduced.
    
    When the -B flag is given, a patch that represents a complete
    rewrite is broken into a deletion followed by a creation.  This
    makes it easier to review such a complete rewrite patch.
    
    The -B flag takes the same syntax as the -M and -C flags to
    specify the minimum amount of non-source material the resulting
    file needs to have to be considered a complete rewrite, and
    defaults to 99% if not specified.
    
    As the new test t4008-diff-break-rewrite.sh demonstrates, if a
    file is a complete rewrite, it is broken into a delete/create
    pair, which can further be subjected to the usual rename
    detection if -M or -C is used.  For example, if file0 gets
    completely rewritten to make it as if it were rather based on
    file1 which itself disappeared, the following happens:
    
        The original change looks like this:
    
    	file0     --> file0' (quite different from file0)
    	file1     --> /dev/null
    
        After diffcore-break runs, it would become this:
    
    	file0     --> /dev/null
    	/dev/null --> file0'
    	file1     --> /dev/null
    
        Then diffcore-rename matches them up:
    
    	file1     --> file0'
    
    The internal score values are finer grained now.  Earlier
    maximum of 10000 has been raised to 60000; there is no user
    visible changes but there is no reason to waste available bits.
    
    Signed-off-by: default avatarJunio C Hamano <junkio@cox.net>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    f345b0a0