1. 03 Mar, 2011 1 commit
  2. 07 Feb, 2011 3 commits
  3. 05 Feb, 2011 2 commits
  4. 03 Feb, 2011 1 commit
    • Use Git's own tree entry sorting algorithm · 35786cb7
      If plain strcmp is used, as this code did before, the final sorting may
      end up different from what git-add would do (for example, 'boost'
      appearing before 'boost-build.jam', because Git sorts as if it were
      spelled 'boost/').
      
      If the sorting is incorrect like this, Git 1.7.4 insists that unmodified
      files have been modified.  For example, my test repository has these
      four entries:
      
      drwxr-xr-x  199 johnw  wheel   6766 Feb  2 17:21 boost
      -rw-r--r--    1 johnw  wheel    849 Feb  2 17:22 boost-build.jam
      -rw-r--r--    1 johnw  wheel    989 Feb  2 17:21 boost.css
      -rw-r--r--    1 johnw  wheel   6308 Feb  2 17:21 boost.png
      
      Here is the output from git-ls-tree for these files, in a commit tree
      created using git-add and git-commit:
      
      100644 blob 8b8775433aef73e9e12609610ae2e35cf1e7ec2c    boost-build.jam
      100644 blob 986c4050fa96d825a1311c8e871cdcc9a3e0d2c3    boost.css
      100644 blob b4d51fcd5c9149fd77f5ca6ed2b6b1b70e8fe24f    boost.png
      040000 tree 46537eeaa4d577010f19b1c9e940cae9a670ff5c    boost
      
      Here is the output for the same commit produced using libgit2:
      
      040000 tree c27c0fd1436f28a6ba99acd0a6c17d178ed58288	boost
      100644 blob 8b8775433aef73e9e12609610ae2e35cf1e7ec2c	boost-build.jam
      100644 blob 986c4050fa96d825a1311c8e871cdcc9a3e0d2c3	boost.css
      100644 blob b4d51fcd5c9149fd77f5ca6ed2b6b1b70e8fe24f	boost.png
      
      Due to this reordering, git-status claims the three blobs are always
      modified, no matter what I do using git-read-tree or git-reset or
      git-checkout to update the index.
      John Wiegley committed
  5. 01 Feb, 2011 2 commits
  6. 29 Jan, 2011 1 commit
  7. 20 Jan, 2011 1 commit
  8. 06 Dec, 2010 1 commit
  9. 05 Dec, 2010 2 commits
  10. 02 Dec, 2010 1 commit
    • Refactor all 'vector' functions into common code · c4034e63
      All the operations on the 'git_index_entry' array and the
      'git_tree_entry' array have been refactored into common code in the
      src/vector.c file.
      
      The new vector methods support:
      	- insertion:	O(1) (avg)
      	- deletion:		O(n)
      	- searching:	O(logn)
      	- sorting:		O(logn)
      	- r. access:	O(1)
      
      Signed-off-by: Vicent Marti <tanoku@gmail.com>
      Vicent Marti committed
  11. 05 Nov, 2010 1 commit
    • Improve error handling · 1795f879
      All initialization functions now return error codes instead of pointers.
      Error codes are now properly propagated on most functions. Several new
      and more specific error codes have been added in common.h
      
      Signed-off-by: Vicent Marti <tanoku@gmail.com>
      Vicent Marti committed
  12. 27 Oct, 2010 1 commit
    • Fix internal memory management on the library · 58519018
      String mememory is now managed in a much more sane manner.
      
      Fixes include:
      
      	- git_person email and name is no longer limited to 64 characters
      	- git_tree_entry filename is no longer limited to 255 characters
      	- raw objects are properly opened & closed the minimum amount of
      	times required for parsing
      	- unit tests no longer leak
      	- removed 5 other misc memory leaks as reported by Valgrind
      	- tree writeback no longer segfaults on rare ocassions
      
      The git_person struct is no longer public. It is now managed by the
      library, and getter methods are in place to access its internal
      attributes.
      
      Signed-off-by: Vicent Marti <tanoku@gmail.com>
      Vicent Marti committed
  13. 08 Oct, 2010 1 commit
  14. 06 Oct, 2010 1 commit
  15. 21 Sep, 2010 1 commit
    • Add write-back support for git_tree · 2a884588
      All the setter methods for git_tree have been added, including the
      setters for attributes on each git_tree_entry and methods to add/remove
      entries of the tree.
      
      Modified trees and trees created in-memory from scratch can be written
      back to the repository using git_object_write().
      
      Signed-off-by: Vicent Marti <tanoku@gmail.com>
      Vicent Marti committed
  16. 20 Sep, 2010 1 commit
    • Add support for in-memory objects · d45b4a9a
      All repository objects can now be created from scratch in memory using
      either the git_object_new() method, or the corresponding git_XXX_new()
      for each object.
      
      So far, only git_commits can be written back to disk once created in
      memory.
      
      Signed-off-by: Vicent Marti <tanoku@gmail.com>
      Vicent Marti committed
  17. 19 Sep, 2010 1 commit
    • Give object structures more descriptive names · f49a2e49
      The 'git_obj' structure is now called 'git_rawobj', since
      it represents a raw object read from the ODB.
      
      The 'git_repository_object' structure is now called 'git_object',
      since it's the base object class for all objects.
      
      Signed-off-by: Vicent Marti <tanoku@gmail.com>
      Vicent Marti committed
  18. 18 Sep, 2010 1 commit
    • Add generic methods for object writeback · a7a7ddbe
      git_repository_object has now several internal methods to write back the
      object information in the repository.
      
      - git_repository__dbo_prepare_write()
      	Prepares the DBO object to be modified
      
      - git_repository__dbo_write()
      	Writes new bytes to the DBO object
      
      - git_repository__dbo_writeback()
      	Writes back the changes to the repository
      
      Signed-off-by: Vicent Marti <tanoku@gmail.com>
      Vicent Marti committed
  19. 08 Sep, 2010 1 commit
  20. 12 Aug, 2010 3 commits
    • Fix object handling in git_repository · f2408cc2
      All loaded objects through git_repository_lookup are properly parsed &
      free'd on failure.
      
      Signed-off-by: Vicent Marti <tanoku@gmail.com>
      Vicent Marti committed
    • Finish the tree object API · 003c2690
      The interface for loading and parsing tree objects from a repository has
      been completed with all the required accesor methods for attributes,
      support for manipulating individual tree entries and a new unit test
      t0901-readtree which tries to load and parse a tree object from a
      repository.
      
      Signed-off-by: Vicent Marti <tanoku@gmail.com>
      Vicent Marti committed
    • Redesigned the walking/object lookup interface · 3315782c
      The old 'git_revpool' object has been removed and
      split into two distinct objects with separate
      functionality, in order to have separate methods for
      object management and object walking.
      
      *	A new object 'git_repository' does the high-level
      	management of a repository's objects (commits, trees,
      	tags, etc) on top of a 'git_odb'.
      
      	Eventually, it will also manage other repository
      	attributes (e.g. tag resolution, references, etc).
      
      	See: src/git/repository.h
      
      *	A new external method
      		'git_repository_lookup(repo, oid, type)'
      	has been added to the 'git_repository' API.
      
      	All object lookups (git_XXX_lookup()) are now
      	wrappers to this method, and duplicated code
      	has been removed. The method does automatic type
      	checking and returns a generic 'git_revpool_object'
      	that can be cast to any specific object.
      
      	See: src/git/repository.h
      
      *	The external methods for object parsing of repository
      	objects (git_XXX_parse()) have been removed.
      
      	Loading objects from the repository is now managed
      	through the 'lookup' functions. These objects are
      	loaded with minimal information, and the relevant
      	parsing is done automatically when the user requests
      	any of the parsed attributes through accessor methods.
      
      	An attribute has been added to 'git_repository' in
      	order to force the parsing of all the repository objects
      	immediately after lookup.
      
      	See: src/git/commit.h
      	See: src/git/tag.h
      	See: src/git/tree.h
      
      *	The previous walking functionality of the revpool
      	is now found in 'git_revwalk', which does the actual
      	revision walking on a repository; the attributes
      	when walking through commits in a database have been
      	decoupled from the actual commit objects.
      	This increases performance when accessing commits
      	during the walk and allows to have several
      	'git_revwalk' instances working at the same time on
      	top of the same repository, without having to load
      	commits in memory several times.
      
      	See: src/git/revwalk.h
      
      *	The old 'git_revpool_table' has been renamed to
      	'git_hashtable' and now works as a generic hashtable
      	with support for any kind of object and custom hash
      	functions.
      
      	See: src/hashtable.h
      
      *	All the relevant unit tests have been updated, renamed
      	and grouped accordingly.
      
      Signed-off-by: Vicent Marti <tanoku@gmail.com>
      Vicent Marti committed
  21. 15 Jul, 2010 2 commits
  22. 01 Nov, 2008 1 commit