|
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()
|
|
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
|
|
de05ff6c
|
2011-03-03T19:40:01
|
|
Add test renameref::renaming_a_packed_reference_makes_it_loose()
|
|
76f7cf70
|
2011-03-03T19:38:54
|
|
Fix reference renaming implementation to match standard git behavior
|
|
669db21b
|
2011-02-28T22:21:18
|
|
Slightly changed the behavior of git__joinpath() and git__joinpath_n().
|
|
52b2c209
|
2011-03-03T19:37:40
|
|
Enhance the packrefs::create_packfile() test
|
|
0594e3ef
|
2011-03-03T19:36:54
|
|
Prevent _dirent_loose_load() from choking on empty folders
|
|
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.
|
|
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()
|
|
7167422c
|
2011-02-28T12:16:44
|
|
Refactored some test related constants.
|
|
705a90ec
|
2011-02-26T14:07:13
|
|
Added tests to exercise the initialization and the opening of a repository.
|
|
c38f9013
|
2011-02-26T13:56:57
|
|
Removed a duplicate constant.
|
|
d2d6912e
|
2011-02-26T13:56:16
|
|
Refactored the opening and the initialization of a repository.
|
|
3b3a1017
|
2011-02-25T21:58:25
|
|
Added rmdir_recurs(), a test helper function which recursively removes the content of a directory.
|
|
47d0db78
|
2011-02-25T15:09:31
|
|
Added some dirname and basename tests to ensure that trailing slashes are ignored.
|
|
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>
|
|
17cdf252
|
2011-02-27T22:31:06
|
|
Make some Object methods take a const parameter
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
2e60b652
|
2011-02-27T22:30:28
|
|
Add extra methods to the new Hashtable implementation
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
ccef1c9d
|
2011-02-27T22:09:36
|
|
Move the path comparison method to fileops.c
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
da7c3c71
|
2011-02-27T22:07:39
|
|
Fix warnings in vector.c
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
9b3985fa
|
2011-02-25T10:29:11
|
|
Slightly enhanced the readability of some reference related tests.
|
|
b0a83143
|
2011-02-25T10:06:49
|
|
Removed duplicate tests.
|
|
86194b24
|
2011-02-18T21:57:53
|
|
Split packed from unpacked references
These two reference types are now stored separately to eventually allow
the removal/renaming of loose references and rewriting of the refs
packfile.
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
32054c24
|
2011-02-18T18:09:19
|
|
Brush up the refs API
Changed some more API details and updated documentation.
Sketched API for addition/removal of entries.
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
2de3b35c
|
2011-02-14T22:32:02
|
|
Added test covering creation of nested symbolic references.
|
|
1d8cc731
|
2011-02-14T22:29:22
|
|
Refactored the reference creation API.
|
|
e1be1028
|
2011-02-13T20:18:35
|
|
Added some more tests to ensure the correct behavior of git_reference__normalize_name().
|
|
77600378
|
2011-02-13T14:51:45
|
|
Fixed line endings (CRLF->LF).
|
|
6a0895ad
|
2011-02-11T13:58:40
|
|
Added GIT_EINVALIDREFSTATE error.
|
|
aa2120e9
|
2011-02-10T15:08:00
|
|
Added git_reference__normalize_name() along with tests.
|
|
83403e99
|
2011-03-02T11:02:22
|
|
Fix check for bad --sha1 option argument
|
|
5cfd9ce4
|
2011-03-01T22:15:20
|
|
Add missing include to odb_backends.h
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
fc70832a
|
2011-02-23T07:08:50
|
|
include "oid.h" in headers that use git_oid
This makes generating bindings to hlibgit2 easier
|
|
7360122b
|
2011-02-24T23:53:40
|
|
Fix file renaming in MinGW
We now use MoveFileEx, which is not assured to be atomic but works for
always (both if the destination exists, or if it doesn't) and is
available in MinGW.
Since this is a Win32 API call, complaint about lost or overwritten files
should be forwarded at Steve Ballmer.
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
3eb47c9f
|
2011-02-24T21:43:08
|
|
Fix renaming of files in Win32
The `rename` call doesn't quite work on Win32: expects the destination
file to not exist. We're using a native Win32 call in those cases --
that should do the trick.
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
c3be1468
|
2011-02-24T19:31:12
|
|
Fix double-freeing file descriptors
Was crashing the Windows build.
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
fc658755
|
2011-02-22T21:59:36
|
|
Rewrite git_hashtable internals
The old hash table with chained buckets has been replaced by a new one
using Cuckoo hashing, which offers guaranteed constant lookup times.
This should improve speeds on most use cases, since hash tables in
libgit2 are usually used as caches where the objects are stored once and
queried several times.
The Cuckoo hash implementation is based off the one in the Basekit
library [1] for the IO language, but rewritten to support an arbritrary
number of hashes. We currently use 3 to maximize the usage of the nodes pool.
[1]: https://github.com/stevedekorte/basekit/blob/master/source/CHash.c
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
4378e8d4
|
2011-02-22T15:15:35
|
|
Add unit test for writing a big index file
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
5591ea15
|
2011-02-22T14:58:54
|
|
Add printf method to the File Buffer
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
af774b01
|
2011-02-21T13:14:01
|
|
Add --without-sqlite option to waf configure
Disable sqlite support when ./waf configure is run with --without-sqlite
|
|
817c2820
|
2011-02-21T17:05:16
|
|
Rewrite all file IO for more performance
The new `git_filebuf` structure provides atomic high-performance writes
to disk by using a write cache, and optionally a double-buffered scheme
through a worker thread (not enabled yet).
Writes can be done 3-layered, like in git.git (user code -> write cache
-> disk), or 2-layered, by writing directly on the cache. This makes
index writing considerably faster.
The `git_filebuf` structure contains all the old functionality of
`git_filelock` for atomic file writes and reads. The `git_filelock`
structure has been removed.
Additionally, the `git_filebuf` API allows to automatically hash (SHA1)
all the data as it is written to disk (hashing is done smartly on big
chunks to improve performance).
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
874c3b6f
|
2011-02-18T14:11:53
|
|
Fix repository initialization
Fixed several issues with path joining and bare repos.
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
cb77ad0d
|
2011-02-18T12:23:53
|
|
Fix segfault when iterating a revlist backwards
The `prev` and `next` pointers were not being updated after popping one
of the list elements.
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
e822508a
|
2011-02-18T10:29:55
|
|
Disable threaded index writing by default
The interlocking on the write threads was not being done properly (index
entries were sometimes written out of order). With proper interlocking,
the threaded write is only marginally faster on big index files, and
slower on the smaller ones because of the overhead when creating
threads.
The threaded index writing has been temporarily disabled; after more
accurate benchmarks, if might be possible to enable it again only when
writing very large index files (> 1000 entries).
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
3ecc8b5e
|
2011-02-18T00:08:34
|
|
Fix refcounting initialization
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
084c1935
|
2011-02-17T23:32:22
|
|
Fix type truncation in index entries
64-bit types stored in memory have to be truncated into 32 bits when
writing to disk. Was causing warnings in MSVC.
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
348c7335
|
2011-02-17T21:32:00
|
|
Improve the performance when writing Index files
In response to issue #60 (git_index_write really slow), the write_index
function has been rewritten to improve its performance -- it should now
be in par with the performance of git.git.
On top of that, if Posix Threads are available when compiling libgit2, a
new threaded writing system will be used (3 separate threads take care
of solving byte-endianness, hashing the contents of the index and
writing to disk, respectively). For very long Index files, this method
is up to 3x times faster than git.git.
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
81d0ff1c
|
2011-02-14T13:22:44
|
|
fix cast in tag.h
git_tag_lookup() and git_tag_new() changed to cast GIT_OBJ_TAG to
git_otype in order to compile lib in xcode
|
|
d4b5a4e2
|
2011-02-09T19:49:02
|
|
Internal changes on the backend system
The priority value for different backends has been removed from the
public `git_odb_backend` struct. We handle that internally. The priority
value is specified on the `git_odb_add_alternate`.
This is convenient because it allows us to poll a backend twice with
different priorities without having to instantiate it twice.
We also differentiate between main backends and alternates; alternates have
lower priority and cannot be written to.
These changes come with some unit tests to make sure that the backend
sorting is consistent.
The libgit2 version has been bumped to 0.4.0.
This commit changes the external API:
CHANGED:
struct git_odb_backend
No longer has a `priority` attribute; priority for the backend
in managed internally by the library.
git_odb_add_backend(git_odb *odb, git_odb_backend *backend, int priority)
Now takes an additional priority parameter, the priority that
will be given to the backend.
ADDED:
git_odb_add_alternate(git_odb *odb, git_odb_backend *backend, int priority)
Add a backend as an alternate. Alternate backends have always
lower priority than main backends, and writing is disabled on
them.
Signed-off-by: Vicent Marti <tanoku@gmail.com>
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
5a800efc
|
2011-02-09T12:46:54
|
|
Honor alternate entries in the ODB
The alternates file is now parsed, and the alternate ODB folders are
added as separate backends. This allows the library to efficiently query
the alternate folders.
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
995f9c34
|
2011-02-09T12:43:19
|
|
Use the new git__joinpath to build paths in methods
The `git__joinpath` function has been changed to use a statically
allocated buffer; we assume the buffer to be 4096 bytes, because fuck
you.
The new method also supports an arbritrary number of paths to join,
which may come in handy in the future.
Some methods which were manually joining paths with `strcpy` now use the
new function, namely those in `index.c` and `refs.c`.
Based on Emeric Fermas' original patch, which was using the old
`git__joinpath` because I'm stupid. Thanks!
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
772c7e76
|
2011-02-08T19:28:12
|
|
Merge branch 'git-reference-creation-tests' of https://github.com/nulltoken/libgit2
|
|
20e83aa4
|
2011-02-08T13:14:19
|
|
Further improve SQLite support for CMake users.
Unfortunately previous commit was only a partial fix, because it broke
SQLite support on platforms w/o pkg-config, e.g. Windows. To be honest
I just forgot about messy Windows.
Now if there is no pkg-config, then user must provide two variables:
SQLITE3_INCLUDE_DIRS and SQLITE3_LIBRARIES if (s)he wants to use SQLite
backend. These variables are added to cmake-gui for her/his convenience
unless they are set by FindPkgConfig module.
pkg-config should work also now in Cygwin.
|
|
911fd457
|
2011-02-08T00:30:08
|
|
Fix SQLite support for CMake users.
FindPkgConfig obviously uses pkg-config's output for setting convenient
variables such as <PREFIX>_LIBRARIES or <PREFIX>_INCLUDE_DIRS. It also
sets <PREFIX>_FOUND to 1 if <PREFIX> module exists.
So why checking for SQLITE3_FOUND is better than (SQLITE3_LIBRARIES AND
SQLITE3_INCLUDE_DIRS)? Apart from obvious readability factor, latter
condition has strong assumption that both variables are filled with
appropriate paths, which is unjustifiable unless you add another
assumptions...
pkg-config by default strips -I/usr/include from Cflags and -L/usr/lib
from Libs if some environment variables are not set,
PKG_CONFIG_ALLOW_SYSTEM_CFLAGS and PKG_CONFIG_ALLOW_SYSTEM_LIBS
respectively. This behavior is sane, because it prevents polluting the
compilation and linking commands with superfluous entries.
In debian SQLITE3_INCLUDE_DIRS is empty for instance.
Remark for developers:
Always check commands invoked by CMake after changing CMakeLists.txt.
VERBOSE=1 cmake --build .
|
|
1b7124f8
|
2011-02-07T17:37:54
|
|
Added tests exercising git_reference_write() to create a new symbolic reference and a new object id reference.
|
|
122c3405
|
2011-02-07T18:25:42
|
|
Git trees are now always lazily sorted
Removed `git_tree_add_entry_unsorted`. Now the `git_tree_add_entry`
method doesn't sort the entries array by default; entries are only
sorted lazily when required. This is done automatically by the library
(the `git_tree_sort_entries` call has been removed).
This should improve performance. No point on sorting entries all the time, anyway.
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
8212e2d7
|
2011-02-07T18:25:23
|
|
Fix detection of working dir on repositories
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
9d1dcca2
|
2011-02-07T10:35:58
|
|
Add proper version management
We now have proper sonames in Mac OS X and Linux, proper versioning on
the pkg-config file and proper DLL naming in Windows.
The version of the library is defined exclusively in 'src/git2.h'; the build scripts
read it from there automatically.
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
7a689719
|
2011-02-07T09:14:45
|
|
Merge branch 'master' of https://github.com/saschpe/libgit2 into saschpe-master
Conflicts:
CMakeLists.txt
|
|
f443a879
|
2011-02-07T08:47:50
|
|
Compile the SQLite backend with CMake too
Use pkg-config to find the library in Unix systems. In Win32, just set
manually the path to your libraries.
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
becff042
|
2011-02-07T08:09:11
|
|
Fix compilation in MSVC
The git_odb_backend_* symbols were being redefined as external.
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
2e75e156
|
2011-02-07T08:04:32
|
|
Merge branch 'refs-handling-tests' of https://github.com/nulltoken/libgit2
|
|
e85c705f
|
2011-02-07T08:04:04
|
|
Merge branch 'join-path-tests' of https://github.com/nulltoken/libgit2
|
|
13317a5e
|
2011-02-07T08:03:06
|
|
Merge branch 'chobie_git_dir_fix' of https://github.com/chobie/libgit2
|
|
e769e025
|
2011-02-07T00:11:17
|
|
Git does not like zero padded file attributes (git fsck)
|
|
5bf42916
|
2011-02-07T00:11:00
|
|
Further correction to tree entry sorting (for git fsck)
|
|
56ab8c54
|
2011-02-06T15:48:52
|
|
fix can't detect repository index issues.
|
|
fc8afc87
|
2011-02-06T07:48:17
|
|
Fix a memory leak in git__joinpath() tests.
|
|
a79e8e63
|
2011-02-05T19:22:44
|
|
Fixed a small issue in git__join_path(). Added tests to exercise git__join_path().
|