• Show log

    Commit

  • Hash : ce7080a0
    Author : Patrick Steinhardt
    Date : 2018-02-20T10:38:27

    diff_tform: fix rename detection with rewrite/delete pair
    
    A rewritten file can either be classified as a modification of its
    contents or of a delete of the complete file followed by an addition of
    the new content. This distinction becomes important when we want to
    detect renames for rewrites. Given a scenario where a file "a" has been
    deleted and another file "b" has been renamed to "a", this should be
    detected as a deletion of "a" followed by a rename of "a" -> "b". Thus,
    splitting of the original rewrite into a delete/add pair is important
    here.
    
    This splitting is represented by a flag we can set at the current delta.
    While the flag is already being set in case we want to break rewrites,
    we do not do so in case where the `GIT_DIFF_FIND_RENAMES_FROM_REWRITES`
    flag is set. This can trigger an assert when we try to match the source
    and target deltas.
    
    Fix the issue by setting the `GIT_DIFF_FLAG__TO_SPLIT` flag at the delta
    when it is a rename target and `GIT_DIFF_FIND_RENAMES_FROM_REWRITES` is
    set.