Log

Author Commit Date CI Message
Patrick Steinhardt e2625457 2016-02-09T11:07:50 checkout: fix resource leak
Patrick Steinhardt 39c9dd24 2016-02-09T10:53:30 pack-objects: fix memory leak in packbuilder_config
Patrick Steinhardt 0b2437bb 2016-02-09T10:43:28 pack-objects: fix memory leak in compute_write_order
Patrick Steinhardt a53d2e39 2016-02-09T09:58:56 pack: do not free passed in poiter on error The function `git_packfile_stream_open` tries to free the passed in stream when an error occurs. The only call site is `git_indexer_append`, though, which passes in the address of a stream struct which has not been allocated on the heap. Fix the issue by simply removing the call to free. In case of an error we did not allocate any memory yet and otherwise it should be the caller's responsibility to manage it's object's lifetime.
Carlos Martín Nieto e0bbe781 2016-02-09T06:41:02 Merge pull request #3598 from pks-t/pks/coverity-fixes Coverity fixes
Carlos Martín Nieto 463f5351 2016-02-09T06:26:21 Merge pull request #3601 from ethomson/merge_doc Better document `git_merge_commits` redux
Edward Thomson b00c959f 2016-02-08T17:55:22 Better document `git_merge_commits` redux `git_merge_commits` and `git_merge` now *do* handle recursive base building for criss-cross merges. Remove the documentation that says that they do not. This reverts commit 5e44d9bcb6d5b20922f49b1913723186f8ced8b5.
Edward Thomson 7cdbb39e 2016-02-08T17:14:43 Merge pull request #3600 from ethomson/mailmap mailmap: add ethomson@github.com
Edward Thomson 88a4d084 2016-02-02T14:50:35 mailmap: add ethomson@github.com
Patrick Steinhardt a001846b 2016-02-08T17:05:57 curl_stream: fix unused cert infos When copying contents of the cURL certiinfo we duplicate the data but forget to actually put it into the vector.
Patrick Steinhardt fac42ff9 2016-02-08T16:58:08 merge: fix memory leak
Carlos Martín Nieto 0f814deb 2016-02-06T16:41:59 Merge pull request #3592 from ethomson/code_of_conduct Introduce Contributor Covenant
Carlos Martín Nieto 240b6fed 2016-02-05T15:19:24 Merge pull request #3578 from bubaflub/fix_small_memory_leak Free allocated pointer to curl stream on error
Edward Thomson efa8208c 2016-02-05T09:37:40 Merge pull request #3579 from ethomson/mingw_winhttp winhttp: name mangle class / iid on mingw
Edward Thomson 45165b12 2016-02-04T16:43:23 Merge pull request #3584 from jbreeden/export_fn Export git_stash_apply_init_options
Edward Thomson d8f72159 2016-02-04T15:49:00 Merge pull request #3594 from Ephemera/patch-1 Fix typo
Ephemera 804bcd6b 2016-02-05T01:59:07 Fix typo
Edward Thomson 612f2a60 2016-02-04T08:43:47 Merge pull request #3593 from nvanheuverzwijn/patch-1 Fix a typo in documentation
Nicolas Vanheuverzwijn 1087e6be 2016-02-03T17:27:04 Fix a typo in documentation
Edward Thomson 846632cd 2016-02-02T14:49:25 Introduce Contributor Covenant
jbreeden d02720d8 2016-01-23T17:13:25 Export git_stash_apply_init_options
Edward Thomson 5c7f2f01 2016-01-19T11:13:23 winhttp: name mangle class / iid on mingw Standard Windows type systems define CLSID_InternetSecurityManager and IID_IInternetSecurityManager, but MinGW lacks these definitions. As a result, we must hardcode these definitions ourselves. However, we should not use a public struct with those names, lest another library do the same thing and consumers cannot link to both.
Bob Kuo 8bd1c19e 2016-01-16T19:39:24 Free allocated pointer to curl stream on error
Carlos Martín Nieto 0f9d1549 2016-01-16T02:29:17 Merge pull request #3573 from pmq20/master-12jan16 Make packfile_unpack_compressed a private API
Carlos Martín Nieto 47cf739e 2016-01-13T17:57:54 Merge pull request #3569 from arthurschreiber/arthur/fix-windows-issues Fix some issues with generated pkg-config file
P.S.V.R b644e223 2016-01-13T11:02:38 Make packfile_unpack_compressed a private API
Arthur Schreiber 768e185c 2016-01-05T21:55:11 Wrap path in quotes to support paths containing whitespace.
Arthur Schreiber 8a0133c0 2016-01-05T19:07:27 Add winhttp dependencies to pc file.
Carlos Martín Nieto 700f0aff 2015-12-29T13:38:01 Merge pull request #3562 from mgorny/ssh-read-stderr-fail ssh_stream_read(): fix possible *bytes_read < 0 branch
Carlos Martín Nieto a3776489 2015-12-28T15:12:37 Merge pull request #3558 from libgit2/cmn/index-nolock index: get rid of the locking
Carlos Martín Nieto 9d81509a 2015-12-23T11:54:52 index: get rid of the locking We don't support using an index object from multiple threads at the same time, so the locking doesn't have any effect when following the rules. If not following the rules, things are going to break down anyway.
Carlos Martín Nieto ccad5a99 2015-12-28T11:22:48 Merge pull request #3565 from ethomson/templates Handle dotfiles as the repo template dir and inside the template dir
Edward Thomson 62602547 2015-12-26T22:39:22 git_repository_init: include dotfiles when copying templates Include dotfiles when copying template directory, which will handle both a template directory itself that begins with a dotfile, and any dotfiles inside the directory.
Edward Thomson 00282183 2015-12-26T22:32:17 repo::init tests: test a template dir with leading dot Ensure that we can handle template directories that begin with a leading dot.
Edward Thomson 5c042c5b 2015-12-26T22:06:45 repo::init tests: test init.templatedir setting Ensure that `git_repository_init` honors the `init.templatedir` configuration setting.
Edward Thomson a066b4cb 2015-12-26T18:31:22 Merge pull request #3552 from ReadmeCritic/master Update README URLs based on HTTP redirects
ReadmeCritic 1ce509fe 2015-12-26T15:51:32 Update libgit2-glib link
Edward Thomson 869320a8 2015-12-26T16:55:29 Merge pull request #3546 from Cruel/master Fix a couple function signatures
Michał Górny 02fdc2db 2015-12-26T17:17:05 ssh_stream_read(): fix possible *bytes_read < 0 branch Fix the possibility of returning successfully from ssh_stream_read() with *bytes_read < 0. This would occur if stdout channel read resulted in 0, and stderr channel read failed afterwards.
Edward Thomson 3d29b12c 2015-12-23T23:38:59 Merge pull request #3560 from drusk/readme_typo Fixed minor typo in README.md.
drusk 22829b74 2015-12-23T21:27:40 Fixed minor typo in README.md.
Carlos Martín Nieto e9c0d796 2015-12-21T21:47:10 Merge pull request #3554 from olshevskiy87/master typos in comments
Dmitriy Olshevskiy 91f0d186 2015-12-21T20:49:14 typos in comments
ReadmeCritic 1181ca0c 2015-12-17T08:36:04 Update README URLs based on HTTP redirects
Vicent Marti 9ec6839a 2015-12-17T10:29:58 Merge pull request #3551 from libgit2/vmg/commit-leak commit: Fix memory leak in test suite
Vicent Marti 5951445f 2015-12-17T10:13:04 commit: Fix memory leak in test suite
Vicent Marti 1850c99c 2015-12-17T10:09:02 Merge pull request #3550 from libgit2/vmg/index-fill-2 Index fill: Small fixups
Carlos Martín Nieto 4baf2d8b 2015-12-16T21:58:47 Merge pull request #3548 from tepas/patch-1 fix git_blob_create_fromchunks documentation
Vicent Marti ef8b7feb 2015-12-16T19:36:50 index: Also size-hint the hash table Note that we're not checking whether the resize succeeds; in OOM cases, we let it run with a "small" vector and hash table and see if by chance we can grow it dynamically as we insert the new entries. Nothing to lose really.
Vicent Marti d7d46cfb 2015-12-16T17:00:25 index: Preallocate the entries vector with size hint
Vicent Marti 0cc20a8c 2015-12-16T16:53:06 index: Adjust namemask & mode when filling
Carlos Martín Nieto f824259e 2015-12-16T15:18:42 Merge pull request #3549 from libgit2/vmg/index-fill merge: Use `git_index__fill` to populate the index
Vicent Marti 879ebab3 2015-12-16T12:30:52 merge: Use `git_index__fill` to populate the index Instead of calling `git_index_add` in a loop, use the new `git_index_fill` internal API to fill the index with the initial staged entries. The new `fill` helper assumes that all the entries will be unique and valid, so it can append them at the end of the entries vector and only sort it once at the end. It performs no validation checks. This prevents the quadratic behavior caused by having to sort the entries list once after every insertion.
tepas cf339ede 2015-12-16T09:25:18 fix git_blob_create_fromchunks documentation putting `0.` at the start of the line turns it into a numbered list.
Thomas Edvalson 95746a57 2015-12-14T19:21:09 Fix a couple function signatures
Edward Thomson 7f2c1469 2015-12-14T13:54:02 Merge pull request #3528 from chescock/Passthrough-from-credential-callback Treat GIT_PASSTHROUGH as though git_cred_acquire_cb isn't set.
Edward Thomson 30c8e260 2015-12-14T13:53:26 Merge pull request #3521 from pks-t/blame-line-overflow Line count overflow in git_blame_hunk and git_blame__entry
Carlos Martín Nieto 6aa06b65 2015-12-10T12:14:09 Merge pull request #3522 from pks-t/email-format-commit-message diff: include commit message when formatting patch
Carlos Martín Nieto dc49eb58 2015-12-10T11:57:44 Merge pull request #3538 from pks-t/pks/index-memory-leak index: always queue `remove_entry` for removal
Carlos Martín Nieto 0a294217 2015-12-09T20:56:04 Merge pull request #3542 from libgit2/cmn/reset-dir-file reset: perform the checkout before moving HEAD or the index
Carlos Martín Nieto 465c3b38 2015-12-09T19:16:11 reset: perform the checkout before moving HEAD or the index This keeps the state of the workdir the same as one from HEAD, removing a source of possible confusion when calculating the work that is to be done.
Carlos Martín Nieto 82885255 2015-12-09T13:57:15 CHANGELOG: add some things we missed
Carlos Martín Nieto 21b1e015 2015-12-08T21:11:58 Merge pull request #3539 from libgit2/typedef-submodule-cb Use a typedef for the submodule_foreach callback.
Edward Thomson d698929c 2015-12-08T13:12:27 Merge pull request #3537 from libgit2/cmn/tree-is-sorted tree: mark a tree as already sorted
joshaber ab273821 2015-12-08T11:58:19 Play nice with the docs.
joshaber eda726cf 2015-12-08T11:34:00 Use a typedef for the submodule_foreach callback. This fits with the style for the rest of the project, but more importantly, makes life easier for bindings authors who auto-generate code.
Patrick Steinhardt b057fdef 2015-12-08T16:00:35 index: always queue `remove_entry` for removal When replacing an index with a new one, we need to iterate through all index entries in order to determine which entries are equal. When it is not possible to re-use old entries for the new index, we move it into a list of entries that are to be removed and thus free'd. When we encounter a non-zero error code, though, we skip adding the current index entry to the remove-queue. `INSERT_MAP_EX`, which is the function last run before adding to the remove-queue, may return a positive non-zero code that indicates what exactly happened while inserting the element. In this case we skip adding the entry to the remove-queue but still continue the current operation, leading to a leak of the current entry. Fix this by checking for a negative return value instead of a non-zero one when we want to add the current index entry to the remove-queue.
Carlos Martín Nieto fc436469 2015-12-06T22:51:00 tree: mark a tree as already sorted The trees are sorted on-disk, so we don't have to go over them again. This cuts almost a fifth of time spent parsing trees.
Carlos Martín Nieto a3dc4190 2015-12-06T18:11:54 Merge pull request #3526 from sschuberth/cmake-number-compare CMakeLists: Compare CMAKE_SIZEOF_VOID_P as a number, not as a string
Carlos Martín Nieto 8febe654 2015-12-06T18:11:37 Merge pull request #3529 from mgorny/fix-checkout-test-umask checkout test: Apply umask to file-mode test as well
Edward Thomson 5d1f31c6 2015-12-03T17:42:52 Merge pull request #3530 from libgit2/cmn/parse-mode tree: use a specialised mode parse function
Carlos Martín Nieto 2d36e145 2015-12-03T23:37:37 Merge pull request #3534 from ethomson/index_canonicalize_fix index: canonicalize inserted paths safely
Edward Thomson 626f9e24 2015-12-03T16:27:15 index: canonicalize inserted paths safely When adding to the index, we look to see if a portion of the given path matches a portion of a path in the index. If so, we will use the existing path information. For example, when adding `foo/bar.c`, if there is an index entry to `FOO/other` and the filesystem is case insensitive, then we will put `bar.c` into the existing tree instead of creating a new one with a different case. Use `strncmp` to do that instead of `memcmp`. When we `bsearch` into the index, we locate the position where the new entry would go. The index entry at that position does not necessarily have a relation to the entry we're adding, so we cannot make assumptions and use `memcmp`. Instead, compare them as strings. When canonicalizing paths, we look for the first index entry that matches a given substring.
Carlos Martín Nieto 0174f21b 2015-12-02T18:56:31 tree: use a specialised mode parse function Instead of going out to strtol, which is made to parse generic numbers, copy a parse function from git which is specialised for file modes.
Sebastian Schuberth 0878ca9b 2015-10-07T10:31:07 CMakeLists: Compare CMAKE_SIZEOF_VOID_P as a number, not as a string
Michał Górny 326c9fc2 2015-12-01T20:41:23 checkout test: Apply umask to file-mode test as well Fix the file-mode test to expect system umask being applied to the created file as well (it is currently applied to the directory only). This fixes the test on systems where umask != 022. Signed-off-by: Michał Górny <mgorny@gentoo.org>
Chris Hescock efd9ab56 2015-11-20T11:26:26 Treat GIT_PASSTHROUGH as though git_cred_acquire_cb isn't set.
Edward Thomson 15e6a5af 2015-12-01T08:45:55 Merge pull request #3527 from pks-t/pks/tree-entry-memleak tree: mark cloned tree entries as un-pooled
Patrick Steinhardt 9487585d 2015-12-01T14:19:29 tree: mark cloned tree entries as un-pooled When duplicating a `struct git_tree_entry` with `git_tree_entry_dup` the resulting structure is not allocated inside a memory pool. As we do a 1:1 copy of the original struct, though, we also copy the `pooled` field, which is set to `true` for pooled entries. This results in a huge memory leak as we never free tree entries that were duplicated from a pooled tree entry. Fix this by marking the newly duplicated entry as un-pooled.
Patrick Steinhardt 254e0a33 2015-11-24T13:43:43 diff: include commit message when formatting patch When formatting a patch as email we do not include the commit's message in the formatted patch output. Implement this and add a test that verifies behavior.
Patrick Steinhardt 7f8fe1d4 2015-12-01T10:03:56 commit: introduce `git_commit_body` It is already possible to get a commit's summary with the `git_commit_summary` function. It is not possible to get the remaining part of the commit message, that is the commit message's body. Fix this by introducing a new function `git_commit_body`.
Patrick Steinhardt 944dbd12 2015-11-24T10:52:17 blame: use size_t for line counts in git_blame__entry The `git_blame__entry` struct keeps track of line counts with `int` fields. Since `int` is only guaranteed to be at least 16 bits we may overflow on certain platforms when line counts exceed 2^15. Fix this by instead storing line counts in `size_t`.
Patrick Steinhardt cb1cb24c 2015-11-24T10:18:58 blame: use size_t for line counts in git_blame_hunk It is not unreasonable to have versioned files with a line count exceeding 2^16. Upon blaming such files we fail to correctly keep track of the lines as `git_blame_hunk` stores them in `uint16_t` fields. Fix this by converting the line fields of `git_blame_hunk` to `size_t`. Add test to verify behavior.
Edward Thomson 337b2b08 2015-11-30T20:53:54 Merge pull request #3508 from libgit2/cmn/tree-parse-speed Improvements to tree parsing speed
Carlos Martín Nieto a589f22a 2015-11-30T20:41:54 Merge pull request #3525 from pks-t/pks/fix-nested-struct-warning Compiler warning fixes
Patrick Steinhardt bbd2fa4e 2015-11-30T18:05:27 object: remove unused constant OBJECT_BASE_SIZE
Patrick Steinhardt a7bd157e 2015-11-30T17:40:49 tests: fix warning for nested struct initialization
Carlos Martín Nieto 95ae3520 2015-11-30T17:32:18 tree: ensure the entry filename fits in 16 bits Return an error in case the length is too big. Also take this opportunity to have a single allocating function for the size and overflow logic.
Carlos Martín Nieto a27f31d8 2015-11-30T04:49:31 Merge pull request #3513 from ethomson/merge_recursive Recursive Merge
Carlos Martín Nieto ee42bb0e 2015-11-28T19:18:29 tree: make path len uint16_t and avoid holes This reduces the size of the struct from 32 to 26 bytes, and leaves a single padding byte at the end of the struct (which comes from the zero-length array).
Carlos Martín Nieto 2580077f 2015-11-15T00:44:02 tree: calculate the filename length once We already know the size due to the `memchr()` so use that information instead of calling `strlen()` on it.
Carlos Martín Nieto ed970748 2015-11-14T23:50:06 tree: pool the entry memory allocations These are rather small allocations, so we end up spending a non-trivial amount of time asking the OS for memory. Since these entries are tied to the lifetime of their tree, we can give the tree a pool so we speed up the allocations.
Carlos Martín Nieto 7132150d 2015-11-14T23:46:21 tree: avoid advancing over the filename multiple times We've already looked at the filename with `memchr()` and then used `strlen()` to allocate the entry. We already know how much we have to advance to get to the object id, so add the filename length instead of looking at each byte again.
Edward Thomson 5b9c63c3 2015-11-20T19:01:42 recursive merge: add a recursion limit
Edward Thomson 78859c63 2015-11-20T17:33:49 merge: handle conflicts in recursive base building When building a recursive merge base, allow conflicts to occur. Use the file (with conflict markers) as the common ancestor. The user has already seen and dealt with this conflict by virtue of having a criss-cross merge. If they resolved this conflict identically in both branches, then there will be no conflict in the result. This is the best case scenario. If they did not resolve the conflict identically in the two branches, then we will generate a new conflict. If the user is simply using standard conflict output then the results will be fairly sensible. But if the user is using a mergetool or using diff3 output, then the common ancestor will be a conflict file (itself with diff3 output, haha!). This is quite terrible, but it matches git's behavior.
Edward Thomson 34a51428 2015-11-09T11:55:26 merge tests: add complex recursive example
Edward Thomson 651bfd69 2015-11-09T08:24:47 recursive: test conflict output during recursive merge
Edward Thomson dcde5720 2015-11-09T08:23:27 merge tests: move expected data into own file
Edward Thomson 76ade3a0 2015-11-10T21:21:26 merge: use annotated commits for recursion Use annotated commits to act as our virtual bases, instead of regular commits, to avoid polluting the odb with virtual base commits and trees. Instead, build an annotated commit with an index and pointers to the commits that it was merged from.
Edward Thomson 7730fe8e 2015-11-09T13:01:48 merge: merge annotated commits instead of regular commits