]> git.proxmox.com Git - libgit2.git/log
libgit2.git
13 years agoCheck Redis replies for NULL
Vicent Marti [Fri, 13 May 2011 01:17:24 +0000 (04:17 +0300)]
Check Redis replies for NULL

13 years agoInclude "common.h" in "errors.h"
Vicent Marti [Fri, 13 May 2011 01:15:46 +0000 (04:15 +0300)]
Include "common.h" in "errors.h"

13 years agoMerge pull request #182 from darkhelmet/patch-1
Vicent Martí [Wed, 11 May 2011 18:49:45 +0000 (11:49 -0700)]
Merge pull request #182 from darkhelmet/patch-1

Add --with-redis flag to list of available build flags in README.

13 years agoAdd --with-redis flag to list of available build flags in README.
Daniel Huckstep [Tue, 10 May 2011 22:33:07 +0000 (15:33 -0700)]
Add --with-redis flag to list of available build flags in README.

13 years agolibgit2 v0.12.0 "absolutely no reason"
Vicent Marti [Tue, 10 May 2011 21:42:43 +0000 (00:42 +0300)]
libgit2 v0.12.0 "absolutely no reason"

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>
13 years agoMove all error-related defines to `git2/errors.h`
Vicent Marti [Tue, 10 May 2011 21:40:07 +0000 (00:40 +0300)]
Move all error-related defines to `git2/errors.h`

13 years agoBring back `git_strerror`
Vicent Marti [Tue, 10 May 2011 21:35:05 +0000 (00:35 +0300)]
Bring back `git_strerror`

We cannot totally deprecate this until the new error handling mechanisms
are all in place.

13 years agoMerge pull request #180 from kellypleahy/bug/fix_issue_79
Vicent Martí [Tue, 10 May 2011 21:26:16 +0000 (14:26 -0700)]
Merge pull request #180 from kellypleahy/bug/fix_issue_79

Fix issue #79 - git_lasterror() isn't appearing in git2.dll in windows.

13 years agoMerge pull request #181 from carlosmn/errors
Vicent Martí [Tue, 10 May 2011 21:23:01 +0000 (14:23 -0700)]
Merge pull request #181 from carlosmn/errors

Move signature.c and tag.c to the new error handling

13 years agoMove tag.c to the new error handling
Carlos Martín Nieto [Tue, 10 May 2011 16:56:44 +0000 (18:56 +0200)]
Move tag.c to the new error handling

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
13 years agoMove signature.c to the new error handling
Carlos Martín Nieto [Tue, 10 May 2011 15:38:41 +0000 (17:38 +0200)]
Move signature.c to the new error handling

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
13 years agoFix issue #79 - git_lasterror() isn't appearing in git2.dll in windows.
kelly.leahy [Tue, 10 May 2011 06:39:32 +0000 (23:39 -0700)]
Fix issue #79 - git_lasterror() isn't appearing in git2.dll in windows.

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).

13 years agoMerge branch 'error-handling' into development
Vicent Marti [Mon, 9 May 2011 18:58:26 +0000 (21:58 +0300)]
Merge branch 'error-handling' into development

13 years agoChange error handling mechanism once again
Vicent Marti [Mon, 9 May 2011 17:54:04 +0000 (20:54 +0300)]
Change error handling mechanism once again

Ok, this is the real deal. Hopefully. Here's how it's going to work:

- One main method, called `git__throw`, that sets the error
code and error message when an error happens.

This method must be called in every single place where an error
code was being returned previously, setting an error message
instead.

Example, instead of:

return GIT_EOBJCORRUPTED;

Use:

return git__throw(GIT_EOBJCORRUPTED,
"The object is missing a finalizing line feed");

And instead of:

[...] {
error = GIT_EOBJCORRUPTED;
goto cleanup;
}

Use:

[...] {
error = git__throw(GIT_EOBJCORRUPTED, "What an error!");
goto cleanup;
}

The **only** exception to this are the allocation methods, which
return NULL on failure but already set the message manually.

/* only place where an error code can be returned directly,
   because the error message has already been set by the wrapper */
if (foo == NULL)
return GIT_ENOMEM;

- One secondary method, called `git__rethrow`, which can be used to
fine-grain an error message and build an error stack.

Example, instead of:

if ((error = foobar(baz)) < GIT_SUCCESS)
return error;

You can now do:

if ((error = foobar(baz)) < GIT_SUCCESS)
return git__rethrow(error, "Failed to do a major operation");

The return of the `git_lasterror` method will be a string in the
shape of:

"Failed to do a major operation. (Failed to do an internal
operation)"

E.g.

"Failed to open the index. (Not enough permissions to access
'/path/to/index')."

NOTE: do not abuse this method. Try to write all `git__throw`
messages in a descriptive manner, to avoid having to rethrow them to
clarify their meaning.

This method should only be used in the places where the original
error message set by a subroutine is not specific enough.

It is encouraged to continue using this style as much possible to
enforce error propagation:

