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
@@ -13,6 +13,7 @@
|
|
13
13
|
#include "odb.h"
|
14
14
|
#include "oid.h"
|
15
15
|
#include "oidarray.h"
|
16
|
+
#include "hashmap_oid.h"
|
16
17
|
|
17
18
|
/* Option to bypass checking existence of '.keep' files */
|
18
19
|
bool git_disable_pack_keep_file_checks = false;
|
@@ -32,7 +33,7 @@ static int packfile_unpack_compressed(
|
|
32
33
|
* Throws GIT_EAMBIGUOUSOIDPREFIX if short oid
|
33
34
|
* is ambiguous within the pack.
|
34
35
|
* This method assumes that len is between
|
35
|
-
* GIT_OID_MINPREFIXLEN and
|
36
|
+
* GIT_OID_MINPREFIXLEN and the oid type's hexsize.
|
36
37
|
*/
|
37
38
|
static int pack_entry_find_offset(
|
38
39
|
off64_t *offset_out,
|
@@ -41,6 +42,12 @@ static int pack_entry_find_offset(
|
|
41
42
|
const git_oid *short_oid,
|
42
43
|
size_t len);
|
43
44
|
|
45
|
+
#define off64_hash(key) (uint32_t)((key)>>33^(key)^(key)<<11)
|
46
|
+
#define off64_equal(a, b) ((a) == (b))
|
47
|
+
|
48
|
+
GIT_HASHMAP_FUNCTIONS(git_pack_offsetmap, GIT_HASHMAP_INLINE, off64_t, git_pack_cache_entry *, off64_hash, off64_equal);
|
49
|
+
GIT_HASHMAP_OID_FUNCTIONS(git_pack_oidmap, , struct git_pack_entry *);
|
50
|
+
|
44
51
|
static int packfile_error(const char *message)
|
45
52
|
{
|
46
53
|
git_error_set(GIT_ERROR_ODB, "invalid pack file - %s", message);
|
@@ -75,31 +82,21 @@ static void free_cache_object(void *o)
|
|
75
82
|
|
76
83
|
static void cache_free(git_pack_cache *cache)
|
77
84
|
{
|
85
|
+
git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
|
78
86
|
git_pack_cache_entry *entry;
|
79
87
|
|
80
|
-
|
81
|
-
|
82
|
-
free_cache_object(entry);
|
83
|
-
});
|
88
|
+
while (git_pack_offsetmap_iterate(&iter, NULL, &entry, &cache->entries) == 0)
|
89
|
+
free_cache_object(entry);
|
84
90
|
|
85
|
-
|
86
|
-
cache->entries = NULL;
|
87
|
-
}
|
91
|
+
git_pack_offsetmap_dispose(&cache->entries);
|
88
92
|
}
|
89
93
|
|
90
94
|
static int cache_init(git_pack_cache *cache)
|
91
95
|
{
|
92
|
-
if (git_offmap_new(&cache->entries) < 0)
|
93
|
-
return -1;
|
94
|
-
|
95
96
|
cache->memory_limit = GIT_PACK_CACHE_MEMORY_LIMIT;
|
96
97
|
|
97
98
|
if (git_mutex_init(&cache->lock)) {
|
98
99
|
git_error_set(GIT_ERROR_OS, "failed to initialize pack cache mutex");
|
99
|
-
|
100
|
-
git__free(cache->entries);
|
101
|
-
cache->entries = NULL;
|
102
|
-
|
103
100
|
return -1;
|
104
101
|
}
|
105
102
|
|
@@ -108,15 +105,16 @@ static int cache_init(git_pack_cache *cache)
|
|
108
105
|
|
109
106
|
static git_pack_cache_entry *cache_get(git_pack_cache *cache, off64_t offset)
|
110
107
|
{
|
111
|
-
git_pack_cache_entry *entry;
|
108
|
+
git_pack_cache_entry *entry = NULL;
|
112
109
|
|
113
110
|
if (git_mutex_lock(&cache->lock) < 0)
|
114
111
|
return NULL;
|
115
112
|
|
116
|
-
if ((entry
|
113
|
+
if (git_pack_offsetmap_get(&entry, &cache->entries, offset) == 0) {
|
117
114
|
git_atomic32_inc(&entry->refcount);
|
118
115
|
entry->last_usage = cache->use_ctr++;
|
119
116
|
}
|
117
|
+
|
120
118
|
git_mutex_unlock(&cache->lock);
|
121
119
|
|
122
120
|
return entry;
|
@@ -125,16 +123,17 @@ static git_pack_cache_entry *cache_get(git_pack_cache *cache, off64_t offset)
|
|
125
123
|
/* Run with the cache lock held */
|
126
124
|
static void free_lowest_entry(git_pack_cache *cache)
|
127
125
|
{
|
128
|
-
|
126
|
+
git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
|
129
127
|
git_pack_cache_entry *entry;
|
128
|
+
off64_t offset;
|
130
129
|
|
131
|
-
|
130
|
+
while (git_pack_offsetmap_iterate(&iter, &offset, &entry, &cache->entries) == 0) {
|
132
131
|
if (entry && git_atomic32_get(&entry->refcount) == 0) {
|
133
132
|
cache->memory_used -= entry->raw.len;
|
134
|
-
|
133
|
+
git_pack_offsetmap_remove(&cache->entries, offset);
|
135
134
|
free_cache_object(entry);
|
136
135
|
}
|
137
|
-
}
|
136
|
+
}
|
138
137
|
}
|
139
138
|
|
140
139
|
static int cache_add(
|
@@ -157,12 +156,12 @@ static int cache_add(
|
|
157
156
|
return -1;
|
158
157
|
}
|
159
158
|
/* Add it to the cache if nobody else has */
|
160
|
-
exists =
|
159
|
+
exists = git_pack_offsetmap_contains(&cache->entries, offset);
|
161
160
|
if (!exists) {
|
162
161
|
while (cache->memory_used + base->len > cache->memory_limit)
|
163
162
|
free_lowest_entry(cache);
|
164
163
|
|
165
|
-
|
164
|
+
git_pack_offsetmap_put(&cache->entries, offset, entry);
|
166
165
|
cache->memory_used += entry->raw.len;
|
167
166
|
|
168
167
|
*cached_out = entry;
|
@@ -186,9 +185,9 @@ static int cache_add(
|
|
186
185
|
|
187
186
|
static void pack_index_free(struct git_pack_file *p)
|
188
187
|
{
|
189
|
-
if (p->
|
190
|
-
git__free(p->
|
191
|
-
p->
|
188
|
+
if (p->ids) {
|
189
|
+
git__free(p->ids);
|
190
|
+
p->ids = NULL;
|
192
191
|
}
|
193
192
|
if (p->index_map.data) {
|
194
193
|
git_futils_mmap_free(&p->index_map);
|
@@ -200,11 +199,12 @@ static void pack_index_free(struct git_pack_file *p)
|
|
200
199
|
static int pack_index_check_locked(const char *path, struct git_pack_file *p)
|
201
200
|
{
|
202
201
|
struct git_pack_idx_header *hdr;
|
203
|
-
uint32_t version, nr, i, *index;
|
202
|
+
uint32_t version, nr = 0, i, *index;
|
204
203
|
void *idx_map;
|
205
204
|
size_t idx_size;
|
206
205
|
struct stat st;
|
207
206
|
int error;
|
207
|
+
|
208
208
|
/* TODO: properly open the file without access time using O_NOATIME */
|
209
209
|
git_file fd = git_futils_open_ro(path);
|
210
210
|
if (fd < 0)
|
@@ -218,8 +218,7 @@ static int pack_index_check_locked(const char *path, struct git_pack_file *p)
|
|
218
218
|
|
219
219
|
if (!S_ISREG(st.st_mode) ||
|
220
220
|
!git__is_sizet(st.st_size) ||
|
221
|
-
(idx_size = (size_t)st.st_size) < 4 * 256 +
|
222
|
-
{
|
221
|
+
(idx_size = (size_t)st.st_size) < (size_t)((4 * 256) + (p->oid_size * 2))) {
|
223
222
|
p_close(fd);
|
224
223
|
git_error_set(GIT_ERROR_ODB, "invalid pack index '%s'", path);
|
225
224
|
return -1;
|
@@ -242,10 +241,10 @@ static int pack_index_check_locked(const char *path, struct git_pack_file *p)
|
|
242
241
|
return packfile_error("unsupported index version");
|
243
242
|
}
|
244
243
|
|
245
|
-
} else
|
244
|
+
} else {
|
246
245
|
version = 1;
|
246
|
+
}
|
247
247
|
|
248
|
-
nr = 0;
|
249
248
|
index = idx_map;
|
250
249
|
|
251
250
|
if (version > 1)
|
@@ -264,11 +263,11 @@ static int pack_index_check_locked(const char *path, struct git_pack_file *p)
|
|
264
263
|
/*
|
265
264
|
* Total size:
|
266
265
|
* - 256 index entries 4 bytes each
|
267
|
-
* - 24-byte entries * nr (20
|
268
|
-
* - 20-byte
|
269
|
-
* - 20-byte
|
266
|
+
* - 24/36-byte entries * nr (20/32 byte SHA + 4-byte offset)
|
267
|
+
* - 20/32-byte SHA of the packfile
|
268
|
+
* - 20/32-byte SHA file checksum
|
270
269
|
*/
|
271
|
-
if (idx_size != 4*256 + nr *
|
270
|
+
if (idx_size != (4 * 256 + ((uint64_t) nr * (p->oid_size + 4)) + (p->oid_size * 2))) {
|
272
271
|
git_futils_mmap_free(&p->index_map);
|
273
272
|
return packfile_error("index is corrupted");
|
274
273
|
}
|
@@ -277,17 +276,17 @@ static int pack_index_check_locked(const char *path, struct git_pack_file *p)
|
|
277
276
|
* Minimum size:
|
278
277
|
* - 8 bytes of header
|
279
278
|
* - 256 index entries 4 bytes each
|
280
|
-
* - 20-byte
|
279
|
+
* - 20/32-byte SHA entry * nr
|
281
280
|
* - 4-byte crc entry * nr
|
282
281
|
* - 4-byte offset entry * nr
|
283
|
-
* - 20-byte
|
284
|
-
* - 20-byte
|
282
|
+
* - 20/32-byte SHA of the packfile
|
283
|
+
* - 20/32-byte SHA file checksum
|
285
284
|
* And after the 4-byte offset table might be a
|
286
285
|
* variable sized table containing 8-byte entries
|
287
286
|
* for offsets larger than 2^31.
|
288
287
|
*/
|
289
|
-
|
290
|
-
|
288
|
+
uint64_t min_size = 8 + (4 * 256) + ((uint64_t)nr * (p->oid_size + 4 + 4)) + (p->oid_size * 2);
|
289
|
+
uint64_t max_size = min_size;
|
291
290
|
|
292
291
|
if (nr)
|
293
292
|
max_size += (nr - 1)*8;
|
@@ -308,7 +307,7 @@ static int pack_index_open_locked(struct git_pack_file *p)
|
|
308
307
|
{
|
309
308
|
int error = 0;
|
310
309
|
size_t name_len;
|
311
|
-
|
310
|
+
git_str idx_name = GIT_STR_INIT;
|
312
311
|
|
313
312
|
if (p->index_version > -1)
|
314
313
|
goto cleanup;
|
@@ -317,12 +316,12 @@ static int pack_index_open_locked(struct git_pack_file *p)
|
|
317
316
|
name_len = strlen(p->pack_name);
|
318
317
|
GIT_ASSERT(name_len > strlen(".pack"));
|
319
318
|
|
320
|
-
if ((error =
|
319
|
+
if ((error = git_str_init(&idx_name, name_len)) < 0)
|
321
320
|
goto cleanup;
|
322
321
|
|
323
|
-
|
324
|
-
|
325
|
-
if (
|
322
|
+
git_str_put(&idx_name, p->pack_name, name_len - strlen(".pack"));
|
323
|
+
git_str_puts(&idx_name, ".idx");
|
324
|
+
if (git_str_oom(&idx_name)) {
|
326
325
|
error = -1;
|
327
326
|
goto cleanup;
|
328
327
|
}
|
@@ -331,7 +330,7 @@ static int pack_index_open_locked(struct git_pack_file *p)
|
|
331
330
|
error = pack_index_check_locked(idx_name.ptr, p);
|
332
331
|
|
333
332
|
cleanup:
|
334
|
-
|
333
|
+
git_str_dispose(&idx_name);
|
335
334
|
|
336
335
|
return error;
|
337
336
|
}
|
@@ -365,12 +364,12 @@ static unsigned char *pack_window_open(
|
|
365
364
|
* Don't allow a negative offset, as that means we've wrapped
|
366
365
|
* around.
|
367
366
|
*/
|
368
|
-
if (offset > (p->mwf.size -
|
367
|
+
if (offset > (p->mwf.size - p->oid_size))
|
369
368
|
goto cleanup;
|
370
369
|
if (offset < 0)
|
371
370
|
goto cleanup;
|
372
371
|
|
373
|
-
pack_data = git_mwindow_open(&p->mwf, w_cursor, offset,
|
372
|
+
pack_data = git_mwindow_open(&p->mwf, w_cursor, offset, p->oid_size, left);
|
374
373
|
|
375
374
|
cleanup:
|
376
375
|
git_mutex_unlock(&p->mwf.lock);
|
@@ -473,13 +472,13 @@ int git_packfile_unpack_header(
|
|
473
472
|
return error;
|
474
473
|
}
|
475
474
|
|
476
|
-
/* pack_window_open() assures us we have [base, base +
|
477
|
-
* as a range that we can look at at. (
|
478
|
-
* size that is assured.) With our object header
|
479
|
-
* the maximum deflated object size is 2^137, which is
|
480
|
-
* insane, so we know won't exceed what we have been given.
|
475
|
+
/* pack_window_open() assures us we have [base, base + oid_size)
|
476
|
+
* available as a range that we can look at at. (It's actually
|
477
|
+
* the hash size that is assured.) With our object header
|
478
|
+
* encoding the maximum deflated object size is 2^137, which is
|
479
|
+
* just insane, so we know won't exceed what we have been given.
|
481
480
|
*/
|
482
|
-
base = git_mwindow_open(&p->mwf, w_curs, *curpos,
|
481
|
+
base = git_mwindow_open(&p->mwf, w_curs, *curpos, p->oid_size, &left);
|
483
482
|
git_mutex_unlock(&p->lock);
|
484
483
|
git_mutex_unlock(&p->mwf.lock);
|
485
484
|
if (base == NULL)
|
@@ -977,11 +976,12 @@ int get_delta_base(
|
|
977
976
|
/* Assumption: the only reason this would fail is because the file is too small */
|
978
977
|
if (base_info == NULL)
|
979
978
|
return GIT_EBUFS;
|
980
|
-
/* pack_window_open() assured us we have
|
981
|
-
* as a range that we can look
|
982
|
-
* end of the mapped window. Its
|
983
|
-
* that is assured. An OFS_DELTA longer
|
984
|
-
* is stupid, as then a REF_DELTA would be
|
979
|
+
/* pack_window_open() assured us we have
|
980
|
+
* [base_info, base_info + oid_size) as a range that we can look
|
981
|
+
* at without walking off the end of the mapped window. Its
|
982
|
+
* actually the hash size that is assured. An OFS_DELTA longer
|
983
|
+
* than the hash size is stupid, as then a REF_DELTA would be
|
984
|
+
* smaller to store.
|
985
985
|
*/
|
986
986
|
if (type == GIT_OBJECT_OFS_DELTA) {
|
987
987
|
unsigned used = 0;
|
@@ -1001,17 +1001,18 @@ int get_delta_base(
|
|
1001
1001
|
base_offset = delta_obj_offset - unsigned_base_offset;
|
1002
1002
|
*curpos += used;
|
1003
1003
|
} else if (type == GIT_OBJECT_REF_DELTA) {
|
1004
|
+
git_oid base_oid;
|
1005
|
+
git_oid__fromraw(&base_oid, base_info, p->oid_type);
|
1006
|
+
|
1004
1007
|
/* If we have the cooperative cache, search in it first */
|
1005
1008
|
if (p->has_cache) {
|
1006
1009
|
struct git_pack_entry *entry;
|
1007
|
-
git_oid oid;
|
1008
1010
|
|
1009
|
-
|
1010
|
-
if ((entry = git_oidmap_get(p->idx_cache, &oid)) != NULL) {
|
1011
|
+
if (git_pack_oidmap_get(&entry, &p->idx_cache, &base_oid) == 0) {
|
1011
1012
|
if (entry->offset == 0)
|
1012
1013
|
return packfile_error("delta offset is zero");
|
1013
1014
|
|
1014
|
-
*curpos +=
|
1015
|
+
*curpos += p->oid_size;
|
1015
1016
|
*delta_base_out = entry->offset;
|
1016
1017
|
return 0;
|
1017
1018
|
} else {
|
@@ -1024,9 +1025,9 @@ int get_delta_base(
|
|
1024
1025
|
}
|
1025
1026
|
|
1026
1027
|
/* The base entry _must_ be in the same pack */
|
1027
|
-
if (pack_entry_find_offset(&base_offset, &unused, p,
|
1028
|
+
if (pack_entry_find_offset(&base_offset, &unused, p, &base_oid, p->oid_hexsize) < 0)
|
1028
1029
|
return packfile_error("base entry delta is not in the same pack");
|
1029
|
-
*curpos +=
|
1030
|
+
*curpos += p->oid_size;
|
1030
1031
|
} else
|
1031
1032
|
return packfile_error("unknown object type");
|
1032
1033
|
|
@@ -1069,7 +1070,7 @@ void git_packfile_free(struct git_pack_file *p, bool unlink_packfile)
|
|
1069
1070
|
|
1070
1071
|
pack_index_free(p);
|
1071
1072
|
|
1072
|
-
git__free(p->
|
1073
|
+
git__free(p->bad_object_ids);
|
1073
1074
|
|
1074
1075
|
git_mutex_free(&p->bases.lock);
|
1075
1076
|
git_mutex_free(&p->mwf.lock);
|
@@ -1082,8 +1083,8 @@ static int packfile_open_locked(struct git_pack_file *p)
|
|
1082
1083
|
{
|
1083
1084
|
struct stat st;
|
1084
1085
|
struct git_pack_header hdr;
|
1085
|
-
|
1086
|
-
unsigned char *
|
1086
|
+
unsigned char checksum[GIT_OID_MAX_SIZE];
|
1087
|
+
unsigned char *idx_checksum;
|
1087
1088
|
|
1088
1089
|
if (pack_index_open_locked(p) < 0)
|
1089
1090
|
return git_odb__error_notfound("failed to open packfile", NULL, 0);
|
@@ -1130,12 +1131,13 @@ static int packfile_open_locked(struct git_pack_file *p)
|
|
1130
1131
|
|
1131
1132
|
/* Verify the pack matches its index. */
|
1132
1133
|
if (p->num_objects != ntohl(hdr.hdr_entries) ||
|
1133
|
-
|
1134
|
+
p_pread(p->mwf.fd, checksum, p->oid_size, p->mwf.size - p->oid_size) < 0)
|
1134
1135
|
goto cleanup;
|
1135
1136
|
|
1136
|
-
|
1137
|
+
idx_checksum = ((unsigned char *)p->index_map.data) +
|
1138
|
+
p->index_map.len - (p->oid_size * 2);
|
1137
1139
|
|
1138
|
-
if (
|
1140
|
+
if (git_oid_raw_cmp(checksum, idx_checksum, p->oid_size) != 0)
|
1139
1141
|
goto cleanup;
|
1140
1142
|
|
1141
1143
|
if (git_mwindow_file_register(&p->mwf) < 0)
|
@@ -1156,21 +1158,24 @@ cleanup:
|
|
1156
1158
|
int git_packfile__name(char **out, const char *path)
|
1157
1159
|
{
|
1158
1160
|
size_t path_len;
|
1159
|
-
|
1161
|
+
git_str buf = GIT_STR_INIT;
|
1160
1162
|
|
1161
1163
|
path_len = strlen(path);
|
1162
1164
|
|
1163
1165
|
if (path_len < strlen(".idx"))
|
1164
1166
|
return git_odb__error_notfound("invalid packfile path", NULL, 0);
|
1165
1167
|
|
1166
|
-
if (
|
1168
|
+
if (git_str_printf(&buf, "%.*s.pack", (int)(path_len - strlen(".idx")), path) < 0)
|
1167
1169
|
return -1;
|
1168
1170
|
|
1169
|
-
*out =
|
1171
|
+
*out = git_str_detach(&buf);
|
1170
1172
|
return 0;
|
1171
1173
|
}
|
1172
1174
|
|
1173
|
-
int git_packfile_alloc(
|
1175
|
+
int git_packfile_alloc(
|
1176
|
+
struct git_pack_file **pack_out,
|
1177
|
+
const char *path,
|
1178
|
+
git_oid_t oid_type)
|
1174
1179
|
{
|
1175
1180
|
struct stat st;
|
1176
1181
|
struct git_pack_file *p;
|
@@ -1198,7 +1203,7 @@ int git_packfile_alloc(struct git_pack_file **pack_out, const char *path)
|
|
1198
1203
|
|
1199
1204
|
if (!git_disable_pack_keep_file_checks) {
|
1200
1205
|
memcpy(p->pack_name + root_len, ".keep", sizeof(".keep"));
|
1201
|
-
if (
|
1206
|
+
if (git_fs_path_exists(p->pack_name) == true)
|
1202
1207
|
p->pack_keep = 1;
|
1203
1208
|
}
|
1204
1209
|
|
@@ -1218,6 +1223,9 @@ int git_packfile_alloc(struct git_pack_file **pack_out, const char *path)
|
|
1218
1223
|
p->pack_local = 1;
|
1219
1224
|
p->mtime = (git_time_t)st.st_mtime;
|
1220
1225
|
p->index_version = -1;
|
1226
|
+
p->oid_type = oid_type ? oid_type : GIT_OID_DEFAULT;
|
1227
|
+
p->oid_size = (unsigned int)git_oid_size(p->oid_type);
|
1228
|
+
p->oid_hexsize = (unsigned int)git_oid_hexsize(p->oid_type);
|
1221
1229
|
|
1222
1230
|
if (git_mutex_init(&p->lock) < 0) {
|
1223
1231
|
git_error_set(GIT_ERROR_OS, "failed to initialize packfile mutex");
|
@@ -1259,20 +1267,20 @@ static off64_t nth_packed_object_offset_locked(struct git_pack_file *p, uint32_t
|
|
1259
1267
|
end = index + p->index_map.len;
|
1260
1268
|
index += 4 * 256;
|
1261
1269
|
if (p->index_version == 1)
|
1262
|
-
return ntohl(*((uint32_t *)(index +
|
1270
|
+
return ntohl(*((uint32_t *)(index + (p->oid_size + 4) * (size_t) n)));
|
1263
1271
|
|
1264
|
-
index += 8 + p->num_objects * (
|
1272
|
+
index += 8 + (size_t) p->num_objects * (p->oid_size + 4);
|
1265
1273
|
off32 = ntohl(*((uint32_t *)(index + 4 * n)));
|
1266
1274
|
if (!(off32 & 0x80000000))
|
1267
1275
|
return off32;
|
1268
|
-
index += p->num_objects * 4 + (off32 & 0x7fffffff) * 8;
|
1276
|
+
index += (size_t) p->num_objects * 4 + (off32 & 0x7fffffff) * 8;
|
1269
1277
|
|
1270
1278
|
/* Make sure we're not being sent out of bounds */
|
1271
1279
|
if (index >= end - 8)
|
1272
1280
|
return -1;
|
1273
1281
|
|
1274
1282
|
return (((uint64_t)ntohl(*((uint32_t *)(index + 0)))) << 32) |
|
1275
|
-
|
1283
|
+
ntohl(*((uint32_t *)(index + 4)));
|
1276
1284
|
}
|
1277
1285
|
|
1278
1286
|
static int git__memcmp4(const void *a, const void *b) {
|
@@ -1311,7 +1319,7 @@ int git_pack_foreach_entry(
|
|
1311
1319
|
|
1312
1320
|
index += 4 * 256;
|
1313
1321
|
|
1314
|
-
if (p->
|
1322
|
+
if (p->ids == NULL) {
|
1315
1323
|
git_vector offsets, oids;
|
1316
1324
|
|
1317
1325
|
if ((error = git_vector_init(&oids, p->num_objects, NULL))) {
|
@@ -1325,25 +1333,32 @@ int git_pack_foreach_entry(
|
|
1325
1333
|
}
|
1326
1334
|
|
1327
1335
|
if (p->index_version > 1) {
|
1328
|
-
const unsigned char *off = index +
|
1336
|
+
const unsigned char *off = index +
|
1337
|
+
(p->oid_size + 4) * p->num_objects;
|
1338
|
+
|
1329
1339
|
for (i = 0; i < p->num_objects; i++)
|
1330
1340
|
git_vector_insert(&offsets, (void*)&off[4 * i]);
|
1341
|
+
|
1331
1342
|
git_vector_sort(&offsets);
|
1332
1343
|
git_vector_foreach(&offsets, i, current)
|
1333
1344
|
git_vector_insert(&oids, (void*)&index[5 * (current - off)]);
|
1334
1345
|
} else {
|
1335
1346
|
for (i = 0; i < p->num_objects; i++)
|
1336
|
-
git_vector_insert(&offsets, (void*)&index[
|
1347
|
+
git_vector_insert(&offsets, (void*)&index[(p->oid_size + 4) * i]);
|
1337
1348
|
git_vector_sort(&offsets);
|
1338
1349
|
git_vector_foreach(&offsets, i, current)
|
1339
1350
|
git_vector_insert(&oids, (void*)¤t[4]);
|
1340
1351
|
}
|
1341
1352
|
|
1342
|
-
|
1343
|
-
p->
|
1353
|
+
git_vector_dispose(&offsets);
|
1354
|
+
p->ids = (unsigned char **)git_vector_detach(NULL, NULL, &oids);
|
1344
1355
|
}
|
1345
1356
|
|
1346
|
-
/*
|
1357
|
+
/*
|
1358
|
+
* We need to copy the OIDs to another array before we
|
1359
|
+
* relinquish the lock to avoid races. We can also take
|
1360
|
+
* this opportunity to put them into normal form.
|
1361
|
+
*/
|
1347
1362
|
git_array_init_to_size(oids, p->num_objects);
|
1348
1363
|
if (!oids.ptr) {
|
1349
1364
|
git_mutex_unlock(&p->lock);
|
@@ -1357,7 +1372,7 @@ int git_pack_foreach_entry(
|
|
1357
1372
|
git_array_clear(oids);
|
1358
1373
|
GIT_ERROR_CHECK_ALLOC(oid);
|
1359
1374
|
}
|
1360
|
-
|
1375
|
+
git_oid__fromraw(oid, p->ids[i], p->oid_type);
|
1361
1376
|
}
|
1362
1377
|
|
1363
1378
|
git_mutex_unlock(&p->lock);
|
@@ -1380,7 +1395,7 @@ int git_pack_foreach_entry_offset(
|
|
1380
1395
|
{
|
1381
1396
|
const unsigned char *index;
|
1382
1397
|
off64_t current_offset;
|
1383
|
-
|
1398
|
+
git_oid current_oid;
|
1384
1399
|
uint32_t i;
|
1385
1400
|
int error = 0;
|
1386
1401
|
|
@@ -1407,10 +1422,13 @@ int git_pack_foreach_entry_offset(
|
|
1407
1422
|
|
1408
1423
|
/* all offsets should have been validated by pack_index_check_locked */
|
1409
1424
|
if (p->index_version > 1) {
|
1410
|
-
const unsigned char *offsets = index +
|
1425
|
+
const unsigned char *offsets = index +
|
1426
|
+
(p->oid_size + 4) * p->num_objects;
|
1411
1427
|
const unsigned char *large_offset_ptr;
|
1412
|
-
const unsigned char *large_offsets = index +
|
1413
|
-
|
1428
|
+
const unsigned char *large_offsets = index +
|
1429
|
+
(p->oid_size + 8) * p->num_objects;
|
1430
|
+
const unsigned char *large_offsets_end = ((const unsigned char *)p->index_map.data) + p->index_map.len - p->oid_size;
|
1431
|
+
|
1414
1432
|
for (i = 0; i < p->num_objects; i++) {
|
1415
1433
|
current_offset = ntohl(*(const uint32_t *)(offsets + 4 * i));
|
1416
1434
|
if (current_offset & 0x80000000) {
|
@@ -1422,17 +1440,18 @@ int git_pack_foreach_entry_offset(
|
|
1422
1440
|
current_offset = (((off64_t)ntohl(*((uint32_t *)(large_offset_ptr + 0)))) << 32) |
|
1423
1441
|
ntohl(*((uint32_t *)(large_offset_ptr + 4)));
|
1424
1442
|
}
|
1425
|
-
|
1426
|
-
|
1443
|
+
|
1444
|
+
git_oid__fromraw(¤t_oid, (index + p->oid_size * i), p->oid_type);
|
1445
|
+
if ((error = cb(¤t_oid, current_offset, data)) != 0) {
|
1427
1446
|
error = git_error_set_after_callback(error);
|
1428
1447
|
goto cleanup;
|
1429
1448
|
}
|
1430
1449
|
}
|
1431
1450
|
} else {
|
1432
1451
|
for (i = 0; i < p->num_objects; i++) {
|
1433
|
-
current_offset = ntohl(*(const uint32_t *)(index +
|
1434
|
-
current_oid
|
1435
|
-
if ((error = cb(current_oid, current_offset, data)) != 0) {
|
1452
|
+
current_offset = ntohl(*(const uint32_t *)(index + (p->oid_size + 4) * i));
|
1453
|
+
git_oid__fromraw(¤t_oid, (index + (p->oid_size + 4) * i + 4), p->oid_type);
|
1454
|
+
if ((error = cb(¤t_oid, current_offset, data)) != 0) {
|
1436
1455
|
error = git_error_set_after_callback(error);
|
1437
1456
|
goto cleanup;
|
1438
1457
|
}
|
@@ -1444,14 +1463,20 @@ cleanup:
|
|
1444
1463
|
return error;
|
1445
1464
|
}
|
1446
1465
|
|
1447
|
-
int
|
1448
|
-
|
1466
|
+
int git_pack__lookup_id(
|
1467
|
+
const void *oid_lookup_table,
|
1468
|
+
size_t stride,
|
1469
|
+
unsigned lo,
|
1470
|
+
unsigned hi,
|
1471
|
+
const unsigned char *oid_prefix,
|
1472
|
+
const git_oid_t oid_type)
|
1449
1473
|
{
|
1450
1474
|
const unsigned char *base = oid_lookup_table;
|
1475
|
+
size_t oid_size = git_oid_size(oid_type);
|
1451
1476
|
|
1452
1477
|
while (lo < hi) {
|
1453
1478
|
unsigned mi = (lo + hi) / 2;
|
1454
|
-
int cmp =
|
1479
|
+
int cmp = git_oid_raw_cmp(base + mi * stride, oid_prefix, oid_size);
|
1455
1480
|
|
1456
1481
|
if (!cmp)
|
1457
1482
|
return mi;
|
@@ -1473,6 +1498,7 @@ static int pack_entry_find_offset(
|
|
1473
1498
|
size_t len)
|
1474
1499
|
{
|
1475
1500
|
const uint32_t *level1_ofs;
|
1501
|
+
size_t ofs_delta = 0;
|
1476
1502
|
const unsigned char *index;
|
1477
1503
|
unsigned hi, lo, stride;
|
1478
1504
|
int pos, found = 0;
|
@@ -1498,17 +1524,23 @@ static int pack_entry_find_offset(
|
|
1498
1524
|
|
1499
1525
|
if (p->index_version > 1) {
|
1500
1526
|
level1_ofs += 2;
|
1527
|
+
ofs_delta = 2;
|
1501
1528
|
index += 8;
|
1502
1529
|
}
|
1503
1530
|
|
1531
|
+
if ((size_t)short_oid->id[0] + ofs_delta >= p->index_map.len) {
|
1532
|
+
git_error_set(GIT_ERROR_INTERNAL, "internal error: p->short_oid->[0] out of bounds");
|
1533
|
+
goto cleanup;
|
1534
|
+
}
|
1535
|
+
|
1504
1536
|
index += 4 * 256;
|
1505
1537
|
hi = ntohl(level1_ofs[(int)short_oid->id[0]]);
|
1506
1538
|
lo = ((short_oid->id[0] == 0x0) ? 0 : ntohl(level1_ofs[(int)short_oid->id[0] - 1]));
|
1507
1539
|
|
1508
1540
|
if (p->index_version > 1) {
|
1509
|
-
stride =
|
1541
|
+
stride = p->oid_size;
|
1510
1542
|
} else {
|
1511
|
-
stride =
|
1543
|
+
stride = p->oid_size + 4;
|
1512
1544
|
index += 4;
|
1513
1545
|
}
|
1514
1546
|
|
@@ -1517,7 +1549,8 @@ static int pack_entry_find_offset(
|
|
1517
1549
|
short_oid->id[0], short_oid->id[1], short_oid->id[2], lo, hi, p->num_objects);
|
1518
1550
|
#endif
|
1519
1551
|
|
1520
|
-
pos =
|
1552
|
+
pos = git_pack__lookup_id(index, stride, lo, hi,
|
1553
|
+
short_oid->id, p->oid_type);
|
1521
1554
|
|
1522
1555
|
if (pos >= 0) {
|
1523
1556
|
/* An object matching exactly the oid was found */
|
@@ -1530,16 +1563,18 @@ static int pack_entry_find_offset(
|
|
1530
1563
|
if (pos < (int)p->num_objects) {
|
1531
1564
|
current = index + pos * stride;
|
1532
1565
|
|
1533
|
-
if (!
|
1566
|
+
if (!git_oid_raw_ncmp(short_oid->id, current, len))
|
1534
1567
|
found = 1;
|
1535
1568
|
}
|
1536
1569
|
}
|
1537
1570
|
|
1538
|
-
if (found &&
|
1571
|
+
if (found &&
|
1572
|
+
len != p->oid_hexsize &&
|
1573
|
+
pos + 1 < (int)p->num_objects) {
|
1539
1574
|
/* Check for ambiguousity */
|
1540
1575
|
const unsigned char *next = current + stride;
|
1541
1576
|
|
1542
|
-
if (!
|
1577
|
+
if (!git_oid_raw_ncmp(short_oid->id, next, len)) {
|
1543
1578
|
found = 2;
|
1544
1579
|
}
|
1545
1580
|
}
|
@@ -1560,13 +1595,13 @@ static int pack_entry_find_offset(
|
|
1560
1595
|
}
|
1561
1596
|
|
1562
1597
|
*offset_out = offset;
|
1563
|
-
|
1598
|
+
git_oid__fromraw(found_oid, current, p->oid_type);
|
1564
1599
|
|
1565
1600
|
#ifdef INDEX_DEBUG_LOOKUP
|
1566
1601
|
{
|
1567
|
-
|
1602
|
+
char hex_sha1[p->oid_hexsize + 1];
|
1568
1603
|
git_oid_fmt(hex_sha1, found_oid);
|
1569
|
-
hex_sha1[
|
1604
|
+
hex_sha1[p->oid_hexsize] = '\0';
|
1570
1605
|
printf("found lo=%d %s\n", lo, hex_sha1);
|
1571
1606
|
}
|
1572
1607
|
#endif
|
@@ -1588,10 +1623,10 @@ int git_pack_entry_find(
|
|
1588
1623
|
|
1589
1624
|
GIT_ASSERT_ARG(p);
|
1590
1625
|
|
1591
|
-
if (len ==
|
1626
|
+
if (len == p->oid_hexsize && p->num_bad_objects) {
|
1592
1627
|
unsigned i;
|
1593
1628
|
for (i = 0; i < p->num_bad_objects; i++)
|
1594
|
-
if (git_oid__cmp(short_oid, &p->
|
1629
|
+
if (git_oid__cmp(short_oid, &p->bad_object_ids[i]) == 0)
|
1595
1630
|
return packfile_error("bad object found in packfile");
|
1596
1631
|
}
|
1597
1632
|
|
@@ -1624,6 +1659,6 @@ int git_pack_entry_find(
|
|
1624
1659
|
e->offset = offset;
|
1625
1660
|
e->p = p;
|
1626
1661
|
|
1627
|
-
git_oid_cpy(&e->
|
1662
|
+
git_oid_cpy(&e->id, &found_oid);
|
1628
1663
|
return 0;
|
1629
1664
|
}
|