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/object.c
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
#include "repository.h"
|
|
13
13
|
|
|
14
14
|
#include "commit.h"
|
|
15
|
+
#include "hash.h"
|
|
15
16
|
#include "tree.h"
|
|
16
17
|
#include "blob.h"
|
|
17
18
|
#include "oid.h"
|
|
@@ -19,43 +20,94 @@
|
|
|
19
20
|
|
|
20
21
|
bool git_object__strict_input_validation = true;
|
|
21
22
|
|
|
23
|
+
extern int git_odb_hash(git_oid *out, const void *data, size_t len, git_object_t type);
|
|
24
|
+
size_t git_object__size(git_object_t type);
|
|
25
|
+
|
|
22
26
|
typedef struct {
|
|
23
27
|
const char *str; /* type name string */
|
|
24
28
|
size_t size; /* size in bytes of the object structure */
|
|
25
29
|
|
|
26
30
|
int (*parse)(void *self, git_odb_object *obj);
|
|
31
|
+
int (*parse_raw)(void *self, const char *data, size_t size);
|
|
27
32
|
void (*free)(void *self);
|
|
28
33
|
} git_object_def;
|
|
29
34
|
|
|
30
35
|
static git_object_def git_objects_table[] = {
|
|
31
|
-
/* 0 =
|
|
32
|
-
{ "", 0, NULL, NULL },
|
|
36
|
+
/* 0 = GIT_OBJECT__EXT1 */
|
|
37
|
+
{ "", 0, NULL, NULL, NULL },
|
|
33
38
|
|
|
34
|
-
/* 1 =
|
|
35
|
-
{ "commit", sizeof(git_commit), git_commit__parse, git_commit__free },
|
|
39
|
+
/* 1 = GIT_OBJECT_COMMIT */
|
|
40
|
+
{ "commit", sizeof(git_commit), git_commit__parse, git_commit__parse_raw, git_commit__free },
|
|
36
41
|
|
|
37
|
-
/* 2 =
|
|
38
|
-
{ "tree", sizeof(git_tree), git_tree__parse, git_tree__free },
|
|
42
|
+
/* 2 = GIT_OBJECT_TREE */
|
|
43
|
+
{ "tree", sizeof(git_tree), git_tree__parse, git_tree__parse_raw, git_tree__free },
|
|
39
44
|
|
|
40
|
-
/* 3 =
|
|
41
|
-
{ "blob", sizeof(git_blob), git_blob__parse, git_blob__free },
|
|
45
|
+
/* 3 = GIT_OBJECT_BLOB */
|
|
46
|
+
{ "blob", sizeof(git_blob), git_blob__parse, git_blob__parse_raw, git_blob__free },
|
|
42
47
|
|
|
43
|
-
/* 4 =
|
|
44
|
-
{ "tag", sizeof(git_tag), git_tag__parse, git_tag__free },
|
|
48
|
+
/* 4 = GIT_OBJECT_TAG */
|
|
49
|
+
{ "tag", sizeof(git_tag), git_tag__parse, git_tag__parse_raw, git_tag__free },
|
|
45
50
|
|
|
46
|
-
/* 5 =
|
|
47
|
-
{ "", 0, NULL, NULL },
|
|
48
|
-
/* 6 =
|
|
49
|
-
{ "OFS_DELTA", 0, NULL, NULL },
|
|
50
|
-
/* 7 =
|
|
51
|
-
{ "REF_DELTA", 0, NULL, NULL },
|
|
51
|
+
/* 5 = GIT_OBJECT__EXT2 */
|
|
52
|
+
{ "", 0, NULL, NULL, NULL },
|
|
53
|
+
/* 6 = GIT_OBJECT_OFS_DELTA */
|
|
54
|
+
{ "OFS_DELTA", 0, NULL, NULL, NULL },
|
|
55
|
+
/* 7 = GIT_OBJECT_REF_DELTA */
|
|
56
|
+
{ "REF_DELTA", 0, NULL, NULL, NULL },
|
|
52
57
|
};
|
|
53
58
|
|
|
59
|
+
int git_object__from_raw(
|
|
60
|
+
git_object **object_out,
|
|
61
|
+
const char *data,
|
|
62
|
+
size_t size,
|
|
63
|
+
git_object_t type)
|
|
64
|
+
{
|
|
65
|
+
git_object_def *def;
|
|
66
|
+
git_object *object;
|
|
67
|
+
size_t object_size;
|
|
68
|
+
int error;
|
|
69
|
+
|
|
70
|
+
assert(object_out);
|
|
71
|
+
*object_out = NULL;
|
|
72
|
+
|
|
73
|
+
/* Validate type match */
|
|
74
|
+
if (type != GIT_OBJECT_BLOB && type != GIT_OBJECT_TREE && type != GIT_OBJECT_COMMIT && type != GIT_OBJECT_TAG) {
|
|
75
|
+
git_error_set(GIT_ERROR_INVALID, "the requested type is invalid");
|
|
76
|
+
return GIT_ENOTFOUND;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if ((object_size = git_object__size(type)) == 0) {
|
|
80
|
+
git_error_set(GIT_ERROR_INVALID, "the requested type is invalid");
|
|
81
|
+
return GIT_ENOTFOUND;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/* Allocate and initialize base object */
|
|
85
|
+
object = git__calloc(1, object_size);
|
|
86
|
+
GIT_ERROR_CHECK_ALLOC(object);
|
|
87
|
+
object->cached.flags = GIT_CACHE_STORE_PARSED;
|
|
88
|
+
object->cached.type = type;
|
|
89
|
+
git_odb_hash(&object->cached.oid, data, size, type);
|
|
90
|
+
|
|
91
|
+
/* Parse raw object data */
|
|
92
|
+
def = &git_objects_table[type];
|
|
93
|
+
assert(def->free && def->parse_raw);
|
|
94
|
+
|
|
95
|
+
if ((error = def->parse_raw(object, data, size)) < 0) {
|
|
96
|
+
def->free(object);
|
|
97
|
+
return error;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
git_cached_obj_incref(object);
|
|
101
|
+
*object_out = object;
|
|
102
|
+
|
|
103
|
+
return 0;
|
|
104
|
+
}
|
|
105
|
+
|
|
54
106
|
int git_object__from_odb_object(
|
|
55
107
|
git_object **object_out,
|
|
56
108
|
git_repository *repo,
|
|
57
109
|
git_odb_object *odb_obj,
|
|
58
|
-
|
|
110
|
+
git_object_t type)
|
|
59
111
|
{
|
|
60
112
|
int error;
|
|
61
113
|
size_t object_size;
|
|
@@ -66,20 +118,20 @@ int git_object__from_odb_object(
|
|
|
66
118
|
*object_out = NULL;
|
|
67
119
|
|
|
68
120
|
/* Validate type match */
|
|
69
|
-
if (type !=
|
|
70
|
-
|
|
121
|
+
if (type != GIT_OBJECT_ANY && type != odb_obj->cached.type) {
|
|
122
|
+
git_error_set(GIT_ERROR_INVALID,
|
|
71
123
|
"the requested type does not match the type in the ODB");
|
|
72
124
|
return GIT_ENOTFOUND;
|
|
73
125
|
}
|
|
74
126
|
|
|
75
127
|
if ((object_size = git_object__size(odb_obj->cached.type)) == 0) {
|
|
76
|
-
|
|
128
|
+
git_error_set(GIT_ERROR_INVALID, "the requested type is invalid");
|
|
77
129
|
return GIT_ENOTFOUND;
|
|
78
130
|
}
|
|
79
131
|
|
|
80
132
|
/* Allocate and initialize base object */
|
|
81
133
|
object = git__calloc(1, object_size);
|
|
82
|
-
|
|
134
|
+
GIT_ERROR_CHECK_ALLOC(object);
|
|
83
135
|
|
|
84
136
|
git_oid_cpy(&object->cached.oid, &odb_obj->cached.oid);
|
|
85
137
|
object->cached.type = odb_obj->cached.type;
|
|
@@ -100,7 +152,7 @@ int git_object__from_odb_object(
|
|
|
100
152
|
|
|
101
153
|
void git_object__free(void *obj)
|
|
102
154
|
{
|
|
103
|
-
|
|
155
|
+
git_object_t type = ((git_object *)obj)->cached.type;
|
|
104
156
|
|
|
105
157
|
if (type < 0 || ((size_t)type) >= ARRAY_SIZE(git_objects_table) ||
|
|
106
158
|
!git_objects_table[type].free)
|
|
@@ -114,7 +166,7 @@ int git_object_lookup_prefix(
|
|
|
114
166
|
git_repository *repo,
|
|
115
167
|
const git_oid *id,
|
|
116
168
|
size_t len,
|
|
117
|
-
|
|
169
|
+
git_object_t type)
|
|
118
170
|
{
|
|
119
171
|
git_object *object = NULL;
|
|
120
172
|
git_odb *odb = NULL;
|
|
@@ -124,7 +176,7 @@ int git_object_lookup_prefix(
|
|
|
124
176
|
assert(repo && object_out && id);
|
|
125
177
|
|
|
126
178
|
if (len < GIT_OID_MINPREFIXLEN) {
|
|
127
|
-
|
|
179
|
+
git_error_set(GIT_ERROR_OBJECT, "ambiguous lookup - OID prefix is too short");
|
|
128
180
|
return GIT_EAMBIGUOUS;
|
|
129
181
|
}
|
|
130
182
|
|
|
@@ -146,9 +198,9 @@ int git_object_lookup_prefix(
|
|
|
146
198
|
if (cached->flags == GIT_CACHE_STORE_PARSED) {
|
|
147
199
|
object = (git_object *)cached;
|
|
148
200
|
|
|
149
|
-
if (type !=
|
|
201
|
+
if (type != GIT_OBJECT_ANY && type != object->cached.type) {
|
|
150
202
|
git_object_free(object);
|
|
151
|
-
|
|
203
|
+
git_error_set(GIT_ERROR_INVALID,
|
|
152
204
|
"the requested type does not match the type in ODB");
|
|
153
205
|
return GIT_ENOTFOUND;
|
|
154
206
|
}
|
|
@@ -196,7 +248,7 @@ int git_object_lookup_prefix(
|
|
|
196
248
|
return error;
|
|
197
249
|
}
|
|
198
250
|
|
|
199
|
-
int git_object_lookup(git_object **object_out, git_repository *repo, const git_oid *id,
|
|
251
|
+
int git_object_lookup(git_object **object_out, git_repository *repo, const git_oid *id, git_object_t type) {
|
|
200
252
|
return git_object_lookup_prefix(object_out, repo, id, GIT_OID_HEXSZ, type);
|
|
201
253
|
}
|
|
202
254
|
|
|
@@ -214,7 +266,7 @@ const git_oid *git_object_id(const git_object *obj)
|
|
|
214
266
|
return &obj->cached.oid;
|
|
215
267
|
}
|
|
216
268
|
|
|
217
|
-
|
|
269
|
+
git_object_t git_object_type(const git_object *obj)
|
|
218
270
|
{
|
|
219
271
|
assert(obj);
|
|
220
272
|
return obj->cached.type;
|
|
@@ -226,7 +278,7 @@ git_repository *git_object_owner(const git_object *obj)
|
|
|
226
278
|
return obj->repo;
|
|
227
279
|
}
|
|
228
280
|
|
|
229
|
-
const char *git_object_type2string(
|
|
281
|
+
const char *git_object_type2string(git_object_t type)
|
|
230
282
|
{
|
|
231
283
|
if (type < 0 || ((size_t) type) >= ARRAY_SIZE(git_objects_table))
|
|
232
284
|
return "";
|
|
@@ -234,30 +286,30 @@ const char *git_object_type2string(git_otype type)
|
|
|
234
286
|
return git_objects_table[type].str;
|
|
235
287
|
}
|
|
236
288
|
|
|
237
|
-
|
|
289
|
+
git_object_t git_object_string2type(const char *str)
|
|
238
290
|
{
|
|
239
291
|
if (!str)
|
|
240
|
-
return
|
|
292
|
+
return GIT_OBJECT_INVALID;
|
|
241
293
|
|
|
242
294
|
return git_object_stringn2type(str, strlen(str));
|
|
243
295
|
}
|
|
244
296
|
|
|
245
|
-
|
|
297
|
+
git_object_t git_object_stringn2type(const char *str, size_t len)
|
|
246
298
|
{
|
|
247
299
|
size_t i;
|
|
248
300
|
|
|
249
301
|
if (!str || !len || !*str)
|
|
250
|
-
return
|
|
302
|
+
return GIT_OBJECT_INVALID;
|
|
251
303
|
|
|
252
304
|
for (i = 0; i < ARRAY_SIZE(git_objects_table); i++)
|
|
253
305
|
if (*git_objects_table[i].str &&
|
|
254
306
|
!git__prefixncmp(str, len, git_objects_table[i].str))
|
|
255
|
-
return (
|
|
307
|
+
return (git_object_t)i;
|
|
256
308
|
|
|
257
|
-
return
|
|
309
|
+
return GIT_OBJECT_INVALID;
|
|
258
310
|
}
|
|
259
311
|
|
|
260
|
-
int git_object_typeisloose(
|
|
312
|
+
int git_object_typeisloose(git_object_t type)
|
|
261
313
|
{
|
|
262
314
|
if (type < 0 || ((size_t) type) >= ARRAY_SIZE(git_objects_table))
|
|
263
315
|
return 0;
|
|
@@ -265,7 +317,7 @@ int git_object_typeisloose(git_otype type)
|
|
|
265
317
|
return (git_objects_table[type].size > 0) ? 1 : 0;
|
|
266
318
|
}
|
|
267
319
|
|
|
268
|
-
size_t git_object__size(
|
|
320
|
+
size_t git_object__size(git_object_t type)
|
|
269
321
|
{
|
|
270
322
|
if (type < 0 || ((size_t) type) >= ARRAY_SIZE(git_objects_table))
|
|
271
323
|
return 0;
|
|
@@ -275,17 +327,17 @@ size_t git_object__size(git_otype type)
|
|
|
275
327
|
|
|
276
328
|
static int dereference_object(git_object **dereferenced, git_object *obj)
|
|
277
329
|
{
|
|
278
|
-
|
|
330
|
+
git_object_t type = git_object_type(obj);
|
|
279
331
|
|
|
280
332
|
switch (type) {
|
|
281
|
-
case
|
|
333
|
+
case GIT_OBJECT_COMMIT:
|
|
282
334
|
return git_commit_tree((git_tree **)dereferenced, (git_commit*)obj);
|
|
283
335
|
|
|
284
|
-
case
|
|
336
|
+
case GIT_OBJECT_TAG:
|
|
285
337
|
return git_tag_target(dereferenced, (git_tag*)obj);
|
|
286
338
|
|
|
287
|
-
case
|
|
288
|
-
case
|
|
339
|
+
case GIT_OBJECT_BLOB:
|
|
340
|
+
case GIT_OBJECT_TREE:
|
|
289
341
|
return GIT_EPEEL;
|
|
290
342
|
|
|
291
343
|
default:
|
|
@@ -293,7 +345,7 @@ static int dereference_object(git_object **dereferenced, git_object *obj)
|
|
|
293
345
|
}
|
|
294
346
|
}
|
|
295
347
|
|
|
296
|
-
static int peel_error(int error, const git_oid *oid,
|
|
348
|
+
static int peel_error(int error, const git_oid *oid, git_object_t type)
|
|
297
349
|
{
|
|
298
350
|
const char *type_name;
|
|
299
351
|
char hex_oid[GIT_OID_HEXSZ + 1];
|
|
@@ -303,29 +355,29 @@ static int peel_error(int error, const git_oid *oid, git_otype type)
|
|
|
303
355
|
git_oid_fmt(hex_oid, oid);
|
|
304
356
|
hex_oid[GIT_OID_HEXSZ] = '\0';
|
|
305
357
|
|
|
306
|
-
|
|
307
|
-
"successfully peeled into a %s (
|
|
358
|
+
git_error_set(GIT_ERROR_OBJECT, "the git_object of id '%s' can not be "
|
|
359
|
+
"successfully peeled into a %s (git_object_t=%i).", hex_oid, type_name, type);
|
|
308
360
|
|
|
309
361
|
return error;
|
|
310
362
|
}
|
|
311
363
|
|
|
312
|
-
static int check_type_combination(
|
|
364
|
+
static int check_type_combination(git_object_t type, git_object_t target)
|
|
313
365
|
{
|
|
314
366
|
if (type == target)
|
|
315
367
|
return 0;
|
|
316
368
|
|
|
317
369
|
switch (type) {
|
|
318
|
-
case
|
|
319
|
-
case
|
|
370
|
+
case GIT_OBJECT_BLOB:
|
|
371
|
+
case GIT_OBJECT_TREE:
|
|
320
372
|
/* a blob or tree can never be peeled to anything but themselves */
|
|
321
373
|
return GIT_EINVALIDSPEC;
|
|
322
374
|
break;
|
|
323
|
-
case
|
|
375
|
+
case GIT_OBJECT_COMMIT:
|
|
324
376
|
/* a commit can only be peeled to a tree */
|
|
325
|
-
if (target !=
|
|
377
|
+
if (target != GIT_OBJECT_TREE && target != GIT_OBJECT_ANY)
|
|
326
378
|
return GIT_EINVALIDSPEC;
|
|
327
379
|
break;
|
|
328
|
-
case
|
|
380
|
+
case GIT_OBJECT_TAG:
|
|
329
381
|
/* a tag may point to anything, so we let anything through */
|
|
330
382
|
break;
|
|
331
383
|
default:
|
|
@@ -338,18 +390,18 @@ static int check_type_combination(git_otype type, git_otype target)
|
|
|
338
390
|
int git_object_peel(
|
|
339
391
|
git_object **peeled,
|
|
340
392
|
const git_object *object,
|
|
341
|
-
|
|
393
|
+
git_object_t target_type)
|
|
342
394
|
{
|
|
343
395
|
git_object *source, *deref = NULL;
|
|
344
396
|
int error;
|
|
345
397
|
|
|
346
398
|
assert(object && peeled);
|
|
347
399
|
|
|
348
|
-
assert(target_type ==
|
|
349
|
-
target_type ==
|
|
350
|
-
target_type ==
|
|
351
|
-
target_type ==
|
|
352
|
-
target_type ==
|
|
400
|
+
assert(target_type == GIT_OBJECT_TAG ||
|
|
401
|
+
target_type == GIT_OBJECT_COMMIT ||
|
|
402
|
+
target_type == GIT_OBJECT_TREE ||
|
|
403
|
+
target_type == GIT_OBJECT_BLOB ||
|
|
404
|
+
target_type == GIT_OBJECT_ANY);
|
|
353
405
|
|
|
354
406
|
if ((error = check_type_combination(git_object_type(object), target_type)) < 0)
|
|
355
407
|
return peel_error(error, git_object_id(object), target_type);
|
|
@@ -369,7 +421,7 @@ int git_object_peel(
|
|
|
369
421
|
return 0;
|
|
370
422
|
}
|
|
371
423
|
|
|
372
|
-
if (target_type ==
|
|
424
|
+
if (target_type == GIT_OBJECT_ANY &&
|
|
373
425
|
git_object_type(deref) != git_object_type(object))
|
|
374
426
|
{
|
|
375
427
|
*peeled = deref;
|
|
@@ -402,7 +454,7 @@ int git_object_lookup_bypath(
|
|
|
402
454
|
git_object **out,
|
|
403
455
|
const git_object *treeish,
|
|
404
456
|
const char *path,
|
|
405
|
-
|
|
457
|
+
git_object_t type)
|
|
406
458
|
{
|
|
407
459
|
int error = -1;
|
|
408
460
|
git_tree *tree = NULL;
|
|
@@ -410,15 +462,15 @@ int git_object_lookup_bypath(
|
|
|
410
462
|
|
|
411
463
|
assert(out && treeish && path);
|
|
412
464
|
|
|
413
|
-
if ((error = git_object_peel((git_object**)&tree, treeish,
|
|
465
|
+
if ((error = git_object_peel((git_object**)&tree, treeish, GIT_OBJECT_TREE)) < 0 ||
|
|
414
466
|
(error = git_tree_entry_bypath(&entry, tree, path)) < 0)
|
|
415
467
|
{
|
|
416
468
|
goto cleanup;
|
|
417
469
|
}
|
|
418
470
|
|
|
419
|
-
if (type !=
|
|
471
|
+
if (type != GIT_OBJECT_ANY && git_tree_entry_type(entry) != type)
|
|
420
472
|
{
|
|
421
|
-
|
|
473
|
+
git_error_set(GIT_ERROR_OBJECT,
|
|
422
474
|
"object at path '%s' is not of the asked-for type %d",
|
|
423
475
|
path, type);
|
|
424
476
|
error = GIT_EINVALIDSPEC;
|
|
@@ -445,7 +497,7 @@ int git_object_short_id(git_buf *out, const git_object *obj)
|
|
|
445
497
|
git_buf_sanitize(out);
|
|
446
498
|
repo = git_object_owner(obj);
|
|
447
499
|
|
|
448
|
-
if ((error =
|
|
500
|
+
if ((error = git_repository__configmap_lookup(&len, repo, GIT_CONFIGMAP_ABBREV)) < 0)
|
|
449
501
|
return error;
|
|
450
502
|
|
|
451
503
|
if ((error = git_repository_odb(&odb, repo)) < 0)
|
|
@@ -461,7 +513,7 @@ int git_object_short_id(git_buf *out, const git_object *obj)
|
|
|
461
513
|
if (error != GIT_EAMBIGUOUS)
|
|
462
514
|
break;
|
|
463
515
|
|
|
464
|
-
|
|
516
|
+
git_error_clear();
|
|
465
517
|
len++;
|
|
466
518
|
}
|
|
467
519
|
|
|
@@ -476,10 +528,10 @@ int git_object_short_id(git_buf *out, const git_object *obj)
|
|
|
476
528
|
}
|
|
477
529
|
|
|
478
530
|
bool git_object__is_valid(
|
|
479
|
-
git_repository *repo, const git_oid *id,
|
|
531
|
+
git_repository *repo, const git_oid *id, git_object_t expected_type)
|
|
480
532
|
{
|
|
481
533
|
git_odb *odb;
|
|
482
|
-
|
|
534
|
+
git_object_t actual_type;
|
|
483
535
|
size_t len;
|
|
484
536
|
int error;
|
|
485
537
|
|
|
@@ -490,12 +542,11 @@ bool git_object__is_valid(
|
|
|
490
542
|
(error = git_odb_read_header(&len, &actual_type, odb, id)) < 0)
|
|
491
543
|
return false;
|
|
492
544
|
|
|
493
|
-
if (expected_type !=
|
|
494
|
-
|
|
545
|
+
if (expected_type != GIT_OBJECT_ANY && expected_type != actual_type) {
|
|
546
|
+
git_error_set(GIT_ERROR_INVALID,
|
|
495
547
|
"the requested type does not match the type in the ODB");
|
|
496
548
|
return false;
|
|
497
549
|
}
|
|
498
550
|
|
|
499
551
|
return true;
|
|
500
552
|
}
|
|
501
|
-
|
data/vendor/libgit2/src/object.h
CHANGED
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
|
|
12
12
|
#include "repository.h"
|
|
13
13
|
|
|
14
|
+
#define GIT_OBJECT_SIZE_MAX UINT64_MAX
|
|
15
|
+
|
|
14
16
|
extern bool git_object__strict_input_validation;
|
|
15
17
|
|
|
16
18
|
/** Base git object for inheritance */
|
|
@@ -22,36 +24,47 @@ struct git_object {
|
|
|
22
24
|
/* fully free the object; internal method, DO NOT EXPORT */
|
|
23
25
|
void git_object__free(void *object);
|
|
24
26
|
|
|
27
|
+
/*
|
|
28
|
+
* Parse object from raw data. Note that the resulting object is
|
|
29
|
+
* tied to the lifetime of the data, as some objects simply point
|
|
30
|
+
* into it.
|
|
31
|
+
*/
|
|
32
|
+
int git_object__from_raw(
|
|
33
|
+
git_object **object_out,
|
|
34
|
+
const char *data,
|
|
35
|
+
size_t size,
|
|
36
|
+
git_object_t type);
|
|
37
|
+
|
|
25
38
|
int git_object__from_odb_object(
|
|
26
39
|
git_object **object_out,
|
|
27
40
|
git_repository *repo,
|
|
28
41
|
git_odb_object *odb_obj,
|
|
29
|
-
|
|
42
|
+
git_object_t type);
|
|
30
43
|
|
|
31
|
-
int git_object__resolve_to_type(git_object **obj,
|
|
44
|
+
int git_object__resolve_to_type(git_object **obj, git_object_t type);
|
|
32
45
|
|
|
33
|
-
|
|
46
|
+
git_object_t git_object_stringn2type(const char *str, size_t len);
|
|
34
47
|
|
|
35
48
|
int git_oid__parse(git_oid *oid, const char **buffer_out, const char *buffer_end, const char *header);
|
|
36
49
|
|
|
37
50
|
void git_oid__writebuf(git_buf *buf, const char *header, const git_oid *oid);
|
|
38
51
|
|
|
39
52
|
bool git_object__is_valid(
|
|
40
|
-
git_repository *repo, const git_oid *id,
|
|
53
|
+
git_repository *repo, const git_oid *id, git_object_t expected_type);
|
|
41
54
|
|
|
42
|
-
GIT_INLINE(
|
|
55
|
+
GIT_INLINE(git_object_t) git_object__type_from_filemode(git_filemode_t mode)
|
|
43
56
|
{
|
|
44
57
|
switch (mode) {
|
|
45
58
|
case GIT_FILEMODE_TREE:
|
|
46
|
-
return
|
|
59
|
+
return GIT_OBJECT_TREE;
|
|
47
60
|
case GIT_FILEMODE_COMMIT:
|
|
48
|
-
return
|
|
61
|
+
return GIT_OBJECT_COMMIT;
|
|
49
62
|
case GIT_FILEMODE_BLOB:
|
|
50
63
|
case GIT_FILEMODE_BLOB_EXECUTABLE:
|
|
51
64
|
case GIT_FILEMODE_LINK:
|
|
52
|
-
return
|
|
65
|
+
return GIT_OBJECT_BLOB;
|
|
53
66
|
default:
|
|
54
|
-
return
|
|
67
|
+
return GIT_OBJECT_INVALID;
|
|
55
68
|
}
|
|
56
69
|
}
|
|
57
70
|
|
|
@@ -20,12 +20,12 @@
|
|
|
20
20
|
*/
|
|
21
21
|
int git_commit_lookup(git_commit **out, git_repository *repo, const git_oid *id)
|
|
22
22
|
{
|
|
23
|
-
return git_object_lookup((git_object **)out, repo, id,
|
|
23
|
+
return git_object_lookup((git_object **)out, repo, id, GIT_OBJECT_COMMIT);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
int git_commit_lookup_prefix(git_commit **out, git_repository *repo, const git_oid *id, size_t len)
|
|
27
27
|
{
|
|
28
|
-
return git_object_lookup_prefix((git_object **)out, repo, id, len,
|
|
28
|
+
return git_object_lookup_prefix((git_object **)out, repo, id, len, GIT_OBJECT_COMMIT);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
void git_commit_free(git_commit *obj)
|
|
@@ -53,12 +53,12 @@ int git_commit_dup(git_commit **out, git_commit *obj)
|
|
|
53
53
|
*/
|
|
54
54
|
int git_tree_lookup(git_tree **out, git_repository *repo, const git_oid *id)
|
|
55
55
|
{
|
|
56
|
-
return git_object_lookup((git_object **)out, repo, id,
|
|
56
|
+
return git_object_lookup((git_object **)out, repo, id, GIT_OBJECT_TREE);
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
int git_tree_lookup_prefix(git_tree **out, git_repository *repo, const git_oid *id, size_t len)
|
|
60
60
|
{
|
|
61
|
-
return git_object_lookup_prefix((git_object **)out, repo, id, len,
|
|
61
|
+
return git_object_lookup_prefix((git_object **)out, repo, id, len, GIT_OBJECT_TREE);
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
void git_tree_free(git_tree *obj)
|
|
@@ -86,12 +86,12 @@ int git_tree_dup(git_tree **out, git_tree *obj)
|
|
|
86
86
|
*/
|
|
87
87
|
int git_tag_lookup(git_tag **out, git_repository *repo, const git_oid *id)
|
|
88
88
|
{
|
|
89
|
-
return git_object_lookup((git_object **)out, repo, id,
|
|
89
|
+
return git_object_lookup((git_object **)out, repo, id, GIT_OBJECT_TAG);
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
int git_tag_lookup_prefix(git_tag **out, git_repository *repo, const git_oid *id, size_t len)
|
|
93
93
|
{
|
|
94
|
-
return git_object_lookup_prefix((git_object **)out, repo, id, len,
|
|
94
|
+
return git_object_lookup_prefix((git_object **)out, repo, id, len, GIT_OBJECT_TAG);
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
void git_tag_free(git_tag *obj)
|
|
@@ -119,12 +119,12 @@ int git_tag_dup(git_tag **out, git_tag *obj)
|
|
|
119
119
|
*/
|
|
120
120
|
int git_blob_lookup(git_blob **out, git_repository *repo, const git_oid *id)
|
|
121
121
|
{
|
|
122
|
-
return git_object_lookup((git_object **)out, repo, id,
|
|
122
|
+
return git_object_lookup((git_object **)out, repo, id, GIT_OBJECT_BLOB);
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
int git_blob_lookup_prefix(git_blob **out, git_repository *repo, const git_oid *id, size_t len)
|
|
126
126
|
{
|
|
127
|
-
return git_object_lookup_prefix((git_object **)out, repo, id, len,
|
|
127
|
+
return git_object_lookup_prefix((git_object **)out, repo, id, len, GIT_OBJECT_BLOB);
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
void git_blob_free(git_blob *obj)
|