if ((error = foobar(baz)) < GIT_SUCCESS)
return error; /* `foobar` has set an error message, and
 we are just propagating it */

The error handling revamp will take place in two phases:

- Phase 1: Replace all pieces of code that return direct error codes
with calls to `git__throw`. This can be done semi-automatically
using `ack` to locate all the error codes that must be replaced.

- Phase 2: Add some `git__rethrow` calls in those cases where the
original error messages are not specific enough.

Phase 1 is the main goal. A minor libgit2 release will be shipped once
Phase 1 is ready, and the work will start on gradually improving the
error handling mechanism by refining specific error messages.

OTHER NOTES:

- When writing error messages, please refrain from using weasel
words. They add verbosity to the message without giving any real
information. (<3 Emeric)

E.g.

"The reference file appears to be missing a carriage return"
Nope.

"The reference file is missing a carriage return"
Yes.

- When calling `git__throw`, please try to use more generic error
codes so we can eventually reduce the list of error codes to
something more reasonable. Feel free to add new, more generic error
codes if these are going to replace several of the old ones.

E.g.

return GIT_EREFCORRUPTED;

Can be turned into:

return git__throw(GIT_EOBJCORRUPTED,
"The reference is corrupted");

13 years agoerrors: Update external API with new `git_lasterror`
Vicent Marti [Wed, 4 May 2011 22:49:27 +0000 (01:49 +0300)]
errors: Update external API with new `git_lasterror`

13 years agoerrors: Set error messages on memory allocation
Vicent Marti [Wed, 4 May 2011 22:20:27 +0000 (01:20 +0300)]
errors: Set error messages on memory allocation

13 years agoerrors: Add error handling function
Vicent Marti [Wed, 4 May 2011 22:12:17 +0000 (01:12 +0300)]
errors: Add error handling function

13 years agoMerge pull request #170 from jasonrm/development
Vicent Martí [Sun, 8 May 2011 21:00:57 +0000 (14:00 -0700)]
Merge pull request #170 from jasonrm/development

Fix misspelling of git_index_append2 (was git_index_apppend2).

13 years agoMerge pull request #172 from carlosmn/valgrind
Vicent Martí [Sun, 8 May 2011 21:00:06 +0000 (14:00 -0700)]
Merge pull request #172 from carlosmn/valgrind

ref test: update a forgotten repo -> repo2

13 years agoMerge pull request #174 from carlosmn/backend-static
Vicent Martí [Sun, 8 May 2011 20:59:47 +0000 (13:59 -0700)]
Merge pull request #174 from carlosmn/backend-static

odb backend_sort_cmp should be static

13 years agoMerge pull request #177 from kellypleahy/topic/fix-delete-mutex
Vicent Martí [Sun, 8 May 2011 20:56:09 +0000 (13:56 -0700)]
Merge pull request #177 from kellypleahy/topic/fix-delete-mutex

Fix bug in the way pthead_mutex_t was being destroyed in win32.

13 years agoMerge pull request #176 from kellypleahy/topic/force-line-endings
Scott Chacon [Sun, 8 May 2011 19:39:21 +0000 (12:39 -0700)]
Merge pull request #176 from kellypleahy/topic/force-line-endings

Add git attributes settings for *.c and *.h to force line endings to LF.

13 years agoFix bug in the way pthead_mutex_t was being destroyed in win32.
kelly.leahy [Sun, 8 May 2011 19:32:35 +0000 (12:32 -0700)]
Fix bug in the way pthead_mutex_t was being destroyed in win32.

