Log

Author Commit Date CI Message
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 08db1efd 2011-03-23T15:53:12 Add Ocaml bindings to the readme
Vicent Marti c0ffe518 2011-03-23T15:44:52 Do not return on `void` helper methods MSVC doesn't swallow that.
Vicent Marti f0d08b7c 2011-03-23T15:40:47 Remove `git_repository_gc` from the headers
Carlos Martín Nieto b0b83135 2011-03-22T16:15:50 Add close wappers for commit, tree, tag and blob In the same spirit that git_repository_lookup is no longer available, add wrappers so the users don't have to cast when closing their objects. Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Vicent Marti 7c80c19e 2011-03-23T01:58:18 Fix compilation in MinGW
nulltoken a8375f53 2011-03-05T15:09:01 Add test exercising the opening of an standard repository initialized by git
nulltoken 2ce44b67 2011-03-05T14:33:31 Add test exercising the opening of an empty bare repository initialized by git
nulltoken 29e1797c 2011-03-05T14:26:22 Add remove_placeholders() test helper function which recursively removes marker files from a directory structure
Vicent Marti 3fe9c60c 2011-03-23T00:21:30 Add empty bare and normal repos to test resources We have removed the hooks folder because it takes a lot of space
nulltoken 2b861d75 2011-03-19T08:31:40 Add detection of incorrect usage to git__joinpath()
nulltoken f428ae61 2011-03-19T08:19:34 Slightly enforce copy_recurs() behavior The folder creation is now decorrelated from the recursive parsing of the source tree structure.
nulltoken ba1bdf86 2011-03-18T22:27:15 Improve test coverage of new path prettifying behavior
nulltoken 3644e98f 2011-03-18T19:10:36 Fix detection of attempt to escape the root directory on Windows
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 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 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.
Tim Branyen fe192020 2011-03-21T23:27:54 Corrected the header include directory in doxygen conf
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 70236bab 2011-03-21T19:39:06 Update CMakeLists.txt to support threadsafe
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 9f81a37a 2011-03-16T23:02:31 Define NO_GZIP in zconf.h instead of at compile time
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 8613d4a9 2011-03-16T01:10:40 Fix signature in `git_repository_gc` The method returns an int with the amount of objects free'd
Vicent Marti 54a1b36c 2011-03-16T01:07:06 Export `git_repository_gc` properly One of my brainfarts made me export it as `git_repository_close` instead of GC. Duh.
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 f73b09cd 2011-03-15T21:19:02 Revert changes in wscript file
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 434bedcd 2011-03-15T19:46:38 Fix compilation warnings in ZLib (MSVC) Yes, we are changing the Zlib code. This is dangerous and uncool. Fortunately, these are just some implicit casts.
Vicent Marti 7ad96e51 2011-03-15T05:38:50 Remove duplicate refs in `git_reference_listall`
Vicent Marti 5f8078d4 2011-03-15T04:03:54 Use a more sane zconf.f when building Zlib
Vicent Marti 11a203e1 2011-03-15T03:31:52 Add nodegit to the README
Vicent Marti ab6a3d3d 2011-03-15T03:25:44 Add ZLib as a built-in dependency I don't know if this is good or bad. This lets libgit2 compile cleanly on any platforms without any external dependencies, but adds a little bit of bloat... Let's test this out and see what happens.
Ben Noordhuis 1ee32c6d 2011-03-14T00:33:45 Add test case for issue GH-86
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 7064938b 2011-03-14T23:55:32 libgit2 version 0.10.0, "very disco" A version *so* awesome that needs 2 version bumps AND a codename. Major features: - New internal garbage collection (harder) - Pack backend rewritten from scratch (better) - Revision walker rewritten from scratch (faster) - New object interdependency system (stronger) - Unique OID shortener - Reference listing In honor of one heck of a music album, released ten years ago, yesterday.
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>
Vicent Marti b760fbf5 2011-03-07T21:18:05 Update README.md with new bindings Signed-off-by: Vicent Marti <tanoku@gmail.com>
Tim Clem 74bcb63f 2011-03-07T10:13:56 add objective-git to readme
Vicent Marti 55ffebe3 2011-03-05T14:34:32 Fix creation of deeply-rooted references Use a new `gitfo_creat_force` that will create the full path to a file before creating it. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 246eba80 2011-03-05T13:58:47 Use memmove() in git__dirname and git__basename We cannot make sure that the user doesn't use the same buffer as source and destination, so write to it using memmove. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 60cb1d10 2011-03-05T13:56:14 Use memmove() in git__joinpath for overlapping copies Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 545a6915 2011-03-05T13:45:05 Change interface for Tree Index attr (always unsigned) Signed-off-by: Vicent Marti <tanoku@gmail.com>
Sakari Jokinen 9de27ad0 2011-02-25T19:05:29 Check for valid range of attributes for tree entry
Vicent Marti 3490188b 2011-03-05T13:29:50 Change the return type of `git_blob_rawcontent` Should return `void *` for raw bytes. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti e0011be3 2011-03-05T13:22:16 Fix the opening of empty repositories We were checking for the index file, which is not assured to exist on clean git repositories. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Tim Clem 45314a7e 2011-03-04T23:13:02 clean up temp repo for t12-repo tests add actual must_pass calls back into the repo tests and remove ./ from beginning of temp repo path
Vicent Marti f335b42c 2011-03-05T01:17:59 Fix segmentation fault when freeing a repository Disable garbage collection of cross-references to prevent double-freeing. Internal reference management is now done with a separate method. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti e06dd9b6 2011-03-04T15:23:52 Fix 'possibly uninitialized variable' warning
Vicent Marti f7fcb0dd 2011-03-04T15:10:16 Don't use non-int bit fields They are not standard. MSVC complains about them. And that's not good. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti c3a41e5f 2011-03-03T22:01:15 Fix compilation when using CMake in Windows Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 3c41c635 2011-03-03T21:58:37 Fix compilation in MSVC MSVC cannot substract void pointers. Go figure. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti b64e11d1 2011-03-03T20:23:04 Bump the version number to 0.8.0 Yes, these are some seriously massive changes to the external API. We are breaking stuff. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 71d33382 2011-03-03T20:20:45 Move the external includes folder from `src` to `include` Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 584f49a5 2011-03-01T01:37:28 Fix several issues with refcounting - Added several missing reference increases - Add new destructor to the repository that does not GC the objects Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 971c90be 2011-02-28T16:54:13 Do not free the index if it's owned by a repository Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 48c27f86 2011-02-28T16:51:17 Implement reference counting for git_objects All `git_object` instances looked up from the repository are reference counted. User is expected to use the new `git_object_close` when an object is no longer needed to force freeing it. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 86d7e1ca 2011-02-28T12:46:13 Fix searching in git_vector We now store only one sorting callback that does entry comparison. This is used when sorting the entries using a quicksort, and when looking for a specific entry with the new search methods. The following search methods now exist: git_vector_search(vector, entry) git_vector_search2(vector, custom_search_callback, key) git_vector_bsearch(vector, entry) git_vector_bsearch2(vector, custom_search_callback, key) The sorting state of the vector is now stored internally. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 5de079b8 2011-02-28T12:12:26 Change the object creation/lookup API The methods previously known as git_repository_lookup git_repository_newobject git_repository_lookup_ref are now part of their respective namespaces: git_object_lookup git_object_new git_reference_lookup This makes the API more consistent with the new references API. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 3dccfed1 2011-03-03T18:19:05 Cleanup the testing toolkit Tests are now declared with detailed descriptions and a short test name: BEGIN_TEST(the_test0, "this is an example test that does something") ... END_TEST Modules are declared through a simple macro interface: BEGIN_MODULE(mod_name) ADD_TEST(the_test0); ... END_MODULE Error messages when tests fail have been greatly improved. Signed-off-by: Vicent Marti <tanoku@gmail.com>
nulltoken 8fc05096 2011-03-03T19:59:25 Add test deleteref::deleting_a_ref_which_is_both_packed_and_loose_should_remove_both_tracks_in_the_filesystem()
nulltoken 5ad0351d 2011-03-03T19:58:07 Fix reference removal: remove packed refs together with loose ones
nulltoken d561403f 2011-03-03T19:57:12 Add test for corner case in reference renaming
nulltoken 8f90ced5 2011-03-03T19:55:48 Fix corner case in reference renaming Renaming a packed reference should not pack another reference which happens to be in both loose and pack state.
nulltoken 268bee3d 2011-03-03T19:54:34 Add test renameref::rename_a_loose_reference()
Vicent Marti 19a30a3f 2011-03-03T19:53:17 Add new move function, `gitfo_mv_force` Forces a move by creating the folder for the destination file, if it doesn't exist. Signed-off-by: Vicent Marti <tanoku@gmail.com>
nulltoken 6b02b215 2011-03-03T19:43:47 Add test renameref::can_not_rename_a_reference_with_an_invalid_name()
nulltoken 129007b4 2011-03-03T19:43:11 Fix refs renaming to prevent renaming with an invalid name
nulltoken 65cc1f44 2011-03-03T19:42:11 Add test renameref::can_not_rename_a_reference_with_an_invalid_name()
nulltoken e2d42622 2011-03-03T19:41:27 Fix reference renaming to prevent duplicated names
nulltoken de05ff6c 2011-03-03T19:40:01 Add test renameref::renaming_a_packed_reference_makes_it_loose()
nulltoken 76f7cf70 2011-03-03T19:38:54 Fix reference renaming implementation to match standard git behavior
nulltoken 669db21b 2011-02-28T22:21:18 Slightly changed the behavior of git__joinpath() and git__joinpath_n().
nulltoken 52b2c209 2011-03-03T19:37:40 Enhance the packrefs::create_packfile() test
nulltoken 0594e3ef 2011-03-03T19:36:54 Prevent _dirent_loose_load() from choking on empty folders
nulltoken e4029c52 2011-02-28T12:33:47 Added copydir_recurs() to test_helpers.c Test helper function which recursively copies the content of a directory. This function has been tweaked to prevent stack overflows by reusing the same path buffers on all recursive calls.
nulltoken 7167422c 2011-02-28T12:16:44 Refactored some test related constants.
nulltoken 705a90ec 2011-02-26T14:07:13 Added tests to exercise the initialization and the opening of a repository.
nulltoken c38f9013 2011-02-26T13:56:57 Removed a duplicate constant.
nulltoken d2d6912e 2011-02-26T13:56:16 Refactored the opening and the initialization of a repository.
nulltoken 3b3a1017 2011-02-25T21:58:25 Added rmdir_recurs(), a test helper function which recursively removes the content of a directory.
nulltoken 47d0db78 2011-02-25T15:09:31 Added some dirname and basename tests to ensure that trailing slashes are ignored.
Vicent Marti 87d3acf4 2011-02-27T22:31:43 Finish the References API The following methods have been implemented: git_reference_packall git_reference_rename git_reference_delete The library now has full support for packed references, including partial and total writing. Internal documentation has been updated with the details. Signed-off-by: Vicent Marti <tanoku@gmail.com>