1. 17 May, 2011 8 commits
  2. 16 May, 2011 4 commits
  3. 15 May, 2011 8 commits
  4. 14 May, 2011 2 commits
  5. 13 May, 2011 3 commits
  6. 11 May, 2011 5 commits
  7. 10 May, 2011 10 commits
    • libgit2 v0.12.0 "absolutely no reason" · 40774549
      Hey, welcome to yet another minor libgit2 release. Sorry for the delay from
      the last one. As you'll see the changelog is quite extensive -- hopefully from
      now on we'll stick to more frequent minor releases.
      
      Together with the usual bugfixes, here's a list of the new key features:
      
      * Distfiles
      
      	This version comes with proper distfiles as requested in #131. These are
      	available in the Downloads section of the GitHub project.
      
      * Error handling
      
      	A new error handling API has been implemented that allows the library to
      	return detailed error messages together with the generic error codes. We
      	hope this will be a great when wrapping and integrating the library
      
      	New external method to get the last detailed error message:
      
      		+ git_lasterror(void)
      
      	The old `git_strerror` still exists, but will be deprecated in the future
      	as soon as every method in the library returns a valid error message.
      
      	The task of writing error messages for every method is quite daunting.
      	We appreciate pull requests with more error messages. Check the new error
      	handling documentation in the following commit:
      
      	https://github.com/libgit2/libgit2/commit/fa59f18d0ddbbb98d45e33934fb0efc3e2bf1557
      
      * Redis backend
      
      	We now have a Redis backend courtesy of Dmitry Kovega. Just like the
      	SQLite backend, this allows the library to store Git objects in a Redis
      	key-value store.
      
      	The backend requires the `hiredis` library. Use `--with-redis` when
      	building libgit2 to enable building the backend if `hiredis` is available.
      
      * Commits
      
      	New methods to access tree and parent data as a raw OID value
      	instead of forcing a repository lookup
      
      		+ git_commit_tree_oid(git_commit *commit)
      		+ git_commit_parent_oid(git_commit *commit, unsigned int n)
      
      * Index
      
      	The `git_index_add` method has been split into 4 different calls
      	which allow for appending and replacing in-memory entries and on-disk
      	files to the index.
      
      		+ git_index_add(git_index *index, const char *path, int stage)
      		+ git_index_add2(git_index *index, const git_index_entry *source_entry)
      		+ git_index_append(git_index *index, const char *path, int stage)
      		+ git_index_append2(git_index *index, const git_index_entry *source_entry)
      
      	Index entries can now also be efficiently removed from the index:
      
      		+ git_index_remove(git_index *index, int position)
      
      * References
      
      	Methods to force the creation and renaming of references, even if those already
      	exist on the repository.
      
      		+ git_reference_create_symbolic_f(git_reference **ref_out, git_repository *repo,
      				const char *name, const char *target)
      		+ git_reference_create_oid_f(git_reference **ref_out, git_repository *repo,
      				const char *name, const git_oid *id)
      		+ git_reference_rename_f(git_reference *ref, const char *new_name)
      
      * Repository
      
      	New auxiliary methods with repository information
      
      		+ git_repository_is_empty(git_repository *repo)
      		+ git_repository_path(git_repository *repo)
      		+ git_repository_workdir(git_repository *repo)
      
      * Signatures
      
      	New method to create a signature with the current date/time
      
      		+ git_signature_now(const char *name, const char *email)
      
      * Tags
      
      	Several wrappers to automate tag creation.
      
      		+ git_tag_create_frombuffer(git_oid *oid, git_repository *repo,
      				const char *buffer)
      		+ git_tag_create_f(git_oid *oid, git_repository *repo,
      				const char *tag_name, const git_oid *target,
      				git_otype target_type, const git_signature *tagger,
      				const char *message);
      		+ git_tag_create_fo(git_oid *oid, git_repository *repo,
      				const char *tag_name, const git_object *target,
      				const git_signature *tagger, const char *message)
      
      	New functionality to delete and list tags in a repository without
      	having to resort to the `references` API.
      
      		+ git_tag_delete(git_repository *repo, const char *tag_name)
      
      		+ git_tag_list(git_strarray *tag_names, git_repository *repo)
      
      * Trees
      
      	All instances of `git_tree_entry` are now returned and handled
      	as constant, to remind the user that these opaque types are not
      	supposed to be manually free'd.
      
      	The `git_tree_entry_2object` method now takes a `git_repository`
      	argument which defines in which repository the resolved object
      	should be looked up. (It is expected to be the same repository
      	that contains the parent `git_tree` for the entry).
      
      		+ git_tree_entry_2object(git_object **object_out, git_repository *repo,
      				const git_tree_entry *entry)
      
      	New opaque type `git_treebuilder` with functionality to create and
      	write trees on memory
      
      		+ git_treebuilder_create(git_treebuilder **builder_p, const git_tree *source)
      		+ git_treebuilder_clear(git_treebuilder *bld)
      		+ git_treebuilder_free(git_treebuilder *bld)
      		+ git_treebuilder_get(git_treebuilder *bld, const char *filename)
      		+ git_treebuilder_insert(git_tree_entry **entry_out, git_treebuilder *bld,
      				const char *filename, const git_oid *id, unsigned int attributes)
      		+ git_treebuilder_remove(git_treebuilder *bld, const char *filename)
      		+ git_treebuilder_filter(git_treebuilder *bld,
      				int (*filter)(const git_tree_entry *, void *), void *payload)
      		+ git_treebuilder_write(git_oid *oid, git_repository *repo, git_treebuilder *bld)
      
      	New method to write an index file as a tree to the ODB.
      
      		+ git_tree_create_fromindex(git_oid *oid, git_index *index)
      
      Thanks to the usual guility parties that make this this happen, to
      all the new contributors who are starting to submit pull requests, and
      to the bindings developers who have to keep up with our shit.
      
      Feedback and questions welcome on libgit2@librelist.org
      
      Signed-off-by: Vicent Marti <tanoku@gmail.com>
      Vicent Marti committed
    • Bring back `git_strerror` · f4a936b5
      We cannot totally deprecate this until the new error handling mechanisms
      are all in place.
      Vicent Marti committed
    • Merge pull request #180 from kellypleahy/bug/fix_issue_79 · 86b74ea0
      Fix issue #79 - git_lasterror() isn't appearing in git2.dll in windows.
      Vicent Martí committed
    • Merge pull request #181 from carlosmn/errors · 97ce36e7
      Move signature.c and tag.c to the new error handling
      Vicent Martí committed
    • Move tag.c to the new error handling · 44dc0d26
      Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
      Carlos Martín Nieto committed
    • Move signature.c to the new error handling · 5de24ec7
      Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
      Carlos Martín Nieto committed
    • Move config to a backend structure · c0335005
      Configuration options can come from different sources. Currently,
      there is only support for reading them from a flat file, but it might
      make sense to read it from a database at some point.
      
      Move the parsing code into src/config_file.c and create an include
      file include/git2/config_backend.h to allow for other backends to be
      developed.
      
      Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
      Carlos Martín Nieto committed
    • Fix issue #79 - git_lasterror() isn't appearing in git2.dll in windows. · ab86f159
      The GIT_EXPORT macro is used to declare a function to be externally
      accessible to other libraries.  This commit uses GIT_EXPORT to declare
      the git_lasterror() function as externally exported.  I verified with
      depends.exe that the function is available to external callers (i.e.
      in the exports table of the PE file).
      kelly.leahy committed