- 26 May, 2016 12 commits
-
-
Introduce `git_zstream_inflatebuf` for simple uses.
Edward Thomson committed -
Refactor the git_delta functions to have consistent naming and parameters with the rest of the library.
Edward Thomson committed -
Move the delta application functions into `delta.c`, next to the similar delta creation functions. Make the `git__delta_apply` functions adhere to other naming and parameter style within the library.
Edward Thomson committed -
When a patch is empty, simply copy the source into the destination.
Edward Thomson committed -
Edward Thomson committed
-
The beginnings of patch application from an existing (diff-created) git_patch object: applies the hunks of a git_patch to a buffer.
Edward Thomson committed -
Use AppVeyor's Start-FileDownload cmdlet
Edward Thomson committed -
test: Fix stat() test to mask out unwanted bits
Edward Thomson committed -
Edward Thomson committed
-
Jason Haslam committed
-
Don't generate conflicts when checking out a modified submodule and the submodule is dirty or modified in the workdir.
Jason Haslam committed -
Fix comment for GIT_FILEMODE_LINK
Edward Thomson committed
-
- 25 May, 2016 1 commit
-
-
Start-FileDownload maintains current directory context and allows specifying a request timeout, see [1]. [1] https://www.appveyor.com/docs/how-to/download-file#start-filedownload-cmdlet
Sebastian Schuberth committed
-
- 24 May, 2016 3 commits
-
-
Haiku and Hurd both pass extra bits in struct stat::st_mode.
François Revol committed -
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 2 commits
-
-
0120000 is symbolic link, not commit
Carl Edquist committed -
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 6 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
-