Win32 critical section objects (CRITICAL_SECTION) are not kernel objects.
Only kernel objects are destroyed by using CloseHandle.  Critical sections
are supposed to be deleted with the DeleteCriticalSection API
(http://msdn.microsoft.com/en-us/library/ms682552(VS.85).aspx).

13 years agoAdd git attributes settings for *.c and *.h to force line endings to LF.
kelly.leahy [Sun, 8 May 2011 19:30:16 +0000 (12:30 -0700)]
Add git attributes settings for *.c and *.h to force line endings to LF.

13 years agoMerge pull request #175 from carlosmn/analyzer
Vicent Martí [Fri, 6 May 2011 16:09:50 +0000 (09:09 -0700)]
Merge pull request #175 from carlosmn/analyzer

Fix two warnings from Clang.

Fixes issue #173

13 years agoFix two warnings from Clang
Carlos Martín Nieto [Fri, 6 May 2011 10:47:21 +0000 (12:47 +0200)]
Fix two warnings from Clang

Both are about not reading the value stored in a variable.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
13 years agoodb backend_sort_cmp should be static
Carlos Martín Nieto [Fri, 6 May 2011 10:43:37 +0000 (12:43 +0200)]
odb backend_sort_cmp should be static

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
13 years agoref test: update a forgotten repo -> repo2
Carlos Martín Nieto [Thu, 5 May 2011 09:38:23 +0000 (11:38 +0200)]
ref test: update a forgotten repo -> repo2

Commit 34e5d87e0512f2a3dfd6 left one of these unchanged we're trying
to read from a free'd repository.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
13 years agoFix misspelling of git_index_append2 (was git_index_apppend2).
Jason R. McNeil [Wed, 4 May 2011 05:22:42 +0000 (22:22 -0700)]
Fix misspelling of git_index_append2 (was git_index_apppend2).

13 years agoMerge pull request #151 from carlosmn/root-commit.
Vicent Martí [Mon, 2 May 2011 22:29:50 +0000 (15:29 -0700)]
Merge pull request #151 from carlosmn/root-commit.

Support root commits

13 years agoMerge pull request #146 from nordsturm/fix_subtrees.
Vicent Martí [Mon, 2 May 2011 22:26:16 +0000 (15:26 -0700)]
Merge pull request #146 from nordsturm/fix_subtrees.

Fix tree-entry attribute convertion (fix corrupted trees)

13 years agoRe-apply missing patches
Vicent Marti [Sun, 1 May 2011 22:12:53 +0000 (01:12 +0300)]
Re-apply missing patches

13 years agoMerge pull request #145 from schu/fix-unused-warnings.
Vicent Martí [Sun, 1 May 2011 21:59:50 +0000 (14:59 -0700)]
Merge pull request #145 from schu/fix-unused-warnings.

Fix -Wunused-but-set-variable warnings

13 years agoMerge pull request #147 from nordsturm/fix_pack_backend_leak.
Vicent Martí [Sun, 1 May 2011 21:59:11 +0000 (14:59 -0700)]
Merge pull request #147 from nordsturm/fix_pack_backend_leak.

Fix memory leak in pack_backend__free

13 years agoMerge pull request #168 from nulltoken/isolate_refs_tests.
Vicent Martí [Sun, 1 May 2011 19:43:30 +0000 (12:43 -0700)]
Merge pull request #168 from nulltoken/isolate_refs_tests.

Isolate "writing" refs tests in a temporary folder

13 years agoChange implementation of refs tests that alter the current repository to make them...
nulltoken [Sun, 1 May 2011 19:35:32 +0000 (21:35 +0200)]
Change implementation of refs tests that alter the current repository to make them run against a temporary clone of the test repository

13 years agopack-odb: Check `mtime` instead of folder size
Vicent Marti [Sun, 1 May 2011 18:31:58 +0000 (21:31 +0300)]
pack-odb: Check `mtime` instead of folder size

Do not check the folder's size to detect new packfiles at runtime. This
doesn't work on Win32.

13 years agoAdd root commit test
Carlos Martín Nieto [Thu, 28 Apr 2011 16:30:50 +0000 (18:30 +0200)]
Add root commit test

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
13 years agocommit: support a root commits
Carlos Martín Nieto [Wed, 27 Apr 2011 12:59:59 +0000 (14:59 +0200)]
commit: support a root commits

A root commit is a commit whose branch (usually what HEAD points to)
doesn't exist (yet). This situation can happen when the commit is the
first after 1) a repository is initialized or 2) a orphan checkout has
been performed.

Take this opportunity to remove the symbolic link check, as
git_reference_resolve works on OID refs as well.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
13 years agorefs: don't loose info on resolve error
Carlos Martín Nieto [Fri, 29 Apr 2011 09:45:42 +0000 (11:45 +0200)]
refs: don't loose info on resolve error

Typical use is git_reference_resolve(&ref, ref). Currently, if there is
an error, ref will point to NULL, causing the user to lose that
reference.

Always update resolved_ref instead of just on finding an OID ref,
storing the last valid reference in it.

This change helps simplify the code for allowing root commits.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
13 years agoFix memory leak in pack_backend__free
Sergey Nikishin [Wed, 27 Apr 2011 13:30:45 +0000 (17:30 +0400)]
Fix memory leak in pack_backend__free

13 years agoFix tree-entry attribute convertion (fix corrupted trees)
Sergey Nikishin [Tue, 26 Apr 2011 09:22:45 +0000 (13:22 +0400)]
Fix tree-entry attribute convertion (fix corrupted trees)

Magic constant replaced by direct to-string covertion because of:
1) with value length 6 (040000 - subtree) final tree will be corrupted;
2) for wrong values length <6 final tree will be corrupted too.

13 years agoFix -Wunused-but-set-variable warnings
schu [Tue, 26 Apr 2011 09:29:05 +0000 (11:29 +0200)]
Fix -Wunused-but-set-variable warnings

As of gcc 4.6 -Wall includes -Wunused-but-set-variable. Use GIT_UNUSED
or remove actually unused variables to prevent those warnings.

13 years agoMerged pull request #115 from jpfender/index-flags.
Vicent Martí [Sat, 23 Apr 2011 21:39:04 +0000 (14:39 -0700)]
Merged pull request #115 from jpfender/index-flags.

index.h: Add IDXENTRY flags needed for index operations

