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
@@ -24,7 +24,8 @@
|
|
24
24
|
|
25
25
|
struct git_config {
|
26
26
|
git_refcount rc;
|
27
|
-
git_vector
|
27
|
+
git_vector readers;
|
28
|
+
git_vector writers;
|
28
29
|
};
|
29
30
|
|
30
31
|
extern int git_config__global_location(git_str *buf);
|
@@ -94,17 +95,21 @@ int git_config_lookup_map_enum(git_configmap_t *type_out,
|
|
94
95
|
size_t map_n, int enum_val);
|
95
96
|
|
96
97
|
/**
|
97
|
-
* Unlock the backend
|
98
|
+
* Unlock the given backend that was previously locked.
|
98
99
|
*
|
99
100
|
* Unlocking will allow other writers to update the configuration
|
100
101
|
* file. Optionally, any changes performed since the lock will be
|
101
102
|
* applied to the configuration.
|
102
103
|
*
|
103
|
-
* @param
|
104
|
+
* @param config the config instance
|
105
|
+
* @param data the config data passed to git_transaction_new
|
104
106
|
* @param commit boolean which indicates whether to commit any changes
|
105
107
|
* done since locking
|
106
108
|
* @return 0 or an error code
|
107
109
|
*/
|
108
|
-
GIT_EXTERN(int) git_config_unlock(
|
110
|
+
GIT_EXTERN(int) git_config_unlock(
|
111
|
+
git_config *config,
|
112
|
+
void *data,
|
113
|
+
int commit);
|
109
114
|
|
110
115
|
#endif
|
@@ -37,15 +37,6 @@ extern int git_config_backend_from_file(git_config_backend **out, const char *pa
|
|
37
37
|
*/
|
38
38
|
extern int git_config_backend_snapshot(git_config_backend **out, git_config_backend *source);
|
39
39
|
|
40
|
-
/**
|
41
|
-
* Create an in-memory configuration file backend
|
42
|
-
*
|
43
|
-
* @param out the new backend
|
44
|
-
* @param cfg the configuration that is to be parsed
|
45
|
-
* @param len the length of the string pointed to by `cfg`
|
46
|
-
*/
|
47
|
-
extern int git_config_backend_from_string(git_config_backend **out, const char *cfg, size_t len);
|
48
|
-
|
49
40
|
GIT_INLINE(int) git_config_backend_open(git_config_backend *cfg, unsigned int level, const git_repository *repo)
|
50
41
|
{
|
51
42
|
return cfg->open(cfg, level, repo);
|
@@ -60,7 +51,14 @@ GIT_INLINE(void) git_config_backend_free(git_config_backend *cfg)
|
|
60
51
|
GIT_INLINE(int) git_config_backend_get_string(
|
61
52
|
git_config_entry **out, git_config_backend *cfg, const char *name)
|
62
53
|
{
|
63
|
-
|
54
|
+
git_config_backend_entry *be;
|
55
|
+
int error;
|
56
|
+
|
57
|
+
if ((error = cfg->get(cfg, name, &be)) < 0)
|
58
|
+
return error;
|
59
|
+
|
60
|
+
*out = &be->entry;
|
61
|
+
return 0;
|
64
62
|
}
|
65
63
|
|
66
64
|
GIT_INLINE(int) git_config_backend_set_string(
|
@@ -64,11 +64,10 @@ static git_configmap _configmap_logallrefupdates[] = {
|
|
64
64
|
{GIT_CONFIGMAP_STRING, "always", GIT_LOGALLREFUPDATES_ALWAYS},
|
65
65
|
};
|
66
66
|
|
67
|
-
|
68
|
-
* Generic map for integer values
|
69
|
-
*/
|
70
|
-
static git_configmap _configmap_int[] = {
|
67
|
+
static git_configmap _configmap_abbrev[] = {
|
71
68
|
{GIT_CONFIGMAP_INT32, NULL, 0},
|
69
|
+
{GIT_CONFIGMAP_FALSE, NULL, GIT_ABBREV_FALSE},
|
70
|
+
{GIT_CONFIGMAP_STRING, "auto", GIT_ABBREV_DEFAULT}
|
72
71
|
};
|
73
72
|
|
74
73
|
static struct map_data _configmaps[] = {
|
@@ -79,7 +78,7 @@ static struct map_data _configmaps[] = {
|
|
79
78
|
{"core.filemode", NULL, 0, GIT_FILEMODE_DEFAULT },
|
80
79
|
{"core.ignorestat", NULL, 0, GIT_IGNORESTAT_DEFAULT },
|
81
80
|
{"core.trustctime", NULL, 0, GIT_TRUSTCTIME_DEFAULT },
|
82
|
-
{"core.abbrev",
|
81
|
+
{"core.abbrev", _configmap_abbrev, ARRAY_SIZE(_configmap_abbrev), GIT_ABBREV_DEFAULT },
|
83
82
|
{"core.precomposeunicode", NULL, 0, GIT_PRECOMPOSE_DEFAULT },
|
84
83
|
{"core.safecrlf", _configmap_safecrlf, ARRAY_SIZE(_configmap_safecrlf), GIT_SAFE_CRLF_DEFAULT},
|
85
84
|
{"core.logallrefupdates", _configmap_logallrefupdates, ARRAY_SIZE(_configmap_logallrefupdates), GIT_LOGALLREFUPDATES_DEFAULT},
|
@@ -13,7 +13,7 @@
|
|
13
13
|
#include "array.h"
|
14
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"
|
@@ -24,9 +24,11 @@
|
|
24
24
|
/* Max depth for [include] directives */
|
25
25
|
#define MAX_INCLUDE_DEPTH 10
|
26
26
|
|
27
|
+
#define CONFIG_FILE_TYPE "file"
|
28
|
+
|
27
29
|
typedef struct config_file {
|
28
30
|
git_futils_filestamp stamp;
|
29
|
-
unsigned char checksum[
|
31
|
+
unsigned char checksum[GIT_HASH_SHA256_SIZE];
|
30
32
|
char *path;
|
31
33
|
git_array_t(struct config_file) includes;
|
32
34
|
} config_file;
|
@@ -34,7 +36,7 @@ typedef struct config_file {
|
|
34
36
|
typedef struct {
|
35
37
|
git_config_backend parent;
|
36
38
|
git_mutex values_mutex;
|
37
|
-
|
39
|
+
git_config_list *config_list;
|
38
40
|
const git_repository *repo;
|
39
41
|
git_config_level_t level;
|
40
42
|
|
@@ -50,13 +52,13 @@ typedef struct {
|
|
50
52
|
typedef struct {
|
51
53
|
const git_repository *repo;
|
52
54
|
config_file *file;
|
53
|
-
|
55
|
+
git_config_list *config_list;
|
54
56
|
git_config_level_t level;
|
55
57
|
unsigned int depth;
|
56
58
|
} config_file_parse_data;
|
57
59
|
|
58
|
-
static int config_file_read(
|
59
|
-
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);
|
60
62
|
static int config_file_write(config_file_backend *cfg, const char *orig_key, const char *key, const git_regexp *preg, const char *value);
|
61
63
|
static char *escape_value(const char *ptr);
|
62
64
|
|
@@ -65,7 +67,7 @@ static char *escape_value(const char *ptr);
|
|
65
67
|
* refcount. This is its own function to make sure we use the mutex to
|
66
68
|
* avoid the map pointer from changing under us.
|
67
69
|
*/
|
68
|
-
static int
|
70
|
+
static int config_file_take_list(git_config_list **out, config_file_backend *b)
|
69
71
|
{
|
70
72
|
int error;
|
71
73
|
|
@@ -74,8 +76,8 @@ static int config_file_entries_take(git_config_entries **out, config_file_backen
|
|
74
76
|
return error;
|
75
77
|
}
|
76
78
|
|
77
|
-
|
78
|
-
*out = b->
|
79
|
+
git_config_list_incref(b->config_list);
|
80
|
+
*out = b->config_list;
|
79
81
|
|
80
82
|
git_mutex_unlock(&b->values_mutex);
|
81
83
|
|
@@ -106,7 +108,7 @@ static int config_file_open(git_config_backend *cfg, git_config_level_t level, c
|
|
106
108
|
b->level = level;
|
107
109
|
b->repo = repo;
|
108
110
|
|
109
|
-
if ((res =
|
111
|
+
if ((res = git_config_list_new(&b->config_list)) < 0)
|
110
112
|
return res;
|
111
113
|
|
112
114
|
if (!git_fs_path_exists(b->file.path))
|
@@ -121,9 +123,9 @@ static int config_file_open(git_config_backend *cfg, git_config_level_t level, c
|
|
121
123
|
if (p_access(b->file.path, R_OK) < 0)
|
122
124
|
return GIT_ENOTFOUND;
|
123
125
|
|
124
|
-
if (res < 0 || (res = config_file_read(b->
|
125
|
-
|
126
|
-
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;
|
127
129
|
}
|
128
130
|
|
129
131
|
return res;
|
@@ -133,7 +135,7 @@ static int config_file_is_modified(int *modified, config_file *file)
|
|
133
135
|
{
|
134
136
|
config_file *include;
|
135
137
|
git_str buf = GIT_STR_INIT;
|
136
|
-
unsigned char checksum[
|
138
|
+
unsigned char checksum[GIT_HASH_SHA256_SIZE];
|
137
139
|
uint32_t i;
|
138
140
|
int error = 0;
|
139
141
|
|
@@ -145,10 +147,10 @@ static int config_file_is_modified(int *modified, config_file *file)
|
|
145
147
|
if ((error = git_futils_readbuffer(&buf, file->path)) < 0)
|
146
148
|
goto out;
|
147
149
|
|
148
|
-
if ((error = git_hash_buf(checksum, buf.ptr, buf.size,
|
150
|
+
if ((error = git_hash_buf(checksum, buf.ptr, buf.size, GIT_HASH_ALGORITHM_SHA256)) < 0)
|
149
151
|
goto out;
|
150
152
|
|
151
|
-
if (memcmp(checksum, file->checksum,
|
153
|
+
if (memcmp(checksum, file->checksum, GIT_HASH_SHA256_SIZE) != 0) {
|
152
154
|
*modified = 1;
|
153
155
|
goto out;
|
154
156
|
}
|
@@ -175,10 +177,10 @@ static void config_file_clear_includes(config_file_backend *cfg)
|
|
175
177
|
git_array_clear(cfg->file.includes);
|
176
178
|
}
|
177
179
|
|
178
|
-
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)
|
179
181
|
{
|
180
182
|
config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
|
181
|
-
|
183
|
+
git_config_list *old = NULL;
|
182
184
|
int error;
|
183
185
|
|
184
186
|
if (b->parent.readonly) {
|
@@ -191,40 +193,40 @@ static int config_file_set_entries(git_config_backend *cfg, git_config_entries *
|
|
191
193
|
goto out;
|
192
194
|
}
|
193
195
|
|
194
|
-
old = b->
|
195
|
-
b->
|
196
|
+
old = b->config_list;
|
197
|
+
b->config_list = config_list;
|
196
198
|
|
197
199
|
git_mutex_unlock(&b->values_mutex);
|
198
200
|
|
199
201
|
out:
|
200
|
-
|
202
|
+
git_config_list_free(old);
|
201
203
|
return error;
|
202
204
|
}
|
203
205
|
|
204
206
|
static int config_file_refresh_from_buffer(git_config_backend *cfg, const char *buf, size_t buflen)
|
205
207
|
{
|
206
208
|
config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
|
207
|
-
|
209
|
+
git_config_list *config_list = NULL;
|
208
210
|
int error;
|
209
211
|
|
210
212
|
config_file_clear_includes(b);
|
211
213
|
|
212
|
-
if ((error =
|
213
|
-
(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,
|
214
216
|
b->level, 0, buf, buflen)) < 0 ||
|
215
|
-
(error = config_file_set_entries(cfg,
|
217
|
+
(error = config_file_set_entries(cfg, config_list)) < 0)
|
216
218
|
goto out;
|
217
219
|
|
218
|
-
|
220
|
+
config_list = NULL;
|
219
221
|
out:
|
220
|
-
|
222
|
+
git_config_list_free(config_list);
|
221
223
|
return error;
|
222
224
|
}
|
223
225
|
|
224
226
|
static int config_file_refresh(git_config_backend *cfg)
|
225
227
|
{
|
226
228
|
config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
|
227
|
-
|
229
|
+
git_config_list *config_list = NULL;
|
228
230
|
int error, modified;
|
229
231
|
|
230
232
|
if (cfg->readonly)
|
@@ -238,14 +240,14 @@ static int config_file_refresh(git_config_backend *cfg)
|
|
238
240
|
|
239
241
|
config_file_clear_includes(b);
|
240
242
|
|
241
|
-
if ((error =
|
242
|
-
(error = config_file_read(
|
243
|
-
(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)
|
244
246
|
goto out;
|
245
247
|
|
246
|
-
|
248
|
+
config_list = NULL;
|
247
249
|
out:
|
248
|
-
|
250
|
+
git_config_list_free(config_list);
|
249
251
|
|
250
252
|
return (error == GIT_ENOTFOUND) ? 0 : error;
|
251
253
|
}
|
@@ -258,7 +260,7 @@ static void config_file_free(git_config_backend *_backend)
|
|
258
260
|
return;
|
259
261
|
|
260
262
|
config_file_clear(&backend->file);
|
261
|
-
|
263
|
+
git_config_list_free(backend->config_list);
|
262
264
|
git_mutex_free(&backend->values_mutex);
|
263
265
|
git__free(backend);
|
264
266
|
}
|
@@ -268,19 +270,19 @@ static int config_file_iterator(
|
|
268
270
|
struct git_config_backend *backend)
|
269
271
|
{
|
270
272
|
config_file_backend *b = GIT_CONTAINER_OF(backend, config_file_backend, parent);
|
271
|
-
|
273
|
+
git_config_list *dupped = NULL, *config_list = NULL;
|
272
274
|
int error;
|
273
275
|
|
274
276
|
if ((error = config_file_refresh(backend)) < 0 ||
|
275
|
-
(error =
|
276
|
-
(error =
|
277
|
-
(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)
|
278
280
|
goto out;
|
279
281
|
|
280
282
|
out:
|
281
|
-
/* Let iterator delete duplicated
|
282
|
-
|
283
|
-
|
283
|
+
/* Let iterator delete duplicated config_list when it's done */
|
284
|
+
git_config_list_free(config_list);
|
285
|
+
git_config_list_free(dupped);
|
284
286
|
return error;
|
285
287
|
}
|
286
288
|
|
@@ -292,24 +294,24 @@ static int config_file_snapshot(git_config_backend **out, git_config_backend *ba
|
|
292
294
|
static int config_file_set(git_config_backend *cfg, const char *name, const char *value)
|
293
295
|
{
|
294
296
|
config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
|
295
|
-
|
296
|
-
|
297
|
+
git_config_list *config_list;
|
298
|
+
git_config_list_entry *existing;
|
297
299
|
char *key, *esc_value = NULL;
|
298
300
|
int error;
|
299
301
|
|
300
302
|
if ((error = git_config__normalize_name(name, &key)) < 0)
|
301
303
|
return error;
|
302
304
|
|
303
|
-
if ((error =
|
305
|
+
if ((error = config_file_take_list(&config_list, b)) < 0)
|
304
306
|
return error;
|
305
307
|
|
306
308
|
/* Check whether we'd be modifying an included or multivar key */
|
307
|
-
if ((error =
|
309
|
+
if ((error = git_config_list_get_unique(&existing, config_list, key)) < 0) {
|
308
310
|
if (error != GIT_ENOTFOUND)
|
309
311
|
goto out;
|
310
312
|
error = 0;
|
311
|
-
} else if ((!existing->value && !value) ||
|
312
|
-
(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))) {
|
313
315
|
/* don't update if old and new values already match */
|
314
316
|
error = 0;
|
315
317
|
goto out;
|
@@ -325,43 +327,37 @@ static int config_file_set(git_config_backend *cfg, const char *name, const char
|
|
325
327
|
goto out;
|
326
328
|
|
327
329
|
out:
|
328
|
-
|
330
|
+
git_config_list_free(config_list);
|
329
331
|
git__free(esc_value);
|
330
332
|
git__free(key);
|
331
333
|
return error;
|
332
334
|
}
|
333
335
|
|
334
|
-
/* release the map containing the entry as an equivalent to freeing it */
|
335
|
-
static void config_file_entry_free(git_config_entry *entry)
|
336
|
-
{
|
337
|
-
git_config_entries *entries = (git_config_entries *) entry->payload;
|
338
|
-
git_config_entries_free(entries);
|
339
|
-
}
|
340
|
-
|
341
336
|
/*
|
342
337
|
* Internal function that actually gets the value in string form
|
343
338
|
*/
|
344
|
-
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)
|
345
343
|
{
|
346
344
|
config_file_backend *h = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
|
347
|
-
|
348
|
-
|
345
|
+
git_config_list *config_list = NULL;
|
346
|
+
git_config_list_entry *entry;
|
349
347
|
int error = 0;
|
350
348
|
|
351
349
|
if (!h->parent.readonly && ((error = config_file_refresh(cfg)) < 0))
|
352
350
|
return error;
|
353
351
|
|
354
|
-
if ((error =
|
352
|
+
if ((error = config_file_take_list(&config_list, h)) < 0)
|
355
353
|
return error;
|
356
354
|
|
357
|
-
if ((error = (
|
358
|
-
|
355
|
+
if ((error = (git_config_list_get(&entry, config_list, key))) < 0) {
|
356
|
+
git_config_list_free(config_list);
|
359
357
|
return error;
|
360
358
|
}
|
361
359
|
|
362
|
-
|
363
|
-
entry->payload = entries;
|
364
|
-
*out = entry;
|
360
|
+
*out = &entry->base;
|
365
361
|
|
366
362
|
return 0;
|
367
363
|
}
|
@@ -396,29 +392,29 @@ out:
|
|
396
392
|
static int config_file_delete(git_config_backend *cfg, const char *name)
|
397
393
|
{
|
398
394
|
config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
|
399
|
-
|
400
|
-
|
395
|
+
git_config_list *config_list = NULL;
|
396
|
+
git_config_list_entry *entry;
|
401
397
|
char *key = NULL;
|
402
398
|
int error;
|
403
399
|
|
404
400
|
if ((error = git_config__normalize_name(name, &key)) < 0)
|
405
401
|
goto out;
|
406
402
|
|
407
|
-
if ((error =
|
403
|
+
if ((error = config_file_take_list(&config_list, b)) < 0)
|
408
404
|
goto out;
|
409
405
|
|
410
406
|
/* Check whether we'd be modifying an included or multivar key */
|
411
|
-
if ((error =
|
407
|
+
if ((error = git_config_list_get_unique(&entry, config_list, key)) < 0) {
|
412
408
|
if (error == GIT_ENOTFOUND)
|
413
409
|
git_error_set(GIT_ERROR_CONFIG, "could not find key '%s' to delete", name);
|
414
410
|
goto out;
|
415
411
|
}
|
416
412
|
|
417
|
-
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)
|
418
414
|
goto out;
|
419
415
|
|
420
416
|
out:
|
421
|
-
|
417
|
+
git_config_list_free(config_list);
|
422
418
|
git__free(key);
|
423
419
|
return error;
|
424
420
|
}
|
@@ -426,8 +422,8 @@ out:
|
|
426
422
|
static int config_file_delete_multivar(git_config_backend *cfg, const char *name, const char *regexp)
|
427
423
|
{
|
428
424
|
config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
|
429
|
-
|
430
|
-
|
425
|
+
git_config_list *config_list = NULL;
|
426
|
+
git_config_list_entry *entry = NULL;
|
431
427
|
git_regexp preg = GIT_REGEX_INIT;
|
432
428
|
char *key = NULL;
|
433
429
|
int result;
|
@@ -435,10 +431,10 @@ static int config_file_delete_multivar(git_config_backend *cfg, const char *name
|
|
435
431
|
if ((result = git_config__normalize_name(name, &key)) < 0)
|
436
432
|
goto out;
|
437
433
|
|
438
|
-
if ((result =
|
434
|
+
if ((result = config_file_take_list(&config_list, b)) < 0)
|
439
435
|
goto out;
|
440
436
|
|
441
|
-
if ((result =
|
437
|
+
if ((result = git_config_list_get(&entry, config_list, key)) < 0) {
|
442
438
|
if (result == GIT_ENOTFOUND)
|
443
439
|
git_error_set(GIT_ERROR_CONFIG, "could not find key '%s' to delete", name);
|
444
440
|
goto out;
|
@@ -451,7 +447,7 @@ static int config_file_delete_multivar(git_config_backend *cfg, const char *name
|
|
451
447
|
goto out;
|
452
448
|
|
453
449
|
out:
|
454
|
-
|
450
|
+
git_config_list_free(config_list);
|
455
451
|
git__free(key);
|
456
452
|
git_regexp_dispose(&preg);
|
457
453
|
return result;
|
@@ -591,7 +587,7 @@ static int parse_include(config_file_parse_data *parse_data, const char *file)
|
|
591
587
|
git_array_init(include->includes);
|
592
588
|
include->path = git_str_detach(&path);
|
593
589
|
|
594
|
-
result = config_file_read(parse_data->
|
590
|
+
result = config_file_read(parse_data->config_list, parse_data->repo, include,
|
595
591
|
parse_data->level, parse_data->depth+1);
|
596
592
|
|
597
593
|
if (result == GIT_ENOTFOUND) {
|
@@ -776,7 +772,7 @@ static int read_on_variable(
|
|
776
772
|
{
|
777
773
|
config_file_parse_data *parse_data = (config_file_parse_data *)data;
|
778
774
|
git_str buf = GIT_STR_INIT;
|
779
|
-
|
775
|
+
git_config_list_entry *entry;
|
780
776
|
const char *c;
|
781
777
|
int result = 0;
|
782
778
|
|
@@ -799,30 +795,45 @@ static int read_on_variable(
|
|
799
795
|
if (git_str_oom(&buf))
|
800
796
|
return -1;
|
801
797
|
|
802
|
-
entry = git__calloc(1, sizeof(
|
798
|
+
entry = git__calloc(1, sizeof(git_config_list_entry));
|
803
799
|
GIT_ERROR_CHECK_ALLOC(entry);
|
804
|
-
entry->name = git_str_detach(&buf);
|
805
|
-
entry->value = var_value ? git__strdup(var_value) : NULL;
|
806
|
-
entry->level = parse_data->level;
|
807
|
-
entry->include_depth = parse_data->depth;
|
808
800
|
|
809
|
-
|
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)
|
810
821
|
return result;
|
811
822
|
|
812
823
|
result = 0;
|
813
824
|
|
814
825
|
/* Add or append the new config option */
|
815
|
-
if (!git__strcmp(entry->name, "include.path"))
|
816
|
-
result = parse_include(parse_data, entry->value);
|
817
|
-
else if (!git__prefixcmp(entry->name, "includeif.") &&
|
818
|
-
!git__suffixcmp(entry->name, ".path"))
|
819
|
-
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);
|
820
831
|
|
821
832
|
return result;
|
822
833
|
}
|
823
834
|
|
824
835
|
static int config_file_read_buffer(
|
825
|
-
|
836
|
+
git_config_list *config_list,
|
826
837
|
const git_repository *repo,
|
827
838
|
config_file *file,
|
828
839
|
git_config_level_t level,
|
@@ -851,7 +862,7 @@ static int config_file_read_buffer(
|
|
851
862
|
|
852
863
|
parse_data.repo = repo;
|
853
864
|
parse_data.file = file;
|
854
|
-
parse_data.
|
865
|
+
parse_data.config_list = config_list;
|
855
866
|
parse_data.level = level;
|
856
867
|
parse_data.depth = depth;
|
857
868
|
|
@@ -862,7 +873,7 @@ out:
|
|
862
873
|
}
|
863
874
|
|
864
875
|
static int config_file_read(
|
865
|
-
|
876
|
+
git_config_list *config_list,
|
866
877
|
const git_repository *repo,
|
867
878
|
config_file *file,
|
868
879
|
git_config_level_t level,
|
@@ -881,10 +892,10 @@ static int config_file_read(
|
|
881
892
|
goto out;
|
882
893
|
|
883
894
|
git_futils_filestamp_set_from_stat(&file->stamp, &st);
|
884
|
-
if ((error = git_hash_buf(file->checksum, contents.ptr, contents.size,
|
895
|
+
if ((error = git_hash_buf(file->checksum, contents.ptr, contents.size, GIT_HASH_ALGORITHM_SHA256)) < 0)
|
885
896
|
goto out;
|
886
897
|
|
887
|
-
if ((error = config_file_read_buffer(
|
898
|
+
if ((error = config_file_read_buffer(config_list, repo, file, level, depth,
|
888
899
|
contents.ptr, contents.size)) < 0)
|
889
900
|
goto out;
|
890
901
|
|
@@ -1116,7 +1127,12 @@ static int write_on_eof(
|
|
1116
1127
|
/*
|
1117
1128
|
* This is pretty much the parsing, except we write out anything we don't have
|
1118
1129
|
*/
|
1119
|
-
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)
|
1120
1136
|
|
1121
1137
|
{
|
1122
1138
|
char *orig_section = NULL, *section = NULL, *orig_name, *name, *ldot;
|
@@ -1131,8 +1147,9 @@ static int config_file_write(config_file_backend *cfg, const char *orig_key, con
|
|
1131
1147
|
if (cfg->locked) {
|
1132
1148
|
error = git_str_puts(&contents, git_str_cstr(&cfg->locked_content) == NULL ? "" : git_str_cstr(&cfg->locked_content));
|
1133
1149
|
} else {
|
1134
|
-
if ((error = git_filebuf_open(&file, cfg->file.path,
|
1135
|
-
|
1150
|
+
if ((error = git_filebuf_open(&file, cfg->file.path,
|
1151
|
+
GIT_FILEBUF_HASH_SHA256,
|
1152
|
+
GIT_CONFIG_FILE_MODE)) < 0)
|
1136
1153
|
goto done;
|
1137
1154
|
|
1138
1155
|
/* We need to read in our own config file */
|