rugged 1.6.3 → 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/ext/rugged/rugged_allocator.c +0 -54
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/AUTHORS +1 -0
- data/vendor/libgit2/CMakeLists.txt +25 -17
- data/vendor/libgit2/COPYING +195 -1
- data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
- data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
- data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
- data/vendor/libgit2/cmake/SelectGSSAPI.cmake +4 -4
- data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +34 -6
- data/vendor/libgit2/cmake/SelectHashes.cmake +32 -11
- data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
- data/vendor/libgit2/cmake/SelectSSH.cmake +22 -17
- data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
- data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
- 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 +1 -1
- 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 +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
- 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 +1 -0
- 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/xdiff/CMakeLists.txt +28 -0
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/git-xdiff.h +4 -1
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.c +19 -18
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.h +2 -4
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.c +3 -3
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xhistogram.c +7 -18
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmacros.h +18 -1
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmerge.c +22 -20
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xpatience.c +21 -30
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.c +13 -30
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.c +18 -1
- data/vendor/libgit2/{src/libgit2 → 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 +5 -27
- data/vendor/libgit2/deps/zlib/crc32.c +94 -167
- data/vendor/libgit2/deps/zlib/deflate.c +358 -435
- data/vendor/libgit2/deps/zlib/deflate.h +41 -10
- data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
- data/vendor/libgit2/deps/zlib/infback.c +17 -30
- data/vendor/libgit2/deps/zlib/inffast.c +1 -4
- data/vendor/libgit2/deps/zlib/inffast.h +1 -1
- data/vendor/libgit2/deps/zlib/inflate.c +36 -102
- 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 +287 -352
- data/vendor/libgit2/deps/zlib/zconf.h +23 -14
- data/vendor/libgit2/deps/zlib/zlib.h +202 -202
- data/vendor/libgit2/deps/zlib/zutil.c +18 -44
- data/vendor/libgit2/deps/zlib/zutil.h +13 -33
- data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
- data/vendor/libgit2/include/git2/apply.h +27 -6
- data/vendor/libgit2/include/git2/attr.h +17 -4
- data/vendor/libgit2/include/git2/blame.h +133 -28
- data/vendor/libgit2/include/git2/blob.h +71 -28
- data/vendor/libgit2/include/git2/branch.h +22 -15
- data/vendor/libgit2/include/git2/buffer.h +6 -4
- data/vendor/libgit2/include/git2/cert.h +2 -1
- data/vendor/libgit2/include/git2/checkout.h +83 -32
- data/vendor/libgit2/include/git2/cherrypick.h +10 -3
- data/vendor/libgit2/include/git2/clone.h +25 -9
- data/vendor/libgit2/include/git2/commit.h +132 -3
- data/vendor/libgit2/include/git2/common.h +138 -56
- data/vendor/libgit2/include/git2/config.h +93 -23
- data/vendor/libgit2/include/git2/credential.h +30 -2
- data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
- data/vendor/libgit2/include/git2/deprecated.h +133 -3
- data/vendor/libgit2/include/git2/describe.h +13 -1
- data/vendor/libgit2/include/git2/diff.h +77 -9
- data/vendor/libgit2/include/git2/email.h +9 -29
- data/vendor/libgit2/include/git2/errors.h +49 -74
- data/vendor/libgit2/include/git2/filter.h +14 -7
- data/vendor/libgit2/include/git2/global.h +8 -1
- data/vendor/libgit2/include/git2/graph.h +3 -2
- data/vendor/libgit2/include/git2/ignore.h +10 -0
- data/vendor/libgit2/include/git2/index.h +100 -6
- data/vendor/libgit2/include/git2/indexer.h +21 -4
- data/vendor/libgit2/include/git2/mailmap.h +7 -1
- data/vendor/libgit2/include/git2/merge.h +46 -1
- data/vendor/libgit2/include/git2/message.h +2 -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 +9 -8
- data/vendor/libgit2/include/git2/odb.h +91 -49
- data/vendor/libgit2/include/git2/odb_backend.h +80 -52
- data/vendor/libgit2/include/git2/oid.h +24 -25
- data/vendor/libgit2/include/git2/oidarray.h +7 -1
- data/vendor/libgit2/include/git2/pack.h +13 -1
- data/vendor/libgit2/include/git2/patch.h +2 -3
- data/vendor/libgit2/include/git2/pathspec.h +9 -0
- data/vendor/libgit2/include/git2/proxy.h +10 -0
- data/vendor/libgit2/include/git2/rebase.h +9 -6
- data/vendor/libgit2/include/git2/refdb.h +2 -2
- data/vendor/libgit2/include/git2/reflog.h +3 -2
- data/vendor/libgit2/include/git2/refs.h +9 -6
- data/vendor/libgit2/include/git2/refspec.h +14 -4
- data/vendor/libgit2/include/git2/remote.h +112 -18
- data/vendor/libgit2/include/git2/repository.h +61 -15
- data/vendor/libgit2/include/git2/reset.h +16 -3
- data/vendor/libgit2/include/git2/revert.h +9 -4
- data/vendor/libgit2/include/git2/revparse.h +3 -3
- data/vendor/libgit2/include/git2/revwalk.h +3 -2
- data/vendor/libgit2/include/git2/signature.h +46 -1
- data/vendor/libgit2/include/git2/stash.h +17 -3
- data/vendor/libgit2/include/git2/status.h +10 -6
- data/vendor/libgit2/include/git2/stdint.h +87 -85
- data/vendor/libgit2/include/git2/strarray.h +2 -3
- data/vendor/libgit2/include/git2/submodule.h +20 -9
- 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 +109 -58
- 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 +7 -3
- 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 +8 -1
- data/vendor/libgit2/include/git2/sys/repository.h +63 -3
- data/vendor/libgit2/include/git2/sys/stream.h +25 -2
- data/vendor/libgit2/include/git2/sys/transport.h +44 -5
- data/vendor/libgit2/include/git2/tag.h +3 -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 +16 -5
- data/vendor/libgit2/include/git2/types.h +19 -3
- data/vendor/libgit2/include/git2/version.h +44 -8
- data/vendor/libgit2/include/git2/worktree.h +19 -7
- data/vendor/libgit2/src/CMakeLists.txt +40 -15
- data/vendor/libgit2/src/cli/CMakeLists.txt +2 -2
- data/vendor/libgit2/src/cli/cmd.c +1 -1
- data/vendor/libgit2/src/cli/cmd.h +4 -0
- data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
- data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
- data/vendor/libgit2/src/cli/cmd_clone.c +27 -13
- data/vendor/libgit2/src/cli/cmd_config.c +241 -0
- data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
- data/vendor/libgit2/src/cli/cmd_help.c +6 -7
- 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 +1 -1
- data/vendor/libgit2/src/cli/main.c +52 -24
- data/vendor/libgit2/src/cli/opt.c +29 -3
- data/vendor/libgit2/src/cli/opt.h +21 -3
- data/vendor/libgit2/src/cli/opt_usage.c +102 -33
- data/vendor/libgit2/src/cli/opt_usage.h +6 -1
- data/vendor/libgit2/src/cli/progress.c +60 -10
- data/vendor/libgit2/src/cli/progress.h +16 -4
- data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
- data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
- data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
- data/vendor/libgit2/src/libgit2/CMakeLists.txt +27 -27
- data/vendor/libgit2/src/libgit2/annotated_commit.c +2 -2
- data/vendor/libgit2/src/libgit2/annotated_commit.h +1 -1
- data/vendor/libgit2/src/libgit2/apply.c +14 -16
- data/vendor/libgit2/src/libgit2/attr.c +30 -13
- data/vendor/libgit2/src/libgit2/attr_file.c +7 -2
- data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
- data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
- data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
- data/vendor/libgit2/src/libgit2/blame.c +152 -59
- data/vendor/libgit2/src/libgit2/blame.h +1 -0
- data/vendor/libgit2/src/libgit2/blame_git.c +0 -1
- data/vendor/libgit2/src/libgit2/branch.c +2 -2
- data/vendor/libgit2/src/libgit2/cache.c +22 -17
- data/vendor/libgit2/src/libgit2/cache.h +7 -9
- data/vendor/libgit2/src/libgit2/checkout.c +34 -24
- data/vendor/libgit2/src/libgit2/checkout.h +0 -2
- data/vendor/libgit2/src/libgit2/cherrypick.c +4 -5
- data/vendor/libgit2/src/libgit2/clone.c +186 -164
- data/vendor/libgit2/src/libgit2/clone.h +4 -1
- data/vendor/libgit2/src/libgit2/commit.c +123 -9
- data/vendor/libgit2/src/libgit2/commit_graph.c +166 -88
- data/vendor/libgit2/src/libgit2/commit_graph.h +21 -6
- data/vendor/libgit2/src/libgit2/commit_list.c +12 -5
- data/vendor/libgit2/src/libgit2/commit_list.h +1 -0
- data/vendor/libgit2/src/libgit2/config.c +394 -300
- data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
- data/vendor/libgit2/src/libgit2/config.h +9 -4
- data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
- data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
- data/vendor/libgit2/src/libgit2/config_file.c +113 -96
- 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 +194 -40
- data/vendor/libgit2/src/libgit2/config_parse.c +10 -9
- data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
- data/vendor/libgit2/src/libgit2/describe.c +34 -31
- data/vendor/libgit2/src/libgit2/diff.c +17 -8
- data/vendor/libgit2/src/libgit2/diff.h +6 -6
- data/vendor/libgit2/src/libgit2/diff_driver.c +12 -19
- data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
- data/vendor/libgit2/src/libgit2/diff_file.c +7 -7
- data/vendor/libgit2/src/libgit2/diff_generate.c +39 -18
- data/vendor/libgit2/src/libgit2/diff_parse.c +22 -6
- data/vendor/libgit2/src/libgit2/diff_print.c +88 -13
- data/vendor/libgit2/src/libgit2/diff_tform.c +40 -12
- data/vendor/libgit2/src/libgit2/diff_xdiff.h +1 -1
- data/vendor/libgit2/src/libgit2/email.c +5 -3
- data/vendor/libgit2/src/libgit2/fetch.c +39 -9
- data/vendor/libgit2/src/libgit2/fetch.h +0 -2
- data/vendor/libgit2/src/libgit2/fetchhead.c +11 -9
- data/vendor/libgit2/src/libgit2/filter.c +5 -5
- data/vendor/libgit2/src/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/libgit2/graph.c +1 -1
- data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
- data/vendor/libgit2/src/libgit2/ident.c +3 -3
- data/vendor/libgit2/src/libgit2/ignore.c +9 -5
- data/vendor/libgit2/src/libgit2/index.c +392 -208
- data/vendor/libgit2/src/libgit2/index.h +16 -3
- data/vendor/libgit2/src/libgit2/index_map.c +95 -0
- data/vendor/libgit2/src/libgit2/index_map.h +28 -0
- data/vendor/libgit2/src/libgit2/indexer.c +44 -41
- data/vendor/libgit2/src/libgit2/iterator.c +34 -13
- data/vendor/libgit2/src/libgit2/iterator.h +3 -0
- data/vendor/libgit2/src/libgit2/libgit2.c +155 -331
- data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
- data/vendor/libgit2/src/libgit2/merge.c +56 -46
- data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
- data/vendor/libgit2/src/libgit2/merge_file.c +0 -2
- data/vendor/libgit2/src/libgit2/midx.c +86 -44
- data/vendor/libgit2/src/libgit2/midx.h +13 -3
- data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
- data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
- data/vendor/libgit2/src/libgit2/notes.c +9 -8
- data/vendor/libgit2/src/libgit2/object.c +42 -16
- data/vendor/libgit2/src/libgit2/object.h +6 -0
- data/vendor/libgit2/src/libgit2/odb.c +16 -9
- data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
- data/vendor/libgit2/src/libgit2/odb_pack.c +28 -7
- data/vendor/libgit2/src/libgit2/oid.c +35 -2
- data/vendor/libgit2/src/libgit2/oid.h +11 -0
- data/vendor/libgit2/src/libgit2/oidarray.c +49 -3
- data/vendor/libgit2/src/libgit2/oidarray.h +5 -1
- data/vendor/libgit2/src/libgit2/pack-objects.c +77 -43
- data/vendor/libgit2/src/libgit2/pack-objects.h +17 -6
- data/vendor/libgit2/src/libgit2/pack.c +33 -27
- data/vendor/libgit2/src/libgit2/pack.h +15 -10
- data/vendor/libgit2/src/libgit2/parse.c +7 -4
- data/vendor/libgit2/src/libgit2/parse.h +1 -1
- data/vendor/libgit2/src/libgit2/patch.h +7 -1
- data/vendor/libgit2/src/libgit2/patch_generate.c +24 -5
- data/vendor/libgit2/src/libgit2/patch_parse.c +18 -10
- data/vendor/libgit2/src/libgit2/path.c +1 -1
- data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
- data/vendor/libgit2/src/libgit2/push.c +81 -30
- data/vendor/libgit2/src/libgit2/push.h +1 -0
- data/vendor/libgit2/src/libgit2/reader.c +1 -1
- data/vendor/libgit2/src/libgit2/rebase.c +72 -84
- data/vendor/libgit2/src/libgit2/refdb_fs.c +146 -70
- data/vendor/libgit2/src/libgit2/reflog.c +1 -2
- data/vendor/libgit2/src/libgit2/reflog.h +2 -0
- data/vendor/libgit2/src/libgit2/refs.c +34 -8
- data/vendor/libgit2/src/libgit2/refs.h +6 -1
- data/vendor/libgit2/src/libgit2/refspec.c +28 -1
- data/vendor/libgit2/src/libgit2/refspec.h +8 -0
- data/vendor/libgit2/src/libgit2/remote.c +136 -67
- data/vendor/libgit2/src/libgit2/remote.h +1 -0
- data/vendor/libgit2/src/libgit2/repository.c +789 -330
- data/vendor/libgit2/src/libgit2/repository.h +22 -3
- data/vendor/libgit2/src/libgit2/reset.c +2 -2
- data/vendor/libgit2/src/libgit2/revert.c +9 -13
- data/vendor/libgit2/src/libgit2/revparse.c +6 -3
- data/vendor/libgit2/src/libgit2/revwalk.c +36 -11
- data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
- data/vendor/libgit2/src/libgit2/settings.c +468 -0
- data/vendor/libgit2/src/libgit2/settings.h +6 -2
- data/vendor/libgit2/src/libgit2/signature.c +132 -15
- data/vendor/libgit2/src/libgit2/signature.h +0 -1
- data/vendor/libgit2/src/libgit2/stash.c +9 -8
- data/vendor/libgit2/src/libgit2/status.c +1 -1
- data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -61
- data/vendor/libgit2/src/libgit2/streams/openssl.c +40 -23
- data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
- data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
- data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
- 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 +237 -51
- data/vendor/libgit2/src/libgit2/streams/socket.h +3 -1
- data/vendor/libgit2/src/libgit2/streams/stransport.c +79 -19
- data/vendor/libgit2/src/libgit2/streams/tls.c +5 -0
- data/vendor/libgit2/src/libgit2/submodule.c +106 -63
- data/vendor/libgit2/src/libgit2/submodule.h +9 -10
- data/vendor/libgit2/src/libgit2/tag.c +1 -1
- data/vendor/libgit2/src/libgit2/trailer.c +6 -6
- data/vendor/libgit2/src/libgit2/transaction.c +26 -20
- data/vendor/libgit2/src/libgit2/transaction.h +4 -1
- data/vendor/libgit2/src/libgit2/transport.c +4 -1
- data/vendor/libgit2/src/libgit2/transports/auth.h +1 -2
- data/vendor/libgit2/src/libgit2/transports/{auth_negotiate.c → auth_gssapi.c} +32 -32
- data/vendor/libgit2/src/libgit2/transports/auth_negotiate.h +1 -1
- data/vendor/libgit2/src/libgit2/transports/auth_ntlm.h +1 -1
- data/vendor/libgit2/src/libgit2/transports/{auth_ntlm.c → auth_ntlmclient.c} +12 -12
- data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
- data/vendor/libgit2/src/libgit2/transports/credential.c +1 -1
- data/vendor/libgit2/src/libgit2/transports/git.c +7 -8
- data/vendor/libgit2/src/libgit2/transports/http.c +8 -4
- data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
- data/vendor/libgit2/src/libgit2/transports/httpclient.c +117 -72
- data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
- data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
- data/vendor/libgit2/src/libgit2/transports/local.c +21 -11
- data/vendor/libgit2/src/libgit2/transports/smart.c +50 -32
- data/vendor/libgit2/src/libgit2/transports/smart.h +26 -9
- data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +139 -18
- data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +209 -57
- data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
- 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/libgit2/transports/ssh_libssh2.c +1126 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
- data/vendor/libgit2/src/libgit2/transports/winhttp.c +48 -21
- data/vendor/libgit2/src/libgit2/tree-cache.c +26 -16
- data/vendor/libgit2/src/libgit2/tree-cache.h +5 -3
- data/vendor/libgit2/src/libgit2/tree.c +35 -27
- data/vendor/libgit2/src/libgit2/tree.h +3 -2
- data/vendor/libgit2/src/libgit2/worktree.c +39 -27
- data/vendor/libgit2/src/util/CMakeLists.txt +4 -6
- data/vendor/libgit2/src/util/alloc.c +69 -7
- data/vendor/libgit2/src/util/alloc.h +34 -9
- data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
- data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
- data/vendor/libgit2/src/util/allocators/failalloc.c +0 -60
- data/vendor/libgit2/src/util/allocators/failalloc.h +0 -6
- data/vendor/libgit2/src/util/allocators/stdalloc.c +2 -115
- data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +0 -68
- data/vendor/libgit2/src/util/array.h +24 -18
- data/vendor/libgit2/src/util/cc-compat.h +4 -0
- data/vendor/libgit2/src/util/ctype_compat.h +70 -0
- data/vendor/libgit2/src/util/date.c +22 -14
- data/vendor/libgit2/src/util/date.h +12 -0
- data/vendor/libgit2/src/util/errors.c +401 -0
- data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
- data/vendor/libgit2/src/util/filebuf.c +6 -1
- data/vendor/libgit2/src/util/filebuf.h +19 -6
- data/vendor/libgit2/src/util/fs_path.c +16 -5
- data/vendor/libgit2/src/util/fs_path.h +23 -0
- data/vendor/libgit2/src/util/futils.c +14 -10
- data/vendor/libgit2/src/util/futils.h +13 -4
- data/vendor/libgit2/src/util/git2_features.h.in +21 -4
- data/vendor/libgit2/src/util/git2_util.h +6 -0
- data/vendor/libgit2/src/util/hash/openssl.c +152 -0
- data/vendor/libgit2/src/util/hash/openssl.h +17 -1
- data/vendor/libgit2/src/util/hash/sha.h +4 -1
- data/vendor/libgit2/src/util/hashmap.h +424 -0
- data/vendor/libgit2/src/util/hashmap_str.h +43 -0
- data/vendor/libgit2/src/util/integer.h +3 -1
- data/vendor/libgit2/src/util/net.c +318 -161
- data/vendor/libgit2/src/util/net.h +27 -0
- data/vendor/libgit2/src/util/pool.c +1 -1
- data/vendor/libgit2/src/util/pool.h +5 -0
- data/vendor/libgit2/src/util/posix.c +54 -0
- data/vendor/libgit2/src/util/posix.h +22 -0
- data/vendor/libgit2/src/util/pqueue.h +1 -1
- data/vendor/libgit2/src/util/process.h +222 -0
- data/vendor/libgit2/src/util/rand.c +6 -10
- data/vendor/libgit2/src/util/regexp.c +1 -1
- data/vendor/libgit2/src/util/sortedcache.c +14 -13
- data/vendor/libgit2/src/util/sortedcache.h +3 -3
- data/vendor/libgit2/src/util/staticstr.h +66 -0
- data/vendor/libgit2/src/util/str.c +2 -2
- data/vendor/libgit2/src/util/strlist.c +108 -0
- data/vendor/libgit2/src/util/strlist.h +36 -0
- data/vendor/libgit2/src/util/unix/posix.h +0 -2
- data/vendor/libgit2/src/util/unix/process.c +629 -0
- data/vendor/libgit2/src/util/unix/realpath.c +23 -5
- data/vendor/libgit2/src/util/util.c +17 -12
- data/vendor/libgit2/src/util/util.h +28 -54
- data/vendor/libgit2/src/util/vector.c +3 -3
- data/vendor/libgit2/src/util/vector.h +2 -2
- data/vendor/libgit2/src/util/win32/error.c +1 -1
- data/vendor/libgit2/src/util/win32/path_w32.c +8 -8
- data/vendor/libgit2/src/util/win32/posix_w32.c +30 -7
- data/vendor/libgit2/src/util/win32/process.c +506 -0
- data/vendor/libgit2/src/util/win32/utf-conv.c +73 -75
- data/vendor/libgit2/src/util/win32/utf-conv.h +81 -14
- data/vendor/libgit2/src/util/win32/w32_util.c +1 -1
- metadata +72 -49
- data/vendor/libgit2/cmake/SelectWinHTTP.cmake +0 -17
- 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/libgit2/config_entries.c +0 -237
- data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
- data/vendor/libgit2/src/libgit2/errors.c +0 -238
- data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
- data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
- data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
- data/vendor/libgit2/src/libgit2/netops.c +0 -124
- data/vendor/libgit2/src/libgit2/netops.h +0 -68
- data/vendor/libgit2/src/libgit2/offmap.c +0 -101
- data/vendor/libgit2/src/libgit2/offmap.h +0 -133
- data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
- data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
- data/vendor/libgit2/src/libgit2/threadstate.c +0 -84
- data/vendor/libgit2/src/libgit2/threadstate.h +0 -24
- data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
- data/vendor/libgit2/src/util/khash.h +0 -615
- data/vendor/libgit2/src/util/strmap.c +0 -100
- data/vendor/libgit2/src/util/strmap.h +0 -131
- /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiff.h +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.h +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xinclude.h +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.h +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xtypes.h +0 -0
@@ -27,7 +27,6 @@ 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;
|
@@ -45,8 +44,10 @@ int git_smart__store_refs(transport_smart *t, int flushes)
|
|
45
44
|
pkt = NULL;
|
46
45
|
|
47
46
|
do {
|
48
|
-
if (
|
49
|
-
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);
|
50
51
|
else
|
51
52
|
error = GIT_EBUFS;
|
52
53
|
|
@@ -54,19 +55,18 @@ int git_smart__store_refs(transport_smart *t, int flushes)
|
|
54
55
|
return error;
|
55
56
|
|
56
57
|
if (error == GIT_EBUFS) {
|
57
|
-
if ((recvd =
|
58
|
+
if ((recvd = git_smart__recv(t)) < 0)
|
58
59
|
return recvd;
|
59
60
|
|
60
61
|
if (recvd == 0) {
|
61
|
-
git_error_set(GIT_ERROR_NET, "
|
62
|
+
git_error_set(GIT_ERROR_NET, "could not read refs from remote repository");
|
62
63
|
return GIT_EEOF;
|
63
64
|
}
|
64
65
|
|
65
66
|
continue;
|
66
67
|
}
|
67
68
|
|
68
|
-
|
69
|
-
return -1;
|
69
|
+
git_staticstr_consume(&t->buffer, line_end);
|
70
70
|
|
71
71
|
if (pkt->type == GIT_PKT_ERR) {
|
72
72
|
git_error_set(GIT_ERROR_NET, "remote error: %s", ((git_pkt_err *)pkt)->error);
|
@@ -194,6 +194,12 @@ int git_smart__detect_caps(
|
|
194
194
|
continue;
|
195
195
|
}
|
196
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
|
+
|
197
203
|
if (!git__prefixcmp(ptr, GIT_CAP_THIN_PACK)) {
|
198
204
|
caps->common = caps->thin_pack = 1;
|
199
205
|
ptr += strlen(GIT_CAP_THIN_PACK);
|
@@ -243,6 +249,12 @@ int git_smart__detect_caps(
|
|
243
249
|
continue;
|
244
250
|
}
|
245
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
|
+
|
246
258
|
/* We don't know this capability, so skip it */
|
247
259
|
ptr = strchr(ptr, ' ');
|
248
260
|
}
|
@@ -250,16 +262,23 @@ int git_smart__detect_caps(
|
|
250
262
|
return 0;
|
251
263
|
}
|
252
264
|
|
253
|
-
static int recv_pkt(
|
265
|
+
static int recv_pkt(
|
266
|
+
git_pkt **out_pkt,
|
267
|
+
git_pkt_type *out_type,
|
268
|
+
transport_smart *t)
|
254
269
|
{
|
255
|
-
const char *ptr =
|
270
|
+
const char *ptr = t->buffer.data, *line_end = ptr;
|
256
271
|
git_pkt *pkt = NULL;
|
257
272
|
git_pkt_parse_data pkt_parse_data = { 0 };
|
258
273
|
int error = 0, ret;
|
259
274
|
|
275
|
+
pkt_parse_data.oid_type = t->owner->repo->oid_type;
|
276
|
+
pkt_parse_data.seen_capabilities = 1;
|
277
|
+
|
260
278
|
do {
|
261
|
-
if (
|
262
|
-
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);
|
263
282
|
else
|
264
283
|
error = GIT_EBUFS;
|
265
284
|
|
@@ -269,16 +288,15 @@ static int recv_pkt(git_pkt **out_pkt, git_pkt_type *out_type, gitno_buffer *buf
|
|
269
288
|
if (error < 0 && error != GIT_EBUFS)
|
270
289
|
return error;
|
271
290
|
|
272
|
-
if ((ret =
|
291
|
+
if ((ret = git_smart__recv(t)) < 0) {
|
273
292
|
return ret;
|
274
293
|
} else if (ret == 0) {
|
275
|
-
git_error_set(GIT_ERROR_NET, "
|
294
|
+
git_error_set(GIT_ERROR_NET, "could not read from remote repository");
|
276
295
|
return GIT_EEOF;
|
277
296
|
}
|
278
297
|
} while (error);
|
279
298
|
|
280
|
-
|
281
|
-
return -1;
|
299
|
+
git_staticstr_consume(&t->buffer, line_end);
|
282
300
|
|
283
301
|
if (out_type != NULL)
|
284
302
|
*out_type = pkt->type;
|
@@ -293,13 +311,19 @@ static int recv_pkt(git_pkt **out_pkt, git_pkt_type *out_type, gitno_buffer *buf
|
|
293
311
|
static int store_common(transport_smart *t)
|
294
312
|
{
|
295
313
|
git_pkt *pkt = NULL;
|
296
|
-
gitno_buffer *buf = &t->buffer;
|
297
314
|
int error;
|
298
315
|
|
299
316
|
do {
|
300
|
-
if ((error = recv_pkt(&pkt, NULL,
|
317
|
+
if ((error = recv_pkt(&pkt, NULL, t)) < 0)
|
301
318
|
return error;
|
302
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
|
+
|
303
327
|
if (pkt->type != GIT_PKT_ACK) {
|
304
328
|
git__free(pkt);
|
305
329
|
return 0;
|
@@ -314,7 +338,7 @@ static int store_common(transport_smart *t)
|
|
314
338
|
return 0;
|
315
339
|
}
|
316
340
|
|
317
|
-
static int wait_while_ack(
|
341
|
+
static int wait_while_ack(transport_smart *t)
|
318
342
|
{
|
319
343
|
int error;
|
320
344
|
git_pkt *pkt = NULL;
|
@@ -323,7 +347,7 @@ static int wait_while_ack(gitno_buffer *buf)
|
|
323
347
|
while (1) {
|
324
348
|
git_pkt_free(pkt);
|
325
349
|
|
326
|
-
if ((error = recv_pkt(&pkt, NULL,
|
350
|
+
if ((error = recv_pkt(&pkt, NULL, t)) < 0)
|
327
351
|
return error;
|
328
352
|
|
329
353
|
if (pkt->type == GIT_PKT_NAK)
|
@@ -344,11 +368,52 @@ static int wait_while_ack(gitno_buffer *buf)
|
|
344
368
|
return 0;
|
345
369
|
}
|
346
370
|
|
347
|
-
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)
|
348
414
|
{
|
349
415
|
transport_smart *t = (transport_smart *)transport;
|
350
416
|
git_revwalk__push_options opts = GIT_REVWALK__PUSH_OPTIONS_INIT;
|
351
|
-
gitno_buffer *buf = &t->buffer;
|
352
417
|
git_str data = GIT_STR_INIT;
|
353
418
|
git_revwalk *walk = NULL;
|
354
419
|
int error = -1;
|
@@ -356,7 +421,11 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
|
|
356
421
|
unsigned int i;
|
357
422
|
git_oid oid;
|
358
423
|
|
359
|
-
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)
|
360
429
|
return error;
|
361
430
|
|
362
431
|
if ((error = git_revwalk_new(&walk, repo)) < 0)
|
@@ -366,6 +435,40 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
|
|
366
435
|
if ((error = git_revwalk__push_glob(walk, "refs/*", &opts)) < 0)
|
367
436
|
goto on_error;
|
368
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
|
+
|
369
472
|
/*
|
370
473
|
* Our support for ACK extensions is simply to parse them. On
|
371
474
|
* the first ACK we will accept that as enough common
|
@@ -406,7 +509,7 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
|
|
406
509
|
if ((error = store_common(t)) < 0)
|
407
510
|
goto on_error;
|
408
511
|
} else {
|
409
|
-
if ((error = recv_pkt(NULL, &pkt_type,
|
512
|
+
if ((error = recv_pkt(NULL, &pkt_type, t)) < 0)
|
410
513
|
goto on_error;
|
411
514
|
|
412
515
|
if (pkt_type == GIT_PKT_ACK) {
|
@@ -428,7 +531,7 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
|
|
428
531
|
git_pkt_ack *pkt;
|
429
532
|
unsigned int j;
|
430
533
|
|
431
|
-
if ((error = git_pkt_buffer_wants(wants,
|
534
|
+
if ((error = git_pkt_buffer_wants(wants, &t->caps, &data)) < 0)
|
432
535
|
goto on_error;
|
433
536
|
|
434
537
|
git_vector_foreach(&t->common, j, pkt) {
|
@@ -448,7 +551,7 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
|
|
448
551
|
git_pkt_ack *pkt;
|
449
552
|
unsigned int j;
|
450
553
|
|
451
|
-
if ((error = git_pkt_buffer_wants(wants,
|
554
|
+
if ((error = git_pkt_buffer_wants(wants, &t->caps, &data)) < 0)
|
452
555
|
goto on_error;
|
453
556
|
|
454
557
|
git_vector_foreach(&t->common, j, pkt) {
|
@@ -466,10 +569,11 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
|
|
466
569
|
goto on_error;
|
467
570
|
|
468
571
|
if (t->cancelled.val) {
|
469
|
-
git_error_set(GIT_ERROR_NET, "
|
572
|
+
git_error_set(GIT_ERROR_NET, "the fetch was cancelled");
|
470
573
|
error = GIT_EUSER;
|
471
574
|
goto on_error;
|
472
575
|
}
|
576
|
+
|
473
577
|
if ((error = git_smart__negotiation_step(&t->parent, data.ptr, data.size)) < 0)
|
474
578
|
goto on_error;
|
475
579
|
|
@@ -478,7 +582,7 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
|
|
478
582
|
|
479
583
|
/* Now let's eat up whatever the server gives us */
|
480
584
|
if (!t->caps.multi_ack && !t->caps.multi_ack_detailed) {
|
481
|
-
if ((error = recv_pkt(NULL, &pkt_type,
|
585
|
+
if ((error = recv_pkt(NULL, &pkt_type, t)) < 0)
|
482
586
|
return error;
|
483
587
|
|
484
588
|
if (pkt_type != GIT_PKT_ACK && pkt_type != GIT_PKT_NAK) {
|
@@ -486,7 +590,7 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
|
|
486
590
|
return -1;
|
487
591
|
}
|
488
592
|
} else {
|
489
|
-
error = wait_while_ack(
|
593
|
+
error = wait_while_ack(t);
|
490
594
|
}
|
491
595
|
|
492
596
|
return error;
|
@@ -497,7 +601,29 @@ on_error:
|
|
497
601
|
return error;
|
498
602
|
}
|
499
603
|
|
500
|
-
|
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)
|
501
627
|
{
|
502
628
|
int recvd;
|
503
629
|
|
@@ -507,12 +633,12 @@ static int no_sideband(transport_smart *t, struct git_odb_writepack *writepack,
|
|
507
633
|
return GIT_EUSER;
|
508
634
|
}
|
509
635
|
|
510
|
-
if (writepack->append(writepack,
|
636
|
+
if (writepack->append(writepack, t->buffer.data, t->buffer.len, stats) < 0)
|
511
637
|
return -1;
|
512
638
|
|
513
|
-
|
639
|
+
git_staticstr_clear(&t->buffer);
|
514
640
|
|
515
|
-
if ((recvd =
|
641
|
+
if ((recvd = git_smart__recv(t)) < 0)
|
516
642
|
return recvd;
|
517
643
|
} while(recvd > 0);
|
518
644
|
|
@@ -554,7 +680,6 @@ int git_smart__download_pack(
|
|
554
680
|
git_indexer_progress *stats)
|
555
681
|
{
|
556
682
|
transport_smart *t = (transport_smart *)transport;
|
557
|
-
gitno_buffer *buf = &t->buffer;
|
558
683
|
git_odb *odb;
|
559
684
|
struct git_odb_writepack *writepack = NULL;
|
560
685
|
int error = 0;
|
@@ -573,9 +698,10 @@ int git_smart__download_pack(
|
|
573
698
|
t->packetsize_payload = &npp;
|
574
699
|
|
575
700
|
/* We might have something in the buffer already from negotiate_fetch */
|
576
|
-
if (t->buffer.
|
577
|
-
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))
|
578
703
|
git_atomic32_set(&t->cancelled, 1);
|
704
|
+
}
|
579
705
|
}
|
580
706
|
|
581
707
|
if ((error = git_repository_odb__weakptr(&odb, repo)) < 0 ||
|
@@ -588,7 +714,7 @@ int git_smart__download_pack(
|
|
588
714
|
* check which one belongs there.
|
589
715
|
*/
|
590
716
|
if (!t->caps.side_band && !t->caps.side_band_64k) {
|
591
|
-
error = no_sideband(t, writepack,
|
717
|
+
error = no_sideband(t, writepack, stats);
|
592
718
|
goto done;
|
593
719
|
}
|
594
720
|
|
@@ -602,7 +728,7 @@ int git_smart__download_pack(
|
|
602
728
|
goto done;
|
603
729
|
}
|
604
730
|
|
605
|
-
if ((error = recv_pkt(&pkt, NULL,
|
731
|
+
if ((error = recv_pkt(&pkt, NULL, t)) >= 0) {
|
606
732
|
/* Check cancellation after network call */
|
607
733
|
if (t->cancelled.val) {
|
608
734
|
git_error_clear();
|
@@ -669,33 +795,54 @@ done:
|
|
669
795
|
static int gen_pktline(git_str *buf, git_push *push)
|
670
796
|
{
|
671
797
|
push_spec *spec;
|
798
|
+
char *option;
|
672
799
|
size_t i, len;
|
673
|
-
char old_id[
|
674
|
-
|
675
|
-
old_id[GIT_OID_SHA1_HEXSIZE] = '\0'; new_id[GIT_OID_SHA1_HEXSIZE] = '\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;
|
676
802
|
|
677
803
|
git_vector_foreach(&push->specs, i, spec) {
|
678
|
-
len =
|
804
|
+
len = strlen(spec->refspec.dst) + 7;
|
679
805
|
|
680
806
|
if (i == 0) {
|
681
|
-
|
807
|
+
/* Need a leading \0 */
|
808
|
+
++len;
|
809
|
+
|
682
810
|
if (push->report_status)
|
683
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
|
+
|
684
816
|
len += strlen(GIT_CAP_SIDE_BAND_64K) + 1;
|
685
817
|
}
|
686
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
|
+
|
687
824
|
git_oid_fmt(old_id, &spec->roid);
|
825
|
+
old_id[old_id_len] = '\0';
|
826
|
+
|
688
827
|
git_oid_fmt(new_id, &spec->loid);
|
828
|
+
new_id[new_id_len] = '\0';
|
689
829
|
|
690
|
-
git_str_printf(buf, "%04"PRIxZ"
|
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);
|
691
833
|
|
692
834
|
if (i == 0) {
|
693
835
|
git_str_putc(buf, '\0');
|
836
|
+
|
694
837
|
/* Core git always starts their capabilities string with a space */
|
695
838
|
if (push->report_status) {
|
696
839
|
git_str_putc(buf, ' ');
|
697
840
|
git_str_printf(buf, GIT_CAP_REPORT_STATUS);
|
698
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);
|
845
|
+
}
|
699
846
|
git_str_putc(buf, ' ');
|
700
847
|
git_str_printf(buf, GIT_CAP_SIDE_BAND_64K);
|
701
848
|
}
|
@@ -703,6 +850,13 @@ static int gen_pktline(git_str *buf, git_push *push)
|
|
703
850
|
git_str_putc(buf, '\n');
|
704
851
|
}
|
705
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
|
+
}
|
858
|
+
}
|
859
|
+
|
706
860
|
git_str_puts(buf, "0000");
|
707
861
|
return git_str_oom(buf) ? -1 : 0;
|
708
862
|
}
|
@@ -807,15 +961,15 @@ static int parse_report(transport_smart *transport, git_push *push)
|
|
807
961
|
git_pkt *pkt = NULL;
|
808
962
|
git_pkt_parse_data pkt_parse_data = { 0 };
|
809
963
|
const char *line_end = NULL;
|
810
|
-
gitno_buffer *buf = &transport->buffer;
|
811
964
|
int error, recvd;
|
812
965
|
git_str data_pkt_buf = GIT_STR_INIT;
|
813
966
|
|
814
967
|
for (;;) {
|
815
|
-
if (
|
968
|
+
if (transport->buffer.len > 0)
|
816
969
|
error = git_pkt_parse_line(&pkt, &line_end,
|
817
|
-
|
818
|
-
|
970
|
+
transport->buffer.data,
|
971
|
+
transport->buffer.len,
|
972
|
+
&pkt_parse_data);
|
819
973
|
else
|
820
974
|
error = GIT_EBUFS;
|
821
975
|
|
@@ -825,22 +979,20 @@ static int parse_report(transport_smart *transport, git_push *push)
|
|
825
979
|
}
|
826
980
|
|
827
981
|
if (error == GIT_EBUFS) {
|
828
|
-
if ((recvd =
|
982
|
+
if ((recvd = git_smart__recv(transport)) < 0) {
|
829
983
|
error = recvd;
|
830
984
|
goto done;
|
831
985
|
}
|
832
986
|
|
833
987
|
if (recvd == 0) {
|
834
|
-
git_error_set(GIT_ERROR_NET, "
|
988
|
+
git_error_set(GIT_ERROR_NET, "could not read report from remote repository");
|
835
989
|
error = GIT_EEOF;
|
836
990
|
goto done;
|
837
991
|
}
|
838
992
|
continue;
|
839
993
|
}
|
840
994
|
|
841
|
-
|
842
|
-
return -1;
|
843
|
-
|
995
|
+
git_staticstr_consume(&transport->buffer, line_end);
|
844
996
|
error = 0;
|
845
997
|
|
846
998
|
switch (pkt->type) {
|
@@ -1005,7 +1157,7 @@ struct push_packbuilder_payload
|
|
1005
1157
|
git_push_transfer_progress_cb cb;
|
1006
1158
|
void *cb_payload;
|
1007
1159
|
size_t last_bytes;
|
1008
|
-
|
1160
|
+
uint64_t last_progress_report_time;
|
1009
1161
|
};
|
1010
1162
|
|
1011
1163
|
static int stream_thunk(void *buf, size_t size, void *data)
|
@@ -1017,11 +1169,11 @@ static int stream_thunk(void *buf, size_t size, void *data)
|
|
1017
1169
|
return error;
|
1018
1170
|
|
1019
1171
|
if (payload->cb) {
|
1020
|
-
|
1021
|
-
|
1172
|
+
uint64_t current_time = git_time_monotonic();
|
1173
|
+
uint64_t elapsed = current_time - payload->last_progress_report_time;
|
1022
1174
|
payload->last_bytes += size;
|
1023
1175
|
|
1024
|
-
if (elapsed
|
1176
|
+
if (elapsed >= MIN_PROGRESS_UPDATE_INTERVAL) {
|
1025
1177
|
payload->last_progress_report_time = current_time;
|
1026
1178
|
error = payload->cb(payload->pb->nr_written, payload->pb->nr_objects, payload->last_bytes, payload->cb_payload);
|
1027
1179
|
}
|
@@ -1050,7 +1202,7 @@ int git_smart__push(git_transport *transport, git_push *push)
|
|
1050
1202
|
#ifdef PUSH_DEBUG
|
1051
1203
|
{
|
1052
1204
|
git_remote_head *head;
|
1053
|
-
char hex[
|
1205
|
+
char hex[GIT_OID_MAX_HEXSIZE+1], hex[GIT_OID_MAX_HEXSIZE] = '\0';
|
1054
1206
|
|
1055
1207
|
git_vector_foreach(&push->remote->refs, i, head) {
|
1056
1208
|
git_oid_fmt(hex, &head->oid);
|