1. 15 Mar, 2011 15 commits
  2. 14 Mar, 2011 6 commits
    • libgit2 version 0.10.0, "very disco" · 7064938b
      A version *so* awesome that needs 2 version bumps AND a codename.
      
      Major features:
      
      	- New internal garbage collection (harder)
      	- Pack backend rewritten from scratch (better)
      	- Revision walker rewritten from scratch (faster)
      	- New object interdependency system (stronger)
      	- Unique OID shortener
      	- Reference listing
      
      In honor of one heck of a music album, released ten years ago,
      yesterday.
      Vicent Marti committed
    • Fix the retarded object interdependency system · 6b2a1941
      It's no longer retarded. All object interdependencies are stored as OIDs
      instead of actual objects. This should be hundreds of times faster,
      specially on big repositories. Heck, who knows, maye it doesn't even
      segfault -- wouldn't that be awesome?
      
      What has changed on the API?
      
      	`git_commit_parent`, `git_commit_tree`, `git_tag_target` now return
      	their values through a pointer-to-pointer, and have an error code.
      
      	`git_commit_set_tree` and `git_tag_set_target` now return an error
      	code and may fail.
      
      	`git_repository_free__no_gc` has been deprecated because it's
      	stupid. Since there are no longer any interdependencies between
      	objects, we don't need internal reference counting, and GC
      	never fails or double-free's pointers.
      
      	`git_object_close` now does a very sane thing: marks an object
      	as unused. Closed objects will be eventually free'd from the
      	object cache based on LRU. Please use `git_object_close` from
      	the garbage collector `destroy` method on your bindings. It's
      	100% safe.
      
      	`git_repository_gc` is a new method that forces a garbage collector
      	pass through the repo, to free as many LRU objects as possible.
      	This is useful if we are running out of memory.
      Vicent Marti committed
    • Add new method `git_reference_listall` · 00571828
      Lists all the references in a repository. Listing may be filtered by
      reference type.
      
      This should applease Lord Clem.
      Vicent Marti committed
    • Rewrite the Pack backend · 58d06cf1
      The new pack backend is an adaptation of the original git.git code in
      `sha1_file.c`. It's slightly faster than the previous version and
      severely less memory-hungry.
      
      The call-stack of a normal pack backend query has been properly
      documented in the top of the header for future reference. And by
      properly I mean with ASCII diagrams 'n shit.
      Vicent Marti committed
    • Rewrite the Revision Walker · 71db842f
      The new revision walker uses an internal Commit object storage system,
      custom memory allocator and much improved topological and time sorting
      algorithms. It's about 20x times faster than the previous implementation
      when browsing big repositories.
      
      The following external API calls have changed:
      
      	`git_revwalk_next` returns an OID instead of a full commit object.
      	The initial call to `git_revwalk_next` is no longer blocking when
      	iterating through a repo with a time-sorting mode.
      
      	Iterating with Topological or inverted modes still makes the initial
      	call blocking to preprocess the commit list, but this block should be
      	mostly unnoticeable on most repositories (topological preprocessing
      	times at 0.3s on the git.git repo).
      
      	`git_revwalk_push` and `git_revwalk_hide` now take an OID instead
      	of a full commit object.
      Vicent Marti committed
    • Add `git_oid_shorten` (unique OID minimzer) · 26022f07
      Set of methods to find the minimal-length to uniquely identify every OID
      in a list. Useful for GUI applications, commit logs and so on.
      
      Includes stress test.
      
      Signed-off-by: Vicent Marti <tanoku@gmail.com>
      Vicent Marti committed
  3. 07 Mar, 2011 2 commits
  4. 05 Mar, 2011 9 commits
  5. 04 Mar, 2011 2 commits
  6. 03 Mar, 2011 6 commits