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
@@ -0,0 +1,99 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
3
|
+
*
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
6
|
+
*/
|
7
|
+
|
8
|
+
#ifndef INCLUDE_transports_httpparser_h__
|
9
|
+
#define INCLUDE_transports_httpparser_h__
|
10
|
+
|
11
|
+
#include "git2_util.h"
|
12
|
+
|
13
|
+
#if defined(GIT_HTTPPARSER_HTTPPARSER)
|
14
|
+
|
15
|
+
# include <http_parser.h>
|
16
|
+
|
17
|
+
typedef enum {
|
18
|
+
GIT_HTTP_PARSER_OK = HPE_OK,
|
19
|
+
GIT_HTTP_PARSER_PAUSED = HPE_PAUSED,
|
20
|
+
} git_http_parser_error_t;
|
21
|
+
|
22
|
+
typedef enum {
|
23
|
+
GIT_HTTP_PARSER_REQUEST = HTTP_REQUEST,
|
24
|
+
GIT_HTTP_PARSER_RESPONSE = HTTP_RESPONSE,
|
25
|
+
} git_http_parser_t;
|
26
|
+
|
27
|
+
typedef struct git_http_parser git_http_parser;
|
28
|
+
|
29
|
+
typedef struct {
|
30
|
+
int (*on_message_begin)(git_http_parser *);
|
31
|
+
int (*on_url)(git_http_parser *, const char *, size_t);
|
32
|
+
int (*on_header_field)(git_http_parser *, const char *, size_t);
|
33
|
+
int (*on_header_value)(git_http_parser *, const char *, size_t);
|
34
|
+
int (*on_headers_complete)(git_http_parser *);
|
35
|
+
int (*on_body)(git_http_parser *, const char *, size_t);
|
36
|
+
int (*on_message_complete)(git_http_parser *);
|
37
|
+
} git_http_parser_settings;
|
38
|
+
|
39
|
+
struct git_http_parser {
|
40
|
+
http_parser parser;
|
41
|
+
git_http_parser_settings settings;
|
42
|
+
void *data;
|
43
|
+
};
|
44
|
+
|
45
|
+
void git_http_parser_init(
|
46
|
+
git_http_parser *parser,
|
47
|
+
git_http_parser_t type,
|
48
|
+
git_http_parser_settings *settings);
|
49
|
+
|
50
|
+
size_t git_http_parser_execute(
|
51
|
+
git_http_parser *parser,
|
52
|
+
const char *data,
|
53
|
+
size_t len);
|
54
|
+
|
55
|
+
# define git_http_parser_status_code(parser) parser->parser.status_code
|
56
|
+
# define git_http_parser_keep_alive(parser) http_should_keep_alive(&parser->parser)
|
57
|
+
# define git_http_parser_pause(parser) (http_parser_pause(&parser->parser, 1), 0)
|
58
|
+
# define git_http_parser_resume(parser) http_parser_pause(&parser->parser, 0)
|
59
|
+
# define git_http_parser_remain_after_pause(parser) 1
|
60
|
+
# define git_http_parser_errno(parser) parser->parser.http_errno
|
61
|
+
# define git_http_parser_errmsg(parser, errno) http_errno_description(errno)
|
62
|
+
|
63
|
+
#elif defined(GIT_HTTPPARSER_LLHTTP) || defined(GIT_HTTPPARSER_BUILTIN)
|
64
|
+
|
65
|
+
# include <llhttp.h>
|
66
|
+
|
67
|
+
typedef enum {
|
68
|
+
GIT_HTTP_PARSER_OK = HPE_OK,
|
69
|
+
GIT_HTTP_PARSER_PAUSED = HPE_PAUSED,
|
70
|
+
} git_http_parser_error_t;
|
71
|
+
|
72
|
+
typedef enum {
|
73
|
+
GIT_HTTP_PARSER_REQUEST = HTTP_REQUEST,
|
74
|
+
GIT_HTTP_PARSER_RESPONSE = HTTP_RESPONSE,
|
75
|
+
} git_http_parser_t;
|
76
|
+
|
77
|
+
typedef llhttp_t git_http_parser;
|
78
|
+
typedef llhttp_settings_t git_http_parser_settings;
|
79
|
+
|
80
|
+
# define git_http_parser_init(parser, direction, settings) llhttp_init(parser, (llhttp_type_t)direction, settings)
|
81
|
+
|
82
|
+
size_t git_http_parser_execute(
|
83
|
+
git_http_parser *parser,
|
84
|
+
const char *data,
|
85
|
+
size_t len);
|
86
|
+
|
87
|
+
# define git_http_parser_status_code(parser) parser->status_code
|
88
|
+
# define git_http_parser_keep_alive(parser) llhttp_should_keep_alive(parser)
|
89
|
+
# define git_http_parser_pause(parser) (llhttp_pause(parser), GIT_HTTP_PARSER_PAUSED)
|
90
|
+
# define git_http_parser_resume(parser) llhttp_resume(parser)
|
91
|
+
# define git_http_parser_remain_after_pause(parser) 0
|
92
|
+
# define git_http_parser_errno(parser) parser->error
|
93
|
+
# define git_http_parser_errmsg(parser, errno) llhttp_get_error_reason(parser)
|
94
|
+
|
95
|
+
#else
|
96
|
+
# error unknown http-parser
|
97
|
+
#endif
|
98
|
+
|
99
|
+
#endif
|
@@ -58,7 +58,7 @@ static void free_heads(git_vector *heads)
|
|
58
58
|
git_vector_foreach(heads, i, head)
|
59
59
|
free_head(head);
|
60
60
|
|
61
|
-
|
61
|
+
git_vector_dispose(heads);
|
62
62
|
}
|
63
63
|
|
64
64
|
static int add_ref(transport_local *t, const char *name)
|
@@ -108,10 +108,6 @@ static int add_ref(transport_local *t, const char *name)
|
|
108
108
|
return error;
|
109
109
|
}
|
110
110
|
|
111
|
-
/* If it's not a tag, we don't need to try to peel it */
|
112
|
-
if (git__prefixcmp(name, GIT_REFS_TAGS_DIR))
|
113
|
-
return 0;
|
114
|
-
|
115
111
|
if ((error = git_object_lookup(&obj, t->repo, &head->oid, GIT_OBJECT_ANY)) < 0)
|
116
112
|
return error;
|
117
113
|
|
@@ -186,7 +182,7 @@ static int store_refs(transport_local *t)
|
|
186
182
|
return 0;
|
187
183
|
|
188
184
|
on_error:
|
189
|
-
|
185
|
+
git_vector_dispose(&t->refs);
|
190
186
|
git_strarray_dispose(&ref_names);
|
191
187
|
return -1;
|
192
188
|
}
|
@@ -295,15 +291,18 @@ static int local_ls(const git_remote_head ***out, size_t *size, git_transport *t
|
|
295
291
|
static int local_negotiate_fetch(
|
296
292
|
git_transport *transport,
|
297
293
|
git_repository *repo,
|
298
|
-
const
|
299
|
-
size_t count)
|
294
|
+
const git_fetch_negotiation *wants)
|
300
295
|
{
|
301
296
|
transport_local *t = (transport_local*)transport;
|
302
297
|
git_remote_head *rhead;
|
303
298
|
unsigned int i;
|
304
299
|
|
305
|
-
GIT_UNUSED(
|
306
|
-
|
300
|
+
GIT_UNUSED(wants);
|
301
|
+
|
302
|
+
if (wants->depth) {
|
303
|
+
git_error_set(GIT_ERROR_NET, "shallow fetch is not supported by the local transport");
|
304
|
+
return GIT_ENOTSUPPORTED;
|
305
|
+
}
|
307
306
|
|
308
307
|
/* Fill in the loids */
|
309
308
|
git_vector_foreach(&t->refs, i, rhead) {
|
@@ -322,6 +321,16 @@ static int local_negotiate_fetch(
|
|
322
321
|
return 0;
|
323
322
|
}
|
324
323
|
|
324
|
+
static int local_shallow_roots(
|
325
|
+
git_oidarray *out,
|
326
|
+
git_transport *transport)
|
327
|
+
{
|
328
|
+
GIT_UNUSED(out);
|
329
|
+
GIT_UNUSED(transport);
|
330
|
+
|
331
|
+
return 0;
|
332
|
+
}
|
333
|
+
|
325
334
|
static int local_push_update_remote_ref(
|
326
335
|
git_repository *remote_repo,
|
327
336
|
const char *lref,
|
@@ -445,7 +454,7 @@ static int local_push(
|
|
445
454
|
default:
|
446
455
|
last = git_error_last();
|
447
456
|
|
448
|
-
if (last
|
457
|
+
if (last->klass != GIT_ERROR_NONE)
|
449
458
|
status->msg = git__strdup(last->message);
|
450
459
|
else
|
451
460
|
status->msg = git__strdup("Unspecified error encountered");
|
@@ -747,6 +756,7 @@ int git_transport_local(git_transport **out, git_remote *owner, void *param)
|
|
747
756
|
t->parent.oid_type = local_oid_type;
|
748
757
|
#endif
|
749
758
|
t->parent.negotiate_fetch = local_negotiate_fetch;
|
759
|
+
t->parent.shallow_roots = local_shallow_roots;
|
750
760
|
t->parent.download_pack = local_download_pack;
|
751
761
|
t->parent.push = local_push;
|
752
762
|
t->parent.close = local_close;
|
@@ -13,30 +13,42 @@
|
|
13
13
|
#include "refspec.h"
|
14
14
|
#include "proxy.h"
|
15
15
|
|
16
|
-
|
16
|
+
int git_smart__recv(transport_smart *t)
|
17
17
|
{
|
18
|
-
|
19
|
-
|
20
|
-
int error;
|
18
|
+
size_t bytes_read;
|
19
|
+
int ret;
|
21
20
|
|
21
|
+
GIT_ASSERT_ARG(t);
|
22
22
|
GIT_ASSERT(t->current_stream);
|
23
23
|
|
24
|
-
|
24
|
+
if (git_staticstr_remain(&t->buffer) == 0) {
|
25
|
+
git_error_set(GIT_ERROR_NET, "out of buffer space");
|
26
|
+
return -1;
|
27
|
+
}
|
25
28
|
|
26
|
-
|
27
|
-
|
29
|
+
ret = t->current_stream->read(t->current_stream,
|
30
|
+
git_staticstr_offset(&t->buffer),
|
31
|
+
git_staticstr_remain(&t->buffer),
|
32
|
+
&bytes_read);
|
33
|
+
|
34
|
+
if (ret < 0)
|
35
|
+
return ret;
|
36
|
+
|
37
|
+
GIT_ASSERT(bytes_read <= INT_MAX);
|
38
|
+
GIT_ASSERT(bytes_read <= git_staticstr_remain(&t->buffer));
|
28
39
|
|
29
|
-
|
40
|
+
git_staticstr_increase(&t->buffer, bytes_read);
|
30
41
|
|
31
42
|
if (t->packetsize_cb && !t->cancelled.val) {
|
32
|
-
|
33
|
-
|
43
|
+
ret = t->packetsize_cb(bytes_read, t->packetsize_payload);
|
44
|
+
|
45
|
+
if (ret) {
|
34
46
|
git_atomic32_set(&t->cancelled, 1);
|
35
47
|
return GIT_EUSER;
|
36
48
|
}
|
37
49
|
}
|
38
50
|
|
39
|
-
return (int)
|
51
|
+
return (int)bytes_read;
|
40
52
|
}
|
41
53
|
|
42
54
|
GIT_INLINE(int) git_smart__reset_stream(transport_smart *t, bool close_subtransport)
|
@@ -112,7 +124,7 @@ static void free_symrefs(git_vector *symrefs)
|
|
112
124
|
git__free(spec);
|
113
125
|
}
|
114
126
|
|
115
|
-
|
127
|
+
git_vector_dispose(symrefs);
|
116
128
|
}
|
117
129
|
|
118
130
|
static int git_smart__connect(
|
@@ -155,8 +167,6 @@ static int git_smart__connect(
|
|
155
167
|
/* Save off the current stream (i.e. socket) that we are working with */
|
156
168
|
t->current_stream = stream;
|
157
169
|
|
158
|
-
gitno_buffer_setup_callback(&t->buffer, t->buffer_data, sizeof(t->buffer_data), git_smart__recv_cb, t);
|
159
|
-
|
160
170
|
/* 2 flushes for RPC; 1 for stateful */
|
161
171
|
if ((error = git_smart__store_refs(t, t->rpc ? 2 : 1)) < 0)
|
162
172
|
return error;
|
@@ -239,6 +249,9 @@ static int git_smart__capabilities(unsigned int *capabilities, git_transport *tr
|
|
239
249
|
|
240
250
|
*capabilities = 0;
|
241
251
|
|
252
|
+
if (t->caps.push_options)
|
253
|
+
*capabilities |= GIT_REMOTE_CAPABILITY_PUSH_OPTIONS;
|
254
|
+
|
242
255
|
if (t->caps.want_tip_sha1)
|
243
256
|
*capabilities |= GIT_REMOTE_CAPABILITY_TIP_OID;
|
244
257
|
|
@@ -313,8 +326,6 @@ int git_smart__negotiation_step(git_transport *transport, void *data, size_t len
|
|
313
326
|
if ((error = stream->write(stream, (const char *)data, len)) < 0)
|
314
327
|
return error;
|
315
328
|
|
316
|
-
gitno_buffer_setup_callback(&t->buffer, t->buffer_data, sizeof(t->buffer_data), git_smart__recv_cb, t);
|
317
|
-
|
318
329
|
return 0;
|
319
330
|
}
|
320
331
|
|
@@ -339,8 +350,6 @@ int git_smart__get_push_stream(transport_smart *t, git_smart_subtransport_stream
|
|
339
350
|
/* Save off the current stream (i.e. socket) that we are working with */
|
340
351
|
t->current_stream = *stream;
|
341
352
|
|
342
|
-
gitno_buffer_setup_callback(&t->buffer, t->buffer_data, sizeof(t->buffer_data), git_smart__recv_cb, t);
|
343
|
-
|
344
353
|
return 0;
|
345
354
|
}
|
346
355
|
|
@@ -364,17 +373,27 @@ static int git_smart__close(git_transport *transport)
|
|
364
373
|
git_vector *common = &t->common;
|
365
374
|
unsigned int i;
|
366
375
|
git_pkt *p;
|
376
|
+
git_smart_service_t service;
|
367
377
|
int ret;
|
368
378
|
git_smart_subtransport_stream *stream;
|
369
379
|
const char flush[] = "0000";
|
370
380
|
|
381
|
+
if (t->direction == GIT_DIRECTION_FETCH) {
|
382
|
+
service = GIT_SERVICE_UPLOADPACK;
|
383
|
+
} else if (t->direction == GIT_DIRECTION_PUSH) {
|
384
|
+
service = GIT_SERVICE_RECEIVEPACK;
|
385
|
+
} else {
|
386
|
+
git_error_set(GIT_ERROR_NET, "invalid direction");
|
387
|
+
return -1;
|
388
|
+
}
|
389
|
+
|
371
390
|
/*
|
372
391
|
* If we're still connected at this point and not using RPC,
|
373
392
|
* we should say goodbye by sending a flush, or git-daemon
|
374
393
|
* will complain that we disconnected unexpectedly.
|
375
394
|
*/
|
376
395
|
if (t->connected && !t->rpc &&
|
377
|
-
!t->wrapped->action(&stream, t->wrapped, t->url,
|
396
|
+
!t->wrapped->action(&stream, t->wrapped, t->url, service)) {
|
378
397
|
t->current_stream->write(t->current_stream, flush, 4);
|
379
398
|
}
|
380
399
|
|
@@ -383,7 +402,7 @@ static int git_smart__close(git_transport *transport)
|
|
383
402
|
git_vector_foreach(common, i, p)
|
384
403
|
git_pkt_free(p);
|
385
404
|
|
386
|
-
|
405
|
+
git_vector_dispose(common);
|
387
406
|
|
388
407
|
if (t->url) {
|
389
408
|
git__free(t->url);
|
@@ -408,14 +427,16 @@ static void git_smart__free(git_transport *transport)
|
|
408
427
|
/* Free the subtransport */
|
409
428
|
t->wrapped->free(t->wrapped);
|
410
429
|
|
411
|
-
|
430
|
+
git_vector_dispose(&t->heads);
|
412
431
|
git_vector_foreach(refs, i, p)
|
413
432
|
git_pkt_free(p);
|
414
433
|
|
415
|
-
|
434
|
+
git_vector_dispose(refs);
|
416
435
|
|
417
436
|
git_remote_connect_options_dispose(&t->connect_opts);
|
418
437
|
|
438
|
+
git_array_dispose(t->shallow_roots);
|
439
|
+
|
419
440
|
git__free(t->caps.object_format);
|
420
441
|
git__free(t->caps.agent);
|
421
442
|
git__free(t);
|
@@ -490,6 +511,7 @@ int git_transport_smart(git_transport **out, git_remote *owner, void *param)
|
|
490
511
|
t->parent.close = git_smart__close;
|
491
512
|
t->parent.free = git_smart__free;
|
492
513
|
t->parent.negotiate_fetch = git_smart__negotiate_fetch;
|
514
|
+
t->parent.shallow_roots = git_smart__shallow_roots;
|
493
515
|
t->parent.download_pack = git_smart__download_pack;
|
494
516
|
t->parent.push = git_smart__push;
|
495
517
|
t->parent.ls = git_smart__ls;
|
@@ -499,20 +521,16 @@ int git_transport_smart(git_transport **out, git_remote *owner, void *param)
|
|
499
521
|
t->owner = owner;
|
500
522
|
t->rpc = definition->rpc;
|
501
523
|
|
502
|
-
if (git_vector_init(&t->refs, 16, ref_name_cmp) < 0
|
524
|
+
if (git_vector_init(&t->refs, 16, ref_name_cmp) < 0 ||
|
525
|
+
git_vector_init(&t->heads, 16, ref_name_cmp) < 0 ||
|
526
|
+
definition->callback(&t->wrapped, &t->parent, definition->param) < 0) {
|
527
|
+
git_vector_dispose(&t->refs);
|
528
|
+
git_vector_dispose(&t->heads);
|
503
529
|
git__free(t);
|
504
530
|
return -1;
|
505
531
|
}
|
506
532
|
|
507
|
-
|
508
|
-
git__free(t);
|
509
|
-
return -1;
|
510
|
-
}
|
511
|
-
|
512
|
-
if (definition->callback(&t->wrapped, &t->parent, definition->param) < 0) {
|
513
|
-
git__free(t);
|
514
|
-
return -1;
|
515
|
-
}
|
533
|
+
git_staticstr_init(&t->buffer, GIT_SMART_BUFFER_SIZE);
|
516
534
|
|
517
535
|
*out = (git_transport *) t;
|
518
536
|
return 0;
|
@@ -11,11 +11,14 @@
|
|
11
11
|
|
12
12
|
#include "git2.h"
|
13
13
|
#include "vector.h"
|
14
|
-
#include "netops.h"
|
15
14
|
#include "push.h"
|
16
15
|
#include "str.h"
|
16
|
+
#include "oidarray.h"
|
17
|
+
#include "staticstr.h"
|
17
18
|
#include "git2/sys/transport.h"
|
18
19
|
|
20
|
+
#define GIT_SMART_BUFFER_SIZE 65536
|
21
|
+
|
19
22
|
#define GIT_SIDE_BAND_DATA 1
|
20
23
|
#define GIT_SIDE_BAND_PROGRESS 2
|
21
24
|
#define GIT_SIDE_BAND_ERROR 3
|
@@ -32,8 +35,10 @@
|
|
32
35
|
#define GIT_CAP_SYMREF "symref"
|
33
36
|
#define GIT_CAP_WANT_TIP_SHA1 "allow-tip-sha1-in-want"
|
34
37
|
#define GIT_CAP_WANT_REACHABLE_SHA1 "allow-reachable-sha1-in-want"
|
38
|
+
#define GIT_CAP_SHALLOW "shallow"
|
35
39
|
#define GIT_CAP_OBJECT_FORMAT "object-format="
|
36
40
|
#define GIT_CAP_AGENT "agent="
|
41
|
+
#define GIT_CAP_PUSH_OPTIONS "push-options"
|
37
42
|
|
38
43
|
extern bool git_smart__ofs_delta_enabled;
|
39
44
|
|
@@ -50,7 +55,9 @@ typedef enum {
|
|
50
55
|
GIT_PKT_PROGRESS,
|
51
56
|
GIT_PKT_OK,
|
52
57
|
GIT_PKT_NG,
|
53
|
-
GIT_PKT_UNPACK
|
58
|
+
GIT_PKT_UNPACK,
|
59
|
+
GIT_PKT_SHALLOW,
|
60
|
+
GIT_PKT_UNSHALLOW
|
54
61
|
} git_pkt_type;
|
55
62
|
|
56
63
|
/* Used for multi_ack and multi_ack_detailed */
|
@@ -122,6 +129,11 @@ typedef struct {
|
|
122
129
|
int unpack_ok;
|
123
130
|
} git_pkt_unpack;
|
124
131
|
|
132
|
+
typedef struct {
|
133
|
+
git_pkt_type type;
|
134
|
+
git_oid oid;
|
135
|
+
} git_pkt_shallow;
|
136
|
+
|
125
137
|
typedef struct transport_smart_caps {
|
126
138
|
unsigned int common:1,
|
127
139
|
ofs_delta:1,
|
@@ -134,7 +146,9 @@ typedef struct transport_smart_caps {
|
|
134
146
|
report_status:1,
|
135
147
|
thin_pack:1,
|
136
148
|
want_tip_sha1:1,
|
137
|
-
want_reachable_sha1:1
|
149
|
+
want_reachable_sha1:1,
|
150
|
+
shallow:1,
|
151
|
+
push_options:1;
|
138
152
|
char *object_format;
|
139
153
|
char *agent;
|
140
154
|
} transport_smart_caps;
|
@@ -153,14 +167,14 @@ typedef struct {
|
|
153
167
|
git_vector refs;
|
154
168
|
git_vector heads;
|
155
169
|
git_vector common;
|
170
|
+
git_array_oid_t shallow_roots;
|
156
171
|
git_atomic32 cancelled;
|
157
172
|
packetsize_cb packetsize_cb;
|
158
173
|
void *packetsize_payload;
|
159
174
|
unsigned rpc : 1,
|
160
175
|
have_refs : 1,
|
161
176
|
connected : 1;
|
162
|
-
|
163
|
-
char buffer_data[65536];
|
177
|
+
git_staticstr_with_size(GIT_SMART_BUFFER_SIZE) buffer;
|
164
178
|
} transport_smart;
|
165
179
|
|
166
180
|
/* smart_protocol.c */
|
@@ -171,8 +185,9 @@ int git_smart__push(git_transport *transport, git_push *push);
|
|
171
185
|
int git_smart__negotiate_fetch(
|
172
186
|
git_transport *transport,
|
173
187
|
git_repository *repo,
|
174
|
-
const
|
175
|
-
|
188
|
+
const git_fetch_negotiation *wants);
|
189
|
+
|
190
|
+
int git_smart__shallow_roots(git_oidarray *out, git_transport *transport);
|
176
191
|
|
177
192
|
int git_smart__download_pack(
|
178
193
|
git_transport *transport,
|
@@ -180,6 +195,8 @@ int git_smart__download_pack(
|
|
180
195
|
git_indexer_progress *stats);
|
181
196
|
|
182
197
|
/* smart.c */
|
198
|
+
int git_smart__recv(transport_smart *t);
|
199
|
+
|
183
200
|
int git_smart__negotiation_step(git_transport *transport, void *data, size_t len);
|
184
201
|
int git_smart__get_push_stream(transport_smart *t, git_smart_subtransport_stream **out);
|
185
202
|
|
@@ -188,14 +205,14 @@ int git_smart__update_heads(transport_smart *t, git_vector *symrefs);
|
|
188
205
|
/* smart_pkt.c */
|
189
206
|
typedef struct {
|
190
207
|
git_oid_t oid_type;
|
191
|
-
int seen_capabilities: 1;
|
208
|
+
unsigned int seen_capabilities: 1;
|
192
209
|
} git_pkt_parse_data;
|
193
210
|
|
194
211
|
int git_pkt_parse_line(git_pkt **head, const char **endptr, const char *line, size_t linelen, git_pkt_parse_data *data);
|
195
212
|
int git_pkt_buffer_flush(git_str *buf);
|
196
213
|
int git_pkt_send_flush(GIT_SOCKET s);
|
197
214
|
int git_pkt_buffer_done(git_str *buf);
|
198
|
-
int git_pkt_buffer_wants(const
|
215
|
+
int git_pkt_buffer_wants(const git_fetch_negotiation *wants, transport_smart_caps *caps, git_str *buf);
|
199
216
|
int git_pkt_buffer_have(git_oid *oid, git_str *buf);
|
200
217
|
void git_pkt_free(git_pkt *pkt);
|
201
218
|
|