- May 28, 2016
-
-
Carlos Martín Nieto authored
-
- May 25, 2016
-
-
Carlos Martín Nieto authored
This makes sure we exercise the sorting that we need to do on the inputs.
-
- May 24, 2016
-
-
Carlos Martín Nieto authored
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 authored
Tree updater fixups
-
- May 19, 2016
-
-
Carlos Martín Nieto authored
-
Carlos Martín Nieto authored
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 authored
This gives us trees with subdirectories, which the new test needs.
-
Edward Thomson authored
Add a method specifically for modifying trees
-
- May 17, 2016
-
-
Carlos Martín Nieto authored
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.
-
- May 09, 2016
-
-
Edward Thomson authored
Misc fixes
-
Edward Thomson authored
Fix unused variable 'message' warning
-
- May 07, 2016
-
-
Carlos Martín Nieto authored
Fix `git_commit_create` for an initial commit
-
- May 06, 2016
-
-
Lucas Derraugh authored
-
- May 05, 2016
-
-
John Haley authored
`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.
-
Carlos Martín Nieto authored
Rebase: rebase a branch with no merge base for in-memory
-
- May 04, 2016
-
-
John Haley authored
-
John Haley authored
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.
-
Edward Thomson authored
-
Edward Thomson authored
-
Patrick Steinhardt authored
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.
-
- May 03, 2016
-
-
Edward Thomson authored
odb: avoid inflating the full delta to read the header
-
- May 02, 2016
-
-
Patrick Steinhardt authored
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 authored
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 authored
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 authored
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.
-
Carlos Martín Nieto authored
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.
-
Patrick Steinhardt authored
-
- Apr 30, 2016
-
-
Carlos Martín Nieto authored
cmake: include threading libraries in pkg-config
-
- Apr 29, 2016
-
-
Edward Thomson authored
Include any required threading libraries in our `libgit2.pc`.
-
Carlos Martín Nieto authored
Introduce `git_signature_from_buffer`
-
Edward Thomson authored
Fix return value of openssl_read (infinite loop)
-
Edward Thomson authored
Allow users to construct a signature from the type of signature lines that actually appear in commits.
-
- Apr 27, 2016
-
-
Christian Schlack authored
-
Carlos Martín Nieto authored
Annotated commits: differentiate between the ref names and the description
-
Edward Thomson authored
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.
-
Christian Schlack authored
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).
-
- Apr 26, 2016
-
-
Edward Thomson authored
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.
-
Carlos Martín Nieto authored
Remove traces of `git_blob_create_fromchunks`
-
Arthur Schreiber authored
-
Carlos Martín Nieto authored
Allow creating copies of `git_reference` objects.
-