1. 24 May, 2013 10 commits
  2. 23 May, 2013 10 commits
  3. 22 May, 2013 2 commits
    • Significant rename detection rewrite · a21cbb12
      This flips rename detection around so instead of creating a
      forward mapping from deltas to possible rename targets, instead
      it creates a reverse mapping, looking at possible targets and
      trying to find a source that they could have been renamed or
      copied from.  This is important because each output can only
      have a single source, but a given source could map to multiple
      outputs (in the form of COPIED records).
      
      Additionally, this makes a couple of tweaks to the public rename
      detection APIs, mostly renaming a couple of options that control
      the behavior to make more sense and to be more like core Git.
      
      I walked through the tests looking at the exact results and
      updated the expectations based on what I saw.  The new code is
      different from the old because it cannot give some nonsense
      results (like A was renamed to both B and C) which were part of
      the outputs previously.
      Russell Belfer committed
    • Bugfix: Return NULL in push_leaf, when trie is full · 52f537e9
      os->full was set 1, but the overflowed idx_leaf was still used to index
      into os->nodes a little later. Returning NULL fixes that.
      Axel Wagner committed
  4. 21 May, 2013 7 commits
  5. 20 May, 2013 3 commits
    • Merge pull request #1596 from grimreaper/development · 60750fc4
      Initialize loose_deleted before it is used for a check later on.
      Edward Thomson committed
    • Add more diff rename detection tests · 4742148d
      This adds a bunch more rename detection tests including checks
      vs the working directory, the new exact match options, some more
      whitespace variants, etc.
      
      This also adds a git_futils_writebuffer helper function and uses
      it in checkout.  This is mainly added because I wanted an easy
      way to write out a git_buf to disk inside my test code.
      Russell Belfer committed
    • More git_diff_find_similar improvements · 9be5be47
      - Add new GIT_DIFF_FIND_EXACT_MATCH_ONLY flag to do similarity
        matching without using the similarity metric (i.e. only compare
        the SHA).
      - Clean up the similarity measurement code to more rigorously
        distinguish between files that are not similar and files that
        are not comparable (previously, a 0 could either mean that the
        files could not be compared or that they were totally different)
      - When splitting a MODIFIED file into a DELETE/ADD pair, actually
        make a DELETED/UNTRACKED pair if the right side of the diff is
        from the working directory.  This prevents an odd mix of ADDED
        and UNTRACKED files on workdir diffs.
      Russell Belfer committed
  6. 19 May, 2013 1 commit
  7. 18 May, 2013 2 commits
    • Extend diff example · 5c8f37a3
      Add --raw output format and (some) options to invoke rename/copy
      detection on the diff.
      Russell Belfer committed
    • Fix issues with git_diff_find_similar · d958e37a
      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..
      Russell Belfer committed
  8. 17 May, 2013 5 commits