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,11 +8,11 @@
|
|
8
8
|
#include "commit_graph.h"
|
9
9
|
|
10
10
|
#include "array.h"
|
11
|
+
#include "buf.h"
|
11
12
|
#include "filebuf.h"
|
12
13
|
#include "futils.h"
|
13
14
|
#include "hash.h"
|
14
15
|
#include "oidarray.h"
|
15
|
-
#include "oidmap.h"
|
16
16
|
#include "pack.h"
|
17
17
|
#include "repository.h"
|
18
18
|
#include "revwalk.h"
|
@@ -24,6 +24,7 @@
|
|
24
24
|
#define COMMIT_GRAPH_SIGNATURE 0x43475048 /* "CGPH" */
|
25
25
|
#define COMMIT_GRAPH_VERSION 1
|
26
26
|
#define COMMIT_GRAPH_OBJECT_ID_VERSION 1
|
27
|
+
|
27
28
|
struct git_commit_graph_header {
|
28
29
|
uint32_t signature;
|
29
30
|
uint8_t version;
|
@@ -137,19 +138,22 @@ static int commit_graph_parse_oid_lookup(
|
|
137
138
|
struct git_commit_graph_chunk *chunk_oid_lookup)
|
138
139
|
{
|
139
140
|
uint32_t i;
|
140
|
-
|
141
|
+
unsigned char *oid, *prev_oid, zero_oid[GIT_OID_MAX_SIZE] = {0};
|
142
|
+
size_t oid_size;
|
143
|
+
|
144
|
+
oid_size = git_oid_size(file->oid_type);
|
141
145
|
|
142
146
|
if (chunk_oid_lookup->offset == 0)
|
143
147
|
return commit_graph_error("missing OID Lookup chunk");
|
144
148
|
if (chunk_oid_lookup->length == 0)
|
145
149
|
return commit_graph_error("empty OID Lookup chunk");
|
146
|
-
if (chunk_oid_lookup->length != file->num_commits *
|
150
|
+
if (chunk_oid_lookup->length != file->num_commits * oid_size)
|
147
151
|
return commit_graph_error("OID Lookup chunk has wrong length");
|
148
152
|
|
149
|
-
file->oid_lookup = oid = (
|
150
|
-
prev_oid =
|
151
|
-
for (i = 0; i < file->num_commits; ++i,
|
152
|
-
if (
|
153
|
+
file->oid_lookup = oid = (unsigned char *)(data + chunk_oid_lookup->offset);
|
154
|
+
prev_oid = zero_oid;
|
155
|
+
for (i = 0; i < file->num_commits; ++i, oid += oid_size) {
|
156
|
+
if (git_oid_raw_cmp(prev_oid, oid, oid_size) >= 0)
|
153
157
|
return commit_graph_error("OID Lookup index is non-monotonic");
|
154
158
|
prev_oid = oid;
|
155
159
|
}
|
@@ -162,11 +166,13 @@ static int commit_graph_parse_commit_data(
|
|
162
166
|
const unsigned char *data,
|
163
167
|
struct git_commit_graph_chunk *chunk_commit_data)
|
164
168
|
{
|
169
|
+
size_t oid_size = git_oid_size(file->oid_type);
|
170
|
+
|
165
171
|
if (chunk_commit_data->offset == 0)
|
166
172
|
return commit_graph_error("missing Commit Data chunk");
|
167
173
|
if (chunk_commit_data->length == 0)
|
168
174
|
return commit_graph_error("empty Commit Data chunk");
|
169
|
-
if (chunk_commit_data->length != file->num_commits * (
|
175
|
+
if (chunk_commit_data->length != file->num_commits * (oid_size + 16))
|
170
176
|
return commit_graph_error("Commit Data chunk has wrong length");
|
171
177
|
|
172
178
|
file->commit_data = data + chunk_commit_data->offset;
|
@@ -199,8 +205,8 @@ int git_commit_graph_file_parse(
|
|
199
205
|
const unsigned char *chunk_hdr;
|
200
206
|
struct git_commit_graph_chunk *last_chunk;
|
201
207
|
uint32_t i;
|
202
|
-
|
203
|
-
|
208
|
+
uint64_t last_chunk_offset, chunk_offset, trailer_offset;
|
209
|
+
size_t checksum_size;
|
204
210
|
int error;
|
205
211
|
struct git_commit_graph_chunk chunk_oid_fanout = {0}, chunk_oid_lookup = {0},
|
206
212
|
chunk_commit_data = {0}, chunk_extra_edge_list = {0},
|
@@ -208,7 +214,9 @@ int git_commit_graph_file_parse(
|
|
208
214
|
|
209
215
|
GIT_ASSERT_ARG(file);
|
210
216
|
|
211
|
-
|
217
|
+
checksum_size = git_oid_size(file->oid_type);
|
218
|
+
|
219
|
+
if (size < sizeof(struct git_commit_graph_header) + checksum_size)
|
212
220
|
return commit_graph_error("commit-graph is too short");
|
213
221
|
|
214
222
|
hdr = ((struct git_commit_graph_header *)data);
|
@@ -225,21 +233,17 @@ int git_commit_graph_file_parse(
|
|
225
233
|
* headers, and a special zero chunk.
|
226
234
|
*/
|
227
235
|
last_chunk_offset = sizeof(struct git_commit_graph_header) + (1 + hdr->chunks) * 12;
|
228
|
-
trailer_offset = size -
|
236
|
+
trailer_offset = size - checksum_size;
|
237
|
+
|
229
238
|
if (trailer_offset < last_chunk_offset)
|
230
239
|
return commit_graph_error("wrong commit-graph size");
|
231
|
-
|
232
|
-
|
233
|
-
if (git_hash_buf(&cgraph_checksum, data, (size_t)trailer_offset) < 0)
|
234
|
-
return commit_graph_error("could not calculate signature");
|
235
|
-
if (!git_oid_equal(&cgraph_checksum, &file->checksum))
|
236
|
-
return commit_graph_error("index signature mismatch");
|
240
|
+
memcpy(file->checksum, (data + trailer_offset), checksum_size);
|
237
241
|
|
238
242
|
chunk_hdr = data + sizeof(struct git_commit_graph_header);
|
239
243
|
last_chunk = NULL;
|
240
244
|
for (i = 0; i < hdr->chunks; ++i, chunk_hdr += 12) {
|
241
|
-
chunk_offset = ((
|
242
|
-
| ((
|
245
|
+
chunk_offset = ((uint64_t)ntohl(*((uint32_t *)(chunk_hdr + 4)))) << 32
|
246
|
+
| ((uint64_t)ntohl(*((uint32_t *)(chunk_hdr + 8))));
|
243
247
|
if (chunk_offset < last_chunk_offset)
|
244
248
|
return commit_graph_error("chunks are non-monotonic");
|
245
249
|
if (chunk_offset >= trailer_offset)
|
@@ -297,25 +301,35 @@ int git_commit_graph_file_parse(
|
|
297
301
|
return 0;
|
298
302
|
}
|
299
303
|
|
300
|
-
int git_commit_graph_new(
|
304
|
+
int git_commit_graph_new(
|
305
|
+
git_commit_graph **cgraph_out,
|
306
|
+
const char *objects_dir,
|
307
|
+
bool open_file,
|
308
|
+
git_oid_t oid_type)
|
301
309
|
{
|
302
310
|
git_commit_graph *cgraph = NULL;
|
303
311
|
int error = 0;
|
304
312
|
|
305
313
|
GIT_ASSERT_ARG(cgraph_out);
|
306
314
|
GIT_ASSERT_ARG(objects_dir);
|
315
|
+
GIT_ASSERT_ARG(oid_type);
|
307
316
|
|
308
317
|
cgraph = git__calloc(1, sizeof(git_commit_graph));
|
309
318
|
GIT_ERROR_CHECK_ALLOC(cgraph);
|
310
319
|
|
311
|
-
|
320
|
+
cgraph->oid_type = oid_type;
|
321
|
+
|
322
|
+
error = git_str_joinpath(&cgraph->filename, objects_dir, "info/commit-graph");
|
312
323
|
if (error < 0)
|
313
324
|
goto error;
|
314
325
|
|
315
326
|
if (open_file) {
|
316
|
-
error = git_commit_graph_file_open(&cgraph->file,
|
327
|
+
error = git_commit_graph_file_open(&cgraph->file,
|
328
|
+
git_str_cstr(&cgraph->filename), oid_type);
|
329
|
+
|
317
330
|
if (error < 0)
|
318
331
|
goto error;
|
332
|
+
|
319
333
|
cgraph->checked = 1;
|
320
334
|
}
|
321
335
|
|
@@ -327,12 +341,61 @@ error:
|
|
327
341
|
return error;
|
328
342
|
}
|
329
343
|
|
330
|
-
int
|
344
|
+
int git_commit_graph_validate(git_commit_graph *cgraph) {
|
345
|
+
unsigned char checksum[GIT_HASH_MAX_SIZE];
|
346
|
+
git_hash_algorithm_t checksum_type;
|
347
|
+
size_t checksum_size, trailer_offset;
|
348
|
+
|
349
|
+
checksum_type = git_oid_algorithm(cgraph->oid_type);
|
350
|
+
checksum_size = git_hash_size(checksum_type);
|
351
|
+
trailer_offset = cgraph->file->graph_map.len - checksum_size;
|
352
|
+
|
353
|
+
if (cgraph->file->graph_map.len < checksum_size)
|
354
|
+
return commit_graph_error("map length too small");
|
355
|
+
|
356
|
+
if (git_hash_buf(checksum, cgraph->file->graph_map.data, trailer_offset, checksum_type) < 0)
|
357
|
+
return commit_graph_error("could not calculate signature");
|
358
|
+
if (memcmp(checksum, cgraph->file->checksum, checksum_size) != 0)
|
359
|
+
return commit_graph_error("index signature mismatch");
|
360
|
+
|
361
|
+
return 0;
|
362
|
+
}
|
363
|
+
|
364
|
+
int git_commit_graph_open(
|
365
|
+
git_commit_graph **cgraph_out,
|
366
|
+
const char *objects_dir
|
367
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
368
|
+
, const git_commit_graph_open_options *opts
|
369
|
+
#endif
|
370
|
+
)
|
331
371
|
{
|
332
|
-
|
372
|
+
git_oid_t oid_type;
|
373
|
+
int error;
|
374
|
+
|
375
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
376
|
+
GIT_ERROR_CHECK_VERSION(opts,
|
377
|
+
GIT_COMMIT_GRAPH_OPEN_OPTIONS_VERSION,
|
378
|
+
"git_commit_graph_open_options");
|
379
|
+
|
380
|
+
oid_type = opts && opts->oid_type ? opts->oid_type : GIT_OID_DEFAULT;
|
381
|
+
GIT_ASSERT_ARG(git_oid_type_is_valid(oid_type));
|
382
|
+
#else
|
383
|
+
oid_type = GIT_OID_SHA1;
|
384
|
+
#endif
|
385
|
+
|
386
|
+
error = git_commit_graph_new(cgraph_out, objects_dir, true,
|
387
|
+
oid_type);
|
388
|
+
|
389
|
+
if (!error)
|
390
|
+
return git_commit_graph_validate(*cgraph_out);
|
391
|
+
|
392
|
+
return error;
|
333
393
|
}
|
334
394
|
|
335
|
-
int git_commit_graph_file_open(
|
395
|
+
int git_commit_graph_file_open(
|
396
|
+
git_commit_graph_file **file_out,
|
397
|
+
const char *path,
|
398
|
+
git_oid_t oid_type)
|
336
399
|
{
|
337
400
|
git_commit_graph_file *file;
|
338
401
|
git_file fd = -1;
|
@@ -361,6 +424,8 @@ int git_commit_graph_file_open(git_commit_graph_file **file_out, const char *pat
|
|
361
424
|
file = git__calloc(1, sizeof(git_commit_graph_file));
|
362
425
|
GIT_ERROR_CHECK_ALLOC(file);
|
363
426
|
|
427
|
+
file->oid_type = oid_type;
|
428
|
+
|
364
429
|
error = git_futils_mmap_ro(&file->graph_map, fd, 0, cgraph_size);
|
365
430
|
p_close(fd);
|
366
431
|
if (error < 0) {
|
@@ -377,7 +442,9 @@ int git_commit_graph_file_open(git_commit_graph_file **file_out, const char *pat
|
|
377
442
|
return 0;
|
378
443
|
}
|
379
444
|
|
380
|
-
int git_commit_graph_get_file(
|
445
|
+
int git_commit_graph_get_file(
|
446
|
+
git_commit_graph_file **file_out,
|
447
|
+
git_commit_graph *cgraph)
|
381
448
|
{
|
382
449
|
if (!cgraph->checked) {
|
383
450
|
int error = 0;
|
@@ -387,7 +454,8 @@ int git_commit_graph_get_file(git_commit_graph_file **file_out, git_commit_graph
|
|
387
454
|
cgraph->checked = 1;
|
388
455
|
|
389
456
|
/* Best effort */
|
390
|
-
error = git_commit_graph_file_open(&result,
|
457
|
+
error = git_commit_graph_file_open(&result,
|
458
|
+
git_str_cstr(&cgraph->filename), cgraph->oid_type);
|
391
459
|
|
392
460
|
if (error < 0)
|
393
461
|
return error;
|
@@ -407,7 +475,7 @@ void git_commit_graph_refresh(git_commit_graph *cgraph)
|
|
407
475
|
return;
|
408
476
|
|
409
477
|
if (cgraph->file
|
410
|
-
&& git_commit_graph_file_needs_refresh(cgraph->file,
|
478
|
+
&& git_commit_graph_file_needs_refresh(cgraph->file, git_str_cstr(&cgraph->filename))) {
|
411
479
|
/* We just free the commit graph. The next time it is requested, it will be
|
412
480
|
* re-loaded. */
|
413
481
|
git_commit_graph_file_free(cgraph->file);
|
@@ -423,6 +491,7 @@ static int git_commit_graph_entry_get_byindex(
|
|
423
491
|
size_t pos)
|
424
492
|
{
|
425
493
|
const unsigned char *commit_data;
|
494
|
+
size_t oid_size = git_oid_size(file->oid_type);
|
426
495
|
|
427
496
|
GIT_ASSERT_ARG(e);
|
428
497
|
GIT_ASSERT_ARG(file);
|
@@ -432,15 +501,15 @@ static int git_commit_graph_entry_get_byindex(
|
|
432
501
|
return GIT_ENOTFOUND;
|
433
502
|
}
|
434
503
|
|
435
|
-
commit_data = file->commit_data + pos * (
|
436
|
-
|
437
|
-
e->parent_indices[0] = ntohl(*((uint32_t *)(commit_data +
|
504
|
+
commit_data = file->commit_data + pos * (oid_size + 4 * sizeof(uint32_t));
|
505
|
+
git_oid__fromraw(&e->tree_oid, commit_data, file->oid_type);
|
506
|
+
e->parent_indices[0] = ntohl(*((uint32_t *)(commit_data + oid_size)));
|
438
507
|
e->parent_indices[1] = ntohl(
|
439
|
-
*((uint32_t *)(commit_data +
|
508
|
+
*((uint32_t *)(commit_data + oid_size + sizeof(uint32_t))));
|
440
509
|
e->parent_count = (e->parent_indices[0] != GIT_COMMIT_GRAPH_MISSING_PARENT)
|
441
510
|
+ (e->parent_indices[1] != GIT_COMMIT_GRAPH_MISSING_PARENT);
|
442
|
-
e->generation = ntohl(*((uint32_t *)(commit_data +
|
443
|
-
e->commit_time = ntohl(*((uint32_t *)(commit_data +
|
511
|
+
e->generation = ntohl(*((uint32_t *)(commit_data + oid_size + 2 * sizeof(uint32_t))));
|
512
|
+
e->commit_time = ntohl(*((uint32_t *)(commit_data + oid_size + 3 * sizeof(uint32_t))));
|
444
513
|
|
445
514
|
e->commit_time |= (e->generation & UINT64_C(0x3)) << UINT64_C(32);
|
446
515
|
e->generation >>= 2u;
|
@@ -466,7 +535,8 @@ static int git_commit_graph_entry_get_byindex(
|
|
466
535
|
e->parent_count++;
|
467
536
|
}
|
468
537
|
}
|
469
|
-
|
538
|
+
|
539
|
+
git_oid__fromraw(&e->sha1, &file->oid_lookup[pos * oid_size], file->oid_type);
|
470
540
|
return 0;
|
471
541
|
}
|
472
542
|
|
@@ -475,7 +545,8 @@ bool git_commit_graph_file_needs_refresh(const git_commit_graph_file *file, cons
|
|
475
545
|
git_file fd = -1;
|
476
546
|
struct stat st;
|
477
547
|
ssize_t bytes_read;
|
478
|
-
|
548
|
+
unsigned char checksum[GIT_HASH_MAX_SIZE];
|
549
|
+
size_t checksum_size = git_oid_size(file->oid_type);
|
479
550
|
|
480
551
|
/* TODO: properly open the file without access time using O_NOATIME */
|
481
552
|
fd = git_futils_open_ro(path);
|
@@ -493,12 +564,12 @@ bool git_commit_graph_file_needs_refresh(const git_commit_graph_file *file, cons
|
|
493
564
|
return true;
|
494
565
|
}
|
495
566
|
|
496
|
-
bytes_read = p_pread(fd,
|
567
|
+
bytes_read = p_pread(fd, checksum, checksum_size, st.st_size - checksum_size);
|
497
568
|
p_close(fd);
|
498
|
-
if (bytes_read !=
|
569
|
+
if (bytes_read != (ssize_t)checksum_size)
|
499
570
|
return true;
|
500
571
|
|
501
|
-
return
|
572
|
+
return (memcmp(checksum, file->checksum, checksum_size) != 0);
|
502
573
|
}
|
503
574
|
|
504
575
|
int git_commit_graph_entry_find(
|
@@ -509,40 +580,44 @@ int git_commit_graph_entry_find(
|
|
509
580
|
{
|
510
581
|
int pos, found = 0;
|
511
582
|
uint32_t hi, lo;
|
512
|
-
const
|
583
|
+
const unsigned char *current = NULL;
|
584
|
+
size_t oid_size, oid_hexsize;
|
513
585
|
|
514
586
|
GIT_ASSERT_ARG(e);
|
515
587
|
GIT_ASSERT_ARG(file);
|
516
588
|
GIT_ASSERT_ARG(short_oid);
|
517
589
|
|
590
|
+
oid_size = git_oid_size(file->oid_type);
|
591
|
+
oid_hexsize = git_oid_hexsize(file->oid_type);
|
592
|
+
|
518
593
|
hi = ntohl(file->oid_fanout[(int)short_oid->id[0]]);
|
519
594
|
lo = ((short_oid->id[0] == 0x0) ? 0 : ntohl(file->oid_fanout[(int)short_oid->id[0] - 1]));
|
520
595
|
|
521
|
-
pos =
|
596
|
+
pos = git_pack__lookup_id(file->oid_lookup, oid_size, lo, hi,
|
597
|
+
short_oid->id, file->oid_type);
|
522
598
|
|
523
599
|
if (pos >= 0) {
|
524
600
|
/* An object matching exactly the oid was found */
|
525
601
|
found = 1;
|
526
|
-
current = file->oid_lookup + pos;
|
602
|
+
current = file->oid_lookup + (pos * oid_size);
|
527
603
|
} else {
|
528
604
|
/* No object was found */
|
529
605
|
/* pos refers to the object with the "closest" oid to short_oid */
|
530
606
|
pos = -1 - pos;
|
531
607
|
if (pos < (int)file->num_commits) {
|
532
|
-
current = file->oid_lookup + pos;
|
608
|
+
current = file->oid_lookup + (pos * oid_size);
|
533
609
|
|
534
|
-
if (!
|
610
|
+
if (!git_oid_raw_ncmp(short_oid->id, current, len))
|
535
611
|
found = 1;
|
536
612
|
}
|
537
613
|
}
|
538
614
|
|
539
|
-
if (found && len !=
|
615
|
+
if (found && len != oid_hexsize && pos + 1 < (int)file->num_commits) {
|
540
616
|
/* Check for ambiguousity */
|
541
|
-
const
|
617
|
+
const unsigned char *next = current + oid_size;
|
542
618
|
|
543
|
-
if (!
|
619
|
+
if (!git_oid_raw_ncmp(short_oid->id, next, len))
|
544
620
|
found = 2;
|
545
|
-
}
|
546
621
|
}
|
547
622
|
|
548
623
|
if (!found)
|
@@ -597,7 +672,7 @@ void git_commit_graph_free(git_commit_graph *cgraph)
|
|
597
672
|
if (!cgraph)
|
598
673
|
return;
|
599
674
|
|
600
|
-
|
675
|
+
git_str_dispose(&cgraph->filename);
|
601
676
|
git_commit_graph_file_free(cgraph->file);
|
602
677
|
git__free(cgraph);
|
603
678
|
}
|
@@ -618,18 +693,53 @@ static int packed_commit__cmp(const void *a_, const void *b_)
|
|
618
693
|
return git_oid_cmp(&a->sha1, &b->sha1);
|
619
694
|
}
|
620
695
|
|
621
|
-
int
|
696
|
+
int git_commit_graph_writer_options_init(
|
697
|
+
git_commit_graph_writer_options *opts,
|
698
|
+
unsigned int version)
|
622
699
|
{
|
623
|
-
|
700
|
+
GIT_INIT_STRUCTURE_FROM_TEMPLATE(
|
701
|
+
opts,
|
702
|
+
version,
|
703
|
+
git_commit_graph_writer_options,
|
704
|
+
GIT_COMMIT_GRAPH_WRITER_OPTIONS_INIT);
|
705
|
+
return 0;
|
706
|
+
}
|
707
|
+
|
708
|
+
int git_commit_graph_writer_new(
|
709
|
+
git_commit_graph_writer **out,
|
710
|
+
const char *objects_info_dir,
|
711
|
+
const git_commit_graph_writer_options *opts
|
712
|
+
)
|
713
|
+
{
|
714
|
+
git_commit_graph_writer *w;
|
715
|
+
git_oid_t oid_type;
|
716
|
+
|
717
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
718
|
+
GIT_ERROR_CHECK_VERSION(opts,
|
719
|
+
GIT_COMMIT_GRAPH_WRITER_OPTIONS_VERSION,
|
720
|
+
"git_commit_graph_writer_options");
|
721
|
+
|
722
|
+
oid_type = opts && opts->oid_type ? opts->oid_type : GIT_OID_DEFAULT;
|
723
|
+
GIT_ASSERT_ARG(git_oid_type_is_valid(oid_type));
|
724
|
+
#else
|
725
|
+
GIT_UNUSED(opts);
|
726
|
+
oid_type = GIT_OID_SHA1;
|
727
|
+
#endif
|
728
|
+
|
729
|
+
GIT_ASSERT_ARG(out && objects_info_dir);
|
730
|
+
|
731
|
+
w = git__calloc(1, sizeof(git_commit_graph_writer));
|
624
732
|
GIT_ERROR_CHECK_ALLOC(w);
|
625
733
|
|
626
|
-
|
734
|
+
w->oid_type = oid_type;
|
735
|
+
|
736
|
+
if (git_str_sets(&w->objects_info_dir, objects_info_dir) < 0) {
|
627
737
|
git__free(w);
|
628
738
|
return -1;
|
629
739
|
}
|
630
740
|
|
631
741
|
if (git_vector_init(&w->commits, 0, packed_commit__cmp) < 0) {
|
632
|
-
|
742
|
+
git_str_dispose(&w->objects_info_dir);
|
633
743
|
git__free(w);
|
634
744
|
return -1;
|
635
745
|
}
|
@@ -648,8 +758,8 @@ void git_commit_graph_writer_free(git_commit_graph_writer *w)
|
|
648
758
|
|
649
759
|
git_vector_foreach (&w->commits, i, packed_commit)
|
650
760
|
packed_commit_free(packed_commit);
|
651
|
-
|
652
|
-
|
761
|
+
git_vector_dispose(&w->commits);
|
762
|
+
git_str_dispose(&w->objects_info_dir);
|
653
763
|
git__free(w);
|
654
764
|
}
|
655
765
|
|
@@ -693,9 +803,9 @@ static int object_entry__cb(const git_oid *id, void *data)
|
|
693
803
|
}
|
694
804
|
|
695
805
|
int git_commit_graph_writer_add_index_file(
|
696
|
-
|
697
|
-
|
698
|
-
|
806
|
+
git_commit_graph_writer *w,
|
807
|
+
git_repository *repo,
|
808
|
+
const char *idx_path)
|
699
809
|
{
|
700
810
|
int error;
|
701
811
|
struct git_pack_file *p = NULL;
|
@@ -707,7 +817,8 @@ int git_commit_graph_writer_add_index_file(
|
|
707
817
|
if (error < 0)
|
708
818
|
goto cleanup;
|
709
819
|
|
710
|
-
|
820
|
+
/* TODO: SHA256 */
|
821
|
+
error = git_mwindow_get_pack(&p, idx_path, 0);
|
711
822
|
if (error < 0)
|
712
823
|
goto cleanup;
|
713
824
|
|
@@ -753,9 +864,11 @@ enum generation_number_commit_state {
|
|
753
864
|
GENERATION_NUMBER_COMMIT_STATE_UNVISITED = 0,
|
754
865
|
GENERATION_NUMBER_COMMIT_STATE_ADDED = 1,
|
755
866
|
GENERATION_NUMBER_COMMIT_STATE_EXPANDED = 2,
|
756
|
-
GENERATION_NUMBER_COMMIT_STATE_VISITED = 3
|
867
|
+
GENERATION_NUMBER_COMMIT_STATE_VISITED = 3
|
757
868
|
};
|
758
869
|
|
870
|
+
GIT_HASHMAP_OID_SETUP(git_commit_graph_oidmap, struct packed_commit *);
|
871
|
+
|
759
872
|
static int compute_generation_numbers(git_vector *commits)
|
760
873
|
{
|
761
874
|
git_array_t(size_t) index_stack = GIT_ARRAY_INIT;
|
@@ -763,17 +876,14 @@ static int compute_generation_numbers(git_vector *commits)
|
|
763
876
|
size_t *parent_idx;
|
764
877
|
enum generation_number_commit_state *commit_states = NULL;
|
765
878
|
struct packed_commit *child_packed_commit;
|
766
|
-
|
879
|
+
git_commit_graph_oidmap packed_commit_map = GIT_HASHMAP_INIT;
|
767
880
|
int error = 0;
|
768
881
|
|
769
882
|
/* First populate the parent indices fields */
|
770
|
-
error = git_oidmap_new(&packed_commit_map);
|
771
|
-
if (error < 0)
|
772
|
-
goto cleanup;
|
773
883
|
git_vector_foreach (commits, i, child_packed_commit) {
|
774
884
|
child_packed_commit->index = i;
|
775
|
-
error =
|
776
|
-
|
885
|
+
error = git_commit_graph_oidmap_put(&packed_commit_map,
|
886
|
+
&child_packed_commit->sha1, child_packed_commit);
|
777
887
|
if (error < 0)
|
778
888
|
goto cleanup;
|
779
889
|
}
|
@@ -791,8 +901,7 @@ static int compute_generation_numbers(git_vector *commits)
|
|
791
901
|
goto cleanup;
|
792
902
|
}
|
793
903
|
git_array_foreach (child_packed_commit->parents, parent_i, parent_id) {
|
794
|
-
parent_packed_commit
|
795
|
-
if (!parent_packed_commit) {
|
904
|
+
if (git_commit_graph_oidmap_get(&parent_packed_commit, &packed_commit_map, parent_id) != 0) {
|
796
905
|
git_error_set(GIT_ERROR_ODB,
|
797
906
|
"parent commit %s not found in commit graph",
|
798
907
|
git_oid_tostr_s(parent_id));
|
@@ -892,7 +1001,7 @@ static int compute_generation_numbers(git_vector *commits)
|
|
892
1001
|
}
|
893
1002
|
|
894
1003
|
cleanup:
|
895
|
-
|
1004
|
+
git_commit_graph_oidmap_dispose(&packed_commit_map);
|
896
1005
|
git__free(commit_states);
|
897
1006
|
git_array_clear(index_stack);
|
898
1007
|
|
@@ -931,8 +1040,8 @@ static int write_chunk_header(
|
|
931
1040
|
|
932
1041
|
static int commit_graph_write_buf(const char *buf, size_t size, void *data)
|
933
1042
|
{
|
934
|
-
|
935
|
-
return
|
1043
|
+
git_str *b = (git_str *)data;
|
1044
|
+
return git_str_put(b, buf, size);
|
936
1045
|
}
|
937
1046
|
|
938
1047
|
struct commit_graph_write_hash_context {
|
@@ -946,9 +1055,12 @@ static int commit_graph_write_hash(const char *buf, size_t size, void *data)
|
|
946
1055
|
struct commit_graph_write_hash_context *ctx = data;
|
947
1056
|
int error;
|
948
1057
|
|
949
|
-
|
950
|
-
|
951
|
-
|
1058
|
+
if (ctx->ctx) {
|
1059
|
+
error = git_hash_update(ctx->ctx, buf, size);
|
1060
|
+
|
1061
|
+
if (error < 0)
|
1062
|
+
return error;
|
1063
|
+
}
|
952
1064
|
|
953
1065
|
return ctx->write_cb(buf, size, ctx->cb_data);
|
954
1066
|
}
|
@@ -959,9 +1071,9 @@ static void packed_commit_free_dup(void *packed_commit)
|
|
959
1071
|
}
|
960
1072
|
|
961
1073
|
static int commit_graph_write(
|
962
|
-
|
963
|
-
|
964
|
-
|
1074
|
+
git_commit_graph_writer *w,
|
1075
|
+
commit_graph_write_cb write_cb,
|
1076
|
+
void *cb_data)
|
965
1077
|
{
|
966
1078
|
int error = 0;
|
967
1079
|
size_t i;
|
@@ -971,9 +1083,11 @@ static int commit_graph_write(
|
|
971
1083
|
uint32_t extra_edge_list_count;
|
972
1084
|
uint32_t oid_fanout[256];
|
973
1085
|
off64_t offset;
|
974
|
-
|
975
|
-
extra_edge_list =
|
976
|
-
|
1086
|
+
git_str oid_lookup = GIT_STR_INIT, commit_data = GIT_STR_INIT,
|
1087
|
+
extra_edge_list = GIT_STR_INIT;
|
1088
|
+
unsigned char checksum[GIT_HASH_MAX_SIZE];
|
1089
|
+
git_hash_algorithm_t checksum_type;
|
1090
|
+
size_t checksum_size, oid_size;
|
977
1091
|
git_hash_ctx ctx;
|
978
1092
|
struct commit_graph_write_hash_context hash_cb_data = {0};
|
979
1093
|
|
@@ -986,7 +1100,11 @@ static int commit_graph_write(
|
|
986
1100
|
hash_cb_data.cb_data = cb_data;
|
987
1101
|
hash_cb_data.ctx = &ctx;
|
988
1102
|
|
989
|
-
|
1103
|
+
oid_size = git_oid_size(w->oid_type);
|
1104
|
+
checksum_type = git_oid_algorithm(w->oid_type);
|
1105
|
+
checksum_size = git_hash_size(checksum_type);
|
1106
|
+
|
1107
|
+
error = git_hash_ctx_init(&ctx, checksum_type);
|
990
1108
|
if (error < 0)
|
991
1109
|
return error;
|
992
1110
|
cb_data = &hash_cb_data;
|
@@ -1011,8 +1129,10 @@ static int commit_graph_write(
|
|
1011
1129
|
|
1012
1130
|
/* Fill the OID Lookup table. */
|
1013
1131
|
git_vector_foreach (&w->commits, i, packed_commit) {
|
1014
|
-
error =
|
1015
|
-
(const char *)&packed_commit->sha1,
|
1132
|
+
error = git_str_put(&oid_lookup,
|
1133
|
+
(const char *)&packed_commit->sha1.id,
|
1134
|
+
oid_size);
|
1135
|
+
|
1016
1136
|
if (error < 0)
|
1017
1137
|
goto cleanup;
|
1018
1138
|
}
|
@@ -1026,9 +1146,10 @@ static int commit_graph_write(
|
|
1026
1146
|
size_t *packed_index;
|
1027
1147
|
unsigned int parentcount = (unsigned int)git_array_size(packed_commit->parents);
|
1028
1148
|
|
1029
|
-
error =
|
1030
|
-
|
1031
|
-
|
1149
|
+
error = git_str_put(&commit_data,
|
1150
|
+
(const char *)&packed_commit->tree_oid.id,
|
1151
|
+
oid_size);
|
1152
|
+
|
1032
1153
|
if (error < 0)
|
1033
1154
|
goto cleanup;
|
1034
1155
|
|
@@ -1038,7 +1159,7 @@ static int commit_graph_write(
|
|
1038
1159
|
packed_index = git_array_get(packed_commit->parent_indices, 0);
|
1039
1160
|
word = htonl((uint32_t)*packed_index);
|
1040
1161
|
}
|
1041
|
-
error =
|
1162
|
+
error = git_str_put(&commit_data, (const char *)&word, sizeof(word));
|
1042
1163
|
if (error < 0)
|
1043
1164
|
goto cleanup;
|
1044
1165
|
|
@@ -1050,7 +1171,7 @@ static int commit_graph_write(
|
|
1050
1171
|
} else {
|
1051
1172
|
word = htonl(0x80000000u | extra_edge_list_count);
|
1052
1173
|
}
|
1053
|
-
error =
|
1174
|
+
error = git_str_put(&commit_data, (const char *)&word, sizeof(word));
|
1054
1175
|
if (error < 0)
|
1055
1176
|
goto cleanup;
|
1056
1177
|
|
@@ -1061,7 +1182,7 @@ static int commit_graph_write(
|
|
1061
1182
|
packed_commit->parent_indices, parent_i);
|
1062
1183
|
word = htonl((uint32_t)(*packed_index | (parent_i + 1 == parentcount ? 0x80000000u : 0)));
|
1063
1184
|
|
1064
|
-
error =
|
1185
|
+
error = git_str_put(&extra_edge_list,
|
1065
1186
|
(const char *)&word,
|
1066
1187
|
sizeof(word));
|
1067
1188
|
if (error < 0)
|
@@ -1074,19 +1195,19 @@ static int commit_graph_write(
|
|
1074
1195
|
commit_time = (uint64_t)packed_commit->commit_time;
|
1075
1196
|
if (generation > GIT_COMMIT_GRAPH_GENERATION_NUMBER_MAX)
|
1076
1197
|
generation = GIT_COMMIT_GRAPH_GENERATION_NUMBER_MAX;
|
1077
|
-
word = ntohl((uint32_t)((generation << 2) | ((commit_time >>
|
1078
|
-
error =
|
1198
|
+
word = ntohl((uint32_t)((generation << 2) | (((uint32_t)(commit_time >> 32)) & 0x3) ));
|
1199
|
+
error = git_str_put(&commit_data, (const char *)&word, sizeof(word));
|
1079
1200
|
if (error < 0)
|
1080
1201
|
goto cleanup;
|
1081
|
-
word = ntohl((uint32_t)(commit_time &
|
1082
|
-
error =
|
1202
|
+
word = ntohl((uint32_t)(commit_time & 0xfffffffful));
|
1203
|
+
error = git_str_put(&commit_data, (const char *)&word, sizeof(word));
|
1083
1204
|
if (error < 0)
|
1084
1205
|
goto cleanup;
|
1085
1206
|
}
|
1086
1207
|
|
1087
1208
|
/* Write the header. */
|
1088
1209
|
hdr.chunks = 3;
|
1089
|
-
if (
|
1210
|
+
if (git_str_len(&extra_edge_list) > 0)
|
1090
1211
|
hdr.chunks++;
|
1091
1212
|
error = write_cb((const char *)&hdr, sizeof(hdr), cb_data);
|
1092
1213
|
if (error < 0)
|
@@ -1101,17 +1222,17 @@ static int commit_graph_write(
|
|
1101
1222
|
error = write_chunk_header(COMMIT_GRAPH_OID_LOOKUP_ID, offset, write_cb, cb_data);
|
1102
1223
|
if (error < 0)
|
1103
1224
|
goto cleanup;
|
1104
|
-
offset +=
|
1225
|
+
offset += git_str_len(&oid_lookup);
|
1105
1226
|
error = write_chunk_header(COMMIT_GRAPH_COMMIT_DATA_ID, offset, write_cb, cb_data);
|
1106
1227
|
if (error < 0)
|
1107
1228
|
goto cleanup;
|
1108
|
-
offset +=
|
1109
|
-
if (
|
1229
|
+
offset += git_str_len(&commit_data);
|
1230
|
+
if (git_str_len(&extra_edge_list) > 0) {
|
1110
1231
|
error = write_chunk_header(
|
1111
1232
|
COMMIT_GRAPH_EXTRA_EDGE_LIST_ID, offset, write_cb, cb_data);
|
1112
1233
|
if (error < 0)
|
1113
1234
|
goto cleanup;
|
1114
|
-
offset +=
|
1235
|
+
offset += git_str_len(&extra_edge_list);
|
1115
1236
|
}
|
1116
1237
|
error = write_chunk_header(0, offset, write_cb, cb_data);
|
1117
1238
|
if (error < 0)
|
@@ -1121,28 +1242,31 @@ static int commit_graph_write(
|
|
1121
1242
|
error = write_cb((const char *)oid_fanout, sizeof(oid_fanout), cb_data);
|
1122
1243
|
if (error < 0)
|
1123
1244
|
goto cleanup;
|
1124
|
-
error = write_cb(
|
1245
|
+
error = write_cb(git_str_cstr(&oid_lookup), git_str_len(&oid_lookup), cb_data);
|
1125
1246
|
if (error < 0)
|
1126
1247
|
goto cleanup;
|
1127
|
-
error = write_cb(
|
1248
|
+
error = write_cb(git_str_cstr(&commit_data), git_str_len(&commit_data), cb_data);
|
1128
1249
|
if (error < 0)
|
1129
1250
|
goto cleanup;
|
1130
|
-
error = write_cb(
|
1251
|
+
error = write_cb(git_str_cstr(&extra_edge_list), git_str_len(&extra_edge_list), cb_data);
|
1131
1252
|
if (error < 0)
|
1132
1253
|
goto cleanup;
|
1133
1254
|
|
1134
1255
|
/* Finalize the checksum and write the trailer. */
|
1135
|
-
error = git_hash_final(
|
1256
|
+
error = git_hash_final(checksum, &ctx);
|
1136
1257
|
if (error < 0)
|
1137
1258
|
goto cleanup;
|
1138
|
-
|
1259
|
+
|
1260
|
+
hash_cb_data.ctx = NULL;
|
1261
|
+
|
1262
|
+
error = write_cb((char *)checksum, checksum_size, cb_data);
|
1139
1263
|
if (error < 0)
|
1140
1264
|
goto cleanup;
|
1141
1265
|
|
1142
1266
|
cleanup:
|
1143
|
-
|
1144
|
-
|
1145
|
-
|
1267
|
+
git_str_dispose(&oid_lookup);
|
1268
|
+
git_str_dispose(&commit_data);
|
1269
|
+
git_str_dispose(&extra_edge_list);
|
1146
1270
|
git_hash_ctx_cleanup(&ctx);
|
1147
1271
|
return error;
|
1148
1272
|
}
|
@@ -1153,39 +1277,22 @@ static int commit_graph_write_filebuf(const char *buf, size_t size, void *data)
|
|
1153
1277
|
return git_filebuf_write(f, buf, size);
|
1154
1278
|
}
|
1155
1279
|
|
1156
|
-
int
|
1157
|
-
git_commit_graph_writer_options *opts,
|
1158
|
-
unsigned int version)
|
1159
|
-
{
|
1160
|
-
GIT_INIT_STRUCTURE_FROM_TEMPLATE(
|
1161
|
-
opts,
|
1162
|
-
version,
|
1163
|
-
git_commit_graph_writer_options,
|
1164
|
-
GIT_COMMIT_GRAPH_WRITER_OPTIONS_INIT);
|
1165
|
-
return 0;
|
1166
|
-
}
|
1167
|
-
|
1168
|
-
int git_commit_graph_writer_commit(
|
1169
|
-
git_commit_graph_writer *w,
|
1170
|
-
git_commit_graph_writer_options *opts)
|
1280
|
+
int git_commit_graph_writer_commit(git_commit_graph_writer *w)
|
1171
1281
|
{
|
1172
1282
|
int error;
|
1173
1283
|
int filebuf_flags = GIT_FILEBUF_DO_NOT_BUFFER;
|
1174
|
-
|
1284
|
+
git_str commit_graph_path = GIT_STR_INIT;
|
1175
1285
|
git_filebuf output = GIT_FILEBUF_INIT;
|
1176
1286
|
|
1177
|
-
|
1178
|
-
|
1179
|
-
|
1180
|
-
error = git_buf_joinpath(
|
1181
|
-
&commit_graph_path, git_buf_cstr(&w->objects_info_dir), "commit-graph");
|
1287
|
+
error = git_str_joinpath(
|
1288
|
+
&commit_graph_path, git_str_cstr(&w->objects_info_dir), "commit-graph");
|
1182
1289
|
if (error < 0)
|
1183
1290
|
return error;
|
1184
1291
|
|
1185
1292
|
if (git_repository__fsync_gitdir)
|
1186
1293
|
filebuf_flags |= GIT_FILEBUF_FSYNC;
|
1187
|
-
error = git_filebuf_open(&output,
|
1188
|
-
|
1294
|
+
error = git_filebuf_open(&output, git_str_cstr(&commit_graph_path), filebuf_flags, 0644);
|
1295
|
+
git_str_dispose(&commit_graph_path);
|
1189
1296
|
if (error < 0)
|
1190
1297
|
return error;
|
1191
1298
|
|
@@ -1199,11 +1306,15 @@ int git_commit_graph_writer_commit(
|
|
1199
1306
|
}
|
1200
1307
|
|
1201
1308
|
int git_commit_graph_writer_dump(
|
1202
|
-
|
1203
|
-
|
1204
|
-
|
1309
|
+
git_buf *cgraph,
|
1310
|
+
git_commit_graph_writer *w)
|
1311
|
+
{
|
1312
|
+
GIT_BUF_WRAP_PRIVATE(cgraph, git_commit_graph__writer_dump, w);
|
1313
|
+
}
|
1314
|
+
|
1315
|
+
int git_commit_graph__writer_dump(
|
1316
|
+
git_str *cgraph,
|
1317
|
+
git_commit_graph_writer *w)
|
1205
1318
|
{
|
1206
|
-
/* TODO: support options. */
|
1207
|
-
GIT_UNUSED(opts);
|
1208
1319
|
return commit_graph_write(w, commit_graph_write_buf, cgraph);
|
1209
1320
|
}
|