rugged 1.0.0 → 1.2.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/LICENSE +1 -0
- data/README.md +3 -3
- data/ext/rugged/rugged.c +7 -4
- data/ext/rugged/rugged_commit.c +1 -1
- data/ext/rugged/rugged_config.c +1 -1
- data/ext/rugged/rugged_object.c +1 -1
- data/ext/rugged/rugged_remote.c +32 -2
- data/ext/rugged/rugged_repo.c +13 -3
- data/lib/rugged/commit.rb +17 -4
- data/lib/rugged/repository.rb +7 -8
- data/lib/rugged/submodule_collection.rb +4 -4
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +41 -74
- data/vendor/libgit2/COPYING +109 -1
- data/vendor/libgit2/cmake/{Modules/AddCFlagIfSupported.cmake → AddCFlagIfSupported.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/EnableWarnings.cmake → EnableWarnings.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindCoreFoundation.cmake → FindCoreFoundation.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindGSSAPI.cmake → FindGSSAPI.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindGSSFramework.cmake → FindGSSFramework.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindHTTP_Parser.cmake → FindHTTP_Parser.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindIconv.cmake → FindIconv.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindPCRE.cmake → FindPCRE.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindPCRE2.cmake → FindPCRE2.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindPkgLibraries.cmake → FindPkgLibraries.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindSecurity.cmake → FindSecurity.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindStatNsec.cmake → FindStatNsec.cmake} +0 -0
- data/vendor/libgit2/cmake/Findfutimens.cmake +14 -0
- data/vendor/libgit2/cmake/{Modules/FindmbedTLS.cmake → FindmbedTLS.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/IdeSplitSources.cmake → IdeSplitSources.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/PkgBuildConfig.cmake → PkgBuildConfig.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/SanitizeBool.cmake → SanitizeBool.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/SelectGSSAPI.cmake → SelectGSSAPI.cmake} +18 -26
- data/vendor/libgit2/cmake/{Modules/SelectHTTPSBackend.cmake → SelectHTTPSBackend.cmake} +29 -32
- data/vendor/libgit2/cmake/{Modules/SelectHashes.cmake → SelectHashes.cmake} +21 -28
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +101 -0
- data/vendor/libgit2/deps/http-parser/CMakeLists.txt +4 -3
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +24 -10
- data/vendor/libgit2/deps/ntlmclient/compat.h +0 -27
- data/vendor/libgit2/deps/ntlmclient/crypt.h +14 -9
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +20 -20
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +3 -3
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +37 -36
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +4 -3
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +178 -51
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +74 -5
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +164 -135
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +13 -9
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +16 -3
- data/vendor/libgit2/deps/ntlmclient/unicode.h +10 -4
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +16 -27
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.h +20 -0
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +28 -52
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.h +22 -0
- data/vendor/libgit2/deps/ntlmclient/util.c +15 -1
- data/vendor/libgit2/deps/ntlmclient/util.h +2 -1
- data/vendor/libgit2/deps/pcre/LICENCE +93 -0
- data/vendor/libgit2/deps/pcre/pcre.h +2 -2
- data/vendor/libgit2/deps/pcre/pcre_compile.c +29 -17
- data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +4 -4
- data/vendor/libgit2/deps/pcre/pcreposix.c +2 -3
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -5
- data/vendor/libgit2/deps/zlib/deflate.c +1 -0
- data/vendor/libgit2/include/git2/annotated_commit.h +1 -1
- data/vendor/libgit2/include/git2/apply.h +2 -0
- data/vendor/libgit2/include/git2/attr.h +89 -0
- data/vendor/libgit2/include/git2/blame.h +95 -42
- data/vendor/libgit2/include/git2/blob.h +31 -3
- data/vendor/libgit2/include/git2/branch.h +25 -0
- data/vendor/libgit2/include/git2/cert.h +42 -5
- data/vendor/libgit2/include/git2/checkout.h +28 -12
- data/vendor/libgit2/include/git2/commit.h +35 -19
- data/vendor/libgit2/include/git2/common.h +33 -6
- data/vendor/libgit2/include/git2/config.h +1 -1
- data/vendor/libgit2/include/git2/deprecated.h +248 -8
- data/vendor/libgit2/include/git2/diff.h +35 -20
- data/vendor/libgit2/include/git2/errors.h +8 -7
- data/vendor/libgit2/include/git2/filter.h +57 -17
- data/vendor/libgit2/include/git2/graph.h +20 -2
- data/vendor/libgit2/include/git2/index.h +4 -5
- data/vendor/libgit2/include/git2/indexer.h +2 -1
- data/vendor/libgit2/include/git2/odb.h +44 -20
- data/vendor/libgit2/include/git2/pack.h +1 -1
- data/vendor/libgit2/include/git2/patch.h +8 -0
- data/vendor/libgit2/include/git2/rebase.h +25 -1
- data/vendor/libgit2/include/git2/refs.h +9 -5
- data/vendor/libgit2/include/git2/remote.h +59 -6
- data/vendor/libgit2/include/git2/repository.h +95 -52
- data/vendor/libgit2/include/git2/revparse.h +5 -5
- data/vendor/libgit2/include/git2/status.h +115 -59
- data/vendor/libgit2/include/git2/strarray.h +6 -10
- data/vendor/libgit2/include/git2/submodule.h +9 -0
- data/vendor/libgit2/include/git2/sys/commit_graph.h +174 -0
- data/vendor/libgit2/include/git2/sys/filter.h +49 -28
- data/vendor/libgit2/include/git2/sys/midx.h +74 -0
- data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -0
- data/vendor/libgit2/include/git2/sys/transport.h +1 -0
- data/vendor/libgit2/include/git2/tag.h +12 -0
- data/vendor/libgit2/include/git2/transport.h +1 -1
- data/vendor/libgit2/include/git2/tree.h +2 -14
- data/vendor/libgit2/include/git2/types.h +9 -0
- data/vendor/libgit2/include/git2/version.h +3 -3
- data/vendor/libgit2/include/git2/worktree.h +1 -0
- data/vendor/libgit2/src/CMakeLists.txt +77 -44
- data/vendor/libgit2/src/alloc.c +21 -8
- data/vendor/libgit2/src/allocators/failalloc.c +92 -0
- data/vendor/libgit2/src/allocators/failalloc.h +23 -0
- data/vendor/libgit2/src/allocators/stdalloc.c +41 -10
- data/vendor/libgit2/src/allocators/win32_leakcheck.c +118 -0
- data/vendor/libgit2/src/allocators/{win32_crtdbg.h → win32_leakcheck.h} +3 -3
- data/vendor/libgit2/src/annotated_commit.c +21 -9
- data/vendor/libgit2/src/apply.c +21 -8
- data/vendor/libgit2/src/array.h +11 -11
- data/vendor/libgit2/src/assert_safe.h +58 -0
- data/vendor/libgit2/src/attr.c +181 -74
- data/vendor/libgit2/src/attr_file.c +92 -42
- data/vendor/libgit2/src/attr_file.h +32 -11
- data/vendor/libgit2/src/attrcache.c +44 -40
- data/vendor/libgit2/src/attrcache.h +4 -5
- data/vendor/libgit2/src/blame.c +28 -15
- data/vendor/libgit2/src/blame_git.c +6 -3
- data/vendor/libgit2/src/blob.c +46 -24
- data/vendor/libgit2/src/branch.c +87 -37
- data/vendor/libgit2/src/buffer.c +339 -27
- data/vendor/libgit2/src/buffer.h +153 -2
- data/vendor/libgit2/src/cache.c +3 -24
- data/vendor/libgit2/src/cache.h +7 -7
- data/vendor/libgit2/src/cc-compat.h +10 -2
- data/vendor/libgit2/src/checkout.c +97 -98
- data/vendor/libgit2/src/cherrypick.c +8 -2
- data/vendor/libgit2/src/clone.c +104 -29
- data/vendor/libgit2/src/commit.c +41 -28
- data/vendor/libgit2/src/commit_graph.c +1209 -0
- data/vendor/libgit2/src/commit_graph.h +162 -0
- data/vendor/libgit2/src/commit_list.c +46 -0
- data/vendor/libgit2/src/commit_list.h +2 -0
- data/vendor/libgit2/src/common.h +26 -2
- data/vendor/libgit2/src/config.c +40 -22
- data/vendor/libgit2/src/config_cache.c +9 -4
- data/vendor/libgit2/src/config_entries.c +35 -27
- data/vendor/libgit2/src/config_file.c +25 -8
- data/vendor/libgit2/src/config_parse.c +5 -7
- data/vendor/libgit2/src/config_snapshot.c +2 -1
- data/vendor/libgit2/src/crlf.c +16 -6
- data/vendor/libgit2/src/date.c +4 -3
- data/vendor/libgit2/src/delta.c +1 -1
- data/vendor/libgit2/src/describe.c +11 -4
- data/vendor/libgit2/src/diff.c +23 -19
- data/vendor/libgit2/src/diff_driver.c +21 -17
- data/vendor/libgit2/src/diff_file.c +5 -7
- data/vendor/libgit2/src/diff_generate.c +56 -28
- data/vendor/libgit2/src/diff_parse.c +2 -3
- data/vendor/libgit2/src/diff_print.c +81 -65
- data/vendor/libgit2/src/diff_stats.c +19 -16
- data/vendor/libgit2/src/diff_tform.c +13 -13
- data/vendor/libgit2/src/diff_xdiff.c +4 -2
- data/vendor/libgit2/src/diff_xdiff.h +1 -1
- data/vendor/libgit2/src/errors.c +26 -19
- data/vendor/libgit2/src/features.h.in +5 -1
- data/vendor/libgit2/src/fetch.c +7 -2
- data/vendor/libgit2/src/fetchhead.c +8 -4
- data/vendor/libgit2/src/filebuf.c +9 -7
- data/vendor/libgit2/src/filter.c +209 -113
- data/vendor/libgit2/src/filter.h +24 -5
- data/vendor/libgit2/src/futils.c +8 -8
- data/vendor/libgit2/src/futils.h +4 -4
- data/vendor/libgit2/src/graph.c +64 -9
- data/vendor/libgit2/src/hash/sha1/collisiondetect.c +3 -3
- data/vendor/libgit2/src/hash/sha1/common_crypto.c +3 -3
- data/vendor/libgit2/src/hash/sha1/generic.h +1 -1
- data/vendor/libgit2/src/hash/sha1/mbedtls.c +12 -12
- data/vendor/libgit2/src/hash/sha1/openssl.c +3 -3
- data/vendor/libgit2/src/hash/sha1/sha1dc/sha1.c +0 -2
- data/vendor/libgit2/src/hash/sha1/win32.c +15 -11
- data/vendor/libgit2/src/hash.c +16 -13
- data/vendor/libgit2/src/hash.h +1 -1
- data/vendor/libgit2/src/hashsig.c +23 -10
- data/vendor/libgit2/src/ident.c +13 -3
- data/vendor/libgit2/src/idxmap.c +0 -22
- data/vendor/libgit2/src/ignore.c +35 -19
- data/vendor/libgit2/src/index.c +126 -84
- data/vendor/libgit2/src/index.h +1 -1
- data/vendor/libgit2/src/indexer.c +60 -36
- data/vendor/libgit2/src/integer.h +79 -2
- data/vendor/libgit2/src/iterator.c +40 -28
- data/vendor/libgit2/src/iterator.h +1 -1
- data/vendor/libgit2/src/khash.h +2 -11
- data/vendor/libgit2/src/{settings.c → libgit2.c} +125 -49
- data/vendor/libgit2/src/libgit2.h +15 -0
- data/vendor/libgit2/src/mailmap.c +23 -10
- data/vendor/libgit2/src/map.h +3 -3
- data/vendor/libgit2/src/merge.c +108 -46
- data/vendor/libgit2/src/merge.h +2 -1
- data/vendor/libgit2/src/merge_driver.c +19 -13
- data/vendor/libgit2/src/merge_file.c +15 -9
- data/vendor/libgit2/src/message.c +3 -1
- data/vendor/libgit2/src/midx.c +879 -0
- data/vendor/libgit2/src/midx.h +110 -0
- data/vendor/libgit2/src/mwindow.c +214 -95
- data/vendor/libgit2/src/mwindow.h +3 -3
- data/vendor/libgit2/src/net.c +133 -4
- data/vendor/libgit2/src/net.h +16 -2
- data/vendor/libgit2/src/netops.c +6 -4
- data/vendor/libgit2/src/netops.h +2 -2
- data/vendor/libgit2/src/notes.c +10 -10
- data/vendor/libgit2/src/object.c +24 -15
- data/vendor/libgit2/src/odb.c +298 -57
- data/vendor/libgit2/src/odb.h +16 -2
- data/vendor/libgit2/src/odb_loose.c +31 -21
- data/vendor/libgit2/src/odb_mempack.c +3 -1
- data/vendor/libgit2/src/odb_pack.c +391 -114
- data/vendor/libgit2/src/oid.c +7 -4
- data/vendor/libgit2/src/pack-objects.c +83 -69
- data/vendor/libgit2/src/pack.c +383 -150
- data/vendor/libgit2/src/pack.h +44 -9
- data/vendor/libgit2/src/patch.c +14 -7
- data/vendor/libgit2/src/patch_generate.c +3 -5
- data/vendor/libgit2/src/patch_parse.c +6 -3
- data/vendor/libgit2/src/path.c +102 -57
- data/vendor/libgit2/src/path.h +79 -6
- data/vendor/libgit2/src/pathspec.c +12 -11
- data/vendor/libgit2/src/pool.c +34 -22
- data/vendor/libgit2/src/pool.h +9 -1
- data/vendor/libgit2/src/posix.c +43 -12
- data/vendor/libgit2/src/posix.h +9 -0
- data/vendor/libgit2/src/proxy.c +2 -0
- data/vendor/libgit2/src/push.c +2 -0
- data/vendor/libgit2/src/reader.c +10 -6
- data/vendor/libgit2/src/rebase.c +95 -49
- data/vendor/libgit2/src/refdb.c +165 -13
- data/vendor/libgit2/src/refdb.h +69 -0
- data/vendor/libgit2/src/refdb_fs.c +144 -152
- data/vendor/libgit2/src/reflog.c +21 -20
- data/vendor/libgit2/src/refs.c +151 -231
- data/vendor/libgit2/src/refs.h +2 -20
- data/vendor/libgit2/src/refspec.c +80 -44
- data/vendor/libgit2/src/regexp.c +2 -2
- data/vendor/libgit2/src/remote.c +312 -121
- data/vendor/libgit2/src/remote.h +2 -1
- data/vendor/libgit2/src/repository.c +351 -189
- data/vendor/libgit2/src/repository.h +23 -29
- data/vendor/libgit2/src/reset.c +7 -6
- data/vendor/libgit2/src/revert.c +8 -2
- data/vendor/libgit2/src/revparse.c +19 -13
- data/vendor/libgit2/src/revwalk.c +35 -20
- data/vendor/libgit2/src/runtime.c +162 -0
- data/vendor/libgit2/src/runtime.h +62 -0
- data/vendor/libgit2/src/{refdb_fs.h → settings.h} +3 -11
- data/vendor/libgit2/src/signature.c +6 -5
- data/vendor/libgit2/src/sortedcache.c +2 -3
- data/vendor/libgit2/src/sortedcache.h +10 -8
- data/vendor/libgit2/src/stash.c +7 -3
- data/vendor/libgit2/src/status.c +9 -4
- data/vendor/libgit2/src/strarray.c +64 -0
- data/vendor/libgit2/src/streams/mbedtls.c +14 -17
- data/vendor/libgit2/src/streams/mbedtls.h +1 -1
- data/vendor/libgit2/src/streams/openssl.c +113 -207
- data/vendor/libgit2/src/streams/openssl.h +9 -1
- data/vendor/libgit2/src/streams/openssl_dynamic.c +309 -0
- data/vendor/libgit2/src/streams/openssl_dynamic.h +348 -0
- data/vendor/libgit2/src/streams/openssl_legacy.c +203 -0
- data/vendor/libgit2/src/streams/openssl_legacy.h +63 -0
- data/vendor/libgit2/src/streams/registry.c +10 -9
- data/vendor/libgit2/src/streams/socket.c +6 -2
- data/vendor/libgit2/src/streams/stransport.c +6 -3
- data/vendor/libgit2/src/streams/tls.c +5 -3
- data/vendor/libgit2/src/submodule.c +134 -66
- data/vendor/libgit2/src/submodule.h +9 -9
- data/vendor/libgit2/src/sysdir.c +8 -26
- data/vendor/libgit2/src/sysdir.h +0 -11
- data/vendor/libgit2/src/tag.c +49 -11
- data/vendor/libgit2/src/thread.c +140 -0
- data/vendor/libgit2/src/thread.h +479 -0
- data/vendor/libgit2/src/threadstate.c +83 -0
- data/vendor/libgit2/src/threadstate.h +24 -0
- data/vendor/libgit2/src/trace.c +2 -2
- data/vendor/libgit2/src/trace.h +17 -13
- data/vendor/libgit2/src/transaction.c +21 -9
- data/vendor/libgit2/src/transport.c +3 -3
- data/vendor/libgit2/src/transports/auth.c +1 -1
- data/vendor/libgit2/src/transports/auth_negotiate.c +11 -4
- data/vendor/libgit2/src/transports/auth_ntlm.c +10 -6
- data/vendor/libgit2/src/transports/credential.c +17 -7
- data/vendor/libgit2/src/transports/credential_helpers.c +2 -0
- data/vendor/libgit2/src/transports/git.c +1 -3
- data/vendor/libgit2/src/transports/http.c +19 -17
- data/vendor/libgit2/src/transports/http.h +1 -0
- data/vendor/libgit2/src/transports/httpclient.c +84 -42
- data/vendor/libgit2/src/transports/httpclient.h +1 -1
- data/vendor/libgit2/src/transports/local.c +5 -5
- data/vendor/libgit2/src/transports/smart.c +14 -9
- data/vendor/libgit2/src/transports/smart.h +1 -1
- data/vendor/libgit2/src/transports/smart_protocol.c +11 -5
- data/vendor/libgit2/src/transports/ssh.c +51 -17
- data/vendor/libgit2/src/transports/winhttp.c +156 -88
- data/vendor/libgit2/src/tree.c +100 -77
- data/vendor/libgit2/src/tree.h +1 -0
- data/vendor/libgit2/src/tsort.c +0 -2
- data/vendor/libgit2/src/unix/map.c +3 -1
- data/vendor/libgit2/src/unix/posix.h +16 -1
- data/vendor/libgit2/src/unix/pthread.h +2 -1
- data/vendor/libgit2/src/utf8.c +150 -0
- data/vendor/libgit2/src/utf8.h +52 -0
- data/vendor/libgit2/src/util.c +74 -183
- data/vendor/libgit2/src/util.h +33 -39
- data/vendor/libgit2/src/vector.c +23 -19
- data/vendor/libgit2/src/vector.h +4 -2
- data/vendor/libgit2/src/win32/findfile.c +4 -2
- data/vendor/libgit2/src/win32/git2.rc +18 -3
- data/vendor/libgit2/src/win32/map.c +1 -1
- data/vendor/libgit2/src/win32/msvc-compat.h +9 -1
- data/vendor/libgit2/src/win32/path_w32.c +23 -25
- data/vendor/libgit2/src/win32/path_w32.h +0 -1
- data/vendor/libgit2/src/win32/posix_w32.c +77 -1
- data/vendor/libgit2/src/win32/precompiled.h +0 -1
- data/vendor/libgit2/src/win32/reparse.h +4 -4
- data/vendor/libgit2/src/win32/thread.c +24 -15
- data/vendor/libgit2/src/win32/thread.h +1 -1
- data/vendor/libgit2/src/win32/w32_buffer.c +3 -3
- data/vendor/libgit2/src/win32/w32_common.h +18 -9
- data/vendor/libgit2/src/win32/{w32_crtdbg_stacktrace.c → w32_leakcheck.c} +269 -33
- data/vendor/libgit2/src/win32/w32_leakcheck.h +222 -0
- data/vendor/libgit2/src/win32/w32_util.h +6 -6
- data/vendor/libgit2/src/worktree.c +37 -15
- data/vendor/libgit2/src/zstream.c +1 -1
- metadata +56 -38
- data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +0 -29
- data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +0 -96
- data/vendor/libgit2/src/allocators/win32_crtdbg.c +0 -118
- data/vendor/libgit2/src/buf_text.c +0 -316
- data/vendor/libgit2/src/buf_text.h +0 -122
- data/vendor/libgit2/src/global.c +0 -361
- data/vendor/libgit2/src/global.h +0 -41
- data/vendor/libgit2/src/thread-utils.c +0 -58
- data/vendor/libgit2/src/thread-utils.h +0 -246
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -127
- data/vendor/libgit2/src/win32/w32_stack.c +0 -188
- data/vendor/libgit2/src/win32/w32_stack.h +0 -140
|
@@ -86,6 +86,7 @@ static struct map_data _configmaps[] = {
|
|
|
86
86
|
{"core.protecthfs", NULL, 0, GIT_PROTECTHFS_DEFAULT },
|
|
87
87
|
{"core.protectntfs", NULL, 0, GIT_PROTECTNTFS_DEFAULT },
|
|
88
88
|
{"core.fsyncobjectfiles", NULL, 0, GIT_FSYNCOBJECTFILES_DEFAULT },
|
|
89
|
+
{"core.longpaths", NULL, 0, GIT_LONGPATHS_DEFAULT },
|
|
89
90
|
};
|
|
90
91
|
|
|
91
92
|
int git_config__configmap_lookup(int *out, git_config *config, git_configmap_item item)
|
|
@@ -111,17 +112,21 @@ int git_config__configmap_lookup(int *out, git_config *config, git_configmap_ite
|
|
|
111
112
|
|
|
112
113
|
int git_repository__configmap_lookup(int *out, git_repository *repo, git_configmap_item item)
|
|
113
114
|
{
|
|
114
|
-
|
|
115
|
+
intptr_t value = (intptr_t)git_atomic_load(repo->configmap_cache[(int)item]);
|
|
115
116
|
|
|
116
|
-
|
|
117
|
-
|
|
117
|
+
*out = (int)value;
|
|
118
|
+
|
|
119
|
+
if (value == GIT_CONFIGMAP_NOT_CACHED) {
|
|
118
120
|
git_config *config;
|
|
121
|
+
intptr_t oldval = value;
|
|
122
|
+
int error;
|
|
119
123
|
|
|
120
124
|
if ((error = git_repository_config__weakptr(&config, repo)) < 0 ||
|
|
121
125
|
(error = git_config__configmap_lookup(out, config, item)) < 0)
|
|
122
126
|
return error;
|
|
123
127
|
|
|
124
|
-
|
|
128
|
+
value = *out;
|
|
129
|
+
git_atomic_compare_and_swap(&repo->configmap_cache[(int)item], (void *)oldval, (void *)value);
|
|
125
130
|
}
|
|
126
131
|
|
|
127
132
|
return 0;
|
|
@@ -11,9 +11,13 @@ typedef struct config_entry_list {
|
|
|
11
11
|
struct config_entry_list *next;
|
|
12
12
|
struct config_entry_list *last;
|
|
13
13
|
git_config_entry *entry;
|
|
14
|
-
bool first;
|
|
15
14
|
} config_entry_list;
|
|
16
15
|
|
|
16
|
+
typedef struct {
|
|
17
|
+
git_config_entry *entry;
|
|
18
|
+
bool multivar;
|
|
19
|
+
} config_entry_map_head;
|
|
20
|
+
|
|
17
21
|
typedef struct config_entries_iterator {
|
|
18
22
|
git_config_iterator parent;
|
|
19
23
|
git_config_entries *entries;
|
|
@@ -102,14 +106,16 @@ void git_config_entries_incref(git_config_entries *entries)
|
|
|
102
106
|
static void config_entries_free(git_config_entries *entries)
|
|
103
107
|
{
|
|
104
108
|
config_entry_list *list = NULL, *next;
|
|
109
|
+
config_entry_map_head *head;
|
|
105
110
|
|
|
111
|
+
git_strmap_foreach_value(entries->map, head,
|
|
112
|
+
git__free((char *) head->entry->name); git__free(head)
|
|
113
|
+
);
|
|
106
114
|
git_strmap_free(entries->map);
|
|
107
115
|
|
|
108
116
|
list = entries->list;
|
|
109
117
|
while (list != NULL) {
|
|
110
118
|
next = list->next;
|
|
111
|
-
if (list->first)
|
|
112
|
-
git__free((char *) list->entry->name);
|
|
113
119
|
git__free((char *) list->entry->value);
|
|
114
120
|
git__free(list->entry);
|
|
115
121
|
git__free(list);
|
|
@@ -127,40 +133,42 @@ void git_config_entries_free(git_config_entries *entries)
|
|
|
127
133
|
|
|
128
134
|
int git_config_entries_append(git_config_entries *entries, git_config_entry *entry)
|
|
129
135
|
{
|
|
130
|
-
config_entry_list *
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
*/
|
|
142
|
-
if ((existing = git_strmap_get(entries->map, entry->name)) != NULL) {
|
|
136
|
+
config_entry_list *list_head;
|
|
137
|
+
config_entry_map_head *map_head;
|
|
138
|
+
|
|
139
|
+
if ((map_head = git_strmap_get(entries->map, entry->name)) != NULL) {
|
|
140
|
+
map_head->multivar = true;
|
|
141
|
+
/*
|
|
142
|
+
* This is a micro-optimization for configuration files
|
|
143
|
+
* with a lot of same keys. As for multivars the entry's
|
|
144
|
+
* key will be the same for all entries, we can just free
|
|
145
|
+
* all except the first entry's name and just re-use it.
|
|
146
|
+
*/
|
|
143
147
|
git__free((char *) entry->name);
|
|
144
|
-
entry->name =
|
|
148
|
+
entry->name = map_head->entry->name;
|
|
145
149
|
} else {
|
|
146
|
-
|
|
150
|
+
map_head = git__calloc(1, sizeof(*map_head));
|
|
151
|
+
if ((git_strmap_set(entries->map, entry->name, map_head)) < 0)
|
|
152
|
+
return -1;
|
|
147
153
|
}
|
|
154
|
+
map_head->entry = entry;
|
|
155
|
+
|
|
156
|
+
list_head = git__calloc(1, sizeof(config_entry_list));
|
|
157
|
+
GIT_ERROR_CHECK_ALLOC(list_head);
|
|
158
|
+
list_head->entry = entry;
|
|
148
159
|
|
|
149
160
|
if (entries->list)
|
|
150
|
-
entries->list->last->next =
|
|
161
|
+
entries->list->last->next = list_head;
|
|
151
162
|
else
|
|
152
|
-
entries->list =
|
|
153
|
-
entries->list->last =
|
|
154
|
-
|
|
155
|
-
if (git_strmap_set(entries->map, entry->name, head) < 0)
|
|
156
|
-
return -1;
|
|
163
|
+
entries->list = list_head;
|
|
164
|
+
entries->list->last = list_head;
|
|
157
165
|
|
|
158
166
|
return 0;
|
|
159
167
|
}
|
|
160
168
|
|
|
161
169
|
int git_config_entries_get(git_config_entry **out, git_config_entries *entries, const char *key)
|
|
162
170
|
{
|
|
163
|
-
|
|
171
|
+
config_entry_map_head *entry;
|
|
164
172
|
if ((entry = git_strmap_get(entries->map, key)) == NULL)
|
|
165
173
|
return GIT_ENOTFOUND;
|
|
166
174
|
*out = entry->entry;
|
|
@@ -169,12 +177,12 @@ int git_config_entries_get(git_config_entry **out, git_config_entries *entries,
|
|
|
169
177
|
|
|
170
178
|
int git_config_entries_get_unique(git_config_entry **out, git_config_entries *entries, const char *key)
|
|
171
179
|
{
|
|
172
|
-
|
|
180
|
+
config_entry_map_head *entry;
|
|
173
181
|
|
|
174
182
|
if ((entry = git_strmap_get(entries->map, key)) == NULL)
|
|
175
183
|
return GIT_ENOTFOUND;
|
|
176
184
|
|
|
177
|
-
if (
|
|
185
|
+
if (entry->multivar) {
|
|
178
186
|
git_error_set(GIT_ERROR_CONFIG, "entry is not unique due to being a multivar");
|
|
179
187
|
return -1;
|
|
180
188
|
}
|
|
@@ -111,6 +111,15 @@ static int config_file_open(git_config_backend *cfg, git_config_level_t level, c
|
|
|
111
111
|
if (!git_path_exists(b->file.path))
|
|
112
112
|
return 0;
|
|
113
113
|
|
|
114
|
+
/*
|
|
115
|
+
* git silently ignores configuration files that are not
|
|
116
|
+
* readable. We emulate that behavior. This is particularly
|
|
117
|
+
* important for sandboxed applications on macOS where the
|
|
118
|
+
* git configuration files may not be readable.
|
|
119
|
+
*/
|
|
120
|
+
if (p_access(b->file.path, R_OK) < 0)
|
|
121
|
+
return GIT_ENOTFOUND;
|
|
122
|
+
|
|
114
123
|
if (res < 0 || (res = config_file_read(b->entries, repo, &b->file, level, 0)) < 0) {
|
|
115
124
|
git_config_entries_free(b->entries);
|
|
116
125
|
b->entries = NULL;
|
|
@@ -155,23 +164,27 @@ out:
|
|
|
155
164
|
return error;
|
|
156
165
|
}
|
|
157
166
|
|
|
167
|
+
static void config_file_clear_includes(config_file_backend* cfg)
|
|
168
|
+
{
|
|
169
|
+
config_file *include;
|
|
170
|
+
uint32_t i;
|
|
171
|
+
|
|
172
|
+
git_array_foreach(cfg->file.includes, i, include)
|
|
173
|
+
config_file_clear(include);
|
|
174
|
+
git_array_clear(cfg->file.includes);
|
|
175
|
+
}
|
|
176
|
+
|
|
158
177
|
static int config_file_set_entries(git_config_backend *cfg, git_config_entries *entries)
|
|
159
178
|
{
|
|
160
179
|
config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
|
|
161
180
|
git_config_entries *old = NULL;
|
|
162
|
-
config_file *include;
|
|
163
181
|
int error;
|
|
164
|
-
uint32_t i;
|
|
165
182
|
|
|
166
183
|
if (b->parent.readonly) {
|
|
167
184
|
git_error_set(GIT_ERROR_CONFIG, "this backend is read-only");
|
|
168
185
|
return -1;
|
|
169
186
|
}
|
|
170
187
|
|
|
171
|
-
git_array_foreach(b->file.includes, i, include)
|
|
172
|
-
config_file_clear(include);
|
|
173
|
-
git_array_clear(b->file.includes);
|
|
174
|
-
|
|
175
188
|
if ((error = git_mutex_lock(&b->values_mutex)) < 0) {
|
|
176
189
|
git_error_set(GIT_ERROR_OS, "failed to lock config backend");
|
|
177
190
|
goto out;
|
|
@@ -193,6 +206,8 @@ static int config_file_refresh_from_buffer(git_config_backend *cfg, const char *
|
|
|
193
206
|
git_config_entries *entries = NULL;
|
|
194
207
|
int error;
|
|
195
208
|
|
|
209
|
+
config_file_clear_includes(b);
|
|
210
|
+
|
|
196
211
|
if ((error = git_config_entries_new(&entries)) < 0 ||
|
|
197
212
|
(error = config_file_read_buffer(entries, b->repo, &b->file,
|
|
198
213
|
b->level, 0, buf, buflen)) < 0 ||
|
|
@@ -220,6 +235,8 @@ static int config_file_refresh(git_config_backend *cfg)
|
|
|
220
235
|
if (!modified)
|
|
221
236
|
return 0;
|
|
222
237
|
|
|
238
|
+
config_file_clear_includes(b);
|
|
239
|
+
|
|
223
240
|
if ((error = git_config_entries_new(&entries)) < 0 ||
|
|
224
241
|
(error = config_file_read(entries, b->repo, &b->file, b->level, 0)) < 0 ||
|
|
225
242
|
(error = config_file_set_entries(cfg, entries)) < 0)
|
|
@@ -356,7 +373,7 @@ static int config_file_set_multivar(
|
|
|
356
373
|
int result;
|
|
357
374
|
char *key;
|
|
358
375
|
|
|
359
|
-
|
|
376
|
+
GIT_ASSERT_ARG(regexp);
|
|
360
377
|
|
|
361
378
|
if ((result = git_config__normalize_name(name, &key)) < 0)
|
|
362
379
|
return result;
|
|
@@ -522,7 +539,7 @@ static char *escape_value(const char *ptr)
|
|
|
522
539
|
size_t len;
|
|
523
540
|
const char *esc;
|
|
524
541
|
|
|
525
|
-
|
|
542
|
+
GIT_ASSERT_ARG_WITH_RETVAL(ptr, NULL);
|
|
526
543
|
|
|
527
544
|
len = strlen(ptr);
|
|
528
545
|
if (!len)
|
|
@@ -7,8 +7,6 @@
|
|
|
7
7
|
|
|
8
8
|
#include "config_parse.h"
|
|
9
9
|
|
|
10
|
-
#include "buf_text.h"
|
|
11
|
-
|
|
12
10
|
#include <ctype.h>
|
|
13
11
|
|
|
14
12
|
const char *git_config_escapes = "ntb\"\\";
|
|
@@ -187,7 +185,7 @@ static int parse_section_header(git_config_parser *reader, char **section_out)
|
|
|
187
185
|
|
|
188
186
|
/* Make sure we were given a section header */
|
|
189
187
|
c = line[pos++];
|
|
190
|
-
|
|
188
|
+
GIT_ASSERT(c == '[');
|
|
191
189
|
|
|
192
190
|
c = line[pos++];
|
|
193
191
|
|
|
@@ -230,10 +228,10 @@ fail_parse:
|
|
|
230
228
|
static int skip_bom(git_parse_ctx *parser)
|
|
231
229
|
{
|
|
232
230
|
git_buf buf = GIT_BUF_INIT_CONST(parser->content, parser->content_len);
|
|
233
|
-
|
|
234
|
-
int bom_offset =
|
|
231
|
+
git_buf_bom_t bom;
|
|
232
|
+
int bom_offset = git_buf_detect_bom(&bom, &buf);
|
|
235
233
|
|
|
236
|
-
if (bom ==
|
|
234
|
+
if (bom == GIT_BUF_BOM_UTF8)
|
|
237
235
|
git_parse_advance_chars(parser, bom_offset);
|
|
238
236
|
|
|
239
237
|
/* TODO: reference implementation is pretty stupid with BoM */
|
|
@@ -451,7 +449,7 @@ static int parse_variable(git_config_parser *reader, char **var_name, char **var
|
|
|
451
449
|
git_buf_attach(&multi_value, value, 0);
|
|
452
450
|
value = NULL;
|
|
453
451
|
|
|
454
|
-
if (parse_multiline_variable(reader, &multi_value, quote_count) < 0 ||
|
|
452
|
+
if (parse_multiline_variable(reader, &multi_value, quote_count % 2) < 0 ||
|
|
455
453
|
git_buf_oom(&multi_value)) {
|
|
456
454
|
error = -1;
|
|
457
455
|
git_buf_dispose(&multi_value);
|
data/vendor/libgit2/src/crlf.c
CHANGED
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
#include "futils.h"
|
|
16
16
|
#include "hash.h"
|
|
17
17
|
#include "filter.h"
|
|
18
|
-
#include "buf_text.h"
|
|
19
18
|
#include "repository.h"
|
|
20
19
|
|
|
21
20
|
typedef enum {
|
|
@@ -219,7 +218,7 @@ static int crlf_apply_to_odb(
|
|
|
219
218
|
if (ca->crlf_action == GIT_CRLF_BINARY || !git_buf_len(from))
|
|
220
219
|
return GIT_PASSTHROUGH;
|
|
221
220
|
|
|
222
|
-
is_binary =
|
|
221
|
+
is_binary = git_buf_gather_text_stats(&stats, from, false);
|
|
223
222
|
|
|
224
223
|
/* Heuristics to see if we can skip the conversion.
|
|
225
224
|
* Straight from Core Git.
|
|
@@ -247,7 +246,7 @@ static int crlf_apply_to_odb(
|
|
|
247
246
|
return GIT_PASSTHROUGH;
|
|
248
247
|
|
|
249
248
|
/* Actually drop the carriage returns */
|
|
250
|
-
return
|
|
249
|
+
return git_buf_crlf_to_lf(to, from);
|
|
251
250
|
}
|
|
252
251
|
|
|
253
252
|
static int crlf_apply_to_workdir(
|
|
@@ -262,7 +261,7 @@ static int crlf_apply_to_workdir(
|
|
|
262
261
|
if (git_buf_len(from) == 0 || output_eol(ca) != GIT_EOL_CRLF)
|
|
263
262
|
return GIT_PASSTHROUGH;
|
|
264
263
|
|
|
265
|
-
is_binary =
|
|
264
|
+
is_binary = git_buf_gather_text_stats(&stats, from, false);
|
|
266
265
|
|
|
267
266
|
/* If there are no LFs, or all LFs are part of a CRLF, nothing to do */
|
|
268
267
|
if (stats.lf == 0 || stats.lf == stats.crlf)
|
|
@@ -281,7 +280,7 @@ static int crlf_apply_to_workdir(
|
|
|
281
280
|
return GIT_PASSTHROUGH;
|
|
282
281
|
}
|
|
283
282
|
|
|
284
|
-
return
|
|
283
|
+
return git_buf_lf_to_crlf(to, from);
|
|
285
284
|
}
|
|
286
285
|
|
|
287
286
|
static int convert_attrs(
|
|
@@ -387,6 +386,17 @@ static int crlf_apply(
|
|
|
387
386
|
return crlf_apply_to_odb(*payload, to, from, src);
|
|
388
387
|
}
|
|
389
388
|
|
|
389
|
+
static int crlf_stream(
|
|
390
|
+
git_writestream **out,
|
|
391
|
+
git_filter *self,
|
|
392
|
+
void **payload,
|
|
393
|
+
const git_filter_source *src,
|
|
394
|
+
git_writestream *next)
|
|
395
|
+
{
|
|
396
|
+
return git_filter_buffered_stream_new(out,
|
|
397
|
+
self, crlf_apply, NULL, payload, src, next);
|
|
398
|
+
}
|
|
399
|
+
|
|
390
400
|
static void crlf_cleanup(
|
|
391
401
|
git_filter *self,
|
|
392
402
|
void *payload)
|
|
@@ -406,7 +416,7 @@ git_filter *git_crlf_filter_new(void)
|
|
|
406
416
|
f->f.initialize = NULL;
|
|
407
417
|
f->f.shutdown = git_filter_free;
|
|
408
418
|
f->f.check = crlf_check;
|
|
409
|
-
f->f.
|
|
419
|
+
f->f.stream = crlf_stream;
|
|
410
420
|
f->f.cleanup = crlf_cleanup;
|
|
411
421
|
|
|
412
422
|
return (git_filter *)f;
|
data/vendor/libgit2/src/date.c
CHANGED
|
@@ -204,7 +204,7 @@ static int is_date(int year, int month, int day, struct tm *now_tm, time_t now,
|
|
|
204
204
|
if (month > 0 && month < 13 && day > 0 && day < 32) {
|
|
205
205
|
struct tm check = *tm;
|
|
206
206
|
struct tm *r = (now_tm ? &check : tm);
|
|
207
|
-
|
|
207
|
+
git_time_t specified;
|
|
208
208
|
|
|
209
209
|
r->tm_mon = month - 1;
|
|
210
210
|
r->tm_mday = day;
|
|
@@ -722,7 +722,7 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm
|
|
|
722
722
|
while (tl->type) {
|
|
723
723
|
size_t len = strlen(tl->type);
|
|
724
724
|
if (match_string(date, tl->type) >= len-1) {
|
|
725
|
-
update_tm(tm, now, tl->length * *num);
|
|
725
|
+
update_tm(tm, now, tl->length * (unsigned long)*num);
|
|
726
726
|
*num = 0;
|
|
727
727
|
*touched = 1;
|
|
728
728
|
return end;
|
|
@@ -881,7 +881,8 @@ int git__date_rfc2822_fmt(char *out, size_t len, const git_time *date)
|
|
|
881
881
|
struct tm gmt;
|
|
882
882
|
time_t t;
|
|
883
883
|
|
|
884
|
-
|
|
884
|
+
GIT_ASSERT_ARG(out);
|
|
885
|
+
GIT_ASSERT_ARG(date);
|
|
885
886
|
|
|
886
887
|
t = (time_t) (date->time + date->offset * 60);
|
|
887
888
|
|
data/vendor/libgit2/src/delta.c
CHANGED
|
@@ -655,7 +655,8 @@ int git_describe_commit(
|
|
|
655
655
|
int error = -1;
|
|
656
656
|
git_describe_options normalized;
|
|
657
657
|
|
|
658
|
-
|
|
658
|
+
GIT_ASSERT_ARG(result);
|
|
659
|
+
GIT_ASSERT_ARG(committish);
|
|
659
660
|
|
|
660
661
|
data.result = git__calloc(1, sizeof(git_describe_result));
|
|
661
662
|
GIT_ERROR_CHECK_ALLOC(data.result);
|
|
@@ -685,7 +686,7 @@ int git_describe_commit(
|
|
|
685
686
|
get_name, &data)) < 0)
|
|
686
687
|
goto cleanup;
|
|
687
688
|
|
|
688
|
-
if (git_oidmap_size(data.names) == 0 && !
|
|
689
|
+
if (git_oidmap_size(data.names) == 0 && !normalized.show_commit_oid_as_fallback) {
|
|
689
690
|
git_error_set(GIT_ERROR_DESCRIBE, "cannot describe - "
|
|
690
691
|
"no reference found, cannot describe anything.");
|
|
691
692
|
error = -1;
|
|
@@ -775,12 +776,14 @@ int git_describe_format(git_buf *out, const git_describe_result *result, const g
|
|
|
775
776
|
struct commit_name *name;
|
|
776
777
|
git_describe_format_options opts;
|
|
777
778
|
|
|
778
|
-
|
|
779
|
+
GIT_ASSERT_ARG(out);
|
|
780
|
+
GIT_ASSERT_ARG(result);
|
|
779
781
|
|
|
780
782
|
GIT_ERROR_CHECK_VERSION(given, GIT_DESCRIBE_FORMAT_OPTIONS_VERSION, "git_describe_format_options");
|
|
781
783
|
normalize_format_options(&opts, given);
|
|
782
784
|
|
|
783
|
-
git_buf_sanitize(out)
|
|
785
|
+
if ((error = git_buf_sanitize(out)) < 0)
|
|
786
|
+
return error;
|
|
784
787
|
|
|
785
788
|
|
|
786
789
|
if (opts.always_use_long_format && opts.abbreviated_size == 0) {
|
|
@@ -876,10 +879,12 @@ int git_describe_options_init(git_describe_options *opts, unsigned int version)
|
|
|
876
879
|
return 0;
|
|
877
880
|
}
|
|
878
881
|
|
|
882
|
+
#ifndef GIT_DEPRECATE_HARD
|
|
879
883
|
int git_describe_init_options(git_describe_options *opts, unsigned int version)
|
|
880
884
|
{
|
|
881
885
|
return git_describe_options_init(opts, version);
|
|
882
886
|
}
|
|
887
|
+
#endif
|
|
883
888
|
|
|
884
889
|
int git_describe_format_options_init(git_describe_format_options *opts, unsigned int version)
|
|
885
890
|
{
|
|
@@ -888,7 +893,9 @@ int git_describe_format_options_init(git_describe_format_options *opts, unsigned
|
|
|
888
893
|
return 0;
|
|
889
894
|
}
|
|
890
895
|
|
|
896
|
+
#ifndef GIT_DEPRECATE_HARD
|
|
891
897
|
int git_describe_init_format_options(git_describe_format_options *opts, unsigned int version)
|
|
892
898
|
{
|
|
893
899
|
return git_describe_format_options_init(opts, version);
|
|
894
900
|
}
|
|
901
|
+
#endif
|