- Sep 06, 2016
-
-
Edward Thomson authored
When creating and printing diffs, deal with binary deltas that have binary data specially, versus diffs that have a binary file but lack the actual binary data.
-
- Sep 03, 2016
-
-
Edward Thomson authored
Instead of skipping printing a binary diff when there is no data, skip printing when we have a status of `UNMODIFIED`. This is more in-line with our internal data model and allows us to expand the notion of binary data. In the future, there may have no data because the files were unmodified (there was no data to produce) or it may have no data because there was no data given to us in a patch. We want to treat these cases separately.
-
Edward Thomson authored
-
- Sep 02, 2016
-
-
Edward Thomson authored
patch_generate: only calculate binary diffs if requested
-
- Sep 01, 2016
-
-
Patrick Steinhardt authored
When generating diffs for binary files, we load and decompress the blobs in order to generate the actual diff, which can be very costly. While we cannot avoid this for the case when we are called with the `GIT_DIFF_SHOW_BINARY` flag, we do not have to load the blobs in the case where this flag is not set, as the caller is expected to have no interest in the actual content of binary files. Fix the issue by only generating a binary diff when the caller is actually interested in the diff. As libgit2 uses heuristics to determine that a blob contains binary data by inspecting its size without loading from the ODB, this saves us quite some time when diffing in a repository with binary files.
-
- Aug 30, 2016
-
-
Carlos Martín Nieto authored
tests: index: do not re-allocate index
-
Patrick Steinhardt authored
-
Stefan Huber authored
According to the reference the git_checkout_tree and git_checkout_head functions should accept NULL in the opts field This was broken since the opts field was dereferenced and thus lead to a crash.
-
- Aug 29, 2016
-
-
Edward Thomson authored
README: adjust URL to libqgit2 repository
-
Patrick Steinhardt authored
Plug a memory leak caused by re-allocating a `git_index` structure which has already been allocated by the test suite's initializer.
-
Patrick Steinhardt authored
-
Patrick Steinhardt authored
transports: http: set substream as disconnected after closing
-
- Aug 26, 2016
-
-
Edward Thomson authored
Teach `git_patch_from_diff` about parsed diffs
-
- Aug 24, 2016
-
-
Edward Thomson authored
Ensure that `git_patch_from_diff` can return the patch for parsed diffs, not just generate a patch for a generated diff.
-
Patrick Steinhardt authored
filesystem_iterator: fixed double free on error
-
- Aug 22, 2016
-
-
Jason Haslam authored
-
- Aug 17, 2016
-
-
Edward Thomson authored
Support index v4
-
Edward Thomson authored
ignore: allow unignoring basenames in subdirectories
-
Patrick Steinhardt authored
-
Patrick Steinhardt authored
When calling `http_connect` on a subtransport whose stream is already connected, we first close the stream in case no keep-alive is in use. When doing so, we do not reset the transport's connection state, though. Usually, this will do no harm in case the subsequent connect will succeed. But when the connection fails we are left with a substransport which is tagged as connected but which has no valid stream attached. Fix the issue by resetting the subtransport's connected-state when closing its stream in `http_connect`.
-
- Aug 12, 2016
-
-
Patrick Steinhardt authored
The .gitignore file allows for patterns which unignore previous ignore patterns. When unignoring a previous pattern, there are basically three cases how this is matched when no globbing is used: 1. when a previous file has been ignored, it can be unignored by using its exact name, e.g. foo/bar !foo/bar 2. when a file in a subdirectory has been ignored, it can be unignored by using its basename, e.g. foo/bar !bar 3. when all files with a basename are ignored, a specific file can be unignored again by specifying its path in a subdirectory, e.g. bar !foo/bar The first problem in libgit2 is that we did not correctly treat the second case. While we verified that the negative pattern matches the tail of the positive one, we did not verify if it only matches the basename of the positive pattern. So e.g. we would have also negated a pattern like foo/fruz_bar !bar Furthermore, we did not check for the third case, where a basename is being unignored in a certain subdirectory again. Both issues are fixed with this commit.
-
- Aug 11, 2016
-
-
David Turner authored
Support reading and writing index v4. Index v4 uses a very simple compression scheme for pathnames, but is otherwise similar to index v3. Signed-off-by:
David Turner <dturner@twitter.com>
-
David Turner authored
This code is ported from git.git Signed-off-by:
Junio C Hamano <gitster@pobox.com> Signed-off-by:
David Turner <dturner@twopensource.com>
-
- Aug 09, 2016
-
-
Carlos Martín Nieto authored
stransport memory management improvements
-
Edward Thomson authored
tests: blob: remove unused callback function
-
Patrick Steinhardt authored
-
Patrick Steinhardt authored
When failing to initialize a new stransport stream, we try to release already allocated memory by calling out to `git_stream_free`, which in turn called out to the stream's `free` function pointer. As we only initialize the function pointer later on, this leads to a `NULL` pointer exception. Furthermore, plug another memory leak when failing to create the SSL context.
-
- Aug 08, 2016
-
-
Carlos Martín Nieto authored
odb: only provide the empty tree
-
Edward Thomson authored
stransport: make internal functions static
-
Patrick Steinhardt authored
-
Carlos Martín Nieto authored
diff: document `git_diff_from_buffer`
-
- Aug 06, 2016
-
-
Edward Thomson authored
-
Edward Thomson authored
-
Edward Thomson authored
Only provide the empty tree internally, which matches git's behavior. If we provide the empty blob then any users trying to write it with libgit2 would omit it from actually landing in the odb, which appear to git proper as a broken repository (missing that object).
-
Edward Thomson authored
SecureTransport: handle NULL trust on success
-
Carlos Martín Nieto authored
The `SSLCopyPeerTrust` call can succeed but fail to return a trust object if it can't load the certificate chain and thus cannot check the validity of a certificate. This can lead to us calling `CFRelease` on a `NULL` trust object, causing a crash. Handle this by returning ECERTIFICATE.
-
Carlos Martín Nieto authored
clar: fix parsing of test suite prefixes
-
- Aug 05, 2016
-
-
Edward Thomson authored
Patch image initialization
-
Patrick Steinhardt authored
-
Patrick Steinhardt authored
-