|
baad182c
|
2011-03-28T11:31:58
|
|
Add GIT_EEXISTS error code
Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
|
|
6dcb09b5
|
2011-03-28T22:35:27
|
|
libgit2 version 0.11.0, "McSwifty"
Apologies for the massive changes in the external API (that's my fault),
and for the terrible codename for this release (that's @tclem's fault).
The detailed overview for the major API changes can be found in the
commit at 72a3fe42fb7208712bbe8f0981f4c6274c05e9c3.
Major new features in this release:
- 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
- Improved reference handling
- New method to list references
- ZLib is now built-in
- Improvements to the Revision Walker
- Tons of bug fixes
Thanks to all the contributors who make this possible.
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
483526eb
|
2011-03-28T22:23:44
|
|
Update the SQLite backend
|
|
683581a3
|
2011-03-28T17:59:13
|
|
index.c: Fix tiny typos
|
|
9d80d74d
|
2011-03-28T17:57:08
|
|
signature.h: Fix tiny typo
|
|
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.
|
|
12f6d8e1
|
2011-03-24T13:48:22
|
|
index.h: Correct documentation for git_index_open_inrepo()
Fix the doxygen comments for git_index_open_inrepo(). Previously they
referred to a param index_path and omitted index (probably a c&p
error).
|
|
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.
|
|
051d6915
|
2011-03-24T18:28:04
|
|
index.h: Fix minor typo
|
|
f3cf7f6d
|
2011-03-23T17:06:49
|
|
add go-git (Go bindings) to the readme
|
|
815c9bc7
|
2011-03-23T20:18:34
|
|
Remove circular dependency in includes
|
|
ea269511
|
2011-03-23T14:57:41
|
|
odb.h: Fix minor typo
Fix a doxygen typo ("@para" instead of "@param") in odb.h
|
|
c585f55f
|
2011-03-23T12:35:08
|
|
common.h: Fix minor typos
Fix a few minor typos in the documentation of the GIT_ERROR codes.
|
|
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).
|
|
08db1efd
|
2011-03-23T15:53:12
|
|
Add Ocaml bindings to the readme
|
|
c0ffe518
|
2011-03-23T15:44:52
|
|
Do not return on `void` helper methods
MSVC doesn't swallow that.
|
|
f0d08b7c
|
2011-03-23T15:40:47
|
|
Remove `git_repository_gc` from the headers
|
|
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>
|
|
7c80c19e
|
2011-03-23T01:58:18
|
|
Fix compilation in MinGW
|
|
a8375f53
|
2011-03-05T15:09:01
|
|
Add test exercising the opening of an standard repository initialized by git
|
|
2ce44b67
|
2011-03-05T14:33:31
|
|
Add test exercising the opening of an empty bare repository initialized by git
|
|
29e1797c
|
2011-03-05T14:26:22
|
|
Add remove_placeholders() test helper function which recursively removes marker files from a directory structure
|
|
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
|
|
2b861d75
|
2011-03-19T08:31:40
|
|
Add detection of incorrect usage to git__joinpath()
|
|
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.
|
|
ba1bdf86
|
2011-03-18T22:27:15
|
|
Improve test coverage of new path prettifying behavior
|
|
3644e98f
|
2011-03-18T19:10:36
|
|
Fix detection of attempt to escape the root directory on Windows
|
|
c90292ce
|
2011-03-18T16:56:43
|
|
Change gitfo_prettify_dir_path() and gitfo_prettify_file_path() behavior
Those functions now return prettified rooted path.
|
|
6279abda
|
2011-03-17T06:56:58
|
|
Make gitfo_prettify_dir_path() and gitfo_prettify_file_path() no longer externalized
|
|
677a3c07
|
2011-03-15T22:07:01
|
|
Add failing test for issue 84
see https://github.com/libgit2/libgit2/issues#issue/84
|
|
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.
|
|
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.
|
|
fe192020
|
2011-03-21T23:27:54
|
|
Corrected the header include directory in doxygen conf
|
|
21d73e71
|
2011-03-22T20:26:01
|
|
Always free the parents of a revwalk commit
Thanks to Carlos Martín Nieto for spotting this.
|
|
1881f078
|
2011-03-21T20:28:02
|
|
Add getters for `git_odb_object`
|
|
b932ef5b
|
2011-03-21T19:44:43
|
|
Fix MSVC warnings when building threads
|
|
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.
|
|
70236bab
|
2011-03-21T19:39:06
|
|
Update CMakeLists.txt to support threadsafe
|
|
99baacfb
|
2011-03-21T19:27:45
|
|
Fix MSVC warnings
|
|
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>
|
|
bb3de0c4
|
2011-03-16T21:35:51
|
|
Thread safe cache
|
|
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.
|
|
7341bf87
|
2011-03-16T23:13:28
|
|
Refs are now always in-sync on disk
|
|
9f81a37a
|
2011-03-16T23:02:31
|
|
Define NO_GZIP in zconf.h instead of at compile time
|
|
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.
|
|
8613d4a9
|
2011-03-16T01:10:40
|
|
Fix signature in `git_repository_gc`
The method returns an int with the amount of objects free'd
|
|
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.
|
|
955f9ae9
|
2011-03-16T01:06:15
|
|
Export `git_strarray_free` instead of inlining
That way non-C bindings can use it.
|
|
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.
|
|
f73b09cd
|
2011-03-15T21:19:02
|
|
Revert changes in wscript file
|
|
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>
|
|
b5abb881
|
2011-03-15T19:55:01
|
|
Do not segfault when listing unpacked references
|
|
d40d30cb
|
2011-03-15T19:54:45
|
|
Debug assertion when using an initialized hashtable
|
|
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.
|
|
7ad96e51
|
2011-03-15T05:38:50
|
|
Remove duplicate refs in `git_reference_listall`
|
|
5f8078d4
|
2011-03-15T04:03:54
|
|
Use a more sane zconf.f when building Zlib
|
|
11a203e1
|
2011-03-15T03:31:52
|
|
Add nodegit to the README
|
|
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.
|
|
1ee32c6d
|
2011-03-14T00:33:45
|
|
Add test case for issue GH-86
|
|
bd1aa741
|
2011-03-14T00:07:37
|
|
git_object_lookup() should also check the type if the object comes from the cache
|
|
7c8a7b91
|
2011-03-15T02:45:49
|
|
Skip the optional header in packed-refs files
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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>
|
|
b760fbf5
|
2011-03-07T21:18:05
|
|
Update README.md with new bindings
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
74bcb63f
|
2011-03-07T10:13:56
|
|
add objective-git to readme
|
|
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>
|
|
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>
|
|
60cb1d10
|
2011-03-05T13:56:14
|
|
Use memmove() in git__joinpath for overlapping copies
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
545a6915
|
2011-03-05T13:45:05
|
|
Change interface for Tree Index attr (always unsigned)
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
9de27ad0
|
2011-02-25T19:05:29
|
|
Check for valid range of attributes for tree entry
|
|
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>
|
|
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>
|
|
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
|
|
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>
|
|
e06dd9b6
|
2011-03-04T15:23:52
|
|
Fix 'possibly uninitialized variable' warning
|
|
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>
|
|
c3a41e5f
|
2011-03-03T22:01:15
|
|
Fix compilation when using CMake in Windows
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
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>
|
|
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>
|
|
71d33382
|
2011-03-03T20:20:45
|
|
Move the external includes folder from `src` to `include`
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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()
|
|
5ad0351d
|
2011-03-03T19:58:07
|
|
Fix reference removal: remove packed refs together with loose ones
|
|
d561403f
|
2011-03-03T19:57:12
|
|
Add test for corner case in reference renaming
|
|
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.
|
|
268bee3d
|
2011-03-03T19:54:34
|
|
Add test renameref::rename_a_loose_reference()
|
|
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>
|
|
6b02b215
|
2011-03-03T19:43:47
|
|
Add test renameref::can_not_rename_a_reference_with_an_invalid_name()
|
|
129007b4
|
2011-03-03T19:43:11
|
|
Fix refs renaming to prevent renaming with an invalid name
|
|
65cc1f44
|
2011-03-03T19:42:11
|
|
Add test renameref::can_not_rename_a_reference_with_an_invalid_name()
|
|
e2d42622
|
2011-03-03T19:41:27
|
|
Fix reference renaming to prevent duplicated names
|