Log

Author Commit Date CI Message
Remy Suen 12b7394c 2017-03-20T22:30:37 Fix typo in remote.h API
Edward Thomson 1d50f955 2017-03-20T11:29:27 Merge pull request #4166 from pks-t/pks/map-free-fix Remove `map_free` macros
Patrick Steinhardt 31059923 2017-03-20T12:16:18 Merge pull request #4169 from csware/absolute-symlink
Patrick Steinhardt c10ce7c2 2017-03-20T12:11:05 tests: filebuf: test writing to symlink with absolute paths
Sven Strickroth2 86a8cd9f 2017-03-20T11:21:00 filebuf: fix resolving absolute symlinks The symlink destination is always concatenated to the original path. Fix this by using `git_buf_sets` instead of `git_buf_puts`.
Patrick Steinhardt e30a6ee3 2017-03-20T11:06:23 Merge pull request #4160 from pks-t/pks/diff-fixes Diff fixes
Patrick Steinhardt 44b3b9fe 2017-03-20T11:05:03 Merge pull request #4162 from pks-t/pks/merge-source-fixes merge_driver: fix const-correctness for source getters
Patrick Steinhardt 94af9155 2017-03-20T09:01:18 map: remove `*map_free` macros The `map_free` functions were not implemented as functions but instead as macros which also set the map to NULL. While this is most certainly sensible in most cases, we should prefer the more obvious behavior, namingly leaving the map pointer intact. Furthermore, this macro has been refactored incorrectly during the map-refactorings: the two statements are not actually grouped together by a `do { ... } while (0)` block, as it is required for macros to match the behavior of functions more closely. This has led to at least one subtle nesting error in `pack-objects.c`. The following code block ``` if (pb->object_ix) git_oidmap_free(pb->object_ix); ``` would be expanded to ``` if (pb->object_ix) git_oidmap__free(pb->object_ix); pb->object_ix = NULL; ``` which is not what one woudl expect. While it is not a bug here as it would simply become a no-op, the wrong implementation could lead to bugs in other occasions. Fix this by simply removing the macro altogether and replacing it with real function calls. This leaves the burden of setting the pointer to NULL afterwards to the caller, but this is actually expected and behaves like other `free` functions.
Patrick Steinhardt 77c8ee74 2017-03-20T08:59:30 checkout: fix double-free of checkout_data's mkdir_map We currently call `git_strmap_free` on `checkout_data.mkdir_map` in the `checkout_data_clear` function. The only thing protecting us from a double-free is that the `git_strmap_free` function is in fact not a function, but a macro that also sets the map to NULL. Remove the second call to `git_strmap_free` and explicitly set the map member to NULL.
Edward Thomson 6dfb983c 2017-03-15T15:03:45 Merge pull request #4161 from pks-t/pks/submodule-index-fix submodule: catch when submodule is not staged on update
Patrick Steinhardt bb342159 2017-03-15T11:46:15 merge_driver: fix const-correctness for source getters
Patrick Steinhardt 8051b47f 2017-03-15T08:20:26 Merge branch 'gumenikav/merge_driver_source_info'
Gumenik Alexandr 0608d5df 2017-03-06T12:30:31 merge_driver: add unresolved getters for git_merge_driver_source
Patrick Steinhardt 13bf4d7f 2017-03-14T15:04:18 Merge pull request #4146 from pks-t/pks/winhttp-errors winhttp: disambiguate error messages when sending requests
Patrick Steinhardt 32ecc98e 2017-03-14T14:53:32 submodule: catch when submodule is not staged on update When calling `git_submodule_update` on a submodule, we have to retrieve the ID of the submodule entry in the index. If the function is called on a submodule which is only partly initialized, the submodule entry may not be added to the index yet. This leads to an assert when trying to look up the blob later on. Fix the issue by checking if the index actually holds the submodule's ID and erroring out if it does not.
Patrick Steinhardt c0eba379 2017-03-14T11:01:19 diff_parse: correctly set options for parsed diffs The function `diff_parsed_alloc` allocates and initializes a `git_diff_parsed` structure. This structure also contains diff options. While we initialize its flags, we fail to do a real initialization of its values. This bites us when we want to actually use the generated diff as we do not se the option's version field, which is required to operate correctly. Fix the issue by executing `git_diff_init_options` on the embedded struct.
Patrick Steinhardt ad5a909c 2017-03-14T09:39:37 patch_parse: fix parsing minimal trailing diff line In a diff, the shortest possible hunk with a modification (that is, no deletion) results from a file with only one line with a single character which is removed. Thus the following hunk @@ -1 +1 @@ -a + is the shortest valid hunk modifying a line. The function parsing the hunk body though assumes that there must always be at least 4 bytes present to make up a valid hunk, which is obviously wrong in this case. The absolute minimum number of bytes required for a modification is actually 2 bytes, that is the "+" and the following newline. Note: if there is no trailing newline, the assumption will not be offended as the diff will have a line "\ No trailing newline" at its end. This patch fixes the issue by lowering the amount of bytes required.
Patrick Steinhardt 62a2fc06 2017-03-14T13:06:25 patch_generate: move `git_diff_foreach` to diff.c Now that the `git_diff_foreach` function does not depend on internals of the `git_patch_generated` structure anymore, we can easily move it to the actual diff code.
Patrick Steinhardt ace3508f 2017-03-14T10:37:47 patch_generate: fix `git_diff_foreach` only working with generated diffs The current logic of `git_diff_foreach` makes the assumption that all diffs passed in are actually derived from generated diffs. With these assumptions we try to derive the actual diff by inspecting either the working directory files or blobs of a repository. This obviously cannot work for diffs parsed from a file, where we do not necessarily have a repository at hand. Since the introduced split of parsed and generated patches, there are multiple functions which help us to handle patches generically, being indifferent from where they stem from. Use these functions and remove the old logic specific to generated patches. This allows re-using the same code for invoking the callbacks on the deltas.
Patrick Steinhardt 41019152 2017-03-14T10:01:56 patch_generate: remove duplicated logic Under the existing logic, we try to load patch contents differently, depending on whether the patch files stem from the working directory or not. But actually, the executed code paths are completely equal to each other -- so we were always the code despite the condition. Remove the condition altogether and conflate both code paths.
Carlos Martín Nieto 53454be8 2017-03-11T19:52:05 Merge pull request #4157 from adamniedzielski/4099-git-sort-time-uninteresting Skip uninteresting commits in revwalk timesort iterator
Carlos Martín Nieto 0b3623ac 2017-03-11T19:09:27 Merge pull request #4156 from libgit2/ethomson/readbuffer_dont_hash git_futils_readbuffer: don't compute sha-1
Edward Thomson ffd4df6b 2017-03-09T16:32:38 Merge pull request #4151 from novalis/dturner/rebase-submodule-untracked rebase: ignore untracked files in submodules
Adam Niedzielski c11c08a5 2017-03-09T14:01:10 Skip uninteresting commits in revwalk timesort iterator Fixes #4099
Edward Thomson 11c8e756 2017-03-09T12:26:23 git_futils_readbuffer: don't compute sha-1 Don't compute the sha-1 in `git_futils_readbuffer_updated` unless the checksum was requested. This means that `git_futils_readbuffer` will not calculate the checksum unnecessarily.
Edward Thomson b31b2360 2017-03-06T15:53:57 Merge pull request #4154 from libgit2/ethomson/namespaces Support namespaced references again
Edward Thomson 83580562 2017-03-06T13:14:47 refdb_fs: honor the namespace
Edward Thomson d24ae06d 2017-03-06T13:13:47 refs::namespace: add namespace tests These simple tests only ensure that we enforce the existence of a namespace; these mirror the rugged tests, they are not exhaustive.
David Turner 2270ca9f 2017-03-03T13:27:47 rebase: ignore untracked files in submodules An untracked file in a submodule should not prevent a rebase from starting. Even if the submodule's SHA is changed, and that file would conflict with a new tracked file, it's still OK to start the rebase and discover the conflict later. Signed-off-by: David Turner <dturner@twosigma.com>
Carlos Martín Nieto 467185ff 2017-03-03T16:12:12 Merge pull request #4150 from libgit2/ethomson/freshen_trees git_commit_create: freshen tree objects in commit
Edward Thomson 52d03f37 2017-03-03T13:26:29 git_commit_create: freshen tree objects in commit Freshen the tree object that a commit points to during commit time.
Carlos Martín Nieto 3348570a 2017-03-03T12:36:36 Merge pull request #4136 from libgit2/ethomson/sha1dc Introduce (optional) SHA1 collision attack detection
Edward Thomson 9f128d2a 2017-03-02T20:56:47 cmake: drop unset `SHA1_TYPE` We never set `SHA1_TYPE` to `builtin`. Don't bother testing for it.
Edward Thomson d087c8f8 2017-02-24T14:14:56 hash: test for sha1 collision attack detection
Edward Thomson 2dfd1294 2017-02-24T13:34:01 hash: include sha1collisiondetection Include the SHA1 collision attack detection library from https://github.com/cr-marcstevens/sha1collisiondetection
Edward Thomson a371a8ae 2017-02-24T13:03:15 hash: rename implementation selection constants
Patrick Steinhardt ba2bc491 2017-03-01T14:51:39 Merge pull request #4148 from pks-t/pks/fix-haiku-builds cmake: only enable supported compiler warning flags
Patrick Steinhardt a02e8a38 2017-03-01T13:58:15 cmake: only enable supported compiler warning flags We currently unconditionally enable the "-Wall" and "-Wextra" flags. Some platforms rely on compilers which do not support these flags, though. One of these platforms is Haiku, which does not support "-Wextra" due to being stuck on GCC version 2. Fix builds on such platforms by adding these flags only if supported by the compiler.
Patrick Steinhardt a454641e 2017-03-01T08:45:48 Merge pull request #4145 from pks-t/pks/refs-create-memleak tests: refs::create: fix memory leak
Patrick Steinhardt b65a5e9b 2017-03-01T07:58:40 winhttp: disambiguate error messages when sending requests
Patrick Steinhardt 5aa1f12a 2017-03-01T07:45:14 tests: refs::create: fix memory leak
Patrick Steinhardt cf8e9a3a 2017-03-01T07:35:44 Merge pull request #4143 from richardipsum/issue-4094 Fix: make reflog include "(merge)" for merge commits
Richard Ipsum 397cf1a1 2017-02-28T22:22:02 Add test for inclusion of (merge) in reflog This test ensures that the string '(merge)' is included in the reflog when a merge commit is made.
Richard Ipsum 1255a9ac 2017-02-26T13:34:13 Fix: make reflog include "(merge)" for merge commits This fixes issue #4094
Edward Thomson a4b5ac64 2017-02-26T16:12:30 Merge pull request #4138 from richardipsum/symbolic-create-arbitrary-tgt-test tests: Add create__symbolic_with_arbitrary_content
Edward Thomson 55d911d6 2017-02-26T16:08:00 Merge pull request #4142 from pblesi/patch-1 Fix minor typos in CONVENTIONS.md
Edward Thomson 6313a208 2017-02-26T16:01:32 Merge pull request #4141 from kainjow/patch-2 Fix inet_pton tests triggering an assert in Haiku
Patrick Blesi c1239e33 2017-02-25T23:09:42 Fix minor typos in CONVENTIONS.md
Kevin Wojniak 40170177 2017-02-25T10:21:59 Fix inet_pton tests triggering an assert in Haiku Haiku will assert in a nightly build if the "dst" input to inet_pton() is NULL.
Richard Ipsum b84e58f4 2017-02-25T14:17:10 Whitespace and style fixes Use C style comments as per style guide, and fix mismatching indentation.
Richard Ipsum d2b3a21f 2017-01-22T00:21:30 tests: Add create__symbolic_with_arbitrary_content This test ensures that it's possible to create a symbolic ref that has arbitrary data as its target. It also ensures it's possible to obtain the target of that symbolic reference from the git_reference object.
Edward Thomson 7143145f 2017-02-25T12:45:14 Merge pull request #4137 from libgit2/ethomson/appveyor appveyor: don't rewrite the system mingw
Edward Thomson 408a7b77 2017-02-24T17:37:00 appveyor: don't rewrite system mingw Download mingw-w64 into our build directory and execute it there, don't try to overwrite the system's mingw.
Edward Thomson c3abb1d2 2017-02-24T17:38:42 appveyor: always build the 'appveyor' branch The 'appveyor' branch is useful for testing AppVeyor builds.
Patrick Steinhardt 7f875fb4 2017-02-24T08:51:50 Merge pull request #4133 from stinb/khash-cleanup-regression fix regression from #4092
Jason Haslam 685f2251 2017-02-22T09:29:00 pack: fix looping over cache entries Fixes a regression from #4092. This is a crash on 32-bit and I assume that it doesn't do the right thing on 64-bit either. MSVC emits a warning for this, but of course, it's easy to get lost among all of the similar 'possible loss of data' warnings.
Carlos Martín Nieto c03f00ea 2017-02-22T16:30:57 Merge pull request #4131 from pks-t/pks/attrcache-cleanups Attrcache cleanups
Carlos Martín Nieto 86201b92 2017-02-22T16:17:54 Merge pull request #4135 from libgit2/ethomson/ancient_gcc_not_threadsafe Provide error on gcc < 4.1 when THREADSAFE
Edward Thomson aa5ea47f 2017-02-22T10:34:19 Provide error on gcc < 4.1 when THREADSAFE Provide a descriptive error message when compiling THREADSAFE on gcc versions < 4.1. We require the atomic primitives (eg `__sync_synchronize`) that were introduced in that version. (Note, clang setes `__GNUC__` but appears to set its version > 4.1.)
Patrick Steinhardt ce6f61da 2017-02-21T15:14:04 attrcache: remove useless `do_init` indirection Remove useless indirection from `git_attr_cache__init` to `git_attr_cache__do_init`. The difference is that the `git_attr_cache__init` macro first checks if the cache is already initialized and, if so, not call `git_attr_cache__do_init`. But actually, `git_attr_cache__do_init` already does the same thing and returns immediately if the cache is already initialized. Remove the indirection.
Patrick Steinhardt c1151010 2017-02-21T11:52:15 attrcache: replace existing file entry with `git__swap` When doing an upsert of a file, we used to use `git__compare_and_swap`, comparing the entry's file which is to be replaced with itself. This can be more easily formulated by using `git__swap`, which unconditionally replaces the value.
Patrick Steinhardt b8ab782a 2017-02-21T11:43:32 attrcache: do not lock/unlock the mutex directly Improve encapsulation by not referencing the attrcache mutex directly but instead using the `attr_cache_lock` and `attr_cache_unlock` functions.
Edward Thomson b13f0da1 2017-02-17T16:32:14 Merge pull request #4130 from libgit2/ethomson/clar_messages Improve clar messages
Edward Thomson c52480fd 2017-02-17T13:01:49 `cl_git_exec` -> `cl_git_expect`
Edward Thomson a1dcc830 2017-02-17T12:13:35 tests: provide better pass/failure error messages Provide more detailed messages when conditions pass or fail unexpectedly. In particular, this provides the error messages when a test fails with a different error code than was expected.
Edward Thomson cc172642 2017-02-17T12:10:19 p_snprintf: no need for arguments to a format `snprintf` requires a _format_ but does not require _arguments_ to the format. eg: `snprintf(buf, 42, "hi")` is perfectly legal. Expand the macro to match. Without this, `p_sprintf(buf, 42, "hi")` errors with: ``` error: expected expression p_snprintf(msg, 42, "hi"); ^ src/unix/posix.h:53:34: note: expanded from macro 'p_snprintf' ^ /usr/include/secure/_stdio.h:57:73: note: expanded from macro 'snprintf' __builtin___snprintf_chk (str, len, 0, __darwin_obsz(str), __VA_ARGS__) ```
Patrick Steinhardt d0c72a92 2017-02-17T12:41:05 Merge pull request #4092 from pks-t/pks/khash-cleanups khash cleanups
Patrick Steinhardt 8f1ff26b 2017-02-02T13:09:32 idxmap: remove GIT__USE_IDXMAP
Patrick Steinhardt cee9ca66 2017-02-02T12:20:17 idxmap: convert to use functions instead of macros
Patrick Steinhardt 8f5fe903 2017-02-02T11:58:48 offmap: remove GIT__USE_OFFMAP macro
Patrick Steinhardt cf6124d6 2017-02-02T11:57:31 offmap: convert to use functions instead of macros
Patrick Steinhardt 0d716905 2017-01-27T15:23:15 oidmap: remove GIT__USE_OIDMAP macro
Patrick Steinhardt 659f5d07 2017-01-27T14:53:23 oidmap: convert macros to functions
Patrick Steinhardt 13c3bc9a 2017-01-27T14:32:23 strmap: remove GIT__USE_STRMAP macro
Patrick Steinhardt a13cfd2a 2017-01-27T14:13:49 strmap: convert macros to functions
Patrick Steinhardt f14f75d4 2017-02-02T13:08:52 khash: avoid using `kh_resize` directly
Patrick Steinhardt 73028af8 2017-01-27T14:20:24 khash: avoid using macro magic to get return address
Patrick Steinhardt 85d2748c 2017-01-27T14:05:10 khash: avoid using `kh_key`/`kh_val` as lvalue
Patrick Steinhardt f31cb45a 2017-01-25T15:31:12 khash: avoid using `kh_put` directly
Patrick Steinhardt a8cd560b 2017-01-25T14:41:17 khash: avoid using `kh_del` directly
Patrick Steinhardt 71a54317 2017-01-25T14:32:23 khash: avoid using `kh_key` directly
Patrick Steinhardt cb18386f 2017-01-25T14:26:58 khash: avoid using `kh_val`/`kh_value` directly
Patrick Steinhardt 76e671a6 2017-01-25T14:20:56 khash: avoid using `kh_exist` directly
Patrick Steinhardt c37b069b 2017-01-25T14:16:35 khash: avoid using `kh_clear` directly
Patrick Steinhardt a853c527 2017-01-25T14:14:32 khash: avoid using `kh_get` directly
Patrick Steinhardt 64e46dc3 2017-01-25T14:14:12 khash: avoid using `kh_end` directly
Patrick Steinhardt 036daa59 2017-01-25T14:11:42 khash: use `git_map_exists` where applicable
Patrick Steinhardt 9694d9ba 2017-01-25T14:09:17 khash: avoid using `kh_foreach`/`kh_foreach_value` directly
Patrick Steinhardt 63e914cb 2017-01-25T14:05:24 khash: avoid using `kh_size` directly
Patrick Steinhardt a1b23df5 2017-01-27T14:15:45 offmap: remove unused macro `git_offmap_insert2`
Patrick Steinhardt bff9b7a5 2017-01-25T14:12:13 strmap: remove unused macro `git_strmap_insert2`
Patrick Steinhardt 021f4943 2017-02-17T11:14:53 Merge pull request #4124 from pks-t/pks/worktree-refs refdb: catch additional per-worktree refs
Edward Thomson 95248be7 2017-02-16T22:30:33 Merge pull request #4127 from Uncommon/comment Minor comment fix
David Catmull 19874e29 2017-02-16T08:40:49 Minor comment fix
Patrick Steinhardt 6da6b425 2017-02-14T11:13:32 refdb: catch additional per-worktree refs The upstream git.git project currently identifies all references inside of `refs/bisect/` as well as `HEAD` as per-worktree references. This is already incorrect and is currently being fixed by an in-flight topic [1]. The new behavior will be to match all pseudo-references outside of the `refs/` hierarchy as well as `refs/bisect/`. Our current behavior is to mark a selection of pseudo-references as per-worktree, only. This matches more pseudo-references than current git, but forgets about `refs/bisect/`. Adjust behavior to match the in-flight topic, that is classify the following references as per-worktree: - everything outside of `refs/` - everything inside of `refs/bisect/` [1]: <20170213152011.12050-1-pclouds@gmail.com>
Edward Thomson a59545de 2017-02-13T14:38:12 Merge pull request #4122 from pks-t/pks/signature-dbl-free Signature cleanups
Patrick Steinhardt ade0d9c6 2017-02-13T13:46:17 commit: avoid possible use-after-free When extracting a commit's signature, we first free the object and only afterwards put its signature contents into the result buffer. This works in most cases - the free'd object will normally be cached anyway, so we only end up decrementing its reference count without actually freeing its contents. But in some more exotic setups, where caching is disabled, this can definitly be a problem, as we might be the only instance currently holding a reference to this object. Fix this issue by first extracting the contents and freeing the object afterwards only.
Patrick Steinhardt dc851d9e 2017-02-13T13:42:16 commit: clear user-provided buffers The functions `git_commit_header_field` and `git_commit_extract_signature` both receive buffers used to hand back the results to the user. While these functions called `git_buf_sanitize` on these buffers, this is not the right thing to do, as it will simply initialize or zero-terminate passed buffers. As we want to overwrite contents, we instead have to call `git_buf_clear` to completely reset them.
Edward Thomson c576d4ff 2017-02-13T12:46:00 Merge pull request #4115 from gsaralms/users/gsaral/optionalOfsDelta Changes to provide option to turn off/on ofs_delta
Patrick Steinhardt cdb2c2a0 2017-02-13T13:31:37 buffer: clarify how `git_buf_sanitize` handles non-NULL input When `git_buf_sanitize` gets called, it converts a buffer with NULL content to be correctly initialized. This is done by pointing it to `git_buf__initbuf`. While the method's documentation states this clearly, it may also lead to the conclusion that it will do the same to buffers which do _not_ have NULL contents. Clarify behavior when passing a buffer with non-NULL contents, where `git_buf_sanitize` will ensure that the contents are `\0`-terminated.