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 "futils.h"
|
14
14
|
#include "tree-cache.h"
|
15
15
|
#include "index.h"
|
16
|
+
#include "path.h"
|
16
17
|
|
17
18
|
#define DEFAULT_TREE_SIZE 16
|
18
19
|
#define MAX_FILEMODE_BYTES 6
|
@@ -20,6 +21,8 @@
|
|
20
21
|
#define TREE_ENTRY_CHECK_NAMELEN(n) \
|
21
22
|
if (n > UINT16_MAX) { git_error_set(GIT_ERROR_INVALID, "tree entry path too long"); }
|
22
23
|
|
24
|
+
GIT_HASHMAP_STR_FUNCTIONS(git_treebuilder_entrymap, GIT_HASHMAP_INLINE, git_tree_entry *);
|
25
|
+
|
23
26
|
static bool valid_filemode(const int filemode)
|
24
27
|
{
|
25
28
|
return (filemode == GIT_FILEMODE_TREE
|
@@ -54,8 +57,8 @@ GIT_INLINE(git_filemode_t) normalize_filemode(git_filemode_t filemode)
|
|
54
57
|
static int valid_entry_name(git_repository *repo, const char *filename)
|
55
58
|
{
|
56
59
|
return *filename != '\0' &&
|
57
|
-
|
58
|
-
|
60
|
+
git_path_is_valid(repo, filename, 0,
|
61
|
+
GIT_FS_PATH_REJECT_TRAVERSAL | GIT_PATH_REJECT_DOT_GIT | GIT_FS_PATH_REJECT_SLASH);
|
59
62
|
}
|
60
63
|
|
61
64
|
static int entry_sort_cmp(const void *a, const void *b)
|
@@ -63,7 +66,7 @@ static int entry_sort_cmp(const void *a, const void *b)
|
|
63
66
|
const git_tree_entry *e1 = (const git_tree_entry *)a;
|
64
67
|
const git_tree_entry *e2 = (const git_tree_entry *)b;
|
65
68
|
|
66
|
-
return
|
69
|
+
return git_fs_path_cmp(
|
67
70
|
e1->filename, e1->filename_len, git_tree_entry__is_tree(e1),
|
68
71
|
e2->filename, e2->filename_len, git_tree_entry__is_tree(e2),
|
69
72
|
git__strncmp);
|
@@ -81,34 +84,33 @@ int git_tree_entry_cmp(const git_tree_entry *e1, const git_tree_entry *e2)
|
|
81
84
|
static git_tree_entry *alloc_entry(const char *filename, size_t filename_len, const git_oid *id)
|
82
85
|
{
|
83
86
|
git_tree_entry *entry = NULL;
|
87
|
+
char *filename_ptr;
|
84
88
|
size_t tree_len;
|
85
89
|
|
90
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
91
|
+
size_t oid_size = git_oid_size(id->type);
|
92
|
+
#else
|
93
|
+
size_t oid_size = GIT_OID_SHA1_SIZE;
|
94
|
+
#endif
|
95
|
+
|
86
96
|
TREE_ENTRY_CHECK_NAMELEN(filename_len);
|
87
97
|
|
88
98
|
if (GIT_ADD_SIZET_OVERFLOW(&tree_len, sizeof(git_tree_entry), filename_len) ||
|
89
99
|
GIT_ADD_SIZET_OVERFLOW(&tree_len, tree_len, 1) ||
|
90
|
-
GIT_ADD_SIZET_OVERFLOW(&tree_len, tree_len,
|
100
|
+
GIT_ADD_SIZET_OVERFLOW(&tree_len, tree_len, oid_size))
|
91
101
|
return NULL;
|
92
102
|
|
93
103
|
entry = git__calloc(1, tree_len);
|
94
104
|
if (!entry)
|
95
105
|
return NULL;
|
96
106
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
filename_ptr = ((char *) entry) + sizeof(git_tree_entry);
|
102
|
-
memcpy(filename_ptr, filename, filename_len);
|
103
|
-
entry->filename = filename_ptr;
|
104
|
-
|
105
|
-
id_ptr = filename_ptr + filename_len + 1;
|
106
|
-
git_oid_cpy(id_ptr, id);
|
107
|
-
entry->oid = id_ptr;
|
108
|
-
}
|
109
|
-
|
107
|
+
filename_ptr = ((char *) entry) + sizeof(git_tree_entry);
|
108
|
+
memcpy(filename_ptr, filename, filename_len);
|
109
|
+
entry->filename = filename_ptr;
|
110
110
|
entry->filename_len = (uint16_t)filename_len;
|
111
111
|
|
112
|
+
git_oid_cpy(&entry->oid, id);
|
113
|
+
|
112
114
|
return entry;
|
113
115
|
}
|
114
116
|
|
@@ -230,7 +232,7 @@ int git_tree_entry_dup(git_tree_entry **dest, const git_tree_entry *source)
|
|
230
232
|
|
231
233
|
GIT_ASSERT_ARG(source);
|
232
234
|
|
233
|
-
cpy = alloc_entry(source->filename, source->filename_len, source->oid);
|
235
|
+
cpy = alloc_entry(source->filename, source->filename_len, &source->oid);
|
234
236
|
if (cpy == NULL)
|
235
237
|
return -1;
|
236
238
|
|
@@ -268,7 +270,7 @@ const char *git_tree_entry_name(const git_tree_entry *entry)
|
|
268
270
|
const git_oid *git_tree_entry_id(const git_tree_entry *entry)
|
269
271
|
{
|
270
272
|
GIT_ASSERT_ARG_WITH_RETVAL(entry, NULL);
|
271
|
-
return entry->oid;
|
273
|
+
return &entry->oid;
|
272
274
|
}
|
273
275
|
|
274
276
|
git_object_t git_tree_entry_type(const git_tree_entry *entry)
|
@@ -291,7 +293,7 @@ int git_tree_entry_to_object(
|
|
291
293
|
GIT_ASSERT_ARG(entry);
|
292
294
|
GIT_ASSERT_ARG(object_out);
|
293
295
|
|
294
|
-
return git_object_lookup(object_out, repo, entry->oid, GIT_OBJECT_ANY);
|
296
|
+
return git_object_lookup(object_out, repo, &entry->oid, GIT_OBJECT_ANY);
|
295
297
|
}
|
296
298
|
|
297
299
|
static const git_tree_entry *entry_fromname(
|
@@ -330,7 +332,7 @@ const git_tree_entry *git_tree_entry_byid(
|
|
330
332
|
GIT_ASSERT_ARG_WITH_RETVAL(tree, NULL);
|
331
333
|
|
332
334
|
git_array_foreach(tree->entries, i, e) {
|
333
|
-
if (
|
335
|
+
if (git_oid_equal(&e->oid, id))
|
334
336
|
return e;
|
335
337
|
}
|
336
338
|
|
@@ -347,18 +349,29 @@ size_t git_treebuilder_entrycount(git_treebuilder *bld)
|
|
347
349
|
{
|
348
350
|
GIT_ASSERT_ARG_WITH_RETVAL(bld, 0);
|
349
351
|
|
350
|
-
return
|
352
|
+
return git_treebuilder_entrymap_size(&bld->map);
|
351
353
|
}
|
352
354
|
|
353
|
-
|
355
|
+
GIT_INLINE(void) set_error(const char *str, const char *path)
|
354
356
|
{
|
355
357
|
if (path)
|
356
358
|
git_error_set(GIT_ERROR_TREE, "%s - %s", str, path);
|
357
359
|
else
|
358
360
|
git_error_set(GIT_ERROR_TREE, "%s", str);
|
361
|
+
}
|
362
|
+
|
363
|
+
static int tree_error(const char *str, const char *path)
|
364
|
+
{
|
365
|
+
set_error(str, path);
|
359
366
|
return -1;
|
360
367
|
}
|
361
368
|
|
369
|
+
static int tree_parse_error(const char *str, const char *path)
|
370
|
+
{
|
371
|
+
set_error(str, path);
|
372
|
+
return GIT_EINVALID;
|
373
|
+
}
|
374
|
+
|
362
375
|
static int parse_mode(uint16_t *mode_out, const char *buffer, size_t buffer_len, const char **buffer_out)
|
363
376
|
{
|
364
377
|
int32_t mode;
|
@@ -370,7 +383,7 @@ static int parse_mode(uint16_t *mode_out, const char *buffer, size_t buffer_len,
|
|
370
383
|
if ((error = git__strntol32(&mode, buffer, buffer_len, buffer_out, 8)) < 0)
|
371
384
|
return error;
|
372
385
|
|
373
|
-
if (mode < 0 || mode > UINT16_MAX)
|
386
|
+
if (mode < 0 || (uint32_t)mode > UINT16_MAX)
|
374
387
|
return -1;
|
375
388
|
|
376
389
|
*mode_out = mode;
|
@@ -378,11 +391,12 @@ static int parse_mode(uint16_t *mode_out, const char *buffer, size_t buffer_len,
|
|
378
391
|
return 0;
|
379
392
|
}
|
380
393
|
|
381
|
-
int git_tree__parse_raw(void *_tree, const char *data, size_t size)
|
394
|
+
int git_tree__parse_raw(void *_tree, const char *data, size_t size, git_oid_t oid_type)
|
382
395
|
{
|
383
396
|
git_tree *tree = _tree;
|
384
397
|
const char *buffer;
|
385
398
|
const char *buffer_end;
|
399
|
+
const long oid_size = (long)git_oid_size(oid_type);
|
386
400
|
|
387
401
|
buffer = data;
|
388
402
|
buffer_end = buffer + size;
|
@@ -398,51 +412,48 @@ int git_tree__parse_raw(void *_tree, const char *data, size_t size)
|
|
398
412
|
uint16_t attr;
|
399
413
|
|
400
414
|
if (parse_mode(&attr, buffer, buffer_end - buffer, &buffer) < 0 || !buffer)
|
401
|
-
return
|
415
|
+
return tree_parse_error("failed to parse tree: can't parse filemode", NULL);
|
402
416
|
|
403
417
|
if (buffer >= buffer_end || (*buffer++) != ' ')
|
404
|
-
return
|
418
|
+
return tree_parse_error("failed to parse tree: missing space after filemode", NULL);
|
405
419
|
|
406
420
|
if ((nul = memchr(buffer, 0, buffer_end - buffer)) == NULL)
|
407
|
-
return
|
421
|
+
return tree_parse_error("failed to parse tree: object is corrupted", NULL);
|
408
422
|
|
409
423
|
if ((filename_len = nul - buffer) == 0 || filename_len > UINT16_MAX)
|
410
|
-
return
|
424
|
+
return tree_parse_error("failed to parse tree: can't parse filename", NULL);
|
411
425
|
|
412
|
-
if ((buffer_end - (nul + 1)) <
|
413
|
-
return
|
426
|
+
if ((buffer_end - (nul + 1)) < (long)oid_size)
|
427
|
+
return tree_parse_error("failed to parse tree: can't parse OID", NULL);
|
414
428
|
|
415
429
|
/* Allocate the entry */
|
416
|
-
|
417
|
-
|
418
|
-
GIT_ERROR_CHECK_ALLOC(entry);
|
419
|
-
|
420
|
-
entry->attr = attr;
|
421
|
-
entry->filename_len = (uint16_t)filename_len;
|
422
|
-
entry->filename = buffer;
|
423
|
-
entry->oid = (git_oid *) ((char *) buffer + filename_len + 1);
|
424
|
-
}
|
430
|
+
entry = git_array_alloc(tree->entries);
|
431
|
+
GIT_ERROR_CHECK_ALLOC(entry);
|
425
432
|
|
433
|
+
entry->attr = attr;
|
434
|
+
entry->filename_len = (uint16_t)filename_len;
|
435
|
+
entry->filename = buffer;
|
426
436
|
buffer += filename_len + 1;
|
427
|
-
|
437
|
+
|
438
|
+
git_oid__fromraw(&entry->oid, (unsigned char *)buffer, oid_type);
|
439
|
+
buffer += oid_size;
|
428
440
|
}
|
429
441
|
|
430
442
|
return 0;
|
431
443
|
}
|
432
444
|
|
433
|
-
int git_tree__parse(void *_tree, git_odb_object *odb_obj)
|
445
|
+
int git_tree__parse(void *_tree, git_odb_object *odb_obj, git_oid_t oid_type)
|
434
446
|
{
|
435
447
|
git_tree *tree = _tree;
|
448
|
+
const char *data = git_odb_object_data(odb_obj);
|
449
|
+
size_t size = git_odb_object_size(odb_obj);
|
450
|
+
int error;
|
436
451
|
|
437
|
-
if ((git_tree__parse_raw(tree,
|
438
|
-
|
439
|
-
|
440
|
-
return -1;
|
441
|
-
|
442
|
-
if (git_odb_object_dup(&tree->odb_obj, odb_obj) < 0)
|
443
|
-
return -1;
|
452
|
+
if ((error = git_tree__parse_raw(tree, data, size, oid_type)) < 0 ||
|
453
|
+
(error = git_odb_object_dup(&tree->odb_obj, odb_obj)) < 0)
|
454
|
+
return error;
|
444
455
|
|
445
|
-
return
|
456
|
+
return error;
|
446
457
|
}
|
447
458
|
|
448
459
|
static size_t find_next_dir(const char *dirname, git_index *index, size_t start)
|
@@ -495,39 +506,42 @@ static int check_entry(git_repository *repo, const char *filename, const git_oid
|
|
495
506
|
static int git_treebuilder__write_with_buffer(
|
496
507
|
git_oid *oid,
|
497
508
|
git_treebuilder *bld,
|
498
|
-
|
509
|
+
git_str *buf)
|
499
510
|
{
|
500
511
|
int error = 0;
|
501
512
|
size_t i, entrycount;
|
502
513
|
git_odb *odb;
|
503
514
|
git_tree_entry *entry;
|
504
515
|
git_vector entries = GIT_VECTOR_INIT;
|
516
|
+
size_t oid_size = git_oid_size(bld->repo->oid_type);
|
517
|
+
git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
|
505
518
|
|
506
|
-
|
519
|
+
git_str_clear(buf);
|
520
|
+
|
521
|
+
entrycount = git_treebuilder_entrymap_size(&bld->map);
|
507
522
|
|
508
|
-
entrycount = git_strmap_size(bld->map);
|
509
523
|
if ((error = git_vector_init(&entries, entrycount, entry_sort_cmp)) < 0)
|
510
524
|
goto out;
|
511
525
|
|
512
526
|
if (buf->asize == 0 &&
|
513
|
-
(error =
|
527
|
+
(error = git_str_grow(buf, entrycount * 72)) < 0)
|
514
528
|
goto out;
|
515
529
|
|
516
|
-
|
530
|
+
while (git_treebuilder_entrymap_iterate(&iter, NULL, &entry, &bld->map) == 0) {
|
517
531
|
if ((error = git_vector_insert(&entries, entry)) < 0)
|
518
532
|
goto out;
|
519
|
-
}
|
533
|
+
}
|
520
534
|
|
521
535
|
git_vector_sort(&entries);
|
522
536
|
|
523
537
|
for (i = 0; i < entries.length && !error; ++i) {
|
524
538
|
entry = git_vector_get(&entries, i);
|
525
539
|
|
526
|
-
|
527
|
-
|
528
|
-
|
540
|
+
git_str_printf(buf, "%o ", entry->attr);
|
541
|
+
git_str_put(buf, entry->filename, entry->filename_len + 1);
|
542
|
+
git_str_put(buf, (char *)entry->oid.id, oid_size);
|
529
543
|
|
530
|
-
if (
|
544
|
+
if (git_str_oom(buf)) {
|
531
545
|
error = -1;
|
532
546
|
goto out;
|
533
547
|
}
|
@@ -537,7 +551,7 @@ static int git_treebuilder__write_with_buffer(
|
|
537
551
|
error = git_odb_write(oid, odb, buf->ptr, buf->size, GIT_OBJECT_TREE);
|
538
552
|
|
539
553
|
out:
|
540
|
-
|
554
|
+
git_vector_dispose(&entries);
|
541
555
|
|
542
556
|
return error;
|
543
557
|
}
|
@@ -560,7 +574,7 @@ static int append_entry(
|
|
560
574
|
|
561
575
|
entry->attr = (uint16_t)filemode;
|
562
576
|
|
563
|
-
if ((error =
|
577
|
+
if ((error = git_treebuilder_entrymap_put(&bld->map, entry->filename, entry)) < 0) {
|
564
578
|
git_tree_entry_free(entry);
|
565
579
|
git_error_set(GIT_ERROR_TREE, "failed to append entry %s to the tree builder", filename);
|
566
580
|
return -1;
|
@@ -575,7 +589,7 @@ static int write_tree(
|
|
575
589
|
git_index *index,
|
576
590
|
const char *dirname,
|
577
591
|
size_t start,
|
578
|
-
|
592
|
+
git_str *shared_buf)
|
579
593
|
{
|
580
594
|
git_treebuilder *bld = NULL;
|
581
595
|
size_t i, entries = git_index_entrycount(index);
|
@@ -594,7 +608,7 @@ static int write_tree(
|
|
594
608
|
|
595
609
|
/*
|
596
610
|
* This loop is unfortunate, but necessary. The index doesn't have
|
597
|
-
* any
|
611
|
+
* any directories, so we need to handle that manually, and we
|
598
612
|
* need to keep track of the current position.
|
599
613
|
*/
|
600
614
|
for (i = start; i < entries; ++i) {
|
@@ -676,7 +690,7 @@ int git_tree__write_index(
|
|
676
690
|
{
|
677
691
|
int ret;
|
678
692
|
git_tree *tree;
|
679
|
-
|
693
|
+
git_str shared_buf = GIT_STR_INIT;
|
680
694
|
bool old_ignore_case = false;
|
681
695
|
|
682
696
|
GIT_ASSERT_ARG(oid);
|
@@ -705,7 +719,7 @@ int git_tree__write_index(
|
|
705
719
|
}
|
706
720
|
|
707
721
|
ret = write_tree(oid, repo, index, "", 0, &shared_buf);
|
708
|
-
|
722
|
+
git_str_dispose(&shared_buf);
|
709
723
|
|
710
724
|
if (old_ignore_case)
|
711
725
|
git_index__set_ignore_case(index, true);
|
@@ -721,7 +735,7 @@ int git_tree__write_index(
|
|
721
735
|
return ret;
|
722
736
|
|
723
737
|
/* Read the tree cache into the index */
|
724
|
-
ret = git_tree_cache_read_tree(&index->tree, tree, &index->tree_pool);
|
738
|
+
ret = git_tree_cache_read_tree(&index->tree, tree, index->oid_type, &index->tree_pool);
|
725
739
|
git_tree_free(tree);
|
726
740
|
|
727
741
|
return ret;
|
@@ -743,18 +757,13 @@ int git_treebuilder_new(
|
|
743
757
|
|
744
758
|
bld->repo = repo;
|
745
759
|
|
746
|
-
if (git_strmap_new(&bld->map) < 0) {
|
747
|
-
git__free(bld);
|
748
|
-
return -1;
|
749
|
-
}
|
750
|
-
|
751
760
|
if (source != NULL) {
|
752
761
|
git_tree_entry *entry_src;
|
753
762
|
|
754
763
|
git_array_foreach(source->entries, i, entry_src) {
|
755
764
|
if (append_entry(
|
756
765
|
bld, entry_src->filename,
|
757
|
-
entry_src->oid,
|
766
|
+
&entry_src->oid,
|
758
767
|
entry_src->attr,
|
759
768
|
false) < 0)
|
760
769
|
goto on_error;
|
@@ -786,13 +795,13 @@ int git_treebuilder_insert(
|
|
786
795
|
if ((error = check_entry(bld->repo, filename, id, filemode)) < 0)
|
787
796
|
return error;
|
788
797
|
|
789
|
-
if ((entry
|
790
|
-
git_oid_cpy(
|
798
|
+
if (git_treebuilder_entrymap_get(&entry, &bld->map, filename) == 0) {
|
799
|
+
git_oid_cpy(&entry->oid, id);
|
791
800
|
} else {
|
792
801
|
entry = alloc_entry(filename, strlen(filename), id);
|
793
802
|
GIT_ERROR_CHECK_ALLOC(entry);
|
794
803
|
|
795
|
-
if ((
|
804
|
+
if (git_treebuilder_entrymap_put(&bld->map, entry->filename, entry) < 0) {
|
796
805
|
git_tree_entry_free(entry);
|
797
806
|
git_error_set(GIT_ERROR_TREE, "failed to insert %s", filename);
|
798
807
|
return -1;
|
@@ -809,10 +818,15 @@ int git_treebuilder_insert(
|
|
809
818
|
|
810
819
|
static git_tree_entry *treebuilder_get(git_treebuilder *bld, const char *filename)
|
811
820
|
{
|
821
|
+
git_tree_entry *entry;
|
822
|
+
|
812
823
|
GIT_ASSERT_ARG_WITH_RETVAL(bld, NULL);
|
813
824
|
GIT_ASSERT_ARG_WITH_RETVAL(filename, NULL);
|
814
825
|
|
815
|
-
|
826
|
+
if (git_treebuilder_entrymap_get(&entry, &bld->map, filename) != 0)
|
827
|
+
return NULL;
|
828
|
+
|
829
|
+
return entry;
|
816
830
|
}
|
817
831
|
|
818
832
|
const git_tree_entry *git_treebuilder_get(git_treebuilder *bld, const char *filename)
|
@@ -827,7 +841,7 @@ int git_treebuilder_remove(git_treebuilder *bld, const char *filename)
|
|
827
841
|
if (entry == NULL)
|
828
842
|
return tree_error("failed to remove entry: file isn't in the tree", filename);
|
829
843
|
|
830
|
-
|
844
|
+
git_treebuilder_entrymap_remove(&bld->map, filename);
|
831
845
|
git_tree_entry_free(entry);
|
832
846
|
|
833
847
|
return 0;
|
@@ -848,16 +862,17 @@ int git_treebuilder_filter(
|
|
848
862
|
{
|
849
863
|
const char *filename;
|
850
864
|
git_tree_entry *entry;
|
865
|
+
git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
|
851
866
|
|
852
867
|
GIT_ASSERT_ARG(bld);
|
853
868
|
GIT_ASSERT_ARG(filter);
|
854
869
|
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
}
|
870
|
+
while (git_treebuilder_entrymap_iterate(&iter, &filename, &entry, &bld->map) == 0) {
|
871
|
+
if (filter(entry, payload)) {
|
872
|
+
git_treebuilder_entrymap_remove(&bld->map, filename);
|
873
|
+
git_tree_entry_free(entry);
|
874
|
+
}
|
875
|
+
}
|
861
876
|
|
862
877
|
return 0;
|
863
878
|
}
|
@@ -865,11 +880,14 @@ int git_treebuilder_filter(
|
|
865
880
|
int git_treebuilder_clear(git_treebuilder *bld)
|
866
881
|
{
|
867
882
|
git_tree_entry *e;
|
883
|
+
git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
|
868
884
|
|
869
885
|
GIT_ASSERT_ARG(bld);
|
870
886
|
|
871
|
-
|
872
|
-
|
887
|
+
while (git_treebuilder_entrymap_iterate(&iter, NULL, &e, &bld->map) == 0)
|
888
|
+
git_tree_entry_free(e);
|
889
|
+
|
890
|
+
git_treebuilder_entrymap_clear(&bld->map);
|
873
891
|
|
874
892
|
return 0;
|
875
893
|
}
|
@@ -879,9 +897,9 @@ void git_treebuilder_free(git_treebuilder *bld)
|
|
879
897
|
if (bld == NULL)
|
880
898
|
return;
|
881
899
|
|
882
|
-
|
900
|
+
git_str_dispose(&bld->write_cache);
|
883
901
|
git_treebuilder_clear(bld);
|
884
|
-
|
902
|
+
git_treebuilder_entrymap_dispose(&bld->map);
|
885
903
|
git__free(bld);
|
886
904
|
}
|
887
905
|
|
@@ -943,7 +961,7 @@ int git_tree_entry_bypath(
|
|
943
961
|
return git_tree_entry_dup(entry_out, entry);
|
944
962
|
}
|
945
963
|
|
946
|
-
if (git_tree_lookup(&subtree, root->object.repo, entry->oid) < 0)
|
964
|
+
if (git_tree_lookup(&subtree, root->object.repo, &entry->oid) < 0)
|
947
965
|
return -1;
|
948
966
|
|
949
967
|
error = git_tree_entry_bypath(
|
@@ -959,7 +977,7 @@ int git_tree_entry_bypath(
|
|
959
977
|
static int tree_walk(
|
960
978
|
const git_tree *tree,
|
961
979
|
git_treewalk_cb callback,
|
962
|
-
|
980
|
+
git_str *path,
|
963
981
|
void *payload,
|
964
982
|
bool preorder)
|
965
983
|
{
|
@@ -982,17 +1000,17 @@ static int tree_walk(
|
|
982
1000
|
|
983
1001
|
if (git_tree_entry__is_tree(entry)) {
|
984
1002
|
git_tree *subtree;
|
985
|
-
size_t path_len =
|
1003
|
+
size_t path_len = git_str_len(path);
|
986
1004
|
|
987
|
-
error = git_tree_lookup(&subtree, tree->object.repo, entry->oid);
|
1005
|
+
error = git_tree_lookup(&subtree, tree->object.repo, &entry->oid);
|
988
1006
|
if (error < 0)
|
989
1007
|
break;
|
990
1008
|
|
991
1009
|
/* append the next entry to the path */
|
992
|
-
|
993
|
-
|
1010
|
+
git_str_puts(path, entry->filename);
|
1011
|
+
git_str_putc(path, '/');
|
994
1012
|
|
995
|
-
if (
|
1013
|
+
if (git_str_oom(path))
|
996
1014
|
error = -1;
|
997
1015
|
else
|
998
1016
|
error = tree_walk(subtree, callback, path, payload, preorder);
|
@@ -1001,7 +1019,7 @@ static int tree_walk(
|
|
1001
1019
|
if (error != 0)
|
1002
1020
|
break;
|
1003
1021
|
|
1004
|
-
|
1022
|
+
git_str_truncate(path, path_len);
|
1005
1023
|
}
|
1006
1024
|
|
1007
1025
|
if (!preorder) {
|
@@ -1024,7 +1042,7 @@ int git_tree_walk(
|
|
1024
1042
|
void *payload)
|
1025
1043
|
{
|
1026
1044
|
int error = 0;
|
1027
|
-
|
1045
|
+
git_str root_path = GIT_STR_INIT;
|
1028
1046
|
|
1029
1047
|
if (mode != GIT_TREEWALK_POST && mode != GIT_TREEWALK_PRE) {
|
1030
1048
|
git_error_set(GIT_ERROR_INVALID, "invalid walking mode for tree walk");
|
@@ -1034,7 +1052,7 @@ int git_tree_walk(
|
|
1034
1052
|
error = tree_walk(
|
1035
1053
|
tree, callback, &root_path, payload, (mode == GIT_TREEWALK_PRE));
|
1036
1054
|
|
1037
|
-
|
1055
|
+
git_str_dispose(&root_path);
|
1038
1056
|
|
1039
1057
|
return error;
|
1040
1058
|
}
|
@@ -1080,19 +1098,19 @@ GIT_INLINE(size_t) count_slashes(const char *path)
|
|
1080
1098
|
return count;
|
1081
1099
|
}
|
1082
1100
|
|
1083
|
-
static bool next_component(
|
1101
|
+
static bool next_component(git_str *out, const char *in)
|
1084
1102
|
{
|
1085
1103
|
const char *slash = strchr(in, '/');
|
1086
1104
|
|
1087
|
-
|
1105
|
+
git_str_clear(out);
|
1088
1106
|
|
1089
1107
|
if (slash)
|
1090
|
-
|
1108
|
+
git_str_put(out, in, slash - in);
|
1091
1109
|
|
1092
1110
|
return !!slash;
|
1093
1111
|
}
|
1094
1112
|
|
1095
|
-
static int create_popped_tree(tree_stack_entry *current, tree_stack_entry *popped,
|
1113
|
+
static int create_popped_tree(tree_stack_entry *current, tree_stack_entry *popped, git_str *component)
|
1096
1114
|
{
|
1097
1115
|
int error;
|
1098
1116
|
git_oid new_tree;
|
@@ -1116,8 +1134,8 @@ static int create_popped_tree(tree_stack_entry *current, tree_stack_entry *poppe
|
|
1116
1134
|
}
|
1117
1135
|
|
1118
1136
|
/* We've written out the tree, now we have to put the new value into its parent */
|
1119
|
-
|
1120
|
-
|
1137
|
+
git_str_clear(component);
|
1138
|
+
git_str_puts(component, popped->name);
|
1121
1139
|
git__free(popped->name);
|
1122
1140
|
|
1123
1141
|
GIT_ERROR_CHECK_ALLOC(component->ptr);
|
@@ -1142,7 +1160,7 @@ int git_tree_create_updated(git_oid *out, git_repository *repo, git_tree *baseli
|
|
1142
1160
|
git_vector entries;
|
1143
1161
|
int error;
|
1144
1162
|
size_t i;
|
1145
|
-
|
1163
|
+
git_str component = GIT_STR_INIT;
|
1146
1164
|
|
1147
1165
|
if ((error = git_vector_init(&entries, nupdates, compare_entries)) < 0)
|
1148
1166
|
return error;
|
@@ -1171,7 +1189,7 @@ int git_tree_create_updated(git_oid *out, git_repository *repo, git_tree *baseli
|
|
1171
1189
|
|
1172
1190
|
/* Figure out how much we need to change from the previous tree */
|
1173
1191
|
if (last_update)
|
1174
|
-
common_prefix =
|
1192
|
+
common_prefix = git_fs_path_common_dirlen(last_update->path, update->path);
|
1175
1193
|
|
1176
1194
|
/*
|
1177
1195
|
* The entries are sorted, so when we find we're no
|
@@ -1233,7 +1251,7 @@ int git_tree_create_updated(git_oid *out, git_repository *repo, git_tree *baseli
|
|
1233
1251
|
{
|
1234
1252
|
/* Make sure we're replacing something of the same type */
|
1235
1253
|
tree_stack_entry *last = git_array_last(stack);
|
1236
|
-
char *basename =
|
1254
|
+
char *basename = git_fs_path_basename(update->path);
|
1237
1255
|
const git_tree_entry *e = git_treebuilder_get(last->bld, basename);
|
1238
1256
|
if (e && git_tree_entry_type(e) != git_object__type_from_filemode(update->filemode)) {
|
1239
1257
|
git__free(basename);
|
@@ -1252,7 +1270,7 @@ int git_tree_create_updated(git_oid *out, git_repository *repo, git_tree *baseli
|
|
1252
1270
|
case GIT_TREE_UPDATE_REMOVE:
|
1253
1271
|
{
|
1254
1272
|
tree_stack_entry *last = git_array_last(stack);
|
1255
|
-
char *basename =
|
1273
|
+
char *basename = git_fs_path_basename(update->path);
|
1256
1274
|
error = git_treebuilder_remove(last->bld, basename);
|
1257
1275
|
git__free(basename);
|
1258
1276
|
break;
|
@@ -1300,9 +1318,9 @@ cleanup:
|
|
1300
1318
|
}
|
1301
1319
|
}
|
1302
1320
|
|
1303
|
-
|
1321
|
+
git_str_dispose(&component);
|
1304
1322
|
git_array_clear(stack);
|
1305
|
-
|
1323
|
+
git_vector_dispose(&entries);
|
1306
1324
|
return error;
|
1307
1325
|
}
|
1308
1326
|
|
@@ -13,13 +13,12 @@
|
|
13
13
|
#include "repository.h"
|
14
14
|
#include "odb.h"
|
15
15
|
#include "vector.h"
|
16
|
-
#include "strmap.h"
|
17
16
|
#include "pool.h"
|
18
17
|
|
19
18
|
struct git_tree_entry {
|
20
19
|
uint16_t attr;
|
21
20
|
uint16_t filename_len;
|
22
|
-
|
21
|
+
git_oid oid;
|
23
22
|
const char *filename;
|
24
23
|
};
|
25
24
|
|
@@ -29,10 +28,12 @@ struct git_tree {
|
|
29
28
|
git_array_t(git_tree_entry) entries;
|
30
29
|
};
|
31
30
|
|
31
|
+
GIT_HASHMAP_STR_STRUCT(git_treebuilder_entrymap, git_tree_entry *);
|
32
|
+
|
32
33
|
struct git_treebuilder {
|
33
34
|
git_repository *repo;
|
34
|
-
|
35
|
-
|
35
|
+
git_treebuilder_entrymap map;
|
36
|
+
git_str write_cache;
|
36
37
|
};
|
37
38
|
|
38
39
|
GIT_INLINE(bool) git_tree_entry__is_tree(const struct git_tree_entry *e)
|
@@ -41,8 +42,8 @@ GIT_INLINE(bool) git_tree_entry__is_tree(const struct git_tree_entry *e)
|
|
41
42
|
}
|
42
43
|
|
43
44
|
void git_tree__free(void *tree);
|
44
|
-
int git_tree__parse(void *tree, git_odb_object *obj);
|
45
|
-
int git_tree__parse_raw(void *_tree, const char *data, size_t size);
|
45
|
+
int git_tree__parse(void *tree, git_odb_object *obj, git_oid_t oid_type);
|
46
|
+
int git_tree__parse_raw(void *_tree, const char *data, size_t size, git_oid_t oid_type);
|
46
47
|
|
47
48
|
/**
|
48
49
|
* Write a tree to the given repository
|