src


Log

Author Commit Date CI Message
kelly.leahy 16a5c304 2011-05-08T12:32:35 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).
Carlos Martín Nieto d8e1d038 2011-05-06T12:47:21 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>
Vicent Martí cc3b82e3 2011-05-02T15:29:50 Merge pull request #151 from carlosmn/root-commit. Support root commits
Vicent Martí fde97669 2011-05-02T15:26:16 Merge pull request #146 from nordsturm/fix_subtrees. Fix tree-entry attribute convertion (fix corrupted trees)
Vicent Marti 1648fbd3 2011-05-02T01:12:53 Re-apply missing patches
Vicent Martí d4ad0771 2011-05-01T14:59:50 Merge pull request #145 from schu/fix-unused-warnings. Fix -Wunused-but-set-variable warnings
Vicent Martí 273c8bc0 2011-05-01T14:59:11 Merge pull request #147 from nordsturm/fix_pack_backend_leak. Fix memory leak in pack_backend__free
Vicent Marti c7b79af3 2011-05-01T21:31:58 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.
Carlos Martín Nieto 8381238e 2011-04-27T14:59:59 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>
Carlos Martín Nieto 68a146c1 2011-04-29T11:45:42 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>
Sergey Nikishin ed6c462c 2011-04-27T17:30:45 Fix memory leak in pack_backend__free
Sergey Nikishin 555ce568 2011-04-26T13:22:45 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.
schu 402a47a7 2011-04-26T11:29:05 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.
Vicent Martí 7df49e9e 2011-04-23T14:36:01 Merged pull request #139 from jpfender/merge-head-file. refs: Allow MERGE_HEAD in normalize_name()
Vicent Marti f7a5058a 2011-04-24T00:31:43 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.
Vicent Martí f16c0a9d 2011-04-23T14:08:17 Merged pull request #140 from jpfender/insert-replace. index: Allow user to toggle whether to replace an index entry
Vicent Martí 5ba7c4cb 2011-04-23T14:01:01 Merged pull request #143 from nordsturm/fix_loop. Fix going into infinite loop in read_header_loose()
Vicent Marti 1d008781 2011-04-23T23:59:38 Fix conversion warning in MSVC
Sergey Nikishin a3ced637 2011-04-22T17:36:28 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
Jakob Pfender 729b6f49 2011-04-21T10:40:54 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.
Jakob Pfender df30eac1 2011-04-21T10:38:37 refs: Allow MERGE_HEAD in normalize_name() Do not return with EINVALIDREFNAME when trying to normalize MERGE_HEAD's name.
Vicent Marti 2571cc3c 2011-04-15T20:32:31 Close file descriptor when writing a blob
Vicent Marti 90d743cd 2011-04-15T15:12:37 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.
Carlos Martín Nieto 1bfa053e 2011-04-13T21:57:35 Close an object in packed_find_peel Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Vicent Marti def3fef1 2011-04-12T15:52:34 Add `git_tag_list` Lists all the tag references in a repository using a custom callback. Includes unit tests courtesy of Emeric Fermas <3
Jakob Pfender 1eb0f68e 2011-04-11T12:38:50 merge branch development
Vicent Marti a6359408 2011-04-10T12:23:55 Use Z_BEST_SPEED for filebuf deflating This is what Git uses by default for all deflating.
Vicent Marti 53b7560b 2011-04-09T16:16:09 Fix `time_t` conversion on Win32
Vicent Marti 14eb94ee 2011-04-09T16:06:17 Fix `gmtime` issues in Win32
Vicent Marti 8416c9ad 2011-04-09T15:31:12 Rename `git_signature_new_now` The new name is more cool.
Carlos Martín Nieto 9e9e6ae1 2011-04-05T16:15:54 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>
Carlos Martín Nieto 076141a1 2011-04-07T14:38:03 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>
nulltoken 4a34b3a9 2011-04-09T15:49:44 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.
Vicent Marti c6e65aca 2011-04-09T15:22:11 Properly check `strtol` for errors We are now using a custom `strtol` implementation to make sure we're not missing any overflow errors.
Vicent Marti 41233c40 2011-04-08T12:42:18 Add new method `git_repository_is_empty`
Vicent Marti d79f1da6 2011-04-08T12:14:33 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.
Carlos Martín Nieto 6ac247b3 2011-04-06T11:59:40 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>
Carlos Martín Nieto 7bc66a79 2011-04-06T10:58:14 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>
Carlos Martín Nieto 81234673 2011-04-05T16:53:32 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>
Sam 5924b282 2011-04-06T10:48:31 Added git_commit_tree_oid and git_commit_parent_oid.
Shuhei Tanuma 98ac6780 2011-04-06T02:22:24 fix git_treebuilder_insert probrem. couldn't add new entry when inserting new one with `git_treebuilder_insert`.
Vicent Marti 5868cd02 2011-04-08T03:28:38 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>
Dmitry Kovega 8a64bc29 2011-04-03T21:43:51 redis backend
Jakob Pfender fd279b26 2011-04-07T16:58:42 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.
Vicent Marti 0ad6efa1 2011-04-04T19:24:19 Build & write custom trees in memory
nulltoken b153589b 2011-04-03T18:31:45 Make reinitializing a repository return GIT_ENOTIMPLEMENTED instead of GIT_SUCCESS
Vicent Marti d69d0185 2011-04-04T13:05:20 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.
Vicent Marti 29e1789b 2011-04-04T12:14:03 Fix the git_tree_write implementation
Sarath Lakshman 47d8ec56 2011-04-03T17:18:56 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.
Vicent Marti 3e3e4631 2011-04-02T12:49:14 Merge branch 'tagging' of https://github.com/nulltoken/libgit2 into development Conflicts: include/git2/tag.h src/tag.c
Vicent Marti 720d5472 2011-04-02T12:42:04 Change `parse` methods to const buffer Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti d8ad64d3 2011-04-02T12:28:35 Merge branch 'parse-tag-buffer' of https://github.com/carlosmn/libgit2 into development
nulltoken ac26e245 2011-03-30T23:46:54 Rename git_tag_create_o_f() to git_tag_create_fo()
nulltoken 9e680bcc 2011-03-30T23:26:36 Add git_tag_delete()
nulltoken a50c1458 2011-03-30T23:16:30 Add git_tag_create_o_f() and git_tag_create_f() which overwrite existing tag reference, if any
nulltoken bf4c39f9 2011-03-30T22:30:55 Prevent tag_create() from creating a conflicting reference
Carlos Martín Nieto 83c95128 2011-03-24T14:15:00 normalize_name: allow more references under refs/ Allow any well-formed reference name to live under refs/ removing the condition that they be under refs/{heads,tags,remotes}/ as was the design of git. An exception is made for HEAD which is allowed to contain an OID reference in detached HEAD state. Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Vicent Marti 9a53df7e 2011-03-29T19:40:02 refs: Don't allow references to inexistent OIDs
Vicent Marti 95cde17c 2011-03-29T19:22:21 Enforce coding conventions in refs.c Internal methods are static and without the git prefix. 'Force' methods have a `_f` prefix to match the other 'force' methods.
Carlos Martín Nieto dad4a4d5 2011-03-29T10:47:48 rename: don't return early if the target ref exists Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Carlos Martín Nieto fa204962 2011-03-28T12:00:50 Allow forcing the creation or renaming of references Add internal reference create and rename functions which take a force parameter, telling them to overwrite an existing reference if it exists. These functions try to update the reference if it's of the same type as the one it's going to be replaced by. Otherwise the old reference becomes invalid. Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Carlos Martín Nieto baad182c 2011-03-28T11:31:58 Add GIT_EEXISTS error code Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Vicent Marti 483526eb 2011-03-28T22:23:44 Update the SQLite backend
schu 683581a3 2011-03-28T17:59:13 index.c: Fix tiny typos
Carlos Martín Nieto 7b4a16e2 2011-03-28T13:59:48 Add git_tag_create_frombuffer API Expose the tag parsing capabilities already present in the library. Exporting this function makes it possible to implement the mktag command without duplicating this functionality. Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Carlos Martín Nieto c15e0db5 2011-03-28T13:58:44 Fix memory leak in parse_tag_buffer Free the allocated memory if the signature parsing reports an error. Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Vicent Marti 09e8de0f 2011-03-25T23:53:38 New external API method: `git_reference_listcb` List all the references in the repository, calling a custom callback for each one. The listed references may be filtered by type, or using a bitwise OR of several types. Use the magic value `GIT_REF_LISTALL` to obtain all references, including packed ones. The `callback` function will be called for each of the references in the repository, and will receive the name of the reference and the `payload` value passed to this method.
Jakob Pfender 3bdc0d4c 2011-03-24T15:32:24 index.c: Read index after initialization The current behaviour of git_index_open{bare,inrepo}() is unexpected. When an index is opened, an in-memory index object is created that is linked to the index discovered by git_repository_open(). However, this index object is empty, as the on-disk index is not read. To fully open the on-disk index file, git_index_read() has to be called. This leads to confusing behaviour. Consider the following code: git_index *idx; git_index_open_inrepo(&idx, repo); git_index_write(idx); You would expect this to have no effect, as the index is never ostensibly manipulated. However, what actually happens is that the index entries are removed from the on-disk index because the empty in-memory index object created by open_inrepo() is written back to the disk. This patch reads the index after opening it.
Vicent Marti f6f72d7e 2011-03-23T18:44:53 Improve the ODB writing backend Temporary files when doing streaming writes are now stored inside the Objects folder, to prevent issues when moving files between disks/partitions. Add support for block writes to the ODB again (for those backends that cannot implement streaming).
Vicent Marti 7c80c19e 2011-03-23T01:58:18 Fix compilation in MinGW
nulltoken 2b861d75 2011-03-19T08:31:40 Add detection of incorrect usage to git__joinpath()
nulltoken 3644e98f 2011-03-18T19:10:36 Fix detection of attempt to escape the root directory on Windows
nulltoken c90292ce 2011-03-18T16:56:43 Change gitfo_prettify_dir_path() and gitfo_prettify_file_path() behavior Those functions now return prettified rooted path.
nulltoken 6279abda 2011-03-17T06:56:58 Make gitfo_prettify_dir_path() and gitfo_prettify_file_path() no longer externalized
nulltoken 677a3c07 2011-03-15T22:07:01 Add failing test for issue 84 see https://github.com/libgit2/libgit2/issues#issue/84
nulltoken ae6ba7f7 2011-03-22T19:45:01 Fix gitfo_mv() behavior when running on Windows When the system temporary folder is located on a different volume than the working directory into which libgit2 is executing, MoveFileEx() requires an additional flag.
nulltoken 56d8ca26 2011-03-20T18:36:25 Switch from time_t to git_time_t git_time_t is defined as a signed 64 integer. This allows a true predictable multiplatform behavior.
Vicent Marti 21d73e71 2011-03-22T20:26:01 Always free the parents of a revwalk commit Thanks to Carlos Martín Nieto for spotting this.
Vicent Marti 1881f078 2011-03-21T20:28:02 Add getters for `git_odb_object`
Vicent Marti b932ef5b 2011-03-21T19:44:43 Fix MSVC warnings when building threads
Carlos Martín Nieto 567fc1d2 2011-03-22T12:47:53 refs loose_lookup: also free the buffer on success Free the ref_file buffer at the end of the function also on success. This fixes a small memory leak.
Vicent Marti 99baacfb 2011-03-21T19:27:45 Fix MSVC warnings
Vicent Marti 72a3fe42 2011-03-18T19:38:49 I broke your bindings Hey. Apologies in advance -- I broke your bindings. This is a major commit that includes a long-overdue redesign of the whole object-database structure. This is expected to be the last major external API redesign of the library until the first non-alpha release. Please get your bindings up to date with these changes. They will be included in the next minor release. Sorry again! Major features include: - Real caching and refcounting on parsed objects - Real caching and refcounting on objects read from the ODB - Streaming writes & reads from the ODB - Single-method writes for all object types - The external API is now partially thread-safe The speed increases are significant in all aspects, specially when reading an object several times from the ODB (revwalking) and when writing big objects to the ODB. Here's a full changelog for the external API: blob.h ------ - Remove `git_blob_new` - Remove `git_blob_set_rawcontent` - Remove `git_blob_set_rawcontent_fromfile` - Rename `git_blob_writefile` -> `git_blob_create_fromfile` - Change `git_blob_create_fromfile`: The `path` argument is now relative to the repository's working dir - Add `git_blob_create_frombuffer` commit.h -------- - Remove `git_commit_new` - Remove `git_commit_add_parent` - Remove `git_commit_set_message` - Remove `git_commit_set_committer` - Remove `git_commit_set_author` - Remove `git_commit_set_tree` - Add `git_commit_create` - Add `git_commit_create_v` - Add `git_commit_create_o` - Add `git_commit_create_ov` tag.h ----- - Remove `git_tag_new` - Remove `git_tag_set_target` - Remove `git_tag_set_name` - Remove `git_tag_set_tagger` - Remove `git_tag_set_message` - Add `git_tag_create` - Add `git_tag_create_o` tree.h ------ - Change `git_tree_entry_2object`: New signature is `(git_object **object_out, git_repository *repo, git_tree_entry *entry)` - Remove `git_tree_new` - Remove `git_tree_add_entry` - Remove `git_tree_remove_entry_byindex` - Remove `git_tree_remove_entry_byname` - Remove `git_tree_clearentries` - Remove `git_tree_entry_set_id` - Remove `git_tree_entry_set_name` - Remove `git_tree_entry_set_attributes` object.h ------------ - Remove `git_object_new - Remove `git_object_write` - Change `git_object_close`: This method is now *mandatory*. Not closing an object causes a memory leak. odb.h ----- - Remove type `git_rawobj` - Remove `git_rawobj_close` - Rename `git_rawobj_hash` -> `git_odb_hash` - Change `git_odb_hash`: New signature is `(git_oid *id, const void *data, size_t len, git_otype type)` - Add type `git_odb_object` - Add `git_odb_object_close` - Change `git_odb_read`: New signature is `(git_odb_object **out, git_odb *db, const git_oid *id)` - Change `git_odb_read_header`: New signature is `(size_t *len_p, git_otype *type_p, git_odb *db, const git_oid *id)` - Remove `git_odb_write` - Add `git_odb_open_wstream` - Add `git_odb_open_rstream` odb_backend.h ------------- - Change type `git_odb_backend`: New internal signatures are as follows int (* read)(void **, size_t *, git_otype *, struct git_odb_backend *, const git_oid *) int (* read_header)(size_t *, git_otype *, struct git_odb_backend *, const git_oid *) int (* writestream)(struct git_odb_stream **, struct git_odb_backend *, size_t, git_otype) int (* readstream)( struct git_odb_stream **, struct git_odb_backend *, const git_oid *) - Add type `git_odb_stream` - Add enum `git_odb_streammode` Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti bb3de0c4 2011-03-16T21:35:51 Thread safe cache
Vicent Marti b5c5f0f8 2011-03-16T23:59:09 Fix headers for the new Revision Walker The "oid.h" header is now included instead of "object.h". The old "revwalk.h" header has been removed; it was empty.
Vicent Marti 7341bf87 2011-03-16T23:13:28 Refs are now always in-sync on disk
Vicent Marti 36aaf1ff 2011-03-16T01:53:25 Change the Revwalk reset behavior to the old version The `reset` call now removes the pushed commits so we can reuse the revwalker. The API documentation has been updated with the details.
Vicent Marti 955f9ae9 2011-03-16T01:06:15 Export `git_strarray_free` instead of inlining That way non-C bindings can use it.
Vicent Marti 36b31329 2011-03-16T01:04:17 Properly free commit a commit list in revwalk The commit list was not being properly free'd when a walk was stopped halfway through.
Vicent Marti bbcc7ffc 2011-03-15T21:04:41 Add proper threading support to libgit2 We now depend on libpthread on all Unix platforms (should be installed by default) and use a simple wrapper for Windows threads under Win32. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti b5abb881 2011-03-15T19:55:01 Do not segfault when listing unpacked references
Vicent Marti d40d30cb 2011-03-15T19:54:45 Debug assertion when using an initialized hashtable
Vicent Marti 7ad96e51 2011-03-15T05:38:50 Remove duplicate refs in `git_reference_listall`
Ben Noordhuis bd1aa741 2011-03-14T00:07:37 git_object_lookup() should also check the type if the object comes from the cache
Vicent Marti 7c8a7b91 2011-03-15T02:45:49 Skip the optional header in packed-refs files
Vicent Marti 6b2a1941 2011-03-12T23:09:16 Fix the retarded object interdependency system It's no longer retarded. All object interdependencies are stored as OIDs instead of actual objects. This should be hundreds of times faster, specially on big repositories. Heck, who knows, maye it doesn't even segfault -- wouldn't that be awesome? What has changed on the API? `git_commit_parent`, `git_commit_tree`, `git_tag_target` now return their values through a pointer-to-pointer, and have an error code. `git_commit_set_tree` and `git_tag_set_target` now return an error code and may fail. `git_repository_free__no_gc` has been deprecated because it's stupid. Since there are no longer any interdependencies between objects, we don't need internal reference counting, and GC never fails or double-free's pointers. `git_object_close` now does a very sane thing: marks an object as unused. Closed objects will be eventually free'd from the object cache based on LRU. Please use `git_object_close` from the garbage collector `destroy` method on your bindings. It's 100% safe. `git_repository_gc` is a new method that forces a garbage collector pass through the repo, to free as many LRU objects as possible. This is useful if we are running out of memory.
Vicent Marti 00571828 2011-03-12T16:04:46 Add new method `git_reference_listall` Lists all the references in a repository. Listing may be filtered by reference type. This should applease Lord Clem.
Vicent Marti 58d06cf1 2011-03-10T01:06:24 Rewrite the Pack backend The new pack backend is an adaptation of the original git.git code in `sha1_file.c`. It's slightly faster than the previous version and severely less memory-hungry. The call-stack of a normal pack backend query has been properly documented in the top of the header for future reference. And by properly I mean with ASCII diagrams 'n shit.
Vicent Marti 71db842f 2011-03-08T14:57:03 Rewrite the Revision Walker The new revision walker uses an internal Commit object storage system, custom memory allocator and much improved topological and time sorting algorithms. It's about 20x times faster than the previous implementation when browsing big repositories. The following external API calls have changed: `git_revwalk_next` returns an OID instead of a full commit object. The initial call to `git_revwalk_next` is no longer blocking when iterating through a repo with a time-sorting mode. Iterating with Topological or inverted modes still makes the initial call blocking to preprocess the commit list, but this block should be mostly unnoticeable on most repositories (topological preprocessing times at 0.3s on the git.git repo). `git_revwalk_push` and `git_revwalk_hide` now take an OID instead of a full commit object.
Vicent Marti 26022f07 2011-03-05T23:54:49 Add `git_oid_shorten` (unique OID minimzer) Set of methods to find the minimal-length to uniquely identify every OID in a list. Useful for GUI applications, commit logs and so on. Includes stress test. Signed-off-by: Vicent Marti <tanoku@gmail.com>