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
data/vendor/libgit2/src/buffer.c
CHANGED
|
@@ -18,7 +18,8 @@ char git_buf__initbuf[1];
|
|
|
18
18
|
char git_buf__oom[1];
|
|
19
19
|
|
|
20
20
|
#define ENSURE_SIZE(b, d) \
|
|
21
|
-
if ((
|
|
21
|
+
if ((b)->ptr == git_buf__oom || \
|
|
22
|
+
((d) > (b)->asize && git_buf_grow((b), (d)) < 0))\
|
|
22
23
|
return -1;
|
|
23
24
|
|
|
24
25
|
|
|
@@ -43,7 +44,7 @@ int git_buf_try_grow(
|
|
|
43
44
|
return -1;
|
|
44
45
|
|
|
45
46
|
if (buf->asize == 0 && buf->size != 0) {
|
|
46
|
-
|
|
47
|
+
git_error_set(GIT_ERROR_INVALID, "cannot grow a borrowed buffer");
|
|
47
48
|
return GIT_EINVALID;
|
|
48
49
|
}
|
|
49
50
|
|
|
@@ -58,22 +59,28 @@ int git_buf_try_grow(
|
|
|
58
59
|
new_ptr = NULL;
|
|
59
60
|
} else {
|
|
60
61
|
new_size = buf->asize;
|
|
62
|
+
/*
|
|
63
|
+
* Grow the allocated buffer by 1.5 to allow
|
|
64
|
+
* re-use of memory holes resulting from the
|
|
65
|
+
* realloc. If this is still too small, then just
|
|
66
|
+
* use the target size.
|
|
67
|
+
*/
|
|
68
|
+
if ((new_size = (new_size << 1) - (new_size >> 1)) < target_size)
|
|
69
|
+
new_size = target_size;
|
|
61
70
|
new_ptr = buf->ptr;
|
|
62
71
|
}
|
|
63
72
|
|
|
64
|
-
/* grow the buffer size by 1.5, until it's big enough
|
|
65
|
-
* to fit our target size */
|
|
66
|
-
while (new_size < target_size)
|
|
67
|
-
new_size = (new_size << 1) - (new_size >> 1);
|
|
68
|
-
|
|
69
73
|
/* round allocation up to multiple of 8 */
|
|
70
74
|
new_size = (new_size + 7) & ~7;
|
|
71
75
|
|
|
72
76
|
if (new_size < buf->size) {
|
|
73
|
-
if (mark_oom)
|
|
77
|
+
if (mark_oom) {
|
|
78
|
+
if (buf->ptr && buf->ptr != git_buf__initbuf)
|
|
79
|
+
git__free(buf->ptr);
|
|
74
80
|
buf->ptr = git_buf__oom;
|
|
81
|
+
}
|
|
75
82
|
|
|
76
|
-
|
|
83
|
+
git_error_set_oom();
|
|
77
84
|
return -1;
|
|
78
85
|
}
|
|
79
86
|
|
|
@@ -161,7 +168,7 @@ int git_buf_set(git_buf *buf, const void *data, size_t len)
|
|
|
161
168
|
git_buf_clear(buf);
|
|
162
169
|
} else {
|
|
163
170
|
if (data != buf->ptr) {
|
|
164
|
-
|
|
171
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, len, 1);
|
|
165
172
|
ENSURE_SIZE(buf, alloclen);
|
|
166
173
|
memmove(buf->ptr, data, len);
|
|
167
174
|
}
|
|
@@ -192,7 +199,7 @@ int git_buf_sets(git_buf *buf, const char *string)
|
|
|
192
199
|
int git_buf_putc(git_buf *buf, char c)
|
|
193
200
|
{
|
|
194
201
|
size_t new_size;
|
|
195
|
-
|
|
202
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&new_size, buf->size, 2);
|
|
196
203
|
ENSURE_SIZE(buf, new_size);
|
|
197
204
|
buf->ptr[buf->size++] = c;
|
|
198
205
|
buf->ptr[buf->size] = '\0';
|
|
@@ -202,8 +209,8 @@ int git_buf_putc(git_buf *buf, char c)
|
|
|
202
209
|
int git_buf_putcn(git_buf *buf, char c, size_t len)
|
|
203
210
|
{
|
|
204
211
|
size_t new_size;
|
|
205
|
-
|
|
206
|
-
|
|
212
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&new_size, buf->size, len);
|
|
213
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
|
|
207
214
|
ENSURE_SIZE(buf, new_size);
|
|
208
215
|
memset(buf->ptr + buf->size, c, len);
|
|
209
216
|
buf->size += len;
|
|
@@ -218,8 +225,8 @@ int git_buf_put(git_buf *buf, const char *data, size_t len)
|
|
|
218
225
|
|
|
219
226
|
assert(data);
|
|
220
227
|
|
|
221
|
-
|
|
222
|
-
|
|
228
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&new_size, buf->size, len);
|
|
229
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
|
|
223
230
|
ENSURE_SIZE(buf, new_size);
|
|
224
231
|
memmove(buf->ptr + buf->size, data, len);
|
|
225
232
|
buf->size += len;
|
|
@@ -244,9 +251,9 @@ int git_buf_encode_base64(git_buf *buf, const char *data, size_t len)
|
|
|
244
251
|
const uint8_t *read = (const uint8_t *)data;
|
|
245
252
|
size_t blocks = (len / 3) + !!extra, alloclen;
|
|
246
253
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
254
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&blocks, blocks, 1);
|
|
255
|
+
GIT_ERROR_CHECK_ALLOC_MULTIPLY(&alloclen, blocks, 4);
|
|
256
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, alloclen, buf->size);
|
|
250
257
|
|
|
251
258
|
ENSURE_SIZE(buf, alloclen);
|
|
252
259
|
write = (uint8_t *)&buf->ptr[buf->size];
|
|
@@ -306,13 +313,13 @@ int git_buf_decode_base64(git_buf *buf, const char *base64, size_t len)
|
|
|
306
313
|
size_t orig_size = buf->size, new_size;
|
|
307
314
|
|
|
308
315
|
if (len % 4) {
|
|
309
|
-
|
|
316
|
+
git_error_set(GIT_ERROR_INVALID, "invalid base64 input");
|
|
310
317
|
return -1;
|
|
311
318
|
}
|
|
312
319
|
|
|
313
320
|
assert(len % 4 == 0);
|
|
314
|
-
|
|
315
|
-
|
|
321
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&new_size, (len / 4 * 3), buf->size);
|
|
322
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
|
|
316
323
|
ENSURE_SIZE(buf, new_size);
|
|
317
324
|
|
|
318
325
|
for (i = 0; i < len; i += 4) {
|
|
@@ -323,7 +330,7 @@ int git_buf_decode_base64(git_buf *buf, const char *base64, size_t len)
|
|
|
323
330
|
buf->size = orig_size;
|
|
324
331
|
buf->ptr[buf->size] = '\0';
|
|
325
332
|
|
|
326
|
-
|
|
333
|
+
git_error_set(GIT_ERROR_INVALID, "invalid base64 input");
|
|
327
334
|
return -1;
|
|
328
335
|
}
|
|
329
336
|
|
|
@@ -343,9 +350,9 @@ int git_buf_encode_base85(git_buf *buf, const char *data, size_t len)
|
|
|
343
350
|
{
|
|
344
351
|
size_t blocks = (len / 4) + !!(len % 4), alloclen;
|
|
345
352
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
353
|
+
GIT_ERROR_CHECK_ALLOC_MULTIPLY(&alloclen, blocks, 5);
|
|
354
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, alloclen, buf->size);
|
|
355
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, alloclen, 1);
|
|
349
356
|
|
|
350
357
|
ENSURE_SIZE(buf, alloclen);
|
|
351
358
|
|
|
@@ -408,12 +415,12 @@ int git_buf_decode_base85(
|
|
|
408
415
|
|
|
409
416
|
if (base85_len % 5 ||
|
|
410
417
|
output_len > base85_len * 4 / 5) {
|
|
411
|
-
|
|
418
|
+
git_error_set(GIT_ERROR_INVALID, "invalid base85 input");
|
|
412
419
|
return -1;
|
|
413
420
|
}
|
|
414
421
|
|
|
415
|
-
|
|
416
|
-
|
|
422
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&new_size, output_len, buf->size);
|
|
423
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
|
|
417
424
|
ENSURE_SIZE(buf, new_size);
|
|
418
425
|
|
|
419
426
|
while (output_len) {
|
|
@@ -440,7 +447,7 @@ int git_buf_decode_base85(
|
|
|
440
447
|
|
|
441
448
|
acc += de;
|
|
442
449
|
|
|
443
|
-
cnt = (output_len < 4) ? output_len : 4;
|
|
450
|
+
cnt = (output_len < 4) ? (int)output_len : 4;
|
|
444
451
|
output_len -= cnt;
|
|
445
452
|
do {
|
|
446
453
|
acc = (acc << 8) | (acc >> 24);
|
|
@@ -456,7 +463,7 @@ on_error:
|
|
|
456
463
|
buf->size = orig_size;
|
|
457
464
|
buf->ptr[buf->size] = '\0';
|
|
458
465
|
|
|
459
|
-
|
|
466
|
+
git_error_set(GIT_ERROR_INVALID, "invalid base85 input");
|
|
460
467
|
return -1;
|
|
461
468
|
}
|
|
462
469
|
|
|
@@ -469,8 +476,8 @@ int git_buf_decode_percent(
|
|
|
469
476
|
{
|
|
470
477
|
size_t str_pos, new_size;
|
|
471
478
|
|
|
472
|
-
|
|
473
|
-
|
|
479
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&new_size, buf->size, str_len);
|
|
480
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
|
|
474
481
|
ENSURE_SIZE(buf, new_size);
|
|
475
482
|
|
|
476
483
|
for (str_pos = 0; str_pos < str_len; buf->size++, str_pos++) {
|
|
@@ -495,8 +502,8 @@ int git_buf_vprintf(git_buf *buf, const char *format, va_list ap)
|
|
|
495
502
|
size_t expected_size, new_size;
|
|
496
503
|
int len;
|
|
497
504
|
|
|
498
|
-
|
|
499
|
-
|
|
505
|
+
GIT_ERROR_CHECK_ALLOC_MULTIPLY(&expected_size, strlen(format), 2);
|
|
506
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&expected_size, expected_size, buf->size);
|
|
500
507
|
ENSURE_SIZE(buf, expected_size);
|
|
501
508
|
|
|
502
509
|
while (1) {
|
|
@@ -522,8 +529,8 @@ int git_buf_vprintf(git_buf *buf, const char *format, va_list ap)
|
|
|
522
529
|
break;
|
|
523
530
|
}
|
|
524
531
|
|
|
525
|
-
|
|
526
|
-
|
|
532
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&new_size, buf->size, len);
|
|
533
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
|
|
527
534
|
ENSURE_SIZE(buf, new_size);
|
|
528
535
|
}
|
|
529
536
|
|
|
@@ -667,10 +674,10 @@ int git_buf_join_n(git_buf *buf, char separator, int nbuf, ...)
|
|
|
667
674
|
|
|
668
675
|
segment_len = strlen(segment);
|
|
669
676
|
|
|
670
|
-
|
|
677
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&total_size, total_size, segment_len);
|
|
671
678
|
|
|
672
679
|
if (segment_len == 0 || segment[segment_len - 1] != separator)
|
|
673
|
-
|
|
680
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&total_size, total_size, 1);
|
|
674
681
|
}
|
|
675
682
|
va_end(ap);
|
|
676
683
|
|
|
@@ -678,7 +685,7 @@ int git_buf_join_n(git_buf *buf, char separator, int nbuf, ...)
|
|
|
678
685
|
if (total_size == 0)
|
|
679
686
|
return 0;
|
|
680
687
|
|
|
681
|
-
|
|
688
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&total_size, total_size, 1);
|
|
682
689
|
if (git_buf_grow_by(buf, total_size) < 0)
|
|
683
690
|
return -1;
|
|
684
691
|
|
|
@@ -758,9 +765,9 @@ int git_buf_join(
|
|
|
758
765
|
if (str_a >= buf->ptr && str_a < buf->ptr + buf->size)
|
|
759
766
|
offset_a = str_a - buf->ptr;
|
|
760
767
|
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
768
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, strlen_a, strlen_b);
|
|
769
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, alloc_len, need_sep);
|
|
770
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, alloc_len, 1);
|
|
764
771
|
ENSURE_SIZE(buf, alloc_len);
|
|
765
772
|
|
|
766
773
|
/* fix up internal pointers */
|
|
@@ -810,11 +817,11 @@ int git_buf_join3(
|
|
|
810
817
|
sep_b = (str_b[len_b - 1] != separator);
|
|
811
818
|
}
|
|
812
819
|
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
820
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&len_total, len_a, sep_a);
|
|
821
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&len_total, len_total, len_b);
|
|
822
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&len_total, len_total, sep_b);
|
|
823
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&len_total, len_total, len_c);
|
|
824
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&len_total, len_total, 1);
|
|
818
825
|
ENSURE_SIZE(buf, len_total);
|
|
819
826
|
|
|
820
827
|
tgt = buf->ptr;
|
|
@@ -877,8 +884,8 @@ int git_buf_splice(
|
|
|
877
884
|
/* Ported from git.git
|
|
878
885
|
* https://github.com/git/git/blob/16eed7c/strbuf.c#L159-176
|
|
879
886
|
*/
|
|
880
|
-
|
|
881
|
-
|
|
887
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&new_size, (buf->size - nb_to_remove), nb_to_insert);
|
|
888
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_size, new_size, 1);
|
|
882
889
|
ENSURE_SIZE(buf, alloc_size);
|
|
883
890
|
|
|
884
891
|
memmove(splice_loc + nb_to_insert,
|
|
@@ -995,14 +1002,14 @@ int git_buf_unquote(git_buf *buf)
|
|
|
995
1002
|
/* \xyz digits convert to the char*/
|
|
996
1003
|
case '0': case '1': case '2': case '3':
|
|
997
1004
|
if (j == buf->size-3) {
|
|
998
|
-
|
|
1005
|
+
git_error_set(GIT_ERROR_INVALID,
|
|
999
1006
|
"truncated quoted character \\%c", ch);
|
|
1000
1007
|
return -1;
|
|
1001
1008
|
}
|
|
1002
1009
|
|
|
1003
1010
|
if (buf->ptr[j+1] < '0' || buf->ptr[j+1] > '7' ||
|
|
1004
1011
|
buf->ptr[j+2] < '0' || buf->ptr[j+2] > '7') {
|
|
1005
|
-
|
|
1012
|
+
git_error_set(GIT_ERROR_INVALID,
|
|
1006
1013
|
"truncated quoted character \\%c%c%c",
|
|
1007
1014
|
buf->ptr[j], buf->ptr[j+1], buf->ptr[j+2]);
|
|
1008
1015
|
return -1;
|
|
@@ -1015,7 +1022,7 @@ int git_buf_unquote(git_buf *buf)
|
|
|
1015
1022
|
break;
|
|
1016
1023
|
|
|
1017
1024
|
default:
|
|
1018
|
-
|
|
1025
|
+
git_error_set(GIT_ERROR_INVALID, "invalid quoted character \\%c", ch);
|
|
1019
1026
|
return -1;
|
|
1020
1027
|
}
|
|
1021
1028
|
}
|
|
@@ -1029,6 +1036,6 @@ int git_buf_unquote(git_buf *buf)
|
|
|
1029
1036
|
return 0;
|
|
1030
1037
|
|
|
1031
1038
|
invalid:
|
|
1032
|
-
|
|
1039
|
+
git_error_set(GIT_ERROR_INVALID, "invalid quoted line");
|
|
1033
1040
|
return -1;
|
|
1034
1041
|
}
|
data/vendor/libgit2/src/cache.c
CHANGED
|
@@ -20,20 +20,20 @@ ssize_t git_cache__max_storage = (256 * 1024 * 1024);
|
|
|
20
20
|
git_atomic_ssize git_cache__current_storage = {0};
|
|
21
21
|
|
|
22
22
|
static size_t git_cache__max_object_size[8] = {
|
|
23
|
-
0, /*
|
|
24
|
-
4096, /*
|
|
25
|
-
4096, /*
|
|
26
|
-
0, /*
|
|
27
|
-
4096, /*
|
|
28
|
-
0, /*
|
|
29
|
-
0, /*
|
|
30
|
-
0 /*
|
|
23
|
+
0, /* GIT_OBJECT__EXT1 */
|
|
24
|
+
4096, /* GIT_OBJECT_COMMIT */
|
|
25
|
+
4096, /* GIT_OBJECT_TREE */
|
|
26
|
+
0, /* GIT_OBJECT_BLOB */
|
|
27
|
+
4096, /* GIT_OBJECT_TAG */
|
|
28
|
+
0, /* GIT_OBJECT__EXT2 */
|
|
29
|
+
0, /* GIT_OBJECT_OFS_DELTA */
|
|
30
|
+
0 /* GIT_OBJECT_REF_DELTA */
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
-
int git_cache_set_max_object_size(
|
|
33
|
+
int git_cache_set_max_object_size(git_object_t type, size_t size)
|
|
34
34
|
{
|
|
35
35
|
if (type < 0 || (size_t)type >= ARRAY_SIZE(git_cache__max_object_size)) {
|
|
36
|
-
|
|
36
|
+
git_error_set(GIT_ERROR_INVALID, "type out of range");
|
|
37
37
|
return -1;
|
|
38
38
|
}
|
|
39
39
|
|
|
@@ -65,12 +65,15 @@ void git_cache_dump_stats(git_cache *cache)
|
|
|
65
65
|
int git_cache_init(git_cache *cache)
|
|
66
66
|
{
|
|
67
67
|
memset(cache, 0, sizeof(*cache));
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
|
|
69
|
+
if ((git_oidmap_new(&cache->map)) < 0)
|
|
70
|
+
return -1;
|
|
71
|
+
|
|
70
72
|
if (git_rwlock_init(&cache->lock)) {
|
|
71
|
-
|
|
73
|
+
git_error_set(GIT_ERROR_OS, "failed to initialize cache rwlock");
|
|
72
74
|
return -1;
|
|
73
75
|
}
|
|
76
|
+
|
|
74
77
|
return 0;
|
|
75
78
|
}
|
|
76
79
|
|
|
@@ -101,7 +104,7 @@ void git_cache_clear(git_cache *cache)
|
|
|
101
104
|
git_rwlock_wrunlock(&cache->lock);
|
|
102
105
|
}
|
|
103
106
|
|
|
104
|
-
void
|
|
107
|
+
void git_cache_dispose(git_cache *cache)
|
|
105
108
|
{
|
|
106
109
|
git_cache_clear(cache);
|
|
107
110
|
git_oidmap_free(cache->map);
|
|
@@ -112,35 +115,37 @@ void git_cache_free(git_cache *cache)
|
|
|
112
115
|
/* Called with lock */
|
|
113
116
|
static void cache_evict_entries(git_cache *cache)
|
|
114
117
|
{
|
|
115
|
-
|
|
116
|
-
size_t evict_count = 8;
|
|
118
|
+
size_t evict_count = git_cache_size(cache) / 2048, i;
|
|
117
119
|
ssize_t evicted_memory = 0;
|
|
118
120
|
|
|
121
|
+
if (evict_count < 8)
|
|
122
|
+
evict_count = 8;
|
|
123
|
+
|
|
119
124
|
/* do not infinite loop if there's not enough entries to evict */
|
|
120
125
|
if (evict_count > git_cache_size(cache)) {
|
|
121
126
|
clear_cache(cache);
|
|
122
127
|
return;
|
|
123
128
|
}
|
|
124
129
|
|
|
130
|
+
i = 0;
|
|
125
131
|
while (evict_count > 0) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
if (git_oidmap_has_data(cache->map, pos)) {
|
|
129
|
-
git_cached_obj *evict = git_oidmap_value_at(cache->map, pos);
|
|
132
|
+
git_cached_obj *evict;
|
|
133
|
+
const git_oid *key;
|
|
130
134
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
git_cached_obj_decref(evict);
|
|
135
|
+
if (git_oidmap_iterate((void **) &evict, cache->map, &i, &key) == GIT_ITEROVER)
|
|
136
|
+
break;
|
|
134
137
|
|
|
135
|
-
|
|
136
|
-
|
|
138
|
+
evict_count--;
|
|
139
|
+
evicted_memory += evict->size;
|
|
140
|
+
git_oidmap_delete(cache->map, key);
|
|
141
|
+
git_cached_obj_decref(evict);
|
|
137
142
|
}
|
|
138
143
|
|
|
139
144
|
cache->used_memory -= evicted_memory;
|
|
140
145
|
git_atomic_ssize_add(&git_cache__current_storage, -evicted_memory);
|
|
141
146
|
}
|
|
142
147
|
|
|
143
|
-
static bool cache_should_store(
|
|
148
|
+
static bool cache_should_store(git_object_t object_type, size_t object_size)
|
|
144
149
|
{
|
|
145
150
|
size_t max_size = git_cache__max_object_size[object_type];
|
|
146
151
|
return git_cache__enabled && object_size < max_size;
|
|
@@ -148,16 +153,12 @@ static bool cache_should_store(git_otype object_type, size_t object_size)
|
|
|
148
153
|
|
|
149
154
|
static void *cache_get(git_cache *cache, const git_oid *oid, unsigned int flags)
|
|
150
155
|
{
|
|
151
|
-
|
|
152
|
-
git_cached_obj *entry = NULL;
|
|
156
|
+
git_cached_obj *entry;
|
|
153
157
|
|
|
154
158
|
if (!git_cache__enabled || git_rwlock_rdlock(&cache->lock) < 0)
|
|
155
159
|
return NULL;
|
|
156
160
|
|
|
157
|
-
|
|
158
|
-
if (git_oidmap_valid_index(cache->map, pos)) {
|
|
159
|
-
entry = git_oidmap_value_at(cache->map, pos);
|
|
160
|
-
|
|
161
|
+
if ((entry = git_oidmap_get(cache->map, oid)) != NULL) {
|
|
161
162
|
if (flags && entry->flags != flags) {
|
|
162
163
|
entry = NULL;
|
|
163
164
|
} else {
|
|
@@ -172,7 +173,7 @@ static void *cache_get(git_cache *cache, const git_oid *oid, unsigned int flags)
|
|
|
172
173
|
|
|
173
174
|
static void *cache_store(git_cache *cache, git_cached_obj *entry)
|
|
174
175
|
{
|
|
175
|
-
|
|
176
|
+
git_cached_obj *stored_entry;
|
|
176
177
|
|
|
177
178
|
git_cached_obj_incref(entry);
|
|
178
179
|
|
|
@@ -191,14 +192,9 @@ static void *cache_store(git_cache *cache, git_cached_obj *entry)
|
|
|
191
192
|
if (git_cache__current_storage.val > git_cache__max_storage)
|
|
192
193
|
cache_evict_entries(cache);
|
|
193
194
|
|
|
194
|
-
pos = git_oidmap_lookup_index(cache->map, &entry->oid);
|
|
195
|
-
|
|
196
195
|
/* not found */
|
|
197
|
-
if (
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
git_oidmap_insert(cache->map, &entry->oid, entry, &rval);
|
|
201
|
-
if (rval >= 0) {
|
|
196
|
+
if ((stored_entry = git_oidmap_get(cache->map, &entry->oid)) == NULL) {
|
|
197
|
+
if (git_oidmap_set(cache->map, &entry->oid, entry) == 0) {
|
|
202
198
|
git_cached_obj_incref(entry);
|
|
203
199
|
cache->used_memory += entry->size;
|
|
204
200
|
git_atomic_ssize_add(&git_cache__current_storage, (ssize_t)entry->size);
|
|
@@ -206,19 +202,16 @@ static void *cache_store(git_cache *cache, git_cached_obj *entry)
|
|
|
206
202
|
}
|
|
207
203
|
/* found */
|
|
208
204
|
else {
|
|
209
|
-
git_cached_obj *stored_entry = git_oidmap_value_at(cache->map, pos);
|
|
210
|
-
|
|
211
205
|
if (stored_entry->flags == entry->flags) {
|
|
212
206
|
git_cached_obj_decref(entry);
|
|
213
207
|
git_cached_obj_incref(stored_entry);
|
|
214
208
|
entry = stored_entry;
|
|
215
209
|
} else if (stored_entry->flags == GIT_CACHE_STORE_RAW &&
|
|
216
|
-
|
|
210
|
+
entry->flags == GIT_CACHE_STORE_PARSED) {
|
|
217
211
|
git_cached_obj_decref(stored_entry);
|
|
218
212
|
git_cached_obj_incref(entry);
|
|
219
213
|
|
|
220
|
-
|
|
221
|
-
git_oidmap_set_value_at(cache->map, pos, entry);
|
|
214
|
+
git_oidmap_set(cache->map, &entry->oid, entry);
|
|
222
215
|
} else {
|
|
223
216
|
/* NO OP */
|
|
224
217
|
}
|
data/vendor/libgit2/src/cache.h
CHANGED
|
@@ -24,7 +24,7 @@ enum {
|
|
|
24
24
|
|
|
25
25
|
typedef struct {
|
|
26
26
|
git_oid oid;
|
|
27
|
-
int16_t type; /*
|
|
27
|
+
int16_t type; /* git_object_t value */
|
|
28
28
|
uint16_t flags; /* GIT_CACHE_STORE value */
|
|
29
29
|
size_t size;
|
|
30
30
|
git_atomic refcount;
|
|
@@ -40,10 +40,10 @@ extern bool git_cache__enabled;
|
|
|
40
40
|
extern ssize_t git_cache__max_storage;
|
|
41
41
|
extern git_atomic_ssize git_cache__current_storage;
|
|
42
42
|
|
|
43
|
-
int git_cache_set_max_object_size(
|
|
43
|
+
int git_cache_set_max_object_size(git_object_t type, size_t size);
|
|
44
44
|
|
|
45
45
|
int git_cache_init(git_cache *cache);
|
|
46
|
-
void
|
|
46
|
+
void git_cache_dispose(git_cache *cache);
|
|
47
47
|
void git_cache_clear(git_cache *cache);
|
|
48
48
|
|
|
49
49
|
void *git_cache_store_raw(git_cache *cache, git_odb_object *entry);
|
|
@@ -47,12 +47,29 @@
|
|
|
47
47
|
|
|
48
48
|
/* Define the printf format specifer to use for size_t output */
|
|
49
49
|
#if defined(_MSC_VER) || defined(__MINGW32__)
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
#
|
|
50
|
+
|
|
51
|
+
/* Visual Studio 2012 and prior lack PRId64 entirely */
|
|
52
|
+
# ifndef PRId64
|
|
53
|
+
# define PRId64 "I64d"
|
|
54
|
+
# endif
|
|
55
|
+
|
|
56
|
+
/* The first block is needed to avoid warnings on MingW amd64 */
|
|
57
|
+
# if (SIZE_MAX == ULLONG_MAX)
|
|
58
|
+
# define PRIuZ "I64u"
|
|
59
|
+
# define PRIxZ "I64x"
|
|
60
|
+
# define PRIXZ "I64X"
|
|
61
|
+
# define PRIdZ "I64d"
|
|
62
|
+
# else
|
|
63
|
+
# define PRIuZ "Iu"
|
|
64
|
+
# define PRIxZ "Ix"
|
|
65
|
+
# define PRIXZ "IX"
|
|
66
|
+
# define PRIdZ "Id"
|
|
67
|
+
# endif
|
|
68
|
+
|
|
53
69
|
#else
|
|
54
70
|
# define PRIuZ "zu"
|
|
55
71
|
# define PRIxZ "zx"
|
|
72
|
+
# define PRIXZ "zX"
|
|
56
73
|
# define PRIdZ "zd"
|
|
57
74
|
#endif
|
|
58
75
|
|