src


Log

Author Commit Date CI Message
Russell Belfer 3b19d2fd 2014-01-24T09:46:22 Permission for Git code from a couple more This brings over the Pascal and CSharp userdiff data.
Russell Belfer c7c260a5 2014-01-23T16:12:39 Got some permission to use userdiff patterns I contacted a number of Git authors and lined up their permission to relicense their work for use in libgit2 and copied over their code for diff driver xfuncname patterns. At this point, the code I've copied is taken verbatim from core Git although Thomas Rast warned me that the C++ patterns, at least, really need an update. I've left off patterns where I don't feel like I have permission at this point until I hear from more authors.
Russell Belfer b8e86c62 2014-01-21T12:00:08 Implement matched pattern extract for fn headers
Russell Belfer 2c65602e 2014-01-21T10:39:27 Import git drivers and test HTML driver Reorganize the builtin driver table slightly so that core Git builtin definitions can be imported verbatim. Then take a few of the core Git drivers and pull them in. This also creates a test of diffs with the builtin HTML driver which led to some small error handling fixes in the driver selection logic.
Russell Belfer a5a38643 2014-01-20T14:53:59 Initial take on builtin drivers with multiline This extends the diff driver parser to support multiline driver definitions along with ! prefixing for negated matches. This brings the driver function pattern parsing in line with core Git. This also adds an internal table of driver definitions and a fallback code path that will look in that table for diff drivers that are set with attributes without having a definition in the config file. Right now, I just populated the table with a kind of simple HTML definition that is similar to the core Git def.
Vicent Marti ca55fc63 2014-01-23T08:03:29 Merge pull request #2074 from linquize/pack-filename-sha1 Drop parsing pack filename SHA1 part
Linquize 8610487c 2014-01-23T23:28:28 Drop parsing pack filename SHA1 part, no one cares the filename
Vicent Marti ac8949ed 2014-01-22T15:41:25 Merge pull request #2073 from ethomson/zerobytes Sometimes a zero byte file is just a zero byte file
Edward Thomson 410a8e6f 2014-01-22T18:31:25 Sometimes a zero byte file is just a zero byte file Don't go to the ODB to resolve zero byte files in the workdir
Ben Straub ab4bcc03 2014-01-22T14:14:37 Plug a small memory leak
Edward Thomson 238e8149 2014-01-22T14:41:04 Summarize empty messages
Edward Thomson e8b81c69 2014-01-22T13:24:32 Preserve tree filemode in index during checkout Don't try to determine whether the system supports file modes when putting the tree data in the index during checkout. The tree's mode is canonical and did not come from stat(2) in the first place.
Nicolas Hake c05cd792 2014-01-22T17:51:32 Drop git_patch_to_str It's hard or even impossible to correctly free the string buffer allocated by git_patch_to_str in some circumstances. Drop the function so people have to use git_patch_to_buf instead - git_buf has a dedicated destructor.
Nicolas Hake 450e8e9e 2014-01-22T13:22:15 Expose patch serialization to git_buf Returning library-allocated strings from libgit2 works fine on Linux, but may cause problems on Windows because there is no one C Runtime that everything links against. With libgit2 not exposing its own allocator, freeing the string is a gamble. git_patch_to_str already serializes to a buffer, then returns the underlying memory. Expose the functionality directly, so callers can use the git_buf_free function to free the memory later.
Edward Thomson 0ef19fe1 2014-01-20T17:13:55 Merge submodules
Edward Thomson db3462ce 2014-01-19T22:36:50 Support union merges
Edward Thomson 0e1ba46c 2014-01-19T20:03:13 Remove the "merge none" flag The "merge none" (don't automerge) flag was only to aide in merge trivial tests. We can easily determine whether merge trivial resulted in a trivial merge or an automerge by examining the REUC after automerge has completed.
Edward Thomson 6891a862 2014-01-19T18:12:22 Load merge.conflictstyle setting from config
Edward Thomson e651e8e2 2014-01-19T15:05:08 Introduce diff3 mode for checking out conflicts
Edward Thomson 6b92c99b 2014-01-19T01:20:25 Don't try to merge binary files
Edward Thomson c1d648c5 2014-01-08T18:29:42 merge_file should use more aggressive levels The default merge_file level was XDL_MERGE_MINIMAL, which will produce conflicts where there should not be in the case where both sides were changed identically. Change the defaults to be more aggressive (XDL_MERGE_ZEALOUS) which will more aggressively compress non-conflicts. This matches git.git's defaults. Increase testing around reverting a previously reverted commit to illustrate this problem.
Russell Belfer d62bf0bf 2014-01-20T10:15:05 Merge pull request #2063 from linquize/reflog-msg-null git_reflog_entry_message can be null
Patrick Reynolds 7cbc6241 2014-01-20T11:41:21 fix corner cases and an undefined behavior
Linquize e7c66fc8 2014-01-20T23:32:18 git_reflog_entry_message can be null
Edward Thomson b97e55f2 2014-01-18T14:48:59 Merge pull request #2059 from linquize/git_config_get_crash Fix segfault when calling git_config_get_* functions when a config fails to load
Linquize c24130e0 2014-01-18T22:58:31 Fix segfault when calling git_config_get_* functions when a config fails to load Reinitialize the result code of get_entry() to GIT_ENOTFOUND
Russell Belfer 6b415f62 2014-01-17T13:46:44 Convert gitdir paths to posix on Windows Apparently, a .git file with "gitdir: path" link on Windows is allowed to use backslashes in the path. Who knew?
Vicent Marti f04c7dca 2014-01-15T11:54:10 Merge pull request #2050 from libgit2/cmn/always-reflog-message refs: remove the _with_log differentiation
Carlos Martín Nieto 0b28217b 2014-01-15T12:51:31 refs: remove the _with_log differentiation Any well-behaved program should write a descriptive message to the reflog whenever it updates a reference. Let's make this more prominent by removing the version without the reflog parameters.
Edward Thomson e85bbd52 2014-01-14T14:41:49 Move libgit2 settings out of util
Edward Thomson 39c2302a 2014-01-14T11:19:57 unnecessary include
Vicent Marti 3c1b3ded 2014-01-14T12:41:01 Merge pull request #2047 from arthurschreiber/arthur/fix-dup-functions Align `*_dup` functions
Arthur Schreiber 529f342a 2014-01-14T21:33:59 Align git_tree_entry_dup.
Arthur Schreiber 29be3a6d 2014-01-14T21:33:35 Align git_signature_dup. This changes git_signature_dup to actually honor oom conditions raised by the call to git__strdup. It also aligns it with the error code return pattern used everywhere else.
Arthur Schreiber 99dcb218 2014-01-14T21:08:20 We don't need memset here.
Arthur Schreiber 616cd137 2014-01-14T21:08:09 Don't duplicate state that's only used when fetching.
Arthur Schreiber 40ef47dd 2014-01-14T21:03:01 Add `git_remote_dup`.
Vicent Marti 557bd1f4 2014-01-14T10:27:57 Merge pull request #2043 from arthurschreiber/arthur/fix-memory-leaks Fix a bunch of memory leaks.
Arthur Schreiber 24953757 2014-01-14T19:08:58 Incorporate @arrbee's suggestions.
Edward Thomson 52a8a130 2014-01-06T16:41:12 Packbuilder contains its own zstream
Edward Thomson 0ade2f7a 2013-12-14T10:37:57 Packbuilder stream deflate instead of one-shot
Edward Thomson c6f26b48 2013-12-13T18:26:46 Refactor zlib for easier deflate streaming
Arthur Schreiber ac44b3d2 2014-01-13T23:28:03 Incorporate @ethomson's suggestions.
Arthur Schreiber b0b32b43 2014-01-13T22:51:10 Fix a double free issue in `git_blame__alloc`. `git_blame_free` already calls `git__free` on `gbr`.
Arthur Schreiber ddf1b1ff 2014-01-13T22:33:10 Fix a memory leak in `hash_and_save` and `inject_object`.
Arthur Schreiber a8e4cb11 2014-01-13T22:12:17 Fix a memory leak in `config_parse`.
Arthur Schreiber 1234738e 2014-01-13T22:12:02 Fix a memory leak in `git_config_iterator_glob_new`.
Arthur Schreiber 63170bca 2014-01-13T17:51:08 Fix a memory leak in `git_pathspec__vinit`.
Brodie Rao 2fcc0d07 2014-01-12T23:32:10 util: handle NULL pointers passed to git_strarray_free() Signed-off-by: Brodie Rao <brodie@sf.io>
Brodie Rao 2ad45213 2014-01-12T23:31:57 refs: handle NULL pointers passed to git_reference_iterator_free() Signed-off-by: Brodie Rao <brodie@sf.io>
Brodie Rao 32b7e84e 2014-01-12T23:31:35 oid: handle NULL pointers passed to git_oid_shorten_free() Signed-off-by: Brodie Rao <brodie@sf.io>
Brodie Rao ae3b6d61 2014-01-12T23:31:13 odb: handle NULL pointers passed to git_odb_stream_free Signed-off-by: Brodie Rao <brodie@sf.io>
Brodie Rao e3c6a1bf 2014-01-12T23:30:06 config: handle NULL pointers passed to git_config_iterator_free() Signed-off-by: Brodie Rao <brodie@sf.io>
Brodie Rao 9eb45fc5 2014-01-12T23:29:44 branch: handle NULL pointers passed to git_branch_iterator_free() Signed-off-by: Brodie Rao <brodie@sf.io>
Ben Straub 426d8456 2014-01-08T19:43:31 Merge pull request #2033 from xtao/blame_orig_commit Add orig_commit.
Edward Thomson 6adcaab7 2014-01-08T10:07:30 Handle git_buf's from users more liberally
Jacques Germishuys 551f5cef 2014-01-08T13:47:47 Solaris does not have qsort_r
XTao a06474f8 2014-01-08T11:19:12 Add orig_commit.
Vicent Marti fe959e52 2014-01-07T09:58:05 Merge pull request #2023 from arthurschreiber/patch-1 Add missing `git_reference_symbolic_create_with_log`.
Russell Belfer ac9f9231 2014-01-03T14:40:25 Merge pull request #2022 from KTXSoftware/development submodule branch option + little VS2013 fix
Russell Belfer b4998521 2014-01-03T11:37:23 Use our strnlen on MacOS for backward compat Apparently MacOS didn't have strnlen on 10.6 and earlier. To avoid having linking problems on older versions, we'll just use our internal version.
Russell Belfer 91524172 2014-01-02T14:30:24 Fix warnings with submodule changes
Arthur Schreiber 0b795178 2014-01-02T16:58:13 Allow the log message to be NULL.
Arthur Schreiber e5994eb0 2014-01-02T16:56:09 Add missing `git_reference_symbolic_create_with_log`. It's exported in the headers, but the implementation was missing.
Robert Konrad 10311979 2014-01-02T03:14:03 Read the submodule branch option from Git 1.8.2.
Robert Konrad 6014b7b5 2013-12-30T18:08:04 Fixed a compile error in VS2013.
Linquize 217fee9a 2013-12-29T11:30:38 Default value for fetchRecurseSubmodules should be yes
Linquize fccadba2 2013-12-29T10:26:21 Accept 'submodule.*.fetchRecurseSubmodules' config 'on-demand' value
Vicent Marti 4e1f517c 2013-12-18T09:33:45 Merge pull request #1920 from libgit2/cmn/ref-with-log Reference operations with log
Edward Thomson bf4a577c 2013-12-13T10:10:32 Overwrite ignored directories on checkout
Edward Thomson 81a2012d 2013-12-12T11:30:50 Overwrite ignored files on checkout
Vicent Marti 79194bcd 2013-12-13T06:20:19 Merge pull request #1986 from libgit2/rb/error-handling-cleanups Clean up some error handling and change callback error behavior
Vicent Marti 437f7d69 2013-12-13T12:41:22 pool: Correct overflow checks Ok, scrap the previous commit. This is the right overflow check that takes care of 64 bit overflow **and** 32-bit overflow, which needs to be considered because the pool malloc can only allocate 32-bit elements in one go.
Vicent Marti ce33645f 2013-12-13T12:25:48 pool: Cleanup error handling in pool_strdup Note that `git_pool_strdup` cannot really return any error codes, because the pool doesn't set errors on OOM. The only place where `giterr_set_oom` is called is in `git_pool_strndup`, in a conditional check that is always optimized away. `n + 1` cannot be zero if `n` is unsigned because the compiler doesn't take wraparound into account. This check has been removed altogether because `size_t` is not particularly going to overflow.
Edward Thomson 86a05ef3 2013-12-12T17:40:40 Validate struct versions in merge, revert
Russell Belfer 9cfce273 2013-12-12T12:11:38 Cleanups, renames, and leak fixes This renames git_vector_free_all to the better git_vector_free_deep and also contains a couple of memory leak fixes based on valgrind checks. The fixes are specifically: failure to free global dir path variables when not compiled with threading on and failure to free filters from the filter registry that had not be initialized fully.
Russell Belfer 7e3ed419 2013-12-11T16:56:17 Fix up some valgrind leaks and warnings
Russell Belfer 7697e541 2013-12-11T15:02:20 Test cancel from indexer progress callback This adds tests that try canceling an indexer operation from within the progress callback. After writing the tests, I wanted to run this under valgrind and had a number of errors in that situation because mmap wasn't working. I added a CMake option to force emulation of mmap and consolidated the Amiga-specific code into that new place (so we don't actually need separate Amiga code now, just have to turn on -DNO_MMAP). Additionally, I made the indexer code propagate error codes more reliably than it used to.
Russell Belfer 8f1066a0 2013-12-10T16:02:24 Update clone doc and tests for callback return val Clone callbacks can return non-zero values to cancel the clone. This adds some tests to verify that this actually works and updates the documentation to be clearer that this can happen and that the return value will be propagated back by the clone function.
Russell Belfer cbd04896 2013-12-10T14:38:35 Fix checkout notify callback docs and tests The checkout notify callback behavior on non-zero return values was not being tested. This adds tests, fixes a bug with positive values, and clarifies the documentation to make it clear that the checkout can be canceled via this mechanism.
Russell Belfer 19853bdd 2013-12-10T13:01:34 Update git_blob_create_fromchunks callback behavr The callback to supply data chunks could return a negative value to stop creation of the blob, but we were neither using GIT_EUSER nor propagating the return value. This makes things use the new behavior of returning the negative value back to the user.
Russell Belfer 26c1cb91 2013-12-09T09:44:03 One more rename/cleanup for callback err functions
Russell Belfer f10d7a36 2013-12-06T15:53:26 Further callback error check style fixes Okay, I've decided I like the readability of this style much better so I used it everywhere.
Russell Belfer c7b3e1b3 2013-12-06T15:42:20 Some callback error check style cleanups I find this easier to read...
Russell Belfer 60058018 2013-12-06T15:20:41 Fix C99 __func__ for MSVC
Russell Belfer 25e0b157 2013-12-06T15:07:57 Remove converting user error to GIT_EUSER This changes the behavior of callbacks so that the callback error code is not converted into GIT_EUSER and instead we propagate the return value through to the caller. Instead of using the giterr_capture and giterr_restore functions, we now rely on all functions to pass back the return value from a callback. To avoid having a return value with no error message, the user can call the public giterr_set_str or some such function to set an error message. There is a new helper 'giterr_set_callback' that functions can invoke after making a callback which ensures that some error message was set in case the callback did not set one. In places where the sign of the callback return value is meaningful (e.g. positive to skip, negative to abort), only the negative values are returned back to the caller, obviously, since the other values allow for continuing the loop. The hardest parts of this were in the checkout code where positive return values were overloaded as meaningful values for checkout. I fixed this by adding an output parameter to many of the internal checkout functions and removing the overload. This added some code, but it is probably a better implementation. There is some funkiness in the network code where user provided callbacks could be returning a positive or a negative value and we want to rely on that to cancel the loop. There are still a couple places where an user error might get turned into GIT_EUSER there, I think, though none exercised by the tests.
Russell Belfer fcd324c6 2013-12-06T15:04:31 Add git_vector_free_all There are a lot of places that we call git__free on each item in a vector and then call git_vector_free on the vector itself. This just wraps that up into one convenient helper function.
Russell Belfer dab89f9b 2013-12-04T21:22:57 Further EUSER and error propagation fixes This continues auditing all the places where GIT_EUSER is being returned and making sure to clear any existing error using the new giterr_user_cancel helper. As a result, places that relied on intercepting GIT_EUSER but having the old error preserved also needed to be cleaned up to correctly stash and then retrieve the actual error. Additionally, as I encountered places where error codes were not being propagated correctly, I tried to fix them up. A number of those fixes are included in the this commit as well.
Russell Belfer 96869a4e 2013-12-03T16:45:39 Improve GIT_EUSER handling This adds giterr_user_cancel to return GIT_EUSER and clear any error message that is sitting around. As a result of using that in places, we need to be more thorough with capturing errors that happen inside a callback when used internally. To help with that, this also adds giterr_capture and giterr_restore so that when we internally use a foreach-type function that clears errors and converts them to GIT_EUSER, it is easier to restore not just the return value, but the actual error message text.
Russell Belfer 9f77b3f6 2013-11-25T14:21:34 Add config read fns with controlled error behavior This adds `git_config__lookup_entry` which will look up a key in a config and return either the entry or NULL if the key was not present. Optionally, it can either suppress all errors or can return them (although not finding the key is not an error for this function). Unlike other accessors, this does not normalize the config key string, so it must only be used when the key is known to be in normalized form (i.e. all lower-case before the first dot and after the last dot, with no invalid characters). This also adds three high-level helper functions to look up config values with no errors and a fallback value. The three functions are for string, bool, and int values, and will resort to the fallback value for any error that arises. They are: * `git_config__get_string_force` * `git_config__get_bool_force` * `git_config__get_int_force` None of them normalize the config `key` either, so they can only be used for internal cases where the key is known to be in normal format.
Russell Belfer 0eedacb0 2013-12-11T10:39:36 Merge pull request #1985 from libgit2/diff-rename-config Rename detection using diff.renames
Ben Straub 5a52d6be 2013-12-11T06:43:17 Check version earlier
Edward Thomson 5588f073 2013-12-09T10:25:36 Clean up warnings
Carlos Martín Nieto f2105129 2013-11-23T14:39:53 refs: expose has_log() on the backend The frontend used to look at the file directly, but that's obviously not the right thing to do. Expose it on the backend and use that function instead.
Carlos Martín Nieto 8d5ec910 2013-11-23T14:13:01 refs: expose a way to ensure a ref has a log Sometimes (e.g. stash) we want to make sure that a log will be written, even if it's not in one of the standard locations. Let's make that easier.
Carlos Martín Nieto 6f13a305 2013-11-17T23:26:49 reflog: write to the reflog following git's rules git-core only writes to the reflogs of HEAD, refs/heads/ and, refs/notes/ or if there is already a reflog in place. Adjust our code to follow these semantics.
Edward Thomson 07c5dc84 2013-12-08T12:36:48 Merge pull request #1994 from palistov/commit-cleanup commit: Fix potential segfault
Paul Holden be0a1a79 2013-12-08T02:03:05 commit: Fix potential segfault in git_commit_message Dereferencing commit pointer before asserting
Jared Wong 307a3d67 2013-12-08T01:50:10 Fixed left shift size of int. Simply switched the ordering of the checks in the for loop where this left shift was being made.
Ben Straub 7fb4147f 2013-12-06T13:38:59 Don't clobber whitespace settings