1. 13 Feb, 2015 2 commits
  2. 14 Jan, 2015 1 commit
  3. 27 Oct, 2014 1 commit
  4. 01 Oct, 2014 1 commit
  5. 20 May, 2014 1 commit
  6. 02 May, 2014 1 commit
  7. 24 Feb, 2014 2 commits
  8. 25 Jan, 2014 1 commit
  9. 22 Jan, 2014 1 commit
  10. 12 Dec, 2013 2 commits
  11. 11 Dec, 2013 3 commits
    • Add git_vector_free_all · fcd324c6
      There are a lot of places that we call git__free on each item in
      a vector and then call git_vector_free on the vector itself.  This
      just wraps that up into one convenient helper function.
      Russell Belfer committed
    • Add config read fns with controlled error behavior · 9f77b3f6
      This adds `git_config__lookup_entry` which will look up a key in
      a config and return either the entry or NULL if the key was not
      present.  Optionally, it can either suppress all errors or can
      return them (although not finding the key is not an error for this
      function).  Unlike other accessors, this does not normalize the
      config key string, so it must only be used when the key is known
      to be in normalized form (i.e. all lower-case before the first dot
      and after the last dot, with no invalid characters).
      
      This also adds three high-level helper functions to look up config
      values with no errors and a fallback value.  The three functions
      are for string, bool, and int values, and will resort to the
      fallback value for any error that arises.  They are:
      
      * `git_config__get_string_force`
      * `git_config__get_bool_force`
      * `git_config__get_int_force`
      
      None of them normalize the config `key` either, so they can only
      be used for internal cases where the key is known to be in normal
      format.
      Russell Belfer committed
    • Check version earlier · 5a52d6be
      Ben Straub committed
  12. 06 Dec, 2013 1 commit
  13. 05 Dec, 2013 2 commits
  14. 02 Dec, 2013 3 commits
  15. 01 Nov, 2013 2 commits
    • More tests and fixed for merging reversed diffs · e7c85120
      There were a lot more cases to deal with to make sure that our
      merged (i.e. workdir-to-tree-to-index) diffs were matching the
      output of core Git.
      Russell Belfer committed
    • Fix some of the glaring errors in GIT_DIFF_REVERSE · 3940310e
      These changes fix the basic problem with GIT_DIFF_REVERSE being
      broken for text diffs.  The reversed diff entries were getting
      added to the git_diff correctly, but some of the metadata was kept
      incorrectly in a way that prevented the text diffs from being
      generated correctly.  Once I fixed that, it became clear that it
      was not possible to merge reversed diffs correctly.  This has a
      first pass at fixing that problem.  We probably need more tests
      to make sure that is really fixed thoroughly.
      Russell Belfer committed
  16. 21 Oct, 2013 1 commit
  17. 15 Oct, 2013 1 commit
    • Diff API cleanup · 10672e3e
      This lays groundwork for separating formatting options from diff
      creation options.  This groups the formatting flags separately
      from the diff list creation flags and reorders the options.  This
      also tweaks some APIs to further separate code that uses patches
      from code that just looks at git_diffs.
      Russell Belfer committed
  18. 11 Oct, 2013 1 commit
  19. 28 Aug, 2013 1 commit
  20. 22 Aug, 2013 1 commit
  21. 04 Aug, 2013 1 commit
    • Update rename src map for any split src · 7edb74d3
      When using a rename source that is actually a to-be-split record,
      we have to update the best-fit mapping data in both the case where
      the target is also a split record and the case where the target
      is a simple added record.  Before this commit, we were only doing
      the update when the target was itself a split record (and even in
      that case, the test was slightly wrong).
      Russell Belfer committed
  22. 31 Jul, 2013 1 commit
    • Major rename detection changes · d730d3f4
      After doing further profiling, I found that a lot of time was
      being spent attempting to insert hashes into the file hash
      signature when using the rolling hash because the rolling hash
      approach generates a hash per byte of the file instead of one
      per run/line of data.
      
      To optimize this, I decided to convert back to a run-based file
      signature algorithm which would be more like core Git.
      
      After changing this, a number of the existing tests started to
      fail.  In some cases, this appears to have been because the test
      was coded to be too specific to the particular results of the file
      similarity metric and in some cases there appear to have been bugs
      in the core rename detection code where only by the coincidence
      of the file similarity scoring were the expected results being
      generated.
      
      This renames all the variables in the core rename detection code
      to be more consistent and hopefully easier to follow which made it
      a bit easier to reason about the behavior of that code and fix the
      problems that I was seeing.  I think it's in better shape now.
      
      There are a couple of tests now that attempt to stress test the
      rename detection code and they are quite slow.  Most of the time
      is spent setting up the test data on disk and in the index.  When
      we roll out performance improvements for index insertion, it
      should also speed up these tests I hope.
      Russell Belfer committed
  23. 25 Jul, 2013 3 commits
    • Fix rename detection to use actual blob size · a16e4172
      The size data in the index may not reflect the actual size of the
      blob data from the ODB when content filtering comes into play.
      This commit fixes rename detection to use the actual blob size when
      calculating data signatures instead of the value from the index.
      
      Because of a misunderstanding on my part, I first converted the
      git_index_add_bypath API to use the post-filtered blob data size
      in creating the index entry.  I backed that change out, but I
      kept the overall refactoring of that routine and the new internal
      git_blob__create_from_paths API because it eliminates an extra
      stat() call from the code that adds a file to the index.
      
      The existing tests actually cover this code path, at least when
      running on Windows, so at this point I'm not adding new tests to
      cover the changes.
      Russell Belfer committed
    • Make rename detection file size fix better · effdbeb3
      The previous fix for checking file sizes with rename detection
      always loads the blob.  In this version, if the odb backend can
      get the object header without loading the whole thing into memory,
      then we'll just use that, so that we can eliminate possible rename
      sources & targets without loading them.
      Russell Belfer committed
    • Fix rename detection for tree-to-tree diffs · a5140f4d
      The performance improvements I introduced for rename detection
      were not able to run successfully for tree-to-tree diffs because
      the blob size was not known early enough and so the file signature
      always had to be calculated nonetheless.
      
      This change separates loading blobs into memory from calculating
      the signature.  I can't avoid having to load the large blobs into
      memory, but by moving it forward, I'm able to avoid the signature
      calculation if the blob won't come into play for renames.
      Russell Belfer committed
  24. 24 Jul, 2013 2 commits
  25. 17 Jul, 2013 1 commit
  26. 29 Jun, 2013 1 commit
  27. 18 Jun, 2013 1 commit
    • Fix rename looped reference issues · e4acc3ba
      This makes the diff rename tracking code more careful about the
      order in which it processes renames and more thorough in updating
      the mapping of correct renames when an earlier rename update
      alters the index of a later matched pair.
      Russell Belfer committed
  28. 17 Jun, 2013 1 commit
    • More tests and bug fixes for status with rename · a1683f28
      This changes the behavior of the status RENAMED flags so that they
      will be combined with the MODIFIED flags if appropriate.  If a file
      is modified in the index and also renamed, then the status code
      will have both the GIT_STATUS_INDEX_MODIFIED and INDEX_RENAMED bits
      set.  If it is renamed but the OID has not changed, then just the
      GIT_STATUS_INDEX_RENAMED bit will be set.  Similarly, the flags
      GIT_STATUS_WT_MODIFIED and GIT_STATUS_WT_RENAMED can both be set
      independently of one another.
      
      This fixes a serious bug where the check for unmodified files that
      was done at data load time could end up erasing the RENAMED state
      of a file that was renamed with no changes.
      
      Lastly, this contains a bunch of new tests for status with renames,
      including tests where the only rename changes are case changes.
      The expected results of these tests have to vary by whether the
      platform uses a case sensitive filesystem or not, so the expected
      data covers those platform differences separately.
      Russell Belfer committed