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
@@ -27,11 +27,11 @@ bool git_smart__ofs_delta_enabled = true;
|
|
27
27
|
|
28
28
|
int git_smart__store_refs(transport_smart *t, int flushes)
|
29
29
|
{
|
30
|
-
gitno_buffer *buf = &t->buffer;
|
31
30
|
git_vector *refs = &t->refs;
|
32
31
|
int error, flush = 0, recvd;
|
33
32
|
const char *line_end = NULL;
|
34
33
|
git_pkt *pkt = NULL;
|
34
|
+
git_pkt_parse_data pkt_parse_data = { 0 };
|
35
35
|
size_t i;
|
36
36
|
|
37
37
|
/* Clear existing refs in case git_remote_connect() is called again
|
@@ -44,8 +44,10 @@ int git_smart__store_refs(transport_smart *t, int flushes)
|
|
44
44
|
pkt = NULL;
|
45
45
|
|
46
46
|
do {
|
47
|
-
if (
|
48
|
-
error = git_pkt_parse_line(&pkt, &line_end,
|
47
|
+
if (t->buffer.len > 0)
|
48
|
+
error = git_pkt_parse_line(&pkt, &line_end,
|
49
|
+
t->buffer.data, t->buffer.len,
|
50
|
+
&pkt_parse_data);
|
49
51
|
else
|
50
52
|
error = GIT_EBUFS;
|
51
53
|
|
@@ -53,19 +55,18 @@ int git_smart__store_refs(transport_smart *t, int flushes)
|
|
53
55
|
return error;
|
54
56
|
|
55
57
|
if (error == GIT_EBUFS) {
|
56
|
-
if ((recvd =
|
58
|
+
if ((recvd = git_smart__recv(t)) < 0)
|
57
59
|
return recvd;
|
58
60
|
|
59
61
|
if (recvd == 0) {
|
60
|
-
git_error_set(GIT_ERROR_NET, "
|
62
|
+
git_error_set(GIT_ERROR_NET, "could not read refs from remote repository");
|
61
63
|
return GIT_EEOF;
|
62
64
|
}
|
63
65
|
|
64
66
|
continue;
|
65
67
|
}
|
66
68
|
|
67
|
-
|
68
|
-
return -1;
|
69
|
+
git_staticstr_consume(&t->buffer, line_end);
|
69
70
|
|
70
71
|
if (pkt->type == GIT_PKT_ERR) {
|
71
72
|
git_error_set(GIT_ERROR_NET, "remote error: %s", ((git_pkt_err *)pkt)->error);
|
@@ -89,7 +90,7 @@ static int append_symref(const char **out, git_vector *symrefs, const char *ptr)
|
|
89
90
|
{
|
90
91
|
int error;
|
91
92
|
const char *end;
|
92
|
-
|
93
|
+
git_str buf = GIT_STR_INIT;
|
93
94
|
git_refspec *mapping = NULL;
|
94
95
|
|
95
96
|
ptr += strlen(GIT_CAP_SYMREF);
|
@@ -101,15 +102,15 @@ static int append_symref(const char **out, git_vector *symrefs, const char *ptr)
|
|
101
102
|
!(end = strchr(ptr, '\0')))
|
102
103
|
goto on_invalid;
|
103
104
|
|
104
|
-
if ((error =
|
105
|
+
if ((error = git_str_put(&buf, ptr, end - ptr)) < 0)
|
105
106
|
return error;
|
106
107
|
|
107
108
|
/* symref mapping has refspec format */
|
108
109
|
mapping = git__calloc(1, sizeof(git_refspec));
|
109
110
|
GIT_ERROR_CHECK_ALLOC(mapping);
|
110
111
|
|
111
|
-
error = git_refspec__parse(mapping,
|
112
|
-
|
112
|
+
error = git_refspec__parse(mapping, git_str_cstr(&buf), true);
|
113
|
+
git_str_dispose(&buf);
|
113
114
|
|
114
115
|
/* if the error isn't OOM, then it's a parse error; let's use a nicer message */
|
115
116
|
if (error < 0) {
|
@@ -133,11 +134,14 @@ on_invalid:
|
|
133
134
|
return -1;
|
134
135
|
}
|
135
136
|
|
136
|
-
int git_smart__detect_caps(
|
137
|
+
int git_smart__detect_caps(
|
138
|
+
git_pkt_ref *pkt,
|
139
|
+
transport_smart_caps *caps,
|
140
|
+
git_vector *symrefs)
|
137
141
|
{
|
138
|
-
const char *ptr;
|
142
|
+
const char *ptr, *start;
|
139
143
|
|
140
|
-
/* No refs or
|
144
|
+
/* No refs or capabilities, odd but not a problem */
|
141
145
|
if (pkt == NULL || pkt->capabilities == NULL)
|
142
146
|
return GIT_ENOTFOUND;
|
143
147
|
|
@@ -190,6 +194,12 @@ int git_smart__detect_caps(git_pkt_ref *pkt, transport_smart_caps *caps, git_vec
|
|
190
194
|
continue;
|
191
195
|
}
|
192
196
|
|
197
|
+
if (!git__prefixcmp(ptr, GIT_CAP_PUSH_OPTIONS)) {
|
198
|
+
caps->common = caps->push_options = 1;
|
199
|
+
ptr += strlen(GIT_CAP_PUSH_OPTIONS);
|
200
|
+
continue;
|
201
|
+
}
|
202
|
+
|
193
203
|
if (!git__prefixcmp(ptr, GIT_CAP_THIN_PACK)) {
|
194
204
|
caps->common = caps->thin_pack = 1;
|
195
205
|
ptr += strlen(GIT_CAP_THIN_PACK);
|
@@ -205,6 +215,46 @@ int git_smart__detect_caps(git_pkt_ref *pkt, transport_smart_caps *caps, git_vec
|
|
205
215
|
continue;
|
206
216
|
}
|
207
217
|
|
218
|
+
if (!git__prefixcmp(ptr, GIT_CAP_WANT_TIP_SHA1)) {
|
219
|
+
caps->common = caps->want_tip_sha1 = 1;
|
220
|
+
ptr += strlen(GIT_CAP_WANT_TIP_SHA1);
|
221
|
+
continue;
|
222
|
+
}
|
223
|
+
|
224
|
+
if (!git__prefixcmp(ptr, GIT_CAP_WANT_REACHABLE_SHA1)) {
|
225
|
+
caps->common = caps->want_reachable_sha1 = 1;
|
226
|
+
ptr += strlen(GIT_CAP_WANT_REACHABLE_SHA1);
|
227
|
+
continue;
|
228
|
+
}
|
229
|
+
|
230
|
+
if (!git__prefixcmp(ptr, GIT_CAP_OBJECT_FORMAT)) {
|
231
|
+
ptr += strlen(GIT_CAP_OBJECT_FORMAT);
|
232
|
+
|
233
|
+
start = ptr;
|
234
|
+
ptr = strchr(ptr, ' ');
|
235
|
+
|
236
|
+
if ((caps->object_format = git__strndup(start, (ptr - start))) == NULL)
|
237
|
+
return -1;
|
238
|
+
continue;
|
239
|
+
}
|
240
|
+
|
241
|
+
if (!git__prefixcmp(ptr, GIT_CAP_AGENT)) {
|
242
|
+
ptr += strlen(GIT_CAP_AGENT);
|
243
|
+
|
244
|
+
start = ptr;
|
245
|
+
ptr = strchr(ptr, ' ');
|
246
|
+
|
247
|
+
if ((caps->agent = git__strndup(start, (ptr - start))) == NULL)
|
248
|
+
return -1;
|
249
|
+
continue;
|
250
|
+
}
|
251
|
+
|
252
|
+
if (!git__prefixcmp(ptr, GIT_CAP_SHALLOW)) {
|
253
|
+
caps->common = caps->shallow = 1;
|
254
|
+
ptr += strlen(GIT_CAP_SHALLOW);
|
255
|
+
continue;
|
256
|
+
}
|
257
|
+
|
208
258
|
/* We don't know this capability, so skip it */
|
209
259
|
ptr = strchr(ptr, ' ');
|
210
260
|
}
|
@@ -212,15 +262,23 @@ int git_smart__detect_caps(git_pkt_ref *pkt, transport_smart_caps *caps, git_vec
|
|
212
262
|
return 0;
|
213
263
|
}
|
214
264
|
|
215
|
-
static int recv_pkt(
|
265
|
+
static int recv_pkt(
|
266
|
+
git_pkt **out_pkt,
|
267
|
+
git_pkt_type *out_type,
|
268
|
+
transport_smart *t)
|
216
269
|
{
|
217
|
-
const char *ptr =
|
270
|
+
const char *ptr = t->buffer.data, *line_end = ptr;
|
218
271
|
git_pkt *pkt = NULL;
|
272
|
+
git_pkt_parse_data pkt_parse_data = { 0 };
|
219
273
|
int error = 0, ret;
|
220
274
|
|
275
|
+
pkt_parse_data.oid_type = t->owner->repo->oid_type;
|
276
|
+
pkt_parse_data.seen_capabilities = 1;
|
277
|
+
|
221
278
|
do {
|
222
|
-
if (
|
223
|
-
error = git_pkt_parse_line(&pkt, &line_end, ptr,
|
279
|
+
if (t->buffer.len > 0)
|
280
|
+
error = git_pkt_parse_line(&pkt, &line_end, ptr,
|
281
|
+
t->buffer.len, &pkt_parse_data);
|
224
282
|
else
|
225
283
|
error = GIT_EBUFS;
|
226
284
|
|
@@ -230,16 +288,15 @@ static int recv_pkt(git_pkt **out_pkt, git_pkt_type *out_type, gitno_buffer *buf
|
|
230
288
|
if (error < 0 && error != GIT_EBUFS)
|
231
289
|
return error;
|
232
290
|
|
233
|
-
if ((ret =
|
291
|
+
if ((ret = git_smart__recv(t)) < 0) {
|
234
292
|
return ret;
|
235
293
|
} else if (ret == 0) {
|
236
|
-
git_error_set(GIT_ERROR_NET, "
|
294
|
+
git_error_set(GIT_ERROR_NET, "could not read from remote repository");
|
237
295
|
return GIT_EEOF;
|
238
296
|
}
|
239
297
|
} while (error);
|
240
298
|
|
241
|
-
|
242
|
-
return -1;
|
299
|
+
git_staticstr_consume(&t->buffer, line_end);
|
243
300
|
|
244
301
|
if (out_type != NULL)
|
245
302
|
*out_type = pkt->type;
|
@@ -254,13 +311,19 @@ static int recv_pkt(git_pkt **out_pkt, git_pkt_type *out_type, gitno_buffer *buf
|
|
254
311
|
static int store_common(transport_smart *t)
|
255
312
|
{
|
256
313
|
git_pkt *pkt = NULL;
|
257
|
-
gitno_buffer *buf = &t->buffer;
|
258
314
|
int error;
|
259
315
|
|
260
316
|
do {
|
261
|
-
if ((error = recv_pkt(&pkt, NULL,
|
317
|
+
if ((error = recv_pkt(&pkt, NULL, t)) < 0)
|
262
318
|
return error;
|
263
319
|
|
320
|
+
if (t->rpc && (pkt->type == GIT_PKT_SHALLOW ||
|
321
|
+
pkt->type == GIT_PKT_UNSHALLOW ||
|
322
|
+
pkt->type == GIT_PKT_FLUSH)) {
|
323
|
+
git__free(pkt);
|
324
|
+
continue;
|
325
|
+
}
|
326
|
+
|
264
327
|
if (pkt->type != GIT_PKT_ACK) {
|
265
328
|
git__free(pkt);
|
266
329
|
return 0;
|
@@ -275,7 +338,7 @@ static int store_common(transport_smart *t)
|
|
275
338
|
return 0;
|
276
339
|
}
|
277
340
|
|
278
|
-
static int wait_while_ack(
|
341
|
+
static int wait_while_ack(transport_smart *t)
|
279
342
|
{
|
280
343
|
int error;
|
281
344
|
git_pkt *pkt = NULL;
|
@@ -284,7 +347,7 @@ static int wait_while_ack(gitno_buffer *buf)
|
|
284
347
|
while (1) {
|
285
348
|
git_pkt_free(pkt);
|
286
349
|
|
287
|
-
if ((error = recv_pkt(&pkt, NULL,
|
350
|
+
if ((error = recv_pkt(&pkt, NULL, t)) < 0)
|
288
351
|
return error;
|
289
352
|
|
290
353
|
if (pkt->type == GIT_PKT_NAK)
|
@@ -305,19 +368,64 @@ static int wait_while_ack(gitno_buffer *buf)
|
|
305
368
|
return 0;
|
306
369
|
}
|
307
370
|
|
308
|
-
int
|
371
|
+
static int cap_not_sup_err(const char *cap_name)
|
372
|
+
{
|
373
|
+
git_error_set(GIT_ERROR_NET, "server doesn't support %s", cap_name);
|
374
|
+
return GIT_EINVALID;
|
375
|
+
}
|
376
|
+
|
377
|
+
/* Disables server capabilities we're not interested in */
|
378
|
+
static int setup_caps(
|
379
|
+
transport_smart_caps *caps,
|
380
|
+
const git_fetch_negotiation *wants)
|
381
|
+
{
|
382
|
+
if (wants->depth > 0) {
|
383
|
+
if (!caps->shallow)
|
384
|
+
return cap_not_sup_err(GIT_CAP_SHALLOW);
|
385
|
+
} else {
|
386
|
+
caps->shallow = 0;
|
387
|
+
}
|
388
|
+
|
389
|
+
return 0;
|
390
|
+
}
|
391
|
+
|
392
|
+
static int setup_shallow_roots(
|
393
|
+
git_array_oid_t *out,
|
394
|
+
const git_fetch_negotiation *wants)
|
395
|
+
{
|
396
|
+
git_array_clear(*out);
|
397
|
+
|
398
|
+
if (wants->shallow_roots_len > 0) {
|
399
|
+
git_array_init_to_size(*out, wants->shallow_roots_len);
|
400
|
+
GIT_ERROR_CHECK_ALLOC(out->ptr);
|
401
|
+
|
402
|
+
memcpy(out->ptr, wants->shallow_roots,
|
403
|
+
sizeof(git_oid) * wants->shallow_roots_len);
|
404
|
+
out->size = wants->shallow_roots_len;
|
405
|
+
}
|
406
|
+
|
407
|
+
return 0;
|
408
|
+
}
|
409
|
+
|
410
|
+
int git_smart__negotiate_fetch(
|
411
|
+
git_transport *transport,
|
412
|
+
git_repository *repo,
|
413
|
+
const git_fetch_negotiation *wants)
|
309
414
|
{
|
310
415
|
transport_smart *t = (transport_smart *)transport;
|
311
416
|
git_revwalk__push_options opts = GIT_REVWALK__PUSH_OPTIONS_INIT;
|
312
|
-
|
313
|
-
git_buf data = GIT_BUF_INIT;
|
417
|
+
git_str data = GIT_STR_INIT;
|
314
418
|
git_revwalk *walk = NULL;
|
315
419
|
int error = -1;
|
316
420
|
git_pkt_type pkt_type;
|
317
421
|
unsigned int i;
|
318
422
|
git_oid oid;
|
319
423
|
|
320
|
-
if ((error =
|
424
|
+
if ((error = setup_caps(&t->caps, wants)) < 0 ||
|
425
|
+
(error = setup_shallow_roots(&t->shallow_roots, wants)) < 0)
|
426
|
+
return error;
|
427
|
+
|
428
|
+
if ((error = git_pkt_buffer_wants(wants, &t->caps, &data)) < 0)
|
321
429
|
return error;
|
322
430
|
|
323
431
|
if ((error = git_revwalk_new(&walk, repo)) < 0)
|
@@ -327,6 +435,40 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
|
|
327
435
|
if ((error = git_revwalk__push_glob(walk, "refs/*", &opts)) < 0)
|
328
436
|
goto on_error;
|
329
437
|
|
438
|
+
if (wants->depth > 0) {
|
439
|
+
git_pkt_shallow *pkt;
|
440
|
+
|
441
|
+
if ((error = git_smart__negotiation_step(&t->parent, data.ptr, data.size)) < 0)
|
442
|
+
goto on_error;
|
443
|
+
|
444
|
+
if (!t->rpc)
|
445
|
+
git_str_clear(&data);
|
446
|
+
|
447
|
+
while ((error = recv_pkt((git_pkt **)&pkt, NULL, t)) == 0) {
|
448
|
+
bool complete = false;
|
449
|
+
|
450
|
+
if (pkt->type == GIT_PKT_SHALLOW) {
|
451
|
+
error = git_oidarray__add(&t->shallow_roots, &pkt->oid);
|
452
|
+
} else if (pkt->type == GIT_PKT_UNSHALLOW) {
|
453
|
+
git_oidarray__remove(&t->shallow_roots, &pkt->oid);
|
454
|
+
} else if (pkt->type == GIT_PKT_FLUSH) {
|
455
|
+
/* Server is done, stop processing shallow oids */
|
456
|
+
complete = true;
|
457
|
+
} else {
|
458
|
+
git_error_set(GIT_ERROR_NET, "unexpected packet type");
|
459
|
+
error = -1;
|
460
|
+
}
|
461
|
+
|
462
|
+
git_pkt_free((git_pkt *) pkt);
|
463
|
+
|
464
|
+
if (complete || error < 0)
|
465
|
+
break;
|
466
|
+
}
|
467
|
+
|
468
|
+
if (error < 0)
|
469
|
+
goto on_error;
|
470
|
+
}
|
471
|
+
|
330
472
|
/*
|
331
473
|
* Our support for ACK extensions is simply to parse them. On
|
332
474
|
* the first ACK we will accept that as enough common
|
@@ -354,7 +496,7 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
|
|
354
496
|
}
|
355
497
|
|
356
498
|
git_pkt_buffer_flush(&data);
|
357
|
-
if (
|
499
|
+
if (git_str_oom(&data)) {
|
358
500
|
error = -1;
|
359
501
|
goto on_error;
|
360
502
|
}
|
@@ -362,12 +504,12 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
|
|
362
504
|
if ((error = git_smart__negotiation_step(&t->parent, data.ptr, data.size)) < 0)
|
363
505
|
goto on_error;
|
364
506
|
|
365
|
-
|
507
|
+
git_str_clear(&data);
|
366
508
|
if (t->caps.multi_ack || t->caps.multi_ack_detailed) {
|
367
509
|
if ((error = store_common(t)) < 0)
|
368
510
|
goto on_error;
|
369
511
|
} else {
|
370
|
-
if ((error = recv_pkt(NULL, &pkt_type,
|
512
|
+
if ((error = recv_pkt(NULL, &pkt_type, t)) < 0)
|
371
513
|
goto on_error;
|
372
514
|
|
373
515
|
if (pkt_type == GIT_PKT_ACK) {
|
@@ -389,7 +531,7 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
|
|
389
531
|
git_pkt_ack *pkt;
|
390
532
|
unsigned int j;
|
391
533
|
|
392
|
-
if ((error = git_pkt_buffer_wants(wants,
|
534
|
+
if ((error = git_pkt_buffer_wants(wants, &t->caps, &data)) < 0)
|
393
535
|
goto on_error;
|
394
536
|
|
395
537
|
git_vector_foreach(&t->common, j, pkt) {
|
@@ -397,7 +539,7 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
|
|
397
539
|
goto on_error;
|
398
540
|
}
|
399
541
|
|
400
|
-
if (
|
542
|
+
if (git_str_oom(&data)) {
|
401
543
|
error = -1;
|
402
544
|
goto on_error;
|
403
545
|
}
|
@@ -409,7 +551,7 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
|
|
409
551
|
git_pkt_ack *pkt;
|
410
552
|
unsigned int j;
|
411
553
|
|
412
|
-
if ((error = git_pkt_buffer_wants(wants,
|
554
|
+
if ((error = git_pkt_buffer_wants(wants, &t->caps, &data)) < 0)
|
413
555
|
goto on_error;
|
414
556
|
|
415
557
|
git_vector_foreach(&t->common, j, pkt) {
|
@@ -417,7 +559,7 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
|
|
417
559
|
goto on_error;
|
418
560
|
}
|
419
561
|
|
420
|
-
if (
|
562
|
+
if (git_str_oom(&data)) {
|
421
563
|
error = -1;
|
422
564
|
goto on_error;
|
423
565
|
}
|
@@ -427,19 +569,20 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
|
|
427
569
|
goto on_error;
|
428
570
|
|
429
571
|
if (t->cancelled.val) {
|
430
|
-
git_error_set(GIT_ERROR_NET, "
|
572
|
+
git_error_set(GIT_ERROR_NET, "the fetch was cancelled");
|
431
573
|
error = GIT_EUSER;
|
432
574
|
goto on_error;
|
433
575
|
}
|
576
|
+
|
434
577
|
if ((error = git_smart__negotiation_step(&t->parent, data.ptr, data.size)) < 0)
|
435
578
|
goto on_error;
|
436
579
|
|
437
|
-
|
580
|
+
git_str_dispose(&data);
|
438
581
|
git_revwalk_free(walk);
|
439
582
|
|
440
583
|
/* Now let's eat up whatever the server gives us */
|
441
584
|
if (!t->caps.multi_ack && !t->caps.multi_ack_detailed) {
|
442
|
-
if ((error = recv_pkt(NULL, &pkt_type,
|
585
|
+
if ((error = recv_pkt(NULL, &pkt_type, t)) < 0)
|
443
586
|
return error;
|
444
587
|
|
445
588
|
if (pkt_type != GIT_PKT_ACK && pkt_type != GIT_PKT_NAK) {
|
@@ -447,18 +590,40 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
|
|
447
590
|
return -1;
|
448
591
|
}
|
449
592
|
} else {
|
450
|
-
error = wait_while_ack(
|
593
|
+
error = wait_while_ack(t);
|
451
594
|
}
|
452
595
|
|
453
596
|
return error;
|
454
597
|
|
455
598
|
on_error:
|
456
599
|
git_revwalk_free(walk);
|
457
|
-
|
600
|
+
git_str_dispose(&data);
|
458
601
|
return error;
|
459
602
|
}
|
460
603
|
|
461
|
-
|
604
|
+
int git_smart__shallow_roots(git_oidarray *out, git_transport *transport)
|
605
|
+
{
|
606
|
+
transport_smart *t = (transport_smart *)transport;
|
607
|
+
size_t len;
|
608
|
+
|
609
|
+
GIT_ERROR_CHECK_ALLOC_MULTIPLY(&len, t->shallow_roots.size, sizeof(git_oid));
|
610
|
+
|
611
|
+
out->count = t->shallow_roots.size;
|
612
|
+
|
613
|
+
if (len) {
|
614
|
+
out->ids = git__malloc(len);
|
615
|
+
memcpy(out->ids, t->shallow_roots.ptr, len);
|
616
|
+
} else {
|
617
|
+
out->ids = NULL;
|
618
|
+
}
|
619
|
+
|
620
|
+
return 0;
|
621
|
+
}
|
622
|
+
|
623
|
+
static int no_sideband(
|
624
|
+
transport_smart *t,
|
625
|
+
struct git_odb_writepack *writepack,
|
626
|
+
git_indexer_progress *stats)
|
462
627
|
{
|
463
628
|
int recvd;
|
464
629
|
|
@@ -468,12 +633,12 @@ static int no_sideband(transport_smart *t, struct git_odb_writepack *writepack,
|
|
468
633
|
return GIT_EUSER;
|
469
634
|
}
|
470
635
|
|
471
|
-
if (writepack->append(writepack,
|
636
|
+
if (writepack->append(writepack, t->buffer.data, t->buffer.len, stats) < 0)
|
472
637
|
return -1;
|
473
638
|
|
474
|
-
|
639
|
+
git_staticstr_clear(&t->buffer);
|
475
640
|
|
476
|
-
if ((recvd =
|
641
|
+
if ((recvd = git_smart__recv(t)) < 0)
|
477
642
|
return recvd;
|
478
643
|
} while(recvd > 0);
|
479
644
|
|
@@ -512,17 +677,17 @@ static int network_packetsize(size_t received, void *payload)
|
|
512
677
|
int git_smart__download_pack(
|
513
678
|
git_transport *transport,
|
514
679
|
git_repository *repo,
|
515
|
-
git_indexer_progress *stats
|
516
|
-
git_indexer_progress_cb progress_cb,
|
517
|
-
void *progress_payload)
|
680
|
+
git_indexer_progress *stats)
|
518
681
|
{
|
519
682
|
transport_smart *t = (transport_smart *)transport;
|
520
|
-
gitno_buffer *buf = &t->buffer;
|
521
683
|
git_odb *odb;
|
522
684
|
struct git_odb_writepack *writepack = NULL;
|
523
685
|
int error = 0;
|
524
686
|
struct network_packetsize_payload npp = {0};
|
525
687
|
|
688
|
+
git_indexer_progress_cb progress_cb = t->connect_opts.callbacks.transfer_progress;
|
689
|
+
void *progress_payload = t->connect_opts.callbacks.payload;
|
690
|
+
|
526
691
|
memset(stats, 0, sizeof(git_indexer_progress));
|
527
692
|
|
528
693
|
if (progress_cb) {
|
@@ -533,9 +698,10 @@ int git_smart__download_pack(
|
|
533
698
|
t->packetsize_payload = &npp;
|
534
699
|
|
535
700
|
/* We might have something in the buffer already from negotiate_fetch */
|
536
|
-
if (t->buffer.
|
537
|
-
if (t->packetsize_cb(t->buffer.
|
701
|
+
if (t->buffer.len > 0 && !t->cancelled.val) {
|
702
|
+
if (t->packetsize_cb(t->buffer.len, t->packetsize_payload))
|
538
703
|
git_atomic32_set(&t->cancelled, 1);
|
704
|
+
}
|
539
705
|
}
|
540
706
|
|
541
707
|
if ((error = git_repository_odb__weakptr(&odb, repo)) < 0 ||
|
@@ -548,7 +714,7 @@ int git_smart__download_pack(
|
|
548
714
|
* check which one belongs there.
|
549
715
|
*/
|
550
716
|
if (!t->caps.side_band && !t->caps.side_band_64k) {
|
551
|
-
error = no_sideband(t, writepack,
|
717
|
+
error = no_sideband(t, writepack, stats);
|
552
718
|
goto done;
|
553
719
|
}
|
554
720
|
|
@@ -562,13 +728,13 @@ int git_smart__download_pack(
|
|
562
728
|
goto done;
|
563
729
|
}
|
564
730
|
|
565
|
-
if ((error = recv_pkt(&pkt, NULL,
|
731
|
+
if ((error = recv_pkt(&pkt, NULL, t)) >= 0) {
|
566
732
|
/* Check cancellation after network call */
|
567
733
|
if (t->cancelled.val) {
|
568
734
|
git_error_clear();
|
569
735
|
error = GIT_EUSER;
|
570
736
|
} else if (pkt->type == GIT_PKT_PROGRESS) {
|
571
|
-
if (t->
|
737
|
+
if (t->connect_opts.callbacks.sideband_progress) {
|
572
738
|
git_pkt_progress *p = (git_pkt_progress *) pkt;
|
573
739
|
|
574
740
|
if (p->len > INT_MAX) {
|
@@ -577,7 +743,7 @@ int git_smart__download_pack(
|
|
577
743
|
goto done;
|
578
744
|
}
|
579
745
|
|
580
|
-
error = t->
|
746
|
+
error = t->connect_opts.callbacks.sideband_progress(p->data, (int)p->len, t->connect_opts.callbacks.payload);
|
581
747
|
}
|
582
748
|
} else if (pkt->type == GIT_PKT_DATA) {
|
583
749
|
git_pkt_data *p = (git_pkt_data *) pkt;
|
@@ -626,45 +792,73 @@ done:
|
|
626
792
|
return error;
|
627
793
|
}
|
628
794
|
|
629
|
-
static int gen_pktline(
|
795
|
+
static int gen_pktline(git_str *buf, git_push *push)
|
630
796
|
{
|
631
797
|
push_spec *spec;
|
798
|
+
char *option;
|
632
799
|
size_t i, len;
|
633
|
-
char old_id[
|
634
|
-
|
635
|
-
old_id[GIT_OID_HEXSZ] = '\0'; new_id[GIT_OID_HEXSZ] = '\0';
|
800
|
+
char old_id[GIT_OID_MAX_HEXSIZE + 1], new_id[GIT_OID_MAX_HEXSIZE + 1];
|
801
|
+
size_t old_id_len, new_id_len;
|
636
802
|
|
637
803
|
git_vector_foreach(&push->specs, i, spec) {
|
638
|
-
len =
|
804
|
+
len = strlen(spec->refspec.dst) + 7;
|
639
805
|
|
640
806
|
if (i == 0) {
|
641
|
-
|
807
|
+
/* Need a leading \0 */
|
808
|
+
++len;
|
809
|
+
|
642
810
|
if (push->report_status)
|
643
811
|
len += strlen(GIT_CAP_REPORT_STATUS) + 1;
|
812
|
+
|
813
|
+
if (git_vector_length(&push->remote_push_options) > 0)
|
814
|
+
len += strlen(GIT_CAP_PUSH_OPTIONS) + 1;
|
815
|
+
|
644
816
|
len += strlen(GIT_CAP_SIDE_BAND_64K) + 1;
|
645
817
|
}
|
646
818
|
|
819
|
+
old_id_len = git_oid_hexsize(git_oid_type(&spec->roid));
|
820
|
+
new_id_len = git_oid_hexsize(git_oid_type(&spec->loid));
|
821
|
+
|
822
|
+
len += (old_id_len + new_id_len);
|
823
|
+
|
647
824
|
git_oid_fmt(old_id, &spec->roid);
|
825
|
+
old_id[old_id_len] = '\0';
|
826
|
+
|
648
827
|
git_oid_fmt(new_id, &spec->loid);
|
828
|
+
new_id[new_id_len] = '\0';
|
649
829
|
|
650
|
-
|
830
|
+
git_str_printf(buf, "%04"PRIxZ"%.*s %.*s %s", len,
|
831
|
+
(int)old_id_len, old_id, (int)new_id_len, new_id,
|
832
|
+
spec->refspec.dst);
|
651
833
|
|
652
834
|
if (i == 0) {
|
653
|
-
|
835
|
+
git_str_putc(buf, '\0');
|
836
|
+
|
654
837
|
/* Core git always starts their capabilities string with a space */
|
655
838
|
if (push->report_status) {
|
656
|
-
|
657
|
-
|
839
|
+
git_str_putc(buf, ' ');
|
840
|
+
git_str_printf(buf, GIT_CAP_REPORT_STATUS);
|
841
|
+
}
|
842
|
+
if (git_vector_length(&push->remote_push_options) > 0) {
|
843
|
+
git_str_putc(buf, ' ');
|
844
|
+
git_str_printf(buf, GIT_CAP_PUSH_OPTIONS);
|
658
845
|
}
|
659
|
-
|
660
|
-
|
846
|
+
git_str_putc(buf, ' ');
|
847
|
+
git_str_printf(buf, GIT_CAP_SIDE_BAND_64K);
|
661
848
|
}
|
662
849
|
|
663
|
-
|
850
|
+
git_str_putc(buf, '\n');
|
851
|
+
}
|
852
|
+
|
853
|
+
if (git_vector_length(&push->remote_push_options) > 0) {
|
854
|
+
git_str_printf(buf, "0000");
|
855
|
+
git_vector_foreach(&push->remote_push_options, i, option) {
|
856
|
+
git_str_printf(buf, "%04"PRIxZ"%s", strlen(option) + 4 , option);
|
857
|
+
}
|
664
858
|
}
|
665
859
|
|
666
|
-
|
667
|
-
return
|
860
|
+
git_str_puts(buf, "0000");
|
861
|
+
return git_str_oom(buf) ? -1 : 0;
|
668
862
|
}
|
669
863
|
|
670
864
|
static int add_push_report_pkt(git_push *push, git_pkt *pkt)
|
@@ -707,9 +901,10 @@ static int add_push_report_pkt(git_push *push, git_pkt *pkt)
|
|
707
901
|
return 0;
|
708
902
|
}
|
709
903
|
|
710
|
-
static int add_push_report_sideband_pkt(git_push *push, git_pkt_data *data_pkt,
|
904
|
+
static int add_push_report_sideband_pkt(git_push *push, git_pkt_data *data_pkt, git_str *data_pkt_buf)
|
711
905
|
{
|
712
906
|
git_pkt *pkt;
|
907
|
+
git_pkt_parse_data pkt_parse_data = { 0 };
|
713
908
|
const char *line, *line_end = NULL;
|
714
909
|
size_t line_len;
|
715
910
|
int error;
|
@@ -718,7 +913,7 @@ static int add_push_report_sideband_pkt(git_push *push, git_pkt_data *data_pkt,
|
|
718
913
|
if (reading_from_buf) {
|
719
914
|
/* We had an existing partial packet, so add the new
|
720
915
|
* packet to the buffer and parse the whole thing */
|
721
|
-
|
916
|
+
git_str_put(data_pkt_buf, data_pkt->data, data_pkt->len);
|
722
917
|
line = data_pkt_buf->ptr;
|
723
918
|
line_len = data_pkt_buf->size;
|
724
919
|
}
|
@@ -728,13 +923,13 @@ static int add_push_report_sideband_pkt(git_push *push, git_pkt_data *data_pkt,
|
|
728
923
|
}
|
729
924
|
|
730
925
|
while (line_len > 0) {
|
731
|
-
error = git_pkt_parse_line(&pkt, &line_end, line, line_len);
|
926
|
+
error = git_pkt_parse_line(&pkt, &line_end, line, line_len, &pkt_parse_data);
|
732
927
|
|
733
928
|
if (error == GIT_EBUFS) {
|
734
929
|
/* Buffer the data when the inner packet is split
|
735
930
|
* across multiple sideband packets */
|
736
931
|
if (!reading_from_buf)
|
737
|
-
|
932
|
+
git_str_put(data_pkt_buf, line, line_len);
|
738
933
|
error = 0;
|
739
934
|
goto done;
|
740
935
|
}
|
@@ -757,22 +952,24 @@ static int add_push_report_sideband_pkt(git_push *push, git_pkt_data *data_pkt,
|
|
757
952
|
|
758
953
|
done:
|
759
954
|
if (reading_from_buf)
|
760
|
-
|
955
|
+
git_str_consume(data_pkt_buf, line_end);
|
761
956
|
return error;
|
762
957
|
}
|
763
958
|
|
764
959
|
static int parse_report(transport_smart *transport, git_push *push)
|
765
960
|
{
|
766
961
|
git_pkt *pkt = NULL;
|
962
|
+
git_pkt_parse_data pkt_parse_data = { 0 };
|
767
963
|
const char *line_end = NULL;
|
768
|
-
gitno_buffer *buf = &transport->buffer;
|
769
964
|
int error, recvd;
|
770
|
-
|
965
|
+
git_str data_pkt_buf = GIT_STR_INIT;
|
771
966
|
|
772
967
|
for (;;) {
|
773
|
-
if (
|
968
|
+
if (transport->buffer.len > 0)
|
774
969
|
error = git_pkt_parse_line(&pkt, &line_end,
|
775
|
-
|
970
|
+
transport->buffer.data,
|
971
|
+
transport->buffer.len,
|
972
|
+
&pkt_parse_data);
|
776
973
|
else
|
777
974
|
error = GIT_EBUFS;
|
778
975
|
|
@@ -782,22 +979,20 @@ static int parse_report(transport_smart *transport, git_push *push)
|
|
782
979
|
}
|
783
980
|
|
784
981
|
if (error == GIT_EBUFS) {
|
785
|
-
if ((recvd =
|
982
|
+
if ((recvd = git_smart__recv(transport)) < 0) {
|
786
983
|
error = recvd;
|
787
984
|
goto done;
|
788
985
|
}
|
789
986
|
|
790
987
|
if (recvd == 0) {
|
791
|
-
git_error_set(GIT_ERROR_NET, "
|
988
|
+
git_error_set(GIT_ERROR_NET, "could not read report from remote repository");
|
792
989
|
error = GIT_EEOF;
|
793
990
|
goto done;
|
794
991
|
}
|
795
992
|
continue;
|
796
993
|
}
|
797
994
|
|
798
|
-
|
799
|
-
return -1;
|
800
|
-
|
995
|
+
git_staticstr_consume(&transport->buffer, line_end);
|
801
996
|
error = 0;
|
802
997
|
|
803
998
|
switch (pkt->type) {
|
@@ -811,7 +1006,7 @@ static int parse_report(transport_smart *transport, git_push *push)
|
|
811
1006
|
error = -1;
|
812
1007
|
break;
|
813
1008
|
case GIT_PKT_PROGRESS:
|
814
|
-
if (transport->
|
1009
|
+
if (transport->connect_opts.callbacks.sideband_progress) {
|
815
1010
|
git_pkt_progress *p = (git_pkt_progress *) pkt;
|
816
1011
|
|
817
1012
|
if (p->len > INT_MAX) {
|
@@ -820,7 +1015,7 @@ static int parse_report(transport_smart *transport, git_push *push)
|
|
820
1015
|
goto done;
|
821
1016
|
}
|
822
1017
|
|
823
|
-
error = transport->
|
1018
|
+
error = transport->connect_opts.callbacks.sideband_progress(p->data, (int)p->len, transport->connect_opts.callbacks.payload);
|
824
1019
|
}
|
825
1020
|
break;
|
826
1021
|
default:
|
@@ -847,7 +1042,7 @@ static int parse_report(transport_smart *transport, git_push *push)
|
|
847
1042
|
}
|
848
1043
|
}
|
849
1044
|
done:
|
850
|
-
|
1045
|
+
git_str_dispose(&data_pkt_buf);
|
851
1046
|
return error;
|
852
1047
|
}
|
853
1048
|
|
@@ -962,7 +1157,7 @@ struct push_packbuilder_payload
|
|
962
1157
|
git_push_transfer_progress_cb cb;
|
963
1158
|
void *cb_payload;
|
964
1159
|
size_t last_bytes;
|
965
|
-
|
1160
|
+
uint64_t last_progress_report_time;
|
966
1161
|
};
|
967
1162
|
|
968
1163
|
static int stream_thunk(void *buf, size_t size, void *data)
|
@@ -974,11 +1169,11 @@ static int stream_thunk(void *buf, size_t size, void *data)
|
|
974
1169
|
return error;
|
975
1170
|
|
976
1171
|
if (payload->cb) {
|
977
|
-
|
978
|
-
|
1172
|
+
uint64_t current_time = git_time_monotonic();
|
1173
|
+
uint64_t elapsed = current_time - payload->last_progress_report_time;
|
979
1174
|
payload->last_bytes += size;
|
980
1175
|
|
981
|
-
if (elapsed
|
1176
|
+
if (elapsed >= MIN_PROGRESS_UPDATE_INTERVAL) {
|
982
1177
|
payload->last_progress_report_time = current_time;
|
983
1178
|
error = payload->cb(payload->pb->nr_written, payload->pb->nr_objects, payload->last_bytes, payload->cb_payload);
|
984
1179
|
}
|
@@ -987,11 +1182,12 @@ static int stream_thunk(void *buf, size_t size, void *data)
|
|
987
1182
|
return error;
|
988
1183
|
}
|
989
1184
|
|
990
|
-
int git_smart__push(git_transport *transport, git_push *push
|
1185
|
+
int git_smart__push(git_transport *transport, git_push *push)
|
991
1186
|
{
|
992
1187
|
transport_smart *t = (transport_smart *)transport;
|
1188
|
+
git_remote_callbacks *cbs = &t->connect_opts.callbacks;
|
993
1189
|
struct push_packbuilder_payload packbuilder_payload = {0};
|
994
|
-
|
1190
|
+
git_str pktline = GIT_STR_INIT;
|
995
1191
|
int error = 0, need_pack = 0;
|
996
1192
|
push_spec *spec;
|
997
1193
|
unsigned int i;
|
@@ -1006,7 +1202,7 @@ int git_smart__push(git_transport *transport, git_push *push, const git_remote_c
|
|
1006
1202
|
#ifdef PUSH_DEBUG
|
1007
1203
|
{
|
1008
1204
|
git_remote_head *head;
|
1009
|
-
char hex[
|
1205
|
+
char hex[GIT_OID_MAX_HEXSIZE+1], hex[GIT_OID_MAX_HEXSIZE] = '\0';
|
1010
1206
|
|
1011
1207
|
git_vector_foreach(&push->remote->refs, i, head) {
|
1012
1208
|
git_oid_fmt(hex, &head->oid);
|
@@ -1034,9 +1230,13 @@ int git_smart__push(git_transport *transport, git_push *push, const git_remote_c
|
|
1034
1230
|
}
|
1035
1231
|
}
|
1036
1232
|
|
1233
|
+
/* prepare pack before sending pack header to avoid timeouts */
|
1234
|
+
if (need_pack && ((error = git_packbuilder__prepare(push->pb))) < 0)
|
1235
|
+
goto done;
|
1236
|
+
|
1037
1237
|
if ((error = git_smart__get_push_stream(t, &packbuilder_payload.stream)) < 0 ||
|
1038
1238
|
(error = gen_pktline(&pktline, push)) < 0 ||
|
1039
|
-
(error = packbuilder_payload.stream->write(packbuilder_payload.stream,
|
1239
|
+
(error = packbuilder_payload.stream->write(packbuilder_payload.stream, git_str_cstr(&pktline), git_str_len(&pktline))) < 0)
|
1040
1240
|
goto done;
|
1041
1241
|
|
1042
1242
|
if (need_pack &&
|
@@ -1071,6 +1271,6 @@ int git_smart__push(git_transport *transport, git_push *push, const git_remote_c
|
|
1071
1271
|
}
|
1072
1272
|
|
1073
1273
|
done:
|
1074
|
-
|
1274
|
+
git_str_dispose(&pktline);
|
1075
1275
|
return error;
|
1076
1276
|
}
|