13 years agoMerged pull request #135 from carlosmn/valgrind.
Vicent Martí [Sat, 23 Apr 2011 21:37:56 +0000 (14:37 -0700)]
Merged pull request #135 from carlosmn/valgrind.

Fix memory leaks in the tests

13 years agoMerged pull request #139 from jpfender/merge-head-file.
Vicent Martí [Sat, 23 Apr 2011 21:36:01 +0000 (14:36 -0700)]
Merged pull request #139 from jpfender/merge-head-file.

refs: Allow MERGE_HEAD in normalize_name()

13 years agoindex: Refactor add/replace methods
Vicent Marti [Sat, 23 Apr 2011 21:31:43 +0000 (00:31 +0300)]
index: Refactor add/replace methods

Removed the optional `replace` argument, we now have 4 add methods:

`git_index_add`: add or update from path
`git_index_add2`: add or update from struct
`git_index_append`: add without replacing from path
`git_index_append2`: add without replacing from struct

Yes, this breaks the bindings.

13 years agoMerged pull request #140 from jpfender/insert-replace.
Vicent Martí [Sat, 23 Apr 2011 21:08:17 +0000 (14:08 -0700)]
Merged pull request #140 from jpfender/insert-replace.

index: Allow user to toggle whether to replace an index entry

13 years agoMerged pull request #143 from nordsturm/fix_loop.
Vicent Martí [Sat, 23 Apr 2011 21:01:01 +0000 (14:01 -0700)]
Merged pull request #143 from nordsturm/fix_loop.

Fix going into infinite loop in read_header_loose()

13 years agoFix conversion warning in MSVC
Vicent Marti [Sat, 23 Apr 2011 20:59:38 +0000 (23:59 +0300)]
Fix conversion warning in MSVC

13 years agoFix going into infinite loop in read_header_loose()
Sergey Nikishin [Fri, 22 Apr 2011 13:36:28 +0000 (17:36 +0400)]
Fix going into infinite loop in read_header_loose()

read_header_loose causes infinite loop on this file:
$ cat ../libcppgit/bin/sample-repo/test_mailbox/.git/objects/8f/e274605cbc740a2a957f44b2722a8a73915a09 | base64
eAErKUpNVTAzYzA0MDAzMVHISUxKzSlmWLgkuyN5+rxr6juMPR2EmN8s7Vl9D6oiN7UkkcHJdLbl
7Z3N/oxfE0W8wrSbuFRkAwDFfBn1

13 years agoMerged pull request #138 from trentm/development.
Vicent Martí [Thu, 21 Apr 2011 22:22:37 +0000 (15:22 -0700)]
Merged pull request #138 from trentm/development.

fix solaris build
---
Before this patch the build failure looked like:

