- 24 May, 2016 2 commits
-
-
tree: handle removal of all entries in the updater
Carlos Martín Nieto committed -
When we remove all entries in a tree, we should remove that tree from its parent rather than include the empty tree.
Carlos Martín Nieto committed
-
- 23 May, 2016 1 commit
-
-
Tree updater fixups
Carlos Martín Nieto committed
-
- 19 May, 2016 3 commits
-
-
Carlos Martín Nieto committed
-
When we want to remove the file, use the basename as the name of the entry to remove, instead of the full one, which includes the directories we've inserted into the stack.
Carlos Martín Nieto committed -
This gives us trees with subdirectories, which the new test needs.
Carlos Martín Nieto committed
-
- 18 May, 2016 1 commit
-
-
Add a method specifically for modifying trees
Edward Thomson committed
-
- 17 May, 2016 1 commit
-
-
Instead of going through the usual steps of reading a tree recursively into an index, modifying it and writing it back out as a tree, introduce a function to perform simple updates more efficiently. `git_tree_create_updated` avoids reading trees which are not modified and supports upsert and delete operations. It is not as versatile as modifying the index, but it makes some common operations much more efficient.
Carlos Martín Nieto committed
-
- 09 May, 2016 1 commit
-
-
Misc fixes
Edward Thomson committed
-
- 08 May, 2016 1 commit
-
-
Fix unused variable 'message' warning
Edward Thomson committed
-
- 06 May, 2016 2 commits
-
-
Fix `git_commit_create` for an initial commit
Carlos Martín Nieto committed -
Lucas Derraugh committed
-
- 04 May, 2016 2 commits
-
-
`test_commit_commit__create_initial_commit_parent_not_current` was not correctly testing that `HEAD` was not changed. Now we grab the oid that it was pointing to before the call to `git_commit_create` and the oid that it's pointing to afterwards and compare those.
John Haley committed -
Rebase: rebase a branch with no merge base for in-memory
Carlos Martín Nieto committed
-
- 03 May, 2016 5 commits
-
-
John Haley committed
-
When calling `git_commit_create` with an empty array of `parents` and `parent_count == 0` the call will segfault at https://github.com/libgit2/libgit2/blob/master/src/commit.c#L107 when it's trying to compare `current_id` to a null parent oid. This just puts in a check to stop that segfault.
John Haley committed -
Edward Thomson committed
-
Edward Thomson committed
-
When determining diffs between two iterators we may need to recurse into an unmatched directory for the "new" iterator when it is either a prefix to the current item of the "old" iterator or when untracked/ignored changes are requested by the user and the directory is untracked/ignored. When advancing into the directory and no files are found, we will get back `GIT_ENOTFOUND`. If so, we simply skip the directory, handling resulting unmatched old items in the next iteration. The other case of `iterator_advance_into` returning either `GIT_NOERROR` or any other error but `GIT_ENOTFOUND` will be handled by the caller, which will now either compare the first directory entry of the "new" iterator in case of `GIT_ENOERROR` or abort on other cases. Improve readability of the code to make the above logic more clear.
Patrick Steinhardt committed
-
- 02 May, 2016 7 commits
-
-
odb: avoid inflating the full delta to read the header
Edward Thomson committed -
We compute offsets by executing `off |= (*delta++ << 24)` for multiple constants, where `off` is of type `size_t` and `delta` is of type `unsigned char`. The usual arithmetic conversions (see ISO C89 §3.2.1.5 "Usual arithmetic conversions") kick in here, causing us to promote both operands to `int` and then extending the result to an `unsigned long` when OR'ing it with `off`. The integer promotion to `int` may result in wrong size calculations for big values. Fix the issue by making the constants `unsigned long`, causing both operands to be promoted to `unsigned long`.
Patrick Steinhardt committed -
An object's size is computed by reading the object header's size field until the most significant bit is not set anymore. To get the total size, we increase the shift on each iteration and add the shifted value to the total size. We read the current value into a variable of type `unsigned char`, from which we then take all bits except the most significant bit and shift the result. We will end up with a maximum shift of 60, but this exceeds the width of the value's type, resulting in undefined behavior. Fix the issue by instead reading the values into a variable of type `unsigned long`, which matches the required width. This is equivalent to git.git, which uses an `unsigned long` as well.
Patrick Steinhardt committed -
When `git_repository__cvar` fails we may end up with a `ignorecase` value of `-1`. As we subsequently check if `ignorecase` is non-zero, we may end up reporting that data should be removed when in fact it should not. Err on the safer side and set `ignorecase = 0` when `git_repository__cvar` fails.
Patrick Steinhardt committed -
The `merge_file__xdiff` function checks if either `ours` or `theirs` is `NULL`. The function is to be called with existing files, though, and in fact already unconditionally dereferences both pointers. Remove the unnecessary check to silence warnings.
Patrick Steinhardt committed -
When we read the header, we want to know the size and type of the object. We're currently inflating the full delta in order to read the first few bytes. This can mean hundreds of kB needlessly inflated for large objects. Instead use a packfile stream to read just enough so we can read the two varints in the header and avoid inflating most of the delta.
Carlos Martín Nieto committed -
Patrick Steinhardt committed
-
- 29 Apr, 2016 4 commits
-
-
cmake: include threading libraries in pkg-config
Carlos Martín Nieto committed -
Include any required threading libraries in our `libgit2.pc`.
Edward Thomson committed -
Introduce `git_signature_from_buffer`
Carlos Martín Nieto committed -
Fix return value of openssl_read (infinite loop)
Edward Thomson committed
-
- 28 Apr, 2016 1 commit
-
-
Allow users to construct a signature from the type of signature lines that actually appear in commits.
Edward Thomson committed
-
- 27 Apr, 2016 1 commit
-
-
Christian Schlack committed
-
- 26 Apr, 2016 8 commits
-
-
Annotated commits: differentiate between the ref names and the description
Carlos Martín Nieto committed -
Differentiate between the ref_name used to create an annotated_commit (that can subsequently be used to look up the reference) and the description that we resolved this with (which _cannot_ be looked up). The description is used for things like reflogs (and may be a ref name, and ID something that we revparsed to get here), while the ref name must actually be a reference name, and is used for things like rebase to return to the initial branch.
Edward Thomson committed -
openssl_read should return -1 in case of error. SSL_read returns values <= 0 in case of error. A return value of 0 can lead to an infinite loop, so the return value of ssl_set_error will be returned if SSL_read is not successful (analog to openssl_write).
Christian Schlack committed -
Test that we can properly abort a rebase when it is initialized by a revspec. This ensures that we do not conflate revspecs and refnames.
Edward Thomson committed -
Remove traces of `git_blob_create_fromchunks`
Carlos Martín Nieto committed -
Arthur Schreiber committed
-
Allow creating copies of `git_reference` objects.
Carlos Martín Nieto committed -
Rebase improvements with IDs
Carlos Martín Nieto committed
-