• Show log

    Commit

  • Hash : 3315782c
    Author : Vicent Marti
    Date : 2010-08-08T14:12:17

    Redesigned the walking/object lookup interface
    
    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>