...
../../deps/zlib/inffast.c: In function `inflate_fast':
../../deps/zlib/inffast.c:324: warning: visibility attribute not supported in this configuration; ignored
[34/38] c: src/revwalk.c -> build/shared/src/revwalk.c.0.o
../../deps/zlib/inftrees.c: In function `inflate_table':
../../deps/zlib/inftrees.c:330: warning: visibility attribute not supported in this configuration; ignored
[35/38] c: deps/zlib/zutil.c -> build/shared/deps/zlib/zutil.c.0.o
[36/38] c: deps/zlib/trees.c -> build/shared/deps/zlib/trees.c.0.o
../../deps/zlib/zutil.c: In function `zcalloc':
../../deps/zlib/zutil.c:308: warning: visibility attribute not supported in this configuration; ignored
../../deps/zlib/zutil.c: In function `zcfree':
../../deps/zlib/zutil.c:316: warning: visibility attribute not supported in this configuration; ignored
../../deps/zlib/trees.c:1244: warning: visibility attribute not supported in this configuration; ignored
../../deps/zlib/trees.c:1244: warning: visibility attribute not supported in this configuration; ignored
../../deps/zlib/trees.c: In function `_tr_init':
../../deps/zlib/trees.c:410: warning: visibility attribute not supported in this configuration; ignored
../../deps/zlib/trees.c: In function `_tr_align':
../../deps/zlib/trees.c:919: warning: visibility attribute not supported in this configuration; ignored
../../deps/zlib/trees.c: In function `_tr_stored_block':
../../deps/zlib/trees.c:883: warning: visibility attribute not supported in this configuration; ignored

../../deps/zlib/trees.c: In function `_tr_flush_block':
../../deps/zlib/trees.c:1020: warning: visibility attribute not supported in this configuration; ignored
../../deps/zlib/trees.c: In function `_tr_tally':
../../deps/zlib/trees.c:1071: warning: visibility attribute not supported in this configuration; ignored
[37/38] cshlib: build/shared/src/blob.c.0.o build/shared/src/cache.c.0.o build/shared/src/commit.c.0.o build/shared/src/delta-apply.c.0.o build/shared/src/errors.c.0.o build/shared/src/filebuf.c.0.o build/shared/src/fileops.c.0.o build/shared/src/hash.c.0.o build/shared/src/hashtable.c.0.o build/shared/src/index.c.0.o build/shared/src/object.c.0.o build/shared/src/odb.c.0.o build/shared/src/odb_loose.c.0.o build/shared/src/odb_pack.c.0.o build/shared/src/oid.c.0.o build/shared/src/pqueue.c.0.o build/shared/src/refs.c.0.o build/shared/src/repository.c.0.o build/shared/src/revwalk.c.0.o build/shared/src/signature.c.0.o build/shared/src/tag.c.0.o build/shared/src/thread-utils.c.0.o build/shared/src/tree.c.0.o build/shared/src/util.c.0.o build/shared/src/vector.c.0.o build/shared/src/unix/map.c.0.o build/shared/src/backends/hiredis.c.0.o build/shared/src/backends/sqlite.c.0.o build/shared/deps/zlib/adler32.c.0.o build/shared/deps/zlib/deflate.c.0.o build/shared/deps/zlib/inffast.c.0.o build/shared/deps/zlib/inflate.c.0.o build/shared/deps/zlib/inftrees.c.0.o build/shared/deps/zlib/trees.c.0.o build/shared/deps/zlib/zutil.c.0.o build/shared/src/block-sha1/sha1.c.0.o -> build/shared/libgit2.so
ld: fatal: relocation error: R_386_GOTOFF: file deps/zlib/deflate.c.0.o: symbol zcfree: a GOT relative relocation must reference a local symbol
ld: fatal: relocation error: R_386_GOTOFF: file deps/zlib/deflate.c.0.o: symbol zcalloc: a GOT relative relocation must reference a local symbol
ld: fatal: relocation error: R_386_GOTOFF: file deps/zlib/deflate.c.0.o: symbol _length_code: a GOT relative relocation must reference a local symbol
ld: fatal: relocation error: R_386_GOTOFF: file deps/zlib/deflate.c.0.o: symbol _dist_code: a GOT relative relocation must reference a local symbol
ld: fatal: relocation error: R_386_GOTOFF: file deps/zlib/deflate.c.0.o: symbol _length_code: a GOT relative relocation must reference a local symbol
ld: fatal: relocation error: R_386_GOTOFF: file deps/zlib/deflate.c.0.o: symbol _dist_code: a GOT relative relocation must reference a local symbol
ld: fatal: relocation error: R_386_GOTOFF: file deps/zlib/deflate.c.0.o: symbol _dist_code: a GOT relative relocation must reference a local symbol
ld: fatal: relocation error: R_386_GOTOFF: file deps/zlib/deflate.c.0.o: symbol _length_code: a GOT relative relocation must reference a local symbol
ld: fatal: relocation error: R_386_GOTOFF: file deps/zlib/deflate.c.0.o: symbol _dist_code: a GOT relative relocation must reference a local symbol
ld: fatal: relocation error: R_386_GOTOFF: file deps/zlib/deflate.c.0.o: symbol _dist_code: a GOT relative relocation must reference a local symbol
collect2: ld returned 1 exit status
Waf: Leaving directory `/home/node/src/libgit2/build/shared'
Build failed
 -> task failed (exit status 1):
        {task 138650764: cshlib blob.c.0.o,cache.c.0.o,commit.c.0.o,delta-apply.c.0.o,errors.c.0.o,filebuf.c.0.o,fileops.c.0.o,hash.c.0.o,hashtable.c.0.o,index.c.0.o,object.c.0.o,odb.c.0.o,odb_loose.c.0.o,odb_pack.c.0.o,oid.c.0.o,pqueue.c.0.o,refs.c.0.o,repository.c.0.o,revwalk.c.0.o,signature.c.0.o,tag.c.0.o,thread-utils.c.0.o,tree.c.0.o,util.c.0.o,vector.c.0.o,map.c.0.o,hiredis.c.0.o,sqlite.c.0.o,adler32.c.0.o,deflate.c.0.o,inffast.c.0.o,inflate.c.0.o,inftrees.c.0.o,trees.c.0.o,zutil.c.0.o,sha1.c.0.o -> libgit2.so}
