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
@@ -8,14 +8,15 @@
|
|
8
8
|
#include "midx.h"
|
9
9
|
|
10
10
|
#include "array.h"
|
11
|
-
#include "
|
11
|
+
#include "buf.h"
|
12
12
|
#include "filebuf.h"
|
13
13
|
#include "futils.h"
|
14
14
|
#include "hash.h"
|
15
15
|
#include "odb.h"
|
16
16
|
#include "pack.h"
|
17
|
-
#include "
|
17
|
+
#include "fs_path.h"
|
18
18
|
#include "repository.h"
|
19
|
+
#include "str.h"
|
19
20
|
|
20
21
|
#define MIDX_SIGNATURE 0x4d494458 /* "MIDX" */
|
21
22
|
#define MIDX_VERSION 1
|
@@ -113,23 +114,16 @@ static int midx_parse_oid_lookup(
|
|
113
114
|
const unsigned char *data,
|
114
115
|
struct git_midx_chunk *chunk_oid_lookup)
|
115
116
|
{
|
116
|
-
|
117
|
-
git_oid *oid, *prev_oid, zero_oid = {{0}};
|
117
|
+
size_t oid_size = git_oid_size(idx->oid_type);
|
118
118
|
|
119
119
|
if (chunk_oid_lookup->offset == 0)
|
120
120
|
return midx_error("missing OID Lookup chunk");
|
121
121
|
if (chunk_oid_lookup->length == 0)
|
122
122
|
return midx_error("empty OID Lookup chunk");
|
123
|
-
if (chunk_oid_lookup->length != idx->num_objects *
|
123
|
+
if (chunk_oid_lookup->length != idx->num_objects * oid_size)
|
124
124
|
return midx_error("OID Lookup chunk has wrong length");
|
125
125
|
|
126
|
-
idx->oid_lookup =
|
127
|
-
prev_oid = &zero_oid;
|
128
|
-
for (i = 0; i < idx->num_objects; ++i, ++oid) {
|
129
|
-
if (git_oid_cmp(prev_oid, oid) >= 0)
|
130
|
-
return midx_error("OID Lookup index is non-monotonic");
|
131
|
-
prev_oid = oid;
|
132
|
-
}
|
126
|
+
idx->oid_lookup = (unsigned char *)(data + chunk_oid_lookup->offset);
|
133
127
|
|
134
128
|
return 0;
|
135
129
|
}
|
@@ -177,17 +171,20 @@ int git_midx_parse(
|
|
177
171
|
struct git_midx_chunk *last_chunk;
|
178
172
|
uint32_t i;
|
179
173
|
off64_t last_chunk_offset, chunk_offset, trailer_offset;
|
180
|
-
|
174
|
+
size_t checksum_size, oid_size;
|
181
175
|
int error;
|
182
176
|
struct git_midx_chunk chunk_packfile_names = {0},
|
183
177
|
chunk_oid_fanout = {0},
|
184
178
|
chunk_oid_lookup = {0},
|
185
179
|
chunk_object_offsets = {0},
|
186
|
-
chunk_object_large_offsets = {0}
|
180
|
+
chunk_object_large_offsets = {0},
|
181
|
+
chunk_unknown = {0};
|
187
182
|
|
188
183
|
GIT_ASSERT_ARG(idx);
|
189
184
|
|
190
|
-
|
185
|
+
oid_size = git_oid_size(idx->oid_type);
|
186
|
+
|
187
|
+
if (size < sizeof(struct git_midx_header) + oid_size)
|
191
188
|
return midx_error("multi-pack index is too short");
|
192
189
|
|
193
190
|
hdr = ((struct git_midx_header *)data);
|
@@ -207,21 +204,24 @@ int git_midx_parse(
|
|
207
204
|
last_chunk_offset =
|
208
205
|
sizeof(struct git_midx_header) +
|
209
206
|
(1 + hdr->chunks) * 12;
|
210
|
-
|
207
|
+
|
208
|
+
checksum_size = oid_size;
|
209
|
+
trailer_offset = size - checksum_size;
|
210
|
+
|
211
211
|
if (trailer_offset < last_chunk_offset)
|
212
212
|
return midx_error("wrong index size");
|
213
|
-
|
214
|
-
|
215
|
-
if (git_hash_buf(&idx_checksum, data, (size_t)trailer_offset) < 0)
|
216
|
-
return midx_error("could not calculate signature");
|
217
|
-
if (!git_oid_equal(&idx_checksum, &idx->checksum))
|
218
|
-
return midx_error("index signature mismatch");
|
213
|
+
memcpy(idx->checksum, data + trailer_offset, checksum_size);
|
219
214
|
|
220
215
|
chunk_hdr = data + sizeof(struct git_midx_header);
|
221
216
|
last_chunk = NULL;
|
222
217
|
for (i = 0; i < hdr->chunks; ++i, chunk_hdr += 12) {
|
223
|
-
|
224
|
-
|
218
|
+
uint32_t chunk_id = ntohl(*((uint32_t *)(chunk_hdr + 0)));
|
219
|
+
uint64_t high_offset = ((uint64_t)ntohl(*((uint32_t *)(chunk_hdr + 4)))) & 0xffffffffu;
|
220
|
+
uint64_t low_offset = ((uint64_t)ntohl(*((uint32_t *)(chunk_hdr + 8)))) & 0xffffffffu;
|
221
|
+
|
222
|
+
if (high_offset >= INT32_MAX)
|
223
|
+
return midx_error("chunk offset out of range");
|
224
|
+
chunk_offset = (off64_t)(high_offset << 32 | low_offset);
|
225
225
|
if (chunk_offset < last_chunk_offset)
|
226
226
|
return midx_error("chunks are non-monotonic");
|
227
227
|
if (chunk_offset >= trailer_offset)
|
@@ -230,7 +230,7 @@ int git_midx_parse(
|
|
230
230
|
last_chunk->length = (size_t)(chunk_offset - last_chunk_offset);
|
231
231
|
last_chunk_offset = chunk_offset;
|
232
232
|
|
233
|
-
switch (
|
233
|
+
switch (chunk_id) {
|
234
234
|
case MIDX_PACKFILE_NAMES_ID:
|
235
235
|
chunk_packfile_names.offset = last_chunk_offset;
|
236
236
|
last_chunk = &chunk_packfile_names;
|
@@ -257,7 +257,9 @@ int git_midx_parse(
|
|
257
257
|
break;
|
258
258
|
|
259
259
|
default:
|
260
|
-
|
260
|
+
chunk_unknown.offset = last_chunk_offset;
|
261
|
+
last_chunk = &chunk_unknown;
|
262
|
+
break;
|
261
263
|
}
|
262
264
|
}
|
263
265
|
last_chunk->length = (size_t)(trailer_offset - last_chunk_offset);
|
@@ -283,8 +285,9 @@ int git_midx_parse(
|
|
283
285
|
}
|
284
286
|
|
285
287
|
int git_midx_open(
|
286
|
-
|
287
|
-
|
288
|
+
git_midx_file **idx_out,
|
289
|
+
const char *path,
|
290
|
+
git_oid_t oid_type)
|
288
291
|
{
|
289
292
|
git_midx_file *idx;
|
290
293
|
git_file fd = -1;
|
@@ -292,6 +295,8 @@ int git_midx_open(
|
|
292
295
|
struct stat st;
|
293
296
|
int error;
|
294
297
|
|
298
|
+
GIT_ASSERT_ARG(idx_out && path && oid_type);
|
299
|
+
|
295
300
|
/* TODO: properly open the file without access time using O_NOATIME */
|
296
301
|
fd = git_futils_open_ro(path);
|
297
302
|
if (fd < 0)
|
@@ -313,7 +318,9 @@ int git_midx_open(
|
|
313
318
|
idx = git__calloc(1, sizeof(git_midx_file));
|
314
319
|
GIT_ERROR_CHECK_ALLOC(idx);
|
315
320
|
|
316
|
-
|
321
|
+
idx->oid_type = oid_type;
|
322
|
+
|
323
|
+
error = git_str_sets(&idx->filename, path);
|
317
324
|
if (error < 0)
|
318
325
|
return error;
|
319
326
|
|
@@ -340,7 +347,8 @@ bool git_midx_needs_refresh(
|
|
340
347
|
git_file fd = -1;
|
341
348
|
struct stat st;
|
342
349
|
ssize_t bytes_read;
|
343
|
-
|
350
|
+
unsigned char checksum[GIT_HASH_MAX_SIZE];
|
351
|
+
size_t checksum_size;
|
344
352
|
|
345
353
|
/* TODO: properly open the file without access time using O_NOATIME */
|
346
354
|
fd = git_futils_open_ro(path);
|
@@ -359,13 +367,14 @@ bool git_midx_needs_refresh(
|
|
359
367
|
return true;
|
360
368
|
}
|
361
369
|
|
362
|
-
|
370
|
+
checksum_size = git_oid_size(idx->oid_type);
|
371
|
+
bytes_read = p_pread(fd, checksum, checksum_size, st.st_size - checksum_size);
|
363
372
|
p_close(fd);
|
364
373
|
|
365
|
-
if (bytes_read !=
|
374
|
+
if (bytes_read != (ssize_t)checksum_size)
|
366
375
|
return true;
|
367
376
|
|
368
|
-
return
|
377
|
+
return (memcmp(checksum, idx->checksum, checksum_size) != 0);
|
369
378
|
}
|
370
379
|
|
371
380
|
int git_midx_entry_find(
|
@@ -375,42 +384,44 @@ int git_midx_entry_find(
|
|
375
384
|
size_t len)
|
376
385
|
{
|
377
386
|
int pos, found = 0;
|
378
|
-
size_t pack_index;
|
387
|
+
size_t pack_index, oid_size, oid_hexsize;
|
379
388
|
uint32_t hi, lo;
|
380
|
-
|
389
|
+
unsigned char *current = NULL;
|
381
390
|
const unsigned char *object_offset;
|
382
391
|
off64_t offset;
|
383
392
|
|
384
393
|
GIT_ASSERT_ARG(idx);
|
385
394
|
|
395
|
+
oid_size = git_oid_size(idx->oid_type);
|
396
|
+
oid_hexsize = git_oid_hexsize(idx->oid_type);
|
397
|
+
|
386
398
|
hi = ntohl(idx->oid_fanout[(int)short_oid->id[0]]);
|
387
399
|
lo = ((short_oid->id[0] == 0x0) ? 0 : ntohl(idx->oid_fanout[(int)short_oid->id[0] - 1]));
|
388
400
|
|
389
|
-
pos =
|
401
|
+
pos = git_pack__lookup_id(idx->oid_lookup, oid_size, lo, hi, short_oid->id, idx->oid_type);
|
390
402
|
|
391
403
|
if (pos >= 0) {
|
392
404
|
/* An object matching exactly the oid was found */
|
393
405
|
found = 1;
|
394
|
-
current = idx->oid_lookup + pos;
|
406
|
+
current = idx->oid_lookup + (pos * oid_size);
|
395
407
|
} else {
|
396
408
|
/* No object was found */
|
397
409
|
/* pos refers to the object with the "closest" oid to short_oid */
|
398
410
|
pos = -1 - pos;
|
399
411
|
if (pos < (int)idx->num_objects) {
|
400
|
-
current = idx->oid_lookup + pos;
|
412
|
+
current = idx->oid_lookup + (pos * oid_size);
|
401
413
|
|
402
|
-
if (!
|
414
|
+
if (!git_oid_raw_ncmp(short_oid->id, current, len))
|
403
415
|
found = 1;
|
404
416
|
}
|
405
417
|
}
|
406
418
|
|
407
|
-
if (found && len !=
|
419
|
+
if (found && len != oid_hexsize && pos + 1 < (int)idx->num_objects) {
|
408
420
|
/* Check for ambiguousity */
|
409
|
-
const
|
421
|
+
const unsigned char *next = current + oid_size;
|
410
422
|
|
411
|
-
if (!
|
423
|
+
if (!git_oid_raw_ncmp(short_oid->id, next, len))
|
412
424
|
found = 2;
|
413
|
-
}
|
414
425
|
}
|
415
426
|
|
416
427
|
if (!found)
|
@@ -420,8 +431,8 @@ int git_midx_entry_find(
|
|
420
431
|
|
421
432
|
object_offset = idx->object_offsets + pos * 8;
|
422
433
|
offset = ntohl(*((uint32_t *)(object_offset + 4)));
|
423
|
-
if (offset & 0x80000000) {
|
424
|
-
uint32_t object_large_offsets_pos = offset
|
434
|
+
if (idx->object_large_offsets && offset & 0x80000000) {
|
435
|
+
uint32_t object_large_offsets_pos = (uint32_t) (offset ^ 0x80000000);
|
425
436
|
const unsigned char *object_large_offsets_index = idx->object_large_offsets;
|
426
437
|
|
427
438
|
/* Make sure we're not being sent out of bounds */
|
@@ -438,7 +449,7 @@ int git_midx_entry_find(
|
|
438
449
|
return midx_error("invalid index into the packfile names table");
|
439
450
|
e->pack_index = pack_index;
|
440
451
|
e->offset = offset;
|
441
|
-
|
452
|
+
git_oid__fromraw(&e->sha1, current, idx->oid_type);
|
442
453
|
return 0;
|
443
454
|
}
|
444
455
|
|
@@ -447,13 +458,19 @@ int git_midx_foreach_entry(
|
|
447
458
|
git_odb_foreach_cb cb,
|
448
459
|
void *data)
|
449
460
|
{
|
450
|
-
|
461
|
+
git_oid oid;
|
462
|
+
size_t oid_size, i;
|
451
463
|
int error;
|
452
464
|
|
453
465
|
GIT_ASSERT_ARG(idx);
|
454
466
|
|
467
|
+
oid_size = git_oid_size(idx->oid_type);
|
468
|
+
|
455
469
|
for (i = 0; i < idx->num_objects; ++i) {
|
456
|
-
if ((error =
|
470
|
+
if ((error = git_oid__fromraw(&oid, &idx->oid_lookup[i * oid_size], idx->oid_type)) < 0)
|
471
|
+
return error;
|
472
|
+
|
473
|
+
if ((error = cb(&oid, data)) != 0)
|
457
474
|
return git_error_set_after_callback(error);
|
458
475
|
}
|
459
476
|
|
@@ -467,7 +484,7 @@ int git_midx_close(git_midx_file *idx)
|
|
467
484
|
if (idx->index_map.data)
|
468
485
|
git_futils_mmap_free(&idx->index_map);
|
469
486
|
|
470
|
-
|
487
|
+
git_vector_dispose(&idx->packfile_names);
|
471
488
|
|
472
489
|
return 0;
|
473
490
|
}
|
@@ -477,7 +494,7 @@ void git_midx_free(git_midx_file *idx)
|
|
477
494
|
if (!idx)
|
478
495
|
return;
|
479
496
|
|
480
|
-
|
497
|
+
git_str_dispose(&idx->filename);
|
481
498
|
git_midx_close(idx);
|
482
499
|
git__free(idx);
|
483
500
|
}
|
@@ -491,24 +508,46 @@ static int packfile__cmp(const void *a_, const void *b_)
|
|
491
508
|
}
|
492
509
|
|
493
510
|
int git_midx_writer_new(
|
494
|
-
|
495
|
-
|
511
|
+
git_midx_writer **out,
|
512
|
+
const char *pack_dir
|
513
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
514
|
+
, git_midx_writer_options *opts
|
515
|
+
#endif
|
516
|
+
)
|
496
517
|
{
|
497
|
-
git_midx_writer *w
|
518
|
+
git_midx_writer *w;
|
519
|
+
git_oid_t oid_type;
|
520
|
+
|
521
|
+
GIT_ASSERT_ARG(out && pack_dir);
|
522
|
+
|
523
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
524
|
+
GIT_ERROR_CHECK_VERSION(opts,
|
525
|
+
GIT_MIDX_WRITER_OPTIONS_VERSION,
|
526
|
+
"git_midx_writer_options");
|
527
|
+
|
528
|
+
oid_type = opts && opts->oid_type ? opts->oid_type : GIT_OID_DEFAULT;
|
529
|
+
GIT_ASSERT_ARG(git_oid_type_is_valid(oid_type));
|
530
|
+
#else
|
531
|
+
oid_type = GIT_OID_SHA1;
|
532
|
+
#endif
|
533
|
+
|
534
|
+
w = git__calloc(1, sizeof(git_midx_writer));
|
498
535
|
GIT_ERROR_CHECK_ALLOC(w);
|
499
536
|
|
500
|
-
if (
|
537
|
+
if (git_str_sets(&w->pack_dir, pack_dir) < 0) {
|
501
538
|
git__free(w);
|
502
539
|
return -1;
|
503
540
|
}
|
504
|
-
|
541
|
+
git_fs_path_squash_slashes(&w->pack_dir);
|
505
542
|
|
506
543
|
if (git_vector_init(&w->packs, 0, packfile__cmp) < 0) {
|
507
|
-
|
544
|
+
git_str_dispose(&w->pack_dir);
|
508
545
|
git__free(w);
|
509
546
|
return -1;
|
510
547
|
}
|
511
548
|
|
549
|
+
w->oid_type = oid_type;
|
550
|
+
|
512
551
|
*out = w;
|
513
552
|
return 0;
|
514
553
|
}
|
@@ -523,8 +562,8 @@ void git_midx_writer_free(git_midx_writer *w)
|
|
523
562
|
|
524
563
|
git_vector_foreach (&w->packs, i, p)
|
525
564
|
git_mwindow_put_pack(p);
|
526
|
-
|
527
|
-
|
565
|
+
git_vector_dispose(&w->packs);
|
566
|
+
git_str_dispose(&w->pack_dir);
|
528
567
|
git__free(w);
|
529
568
|
}
|
530
569
|
|
@@ -532,16 +571,17 @@ int git_midx_writer_add(
|
|
532
571
|
git_midx_writer *w,
|
533
572
|
const char *idx_path)
|
534
573
|
{
|
535
|
-
|
574
|
+
git_str idx_path_buf = GIT_STR_INIT;
|
536
575
|
int error;
|
537
576
|
struct git_pack_file *p;
|
538
577
|
|
539
|
-
error =
|
578
|
+
error = git_fs_path_prettify(&idx_path_buf, idx_path, git_str_cstr(&w->pack_dir));
|
540
579
|
if (error < 0)
|
541
580
|
return error;
|
542
581
|
|
543
|
-
|
544
|
-
|
582
|
+
/* TODO: SHA256 */
|
583
|
+
error = git_mwindow_get_pack(&p, git_str_cstr(&idx_path_buf), 0);
|
584
|
+
git_str_dispose(&idx_path_buf);
|
545
585
|
if (error < 0)
|
546
586
|
return error;
|
547
587
|
|
@@ -613,8 +653,8 @@ static int write_chunk_header(int chunk_id, off64_t offset, midx_write_cb write_
|
|
613
653
|
|
614
654
|
static int midx_write_buf(const char *buf, size_t size, void *data)
|
615
655
|
{
|
616
|
-
|
617
|
-
return
|
656
|
+
git_str *b = (git_str *)data;
|
657
|
+
return git_str_put(b, buf, size);
|
618
658
|
}
|
619
659
|
|
620
660
|
struct midx_write_hash_context {
|
@@ -628,9 +668,11 @@ static int midx_write_hash(const char *buf, size_t size, void *data)
|
|
628
668
|
struct midx_write_hash_context *ctx = (struct midx_write_hash_context *)data;
|
629
669
|
int error;
|
630
670
|
|
631
|
-
|
632
|
-
|
633
|
-
|
671
|
+
if (ctx->ctx) {
|
672
|
+
error = git_hash_update(ctx->ctx, buf, size);
|
673
|
+
if (error < 0)
|
674
|
+
return error;
|
675
|
+
}
|
634
676
|
|
635
677
|
return ctx->write_cb(buf, size, ctx->cb_data);
|
636
678
|
}
|
@@ -648,15 +690,17 @@ static int midx_write(
|
|
648
690
|
uint32_t object_large_offsets_count;
|
649
691
|
uint32_t oid_fanout[256];
|
650
692
|
off64_t offset;
|
651
|
-
|
652
|
-
oid_lookup =
|
653
|
-
object_offsets =
|
654
|
-
object_large_offsets =
|
655
|
-
|
693
|
+
git_str packfile_names = GIT_STR_INIT,
|
694
|
+
oid_lookup = GIT_STR_INIT,
|
695
|
+
object_offsets = GIT_STR_INIT,
|
696
|
+
object_large_offsets = GIT_STR_INIT;
|
697
|
+
unsigned char checksum[GIT_HASH_MAX_SIZE];
|
698
|
+
size_t checksum_size, oid_size;
|
656
699
|
git_midx_entry *entry;
|
657
700
|
object_entry_array_t object_entries_array = GIT_ARRAY_INIT;
|
658
701
|
git_vector object_entries = GIT_VECTOR_INIT;
|
659
702
|
git_hash_ctx ctx;
|
703
|
+
git_hash_algorithm_t checksum_type;
|
660
704
|
struct midx_write_hash_context hash_cb_data = {0};
|
661
705
|
|
662
706
|
hdr.signature = htonl(MIDX_SIGNATURE);
|
@@ -668,42 +712,47 @@ static int midx_write(
|
|
668
712
|
hash_cb_data.cb_data = cb_data;
|
669
713
|
hash_cb_data.ctx = &ctx;
|
670
714
|
|
671
|
-
|
672
|
-
|
715
|
+
oid_size = git_oid_size(w->oid_type);
|
716
|
+
checksum_type = git_oid_algorithm(w->oid_type);
|
717
|
+
checksum_size = git_hash_size(checksum_type);
|
718
|
+
GIT_ASSERT(oid_size && checksum_type && checksum_size);
|
719
|
+
|
720
|
+
if ((error = git_hash_ctx_init(&ctx, checksum_type)) < 0)
|
673
721
|
return error;
|
722
|
+
|
674
723
|
cb_data = &hash_cb_data;
|
675
724
|
write_cb = midx_write_hash;
|
676
725
|
|
677
726
|
git_vector_sort(&w->packs);
|
678
727
|
git_vector_foreach (&w->packs, i, p) {
|
679
|
-
|
728
|
+
git_str relative_index = GIT_STR_INIT;
|
680
729
|
struct object_entry_cb_state state = {0};
|
681
730
|
size_t path_len;
|
682
731
|
|
683
732
|
state.pack_index = (uint32_t)i;
|
684
733
|
state.object_entries_array = &object_entries_array;
|
685
734
|
|
686
|
-
error =
|
735
|
+
error = git_str_sets(&relative_index, p->pack_name);
|
687
736
|
if (error < 0)
|
688
737
|
goto cleanup;
|
689
|
-
error =
|
738
|
+
error = git_fs_path_make_relative(&relative_index, git_str_cstr(&w->pack_dir));
|
690
739
|
if (error < 0) {
|
691
|
-
|
740
|
+
git_str_dispose(&relative_index);
|
692
741
|
goto cleanup;
|
693
742
|
}
|
694
|
-
path_len =
|
695
|
-
if (path_len <= strlen(".pack") || git__suffixcmp(
|
696
|
-
|
743
|
+
path_len = git_str_len(&relative_index);
|
744
|
+
if (path_len <= strlen(".pack") || git__suffixcmp(git_str_cstr(&relative_index), ".pack") != 0) {
|
745
|
+
git_str_dispose(&relative_index);
|
697
746
|
git_error_set(GIT_ERROR_INVALID, "invalid packfile name: '%s'", p->pack_name);
|
698
747
|
error = -1;
|
699
748
|
goto cleanup;
|
700
749
|
}
|
701
750
|
path_len -= strlen(".pack");
|
702
751
|
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
|
752
|
+
git_str_put(&packfile_names, git_str_cstr(&relative_index), path_len);
|
753
|
+
git_str_puts(&packfile_names, ".idx");
|
754
|
+
git_str_putc(&packfile_names, '\0');
|
755
|
+
git_str_dispose(&relative_index);
|
707
756
|
|
708
757
|
error = git_pack_foreach_entry_offset(p, object_entry__cb, &state);
|
709
758
|
if (error < 0)
|
@@ -723,8 +772,8 @@ static int midx_write(
|
|
723
772
|
git_vector_uniq(&object_entries, NULL);
|
724
773
|
|
725
774
|
/* Pad the packfile names so it is a multiple of four. */
|
726
|
-
while (
|
727
|
-
|
775
|
+
while (git_str_len(&packfile_names) & 3)
|
776
|
+
git_str_putc(&packfile_names, '\0');
|
728
777
|
|
729
778
|
/* Fill the OID Fanout table. */
|
730
779
|
oid_fanout_count = 0;
|
@@ -737,7 +786,9 @@ static int midx_write(
|
|
737
786
|
|
738
787
|
/* Fill the OID Lookup table. */
|
739
788
|
git_vector_foreach (&object_entries, i, entry) {
|
740
|
-
error =
|
789
|
+
error = git_str_put(&oid_lookup,
|
790
|
+
(char *)&entry->sha1.id, oid_size);
|
791
|
+
|
741
792
|
if (error < 0)
|
742
793
|
goto cleanup;
|
743
794
|
}
|
@@ -748,7 +799,7 @@ static int midx_write(
|
|
748
799
|
uint32_t word;
|
749
800
|
|
750
801
|
word = htonl((uint32_t)entry->pack_index);
|
751
|
-
error =
|
802
|
+
error = git_str_put(&object_offsets, (const char *)&word, sizeof(word));
|
752
803
|
if (error < 0)
|
753
804
|
goto cleanup;
|
754
805
|
if (entry->offset >= 0x80000000l) {
|
@@ -759,7 +810,7 @@ static int midx_write(
|
|
759
810
|
word = htonl((uint32_t)entry->offset & 0x7fffffffu);
|
760
811
|
}
|
761
812
|
|
762
|
-
error =
|
813
|
+
error = git_str_put(&object_offsets, (const char *)&word, sizeof(word));
|
763
814
|
if (error < 0)
|
764
815
|
goto cleanup;
|
765
816
|
}
|
@@ -767,7 +818,7 @@ static int midx_write(
|
|
767
818
|
/* Write the header. */
|
768
819
|
hdr.packfiles = htonl((uint32_t)git_vector_length(&w->packs));
|
769
820
|
hdr.chunks = 4;
|
770
|
-
if (
|
821
|
+
if (git_str_len(&object_large_offsets) > 0)
|
771
822
|
hdr.chunks++;
|
772
823
|
error = write_cb((const char *)&hdr, sizeof(hdr), cb_data);
|
773
824
|
if (error < 0)
|
@@ -778,7 +829,7 @@ static int midx_write(
|
|
778
829
|
error = write_chunk_header(MIDX_PACKFILE_NAMES_ID, offset, write_cb, cb_data);
|
779
830
|
if (error < 0)
|
780
831
|
goto cleanup;
|
781
|
-
offset +=
|
832
|
+
offset += git_str_len(&packfile_names);
|
782
833
|
error = write_chunk_header(MIDX_OID_FANOUT_ID, offset, write_cb, cb_data);
|
783
834
|
if (error < 0)
|
784
835
|
goto cleanup;
|
@@ -786,53 +837,56 @@ static int midx_write(
|
|
786
837
|
error = write_chunk_header(MIDX_OID_LOOKUP_ID, offset, write_cb, cb_data);
|
787
838
|
if (error < 0)
|
788
839
|
goto cleanup;
|
789
|
-
offset +=
|
840
|
+
offset += git_str_len(&oid_lookup);
|
790
841
|
error = write_chunk_header(MIDX_OBJECT_OFFSETS_ID, offset, write_cb, cb_data);
|
791
842
|
if (error < 0)
|
792
843
|
goto cleanup;
|
793
|
-
offset +=
|
794
|
-
if (
|
844
|
+
offset += git_str_len(&object_offsets);
|
845
|
+
if (git_str_len(&object_large_offsets) > 0) {
|
795
846
|
error = write_chunk_header(MIDX_OBJECT_LARGE_OFFSETS_ID, offset, write_cb, cb_data);
|
796
847
|
if (error < 0)
|
797
848
|
goto cleanup;
|
798
|
-
offset +=
|
849
|
+
offset += git_str_len(&object_large_offsets);
|
799
850
|
}
|
800
851
|
error = write_chunk_header(0, offset, write_cb, cb_data);
|
801
852
|
if (error < 0)
|
802
853
|
goto cleanup;
|
803
854
|
|
804
855
|
/* Write all the chunks. */
|
805
|
-
error = write_cb(
|
856
|
+
error = write_cb(git_str_cstr(&packfile_names), git_str_len(&packfile_names), cb_data);
|
806
857
|
if (error < 0)
|
807
858
|
goto cleanup;
|
808
859
|
error = write_cb((const char *)oid_fanout, sizeof(oid_fanout), cb_data);
|
809
860
|
if (error < 0)
|
810
861
|
goto cleanup;
|
811
|
-
error = write_cb(
|
862
|
+
error = write_cb(git_str_cstr(&oid_lookup), git_str_len(&oid_lookup), cb_data);
|
812
863
|
if (error < 0)
|
813
864
|
goto cleanup;
|
814
|
-
error = write_cb(
|
865
|
+
error = write_cb(git_str_cstr(&object_offsets), git_str_len(&object_offsets), cb_data);
|
815
866
|
if (error < 0)
|
816
867
|
goto cleanup;
|
817
|
-
error = write_cb(
|
868
|
+
error = write_cb(git_str_cstr(&object_large_offsets), git_str_len(&object_large_offsets), cb_data);
|
818
869
|
if (error < 0)
|
819
870
|
goto cleanup;
|
820
871
|
|
821
872
|
/* Finalize the checksum and write the trailer. */
|
822
|
-
error = git_hash_final(
|
873
|
+
error = git_hash_final(checksum, &ctx);
|
823
874
|
if (error < 0)
|
824
875
|
goto cleanup;
|
825
|
-
|
876
|
+
|
877
|
+
hash_cb_data.ctx = NULL;
|
878
|
+
|
879
|
+
error = write_cb((char *)checksum, checksum_size, cb_data);
|
826
880
|
if (error < 0)
|
827
881
|
goto cleanup;
|
828
882
|
|
829
883
|
cleanup:
|
830
884
|
git_array_clear(object_entries_array);
|
831
|
-
|
832
|
-
|
833
|
-
|
834
|
-
|
835
|
-
|
885
|
+
git_vector_dispose(&object_entries);
|
886
|
+
git_str_dispose(&packfile_names);
|
887
|
+
git_str_dispose(&oid_lookup);
|
888
|
+
git_str_dispose(&object_offsets);
|
889
|
+
git_str_dispose(&object_large_offsets);
|
836
890
|
git_hash_ctx_cleanup(&ctx);
|
837
891
|
return error;
|
838
892
|
}
|
@@ -848,17 +902,17 @@ int git_midx_writer_commit(
|
|
848
902
|
{
|
849
903
|
int error;
|
850
904
|
int filebuf_flags = GIT_FILEBUF_DO_NOT_BUFFER;
|
851
|
-
|
905
|
+
git_str midx_path = GIT_STR_INIT;
|
852
906
|
git_filebuf output = GIT_FILEBUF_INIT;
|
853
907
|
|
854
|
-
error =
|
908
|
+
error = git_str_joinpath(&midx_path, git_str_cstr(&w->pack_dir), "multi-pack-index");
|
855
909
|
if (error < 0)
|
856
910
|
return error;
|
857
911
|
|
858
912
|
if (git_repository__fsync_gitdir)
|
859
913
|
filebuf_flags |= GIT_FILEBUF_FSYNC;
|
860
|
-
error = git_filebuf_open(&output,
|
861
|
-
|
914
|
+
error = git_filebuf_open(&output, git_str_cstr(&midx_path), filebuf_flags, 0644);
|
915
|
+
git_str_dispose(&midx_path);
|
862
916
|
if (error < 0)
|
863
917
|
return error;
|
864
918
|
|
@@ -875,5 +929,13 @@ int git_midx_writer_dump(
|
|
875
929
|
git_buf *midx,
|
876
930
|
git_midx_writer *w)
|
877
931
|
{
|
878
|
-
|
932
|
+
git_str str = GIT_STR_INIT;
|
933
|
+
int error;
|
934
|
+
|
935
|
+
if ((error = git_buf_tostr(&str, midx)) < 0 ||
|
936
|
+
(error = midx_write(w, midx_write_buf, &str)) == 0)
|
937
|
+
error = git_buf_fromstr(midx, &str);
|
938
|
+
|
939
|
+
git_str_dispose(&str);
|
940
|
+
return error;
|
879
941
|
}
|