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/pack.c
CHANGED
|
@@ -11,20 +11,23 @@
|
|
|
11
11
|
#include "delta.h"
|
|
12
12
|
#include "sha1_lookup.h"
|
|
13
13
|
#include "mwindow.h"
|
|
14
|
-
#include "
|
|
14
|
+
#include "futils.h"
|
|
15
15
|
#include "oid.h"
|
|
16
16
|
|
|
17
17
|
#include <zlib.h>
|
|
18
18
|
|
|
19
|
+
/* Option to bypass checking existence of '.keep' files */
|
|
20
|
+
bool git_disable_pack_keep_file_checks = false;
|
|
21
|
+
|
|
19
22
|
static int packfile_open(struct git_pack_file *p);
|
|
20
|
-
static
|
|
23
|
+
static off64_t nth_packed_object_offset(const struct git_pack_file *p, uint32_t n);
|
|
21
24
|
static int packfile_unpack_compressed(
|
|
22
25
|
git_rawobj *obj,
|
|
23
26
|
struct git_pack_file *p,
|
|
24
27
|
git_mwindow **w_curs,
|
|
25
|
-
|
|
28
|
+
off64_t *curpos,
|
|
26
29
|
size_t size,
|
|
27
|
-
|
|
30
|
+
git_object_t type);
|
|
28
31
|
|
|
29
32
|
/* Can find the offset of an object given
|
|
30
33
|
* a prefix of an identifier.
|
|
@@ -34,7 +37,7 @@ static int packfile_unpack_compressed(
|
|
|
34
37
|
* GIT_OID_MINPREFIXLEN and GIT_OID_HEXSZ.
|
|
35
38
|
*/
|
|
36
39
|
static int pack_entry_find_offset(
|
|
37
|
-
|
|
40
|
+
off64_t *offset_out,
|
|
38
41
|
git_oid *found_oid,
|
|
39
42
|
struct git_pack_file *p,
|
|
40
43
|
const git_oid *short_oid,
|
|
@@ -42,7 +45,7 @@ static int pack_entry_find_offset(
|
|
|
42
45
|
|
|
43
46
|
static int packfile_error(const char *message)
|
|
44
47
|
{
|
|
45
|
-
|
|
48
|
+
git_error_set(GIT_ERROR_ODB, "invalid pack file - %s", message);
|
|
46
49
|
return -1;
|
|
47
50
|
}
|
|
48
51
|
|
|
@@ -89,13 +92,13 @@ static void cache_free(git_pack_cache *cache)
|
|
|
89
92
|
|
|
90
93
|
static int cache_init(git_pack_cache *cache)
|
|
91
94
|
{
|
|
92
|
-
cache->entries
|
|
93
|
-
|
|
95
|
+
if (git_offmap_new(&cache->entries) < 0)
|
|
96
|
+
return -1;
|
|
94
97
|
|
|
95
98
|
cache->memory_limit = GIT_PACK_CACHE_MEMORY_LIMIT;
|
|
96
99
|
|
|
97
100
|
if (git_mutex_init(&cache->lock)) {
|
|
98
|
-
|
|
101
|
+
git_error_set(GIT_ERROR_OS, "failed to initialize pack cache mutex");
|
|
99
102
|
|
|
100
103
|
git__free(cache->entries);
|
|
101
104
|
cache->entries = NULL;
|
|
@@ -106,17 +109,14 @@ static int cache_init(git_pack_cache *cache)
|
|
|
106
109
|
return 0;
|
|
107
110
|
}
|
|
108
111
|
|
|
109
|
-
static git_pack_cache_entry *cache_get(git_pack_cache *cache,
|
|
112
|
+
static git_pack_cache_entry *cache_get(git_pack_cache *cache, off64_t offset)
|
|
110
113
|
{
|
|
111
|
-
|
|
112
|
-
git_pack_cache_entry *entry = NULL;
|
|
114
|
+
git_pack_cache_entry *entry;
|
|
113
115
|
|
|
114
116
|
if (git_mutex_lock(&cache->lock) < 0)
|
|
115
117
|
return NULL;
|
|
116
118
|
|
|
117
|
-
|
|
118
|
-
if (git_offmap_valid_index(cache->entries, k)) { /* found it */
|
|
119
|
-
entry = git_offmap_value_at(cache->entries, k);
|
|
119
|
+
if ((entry = git_offmap_get(cache->entries, offset)) != NULL) {
|
|
120
120
|
git_atomic_inc(&entry->refcount);
|
|
121
121
|
entry->last_usage = cache->use_ctr++;
|
|
122
122
|
}
|
|
@@ -128,7 +128,7 @@ static git_pack_cache_entry *cache_get(git_pack_cache *cache, git_off_t offset)
|
|
|
128
128
|
/* Run with the cache lock held */
|
|
129
129
|
static void free_lowest_entry(git_pack_cache *cache)
|
|
130
130
|
{
|
|
131
|
-
|
|
131
|
+
off64_t offset;
|
|
132
132
|
git_pack_cache_entry *entry;
|
|
133
133
|
|
|
134
134
|
git_offmap_foreach(cache->entries, offset, entry, {
|
|
@@ -144,11 +144,10 @@ static int cache_add(
|
|
|
144
144
|
git_pack_cache_entry **cached_out,
|
|
145
145
|
git_pack_cache *cache,
|
|
146
146
|
git_rawobj *base,
|
|
147
|
-
|
|
147
|
+
off64_t offset)
|
|
148
148
|
{
|
|
149
149
|
git_pack_cache_entry *entry;
|
|
150
|
-
int
|
|
151
|
-
khiter_t k;
|
|
150
|
+
int exists;
|
|
152
151
|
|
|
153
152
|
if (base->len > GIT_PACK_CACHE_SIZE_LIMIT)
|
|
154
153
|
return -1;
|
|
@@ -156,7 +155,7 @@ static int cache_add(
|
|
|
156
155
|
entry = new_cache_object(base);
|
|
157
156
|
if (entry) {
|
|
158
157
|
if (git_mutex_lock(&cache->lock) < 0) {
|
|
159
|
-
|
|
158
|
+
git_error_set(GIT_ERROR_OS, "failed to lock cache");
|
|
160
159
|
git__free(entry);
|
|
161
160
|
return -1;
|
|
162
161
|
}
|
|
@@ -166,9 +165,7 @@ static int cache_add(
|
|
|
166
165
|
while (cache->memory_used + base->len > cache->memory_limit)
|
|
167
166
|
free_lowest_entry(cache);
|
|
168
167
|
|
|
169
|
-
|
|
170
|
-
assert(error != 0);
|
|
171
|
-
git_offmap_set_value_at(cache->entries, k, entry);
|
|
168
|
+
git_offmap_set(cache->entries, offset, entry);
|
|
172
169
|
cache->memory_used += entry->raw.len;
|
|
173
170
|
|
|
174
171
|
*cached_out = entry;
|
|
@@ -217,7 +214,7 @@ static int pack_index_check(const char *path, struct git_pack_file *p)
|
|
|
217
214
|
|
|
218
215
|
if (p_fstat(fd, &st) < 0) {
|
|
219
216
|
p_close(fd);
|
|
220
|
-
|
|
217
|
+
git_error_set(GIT_ERROR_OS, "unable to stat pack index '%s'", path);
|
|
221
218
|
return -1;
|
|
222
219
|
}
|
|
223
220
|
|
|
@@ -226,7 +223,7 @@ static int pack_index_check(const char *path, struct git_pack_file *p)
|
|
|
226
223
|
(idx_size = (size_t)st.st_size) < 4 * 256 + 20 + 20)
|
|
227
224
|
{
|
|
228
225
|
p_close(fd);
|
|
229
|
-
|
|
226
|
+
git_error_set(GIT_ERROR_ODB, "invalid pack index '%s'", path);
|
|
230
227
|
return -1;
|
|
231
228
|
}
|
|
232
229
|
|
|
@@ -348,7 +345,7 @@ static int pack_index_open(struct git_pack_file *p)
|
|
|
348
345
|
static unsigned char *pack_window_open(
|
|
349
346
|
struct git_pack_file *p,
|
|
350
347
|
git_mwindow **w_cursor,
|
|
351
|
-
|
|
348
|
+
off64_t offset,
|
|
352
349
|
unsigned int *left)
|
|
353
350
|
{
|
|
354
351
|
if (p->mwf.fd == -1 && packfile_open(p) < 0)
|
|
@@ -378,12 +375,12 @@ static unsigned char *pack_window_open(
|
|
|
378
375
|
* - each byte afterwards: low seven bits are size continuation,
|
|
379
376
|
* with the high bit being "size continues"
|
|
380
377
|
*/
|
|
381
|
-
size_t git_packfile__object_header(unsigned char *hdr, size_t size,
|
|
378
|
+
size_t git_packfile__object_header(unsigned char *hdr, size_t size, git_object_t type)
|
|
382
379
|
{
|
|
383
380
|
unsigned char *hdr_base;
|
|
384
381
|
unsigned char c;
|
|
385
382
|
|
|
386
|
-
assert(type >=
|
|
383
|
+
assert(type >= GIT_OBJECT_COMMIT && type <= GIT_OBJECT_REF_DELTA);
|
|
387
384
|
|
|
388
385
|
/* TODO: add support for chunked objects; see git.git 6c0d19b1 */
|
|
389
386
|
|
|
@@ -405,7 +402,7 @@ size_t git_packfile__object_header(unsigned char *hdr, size_t size, git_otype ty
|
|
|
405
402
|
static int packfile_unpack_header1(
|
|
406
403
|
unsigned long *usedp,
|
|
407
404
|
size_t *sizep,
|
|
408
|
-
|
|
405
|
+
git_object_t *type,
|
|
409
406
|
const unsigned char *buf,
|
|
410
407
|
unsigned long len)
|
|
411
408
|
{
|
|
@@ -419,13 +416,13 @@ static int packfile_unpack_header1(
|
|
|
419
416
|
shift = 4;
|
|
420
417
|
while (c & 0x80) {
|
|
421
418
|
if (len <= used) {
|
|
422
|
-
|
|
419
|
+
git_error_set(GIT_ERROR_ODB, "buffer too small");
|
|
423
420
|
return GIT_EBUFS;
|
|
424
421
|
}
|
|
425
422
|
|
|
426
423
|
if (bitsizeof(long) <= shift) {
|
|
427
424
|
*usedp = 0;
|
|
428
|
-
|
|
425
|
+
git_error_set(GIT_ERROR_ODB, "packfile corrupted");
|
|
429
426
|
return -1;
|
|
430
427
|
}
|
|
431
428
|
|
|
@@ -441,10 +438,10 @@ static int packfile_unpack_header1(
|
|
|
441
438
|
|
|
442
439
|
int git_packfile_unpack_header(
|
|
443
440
|
size_t *size_p,
|
|
444
|
-
|
|
441
|
+
git_object_t *type_p,
|
|
445
442
|
git_mwindow_file *mwf,
|
|
446
443
|
git_mwindow **w_curs,
|
|
447
|
-
|
|
444
|
+
off64_t *curpos)
|
|
448
445
|
{
|
|
449
446
|
unsigned char *base;
|
|
450
447
|
unsigned int left;
|
|
@@ -475,22 +472,22 @@ int git_packfile_unpack_header(
|
|
|
475
472
|
|
|
476
473
|
int git_packfile_resolve_header(
|
|
477
474
|
size_t *size_p,
|
|
478
|
-
|
|
475
|
+
git_object_t *type_p,
|
|
479
476
|
struct git_pack_file *p,
|
|
480
|
-
|
|
477
|
+
off64_t offset)
|
|
481
478
|
{
|
|
482
479
|
git_mwindow *w_curs = NULL;
|
|
483
|
-
|
|
480
|
+
off64_t curpos = offset;
|
|
484
481
|
size_t size;
|
|
485
|
-
|
|
486
|
-
|
|
482
|
+
git_object_t type;
|
|
483
|
+
off64_t base_offset;
|
|
487
484
|
int error;
|
|
488
485
|
|
|
489
486
|
error = git_packfile_unpack_header(&size, &type, &p->mwf, &w_curs, &curpos);
|
|
490
487
|
if (error < 0)
|
|
491
488
|
return error;
|
|
492
489
|
|
|
493
|
-
if (type ==
|
|
490
|
+
if (type == GIT_OBJECT_OFS_DELTA || type == GIT_OBJECT_REF_DELTA) {
|
|
494
491
|
size_t base_size;
|
|
495
492
|
git_packfile_stream stream;
|
|
496
493
|
|
|
@@ -507,12 +504,12 @@ int git_packfile_resolve_header(
|
|
|
507
504
|
base_offset = 0;
|
|
508
505
|
}
|
|
509
506
|
|
|
510
|
-
while (type ==
|
|
507
|
+
while (type == GIT_OBJECT_OFS_DELTA || type == GIT_OBJECT_REF_DELTA) {
|
|
511
508
|
curpos = base_offset;
|
|
512
509
|
error = git_packfile_unpack_header(&size, &type, &p->mwf, &w_curs, &curpos);
|
|
513
510
|
if (error < 0)
|
|
514
511
|
return error;
|
|
515
|
-
if (type !=
|
|
512
|
+
if (type != GIT_OBJECT_OFS_DELTA && type != GIT_OBJECT_REF_DELTA)
|
|
516
513
|
break;
|
|
517
514
|
base_offset = get_delta_base(p, &w_curs, &curpos, type, base_offset);
|
|
518
515
|
git_mwindow_close(&w_curs);
|
|
@@ -531,16 +528,16 @@ int git_packfile_resolve_header(
|
|
|
531
528
|
* cache, we stop calculating there.
|
|
532
529
|
*/
|
|
533
530
|
static int pack_dependency_chain(git_dependency_chain *chain_out,
|
|
534
|
-
git_pack_cache_entry **cached_out,
|
|
531
|
+
git_pack_cache_entry **cached_out, off64_t *cached_off,
|
|
535
532
|
struct pack_chain_elem *small_stack, size_t *stack_sz,
|
|
536
|
-
struct git_pack_file *p,
|
|
533
|
+
struct git_pack_file *p, off64_t obj_offset)
|
|
537
534
|
{
|
|
538
535
|
git_dependency_chain chain = GIT_ARRAY_INIT;
|
|
539
536
|
git_mwindow *w_curs = NULL;
|
|
540
|
-
|
|
537
|
+
off64_t curpos = obj_offset, base_offset;
|
|
541
538
|
int error = 0, use_heap = 0;
|
|
542
539
|
size_t size, elem_pos;
|
|
543
|
-
|
|
540
|
+
git_object_t type;
|
|
544
541
|
|
|
545
542
|
elem_pos = 0;
|
|
546
543
|
while (true) {
|
|
@@ -557,7 +554,7 @@ static int pack_dependency_chain(git_dependency_chain *chain_out,
|
|
|
557
554
|
/* if we run out of space on the small stack, use the array */
|
|
558
555
|
if (elem_pos == SMALL_STACK_SIZE) {
|
|
559
556
|
git_array_init_to_size(chain, elem_pos);
|
|
560
|
-
|
|
557
|
+
GIT_ERROR_CHECK_ARRAY(chain);
|
|
561
558
|
memcpy(chain.ptr, small_stack, elem_pos * sizeof(struct pack_chain_elem));
|
|
562
559
|
chain.size = elem_pos;
|
|
563
560
|
use_heap = 1;
|
|
@@ -586,7 +583,7 @@ static int pack_dependency_chain(git_dependency_chain *chain_out,
|
|
|
586
583
|
elem->type = type;
|
|
587
584
|
elem->base_key = obj_offset;
|
|
588
585
|
|
|
589
|
-
if (type !=
|
|
586
|
+
if (type != GIT_OBJECT_OFS_DELTA && type != GIT_OBJECT_REF_DELTA)
|
|
590
587
|
break;
|
|
591
588
|
|
|
592
589
|
base_offset = get_delta_base(p, &w_curs, &curpos, type, obj_offset);
|
|
@@ -609,7 +606,7 @@ static int pack_dependency_chain(git_dependency_chain *chain_out,
|
|
|
609
606
|
elem_pos++;
|
|
610
607
|
}
|
|
611
608
|
|
|
612
|
-
|
|
609
|
+
|
|
613
610
|
*stack_sz = elem_pos + 1;
|
|
614
611
|
*chain_out = chain;
|
|
615
612
|
return error;
|
|
@@ -622,17 +619,17 @@ on_error:
|
|
|
622
619
|
int git_packfile_unpack(
|
|
623
620
|
git_rawobj *obj,
|
|
624
621
|
struct git_pack_file *p,
|
|
625
|
-
|
|
622
|
+
off64_t *obj_offset)
|
|
626
623
|
{
|
|
627
624
|
git_mwindow *w_curs = NULL;
|
|
628
|
-
|
|
625
|
+
off64_t curpos = *obj_offset;
|
|
629
626
|
int error, free_base = 0;
|
|
630
627
|
git_dependency_chain chain = GIT_ARRAY_INIT;
|
|
631
628
|
struct pack_chain_elem *elem = NULL, *stack;
|
|
632
629
|
git_pack_cache_entry *cached = NULL;
|
|
633
630
|
struct pack_chain_elem small_stack[SMALL_STACK_SIZE];
|
|
634
631
|
size_t stack_size = 0, elem_pos, alloclen;
|
|
635
|
-
|
|
632
|
+
git_object_t base_type;
|
|
636
633
|
|
|
637
634
|
/*
|
|
638
635
|
* TODO: optionally check the CRC on the packfile
|
|
@@ -644,7 +641,7 @@ int git_packfile_unpack(
|
|
|
644
641
|
|
|
645
642
|
obj->data = NULL;
|
|
646
643
|
obj->len = 0;
|
|
647
|
-
obj->type =
|
|
644
|
+
obj->type = GIT_OBJECT_INVALID;
|
|
648
645
|
|
|
649
646
|
/* let's point to the right stack */
|
|
650
647
|
stack = chain.ptr ? chain.ptr : small_stack;
|
|
@@ -660,10 +657,10 @@ int git_packfile_unpack(
|
|
|
660
657
|
}
|
|
661
658
|
|
|
662
659
|
switch (base_type) {
|
|
663
|
-
case
|
|
664
|
-
case
|
|
665
|
-
case
|
|
666
|
-
case
|
|
660
|
+
case GIT_OBJECT_COMMIT:
|
|
661
|
+
case GIT_OBJECT_TREE:
|
|
662
|
+
case GIT_OBJECT_BLOB:
|
|
663
|
+
case GIT_OBJECT_TAG:
|
|
667
664
|
if (!cached) {
|
|
668
665
|
curpos = elem->offset;
|
|
669
666
|
error = packfile_unpack_compressed(obj, p, &w_curs, &curpos, elem->size, elem->type);
|
|
@@ -673,8 +670,8 @@ int git_packfile_unpack(
|
|
|
673
670
|
if (error < 0)
|
|
674
671
|
goto cleanup;
|
|
675
672
|
break;
|
|
676
|
-
case
|
|
677
|
-
case
|
|
673
|
+
case GIT_OBJECT_OFS_DELTA:
|
|
674
|
+
case GIT_OBJECT_REF_DELTA:
|
|
678
675
|
error = packfile_error("dependency chain ends in a delta");
|
|
679
676
|
goto cleanup;
|
|
680
677
|
default:
|
|
@@ -691,9 +688,9 @@ int git_packfile_unpack(
|
|
|
691
688
|
if (cached && stack_size == 1) {
|
|
692
689
|
void *data = obj->data;
|
|
693
690
|
|
|
694
|
-
|
|
691
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, obj->len, 1);
|
|
695
692
|
obj->data = git__malloc(alloclen);
|
|
696
|
-
|
|
693
|
+
GIT_ERROR_CHECK_ALLOC(obj->data);
|
|
697
694
|
|
|
698
695
|
memcpy(obj->data, data, obj->len + 1);
|
|
699
696
|
git_atomic_dec(&cached->refcount);
|
|
@@ -726,7 +723,7 @@ int git_packfile_unpack(
|
|
|
726
723
|
base = *obj;
|
|
727
724
|
obj->data = NULL;
|
|
728
725
|
obj->len = 0;
|
|
729
|
-
obj->type =
|
|
726
|
+
obj->type = GIT_OBJECT_INVALID;
|
|
730
727
|
|
|
731
728
|
error = git_delta_apply(&obj->data, &obj->len, base.data, base.len, delta.data, delta.len);
|
|
732
729
|
obj->type = base_type;
|
|
@@ -780,7 +777,7 @@ static void use_git_free(void *opaq, void *ptr)
|
|
|
780
777
|
git__free(ptr);
|
|
781
778
|
}
|
|
782
779
|
|
|
783
|
-
int git_packfile_stream_open(git_packfile_stream *obj, struct git_pack_file *p,
|
|
780
|
+
int git_packfile_stream_open(git_packfile_stream *obj, struct git_pack_file *p, off64_t curpos)
|
|
784
781
|
{
|
|
785
782
|
int st;
|
|
786
783
|
|
|
@@ -793,7 +790,7 @@ int git_packfile_stream_open(git_packfile_stream *obj, struct git_pack_file *p,
|
|
|
793
790
|
obj->zstream.next_out = Z_NULL;
|
|
794
791
|
st = inflateInit(&obj->zstream);
|
|
795
792
|
if (st != Z_OK) {
|
|
796
|
-
|
|
793
|
+
git_error_set(GIT_ERROR_ZLIB, "failed to init packfile stream");
|
|
797
794
|
return -1;
|
|
798
795
|
}
|
|
799
796
|
|
|
@@ -824,7 +821,7 @@ ssize_t git_packfile_stream_read(git_packfile_stream *obj, void *buffer, size_t
|
|
|
824
821
|
written = len - obj->zstream.avail_out;
|
|
825
822
|
|
|
826
823
|
if (st != Z_OK && st != Z_STREAM_END) {
|
|
827
|
-
|
|
824
|
+
git_error_set(GIT_ERROR_ZLIB, "error reading from the zlib stream");
|
|
828
825
|
return -1;
|
|
829
826
|
}
|
|
830
827
|
|
|
@@ -849,18 +846,18 @@ static int packfile_unpack_compressed(
|
|
|
849
846
|
git_rawobj *obj,
|
|
850
847
|
struct git_pack_file *p,
|
|
851
848
|
git_mwindow **w_curs,
|
|
852
|
-
|
|
849
|
+
off64_t *curpos,
|
|
853
850
|
size_t size,
|
|
854
|
-
|
|
851
|
+
git_object_t type)
|
|
855
852
|
{
|
|
856
853
|
size_t buf_size;
|
|
857
854
|
int st;
|
|
858
855
|
z_stream stream;
|
|
859
856
|
unsigned char *buffer, *in;
|
|
860
857
|
|
|
861
|
-
|
|
858
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&buf_size, size, 1);
|
|
862
859
|
buffer = git__calloc(1, buf_size);
|
|
863
|
-
|
|
860
|
+
GIT_ERROR_CHECK_ALLOC(buffer);
|
|
864
861
|
|
|
865
862
|
memset(&stream, 0, sizeof(stream));
|
|
866
863
|
stream.next_out = buffer;
|
|
@@ -871,7 +868,7 @@ static int packfile_unpack_compressed(
|
|
|
871
868
|
st = inflateInit(&stream);
|
|
872
869
|
if (st != Z_OK) {
|
|
873
870
|
git__free(buffer);
|
|
874
|
-
|
|
871
|
+
git_error_set(GIT_ERROR_ZLIB, "failed to init zlib stream on unpack");
|
|
875
872
|
|
|
876
873
|
return -1;
|
|
877
874
|
}
|
|
@@ -898,7 +895,7 @@ static int packfile_unpack_compressed(
|
|
|
898
895
|
|
|
899
896
|
if ((st != Z_STREAM_END) || stream.total_out != size) {
|
|
900
897
|
git__free(buffer);
|
|
901
|
-
|
|
898
|
+
git_error_set(GIT_ERROR_ZLIB, "error inflating zlib stream");
|
|
902
899
|
return -1;
|
|
903
900
|
}
|
|
904
901
|
|
|
@@ -912,16 +909,16 @@ static int packfile_unpack_compressed(
|
|
|
912
909
|
* curpos is where the data starts, delta_obj_offset is the where the
|
|
913
910
|
* header starts
|
|
914
911
|
*/
|
|
915
|
-
|
|
912
|
+
off64_t get_delta_base(
|
|
916
913
|
struct git_pack_file *p,
|
|
917
914
|
git_mwindow **w_curs,
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
915
|
+
off64_t *curpos,
|
|
916
|
+
git_object_t type,
|
|
917
|
+
off64_t delta_obj_offset)
|
|
921
918
|
{
|
|
922
919
|
unsigned int left = 0;
|
|
923
920
|
unsigned char *base_info;
|
|
924
|
-
|
|
921
|
+
off64_t base_offset;
|
|
925
922
|
git_oid unused;
|
|
926
923
|
|
|
927
924
|
base_info = pack_window_open(p, w_curs, *curpos, &left);
|
|
@@ -934,7 +931,7 @@ git_off_t get_delta_base(
|
|
|
934
931
|
* that is assured. An OFS_DELTA longer than the hash size
|
|
935
932
|
* is stupid, as then a REF_DELTA would be smaller to store.
|
|
936
933
|
*/
|
|
937
|
-
if (type ==
|
|
934
|
+
if (type == GIT_OBJECT_OFS_DELTA) {
|
|
938
935
|
unsigned used = 0;
|
|
939
936
|
unsigned char c = base_info[used++];
|
|
940
937
|
size_t unsigned_base_offset = c & 127;
|
|
@@ -951,17 +948,16 @@ git_off_t get_delta_base(
|
|
|
951
948
|
return 0; /* out of bound */
|
|
952
949
|
base_offset = delta_obj_offset - unsigned_base_offset;
|
|
953
950
|
*curpos += used;
|
|
954
|
-
} else if (type ==
|
|
951
|
+
} else if (type == GIT_OBJECT_REF_DELTA) {
|
|
955
952
|
/* If we have the cooperative cache, search in it first */
|
|
956
953
|
if (p->has_cache) {
|
|
957
|
-
|
|
954
|
+
struct git_pack_entry *entry;
|
|
958
955
|
git_oid oid;
|
|
959
956
|
|
|
960
957
|
git_oid_fromraw(&oid, base_info);
|
|
961
|
-
|
|
962
|
-
if (git_oidmap_valid_index(p->idx_cache, k)) {
|
|
958
|
+
if ((entry = git_oidmap_get(p->idx_cache, &oid)) != NULL) {
|
|
963
959
|
*curpos += 20;
|
|
964
|
-
return
|
|
960
|
+
return entry->offset;
|
|
965
961
|
} else {
|
|
966
962
|
/* If we're building an index, don't try to find the pack
|
|
967
963
|
* entry; we just haven't seen it yet. We'll make
|
|
@@ -1049,7 +1045,7 @@ static int packfile_open(struct git_pack_file *p)
|
|
|
1049
1045
|
if (!p->mwf.size) {
|
|
1050
1046
|
if (!S_ISREG(st.st_mode))
|
|
1051
1047
|
goto cleanup;
|
|
1052
|
-
p->mwf.size = (
|
|
1048
|
+
p->mwf.size = (off64_t)st.st_size;
|
|
1053
1049
|
} else if (p->mwf.size != st.st_size)
|
|
1054
1050
|
goto cleanup;
|
|
1055
1051
|
|
|
@@ -1087,7 +1083,7 @@ static int packfile_open(struct git_pack_file *p)
|
|
|
1087
1083
|
return 0;
|
|
1088
1084
|
|
|
1089
1085
|
cleanup:
|
|
1090
|
-
|
|
1086
|
+
git_error_set(GIT_ERROR_OS, "invalid packfile '%s'", p->pack_name);
|
|
1091
1087
|
|
|
1092
1088
|
if (p->mwf.fd >= 0)
|
|
1093
1089
|
p_close(p->mwf.fd);
|
|
@@ -1126,11 +1122,11 @@ int git_packfile_alloc(struct git_pack_file **pack_out, const char *path)
|
|
|
1126
1122
|
if (path_len < strlen(".idx"))
|
|
1127
1123
|
return git_odb__error_notfound("invalid packfile path", NULL, 0);
|
|
1128
1124
|
|
|
1129
|
-
|
|
1130
|
-
|
|
1125
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, sizeof(*p), path_len);
|
|
1126
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, alloc_len, 2);
|
|
1131
1127
|
|
|
1132
1128
|
p = git__calloc(1, alloc_len);
|
|
1133
|
-
|
|
1129
|
+
GIT_ERROR_CHECK_ALLOC(p);
|
|
1134
1130
|
|
|
1135
1131
|
memcpy(p->pack_name, path, path_len + 1);
|
|
1136
1132
|
|
|
@@ -1141,9 +1137,11 @@ int git_packfile_alloc(struct git_pack_file **pack_out, const char *path)
|
|
|
1141
1137
|
if (git__suffixcmp(path, ".idx") == 0) {
|
|
1142
1138
|
size_t root_len = path_len - strlen(".idx");
|
|
1143
1139
|
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
p->
|
|
1140
|
+
if (!git_disable_pack_keep_file_checks) {
|
|
1141
|
+
memcpy(p->pack_name + root_len, ".keep", sizeof(".keep"));
|
|
1142
|
+
if (git_path_exists(p->pack_name) == true)
|
|
1143
|
+
p->pack_keep = 1;
|
|
1144
|
+
}
|
|
1147
1145
|
|
|
1148
1146
|
memcpy(p->pack_name + root_len, ".pack", sizeof(".pack"));
|
|
1149
1147
|
}
|
|
@@ -1163,7 +1161,7 @@ int git_packfile_alloc(struct git_pack_file **pack_out, const char *path)
|
|
|
1163
1161
|
p->index_version = -1;
|
|
1164
1162
|
|
|
1165
1163
|
if (git_mutex_init(&p->lock)) {
|
|
1166
|
-
|
|
1164
|
+
git_error_set(GIT_ERROR_OS, "failed to initialize packfile mutex");
|
|
1167
1165
|
git__free(p);
|
|
1168
1166
|
return -1;
|
|
1169
1167
|
}
|
|
@@ -1184,7 +1182,7 @@ int git_packfile_alloc(struct git_pack_file **pack_out, const char *path)
|
|
|
1184
1182
|
*
|
|
1185
1183
|
***********************************************************/
|
|
1186
1184
|
|
|
1187
|
-
static
|
|
1185
|
+
static off64_t nth_packed_object_offset(const struct git_pack_file *p, uint32_t n)
|
|
1188
1186
|
{
|
|
1189
1187
|
const unsigned char *index = p->index_map.data;
|
|
1190
1188
|
const unsigned char *end = index + p->index_map.len;
|
|
@@ -1266,13 +1264,13 @@ int git_pack_foreach_entry(
|
|
|
1266
1264
|
|
|
1267
1265
|
for (i = 0; i < p->num_objects; i++)
|
|
1268
1266
|
if ((error = cb(p->oids[i], data)) != 0)
|
|
1269
|
-
return
|
|
1267
|
+
return git_error_set_after_callback(error);
|
|
1270
1268
|
|
|
1271
1269
|
return error;
|
|
1272
1270
|
}
|
|
1273
1271
|
|
|
1274
1272
|
static int pack_entry_find_offset(
|
|
1275
|
-
|
|
1273
|
+
off64_t *offset_out,
|
|
1276
1274
|
git_oid *found_oid,
|
|
1277
1275
|
struct git_pack_file *p,
|
|
1278
1276
|
const git_oid *short_oid,
|
|
@@ -1282,7 +1280,7 @@ static int pack_entry_find_offset(
|
|
|
1282
1280
|
const unsigned char *index;
|
|
1283
1281
|
unsigned hi, lo, stride;
|
|
1284
1282
|
int pos, found = 0;
|
|
1285
|
-
|
|
1283
|
+
off64_t offset;
|
|
1286
1284
|
const unsigned char *current = 0;
|
|
1287
1285
|
|
|
1288
1286
|
*offset_out = 0;
|
|
@@ -1352,7 +1350,7 @@ static int pack_entry_find_offset(
|
|
|
1352
1350
|
return git_odb__error_ambiguous("found multiple offsets for pack entry");
|
|
1353
1351
|
|
|
1354
1352
|
if ((offset = nth_packed_object_offset(p, pos)) < 0) {
|
|
1355
|
-
|
|
1353
|
+
git_error_set(GIT_ERROR_ODB, "packfile index is corrupt");
|
|
1356
1354
|
return -1;
|
|
1357
1355
|
}
|
|
1358
1356
|
|
|
@@ -1377,7 +1375,7 @@ int git_pack_entry_find(
|
|
|
1377
1375
|
const git_oid *short_oid,
|
|
1378
1376
|
size_t len)
|
|
1379
1377
|
{
|
|
1380
|
-
|
|
1378
|
+
off64_t offset;
|
|
1381
1379
|
git_oid found_oid;
|
|
1382
1380
|
int error;
|
|
1383
1381
|
|
data/vendor/libgit2/src/pack.h
CHANGED
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
#include "map.h"
|
|
18
18
|
#include "mwindow.h"
|
|
19
19
|
#include "odb.h"
|
|
20
|
+
#include "offmap.h"
|
|
20
21
|
#include "oidmap.h"
|
|
21
22
|
#include "array.h"
|
|
22
23
|
|
|
@@ -63,17 +64,14 @@ typedef struct git_pack_cache_entry {
|
|
|
63
64
|
} git_pack_cache_entry;
|
|
64
65
|
|
|
65
66
|
struct pack_chain_elem {
|
|
66
|
-
|
|
67
|
-
|
|
67
|
+
off64_t base_key;
|
|
68
|
+
off64_t offset;
|
|
68
69
|
size_t size;
|
|
69
|
-
|
|
70
|
+
git_object_t type;
|
|
70
71
|
};
|
|
71
72
|
|
|
72
73
|
typedef git_array_t(struct pack_chain_elem) git_dependency_chain;
|
|
73
74
|
|
|
74
|
-
#include "offmap.h"
|
|
75
|
-
#include "oidmap.h"
|
|
76
|
-
|
|
77
75
|
#define GIT_PACK_CACHE_MEMORY_LIMIT 16 * 1024 * 1024
|
|
78
76
|
#define GIT_PACK_CACHE_SIZE_LIMIT 1024 * 1024 /* don't bother caching anything over 1MB */
|
|
79
77
|
|
|
@@ -110,45 +108,45 @@ struct git_pack_file {
|
|
|
110
108
|
};
|
|
111
109
|
|
|
112
110
|
struct git_pack_entry {
|
|
113
|
-
|
|
111
|
+
off64_t offset;
|
|
114
112
|
git_oid sha1;
|
|
115
113
|
struct git_pack_file *p;
|
|
116
114
|
};
|
|
117
115
|
|
|
118
116
|
typedef struct git_packfile_stream {
|
|
119
|
-
|
|
117
|
+
off64_t curpos;
|
|
120
118
|
int done;
|
|
121
119
|
z_stream zstream;
|
|
122
120
|
struct git_pack_file *p;
|
|
123
121
|
git_mwindow *mw;
|
|
124
122
|
} git_packfile_stream;
|
|
125
123
|
|
|
126
|
-
size_t git_packfile__object_header(unsigned char *hdr, size_t size,
|
|
124
|
+
size_t git_packfile__object_header(unsigned char *hdr, size_t size, git_object_t type);
|
|
127
125
|
|
|
128
126
|
int git_packfile__name(char **out, const char *path);
|
|
129
127
|
|
|
130
128
|
int git_packfile_unpack_header(
|
|
131
129
|
size_t *size_p,
|
|
132
|
-
|
|
130
|
+
git_object_t *type_p,
|
|
133
131
|
git_mwindow_file *mwf,
|
|
134
132
|
git_mwindow **w_curs,
|
|
135
|
-
|
|
133
|
+
off64_t *curpos);
|
|
136
134
|
|
|
137
135
|
int git_packfile_resolve_header(
|
|
138
136
|
size_t *size_p,
|
|
139
|
-
|
|
137
|
+
git_object_t *type_p,
|
|
140
138
|
struct git_pack_file *p,
|
|
141
|
-
|
|
139
|
+
off64_t offset);
|
|
142
140
|
|
|
143
|
-
int git_packfile_unpack(git_rawobj *obj, struct git_pack_file *p,
|
|
141
|
+
int git_packfile_unpack(git_rawobj *obj, struct git_pack_file *p, off64_t *obj_offset);
|
|
144
142
|
|
|
145
|
-
int git_packfile_stream_open(git_packfile_stream *obj, struct git_pack_file *p,
|
|
143
|
+
int git_packfile_stream_open(git_packfile_stream *obj, struct git_pack_file *p, off64_t curpos);
|
|
146
144
|
ssize_t git_packfile_stream_read(git_packfile_stream *obj, void *buffer, size_t len);
|
|
147
145
|
void git_packfile_stream_dispose(git_packfile_stream *obj);
|
|
148
146
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
147
|
+
off64_t get_delta_base(struct git_pack_file *p, git_mwindow **w_curs,
|
|
148
|
+
off64_t *curpos, git_object_t type,
|
|
149
|
+
off64_t delta_obj_offset);
|
|
152
150
|
|
|
153
151
|
void git_packfile_close(struct git_pack_file *p, bool unlink_packfile);
|
|
154
152
|
void git_packfile_free(struct git_pack_file *p);
|