Log

Author Commit Date CI Message
Vicent Marti 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>
Vicent Marti 772c7e76 2011-02-08T19:28:12 Merge branch 'git-reference-creation-tests' of https://github.com/nulltoken/libgit2
Przemyslaw Pawelczyk 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.
Przemyslaw Pawelczyk 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 .
nulltoken 1b7124f8 2011-02-07T17:37:54 Added tests exercising git_reference_write() to create a new symbolic reference and a new object id reference.
Vicent Marti 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>
Vicent Marti 8212e2d7 2011-02-07T18:25:23 Fix detection of working dir on repositories Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 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>
Vicent Marti 7a689719 2011-02-07T09:14:45 Merge branch 'master' of https://github.com/saschpe/libgit2 into saschpe-master Conflicts: CMakeLists.txt
Vicent Marti 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>
Vicent Marti 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>
Vicent Marti 2e75e156 2011-02-07T08:04:32 Merge branch 'refs-handling-tests' of https://github.com/nulltoken/libgit2
Vicent Marti e85c705f 2011-02-07T08:04:04 Merge branch 'join-path-tests' of https://github.com/nulltoken/libgit2
Vicent Marti 13317a5e 2011-02-07T08:03:06 Merge branch 'chobie_git_dir_fix' of https://github.com/chobie/libgit2
John Wiegley e769e025 2011-02-07T00:11:17 Git does not like zero padded file attributes (git fsck)
John Wiegley 5bf42916 2011-02-07T00:11:00 Further correction to tree entry sorting (for git fsck)
Shuhei Tanuma 56ab8c54 2011-02-06T15:48:52 fix can't detect repository index issues.
nulltoken fc8afc87 2011-02-06T07:48:17 Fix a memory leak in git__joinpath() tests.
nulltoken a79e8e63 2011-02-05T19:22:44 Fixed a small issue in git__join_path(). Added tests to exercise git__join_path().
nulltoken ca0fb40a 2011-02-05T17:18:27 Made test index_write_test() remove the test file it has created. It can now be run twice in a row without failing.
Vicent Marti fb8dd803 2011-02-05T19:49:42 Merge branch 'sqlite-backend'
Vicent Marti c041af95 2011-02-05T19:45:57 Add support for SQLite backends 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 95901128 2011-02-05T18:17:01 Move data from t03 to a separate header Signed-off-by: Vicent Marti <tanoku@gmail.com>
nulltoken 1af8c748 2011-02-05T15:24:08 Enforced refs handling tests. - Added a test to ensure that a nested symbolic reference is properly resolved. - Added comparisons of object ids.
nulltoken 40be9ae0 2011-02-05T15:03:48 Fixes a Win32/MSVC compilation issue.
Vicent Marti 412b3887 2011-02-05T13:12:02 Add new utility method `git__joinpath` Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti f725931b 2011-02-05T12:42:41 Fix directory/path manipulation methods 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 c836c332 2011-02-05T09:29:37 Make more methods return error codes 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 4569bfa5 2011-02-05T09:11:17 Keep the tree entries always internally sorted 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 5d773a6e 2011-02-05T09:00:09 Merge branch 'master' of https://github.com/jwiegley/libgit2
John Wiegley 35786cb7 2011-02-02T19:00:26 Use Git's own tree entry sorting algorithm 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.
Vicent Marti ddc9e79a 2011-02-02T06:16:50 Fix more issues with Win32 EOL Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti ff5873ad 2011-02-02T04:01:14 Fix EOL issues in ref parsing under Win32 Reference files can be loaded using Win32 line endings, too. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 87d82994 2011-02-02T02:32:21 Make the test return an error code on failure Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti b02c371e 2011-02-02T02:31:58 Build the new test file with CMake too Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 2a1732b4 2011-02-02T02:15:25 Rewrite the unit testing suite NIH Enterprises presents: a new testing system based on CuTesT, which is faster than our previous one and fortunately uses no preprocessing on the source files, which means we can run that from CMake. The test suites have been gathered together into bigger files (one file per suite, testing each of the different submodules of the library). Signed-off-by: Vicent Marti <tanoku@gmail.com>
John Wiegley bf3389b9 2011-02-01T05:57:45 Fixed bug where git__source_printf needs multiple attempts
John Wiegley 9217bbda 2011-02-01T05:00:52 Fixed a bug with the way commits are written
John Wiegley 89f9fc6f 2011-01-28T02:41:59 Make git_tree_clear_entries visible to the user
John Wiegley 75e051c6 2011-01-27T14:20:23 Added git_tree_add_entry_unsorted and git_tree_sort_entries
Vicent Marti b70e4f8a 2011-02-01T03:21:53 Add required includes in "oid.h" The file was previously failing to be included stand-alone.
Vicent Marti 2f8a8ab2 2011-01-29T01:56:25 Refactor reference parsing code Several changes have been committed to allow the user to create in-memory references and write back to disk. Peeling of symbolic references has been made explicit. Added getter and setter methods for all attributes on a reference. Added corresponding documentation. Signed-off-by: Vicent Marti <tanoku@gmail.com>
nulltoken 9282e921 2010-12-27T20:34:19 Merge nulltoken's reference parsing code All the commits have been squashed into a single one before refactoring the final code, to keep everything tidy. Individual commit messages are as follows: Added repository reference looking up functionality placeholder. Added basic reference database definition and caching infrastructure. Removed useless constant. Added GIT_EINVALIDREFNAME error and description. Added missing description for GIT_EBAREINDEX. Added GIT_EREFCORRUPTED error and description. Added GIT_ETOONESTEDSYMREF error and description. Added resolving of direct and symbolic references. Prepared the packed-refs parsing. Added parsing of the packed-refs file content. When no loose reference has been found, the full content of the packed-refs file is parsed. All of the new (i.e. not previously parsed as a loose reference) references are eagerly stored in the cached references storage. The method packed_reference_file__parse() is in deer need of some refactoring. :-) Extracted to a method the parsing of the peeled target of a tag. Extracted to a method the parsing of a standard packed ref. Fixed leaky removal of the cached references. Ensured that a previously parsed packed reference isn't returned if a more up-to-date loose reference exists. Enhanced documentation of git_repository_reference_lookup(). Moved some refs related constants from repository.c to refs.h. Made parsing of a packed tag reference more robust. Updated git_repository_reference_lookup() documentation. Added some references to the test repository. Added some tests covering tag references looking up. Added some tests covering symbolic and head references looking up. Added some tests covering packed references looking up.
nulltoken f2c24713 2011-01-26T20:29:06 Made path prettifying functions return GIT_EINVALIDPATH instead of GIT_ERROR.
nulltoken 2e6fd09c 2011-01-25T21:52:24 Fixed naming convention related issue.
nulltoken eb2f3b47 2011-01-23T19:01:57 Made git_repository_open2() and git_repository_open3() benefit from recently added path prettifying function.
nulltoken 618818dc 2011-01-23T16:15:11 Added git_prettify_file_path().
nulltoken 4581c22a 2011-01-22T14:38:47 Optimized git_prettify_dir_path() parsing.
nulltoken 9dd34b1e 2011-01-21T14:02:22 Made git_repository_open() and git_repository_init() benefit from recently added path prettifying function.
nulltoken ae7ffea9 2011-01-22T14:04:32 Fixed a parsing issue in git_prettify_dir_path().
Vicent Marti b29e8f19 2011-01-29T02:12:59 Return the created entry in git_tree_add_entry() Yes, we are breaking the API. Alpha software, deal with it. We need a way of getting a pointer to each newly added entry to the index, because manually looking up the entry after creation is outrageously expensive. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 37c2d54c 2011-01-20T15:57:13 Fix compilation on MinGW Require <sys/types.h> to find the definition for off64_t. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti c8f5ff8f 2011-01-20T14:43:27 Fix initialization of in-memory trees In-memory tree objects were not being properly initialized, because the internal entries vector was created on the 'parse' method. Signed-off-by: Vicent Marti <tanoku@gmail.com>
nulltoken e16c2f6a 2011-01-20T19:51:34 Small enhancements to git_prettify_dir_path(). - Secured buffer ahead reading. - Guard against potential multiple dot path traversal (cf http://cwe.mitre.org/data/definitions/33.html)
Vicent Marti e08b246c 2011-01-19T17:20:39 Fix signed/unsigned comparison warning Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti b5e567b9 2011-01-19T17:15:02 Merge branch 'dir-path-prettifying' of https://github.com/nulltoken/libgit2
Sascha Peilicke 2d5ef6ad 2011-01-18T21:35:57 Set proper shared library soname.
Vicent Marti ec3c7a16 2011-01-13T04:54:14 Add new Repository initialization method Lets the user specify the ODB that will be used by the repository manually. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti c5846fbf 2011-01-13T04:34:23 Fix typo on Commit API Proper function is 'git_commit_time_offset'. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti e52e38d3 2011-01-12T01:42:07 Move the compat definitions to types.h Don't need a brand new header for two typedefs when we already have a types.h header. Change comment style to ANSI C. Signed-off-by: Vicent Marti <tanoku@gmail.com>
nulltoken 170d3f2f 2011-01-11T20:12:53 Added git_prettify_dir_path(). Clean up a provided absolute or relative directory path. This prettification relies on basic operations such as coalescing multiple forward slashes into a single slash, removing '.' and './' current directory segments, and removing parent directory whenever '..' is encountered. If not empty, the returned path ends with a forward slash. For instance, this will turn "d1/s1///s2/..//../s3" into "d1/s3/". This only performs a string based analysis of the path. No checks are done to make sure the path actually makes sense from the file system perspective.
Alex Budovski f0bde7fa 2011-01-11T16:07:45 Revised platform types to use 'best supported' size. This will allow graceful migration to 64 bit file sizes and timestamps should git's binary interface be extended to allow this.
Alex Budovski e0c23b88 2011-01-11T17:50:37 Remove unused variable.
Alex Budovski 0a3bcad0 2011-01-10T14:57:06 Fix Windows build with forced bit truncation. Windows uses a 64 bit time_t by default and assigning to unsigned int causes a 64 -> 32 bit truncation warning. This change forces the truncation, acknowledging the implications detailed in the file comments. Also, blobs are limited to 32 bit file sizes for the same reason (on all platforms).
Vicent Marti 073fa812 2011-01-10T05:01:38 Use generic types in git_index_entry Off_t is not cool. It can be 32 or 64 bits depending on the platform, but on the Index format, it's always 32 bits. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 0740b462 2011-01-08T22:24:28 Merge branch 'master' of https://github.com/Neopallium/libgit2
Alex Budovski a17777d1 2011-01-07T11:35:43 Fixed two buffer handling errors in vector.c - remove() would read one-past array bounds. - resize() would fail if the initial size was 1, because it multiplied by 1.75 and truncated the resulting value. The buffer would always remain at size 1, but elements would repeatedly be appended (via insert()) causing a crash.
Alex Budovski 9ace34c8 2011-01-07T12:07:15 Revised build configuration for MSVC. Major changes and rationale: - /WX: absolutely vital when compiling in C-mode as the compiler is incredibly lenient on what is allowed to compile. It allows functions to be called without prototypes declared, treating them as functions returning int taking an unspecified (read: unrestricted) list of arguments, without any type checking! It will simply issue a warning, which is easily overlooked. A real example: it will allow you to call ceil(1.75) without first including <math.h> causing UB, returning bogus results like 1023 on the machine I tested on. - Release build separate from debug. Presently release builds don't exist. Consequently they are completely untested. Many bugs may only manifest themselves in release mode. The current configuration sets debug-only flags like /RTC1 which are incompatible with optimization (/O2). In addition, the Windows build of libgit2 has no optimized version. This change resolves this. - Added checksum generation in image headers. This is so debuggers don't complain about checksum mismatches and provides a small amount of consistency to binaries.
Vicent Marti 6f9024a7 2011-01-08T21:54:14 Add Delphi bindings to the readme Signed-off-by: Vicent Marti <tanoku@gmail.com>
Scott Chacon e04c7095 2011-01-08T08:02:19 added links to php and lua bindings
Robert G. Jakabosky 4b64c37f 2011-01-08T02:22:22 Fixed memory leak in git_commit__free().
Vicent Marti 2645053b 2011-01-04T01:17:07 Find proper path to 'ldconfig' on wscript Don't hardcode the '/sbin/ldconfig' path; also, don't run anything if ldconfig cannot be found (Mac OS X, for instance). Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti e52ed7a5 2011-01-03T22:34:27 Split object methods from repository.c All the relevant git_object methods have been moved to object.c Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti fb3cd6bc 2011-01-03T21:46:18 Make internal methods static Keep all the repository init code as static. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti d5f25204 2011-01-03T21:37:14 Merge branch 'repo-init' of https://github.com/nulltoken/libgit2 into nulltoken-repo-init
Vicent Marti e0646b38 2010-12-30T00:31:58 Add generic hash function to util.c It's MurmurHash3 slightly edited to make it cross-platform. Fast and neat. Use this for hashing strings on hash tables instead of a full SHA1 hash. It's very fast and well distributed. Obviously not crypto-secure. Signed-off-by: Vicent Marti <tanoku@gmail.com>
nulltoken 951d06e4 2010-12-26T17:00:35 Fixed placement of pointer argument.
nulltoken 98e3b298 2010-12-23T09:22:15 Merge branch 'master' into repo-init
Vicent Marti 51035184 2010-12-23T01:00:40 Prevent test manifests from being run The test runner was running the manifest and other crap files. Now it filters out to just the executables. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti e6c8966d 2010-12-23T00:49:34 Merge branch 'call-ldconfig-on-unix' of https://github.com/marvil07/libgit2
Vicent Marti f4649655 2010-12-23T00:48:35 Merge branch 'waf-pkgconfig-typo' of https://github.com/marvil07/libgit2
Vicent Marti e035685f 2010-12-23T00:44:41 Revert "Properly export all external symbols in Win32" It is not a good idea to export these internal symbols now that they are not required to run the unit tests. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti e7379f33 2010-12-23T00:43:07 Link tests with the raw objects Fix the test building issues once for all; each test is linked with the raw objects of the library, not with any compiled version. That way we make sure the tests always run, and are always linked with the latest and most up-to-date version of the code. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 9f54fe48 2010-12-23T00:15:09 Remove git_errno It was not being used by any methods (only by malloc and calloc), and since it needs to be TLS, it cannot be exported on DLLs on Windows. Burn it with fire. The API always returns error codes! Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 11f6646f 2010-12-22T22:51:24 Export TLS symbols properly in Win32 There was no export definition for GIT_EXTERN_TLS() under MSVC. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 2a18a792 2010-12-22T22:43:39 Properly export all external symbols in Win32 Some external functions were not being exported because they were using the 'extern' keyword instead of the generic GIT_EXTERN() macro. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 0847dff5 2010-12-22T21:57:48 Fix test builds in Win32 Use forward slashes for the TEST_RESOURCES definition. libgit2 uses only forward slashes. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Marco Villegas a58e6a5f 2010-12-22T13:39:13 Run ldconfig on install at unix platforms.
Marco Villegas bd6eb230 2010-12-22T04:02:18 minor: Let waf write the right values for prefix and libdir at pkg-config file.
nulltoken 2c08c3f0 2010-12-21T06:52:07 Made is_windows_rooted_path() able to cope with awkward but valid relative paths such as "C:..\File.txt". Path "C:..\File.txt" refers to a file called File.txt located in the parent directory of the current directory on drive C:.
nulltoken 23a1edbd 2010-12-21T05:43:47 Wrapped the detection of a Windows rooted path within a conditional compilation directive.
nulltoken f2d6a23a 2010-12-21T05:21:33 Small code maintenability improvement.
nulltoken 8ea2c83b 2010-12-20T16:46:13 Added creation of 'objects/info' and 'objects/pack' directories.
nulltoken 2e29957a 2010-12-20T10:56:32 Made gitfo_mkdir_recurs() skip creation of the root of the path if it looks like a Windows drive.
nulltoken 412de9a6 2010-12-20T10:43:23 Made gitfo_mkdir_recurs() gracefully recover when a given directory already exists.
Vicent Marti 40c44d2f 2010-12-19T22:50:20 Fix issues in repository initialization Implemented recursive directory creation Fix style issues Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti fe93dabe 2010-12-19T21:30:15 Merge branch 'repo-init' of https://github.com/nulltoken/libgit2 into nulltoken-repo-init
nulltoken 1c2c7c0d 2010-12-19T15:08:53 Added creation of ref/heads/ and refs/tags/ directories.
nulltoken 8ea7fbc0 2010-12-18T22:27:26 Fixed a nasty bug which was preventing correct generation of the signature.
Vicent Marti f70cbbc5 2010-12-18T03:16:04 Link tests with shared library, not static Signed-off-by: Vicent Marti <tanoku@gmail.com>