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/reflog.c
CHANGED
|
@@ -74,32 +74,30 @@ int git_reflog_write(git_reflog *reflog)
|
|
|
74
74
|
|
|
75
75
|
int git_reflog_append(git_reflog *reflog, const git_oid *new_oid, const git_signature *committer, const char *msg)
|
|
76
76
|
{
|
|
77
|
-
git_reflog_entry *entry;
|
|
78
77
|
const git_reflog_entry *previous;
|
|
79
|
-
|
|
78
|
+
git_reflog_entry *entry;
|
|
80
79
|
|
|
81
80
|
assert(reflog && new_oid && committer);
|
|
82
81
|
|
|
83
82
|
entry = git__calloc(1, sizeof(git_reflog_entry));
|
|
84
|
-
|
|
83
|
+
GIT_ERROR_CHECK_ALLOC(entry);
|
|
85
84
|
|
|
86
85
|
if ((git_signature_dup(&entry->committer, committer)) < 0)
|
|
87
86
|
goto cleanup;
|
|
88
87
|
|
|
89
88
|
if (msg != NULL) {
|
|
90
|
-
|
|
91
|
-
goto cleanup;
|
|
89
|
+
size_t i, msglen = strlen(msg);
|
|
92
90
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
if (newline) {
|
|
96
|
-
if (newline[1] != '\0') {
|
|
97
|
-
giterr_set(GITERR_INVALID, "reflog message cannot contain newline");
|
|
98
|
-
goto cleanup;
|
|
99
|
-
}
|
|
91
|
+
if ((entry->msg = git__strndup(msg, msglen)) == NULL)
|
|
92
|
+
goto cleanup;
|
|
100
93
|
|
|
101
|
-
|
|
102
|
-
|
|
94
|
+
/*
|
|
95
|
+
* Replace all newlines with spaces, except for
|
|
96
|
+
* the final trailing newline.
|
|
97
|
+
*/
|
|
98
|
+
for (i = 0; i < msglen; i++)
|
|
99
|
+
if (entry->msg[i] == '\n')
|
|
100
|
+
entry->msg[i] = ' ';
|
|
103
101
|
}
|
|
104
102
|
|
|
105
103
|
previous = git_reflog_entry_byindex(reflog, 0);
|
|
@@ -194,7 +192,7 @@ int git_reflog_drop(git_reflog *reflog, size_t idx, int rewrite_previous_entry)
|
|
|
194
192
|
entry = (git_reflog_entry *)git_reflog_entry_byindex(reflog, idx);
|
|
195
193
|
|
|
196
194
|
if (entry == NULL) {
|
|
197
|
-
|
|
195
|
+
git_error_set(GIT_ERROR_REFERENCE, "no reflog entry at index %"PRIuZ, idx);
|
|
198
196
|
return GIT_ENOTFOUND;
|
|
199
197
|
}
|
|
200
198
|
|
data/vendor/libgit2/src/refs.c
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
#include "hash.h"
|
|
11
11
|
#include "repository.h"
|
|
12
|
-
#include "
|
|
12
|
+
#include "futils.h"
|
|
13
13
|
#include "filebuf.h"
|
|
14
14
|
#include "pack.h"
|
|
15
15
|
#include "reflog.h"
|
|
@@ -59,7 +59,7 @@ git_reference *git_reference__alloc_symbolic(
|
|
|
59
59
|
if (!ref)
|
|
60
60
|
return NULL;
|
|
61
61
|
|
|
62
|
-
ref->type =
|
|
62
|
+
ref->type = GIT_REFERENCE_SYMBOLIC;
|
|
63
63
|
|
|
64
64
|
if ((ref->target.symbolic = git__strdup(target)) == NULL) {
|
|
65
65
|
git__free(ref);
|
|
@@ -82,7 +82,7 @@ git_reference *git_reference__alloc(
|
|
|
82
82
|
if (!ref)
|
|
83
83
|
return NULL;
|
|
84
84
|
|
|
85
|
-
ref->type =
|
|
85
|
+
ref->type = GIT_REFERENCE_DIRECT;
|
|
86
86
|
git_oid_cpy(&ref->target.oid, oid);
|
|
87
87
|
|
|
88
88
|
if (peel != NULL)
|
|
@@ -108,12 +108,12 @@ git_reference *git_reference__set_name(
|
|
|
108
108
|
|
|
109
109
|
int git_reference_dup(git_reference **dest, git_reference *source)
|
|
110
110
|
{
|
|
111
|
-
if (source->type ==
|
|
111
|
+
if (source->type == GIT_REFERENCE_SYMBOLIC)
|
|
112
112
|
*dest = git_reference__alloc_symbolic(source->name, source->target.symbolic);
|
|
113
113
|
else
|
|
114
114
|
*dest = git_reference__alloc(source->name, &source->target.oid, &source->peel);
|
|
115
115
|
|
|
116
|
-
|
|
116
|
+
GIT_ERROR_CHECK_ALLOC(*dest);
|
|
117
117
|
|
|
118
118
|
(*dest)->db = source->db;
|
|
119
119
|
GIT_REFCOUNT_INC((*dest)->db);
|
|
@@ -126,7 +126,7 @@ void git_reference_free(git_reference *reference)
|
|
|
126
126
|
if (reference == NULL)
|
|
127
127
|
return;
|
|
128
128
|
|
|
129
|
-
if (reference->type ==
|
|
129
|
+
if (reference->type == GIT_REFERENCE_SYMBOLIC)
|
|
130
130
|
git__free(reference->target.symbolic);
|
|
131
131
|
|
|
132
132
|
if (reference->db)
|
|
@@ -140,7 +140,7 @@ int git_reference_delete(git_reference *ref)
|
|
|
140
140
|
const git_oid *old_id = NULL;
|
|
141
141
|
const char *old_target = NULL;
|
|
142
142
|
|
|
143
|
-
if (ref->type ==
|
|
143
|
+
if (ref->type == GIT_REFERENCE_DIRECT)
|
|
144
144
|
old_id = &ref->target.oid;
|
|
145
145
|
else
|
|
146
146
|
old_target = ref->target.symbolic;
|
|
@@ -186,14 +186,14 @@ static int reference_normalize_for_repo(
|
|
|
186
186
|
bool validate)
|
|
187
187
|
{
|
|
188
188
|
int precompose;
|
|
189
|
-
unsigned int flags =
|
|
189
|
+
unsigned int flags = GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL;
|
|
190
190
|
|
|
191
|
-
if (!
|
|
191
|
+
if (!git_repository__configmap_lookup(&precompose, repo, GIT_CONFIGMAP_PRECOMPOSE) &&
|
|
192
192
|
precompose)
|
|
193
|
-
flags |=
|
|
193
|
+
flags |= GIT_REFERENCE_FORMAT__PRECOMPOSE_UNICODE;
|
|
194
194
|
|
|
195
195
|
if (!validate)
|
|
196
|
-
flags |=
|
|
196
|
+
flags |= GIT_REFERENCE_FORMAT__VALIDATION_DISABLE;
|
|
197
197
|
|
|
198
198
|
return git_reference_normalize_name(out, GIT_REFNAME_MAX, name, flags);
|
|
199
199
|
}
|
|
@@ -205,7 +205,7 @@ int git_reference_lookup_resolved(
|
|
|
205
205
|
int max_nesting)
|
|
206
206
|
{
|
|
207
207
|
git_refname_t scan_name;
|
|
208
|
-
|
|
208
|
+
git_reference_t scan_type;
|
|
209
209
|
int error = 0, nesting;
|
|
210
210
|
git_reference *ref = NULL;
|
|
211
211
|
git_refdb *refdb;
|
|
@@ -219,7 +219,7 @@ int git_reference_lookup_resolved(
|
|
|
219
219
|
else if (max_nesting < 0)
|
|
220
220
|
max_nesting = DEFAULT_NESTING_LEVEL;
|
|
221
221
|
|
|
222
|
-
scan_type =
|
|
222
|
+
scan_type = GIT_REFERENCE_SYMBOLIC;
|
|
223
223
|
|
|
224
224
|
if ((error = reference_normalize_for_repo(scan_name, repo, name, true)) < 0)
|
|
225
225
|
return error;
|
|
@@ -228,7 +228,7 @@ int git_reference_lookup_resolved(
|
|
|
228
228
|
return error;
|
|
229
229
|
|
|
230
230
|
for (nesting = max_nesting;
|
|
231
|
-
nesting >= 0 && scan_type ==
|
|
231
|
+
nesting >= 0 && scan_type == GIT_REFERENCE_SYMBOLIC;
|
|
232
232
|
nesting--)
|
|
233
233
|
{
|
|
234
234
|
if (nesting != max_nesting) {
|
|
@@ -242,8 +242,8 @@ int git_reference_lookup_resolved(
|
|
|
242
242
|
scan_type = ref->type;
|
|
243
243
|
}
|
|
244
244
|
|
|
245
|
-
if (scan_type !=
|
|
246
|
-
|
|
245
|
+
if (scan_type != GIT_REFERENCE_DIRECT && max_nesting != 0) {
|
|
246
|
+
git_error_set(GIT_ERROR_REFERENCE,
|
|
247
247
|
"cannot resolve reference (>%u levels deep)", max_nesting);
|
|
248
248
|
git_reference_free(ref);
|
|
249
249
|
return -1;
|
|
@@ -339,12 +339,12 @@ int git_reference_dwim(git_reference **out, git_repository *repo, const char *re
|
|
|
339
339
|
cleanup:
|
|
340
340
|
if (error && !foundvalid) {
|
|
341
341
|
/* never found a valid reference name */
|
|
342
|
-
|
|
342
|
+
git_error_set(GIT_ERROR_REFERENCE,
|
|
343
343
|
"could not use '%s' as valid reference name", git_buf_cstr(&name));
|
|
344
344
|
}
|
|
345
345
|
|
|
346
346
|
if (error == GIT_ENOTFOUND)
|
|
347
|
-
|
|
347
|
+
git_error_set(GIT_ERROR_REFERENCE, "no reference found for shorthand '%s'", refname);
|
|
348
348
|
|
|
349
349
|
git_buf_dispose(&name);
|
|
350
350
|
git_buf_dispose(&refnamebuf);
|
|
@@ -354,7 +354,7 @@ cleanup:
|
|
|
354
354
|
/**
|
|
355
355
|
* Getters
|
|
356
356
|
*/
|
|
357
|
-
|
|
357
|
+
git_reference_t git_reference_type(const git_reference *ref)
|
|
358
358
|
{
|
|
359
359
|
assert(ref);
|
|
360
360
|
return ref->type;
|
|
@@ -376,7 +376,7 @@ const git_oid *git_reference_target(const git_reference *ref)
|
|
|
376
376
|
{
|
|
377
377
|
assert(ref);
|
|
378
378
|
|
|
379
|
-
if (ref->type !=
|
|
379
|
+
if (ref->type != GIT_REFERENCE_DIRECT)
|
|
380
380
|
return NULL;
|
|
381
381
|
|
|
382
382
|
return &ref->target.oid;
|
|
@@ -386,7 +386,7 @@ const git_oid *git_reference_target_peel(const git_reference *ref)
|
|
|
386
386
|
{
|
|
387
387
|
assert(ref);
|
|
388
388
|
|
|
389
|
-
if (ref->type !=
|
|
389
|
+
if (ref->type != GIT_REFERENCE_DIRECT || git_oid_is_zero(&ref->peel))
|
|
390
390
|
return NULL;
|
|
391
391
|
|
|
392
392
|
return &ref->peel;
|
|
@@ -396,7 +396,7 @@ const char *git_reference_symbolic_target(const git_reference *ref)
|
|
|
396
396
|
{
|
|
397
397
|
assert(ref);
|
|
398
398
|
|
|
399
|
-
if (ref->type !=
|
|
399
|
+
if (ref->type != GIT_REFERENCE_SYMBOLIC)
|
|
400
400
|
return NULL;
|
|
401
401
|
|
|
402
402
|
return ref->target.symbolic;
|
|
@@ -436,8 +436,8 @@ static int reference__create(
|
|
|
436
436
|
if (oid != NULL) {
|
|
437
437
|
assert(symbolic == NULL);
|
|
438
438
|
|
|
439
|
-
if (!git_object__is_valid(repo, oid,
|
|
440
|
-
|
|
439
|
+
if (!git_object__is_valid(repo, oid, GIT_OBJECT_ANY)) {
|
|
440
|
+
git_error_set(GIT_ERROR_REFERENCE,
|
|
441
441
|
"target OID for the reference doesn't exist on the repository");
|
|
442
442
|
return -1;
|
|
443
443
|
}
|
|
@@ -455,7 +455,7 @@ static int reference__create(
|
|
|
455
455
|
ref = git_reference__alloc_symbolic(normalized, normalized_target);
|
|
456
456
|
}
|
|
457
457
|
|
|
458
|
-
|
|
458
|
+
GIT_ERROR_CHECK_ALLOC(ref);
|
|
459
459
|
|
|
460
460
|
if ((error = git_refdb_write(refdb, ref, force, signature, log_message, old_id, old_target)) < 0) {
|
|
461
461
|
git_reference_free(ref);
|
|
@@ -566,10 +566,10 @@ int git_reference_symbolic_create(
|
|
|
566
566
|
|
|
567
567
|
static int ensure_is_an_updatable_direct_reference(git_reference *ref)
|
|
568
568
|
{
|
|
569
|
-
if (ref->type ==
|
|
569
|
+
if (ref->type == GIT_REFERENCE_DIRECT)
|
|
570
570
|
return 0;
|
|
571
571
|
|
|
572
|
-
|
|
572
|
+
git_error_set(GIT_ERROR_REFERENCE, "cannot set OID on symbolic reference");
|
|
573
573
|
return -1;
|
|
574
574
|
}
|
|
575
575
|
|
|
@@ -594,10 +594,10 @@ int git_reference_set_target(
|
|
|
594
594
|
|
|
595
595
|
static int ensure_is_an_updatable_symbolic_reference(git_reference *ref)
|
|
596
596
|
{
|
|
597
|
-
if (ref->type ==
|
|
597
|
+
if (ref->type == GIT_REFERENCE_SYMBOLIC)
|
|
598
598
|
return 0;
|
|
599
599
|
|
|
600
|
-
|
|
600
|
+
git_error_set(GIT_ERROR_REFERENCE, "cannot set symbolic target on a direct reference");
|
|
601
601
|
return -1;
|
|
602
602
|
}
|
|
603
603
|
|
|
@@ -631,7 +631,7 @@ static int update_wt_heads(git_repository *repo, const char *path, void *payload
|
|
|
631
631
|
int error;
|
|
632
632
|
|
|
633
633
|
if ((error = git_reference__read_head(&head, repo, path)) < 0) {
|
|
634
|
-
|
|
634
|
+
git_error_set(GIT_ERROR_REFERENCE, "could not read HEAD when renaming references");
|
|
635
635
|
goto out;
|
|
636
636
|
}
|
|
637
637
|
|
|
@@ -640,7 +640,7 @@ static int update_wt_heads(git_repository *repo, const char *path, void *payload
|
|
|
640
640
|
goto out;
|
|
641
641
|
}
|
|
642
642
|
|
|
643
|
-
if (git_reference_type(head) !=
|
|
643
|
+
if (git_reference_type(head) != GIT_REFERENCE_SYMBOLIC ||
|
|
644
644
|
git__strcmp(head->target.symbolic, data->old_name) != 0) {
|
|
645
645
|
error = 0;
|
|
646
646
|
goto out;
|
|
@@ -648,7 +648,7 @@ static int update_wt_heads(git_repository *repo, const char *path, void *payload
|
|
|
648
648
|
|
|
649
649
|
/* Update HEAD it was pointing to the reference being renamed */
|
|
650
650
|
if ((error = git_repository_create_head(gitdir, data->new_name)) < 0) {
|
|
651
|
-
|
|
651
|
+
git_error_set(GIT_ERROR_REFERENCE, "failed to update HEAD after renaming reference");
|
|
652
652
|
goto out;
|
|
653
653
|
}
|
|
654
654
|
|
|
@@ -692,7 +692,7 @@ static int reference__rename(git_reference **out, git_reference *ref, const char
|
|
|
692
692
|
payload.old_name = ref->name;
|
|
693
693
|
memcpy(&payload.new_name, &normalized, sizeof(normalized));
|
|
694
694
|
|
|
695
|
-
error = git_repository_foreach_head(repo, update_wt_heads, &payload);
|
|
695
|
+
error = git_repository_foreach_head(repo, update_wt_heads, 0, &payload);
|
|
696
696
|
}
|
|
697
697
|
|
|
698
698
|
return error;
|
|
@@ -709,6 +709,8 @@ int git_reference_rename(
|
|
|
709
709
|
git_signature *who;
|
|
710
710
|
int error;
|
|
711
711
|
|
|
712
|
+
assert(out && ref);
|
|
713
|
+
|
|
712
714
|
if ((error = git_reference__log_signature(&who, ref->db->repo)) < 0)
|
|
713
715
|
return error;
|
|
714
716
|
|
|
@@ -721,14 +723,14 @@ int git_reference_rename(
|
|
|
721
723
|
int git_reference_resolve(git_reference **ref_out, const git_reference *ref)
|
|
722
724
|
{
|
|
723
725
|
switch (git_reference_type(ref)) {
|
|
724
|
-
case
|
|
726
|
+
case GIT_REFERENCE_DIRECT:
|
|
725
727
|
return git_reference_lookup(ref_out, ref->db->repo, ref->name);
|
|
726
728
|
|
|
727
|
-
case
|
|
729
|
+
case GIT_REFERENCE_SYMBOLIC:
|
|
728
730
|
return git_reference_lookup_resolved(ref_out, ref->db->repo, ref->target.symbolic, -1);
|
|
729
731
|
|
|
730
732
|
default:
|
|
731
|
-
|
|
733
|
+
git_error_set(GIT_ERROR_REFERENCE, "invalid reference");
|
|
732
734
|
return -1;
|
|
733
735
|
}
|
|
734
736
|
}
|
|
@@ -747,7 +749,7 @@ int git_reference_foreach(
|
|
|
747
749
|
|
|
748
750
|
while (!(error = git_reference_next(&ref, iter))) {
|
|
749
751
|
if ((error = callback(ref, payload)) != 0) {
|
|
750
|
-
|
|
752
|
+
git_error_set_after_callback(error);
|
|
751
753
|
break;
|
|
752
754
|
}
|
|
753
755
|
}
|
|
@@ -773,7 +775,7 @@ int git_reference_foreach_name(
|
|
|
773
775
|
|
|
774
776
|
while (!(error = git_reference_next_name(&refname, iter))) {
|
|
775
777
|
if ((error = callback(refname, payload)) != 0) {
|
|
776
|
-
|
|
778
|
+
git_error_set_after_callback(error);
|
|
777
779
|
break;
|
|
778
780
|
}
|
|
779
781
|
}
|
|
@@ -800,7 +802,7 @@ int git_reference_foreach_glob(
|
|
|
800
802
|
|
|
801
803
|
while (!(error = git_reference_next_name(&refname, iter))) {
|
|
802
804
|
if ((error = callback(refname, payload)) != 0) {
|
|
803
|
-
|
|
805
|
+
git_error_set_after_callback(error);
|
|
804
806
|
break;
|
|
805
807
|
}
|
|
806
808
|
}
|
|
@@ -854,7 +856,7 @@ void git_reference_iterator_free(git_reference_iterator *iter)
|
|
|
854
856
|
static int cb__reflist_add(const char *ref, void *data)
|
|
855
857
|
{
|
|
856
858
|
char *name = git__strdup(ref);
|
|
857
|
-
|
|
859
|
+
GIT_ERROR_CHECK_ALLOC(name);
|
|
858
860
|
return git_vector_insert((git_vector *)data, name);
|
|
859
861
|
}
|
|
860
862
|
|
|
@@ -895,14 +897,13 @@ static int is_valid_ref_char(char ch)
|
|
|
895
897
|
case '\\':
|
|
896
898
|
case '?':
|
|
897
899
|
case '[':
|
|
898
|
-
case '*':
|
|
899
900
|
return 0;
|
|
900
901
|
default:
|
|
901
902
|
return 1;
|
|
902
903
|
}
|
|
903
904
|
}
|
|
904
905
|
|
|
905
|
-
static int ensure_segment_validity(const char *name)
|
|
906
|
+
static int ensure_segment_validity(const char *name, char may_contain_glob)
|
|
906
907
|
{
|
|
907
908
|
const char *current = name;
|
|
908
909
|
char prev = '\0';
|
|
@@ -925,6 +926,12 @@ static int ensure_segment_validity(const char *name)
|
|
|
925
926
|
if (prev == '@' && *current == '{')
|
|
926
927
|
return -1; /* Refname contains "@{" */
|
|
927
928
|
|
|
929
|
+
if (*current == '*') {
|
|
930
|
+
if (!may_contain_glob)
|
|
931
|
+
return -1;
|
|
932
|
+
may_contain_glob = 0;
|
|
933
|
+
}
|
|
934
|
+
|
|
928
935
|
prev = *current;
|
|
929
936
|
}
|
|
930
937
|
|
|
@@ -968,7 +975,7 @@ int git_reference__normalize_name(
|
|
|
968
975
|
int segment_len, segments_count = 0, error = GIT_EINVALIDSPEC;
|
|
969
976
|
unsigned int process_flags;
|
|
970
977
|
bool normalize = (buf != NULL);
|
|
971
|
-
bool validate = (flags &
|
|
978
|
+
bool validate = (flags & GIT_REFERENCE_FORMAT__VALIDATION_DISABLE) == 0;
|
|
972
979
|
|
|
973
980
|
#ifdef GIT_USE_ICONV
|
|
974
981
|
git_path_iconv_t ic = GIT_PATH_ICONV_INIT;
|
|
@@ -986,7 +993,7 @@ int git_reference__normalize_name(
|
|
|
986
993
|
git_buf_clear(buf);
|
|
987
994
|
|
|
988
995
|
#ifdef GIT_USE_ICONV
|
|
989
|
-
if ((flags &
|
|
996
|
+
if ((flags & GIT_REFERENCE_FORMAT__PRECOMPOSE_UNICODE) != 0) {
|
|
990
997
|
size_t namelen = strlen(current);
|
|
991
998
|
if ((error = git_path_iconv_init_precompose(&ic)) < 0 ||
|
|
992
999
|
(error = git_path_iconv(&ic, ¤t, &namelen)) < 0)
|
|
@@ -1003,19 +1010,20 @@ int git_reference__normalize_name(
|
|
|
1003
1010
|
}
|
|
1004
1011
|
|
|
1005
1012
|
while (true) {
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
/* Accept one wildcard as a full refname component. */
|
|
1012
|
-
process_flags &= ~GIT_REF_FORMAT_REFSPEC_PATTERN;
|
|
1013
|
-
segment_len = 1;
|
|
1014
|
-
} else
|
|
1015
|
-
goto cleanup;
|
|
1016
|
-
}
|
|
1013
|
+
char may_contain_glob = process_flags & GIT_REFERENCE_FORMAT_REFSPEC_PATTERN;
|
|
1014
|
+
|
|
1015
|
+
segment_len = ensure_segment_validity(current, may_contain_glob);
|
|
1016
|
+
if (segment_len < 0)
|
|
1017
|
+
goto cleanup;
|
|
1017
1018
|
|
|
1018
1019
|
if (segment_len > 0) {
|
|
1020
|
+
/*
|
|
1021
|
+
* There may only be one glob in a pattern, thus we reset
|
|
1022
|
+
* the pattern-flag in case the current segment has one.
|
|
1023
|
+
*/
|
|
1024
|
+
if (memchr(current, '*', segment_len))
|
|
1025
|
+
process_flags &= ~GIT_REFERENCE_FORMAT_REFSPEC_PATTERN;
|
|
1026
|
+
|
|
1019
1027
|
if (normalize) {
|
|
1020
1028
|
size_t cur_len = git_buf_len(buf);
|
|
1021
1029
|
|
|
@@ -1054,13 +1062,13 @@ int git_reference__normalize_name(
|
|
|
1054
1062
|
if (current[segment_len - 1] == '/')
|
|
1055
1063
|
goto cleanup;
|
|
1056
1064
|
|
|
1057
|
-
if ((segments_count == 1 ) && !(flags &
|
|
1065
|
+
if ((segments_count == 1 ) && !(flags & GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL))
|
|
1058
1066
|
goto cleanup;
|
|
1059
1067
|
|
|
1060
1068
|
if ((segments_count == 1 ) &&
|
|
1061
|
-
!(flags &
|
|
1069
|
+
!(flags & GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND) &&
|
|
1062
1070
|
!(is_all_caps_and_underscore(name, (size_t)segment_len) ||
|
|
1063
|
-
((flags &
|
|
1071
|
+
((flags & GIT_REFERENCE_FORMAT_REFSPEC_PATTERN) && !strcmp("*", name))))
|
|
1064
1072
|
goto cleanup;
|
|
1065
1073
|
|
|
1066
1074
|
if ((segments_count > 1)
|
|
@@ -1071,8 +1079,8 @@ int git_reference__normalize_name(
|
|
|
1071
1079
|
|
|
1072
1080
|
cleanup:
|
|
1073
1081
|
if (error == GIT_EINVALIDSPEC)
|
|
1074
|
-
|
|
1075
|
-
|
|
1082
|
+
git_error_set(
|
|
1083
|
+
GIT_ERROR_REFERENCE,
|
|
1076
1084
|
"the given reference name '%s' is not valid", name);
|
|
1077
1085
|
|
|
1078
1086
|
if (error && normalize)
|
|
@@ -1098,8 +1106,8 @@ int git_reference_normalize_name(
|
|
|
1098
1106
|
goto cleanup;
|
|
1099
1107
|
|
|
1100
1108
|
if (git_buf_len(&buf) > buffer_size - 1) {
|
|
1101
|
-
|
|
1102
|
-
|
|
1109
|
+
git_error_set(
|
|
1110
|
+
GIT_ERROR_REFERENCE,
|
|
1103
1111
|
"the provided buffer is too short to hold the normalization of '%s'", name);
|
|
1104
1112
|
error = GIT_EBUFS;
|
|
1105
1113
|
goto cleanup;
|
|
@@ -1114,13 +1122,13 @@ cleanup:
|
|
|
1114
1122
|
return error;
|
|
1115
1123
|
}
|
|
1116
1124
|
|
|
1117
|
-
#define
|
|
1125
|
+
#define GIT_REFERENCE_TYPEMASK (GIT_REFERENCE_DIRECT | GIT_REFERENCE_SYMBOLIC)
|
|
1118
1126
|
|
|
1119
1127
|
int git_reference_cmp(
|
|
1120
1128
|
const git_reference *ref1,
|
|
1121
1129
|
const git_reference *ref2)
|
|
1122
1130
|
{
|
|
1123
|
-
|
|
1131
|
+
git_reference_t type1, type2;
|
|
1124
1132
|
assert(ref1 && ref2);
|
|
1125
1133
|
|
|
1126
1134
|
type1 = git_reference_type(ref1);
|
|
@@ -1128,9 +1136,9 @@ int git_reference_cmp(
|
|
|
1128
1136
|
|
|
1129
1137
|
/* let's put symbolic refs before OIDs */
|
|
1130
1138
|
if (type1 != type2)
|
|
1131
|
-
return (type1 ==
|
|
1139
|
+
return (type1 == GIT_REFERENCE_SYMBOLIC) ? -1 : 1;
|
|
1132
1140
|
|
|
1133
|
-
if (type1 ==
|
|
1141
|
+
if (type1 == GIT_REFERENCE_SYMBOLIC)
|
|
1134
1142
|
return strcmp(ref1->target.symbolic, ref2->target.symbolic);
|
|
1135
1143
|
|
|
1136
1144
|
return git_oid__cmp(&ref1->target.oid, &ref2->target.oid);
|
|
@@ -1146,7 +1154,7 @@ static int get_terminal(git_reference **out, git_repository *repo, const char *r
|
|
|
1146
1154
|
int error = 0;
|
|
1147
1155
|
|
|
1148
1156
|
if (nesting > MAX_NESTING_LEVEL) {
|
|
1149
|
-
|
|
1157
|
+
git_error_set(GIT_ERROR_REFERENCE, "reference chain too deep (%d)", nesting);
|
|
1150
1158
|
return GIT_ENOTFOUND;
|
|
1151
1159
|
}
|
|
1152
1160
|
|
|
@@ -1156,7 +1164,7 @@ static int get_terminal(git_reference **out, git_repository *repo, const char *r
|
|
|
1156
1164
|
return error;
|
|
1157
1165
|
}
|
|
1158
1166
|
|
|
1159
|
-
if (git_reference_type(ref) ==
|
|
1167
|
+
if (git_reference_type(ref) == GIT_REFERENCE_DIRECT) {
|
|
1160
1168
|
*out = ref;
|
|
1161
1169
|
error = 0;
|
|
1162
1170
|
} else {
|
|
@@ -1195,16 +1203,16 @@ int git_reference__update_terminal(
|
|
|
1195
1203
|
|
|
1196
1204
|
/* found a dangling symref */
|
|
1197
1205
|
if (error == GIT_ENOTFOUND && ref) {
|
|
1198
|
-
assert(git_reference_type(ref) ==
|
|
1199
|
-
|
|
1206
|
+
assert(git_reference_type(ref) == GIT_REFERENCE_SYMBOLIC);
|
|
1207
|
+
git_error_clear();
|
|
1200
1208
|
error = reference__create(&ref2, repo, ref->target.symbolic, oid, NULL, 0, to_use,
|
|
1201
1209
|
log_message, NULL, NULL);
|
|
1202
1210
|
} else if (error == GIT_ENOTFOUND) {
|
|
1203
|
-
|
|
1211
|
+
git_error_clear();
|
|
1204
1212
|
error = reference__create(&ref2, repo, ref_name, oid, NULL, 0, to_use,
|
|
1205
1213
|
log_message, NULL, NULL);
|
|
1206
1214
|
} else if (error == 0) {
|
|
1207
|
-
assert(git_reference_type(ref) ==
|
|
1215
|
+
assert(git_reference_type(ref) == GIT_REFERENCE_DIRECT);
|
|
1208
1216
|
error = reference__create(&ref2, repo, ref->name, oid, NULL, 1, to_use,
|
|
1209
1217
|
log_message, &ref->target.oid, NULL);
|
|
1210
1218
|
}
|
|
@@ -1337,30 +1345,33 @@ int git_reference_is_note(const git_reference *ref)
|
|
|
1337
1345
|
return git_reference__is_note(ref->name);
|
|
1338
1346
|
}
|
|
1339
1347
|
|
|
1340
|
-
static int peel_error(int error, git_reference *ref, const char* msg)
|
|
1348
|
+
static int peel_error(int error, const git_reference *ref, const char* msg)
|
|
1341
1349
|
{
|
|
1342
|
-
|
|
1343
|
-
|
|
1350
|
+
git_error_set(
|
|
1351
|
+
GIT_ERROR_INVALID,
|
|
1344
1352
|
"the reference '%s' cannot be peeled - %s", git_reference_name(ref), msg);
|
|
1345
1353
|
return error;
|
|
1346
1354
|
}
|
|
1347
1355
|
|
|
1348
1356
|
int git_reference_peel(
|
|
1349
1357
|
git_object **peeled,
|
|
1350
|
-
git_reference *ref,
|
|
1351
|
-
|
|
1358
|
+
const git_reference *ref,
|
|
1359
|
+
git_object_t target_type)
|
|
1352
1360
|
{
|
|
1353
|
-
git_reference *resolved = NULL;
|
|
1361
|
+
const git_reference *resolved = NULL;
|
|
1362
|
+
git_reference *allocated = NULL;
|
|
1354
1363
|
git_object *target = NULL;
|
|
1355
1364
|
int error;
|
|
1356
1365
|
|
|
1357
1366
|
assert(ref);
|
|
1358
1367
|
|
|
1359
|
-
if (ref->type ==
|
|
1368
|
+
if (ref->type == GIT_REFERENCE_DIRECT) {
|
|
1360
1369
|
resolved = ref;
|
|
1361
1370
|
} else {
|
|
1362
|
-
if ((error = git_reference_resolve(&
|
|
1371
|
+
if ((error = git_reference_resolve(&allocated, ref)) < 0)
|
|
1363
1372
|
return peel_error(error, ref, "Cannot resolve reference");
|
|
1373
|
+
|
|
1374
|
+
resolved = allocated;
|
|
1364
1375
|
}
|
|
1365
1376
|
|
|
1366
1377
|
/*
|
|
@@ -1369,12 +1380,12 @@ int git_reference_peel(
|
|
|
1369
1380
|
* to a commit. So we only want to use the peeled value
|
|
1370
1381
|
* if it is not zero and the target is not a tag.
|
|
1371
1382
|
*/
|
|
1372
|
-
if (target_type !=
|
|
1383
|
+
if (target_type != GIT_OBJECT_TAG && !git_oid_is_zero(&resolved->peel)) {
|
|
1373
1384
|
error = git_object_lookup(&target,
|
|
1374
|
-
git_reference_owner(ref), &resolved->peel,
|
|
1385
|
+
git_reference_owner(ref), &resolved->peel, GIT_OBJECT_ANY);
|
|
1375
1386
|
} else {
|
|
1376
1387
|
error = git_object_lookup(&target,
|
|
1377
|
-
git_reference_owner(ref), &resolved->target.oid,
|
|
1388
|
+
git_reference_owner(ref), &resolved->target.oid, GIT_OBJECT_ANY);
|
|
1378
1389
|
}
|
|
1379
1390
|
|
|
1380
1391
|
if (error < 0) {
|
|
@@ -1382,16 +1393,14 @@ int git_reference_peel(
|
|
|
1382
1393
|
goto cleanup;
|
|
1383
1394
|
}
|
|
1384
1395
|
|
|
1385
|
-
if (target_type ==
|
|
1396
|
+
if (target_type == GIT_OBJECT_ANY && git_object_type(target) != GIT_OBJECT_TAG)
|
|
1386
1397
|
error = git_object_dup(peeled, target);
|
|
1387
1398
|
else
|
|
1388
1399
|
error = git_object_peel(peeled, target, target_type);
|
|
1389
1400
|
|
|
1390
1401
|
cleanup:
|
|
1391
1402
|
git_object_free(target);
|
|
1392
|
-
|
|
1393
|
-
if (resolved != ref)
|
|
1394
|
-
git_reference_free(resolved);
|
|
1403
|
+
git_reference_free(allocated);
|
|
1395
1404
|
|
|
1396
1405
|
return error;
|
|
1397
1406
|
}
|
|
@@ -1399,7 +1408,7 @@ cleanup:
|
|
|
1399
1408
|
int git_reference__is_valid_name(const char *refname, unsigned int flags)
|
|
1400
1409
|
{
|
|
1401
1410
|
if (git_reference__normalize_name(NULL, refname, flags) < 0) {
|
|
1402
|
-
|
|
1411
|
+
git_error_clear();
|
|
1403
1412
|
return false;
|
|
1404
1413
|
}
|
|
1405
1414
|
|
|
@@ -1408,7 +1417,7 @@ int git_reference__is_valid_name(const char *refname, unsigned int flags)
|
|
|
1408
1417
|
|
|
1409
1418
|
int git_reference_is_valid_name(const char *refname)
|
|
1410
1419
|
{
|
|
1411
|
-
return git_reference__is_valid_name(refname,
|
|
1420
|
+
return git_reference__is_valid_name(refname, GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL);
|
|
1412
1421
|
}
|
|
1413
1422
|
|
|
1414
1423
|
const char *git_reference__shorthand(const char *name)
|
|
@@ -1430,3 +1439,27 @@ const char *git_reference_shorthand(const git_reference *ref)
|
|
|
1430
1439
|
{
|
|
1431
1440
|
return git_reference__shorthand(ref->name);
|
|
1432
1441
|
}
|
|
1442
|
+
|
|
1443
|
+
int git_reference__is_unborn_head(bool *unborn, const git_reference *ref, git_repository *repo)
|
|
1444
|
+
{
|
|
1445
|
+
int error;
|
|
1446
|
+
git_reference *tmp_ref;
|
|
1447
|
+
assert(unborn && ref && repo);
|
|
1448
|
+
|
|
1449
|
+
if (ref->type == GIT_REFERENCE_DIRECT) {
|
|
1450
|
+
*unborn = 0;
|
|
1451
|
+
return 0;
|
|
1452
|
+
}
|
|
1453
|
+
|
|
1454
|
+
error = git_reference_lookup_resolved(&tmp_ref, repo, ref->name, -1);
|
|
1455
|
+
git_reference_free(tmp_ref);
|
|
1456
|
+
|
|
1457
|
+
if (error != 0 && error != GIT_ENOTFOUND)
|
|
1458
|
+
return error;
|
|
1459
|
+
else if (error == GIT_ENOTFOUND && git__strcmp(ref->name, GIT_HEAD_FILE) == 0)
|
|
1460
|
+
*unborn = true;
|
|
1461
|
+
else
|
|
1462
|
+
*unborn = false;
|
|
1463
|
+
|
|
1464
|
+
return 0;
|
|
1465
|
+
}
|
data/vendor/libgit2/src/refs.h
CHANGED
|
@@ -55,8 +55,8 @@ extern bool git_reference__enable_symbolic_ref_target_validation;
|
|
|
55
55
|
#define GIT_STASH_FILE "stash"
|
|
56
56
|
#define GIT_REFS_STASH_FILE GIT_REFS_DIR GIT_STASH_FILE
|
|
57
57
|
|
|
58
|
-
#define
|
|
59
|
-
#define
|
|
58
|
+
#define GIT_REFERENCE_FORMAT__PRECOMPOSE_UNICODE (1u << 16)
|
|
59
|
+
#define GIT_REFERENCE_FORMAT__VALIDATION_DISABLE (1u << 15)
|
|
60
60
|
|
|
61
61
|
#define GIT_REFNAME_MAX 1024
|
|
62
62
|
|
|
@@ -64,7 +64,7 @@ typedef char git_refname_t[GIT_REFNAME_MAX];
|
|
|
64
64
|
|
|
65
65
|
struct git_reference {
|
|
66
66
|
git_refdb *db;
|
|
67
|
-
|
|
67
|
+
git_reference_t type;
|
|
68
68
|
|
|
69
69
|
union {
|
|
70
70
|
git_oid oid;
|
|
@@ -136,4 +136,6 @@ int git_reference__update_for_commit(
|
|
|
136
136
|
const git_oid *id,
|
|
137
137
|
const char *operation);
|
|
138
138
|
|
|
139
|
+
int git_reference__is_unborn_head(bool *unborn, const git_reference *ref, git_repository *repo);
|
|
140
|
+
|
|
139
141
|
#endif
|