1. 13 May, 2014 1 commit
  2. 09 May, 2014 2 commits
    • pack: use a cache for delta bases when unpacking · a332e91c
      Bring back the use of the delta base cache for unpacking objects. When
      generating the delta chain, we stop when we find a delta base in the
      pack's cache and use that as the starting point.
      Carlos Martín Nieto committed
    • pack: unpack using a loop · 2acdf4b8
      We currently make use of recursive function calls to unpack an object,
      resolving the deltas as we come back down the chain. This means that we
      have unbounded stack growth as we look up objects in a pack.
      
      This is now done in two steps: first we figure out what the dependency
      chain is by looking up the delta bases until we reach a non-delta
      object, pushing the information we need onto a stack and then we pop
      from that stack and apply the deltas until there are no more left.
      
      This version of the code does not make use of the delta base cache so it
      is slower than what's in the mainline. A later commit will reintroduce
      it.
      Carlos Martín Nieto committed
  3. 23 Jan, 2014 1 commit
  4. 01 Nov, 2013 2 commits
  5. 04 Oct, 2013 1 commit
  6. 22 Apr, 2013 3 commits
    • Consolidate packfile allocation further · 5d2d21e5
      Rename git_packfile_check to git_packfile_alloc since it is now
      being used more in that capacity.  Fix the various places that use
      it.  Consolidate some repeated code in odb_pack.c related to the
      allocation of a new pack_backend.
      Russell Belfer committed
    • Further threading fixes · 53607868
      This builds on the earlier thread safety work to make it so that
      setting the odb, index, refdb, or config for a repository is done
      in a threadsafe manner with minimized locking time.  This is done
      by adding a lock to the repository object and using it to guard
      the assignment of the above listed pointers.  The lock is only
      held to assign the pointer value.
      
      This also contains some minor fixes to the other work with pack
      files to reduce the time that locks are being held to and fix an
      apparently memory leak.
      Russell Belfer committed
    • Add mutex around mapping and unmapping pack files · 24c70804
      When I was writing threading tests for the new cache, the main
      error I kept running into was a pack file having it's content
      unmapped underneath the running thread.  This adds a lock around
      the routines that map and unmap the pack data so that threads can
      effectively reload the data when they need it.
      
      This also required reworking the error handling paths in a couple
      places in the code which I tried to make consistent.
      Russell Belfer committed
  7. 03 Mar, 2013 1 commit
    • indexer: use a hashtable for keeping track of offsets · 0e040c03
      These offsets are needed for REF_DELTA objects, which encode which
      object they use as a base, but not where it lies in the packfile, so
      we need a list.
      
      These objects are mostly from older packfiles, before OFS_DELTA was
      widely spread. The time spent in indexing these packfiles is greatly
      reduced, though remains above what git is able to do.
      Carlos Martín Nieto committed
  8. 12 Jan, 2013 1 commit
  9. 11 Jan, 2013 6 commits
  10. 08 Jan, 2013 1 commit
  11. 02 Dec, 2012 1 commit
    • pack: add git_packfile_resolve_header · 44f9f547
      To paraphrase @peff:
      
      You can get both size and type from a packed object reasonably cheaply.
      If you have:
      
      * An object that is not a delta; both type and size are available in the
        packfile header.
      * An object that is a delta. The packfile type will be OBJ_*_DELTA, and
        you have to resolve back to the base to find the real type. That means
        potentially a lot of packfile index lookups, but each one is
        relatively cheap. For the size, you inflate the first few bytes of the
        delta, whose header will tell you the resulting size of applying the
        delta to the base.
      
      For simplicity, we just decompress the whole delta for now.
      David Michael Barr committed
  12. 30 Nov, 2012 1 commit
  13. 27 Nov, 2012 1 commit
  14. 14 Sep, 2012 1 commit
  15. 24 Jul, 2012 1 commit
  16. 03 Jul, 2012 1 commit
  17. 13 Apr, 2012 1 commit
  18. 13 Mar, 2012 1 commit
    • Migrate ODB files to new error handling · e1de726c
      This migrates odb.c, odb_loose.c, odb_pack.c and pack.c to
      the new style of error handling.  Also got the unix and win32
      versions of map.c.  There are some minor changes to other
      files but no others were completely converted.
      
      This also contains an update to filebuf so that a zeroed out
      filebuf will not think that the fd (== 0) is actually open
      (and inadvertently call close() on fd 0 if cleaned up).
      
      Lastly, this was built and tested on win32 and contains a
      bunch of fixes for the win32 build which was pretty broken.
      Russell Belfer committed
  19. 13 Feb, 2012 1 commit
  20. 14 Oct, 2011 1 commit
    • *: correct and codify various file permissions · 01ad7b3a
      The following files now have 0444 permissions:
      
      - loose objects
      - pack indexes
      - pack files
      - packs downloaded by fetch
      - packs downloaded by the HTTP transport
      
      And the following files now have 0666 permissions:
      
      - config files
      - repository indexes
      - reflogs
      - refs
      
      This brings libgit2 more in line with Git.
      
      Note that git_filebuf_commit() and git_filebuf_commit_at() have both
      gained a new mode parameter.
      
      The latter change fixes an important issue where filebufs created with
      GIT_FILEBUF_TEMPORARY received 0600 permissions (due to mkstemp(3)
      usage). Now we chmod() the file before renaming it into place.
      
      Tests have been added to confirm that new commit, tag, and tree
      objects are created with the right permissions. I don't have access to
      Windows, so for now I've guarded the tests with "#ifndef GIT_WIN32".
      Brodie Rao committed
  21. 19 Sep, 2011 1 commit
    • Tabify everything · 87d9869f
      There were quite a few places were spaces were being used instead of
      tabs. Try to catch them all. This should hopefully not break anything.
      Except for `git blame`. Oh well.
      Vicent Marti committed
  22. 18 Sep, 2011 1 commit
    • Cleanup legal data · bb742ede
      1. The license header is technically not valid if it doesn't have a
      copyright signature.
      
      2. The COPYING file has been updated with the different licenses used in
      the project.
      
      3. The full GPLv2 header in each file annoys me.
      Vicent Marti committed
  23. 18 Aug, 2011 1 commit
    • Implement cooperative caching · c1af5a39
      When indexing a file with ref deltas, a temporary cache for the
      offsets has to be built, as we don't have an index file yet. If the
      user takes the responsiblity for filling the cache, the packing code
      will look there first when it finds a ref delta.
      
      Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
      Carlos Martín Nieto committed
  24. 02 Aug, 2011 4 commits