['/home/node/local/bin/gcc', '', 'src/blob.c.0.o', 'src/cache.c.0.o', 'src/commit.c.0.o', 'src/delta-apply.c.0.o', 'src/errors.c.0.o', 'src/filebuf.c.0.o', 'src/fileops.c.0.o', 'src/hash.c.0.o', 'src/hashtable.c.0.o', 'src/index.c.0.o', 'src/object.c.0.o', 'src/odb.c.0.o', 'src/odb_loose.c.0.o', 'src/odb_pack.c.0.o', 'src/oid.c.0.o', 'src/pqueue.c.0.o', 'src/refs.c.0.o', 'src/repository.c.0.o', 'src/revwalk.c.0.o', 'src/signature.c.0.o', 'src/tag.c.0.o', 'src/thread-utils.c.0.o', 'src/tree.c.0.o', 'src/util.c.0.o', 'src/vector.c.0.o', 'src/unix/map.c.0.o', 'src/backends/hiredis.c.0.o', 'src/backends/sqlite.c.0.o', 'deps/zlib/adler32.c.0.o', 'deps/zlib/deflate.c.0.o', 'deps/zlib/inffast.c.0.o', 'deps/zlib/inflate.c.0.o', 'deps/zlib/inftrees.c.0.o', 'deps/zlib/trees.c.0.o', 'deps/zlib/zutil.c.0.o', 'src/block-sha1/sha1.c.0.o', '-o', '', '/home/node/src/libgit2/build/shared/libgit2.so', '-Wl,-Bstatic', '-Wl,-Bdynamic', '-shared', '-Wl,-h,libgit2.so.0']
...

If helpful, here is the equivalent error with varnish: http://www.varnish-cache.org/trac/ticket/852
and the autoconf/configure handling for the equivalent in python: http://hg.python.org/cpython/file/96e0e79d33de/Modules/zlib/configure#l513

So a better fix would probably be to reproduce that configure logic (see similar in the Varnish patch) ... but I'm not sure if shelling out to the C compiler (however waf spells that) is wanted in wscript here.

It would be great to have a libgit2 release with the quicker fix for Solaris. My actual issue is with building node-gitteh.

Thanks,
Trent

13 years agoMerged pull request #142 from potyl/development.
Vicent Martí [Thu, 21 Apr 2011 22:20:46 +0000 (15:20 -0700)]
Merged pull request #142 from potyl/development.

LIBGIT2_VER_MINOR now matches LIBGIT2_VERSION (0.11.0)
---
LIBGIT2_VER_MINOR was left at 10 instead of 11.

13 years agoLIBGIT2_VER_MINOR now matches LIBGIT2_VERSION (0.11.0)
Emmanuel Rodriguez [Thu, 21 Apr 2011 19:21:44 +0000 (21:21 +0200)]
LIBGIT2_VER_MINOR now matches LIBGIT2_VERSION (0.11.0)

LIBGIT2_VER_MINOR was left at 10 instead of 11.

13 years agoindex: Allow user to toggle whether to replace an index entry
Jakob Pfender [Thu, 21 Apr 2011 08:40:54 +0000 (10:40 +0200)]
index: Allow user to toggle whether to replace an index entry

When in the middle of a merge, the index needs to contain several files
with the same name. git_index_insert() used to prevent this by not adding a new entry if an entry with the same name already existed.

13 years agorefs: Allow MERGE_HEAD in normalize_name()
Jakob Pfender [Thu, 21 Apr 2011 08:38:37 +0000 (10:38 +0200)]
refs: Allow MERGE_HEAD in normalize_name()

Do not return with EINVALIDREFNAME when trying to normalize MERGE_HEAD's
name.

13 years agofix solaris build
Trent Mick [Thu, 21 Apr 2011 05:25:30 +0000 (22:25 -0700)]
fix solaris build

Before this patch the build failure looked like:
    ...
    ../../deps/zlib/inftrees.c:330: warning: visibility attribute not supported in this configuration; ignored
    ...
    ld: fatal: relocation error: R_386_GOTOFF: file deps/zlib/deflate.c.0.o: symbol zcfree: a GOT relative relocation must reference a local symbol
    ...

13 years agoForce position independent code in Linux
Vicent Marti [Fri, 15 Apr 2011 22:58:43 +0000 (01:58 +0300)]
Force position independent code in Linux

13 years agoClose file descriptor when writing a blob
Vicent Marti [Fri, 15 Apr 2011 17:32:31 +0000 (20:32 +0300)]
Close file descriptor when writing a blob

13 years agoRefresh the list of packfiles on each ODB query
Vicent Marti [Fri, 15 Apr 2011 12:12:37 +0000 (15:12 +0300)]
Refresh the list of packfiles on each ODB query

Fixes the issue where object lookups were failing right after a pull on
an open repository.

13 years agoClose an object in packed_find_peel
Carlos Martín Nieto [Wed, 13 Apr 2011 19:57:35 +0000 (21:57 +0200)]
Close an object in packed_find_peel

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
13 years agotests: free the test suite name
Carlos Martín Nieto [Wed, 13 Apr 2011 19:55:43 +0000 (21:55 +0200)]
tests: free the test suite name

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
13 years agotests: don't leak objects
Carlos Martín Nieto [Wed, 13 Apr 2011 15:44:08 +0000 (17:44 +0200)]
tests: don't leak objects

If we don't create any leaks in the tests, we can use them to search
for leaks in the implementation.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
13 years agoAdd `git_tag_list`
Vicent Marti [Tue, 12 Apr 2011 22:52:34 +0000 (15:52 -0700)]
Add `git_tag_list`

Lists all the tag references in a repository using a custom callback.
Includes unit tests courtesy of Emeric Fermas <3

