rugged 0.27.7 → 0.27.10
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/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/AUTHORS +1 -0
- data/vendor/libgit2/CMakeLists.txt +99 -51
- data/vendor/libgit2/COPYING +28 -0
- data/vendor/libgit2/cmake/Modules/AddCFlagIfSupported.cmake +15 -1
- data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +29 -0
- data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +96 -0
- data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +9 -8
- data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
- data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
- data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +28 -0
- data/vendor/libgit2/cmake/Modules/FindIconv.cmake +11 -6
- data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +38 -0
- data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +37 -0
- data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
- data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +6 -0
- data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +110 -0
- data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +53 -0
- data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +124 -0
- data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +66 -0
- data/vendor/libgit2/deps/http-parser/http_parser.c +11 -6
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +21 -0
- data/vendor/libgit2/deps/ntlmclient/compat.h +33 -0
- data/vendor/libgit2/deps/ntlmclient/crypt.h +64 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +120 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +18 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +145 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +18 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +130 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +21 -0
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +1420 -0
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +174 -0
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +320 -0
- data/vendor/libgit2/deps/ntlmclient/unicode.h +36 -0
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +445 -0
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +201 -0
- data/vendor/libgit2/deps/ntlmclient/utf8.h +1257 -0
- data/vendor/libgit2/deps/ntlmclient/util.c +21 -0
- data/vendor/libgit2/deps/ntlmclient/util.h +14 -0
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +140 -0
- data/vendor/libgit2/deps/pcre/COPYING +5 -0
- data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +22 -0
- data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +17 -0
- data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +58 -0
- data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +29 -0
- data/vendor/libgit2/deps/pcre/config.h.in +57 -0
- data/vendor/libgit2/deps/pcre/pcre.h +641 -0
- data/vendor/libgit2/deps/pcre/pcre_byte_order.c +319 -0
- data/vendor/libgit2/deps/pcre/pcre_chartables.c +198 -0
- data/vendor/libgit2/deps/pcre/pcre_compile.c +9800 -0
- data/vendor/libgit2/deps/pcre/pcre_config.c +190 -0
- data/vendor/libgit2/deps/pcre/pcre_dfa_exec.c +3676 -0
- data/vendor/libgit2/deps/pcre/pcre_exec.c +7173 -0
- data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +245 -0
- data/vendor/libgit2/deps/pcre/pcre_get.c +669 -0
- data/vendor/libgit2/deps/pcre/pcre_globals.c +86 -0
- data/vendor/libgit2/deps/pcre/pcre_internal.h +2787 -0
- data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +11913 -0
- data/vendor/libgit2/deps/pcre/pcre_maketables.c +156 -0
- data/vendor/libgit2/deps/pcre/pcre_newline.c +210 -0
- data/vendor/libgit2/deps/pcre/pcre_ord2utf8.c +94 -0
- data/vendor/libgit2/deps/pcre/pcre_printint.c +834 -0
- data/vendor/libgit2/deps/pcre/pcre_refcount.c +92 -0
- data/vendor/libgit2/deps/pcre/pcre_string_utils.c +211 -0
- data/vendor/libgit2/deps/pcre/pcre_study.c +1686 -0
- data/vendor/libgit2/deps/pcre/pcre_tables.c +727 -0
- data/vendor/libgit2/deps/pcre/pcre_ucd.c +3644 -0
- data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +301 -0
- data/vendor/libgit2/deps/pcre/pcre_version.c +98 -0
- data/vendor/libgit2/deps/pcre/pcre_xclass.c +268 -0
- data/vendor/libgit2/deps/pcre/pcreposix.c +421 -0
- data/vendor/libgit2/deps/pcre/pcreposix.h +117 -0
- data/vendor/libgit2/deps/pcre/ucp.h +224 -0
- data/vendor/libgit2/deps/winhttp/COPYING.GPL +993 -0
- data/vendor/libgit2/deps/winhttp/COPYING.LGPL +502 -0
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +1 -0
- data/vendor/libgit2/deps/zlib/COPYING +27 -0
- data/vendor/libgit2/deps/zlib/adler32.c +0 -7
- data/vendor/libgit2/deps/zlib/crc32.c +0 -7
- data/vendor/libgit2/include/git2/annotated_commit.h +9 -0
- data/vendor/libgit2/include/git2/apply.h +149 -0
- data/vendor/libgit2/include/git2/attr.h +20 -13
- data/vendor/libgit2/include/git2/blame.h +4 -4
- data/vendor/libgit2/include/git2/blob.h +44 -12
- data/vendor/libgit2/include/git2/buffer.h +20 -26
- data/vendor/libgit2/include/git2/cert.h +135 -0
- data/vendor/libgit2/include/git2/checkout.h +53 -21
- data/vendor/libgit2/include/git2/cherrypick.h +3 -3
- data/vendor/libgit2/include/git2/clone.h +5 -5
- data/vendor/libgit2/include/git2/commit.h +25 -3
- data/vendor/libgit2/include/git2/common.h +35 -10
- data/vendor/libgit2/include/git2/config.h +29 -19
- data/vendor/libgit2/include/git2/cred.h +308 -0
- data/vendor/libgit2/include/git2/deprecated.h +493 -0
- data/vendor/libgit2/include/git2/describe.h +4 -4
- data/vendor/libgit2/include/git2/diff.h +177 -135
- data/vendor/libgit2/include/git2/errors.h +53 -46
- data/vendor/libgit2/include/git2/filter.h +8 -0
- data/vendor/libgit2/include/git2/index.h +74 -52
- data/vendor/libgit2/include/git2/indexer.h +76 -6
- data/vendor/libgit2/include/git2/merge.h +25 -10
- data/vendor/libgit2/include/git2/net.h +0 -5
- data/vendor/libgit2/include/git2/notes.h +1 -1
- data/vendor/libgit2/include/git2/object.h +17 -29
- data/vendor/libgit2/include/git2/odb.h +12 -11
- data/vendor/libgit2/include/git2/odb_backend.h +10 -9
- data/vendor/libgit2/include/git2/oid.h +2 -2
- data/vendor/libgit2/include/git2/pack.h +14 -3
- data/vendor/libgit2/include/git2/proxy.h +5 -3
- data/vendor/libgit2/include/git2/rebase.h +46 -2
- data/vendor/libgit2/include/git2/refs.h +34 -16
- data/vendor/libgit2/include/git2/remote.h +111 -14
- data/vendor/libgit2/include/git2/repository.h +69 -34
- data/vendor/libgit2/include/git2/revert.h +1 -1
- data/vendor/libgit2/include/git2/revwalk.h +7 -7
- data/vendor/libgit2/include/git2/signature.h +2 -2
- data/vendor/libgit2/include/git2/stash.h +5 -5
- data/vendor/libgit2/include/git2/status.h +26 -17
- data/vendor/libgit2/include/git2/submodule.h +23 -6
- data/vendor/libgit2/include/git2/sys/alloc.h +18 -18
- data/vendor/libgit2/include/git2/sys/commit.h +1 -1
- data/vendor/libgit2/include/git2/sys/config.h +13 -13
- data/vendor/libgit2/include/git2/sys/cred.h +90 -0
- data/vendor/libgit2/include/git2/sys/filter.h +6 -6
- data/vendor/libgit2/include/git2/sys/merge.h +3 -3
- data/vendor/libgit2/include/git2/sys/odb_backend.h +66 -22
- data/vendor/libgit2/include/git2/sys/path.h +14 -5
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +76 -40
- data/vendor/libgit2/include/git2/sys/repository.h +5 -1
- data/vendor/libgit2/include/git2/sys/stream.h +92 -12
- data/vendor/libgit2/include/git2/sys/transport.h +129 -83
- data/vendor/libgit2/include/git2/tag.h +13 -4
- data/vendor/libgit2/include/git2/trace.h +2 -2
- data/vendor/libgit2/include/git2/transport.h +11 -311
- data/vendor/libgit2/include/git2/tree.h +4 -4
- data/vendor/libgit2/include/git2/types.h +25 -106
- data/vendor/libgit2/include/git2/version.h +3 -3
- data/vendor/libgit2/include/git2/worktree.h +5 -5
- data/vendor/libgit2/include/git2.h +4 -0
- data/vendor/libgit2/src/CMakeLists.txt +104 -235
- data/vendor/libgit2/src/alloc.c +14 -18
- data/vendor/libgit2/src/{stdalloc.c → allocators/stdalloc.c} +7 -8
- data/vendor/libgit2/src/{stdalloc.h → allocators/stdalloc.h} +4 -4
- data/vendor/libgit2/src/allocators/win32_crtdbg.c +118 -0
- data/vendor/libgit2/src/{transports/cred.h → allocators/win32_crtdbg.h} +5 -4
- data/vendor/libgit2/src/annotated_commit.c +18 -11
- data/vendor/libgit2/src/apply.c +535 -28
- data/vendor/libgit2/src/apply.h +3 -1
- data/vendor/libgit2/src/array.h +2 -2
- data/vendor/libgit2/src/attr.c +77 -71
- data/vendor/libgit2/src/attr_file.c +203 -117
- data/vendor/libgit2/src/attr_file.h +9 -9
- data/vendor/libgit2/src/attrcache.c +49 -51
- data/vendor/libgit2/src/attrcache.h +2 -1
- data/vendor/libgit2/src/blame.c +38 -18
- data/vendor/libgit2/src/blame.h +1 -1
- data/vendor/libgit2/src/blame_git.c +29 -15
- data/vendor/libgit2/src/blob.c +123 -37
- data/vendor/libgit2/src/blob.h +19 -2
- data/vendor/libgit2/src/branch.c +47 -23
- data/vendor/libgit2/src/buf_text.c +7 -6
- data/vendor/libgit2/src/buffer.c +60 -53
- data/vendor/libgit2/src/cache.c +38 -45
- data/vendor/libgit2/src/cache.h +3 -3
- data/vendor/libgit2/src/cc-compat.h +20 -3
- data/vendor/libgit2/src/checkout.c +77 -67
- data/vendor/libgit2/src/cherrypick.c +12 -6
- data/vendor/libgit2/src/clone.c +36 -14
- data/vendor/libgit2/src/clone.h +4 -0
- data/vendor/libgit2/src/commit.c +103 -48
- data/vendor/libgit2/src/commit.h +7 -0
- data/vendor/libgit2/src/commit_list.c +36 -78
- data/vendor/libgit2/src/commit_list.h +2 -2
- data/vendor/libgit2/src/common.h +24 -90
- data/vendor/libgit2/src/config.c +203 -176
- data/vendor/libgit2/src/config.h +8 -20
- data/vendor/libgit2/src/config_backend.h +96 -0
- data/vendor/libgit2/src/config_cache.c +41 -35
- data/vendor/libgit2/src/config_entries.c +229 -0
- data/vendor/libgit2/src/config_entries.h +24 -0
- data/vendor/libgit2/src/config_file.c +422 -680
- data/vendor/libgit2/src/config_mem.c +220 -0
- data/vendor/libgit2/src/config_parse.c +96 -68
- data/vendor/libgit2/src/config_parse.h +15 -14
- data/vendor/libgit2/src/config_snapshot.c +206 -0
- data/vendor/libgit2/src/crlf.c +219 -196
- data/vendor/libgit2/src/delta.c +25 -18
- data/vendor/libgit2/src/describe.c +42 -41
- data/vendor/libgit2/src/diff.c +52 -67
- data/vendor/libgit2/src/diff.h +2 -1
- data/vendor/libgit2/src/diff_driver.c +44 -46
- data/vendor/libgit2/src/diff_file.c +16 -14
- data/vendor/libgit2/src/diff_file.h +1 -1
- data/vendor/libgit2/src/diff_generate.c +158 -103
- data/vendor/libgit2/src/diff_generate.h +3 -3
- data/vendor/libgit2/src/diff_parse.c +4 -4
- data/vendor/libgit2/src/diff_print.c +34 -22
- data/vendor/libgit2/src/diff_stats.c +22 -7
- data/vendor/libgit2/src/diff_tform.c +18 -16
- data/vendor/libgit2/src/diff_xdiff.c +3 -3
- data/vendor/libgit2/src/errors.c +51 -39
- data/vendor/libgit2/src/errors.h +81 -0
- data/vendor/libgit2/src/features.h.in +9 -3
- data/vendor/libgit2/src/fetch.c +8 -3
- data/vendor/libgit2/src/fetchhead.c +12 -12
- data/vendor/libgit2/src/filebuf.c +28 -32
- data/vendor/libgit2/src/filebuf.h +2 -2
- data/vendor/libgit2/src/filter.c +47 -33
- data/vendor/libgit2/src/filter.h +0 -10
- data/vendor/libgit2/src/{fileops.c → futils.c} +70 -63
- data/vendor/libgit2/src/{fileops.h → futils.h} +6 -6
- data/vendor/libgit2/src/global.c +35 -55
- data/vendor/libgit2/src/global.h +0 -2
- data/vendor/libgit2/src/hash/sha1/collisiondetect.c +48 -0
- data/vendor/libgit2/src/hash/sha1/collisiondetect.h +19 -0
- data/vendor/libgit2/src/hash/{hash_common_crypto.h → sha1/common_crypto.c} +17 -17
- data/vendor/libgit2/src/hash/sha1/common_crypto.h +19 -0
- data/vendor/libgit2/src/hash/{hash_generic.c → sha1/generic.c} +22 -10
- data/vendor/libgit2/src/hash/{hash_generic.h → sha1/generic.h} +4 -10
- data/vendor/libgit2/src/hash/{hash_mbedtls.c → sha1/mbedtls.c} +15 -7
- data/vendor/libgit2/src/hash/{hash_mbedtls.h → sha1/mbedtls.h} +6 -7
- data/vendor/libgit2/src/hash/sha1/openssl.c +59 -0
- data/vendor/libgit2/src/hash/sha1/openssl.h +19 -0
- data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.c +14 -3
- data/vendor/libgit2/src/hash/{hash_win32.c → sha1/win32.c} +47 -37
- data/vendor/libgit2/src/hash/{hash_win32.h → sha1/win32.h} +6 -19
- data/vendor/libgit2/src/hash/sha1.h +38 -0
- data/vendor/libgit2/src/hash.c +61 -0
- data/vendor/libgit2/src/hash.h +20 -21
- data/vendor/libgit2/src/hashsig.c +5 -5
- data/vendor/libgit2/src/idxmap.c +107 -61
- data/vendor/libgit2/src/idxmap.h +153 -31
- data/vendor/libgit2/src/ignore.c +38 -42
- data/vendor/libgit2/src/index.c +264 -199
- data/vendor/libgit2/src/index.h +7 -1
- data/vendor/libgit2/src/indexer.c +338 -167
- data/vendor/libgit2/src/integer.h +71 -26
- data/vendor/libgit2/src/iterator.c +134 -62
- data/vendor/libgit2/src/iterator.h +15 -0
- data/vendor/libgit2/src/mailmap.c +8 -8
- data/vendor/libgit2/src/map.h +1 -1
- data/vendor/libgit2/src/merge.c +137 -93
- data/vendor/libgit2/src/merge_driver.c +11 -11
- data/vendor/libgit2/src/merge_file.c +2 -2
- data/vendor/libgit2/src/mwindow.c +24 -29
- data/vendor/libgit2/src/mwindow.h +4 -4
- data/vendor/libgit2/src/net.c +184 -0
- data/vendor/libgit2/src/net.h +36 -0
- data/vendor/libgit2/src/netops.c +55 -156
- data/vendor/libgit2/src/netops.h +3 -23
- data/vendor/libgit2/src/notes.c +14 -9
- data/vendor/libgit2/src/object.c +120 -69
- data/vendor/libgit2/src/object.h +22 -9
- data/vendor/libgit2/src/object_api.c +8 -8
- data/vendor/libgit2/src/odb.c +111 -88
- data/vendor/libgit2/src/odb.h +8 -7
- data/vendor/libgit2/src/odb_loose.c +58 -47
- data/vendor/libgit2/src/odb_mempack.c +21 -34
- data/vendor/libgit2/src/odb_pack.c +17 -13
- data/vendor/libgit2/src/offmap.c +53 -35
- data/vendor/libgit2/src/offmap.h +108 -21
- data/vendor/libgit2/src/oid.c +12 -7
- data/vendor/libgit2/src/oidmap.c +49 -47
- data/vendor/libgit2/src/oidmap.h +101 -24
- data/vendor/libgit2/src/pack-objects.c +87 -86
- data/vendor/libgit2/src/pack-objects.h +2 -8
- data/vendor/libgit2/src/pack.c +94 -96
- data/vendor/libgit2/src/pack.h +16 -18
- data/vendor/libgit2/src/parse.c +17 -4
- data/vendor/libgit2/src/parse.h +3 -3
- data/vendor/libgit2/src/patch.c +3 -3
- data/vendor/libgit2/src/patch_generate.c +18 -18
- data/vendor/libgit2/src/patch_parse.c +147 -79
- data/vendor/libgit2/src/path.c +207 -62
- data/vendor/libgit2/src/path.h +14 -0
- data/vendor/libgit2/src/pathspec.c +18 -18
- data/vendor/libgit2/src/pool.c +26 -22
- data/vendor/libgit2/src/pool.h +7 -7
- data/vendor/libgit2/src/posix.c +10 -10
- data/vendor/libgit2/src/posix.h +12 -1
- data/vendor/libgit2/src/proxy.c +8 -3
- data/vendor/libgit2/src/push.c +35 -29
- data/vendor/libgit2/src/push.h +2 -1
- data/vendor/libgit2/src/reader.c +265 -0
- data/vendor/libgit2/src/reader.h +107 -0
- data/vendor/libgit2/src/rebase.c +97 -38
- data/vendor/libgit2/src/refdb.c +15 -3
- data/vendor/libgit2/src/refdb_fs.c +318 -222
- data/vendor/libgit2/src/reflog.c +13 -15
- data/vendor/libgit2/src/refs.c +122 -89
- data/vendor/libgit2/src/refs.h +5 -3
- data/vendor/libgit2/src/refspec.c +27 -33
- data/vendor/libgit2/src/regexp.c +221 -0
- data/vendor/libgit2/src/regexp.h +97 -0
- data/vendor/libgit2/src/remote.c +229 -178
- data/vendor/libgit2/src/remote.h +11 -2
- data/vendor/libgit2/src/repository.c +227 -172
- data/vendor/libgit2/src/repository.h +52 -40
- data/vendor/libgit2/src/reset.c +7 -7
- data/vendor/libgit2/src/revert.c +11 -6
- data/vendor/libgit2/src/revparse.c +46 -46
- data/vendor/libgit2/src/revwalk.c +89 -54
- data/vendor/libgit2/src/revwalk.h +20 -0
- data/vendor/libgit2/src/settings.c +22 -9
- data/vendor/libgit2/src/signature.c +15 -13
- data/vendor/libgit2/src/sortedcache.c +22 -36
- data/vendor/libgit2/src/sortedcache.h +1 -1
- data/vendor/libgit2/src/stash.c +56 -76
- data/vendor/libgit2/src/status.c +27 -21
- data/vendor/libgit2/src/stream.h +17 -2
- data/vendor/libgit2/src/streams/mbedtls.c +100 -80
- data/vendor/libgit2/src/streams/mbedtls.h +5 -2
- data/vendor/libgit2/src/streams/openssl.c +93 -81
- data/vendor/libgit2/src/streams/openssl.h +5 -2
- data/vendor/libgit2/src/streams/registry.c +118 -0
- data/vendor/libgit2/src/streams/registry.h +19 -0
- data/vendor/libgit2/src/streams/socket.c +55 -30
- data/vendor/libgit2/src/streams/stransport.c +57 -32
- data/vendor/libgit2/src/streams/stransport.h +5 -0
- data/vendor/libgit2/src/streams/tls.c +48 -20
- data/vendor/libgit2/src/streams/tls.h +12 -4
- data/vendor/libgit2/src/strmap.c +47 -74
- data/vendor/libgit2/src/strmap.h +108 -33
- data/vendor/libgit2/src/submodule.c +190 -169
- data/vendor/libgit2/src/submodule.h +1 -1
- data/vendor/libgit2/src/sysdir.c +25 -15
- data/vendor/libgit2/src/tag.c +39 -26
- data/vendor/libgit2/src/tag.h +2 -1
- data/vendor/libgit2/src/trace.c +2 -2
- data/vendor/libgit2/src/trace.h +2 -2
- data/vendor/libgit2/src/trailer.c +46 -32
- data/vendor/libgit2/src/transaction.c +30 -29
- data/vendor/libgit2/src/transport.c +3 -3
- data/vendor/libgit2/src/transports/auth.c +14 -10
- data/vendor/libgit2/src/transports/auth.h +10 -3
- data/vendor/libgit2/src/transports/auth_negotiate.c +31 -16
- data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
- data/vendor/libgit2/src/transports/auth_ntlm.c +223 -0
- data/vendor/libgit2/src/transports/auth_ntlm.h +35 -0
- data/vendor/libgit2/src/transports/cred.c +24 -24
- data/vendor/libgit2/src/transports/git.c +25 -30
- data/vendor/libgit2/src/transports/http.c +871 -335
- data/vendor/libgit2/src/transports/http.h +2 -0
- data/vendor/libgit2/src/transports/local.c +28 -28
- data/vendor/libgit2/src/transports/smart.c +64 -46
- data/vendor/libgit2/src/transports/smart.h +5 -6
- data/vendor/libgit2/src/transports/smart_pkt.c +162 -151
- data/vendor/libgit2/src/transports/smart_protocol.c +64 -94
- data/vendor/libgit2/src/transports/ssh.c +76 -65
- data/vendor/libgit2/src/transports/winhttp.c +328 -319
- data/vendor/libgit2/src/tree-cache.c +21 -14
- data/vendor/libgit2/src/tree.c +119 -112
- data/vendor/libgit2/src/tree.h +1 -0
- data/vendor/libgit2/src/unix/map.c +3 -3
- data/vendor/libgit2/src/unix/posix.h +1 -11
- data/vendor/libgit2/src/userdiff.h +3 -1
- data/vendor/libgit2/src/util.c +154 -93
- data/vendor/libgit2/src/util.h +19 -23
- data/vendor/libgit2/src/vector.c +15 -10
- data/vendor/libgit2/src/wildmatch.c +320 -0
- data/vendor/libgit2/src/wildmatch.h +23 -0
- data/vendor/libgit2/src/win32/dir.c +3 -3
- data/vendor/libgit2/src/win32/findfile.c +1 -1
- data/vendor/libgit2/src/win32/map.c +9 -11
- data/vendor/libgit2/src/win32/msvc-compat.h +6 -0
- data/vendor/libgit2/src/win32/path_w32.c +113 -9
- data/vendor/libgit2/src/win32/path_w32.h +18 -29
- data/vendor/libgit2/src/win32/posix.h +1 -4
- data/vendor/libgit2/src/win32/posix_w32.c +69 -44
- data/vendor/libgit2/src/win32/precompiled.h +0 -2
- data/vendor/libgit2/src/win32/thread.c +5 -10
- data/vendor/libgit2/src/win32/w32_buffer.c +9 -5
- data/vendor/libgit2/src/win32/w32_common.h +39 -0
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +2 -95
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -2
- data/vendor/libgit2/src/win32/w32_stack.c +6 -11
- data/vendor/libgit2/src/win32/w32_stack.h +3 -3
- data/vendor/libgit2/src/win32/w32_util.c +27 -64
- data/vendor/libgit2/src/win32/w32_util.h +5 -49
- data/vendor/libgit2/src/worktree.c +44 -30
- data/vendor/libgit2/src/xdiff/xdiffi.c +5 -5
- data/vendor/libgit2/src/xdiff/xhistogram.c +1 -1
- data/vendor/libgit2/src/xdiff/xmerge.c +27 -15
- data/vendor/libgit2/src/xdiff/xpatience.c +3 -0
- data/vendor/libgit2/src/zstream.c +4 -4
- metadata +115 -38
- data/vendor/libgit2/deps/regex/CMakeLists.txt +0 -2
- data/vendor/libgit2/deps/regex/config.h +0 -7
- data/vendor/libgit2/deps/regex/regcomp.c +0 -3857
- data/vendor/libgit2/deps/regex/regex.c +0 -92
- data/vendor/libgit2/deps/regex/regex.h +0 -582
- data/vendor/libgit2/deps/regex/regex_internal.c +0 -1744
- data/vendor/libgit2/deps/regex/regex_internal.h +0 -819
- data/vendor/libgit2/deps/regex/regexec.c +0 -4369
- data/vendor/libgit2/include/git2/inttypes.h +0 -309
- data/vendor/libgit2/include/git2/sys/time.h +0 -31
- data/vendor/libgit2/libgit2.pc.in +0 -13
- data/vendor/libgit2/src/config_file.h +0 -73
- data/vendor/libgit2/src/fnmatch.c +0 -248
- data/vendor/libgit2/src/fnmatch.h +0 -48
- data/vendor/libgit2/src/hash/hash_collisiondetect.h +0 -47
- data/vendor/libgit2/src/hash/hash_openssl.h +0 -59
- data/vendor/libgit2/src/streams/curl.c +0 -385
- data/vendor/libgit2/src/streams/curl.h +0 -17
- /data/vendor/libgit2/deps/http-parser/{LICENSE-MIT → COPYING} +0 -0
- /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.h +0 -0
- /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.c +0 -0
- /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.h +0 -0
data/vendor/libgit2/src/config.h
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
|
|
25
25
|
struct git_config {
|
|
26
26
|
git_refcount rc;
|
|
27
|
-
git_vector
|
|
27
|
+
git_vector backends;
|
|
28
28
|
};
|
|
29
29
|
|
|
30
30
|
extern int git_config__global_location(git_buf *buf);
|
|
@@ -34,19 +34,6 @@ extern int git_config_rename_section(
|
|
|
34
34
|
const char *old_section_name, /* eg "branch.dummy" */
|
|
35
35
|
const char *new_section_name); /* NULL to drop the old section */
|
|
36
36
|
|
|
37
|
-
/**
|
|
38
|
-
* Create a configuration file backend for ondisk files
|
|
39
|
-
*
|
|
40
|
-
* These are the normal `.gitconfig` files that Core Git
|
|
41
|
-
* processes. Note that you first have to add this file to a
|
|
42
|
-
* configuration object before you can query it for configuration
|
|
43
|
-
* variables.
|
|
44
|
-
*
|
|
45
|
-
* @param out the new backend
|
|
46
|
-
* @param path where the config file is located
|
|
47
|
-
*/
|
|
48
|
-
extern int git_config_file__ondisk(git_config_backend **out, const char *path);
|
|
49
|
-
|
|
50
37
|
extern int git_config__normalize_name(const char *in, char **out);
|
|
51
38
|
|
|
52
39
|
/* internal only: does not normalize key and sets out to NULL if not found */
|
|
@@ -79,18 +66,19 @@ extern int git_config__get_bool_force(
|
|
|
79
66
|
extern int git_config__get_int_force(
|
|
80
67
|
const git_config *cfg, const char *key, int fallback_value);
|
|
81
68
|
|
|
82
|
-
/* API for repository
|
|
83
|
-
* uses
|
|
69
|
+
/* API for repository configmap-style lookups from config - not cached, but
|
|
70
|
+
* uses configmap value maps and fallbacks
|
|
84
71
|
*/
|
|
85
|
-
extern int
|
|
86
|
-
int *out, git_config *config,
|
|
72
|
+
extern int git_config__configmap_lookup(
|
|
73
|
+
int *out, git_config *config, git_configmap_item item);
|
|
87
74
|
|
|
88
75
|
/**
|
|
89
76
|
* The opposite of git_config_lookup_map_value, we take an enum value
|
|
90
77
|
* and map it to the string or bool value on the config.
|
|
91
78
|
*/
|
|
92
|
-
int git_config_lookup_map_enum(
|
|
93
|
-
|
|
79
|
+
int git_config_lookup_map_enum(git_configmap_t *type_out,
|
|
80
|
+
const char **str_out, const git_configmap *maps,
|
|
81
|
+
size_t map_n, int enum_val);
|
|
94
82
|
|
|
95
83
|
/**
|
|
96
84
|
* Unlock the backend with the highest priority
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
|
6
|
+
*/
|
|
7
|
+
#ifndef INCLUDE_config_file_h__
|
|
8
|
+
#define INCLUDE_config_file_h__
|
|
9
|
+
|
|
10
|
+
#include "common.h"
|
|
11
|
+
|
|
12
|
+
#include "git2/sys/config.h"
|
|
13
|
+
#include "git2/config.h"
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Create a configuration file backend for ondisk files
|
|
17
|
+
*
|
|
18
|
+
* These are the normal `.gitconfig` files that Core Git
|
|
19
|
+
* processes. Note that you first have to add this file to a
|
|
20
|
+
* configuration object before you can query it for configuration
|
|
21
|
+
* variables.
|
|
22
|
+
*
|
|
23
|
+
* @param out the new backend
|
|
24
|
+
* @param path where the config file is located
|
|
25
|
+
*/
|
|
26
|
+
extern int git_config_backend_from_file(git_config_backend **out, const char *path);
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Create a readonly configuration file backend from another backend
|
|
30
|
+
*
|
|
31
|
+
* This copies the complete contents of the source backend to the
|
|
32
|
+
* new backend. The new backend will be completely read-only and
|
|
33
|
+
* cannot be modified.
|
|
34
|
+
*
|
|
35
|
+
* @param out the new snapshotted backend
|
|
36
|
+
* @param source the backend to copy
|
|
37
|
+
*/
|
|
38
|
+
extern int git_config_backend_snapshot(git_config_backend **out, git_config_backend *source);
|
|
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
|
+
GIT_INLINE(int) git_config_backend_open(git_config_backend *cfg, unsigned int level, const git_repository *repo)
|
|
50
|
+
{
|
|
51
|
+
return cfg->open(cfg, level, repo);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
GIT_INLINE(void) git_config_backend_free(git_config_backend *cfg)
|
|
55
|
+
{
|
|
56
|
+
if (cfg)
|
|
57
|
+
cfg->free(cfg);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
GIT_INLINE(int) git_config_backend_get_string(
|
|
61
|
+
git_config_entry **out, git_config_backend *cfg, const char *name)
|
|
62
|
+
{
|
|
63
|
+
return cfg->get(cfg, name, out);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
GIT_INLINE(int) git_config_backend_set_string(
|
|
67
|
+
git_config_backend *cfg, const char *name, const char *value)
|
|
68
|
+
{
|
|
69
|
+
return cfg->set(cfg, name, value);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
GIT_INLINE(int) git_config_backend_delete(
|
|
73
|
+
git_config_backend *cfg, const char *name)
|
|
74
|
+
{
|
|
75
|
+
return cfg->del(cfg, name);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
GIT_INLINE(int) git_config_backend_foreach(
|
|
79
|
+
git_config_backend *cfg,
|
|
80
|
+
int (*fn)(const git_config_entry *entry, void *data),
|
|
81
|
+
void *data)
|
|
82
|
+
{
|
|
83
|
+
return git_config_backend_foreach_match(cfg, NULL, fn, data);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
GIT_INLINE(int) git_config_backend_lock(git_config_backend *cfg)
|
|
87
|
+
{
|
|
88
|
+
return cfg->lock(cfg);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
GIT_INLINE(int) git_config_backend_unlock(git_config_backend *cfg, int success)
|
|
92
|
+
{
|
|
93
|
+
return cfg->unlock(cfg, success);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
#endif
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
#include "common.h"
|
|
9
9
|
|
|
10
|
-
#include "
|
|
10
|
+
#include "futils.h"
|
|
11
11
|
#include "repository.h"
|
|
12
12
|
#include "config.h"
|
|
13
13
|
#include "git2/config.h"
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
#include "filter.h"
|
|
16
16
|
|
|
17
17
|
struct map_data {
|
|
18
|
-
const char *
|
|
19
|
-
|
|
18
|
+
const char *name;
|
|
19
|
+
git_configmap *maps;
|
|
20
20
|
size_t map_count;
|
|
21
21
|
int default_value;
|
|
22
22
|
};
|
|
@@ -29,11 +29,11 @@ struct map_data {
|
|
|
29
29
|
* value is native. See gitattributes(5) for more information on
|
|
30
30
|
* end-of-line conversion.
|
|
31
31
|
*/
|
|
32
|
-
static
|
|
33
|
-
{
|
|
34
|
-
{
|
|
35
|
-
{
|
|
36
|
-
{
|
|
32
|
+
static git_configmap _configmap_eol[] = {
|
|
33
|
+
{GIT_CONFIGMAP_FALSE, NULL, GIT_EOL_UNSET},
|
|
34
|
+
{GIT_CONFIGMAP_STRING, "lf", GIT_EOL_LF},
|
|
35
|
+
{GIT_CONFIGMAP_STRING, "crlf", GIT_EOL_CRLF},
|
|
36
|
+
{GIT_CONFIGMAP_STRING, "native", GIT_EOL_NATIVE}
|
|
37
37
|
};
|
|
38
38
|
|
|
39
39
|
/*
|
|
@@ -46,49 +46,55 @@ static git_cvar_map _cvar_map_eol[] = {
|
|
|
46
46
|
* does not have normalized line endings. This variable can be set to input,
|
|
47
47
|
* in which case no output conversion is performed.
|
|
48
48
|
*/
|
|
49
|
-
static
|
|
50
|
-
{
|
|
51
|
-
{
|
|
52
|
-
{
|
|
49
|
+
static git_configmap _configmap_autocrlf[] = {
|
|
50
|
+
{GIT_CONFIGMAP_FALSE, NULL, GIT_AUTO_CRLF_FALSE},
|
|
51
|
+
{GIT_CONFIGMAP_TRUE, NULL, GIT_AUTO_CRLF_TRUE},
|
|
52
|
+
{GIT_CONFIGMAP_STRING, "input", GIT_AUTO_CRLF_INPUT}
|
|
53
53
|
};
|
|
54
54
|
|
|
55
|
-
static
|
|
56
|
-
{
|
|
57
|
-
{
|
|
58
|
-
{
|
|
55
|
+
static git_configmap _configmap_safecrlf[] = {
|
|
56
|
+
{GIT_CONFIGMAP_FALSE, NULL, GIT_SAFE_CRLF_FALSE},
|
|
57
|
+
{GIT_CONFIGMAP_TRUE, NULL, GIT_SAFE_CRLF_FAIL},
|
|
58
|
+
{GIT_CONFIGMAP_STRING, "warn", GIT_SAFE_CRLF_WARN}
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
static git_configmap _configmap_logallrefupdates[] = {
|
|
62
|
+
{GIT_CONFIGMAP_FALSE, NULL, GIT_LOGALLREFUPDATES_FALSE},
|
|
63
|
+
{GIT_CONFIGMAP_TRUE, NULL, GIT_LOGALLREFUPDATES_TRUE},
|
|
64
|
+
{GIT_CONFIGMAP_STRING, "always", GIT_LOGALLREFUPDATES_ALWAYS},
|
|
59
65
|
};
|
|
60
66
|
|
|
61
67
|
/*
|
|
62
68
|
* Generic map for integer values
|
|
63
69
|
*/
|
|
64
|
-
static
|
|
65
|
-
{
|
|
70
|
+
static git_configmap _configmap_int[] = {
|
|
71
|
+
{GIT_CONFIGMAP_INT32, NULL, 0},
|
|
66
72
|
};
|
|
67
73
|
|
|
68
|
-
static struct map_data
|
|
69
|
-
{"core.autocrlf",
|
|
70
|
-
{"core.eol",
|
|
74
|
+
static struct map_data _configmaps[] = {
|
|
75
|
+
{"core.autocrlf", _configmap_autocrlf, ARRAY_SIZE(_configmap_autocrlf), GIT_AUTO_CRLF_DEFAULT},
|
|
76
|
+
{"core.eol", _configmap_eol, ARRAY_SIZE(_configmap_eol), GIT_EOL_DEFAULT},
|
|
71
77
|
{"core.symlinks", NULL, 0, GIT_SYMLINKS_DEFAULT },
|
|
72
78
|
{"core.ignorecase", NULL, 0, GIT_IGNORECASE_DEFAULT },
|
|
73
79
|
{"core.filemode", NULL, 0, GIT_FILEMODE_DEFAULT },
|
|
74
80
|
{"core.ignorestat", NULL, 0, GIT_IGNORESTAT_DEFAULT },
|
|
75
81
|
{"core.trustctime", NULL, 0, GIT_TRUSTCTIME_DEFAULT },
|
|
76
|
-
{"core.abbrev",
|
|
82
|
+
{"core.abbrev", _configmap_int, 1, GIT_ABBREV_DEFAULT },
|
|
77
83
|
{"core.precomposeunicode", NULL, 0, GIT_PRECOMPOSE_DEFAULT },
|
|
78
|
-
{"core.safecrlf",
|
|
79
|
-
{"core.logallrefupdates",
|
|
84
|
+
{"core.safecrlf", _configmap_safecrlf, ARRAY_SIZE(_configmap_safecrlf), GIT_SAFE_CRLF_DEFAULT},
|
|
85
|
+
{"core.logallrefupdates", _configmap_logallrefupdates, ARRAY_SIZE(_configmap_logallrefupdates), GIT_LOGALLREFUPDATES_DEFAULT},
|
|
80
86
|
{"core.protecthfs", NULL, 0, GIT_PROTECTHFS_DEFAULT },
|
|
81
87
|
{"core.protectntfs", NULL, 0, GIT_PROTECTNTFS_DEFAULT },
|
|
82
88
|
{"core.fsyncobjectfiles", NULL, 0, GIT_FSYNCOBJECTFILES_DEFAULT },
|
|
83
89
|
};
|
|
84
90
|
|
|
85
|
-
int
|
|
91
|
+
int git_config__configmap_lookup(int *out, git_config *config, git_configmap_item item)
|
|
86
92
|
{
|
|
87
93
|
int error = 0;
|
|
88
|
-
struct map_data *data = &
|
|
94
|
+
struct map_data *data = &_configmaps[(int)item];
|
|
89
95
|
git_config_entry *entry;
|
|
90
96
|
|
|
91
|
-
if ((error = git_config__lookup_entry(&entry, config, data->
|
|
97
|
+
if ((error = git_config__lookup_entry(&entry, config, data->name, false)) < 0)
|
|
92
98
|
return error;
|
|
93
99
|
|
|
94
100
|
if (!entry)
|
|
@@ -103,29 +109,29 @@ int git_config__cvar(int *out, git_config *config, git_cvar_cached cvar)
|
|
|
103
109
|
return error;
|
|
104
110
|
}
|
|
105
111
|
|
|
106
|
-
int
|
|
112
|
+
int git_repository__configmap_lookup(int *out, git_repository *repo, git_configmap_item item)
|
|
107
113
|
{
|
|
108
|
-
*out = repo->
|
|
114
|
+
*out = repo->configmap_cache[(int)item];
|
|
109
115
|
|
|
110
|
-
if (*out ==
|
|
116
|
+
if (*out == GIT_CONFIGMAP_NOT_CACHED) {
|
|
111
117
|
int error;
|
|
112
118
|
git_config *config;
|
|
113
119
|
|
|
114
120
|
if ((error = git_repository_config__weakptr(&config, repo)) < 0 ||
|
|
115
|
-
(error =
|
|
121
|
+
(error = git_config__configmap_lookup(out, config, item)) < 0)
|
|
116
122
|
return error;
|
|
117
123
|
|
|
118
|
-
repo->
|
|
124
|
+
repo->configmap_cache[(int)item] = *out;
|
|
119
125
|
}
|
|
120
126
|
|
|
121
127
|
return 0;
|
|
122
128
|
}
|
|
123
129
|
|
|
124
|
-
void
|
|
130
|
+
void git_repository__configmap_lookup_cache_clear(git_repository *repo)
|
|
125
131
|
{
|
|
126
132
|
int i;
|
|
127
133
|
|
|
128
|
-
for (i = 0; i <
|
|
129
|
-
repo->
|
|
134
|
+
for (i = 0; i < GIT_CONFIGMAP_CACHE_MAX; ++i)
|
|
135
|
+
repo->configmap_cache[i] = GIT_CONFIGMAP_NOT_CACHED;
|
|
130
136
|
}
|
|
131
137
|
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#include "config_entries.h"
|
|
9
|
+
|
|
10
|
+
typedef struct config_entry_list {
|
|
11
|
+
struct config_entry_list *next;
|
|
12
|
+
struct config_entry_list *last;
|
|
13
|
+
git_config_entry *entry;
|
|
14
|
+
bool first;
|
|
15
|
+
} config_entry_list;
|
|
16
|
+
|
|
17
|
+
typedef struct config_entries_iterator {
|
|
18
|
+
git_config_iterator parent;
|
|
19
|
+
git_config_entries *entries;
|
|
20
|
+
config_entry_list *head;
|
|
21
|
+
} config_entries_iterator;
|
|
22
|
+
|
|
23
|
+
struct git_config_entries {
|
|
24
|
+
git_refcount rc;
|
|
25
|
+
git_strmap *map;
|
|
26
|
+
config_entry_list *list;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
int git_config_entries_new(git_config_entries **out)
|
|
30
|
+
{
|
|
31
|
+
git_config_entries *entries;
|
|
32
|
+
int error;
|
|
33
|
+
|
|
34
|
+
entries = git__calloc(1, sizeof(git_config_entries));
|
|
35
|
+
GIT_ERROR_CHECK_ALLOC(entries);
|
|
36
|
+
GIT_REFCOUNT_INC(entries);
|
|
37
|
+
|
|
38
|
+
if ((error = git_strmap_new(&entries->map)) < 0)
|
|
39
|
+
git__free(entries);
|
|
40
|
+
else
|
|
41
|
+
*out = entries;
|
|
42
|
+
|
|
43
|
+
return error;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
int git_config_entries_dup_entry(git_config_entries *entries, const git_config_entry *entry)
|
|
47
|
+
{
|
|
48
|
+
git_config_entry *duplicated;
|
|
49
|
+
int error;
|
|
50
|
+
|
|
51
|
+
duplicated = git__calloc(1, sizeof(git_config_entry));
|
|
52
|
+
GIT_ERROR_CHECK_ALLOC(duplicated);
|
|
53
|
+
|
|
54
|
+
duplicated->name = git__strdup(entry->name);
|
|
55
|
+
GIT_ERROR_CHECK_ALLOC(duplicated->name);
|
|
56
|
+
|
|
57
|
+
if (entry->value) {
|
|
58
|
+
duplicated->value = git__strdup(entry->value);
|
|
59
|
+
GIT_ERROR_CHECK_ALLOC(duplicated->value);
|
|
60
|
+
}
|
|
61
|
+
duplicated->level = entry->level;
|
|
62
|
+
duplicated->include_depth = entry->include_depth;
|
|
63
|
+
|
|
64
|
+
if ((error = git_config_entries_append(entries, duplicated)) < 0)
|
|
65
|
+
goto out;
|
|
66
|
+
|
|
67
|
+
out:
|
|
68
|
+
if (error && duplicated) {
|
|
69
|
+
git__free((char *) duplicated->name);
|
|
70
|
+
git__free((char *) duplicated->value);
|
|
71
|
+
git__free(duplicated);
|
|
72
|
+
}
|
|
73
|
+
return error;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
int git_config_entries_dup(git_config_entries **out, git_config_entries *entries)
|
|
77
|
+
{
|
|
78
|
+
git_config_entries *result = NULL;
|
|
79
|
+
config_entry_list *head;
|
|
80
|
+
int error;
|
|
81
|
+
|
|
82
|
+
if ((error = git_config_entries_new(&result)) < 0)
|
|
83
|
+
goto out;
|
|
84
|
+
|
|
85
|
+
for (head = entries->list; head; head = head->next)
|
|
86
|
+
if ((git_config_entries_dup_entry(result, head->entry)) < 0)
|
|
87
|
+
goto out;
|
|
88
|
+
|
|
89
|
+
*out = result;
|
|
90
|
+
result = NULL;
|
|
91
|
+
|
|
92
|
+
out:
|
|
93
|
+
git_config_entries_free(result);
|
|
94
|
+
return error;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
void git_config_entries_incref(git_config_entries *entries)
|
|
98
|
+
{
|
|
99
|
+
GIT_REFCOUNT_INC(entries);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
static void config_entries_free(git_config_entries *entries)
|
|
103
|
+
{
|
|
104
|
+
config_entry_list *list = NULL, *next;
|
|
105
|
+
|
|
106
|
+
git_strmap_free(entries->map);
|
|
107
|
+
|
|
108
|
+
list = entries->list;
|
|
109
|
+
while (list != NULL) {
|
|
110
|
+
next = list->next;
|
|
111
|
+
if (list->first)
|
|
112
|
+
git__free((char *) list->entry->name);
|
|
113
|
+
git__free((char *) list->entry->value);
|
|
114
|
+
git__free(list->entry);
|
|
115
|
+
git__free(list);
|
|
116
|
+
list = next;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
git__free(entries);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
void git_config_entries_free(git_config_entries *entries)
|
|
123
|
+
{
|
|
124
|
+
if (entries)
|
|
125
|
+
GIT_REFCOUNT_DEC(entries, config_entries_free);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
int git_config_entries_append(git_config_entries *entries, git_config_entry *entry)
|
|
129
|
+
{
|
|
130
|
+
config_entry_list *existing, *head;
|
|
131
|
+
|
|
132
|
+
head = git__calloc(1, sizeof(config_entry_list));
|
|
133
|
+
GIT_ERROR_CHECK_ALLOC(head);
|
|
134
|
+
head->entry = entry;
|
|
135
|
+
|
|
136
|
+
/*
|
|
137
|
+
* This is a micro-optimization for configuration files
|
|
138
|
+
* with a lot of same keys. As for multivars the entry's
|
|
139
|
+
* key will be the same for all entries, we can just free
|
|
140
|
+
* all except the first entry's name and just re-use it.
|
|
141
|
+
*/
|
|
142
|
+
if ((existing = git_strmap_get(entries->map, entry->name)) != NULL) {
|
|
143
|
+
git__free((char *) entry->name);
|
|
144
|
+
entry->name = existing->entry->name;
|
|
145
|
+
} else {
|
|
146
|
+
head->first = 1;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if (entries->list)
|
|
150
|
+
entries->list->last->next = head;
|
|
151
|
+
else
|
|
152
|
+
entries->list = head;
|
|
153
|
+
entries->list->last = head;
|
|
154
|
+
|
|
155
|
+
if (git_strmap_set(entries->map, entry->name, head) < 0)
|
|
156
|
+
return -1;
|
|
157
|
+
|
|
158
|
+
return 0;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
int git_config_entries_get(git_config_entry **out, git_config_entries *entries, const char *key)
|
|
162
|
+
{
|
|
163
|
+
config_entry_list *entry;
|
|
164
|
+
if ((entry = git_strmap_get(entries->map, key)) == NULL)
|
|
165
|
+
return GIT_ENOTFOUND;
|
|
166
|
+
*out = entry->entry;
|
|
167
|
+
return 0;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
int git_config_entries_get_unique(git_config_entry **out, git_config_entries *entries, const char *key)
|
|
171
|
+
{
|
|
172
|
+
config_entry_list *entry;
|
|
173
|
+
|
|
174
|
+
if ((entry = git_strmap_get(entries->map, key)) == NULL)
|
|
175
|
+
return GIT_ENOTFOUND;
|
|
176
|
+
|
|
177
|
+
if (!entry->first) {
|
|
178
|
+
git_error_set(GIT_ERROR_CONFIG, "entry is not unique due to being a multivar");
|
|
179
|
+
return -1;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
if (entry->entry->include_depth) {
|
|
183
|
+
git_error_set(GIT_ERROR_CONFIG, "entry is not unique due to being included");
|
|
184
|
+
return -1;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
*out = entry->entry;
|
|
188
|
+
|
|
189
|
+
return 0;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
static void config_iterator_free(git_config_iterator *iter)
|
|
193
|
+
{
|
|
194
|
+
config_entries_iterator *it = (config_entries_iterator *) iter;
|
|
195
|
+
git_config_entries_free(it->entries);
|
|
196
|
+
git__free(it);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
static int config_iterator_next(
|
|
200
|
+
git_config_entry **entry,
|
|
201
|
+
git_config_iterator *iter)
|
|
202
|
+
{
|
|
203
|
+
config_entries_iterator *it = (config_entries_iterator *) iter;
|
|
204
|
+
|
|
205
|
+
if (!it->head)
|
|
206
|
+
return GIT_ITEROVER;
|
|
207
|
+
|
|
208
|
+
*entry = it->head->entry;
|
|
209
|
+
it->head = it->head->next;
|
|
210
|
+
|
|
211
|
+
return 0;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
int git_config_entries_iterator_new(git_config_iterator **out, git_config_entries *entries)
|
|
215
|
+
{
|
|
216
|
+
config_entries_iterator *it;
|
|
217
|
+
|
|
218
|
+
it = git__calloc(1, sizeof(config_entries_iterator));
|
|
219
|
+
GIT_ERROR_CHECK_ALLOC(it);
|
|
220
|
+
it->parent.next = config_iterator_next;
|
|
221
|
+
it->parent.free = config_iterator_free;
|
|
222
|
+
it->head = entries->list;
|
|
223
|
+
it->entries = entries;
|
|
224
|
+
|
|
225
|
+
git_config_entries_incref(entries);
|
|
226
|
+
*out = &it->parent;
|
|
227
|
+
|
|
228
|
+
return 0;
|
|
229
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#include "common.h"
|
|
9
|
+
|
|
10
|
+
#include "git2/sys/config.h"
|
|
11
|
+
#include "config.h"
|
|
12
|
+
|
|
13
|
+
typedef struct git_config_entries git_config_entries;
|
|
14
|
+
|
|
15
|
+
int git_config_entries_new(git_config_entries **out);
|
|
16
|
+
int git_config_entries_dup(git_config_entries **out, git_config_entries *entries);
|
|
17
|
+
int git_config_entries_dup_entry(git_config_entries *entries, const git_config_entry *entry);
|
|
18
|
+
void git_config_entries_incref(git_config_entries *entries);
|
|
19
|
+
void git_config_entries_free(git_config_entries *entries);
|
|
20
|
+
/* Add or append the new config option */
|
|
21
|
+
int git_config_entries_append(git_config_entries *entries, git_config_entry *entry);
|
|
22
|
+
int git_config_entries_get(git_config_entry **out, git_config_entries *entries, const char *key);
|
|
23
|
+
int git_config_entries_get_unique(git_config_entry **out, git_config_entries *entries, const char *key);
|
|
24
|
+
int git_config_entries_iterator_new(git_config_iterator **out, git_config_entries *entries);
|