1. Sep 06, 2016
  2. Sep 03, 2016
    • Edward Thomson's avatar
      diff_print: change test for skipping binary printing · f4e3dae7
      Edward Thomson authored
      Instead of skipping printing a binary diff when there is no data, skip
      printing when we have a status of `UNMODIFIED`.  This is more in-line
      with our internal data model and allows us to expand the notion of
      binary data.
      
      In the future, there may have no data because the files were unmodified
      (there was no data to produce) or it may have no data because there was
      no data given to us in a patch.  We want to treat these cases
      separately.
      f4e3dae7
    • Edward Thomson's avatar
      patch: error on diff callback failure · 4bfd7c63
      Edward Thomson authored
      4bfd7c63
  3. Sep 02, 2016
  4. Sep 01, 2016
    • Patrick Steinhardt's avatar
      patch_generate: only calculate binary diffs if requested · 4b34f687
      Patrick Steinhardt authored
      When generating diffs for binary files, we load and decompress
      the blobs in order to generate the actual diff, which can be very
      costly. While we cannot avoid this for the case when we are
      called with the `GIT_DIFF_SHOW_BINARY` flag, we do not have to
      load the blobs in the case where this flag is not set, as the
      caller is expected to have no interest in the actual content of
      binary files.
      
      Fix the issue by only generating a binary diff when the caller is
      actually interested in the diff. As libgit2 uses heuristics to
      determine that a blob contains binary data by inspecting its size
      without loading from the ODB, this saves us quite some time when
      diffing in a repository with binary files.
      4b34f687
  5. Aug 30, 2016
  6. Aug 29, 2016
  7. Aug 26, 2016
  8. Aug 24, 2016
  9. Aug 22, 2016
  10. Aug 17, 2016
  11. Aug 12, 2016
    • Patrick Steinhardt's avatar
      ignore: allow unignoring basenames in subdirectories · fcb2c1c8
      Patrick Steinhardt authored
      The .gitignore file allows for patterns which unignore previous
      ignore patterns. When unignoring a previous pattern, there are
      basically three cases how this is matched when no globbing is
      used:
      
      1. when a previous file has been ignored, it can be unignored by
         using its exact name, e.g.
      
         foo/bar
         !foo/bar
      
      2. when a file in a subdirectory has been ignored, it can be
         unignored by using its basename, e.g.
      
         foo/bar
         !bar
      
      3. when all files with a basename are ignored, a specific file
         can be unignored again by specifying its path in a
         subdirectory, e.g.
      
         bar
         !foo/bar
      
      The first problem in libgit2 is that we did not correctly treat
      the second case. While we verified that the negative pattern
      matches the tail of the positive one, we did not verify if it
      only matches the basename of the positive pattern. So e.g. we
      would have also negated a pattern like
      
          foo/fruz_bar
          !bar
      
      Furthermore, we did not check for the third case, where a
      basename is being unignored in a certain subdirectory again.
      
      Both issues are fixed with this commit.
      fcb2c1c8
  12. Aug 11, 2016
  13. Aug 09, 2016
  14. Aug 08, 2016
  15. Aug 06, 2016
  16. Aug 05, 2016