1. 29 Jun, 2015 1 commit
  2. 02 Jun, 2015 1 commit
  3. 13 May, 2015 2 commits
    • odb: reverse the default backend priorities · b0d7f329
      We currently first look in the loose object dir and then in the packs
      for objects. When performing operations on recent history this has a
      higher likelihood of hitting, but when we deal with operations which
      look further back into the past, we start spending a large amount of
      time getting ENOTENT from `access`.
      
      Reversing the priorities means that long-running operations can get to
      their objects faster, as we can look at the index data we have in memory
      (or rather mapped) to figure out whether we have an object, which is
      faster than going out to the filesystem.
      
      The packed backend already implements an optimistic read algorithm by
      first looking at the packs we know about and only going out to disk to
      referesh if the object is not found which means that in the case where
      we do have the object (which will be in the majority for anything that
      traverses the graph) we can avoid going to to disk entirely to determine
      whether an object exists.
      
      Operations which look at recent history may take a slight impact, but
      these would be operations which look a lot less at object and thus take
      less time regardless.
      Carlos Martín Nieto committed
    • odb: make the writestream's size a git_off_t · 77b339f7
      Restricting files to size_t is a silly limitation. The loose backend
      writes to a file directly, so there is no issue in using 63 bits for the
      size.
      
      We still assume that the header is going to fit in 64 bytes, which does
      mean quite a bit smaller files due to the run-length encoding, but it's
      still a much larger size than you would want Git to handle.
      Carlos Martín Nieto committed
  4. 11 May, 2015 1 commit
  5. 13 Feb, 2015 3 commits
  6. 09 Dec, 2014 1 commit
  7. 21 Nov, 2014 1 commit
  8. 08 Nov, 2014 1 commit
    • odb: hardcode the empty blob and tree · e1ac0101
      git hardocodes these as objects which exist regardless of whether they
      are in the odb and uses them in the shell interface as a way of
      expressing the lack of a blob or tree for one side of e.g. a diff.
      
      In the library we use each language's natural way of declaring a lack of
      value which makes a workaround like this unnecessary. Since git uses it,
      it does however mean each shell application would need to perform this
      check themselves.
      
      This makes it common work across a range of applications and an issue
      with compatibility with git, which fits right into what the library aims
      to provide.
      
      Thus we introduce the hard-coded empty blob and tree in the odb
      frontend. These hard-coded objects are checked for before going to the
      backends, but after the cache check, which means the second time they're
      used, they will be treated as normal cached objects instead of creating
      new ones.
      Carlos Martín Nieto committed
  9. 23 May, 2014 1 commit
  10. 02 May, 2014 1 commit
  11. 21 Apr, 2014 1 commit
  12. 21 Mar, 2014 1 commit
  13. 10 Mar, 2014 1 commit
    • Fix a number of git_odb_exists_prefix bugs · 89499078
      The git_odb_exists_prefix API was not dealing correctly when a
      later backend returned GIT_ENOTFOUND even if an earlier backend
      had found the object.
      
      Additionally, the unit tests were not properly exercising the API
      and had a couple mistakes in checking the results.
      
      Lastly, since the backends are not expected to behavior correctly
      unless all bytes of the short id are zero except for the prefix,
      this makes the ODB prefix APIs explicitly clear out the extra
      bytes so the user doesn't have to be as careful.
      Russell Belfer committed
  14. 06 Mar, 2014 1 commit
  15. 05 Mar, 2014 2 commits
  16. 04 Mar, 2014 1 commit
  17. 13 Jan, 2014 1 commit
  18. 04 Nov, 2013 1 commit
  19. 22 Oct, 2013 1 commit
  20. 04 Oct, 2013 1 commit
  21. 19 Sep, 2013 1 commit
  22. 17 Sep, 2013 3 commits
    • Merge git_buf and git_buffer · a9f51e43
      This makes the git_buf struct that was used internally into an
      externally available structure and eliminates the git_buffer.
      
      As part of that, some of the special cases that arose with the
      externally used git_buffer were blended into the git_buf, such as
      being careful about git_buf objects that may have a NULL ptr and
      allowing for bufs with a valid ptr and size but zero asize as a
      way of referring to externally owned data.
      Russell Belfer committed
    • Extend public filter api with filter lists · 2a7d224f
      This moves the git_filter_list into the public API so that users
      can create, apply, and dispose of filter lists.  This allows more
      granular application of filters to user data outside of libgit2
      internals.
      
      This also converts all the internal usage of filters to the public
      APIs along with a few small tweaks to make it easier to use the
      public git_buffer stuff alongside the internal git_buf.
      Russell Belfer committed
    • Create public filter object and use it · 85d54812
      This creates include/sys/filter.h with a basic definition of a
      git_filter and then converts the internal code to use it.  There
      are related internal objects (git_filter_list) that we will want
      to publish at some point, but this is a first step.
      Russell Belfer committed
  23. 11 Sep, 2013 1 commit
  24. 07 Sep, 2013 1 commit
  25. 06 Sep, 2013 1 commit
  26. 04 Sep, 2013 1 commit
    • odb: Move the auto refresh logic to the pack backend · b1a6c316
      Previously, `git_object_read()`, `git_object_read_prefix()` and
      `git_object_exists()` were implementing an auto refresh logic. When the
      expected object couldn't be found in any backend, a call to
      `git_odb_refresh()` was triggered and the lookup was once again performed
      against all backends.
      
      This commit removes this auto-refresh logic from the odb layer and pushes
      it down into the pack-backend (as it's the only one currently exposing
      a `refresh()` endpoint).
      nulltoken committed
  27. 30 Aug, 2013 1 commit
  28. 17 Aug, 2013 1 commit
  29. 16 Aug, 2013 1 commit
  30. 15 Aug, 2013 2 commits
  31. 12 Aug, 2013 1 commit
  32. 15 Jul, 2013 1 commit
  33. 12 Jun, 2013 1 commit