Skip to content
  • Junio C Hamano's avatar
    [PATCH] Diff overhaul, adding half of copy detection. · 427dcb4b
    Junio C Hamano authored
    
    
    This introduces the diff-core, the layer between the diff-tree
    family and the external diff interface engine.  The calls to the
    interface diff-tree family uses (diff_change and diff_addremove)
    have not changed and will not change.  The purpose of the
    diff-core layer is to provide an infrastructure to transform the
    set of differences sent from the applications, before sending
    them to the external diff interface.
    
    The recently introduced rename detection code has been rewritten
    to use the diff-core facility.  When applications send in
    separate creates and deletes, matching ones are transformed into
    a single rename-and-edit diff, and sent out to the external diff
    interface as such.
    
    This patch also enhances the rename detection code further to be
    able to detect copies.  Currently this happens only as long as
    copy sources appear as part of the modified files, but there
    already is enough provision for callers to report unmodified
    files to diff-core, so that they can be also used as copy source
    candidates.  Extending the callers this way will be done in a
    separate patch.
    
    Please see and marvel at how well this works by trying out the
    newly added t/t4003-diff-rename-1.sh test script.
    
    Signed-off-by: default avatarJunio C Hamano <junkio@cox.net>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    427dcb4b