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,468 @@
|
|
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
|
+
#include "settings.h"
|
9
|
+
|
10
|
+
#include <git2.h>
|
11
|
+
#include "alloc.h"
|
12
|
+
#include "buf.h"
|
13
|
+
#include "cache.h"
|
14
|
+
#include "common.h"
|
15
|
+
#include "filter.h"
|
16
|
+
#include "grafts.h"
|
17
|
+
#include "hash.h"
|
18
|
+
#include "index.h"
|
19
|
+
#include "merge_driver.h"
|
20
|
+
#include "pool.h"
|
21
|
+
#include "mwindow.h"
|
22
|
+
#include "object.h"
|
23
|
+
#include "odb.h"
|
24
|
+
#include "rand.h"
|
25
|
+
#include "refs.h"
|
26
|
+
#include "runtime.h"
|
27
|
+
#include "sysdir.h"
|
28
|
+
#include "thread.h"
|
29
|
+
#include "git2/global.h"
|
30
|
+
#include "streams/registry.h"
|
31
|
+
#include "streams/mbedtls.h"
|
32
|
+
#include "streams/openssl.h"
|
33
|
+
#include "streams/socket.h"
|
34
|
+
#include "transports/smart.h"
|
35
|
+
#include "transports/http.h"
|
36
|
+
#include "transports/ssh_libssh2.h"
|
37
|
+
|
38
|
+
#ifdef GIT_WIN32
|
39
|
+
# include "win32/w32_leakcheck.h"
|
40
|
+
#endif
|
41
|
+
|
42
|
+
/* Declarations for tuneable settings */
|
43
|
+
extern size_t git_mwindow__window_size;
|
44
|
+
extern size_t git_mwindow__mapped_limit;
|
45
|
+
extern size_t git_mwindow__file_limit;
|
46
|
+
extern size_t git_indexer__max_objects;
|
47
|
+
extern bool git_disable_pack_keep_file_checks;
|
48
|
+
extern int git_odb__packed_priority;
|
49
|
+
extern int git_odb__loose_priority;
|
50
|
+
extern int git_socket_stream__connect_timeout;
|
51
|
+
extern int git_socket_stream__timeout;
|
52
|
+
|
53
|
+
char *git__user_agent;
|
54
|
+
char *git__user_agent_product;
|
55
|
+
char *git__ssl_ciphers;
|
56
|
+
|
57
|
+
static void settings_global_shutdown(void)
|
58
|
+
{
|
59
|
+
git__free(git__user_agent);
|
60
|
+
git__free(git__user_agent_product);
|
61
|
+
|
62
|
+
git__free(git__ssl_ciphers);
|
63
|
+
git_repository__free_extensions();
|
64
|
+
}
|
65
|
+
|
66
|
+
int git_settings_global_init(void)
|
67
|
+
{
|
68
|
+
return git_runtime_shutdown_register(settings_global_shutdown);
|
69
|
+
}
|
70
|
+
|
71
|
+
static int config_level_to_sysdir(int *out, int config_level)
|
72
|
+
{
|
73
|
+
switch (config_level) {
|
74
|
+
case GIT_CONFIG_LEVEL_SYSTEM:
|
75
|
+
*out = GIT_SYSDIR_SYSTEM;
|
76
|
+
return 0;
|
77
|
+
case GIT_CONFIG_LEVEL_XDG:
|
78
|
+
*out = GIT_SYSDIR_XDG;
|
79
|
+
return 0;
|
80
|
+
case GIT_CONFIG_LEVEL_GLOBAL:
|
81
|
+
*out = GIT_SYSDIR_GLOBAL;
|
82
|
+
return 0;
|
83
|
+
case GIT_CONFIG_LEVEL_PROGRAMDATA:
|
84
|
+
*out = GIT_SYSDIR_PROGRAMDATA;
|
85
|
+
return 0;
|
86
|
+
default:
|
87
|
+
break;
|
88
|
+
}
|
89
|
+
|
90
|
+
git_error_set(
|
91
|
+
GIT_ERROR_INVALID, "invalid config path selector %d", config_level);
|
92
|
+
return -1;
|
93
|
+
}
|
94
|
+
|
95
|
+
const char *git_settings__user_agent_product(void)
|
96
|
+
{
|
97
|
+
return git__user_agent_product ? git__user_agent_product :
|
98
|
+
"git/2.0";
|
99
|
+
}
|
100
|
+
|
101
|
+
const char *git_settings__user_agent(void)
|
102
|
+
{
|
103
|
+
return git__user_agent ? git__user_agent :
|
104
|
+
"libgit2 " LIBGIT2_VERSION;
|
105
|
+
}
|
106
|
+
|
107
|
+
int git_libgit2_opts(int key, ...)
|
108
|
+
{
|
109
|
+
int error = 0;
|
110
|
+
va_list ap;
|
111
|
+
|
112
|
+
va_start(ap, key);
|
113
|
+
|
114
|
+
switch (key) {
|
115
|
+
case GIT_OPT_SET_MWINDOW_SIZE:
|
116
|
+
git_mwindow__window_size = va_arg(ap, size_t);
|
117
|
+
break;
|
118
|
+
|
119
|
+
case GIT_OPT_GET_MWINDOW_SIZE:
|
120
|
+
*(va_arg(ap, size_t *)) = git_mwindow__window_size;
|
121
|
+
break;
|
122
|
+
|
123
|
+
case GIT_OPT_SET_MWINDOW_MAPPED_LIMIT:
|
124
|
+
git_mwindow__mapped_limit = va_arg(ap, size_t);
|
125
|
+
break;
|
126
|
+
|
127
|
+
case GIT_OPT_GET_MWINDOW_MAPPED_LIMIT:
|
128
|
+
*(va_arg(ap, size_t *)) = git_mwindow__mapped_limit;
|
129
|
+
break;
|
130
|
+
|
131
|
+
case GIT_OPT_SET_MWINDOW_FILE_LIMIT:
|
132
|
+
git_mwindow__file_limit = va_arg(ap, size_t);
|
133
|
+
break;
|
134
|
+
|
135
|
+
case GIT_OPT_GET_MWINDOW_FILE_LIMIT:
|
136
|
+
*(va_arg(ap, size_t *)) = git_mwindow__file_limit;
|
137
|
+
break;
|
138
|
+
|
139
|
+
case GIT_OPT_GET_SEARCH_PATH:
|
140
|
+
{
|
141
|
+
int sysdir = va_arg(ap, int);
|
142
|
+
git_buf *out = va_arg(ap, git_buf *);
|
143
|
+
git_str str = GIT_STR_INIT;
|
144
|
+
const git_str *tmp;
|
145
|
+
int level;
|
146
|
+
|
147
|
+
if ((error = git_buf_tostr(&str, out)) < 0 ||
|
148
|
+
(error = config_level_to_sysdir(&level, sysdir)) < 0 ||
|
149
|
+
(error = git_sysdir_get(&tmp, level)) < 0 ||
|
150
|
+
(error = git_str_put(&str, tmp->ptr, tmp->size)) < 0)
|
151
|
+
break;
|
152
|
+
|
153
|
+
error = git_buf_fromstr(out, &str);
|
154
|
+
}
|
155
|
+
break;
|
156
|
+
|
157
|
+
case GIT_OPT_SET_SEARCH_PATH:
|
158
|
+
{
|
159
|
+
int level;
|
160
|
+
|
161
|
+
if ((error = config_level_to_sysdir(&level, va_arg(ap, int))) >= 0)
|
162
|
+
error = git_sysdir_set(level, va_arg(ap, const char *));
|
163
|
+
}
|
164
|
+
break;
|
165
|
+
|
166
|
+
case GIT_OPT_SET_CACHE_OBJECT_LIMIT:
|
167
|
+
{
|
168
|
+
git_object_t type = (git_object_t)va_arg(ap, int);
|
169
|
+
size_t size = va_arg(ap, size_t);
|
170
|
+
error = git_cache_set_max_object_size(type, size);
|
171
|
+
break;
|
172
|
+
}
|
173
|
+
|
174
|
+
case GIT_OPT_SET_CACHE_MAX_SIZE:
|
175
|
+
git_cache__max_storage = va_arg(ap, ssize_t);
|
176
|
+
break;
|
177
|
+
|
178
|
+
case GIT_OPT_ENABLE_CACHING:
|
179
|
+
git_cache__enabled = (va_arg(ap, int) != 0);
|
180
|
+
break;
|
181
|
+
|
182
|
+
case GIT_OPT_GET_CACHED_MEMORY:
|
183
|
+
*(va_arg(ap, ssize_t *)) = git_cache__current_storage.val;
|
184
|
+
*(va_arg(ap, ssize_t *)) = git_cache__max_storage;
|
185
|
+
break;
|
186
|
+
|
187
|
+
case GIT_OPT_GET_TEMPLATE_PATH:
|
188
|
+
{
|
189
|
+
git_buf *out = va_arg(ap, git_buf *);
|
190
|
+
git_str str = GIT_STR_INIT;
|
191
|
+
const git_str *tmp;
|
192
|
+
|
193
|
+
if ((error = git_buf_tostr(&str, out)) < 0 ||
|
194
|
+
(error = git_sysdir_get(&tmp, GIT_SYSDIR_TEMPLATE)) < 0 ||
|
195
|
+
(error = git_str_put(&str, tmp->ptr, tmp->size)) < 0)
|
196
|
+
break;
|
197
|
+
|
198
|
+
error = git_buf_fromstr(out, &str);
|
199
|
+
}
|
200
|
+
break;
|
201
|
+
|
202
|
+
case GIT_OPT_SET_TEMPLATE_PATH:
|
203
|
+
error = git_sysdir_set(GIT_SYSDIR_TEMPLATE, va_arg(ap, const char *));
|
204
|
+
break;
|
205
|
+
|
206
|
+
case GIT_OPT_SET_SSL_CERT_LOCATIONS:
|
207
|
+
#ifdef GIT_OPENSSL
|
208
|
+
{
|
209
|
+
const char *file = va_arg(ap, const char *);
|
210
|
+
const char *path = va_arg(ap, const char *);
|
211
|
+
error = git_openssl__set_cert_location(file, path);
|
212
|
+
}
|
213
|
+
#elif defined(GIT_MBEDTLS)
|
214
|
+
{
|
215
|
+
const char *file = va_arg(ap, const char *);
|
216
|
+
const char *path = va_arg(ap, const char *);
|
217
|
+
error = git_mbedtls__set_cert_location(file, path);
|
218
|
+
}
|
219
|
+
#else
|
220
|
+
git_error_set(GIT_ERROR_SSL, "TLS backend doesn't support certificate locations");
|
221
|
+
error = -1;
|
222
|
+
#endif
|
223
|
+
break;
|
224
|
+
|
225
|
+
case GIT_OPT_ADD_SSL_X509_CERT:
|
226
|
+
#ifdef GIT_OPENSSL
|
227
|
+
{
|
228
|
+
X509 *cert = va_arg(ap, X509 *);
|
229
|
+
error = git_openssl__add_x509_cert(cert);
|
230
|
+
}
|
231
|
+
#else
|
232
|
+
git_error_set(GIT_ERROR_SSL, "TLS backend doesn't support adding of the raw certs");
|
233
|
+
error = -1;
|
234
|
+
#endif
|
235
|
+
break;
|
236
|
+
|
237
|
+
case GIT_OPT_SET_USER_AGENT:
|
238
|
+
{
|
239
|
+
const char *new_agent = va_arg(ap, const char *);
|
240
|
+
|
241
|
+
git__free(git__user_agent);
|
242
|
+
|
243
|
+
if (new_agent) {
|
244
|
+
git__user_agent= git__strdup(new_agent);
|
245
|
+
|
246
|
+
if (!git__user_agent)
|
247
|
+
error = -1;
|
248
|
+
} else {
|
249
|
+
git__user_agent = NULL;
|
250
|
+
}
|
251
|
+
}
|
252
|
+
break;
|
253
|
+
|
254
|
+
case GIT_OPT_GET_USER_AGENT:
|
255
|
+
{
|
256
|
+
git_buf *out = va_arg(ap, git_buf *);
|
257
|
+
git_str str = GIT_STR_INIT;
|
258
|
+
|
259
|
+
if ((error = git_buf_tostr(&str, out)) < 0 ||
|
260
|
+
(error = git_str_puts(&str, git_settings__user_agent())) < 0)
|
261
|
+
break;
|
262
|
+
|
263
|
+
error = git_buf_fromstr(out, &str);
|
264
|
+
}
|
265
|
+
break;
|
266
|
+
|
267
|
+
case GIT_OPT_SET_USER_AGENT_PRODUCT:
|
268
|
+
{
|
269
|
+
const char *new_agent = va_arg(ap, const char *);
|
270
|
+
|
271
|
+
git__free(git__user_agent_product);
|
272
|
+
|
273
|
+
if (new_agent) {
|
274
|
+
git__user_agent_product = git__strdup(new_agent);
|
275
|
+
|
276
|
+
if (!git__user_agent_product)
|
277
|
+
error = -1;
|
278
|
+
} else {
|
279
|
+
git__user_agent_product = NULL;
|
280
|
+
}
|
281
|
+
}
|
282
|
+
break;
|
283
|
+
|
284
|
+
case GIT_OPT_GET_USER_AGENT_PRODUCT:
|
285
|
+
{
|
286
|
+
git_buf *out = va_arg(ap, git_buf *);
|
287
|
+
git_str str = GIT_STR_INIT;
|
288
|
+
|
289
|
+
if ((error = git_buf_tostr(&str, out)) < 0 ||
|
290
|
+
(error = git_str_puts(&str, git_settings__user_agent_product())) < 0)
|
291
|
+
break;
|
292
|
+
|
293
|
+
error = git_buf_fromstr(out, &str);
|
294
|
+
}
|
295
|
+
break;
|
296
|
+
|
297
|
+
case GIT_OPT_ENABLE_STRICT_OBJECT_CREATION:
|
298
|
+
git_object__strict_input_validation = (va_arg(ap, int) != 0);
|
299
|
+
break;
|
300
|
+
|
301
|
+
case GIT_OPT_ENABLE_STRICT_SYMBOLIC_REF_CREATION:
|
302
|
+
git_reference__enable_symbolic_ref_target_validation = (va_arg(ap, int) != 0);
|
303
|
+
break;
|
304
|
+
|
305
|
+
case GIT_OPT_SET_SSL_CIPHERS:
|
306
|
+
#if (GIT_OPENSSL || GIT_MBEDTLS)
|
307
|
+
{
|
308
|
+
git__free(git__ssl_ciphers);
|
309
|
+
git__ssl_ciphers = git__strdup(va_arg(ap, const char *));
|
310
|
+
if (!git__ssl_ciphers) {
|
311
|
+
git_error_set_oom();
|
312
|
+
error = -1;
|
313
|
+
}
|
314
|
+
}
|
315
|
+
#else
|
316
|
+
git_error_set(GIT_ERROR_SSL, "TLS backend doesn't support custom ciphers");
|
317
|
+
error = -1;
|
318
|
+
#endif
|
319
|
+
break;
|
320
|
+
|
321
|
+
case GIT_OPT_ENABLE_OFS_DELTA:
|
322
|
+
git_smart__ofs_delta_enabled = (va_arg(ap, int) != 0);
|
323
|
+
break;
|
324
|
+
|
325
|
+
case GIT_OPT_ENABLE_FSYNC_GITDIR:
|
326
|
+
git_repository__fsync_gitdir = (va_arg(ap, int) != 0);
|
327
|
+
break;
|
328
|
+
|
329
|
+
case GIT_OPT_GET_WINDOWS_SHAREMODE:
|
330
|
+
#ifdef GIT_WIN32
|
331
|
+
*(va_arg(ap, unsigned long *)) = git_win32__createfile_sharemode;
|
332
|
+
#endif
|
333
|
+
break;
|
334
|
+
|
335
|
+
case GIT_OPT_SET_WINDOWS_SHAREMODE:
|
336
|
+
#ifdef GIT_WIN32
|
337
|
+
git_win32__createfile_sharemode = va_arg(ap, unsigned long);
|
338
|
+
#endif
|
339
|
+
break;
|
340
|
+
|
341
|
+
case GIT_OPT_ENABLE_STRICT_HASH_VERIFICATION:
|
342
|
+
git_odb__strict_hash_verification = (va_arg(ap, int) != 0);
|
343
|
+
break;
|
344
|
+
|
345
|
+
case GIT_OPT_SET_ALLOCATOR:
|
346
|
+
error = git_allocator_setup(va_arg(ap, git_allocator *));
|
347
|
+
break;
|
348
|
+
|
349
|
+
case GIT_OPT_ENABLE_UNSAVED_INDEX_SAFETY:
|
350
|
+
git_index__enforce_unsaved_safety = (va_arg(ap, int) != 0);
|
351
|
+
break;
|
352
|
+
|
353
|
+
case GIT_OPT_SET_PACK_MAX_OBJECTS:
|
354
|
+
git_indexer__max_objects = va_arg(ap, size_t);
|
355
|
+
break;
|
356
|
+
|
357
|
+
case GIT_OPT_GET_PACK_MAX_OBJECTS:
|
358
|
+
*(va_arg(ap, size_t *)) = git_indexer__max_objects;
|
359
|
+
break;
|
360
|
+
|
361
|
+
case GIT_OPT_DISABLE_PACK_KEEP_FILE_CHECKS:
|
362
|
+
git_disable_pack_keep_file_checks = (va_arg(ap, int) != 0);
|
363
|
+
break;
|
364
|
+
|
365
|
+
case GIT_OPT_ENABLE_HTTP_EXPECT_CONTINUE:
|
366
|
+
git_http__expect_continue = (va_arg(ap, int) != 0);
|
367
|
+
break;
|
368
|
+
|
369
|
+
case GIT_OPT_SET_ODB_PACKED_PRIORITY:
|
370
|
+
git_odb__packed_priority = va_arg(ap, int);
|
371
|
+
break;
|
372
|
+
|
373
|
+
case GIT_OPT_SET_ODB_LOOSE_PRIORITY:
|
374
|
+
git_odb__loose_priority = va_arg(ap, int);
|
375
|
+
break;
|
376
|
+
|
377
|
+
case GIT_OPT_SET_EXTENSIONS:
|
378
|
+
{
|
379
|
+
const char **extensions = va_arg(ap, const char **);
|
380
|
+
size_t len = va_arg(ap, size_t);
|
381
|
+
error = git_repository__set_extensions(extensions, len);
|
382
|
+
}
|
383
|
+
break;
|
384
|
+
|
385
|
+
case GIT_OPT_GET_EXTENSIONS:
|
386
|
+
{
|
387
|
+
git_strarray *out = va_arg(ap, git_strarray *);
|
388
|
+
char **extensions;
|
389
|
+
size_t len;
|
390
|
+
|
391
|
+
if ((error = git_repository__extensions(&extensions, &len)) < 0)
|
392
|
+
break;
|
393
|
+
|
394
|
+
out->strings = extensions;
|
395
|
+
out->count = len;
|
396
|
+
}
|
397
|
+
break;
|
398
|
+
|
399
|
+
case GIT_OPT_GET_OWNER_VALIDATION:
|
400
|
+
*(va_arg(ap, int *)) = git_repository__validate_ownership;
|
401
|
+
break;
|
402
|
+
|
403
|
+
case GIT_OPT_SET_OWNER_VALIDATION:
|
404
|
+
git_repository__validate_ownership = (va_arg(ap, int) != 0);
|
405
|
+
break;
|
406
|
+
|
407
|
+
case GIT_OPT_GET_HOMEDIR:
|
408
|
+
{
|
409
|
+
git_buf *out = va_arg(ap, git_buf *);
|
410
|
+
git_str str = GIT_STR_INIT;
|
411
|
+
const git_str *tmp;
|
412
|
+
|
413
|
+
if ((error = git_buf_tostr(&str, out)) < 0 ||
|
414
|
+
(error = git_sysdir_get(&tmp, GIT_SYSDIR_HOME)) < 0 ||
|
415
|
+
(error = git_str_put(&str, tmp->ptr, tmp->size)) < 0)
|
416
|
+
break;
|
417
|
+
|
418
|
+
error = git_buf_fromstr(out, &str);
|
419
|
+
}
|
420
|
+
break;
|
421
|
+
|
422
|
+
case GIT_OPT_SET_HOMEDIR:
|
423
|
+
error = git_sysdir_set(GIT_SYSDIR_HOME, va_arg(ap, const char *));
|
424
|
+
break;
|
425
|
+
|
426
|
+
case GIT_OPT_GET_SERVER_CONNECT_TIMEOUT:
|
427
|
+
*(va_arg(ap, int *)) = git_socket_stream__connect_timeout;
|
428
|
+
break;
|
429
|
+
|
430
|
+
case GIT_OPT_SET_SERVER_CONNECT_TIMEOUT:
|
431
|
+
{
|
432
|
+
int timeout = va_arg(ap, int);
|
433
|
+
|
434
|
+
if (timeout < 0) {
|
435
|
+
git_error_set(GIT_ERROR_INVALID, "invalid connect timeout");
|
436
|
+
error = -1;
|
437
|
+
} else {
|
438
|
+
git_socket_stream__connect_timeout = timeout;
|
439
|
+
}
|
440
|
+
}
|
441
|
+
break;
|
442
|
+
|
443
|
+
case GIT_OPT_GET_SERVER_TIMEOUT:
|
444
|
+
*(va_arg(ap, int *)) = git_socket_stream__timeout;
|
445
|
+
break;
|
446
|
+
|
447
|
+
case GIT_OPT_SET_SERVER_TIMEOUT:
|
448
|
+
{
|
449
|
+
int timeout = va_arg(ap, int);
|
450
|
+
|
451
|
+
if (timeout < 0) {
|
452
|
+
git_error_set(GIT_ERROR_INVALID, "invalid timeout");
|
453
|
+
error = -1;
|
454
|
+
} else {
|
455
|
+
git_socket_stream__timeout = timeout;
|
456
|
+
}
|
457
|
+
}
|
458
|
+
break;
|
459
|
+
|
460
|
+
default:
|
461
|
+
git_error_set(GIT_ERROR_INVALID, "invalid option key");
|
462
|
+
error = -1;
|
463
|
+
}
|
464
|
+
|
465
|
+
va_end(ap);
|
466
|
+
|
467
|
+
return error;
|
468
|
+
}
|
@@ -4,8 +4,12 @@
|
|
4
4
|
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
5
5
|
* a Linking Exception. For full terms see the included COPYING file.
|
6
6
|
*/
|
7
|
+
#ifndef INCLUDE_settings_h__
|
8
|
+
#define INCLUDE_settings_h__
|
7
9
|
|
8
10
|
extern int git_settings_global_init(void);
|
9
11
|
|
10
|
-
extern const char *
|
11
|
-
extern const char *
|
12
|
+
extern const char *git_settings__user_agent(void);
|
13
|
+
extern const char *git_settings__user_agent_product(void);
|
14
|
+
|
15
|
+
#endif
|
@@ -10,6 +10,7 @@
|
|
10
10
|
#include "repository.h"
|
11
11
|
#include "git2/common.h"
|
12
12
|
#include "posix.h"
|
13
|
+
#include "date.h"
|
13
14
|
|
14
15
|
void git_signature_free(git_signature *sig)
|
15
16
|
{
|
@@ -43,7 +44,6 @@ static bool contains_angle_brackets(const char *input)
|
|
43
44
|
static bool is_crud(unsigned char c)
|
44
45
|
{
|
45
46
|
return c <= 32 ||
|
46
|
-
c == '.' ||
|
47
47
|
c == ',' ||
|
48
48
|
c == ':' ||
|
49
49
|
c == ';' ||
|
@@ -153,15 +153,10 @@ int git_signature__pdup(git_signature **dest, const git_signature *source, git_p
|
|
153
153
|
return 0;
|
154
154
|
}
|
155
155
|
|
156
|
-
|
156
|
+
static void current_time(time_t *now_out, int *offset_out)
|
157
157
|
{
|
158
|
-
time_t now;
|
159
158
|
time_t offset;
|
160
|
-
struct tm *utc_tm;
|
161
|
-
git_signature *sig;
|
162
|
-
struct tm _utc;
|
163
|
-
|
164
|
-
*sig_out = NULL;
|
159
|
+
struct tm _utc, *utc_tm;
|
165
160
|
|
166
161
|
/*
|
167
162
|
* Get the current time as seconds since the epoch and
|
@@ -171,18 +166,26 @@ int git_signature_now(git_signature **sig_out, const char *name, const char *ema
|
|
171
166
|
* us that time as seconds since the epoch. The difference
|
172
167
|
* between its return value and 'now' is our offset to UTC.
|
173
168
|
*/
|
174
|
-
time(
|
175
|
-
utc_tm = p_gmtime_r(
|
169
|
+
time(now_out);
|
170
|
+
utc_tm = p_gmtime_r(now_out, &_utc);
|
176
171
|
utc_tm->tm_isdst = -1;
|
177
|
-
offset = (time_t)difftime(
|
172
|
+
offset = (time_t)difftime(*now_out, mktime(utc_tm));
|
178
173
|
offset /= 60;
|
179
174
|
|
180
|
-
|
181
|
-
|
175
|
+
*offset_out = (int)offset;
|
176
|
+
}
|
177
|
+
|
178
|
+
int git_signature_now(
|
179
|
+
git_signature **sig_out,
|
180
|
+
const char *name,
|
181
|
+
const char *email)
|
182
|
+
{
|
183
|
+
time_t now;
|
184
|
+
int offset;
|
182
185
|
|
183
|
-
|
186
|
+
current_time(&now, &offset);
|
184
187
|
|
185
|
-
return
|
188
|
+
return git_signature_new(sig_out, name, email, now, offset);
|
186
189
|
}
|
187
190
|
|
188
191
|
int git_signature_default(git_signature **out, git_repository *repo)
|
@@ -202,6 +205,120 @@ int git_signature_default(git_signature **out, git_repository *repo)
|
|
202
205
|
return error;
|
203
206
|
}
|
204
207
|
|
208
|
+
static int user_from_env(
|
209
|
+
git_signature **out,
|
210
|
+
git_repository *repo,
|
211
|
+
const char *name_env_var,
|
212
|
+
const char *email_env_var,
|
213
|
+
const char *date_env_var,
|
214
|
+
time_t default_time,
|
215
|
+
int default_offset)
|
216
|
+
{
|
217
|
+
int error;
|
218
|
+
git_config *cfg;
|
219
|
+
const char *name, *email, *date;
|
220
|
+
git_time_t timestamp;
|
221
|
+
int offset;
|
222
|
+
git_str name_env = GIT_STR_INIT;
|
223
|
+
git_str email_env = GIT_STR_INIT;
|
224
|
+
git_str date_env = GIT_STR_INIT;
|
225
|
+
|
226
|
+
if ((error = git_repository_config_snapshot(&cfg, repo)) < 0)
|
227
|
+
return error;
|
228
|
+
|
229
|
+
/* Check if the environment variable for the name is set */
|
230
|
+
if (!(git__getenv(&name_env, name_env_var))) {
|
231
|
+
name = git_str_cstr(&name_env);
|
232
|
+
} else {
|
233
|
+
/* or else read the configuration value. */
|
234
|
+
if ((error = git_config_get_string(&name, cfg, "user.name")) < 0)
|
235
|
+
goto done;
|
236
|
+
}
|
237
|
+
|
238
|
+
/* Check if the environment variable for the email is set. */
|
239
|
+
if (!(git__getenv(&email_env, email_env_var))) {
|
240
|
+
email = git_str_cstr(&email_env);
|
241
|
+
} else {
|
242
|
+
if ((error = git_config_get_string(&email, cfg, "user.email")) == GIT_ENOTFOUND) {
|
243
|
+
git_error *last_error;
|
244
|
+
|
245
|
+
git_error_save(&last_error);
|
246
|
+
|
247
|
+
if ((error = git__getenv(&email_env, "EMAIL")) < 0) {
|
248
|
+
git_error_restore(last_error);
|
249
|
+
error = GIT_ENOTFOUND;
|
250
|
+
goto done;
|
251
|
+
}
|
252
|
+
|
253
|
+
email = git_str_cstr(&email_env);
|
254
|
+
git_error_free(last_error);
|
255
|
+
} else if (error < 0) {
|
256
|
+
goto done;
|
257
|
+
}
|
258
|
+
}
|
259
|
+
|
260
|
+
/* Check if the environment variable for the timestamp is set */
|
261
|
+
if (!(git__getenv(&date_env, date_env_var))) {
|
262
|
+
date = git_str_cstr(&date_env);
|
263
|
+
|
264
|
+
if ((error = git_date_offset_parse(×tamp, &offset, date)) < 0)
|
265
|
+
goto done;
|
266
|
+
} else {
|
267
|
+
timestamp = default_time;
|
268
|
+
offset = default_offset;
|
269
|
+
}
|
270
|
+
|
271
|
+
error = git_signature_new(out, name, email, timestamp, offset);
|
272
|
+
|
273
|
+
done:
|
274
|
+
git_config_free(cfg);
|
275
|
+
git_str_dispose(&name_env);
|
276
|
+
git_str_dispose(&email_env);
|
277
|
+
git_str_dispose(&date_env);
|
278
|
+
return error;
|
279
|
+
}
|
280
|
+
|
281
|
+
int git_signature_default_from_env(
|
282
|
+
git_signature **author_out,
|
283
|
+
git_signature **committer_out,
|
284
|
+
git_repository *repo)
|
285
|
+
{
|
286
|
+
git_signature *author = NULL, *committer = NULL;
|
287
|
+
time_t now;
|
288
|
+
int offset;
|
289
|
+
int error;
|
290
|
+
|
291
|
+
GIT_ASSERT_ARG(author_out || committer_out);
|
292
|
+
GIT_ASSERT_ARG(repo);
|
293
|
+
|
294
|
+
current_time(&now, &offset);
|
295
|
+
|
296
|
+
if (author_out &&
|
297
|
+
(error = user_from_env(&author, repo, "GIT_AUTHOR_NAME",
|
298
|
+
"GIT_AUTHOR_EMAIL", "GIT_AUTHOR_DATE",
|
299
|
+
now, offset)) < 0)
|
300
|
+
goto on_error;
|
301
|
+
|
302
|
+
if (committer_out &&
|
303
|
+
(error = user_from_env(&committer, repo, "GIT_COMMITTER_NAME",
|
304
|
+
"GIT_COMMITTER_EMAIL", "GIT_COMMITTER_DATE",
|
305
|
+
now, offset)) < 0)
|
306
|
+
goto on_error;
|
307
|
+
|
308
|
+
if (author_out)
|
309
|
+
*author_out = author;
|
310
|
+
|
311
|
+
if (committer_out)
|
312
|
+
*committer_out = committer;
|
313
|
+
|
314
|
+
return 0;
|
315
|
+
|
316
|
+
on_error:
|
317
|
+
git__free(author);
|
318
|
+
git__free(committer);
|
319
|
+
return error;
|
320
|
+
}
|
321
|
+
|
205
322
|
int git_signature__parse(git_signature *sig, const char **buffer_out,
|
206
323
|
const char *buffer_end, const char *header, char ender)
|
207
324
|
{
|
@@ -17,7 +17,6 @@
|
|
17
17
|
int git_signature__parse(git_signature *sig, const char **buffer_out, const char *buffer_end, const char *header, char ender);
|
18
18
|
void git_signature__writebuf(git_str *buf, const char *header, const git_signature *sig);
|
19
19
|
bool git_signature__equal(const git_signature *one, const git_signature *two);
|
20
|
-
|
21
20
|
int git_signature__pdup(git_signature **dest, const git_signature *source, git_pool *pool);
|
22
21
|
|
23
22
|
#endif
|