rugged 0.27.7 → 0.27.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/AUTHORS +1 -0
- data/vendor/libgit2/CMakeLists.txt +99 -51
- data/vendor/libgit2/COPYING +28 -0
- data/vendor/libgit2/cmake/Modules/AddCFlagIfSupported.cmake +15 -1
- data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +29 -0
- data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +96 -0
- data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +9 -8
- data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
- data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
- data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +28 -0
- data/vendor/libgit2/cmake/Modules/FindIconv.cmake +11 -6
- data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +38 -0
- data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +37 -0
- data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
- data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +6 -0
- data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +110 -0
- data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +53 -0
- data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +124 -0
- data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +66 -0
- data/vendor/libgit2/deps/http-parser/http_parser.c +11 -6
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +21 -0
- data/vendor/libgit2/deps/ntlmclient/compat.h +33 -0
- data/vendor/libgit2/deps/ntlmclient/crypt.h +64 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +120 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +18 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +145 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +18 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +130 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +21 -0
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +1420 -0
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +174 -0
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +320 -0
- data/vendor/libgit2/deps/ntlmclient/unicode.h +36 -0
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +445 -0
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +201 -0
- data/vendor/libgit2/deps/ntlmclient/utf8.h +1257 -0
- data/vendor/libgit2/deps/ntlmclient/util.c +21 -0
- data/vendor/libgit2/deps/ntlmclient/util.h +14 -0
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +140 -0
- data/vendor/libgit2/deps/pcre/COPYING +5 -0
- data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +22 -0
- data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +17 -0
- data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +58 -0
- data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +29 -0
- data/vendor/libgit2/deps/pcre/config.h.in +57 -0
- data/vendor/libgit2/deps/pcre/pcre.h +641 -0
- data/vendor/libgit2/deps/pcre/pcre_byte_order.c +319 -0
- data/vendor/libgit2/deps/pcre/pcre_chartables.c +198 -0
- data/vendor/libgit2/deps/pcre/pcre_compile.c +9800 -0
- data/vendor/libgit2/deps/pcre/pcre_config.c +190 -0
- data/vendor/libgit2/deps/pcre/pcre_dfa_exec.c +3676 -0
- data/vendor/libgit2/deps/pcre/pcre_exec.c +7173 -0
- data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +245 -0
- data/vendor/libgit2/deps/pcre/pcre_get.c +669 -0
- data/vendor/libgit2/deps/pcre/pcre_globals.c +86 -0
- data/vendor/libgit2/deps/pcre/pcre_internal.h +2787 -0
- data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +11913 -0
- data/vendor/libgit2/deps/pcre/pcre_maketables.c +156 -0
- data/vendor/libgit2/deps/pcre/pcre_newline.c +210 -0
- data/vendor/libgit2/deps/pcre/pcre_ord2utf8.c +94 -0
- data/vendor/libgit2/deps/pcre/pcre_printint.c +834 -0
- data/vendor/libgit2/deps/pcre/pcre_refcount.c +92 -0
- data/vendor/libgit2/deps/pcre/pcre_string_utils.c +211 -0
- data/vendor/libgit2/deps/pcre/pcre_study.c +1686 -0
- data/vendor/libgit2/deps/pcre/pcre_tables.c +727 -0
- data/vendor/libgit2/deps/pcre/pcre_ucd.c +3644 -0
- data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +301 -0
- data/vendor/libgit2/deps/pcre/pcre_version.c +98 -0
- data/vendor/libgit2/deps/pcre/pcre_xclass.c +268 -0
- data/vendor/libgit2/deps/pcre/pcreposix.c +421 -0
- data/vendor/libgit2/deps/pcre/pcreposix.h +117 -0
- data/vendor/libgit2/deps/pcre/ucp.h +224 -0
- data/vendor/libgit2/deps/winhttp/COPYING.GPL +993 -0
- data/vendor/libgit2/deps/winhttp/COPYING.LGPL +502 -0
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +1 -0
- data/vendor/libgit2/deps/zlib/COPYING +27 -0
- data/vendor/libgit2/deps/zlib/adler32.c +0 -7
- data/vendor/libgit2/deps/zlib/crc32.c +0 -7
- data/vendor/libgit2/include/git2/annotated_commit.h +9 -0
- data/vendor/libgit2/include/git2/apply.h +149 -0
- data/vendor/libgit2/include/git2/attr.h +20 -13
- data/vendor/libgit2/include/git2/blame.h +4 -4
- data/vendor/libgit2/include/git2/blob.h +44 -12
- data/vendor/libgit2/include/git2/buffer.h +20 -26
- data/vendor/libgit2/include/git2/cert.h +135 -0
- data/vendor/libgit2/include/git2/checkout.h +53 -21
- data/vendor/libgit2/include/git2/cherrypick.h +3 -3
- data/vendor/libgit2/include/git2/clone.h +5 -5
- data/vendor/libgit2/include/git2/commit.h +25 -3
- data/vendor/libgit2/include/git2/common.h +35 -10
- data/vendor/libgit2/include/git2/config.h +29 -19
- data/vendor/libgit2/include/git2/cred.h +308 -0
- data/vendor/libgit2/include/git2/deprecated.h +493 -0
- data/vendor/libgit2/include/git2/describe.h +4 -4
- data/vendor/libgit2/include/git2/diff.h +177 -135
- data/vendor/libgit2/include/git2/errors.h +53 -46
- data/vendor/libgit2/include/git2/filter.h +8 -0
- data/vendor/libgit2/include/git2/index.h +74 -52
- data/vendor/libgit2/include/git2/indexer.h +76 -6
- data/vendor/libgit2/include/git2/merge.h +25 -10
- data/vendor/libgit2/include/git2/net.h +0 -5
- data/vendor/libgit2/include/git2/notes.h +1 -1
- data/vendor/libgit2/include/git2/object.h +17 -29
- data/vendor/libgit2/include/git2/odb.h +12 -11
- data/vendor/libgit2/include/git2/odb_backend.h +10 -9
- data/vendor/libgit2/include/git2/oid.h +2 -2
- data/vendor/libgit2/include/git2/pack.h +14 -3
- data/vendor/libgit2/include/git2/proxy.h +5 -3
- data/vendor/libgit2/include/git2/rebase.h +46 -2
- data/vendor/libgit2/include/git2/refs.h +34 -16
- data/vendor/libgit2/include/git2/remote.h +111 -14
- data/vendor/libgit2/include/git2/repository.h +69 -34
- data/vendor/libgit2/include/git2/revert.h +1 -1
- data/vendor/libgit2/include/git2/revwalk.h +7 -7
- data/vendor/libgit2/include/git2/signature.h +2 -2
- data/vendor/libgit2/include/git2/stash.h +5 -5
- data/vendor/libgit2/include/git2/status.h +26 -17
- data/vendor/libgit2/include/git2/submodule.h +23 -6
- data/vendor/libgit2/include/git2/sys/alloc.h +18 -18
- data/vendor/libgit2/include/git2/sys/commit.h +1 -1
- data/vendor/libgit2/include/git2/sys/config.h +13 -13
- data/vendor/libgit2/include/git2/sys/cred.h +90 -0
- data/vendor/libgit2/include/git2/sys/filter.h +6 -6
- data/vendor/libgit2/include/git2/sys/merge.h +3 -3
- data/vendor/libgit2/include/git2/sys/odb_backend.h +66 -22
- data/vendor/libgit2/include/git2/sys/path.h +14 -5
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +76 -40
- data/vendor/libgit2/include/git2/sys/repository.h +5 -1
- data/vendor/libgit2/include/git2/sys/stream.h +92 -12
- data/vendor/libgit2/include/git2/sys/transport.h +129 -83
- data/vendor/libgit2/include/git2/tag.h +13 -4
- data/vendor/libgit2/include/git2/trace.h +2 -2
- data/vendor/libgit2/include/git2/transport.h +11 -311
- data/vendor/libgit2/include/git2/tree.h +4 -4
- data/vendor/libgit2/include/git2/types.h +25 -106
- data/vendor/libgit2/include/git2/version.h +3 -3
- data/vendor/libgit2/include/git2/worktree.h +5 -5
- data/vendor/libgit2/include/git2.h +4 -0
- data/vendor/libgit2/src/CMakeLists.txt +104 -235
- data/vendor/libgit2/src/alloc.c +14 -18
- data/vendor/libgit2/src/{stdalloc.c → allocators/stdalloc.c} +7 -8
- data/vendor/libgit2/src/{stdalloc.h → allocators/stdalloc.h} +4 -4
- data/vendor/libgit2/src/allocators/win32_crtdbg.c +118 -0
- data/vendor/libgit2/src/{transports/cred.h → allocators/win32_crtdbg.h} +5 -4
- data/vendor/libgit2/src/annotated_commit.c +18 -11
- data/vendor/libgit2/src/apply.c +535 -28
- data/vendor/libgit2/src/apply.h +3 -1
- data/vendor/libgit2/src/array.h +2 -2
- data/vendor/libgit2/src/attr.c +77 -71
- data/vendor/libgit2/src/attr_file.c +203 -117
- data/vendor/libgit2/src/attr_file.h +9 -9
- data/vendor/libgit2/src/attrcache.c +49 -51
- data/vendor/libgit2/src/attrcache.h +2 -1
- data/vendor/libgit2/src/blame.c +38 -18
- data/vendor/libgit2/src/blame.h +1 -1
- data/vendor/libgit2/src/blame_git.c +29 -15
- data/vendor/libgit2/src/blob.c +123 -37
- data/vendor/libgit2/src/blob.h +19 -2
- data/vendor/libgit2/src/branch.c +47 -23
- data/vendor/libgit2/src/buf_text.c +7 -6
- data/vendor/libgit2/src/buffer.c +60 -53
- data/vendor/libgit2/src/cache.c +38 -45
- data/vendor/libgit2/src/cache.h +3 -3
- data/vendor/libgit2/src/cc-compat.h +20 -3
- data/vendor/libgit2/src/checkout.c +77 -67
- data/vendor/libgit2/src/cherrypick.c +12 -6
- data/vendor/libgit2/src/clone.c +36 -14
- data/vendor/libgit2/src/clone.h +4 -0
- data/vendor/libgit2/src/commit.c +103 -48
- data/vendor/libgit2/src/commit.h +7 -0
- data/vendor/libgit2/src/commit_list.c +36 -78
- data/vendor/libgit2/src/commit_list.h +2 -2
- data/vendor/libgit2/src/common.h +24 -90
- data/vendor/libgit2/src/config.c +203 -176
- data/vendor/libgit2/src/config.h +8 -20
- data/vendor/libgit2/src/config_backend.h +96 -0
- data/vendor/libgit2/src/config_cache.c +41 -35
- data/vendor/libgit2/src/config_entries.c +229 -0
- data/vendor/libgit2/src/config_entries.h +24 -0
- data/vendor/libgit2/src/config_file.c +422 -680
- data/vendor/libgit2/src/config_mem.c +220 -0
- data/vendor/libgit2/src/config_parse.c +96 -68
- data/vendor/libgit2/src/config_parse.h +15 -14
- data/vendor/libgit2/src/config_snapshot.c +206 -0
- data/vendor/libgit2/src/crlf.c +219 -196
- data/vendor/libgit2/src/delta.c +25 -18
- data/vendor/libgit2/src/describe.c +42 -41
- data/vendor/libgit2/src/diff.c +52 -67
- data/vendor/libgit2/src/diff.h +2 -1
- data/vendor/libgit2/src/diff_driver.c +44 -46
- data/vendor/libgit2/src/diff_file.c +16 -14
- data/vendor/libgit2/src/diff_file.h +1 -1
- data/vendor/libgit2/src/diff_generate.c +158 -103
- data/vendor/libgit2/src/diff_generate.h +3 -3
- data/vendor/libgit2/src/diff_parse.c +4 -4
- data/vendor/libgit2/src/diff_print.c +34 -22
- data/vendor/libgit2/src/diff_stats.c +22 -7
- data/vendor/libgit2/src/diff_tform.c +18 -16
- data/vendor/libgit2/src/diff_xdiff.c +3 -3
- data/vendor/libgit2/src/errors.c +51 -39
- data/vendor/libgit2/src/errors.h +81 -0
- data/vendor/libgit2/src/features.h.in +9 -3
- data/vendor/libgit2/src/fetch.c +8 -3
- data/vendor/libgit2/src/fetchhead.c +12 -12
- data/vendor/libgit2/src/filebuf.c +28 -32
- data/vendor/libgit2/src/filebuf.h +2 -2
- data/vendor/libgit2/src/filter.c +47 -33
- data/vendor/libgit2/src/filter.h +0 -10
- data/vendor/libgit2/src/{fileops.c → futils.c} +70 -63
- data/vendor/libgit2/src/{fileops.h → futils.h} +6 -6
- data/vendor/libgit2/src/global.c +35 -55
- data/vendor/libgit2/src/global.h +0 -2
- data/vendor/libgit2/src/hash/sha1/collisiondetect.c +48 -0
- data/vendor/libgit2/src/hash/sha1/collisiondetect.h +19 -0
- data/vendor/libgit2/src/hash/{hash_common_crypto.h → sha1/common_crypto.c} +17 -17
- data/vendor/libgit2/src/hash/sha1/common_crypto.h +19 -0
- data/vendor/libgit2/src/hash/{hash_generic.c → sha1/generic.c} +22 -10
- data/vendor/libgit2/src/hash/{hash_generic.h → sha1/generic.h} +4 -10
- data/vendor/libgit2/src/hash/{hash_mbedtls.c → sha1/mbedtls.c} +15 -7
- data/vendor/libgit2/src/hash/{hash_mbedtls.h → sha1/mbedtls.h} +6 -7
- data/vendor/libgit2/src/hash/sha1/openssl.c +59 -0
- data/vendor/libgit2/src/hash/sha1/openssl.h +19 -0
- data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.c +14 -3
- data/vendor/libgit2/src/hash/{hash_win32.c → sha1/win32.c} +47 -37
- data/vendor/libgit2/src/hash/{hash_win32.h → sha1/win32.h} +6 -19
- data/vendor/libgit2/src/hash/sha1.h +38 -0
- data/vendor/libgit2/src/hash.c +61 -0
- data/vendor/libgit2/src/hash.h +20 -21
- data/vendor/libgit2/src/hashsig.c +5 -5
- data/vendor/libgit2/src/idxmap.c +107 -61
- data/vendor/libgit2/src/idxmap.h +153 -31
- data/vendor/libgit2/src/ignore.c +38 -42
- data/vendor/libgit2/src/index.c +264 -199
- data/vendor/libgit2/src/index.h +7 -1
- data/vendor/libgit2/src/indexer.c +338 -167
- data/vendor/libgit2/src/integer.h +71 -26
- data/vendor/libgit2/src/iterator.c +134 -62
- data/vendor/libgit2/src/iterator.h +15 -0
- data/vendor/libgit2/src/mailmap.c +8 -8
- data/vendor/libgit2/src/map.h +1 -1
- data/vendor/libgit2/src/merge.c +137 -93
- data/vendor/libgit2/src/merge_driver.c +11 -11
- data/vendor/libgit2/src/merge_file.c +2 -2
- data/vendor/libgit2/src/mwindow.c +24 -29
- data/vendor/libgit2/src/mwindow.h +4 -4
- data/vendor/libgit2/src/net.c +184 -0
- data/vendor/libgit2/src/net.h +36 -0
- data/vendor/libgit2/src/netops.c +55 -156
- data/vendor/libgit2/src/netops.h +3 -23
- data/vendor/libgit2/src/notes.c +14 -9
- data/vendor/libgit2/src/object.c +120 -69
- data/vendor/libgit2/src/object.h +22 -9
- data/vendor/libgit2/src/object_api.c +8 -8
- data/vendor/libgit2/src/odb.c +111 -88
- data/vendor/libgit2/src/odb.h +8 -7
- data/vendor/libgit2/src/odb_loose.c +58 -47
- data/vendor/libgit2/src/odb_mempack.c +21 -34
- data/vendor/libgit2/src/odb_pack.c +17 -13
- data/vendor/libgit2/src/offmap.c +53 -35
- data/vendor/libgit2/src/offmap.h +108 -21
- data/vendor/libgit2/src/oid.c +12 -7
- data/vendor/libgit2/src/oidmap.c +49 -47
- data/vendor/libgit2/src/oidmap.h +101 -24
- data/vendor/libgit2/src/pack-objects.c +87 -86
- data/vendor/libgit2/src/pack-objects.h +2 -8
- data/vendor/libgit2/src/pack.c +94 -96
- data/vendor/libgit2/src/pack.h +16 -18
- data/vendor/libgit2/src/parse.c +17 -4
- data/vendor/libgit2/src/parse.h +3 -3
- data/vendor/libgit2/src/patch.c +3 -3
- data/vendor/libgit2/src/patch_generate.c +18 -18
- data/vendor/libgit2/src/patch_parse.c +147 -79
- data/vendor/libgit2/src/path.c +207 -62
- data/vendor/libgit2/src/path.h +14 -0
- data/vendor/libgit2/src/pathspec.c +18 -18
- data/vendor/libgit2/src/pool.c +26 -22
- data/vendor/libgit2/src/pool.h +7 -7
- data/vendor/libgit2/src/posix.c +10 -10
- data/vendor/libgit2/src/posix.h +12 -1
- data/vendor/libgit2/src/proxy.c +8 -3
- data/vendor/libgit2/src/push.c +35 -29
- data/vendor/libgit2/src/push.h +2 -1
- data/vendor/libgit2/src/reader.c +265 -0
- data/vendor/libgit2/src/reader.h +107 -0
- data/vendor/libgit2/src/rebase.c +97 -38
- data/vendor/libgit2/src/refdb.c +15 -3
- data/vendor/libgit2/src/refdb_fs.c +318 -222
- data/vendor/libgit2/src/reflog.c +13 -15
- data/vendor/libgit2/src/refs.c +122 -89
- data/vendor/libgit2/src/refs.h +5 -3
- data/vendor/libgit2/src/refspec.c +27 -33
- data/vendor/libgit2/src/regexp.c +221 -0
- data/vendor/libgit2/src/regexp.h +97 -0
- data/vendor/libgit2/src/remote.c +229 -178
- data/vendor/libgit2/src/remote.h +11 -2
- data/vendor/libgit2/src/repository.c +227 -172
- data/vendor/libgit2/src/repository.h +52 -40
- data/vendor/libgit2/src/reset.c +7 -7
- data/vendor/libgit2/src/revert.c +11 -6
- data/vendor/libgit2/src/revparse.c +46 -46
- data/vendor/libgit2/src/revwalk.c +89 -54
- data/vendor/libgit2/src/revwalk.h +20 -0
- data/vendor/libgit2/src/settings.c +22 -9
- data/vendor/libgit2/src/signature.c +15 -13
- data/vendor/libgit2/src/sortedcache.c +22 -36
- data/vendor/libgit2/src/sortedcache.h +1 -1
- data/vendor/libgit2/src/stash.c +56 -76
- data/vendor/libgit2/src/status.c +27 -21
- data/vendor/libgit2/src/stream.h +17 -2
- data/vendor/libgit2/src/streams/mbedtls.c +100 -80
- data/vendor/libgit2/src/streams/mbedtls.h +5 -2
- data/vendor/libgit2/src/streams/openssl.c +93 -81
- data/vendor/libgit2/src/streams/openssl.h +5 -2
- data/vendor/libgit2/src/streams/registry.c +118 -0
- data/vendor/libgit2/src/streams/registry.h +19 -0
- data/vendor/libgit2/src/streams/socket.c +55 -30
- data/vendor/libgit2/src/streams/stransport.c +57 -32
- data/vendor/libgit2/src/streams/stransport.h +5 -0
- data/vendor/libgit2/src/streams/tls.c +48 -20
- data/vendor/libgit2/src/streams/tls.h +12 -4
- data/vendor/libgit2/src/strmap.c +47 -74
- data/vendor/libgit2/src/strmap.h +108 -33
- data/vendor/libgit2/src/submodule.c +190 -169
- data/vendor/libgit2/src/submodule.h +1 -1
- data/vendor/libgit2/src/sysdir.c +25 -15
- data/vendor/libgit2/src/tag.c +39 -26
- data/vendor/libgit2/src/tag.h +2 -1
- data/vendor/libgit2/src/trace.c +2 -2
- data/vendor/libgit2/src/trace.h +2 -2
- data/vendor/libgit2/src/trailer.c +46 -32
- data/vendor/libgit2/src/transaction.c +30 -29
- data/vendor/libgit2/src/transport.c +3 -3
- data/vendor/libgit2/src/transports/auth.c +14 -10
- data/vendor/libgit2/src/transports/auth.h +10 -3
- data/vendor/libgit2/src/transports/auth_negotiate.c +31 -16
- data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
- data/vendor/libgit2/src/transports/auth_ntlm.c +223 -0
- data/vendor/libgit2/src/transports/auth_ntlm.h +35 -0
- data/vendor/libgit2/src/transports/cred.c +24 -24
- data/vendor/libgit2/src/transports/git.c +25 -30
- data/vendor/libgit2/src/transports/http.c +871 -335
- data/vendor/libgit2/src/transports/http.h +2 -0
- data/vendor/libgit2/src/transports/local.c +28 -28
- data/vendor/libgit2/src/transports/smart.c +64 -46
- data/vendor/libgit2/src/transports/smart.h +5 -6
- data/vendor/libgit2/src/transports/smart_pkt.c +162 -151
- data/vendor/libgit2/src/transports/smart_protocol.c +64 -94
- data/vendor/libgit2/src/transports/ssh.c +76 -65
- data/vendor/libgit2/src/transports/winhttp.c +328 -319
- data/vendor/libgit2/src/tree-cache.c +21 -14
- data/vendor/libgit2/src/tree.c +119 -112
- data/vendor/libgit2/src/tree.h +1 -0
- data/vendor/libgit2/src/unix/map.c +3 -3
- data/vendor/libgit2/src/unix/posix.h +1 -11
- data/vendor/libgit2/src/userdiff.h +3 -1
- data/vendor/libgit2/src/util.c +154 -93
- data/vendor/libgit2/src/util.h +19 -23
- data/vendor/libgit2/src/vector.c +15 -10
- data/vendor/libgit2/src/wildmatch.c +320 -0
- data/vendor/libgit2/src/wildmatch.h +23 -0
- data/vendor/libgit2/src/win32/dir.c +3 -3
- data/vendor/libgit2/src/win32/findfile.c +1 -1
- data/vendor/libgit2/src/win32/map.c +9 -11
- data/vendor/libgit2/src/win32/msvc-compat.h +6 -0
- data/vendor/libgit2/src/win32/path_w32.c +113 -9
- data/vendor/libgit2/src/win32/path_w32.h +18 -29
- data/vendor/libgit2/src/win32/posix.h +1 -4
- data/vendor/libgit2/src/win32/posix_w32.c +69 -44
- data/vendor/libgit2/src/win32/precompiled.h +0 -2
- data/vendor/libgit2/src/win32/thread.c +5 -10
- data/vendor/libgit2/src/win32/w32_buffer.c +9 -5
- data/vendor/libgit2/src/win32/w32_common.h +39 -0
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +2 -95
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -2
- data/vendor/libgit2/src/win32/w32_stack.c +6 -11
- data/vendor/libgit2/src/win32/w32_stack.h +3 -3
- data/vendor/libgit2/src/win32/w32_util.c +27 -64
- data/vendor/libgit2/src/win32/w32_util.h +5 -49
- data/vendor/libgit2/src/worktree.c +44 -30
- data/vendor/libgit2/src/xdiff/xdiffi.c +5 -5
- data/vendor/libgit2/src/xdiff/xhistogram.c +1 -1
- data/vendor/libgit2/src/xdiff/xmerge.c +27 -15
- data/vendor/libgit2/src/xdiff/xpatience.c +3 -0
- data/vendor/libgit2/src/zstream.c +4 -4
- metadata +115 -38
- data/vendor/libgit2/deps/regex/CMakeLists.txt +0 -2
- data/vendor/libgit2/deps/regex/config.h +0 -7
- data/vendor/libgit2/deps/regex/regcomp.c +0 -3857
- data/vendor/libgit2/deps/regex/regex.c +0 -92
- data/vendor/libgit2/deps/regex/regex.h +0 -582
- data/vendor/libgit2/deps/regex/regex_internal.c +0 -1744
- data/vendor/libgit2/deps/regex/regex_internal.h +0 -819
- data/vendor/libgit2/deps/regex/regexec.c +0 -4369
- data/vendor/libgit2/include/git2/inttypes.h +0 -309
- data/vendor/libgit2/include/git2/sys/time.h +0 -31
- data/vendor/libgit2/libgit2.pc.in +0 -13
- data/vendor/libgit2/src/config_file.h +0 -73
- data/vendor/libgit2/src/fnmatch.c +0 -248
- data/vendor/libgit2/src/fnmatch.h +0 -48
- data/vendor/libgit2/src/hash/hash_collisiondetect.h +0 -47
- data/vendor/libgit2/src/hash/hash_openssl.h +0 -59
- data/vendor/libgit2/src/streams/curl.c +0 -385
- data/vendor/libgit2/src/streams/curl.h +0 -17
- /data/vendor/libgit2/deps/http-parser/{LICENSE-MIT → COPYING} +0 -0
- /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.h +0 -0
- /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.c +0 -0
- /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.h +0 -0
|
@@ -18,7 +18,7 @@ GIT_INLINE(int) attr_cache_lock(git_attr_cache *cache)
|
|
|
18
18
|
GIT_UNUSED(cache); /* avoid warning if threading is off */
|
|
19
19
|
|
|
20
20
|
if (git_mutex_lock(&cache->lock) < 0) {
|
|
21
|
-
|
|
21
|
+
git_error_set(GIT_ERROR_OS, "unable to get attr cache lock");
|
|
22
22
|
return -1;
|
|
23
23
|
}
|
|
24
24
|
return 0;
|
|
@@ -33,12 +33,7 @@ GIT_INLINE(void) attr_cache_unlock(git_attr_cache *cache)
|
|
|
33
33
|
GIT_INLINE(git_attr_file_entry *) attr_cache_lookup_entry(
|
|
34
34
|
git_attr_cache *cache, const char *path)
|
|
35
35
|
{
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
if (git_strmap_valid_index(cache->files, pos))
|
|
39
|
-
return git_strmap_value_at(cache->files, pos);
|
|
40
|
-
else
|
|
41
|
-
return NULL;
|
|
36
|
+
return git_strmap_get(cache->files, path);
|
|
42
37
|
}
|
|
43
38
|
|
|
44
39
|
int git_attr_cache__alloc_file_entry(
|
|
@@ -59,8 +54,8 @@ int git_attr_cache__alloc_file_entry(
|
|
|
59
54
|
cachesize++;
|
|
60
55
|
}
|
|
61
56
|
|
|
62
|
-
ce = git_pool_mallocz(pool,
|
|
63
|
-
|
|
57
|
+
ce = git_pool_mallocz(pool, cachesize);
|
|
58
|
+
GIT_ERROR_CHECK_ALLOC(ce);
|
|
64
59
|
|
|
65
60
|
if (baselen) {
|
|
66
61
|
memcpy(ce->fullpath, base, baselen);
|
|
@@ -80,18 +75,16 @@ int git_attr_cache__alloc_file_entry(
|
|
|
80
75
|
static int attr_cache_make_entry(
|
|
81
76
|
git_attr_file_entry **out, git_repository *repo, const char *path)
|
|
82
77
|
{
|
|
83
|
-
int error = 0;
|
|
84
78
|
git_attr_cache *cache = git_repository_attr_cache(repo);
|
|
85
79
|
git_attr_file_entry *entry = NULL;
|
|
80
|
+
int error;
|
|
86
81
|
|
|
87
|
-
error = git_attr_cache__alloc_file_entry(
|
|
88
|
-
|
|
82
|
+
if ((error = git_attr_cache__alloc_file_entry(&entry, git_repository_workdir(repo),
|
|
83
|
+
path, &cache->pool)) < 0)
|
|
84
|
+
return error;
|
|
89
85
|
|
|
90
|
-
if (
|
|
91
|
-
|
|
92
|
-
if (error > 0)
|
|
93
|
-
error = 0;
|
|
94
|
-
}
|
|
86
|
+
if ((error = git_strmap_set(cache->files, entry->path, entry)) < 0)
|
|
87
|
+
return error;
|
|
95
88
|
|
|
96
89
|
*out = entry;
|
|
97
90
|
return error;
|
|
@@ -215,7 +208,8 @@ int git_attr_cache__get(
|
|
|
215
208
|
git_attr_file_source source,
|
|
216
209
|
const char *base,
|
|
217
210
|
const char *filename,
|
|
218
|
-
git_attr_file_parser parser
|
|
211
|
+
git_attr_file_parser parser,
|
|
212
|
+
bool allow_macros)
|
|
219
213
|
{
|
|
220
214
|
int error = 0;
|
|
221
215
|
git_attr_cache *cache = git_repository_attr_cache(repo);
|
|
@@ -228,7 +222,7 @@ int git_attr_cache__get(
|
|
|
228
222
|
|
|
229
223
|
/* load file if we don't have one or if existing one is out of date */
|
|
230
224
|
if (!file || (error = git_attr_file__out_of_date(repo, attr_session, file)) > 0)
|
|
231
|
-
error = git_attr_file__load(&updated, repo, attr_session, entry, source, parser);
|
|
225
|
+
error = git_attr_file__load(&updated, repo, attr_session, entry, source, parser, allow_macros);
|
|
232
226
|
|
|
233
227
|
/* if we loaded the file, insert into and/or update cache */
|
|
234
228
|
if (updated) {
|
|
@@ -250,7 +244,7 @@ int git_attr_cache__get(
|
|
|
250
244
|
}
|
|
251
245
|
/* no error if file simply doesn't exist */
|
|
252
246
|
if (error == GIT_ENOTFOUND) {
|
|
253
|
-
|
|
247
|
+
git_error_clear();
|
|
254
248
|
error = 0;
|
|
255
249
|
}
|
|
256
250
|
}
|
|
@@ -265,19 +259,15 @@ bool git_attr_cache__is_cached(
|
|
|
265
259
|
const char *filename)
|
|
266
260
|
{
|
|
267
261
|
git_attr_cache *cache = git_repository_attr_cache(repo);
|
|
268
|
-
git_strmap *files;
|
|
269
|
-
khiter_t pos;
|
|
270
262
|
git_attr_file_entry *entry;
|
|
263
|
+
git_strmap *files;
|
|
271
264
|
|
|
272
265
|
if (!cache || !(files = cache->files))
|
|
273
266
|
return false;
|
|
274
267
|
|
|
275
|
-
|
|
276
|
-
if (!git_strmap_valid_index(files, pos))
|
|
268
|
+
if ((entry = git_strmap_get(files, filename)) == NULL)
|
|
277
269
|
return false;
|
|
278
270
|
|
|
279
|
-
entry = git_strmap_value_at(files, pos);
|
|
280
|
-
|
|
281
271
|
return entry && (entry->file[source] != NULL);
|
|
282
272
|
}
|
|
283
273
|
|
|
@@ -374,11 +364,11 @@ int git_attr_cache__init(git_repository *repo)
|
|
|
374
364
|
return 0;
|
|
375
365
|
|
|
376
366
|
cache = git__calloc(1, sizeof(git_attr_cache));
|
|
377
|
-
|
|
367
|
+
GIT_ERROR_CHECK_ALLOC(cache);
|
|
378
368
|
|
|
379
369
|
/* set up lock */
|
|
380
370
|
if (git_mutex_init(&cache->lock) < 0) {
|
|
381
|
-
|
|
371
|
+
git_error_set(GIT_ERROR_OS, "unable to initialize lock for attr cache");
|
|
382
372
|
git__free(cache);
|
|
383
373
|
return -1;
|
|
384
374
|
}
|
|
@@ -400,8 +390,8 @@ int git_attr_cache__init(git_repository *repo)
|
|
|
400
390
|
/* allocate hashtable for attribute and ignore file contents,
|
|
401
391
|
* hashtable for attribute macros, and string pool
|
|
402
392
|
*/
|
|
403
|
-
if ((ret =
|
|
404
|
-
|
|
393
|
+
if ((ret = git_strmap_new(&cache->files)) < 0 ||
|
|
394
|
+
(ret = git_strmap_new(&cache->macros)) < 0)
|
|
405
395
|
goto cancel;
|
|
406
396
|
|
|
407
397
|
git_pool_init(&cache->pool, 1);
|
|
@@ -435,35 +425,43 @@ void git_attr_cache_flush(git_repository *repo)
|
|
|
435
425
|
int git_attr_cache__insert_macro(git_repository *repo, git_attr_rule *macro)
|
|
436
426
|
{
|
|
437
427
|
git_attr_cache *cache = git_repository_attr_cache(repo);
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
/* TODO: generate warning log if (macro->assigns.length == 0) */
|
|
442
|
-
if (macro->assigns.length == 0)
|
|
443
|
-
return 0;
|
|
428
|
+
git_attr_rule *preexisting;
|
|
429
|
+
bool locked = false;
|
|
430
|
+
int error = 0;
|
|
444
431
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
432
|
+
/*
|
|
433
|
+
* Callers assume that if we return success, that the
|
|
434
|
+
* macro will have been adopted by the attributes cache.
|
|
435
|
+
* Thus, we have to free the macro here if it's not being
|
|
436
|
+
* added to the cache.
|
|
437
|
+
*
|
|
438
|
+
* TODO: generate warning log if (macro->assigns.length == 0)
|
|
439
|
+
*/
|
|
440
|
+
if (macro->assigns.length == 0) {
|
|
441
|
+
git_attr_rule__free(macro);
|
|
442
|
+
goto out;
|
|
451
443
|
}
|
|
452
444
|
|
|
453
|
-
|
|
445
|
+
if ((error = attr_cache_lock(cache)) < 0)
|
|
446
|
+
goto out;
|
|
447
|
+
locked = true;
|
|
448
|
+
|
|
449
|
+
if ((preexisting = git_strmap_get(cache->macros, macro->match.pattern)) != NULL)
|
|
450
|
+
git_attr_rule__free(preexisting);
|
|
451
|
+
|
|
452
|
+
if ((error = git_strmap_set(cache->macros, macro->match.pattern, macro)) < 0)
|
|
453
|
+
goto out;
|
|
454
|
+
|
|
455
|
+
out:
|
|
456
|
+
if (locked)
|
|
457
|
+
attr_cache_unlock(cache);
|
|
458
|
+
return error;
|
|
454
459
|
}
|
|
455
460
|
|
|
456
461
|
git_attr_rule *git_attr_cache__lookup_macro(
|
|
457
462
|
git_repository *repo, const char *name)
|
|
458
463
|
{
|
|
459
464
|
git_strmap *macros = git_repository_attr_cache(repo)->macros;
|
|
460
|
-
khiter_t pos;
|
|
461
465
|
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
if (!git_strmap_valid_index(macros, pos))
|
|
465
|
-
return NULL;
|
|
466
|
-
|
|
467
|
-
return (git_attr_rule *)git_strmap_value_at(macros, pos);
|
|
466
|
+
return git_strmap_get(macros, name);
|
|
468
467
|
}
|
|
469
|
-
|
|
@@ -34,7 +34,8 @@ extern int git_attr_cache__get(
|
|
|
34
34
|
git_attr_file_source source,
|
|
35
35
|
const char *base,
|
|
36
36
|
const char *filename,
|
|
37
|
-
git_attr_file_parser parser
|
|
37
|
+
git_attr_file_parser parser,
|
|
38
|
+
bool allow_macros);
|
|
38
39
|
|
|
39
40
|
extern bool git_attr_cache__is_cached(
|
|
40
41
|
git_repository *repo,
|
data/vendor/libgit2/src/blame.c
CHANGED
|
@@ -41,7 +41,12 @@ static int hunk_cmp(const void *_a, const void *_b)
|
|
|
41
41
|
git_blame_hunk *a = (git_blame_hunk*)_a,
|
|
42
42
|
*b = (git_blame_hunk*)_b;
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
if (a->final_start_line_number > b->final_start_line_number)
|
|
45
|
+
return 1;
|
|
46
|
+
else if (a->final_start_line_number < b->final_start_line_number)
|
|
47
|
+
return -1;
|
|
48
|
+
else
|
|
49
|
+
return 0;
|
|
45
50
|
}
|
|
46
51
|
|
|
47
52
|
static bool hunk_ends_at_or_before_line(git_blame_hunk *hunk, size_t line)
|
|
@@ -133,8 +138,11 @@ git_blame* git_blame__alloc(
|
|
|
133
138
|
return NULL;
|
|
134
139
|
}
|
|
135
140
|
|
|
136
|
-
if (opts.flags & GIT_BLAME_USE_MAILMAP
|
|
137
|
-
|
|
141
|
+
if (opts.flags & GIT_BLAME_USE_MAILMAP &&
|
|
142
|
+
git_mailmap_from_repository(&gbr->mailmap, repo) < 0) {
|
|
143
|
+
git_blame_free(gbr);
|
|
144
|
+
return NULL;
|
|
145
|
+
}
|
|
138
146
|
|
|
139
147
|
return gbr;
|
|
140
148
|
}
|
|
@@ -196,7 +204,7 @@ static int normalize_options(
|
|
|
196
204
|
memcpy(out, in, sizeof(git_blame_options));
|
|
197
205
|
|
|
198
206
|
/* No newest_commit => HEAD */
|
|
199
|
-
if (
|
|
207
|
+
if (git_oid_is_zero(&out->newest_commit)) {
|
|
200
208
|
if (git_reference_name_to_id(&out->newest_commit, repo, "HEAD") < 0) {
|
|
201
209
|
return -1;
|
|
202
210
|
}
|
|
@@ -260,7 +268,7 @@ static git_blame_hunk *split_hunk_in_vector(
|
|
|
260
268
|
static int index_blob_lines(git_blame *blame)
|
|
261
269
|
{
|
|
262
270
|
const char *buf = blame->final_buf;
|
|
263
|
-
|
|
271
|
+
size_t len = blame->final_buf_size;
|
|
264
272
|
int num = 0, incomplete = 0, bol = 1;
|
|
265
273
|
size_t *i;
|
|
266
274
|
|
|
@@ -269,7 +277,7 @@ static int index_blob_lines(git_blame *blame)
|
|
|
269
277
|
while (len--) {
|
|
270
278
|
if (bol) {
|
|
271
279
|
i = git_array_alloc(blame->line_index);
|
|
272
|
-
|
|
280
|
+
GIT_ERROR_CHECK_ALLOC(i);
|
|
273
281
|
*i = buf - blame->final_buf;
|
|
274
282
|
bol = 0;
|
|
275
283
|
}
|
|
@@ -279,7 +287,7 @@ static int index_blob_lines(git_blame *blame)
|
|
|
279
287
|
}
|
|
280
288
|
}
|
|
281
289
|
i = git_array_alloc(blame->line_index);
|
|
282
|
-
|
|
290
|
+
GIT_ERROR_CHECK_ALLOC(i);
|
|
283
291
|
*i = buf - blame->final_buf;
|
|
284
292
|
blame->num_lines = num + incomplete;
|
|
285
293
|
return blame->num_lines;
|
|
@@ -312,7 +320,7 @@ static int load_blob(git_blame *blame)
|
|
|
312
320
|
if (error < 0)
|
|
313
321
|
goto cleanup;
|
|
314
322
|
error = git_object_lookup_bypath((git_object**)&blame->final_blob,
|
|
315
|
-
(git_object*)blame->final, blame->path,
|
|
323
|
+
(git_object*)blame->final, blame->path, GIT_OBJECT_BLOB);
|
|
316
324
|
|
|
317
325
|
cleanup:
|
|
318
326
|
return error;
|
|
@@ -327,11 +335,18 @@ static int blame_internal(git_blame *blame)
|
|
|
327
335
|
if ((error = load_blob(blame)) < 0 ||
|
|
328
336
|
(error = git_blame__get_origin(&o, blame, blame->final, blame->path)) < 0)
|
|
329
337
|
goto cleanup;
|
|
338
|
+
|
|
339
|
+
if (git_blob_rawsize(blame->final_blob) > SIZE_MAX) {
|
|
340
|
+
git_error_set(GIT_ERROR_NOMEMORY, "blob is too large to blame");
|
|
341
|
+
error = -1;
|
|
342
|
+
goto cleanup;
|
|
343
|
+
}
|
|
344
|
+
|
|
330
345
|
blame->final_buf = git_blob_rawcontent(blame->final_blob);
|
|
331
|
-
blame->final_buf_size = git_blob_rawsize(blame->final_blob);
|
|
346
|
+
blame->final_buf_size = (size_t)git_blob_rawsize(blame->final_blob);
|
|
332
347
|
|
|
333
348
|
ent = git__calloc(1, sizeof(git_blame__entry));
|
|
334
|
-
|
|
349
|
+
GIT_ERROR_CHECK_ALLOC(ent);
|
|
335
350
|
|
|
336
351
|
ent->num_lines = index_blob_lines(blame);
|
|
337
352
|
ent->lno = blame->options.min_line - 1;
|
|
@@ -378,7 +393,7 @@ int git_blame_file(
|
|
|
378
393
|
goto on_error;
|
|
379
394
|
|
|
380
395
|
blame = git_blame__alloc(repo, normOptions, path);
|
|
381
|
-
|
|
396
|
+
GIT_ERROR_CHECK_ALLOC(blame);
|
|
382
397
|
|
|
383
398
|
if ((error = load_blob(blame)) < 0)
|
|
384
399
|
goto on_error;
|
|
@@ -400,7 +415,7 @@ on_error:
|
|
|
400
415
|
|
|
401
416
|
static bool hunk_is_bufferblame(git_blame_hunk *hunk)
|
|
402
417
|
{
|
|
403
|
-
return
|
|
418
|
+
return git_oid_is_zero(&hunk->final_commit_id);
|
|
404
419
|
}
|
|
405
420
|
|
|
406
421
|
static int buffer_hunk_cb(
|
|
@@ -420,14 +435,14 @@ static int buffer_hunk_cb(
|
|
|
420
435
|
if (!blame->current_hunk) {
|
|
421
436
|
/* Line added at the end of the file */
|
|
422
437
|
blame->current_hunk = new_hunk(wedge_line, 0, wedge_line, blame->path);
|
|
423
|
-
|
|
438
|
+
GIT_ERROR_CHECK_ALLOC(blame->current_hunk);
|
|
424
439
|
|
|
425
440
|
git_vector_insert(&blame->hunks, blame->current_hunk);
|
|
426
441
|
} else if (!hunk_starts_at_or_after_line(blame->current_hunk, wedge_line)){
|
|
427
442
|
/* If this hunk doesn't start between existing hunks, split a hunk up so it does */
|
|
428
443
|
blame->current_hunk = split_hunk_in_vector(&blame->hunks, blame->current_hunk,
|
|
429
444
|
wedge_line - blame->current_hunk->orig_start_line_number, true);
|
|
430
|
-
|
|
445
|
+
GIT_ERROR_CHECK_ALLOC(blame->current_hunk);
|
|
431
446
|
}
|
|
432
447
|
|
|
433
448
|
return 0;
|
|
@@ -456,7 +471,7 @@ static int buffer_line_cb(
|
|
|
456
471
|
/* Create a new buffer-blame hunk with this line */
|
|
457
472
|
shift_hunks_by(&blame->hunks, blame->current_diff_line, 1);
|
|
458
473
|
blame->current_hunk = new_hunk(blame->current_diff_line, 1, 0, blame->path);
|
|
459
|
-
|
|
474
|
+
GIT_ERROR_CHECK_ALLOC(blame->current_hunk);
|
|
460
475
|
|
|
461
476
|
git_vector_insert_sorted(&blame->hunks, blame->current_hunk, NULL);
|
|
462
477
|
}
|
|
@@ -497,12 +512,12 @@ int git_blame_buffer(
|
|
|
497
512
|
assert(out && reference && buffer && buffer_len);
|
|
498
513
|
|
|
499
514
|
blame = git_blame__alloc(reference->repository, reference->options, reference->path);
|
|
500
|
-
|
|
515
|
+
GIT_ERROR_CHECK_ALLOC(blame);
|
|
501
516
|
|
|
502
517
|
/* Duplicate all of the hunk structures in the reference blame */
|
|
503
518
|
git_vector_foreach(&reference->hunks, i, hunk) {
|
|
504
519
|
git_blame_hunk *h = dup_hunk(hunk);
|
|
505
|
-
|
|
520
|
+
GIT_ERROR_CHECK_ALLOC(h);
|
|
506
521
|
|
|
507
522
|
git_vector_insert(&blame->hunks, h);
|
|
508
523
|
}
|
|
@@ -516,9 +531,14 @@ int git_blame_buffer(
|
|
|
516
531
|
return 0;
|
|
517
532
|
}
|
|
518
533
|
|
|
519
|
-
int
|
|
534
|
+
int git_blame_options_init(git_blame_options *opts, unsigned int version)
|
|
520
535
|
{
|
|
521
536
|
GIT_INIT_STRUCTURE_FROM_TEMPLATE(
|
|
522
537
|
opts, version, git_blame_options, GIT_BLAME_OPTIONS_INIT);
|
|
523
538
|
return 0;
|
|
524
539
|
}
|
|
540
|
+
|
|
541
|
+
int git_blame_init_options(git_blame_options *opts, unsigned int version)
|
|
542
|
+
{
|
|
543
|
+
return git_blame_options_init(opts, version);
|
|
544
|
+
}
|
data/vendor/libgit2/src/blame.h
CHANGED
|
@@ -43,13 +43,13 @@ static int make_origin(git_blame__origin **out, git_commit *commit, const char *
|
|
|
43
43
|
int error = 0;
|
|
44
44
|
|
|
45
45
|
if ((error = git_object_lookup_bypath(&blob, (git_object*)commit,
|
|
46
|
-
path,
|
|
46
|
+
path, GIT_OBJECT_BLOB)) < 0)
|
|
47
47
|
return error;
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, sizeof(*o), path_len);
|
|
50
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, alloc_len, 1);
|
|
51
51
|
o = git__calloc(1, alloc_len);
|
|
52
|
-
|
|
52
|
+
GIT_ERROR_CHECK_ALLOC(o);
|
|
53
53
|
|
|
54
54
|
o->commit = commit;
|
|
55
55
|
o->blob = (git_blob *) blob;
|
|
@@ -219,7 +219,7 @@ static void dup_entry(git_blame__entry *dst, git_blame__entry *src)
|
|
|
219
219
|
* split_overlap() divided an existing blame e into up to three parts in split.
|
|
220
220
|
* Adjust the linked list of blames in the scoreboard to reflect the split.
|
|
221
221
|
*/
|
|
222
|
-
static
|
|
222
|
+
static int split_blame(git_blame *blame, git_blame__entry *split, git_blame__entry *e)
|
|
223
223
|
{
|
|
224
224
|
git_blame__entry *new_entry;
|
|
225
225
|
|
|
@@ -229,11 +229,13 @@ static void split_blame(git_blame *blame, git_blame__entry *split, git_blame__en
|
|
|
229
229
|
|
|
230
230
|
/* The last part -- me */
|
|
231
231
|
new_entry = git__malloc(sizeof(*new_entry));
|
|
232
|
+
GIT_ERROR_CHECK_ALLOC(new_entry);
|
|
232
233
|
memcpy(new_entry, &(split[2]), sizeof(git_blame__entry));
|
|
233
234
|
add_blame_entry(blame, new_entry);
|
|
234
235
|
|
|
235
236
|
/* ... and the middle part -- parent */
|
|
236
237
|
new_entry = git__malloc(sizeof(*new_entry));
|
|
238
|
+
GIT_ERROR_CHECK_ALLOC(new_entry);
|
|
237
239
|
memcpy(new_entry, &(split[1]), sizeof(git_blame__entry));
|
|
238
240
|
add_blame_entry(blame, new_entry);
|
|
239
241
|
} else if (!split[0].suspect && !split[2].suspect) {
|
|
@@ -246,18 +248,22 @@ static void split_blame(git_blame *blame, git_blame__entry *split, git_blame__en
|
|
|
246
248
|
/* me and then parent */
|
|
247
249
|
dup_entry(e, &split[0]);
|
|
248
250
|
new_entry = git__malloc(sizeof(*new_entry));
|
|
251
|
+
GIT_ERROR_CHECK_ALLOC(new_entry);
|
|
249
252
|
memcpy(new_entry, &(split[1]), sizeof(git_blame__entry));
|
|
250
253
|
add_blame_entry(blame, new_entry);
|
|
251
254
|
} else {
|
|
252
255
|
/* parent and then me */
|
|
253
256
|
dup_entry(e, &split[1]);
|
|
254
257
|
new_entry = git__malloc(sizeof(*new_entry));
|
|
258
|
+
GIT_ERROR_CHECK_ALLOC(new_entry);
|
|
255
259
|
memcpy(new_entry, &(split[2]), sizeof(git_blame__entry));
|
|
256
260
|
add_blame_entry(blame, new_entry);
|
|
257
261
|
}
|
|
262
|
+
|
|
263
|
+
return 0;
|
|
258
264
|
}
|
|
259
265
|
|
|
260
|
-
/*
|
|
266
|
+
/*
|
|
261
267
|
* After splitting the blame, the origins used by the on-stack blame_entry
|
|
262
268
|
* should lose one refcnt each.
|
|
263
269
|
*/
|
|
@@ -272,7 +278,7 @@ static void decref_split(git_blame__entry *split)
|
|
|
272
278
|
* Helper for blame_chunk(). blame_entry e is known to overlap with the patch
|
|
273
279
|
* hunk; split it and pass blame to the parent.
|
|
274
280
|
*/
|
|
275
|
-
static
|
|
281
|
+
static int blame_overlap(
|
|
276
282
|
git_blame *blame,
|
|
277
283
|
git_blame__entry *e,
|
|
278
284
|
size_t tlno,
|
|
@@ -284,8 +290,11 @@ static void blame_overlap(
|
|
|
284
290
|
|
|
285
291
|
split_overlap(split, e, tlno, plno, same, parent);
|
|
286
292
|
if (split[1].suspect)
|
|
287
|
-
split_blame(blame, split, e)
|
|
293
|
+
if (split_blame(blame, split, e) < 0)
|
|
294
|
+
return -1;
|
|
288
295
|
decref_split(split);
|
|
296
|
+
|
|
297
|
+
return 0;
|
|
289
298
|
}
|
|
290
299
|
|
|
291
300
|
/*
|
|
@@ -293,7 +302,7 @@ static void blame_overlap(
|
|
|
293
302
|
* e and its parent. Find and split the overlap, and pass blame to the
|
|
294
303
|
* overlapping part to the parent.
|
|
295
304
|
*/
|
|
296
|
-
static
|
|
305
|
+
static int blame_chunk(
|
|
297
306
|
git_blame *blame,
|
|
298
307
|
size_t tlno,
|
|
299
308
|
size_t plno,
|
|
@@ -309,9 +318,12 @@ static void blame_chunk(
|
|
|
309
318
|
if (same <= e->s_lno)
|
|
310
319
|
continue;
|
|
311
320
|
if (tlno < e->s_lno + e->num_lines) {
|
|
312
|
-
blame_overlap(blame, e, tlno, plno, same, parent)
|
|
321
|
+
if (blame_overlap(blame, e, tlno, plno, same, parent) < 0)
|
|
322
|
+
return -1;
|
|
313
323
|
}
|
|
314
324
|
}
|
|
325
|
+
|
|
326
|
+
return 0;
|
|
315
327
|
}
|
|
316
328
|
|
|
317
329
|
static int my_emit(
|
|
@@ -321,7 +333,8 @@ static int my_emit(
|
|
|
321
333
|
{
|
|
322
334
|
blame_chunk_cb_data *d = (blame_chunk_cb_data *)cb_data;
|
|
323
335
|
|
|
324
|
-
blame_chunk(d->blame, d->tlno, d->plno, start_b, d->target, d->parent)
|
|
336
|
+
if (blame_chunk(d->blame, d->tlno, d->plno, start_b, d->target, d->parent) < 0)
|
|
337
|
+
return -1;
|
|
325
338
|
d->plno = start_a + count_a;
|
|
326
339
|
d->tlno = start_b + count_b;
|
|
327
340
|
|
|
@@ -365,7 +378,7 @@ static int diff_hunks(mmfile_t file_a, mmfile_t file_b, void *cb_data)
|
|
|
365
378
|
|
|
366
379
|
if (file_a.size > GIT_XDIFF_MAX_SIZE ||
|
|
367
380
|
file_b.size > GIT_XDIFF_MAX_SIZE) {
|
|
368
|
-
|
|
381
|
+
git_error_set(GIT_ERROR_INVALID, "file too large to blame");
|
|
369
382
|
return -1;
|
|
370
383
|
}
|
|
371
384
|
|
|
@@ -400,7 +413,8 @@ static int pass_blame_to_parent(
|
|
|
400
413
|
return -1;
|
|
401
414
|
|
|
402
415
|
/* The reset (i.e. anything after tlno) are the same as the parent */
|
|
403
|
-
blame_chunk(blame, d.tlno, d.plno, last_in_target, target, parent)
|
|
416
|
+
if (blame_chunk(blame, d.tlno, d.plno, last_in_target, target, parent) < 0)
|
|
417
|
+
return -1;
|
|
404
418
|
|
|
405
419
|
return 0;
|
|
406
420
|
}
|
|
@@ -486,7 +500,7 @@ static int pass_whole_blame(git_blame *blame,
|
|
|
486
500
|
|
|
487
501
|
if (!porigin->blob &&
|
|
488
502
|
git_object_lookup((git_object**)&porigin->blob, blame->repository,
|
|
489
|
-
git_blob_id(origin->blob),
|
|
503
|
+
git_blob_id(origin->blob), GIT_OBJECT_BLOB) < 0)
|
|
490
504
|
return -1;
|
|
491
505
|
for (e=blame->ent; e; e=e->next) {
|
|
492
506
|
if (!same_suspect(e->suspect, origin))
|
|
@@ -522,7 +536,7 @@ static int pass_blame(git_blame *blame, git_blame__origin *origin, uint32_t opt)
|
|
|
522
536
|
memset(sg_buf, 0, sizeof(sg_buf));
|
|
523
537
|
else {
|
|
524
538
|
sg_origin = git__calloc(num_parents, sizeof(*sg_origin));
|
|
525
|
-
|
|
539
|
+
GIT_ERROR_CHECK_ALLOC(sg_origin);
|
|
526
540
|
}
|
|
527
541
|
|
|
528
542
|
for (i=0; i<num_parents; i++) {
|