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
@@ -20,14 +20,16 @@
|
|
20
20
|
#include "filebuf.h"
|
21
21
|
#include "oid.h"
|
22
22
|
#include "oidarray.h"
|
23
|
-
#include "oidmap.h"
|
24
23
|
#include "zstream.h"
|
25
24
|
#include "object.h"
|
25
|
+
#include "hashmap_oid.h"
|
26
26
|
|
27
27
|
size_t git_indexer__max_objects = UINT32_MAX;
|
28
28
|
|
29
29
|
#define UINT31_MAX (0x7FFFFFFF)
|
30
30
|
|
31
|
+
GIT_HASHMAP_OID_SETUP(git_indexer_oidmap, git_oid *);
|
32
|
+
|
31
33
|
struct entry {
|
32
34
|
git_oid oid;
|
33
35
|
uint32_t crc;
|
@@ -42,32 +44,34 @@ struct git_indexer {
|
|
42
44
|
have_delta :1,
|
43
45
|
do_fsync :1,
|
44
46
|
do_verify :1;
|
47
|
+
git_oid_t oid_type;
|
45
48
|
struct git_pack_header hdr;
|
46
49
|
struct git_pack_file *pack;
|
47
50
|
unsigned int mode;
|
48
51
|
off64_t off;
|
49
52
|
off64_t entry_start;
|
50
53
|
git_object_t entry_type;
|
51
|
-
|
54
|
+
git_str entry_data;
|
52
55
|
git_packfile_stream stream;
|
53
56
|
size_t nr_objects;
|
54
57
|
git_vector objects;
|
55
58
|
git_vector deltas;
|
56
59
|
unsigned int fanout[256];
|
57
60
|
git_hash_ctx hash_ctx;
|
58
|
-
|
61
|
+
unsigned char checksum[GIT_HASH_MAX_SIZE];
|
62
|
+
char name[(GIT_HASH_MAX_SIZE * 2) + 1];
|
59
63
|
git_indexer_progress_cb progress_cb;
|
60
64
|
void *progress_payload;
|
61
65
|
char objbuf[8*1024];
|
62
66
|
|
63
67
|
/* OIDs referenced from pack objects. Used for verification. */
|
64
|
-
|
68
|
+
git_indexer_oidmap expected_oids;
|
65
69
|
|
66
70
|
/* Needed to look up objects which we want to inject to fix a thin pack */
|
67
71
|
git_odb *odb;
|
68
72
|
|
69
73
|
/* Fields for calculating the packfile trailer (hash of everything before it) */
|
70
|
-
char inbuf[
|
74
|
+
char inbuf[GIT_HASH_MAX_SIZE];
|
71
75
|
size_t inbuf_len;
|
72
76
|
git_hash_ctx trailer;
|
73
77
|
};
|
@@ -76,9 +80,16 @@ struct delta_info {
|
|
76
80
|
off64_t delta_off;
|
77
81
|
};
|
78
82
|
|
83
|
+
#ifndef GIT_DEPRECATE_HARD
|
79
84
|
const git_oid *git_indexer_hash(const git_indexer *idx)
|
80
85
|
{
|
81
|
-
return
|
86
|
+
return (git_oid *)idx->checksum;
|
87
|
+
}
|
88
|
+
#endif
|
89
|
+
|
90
|
+
const char *git_indexer_name(const git_indexer *idx)
|
91
|
+
{
|
92
|
+
return idx->name;
|
82
93
|
}
|
83
94
|
|
84
95
|
static int parse_header(struct git_pack_header *hdr, struct git_pack_file *pack)
|
@@ -128,33 +139,54 @@ int git_indexer_init_options(git_indexer_options *opts, unsigned int version)
|
|
128
139
|
}
|
129
140
|
#endif
|
130
141
|
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
142
|
+
GIT_INLINE(git_hash_algorithm_t) indexer_hash_algorithm(git_indexer *idx)
|
143
|
+
{
|
144
|
+
switch (idx->oid_type) {
|
145
|
+
case GIT_OID_SHA1:
|
146
|
+
return GIT_HASH_ALGORITHM_SHA1;
|
147
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
148
|
+
case GIT_OID_SHA256:
|
149
|
+
return GIT_HASH_ALGORITHM_SHA256;
|
150
|
+
#endif
|
151
|
+
}
|
152
|
+
|
153
|
+
return GIT_HASH_ALGORITHM_NONE;
|
154
|
+
}
|
155
|
+
|
156
|
+
static int indexer_new(
|
157
|
+
git_indexer **out,
|
158
|
+
const char *prefix,
|
159
|
+
git_oid_t oid_type,
|
160
|
+
unsigned int mode,
|
161
|
+
git_odb *odb,
|
162
|
+
git_indexer_options *in_opts)
|
137
163
|
{
|
138
164
|
git_indexer_options opts = GIT_INDEXER_OPTIONS_INIT;
|
139
165
|
git_indexer *idx;
|
140
|
-
|
166
|
+
git_str path = GIT_STR_INIT, tmp_path = GIT_STR_INIT;
|
141
167
|
static const char suff[] = "/pack";
|
168
|
+
git_hash_algorithm_t checksum_type;
|
142
169
|
int error, fd = -1;
|
143
170
|
|
144
171
|
if (in_opts)
|
145
172
|
memcpy(&opts, in_opts, sizeof(opts));
|
146
173
|
|
174
|
+
if (oid_type)
|
175
|
+
GIT_ASSERT_ARG(git_oid_type_is_valid(oid_type));
|
176
|
+
|
147
177
|
idx = git__calloc(1, sizeof(git_indexer));
|
148
178
|
GIT_ERROR_CHECK_ALLOC(idx);
|
179
|
+
idx->oid_type = oid_type ? oid_type : GIT_OID_DEFAULT;
|
149
180
|
idx->odb = odb;
|
150
181
|
idx->progress_cb = opts.progress_cb;
|
151
182
|
idx->progress_payload = opts.progress_cb_payload;
|
152
183
|
idx->mode = mode ? mode : GIT_PACK_FILE_MODE;
|
153
|
-
|
184
|
+
git_str_init(&idx->entry_data, 0);
|
154
185
|
|
155
|
-
|
156
|
-
|
157
|
-
|
186
|
+
checksum_type = indexer_hash_algorithm(idx);
|
187
|
+
|
188
|
+
if ((error = git_hash_ctx_init(&idx->hash_ctx, checksum_type)) < 0 ||
|
189
|
+
(error = git_hash_ctx_init(&idx->trailer, checksum_type)) < 0)
|
158
190
|
goto cleanup;
|
159
191
|
|
160
192
|
idx->do_verify = opts.verify;
|
@@ -162,17 +194,17 @@ int git_indexer_new(
|
|
162
194
|
if (git_repository__fsync_gitdir)
|
163
195
|
idx->do_fsync = 1;
|
164
196
|
|
165
|
-
error =
|
197
|
+
error = git_str_joinpath(&path, prefix, suff);
|
166
198
|
if (error < 0)
|
167
199
|
goto cleanup;
|
168
200
|
|
169
|
-
fd = git_futils_mktmp(&tmp_path,
|
170
|
-
|
201
|
+
fd = git_futils_mktmp(&tmp_path, git_str_cstr(&path), idx->mode);
|
202
|
+
git_str_dispose(&path);
|
171
203
|
if (fd < 0)
|
172
204
|
goto cleanup;
|
173
205
|
|
174
|
-
error = git_packfile_alloc(&idx->pack,
|
175
|
-
|
206
|
+
error = git_packfile_alloc(&idx->pack, git_str_cstr(&tmp_path), oid_type);
|
207
|
+
git_str_dispose(&tmp_path);
|
176
208
|
|
177
209
|
if (error < 0)
|
178
210
|
goto cleanup;
|
@@ -188,18 +220,44 @@ cleanup:
|
|
188
220
|
if (fd != -1)
|
189
221
|
p_close(fd);
|
190
222
|
|
191
|
-
if (
|
192
|
-
p_unlink(
|
223
|
+
if (git_str_len(&tmp_path) > 0)
|
224
|
+
p_unlink(git_str_cstr(&tmp_path));
|
193
225
|
|
194
226
|
if (idx->pack != NULL)
|
195
227
|
p_unlink(idx->pack->pack_name);
|
196
228
|
|
197
|
-
|
198
|
-
|
229
|
+
git_str_dispose(&path);
|
230
|
+
git_str_dispose(&tmp_path);
|
199
231
|
git__free(idx);
|
200
232
|
return -1;
|
201
233
|
}
|
202
234
|
|
235
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
236
|
+
int git_indexer_new(
|
237
|
+
git_indexer **out,
|
238
|
+
const char *prefix,
|
239
|
+
git_indexer_options *opts)
|
240
|
+
{
|
241
|
+
return indexer_new(
|
242
|
+
out,
|
243
|
+
prefix,
|
244
|
+
opts ? opts->oid_type : 0,
|
245
|
+
opts ? opts->mode : 0,
|
246
|
+
opts ? opts->odb : NULL,
|
247
|
+
opts);
|
248
|
+
}
|
249
|
+
#else
|
250
|
+
int git_indexer_new(
|
251
|
+
git_indexer **out,
|
252
|
+
const char *prefix,
|
253
|
+
unsigned int mode,
|
254
|
+
git_odb *odb,
|
255
|
+
git_indexer_options *opts)
|
256
|
+
{
|
257
|
+
return indexer_new(out, prefix, GIT_OID_SHA1, mode, odb, opts);
|
258
|
+
}
|
259
|
+
#endif
|
260
|
+
|
203
261
|
void git_indexer__set_fsync(git_indexer *idx, int do_fsync)
|
204
262
|
{
|
205
263
|
idx->do_fsync = !!do_fsync;
|
@@ -245,7 +303,7 @@ static int hash_object_stream(git_indexer*idx, git_packfile_stream *stream)
|
|
245
303
|
break;
|
246
304
|
|
247
305
|
if (idx->do_verify)
|
248
|
-
|
306
|
+
git_str_put(&idx->entry_data, idx->objbuf, read);
|
249
307
|
|
250
308
|
git_hash_update(&idx->hash_ctx, idx->objbuf, read);
|
251
309
|
} while (read > 0);
|
@@ -264,7 +322,7 @@ static int advance_delta_offset(git_indexer *idx, git_object_t type)
|
|
264
322
|
GIT_ASSERT_ARG(type == GIT_OBJECT_REF_DELTA || type == GIT_OBJECT_OFS_DELTA);
|
265
323
|
|
266
324
|
if (type == GIT_OBJECT_REF_DELTA) {
|
267
|
-
idx->off +=
|
325
|
+
idx->off += git_oid_size(idx->oid_type);
|
268
326
|
} else {
|
269
327
|
off64_t base_off;
|
270
328
|
int error = get_delta_base(&base_off, idx->pack, &w, &idx->off, type, idx->entry_start);
|
@@ -325,12 +383,12 @@ static int add_expected_oid(git_indexer *idx, const git_oid *oid)
|
|
325
383
|
* not have to expect it.
|
326
384
|
*/
|
327
385
|
if ((!idx->odb || !git_odb_exists(idx->odb, oid)) &&
|
328
|
-
!
|
329
|
-
!
|
386
|
+
!git_pack_oidmap_contains(&idx->pack->idx_cache, oid) &&
|
387
|
+
!git_indexer_oidmap_contains(&idx->expected_oids, oid)) {
|
330
388
|
git_oid *dup = git__malloc(sizeof(*oid));
|
331
389
|
GIT_ERROR_CHECK_ALLOC(dup);
|
332
390
|
git_oid_cpy(dup, oid);
|
333
|
-
return
|
391
|
+
return git_indexer_oidmap_put(&idx->expected_oids, dup, dup);
|
334
392
|
}
|
335
393
|
|
336
394
|
return 0;
|
@@ -340,7 +398,7 @@ static int check_object_connectivity(git_indexer *idx, const git_rawobj *obj)
|
|
340
398
|
{
|
341
399
|
git_object *object;
|
342
400
|
git_oid *expected;
|
343
|
-
int error;
|
401
|
+
int error = 0;
|
344
402
|
|
345
403
|
if (obj->type != GIT_OBJECT_BLOB &&
|
346
404
|
obj->type != GIT_OBJECT_TREE &&
|
@@ -348,11 +406,17 @@ static int check_object_connectivity(git_indexer *idx, const git_rawobj *obj)
|
|
348
406
|
obj->type != GIT_OBJECT_TAG)
|
349
407
|
return 0;
|
350
408
|
|
351
|
-
if (
|
409
|
+
if (git_object__from_raw(&object, obj->data, obj->len, obj->type, idx->oid_type) < 0) {
|
410
|
+
/*
|
411
|
+
* parse_raw returns EINVALID on invalid data; downgrade
|
412
|
+
* that to a normal -1 error code.
|
413
|
+
*/
|
414
|
+
error = -1;
|
352
415
|
goto out;
|
416
|
+
}
|
353
417
|
|
354
|
-
if ((expected
|
355
|
-
|
418
|
+
if (git_indexer_oidmap_get(&expected, &idx->expected_oids, &object->cached.oid) == 0) {
|
419
|
+
git_indexer_oidmap_remove(&idx->expected_oids, &object->cached.oid);
|
356
420
|
git__free(expected);
|
357
421
|
}
|
358
422
|
|
@@ -371,7 +435,7 @@ static int check_object_connectivity(git_indexer *idx, const git_rawobj *obj)
|
|
371
435
|
size_t i;
|
372
436
|
|
373
437
|
git_array_foreach(tree->entries, i, entry)
|
374
|
-
if (add_expected_oid(idx, entry->oid) < 0)
|
438
|
+
if (add_expected_oid(idx, &entry->oid) < 0)
|
375
439
|
goto out;
|
376
440
|
|
377
441
|
break;
|
@@ -426,10 +490,15 @@ static int store_object(git_indexer *idx)
|
|
426
490
|
pentry = git__calloc(1, sizeof(struct git_pack_entry));
|
427
491
|
GIT_ERROR_CHECK_ALLOC(pentry);
|
428
492
|
|
429
|
-
if (git_hash_final(
|
493
|
+
if (git_hash_final(oid.id, &idx->hash_ctx)) {
|
430
494
|
git__free(pentry);
|
431
495
|
goto on_error;
|
432
496
|
}
|
497
|
+
|
498
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
499
|
+
oid.type = idx->oid_type;
|
500
|
+
#endif
|
501
|
+
|
433
502
|
entry_size = idx->off - entry_start;
|
434
503
|
if (entry_start > UINT31_MAX) {
|
435
504
|
entry->offset = UINT32_MAX;
|
@@ -449,16 +518,22 @@ static int store_object(git_indexer *idx)
|
|
449
518
|
goto on_error;
|
450
519
|
}
|
451
520
|
|
452
|
-
git_oid_cpy(&pentry->
|
521
|
+
git_oid_cpy(&pentry->id, &oid);
|
453
522
|
pentry->offset = entry_start;
|
454
523
|
|
455
|
-
if (
|
456
|
-
|
524
|
+
if (git_pack_oidmap_contains(&idx->pack->idx_cache, &pentry->id)) {
|
525
|
+
const char *idstr = git_oid_tostr_s(&pentry->id);
|
526
|
+
|
527
|
+
if (!idstr)
|
528
|
+
git_error_set(GIT_ERROR_INDEXER, "failed to parse object id");
|
529
|
+
else
|
530
|
+
git_error_set(GIT_ERROR_INDEXER, "duplicate object %s found in pack", idstr);
|
531
|
+
|
457
532
|
git__free(pentry);
|
458
533
|
goto on_error;
|
459
534
|
}
|
460
535
|
|
461
|
-
if ((error =
|
536
|
+
if ((error = git_pack_oidmap_put(&idx->pack->idx_cache, &pentry->id, pentry)) < 0) {
|
462
537
|
git__free(pentry);
|
463
538
|
git_error_set_oom();
|
464
539
|
goto on_error;
|
@@ -487,7 +562,7 @@ on_error:
|
|
487
562
|
|
488
563
|
GIT_INLINE(bool) has_entry(git_indexer *idx, git_oid *id)
|
489
564
|
{
|
490
|
-
return
|
565
|
+
return git_pack_oidmap_contains(&idx->pack->idx_cache, id);
|
491
566
|
}
|
492
567
|
|
493
568
|
static int save_entry(git_indexer *idx, struct entry *entry, struct git_pack_entry *pentry, off64_t entry_start)
|
@@ -503,8 +578,8 @@ static int save_entry(git_indexer *idx, struct entry *entry, struct git_pack_ent
|
|
503
578
|
|
504
579
|
pentry->offset = entry_start;
|
505
580
|
|
506
|
-
if (
|
507
|
-
|
581
|
+
if (git_pack_oidmap_contains(&idx->pack->idx_cache, &pentry->id) ||
|
582
|
+
git_pack_oidmap_put(&idx->pack->idx_cache, &pentry->id, pentry) < 0) {
|
508
583
|
git_error_set(GIT_ERROR_INDEXER, "cannot insert object into pack");
|
509
584
|
return -1;
|
510
585
|
}
|
@@ -530,7 +605,7 @@ static int hash_and_save(git_indexer *idx, git_rawobj *obj, off64_t entry_start)
|
|
530
605
|
entry = git__calloc(1, sizeof(*entry));
|
531
606
|
GIT_ERROR_CHECK_ALLOC(entry);
|
532
607
|
|
533
|
-
if (git_odb__hashobj(&oid, obj) < 0) {
|
608
|
+
if (git_odb__hashobj(&oid, obj, idx->oid_type) < 0) {
|
534
609
|
git_error_set(GIT_ERROR_INDEXER, "failed to hash object");
|
535
610
|
goto on_error;
|
536
611
|
}
|
@@ -538,7 +613,7 @@ static int hash_and_save(git_indexer *idx, git_rawobj *obj, off64_t entry_start)
|
|
538
613
|
pentry = git__calloc(1, sizeof(struct git_pack_entry));
|
539
614
|
GIT_ERROR_CHECK_ALLOC(pentry);
|
540
615
|
|
541
|
-
git_oid_cpy(&pentry->
|
616
|
+
git_oid_cpy(&pentry->id, &oid);
|
542
617
|
git_oid_cpy(&entry->oid, &oid);
|
543
618
|
entry->crc = crc32(0L, Z_NULL, 0);
|
544
619
|
|
@@ -564,34 +639,38 @@ static int do_progress_callback(git_indexer *idx, git_indexer_progress *stats)
|
|
564
639
|
return 0;
|
565
640
|
}
|
566
641
|
|
567
|
-
/* Hash everything but the
|
642
|
+
/* Hash everything but the checksum trailer */
|
568
643
|
static void hash_partially(git_indexer *idx, const uint8_t *data, size_t size)
|
569
644
|
{
|
570
645
|
size_t to_expell, to_keep;
|
646
|
+
size_t oid_size = git_oid_size(idx->oid_type);
|
571
647
|
|
572
648
|
if (size == 0)
|
573
649
|
return;
|
574
650
|
|
575
|
-
/*
|
576
|
-
|
651
|
+
/*
|
652
|
+
* Easy case, dump the buffer and the data minus the trailing
|
653
|
+
* checksum (SHA1 or SHA256).
|
654
|
+
*/
|
655
|
+
if (size >= oid_size) {
|
577
656
|
git_hash_update(&idx->trailer, idx->inbuf, idx->inbuf_len);
|
578
|
-
git_hash_update(&idx->trailer, data, size -
|
657
|
+
git_hash_update(&idx->trailer, data, size - oid_size);
|
579
658
|
|
580
|
-
data += size -
|
581
|
-
memcpy(idx->inbuf, data,
|
582
|
-
idx->inbuf_len =
|
659
|
+
data += size - oid_size;
|
660
|
+
memcpy(idx->inbuf, data, oid_size);
|
661
|
+
idx->inbuf_len = oid_size;
|
583
662
|
return;
|
584
663
|
}
|
585
664
|
|
586
665
|
/* We can just append */
|
587
|
-
if (idx->inbuf_len + size <=
|
666
|
+
if (idx->inbuf_len + size <= oid_size) {
|
588
667
|
memcpy(idx->inbuf + idx->inbuf_len, data, size);
|
589
668
|
idx->inbuf_len += size;
|
590
669
|
return;
|
591
670
|
}
|
592
671
|
|
593
672
|
/* We need to partially drain the buffer and then append */
|
594
|
-
to_keep =
|
673
|
+
to_keep = oid_size - size;
|
595
674
|
to_expell = idx->inbuf_len - to_keep;
|
596
675
|
|
597
676
|
git_hash_update(&idx->trailer, idx->inbuf, to_expell);
|
@@ -710,12 +789,14 @@ static int read_stream_object(git_indexer *idx, git_indexer_progress *stats)
|
|
710
789
|
{
|
711
790
|
git_packfile_stream *stream = &idx->stream;
|
712
791
|
off64_t entry_start = idx->off;
|
713
|
-
size_t entry_size;
|
792
|
+
size_t oid_size, entry_size;
|
714
793
|
git_object_t type;
|
715
794
|
git_mwindow *w = NULL;
|
716
795
|
int error;
|
717
796
|
|
718
|
-
|
797
|
+
oid_size = git_oid_size(idx->oid_type);
|
798
|
+
|
799
|
+
if (idx->pack->mwf.size <= idx->off + (long long)oid_size)
|
719
800
|
return GIT_EBUFS;
|
720
801
|
|
721
802
|
if (!idx->have_stream) {
|
@@ -730,7 +811,7 @@ static int read_stream_object(git_indexer *idx, git_indexer_progress *stats)
|
|
730
811
|
git_mwindow_close(&w);
|
731
812
|
idx->entry_start = entry_start;
|
732
813
|
git_hash_init(&idx->hash_ctx);
|
733
|
-
|
814
|
+
git_str_clear(&idx->entry_data);
|
734
815
|
|
735
816
|
if (type == GIT_OBJECT_REF_DELTA || type == GIT_OBJECT_OFS_DELTA) {
|
736
817
|
error = advance_delta_offset(idx, type);
|
@@ -833,9 +914,6 @@ int git_indexer_append(git_indexer *idx, const void *data, size_t size, git_inde
|
|
833
914
|
return -1;
|
834
915
|
}
|
835
916
|
|
836
|
-
if (git_oidmap_new(&idx->pack->idx_cache) < 0)
|
837
|
-
return -1;
|
838
|
-
|
839
917
|
idx->pack->has_cache = 1;
|
840
918
|
if (git_vector_init(&idx->objects, total_objects, objects_cmp) < 0)
|
841
919
|
return -1;
|
@@ -876,7 +954,7 @@ on_error:
|
|
876
954
|
return error;
|
877
955
|
}
|
878
956
|
|
879
|
-
static int index_path(
|
957
|
+
static int index_path(git_str *path, git_indexer *idx, const char *suffix)
|
880
958
|
{
|
881
959
|
const char prefix[] = "pack-";
|
882
960
|
size_t slash = (size_t)path->size;
|
@@ -885,17 +963,16 @@ static int index_path(git_buf *path, git_indexer *idx, const char *suffix)
|
|
885
963
|
while (slash > 0 && path->ptr[slash - 1] != '/')
|
886
964
|
slash--;
|
887
965
|
|
888
|
-
if (
|
889
|
-
|
966
|
+
if (git_str_grow(path, slash + 1 + strlen(prefix) +
|
967
|
+
git_oid_hexsize(idx->oid_type) + strlen(suffix) + 1) < 0)
|
890
968
|
return -1;
|
891
969
|
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
path
|
896
|
-
git_buf_puts(path, suffix);
|
970
|
+
git_str_truncate(path, slash);
|
971
|
+
git_str_puts(path, prefix);
|
972
|
+
git_str_puts(path, idx->name);
|
973
|
+
git_str_puts(path, suffix);
|
897
974
|
|
898
|
-
return
|
975
|
+
return git_str_oom(path) ? -1 : 0;
|
899
976
|
}
|
900
977
|
|
901
978
|
/**
|
@@ -904,7 +981,7 @@ static int index_path(git_buf *path, git_indexer *idx, const char *suffix)
|
|
904
981
|
*/
|
905
982
|
static int seek_back_trailer(git_indexer *idx)
|
906
983
|
{
|
907
|
-
idx->pack->mwf.size -=
|
984
|
+
idx->pack->mwf.size -= git_oid_size(idx->oid_type);
|
908
985
|
return git_mwindow_free_all(&idx->pack->mwf);
|
909
986
|
}
|
910
987
|
|
@@ -913,14 +990,17 @@ static int inject_object(git_indexer *idx, git_oid *id)
|
|
913
990
|
git_odb_object *obj = NULL;
|
914
991
|
struct entry *entry = NULL;
|
915
992
|
struct git_pack_entry *pentry = NULL;
|
916
|
-
|
993
|
+
unsigned char empty_checksum[GIT_HASH_MAX_SIZE] = {0};
|
917
994
|
unsigned char hdr[64];
|
918
|
-
|
995
|
+
git_str buf = GIT_STR_INIT;
|
919
996
|
off64_t entry_start;
|
920
997
|
const void *data;
|
921
998
|
size_t len, hdr_len;
|
999
|
+
size_t checksum_size;
|
922
1000
|
int error;
|
923
1001
|
|
1002
|
+
checksum_size = git_hash_size(indexer_hash_algorithm(idx));
|
1003
|
+
|
924
1004
|
if ((error = seek_back_trailer(idx)) < 0)
|
925
1005
|
goto cleanup;
|
926
1006
|
|
@@ -956,19 +1036,19 @@ static int inject_object(git_indexer *idx, git_oid *id)
|
|
956
1036
|
|
957
1037
|
idx->pack->mwf.size += buf.size;
|
958
1038
|
entry->crc = htonl(crc32(entry->crc, (unsigned char *)buf.ptr, (uInt)buf.size));
|
959
|
-
|
1039
|
+
git_str_dispose(&buf);
|
960
1040
|
|
961
1041
|
/* Write a fake trailer so the pack functions play ball */
|
962
1042
|
|
963
|
-
if ((error = append_to_pack(idx,
|
1043
|
+
if ((error = append_to_pack(idx, empty_checksum, checksum_size)) < 0)
|
964
1044
|
goto cleanup;
|
965
1045
|
|
966
|
-
idx->pack->mwf.size +=
|
1046
|
+
idx->pack->mwf.size += git_oid_size(idx->oid_type);
|
967
1047
|
|
968
1048
|
pentry = git__calloc(1, sizeof(struct git_pack_entry));
|
969
1049
|
GIT_ERROR_CHECK_ALLOC(pentry);
|
970
1050
|
|
971
|
-
git_oid_cpy(&pentry->
|
1051
|
+
git_oid_cpy(&pentry->id, id);
|
972
1052
|
git_oid_cpy(&entry->oid, id);
|
973
1053
|
idx->off = entry_start + hdr_len + len;
|
974
1054
|
|
@@ -1026,13 +1106,13 @@ static int fix_thin_pack(git_indexer *idx, git_indexer_progress *stats)
|
|
1026
1106
|
}
|
1027
1107
|
|
1028
1108
|
/* curpos now points to the base information, which is an OID */
|
1029
|
-
base_info = git_mwindow_open(&idx->pack->mwf, &w, curpos,
|
1109
|
+
base_info = git_mwindow_open(&idx->pack->mwf, &w, curpos, git_oid_size(idx->oid_type), &left);
|
1030
1110
|
if (base_info == NULL) {
|
1031
1111
|
git_error_set(GIT_ERROR_INDEXER, "failed to map delta information");
|
1032
1112
|
return -1;
|
1033
1113
|
}
|
1034
1114
|
|
1035
|
-
|
1115
|
+
git_oid__fromraw(&base, base_info, idx->oid_type);
|
1036
1116
|
git_mwindow_close(&w);
|
1037
1117
|
|
1038
1118
|
if (has_entry(idx, &base))
|
@@ -1117,7 +1197,7 @@ static int update_header_and_rehash(git_indexer *idx, git_indexer_progress *stat
|
|
1117
1197
|
git_hash_init(&idx->trailer);
|
1118
1198
|
|
1119
1199
|
|
1120
|
-
/* Update the header to include the
|
1200
|
+
/* Update the header to include the number of local objects we injected */
|
1121
1201
|
idx->hdr.hdr_entries = htonl(stats->total_objects + stats->local_objects);
|
1122
1202
|
if (write_at(idx, &idx->hdr, 0, sizeof(struct git_pack_header)) < 0)
|
1123
1203
|
return -1;
|
@@ -1152,39 +1232,46 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
|
|
1152
1232
|
unsigned int i, long_offsets = 0, left;
|
1153
1233
|
int error;
|
1154
1234
|
struct git_pack_idx_header hdr;
|
1155
|
-
|
1235
|
+
git_str filename = GIT_STR_INIT;
|
1156
1236
|
struct entry *entry;
|
1157
|
-
|
1237
|
+
unsigned char checksum[GIT_HASH_MAX_SIZE];
|
1158
1238
|
git_filebuf index_file = {0};
|
1159
1239
|
void *packfile_trailer;
|
1240
|
+
size_t checksum_size;
|
1241
|
+
int filebuf_hash;
|
1242
|
+
bool mismatch;
|
1160
1243
|
|
1161
1244
|
if (!idx->parsed_header) {
|
1162
1245
|
git_error_set(GIT_ERROR_INDEXER, "incomplete pack header");
|
1163
1246
|
return -1;
|
1164
1247
|
}
|
1165
1248
|
|
1249
|
+
checksum_size = git_hash_size(indexer_hash_algorithm(idx));
|
1250
|
+
filebuf_hash = git_filebuf_hash_flags(indexer_hash_algorithm(idx));
|
1251
|
+
GIT_ASSERT(checksum_size);
|
1252
|
+
|
1166
1253
|
/* Test for this before resolve_deltas(), as it plays with idx->off */
|
1167
|
-
if (idx->off +
|
1254
|
+
if (idx->off + (ssize_t)checksum_size < idx->pack->mwf.size) {
|
1168
1255
|
git_error_set(GIT_ERROR_INDEXER, "unexpected data at the end of the pack");
|
1169
1256
|
return -1;
|
1170
1257
|
}
|
1171
|
-
if (idx->off +
|
1258
|
+
if (idx->off + (ssize_t)checksum_size > idx->pack->mwf.size) {
|
1172
1259
|
git_error_set(GIT_ERROR_INDEXER, "missing trailer at the end of the pack");
|
1173
1260
|
return -1;
|
1174
1261
|
}
|
1175
1262
|
|
1176
|
-
packfile_trailer = git_mwindow_open(&idx->pack->mwf, &w, idx->pack->mwf.size -
|
1263
|
+
packfile_trailer = git_mwindow_open(&idx->pack->mwf, &w, idx->pack->mwf.size - checksum_size, checksum_size, &left);
|
1177
1264
|
if (packfile_trailer == NULL) {
|
1178
1265
|
git_mwindow_close(&w);
|
1179
1266
|
goto on_error;
|
1180
1267
|
}
|
1181
1268
|
|
1182
1269
|
/* Compare the packfile trailer as it was sent to us and what we calculated */
|
1183
|
-
|
1270
|
+
git_hash_final(checksum, &idx->trailer);
|
1271
|
+
mismatch = !!memcmp(checksum, packfile_trailer, checksum_size);
|
1184
1272
|
git_mwindow_close(&w);
|
1185
1273
|
|
1186
|
-
|
1187
|
-
if (git_oid_cmp(&file_hash, &trailer_hash)) {
|
1274
|
+
if (mismatch) {
|
1188
1275
|
git_error_set(GIT_ERROR_INDEXER, "packfile trailer mismatch");
|
1189
1276
|
return -1;
|
1190
1277
|
}
|
@@ -1204,8 +1291,8 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
|
|
1204
1291
|
if (update_header_and_rehash(idx, stats) < 0)
|
1205
1292
|
return -1;
|
1206
1293
|
|
1207
|
-
git_hash_final(
|
1208
|
-
write_at(idx,
|
1294
|
+
git_hash_final(checksum, &idx->trailer);
|
1295
|
+
write_at(idx, checksum, idx->pack->mwf.size - checksum_size, checksum_size);
|
1209
1296
|
}
|
1210
1297
|
|
1211
1298
|
/*
|
@@ -1214,9 +1301,9 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
|
|
1214
1301
|
* bail out due to an incomplete and thus corrupt
|
1215
1302
|
* packfile.
|
1216
1303
|
*/
|
1217
|
-
if (
|
1304
|
+
if (git_indexer_oidmap_size(&idx->expected_oids) > 0) {
|
1218
1305
|
git_error_set(GIT_ERROR_INDEXER, "packfile is missing %"PRIuZ" objects",
|
1219
|
-
|
1306
|
+
(size_t)git_indexer_oidmap_size(&idx->expected_oids));
|
1220
1307
|
return -1;
|
1221
1308
|
}
|
1222
1309
|
|
@@ -1224,17 +1311,18 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
|
|
1224
1311
|
|
1225
1312
|
/* Use the trailer hash as the pack file name to ensure
|
1226
1313
|
* files with different contents have different names */
|
1227
|
-
|
1314
|
+
memcpy(idx->checksum, checksum, checksum_size);
|
1315
|
+
if (git_hash_fmt(idx->name, checksum, checksum_size) < 0)
|
1316
|
+
return -1;
|
1228
1317
|
|
1229
|
-
|
1230
|
-
|
1231
|
-
|
1232
|
-
if (
|
1318
|
+
git_str_sets(&filename, idx->pack->pack_name);
|
1319
|
+
git_str_shorten(&filename, strlen("pack"));
|
1320
|
+
git_str_puts(&filename, "idx");
|
1321
|
+
if (git_str_oom(&filename))
|
1233
1322
|
return -1;
|
1234
1323
|
|
1235
1324
|
if (git_filebuf_open(&index_file, filename.ptr,
|
1236
|
-
|
1237
|
-
(idx->do_fsync ? GIT_FILEBUF_FSYNC : 0),
|
1325
|
+
filebuf_hash | (idx->do_fsync ? GIT_FILEBUF_FSYNC : 0),
|
1238
1326
|
idx->mode) < 0)
|
1239
1327
|
goto on_error;
|
1240
1328
|
|
@@ -1251,7 +1339,7 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
|
|
1251
1339
|
|
1252
1340
|
/* Write out the object names (SHA-1 hashes) */
|
1253
1341
|
git_vector_foreach(&idx->objects, i, entry) {
|
1254
|
-
git_filebuf_write(&index_file, &entry->oid,
|
1342
|
+
git_filebuf_write(&index_file, &entry->oid.id, git_oid_size(idx->oid_type));
|
1255
1343
|
}
|
1256
1344
|
|
1257
1345
|
/* Write out the CRC32 values */
|
@@ -1285,14 +1373,14 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
|
|
1285
1373
|
}
|
1286
1374
|
|
1287
1375
|
/* Write out the packfile trailer to the index */
|
1288
|
-
if (git_filebuf_write(&index_file,
|
1376
|
+
if (git_filebuf_write(&index_file, checksum, checksum_size) < 0)
|
1289
1377
|
goto on_error;
|
1290
1378
|
|
1291
1379
|
/* Write out the hash of the idx */
|
1292
|
-
if (git_filebuf_hash(
|
1380
|
+
if (git_filebuf_hash(checksum, &index_file) < 0)
|
1293
1381
|
goto on_error;
|
1294
1382
|
|
1295
|
-
git_filebuf_write(&index_file,
|
1383
|
+
git_filebuf_write(&index_file, checksum, checksum_size);
|
1296
1384
|
|
1297
1385
|
/* Figure out what the final name should be */
|
1298
1386
|
if (index_path(&filename, idx, ".idx") < 0)
|
@@ -1336,31 +1424,31 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
|
|
1336
1424
|
goto on_error;
|
1337
1425
|
|
1338
1426
|
/* And don't forget to rename the packfile to its new place. */
|
1339
|
-
if (p_rename(idx->pack->pack_name,
|
1427
|
+
if (p_rename(idx->pack->pack_name, git_str_cstr(&filename)) < 0)
|
1340
1428
|
goto on_error;
|
1341
1429
|
|
1342
1430
|
/* And fsync the parent directory if we're asked to. */
|
1343
1431
|
if (idx->do_fsync &&
|
1344
|
-
git_futils_fsync_parent(
|
1432
|
+
git_futils_fsync_parent(git_str_cstr(&filename)) < 0)
|
1345
1433
|
goto on_error;
|
1346
1434
|
|
1347
1435
|
idx->pack_committed = 1;
|
1348
1436
|
|
1349
|
-
|
1437
|
+
git_str_dispose(&filename);
|
1350
1438
|
return 0;
|
1351
1439
|
|
1352
1440
|
on_error:
|
1353
1441
|
git_mwindow_free_all(&idx->pack->mwf);
|
1354
1442
|
git_filebuf_cleanup(&index_file);
|
1355
|
-
|
1443
|
+
git_str_dispose(&filename);
|
1356
1444
|
return -1;
|
1357
1445
|
}
|
1358
1446
|
|
1359
1447
|
void git_indexer_free(git_indexer *idx)
|
1360
1448
|
{
|
1361
|
-
|
1362
|
-
git_oid *
|
1363
|
-
|
1449
|
+
struct git_pack_entry *pentry;
|
1450
|
+
git_oid *id;
|
1451
|
+
git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
|
1364
1452
|
|
1365
1453
|
if (idx == NULL)
|
1366
1454
|
return;
|
@@ -1368,28 +1456,24 @@ void git_indexer_free(git_indexer *idx)
|
|
1368
1456
|
if (idx->have_stream)
|
1369
1457
|
git_packfile_stream_dispose(&idx->stream);
|
1370
1458
|
|
1371
|
-
|
1459
|
+
git_vector_dispose_deep(&idx->objects);
|
1372
1460
|
|
1373
|
-
|
1374
|
-
|
1375
|
-
git_oidmap_foreach_value(idx->pack->idx_cache, pentry, {
|
1376
|
-
git__free(pentry);
|
1377
|
-
});
|
1461
|
+
while (git_pack_oidmap_iterate(&iter, NULL, &pentry, &idx->pack->idx_cache) == 0)
|
1462
|
+
git__free(pentry);
|
1378
1463
|
|
1379
|
-
|
1380
|
-
}
|
1464
|
+
git_pack_oidmap_dispose(&idx->pack->idx_cache);
|
1381
1465
|
|
1382
|
-
|
1466
|
+
git_vector_dispose_deep(&idx->deltas);
|
1383
1467
|
|
1384
1468
|
git_packfile_free(idx->pack, !idx->pack_committed);
|
1385
1469
|
|
1386
|
-
iter =
|
1387
|
-
while (
|
1388
|
-
git__free(
|
1470
|
+
iter = GIT_HASHMAP_ITER_INIT;
|
1471
|
+
while (git_indexer_oidmap_iterate(&iter, NULL, &id, &idx->expected_oids) == 0)
|
1472
|
+
git__free(id);
|
1389
1473
|
|
1390
1474
|
git_hash_ctx_cleanup(&idx->trailer);
|
1391
1475
|
git_hash_ctx_cleanup(&idx->hash_ctx);
|
1392
|
-
|
1393
|
-
|
1476
|
+
git_str_dispose(&idx->entry_data);
|
1477
|
+
git_indexer_oidmap_dispose(&idx->expected_oids);
|
1394
1478
|
git__free(idx);
|
1395
1479
|
}
|