rugged 1.3.1 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +34 -2
- data/ext/rugged/extconf.rb +6 -3
- data/ext/rugged/rugged.c +16 -0
- data/ext/rugged/rugged.h +4 -0
- data/ext/rugged/rugged_allocator.c +0 -54
- data/ext/rugged/rugged_blame.c +2 -0
- data/ext/rugged/rugged_blob.c +3 -0
- data/ext/rugged/rugged_commit.c +1 -0
- data/ext/rugged/rugged_config.c +9 -2
- data/ext/rugged/rugged_diff.c +1 -0
- data/ext/rugged/rugged_index.c +2 -0
- data/ext/rugged/rugged_patch.c +1 -0
- data/ext/rugged/rugged_rebase.c +1 -0
- data/ext/rugged/rugged_reference.c +1 -0
- data/ext/rugged/rugged_remote.c +28 -10
- data/ext/rugged/rugged_repo.c +7 -9
- data/ext/rugged/rugged_revwalk.c +5 -1
- data/ext/rugged/rugged_settings.c +5 -0
- data/ext/rugged/rugged_submodule.c +1 -0
- data/ext/rugged/rugged_tag.c +1 -0
- data/ext/rugged/rugged_tree.c +4 -0
- data/lib/rugged/index.rb +1 -1
- data/lib/rugged/tree.rb +5 -1
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/AUTHORS +1 -0
- data/vendor/libgit2/CMakeLists.txt +141 -289
- data/vendor/libgit2/COPYING +301 -20
- data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
- data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
- data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
- data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
- data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
- data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
- data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
- data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
- data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
- data/vendor/libgit2/cmake/FindHTTP_Parser.cmake +17 -17
- data/vendor/libgit2/cmake/FindIntlIconv.cmake +51 -0
- data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
- data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
- data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
- data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
- data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
- data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
- data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
- data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
- data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
- data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
- data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
- data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
- data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
- data/vendor/libgit2/cmake/SelectHTTPParser.cmake +34 -0
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +129 -101
- data/vendor/libgit2/cmake/SelectHashes.cmake +113 -54
- data/vendor/libgit2/cmake/SelectRegex.cmake +56 -0
- data/vendor/libgit2/cmake/SelectSSH.cmake +46 -0
- data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
- data/vendor/libgit2/cmake/SelectZlib.cmake +38 -0
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
- data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
- data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
- data/vendor/libgit2/deps/llhttp/api.c +510 -0
- data/vendor/libgit2/deps/llhttp/http.c +170 -0
- data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
- data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
- data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +7 -5
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +25 -25
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
- data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
- data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +89 -88
- data/vendor/libgit2/deps/pcre/LICENCE +5 -5
- data/vendor/libgit2/deps/pcre/pcre.h +2 -2
- data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
- data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
- data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
- data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
- data/vendor/libgit2/deps/xdiff/git-xdiff.h +56 -0
- data/vendor/libgit2/{src → deps}/xdiff/xdiff.h +15 -15
- data/vendor/libgit2/{src → deps}/xdiff/xdiffi.c +152 -125
- data/vendor/libgit2/{src → deps}/xdiff/xdiffi.h +2 -4
- data/vendor/libgit2/{src → deps}/xdiff/xemit.c +26 -10
- data/vendor/libgit2/{src → deps}/xdiff/xhistogram.c +92 -94
- data/vendor/libgit2/{src → deps}/xdiff/xinclude.h +1 -12
- data/vendor/libgit2/{src → deps}/xdiff/xmacros.h +18 -1
- data/vendor/libgit2/{src → deps}/xdiff/xmerge.c +126 -137
- data/vendor/libgit2/{src → deps}/xdiff/xpatience.c +26 -46
- data/vendor/libgit2/{src → deps}/xdiff/xprepare.c +24 -46
- data/vendor/libgit2/{src → deps}/xdiff/xutils.c +36 -8
- data/vendor/libgit2/{src → deps}/xdiff/xutils.h +2 -1
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
- data/vendor/libgit2/deps/zlib/LICENSE +22 -0
- data/vendor/libgit2/deps/zlib/adler32.c +7 -22
- data/vendor/libgit2/deps/zlib/crc32.c +931 -317
- data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
- data/vendor/libgit2/deps/zlib/deflate.c +428 -453
- data/vendor/libgit2/deps/zlib/deflate.h +51 -23
- data/vendor/libgit2/deps/zlib/gzguts.h +15 -19
- data/vendor/libgit2/deps/zlib/infback.c +19 -31
- data/vendor/libgit2/deps/zlib/inffast.c +15 -18
- data/vendor/libgit2/deps/zlib/inffast.h +1 -1
- data/vendor/libgit2/deps/zlib/inflate.c +75 -110
- data/vendor/libgit2/deps/zlib/inflate.h +3 -2
- data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
- data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
- data/vendor/libgit2/deps/zlib/trees.c +294 -380
- data/vendor/libgit2/deps/zlib/zconf.h +23 -14
- data/vendor/libgit2/deps/zlib/zlib.h +310 -284
- data/vendor/libgit2/deps/zlib/zutil.c +20 -46
- data/vendor/libgit2/deps/zlib/zutil.h +24 -41
- data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
- data/vendor/libgit2/include/git2/apply.h +43 -8
- data/vendor/libgit2/include/git2/attr.h +28 -6
- data/vendor/libgit2/include/git2/blame.h +137 -29
- data/vendor/libgit2/include/git2/blob.h +85 -29
- data/vendor/libgit2/include/git2/branch.h +25 -16
- data/vendor/libgit2/include/git2/buffer.h +24 -82
- data/vendor/libgit2/include/git2/cert.h +4 -3
- data/vendor/libgit2/include/git2/checkout.h +88 -34
- data/vendor/libgit2/include/git2/cherrypick.h +10 -3
- data/vendor/libgit2/include/git2/clone.h +28 -12
- data/vendor/libgit2/include/git2/commit.h +134 -3
- data/vendor/libgit2/include/git2/common.h +172 -59
- data/vendor/libgit2/include/git2/config.h +118 -32
- data/vendor/libgit2/include/git2/credential.h +32 -3
- data/vendor/libgit2/include/git2/credential_helpers.h +2 -0
- data/vendor/libgit2/include/git2/deprecated.h +141 -3
- data/vendor/libgit2/include/git2/describe.h +20 -3
- data/vendor/libgit2/include/git2/diff.h +95 -19
- data/vendor/libgit2/include/git2/email.h +10 -30
- data/vendor/libgit2/include/git2/errors.h +51 -61
- data/vendor/libgit2/include/git2/experimental.h +20 -0
- data/vendor/libgit2/include/git2/filter.h +21 -9
- data/vendor/libgit2/include/git2/global.h +8 -1
- data/vendor/libgit2/include/git2/graph.h +4 -2
- data/vendor/libgit2/include/git2/ignore.h +11 -1
- data/vendor/libgit2/include/git2/index.h +111 -11
- data/vendor/libgit2/include/git2/indexer.h +67 -2
- data/vendor/libgit2/include/git2/mailmap.h +7 -1
- data/vendor/libgit2/include/git2/merge.h +70 -5
- data/vendor/libgit2/include/git2/message.h +4 -2
- data/vendor/libgit2/include/git2/net.h +3 -1
- data/vendor/libgit2/include/git2/notes.h +9 -6
- data/vendor/libgit2/include/git2/object.h +57 -7
- data/vendor/libgit2/include/git2/odb.h +156 -33
- data/vendor/libgit2/include/git2/odb_backend.h +132 -16
- data/vendor/libgit2/include/git2/oid.h +116 -17
- data/vendor/libgit2/include/git2/oidarray.h +7 -1
- data/vendor/libgit2/include/git2/pack.h +37 -9
- data/vendor/libgit2/include/git2/patch.h +10 -3
- data/vendor/libgit2/include/git2/pathspec.h +10 -1
- data/vendor/libgit2/include/git2/proxy.h +11 -1
- data/vendor/libgit2/include/git2/rebase.h +18 -7
- data/vendor/libgit2/include/git2/refdb.h +5 -2
- data/vendor/libgit2/include/git2/reflog.h +4 -3
- data/vendor/libgit2/include/git2/refs.h +11 -8
- data/vendor/libgit2/include/git2/refspec.h +14 -4
- data/vendor/libgit2/include/git2/remote.h +295 -54
- data/vendor/libgit2/include/git2/repository.h +95 -25
- data/vendor/libgit2/include/git2/reset.h +18 -5
- data/vendor/libgit2/include/git2/revert.h +9 -4
- data/vendor/libgit2/include/git2/revparse.h +4 -4
- data/vendor/libgit2/include/git2/revwalk.h +7 -3
- data/vendor/libgit2/include/git2/signature.h +47 -2
- data/vendor/libgit2/include/git2/stash.h +78 -10
- data/vendor/libgit2/include/git2/status.h +24 -11
- data/vendor/libgit2/include/git2/stdint.h +87 -85
- data/vendor/libgit2/include/git2/strarray.h +2 -16
- data/vendor/libgit2/include/git2/submodule.h +27 -11
- data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
- data/vendor/libgit2/include/git2/sys/commit.h +77 -3
- data/vendor/libgit2/include/git2/sys/commit_graph.h +110 -59
- data/vendor/libgit2/include/git2/sys/config.h +80 -4
- data/vendor/libgit2/include/git2/sys/credential.h +4 -3
- data/vendor/libgit2/include/git2/sys/diff.h +21 -1
- data/vendor/libgit2/include/git2/sys/email.h +7 -0
- data/vendor/libgit2/include/git2/sys/errors.h +76 -0
- data/vendor/libgit2/include/git2/sys/filter.h +66 -3
- data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
- data/vendor/libgit2/include/git2/sys/index.h +3 -2
- data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
- data/vendor/libgit2/include/git2/sys/merge.h +55 -7
- data/vendor/libgit2/include/git2/sys/midx.h +47 -4
- data/vendor/libgit2/include/git2/sys/odb_backend.h +10 -9
- data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
- data/vendor/libgit2/include/git2/sys/path.h +12 -1
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
- data/vendor/libgit2/include/git2/sys/refs.h +3 -2
- data/vendor/libgit2/include/git2/sys/remote.h +53 -0
- data/vendor/libgit2/include/git2/sys/repository.h +63 -3
- data/vendor/libgit2/include/git2/sys/stream.h +26 -3
- data/vendor/libgit2/include/git2/sys/transport.h +87 -41
- data/vendor/libgit2/include/git2/tag.h +4 -1
- data/vendor/libgit2/include/git2/trace.h +9 -3
- data/vendor/libgit2/include/git2/transaction.h +3 -2
- data/vendor/libgit2/include/git2/transport.h +11 -3
- data/vendor/libgit2/include/git2/tree.h +20 -8
- data/vendor/libgit2/include/git2/types.h +26 -10
- data/vendor/libgit2/include/git2/version.h +63 -6
- data/vendor/libgit2/include/git2/worktree.h +30 -8
- data/vendor/libgit2/include/git2.h +1 -0
- data/vendor/libgit2/src/CMakeLists.txt +203 -420
- data/vendor/libgit2/src/README.md +12 -0
- data/vendor/libgit2/src/cli/CMakeLists.txt +56 -0
- data/vendor/libgit2/src/cli/README.md +26 -0
- data/vendor/libgit2/src/{branch.h → cli/cmd.c} +10 -8
- data/vendor/libgit2/src/cli/cmd.h +37 -0
- data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
- data/vendor/libgit2/src/cli/cmd_cat_file.c +202 -0
- data/vendor/libgit2/src/cli/cmd_clone.c +190 -0
- data/vendor/libgit2/src/cli/cmd_config.c +241 -0
- data/vendor/libgit2/src/cli/cmd_hash_object.c +152 -0
- data/vendor/libgit2/src/cli/cmd_help.c +85 -0
- data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
- data/vendor/libgit2/src/cli/cmd_init.c +102 -0
- data/vendor/libgit2/src/cli/common.c +168 -0
- data/vendor/libgit2/src/cli/common.h +63 -0
- data/vendor/libgit2/src/cli/error.h +51 -0
- data/vendor/libgit2/src/cli/main.c +134 -0
- data/vendor/libgit2/src/cli/opt.c +695 -0
- data/vendor/libgit2/src/cli/opt.h +367 -0
- data/vendor/libgit2/src/cli/opt_usage.c +263 -0
- data/vendor/libgit2/src/cli/opt_usage.h +40 -0
- data/vendor/libgit2/src/cli/progress.c +395 -0
- data/vendor/libgit2/src/cli/progress.h +129 -0
- data/vendor/libgit2/src/cli/sighandler.h +20 -0
- data/vendor/libgit2/src/cli/unix/sighandler.c +37 -0
- data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
- data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
- data/vendor/libgit2/src/libgit2/CMakeLists.txt +140 -0
- data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +2 -2
- data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
- data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +32 -34
- data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
- data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +48 -31
- data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +25 -20
- data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +6 -4
- data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +87 -46
- data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +5 -9
- data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +152 -57
- data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +1 -0
- data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -2
- data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
- data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
- data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
- data/vendor/libgit2/src/libgit2/branch.h +31 -0
- data/vendor/libgit2/src/libgit2/buf.c +126 -0
- data/vendor/libgit2/src/libgit2/buf.h +50 -0
- data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +22 -17
- data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +7 -9
- data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +107 -91
- data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -2
- data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +14 -15
- data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +254 -203
- data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +4 -1
- data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +296 -77
- data/vendor/libgit2/src/libgit2/commit.h +87 -0
- data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +246 -135
- data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +33 -8
- data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +17 -7
- data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +1 -0
- data/vendor/libgit2/src/libgit2/common.h +55 -0
- data/vendor/libgit2/src/{config.c → libgit2/config.c} +490 -360
- data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
- data/vendor/libgit2/src/{config.h → libgit2/config.h} +24 -6
- data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +8 -10
- data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +4 -5
- data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +212 -183
- data/vendor/libgit2/src/libgit2/config_list.c +285 -0
- data/vendor/libgit2/src/libgit2/config_list.h +32 -0
- data/vendor/libgit2/src/libgit2/config_mem.c +374 -0
- data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +37 -32
- data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +24 -31
- data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
- data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +62 -51
- data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +44 -14
- data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +8 -10
- data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +46 -55
- data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +5 -5
- data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +45 -27
- data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +70 -20
- data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
- data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +22 -6
- data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +192 -105
- data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
- data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
- data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +49 -16
- data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
- data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +1 -1
- data/vendor/libgit2/src/{email.c → libgit2/email.c} +58 -40
- data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
- data/vendor/libgit2/src/{transports/ssh.h → libgit2/experimental.h.in} +3 -4
- data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +105 -30
- data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -3
- data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +30 -28
- data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +132 -58
- data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
- data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +3 -3
- data/vendor/libgit2/src/libgit2/grafts.c +270 -0
- data/vendor/libgit2/src/libgit2/grafts.h +35 -0
- data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +1 -1
- data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
- data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
- data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +44 -39
- data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
- data/vendor/libgit2/src/{index.c → libgit2/index.c} +460 -276
- data/vendor/libgit2/src/{index.h → libgit2/index.h} +21 -5
- data/vendor/libgit2/src/libgit2/index_map.c +95 -0
- data/vendor/libgit2/src/libgit2/index_map.h +28 -0
- data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +208 -124
- data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +102 -71
- data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +8 -5
- data/vendor/libgit2/src/libgit2/libgit2.c +268 -0
- data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +39 -37
- data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +83 -73
- data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
- data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +4 -4
- data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -5
- data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
- data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +174 -112
- data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +17 -6
- data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +53 -57
- data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +9 -2
- data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +29 -37
- data/vendor/libgit2/src/{object.c → libgit2/object.c} +166 -35
- data/vendor/libgit2/src/{object.h → libgit2/object.h} +17 -2
- data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +261 -88
- data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
- data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
- data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +67 -22
- data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +162 -89
- data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +171 -92
- data/vendor/libgit2/src/libgit2/oid.h +284 -0
- data/vendor/libgit2/src/libgit2/oidarray.c +89 -0
- data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +5 -1
- data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +126 -66
- data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +28 -12
- data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +146 -111
- data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +45 -25
- data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +8 -4
- data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +1 -1
- data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
- data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +8 -1
- data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +51 -16
- data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
- data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +42 -34
- data/vendor/libgit2/src/libgit2/path.c +375 -0
- data/vendor/libgit2/src/libgit2/path.h +68 -0
- data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +7 -7
- data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
- data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
- data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
- data/vendor/libgit2/src/{push.c → libgit2/push.c} +116 -60
- data/vendor/libgit2/src/{push.h → libgit2/push.h} +5 -16
- data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
- data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
- data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +147 -147
- data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +639 -254
- data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +8 -7
- data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +3 -2
- data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +67 -39
- data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +8 -3
- data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +60 -38
- data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +13 -2
- data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +821 -454
- data/vendor/libgit2/src/libgit2/remote.h +101 -0
- data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +1377 -594
- data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +43 -12
- data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
- data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +18 -22
- data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +76 -44
- data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +48 -19
- data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +3 -3
- data/vendor/libgit2/src/{libgit2.c → libgit2/settings.c} +162 -95
- data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +6 -2
- data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +144 -21
- data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -2
- data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +243 -68
- data/vendor/libgit2/src/{status.c → libgit2/status.c} +5 -2
- data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
- data/vendor/libgit2/src/libgit2/strarray.h +25 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +62 -67
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +41 -24
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +2 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +11 -3
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +6 -3
- data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
- data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
- data/vendor/libgit2/src/libgit2/streams/socket.c +428 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +3 -1
- data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +79 -19
- data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +5 -0
- data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +279 -220
- data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +10 -11
- data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
- data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +55 -18
- data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +74 -43
- data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
- data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
- data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
- data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +7 -7
- data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +27 -21
- data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +4 -1
- data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +14 -11
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +3 -5
- data/vendor/libgit2/src/{transports/auth_negotiate.c → libgit2/transports/auth_gssapi.c} +44 -45
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +1 -1
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +1 -2
- data/vendor/libgit2/src/{transports/auth_ntlm.c → libgit2/transports/auth_ntlmclient.c} +22 -22
- data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +1 -1
- data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +16 -19
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +49 -24
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -11
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +188 -134
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
- data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
- data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +159 -127
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +142 -165
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +56 -36
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +307 -74
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +297 -97
- data/vendor/libgit2/src/libgit2/transports/ssh.c +85 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
- data/vendor/libgit2/src/{transports/ssh.c → libgit2/transports/ssh_libssh2.c} +414 -268
- data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +101 -75
- data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +30 -20
- data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +7 -5
- data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +128 -110
- data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +7 -6
- data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +160 -121
- data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
- data/vendor/libgit2/src/util/CMakeLists.txt +77 -0
- data/vendor/libgit2/src/{alloc.c → util/alloc.c} +69 -7
- data/vendor/libgit2/src/util/alloc.h +65 -0
- data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
- data/vendor/libgit2/src/util/allocators/debugalloc.h +17 -0
- data/vendor/libgit2/src/util/allocators/failalloc.c +32 -0
- data/vendor/libgit2/src/util/allocators/failalloc.h +17 -0
- data/vendor/libgit2/src/util/allocators/stdalloc.c +37 -0
- data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
- data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +50 -0
- data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{array.h → util/array.h} +25 -19
- data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
- data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +5 -1
- data/vendor/libgit2/src/util/ctype_compat.h +70 -0
- data/vendor/libgit2/src/{date.c → util/date.c} +35 -33
- data/vendor/libgit2/src/util/date.h +45 -0
- data/vendor/libgit2/src/util/errors.c +401 -0
- data/vendor/libgit2/src/{errors.h → util/errors.h} +22 -19
- data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +35 -30
- data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +21 -8
- data/vendor/libgit2/src/{path.c → util/fs_path.c} +591 -615
- data/vendor/libgit2/src/{path.h → util/fs_path.h} +257 -181
- data/vendor/libgit2/src/{futils.c → util/futils.c} +144 -95
- data/vendor/libgit2/src/{futils.h → util/futils.h} +40 -18
- data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +33 -2
- data/vendor/libgit2/src/{common.h → util/git2_util.h} +26 -59
- data/vendor/libgit2/src/util/hash/builtin.c +53 -0
- data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
- data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
- data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
- data/vendor/libgit2/src/util/hash/openssl.c +347 -0
- data/vendor/libgit2/src/util/hash/openssl.h +61 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
- data/vendor/libgit2/src/util/hash/sha.h +73 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
- data/vendor/libgit2/src/util/hash/win32.c +549 -0
- data/vendor/libgit2/src/util/hash/win32.h +60 -0
- data/vendor/libgit2/src/util/hash.c +158 -0
- data/vendor/libgit2/src/util/hash.h +61 -0
- data/vendor/libgit2/src/util/hashmap.h +424 -0
- data/vendor/libgit2/src/util/hashmap_str.h +43 -0
- data/vendor/libgit2/src/{integer.h → util/integer.h} +3 -1
- data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
- data/vendor/libgit2/src/util/net.c +1160 -0
- data/vendor/libgit2/src/{net.h → util/net.h} +45 -4
- data/vendor/libgit2/src/{pool.c → util/pool.c} +1 -1
- data/vendor/libgit2/src/{pool.h → util/pool.h} +6 -1
- data/vendor/libgit2/src/{posix.c → util/posix.c} +57 -3
- data/vendor/libgit2/src/{posix.h → util/posix.h} +26 -1
- data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +3 -3
- data/vendor/libgit2/src/util/process.h +222 -0
- data/vendor/libgit2/src/util/rand.c +230 -0
- data/vendor/libgit2/src/util/rand.h +37 -0
- data/vendor/libgit2/src/{regexp.c → util/regexp.c} +5 -5
- data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
- data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
- data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
- data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +15 -14
- data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +5 -5
- data/vendor/libgit2/src/util/staticstr.h +66 -0
- data/vendor/libgit2/src/{buffer.c → util/str.c} +159 -153
- data/vendor/libgit2/src/util/str.h +357 -0
- data/vendor/libgit2/src/util/strlist.c +108 -0
- data/vendor/libgit2/src/util/strlist.h +36 -0
- data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
- data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
- data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
- data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
- data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -6
- data/vendor/libgit2/src/util/unix/process.c +629 -0
- data/vendor/libgit2/src/{unix → util/unix}/realpath.c +24 -8
- data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
- data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
- data/vendor/libgit2/src/{util.c → util/util.c} +24 -19
- data/vendor/libgit2/src/{util.h → util/util.h} +30 -81
- data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
- data/vendor/libgit2/src/{vector.c → util/vector.c} +3 -3
- data/vendor/libgit2/src/{vector.h → util/vector.h} +4 -4
- data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/error.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +148 -17
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
- data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
- data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +42 -35
- data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
- data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
- data/vendor/libgit2/src/util/win32/process.c +506 -0
- data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
- data/vendor/libgit2/src/util/win32/utf-conv.c +144 -0
- data/vendor/libgit2/src/util/win32/utf-conv.h +127 -0
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
- data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
- data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
- metadata +431 -362
- data/vendor/libgit2/cmake/FindIconv.cmake +0 -45
- data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
- data/vendor/libgit2/deps/http-parser/COPYING +0 -23
- data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
- data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
- data/vendor/libgit2/deps/zlib/COPYING +0 -27
- data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
- data/vendor/libgit2/src/alloc.h +0 -40
- data/vendor/libgit2/src/allocators/failalloc.c +0 -92
- data/vendor/libgit2/src/allocators/failalloc.h +0 -23
- data/vendor/libgit2/src/allocators/stdalloc.c +0 -150
- data/vendor/libgit2/src/allocators/win32_leakcheck.c +0 -118
- data/vendor/libgit2/src/buffer.h +0 -374
- data/vendor/libgit2/src/commit.h +0 -46
- data/vendor/libgit2/src/config_entries.c +0 -237
- data/vendor/libgit2/src/config_entries.h +0 -24
- data/vendor/libgit2/src/config_mem.c +0 -220
- data/vendor/libgit2/src/errors.c +0 -238
- data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
- data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
- data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
- data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
- data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
- data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
- data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
- data/vendor/libgit2/src/hash/sha1.h +0 -38
- data/vendor/libgit2/src/hash.c +0 -110
- data/vendor/libgit2/src/hash.h +0 -46
- data/vendor/libgit2/src/idxmap.c +0 -157
- data/vendor/libgit2/src/idxmap.h +0 -177
- data/vendor/libgit2/src/khash.h +0 -615
- data/vendor/libgit2/src/libgit2.h +0 -15
- data/vendor/libgit2/src/message.h +0 -17
- data/vendor/libgit2/src/net.c +0 -540
- data/vendor/libgit2/src/netops.c +0 -125
- data/vendor/libgit2/src/netops.h +0 -68
- data/vendor/libgit2/src/offmap.c +0 -101
- data/vendor/libgit2/src/offmap.h +0 -133
- data/vendor/libgit2/src/oid.h +0 -51
- data/vendor/libgit2/src/oidarray.c +0 -43
- data/vendor/libgit2/src/oidmap.c +0 -107
- data/vendor/libgit2/src/oidmap.h +0 -128
- data/vendor/libgit2/src/remote.h +0 -55
- data/vendor/libgit2/src/streams/socket.c +0 -239
- data/vendor/libgit2/src/strmap.c +0 -100
- data/vendor/libgit2/src/strmap.h +0 -131
- data/vendor/libgit2/src/sysdir.c +0 -347
- data/vendor/libgit2/src/threadstate.c +0 -84
- data/vendor/libgit2/src/threadstate.h +0 -24
- data/vendor/libgit2/src/win32/findfile.c +0 -230
- data/vendor/libgit2/src/win32/findfile.h +0 -19
- data/vendor/libgit2/src/win32/utf-conv.c +0 -146
- data/vendor/libgit2/src/win32/utf-conv.h +0 -60
- /data/vendor/libgit2/{src → deps}/xdiff/xemit.h +0 -0
- /data/vendor/libgit2/{src → deps}/xdiff/xprepare.h +0 -0
- /data/vendor/libgit2/{src → deps}/xdiff/xtypes.h +0 -0
- /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
- /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
- /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
- /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
- /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
- /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
- /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
- /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
- /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
- /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
- /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
- /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
- /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
- /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
- /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
- /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
- /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
- /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
- /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
- /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
- /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
- /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
- /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
- /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
- /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
- /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
- /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
- /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
- /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
@@ -11,21 +11,24 @@
|
|
11
11
|
#include "git2/sys/config.h"
|
12
12
|
|
13
13
|
#include "array.h"
|
14
|
-
#include "
|
14
|
+
#include "str.h"
|
15
15
|
#include "config_backend.h"
|
16
|
-
#include "
|
16
|
+
#include "config_list.h"
|
17
17
|
#include "config_parse.h"
|
18
18
|
#include "filebuf.h"
|
19
19
|
#include "regexp.h"
|
20
20
|
#include "sysdir.h"
|
21
21
|
#include "wildmatch.h"
|
22
|
+
#include "hash.h"
|
22
23
|
|
23
24
|
/* Max depth for [include] directives */
|
24
25
|
#define MAX_INCLUDE_DEPTH 10
|
25
26
|
|
27
|
+
#define CONFIG_FILE_TYPE "file"
|
28
|
+
|
26
29
|
typedef struct config_file {
|
27
30
|
git_futils_filestamp stamp;
|
28
|
-
|
31
|
+
unsigned char checksum[GIT_HASH_SHA256_SIZE];
|
29
32
|
char *path;
|
30
33
|
git_array_t(struct config_file) includes;
|
31
34
|
} config_file;
|
@@ -33,7 +36,7 @@ typedef struct config_file {
|
|
33
36
|
typedef struct {
|
34
37
|
git_config_backend parent;
|
35
38
|
git_mutex values_mutex;
|
36
|
-
|
39
|
+
git_config_list *config_list;
|
37
40
|
const git_repository *repo;
|
38
41
|
git_config_level_t level;
|
39
42
|
|
@@ -41,7 +44,7 @@ typedef struct {
|
|
41
44
|
|
42
45
|
bool locked;
|
43
46
|
git_filebuf locked_buf;
|
44
|
-
|
47
|
+
git_str locked_content;
|
45
48
|
|
46
49
|
config_file file;
|
47
50
|
} config_file_backend;
|
@@ -49,13 +52,13 @@ typedef struct {
|
|
49
52
|
typedef struct {
|
50
53
|
const git_repository *repo;
|
51
54
|
config_file *file;
|
52
|
-
|
55
|
+
git_config_list *config_list;
|
53
56
|
git_config_level_t level;
|
54
57
|
unsigned int depth;
|
55
58
|
} config_file_parse_data;
|
56
59
|
|
57
|
-
static int config_file_read(
|
58
|
-
static int config_file_read_buffer(
|
60
|
+
static int config_file_read(git_config_list *config_list, const git_repository *repo, config_file *file, git_config_level_t level, int depth);
|
61
|
+
static int config_file_read_buffer(git_config_list *config_list, const git_repository *repo, config_file *file, git_config_level_t level, int depth, const char *buf, size_t buflen);
|
59
62
|
static int config_file_write(config_file_backend *cfg, const char *orig_key, const char *key, const git_regexp *preg, const char *value);
|
60
63
|
static char *escape_value(const char *ptr);
|
61
64
|
|
@@ -64,7 +67,7 @@ static char *escape_value(const char *ptr);
|
|
64
67
|
* refcount. This is its own function to make sure we use the mutex to
|
65
68
|
* avoid the map pointer from changing under us.
|
66
69
|
*/
|
67
|
-
static int
|
70
|
+
static int config_file_take_list(git_config_list **out, config_file_backend *b)
|
68
71
|
{
|
69
72
|
int error;
|
70
73
|
|
@@ -73,8 +76,8 @@ static int config_file_entries_take(git_config_entries **out, config_file_backen
|
|
73
76
|
return error;
|
74
77
|
}
|
75
78
|
|
76
|
-
|
77
|
-
*out = b->
|
79
|
+
git_config_list_incref(b->config_list);
|
80
|
+
*out = b->config_list;
|
78
81
|
|
79
82
|
git_mutex_unlock(&b->values_mutex);
|
80
83
|
|
@@ -105,10 +108,10 @@ static int config_file_open(git_config_backend *cfg, git_config_level_t level, c
|
|
105
108
|
b->level = level;
|
106
109
|
b->repo = repo;
|
107
110
|
|
108
|
-
if ((res =
|
111
|
+
if ((res = git_config_list_new(&b->config_list)) < 0)
|
109
112
|
return res;
|
110
113
|
|
111
|
-
if (!
|
114
|
+
if (!git_fs_path_exists(b->file.path))
|
112
115
|
return 0;
|
113
116
|
|
114
117
|
/*
|
@@ -120,9 +123,9 @@ static int config_file_open(git_config_backend *cfg, git_config_level_t level, c
|
|
120
123
|
if (p_access(b->file.path, R_OK) < 0)
|
121
124
|
return GIT_ENOTFOUND;
|
122
125
|
|
123
|
-
if (res < 0 || (res = config_file_read(b->
|
124
|
-
|
125
|
-
b->
|
126
|
+
if (res < 0 || (res = config_file_read(b->config_list, repo, &b->file, level, 0)) < 0) {
|
127
|
+
git_config_list_free(b->config_list);
|
128
|
+
b->config_list = NULL;
|
126
129
|
}
|
127
130
|
|
128
131
|
return res;
|
@@ -131,8 +134,8 @@ static int config_file_open(git_config_backend *cfg, git_config_level_t level, c
|
|
131
134
|
static int config_file_is_modified(int *modified, config_file *file)
|
132
135
|
{
|
133
136
|
config_file *include;
|
134
|
-
|
135
|
-
|
137
|
+
git_str buf = GIT_STR_INIT;
|
138
|
+
unsigned char checksum[GIT_HASH_SHA256_SIZE];
|
136
139
|
uint32_t i;
|
137
140
|
int error = 0;
|
138
141
|
|
@@ -144,10 +147,10 @@ static int config_file_is_modified(int *modified, config_file *file)
|
|
144
147
|
if ((error = git_futils_readbuffer(&buf, file->path)) < 0)
|
145
148
|
goto out;
|
146
149
|
|
147
|
-
if ((error = git_hash_buf(
|
150
|
+
if ((error = git_hash_buf(checksum, buf.ptr, buf.size, GIT_HASH_ALGORITHM_SHA256)) < 0)
|
148
151
|
goto out;
|
149
152
|
|
150
|
-
if (
|
153
|
+
if (memcmp(checksum, file->checksum, GIT_HASH_SHA256_SIZE) != 0) {
|
151
154
|
*modified = 1;
|
152
155
|
goto out;
|
153
156
|
}
|
@@ -159,7 +162,7 @@ check_includes:
|
|
159
162
|
}
|
160
163
|
|
161
164
|
out:
|
162
|
-
|
165
|
+
git_str_dispose(&buf);
|
163
166
|
|
164
167
|
return error;
|
165
168
|
}
|
@@ -174,10 +177,10 @@ static void config_file_clear_includes(config_file_backend *cfg)
|
|
174
177
|
git_array_clear(cfg->file.includes);
|
175
178
|
}
|
176
179
|
|
177
|
-
static int config_file_set_entries(git_config_backend *cfg,
|
180
|
+
static int config_file_set_entries(git_config_backend *cfg, git_config_list *config_list)
|
178
181
|
{
|
179
182
|
config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
|
180
|
-
|
183
|
+
git_config_list *old = NULL;
|
181
184
|
int error;
|
182
185
|
|
183
186
|
if (b->parent.readonly) {
|
@@ -190,40 +193,40 @@ static int config_file_set_entries(git_config_backend *cfg, git_config_entries *
|
|
190
193
|
goto out;
|
191
194
|
}
|
192
195
|
|
193
|
-
old = b->
|
194
|
-
b->
|
196
|
+
old = b->config_list;
|
197
|
+
b->config_list = config_list;
|
195
198
|
|
196
199
|
git_mutex_unlock(&b->values_mutex);
|
197
200
|
|
198
201
|
out:
|
199
|
-
|
202
|
+
git_config_list_free(old);
|
200
203
|
return error;
|
201
204
|
}
|
202
205
|
|
203
206
|
static int config_file_refresh_from_buffer(git_config_backend *cfg, const char *buf, size_t buflen)
|
204
207
|
{
|
205
208
|
config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
|
206
|
-
|
209
|
+
git_config_list *config_list = NULL;
|
207
210
|
int error;
|
208
211
|
|
209
212
|
config_file_clear_includes(b);
|
210
213
|
|
211
|
-
if ((error =
|
212
|
-
(error = config_file_read_buffer(
|
214
|
+
if ((error = git_config_list_new(&config_list)) < 0 ||
|
215
|
+
(error = config_file_read_buffer(config_list, b->repo, &b->file,
|
213
216
|
b->level, 0, buf, buflen)) < 0 ||
|
214
|
-
(error = config_file_set_entries(cfg,
|
217
|
+
(error = config_file_set_entries(cfg, config_list)) < 0)
|
215
218
|
goto out;
|
216
219
|
|
217
|
-
|
220
|
+
config_list = NULL;
|
218
221
|
out:
|
219
|
-
|
222
|
+
git_config_list_free(config_list);
|
220
223
|
return error;
|
221
224
|
}
|
222
225
|
|
223
226
|
static int config_file_refresh(git_config_backend *cfg)
|
224
227
|
{
|
225
228
|
config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
|
226
|
-
|
229
|
+
git_config_list *config_list = NULL;
|
227
230
|
int error, modified;
|
228
231
|
|
229
232
|
if (cfg->readonly)
|
@@ -237,14 +240,14 @@ static int config_file_refresh(git_config_backend *cfg)
|
|
237
240
|
|
238
241
|
config_file_clear_includes(b);
|
239
242
|
|
240
|
-
if ((error =
|
241
|
-
(error = config_file_read(
|
242
|
-
(error = config_file_set_entries(cfg,
|
243
|
+
if ((error = git_config_list_new(&config_list)) < 0 ||
|
244
|
+
(error = config_file_read(config_list, b->repo, &b->file, b->level, 0)) < 0 ||
|
245
|
+
(error = config_file_set_entries(cfg, config_list)) < 0)
|
243
246
|
goto out;
|
244
247
|
|
245
|
-
|
248
|
+
config_list = NULL;
|
246
249
|
out:
|
247
|
-
|
250
|
+
git_config_list_free(config_list);
|
248
251
|
|
249
252
|
return (error == GIT_ENOTFOUND) ? 0 : error;
|
250
253
|
}
|
@@ -257,7 +260,7 @@ static void config_file_free(git_config_backend *_backend)
|
|
257
260
|
return;
|
258
261
|
|
259
262
|
config_file_clear(&backend->file);
|
260
|
-
|
263
|
+
git_config_list_free(backend->config_list);
|
261
264
|
git_mutex_free(&backend->values_mutex);
|
262
265
|
git__free(backend);
|
263
266
|
}
|
@@ -267,19 +270,19 @@ static int config_file_iterator(
|
|
267
270
|
struct git_config_backend *backend)
|
268
271
|
{
|
269
272
|
config_file_backend *b = GIT_CONTAINER_OF(backend, config_file_backend, parent);
|
270
|
-
|
273
|
+
git_config_list *dupped = NULL, *config_list = NULL;
|
271
274
|
int error;
|
272
275
|
|
273
276
|
if ((error = config_file_refresh(backend)) < 0 ||
|
274
|
-
(error =
|
275
|
-
(error =
|
276
|
-
(error =
|
277
|
+
(error = config_file_take_list(&config_list, b)) < 0 ||
|
278
|
+
(error = git_config_list_dup(&dupped, config_list)) < 0 ||
|
279
|
+
(error = git_config_list_iterator_new(iter, dupped)) < 0)
|
277
280
|
goto out;
|
278
281
|
|
279
282
|
out:
|
280
|
-
/* Let iterator delete duplicated
|
281
|
-
|
282
|
-
|
283
|
+
/* Let iterator delete duplicated config_list when it's done */
|
284
|
+
git_config_list_free(config_list);
|
285
|
+
git_config_list_free(dupped);
|
283
286
|
return error;
|
284
287
|
}
|
285
288
|
|
@@ -291,24 +294,24 @@ static int config_file_snapshot(git_config_backend **out, git_config_backend *ba
|
|
291
294
|
static int config_file_set(git_config_backend *cfg, const char *name, const char *value)
|
292
295
|
{
|
293
296
|
config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
|
294
|
-
|
295
|
-
|
297
|
+
git_config_list *config_list;
|
298
|
+
git_config_list_entry *existing;
|
296
299
|
char *key, *esc_value = NULL;
|
297
300
|
int error;
|
298
301
|
|
299
302
|
if ((error = git_config__normalize_name(name, &key)) < 0)
|
300
303
|
return error;
|
301
304
|
|
302
|
-
if ((error =
|
305
|
+
if ((error = config_file_take_list(&config_list, b)) < 0)
|
303
306
|
return error;
|
304
307
|
|
305
308
|
/* Check whether we'd be modifying an included or multivar key */
|
306
|
-
if ((error =
|
309
|
+
if ((error = git_config_list_get_unique(&existing, config_list, key)) < 0) {
|
307
310
|
if (error != GIT_ENOTFOUND)
|
308
311
|
goto out;
|
309
312
|
error = 0;
|
310
|
-
} else if ((!existing->value && !value) ||
|
311
|
-
(existing->value && value && !strcmp(existing->value, value))) {
|
313
|
+
} else if ((!existing->base.entry.value && !value) ||
|
314
|
+
(existing->base.entry.value && value && !strcmp(existing->base.entry.value, value))) {
|
312
315
|
/* don't update if old and new values already match */
|
313
316
|
error = 0;
|
314
317
|
goto out;
|
@@ -324,43 +327,37 @@ static int config_file_set(git_config_backend *cfg, const char *name, const char
|
|
324
327
|
goto out;
|
325
328
|
|
326
329
|
out:
|
327
|
-
|
330
|
+
git_config_list_free(config_list);
|
328
331
|
git__free(esc_value);
|
329
332
|
git__free(key);
|
330
333
|
return error;
|
331
334
|
}
|
332
335
|
|
333
|
-
/* release the map containing the entry as an equivalent to freeing it */
|
334
|
-
static void config_file_entry_free(git_config_entry *entry)
|
335
|
-
{
|
336
|
-
git_config_entries *entries = (git_config_entries *) entry->payload;
|
337
|
-
git_config_entries_free(entries);
|
338
|
-
}
|
339
|
-
|
340
336
|
/*
|
341
337
|
* Internal function that actually gets the value in string form
|
342
338
|
*/
|
343
|
-
static int config_file_get(
|
339
|
+
static int config_file_get(
|
340
|
+
git_config_backend *cfg,
|
341
|
+
const char *key,
|
342
|
+
git_config_backend_entry **out)
|
344
343
|
{
|
345
344
|
config_file_backend *h = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
|
346
|
-
|
347
|
-
|
345
|
+
git_config_list *config_list = NULL;
|
346
|
+
git_config_list_entry *entry;
|
348
347
|
int error = 0;
|
349
348
|
|
350
349
|
if (!h->parent.readonly && ((error = config_file_refresh(cfg)) < 0))
|
351
350
|
return error;
|
352
351
|
|
353
|
-
if ((error =
|
352
|
+
if ((error = config_file_take_list(&config_list, h)) < 0)
|
354
353
|
return error;
|
355
354
|
|
356
|
-
if ((error = (
|
357
|
-
|
355
|
+
if ((error = (git_config_list_get(&entry, config_list, key))) < 0) {
|
356
|
+
git_config_list_free(config_list);
|
358
357
|
return error;
|
359
358
|
}
|
360
359
|
|
361
|
-
|
362
|
-
entry->payload = entries;
|
363
|
-
*out = entry;
|
360
|
+
*out = &entry->base;
|
364
361
|
|
365
362
|
return 0;
|
366
363
|
}
|
@@ -395,29 +392,29 @@ out:
|
|
395
392
|
static int config_file_delete(git_config_backend *cfg, const char *name)
|
396
393
|
{
|
397
394
|
config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
|
398
|
-
|
399
|
-
|
395
|
+
git_config_list *config_list = NULL;
|
396
|
+
git_config_list_entry *entry;
|
400
397
|
char *key = NULL;
|
401
398
|
int error;
|
402
399
|
|
403
400
|
if ((error = git_config__normalize_name(name, &key)) < 0)
|
404
401
|
goto out;
|
405
402
|
|
406
|
-
if ((error =
|
403
|
+
if ((error = config_file_take_list(&config_list, b)) < 0)
|
407
404
|
goto out;
|
408
405
|
|
409
406
|
/* Check whether we'd be modifying an included or multivar key */
|
410
|
-
if ((error =
|
407
|
+
if ((error = git_config_list_get_unique(&entry, config_list, key)) < 0) {
|
411
408
|
if (error == GIT_ENOTFOUND)
|
412
409
|
git_error_set(GIT_ERROR_CONFIG, "could not find key '%s' to delete", name);
|
413
410
|
goto out;
|
414
411
|
}
|
415
412
|
|
416
|
-
if ((error = config_file_write(b, name, entry->name, NULL, NULL)) < 0)
|
413
|
+
if ((error = config_file_write(b, name, entry->base.entry.name, NULL, NULL)) < 0)
|
417
414
|
goto out;
|
418
415
|
|
419
416
|
out:
|
420
|
-
|
417
|
+
git_config_list_free(config_list);
|
421
418
|
git__free(key);
|
422
419
|
return error;
|
423
420
|
}
|
@@ -425,8 +422,8 @@ out:
|
|
425
422
|
static int config_file_delete_multivar(git_config_backend *cfg, const char *name, const char *regexp)
|
426
423
|
{
|
427
424
|
config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
|
428
|
-
|
429
|
-
|
425
|
+
git_config_list *config_list = NULL;
|
426
|
+
git_config_list_entry *entry = NULL;
|
430
427
|
git_regexp preg = GIT_REGEX_INIT;
|
431
428
|
char *key = NULL;
|
432
429
|
int result;
|
@@ -434,10 +431,10 @@ static int config_file_delete_multivar(git_config_backend *cfg, const char *name
|
|
434
431
|
if ((result = git_config__normalize_name(name, &key)) < 0)
|
435
432
|
goto out;
|
436
433
|
|
437
|
-
if ((result =
|
434
|
+
if ((result = config_file_take_list(&config_list, b)) < 0)
|
438
435
|
goto out;
|
439
436
|
|
440
|
-
if ((result =
|
437
|
+
if ((result = git_config_list_get(&entry, config_list, key)) < 0) {
|
441
438
|
if (result == GIT_ENOTFOUND)
|
442
439
|
git_error_set(GIT_ERROR_CONFIG, "could not find key '%s' to delete", name);
|
443
440
|
goto out;
|
@@ -450,7 +447,7 @@ static int config_file_delete_multivar(git_config_backend *cfg, const char *name
|
|
450
447
|
goto out;
|
451
448
|
|
452
449
|
out:
|
453
|
-
|
450
|
+
git_config_list_free(config_list);
|
454
451
|
git__free(key);
|
455
452
|
git_regexp_dispose(&preg);
|
456
453
|
return result;
|
@@ -486,7 +483,7 @@ static int config_file_unlock(git_config_backend *_cfg, int success)
|
|
486
483
|
}
|
487
484
|
|
488
485
|
git_filebuf_cleanup(&cfg->locked_buf);
|
489
|
-
|
486
|
+
git_str_dispose(&cfg->locked_content);
|
490
487
|
cfg->locked = false;
|
491
488
|
|
492
489
|
return error;
|
@@ -523,19 +520,19 @@ int git_config_backend_from_file(git_config_backend **out, const char *path)
|
|
523
520
|
return 0;
|
524
521
|
}
|
525
522
|
|
526
|
-
static int included_path(
|
523
|
+
static int included_path(git_str *out, const char *dir, const char *path)
|
527
524
|
{
|
528
525
|
/* From the user's home */
|
529
526
|
if (path[0] == '~' && path[1] == '/')
|
530
|
-
return
|
527
|
+
return git_sysdir_expand_homedir_file(out, &path[1]);
|
531
528
|
|
532
|
-
return
|
529
|
+
return git_fs_path_join_unrooted(out, path, dir, NULL);
|
533
530
|
}
|
534
531
|
|
535
532
|
/* Escape the values to write them to the file */
|
536
533
|
static char *escape_value(const char *ptr)
|
537
534
|
{
|
538
|
-
|
535
|
+
git_str buf;
|
539
536
|
size_t len;
|
540
537
|
const char *esc;
|
541
538
|
|
@@ -545,39 +542,39 @@ static char *escape_value(const char *ptr)
|
|
545
542
|
if (!len)
|
546
543
|
return git__calloc(1, sizeof(char));
|
547
544
|
|
548
|
-
if (
|
545
|
+
if (git_str_init(&buf, len) < 0)
|
549
546
|
return NULL;
|
550
547
|
|
551
548
|
while (*ptr != '\0') {
|
552
549
|
if ((esc = strchr(git_config_escaped, *ptr)) != NULL) {
|
553
|
-
|
554
|
-
|
550
|
+
git_str_putc(&buf, '\\');
|
551
|
+
git_str_putc(&buf, git_config_escapes[esc - git_config_escaped]);
|
555
552
|
} else {
|
556
|
-
|
553
|
+
git_str_putc(&buf, *ptr);
|
557
554
|
}
|
558
555
|
ptr++;
|
559
556
|
}
|
560
557
|
|
561
|
-
if (
|
558
|
+
if (git_str_oom(&buf))
|
562
559
|
return NULL;
|
563
560
|
|
564
|
-
return
|
561
|
+
return git_str_detach(&buf);
|
565
562
|
}
|
566
563
|
|
567
564
|
static int parse_include(config_file_parse_data *parse_data, const char *file)
|
568
565
|
{
|
569
566
|
config_file *include;
|
570
|
-
|
567
|
+
git_str path = GIT_STR_INIT;
|
571
568
|
char *dir;
|
572
569
|
int result;
|
573
570
|
|
574
571
|
if (!file)
|
575
572
|
return 0;
|
576
573
|
|
577
|
-
if ((result =
|
574
|
+
if ((result = git_fs_path_dirname_r(&path, parse_data->file->path)) < 0)
|
578
575
|
return result;
|
579
576
|
|
580
|
-
dir =
|
577
|
+
dir = git_str_detach(&path);
|
581
578
|
result = included_path(&path, dir, file);
|
582
579
|
git__free(dir);
|
583
580
|
|
@@ -588,9 +585,9 @@ static int parse_include(config_file_parse_data *parse_data, const char *file)
|
|
588
585
|
GIT_ERROR_CHECK_ALLOC(include);
|
589
586
|
memset(include, 0, sizeof(*include));
|
590
587
|
git_array_init(include->includes);
|
591
|
-
include->path =
|
588
|
+
include->path = git_str_detach(&path);
|
592
589
|
|
593
|
-
result = config_file_read(parse_data->
|
590
|
+
result = config_file_read(parse_data->config_list, parse_data->repo, include,
|
594
591
|
parse_data->level, parse_data->depth+1);
|
595
592
|
|
596
593
|
if (result == GIT_ENOTFOUND) {
|
@@ -608,38 +605,38 @@ static int do_match_gitdir(
|
|
608
605
|
const char *condition,
|
609
606
|
bool case_insensitive)
|
610
607
|
{
|
611
|
-
|
608
|
+
git_str pattern = GIT_STR_INIT, gitdir = GIT_STR_INIT;
|
612
609
|
int error;
|
613
610
|
|
614
|
-
if (condition[0] == '.' &&
|
615
|
-
|
616
|
-
|
617
|
-
} else if (condition[0] == '~' &&
|
618
|
-
|
619
|
-
else if (!
|
620
|
-
|
611
|
+
if (condition[0] == '.' && git_fs_path_is_dirsep(condition[1])) {
|
612
|
+
git_fs_path_dirname_r(&pattern, cfg_file);
|
613
|
+
git_str_joinpath(&pattern, pattern.ptr, condition + 2);
|
614
|
+
} else if (condition[0] == '~' && git_fs_path_is_dirsep(condition[1]))
|
615
|
+
git_sysdir_expand_homedir_file(&pattern, condition + 1);
|
616
|
+
else if (!git_fs_path_is_absolute(condition))
|
617
|
+
git_str_joinpath(&pattern, "**", condition);
|
621
618
|
else
|
622
|
-
|
619
|
+
git_str_sets(&pattern, condition);
|
623
620
|
|
624
|
-
if (
|
625
|
-
|
621
|
+
if (git_fs_path_is_dirsep(condition[strlen(condition) - 1]))
|
622
|
+
git_str_puts(&pattern, "**");
|
626
623
|
|
627
|
-
if (
|
624
|
+
if (git_str_oom(&pattern)) {
|
628
625
|
error = -1;
|
629
626
|
goto out;
|
630
627
|
}
|
631
628
|
|
632
|
-
if ((error =
|
629
|
+
if ((error = git_repository__item_path(&gitdir, repo, GIT_REPOSITORY_ITEM_GITDIR)) < 0)
|
633
630
|
goto out;
|
634
631
|
|
635
|
-
if (
|
636
|
-
|
632
|
+
if (git_fs_path_is_dirsep(gitdir.ptr[gitdir.size - 1]))
|
633
|
+
git_str_truncate(&gitdir, gitdir.size - 1);
|
637
634
|
|
638
635
|
*matches = wildmatch(pattern.ptr, gitdir.ptr,
|
639
636
|
WM_PATHNAME | (case_insensitive ? WM_CASEFOLD : 0)) == WM_MATCH;
|
640
637
|
out:
|
641
|
-
|
642
|
-
|
638
|
+
git_str_dispose(&pattern);
|
639
|
+
git_str_dispose(&gitdir);
|
643
640
|
return error;
|
644
641
|
}
|
645
642
|
|
@@ -667,7 +664,7 @@ static int conditional_match_onbranch(
|
|
667
664
|
const char *cfg_file,
|
668
665
|
const char *condition)
|
669
666
|
{
|
670
|
-
|
667
|
+
git_str reference = GIT_STR_INIT, buf = GIT_STR_INIT;
|
671
668
|
int error;
|
672
669
|
|
673
670
|
GIT_UNUSED(cfg_file);
|
@@ -680,33 +677,33 @@ static int conditional_match_onbranch(
|
|
680
677
|
* an endless recursion.
|
681
678
|
*/
|
682
679
|
|
683
|
-
if ((error =
|
680
|
+
if ((error = git_str_joinpath(&buf, git_repository_path(repo), GIT_HEAD_FILE)) < 0 ||
|
684
681
|
(error = git_futils_readbuffer(&reference, buf.ptr)) < 0)
|
685
682
|
goto out;
|
686
|
-
|
683
|
+
git_str_rtrim(&reference);
|
687
684
|
|
688
685
|
if (git__strncmp(reference.ptr, GIT_SYMREF, strlen(GIT_SYMREF)))
|
689
686
|
goto out;
|
690
|
-
|
687
|
+
git_str_consume(&reference, reference.ptr + strlen(GIT_SYMREF));
|
691
688
|
|
692
689
|
if (git__strncmp(reference.ptr, GIT_REFS_HEADS_DIR, strlen(GIT_REFS_HEADS_DIR)))
|
693
690
|
goto out;
|
694
|
-
|
691
|
+
git_str_consume(&reference, reference.ptr + strlen(GIT_REFS_HEADS_DIR));
|
695
692
|
|
696
693
|
/*
|
697
694
|
* If the condition ends with a '/', then we should treat it as if
|
698
695
|
* it had '**' appended.
|
699
696
|
*/
|
700
|
-
if ((error =
|
697
|
+
if ((error = git_str_sets(&buf, condition)) < 0)
|
701
698
|
goto out;
|
702
|
-
if (
|
703
|
-
(error =
|
699
|
+
if (git_fs_path_is_dirsep(condition[strlen(condition) - 1]) &&
|
700
|
+
(error = git_str_puts(&buf, "**")) < 0)
|
704
701
|
goto out;
|
705
702
|
|
706
703
|
*matches = wildmatch(buf.ptr, reference.ptr, WM_PATHNAME) == WM_MATCH;
|
707
704
|
out:
|
708
|
-
|
709
|
-
|
705
|
+
git_str_dispose(&reference);
|
706
|
+
git_str_dispose(&buf);
|
710
707
|
|
711
708
|
return error;
|
712
709
|
|
@@ -724,14 +721,25 @@ static const struct {
|
|
724
721
|
static int parse_conditional_include(config_file_parse_data *parse_data, const char *section, const char *file)
|
725
722
|
{
|
726
723
|
char *condition;
|
727
|
-
size_t i;
|
724
|
+
size_t section_len, i;
|
728
725
|
int error = 0, matches;
|
729
726
|
|
730
727
|
if (!parse_data->repo || !file)
|
731
728
|
return 0;
|
732
729
|
|
733
|
-
|
734
|
-
|
730
|
+
section_len = strlen(section);
|
731
|
+
|
732
|
+
/*
|
733
|
+
* We checked that the string starts with `includeIf.` and ends
|
734
|
+
* in `.path` to get here. Make sure it consists of more.
|
735
|
+
*/
|
736
|
+
if (section_len < CONST_STRLEN("includeIf.") + CONST_STRLEN(".path"))
|
737
|
+
return 0;
|
738
|
+
|
739
|
+
condition = git__substrdup(section + CONST_STRLEN("includeIf."),
|
740
|
+
section_len - CONST_STRLEN("includeIf.") - CONST_STRLEN(".path"));
|
741
|
+
|
742
|
+
GIT_ERROR_CHECK_ALLOC(condition);
|
735
743
|
|
736
744
|
for (i = 0; i < ARRAY_SIZE(conditions); i++) {
|
737
745
|
if (git__prefixcmp(condition, conditions[i].prefix))
|
@@ -763,8 +771,8 @@ static int read_on_variable(
|
|
763
771
|
void *data)
|
764
772
|
{
|
765
773
|
config_file_parse_data *parse_data = (config_file_parse_data *)data;
|
766
|
-
|
767
|
-
|
774
|
+
git_str buf = GIT_STR_INIT;
|
775
|
+
git_config_list_entry *entry;
|
768
776
|
const char *c;
|
769
777
|
int result = 0;
|
770
778
|
|
@@ -777,40 +785,55 @@ static int read_on_variable(
|
|
777
785
|
* here. Git appears to warn in most cases if it sees
|
778
786
|
* un-namespaced config options.
|
779
787
|
*/
|
780
|
-
|
781
|
-
|
788
|
+
git_str_puts(&buf, current_section);
|
789
|
+
git_str_putc(&buf, '.');
|
782
790
|
}
|
783
791
|
|
784
792
|
for (c = var_name; *c; c++)
|
785
|
-
|
793
|
+
git_str_putc(&buf, git__tolower(*c));
|
786
794
|
|
787
|
-
if (
|
795
|
+
if (git_str_oom(&buf))
|
788
796
|
return -1;
|
789
797
|
|
790
|
-
entry = git__calloc(1, sizeof(
|
798
|
+
entry = git__calloc(1, sizeof(git_config_list_entry));
|
791
799
|
GIT_ERROR_CHECK_ALLOC(entry);
|
792
|
-
entry->name = git_buf_detach(&buf);
|
793
|
-
entry->value = var_value ? git__strdup(var_value) : NULL;
|
794
|
-
entry->level = parse_data->level;
|
795
|
-
entry->include_depth = parse_data->depth;
|
796
800
|
|
797
|
-
|
801
|
+
entry->base.entry.name = git_str_detach(&buf);
|
802
|
+
GIT_ERROR_CHECK_ALLOC(entry->base.entry.name);
|
803
|
+
|
804
|
+
if (var_value) {
|
805
|
+
entry->base.entry.value = git__strdup(var_value);
|
806
|
+
GIT_ERROR_CHECK_ALLOC(entry->base.entry.value);
|
807
|
+
}
|
808
|
+
|
809
|
+
entry->base.entry.backend_type = git_config_list_add_string(parse_data->config_list, CONFIG_FILE_TYPE);
|
810
|
+
GIT_ERROR_CHECK_ALLOC(entry->base.entry.backend_type);
|
811
|
+
|
812
|
+
entry->base.entry.origin_path = git_config_list_add_string(parse_data->config_list, parse_data->file->path);
|
813
|
+
GIT_ERROR_CHECK_ALLOC(entry->base.entry.origin_path);
|
814
|
+
|
815
|
+
entry->base.entry.level = parse_data->level;
|
816
|
+
entry->base.entry.include_depth = parse_data->depth;
|
817
|
+
entry->base.free = git_config_list_entry_free;
|
818
|
+
entry->config_list = parse_data->config_list;
|
819
|
+
|
820
|
+
if ((result = git_config_list_append(parse_data->config_list, entry)) < 0)
|
798
821
|
return result;
|
799
822
|
|
800
823
|
result = 0;
|
801
824
|
|
802
825
|
/* Add or append the new config option */
|
803
|
-
if (!git__strcmp(entry->name, "include.path"))
|
804
|
-
result = parse_include(parse_data, entry->value);
|
805
|
-
else if (!git__prefixcmp(entry->name, "includeif.") &&
|
806
|
-
!git__suffixcmp(entry->name, ".path"))
|
807
|
-
result = parse_conditional_include(parse_data, entry->name, entry->value);
|
826
|
+
if (!git__strcmp(entry->base.entry.name, "include.path"))
|
827
|
+
result = parse_include(parse_data, entry->base.entry.value);
|
828
|
+
else if (!git__prefixcmp(entry->base.entry.name, "includeif.") &&
|
829
|
+
!git__suffixcmp(entry->base.entry.name, ".path"))
|
830
|
+
result = parse_conditional_include(parse_data, entry->base.entry.name, entry->base.entry.value);
|
808
831
|
|
809
832
|
return result;
|
810
833
|
}
|
811
834
|
|
812
835
|
static int config_file_read_buffer(
|
813
|
-
|
836
|
+
git_config_list *config_list,
|
814
837
|
const git_repository *repo,
|
815
838
|
config_file *file,
|
816
839
|
git_config_level_t level,
|
@@ -839,7 +862,7 @@ static int config_file_read_buffer(
|
|
839
862
|
|
840
863
|
parse_data.repo = repo;
|
841
864
|
parse_data.file = file;
|
842
|
-
parse_data.
|
865
|
+
parse_data.config_list = config_list;
|
843
866
|
parse_data.level = level;
|
844
867
|
parse_data.depth = depth;
|
845
868
|
|
@@ -850,18 +873,18 @@ out:
|
|
850
873
|
}
|
851
874
|
|
852
875
|
static int config_file_read(
|
853
|
-
|
876
|
+
git_config_list *config_list,
|
854
877
|
const git_repository *repo,
|
855
878
|
config_file *file,
|
856
879
|
git_config_level_t level,
|
857
880
|
int depth)
|
858
881
|
{
|
859
|
-
|
882
|
+
git_str contents = GIT_STR_INIT;
|
860
883
|
struct stat st;
|
861
884
|
int error;
|
862
885
|
|
863
886
|
if (p_stat(file->path, &st) < 0) {
|
864
|
-
error =
|
887
|
+
error = git_fs_path_set_error(errno, file->path, "stat");
|
865
888
|
goto out;
|
866
889
|
}
|
867
890
|
|
@@ -869,44 +892,44 @@ static int config_file_read(
|
|
869
892
|
goto out;
|
870
893
|
|
871
894
|
git_futils_filestamp_set_from_stat(&file->stamp, &st);
|
872
|
-
if ((error = git_hash_buf(
|
895
|
+
if ((error = git_hash_buf(file->checksum, contents.ptr, contents.size, GIT_HASH_ALGORITHM_SHA256)) < 0)
|
873
896
|
goto out;
|
874
897
|
|
875
|
-
if ((error = config_file_read_buffer(
|
898
|
+
if ((error = config_file_read_buffer(config_list, repo, file, level, depth,
|
876
899
|
contents.ptr, contents.size)) < 0)
|
877
900
|
goto out;
|
878
901
|
|
879
902
|
out:
|
880
|
-
|
903
|
+
git_str_dispose(&contents);
|
881
904
|
return error;
|
882
905
|
}
|
883
906
|
|
884
|
-
static int write_section(
|
907
|
+
static int write_section(git_str *fbuf, const char *key)
|
885
908
|
{
|
886
909
|
int result;
|
887
910
|
const char *dot;
|
888
|
-
|
911
|
+
git_str buf = GIT_STR_INIT;
|
889
912
|
|
890
913
|
/* All of this just for [section "subsection"] */
|
891
914
|
dot = strchr(key, '.');
|
892
|
-
|
915
|
+
git_str_putc(&buf, '[');
|
893
916
|
if (dot == NULL) {
|
894
|
-
|
917
|
+
git_str_puts(&buf, key);
|
895
918
|
} else {
|
896
919
|
char *escaped;
|
897
|
-
|
920
|
+
git_str_put(&buf, key, dot - key);
|
898
921
|
escaped = escape_value(dot + 1);
|
899
922
|
GIT_ERROR_CHECK_ALLOC(escaped);
|
900
|
-
|
923
|
+
git_str_printf(&buf, " \"%s\"", escaped);
|
901
924
|
git__free(escaped);
|
902
925
|
}
|
903
|
-
|
926
|
+
git_str_puts(&buf, "]\n");
|
904
927
|
|
905
|
-
if (
|
928
|
+
if (git_str_oom(&buf))
|
906
929
|
return -1;
|
907
930
|
|
908
|
-
result =
|
909
|
-
|
931
|
+
result = git_str_put(fbuf, git_str_cstr(&buf), buf.size);
|
932
|
+
git_str_dispose(&buf);
|
910
933
|
|
911
934
|
return result;
|
912
935
|
}
|
@@ -930,8 +953,8 @@ static const char *quotes_for_value(const char *value)
|
|
930
953
|
}
|
931
954
|
|
932
955
|
struct write_data {
|
933
|
-
|
934
|
-
|
956
|
+
git_str *buf;
|
957
|
+
git_str buffered_comment;
|
935
958
|
unsigned int in_section : 1,
|
936
959
|
preg_replaced : 1;
|
937
960
|
const char *orig_section;
|
@@ -942,12 +965,12 @@ struct write_data {
|
|
942
965
|
const char *value;
|
943
966
|
};
|
944
967
|
|
945
|
-
static int write_line_to(
|
968
|
+
static int write_line_to(git_str *buf, const char *line, size_t line_len)
|
946
969
|
{
|
947
|
-
int result =
|
970
|
+
int result = git_str_put(buf, line, line_len);
|
948
971
|
|
949
972
|
if (!result && line_len && line[line_len-1] != '\n')
|
950
|
-
result =
|
973
|
+
result = git_str_printf(buf, "\n");
|
951
974
|
|
952
975
|
return result;
|
953
976
|
}
|
@@ -963,7 +986,7 @@ static int write_value(struct write_data *write_data)
|
|
963
986
|
int result;
|
964
987
|
|
965
988
|
q = quotes_for_value(write_data->value);
|
966
|
-
result =
|
989
|
+
result = git_str_printf(write_data->buf,
|
967
990
|
"\t%s = %s%s%s\n", write_data->orig_name, q, write_data->value, q);
|
968
991
|
|
969
992
|
/* If we are updating a single name/value, we're done. Setting `value`
|
@@ -1002,8 +1025,8 @@ static int write_on_section(
|
|
1002
1025
|
* If there were comments just before this section, dump them as well.
|
1003
1026
|
*/
|
1004
1027
|
if (!result) {
|
1005
|
-
result =
|
1006
|
-
|
1028
|
+
result = git_str_put(write_data->buf, write_data->buffered_comment.ptr, write_data->buffered_comment.size);
|
1029
|
+
git_str_clear(&write_data->buffered_comment);
|
1007
1030
|
}
|
1008
1031
|
|
1009
1032
|
if (!result)
|
@@ -1031,10 +1054,10 @@ static int write_on_variable(
|
|
1031
1054
|
/*
|
1032
1055
|
* If there were comments just before this variable, let's dump them as well.
|
1033
1056
|
*/
|
1034
|
-
if ((error =
|
1057
|
+
if ((error = git_str_put(write_data->buf, write_data->buffered_comment.ptr, write_data->buffered_comment.size)) < 0)
|
1035
1058
|
return error;
|
1036
1059
|
|
1037
|
-
|
1060
|
+
git_str_clear(&write_data->buffered_comment);
|
1038
1061
|
|
1039
1062
|
/* See if we are to update this name/value pair; first examine name */
|
1040
1063
|
if (write_data->in_section &&
|
@@ -1081,7 +1104,7 @@ static int write_on_eof(
|
|
1081
1104
|
/*
|
1082
1105
|
* If we've buffered comments when reaching EOF, make sure to dump them.
|
1083
1106
|
*/
|
1084
|
-
if ((result =
|
1107
|
+
if ((result = git_str_put(write_data->buf, write_data->buffered_comment.ptr, write_data->buffered_comment.size)) < 0)
|
1085
1108
|
return result;
|
1086
1109
|
|
1087
1110
|
/* If we are at the EOF and have not written our value (again, for a
|
@@ -1104,11 +1127,16 @@ static int write_on_eof(
|
|
1104
1127
|
/*
|
1105
1128
|
* This is pretty much the parsing, except we write out anything we don't have
|
1106
1129
|
*/
|
1107
|
-
static int config_file_write(
|
1130
|
+
static int config_file_write(
|
1131
|
+
config_file_backend *cfg,
|
1132
|
+
const char *orig_key,
|
1133
|
+
const char *key,
|
1134
|
+
const git_regexp *preg,
|
1135
|
+
const char *value)
|
1108
1136
|
|
1109
1137
|
{
|
1110
1138
|
char *orig_section = NULL, *section = NULL, *orig_name, *name, *ldot;
|
1111
|
-
|
1139
|
+
git_str buf = GIT_STR_INIT, contents = GIT_STR_INIT;
|
1112
1140
|
git_config_parser parser = GIT_CONFIG_PARSER_INIT;
|
1113
1141
|
git_filebuf file = GIT_FILEBUF_INIT;
|
1114
1142
|
struct write_data write_data;
|
@@ -1117,10 +1145,11 @@ static int config_file_write(config_file_backend *cfg, const char *orig_key, con
|
|
1117
1145
|
memset(&write_data, 0, sizeof(write_data));
|
1118
1146
|
|
1119
1147
|
if (cfg->locked) {
|
1120
|
-
error =
|
1148
|
+
error = git_str_puts(&contents, git_str_cstr(&cfg->locked_content) == NULL ? "" : git_str_cstr(&cfg->locked_content));
|
1121
1149
|
} else {
|
1122
|
-
if ((error = git_filebuf_open(&file, cfg->file.path,
|
1123
|
-
|
1150
|
+
if ((error = git_filebuf_open(&file, cfg->file.path,
|
1151
|
+
GIT_FILEBUF_HASH_SHA256,
|
1152
|
+
GIT_CONFIG_FILE_MODE)) < 0)
|
1124
1153
|
goto done;
|
1125
1154
|
|
1126
1155
|
/* We need to read in our own config file */
|
@@ -1157,10 +1186,10 @@ static int config_file_write(config_file_backend *cfg, const char *orig_key, con
|
|
1157
1186
|
if (cfg->locked) {
|
1158
1187
|
size_t len = buf.asize;
|
1159
1188
|
/* Update our copy with the modified contents */
|
1160
|
-
|
1161
|
-
|
1189
|
+
git_str_dispose(&cfg->locked_content);
|
1190
|
+
git_str_attach(&cfg->locked_content, git_str_detach(&buf), len);
|
1162
1191
|
} else {
|
1163
|
-
git_filebuf_write(&file,
|
1192
|
+
git_filebuf_write(&file, git_str_cstr(&buf), git_str_len(&buf));
|
1164
1193
|
|
1165
1194
|
if ((error = git_filebuf_commit(&file)) < 0)
|
1166
1195
|
goto done;
|
@@ -1172,9 +1201,9 @@ static int config_file_write(config_file_backend *cfg, const char *orig_key, con
|
|
1172
1201
|
done:
|
1173
1202
|
git__free(section);
|
1174
1203
|
git__free(orig_section);
|
1175
|
-
|
1176
|
-
|
1177
|
-
|
1204
|
+
git_str_dispose(&write_data.buffered_comment);
|
1205
|
+
git_str_dispose(&buf);
|
1206
|
+
git_str_dispose(&contents);
|
1178
1207
|
git_filebuf_cleanup(&file);
|
1179
1208
|
git_config_parser_dispose(&parser);
|
1180
1209
|
|