- 18 Feb, 2011 3 commits
-
-
Fixed several issues with path joining and bare repos. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti committed -
The `prev` and `next` pointers were not being updated after popping one of the list elements. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti committed -
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>
Vicent Marti committed
-
- 17 Feb, 2011 3 commits
-
-
Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti committed -
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>
Vicent Marti committed -
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>
Vicent Marti committed
-
- 14 Feb, 2011 1 commit
-
-
git_tag_lookup() and git_tag_new() changed to cast GIT_OBJ_TAG to git_otype in order to compile lib in xcode
Tim Clem committed
-
- 09 Feb, 2011 3 commits
-
-
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>
Vicent Marti committed -
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>
Vicent Marti committed -
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>
Vicent Marti committed
-
- 08 Feb, 2011 2 commits
-
-
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.
Przemyslaw Pawelczyk committed
- 07 Feb, 2011 13 commits
-
-
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 .
Przemyslaw Pawelczyk committed -
Added tests exercising git_reference_write() to create a new symbolic reference and a new object id reference.
nulltoken committed -
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>
Vicent Marti committed -
Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti committed -
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>
Vicent Marti committed -
-
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>
Vicent Marti committed -
The git_odb_backend_* symbols were being redefined as external. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti committed -
John Wiegley committed
-
John Wiegley committed
-
- 06 Feb, 2011 2 commits
-
-
Shuhei Tanuma committed
-
nulltoken committed
-
- 05 Feb, 2011 12 commits
-
-
nulltoken committed
-
It can now be run twice in a row without failing.
nulltoken committed -
Vicent Marti committed
-
Configure again the build system to look for SQLite3. If the library is found, the SQLite backend will be automatically compiled. Enjoy *very* fast reads and writes. MASTER PROTIP: Initialize the backend with ":memory" as the path to the SQLite database for fully-hosted in-memory repositories. Rejoice. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti committed -
Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti committed -
- Added a test to ensure that a nested symbolic reference is properly resolved. - Added comparisons of object ids.
nulltoken committed -
nulltoken committed
-
Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti committed -
The `dirname` and `dirbase` methods have been replaced with the Android implementation, which is actually compilant to some kind of standard. A new method `topdir` has been added, which returns the topmost directory in a path. These changes fix issue #49: `gitfo_prettify_dir_path` converts "./.git/" to ".git/", so the code at src/repository.c:190 goes out of bounds when trying to find the topmost directory. The new `git__topdir` method handles this gracefully, and the fixed `git__dirname` now returns the proper value for the repository's working dir. E.g. /repo/.git/ ==> working dir '/repo/' .git/ ==> working dir '.' Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti committed -
git_revwalk_next now returns an error code when the iteration is over. git_repository_index now returns an error code when the index file could not be opened. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti committed -
Don't allow access to any tree entries whilst the entries array is unsorted. We keep track on when the array is unsorted, and any methods that access the array while it is unsorted now sort the array before accessing it. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti committed
-
- 03 Feb, 2011 1 commit
-
-
If plain strcmp is used, as this code did before, the final sorting may end up different from what git-add would do (for example, 'boost' appearing before 'boost-build.jam', because Git sorts as if it were spelled 'boost/'). If the sorting is incorrect like this, Git 1.7.4 insists that unmodified files have been modified. For example, my test repository has these four entries: drwxr-xr-x 199 johnw wheel 6766 Feb 2 17:21 boost -rw-r--r-- 1 johnw wheel 849 Feb 2 17:22 boost-build.jam -rw-r--r-- 1 johnw wheel 989 Feb 2 17:21 boost.css -rw-r--r-- 1 johnw wheel 6308 Feb 2 17:21 boost.png Here is the output from git-ls-tree for these files, in a commit tree created using git-add and git-commit: 100644 blob 8b8775433aef73e9e12609610ae2e35cf1e7ec2c boost-build.jam 100644 blob 986c4050fa96d825a1311c8e871cdcc9a3e0d2c3 boost.css 100644 blob b4d51fcd5c9149fd77f5ca6ed2b6b1b70e8fe24f boost.png 040000 tree 46537eeaa4d577010f19b1c9e940cae9a670ff5c boost Here is the output for the same commit produced using libgit2: 040000 tree c27c0fd1436f28a6ba99acd0a6c17d178ed58288 boost 100644 blob 8b8775433aef73e9e12609610ae2e35cf1e7ec2c boost-build.jam 100644 blob 986c4050fa96d825a1311c8e871cdcc9a3e0d2c3 boost.css 100644 blob b4d51fcd5c9149fd77f5ca6ed2b6b1b70e8fe24f boost.png Due to this reordering, git-status claims the three blobs are always modified, no matter what I do using git-read-tree or git-reset or git-checkout to update the index.
John Wiegley committed
-