rugged 1.3.1 → 1.9.0
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/README.md +34 -2
- data/ext/rugged/extconf.rb +6 -3
- data/ext/rugged/rugged.c +16 -0
- data/ext/rugged/rugged.h +4 -0
- data/ext/rugged/rugged_allocator.c +0 -54
- data/ext/rugged/rugged_blame.c +2 -0
- data/ext/rugged/rugged_blob.c +3 -0
- data/ext/rugged/rugged_commit.c +1 -0
- data/ext/rugged/rugged_config.c +9 -2
- data/ext/rugged/rugged_diff.c +1 -0
- data/ext/rugged/rugged_index.c +2 -0
- data/ext/rugged/rugged_patch.c +1 -0
- data/ext/rugged/rugged_rebase.c +1 -0
- data/ext/rugged/rugged_reference.c +1 -0
- data/ext/rugged/rugged_remote.c +28 -10
- data/ext/rugged/rugged_repo.c +7 -9
- data/ext/rugged/rugged_revwalk.c +5 -1
- data/ext/rugged/rugged_settings.c +5 -0
- data/ext/rugged/rugged_submodule.c +1 -0
- data/ext/rugged/rugged_tag.c +1 -0
- data/ext/rugged/rugged_tree.c +4 -0
- data/lib/rugged/index.rb +1 -1
- data/lib/rugged/tree.rb +5 -1
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/AUTHORS +1 -0
- data/vendor/libgit2/CMakeLists.txt +141 -289
- data/vendor/libgit2/COPYING +301 -20
- data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
- data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
- data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
- data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
- data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
- data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
- data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
- data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
- data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
- data/vendor/libgit2/cmake/FindHTTP_Parser.cmake +17 -17
- data/vendor/libgit2/cmake/FindIntlIconv.cmake +51 -0
- data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
- data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
- data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
- data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
- data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
- data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
- data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
- data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
- data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
- data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
- data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
- data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
- data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
- data/vendor/libgit2/cmake/SelectHTTPParser.cmake +34 -0
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +129 -101
- data/vendor/libgit2/cmake/SelectHashes.cmake +113 -54
- data/vendor/libgit2/cmake/SelectRegex.cmake +56 -0
- data/vendor/libgit2/cmake/SelectSSH.cmake +46 -0
- data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
- data/vendor/libgit2/cmake/SelectZlib.cmake +38 -0
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
- data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
- data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
- data/vendor/libgit2/deps/llhttp/api.c +510 -0
- data/vendor/libgit2/deps/llhttp/http.c +170 -0
- data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
- data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
- data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +7 -5
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +25 -25
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
- data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
- data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +89 -88
- data/vendor/libgit2/deps/pcre/LICENCE +5 -5
- data/vendor/libgit2/deps/pcre/pcre.h +2 -2
- data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
- data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
- data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
- data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
- data/vendor/libgit2/deps/xdiff/git-xdiff.h +56 -0
- data/vendor/libgit2/{src → deps}/xdiff/xdiff.h +15 -15
- data/vendor/libgit2/{src → deps}/xdiff/xdiffi.c +152 -125
- data/vendor/libgit2/{src → deps}/xdiff/xdiffi.h +2 -4
- data/vendor/libgit2/{src → deps}/xdiff/xemit.c +26 -10
- data/vendor/libgit2/{src → deps}/xdiff/xhistogram.c +92 -94
- data/vendor/libgit2/{src → deps}/xdiff/xinclude.h +1 -12
- data/vendor/libgit2/{src → deps}/xdiff/xmacros.h +18 -1
- data/vendor/libgit2/{src → deps}/xdiff/xmerge.c +126 -137
- data/vendor/libgit2/{src → deps}/xdiff/xpatience.c +26 -46
- data/vendor/libgit2/{src → deps}/xdiff/xprepare.c +24 -46
- data/vendor/libgit2/{src → deps}/xdiff/xutils.c +36 -8
- data/vendor/libgit2/{src → deps}/xdiff/xutils.h +2 -1
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
- data/vendor/libgit2/deps/zlib/LICENSE +22 -0
- data/vendor/libgit2/deps/zlib/adler32.c +7 -22
- data/vendor/libgit2/deps/zlib/crc32.c +931 -317
- data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
- data/vendor/libgit2/deps/zlib/deflate.c +428 -453
- data/vendor/libgit2/deps/zlib/deflate.h +51 -23
- data/vendor/libgit2/deps/zlib/gzguts.h +15 -19
- data/vendor/libgit2/deps/zlib/infback.c +19 -31
- data/vendor/libgit2/deps/zlib/inffast.c +15 -18
- data/vendor/libgit2/deps/zlib/inffast.h +1 -1
- data/vendor/libgit2/deps/zlib/inflate.c +75 -110
- data/vendor/libgit2/deps/zlib/inflate.h +3 -2
- data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
- data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
- data/vendor/libgit2/deps/zlib/trees.c +294 -380
- data/vendor/libgit2/deps/zlib/zconf.h +23 -14
- data/vendor/libgit2/deps/zlib/zlib.h +310 -284
- data/vendor/libgit2/deps/zlib/zutil.c +20 -46
- data/vendor/libgit2/deps/zlib/zutil.h +24 -41
- data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
- data/vendor/libgit2/include/git2/apply.h +43 -8
- data/vendor/libgit2/include/git2/attr.h +28 -6
- data/vendor/libgit2/include/git2/blame.h +137 -29
- data/vendor/libgit2/include/git2/blob.h +85 -29
- data/vendor/libgit2/include/git2/branch.h +25 -16
- data/vendor/libgit2/include/git2/buffer.h +24 -82
- data/vendor/libgit2/include/git2/cert.h +4 -3
- data/vendor/libgit2/include/git2/checkout.h +88 -34
- data/vendor/libgit2/include/git2/cherrypick.h +10 -3
- data/vendor/libgit2/include/git2/clone.h +28 -12
- data/vendor/libgit2/include/git2/commit.h +134 -3
- data/vendor/libgit2/include/git2/common.h +172 -59
- data/vendor/libgit2/include/git2/config.h +118 -32
- data/vendor/libgit2/include/git2/credential.h +32 -3
- data/vendor/libgit2/include/git2/credential_helpers.h +2 -0
- data/vendor/libgit2/include/git2/deprecated.h +141 -3
- data/vendor/libgit2/include/git2/describe.h +20 -3
- data/vendor/libgit2/include/git2/diff.h +95 -19
- data/vendor/libgit2/include/git2/email.h +10 -30
- data/vendor/libgit2/include/git2/errors.h +51 -61
- data/vendor/libgit2/include/git2/experimental.h +20 -0
- data/vendor/libgit2/include/git2/filter.h +21 -9
- data/vendor/libgit2/include/git2/global.h +8 -1
- data/vendor/libgit2/include/git2/graph.h +4 -2
- data/vendor/libgit2/include/git2/ignore.h +11 -1
- data/vendor/libgit2/include/git2/index.h +111 -11
- data/vendor/libgit2/include/git2/indexer.h +67 -2
- data/vendor/libgit2/include/git2/mailmap.h +7 -1
- data/vendor/libgit2/include/git2/merge.h +70 -5
- data/vendor/libgit2/include/git2/message.h +4 -2
- data/vendor/libgit2/include/git2/net.h +3 -1
- data/vendor/libgit2/include/git2/notes.h +9 -6
- data/vendor/libgit2/include/git2/object.h +57 -7
- data/vendor/libgit2/include/git2/odb.h +156 -33
- data/vendor/libgit2/include/git2/odb_backend.h +132 -16
- data/vendor/libgit2/include/git2/oid.h +116 -17
- data/vendor/libgit2/include/git2/oidarray.h +7 -1
- data/vendor/libgit2/include/git2/pack.h +37 -9
- data/vendor/libgit2/include/git2/patch.h +10 -3
- data/vendor/libgit2/include/git2/pathspec.h +10 -1
- data/vendor/libgit2/include/git2/proxy.h +11 -1
- data/vendor/libgit2/include/git2/rebase.h +18 -7
- data/vendor/libgit2/include/git2/refdb.h +5 -2
- data/vendor/libgit2/include/git2/reflog.h +4 -3
- data/vendor/libgit2/include/git2/refs.h +11 -8
- data/vendor/libgit2/include/git2/refspec.h +14 -4
- data/vendor/libgit2/include/git2/remote.h +295 -54
- data/vendor/libgit2/include/git2/repository.h +95 -25
- data/vendor/libgit2/include/git2/reset.h +18 -5
- data/vendor/libgit2/include/git2/revert.h +9 -4
- data/vendor/libgit2/include/git2/revparse.h +4 -4
- data/vendor/libgit2/include/git2/revwalk.h +7 -3
- data/vendor/libgit2/include/git2/signature.h +47 -2
- data/vendor/libgit2/include/git2/stash.h +78 -10
- data/vendor/libgit2/include/git2/status.h +24 -11
- data/vendor/libgit2/include/git2/stdint.h +87 -85
- data/vendor/libgit2/include/git2/strarray.h +2 -16
- data/vendor/libgit2/include/git2/submodule.h +27 -11
- data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
- data/vendor/libgit2/include/git2/sys/commit.h +77 -3
- data/vendor/libgit2/include/git2/sys/commit_graph.h +110 -59
- data/vendor/libgit2/include/git2/sys/config.h +80 -4
- data/vendor/libgit2/include/git2/sys/credential.h +4 -3
- data/vendor/libgit2/include/git2/sys/diff.h +21 -1
- data/vendor/libgit2/include/git2/sys/email.h +7 -0
- data/vendor/libgit2/include/git2/sys/errors.h +76 -0
- data/vendor/libgit2/include/git2/sys/filter.h +66 -3
- data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
- data/vendor/libgit2/include/git2/sys/index.h +3 -2
- data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
- data/vendor/libgit2/include/git2/sys/merge.h +55 -7
- data/vendor/libgit2/include/git2/sys/midx.h +47 -4
- data/vendor/libgit2/include/git2/sys/odb_backend.h +10 -9
- data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
- data/vendor/libgit2/include/git2/sys/path.h +12 -1
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
- data/vendor/libgit2/include/git2/sys/refs.h +3 -2
- data/vendor/libgit2/include/git2/sys/remote.h +53 -0
- data/vendor/libgit2/include/git2/sys/repository.h +63 -3
- data/vendor/libgit2/include/git2/sys/stream.h +26 -3
- data/vendor/libgit2/include/git2/sys/transport.h +87 -41
- data/vendor/libgit2/include/git2/tag.h +4 -1
- data/vendor/libgit2/include/git2/trace.h +9 -3
- data/vendor/libgit2/include/git2/transaction.h +3 -2
- data/vendor/libgit2/include/git2/transport.h +11 -3
- data/vendor/libgit2/include/git2/tree.h +20 -8
- data/vendor/libgit2/include/git2/types.h +26 -10
- data/vendor/libgit2/include/git2/version.h +63 -6
- data/vendor/libgit2/include/git2/worktree.h +30 -8
- data/vendor/libgit2/include/git2.h +1 -0
- data/vendor/libgit2/src/CMakeLists.txt +203 -420
- data/vendor/libgit2/src/README.md +12 -0
- data/vendor/libgit2/src/cli/CMakeLists.txt +56 -0
- data/vendor/libgit2/src/cli/README.md +26 -0
- data/vendor/libgit2/src/{branch.h → cli/cmd.c} +10 -8
- data/vendor/libgit2/src/cli/cmd.h +37 -0
- data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
- data/vendor/libgit2/src/cli/cmd_cat_file.c +202 -0
- data/vendor/libgit2/src/cli/cmd_clone.c +190 -0
- data/vendor/libgit2/src/cli/cmd_config.c +241 -0
- data/vendor/libgit2/src/cli/cmd_hash_object.c +152 -0
- data/vendor/libgit2/src/cli/cmd_help.c +85 -0
- data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
- data/vendor/libgit2/src/cli/cmd_init.c +102 -0
- data/vendor/libgit2/src/cli/common.c +168 -0
- data/vendor/libgit2/src/cli/common.h +63 -0
- data/vendor/libgit2/src/cli/error.h +51 -0
- data/vendor/libgit2/src/cli/main.c +134 -0
- data/vendor/libgit2/src/cli/opt.c +695 -0
- data/vendor/libgit2/src/cli/opt.h +367 -0
- data/vendor/libgit2/src/cli/opt_usage.c +263 -0
- data/vendor/libgit2/src/cli/opt_usage.h +40 -0
- data/vendor/libgit2/src/cli/progress.c +395 -0
- data/vendor/libgit2/src/cli/progress.h +129 -0
- data/vendor/libgit2/src/cli/sighandler.h +20 -0
- data/vendor/libgit2/src/cli/unix/sighandler.c +37 -0
- data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
- data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
- data/vendor/libgit2/src/libgit2/CMakeLists.txt +140 -0
- data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +2 -2
- data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
- data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +32 -34
- data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
- data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +48 -31
- data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +25 -20
- data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +6 -4
- data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +87 -46
- data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +5 -9
- data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +152 -57
- data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +1 -0
- data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -2
- data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
- data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
- data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
- data/vendor/libgit2/src/libgit2/branch.h +31 -0
- data/vendor/libgit2/src/libgit2/buf.c +126 -0
- data/vendor/libgit2/src/libgit2/buf.h +50 -0
- data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +22 -17
- data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +7 -9
- data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +107 -91
- data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -2
- data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +14 -15
- data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +254 -203
- data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +4 -1
- data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +296 -77
- data/vendor/libgit2/src/libgit2/commit.h +87 -0
- data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +246 -135
- data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +33 -8
- data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +17 -7
- data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +1 -0
- data/vendor/libgit2/src/libgit2/common.h +55 -0
- data/vendor/libgit2/src/{config.c → libgit2/config.c} +490 -360
- data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
- data/vendor/libgit2/src/{config.h → libgit2/config.h} +24 -6
- data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +8 -10
- data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +4 -5
- data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +212 -183
- data/vendor/libgit2/src/libgit2/config_list.c +285 -0
- data/vendor/libgit2/src/libgit2/config_list.h +32 -0
- data/vendor/libgit2/src/libgit2/config_mem.c +374 -0
- data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +37 -32
- data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +24 -31
- data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
- data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +62 -51
- data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +44 -14
- data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +8 -10
- data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +46 -55
- data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +5 -5
- data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +45 -27
- data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +70 -20
- data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
- data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +22 -6
- data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +192 -105
- data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
- data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
- data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +49 -16
- data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
- data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +1 -1
- data/vendor/libgit2/src/{email.c → libgit2/email.c} +58 -40
- data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
- data/vendor/libgit2/src/{transports/ssh.h → libgit2/experimental.h.in} +3 -4
- data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +105 -30
- data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -3
- data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +30 -28
- data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +132 -58
- data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
- data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +3 -3
- data/vendor/libgit2/src/libgit2/grafts.c +270 -0
- data/vendor/libgit2/src/libgit2/grafts.h +35 -0
- data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +1 -1
- data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
- data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
- data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +44 -39
- data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
- data/vendor/libgit2/src/{index.c → libgit2/index.c} +460 -276
- data/vendor/libgit2/src/{index.h → libgit2/index.h} +21 -5
- data/vendor/libgit2/src/libgit2/index_map.c +95 -0
- data/vendor/libgit2/src/libgit2/index_map.h +28 -0
- data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +208 -124
- data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +102 -71
- data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +8 -5
- data/vendor/libgit2/src/libgit2/libgit2.c +268 -0
- data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +39 -37
- data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +83 -73
- data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
- data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +4 -4
- data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -5
- data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
- data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +174 -112
- data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +17 -6
- data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +53 -57
- data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +9 -2
- data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +29 -37
- data/vendor/libgit2/src/{object.c → libgit2/object.c} +166 -35
- data/vendor/libgit2/src/{object.h → libgit2/object.h} +17 -2
- data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +261 -88
- data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
- data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
- data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +67 -22
- data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +162 -89
- data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +171 -92
- data/vendor/libgit2/src/libgit2/oid.h +284 -0
- data/vendor/libgit2/src/libgit2/oidarray.c +89 -0
- data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +5 -1
- data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +126 -66
- data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +28 -12
- data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +146 -111
- data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +45 -25
- data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +8 -4
- data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +1 -1
- data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
- data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +8 -1
- data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +51 -16
- data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
- data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +42 -34
- data/vendor/libgit2/src/libgit2/path.c +375 -0
- data/vendor/libgit2/src/libgit2/path.h +68 -0
- data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +7 -7
- data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
- data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
- data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
- data/vendor/libgit2/src/{push.c → libgit2/push.c} +116 -60
- data/vendor/libgit2/src/{push.h → libgit2/push.h} +5 -16
- data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
- data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
- data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +147 -147
- data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +639 -254
- data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +8 -7
- data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +3 -2
- data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +67 -39
- data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +8 -3
- data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +60 -38
- data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +13 -2
- data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +821 -454
- data/vendor/libgit2/src/libgit2/remote.h +101 -0
- data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +1377 -594
- data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +43 -12
- data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
- data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +18 -22
- data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +76 -44
- data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +48 -19
- data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +3 -3
- data/vendor/libgit2/src/{libgit2.c → libgit2/settings.c} +162 -95
- data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +6 -2
- data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +144 -21
- data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -2
- data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +243 -68
- data/vendor/libgit2/src/{status.c → libgit2/status.c} +5 -2
- data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
- data/vendor/libgit2/src/libgit2/strarray.h +25 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +62 -67
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +41 -24
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +2 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +11 -3
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +6 -3
- data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
- data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
- data/vendor/libgit2/src/libgit2/streams/socket.c +428 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +3 -1
- data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +79 -19
- data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +5 -0
- data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +279 -220
- data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +10 -11
- data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
- data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +55 -18
- data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +74 -43
- data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
- data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
- data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
- data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +7 -7
- data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +27 -21
- data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +4 -1
- data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +14 -11
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +3 -5
- data/vendor/libgit2/src/{transports/auth_negotiate.c → libgit2/transports/auth_gssapi.c} +44 -45
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +1 -1
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +1 -2
- data/vendor/libgit2/src/{transports/auth_ntlm.c → libgit2/transports/auth_ntlmclient.c} +22 -22
- data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +1 -1
- data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +16 -19
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +49 -24
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -11
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +188 -134
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
- data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
- data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +159 -127
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +142 -165
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +56 -36
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +307 -74
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +297 -97
- data/vendor/libgit2/src/libgit2/transports/ssh.c +85 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
- data/vendor/libgit2/src/{transports/ssh.c → libgit2/transports/ssh_libssh2.c} +414 -268
- data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +101 -75
- data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +30 -20
- data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +7 -5
- data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +128 -110
- data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +7 -6
- data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +160 -121
- data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
- data/vendor/libgit2/src/util/CMakeLists.txt +77 -0
- data/vendor/libgit2/src/{alloc.c → util/alloc.c} +69 -7
- data/vendor/libgit2/src/util/alloc.h +65 -0
- data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
- data/vendor/libgit2/src/util/allocators/debugalloc.h +17 -0
- data/vendor/libgit2/src/util/allocators/failalloc.c +32 -0
- data/vendor/libgit2/src/util/allocators/failalloc.h +17 -0
- data/vendor/libgit2/src/util/allocators/stdalloc.c +37 -0
- data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
- data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +50 -0
- data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{array.h → util/array.h} +25 -19
- data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
- data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +5 -1
- data/vendor/libgit2/src/util/ctype_compat.h +70 -0
- data/vendor/libgit2/src/{date.c → util/date.c} +35 -33
- data/vendor/libgit2/src/util/date.h +45 -0
- data/vendor/libgit2/src/util/errors.c +401 -0
- data/vendor/libgit2/src/{errors.h → util/errors.h} +22 -19
- data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +35 -30
- data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +21 -8
- data/vendor/libgit2/src/{path.c → util/fs_path.c} +591 -615
- data/vendor/libgit2/src/{path.h → util/fs_path.h} +257 -181
- data/vendor/libgit2/src/{futils.c → util/futils.c} +144 -95
- data/vendor/libgit2/src/{futils.h → util/futils.h} +40 -18
- data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +33 -2
- data/vendor/libgit2/src/{common.h → util/git2_util.h} +26 -59
- data/vendor/libgit2/src/util/hash/builtin.c +53 -0
- data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
- data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
- data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
- data/vendor/libgit2/src/util/hash/openssl.c +347 -0
- data/vendor/libgit2/src/util/hash/openssl.h +61 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
- data/vendor/libgit2/src/util/hash/sha.h +73 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
- data/vendor/libgit2/src/util/hash/win32.c +549 -0
- data/vendor/libgit2/src/util/hash/win32.h +60 -0
- data/vendor/libgit2/src/util/hash.c +158 -0
- data/vendor/libgit2/src/util/hash.h +61 -0
- data/vendor/libgit2/src/util/hashmap.h +424 -0
- data/vendor/libgit2/src/util/hashmap_str.h +43 -0
- data/vendor/libgit2/src/{integer.h → util/integer.h} +3 -1
- data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
- data/vendor/libgit2/src/util/net.c +1160 -0
- data/vendor/libgit2/src/{net.h → util/net.h} +45 -4
- data/vendor/libgit2/src/{pool.c → util/pool.c} +1 -1
- data/vendor/libgit2/src/{pool.h → util/pool.h} +6 -1
- data/vendor/libgit2/src/{posix.c → util/posix.c} +57 -3
- data/vendor/libgit2/src/{posix.h → util/posix.h} +26 -1
- data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +3 -3
- data/vendor/libgit2/src/util/process.h +222 -0
- data/vendor/libgit2/src/util/rand.c +230 -0
- data/vendor/libgit2/src/util/rand.h +37 -0
- data/vendor/libgit2/src/{regexp.c → util/regexp.c} +5 -5
- data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
- data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
- data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
- data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +15 -14
- data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +5 -5
- data/vendor/libgit2/src/util/staticstr.h +66 -0
- data/vendor/libgit2/src/{buffer.c → util/str.c} +159 -153
- data/vendor/libgit2/src/util/str.h +357 -0
- data/vendor/libgit2/src/util/strlist.c +108 -0
- data/vendor/libgit2/src/util/strlist.h +36 -0
- data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
- data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
- data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
- data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
- data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -6
- data/vendor/libgit2/src/util/unix/process.c +629 -0
- data/vendor/libgit2/src/{unix → util/unix}/realpath.c +24 -8
- data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
- data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
- data/vendor/libgit2/src/{util.c → util/util.c} +24 -19
- data/vendor/libgit2/src/{util.h → util/util.h} +30 -81
- data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
- data/vendor/libgit2/src/{vector.c → util/vector.c} +3 -3
- data/vendor/libgit2/src/{vector.h → util/vector.h} +4 -4
- data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/error.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +148 -17
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
- data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
- data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +42 -35
- data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
- data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
- data/vendor/libgit2/src/util/win32/process.c +506 -0
- data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
- data/vendor/libgit2/src/util/win32/utf-conv.c +144 -0
- data/vendor/libgit2/src/util/win32/utf-conv.h +127 -0
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
- data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
- data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
- metadata +431 -362
- data/vendor/libgit2/cmake/FindIconv.cmake +0 -45
- data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
- data/vendor/libgit2/deps/http-parser/COPYING +0 -23
- data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
- data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
- data/vendor/libgit2/deps/zlib/COPYING +0 -27
- data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
- data/vendor/libgit2/src/alloc.h +0 -40
- data/vendor/libgit2/src/allocators/failalloc.c +0 -92
- data/vendor/libgit2/src/allocators/failalloc.h +0 -23
- data/vendor/libgit2/src/allocators/stdalloc.c +0 -150
- data/vendor/libgit2/src/allocators/win32_leakcheck.c +0 -118
- data/vendor/libgit2/src/buffer.h +0 -374
- data/vendor/libgit2/src/commit.h +0 -46
- data/vendor/libgit2/src/config_entries.c +0 -237
- data/vendor/libgit2/src/config_entries.h +0 -24
- data/vendor/libgit2/src/config_mem.c +0 -220
- data/vendor/libgit2/src/errors.c +0 -238
- data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
- data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
- data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
- data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
- data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
- data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
- data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
- data/vendor/libgit2/src/hash/sha1.h +0 -38
- data/vendor/libgit2/src/hash.c +0 -110
- data/vendor/libgit2/src/hash.h +0 -46
- data/vendor/libgit2/src/idxmap.c +0 -157
- data/vendor/libgit2/src/idxmap.h +0 -177
- data/vendor/libgit2/src/khash.h +0 -615
- data/vendor/libgit2/src/libgit2.h +0 -15
- data/vendor/libgit2/src/message.h +0 -17
- data/vendor/libgit2/src/net.c +0 -540
- data/vendor/libgit2/src/netops.c +0 -125
- data/vendor/libgit2/src/netops.h +0 -68
- data/vendor/libgit2/src/offmap.c +0 -101
- data/vendor/libgit2/src/offmap.h +0 -133
- data/vendor/libgit2/src/oid.h +0 -51
- data/vendor/libgit2/src/oidarray.c +0 -43
- data/vendor/libgit2/src/oidmap.c +0 -107
- data/vendor/libgit2/src/oidmap.h +0 -128
- data/vendor/libgit2/src/remote.h +0 -55
- data/vendor/libgit2/src/streams/socket.c +0 -239
- data/vendor/libgit2/src/strmap.c +0 -100
- data/vendor/libgit2/src/strmap.h +0 -131
- data/vendor/libgit2/src/sysdir.c +0 -347
- data/vendor/libgit2/src/threadstate.c +0 -84
- data/vendor/libgit2/src/threadstate.h +0 -24
- data/vendor/libgit2/src/win32/findfile.c +0 -230
- data/vendor/libgit2/src/win32/findfile.h +0 -19
- data/vendor/libgit2/src/win32/utf-conv.c +0 -146
- data/vendor/libgit2/src/win32/utf-conv.h +0 -60
- /data/vendor/libgit2/{src → deps}/xdiff/xemit.h +0 -0
- /data/vendor/libgit2/{src → deps}/xdiff/xprepare.h +0 -0
- /data/vendor/libgit2/{src → deps}/xdiff/xtypes.h +0 -0
- /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
- /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
- /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
- /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
- /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
- /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
- /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
- /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
- /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
- /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
- /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
- /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
- /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
- /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
- /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
- /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
- /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
- /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
- /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
- /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
- /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
- /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
- /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
- /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
- /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
- /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
- /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
- /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
- /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
@@ -16,6 +16,7 @@
|
|
16
16
|
#include "filter.h"
|
17
17
|
#include "repository.h"
|
18
18
|
#include "blob.h"
|
19
|
+
#include "oid.h"
|
19
20
|
|
20
21
|
#include "git2/odb_backend.h"
|
21
22
|
#include "git2/oid.h"
|
@@ -58,10 +59,7 @@ static int error_null_oid(int error, const char *message);
|
|
58
59
|
|
59
60
|
static git_object_t odb_hardcoded_type(const git_oid *id)
|
60
61
|
{
|
61
|
-
|
62
|
-
0xe5, 0x4b, 0xf8, 0xd6, 0x92, 0x88, 0xfb, 0xee, 0x49, 0x04 }};
|
63
|
-
|
64
|
-
if (!git_oid_cmp(id, &empty_tree))
|
62
|
+
if (!git_oid_cmp(id, &git_oid__empty_tree_sha1))
|
65
63
|
return GIT_OBJECT_TREE;
|
66
64
|
|
67
65
|
return GIT_OBJECT_INVALID;
|
@@ -107,11 +105,12 @@ int git_odb__format_object_header(
|
|
107
105
|
return 0;
|
108
106
|
}
|
109
107
|
|
110
|
-
int git_odb__hashobj(git_oid *id, git_rawobj *obj)
|
108
|
+
int git_odb__hashobj(git_oid *id, git_rawobj *obj, git_oid_t oid_type)
|
111
109
|
{
|
112
|
-
|
110
|
+
git_str_vec vec[2];
|
113
111
|
char header[64];
|
114
112
|
size_t hdrlen;
|
113
|
+
git_hash_algorithm_t algorithm;
|
115
114
|
int error;
|
116
115
|
|
117
116
|
GIT_ASSERT_ARG(id);
|
@@ -122,6 +121,11 @@ int git_odb__hashobj(git_oid *id, git_rawobj *obj)
|
|
122
121
|
return -1;
|
123
122
|
}
|
124
123
|
|
124
|
+
if (!(algorithm = git_oid_algorithm(oid_type))) {
|
125
|
+
git_error_set(GIT_ERROR_INVALID, "unknown oid type");
|
126
|
+
return -1;
|
127
|
+
}
|
128
|
+
|
125
129
|
if (!obj->data && obj->len != 0) {
|
126
130
|
git_error_set(GIT_ERROR_INVALID, "invalid object");
|
127
131
|
return -1;
|
@@ -136,7 +140,11 @@ int git_odb__hashobj(git_oid *id, git_rawobj *obj)
|
|
136
140
|
vec[1].data = obj->data;
|
137
141
|
vec[1].len = obj->len;
|
138
142
|
|
139
|
-
|
143
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
144
|
+
id->type = oid_type;
|
145
|
+
#endif
|
146
|
+
|
147
|
+
return git_hash_vec(id->id, vec, 2, algorithm);
|
140
148
|
}
|
141
149
|
|
142
150
|
|
@@ -197,24 +205,35 @@ void git_odb_object_free(git_odb_object *object)
|
|
197
205
|
git_cached_obj_decref(object);
|
198
206
|
}
|
199
207
|
|
200
|
-
int git_odb__hashfd(
|
208
|
+
int git_odb__hashfd(
|
209
|
+
git_oid *out,
|
210
|
+
git_file fd,
|
211
|
+
size_t size,
|
212
|
+
git_object_t object_type,
|
213
|
+
git_oid_t oid_type)
|
201
214
|
{
|
202
215
|
size_t hdr_len;
|
203
|
-
char hdr[64], buffer[
|
216
|
+
char hdr[64], buffer[GIT_BUFSIZE_FILEIO];
|
204
217
|
git_hash_ctx ctx;
|
218
|
+
git_hash_algorithm_t algorithm;
|
205
219
|
ssize_t read_len = 0;
|
206
220
|
int error = 0;
|
207
221
|
|
208
|
-
if (!git_object_typeisloose(
|
222
|
+
if (!git_object_typeisloose(object_type)) {
|
209
223
|
git_error_set(GIT_ERROR_INVALID, "invalid object type for hash");
|
210
224
|
return -1;
|
211
225
|
}
|
212
226
|
|
213
|
-
if ((
|
227
|
+
if (!(algorithm = git_oid_algorithm(oid_type))) {
|
228
|
+
git_error_set(GIT_ERROR_INVALID, "unknown oid type");
|
229
|
+
return -1;
|
230
|
+
}
|
231
|
+
|
232
|
+
if ((error = git_hash_ctx_init(&ctx, algorithm)) < 0)
|
214
233
|
return error;
|
215
234
|
|
216
235
|
if ((error = git_odb__format_object_header(&hdr_len, hdr,
|
217
|
-
sizeof(hdr), size,
|
236
|
+
sizeof(hdr), size, object_type)) < 0)
|
218
237
|
goto done;
|
219
238
|
|
220
239
|
if ((error = git_hash_update(&ctx, hdr, hdr_len)) < 0)
|
@@ -237,7 +256,11 @@ int git_odb__hashfd(git_oid *out, git_file fd, size_t size, git_object_t type)
|
|
237
256
|
goto done;
|
238
257
|
}
|
239
258
|
|
240
|
-
error = git_hash_final(out, &ctx);
|
259
|
+
error = git_hash_final(out->id, &ctx);
|
260
|
+
|
261
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
262
|
+
out->type = oid_type;
|
263
|
+
#endif
|
241
264
|
|
242
265
|
done:
|
243
266
|
git_hash_ctx_cleanup(&ctx);
|
@@ -245,39 +268,44 @@ done:
|
|
245
268
|
}
|
246
269
|
|
247
270
|
int git_odb__hashfd_filtered(
|
248
|
-
git_oid *out,
|
271
|
+
git_oid *out,
|
272
|
+
git_file fd,
|
273
|
+
size_t size,
|
274
|
+
git_object_t object_type,
|
275
|
+
git_oid_t oid_type,
|
276
|
+
git_filter_list *fl)
|
249
277
|
{
|
250
278
|
int error;
|
251
|
-
|
279
|
+
git_str raw = GIT_STR_INIT;
|
252
280
|
|
253
281
|
if (!fl)
|
254
|
-
return git_odb__hashfd(out, fd, size,
|
282
|
+
return git_odb__hashfd(out, fd, size, object_type, oid_type);
|
255
283
|
|
256
284
|
/* size of data is used in header, so we have to read the whole file
|
257
285
|
* into memory to apply filters before beginning to calculate the hash
|
258
286
|
*/
|
259
287
|
|
260
288
|
if (!(error = git_futils_readbuffer_fd(&raw, fd, size))) {
|
261
|
-
|
289
|
+
git_str post = GIT_STR_INIT;
|
262
290
|
|
263
291
|
error = git_filter_list__convert_buf(&post, fl, &raw);
|
264
292
|
|
265
293
|
if (!error)
|
266
|
-
error =
|
294
|
+
error = git_odb__hash(out, post.ptr, post.size, object_type, oid_type);
|
267
295
|
|
268
|
-
|
296
|
+
git_str_dispose(&post);
|
269
297
|
}
|
270
298
|
|
271
299
|
return error;
|
272
300
|
}
|
273
301
|
|
274
|
-
int git_odb__hashlink(git_oid *out, const char *path)
|
302
|
+
int git_odb__hashlink(git_oid *out, const char *path, git_oid_t oid_type)
|
275
303
|
{
|
276
304
|
struct stat st;
|
277
305
|
int size;
|
278
306
|
int result;
|
279
307
|
|
280
|
-
if (
|
308
|
+
if (git_fs_path_lstat(path, &st) < 0)
|
281
309
|
return -1;
|
282
310
|
|
283
311
|
if (!git__is_int(st.st_size) || (int)st.st_size < 0) {
|
@@ -305,20 +333,24 @@ int git_odb__hashlink(git_oid *out, const char *path)
|
|
305
333
|
GIT_ASSERT(read_len <= size);
|
306
334
|
link_data[read_len] = '\0';
|
307
335
|
|
308
|
-
result =
|
336
|
+
result = git_odb__hash(out, link_data, read_len, GIT_OBJECT_BLOB, oid_type);
|
309
337
|
git__free(link_data);
|
310
338
|
} else {
|
311
339
|
int fd = git_futils_open_ro(path);
|
312
340
|
if (fd < 0)
|
313
341
|
return -1;
|
314
|
-
result = git_odb__hashfd(out, fd, size, GIT_OBJECT_BLOB);
|
342
|
+
result = git_odb__hashfd(out, fd, size, GIT_OBJECT_BLOB, oid_type);
|
315
343
|
p_close(fd);
|
316
344
|
}
|
317
345
|
|
318
346
|
return result;
|
319
347
|
}
|
320
348
|
|
321
|
-
int
|
349
|
+
int git_odb__hashfile(
|
350
|
+
git_oid *out,
|
351
|
+
const char *path,
|
352
|
+
git_object_t object_type,
|
353
|
+
git_oid_t oid_type)
|
322
354
|
{
|
323
355
|
uint64_t size;
|
324
356
|
int fd, error = 0;
|
@@ -335,14 +367,38 @@ int git_odb_hashfile(git_oid *out, const char *path, git_object_t type)
|
|
335
367
|
goto done;
|
336
368
|
}
|
337
369
|
|
338
|
-
error = git_odb__hashfd(out, fd, (size_t)size,
|
370
|
+
error = git_odb__hashfd(out, fd, (size_t)size, object_type, oid_type);
|
339
371
|
|
340
372
|
done:
|
341
373
|
p_close(fd);
|
342
374
|
return error;
|
343
375
|
}
|
344
376
|
|
345
|
-
|
377
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
378
|
+
int git_odb_hashfile(
|
379
|
+
git_oid *out,
|
380
|
+
const char *path,
|
381
|
+
git_object_t object_type,
|
382
|
+
git_oid_t oid_type)
|
383
|
+
{
|
384
|
+
return git_odb__hashfile(out, path, object_type, oid_type);
|
385
|
+
}
|
386
|
+
#else
|
387
|
+
int git_odb_hashfile(
|
388
|
+
git_oid *out,
|
389
|
+
const char *path,
|
390
|
+
git_object_t object_type)
|
391
|
+
{
|
392
|
+
return git_odb__hashfile(out, path, object_type, GIT_OID_SHA1);
|
393
|
+
}
|
394
|
+
#endif
|
395
|
+
|
396
|
+
int git_odb__hash(
|
397
|
+
git_oid *id,
|
398
|
+
const void *data,
|
399
|
+
size_t len,
|
400
|
+
git_object_t object_type,
|
401
|
+
git_oid_t oid_type)
|
346
402
|
{
|
347
403
|
git_rawobj raw;
|
348
404
|
|
@@ -350,11 +406,32 @@ int git_odb_hash(git_oid *id, const void *data, size_t len, git_object_t type)
|
|
350
406
|
|
351
407
|
raw.data = (void *)data;
|
352
408
|
raw.len = len;
|
353
|
-
raw.type =
|
409
|
+
raw.type = object_type;
|
354
410
|
|
355
|
-
return git_odb__hashobj(id, &raw);
|
411
|
+
return git_odb__hashobj(id, &raw, oid_type);
|
356
412
|
}
|
357
413
|
|
414
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
415
|
+
int git_odb_hash(
|
416
|
+
git_oid *out,
|
417
|
+
const void *data,
|
418
|
+
size_t len,
|
419
|
+
git_object_t object_type,
|
420
|
+
git_oid_t oid_type)
|
421
|
+
{
|
422
|
+
return git_odb__hash(out, data, len, object_type, oid_type);
|
423
|
+
}
|
424
|
+
#else
|
425
|
+
int git_odb_hash(
|
426
|
+
git_oid *out,
|
427
|
+
const void *data,
|
428
|
+
size_t len,
|
429
|
+
git_object_t type)
|
430
|
+
{
|
431
|
+
return git_odb__hash(out, data, len, type, GIT_OID_SHA1);
|
432
|
+
}
|
433
|
+
#endif
|
434
|
+
|
358
435
|
/**
|
359
436
|
* FAKE WSTREAM
|
360
437
|
*/
|
@@ -444,11 +521,28 @@ static int backend_sort_cmp(const void *a, const void *b)
|
|
444
521
|
return (backend_b->priority - backend_a->priority);
|
445
522
|
}
|
446
523
|
|
447
|
-
|
524
|
+
static void normalize_options(
|
525
|
+
git_odb_options *opts,
|
526
|
+
const git_odb_options *given_opts)
|
527
|
+
{
|
528
|
+
git_odb_options init = GIT_ODB_OPTIONS_INIT;
|
529
|
+
|
530
|
+
if (given_opts)
|
531
|
+
memcpy(opts, given_opts, sizeof(git_odb_options));
|
532
|
+
else
|
533
|
+
memcpy(opts, &init, sizeof(git_odb_options));
|
534
|
+
|
535
|
+
if (!opts->oid_type)
|
536
|
+
opts->oid_type = GIT_OID_DEFAULT;
|
537
|
+
}
|
538
|
+
|
539
|
+
int git_odb__new(git_odb **out, const git_odb_options *opts)
|
448
540
|
{
|
449
541
|
git_odb *db = git__calloc(1, sizeof(*db));
|
450
542
|
GIT_ERROR_CHECK_ALLOC(db);
|
451
543
|
|
544
|
+
normalize_options(&db->options, opts);
|
545
|
+
|
452
546
|
if (git_mutex_init(&db->lock) < 0) {
|
453
547
|
git__free(db);
|
454
548
|
return -1;
|
@@ -470,6 +564,18 @@ int git_odb_new(git_odb **out)
|
|
470
564
|
return 0;
|
471
565
|
}
|
472
566
|
|
567
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
568
|
+
int git_odb_new(git_odb **out, const git_odb_options *opts)
|
569
|
+
{
|
570
|
+
return git_odb__new(out, opts);
|
571
|
+
}
|
572
|
+
#else
|
573
|
+
int git_odb_new(git_odb **out)
|
574
|
+
{
|
575
|
+
return git_odb__new(out, NULL);
|
576
|
+
}
|
577
|
+
#endif
|
578
|
+
|
473
579
|
static int add_backend_internal(
|
474
580
|
git_odb *odb, git_odb_backend *backend,
|
475
581
|
int priority, bool is_alternate, ino_t disk_inode)
|
@@ -577,6 +683,8 @@ int git_odb__add_default_backends(
|
|
577
683
|
struct stat st;
|
578
684
|
ino_t inode;
|
579
685
|
git_odb_backend *loose, *packed;
|
686
|
+
git_odb_backend_loose_options loose_opts = GIT_ODB_BACKEND_LOOSE_OPTIONS_INIT;
|
687
|
+
git_odb_backend_pack_options pack_opts = GIT_ODB_BACKEND_PACK_OPTIONS_INIT;
|
580
688
|
|
581
689
|
/* TODO: inodes are not really relevant on Win32, so we need to find
|
582
690
|
* a cross-platform workaround for this */
|
@@ -611,21 +719,37 @@ int git_odb__add_default_backends(
|
|
611
719
|
git_mutex_unlock(&db->lock);
|
612
720
|
#endif
|
613
721
|
|
722
|
+
if (db->do_fsync)
|
723
|
+
loose_opts.flags |= GIT_ODB_BACKEND_LOOSE_FSYNC;
|
724
|
+
|
725
|
+
loose_opts.oid_type = db->options.oid_type;
|
726
|
+
pack_opts.oid_type = db->options.oid_type;
|
727
|
+
|
614
728
|
/* add the loose object backend */
|
615
|
-
if (
|
729
|
+
if (git_odb__backend_loose(&loose, objects_dir, &loose_opts) < 0 ||
|
616
730
|
add_backend_internal(db, loose, git_odb__loose_priority, as_alternates, inode) < 0)
|
617
731
|
return -1;
|
618
732
|
|
619
733
|
/* add the packed file backend */
|
620
|
-
|
621
|
-
|
734
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
735
|
+
if (git_odb_backend_pack(&packed, objects_dir, &pack_opts) < 0)
|
736
|
+
return -1;
|
737
|
+
#else
|
738
|
+
GIT_UNUSED(pack_opts);
|
739
|
+
|
740
|
+
if (git_odb_backend_pack(&packed, objects_dir) < 0)
|
741
|
+
return -1;
|
742
|
+
#endif
|
743
|
+
|
744
|
+
if (add_backend_internal(db, packed, git_odb__packed_priority, as_alternates, inode) < 0)
|
622
745
|
return -1;
|
623
746
|
|
624
747
|
if (git_mutex_lock(&db->lock) < 0) {
|
625
748
|
git_error_set(GIT_ERROR_ODB, "failed to acquire the odb lock");
|
626
749
|
return -1;
|
627
750
|
}
|
628
|
-
if (!db->cgraph &&
|
751
|
+
if (!db->cgraph &&
|
752
|
+
git_commit_graph_new(&db->cgraph, objects_dir, false, db->options.oid_type) < 0) {
|
629
753
|
git_mutex_unlock(&db->lock);
|
630
754
|
return -1;
|
631
755
|
}
|
@@ -636,8 +760,8 @@ int git_odb__add_default_backends(
|
|
636
760
|
|
637
761
|
static int load_alternates(git_odb *odb, const char *objects_dir, int alternate_depth)
|
638
762
|
{
|
639
|
-
|
640
|
-
|
763
|
+
git_str alternates_path = GIT_STR_INIT;
|
764
|
+
git_str alternates_buf = GIT_STR_INIT;
|
641
765
|
char *buffer;
|
642
766
|
const char *alternate;
|
643
767
|
int result = 0;
|
@@ -646,16 +770,16 @@ static int load_alternates(git_odb *odb, const char *objects_dir, int alternate_
|
|
646
770
|
if (alternate_depth > GIT_ALTERNATES_MAX_DEPTH)
|
647
771
|
return 0;
|
648
772
|
|
649
|
-
if (
|
773
|
+
if (git_str_joinpath(&alternates_path, objects_dir, GIT_ALTERNATES_FILE) < 0)
|
650
774
|
return -1;
|
651
775
|
|
652
|
-
if (
|
653
|
-
|
776
|
+
if (git_fs_path_exists(alternates_path.ptr) == false) {
|
777
|
+
git_str_dispose(&alternates_path);
|
654
778
|
return 0;
|
655
779
|
}
|
656
780
|
|
657
781
|
if (git_futils_readbuffer(&alternates_buf, alternates_path.ptr) < 0) {
|
658
|
-
|
782
|
+
git_str_dispose(&alternates_path);
|
659
783
|
return -1;
|
660
784
|
}
|
661
785
|
|
@@ -672,17 +796,17 @@ static int load_alternates(git_odb *odb, const char *objects_dir, int alternate_
|
|
672
796
|
* the current repository.
|
673
797
|
*/
|
674
798
|
if (*alternate == '.' && !alternate_depth) {
|
675
|
-
if ((result =
|
799
|
+
if ((result = git_str_joinpath(&alternates_path, objects_dir, alternate)) < 0)
|
676
800
|
break;
|
677
|
-
alternate =
|
801
|
+
alternate = git_str_cstr(&alternates_path);
|
678
802
|
}
|
679
803
|
|
680
804
|
if ((result = git_odb__add_default_backends(odb, alternate, true, alternate_depth + 1)) < 0)
|
681
805
|
break;
|
682
806
|
}
|
683
807
|
|
684
|
-
|
685
|
-
|
808
|
+
git_str_dispose(&alternates_path);
|
809
|
+
git_str_dispose(&alternates_buf);
|
686
810
|
|
687
811
|
return result;
|
688
812
|
}
|
@@ -709,7 +833,10 @@ int git_odb_set_commit_graph(git_odb *odb, git_commit_graph *cgraph)
|
|
709
833
|
return error;
|
710
834
|
}
|
711
835
|
|
712
|
-
int
|
836
|
+
int git_odb__open(
|
837
|
+
git_odb **out,
|
838
|
+
const char *objects_dir,
|
839
|
+
const git_odb_options *opts)
|
713
840
|
{
|
714
841
|
git_odb *db;
|
715
842
|
|
@@ -718,7 +845,7 @@ int git_odb_open(git_odb **out, const char *objects_dir)
|
|
718
845
|
|
719
846
|
*out = NULL;
|
720
847
|
|
721
|
-
if (
|
848
|
+
if (git_odb__new(&db, opts) < 0)
|
722
849
|
return -1;
|
723
850
|
|
724
851
|
if (git_odb__add_default_backends(db, objects_dir, 0, 0) < 0) {
|
@@ -730,6 +857,25 @@ int git_odb_open(git_odb **out, const char *objects_dir)
|
|
730
857
|
return 0;
|
731
858
|
}
|
732
859
|
|
860
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
861
|
+
|
862
|
+
int git_odb_open(
|
863
|
+
git_odb **out,
|
864
|
+
const char *objects_dir,
|
865
|
+
const git_odb_options *opts)
|
866
|
+
{
|
867
|
+
return git_odb__open(out, objects_dir, opts);
|
868
|
+
}
|
869
|
+
|
870
|
+
#else
|
871
|
+
|
872
|
+
int git_odb_open(git_odb **out, const char *objects_dir)
|
873
|
+
{
|
874
|
+
return git_odb__open(out, objects_dir, NULL);
|
875
|
+
}
|
876
|
+
|
877
|
+
#endif
|
878
|
+
|
733
879
|
int git_odb__set_caps(git_odb *odb, int caps)
|
734
880
|
{
|
735
881
|
if (caps == GIT_ODB_CAP_FROM_OWNER) {
|
@@ -769,7 +915,7 @@ static void odb_free(git_odb *db)
|
|
769
915
|
git_mutex_unlock(&db->lock);
|
770
916
|
|
771
917
|
git_commit_graph_free(db->cgraph);
|
772
|
-
|
918
|
+
git_vector_dispose(&db->backends);
|
773
919
|
git_cache_dispose(&db->own_cache);
|
774
920
|
git_mutex_free(&db->lock);
|
775
921
|
|
@@ -882,6 +1028,11 @@ int git_odb__freshen(git_odb *db, const git_oid *id)
|
|
882
1028
|
}
|
883
1029
|
|
884
1030
|
int git_odb_exists(git_odb *db, const git_oid *id)
|
1031
|
+
{
|
1032
|
+
return git_odb_exists_ext(db, id, 0);
|
1033
|
+
}
|
1034
|
+
|
1035
|
+
int git_odb_exists_ext(git_odb *db, const git_oid *id, unsigned int flags)
|
885
1036
|
{
|
886
1037
|
git_odb_object *object;
|
887
1038
|
|
@@ -899,7 +1050,7 @@ int git_odb_exists(git_odb *db, const git_oid *id)
|
|
899
1050
|
if (odb_exists_1(db, id, false))
|
900
1051
|
return 1;
|
901
1052
|
|
902
|
-
if (!git_odb_refresh(db))
|
1053
|
+
if (!(flags & GIT_ODB_LOOKUP_NO_REFRESH) && !git_odb_refresh(db))
|
903
1054
|
return odb_exists_1(db, id, true);
|
904
1055
|
|
905
1056
|
/* Failed to refresh, hence not found */
|
@@ -911,7 +1062,7 @@ static int odb_exists_prefix_1(git_oid *out, git_odb *db,
|
|
911
1062
|
{
|
912
1063
|
size_t i;
|
913
1064
|
int error = GIT_ENOTFOUND, num_found = 0;
|
914
|
-
git_oid last_found =
|
1065
|
+
git_oid last_found = GIT_OID_NONE, found;
|
915
1066
|
|
916
1067
|
if ((error = git_mutex_lock(&db->lock)) < 0) {
|
917
1068
|
git_error_set(GIT_ERROR_ODB, "failed to acquire the odb lock");
|
@@ -962,7 +1113,7 @@ int git_odb_exists_prefix(
|
|
962
1113
|
git_oid *out, git_odb *db, const git_oid *short_id, size_t len)
|
963
1114
|
{
|
964
1115
|
int error;
|
965
|
-
git_oid key =
|
1116
|
+
git_oid key = GIT_OID_NONE;
|
966
1117
|
|
967
1118
|
GIT_ASSERT_ARG(db);
|
968
1119
|
GIT_ASSERT_ARG(short_id);
|
@@ -970,7 +1121,7 @@ int git_odb_exists_prefix(
|
|
970
1121
|
if (len < GIT_OID_MINPREFIXLEN)
|
971
1122
|
return git_odb__error_ambiguous("prefix length too short");
|
972
1123
|
|
973
|
-
if (len >=
|
1124
|
+
if (len >= git_oid_hexsize(db->options.oid_type)) {
|
974
1125
|
if (git_odb_exists(db, short_id)) {
|
975
1126
|
if (out)
|
976
1127
|
git_oid_cpy(out, short_id);
|
@@ -999,11 +1150,13 @@ int git_odb_expand_ids(
|
|
999
1150
|
git_odb_expand_id *ids,
|
1000
1151
|
size_t count)
|
1001
1152
|
{
|
1002
|
-
size_t i;
|
1153
|
+
size_t hex_size, i;
|
1003
1154
|
|
1004
1155
|
GIT_ASSERT_ARG(db);
|
1005
1156
|
GIT_ASSERT_ARG(ids);
|
1006
1157
|
|
1158
|
+
hex_size = git_oid_hexsize(db->options.oid_type);
|
1159
|
+
|
1007
1160
|
for (i = 0; i < count; i++) {
|
1008
1161
|
git_odb_expand_id *query = &ids[i];
|
1009
1162
|
int error = GIT_EAMBIGUOUS;
|
@@ -1012,13 +1165,13 @@ int git_odb_expand_ids(
|
|
1012
1165
|
query->type = GIT_OBJECT_ANY;
|
1013
1166
|
|
1014
1167
|
/* if we have a short OID, expand it first */
|
1015
|
-
if (query->length >= GIT_OID_MINPREFIXLEN && query->length <
|
1168
|
+
if (query->length >= GIT_OID_MINPREFIXLEN && query->length < hex_size) {
|
1016
1169
|
git_oid actual_id;
|
1017
1170
|
|
1018
1171
|
error = odb_exists_prefix_1(&actual_id, db, &query->id, query->length, false);
|
1019
1172
|
if (!error) {
|
1020
1173
|
git_oid_cpy(&query->id, &actual_id);
|
1021
|
-
query->length =
|
1174
|
+
query->length = (unsigned short)hex_size;
|
1022
1175
|
}
|
1023
1176
|
}
|
1024
1177
|
|
@@ -1026,7 +1179,7 @@ int git_odb_expand_ids(
|
|
1026
1179
|
* now we ought to have a 40-char OID, either because we've expanded it
|
1027
1180
|
* or because the user passed a full OID. Ensure its type is right.
|
1028
1181
|
*/
|
1029
|
-
if (query->length >=
|
1182
|
+
if (query->length >= hex_size) {
|
1030
1183
|
git_object_t actual_type;
|
1031
1184
|
|
1032
1185
|
error = odb_otype_fast(&actual_type, db, &query->id);
|
@@ -1046,7 +1199,7 @@ int git_odb_expand_ids(
|
|
1046
1199
|
/* the object is missing or ambiguous */
|
1047
1200
|
case GIT_ENOTFOUND:
|
1048
1201
|
case GIT_EAMBIGUOUS:
|
1049
|
-
|
1202
|
+
git_oid_clear(&query->id, db->options.oid_type);
|
1050
1203
|
query->length = 0;
|
1051
1204
|
query->type = 0;
|
1052
1205
|
break;
|
@@ -1064,7 +1217,7 @@ int git_odb_expand_ids(
|
|
1064
1217
|
int git_odb_read_header(size_t *len_p, git_object_t *type_p, git_odb *db, const git_oid *id)
|
1065
1218
|
{
|
1066
1219
|
int error;
|
1067
|
-
git_odb_object *object;
|
1220
|
+
git_odb_object *object = NULL;
|
1068
1221
|
|
1069
1222
|
error = git_odb__read_header_or_object(&object, len_p, type_p, db, id);
|
1070
1223
|
|
@@ -1154,7 +1307,7 @@ int git_odb__read_header_or_object(
|
|
1154
1307
|
error = odb_read_header_1(len_p, type_p, db, id, true);
|
1155
1308
|
|
1156
1309
|
if (error == GIT_ENOTFOUND)
|
1157
|
-
return git_odb__error_notfound("cannot read header for", id,
|
1310
|
+
return git_odb__error_notfound("cannot read header for", id, git_oid_hexsize(db->options.oid_type));
|
1158
1311
|
|
1159
1312
|
/* we found the header; return early */
|
1160
1313
|
if (!error)
|
@@ -1176,8 +1329,11 @@ int git_odb__read_header_or_object(
|
|
1176
1329
|
return error;
|
1177
1330
|
}
|
1178
1331
|
|
1179
|
-
static int odb_read_1(
|
1180
|
-
|
1332
|
+
static int odb_read_1(
|
1333
|
+
git_odb_object **out,
|
1334
|
+
git_odb *db,
|
1335
|
+
const git_oid *id,
|
1336
|
+
bool only_refreshed)
|
1181
1337
|
{
|
1182
1338
|
size_t i;
|
1183
1339
|
git_rawobj raw;
|
@@ -1221,7 +1377,7 @@ static int odb_read_1(git_odb_object **out, git_odb *db, const git_oid *id,
|
|
1221
1377
|
return GIT_ENOTFOUND;
|
1222
1378
|
|
1223
1379
|
if (git_odb__strict_hash_verification) {
|
1224
|
-
if ((error =
|
1380
|
+
if ((error = git_odb__hash(&hashed, raw.data, raw.len, raw.type, db->options.oid_type)) < 0)
|
1225
1381
|
goto out;
|
1226
1382
|
|
1227
1383
|
if (!git_oid_equal(id, &hashed)) {
|
@@ -1265,7 +1421,7 @@ int git_odb_read(git_odb_object **out, git_odb *db, const git_oid *id)
|
|
1265
1421
|
error = odb_read_1(out, db, id, true);
|
1266
1422
|
|
1267
1423
|
if (error == GIT_ENOTFOUND)
|
1268
|
-
return git_odb__error_notfound("no match for id", id,
|
1424
|
+
return git_odb__error_notfound("no match for id", id, git_oid_hexsize(git_oid_type(id)));
|
1269
1425
|
|
1270
1426
|
return error;
|
1271
1427
|
}
|
@@ -1302,7 +1458,7 @@ static int read_prefix_1(git_odb_object **out, git_odb *db,
|
|
1302
1458
|
{
|
1303
1459
|
size_t i;
|
1304
1460
|
int error = 0;
|
1305
|
-
git_oid found_full_oid =
|
1461
|
+
git_oid found_full_oid = GIT_OID_NONE;
|
1306
1462
|
git_rawobj raw = {0};
|
1307
1463
|
void *data = NULL;
|
1308
1464
|
bool found = false;
|
@@ -1337,15 +1493,20 @@ static int read_prefix_1(git_odb_object **out, git_odb *db,
|
|
1337
1493
|
data = raw.data;
|
1338
1494
|
|
1339
1495
|
if (found && git_oid__cmp(&full_oid, &found_full_oid)) {
|
1340
|
-
|
1496
|
+
git_str buf = GIT_STR_INIT;
|
1497
|
+
const char *idstr;
|
1498
|
+
|
1499
|
+
if ((idstr = git_oid_tostr_s(&full_oid)) == NULL) {
|
1500
|
+
git_str_puts(&buf, "failed to parse object id");
|
1501
|
+
} else {
|
1502
|
+
git_str_printf(&buf, "multiple matches for prefix: %s", idstr);
|
1341
1503
|
|
1342
|
-
|
1343
|
-
|
1344
|
-
|
1345
|
-
git_oid_tostr_s(&found_full_oid));
|
1504
|
+
if ((idstr = git_oid_tostr_s(&found_full_oid)) != NULL)
|
1505
|
+
git_str_printf(&buf, " %s", idstr);
|
1506
|
+
}
|
1346
1507
|
|
1347
1508
|
error = git_odb__error_ambiguous(buf.ptr);
|
1348
|
-
|
1509
|
+
git_str_dispose(&buf);
|
1349
1510
|
git_mutex_unlock(&db->lock);
|
1350
1511
|
goto out;
|
1351
1512
|
}
|
@@ -1362,7 +1523,7 @@ static int read_prefix_1(git_odb_object **out, git_odb *db,
|
|
1362
1523
|
if (git_odb__strict_hash_verification) {
|
1363
1524
|
git_oid hash;
|
1364
1525
|
|
1365
|
-
if ((error =
|
1526
|
+
if ((error = git_odb__hash(&hash, raw.data, raw.len, raw.type, db->options.oid_type)) < 0)
|
1366
1527
|
goto out;
|
1367
1528
|
|
1368
1529
|
if (!git_oid_equal(&found_full_oid, &hash)) {
|
@@ -1388,19 +1549,22 @@ out:
|
|
1388
1549
|
int git_odb_read_prefix(
|
1389
1550
|
git_odb_object **out, git_odb *db, const git_oid *short_id, size_t len)
|
1390
1551
|
{
|
1391
|
-
git_oid key =
|
1552
|
+
git_oid key = GIT_OID_NONE;
|
1553
|
+
size_t hex_size;
|
1392
1554
|
int error;
|
1393
1555
|
|
1394
1556
|
GIT_ASSERT_ARG(out);
|
1395
1557
|
GIT_ASSERT_ARG(db);
|
1396
1558
|
|
1559
|
+
hex_size = git_oid_hexsize(db->options.oid_type);
|
1560
|
+
|
1397
1561
|
if (len < GIT_OID_MINPREFIXLEN)
|
1398
1562
|
return git_odb__error_ambiguous("prefix length too short");
|
1399
1563
|
|
1400
|
-
if (len >
|
1401
|
-
len =
|
1564
|
+
if (len > hex_size)
|
1565
|
+
len = hex_size;
|
1402
1566
|
|
1403
|
-
if (len ==
|
1567
|
+
if (len == hex_size) {
|
1404
1568
|
*out = git_cache_get_raw(odb_cache(db), short_id);
|
1405
1569
|
if (*out != NULL)
|
1406
1570
|
return 0;
|
@@ -1445,7 +1609,7 @@ int git_odb_foreach(git_odb *db, git_odb_foreach_cb cb, void *payload)
|
|
1445
1609
|
}
|
1446
1610
|
|
1447
1611
|
cleanup:
|
1448
|
-
|
1612
|
+
git_vector_dispose(&backends);
|
1449
1613
|
|
1450
1614
|
return error;
|
1451
1615
|
}
|
@@ -1460,7 +1624,7 @@ int git_odb_write(
|
|
1460
1624
|
GIT_ASSERT_ARG(oid);
|
1461
1625
|
GIT_ASSERT_ARG(db);
|
1462
1626
|
|
1463
|
-
if ((error =
|
1627
|
+
if ((error = git_odb__hash(oid, data, len, type, db->options.oid_type)) < 0)
|
1464
1628
|
return error;
|
1465
1629
|
|
1466
1630
|
if (git_oid_is_zero(oid))
|
@@ -1496,10 +1660,10 @@ int git_odb_write(
|
|
1496
1660
|
if ((error = git_odb_open_wstream(&stream, db, len, type)) != 0)
|
1497
1661
|
return error;
|
1498
1662
|
|
1499
|
-
stream->write(stream, data, len)
|
1500
|
-
|
1501
|
-
git_odb_stream_free(stream);
|
1663
|
+
if ((error = stream->write(stream, data, len)) == 0)
|
1664
|
+
error = stream->finalize_write(stream, oid);
|
1502
1665
|
|
1666
|
+
git_odb_stream_free(stream);
|
1503
1667
|
return error;
|
1504
1668
|
}
|
1505
1669
|
|
@@ -1561,10 +1725,13 @@ int git_odb_open_wstream(
|
|
1561
1725
|
ctx = git__malloc(sizeof(git_hash_ctx));
|
1562
1726
|
GIT_ERROR_CHECK_ALLOC(ctx);
|
1563
1727
|
|
1564
|
-
if ((error = git_hash_ctx_init(ctx)) < 0 ||
|
1565
|
-
|
1728
|
+
if ((error = git_hash_ctx_init(ctx, git_oid_algorithm(db->options.oid_type))) < 0 ||
|
1729
|
+
(error = hash_header(ctx, size, type)) < 0)
|
1566
1730
|
goto done;
|
1567
1731
|
|
1732
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
1733
|
+
(*stream)->oid_type = db->options.oid_type;
|
1734
|
+
#endif
|
1568
1735
|
(*stream)->hash_ctx = ctx;
|
1569
1736
|
(*stream)->declared_size = size;
|
1570
1737
|
(*stream)->received_bytes = 0;
|
@@ -1607,7 +1774,11 @@ int git_odb_stream_finalize_write(git_oid *out, git_odb_stream *stream)
|
|
1607
1774
|
return git_odb_stream__invalid_length(stream,
|
1608
1775
|
"stream_finalize_write()");
|
1609
1776
|
|
1610
|
-
git_hash_final(out, stream->hash_ctx);
|
1777
|
+
git_hash_final(out->id, stream->hash_ctx);
|
1778
|
+
|
1779
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
1780
|
+
out->type = stream->oid_type;
|
1781
|
+
#endif
|
1611
1782
|
|
1612
1783
|
if (git_odb__freshen(stream->backend->odb, out))
|
1613
1784
|
return 0;
|
@@ -1625,7 +1796,8 @@ void git_odb_stream_free(git_odb_stream *stream)
|
|
1625
1796
|
if (stream == NULL)
|
1626
1797
|
return;
|
1627
1798
|
|
1628
|
-
|
1799
|
+
if (stream->hash_ctx)
|
1800
|
+
git_hash_ctx_cleanup(stream->hash_ctx);
|
1629
1801
|
git__free(stream->hash_ctx);
|
1630
1802
|
stream->free(stream);
|
1631
1803
|
}
|
@@ -1751,7 +1923,7 @@ void git_odb_backend_data_free(git_odb_backend *backend, void *data)
|
|
1751
1923
|
git__free(data);
|
1752
1924
|
}
|
1753
1925
|
|
1754
|
-
int git_odb_refresh(
|
1926
|
+
int git_odb_refresh(git_odb *db)
|
1755
1927
|
{
|
1756
1928
|
size_t i;
|
1757
1929
|
int error;
|
@@ -1783,10 +1955,11 @@ int git_odb_refresh(struct git_odb *db)
|
|
1783
1955
|
|
1784
1956
|
int git_odb__error_mismatch(const git_oid *expected, const git_oid *actual)
|
1785
1957
|
{
|
1786
|
-
char expected_oid[
|
1958
|
+
char expected_oid[GIT_OID_MAX_HEXSIZE + 1],
|
1959
|
+
actual_oid[GIT_OID_MAX_HEXSIZE + 1];
|
1787
1960
|
|
1788
|
-
git_oid_tostr(expected_oid,
|
1789
|
-
git_oid_tostr(actual_oid,
|
1961
|
+
git_oid_tostr(expected_oid, git_oid_hexsize(git_oid_type(expected)) + 1, expected);
|
1962
|
+
git_oid_tostr(actual_oid, git_oid_hexsize(git_oid_type(actual)) + 1, actual);
|
1790
1963
|
|
1791
1964
|
git_error_set(GIT_ERROR_ODB, "object hash mismatch - expected %s but got %s",
|
1792
1965
|
expected_oid, actual_oid);
|
@@ -1798,7 +1971,7 @@ int git_odb__error_notfound(
|
|
1798
1971
|
const char *message, const git_oid *oid, size_t oid_len)
|
1799
1972
|
{
|
1800
1973
|
if (oid != NULL) {
|
1801
|
-
char oid_str[
|
1974
|
+
char oid_str[GIT_OID_MAX_HEXSIZE + 1];
|
1802
1975
|
git_oid_tostr(oid_str, oid_len+1, oid);
|
1803
1976
|
git_error_set(GIT_ERROR_ODB, "object not found - %s (%.*s)",
|
1804
1977
|
message, (int) oid_len, oid_str);
|
@@ -1816,7 +1989,7 @@ static int error_null_oid(int error, const char *message)
|
|
1816
1989
|
|
1817
1990
|
int git_odb__error_ambiguous(const char *message)
|
1818
1991
|
{
|
1819
|
-
git_error_set(GIT_ERROR_ODB, "ambiguous
|
1992
|
+
git_error_set(GIT_ERROR_ODB, "ambiguous OID prefix - %s", message);
|
1820
1993
|
return GIT_EAMBIGUOUS;
|
1821
1994
|
}
|
1822
1995
|
|