1. 18 Dec, 2010 1 commit
  2. 10 Dec, 2010 1 commit
  3. 07 Dec, 2010 1 commit
  4. 06 Dec, 2010 1 commit
  5. 05 Dec, 2010 2 commits
  6. 02 Dec, 2010 1 commit
  7. 01 Dec, 2010 2 commits
  8. 06 Nov, 2010 2 commits
  9. 05 Nov, 2010 2 commits
  10. 31 Oct, 2010 1 commit
    • Fix in-memory commit getters trying to parse · d80e9d55
      Issue 9 on the tracker. The commit object getters for in-memory objects
      were trying to parse an inexistant on-disk object when one of the commit
      attributes which were still not set was queried.
      
      We now return a NULL value when this happens.
      
      Signed-off-by: Vicent Marti <tanoku@gmail.com>
      Vicent Marti committed
  11. 28 Oct, 2010 1 commit
  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. 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
  14. 19 Sep, 2010 2 commits
    • Add setter methods & write support for git_commit · 0c3596f1
      All the required git_commit_set_XXX methods have been implemented; all
      the attributes of a commit object can now be modified in-memory.
      
      The new method git_object_write() automatically writes back the
      in-memory changes of any object to the repository. So far it only
      supports git_commit objects.
      
      Signed-off-by: Vicent Marti <tanoku@gmail.com>
      Vicent Marti committed
    • 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
  15. 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
  16. 12 Aug, 2010 2 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
    • 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
  17. 06 Aug, 2010 1 commit
    • Refactor parsing methods · 364788e1
      The 'parse_oid' and 'parse_person' methods which were used by the commit
      parser are now global so they can be used when parsing other objects.
      
      The 'git_commit_person' struct has been changed to a generic
      'git_person'.
      
      Signed-off-by: Vicent Marti <tanoku@gmail.com>
      Vicent Marti committed
  18. 15 Jul, 2010 4 commits
    • Add parsing of tree file contents. · d8603ed9
      The basic information (pointed trees and blobs) of each tree object in a
      revision pool can now be parsed and queried.
      
      Signed-off-by: Vicent Marti <tanoku@gmail.com>
      Vicent Marti committed
    • Add external API to access detailed commit attributes · 52f2390b
      The following new external methods have been added:
      
      GIT_EXTERN(const char *) git_commit_message_short(git_commit *commit);
      GIT_EXTERN(const char *) git_commit_message(git_commit *commit);
      GIT_EXTERN(time_t) git_commit_time(git_commit *commit);
      GIT_EXTERN(const git_commit_person *) git_commit_committer(git_commit *commit);
      GIT_EXTERN(const git_commit_person *) git_commit_author(git_commit *commit);
      GIT_EXTERN(const git_tree *) git_commit_tree(git_commit *commit);
      
      A new structure, git_commit_person has been added to represent a
      commit's author or committer.
      
      The parsing of a commit has been split in two phases.
      When adding a commit to the revision pool:
      	- the commit's ODB object is opened
      	- its raw contents are parsed for commit TIME, PARENTS and TREE
      		(the minimal amount of data required to traverse the pool)
      	- the commit's ODB object is closed
      
      When querying for extended information on a commit:
      	- the commit's ODB object is reopened
      	- its raw contents are parsed for the requested information
      	- the commit's ODB object remains open to handle additional queries
      
      New unit tests have been added for the new functionality:
      
      	In t0401-parse: parse_person_test
      	In t0402-details: query_details_test
      
      Signed-off-by: Vicent Marti <tanoku@gmail.com>
      Vicent Marti committed
    • Add support for tree objects in revision pools · 225fe215
      Commits now store pointers to their tree objects.
      Tree objects now work as separate git_revpool_object
      entities.
      Tree objects can be loaded and parsed inedependently
      from commits.
      
      Signed-off-by: Vicent Marti <tanoku@gmail.com>
      Vicent Marti committed
    • Changed revpool's object table to support arbitrary objects · 40721f6b
      git_revpool_object now has a type identifier for each object
      type in a revpool (commits, trees, blobs, etc).
      
      Trees can now be stored in the revision pool.
      
      git_revpool_tableit now supports filtering objects by their
      type when iterating through the object table.
      
      Signed-off-by: Vicent Marti <tanoku@gmail.com>
      Vicent Marti committed
  19. 10 Jul, 2010 1 commit
    • Fixed memory leaks in test suite · 088a731f
      Created commit objects in t0401-parse weren't being freed properly.
      Updated the API documentation to note that commit objects are owned
      by the revision pool and should not be freed manually.
      
      The parents list of each commit was being freed twice after each test.
      
      Signed-off-by: Vicent Marti <tanoku@gmail.com>
      Vicent Marti committed
  20. 02 Jun, 2010 12 commits