• Junio C Hamano's avatar
    Merge branch 'ks/tree-diff-nway' · 8eaf5178
    Junio C Hamano authored
    Instead of running N pair-wise diff-trees when inspecting a
    N-parent merge, find the set of paths that were touched by walking
    N+1 trees in parallel.  These set of paths can then be turned into
    N pair-wise diff-tree results to be processed through rename
    detections and such.  And N=2 case nicely degenerates to the usual
    2-way diff-tree, which is very nice.
    
    * ks/tree-diff-nway:
      mingw: activate alloca
      combine-diff: speed it up, by using multiparent diff tree-walker directly
      tree-diff: rework diff_tree() to generate diffs for multiparent cases as well
      Portable alloca for Git
      tree-diff: reuse base str(buf) memory on sub-tree recursion
      tree-diff: no need to call "full" diff_tree_sha1 from show_path()
      tree-diff: rework diff_tree interface to be sha1 based
      tree-diff: diff_tree() should now be static
      tree-diff: remove special-case diff-emitting code for empty-tree cases
      tree-diff: simplify tree_entry_pathcmp
      tree-diff: show_path prototype is not needed anymore
      tree-diff: rename compare_tree_entry -> tree_entry_pathcmp
      tree-diff: move all action-taking code out of compare_tree_entry()
      tree-diff: don't assume compare_tree_entry() returns -1,0,1
      tree-diff: consolidate code for emitting diffs and recursion in one place
      tree-diff: show_tree() is not needed
      tree-diff: no need to pass match to skip_uninteresting()
      tree-diff: no need to manually verify that there is no mode change for a path
      combine-diff: move changed-paths scanning logic into its own function
      combine-diff: move show_log_first logic/action out of paths scanning
    8eaf5178
diff.h 11.5 KB