• Show log

    Commit

  • Hash : d958e37a
    Author : Russell Belfer
    Date : 2013-05-17T17:21:45

    Fix issues with git_diff_find_similar
    
    There are a number of bugs in the rename code that only were
    obvious when I started testing it against large old repos with
    more complex patterns.  (The code to do that testing is not ready
    to merge with libgit2, but I do plan to add more thorough tests.)
    
    This contains a significant number of changes and also tweaks the
    public API slightly to make emulating core git easier.
    
    Most notably, this separates the GIT_DIFF_FIND_AND_BREAK_REWRITES
    flag into FIND_REWRITES (which adds a self-similarity score to
    every modified file) and BREAK_REWRITES (which splits the modified
    deltas into add/remove pairs in the diff list).  When you do a raw
    output of core git, rewrites show up as M090 or such, not at A and
    D output, so I wanted to be able to emulate that.
    
    Publicly, this also changes the flags to be uint16_t since we
    don't need values out of that range.
    
    Internally, this contains significant changes from a number of
    small bug fixes (like using the wrong side of the diff to decide
    if the object could be found in the ODB vs the workdir) to larger
    issues about which files can and should be compared and how the
    various edge cases of similarity scores should be treated.
    
    Honestly, I don't think this is the last update that will have to
    be made to this code, but I think this moves us closer to correct
    behavior and I tried to document the code so it would be easier
    to follow..
    

  • README.md

  • Writing Clar tests for libgit2

    For information on the Clar testing framework and a detailed introduction please visit:

    https://github.com/vmg/clar

    • Write your modules and tests. Use good, meaningful names.

    • Make sure you actually build the tests by setting:

        cmake -DBUILD_CLAR=ON build/
    • Test:

        ./build/libgit2_clar
    • Make sure everything is fine.

    • Send your pull request. That’s it.