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/crlf.c
CHANGED
|
@@ -12,74 +12,64 @@
|
|
|
12
12
|
#include "git2/index.h"
|
|
13
13
|
#include "git2/sys/filter.h"
|
|
14
14
|
|
|
15
|
-
#include "
|
|
15
|
+
#include "futils.h"
|
|
16
16
|
#include "hash.h"
|
|
17
17
|
#include "filter.h"
|
|
18
18
|
#include "buf_text.h"
|
|
19
19
|
#include "repository.h"
|
|
20
20
|
|
|
21
|
+
typedef enum {
|
|
22
|
+
GIT_CRLF_UNDEFINED,
|
|
23
|
+
GIT_CRLF_BINARY,
|
|
24
|
+
GIT_CRLF_TEXT,
|
|
25
|
+
GIT_CRLF_TEXT_INPUT,
|
|
26
|
+
GIT_CRLF_TEXT_CRLF,
|
|
27
|
+
GIT_CRLF_AUTO,
|
|
28
|
+
GIT_CRLF_AUTO_INPUT,
|
|
29
|
+
GIT_CRLF_AUTO_CRLF,
|
|
30
|
+
} git_crlf_t;
|
|
31
|
+
|
|
21
32
|
struct crlf_attrs {
|
|
22
|
-
int
|
|
23
|
-
int
|
|
33
|
+
int attr_action; /* the .gitattributes setting */
|
|
34
|
+
int crlf_action; /* the core.autocrlf setting */
|
|
35
|
+
|
|
24
36
|
int auto_crlf;
|
|
25
37
|
int safe_crlf;
|
|
38
|
+
int core_eol;
|
|
26
39
|
};
|
|
27
40
|
|
|
28
41
|
struct crlf_filter {
|
|
29
42
|
git_filter f;
|
|
30
43
|
};
|
|
31
44
|
|
|
32
|
-
static
|
|
45
|
+
static git_crlf_t check_crlf(const char *value)
|
|
33
46
|
{
|
|
34
|
-
if (
|
|
47
|
+
if (GIT_ATTR_IS_TRUE(value))
|
|
35
48
|
return GIT_CRLF_TEXT;
|
|
36
|
-
|
|
37
|
-
if (GIT_ATTR_FALSE(value))
|
|
49
|
+
else if (GIT_ATTR_IS_FALSE(value))
|
|
38
50
|
return GIT_CRLF_BINARY;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if (strcmp(value, "
|
|
44
|
-
return GIT_CRLF_INPUT;
|
|
45
|
-
|
|
46
|
-
if (strcmp(value, "auto") == 0)
|
|
51
|
+
else if (GIT_ATTR_IS_UNSPECIFIED(value))
|
|
52
|
+
;
|
|
53
|
+
else if (strcmp(value, "input") == 0)
|
|
54
|
+
return GIT_CRLF_TEXT_INPUT;
|
|
55
|
+
else if (strcmp(value, "auto") == 0)
|
|
47
56
|
return GIT_CRLF_AUTO;
|
|
48
57
|
|
|
49
|
-
return
|
|
58
|
+
return GIT_CRLF_UNDEFINED;
|
|
50
59
|
}
|
|
51
60
|
|
|
52
|
-
static
|
|
61
|
+
static git_configmap_value check_eol(const char *value)
|
|
53
62
|
{
|
|
54
|
-
if (
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (strcmp(value, "lf") == 0)
|
|
63
|
+
if (GIT_ATTR_IS_UNSPECIFIED(value))
|
|
64
|
+
;
|
|
65
|
+
else if (strcmp(value, "lf") == 0)
|
|
58
66
|
return GIT_EOL_LF;
|
|
59
|
-
|
|
60
|
-
if (strcmp(value, "crlf") == 0)
|
|
67
|
+
else if (strcmp(value, "crlf") == 0)
|
|
61
68
|
return GIT_EOL_CRLF;
|
|
62
69
|
|
|
63
70
|
return GIT_EOL_UNSET;
|
|
64
71
|
}
|
|
65
72
|
|
|
66
|
-
static int crlf_input_action(struct crlf_attrs *ca)
|
|
67
|
-
{
|
|
68
|
-
if (ca->crlf_action == GIT_CRLF_BINARY)
|
|
69
|
-
return GIT_CRLF_BINARY;
|
|
70
|
-
|
|
71
|
-
if (ca->eol == GIT_EOL_LF)
|
|
72
|
-
return GIT_CRLF_INPUT;
|
|
73
|
-
|
|
74
|
-
if (ca->crlf_action == GIT_CRLF_AUTO)
|
|
75
|
-
return GIT_CRLF_AUTO;
|
|
76
|
-
|
|
77
|
-
if (ca->eol == GIT_EOL_CRLF)
|
|
78
|
-
return GIT_CRLF_CRLF;
|
|
79
|
-
|
|
80
|
-
return ca->crlf_action;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
73
|
static int has_cr_in_index(const git_filter_source *src)
|
|
84
74
|
{
|
|
85
75
|
git_repository *repo = git_filter_source_repo(src);
|
|
@@ -88,14 +78,14 @@ static int has_cr_in_index(const git_filter_source *src)
|
|
|
88
78
|
const git_index_entry *entry;
|
|
89
79
|
git_blob *blob;
|
|
90
80
|
const void *blobcontent;
|
|
91
|
-
|
|
81
|
+
git_object_size_t blobsize;
|
|
92
82
|
bool found_cr;
|
|
93
83
|
|
|
94
84
|
if (!path)
|
|
95
85
|
return false;
|
|
96
86
|
|
|
97
87
|
if (git_repository_index__weakptr(&index, repo) < 0) {
|
|
98
|
-
|
|
88
|
+
git_error_clear();
|
|
99
89
|
return false;
|
|
100
90
|
}
|
|
101
91
|
|
|
@@ -122,147 +112,168 @@ static int has_cr_in_index(const git_filter_source *src)
|
|
|
122
112
|
return found_cr;
|
|
123
113
|
}
|
|
124
114
|
|
|
125
|
-
static int
|
|
126
|
-
struct crlf_attrs *ca,
|
|
127
|
-
git_buf *to,
|
|
128
|
-
const git_buf *from,
|
|
129
|
-
const git_filter_source *src)
|
|
115
|
+
static int text_eol_is_crlf(struct crlf_attrs *ca)
|
|
130
116
|
{
|
|
131
|
-
|
|
132
|
-
|
|
117
|
+
if (ca->auto_crlf == GIT_AUTO_CRLF_TRUE)
|
|
118
|
+
return 1;
|
|
119
|
+
else if (ca->auto_crlf == GIT_AUTO_CRLF_INPUT)
|
|
133
120
|
return 0;
|
|
134
121
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
git_buf_text_stats stats;
|
|
122
|
+
if (ca->core_eol == GIT_EOL_CRLF)
|
|
123
|
+
return 1;
|
|
124
|
+
if (ca->core_eol == GIT_EOL_UNSET && GIT_EOL_NATIVE == GIT_EOL_CRLF)
|
|
125
|
+
return 1;
|
|
140
126
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
return GIT_PASSTHROUGH;
|
|
127
|
+
return 0;
|
|
128
|
+
}
|
|
144
129
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
130
|
+
static git_configmap_value output_eol(struct crlf_attrs *ca)
|
|
131
|
+
{
|
|
132
|
+
switch (ca->crlf_action) {
|
|
133
|
+
case GIT_CRLF_BINARY:
|
|
134
|
+
return GIT_EOL_UNSET;
|
|
135
|
+
case GIT_CRLF_TEXT_CRLF:
|
|
136
|
+
return GIT_EOL_CRLF;
|
|
137
|
+
case GIT_CRLF_TEXT_INPUT:
|
|
138
|
+
return GIT_EOL_LF;
|
|
139
|
+
case GIT_CRLF_UNDEFINED:
|
|
140
|
+
case GIT_CRLF_AUTO_CRLF:
|
|
141
|
+
return GIT_EOL_CRLF;
|
|
142
|
+
case GIT_CRLF_AUTO_INPUT:
|
|
143
|
+
return GIT_EOL_LF;
|
|
144
|
+
case GIT_CRLF_TEXT:
|
|
145
|
+
case GIT_CRLF_AUTO:
|
|
146
|
+
return text_eol_is_crlf(ca) ? GIT_EOL_CRLF : GIT_EOL_LF;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/* TODO: warn when available */
|
|
150
|
+
return ca->core_eol;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
GIT_INLINE(int) check_safecrlf(
|
|
154
|
+
struct crlf_attrs *ca,
|
|
155
|
+
const git_filter_source *src,
|
|
156
|
+
git_buf_text_stats *stats)
|
|
157
|
+
{
|
|
158
|
+
const char *filename = git_filter_source_path(src);
|
|
159
|
+
|
|
160
|
+
if (!ca->safe_crlf)
|
|
161
|
+
return 0;
|
|
162
|
+
|
|
163
|
+
if (output_eol(ca) == GIT_EOL_LF) {
|
|
164
|
+
/*
|
|
165
|
+
* CRLFs would not be restored by checkout:
|
|
166
|
+
* check if we'd remove CRLFs
|
|
167
|
+
*/
|
|
168
|
+
if (stats->crlf) {
|
|
169
|
+
if (ca->safe_crlf == GIT_SAFE_CRLF_WARN) {
|
|
170
|
+
/* TODO: issue a warning when available */
|
|
171
|
+
} else {
|
|
172
|
+
if (filename && *filename)
|
|
173
|
+
git_error_set(
|
|
174
|
+
GIT_ERROR_FILTER, "CRLF would be replaced by LF in '%s'",
|
|
175
|
+
filename);
|
|
176
|
+
else
|
|
177
|
+
git_error_set(
|
|
178
|
+
GIT_ERROR_FILTER, "CRLF would be replaced by LF");
|
|
148
179
|
|
|
149
|
-
/* If safecrlf is enabled, sanity-check the result. */
|
|
150
|
-
if (stats.cr != stats.crlf || stats.lf != stats.crlf) {
|
|
151
|
-
switch (ca->safe_crlf) {
|
|
152
|
-
case GIT_SAFE_CRLF_FAIL:
|
|
153
|
-
giterr_set(
|
|
154
|
-
GITERR_FILTER, "LF would be replaced by CRLF in '%s'",
|
|
155
|
-
git_filter_source_path(src));
|
|
156
180
|
return -1;
|
|
157
|
-
case GIT_SAFE_CRLF_WARN:
|
|
158
|
-
/* TODO: issue warning when warning API is available */;
|
|
159
|
-
break;
|
|
160
|
-
default:
|
|
161
|
-
break;
|
|
162
181
|
}
|
|
163
182
|
}
|
|
164
|
-
|
|
183
|
+
} else if (output_eol(ca) == GIT_EOL_CRLF) {
|
|
165
184
|
/*
|
|
166
|
-
*
|
|
167
|
-
*
|
|
168
|
-
* stuff?
|
|
185
|
+
* CRLFs would be added by checkout:
|
|
186
|
+
* check if we have "naked" LFs
|
|
169
187
|
*/
|
|
170
|
-
if (stats
|
|
171
|
-
|
|
188
|
+
if (stats->crlf != stats->lf) {
|
|
189
|
+
if (ca->safe_crlf == GIT_SAFE_CRLF_WARN) {
|
|
190
|
+
/* TODO: issue a warning when available */
|
|
191
|
+
} else {
|
|
192
|
+
if (filename && *filename)
|
|
193
|
+
git_error_set(
|
|
194
|
+
GIT_ERROR_FILTER, "LF would be replaced by CRLF in '%s'",
|
|
195
|
+
filename);
|
|
196
|
+
else
|
|
197
|
+
git_error_set(
|
|
198
|
+
GIT_ERROR_FILTER, "LF would be replaced by CRLF");
|
|
172
199
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
* If the file in the index has any CR in it, do not convert.
|
|
176
|
-
* This is the new safer autocrlf handling.
|
|
177
|
-
*/
|
|
178
|
-
if (has_cr_in_index(src))
|
|
179
|
-
return GIT_PASSTHROUGH;
|
|
200
|
+
return -1;
|
|
201
|
+
}
|
|
180
202
|
}
|
|
181
|
-
|
|
182
|
-
if (!stats.cr)
|
|
183
|
-
return GIT_PASSTHROUGH;
|
|
184
203
|
}
|
|
185
204
|
|
|
186
|
-
|
|
187
|
-
return git_buf_text_crlf_to_lf(to, from);
|
|
205
|
+
return 0;
|
|
188
206
|
}
|
|
189
207
|
|
|
190
|
-
static
|
|
208
|
+
static int crlf_apply_to_odb(
|
|
209
|
+
struct crlf_attrs *ca,
|
|
210
|
+
git_buf *to,
|
|
211
|
+
const git_buf *from,
|
|
212
|
+
const git_filter_source *src)
|
|
191
213
|
{
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
return "\n";
|
|
214
|
+
git_buf_text_stats stats;
|
|
215
|
+
bool is_binary;
|
|
216
|
+
int error;
|
|
196
217
|
|
|
197
|
-
|
|
198
|
-
|
|
218
|
+
/* Binary attribute? Empty file? Nothing to do */
|
|
219
|
+
if (ca->crlf_action == GIT_CRLF_BINARY || !git_buf_len(from))
|
|
220
|
+
return GIT_PASSTHROUGH;
|
|
199
221
|
|
|
200
|
-
|
|
201
|
-
if (ca->auto_crlf == GIT_AUTO_CRLF_FALSE)
|
|
202
|
-
return "\n";
|
|
203
|
-
break;
|
|
222
|
+
is_binary = git_buf_text_gather_stats(&stats, from, false);
|
|
204
223
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
224
|
+
/* Heuristics to see if we can skip the conversion.
|
|
225
|
+
* Straight from Core Git.
|
|
226
|
+
*/
|
|
227
|
+
if (ca->crlf_action == GIT_CRLF_AUTO ||
|
|
228
|
+
ca->crlf_action == GIT_CRLF_AUTO_INPUT ||
|
|
229
|
+
ca->crlf_action == GIT_CRLF_AUTO_CRLF) {
|
|
210
230
|
|
|
211
|
-
|
|
212
|
-
|
|
231
|
+
if (is_binary)
|
|
232
|
+
return GIT_PASSTHROUGH;
|
|
233
|
+
|
|
234
|
+
/*
|
|
235
|
+
* If the file in the index has any CR in it, do not convert.
|
|
236
|
+
* This is the new safer autocrlf handling.
|
|
237
|
+
*/
|
|
238
|
+
if (has_cr_in_index(src))
|
|
239
|
+
return GIT_PASSTHROUGH;
|
|
213
240
|
}
|
|
214
241
|
|
|
215
|
-
if (ca
|
|
216
|
-
return
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
return
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
return "\r\n";
|
|
225
|
-
|
|
226
|
-
line_ending_error:
|
|
227
|
-
giterr_set(GITERR_INVALID, "invalid input to line ending filter");
|
|
228
|
-
return NULL;
|
|
242
|
+
if ((error = check_safecrlf(ca, src, &stats)) < 0)
|
|
243
|
+
return error;
|
|
244
|
+
|
|
245
|
+
/* If there are no CR characters to filter out, then just pass */
|
|
246
|
+
if (!stats.crlf)
|
|
247
|
+
return GIT_PASSTHROUGH;
|
|
248
|
+
|
|
249
|
+
/* Actually drop the carriage returns */
|
|
250
|
+
return git_buf_text_crlf_to_lf(to, from);
|
|
229
251
|
}
|
|
230
252
|
|
|
231
253
|
static int crlf_apply_to_workdir(
|
|
232
|
-
struct crlf_attrs *ca,
|
|
254
|
+
struct crlf_attrs *ca,
|
|
255
|
+
git_buf *to,
|
|
256
|
+
const git_buf *from)
|
|
233
257
|
{
|
|
234
258
|
git_buf_text_stats stats;
|
|
235
|
-
const char *workdir_ending = NULL;
|
|
236
259
|
bool is_binary;
|
|
237
260
|
|
|
238
261
|
/* Empty file? Nothing to do. */
|
|
239
|
-
if (git_buf_len(from) == 0)
|
|
240
|
-
return 0;
|
|
241
|
-
|
|
242
|
-
/* Determine proper line ending */
|
|
243
|
-
workdir_ending = line_ending(ca);
|
|
244
|
-
if (!workdir_ending)
|
|
245
|
-
return -1;
|
|
246
|
-
|
|
247
|
-
/* only LF->CRLF conversion is supported, do nothing on LF platforms */
|
|
248
|
-
if (strcmp(workdir_ending, "\r\n") != 0)
|
|
262
|
+
if (git_buf_len(from) == 0 || output_eol(ca) != GIT_EOL_CRLF)
|
|
249
263
|
return GIT_PASSTHROUGH;
|
|
250
264
|
|
|
251
|
-
/* If there are no LFs, or all LFs are part of a CRLF, nothing to do */
|
|
252
265
|
is_binary = git_buf_text_gather_stats(&stats, from, false);
|
|
253
266
|
|
|
267
|
+
/* If there are no LFs, or all LFs are part of a CRLF, nothing to do */
|
|
254
268
|
if (stats.lf == 0 || stats.lf == stats.crlf)
|
|
255
269
|
return GIT_PASSTHROUGH;
|
|
256
270
|
|
|
257
271
|
if (ca->crlf_action == GIT_CRLF_AUTO ||
|
|
258
|
-
ca->crlf_action ==
|
|
272
|
+
ca->crlf_action == GIT_CRLF_AUTO_INPUT ||
|
|
273
|
+
ca->crlf_action == GIT_CRLF_AUTO_CRLF) {
|
|
259
274
|
|
|
260
275
|
/* If we have any existing CR or CRLF line endings, do nothing */
|
|
261
|
-
if (stats.cr > 0
|
|
262
|
-
return GIT_PASSTHROUGH;
|
|
263
|
-
|
|
264
|
-
/* If we have bare CR characters, do nothing */
|
|
265
|
-
if (stats.cr != stats.crlf)
|
|
276
|
+
if (stats.cr > 0)
|
|
266
277
|
return GIT_PASSTHROUGH;
|
|
267
278
|
|
|
268
279
|
/* Don't filter binary files */
|
|
@@ -273,87 +284,99 @@ static int crlf_apply_to_workdir(
|
|
|
273
284
|
return git_buf_text_lf_to_crlf(to, from);
|
|
274
285
|
}
|
|
275
286
|
|
|
276
|
-
static int
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
const git_filter_source *src
|
|
280
|
-
const char **attr_values)
|
|
287
|
+
static int convert_attrs(
|
|
288
|
+
struct crlf_attrs *ca,
|
|
289
|
+
const char **attr_values,
|
|
290
|
+
const git_filter_source *src)
|
|
281
291
|
{
|
|
282
292
|
int error;
|
|
283
|
-
struct crlf_attrs ca;
|
|
284
293
|
|
|
285
|
-
|
|
294
|
+
memset(ca, 0, sizeof(struct crlf_attrs));
|
|
295
|
+
|
|
296
|
+
if ((error = git_repository__configmap_lookup(&ca->auto_crlf,
|
|
297
|
+
git_filter_source_repo(src), GIT_CONFIGMAP_AUTO_CRLF)) < 0 ||
|
|
298
|
+
(error = git_repository__configmap_lookup(&ca->safe_crlf,
|
|
299
|
+
git_filter_source_repo(src), GIT_CONFIGMAP_SAFE_CRLF)) < 0 ||
|
|
300
|
+
(error = git_repository__configmap_lookup(&ca->core_eol,
|
|
301
|
+
git_filter_source_repo(src), GIT_CONFIGMAP_EOL)) < 0)
|
|
302
|
+
return error;
|
|
303
|
+
|
|
304
|
+
/* downgrade FAIL to WARN if ALLOW_UNSAFE option is used */
|
|
305
|
+
if ((git_filter_source_flags(src) & GIT_FILTER_ALLOW_UNSAFE) &&
|
|
306
|
+
ca->safe_crlf == GIT_SAFE_CRLF_FAIL)
|
|
307
|
+
ca->safe_crlf = GIT_SAFE_CRLF_WARN;
|
|
308
|
+
|
|
309
|
+
if (attr_values) {
|
|
310
|
+
/* load the text attribute */
|
|
311
|
+
ca->crlf_action = check_crlf(attr_values[2]); /* text */
|
|
312
|
+
|
|
313
|
+
if (ca->crlf_action == GIT_CRLF_UNDEFINED)
|
|
314
|
+
ca->crlf_action = check_crlf(attr_values[0]); /* crlf */
|
|
315
|
+
|
|
316
|
+
if (ca->crlf_action != GIT_CRLF_BINARY) {
|
|
317
|
+
/* load the eol attribute */
|
|
318
|
+
int eol_attr = check_eol(attr_values[1]);
|
|
319
|
+
|
|
320
|
+
if (ca->crlf_action == GIT_CRLF_AUTO && eol_attr == GIT_EOL_LF)
|
|
321
|
+
ca->crlf_action = GIT_CRLF_AUTO_INPUT;
|
|
322
|
+
else if (ca->crlf_action == GIT_CRLF_AUTO && eol_attr == GIT_EOL_CRLF)
|
|
323
|
+
ca->crlf_action = GIT_CRLF_AUTO_CRLF;
|
|
324
|
+
else if (eol_attr == GIT_EOL_LF)
|
|
325
|
+
ca->crlf_action = GIT_CRLF_TEXT_INPUT;
|
|
326
|
+
else if (eol_attr == GIT_EOL_CRLF)
|
|
327
|
+
ca->crlf_action = GIT_CRLF_TEXT_CRLF;
|
|
328
|
+
}
|
|
286
329
|
|
|
287
|
-
|
|
288
|
-
ca.crlf_action = GIT_CRLF_GUESS;
|
|
289
|
-
ca.eol = GIT_EOL_UNSET;
|
|
330
|
+
ca->attr_action = ca->crlf_action;
|
|
290
331
|
} else {
|
|
291
|
-
ca
|
|
292
|
-
if (ca.crlf_action == GIT_CRLF_GUESS)
|
|
293
|
-
ca.crlf_action = check_crlf(attr_values[0]); /* clrf */
|
|
294
|
-
ca.eol = check_eol(attr_values[1]); /* eol */
|
|
332
|
+
ca->crlf_action = GIT_CRLF_UNDEFINED;
|
|
295
333
|
}
|
|
296
|
-
ca.auto_crlf = GIT_AUTO_CRLF_DEFAULT;
|
|
297
|
-
ca.safe_crlf = GIT_SAFE_CRLF_DEFAULT;
|
|
298
334
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
ca
|
|
335
|
+
if (ca->crlf_action == GIT_CRLF_TEXT)
|
|
336
|
+
ca->crlf_action = text_eol_is_crlf(ca) ? GIT_CRLF_TEXT_CRLF : GIT_CRLF_TEXT_INPUT;
|
|
337
|
+
if (ca->crlf_action == GIT_CRLF_UNDEFINED && ca->auto_crlf == GIT_AUTO_CRLF_FALSE)
|
|
338
|
+
ca->crlf_action = GIT_CRLF_BINARY;
|
|
339
|
+
if (ca->crlf_action == GIT_CRLF_UNDEFINED && ca->auto_crlf == GIT_AUTO_CRLF_TRUE)
|
|
340
|
+
ca->crlf_action = GIT_CRLF_AUTO_CRLF;
|
|
341
|
+
if (ca->crlf_action == GIT_CRLF_UNDEFINED && ca->auto_crlf == GIT_AUTO_CRLF_INPUT)
|
|
342
|
+
ca->crlf_action = GIT_CRLF_AUTO_INPUT;
|
|
304
343
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
if (ca.crlf_action == GIT_CRLF_GUESS ||
|
|
309
|
-
((ca.crlf_action == GIT_CRLF_AUTO ||
|
|
310
|
-
ca.crlf_action == GIT_CRLF_TEXT) &&
|
|
311
|
-
git_filter_source_mode(src) == GIT_FILTER_SMUDGE)) {
|
|
312
|
-
|
|
313
|
-
error = git_repository__cvar(
|
|
314
|
-
&ca.auto_crlf, git_filter_source_repo(src), GIT_CVAR_AUTO_CRLF);
|
|
315
|
-
if (error < 0)
|
|
316
|
-
return error;
|
|
344
|
+
return 0;
|
|
345
|
+
}
|
|
317
346
|
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
347
|
+
static int crlf_check(
|
|
348
|
+
git_filter *self,
|
|
349
|
+
void **payload, /* points to NULL ptr on entry, may be set */
|
|
350
|
+
const git_filter_source *src,
|
|
351
|
+
const char **attr_values)
|
|
352
|
+
{
|
|
353
|
+
struct crlf_attrs ca;
|
|
321
354
|
|
|
322
|
-
|
|
323
|
-
ca.eol != GIT_EOL_CRLF &&
|
|
324
|
-
git_filter_source_mode(src) == GIT_FILTER_SMUDGE)
|
|
325
|
-
return GIT_PASSTHROUGH;
|
|
326
|
-
}
|
|
355
|
+
GIT_UNUSED(self);
|
|
327
356
|
|
|
328
|
-
|
|
329
|
-
error = git_repository__cvar(
|
|
330
|
-
&ca.safe_crlf, git_filter_source_repo(src), GIT_CVAR_SAFE_CRLF);
|
|
331
|
-
if (error < 0)
|
|
332
|
-
return error;
|
|
357
|
+
convert_attrs(&ca, attr_values, src);
|
|
333
358
|
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
ca.safe_crlf == GIT_SAFE_CRLF_FAIL)
|
|
337
|
-
ca.safe_crlf = GIT_SAFE_CRLF_WARN;
|
|
338
|
-
}
|
|
359
|
+
if (ca.crlf_action == GIT_CRLF_BINARY)
|
|
360
|
+
return GIT_PASSTHROUGH;
|
|
339
361
|
|
|
340
362
|
*payload = git__malloc(sizeof(ca));
|
|
341
|
-
|
|
363
|
+
GIT_ERROR_CHECK_ALLOC(*payload);
|
|
342
364
|
memcpy(*payload, &ca, sizeof(ca));
|
|
343
365
|
|
|
344
366
|
return 0;
|
|
345
367
|
}
|
|
346
368
|
|
|
347
369
|
static int crlf_apply(
|
|
348
|
-
git_filter
|
|
349
|
-
void
|
|
350
|
-
git_buf
|
|
370
|
+
git_filter *self,
|
|
371
|
+
void **payload, /* may be read and/or set */
|
|
372
|
+
git_buf *to,
|
|
351
373
|
const git_buf *from,
|
|
352
374
|
const git_filter_source *src)
|
|
353
375
|
{
|
|
354
376
|
/* initialize payload in case `check` was bypassed */
|
|
355
377
|
if (!*payload) {
|
|
356
378
|
int error = crlf_check(self, payload, src, NULL);
|
|
379
|
+
|
|
357
380
|
if (error < 0)
|
|
358
381
|
return error;
|
|
359
382
|
}
|
data/vendor/libgit2/src/delta.c
CHANGED
|
@@ -124,21 +124,21 @@ static int lookup_index_alloc(
|
|
|
124
124
|
{
|
|
125
125
|
size_t entries_len, hash_len, index_len;
|
|
126
126
|
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
GIT_ERROR_CHECK_ALLOC_MULTIPLY(&entries_len, entries, sizeof(struct index_entry));
|
|
128
|
+
GIT_ERROR_CHECK_ALLOC_MULTIPLY(&hash_len, hash_count, sizeof(struct index_entry *));
|
|
129
129
|
|
|
130
|
-
|
|
131
|
-
|
|
130
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&index_len, sizeof(struct git_delta_index), entries_len);
|
|
131
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&index_len, index_len, hash_len);
|
|
132
132
|
|
|
133
133
|
if (!git__is_ulong(index_len)) {
|
|
134
|
-
|
|
134
|
+
git_error_set(GIT_ERROR_NOMEMORY, "overly large delta");
|
|
135
135
|
return -1;
|
|
136
136
|
}
|
|
137
137
|
|
|
138
138
|
*out = git__malloc(index_len);
|
|
139
|
-
|
|
139
|
+
GIT_ERROR_CHECK_ALLOC(*out);
|
|
140
140
|
|
|
141
|
-
*out_len = index_len;
|
|
141
|
+
*out_len = (unsigned long)index_len;
|
|
142
142
|
return 0;
|
|
143
143
|
}
|
|
144
144
|
|
|
@@ -286,15 +286,22 @@ int git_delta_create_from_index(
|
|
|
286
286
|
if (!trg_buf || !trg_size)
|
|
287
287
|
return 0;
|
|
288
288
|
|
|
289
|
+
if (index->src_size > UINT_MAX ||
|
|
290
|
+
trg_size > UINT_MAX ||
|
|
291
|
+
max_size > (UINT_MAX - MAX_OP_SIZE - 1)) {
|
|
292
|
+
git_error_set(GIT_ERROR_INVALID, "buffer sizes too large for delta processing");
|
|
293
|
+
return -1;
|
|
294
|
+
}
|
|
295
|
+
|
|
289
296
|
bufpos = 0;
|
|
290
297
|
bufsize = 8192;
|
|
291
298
|
if (max_size && bufsize >= max_size)
|
|
292
299
|
bufsize = (unsigned int)(max_size + MAX_OP_SIZE + 1);
|
|
293
300
|
buf = git__malloc(bufsize);
|
|
294
|
-
|
|
301
|
+
GIT_ERROR_CHECK_ALLOC(buf);
|
|
295
302
|
|
|
296
303
|
/* store reference buffer size */
|
|
297
|
-
i = index->src_size;
|
|
304
|
+
i = (unsigned int)index->src_size;
|
|
298
305
|
while (i >= 0x80) {
|
|
299
306
|
buf[bufpos++] = i | 0x80;
|
|
300
307
|
i >>= 7;
|
|
@@ -302,7 +309,7 @@ int git_delta_create_from_index(
|
|
|
302
309
|
buf[bufpos++] = i;
|
|
303
310
|
|
|
304
311
|
/* store target buffer size */
|
|
305
|
-
i = trg_size;
|
|
312
|
+
i = (unsigned int)trg_size;
|
|
306
313
|
while (i >= 0x80) {
|
|
307
314
|
buf[bufpos++] = i | 0x80;
|
|
308
315
|
i >>= 7;
|
|
@@ -423,7 +430,7 @@ int git_delta_create_from_index(
|
|
|
423
430
|
void *tmp = buf;
|
|
424
431
|
bufsize = bufsize * 3 / 2;
|
|
425
432
|
if (max_size && bufsize >= max_size)
|
|
426
|
-
bufsize = max_size + MAX_OP_SIZE + 1;
|
|
433
|
+
bufsize = (unsigned int)(max_size + MAX_OP_SIZE + 1);
|
|
427
434
|
if (max_size && bufpos > max_size)
|
|
428
435
|
break;
|
|
429
436
|
buf = git__realloc(buf, bufsize);
|
|
@@ -438,7 +445,7 @@ int git_delta_create_from_index(
|
|
|
438
445
|
buf[bufpos - inscnt - 1] = inscnt;
|
|
439
446
|
|
|
440
447
|
if (max_size && bufpos > max_size) {
|
|
441
|
-
|
|
448
|
+
git_error_set(GIT_ERROR_NOMEMORY, "delta would be larger than maximum size");
|
|
442
449
|
git__free(buf);
|
|
443
450
|
return GIT_EBUFS;
|
|
444
451
|
}
|
|
@@ -466,7 +473,7 @@ static int hdr_sz(
|
|
|
466
473
|
|
|
467
474
|
do {
|
|
468
475
|
if (d == end) {
|
|
469
|
-
|
|
476
|
+
git_error_set(GIT_ERROR_INVALID, "truncated delta");
|
|
470
477
|
return -1;
|
|
471
478
|
}
|
|
472
479
|
|
|
@@ -545,18 +552,18 @@ int git_delta_apply(
|
|
|
545
552
|
* base object, resulting in data corruption or segfault.
|
|
546
553
|
*/
|
|
547
554
|
if ((hdr_sz(&base_sz, &delta, delta_end) < 0) || (base_sz != base_len)) {
|
|
548
|
-
|
|
555
|
+
git_error_set(GIT_ERROR_INVALID, "failed to apply delta: base size does not match given data");
|
|
549
556
|
return -1;
|
|
550
557
|
}
|
|
551
558
|
|
|
552
559
|
if (hdr_sz(&res_sz, &delta, delta_end) < 0) {
|
|
553
|
-
|
|
560
|
+
git_error_set(GIT_ERROR_INVALID, "failed to apply delta: base size does not match given data");
|
|
554
561
|
return -1;
|
|
555
562
|
}
|
|
556
563
|
|
|
557
|
-
|
|
564
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_sz, res_sz, 1);
|
|
558
565
|
res_dp = git__malloc(alloc_sz);
|
|
559
|
-
|
|
566
|
+
GIT_ERROR_CHECK_ALLOC(res_dp);
|
|
560
567
|
|
|
561
568
|
res_dp[res_sz] = '\0';
|
|
562
569
|
*out = res_dp;
|
|
@@ -616,6 +623,6 @@ fail:
|
|
|
616
623
|
*out = NULL;
|
|
617
624
|
*out_len = 0;
|
|
618
625
|
|
|
619
|
-
|
|
626
|
+
git_error_set(GIT_ERROR_INVALID, "failed to apply delta");
|
|
620
627
|
return -1;
|
|
621
628
|
}
|