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/idxmap.c
CHANGED
|
@@ -7,127 +7,173 @@
|
|
|
7
7
|
|
|
8
8
|
#include "idxmap.h"
|
|
9
9
|
|
|
10
|
+
#define kmalloc git__malloc
|
|
11
|
+
#define kcalloc git__calloc
|
|
12
|
+
#define krealloc git__realloc
|
|
13
|
+
#define kreallocarray git__reallocarray
|
|
14
|
+
#define kfree git__free
|
|
15
|
+
#include "khash.h"
|
|
16
|
+
|
|
17
|
+
__KHASH_TYPE(idx, const git_index_entry *, git_index_entry *)
|
|
18
|
+
__KHASH_TYPE(idxicase, const git_index_entry *, git_index_entry *)
|
|
19
|
+
|
|
10
20
|
/* This is __ac_X31_hash_string but with tolower and it takes the entry's stage into account */
|
|
11
21
|
static kh_inline khint_t idxentry_hash(const git_index_entry *e)
|
|
12
22
|
{
|
|
13
23
|
const char *s = e->path;
|
|
14
24
|
khint_t h = (khint_t)git__tolower(*s);
|
|
15
25
|
if (h) for (++s ; *s; ++s) h = (h << 5) - h + (khint_t)git__tolower(*s);
|
|
16
|
-
return h +
|
|
26
|
+
return h + GIT_INDEX_ENTRY_STAGE(e);
|
|
17
27
|
}
|
|
18
28
|
|
|
19
|
-
#define idxentry_equal(a, b) (
|
|
20
|
-
#define idxentry_icase_equal(a, b) (
|
|
29
|
+
#define idxentry_equal(a, b) (GIT_INDEX_ENTRY_STAGE(a) == GIT_INDEX_ENTRY_STAGE(b) && strcmp(a->path, b->path) == 0)
|
|
30
|
+
#define idxentry_icase_equal(a, b) (GIT_INDEX_ENTRY_STAGE(a) == GIT_INDEX_ENTRY_STAGE(b) && strcasecmp(a->path, b->path) == 0)
|
|
21
31
|
|
|
22
32
|
__KHASH_IMPL(idx, static kh_inline, const git_index_entry *, git_index_entry *, 1, idxentry_hash, idxentry_equal)
|
|
23
33
|
__KHASH_IMPL(idxicase, static kh_inline, const git_index_entry *, git_index_entry *, 1, idxentry_hash, idxentry_icase_equal)
|
|
24
34
|
|
|
25
|
-
int
|
|
35
|
+
int git_idxmap_new(git_idxmap **out)
|
|
26
36
|
{
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
return -1;
|
|
30
|
-
}
|
|
37
|
+
*out = kh_init(idx);
|
|
38
|
+
GIT_ERROR_CHECK_ALLOC(*out);
|
|
31
39
|
|
|
32
40
|
return 0;
|
|
33
41
|
}
|
|
34
42
|
|
|
35
|
-
int
|
|
43
|
+
int git_idxmap_icase_new(git_idxmap_icase **out)
|
|
36
44
|
{
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
return -1;
|
|
40
|
-
}
|
|
45
|
+
*out = kh_init(idxicase);
|
|
46
|
+
GIT_ERROR_CHECK_ALLOC(*out);
|
|
41
47
|
|
|
42
48
|
return 0;
|
|
43
49
|
}
|
|
44
50
|
|
|
45
|
-
void
|
|
51
|
+
void git_idxmap_free(git_idxmap *map)
|
|
46
52
|
{
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
if ((*rval) >= 0) {
|
|
50
|
-
if ((*rval) == 0)
|
|
51
|
-
kh_key(map, idx) = key;
|
|
52
|
-
kh_val(map, idx) = value;
|
|
53
|
-
}
|
|
53
|
+
kh_destroy(idx, map);
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
void
|
|
56
|
+
void git_idxmap_icase_free(git_idxmap_icase *map)
|
|
57
57
|
{
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
if ((*rval) >= 0) {
|
|
61
|
-
if ((*rval) == 0)
|
|
62
|
-
kh_key(map, idx) = key;
|
|
63
|
-
kh_val(map, idx) = value;
|
|
64
|
-
}
|
|
58
|
+
kh_destroy(idxicase, map);
|
|
65
59
|
}
|
|
66
60
|
|
|
67
|
-
|
|
61
|
+
void git_idxmap_clear(git_idxmap *map)
|
|
68
62
|
{
|
|
69
|
-
|
|
63
|
+
kh_clear(idx, map);
|
|
70
64
|
}
|
|
71
65
|
|
|
72
|
-
|
|
66
|
+
void git_idxmap_icase_clear(git_idxmap_icase *map)
|
|
73
67
|
{
|
|
74
|
-
|
|
68
|
+
kh_clear(idxicase, map);
|
|
75
69
|
}
|
|
76
70
|
|
|
77
|
-
|
|
71
|
+
int git_idxmap_resize(git_idxmap *map, size_t size)
|
|
78
72
|
{
|
|
79
|
-
|
|
73
|
+
if (!git__is_uint32(size) ||
|
|
74
|
+
kh_resize(idx, map, (khiter_t)size) < 0) {
|
|
75
|
+
git_error_set_oom();
|
|
76
|
+
return -1;
|
|
77
|
+
}
|
|
78
|
+
return 0;
|
|
80
79
|
}
|
|
81
80
|
|
|
82
|
-
int
|
|
81
|
+
int git_idxmap_icase_resize(git_idxmap_icase *map, size_t size)
|
|
83
82
|
{
|
|
84
|
-
|
|
83
|
+
if (!git__is_uint32(size) ||
|
|
84
|
+
kh_resize(idxicase, map, (khiter_t)size) < 0) {
|
|
85
|
+
git_error_set_oom();
|
|
86
|
+
return -1;
|
|
87
|
+
}
|
|
88
|
+
return 0;
|
|
85
89
|
}
|
|
86
90
|
|
|
87
|
-
|
|
91
|
+
void *git_idxmap_get(git_idxmap *map, const git_index_entry *key)
|
|
88
92
|
{
|
|
89
|
-
|
|
93
|
+
size_t idx = kh_get(idx, map, key);
|
|
94
|
+
if (idx == kh_end(map) || !kh_exist(map, idx))
|
|
95
|
+
return NULL;
|
|
96
|
+
return kh_val(map, idx);
|
|
90
97
|
}
|
|
91
98
|
|
|
92
|
-
|
|
99
|
+
int git_idxmap_set(git_idxmap *map, const git_index_entry *key, void *value)
|
|
93
100
|
{
|
|
94
|
-
|
|
95
|
-
|
|
101
|
+
size_t idx;
|
|
102
|
+
int rval;
|
|
96
103
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
104
|
+
idx = kh_put(idx, map, key, &rval);
|
|
105
|
+
if (rval < 0)
|
|
106
|
+
return -1;
|
|
107
|
+
|
|
108
|
+
if (rval == 0)
|
|
109
|
+
kh_key(map, idx) = key;
|
|
110
|
+
|
|
111
|
+
kh_val(map, idx) = value;
|
|
112
|
+
|
|
113
|
+
return 0;
|
|
100
114
|
}
|
|
101
115
|
|
|
102
|
-
|
|
116
|
+
int git_idxmap_icase_set(git_idxmap_icase *map, const git_index_entry *key, void *value)
|
|
103
117
|
{
|
|
104
|
-
|
|
118
|
+
size_t idx;
|
|
119
|
+
int rval;
|
|
120
|
+
|
|
121
|
+
idx = kh_put(idxicase, map, key, &rval);
|
|
122
|
+
if (rval < 0)
|
|
123
|
+
return -1;
|
|
124
|
+
|
|
125
|
+
if (rval == 0)
|
|
126
|
+
kh_key(map, idx) = key;
|
|
127
|
+
|
|
128
|
+
kh_val(map, idx) = value;
|
|
129
|
+
|
|
130
|
+
return 0;
|
|
105
131
|
}
|
|
106
132
|
|
|
107
|
-
void
|
|
133
|
+
void *git_idxmap_icase_get(git_idxmap_icase *map, const git_index_entry *key)
|
|
108
134
|
{
|
|
109
|
-
|
|
135
|
+
size_t idx = kh_get(idxicase, map, key);
|
|
136
|
+
if (idx == kh_end(map) || !kh_exist(map, idx))
|
|
137
|
+
return NULL;
|
|
138
|
+
return kh_val(map, idx);
|
|
110
139
|
}
|
|
111
140
|
|
|
112
|
-
void
|
|
141
|
+
void git_idxmap_insert(git_idxmap *map, const git_index_entry *key, void *value, int *rval)
|
|
113
142
|
{
|
|
114
|
-
|
|
143
|
+
khiter_t idx = kh_put(idx, map, key, rval);
|
|
144
|
+
|
|
145
|
+
if ((*rval) >= 0) {
|
|
146
|
+
if ((*rval) == 0)
|
|
147
|
+
kh_key(map, idx) = key;
|
|
148
|
+
kh_val(map, idx) = value;
|
|
149
|
+
}
|
|
115
150
|
}
|
|
116
151
|
|
|
117
|
-
void
|
|
152
|
+
void git_idxmap_icase_insert(git_idxmap_icase *map, const git_index_entry *key, void *value, int *rval)
|
|
118
153
|
{
|
|
119
|
-
|
|
154
|
+
khiter_t idx = kh_put(idxicase, map, key, rval);
|
|
155
|
+
|
|
156
|
+
if ((*rval) >= 0) {
|
|
157
|
+
if ((*rval) == 0)
|
|
158
|
+
kh_key(map, idx) = key;
|
|
159
|
+
kh_val(map, idx) = value;
|
|
160
|
+
}
|
|
120
161
|
}
|
|
121
162
|
|
|
122
|
-
|
|
163
|
+
int git_idxmap_delete(git_idxmap *map, const git_index_entry *key)
|
|
123
164
|
{
|
|
124
|
-
khiter_t idx =
|
|
125
|
-
if (
|
|
126
|
-
|
|
165
|
+
khiter_t idx = kh_get(idx, map, key);
|
|
166
|
+
if (idx == kh_end(map))
|
|
167
|
+
return GIT_ENOTFOUND;
|
|
168
|
+
kh_del(idx, map, idx);
|
|
169
|
+
return 0;
|
|
127
170
|
}
|
|
128
|
-
|
|
171
|
+
|
|
172
|
+
int git_idxmap_icase_delete(git_idxmap_icase *map, const git_index_entry *key)
|
|
129
173
|
{
|
|
130
|
-
khiter_t idx =
|
|
131
|
-
if (
|
|
132
|
-
|
|
174
|
+
khiter_t idx = kh_get(idxicase, map, key);
|
|
175
|
+
if (idx == kh_end(map))
|
|
176
|
+
return GIT_ENOTFOUND;
|
|
177
|
+
kh_del(idxicase, map, idx);
|
|
178
|
+
return 0;
|
|
133
179
|
}
|
data/vendor/libgit2/src/idxmap.h
CHANGED
|
@@ -9,47 +9,169 @@
|
|
|
9
9
|
|
|
10
10
|
#include "common.h"
|
|
11
11
|
|
|
12
|
-
#include <ctype.h>
|
|
13
12
|
#include "git2/index.h"
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
#define kfree git__free
|
|
20
|
-
#include "khash.h"
|
|
14
|
+
/** A map with `git_index_entry`s as key. */
|
|
15
|
+
typedef struct kh_idx_s git_idxmap;
|
|
16
|
+
/** A map with case-insensitive `git_index_entry`s as key */
|
|
17
|
+
typedef struct kh_idxicase_s git_idxmap_icase;
|
|
21
18
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Allocate a new index entry map.
|
|
21
|
+
*
|
|
22
|
+
* @param out Pointer to the map that shall be allocated.
|
|
23
|
+
* @return 0 on success, an error code if allocation has failed.
|
|
24
|
+
*/
|
|
25
|
+
int git_idxmap_new(git_idxmap **out);
|
|
27
26
|
|
|
28
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Allocate a new case-insensitive index entry map.
|
|
29
|
+
*
|
|
30
|
+
* @param out Pointer to the map that shall be allocated.
|
|
31
|
+
* @return 0 on success, an error code if allocation has failed.
|
|
32
|
+
*/
|
|
33
|
+
int git_idxmap_icase_new(git_idxmap_icase **out);
|
|
29
34
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Free memory associated with the map.
|
|
37
|
+
*
|
|
38
|
+
* Note that this function will _not_ free values added to this
|
|
39
|
+
* map.
|
|
40
|
+
*
|
|
41
|
+
* @param map Pointer to the map that is to be free'd. May be
|
|
42
|
+
* `NULL`.
|
|
43
|
+
*/
|
|
44
|
+
void git_idxmap_free(git_idxmap *map);
|
|
34
45
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
46
|
+
/**
|
|
47
|
+
* Free memory associated with the map.
|
|
48
|
+
*
|
|
49
|
+
* Note that this function will _not_ free values added to this
|
|
50
|
+
* map.
|
|
51
|
+
*
|
|
52
|
+
* @param map Pointer to the map that is to be free'd. May be
|
|
53
|
+
* `NULL`.
|
|
54
|
+
*/
|
|
55
|
+
void git_idxmap_icase_free(git_idxmap_icase *map);
|
|
40
56
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
57
|
+
/**
|
|
58
|
+
* Clear all entries from the map.
|
|
59
|
+
*
|
|
60
|
+
* This function will remove all entries from the associated map.
|
|
61
|
+
* Memory associated with it will not be released, though.
|
|
62
|
+
*
|
|
63
|
+
* @param map Pointer to the map that shall be cleared. May be
|
|
64
|
+
* `NULL`.
|
|
65
|
+
*/
|
|
44
66
|
void git_idxmap_clear(git_idxmap *map);
|
|
45
67
|
|
|
46
|
-
|
|
47
|
-
|
|
68
|
+
/**
|
|
69
|
+
* Clear all entries from the map.
|
|
70
|
+
*
|
|
71
|
+
* This function will remove all entries from the associated map.
|
|
72
|
+
* Memory associated with it will not be released, though.
|
|
73
|
+
*
|
|
74
|
+
* @param map Pointer to the map that shall be cleared. May be
|
|
75
|
+
* `NULL`.
|
|
76
|
+
*/
|
|
77
|
+
void git_idxmap_icase_clear(git_idxmap_icase *map);
|
|
48
78
|
|
|
49
|
-
|
|
50
|
-
|
|
79
|
+
/**
|
|
80
|
+
* Resize the map by allocating more memory.
|
|
81
|
+
*
|
|
82
|
+
* @param map map that shall be resized
|
|
83
|
+
* @param size count of entries that the map shall hold
|
|
84
|
+
* @return `0` if the map was successfully resized, a negative
|
|
85
|
+
* error code otherwise
|
|
86
|
+
*/
|
|
87
|
+
int git_idxmap_resize(git_idxmap *map, size_t size);
|
|
51
88
|
|
|
52
|
-
|
|
53
|
-
|
|
89
|
+
/**
|
|
90
|
+
* Resize the map by allocating more memory.
|
|
91
|
+
*
|
|
92
|
+
* @param map map that shall be resized
|
|
93
|
+
* @param size count of entries that the map shall hold
|
|
94
|
+
* @return `0` if the map was successfully resized, a negative
|
|
95
|
+
* error code otherwise
|
|
96
|
+
*/
|
|
97
|
+
int git_idxmap_icase_resize(git_idxmap_icase *map, size_t size);
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Return value associated with the given key.
|
|
101
|
+
*
|
|
102
|
+
* @param map map to search key in
|
|
103
|
+
* @param key key to search for; the index entry will be searched
|
|
104
|
+
* for by its case-sensitive path
|
|
105
|
+
* @return value associated with the given key or NULL if the key was not found
|
|
106
|
+
*/
|
|
107
|
+
void *git_idxmap_get(git_idxmap *map, const git_index_entry *key);
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Return value associated with the given key.
|
|
111
|
+
*
|
|
112
|
+
* @param map map to search key in
|
|
113
|
+
* @param key key to search for; the index entry will be searched
|
|
114
|
+
* for by its case-insensitive path
|
|
115
|
+
* @return value associated with the given key or NULL if the key was not found
|
|
116
|
+
*/
|
|
117
|
+
void *git_idxmap_icase_get(git_idxmap_icase *map, const git_index_entry *key);
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Set the entry for key to value.
|
|
121
|
+
*
|
|
122
|
+
* If the map has no corresponding entry for the given key, a new
|
|
123
|
+
* entry will be created with the given value. If an entry exists
|
|
124
|
+
* already, its value will be updated to match the given value.
|
|
125
|
+
*
|
|
126
|
+
* @param map map to create new entry in
|
|
127
|
+
* @param key key to set
|
|
128
|
+
* @param value value to associate the key with; may be NULL
|
|
129
|
+
* @return zero if the key was successfully set, a negative error
|
|
130
|
+
* code otherwise
|
|
131
|
+
*/
|
|
132
|
+
int git_idxmap_set(git_idxmap *map, const git_index_entry *key, void *value);
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Set the entry for key to value.
|
|
136
|
+
*
|
|
137
|
+
* If the map has no corresponding entry for the given key, a new
|
|
138
|
+
* entry will be created with the given value. If an entry exists
|
|
139
|
+
* already, its value will be updated to match the given value.
|
|
140
|
+
*
|
|
141
|
+
* @param map map to create new entry in
|
|
142
|
+
* @param key key to set
|
|
143
|
+
* @param value value to associate the key with; may be NULL
|
|
144
|
+
* @return zero if the key was successfully set, a negative error
|
|
145
|
+
* code otherwise
|
|
146
|
+
*/
|
|
147
|
+
int git_idxmap_icase_set(git_idxmap_icase *map, const git_index_entry *key, void *value);
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Delete an entry from the map.
|
|
151
|
+
*
|
|
152
|
+
* Delete the given key and its value from the map. If no such
|
|
153
|
+
* key exists, this will do nothing.
|
|
154
|
+
*
|
|
155
|
+
* @param map map to delete key in
|
|
156
|
+
* @param key key to delete
|
|
157
|
+
* @return `0` if the key has been deleted, GIT_ENOTFOUND if no
|
|
158
|
+
* such key was found, a negative code in case of an
|
|
159
|
+
* error
|
|
160
|
+
*/
|
|
161
|
+
int git_idxmap_delete(git_idxmap *map, const git_index_entry *key);
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Delete an entry from the map.
|
|
165
|
+
*
|
|
166
|
+
* Delete the given key and its value from the map. If no such
|
|
167
|
+
* key exists, this will do nothing.
|
|
168
|
+
*
|
|
169
|
+
* @param map map to delete key in
|
|
170
|
+
* @param key key to delete
|
|
171
|
+
* @return `0` if the key has been deleted, GIT_ENOTFOUND if no
|
|
172
|
+
* such key was found, a negative code in case of an
|
|
173
|
+
* error
|
|
174
|
+
*/
|
|
175
|
+
int git_idxmap_icase_delete(git_idxmap_icase *map, const git_index_entry *key);
|
|
54
176
|
|
|
55
177
|
#endif
|
data/vendor/libgit2/src/ignore.c
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
#include "attrcache.h"
|
|
13
13
|
#include "path.h"
|
|
14
14
|
#include "config.h"
|
|
15
|
-
#include "
|
|
15
|
+
#include "wildmatch.h"
|
|
16
16
|
|
|
17
17
|
#define GIT_IGNORE_INTERNAL "[internal]exclude"
|
|
18
18
|
|
|
@@ -101,7 +101,7 @@ static int does_negate_pattern(git_attr_fnmatch *rule, git_attr_fnmatch *neg)
|
|
|
101
101
|
*/
|
|
102
102
|
static int does_negate_rule(int *out, git_vector *rules, git_attr_fnmatch *match)
|
|
103
103
|
{
|
|
104
|
-
int error = 0,
|
|
104
|
+
int error = 0, wildmatch_flags;
|
|
105
105
|
size_t i;
|
|
106
106
|
git_attr_fnmatch *rule;
|
|
107
107
|
char *path;
|
|
@@ -109,9 +109,9 @@ static int does_negate_rule(int *out, git_vector *rules, git_attr_fnmatch *match
|
|
|
109
109
|
|
|
110
110
|
*out = 0;
|
|
111
111
|
|
|
112
|
-
|
|
112
|
+
wildmatch_flags = WM_PATHNAME;
|
|
113
113
|
if (match->flags & GIT_ATTR_FNMATCH_ICASE)
|
|
114
|
-
|
|
114
|
+
wildmatch_flags |= WM_CASEFOLD;
|
|
115
115
|
|
|
116
116
|
/* path of the file relative to the workdir, so we match the rules in subdirs */
|
|
117
117
|
if (match->containing_dir) {
|
|
@@ -141,13 +141,8 @@ static int does_negate_rule(int *out, git_vector *rules, git_attr_fnmatch *match
|
|
|
141
141
|
if (git_buf_oom(&buf))
|
|
142
142
|
goto out;
|
|
143
143
|
|
|
144
|
-
if ((error = p_fnmatch(git_buf_cstr(&buf), path, fnflags)) < 0) {
|
|
145
|
-
giterr_set(GITERR_INVALID, "error matching pattern");
|
|
146
|
-
goto out;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
144
|
/* if we found a match, we want to keep this rule */
|
|
150
|
-
if (
|
|
145
|
+
if ((wildmatch(git_buf_cstr(&buf), path, wildmatch_flags)) == WM_MATCH) {
|
|
151
146
|
*out = 1;
|
|
152
147
|
error = 0;
|
|
153
148
|
goto out;
|
|
@@ -163,15 +158,17 @@ out:
|
|
|
163
158
|
}
|
|
164
159
|
|
|
165
160
|
static int parse_ignore_file(
|
|
166
|
-
git_repository *repo, git_attr_file *attrs, const char *data)
|
|
161
|
+
git_repository *repo, git_attr_file *attrs, const char *data, bool allow_macros)
|
|
167
162
|
{
|
|
168
163
|
int error = 0;
|
|
169
164
|
int ignore_case = false;
|
|
170
165
|
const char *scan = data, *context = NULL;
|
|
171
166
|
git_attr_fnmatch *match = NULL;
|
|
172
167
|
|
|
173
|
-
|
|
174
|
-
|
|
168
|
+
GIT_UNUSED(allow_macros);
|
|
169
|
+
|
|
170
|
+
if (git_repository__configmap_lookup(&ignore_case, repo, GIT_CONFIGMAP_IGNORECASE) < 0)
|
|
171
|
+
git_error_clear();
|
|
175
172
|
|
|
176
173
|
/* if subdir file path, convert context for file paths */
|
|
177
174
|
if (attrs->entry &&
|
|
@@ -180,7 +177,7 @@ static int parse_ignore_file(
|
|
|
180
177
|
context = attrs->entry->path;
|
|
181
178
|
|
|
182
179
|
if (git_mutex_lock(&attrs->lock) < 0) {
|
|
183
|
-
|
|
180
|
+
git_error_set(GIT_ERROR_OS, "failed to lock ignore file");
|
|
184
181
|
return -1;
|
|
185
182
|
}
|
|
186
183
|
|
|
@@ -193,9 +190,7 @@ static int parse_ignore_file(
|
|
|
193
190
|
}
|
|
194
191
|
|
|
195
192
|
match->flags =
|
|
196
|
-
GIT_ATTR_FNMATCH_ALLOWSPACE |
|
|
197
|
-
GIT_ATTR_FNMATCH_ALLOWNEG |
|
|
198
|
-
GIT_ATTR_FNMATCH_NOLEADINGDIR;
|
|
193
|
+
GIT_ATTR_FNMATCH_ALLOWSPACE | GIT_ATTR_FNMATCH_ALLOWNEG;
|
|
199
194
|
|
|
200
195
|
if (!(error = git_attr_fnmatch__parse(
|
|
201
196
|
match, &attrs->pool, context, &scan)))
|
|
@@ -246,9 +241,8 @@ static int push_ignore_file(
|
|
|
246
241
|
int error = 0;
|
|
247
242
|
git_attr_file *file = NULL;
|
|
248
243
|
|
|
249
|
-
error = git_attr_cache__get(
|
|
250
|
-
|
|
251
|
-
base, filename, parse_ignore_file);
|
|
244
|
+
error = git_attr_cache__get(&file, ignores->repo, NULL, GIT_ATTR_FILE__FROM_FILE,
|
|
245
|
+
base, filename, parse_ignore_file, false);
|
|
252
246
|
if (error < 0)
|
|
253
247
|
return error;
|
|
254
248
|
|
|
@@ -274,12 +268,12 @@ static int get_internal_ignores(git_attr_file **out, git_repository *repo)
|
|
|
274
268
|
if ((error = git_attr_cache__init(repo)) < 0)
|
|
275
269
|
return error;
|
|
276
270
|
|
|
277
|
-
error = git_attr_cache__get(
|
|
278
|
-
|
|
271
|
+
error = git_attr_cache__get(out, repo, NULL, GIT_ATTR_FILE__IN_MEMORY, NULL,
|
|
272
|
+
GIT_IGNORE_INTERNAL, NULL, false);
|
|
279
273
|
|
|
280
274
|
/* if internal rules list is empty, insert default rules */
|
|
281
275
|
if (!error && !(*out)->rules.length)
|
|
282
|
-
error = parse_ignore_file(repo, *out, GIT_IGNORE_DEFAULT_RULES);
|
|
276
|
+
error = parse_ignore_file(repo, *out, GIT_IGNORE_DEFAULT_RULES, false);
|
|
283
277
|
|
|
284
278
|
return error;
|
|
285
279
|
}
|
|
@@ -299,8 +293,8 @@ int git_ignore__for_path(
|
|
|
299
293
|
ignores->repo = repo;
|
|
300
294
|
|
|
301
295
|
/* Read the ignore_case flag */
|
|
302
|
-
if ((error =
|
|
303
|
-
&ignores->ignore_case, repo,
|
|
296
|
+
if ((error = git_repository__configmap_lookup(
|
|
297
|
+
&ignores->ignore_case, repo, GIT_CONFIGMAP_IGNORECASE)) < 0)
|
|
304
298
|
goto cleanup;
|
|
305
299
|
|
|
306
300
|
if ((error = git_attr_cache__init(repo)) < 0)
|
|
@@ -337,16 +331,13 @@ int git_ignore__for_path(
|
|
|
337
331
|
goto cleanup;
|
|
338
332
|
}
|
|
339
333
|
|
|
340
|
-
if
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
infopath.ptr, GIT_IGNORE_FILE_INREPO);
|
|
348
|
-
if (error < 0)
|
|
349
|
-
goto cleanup;
|
|
334
|
+
/* load .git/info/exclude if possible */
|
|
335
|
+
if ((error = git_repository_item_path(&infopath, repo, GIT_REPOSITORY_ITEM_INFO)) < 0 ||
|
|
336
|
+
(error = push_ignore_file(ignores, &ignores->ign_global, infopath.ptr, GIT_IGNORE_FILE_INREPO)) < 0) {
|
|
337
|
+
if (error != GIT_ENOTFOUND)
|
|
338
|
+
goto cleanup;
|
|
339
|
+
error = 0;
|
|
340
|
+
}
|
|
350
341
|
|
|
351
342
|
/* load core.excludesfile */
|
|
352
343
|
if (git_repository_attr_cache(repo)->cfg_excl_file != NULL)
|
|
@@ -453,7 +444,7 @@ static bool ignore_lookup_in_rules(
|
|
|
453
444
|
int git_ignore__lookup(
|
|
454
445
|
int *out, git_ignores *ignores, const char *pathname, git_dir_flag dir_flag)
|
|
455
446
|
{
|
|
456
|
-
|
|
447
|
+
size_t i;
|
|
457
448
|
git_attr_file *file;
|
|
458
449
|
git_attr_path path;
|
|
459
450
|
|
|
@@ -467,8 +458,11 @@ int git_ignore__lookup(
|
|
|
467
458
|
if (ignore_lookup_in_rules(out, ignores->ign_internal, &path))
|
|
468
459
|
goto cleanup;
|
|
469
460
|
|
|
470
|
-
/* next process files in the path
|
|
471
|
-
|
|
461
|
+
/* next process files in the path.
|
|
462
|
+
* this process has to process ignores in reverse order
|
|
463
|
+
* to ensure correct prioritization of rules
|
|
464
|
+
*/
|
|
465
|
+
git_vector_rforeach(&ignores->ign_path, i, file) {
|
|
472
466
|
if (ignore_lookup_in_rules(out, file, &path))
|
|
473
467
|
goto cleanup;
|
|
474
468
|
}
|
|
@@ -492,7 +486,7 @@ int git_ignore_add_rule(git_repository *repo, const char *rules)
|
|
|
492
486
|
if ((error = get_internal_ignores(&ign_internal, repo)) < 0)
|
|
493
487
|
return error;
|
|
494
488
|
|
|
495
|
-
error = parse_ignore_file(repo, ign_internal, rules);
|
|
489
|
+
error = parse_ignore_file(repo, ign_internal, rules, false);
|
|
496
490
|
git_attr_file__free(ign_internal);
|
|
497
491
|
|
|
498
492
|
return error;
|
|
@@ -508,7 +502,7 @@ int git_ignore_clear_internal_rules(git_repository *repo)
|
|
|
508
502
|
|
|
509
503
|
if (!(error = git_attr_file__clear_rules(ign_internal, true)))
|
|
510
504
|
error = parse_ignore_file(
|
|
511
|
-
|
|
505
|
+
repo, ign_internal, GIT_IGNORE_DEFAULT_RULES, false);
|
|
512
506
|
|
|
513
507
|
git_attr_file__free(ign_internal);
|
|
514
508
|
return error;
|
|
@@ -534,7 +528,9 @@ int git_ignore_path_is_ignored(
|
|
|
534
528
|
memset(&path, 0, sizeof(path));
|
|
535
529
|
memset(&ignores, 0, sizeof(ignores));
|
|
536
530
|
|
|
537
|
-
if (
|
|
531
|
+
if (!git__suffixcmp(pathname, "/"))
|
|
532
|
+
dir_flag = GIT_DIR_FLAG_TRUE;
|
|
533
|
+
else if (git_repository_is_bare(repo))
|
|
538
534
|
dir_flag = GIT_DIR_FLAG_FALSE;
|
|
539
535
|
|
|
540
536
|
if ((error = git_attr_path__init(&path, pathname, workdir, dir_flag)) < 0 ||
|
|
@@ -624,7 +620,7 @@ int git_ignore__check_pathspec_for_exact_ignores(
|
|
|
624
620
|
break;
|
|
625
621
|
|
|
626
622
|
if (ignored) {
|
|
627
|
-
|
|
623
|
+
git_error_set(GIT_ERROR_INVALID, "pathspec contains ignored file '%s'",
|
|
628
624
|
filename);
|
|
629
625
|
error = GIT_EINVALIDSPEC;
|
|
630
626
|
break;
|