13 years agomerge branch development
Jakob Pfender [Mon, 11 Apr 2011 10:38:50 +0000 (12:38 +0200)]
merge branch development

13 years agoFix path normalization tests
Vicent Marti [Sun, 10 Apr 2011 22:25:41 +0000 (15:25 -0700)]
Fix path normalization tests

They were backtracking too deep into the filesystem on Linux, where the
tests were running directly on `tmp/`.

13 years agoUse Z_BEST_SPEED for filebuf deflating
Vicent Marti [Sun, 10 Apr 2011 19:23:55 +0000 (12:23 -0700)]
Use Z_BEST_SPEED for filebuf deflating

This is what Git uses by default for all deflating.

13 years agoImport 'with' from __future__ in the build script
Vicent Marti [Sun, 10 Apr 2011 00:45:38 +0000 (17:45 -0700)]
Import 'with' from __future__ in the build script

13 years agoFix `time_t` conversion on Win32
Vicent Marti [Sat, 9 Apr 2011 23:16:09 +0000 (16:16 -0700)]
Fix `time_t` conversion on Win32

13 years agoFix `gmtime` issues in Win32
Vicent Marti [Sat, 9 Apr 2011 23:06:17 +0000 (16:06 -0700)]
Fix `gmtime` issues in Win32

13 years agoRename `git_signature_new_now`
Vicent Marti [Sat, 9 Apr 2011 22:31:12 +0000 (15:31 -0700)]
Rename `git_signature_new_now`

The new name is more cool.

13 years agoAdd API git_signature_new_now
Carlos Martín Nieto [Tue, 5 Apr 2011 14:15:54 +0000 (16:15 +0200)]
Add API git_signature_new_now

Most tags will have a timestamp of whenever the code is running and
dealing with time and timezones is error-prone. Optimize for this case
by adding a function which causes the signature to be created with a
current timestamp.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
13 years agoFix the signature documentation
Carlos Martín Nieto [Thu, 7 Apr 2011 11:27:34 +0000 (13:27 +0200)]
Fix the signature documentation

The parameters are given by '@param name' and not '@name'.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
13 years agoAdd a few malloc checks
Carlos Martín Nieto [Thu, 7 Apr 2011 12:38:03 +0000 (14:38 +0200)]
Add a few malloc checks

Add checks to see if malloc failed when allocating the tag members and
signature members.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
13 years agoAdd two new accessors to the repository
nulltoken [Sat, 9 Apr 2011 13:49:44 +0000 (15:49 +0200)]
Add two new accessors to the repository

git_repository_path() and git_repository_workdir() respectively return the path to the git repository and the working directory. Those paths are absolute and normalized.

13 years agoProperly check `strtol` for errors
Vicent Marti [Sat, 9 Apr 2011 22:22:11 +0000 (15:22 -0700)]
Properly check `strtol` for errors

We are now using a custom `strtol` implementation to make sure we're not
missing any overflow errors.

13 years agoDo not declare variables in the middle of a func
Vicent Marti [Fri, 8 Apr 2011 22:35:25 +0000 (15:35 -0700)]
Do not declare variables in the middle of a func

13 years agoAdd new method `git_repository_is_empty`
Vicent Marti [Fri, 8 Apr 2011 19:42:18 +0000 (12:42 -0700)]
Add new method `git_repository_is_empty`

13 years agoRemove unused variables from test files
Vicent Marti [Fri, 8 Apr 2011 19:41:17 +0000 (12:41 -0700)]
Remove unused variables from test files

13 years agorefs: Fix issue when packing weak tags
Vicent Marti [Fri, 8 Apr 2011 19:14:33 +0000 (12:14 -0700)]
refs: Fix issue when packing weak tags

Weak tags (e.g. tags that point directly to a normal object instead of a
tag object) were failing to be packed.

13 years agotag: don't check twice if an object exists
Carlos Martín Nieto [Wed, 6 Apr 2011 09:59:40 +0000 (11:59 +0200)]
tag: don't check twice if an object exists

Remove the check in git_tag_create_frombuffer as it's done by
tag_create already.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
13 years agotag: don't allow tags to non-existent objects
Carlos Martín Nieto [Wed, 6 Apr 2011 08:58:14 +0000 (10:58 +0200)]
tag: don't allow tags to non-existent objects

These indicate an inconsistency in the repository which we've created,
so don't allow them.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
13 years agotag: discover the target type if needed
Carlos Martín Nieto [Tue, 5 Apr 2011 14:53:32 +0000 (16:53 +0200)]
tag: discover the target type if needed

Don't blindly pass the target type to git_tag_type2string as it will
give an empty string on GIT_OBJ_ANY which would cause us to create an
invalid tag object.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
13 years agoindex.h: Add IDXENTRY flags needed for index operations
Jakob Pfender [Mon, 4 Apr 2011 14:20:09 +0000 (16:20 +0200)]
index.h: Add IDXENTRY flags needed for index operations

Add several IDXENTRY flags that need to be checked in
order to properly implement update-index --refresh.

13 years agoAdded git_commit_tree_oid and git_commit_parent_oid.
Sam [Wed, 6 Apr 2011 00:48:31 +0000 (10:48 +1000)]
Added git_commit_tree_oid and git_commit_parent_oid.

13 years agofix git_treebuilder_insert probrem.
Shuhei Tanuma [Tue, 5 Apr 2011 17:22:24 +0000 (02:22 +0900)]
fix git_treebuilder_insert probrem.

couldn't add new entry when inserting new one with `git_treebuilder_insert`.

13 years agoDo not assert error codes on Hiredis backend
Vicent Marti [Fri, 8 Apr 2011 00:28:38 +0000 (03:28 +0300)]
Do not assert error codes on Hiredis backend

We cannot assume that Redis is never going to return an error code; when
Reddit fails, we cannot crash our library, we need to handle the crash
gracefully.

Signed-off-by: Vicent Marti <tanoku@gmail.com>
13 years agoredis backend
Dmitry Kovega [Sun, 3 Apr 2011 17:43:51 +0000 (21:43 +0400)]
redis backend

13 years agoindex.c: Correctly check whether index contains extended entries
Jakob Pfender [Thu, 7 Apr 2011 14:58:42 +0000 (16:58 +0200)]
index.c: Correctly check whether index contains extended entries

Although write_index() supports writing extended header versions for
index, this was never done as there was no check for extended index
entries.

Introduce function is_index_extended() that checks whether an index
contains extended entries and check whether an index is extended before
writing it to disk, adjusting its version number if necessary.

13 years agoindex.h: Correct values for extended flags
Jakob Pfender [Thu, 7 Apr 2011 14:53:50 +0000 (16:53 +0200)]
index.h: Correct values for extended flags

As libgit2 separates an index entry's 32-bit flag into two 16-bit values
flags and flags_extended, the values of flags_extended need to be
adjusted.

13 years agoMerge branch 'development' into index-flags
Jakob Pfender [Tue, 5 Apr 2011 08:57:41 +0000 (10:57 +0200)]
Merge branch 'development' into index-flags

13 years agoBuild & write custom trees in memory
Vicent Marti [Mon, 4 Apr 2011 16:24:19 +0000 (19:24 +0300)]
Build & write custom trees in memory

13 years agoindex.h: Add IDXENTRY flags needed for index operations
Jakob Pfender [Mon, 4 Apr 2011 14:20:09 +0000 (16:20 +0200)]
index.h: Add IDXENTRY flags needed for index operations

Add several IDXENTRY flags that need to be checked in
order to properly implement update-index --refresh.

13 years agoMake reinitializing a repository return GIT_ENOTIMPLEMENTED instead of GIT_SUCCESS
nulltoken [Sun, 3 Apr 2011 16:31:45 +0000 (18:31 +0200)]
Make reinitializing a repository return GIT_ENOTIMPLEMENTED instead of GIT_SUCCESS

13 years agoFix tag reference name in testrepo.git
nulltoken [Sun, 3 Apr 2011 11:50:09 +0000 (13:50 +0200)]
Fix tag reference name in testrepo.git

The git test repository was holding a wrongly named tag reference ("very-simple") pointing at a tag named "e90810b".
This mistake (mine :-/ ) originates back to https://github.com/libgit2/libgit2/commit/9282e92

Whole credit goes to @tclem for having spotted this.

13 years agoAdd a fake wstream to the ODB
Vicent Marti [Mon, 4 Apr 2011 10:05:20 +0000 (13:05 +0300)]
Add a fake wstream to the ODB

Streaming writes will no longer fail when writing to a backend that
doesn't support streaming writes but supports direct ones.
Now we create a fake stream on memory and then write it as a single
block using the backend `write` callback.

13 years agoFix the git_tree_write implementation
Vicent Marti [Mon, 4 Apr 2011 09:14:03 +0000 (12:14 +0300)]
Fix the git_tree_write implementation

13 years agoNew external API method: `git_tree_create`
Sarath Lakshman [Sun, 3 Apr 2011 11:48:56 +0000 (17:18 +0530)]
New external API method: `git_tree_create`

Creates a tree by scanning the index file. The method handles recursive
creation of trees for subdirectories and adds them to the parent tree.

13 years agoMerge branch 'tagging' of https://github.com/nulltoken/libgit2 into development
Vicent Marti [Sat, 2 Apr 2011 09:49:14 +0000 (12:49 +0300)]
Merge branch 'tagging' of https://github.com/nulltoken/libgit2 into development

Conflicts:
include/git2/tag.h
src/tag.c

13 years agoChange `parse` methods to const buffer
Vicent Marti [Sat, 2 Apr 2011 09:42:04 +0000 (12:42 +0300)]
Change `parse` methods to const buffer

Signed-off-by: Vicent Marti <tanoku@gmail.com>