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/merge.c
CHANGED
|
@@ -80,7 +80,7 @@ int merge_bases_many(git_commit_list **out, git_revwalk **walk_out, git_reposito
|
|
|
80
80
|
unsigned int i;
|
|
81
81
|
|
|
82
82
|
if (length < 2) {
|
|
83
|
-
|
|
83
|
+
git_error_set(GIT_ERROR_INVALID, "at least two commits are required to find an ancestor");
|
|
84
84
|
return -1;
|
|
85
85
|
}
|
|
86
86
|
|
|
@@ -106,7 +106,7 @@ int merge_bases_many(git_commit_list **out, git_revwalk **walk_out, git_reposito
|
|
|
106
106
|
goto on_error;
|
|
107
107
|
|
|
108
108
|
if (!result) {
|
|
109
|
-
|
|
109
|
+
git_error_set(GIT_ERROR_MERGE, "no merge base found");
|
|
110
110
|
error = GIT_ENOTFOUND;
|
|
111
111
|
goto on_error;
|
|
112
112
|
}
|
|
@@ -186,7 +186,7 @@ int git_merge_base_octopus(git_oid *out, git_repository *repo, size_t length, co
|
|
|
186
186
|
assert(out && repo && input_array);
|
|
187
187
|
|
|
188
188
|
if (length < 2) {
|
|
189
|
-
|
|
189
|
+
git_error_set(GIT_ERROR_INVALID, "at least two commits are required to find an ancestor");
|
|
190
190
|
return -1;
|
|
191
191
|
}
|
|
192
192
|
|
|
@@ -232,7 +232,7 @@ static int merge_bases(git_commit_list **out, git_revwalk **walk_out, git_reposi
|
|
|
232
232
|
|
|
233
233
|
if (!result) {
|
|
234
234
|
git_revwalk_free(walk);
|
|
235
|
-
|
|
235
|
+
git_error_set(GIT_ERROR_MERGE, "no merge base found");
|
|
236
236
|
return GIT_ENOTFOUND;
|
|
237
237
|
}
|
|
238
238
|
|
|
@@ -310,46 +310,55 @@ static int interesting(git_pqueue *list)
|
|
|
310
310
|
return 0;
|
|
311
311
|
}
|
|
312
312
|
|
|
313
|
-
static
|
|
313
|
+
static int clear_commit_marks_1(git_commit_list **plist,
|
|
314
314
|
git_commit_list_node *commit, unsigned int mark)
|
|
315
315
|
{
|
|
316
316
|
while (commit) {
|
|
317
317
|
unsigned int i;
|
|
318
318
|
|
|
319
319
|
if (!(mark & commit->flags))
|
|
320
|
-
return;
|
|
320
|
+
return 0;
|
|
321
321
|
|
|
322
322
|
commit->flags &= ~mark;
|
|
323
323
|
|
|
324
324
|
for (i = 1; i < commit->out_degree; i++) {
|
|
325
325
|
git_commit_list_node *p = commit->parents[i];
|
|
326
|
-
git_commit_list_insert(p, plist)
|
|
326
|
+
if (git_commit_list_insert(p, plist) == NULL)
|
|
327
|
+
return -1;
|
|
327
328
|
}
|
|
328
329
|
|
|
329
330
|
commit = commit->out_degree ? commit->parents[0] : NULL;
|
|
330
331
|
}
|
|
332
|
+
|
|
333
|
+
return 0;
|
|
331
334
|
}
|
|
332
335
|
|
|
333
|
-
static
|
|
336
|
+
static int clear_commit_marks_many(git_vector *commits, unsigned int mark)
|
|
334
337
|
{
|
|
335
338
|
git_commit_list *list = NULL;
|
|
336
339
|
git_commit_list_node *c;
|
|
337
340
|
unsigned int i;
|
|
338
341
|
|
|
339
342
|
git_vector_foreach(commits, i, c) {
|
|
340
|
-
git_commit_list_insert(c, &list)
|
|
343
|
+
if (git_commit_list_insert(c, &list) == NULL)
|
|
344
|
+
return -1;
|
|
341
345
|
}
|
|
342
346
|
|
|
343
347
|
while (list)
|
|
344
|
-
clear_commit_marks_1(&list, git_commit_list_pop(&list), mark)
|
|
348
|
+
if (clear_commit_marks_1(&list, git_commit_list_pop(&list), mark) < 0)
|
|
349
|
+
return -1;
|
|
350
|
+
return 0;
|
|
345
351
|
}
|
|
346
352
|
|
|
347
|
-
static
|
|
353
|
+
static int clear_commit_marks(git_commit_list_node *commit, unsigned int mark)
|
|
348
354
|
{
|
|
349
355
|
git_commit_list *list = NULL;
|
|
350
|
-
git_commit_list_insert(commit, &list)
|
|
356
|
+
if (git_commit_list_insert(commit, &list) == NULL)
|
|
357
|
+
return -1;
|
|
351
358
|
while (list)
|
|
352
|
-
clear_commit_marks_1(&list, git_commit_list_pop(&list), mark)
|
|
359
|
+
if (clear_commit_marks_1(&list, git_commit_list_pop(&list), mark) < 0)
|
|
360
|
+
return -1;
|
|
361
|
+
return 0;
|
|
353
362
|
}
|
|
354
363
|
|
|
355
364
|
static int paint_down_to_common(
|
|
@@ -426,9 +435,9 @@ static int remove_redundant(git_revwalk *walk, git_vector *commits)
|
|
|
426
435
|
int error = 0;
|
|
427
436
|
|
|
428
437
|
redundant = git__calloc(commits->length, 1);
|
|
429
|
-
|
|
438
|
+
GIT_ERROR_CHECK_ALLOC(redundant);
|
|
430
439
|
filled_index = git__calloc((commits->length - 1), sizeof(unsigned int));
|
|
431
|
-
|
|
440
|
+
GIT_ERROR_CHECK_ALLOC(filled_index);
|
|
432
441
|
|
|
433
442
|
for (i = 0; i < commits->length; ++i) {
|
|
434
443
|
if ((error = git_commit_list_parse(walk, commits->contents[i])) < 0)
|
|
@@ -466,10 +475,11 @@ static int remove_redundant(git_revwalk *walk, git_vector *commits)
|
|
|
466
475
|
redundant[filled_index[j]] = 1;
|
|
467
476
|
}
|
|
468
477
|
|
|
469
|
-
clear_commit_marks(commit, ALL_FLAGS);
|
|
470
|
-
clear_commit_marks_many(&work, ALL_FLAGS);
|
|
471
|
-
|
|
472
478
|
git_commit_list_free(&common);
|
|
479
|
+
|
|
480
|
+
if ((error = clear_commit_marks(commit, ALL_FLAGS)) < 0 ||
|
|
481
|
+
(error = clear_commit_marks_many(&work, ALL_FLAGS)) < 0)
|
|
482
|
+
goto done;
|
|
473
483
|
}
|
|
474
484
|
|
|
475
485
|
for (i = 0; i < commits->length; ++i) {
|
|
@@ -531,10 +541,9 @@ int git_merge__bases_many(git_commit_list **out, git_revwalk *walk, git_commit_l
|
|
|
531
541
|
while (result)
|
|
532
542
|
git_vector_insert(&redundant, git_commit_list_pop(&result));
|
|
533
543
|
|
|
534
|
-
clear_commit_marks(one, ALL_FLAGS)
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
if ((error = remove_redundant(walk, &redundant)) < 0) {
|
|
544
|
+
if ((error = clear_commit_marks(one, ALL_FLAGS)) < 0 ||
|
|
545
|
+
(error = clear_commit_marks_many(twos, ALL_FLAGS)) < 0 ||
|
|
546
|
+
(error = remove_redundant(walk, &redundant)) < 0) {
|
|
538
547
|
git_vector_free(&redundant);
|
|
539
548
|
return error;
|
|
540
549
|
}
|
|
@@ -576,7 +585,7 @@ int git_repository_mergehead_foreach(
|
|
|
576
585
|
|
|
577
586
|
while ((line = git__strsep(&buffer, "\n")) != NULL) {
|
|
578
587
|
if (strlen(line) != GIT_OID_HEXSZ) {
|
|
579
|
-
|
|
588
|
+
git_error_set(GIT_ERROR_INVALID, "unable to parse OID - invalid length");
|
|
580
589
|
error = -1;
|
|
581
590
|
goto cleanup;
|
|
582
591
|
}
|
|
@@ -585,7 +594,7 @@ int git_repository_mergehead_foreach(
|
|
|
585
594
|
goto cleanup;
|
|
586
595
|
|
|
587
596
|
if ((error = cb(&oid, payload)) != 0) {
|
|
588
|
-
|
|
597
|
+
git_error_set_after_callback(error);
|
|
589
598
|
goto cleanup;
|
|
590
599
|
}
|
|
591
600
|
|
|
@@ -593,7 +602,7 @@ int git_repository_mergehead_foreach(
|
|
|
593
602
|
}
|
|
594
603
|
|
|
595
604
|
if (*buffer) {
|
|
596
|
-
|
|
605
|
+
git_error_set(GIT_ERROR_MERGE, "no EOL at line %"PRIuZ, line_num);
|
|
597
606
|
error = -1;
|
|
598
607
|
goto cleanup;
|
|
599
608
|
}
|
|
@@ -859,18 +868,18 @@ static int merge_conflict_invoke_driver(
|
|
|
859
868
|
|
|
860
869
|
if ((error = driver->apply(driver, &path, &mode, &buf, name, src)) < 0 ||
|
|
861
870
|
(error = git_repository_odb(&odb, src->repo)) < 0 ||
|
|
862
|
-
(error = git_odb_write(&oid, odb, buf.ptr, buf.size,
|
|
871
|
+
(error = git_odb_write(&oid, odb, buf.ptr, buf.size, GIT_OBJECT_BLOB)) < 0)
|
|
863
872
|
goto done;
|
|
864
873
|
|
|
865
874
|
result = git_pool_mallocz(&diff_list->pool, sizeof(git_index_entry));
|
|
866
|
-
|
|
875
|
+
GIT_ERROR_CHECK_ALLOC(result);
|
|
867
876
|
|
|
868
877
|
git_oid_cpy(&result->id, &oid);
|
|
869
878
|
result->mode = mode;
|
|
870
|
-
result->file_size = buf.size;
|
|
879
|
+
result->file_size = (uint32_t)buf.size;
|
|
871
880
|
|
|
872
881
|
result->path = git_pool_strdup(&diff_list->pool, path);
|
|
873
|
-
|
|
882
|
+
GIT_ERROR_CHECK_ALLOC(result->path);
|
|
874
883
|
|
|
875
884
|
*out = result;
|
|
876
885
|
|
|
@@ -1015,7 +1024,7 @@ static int index_entry_similarity_calc(
|
|
|
1015
1024
|
{
|
|
1016
1025
|
git_blob *blob;
|
|
1017
1026
|
git_diff_file diff_file = {{{0}}};
|
|
1018
|
-
|
|
1027
|
+
git_object_size_t blobsize;
|
|
1019
1028
|
int error;
|
|
1020
1029
|
|
|
1021
1030
|
*out = NULL;
|
|
@@ -1084,7 +1093,7 @@ static int index_entry_similarity_inexact(
|
|
|
1084
1093
|
}
|
|
1085
1094
|
|
|
1086
1095
|
/* Tracks deletes by oid for merge_diff_mark_similarity_exact(). This is a
|
|
1087
|
-
* non-shrinking queue where next_pos is the next position to dequeue.
|
|
1096
|
+
* non-shrinking queue where next_pos is the next position to dequeue.
|
|
1088
1097
|
*/
|
|
1089
1098
|
typedef struct {
|
|
1090
1099
|
git_array_t(size_t) arr;
|
|
@@ -1104,46 +1113,38 @@ static void deletes_by_oid_free(git_oidmap *map) {
|
|
|
1104
1113
|
git_oidmap_free(map);
|
|
1105
1114
|
}
|
|
1106
1115
|
|
|
1107
|
-
static int deletes_by_oid_enqueue(git_oidmap *map, git_pool* pool, const git_oid *id, size_t idx)
|
|
1108
|
-
|
|
1116
|
+
static int deletes_by_oid_enqueue(git_oidmap *map, git_pool* pool, const git_oid *id, size_t idx)
|
|
1117
|
+
{
|
|
1109
1118
|
deletes_by_oid_queue *queue;
|
|
1110
1119
|
size_t *array_entry;
|
|
1111
|
-
int error;
|
|
1112
1120
|
|
|
1113
|
-
|
|
1114
|
-
if (!git_oidmap_valid_index(map, pos)) {
|
|
1121
|
+
if ((queue = git_oidmap_get(map, id)) == NULL) {
|
|
1115
1122
|
queue = git_pool_malloc(pool, sizeof(deletes_by_oid_queue));
|
|
1116
|
-
|
|
1123
|
+
GIT_ERROR_CHECK_ALLOC(queue);
|
|
1117
1124
|
|
|
1118
1125
|
git_array_init(queue->arr);
|
|
1119
1126
|
queue->next_pos = 0;
|
|
1120
1127
|
queue->first_entry = idx;
|
|
1121
1128
|
|
|
1122
|
-
|
|
1123
|
-
if (error < 0)
|
|
1129
|
+
if (git_oidmap_set(map, id, queue) < 0)
|
|
1124
1130
|
return -1;
|
|
1125
1131
|
} else {
|
|
1126
|
-
queue = git_oidmap_value_at(map, pos);
|
|
1127
1132
|
array_entry = git_array_alloc(queue->arr);
|
|
1128
|
-
|
|
1133
|
+
GIT_ERROR_CHECK_ALLOC(array_entry);
|
|
1129
1134
|
*array_entry = idx;
|
|
1130
1135
|
}
|
|
1131
1136
|
|
|
1132
1137
|
return 0;
|
|
1133
1138
|
}
|
|
1134
1139
|
|
|
1135
|
-
static int deletes_by_oid_dequeue(size_t *idx, git_oidmap *map, const git_oid *id)
|
|
1136
|
-
|
|
1140
|
+
static int deletes_by_oid_dequeue(size_t *idx, git_oidmap *map, const git_oid *id)
|
|
1141
|
+
{
|
|
1137
1142
|
deletes_by_oid_queue *queue;
|
|
1138
1143
|
size_t *array_entry;
|
|
1139
1144
|
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
if (!git_oidmap_valid_index(map, pos))
|
|
1145
|
+
if ((queue = git_oidmap_get(map, id)) == NULL)
|
|
1143
1146
|
return GIT_ENOTFOUND;
|
|
1144
1147
|
|
|
1145
|
-
queue = git_oidmap_value_at(map, pos);
|
|
1146
|
-
|
|
1147
1148
|
if (queue->next_pos == 0) {
|
|
1148
1149
|
*idx = queue->first_entry;
|
|
1149
1150
|
} else {
|
|
@@ -1168,8 +1169,8 @@ static int merge_diff_mark_similarity_exact(
|
|
|
1168
1169
|
git_oidmap *ours_deletes_by_oid = NULL, *theirs_deletes_by_oid = NULL;
|
|
1169
1170
|
int error = 0;
|
|
1170
1171
|
|
|
1171
|
-
if (
|
|
1172
|
-
|
|
1172
|
+
if (git_oidmap_new(&ours_deletes_by_oid) < 0 ||
|
|
1173
|
+
git_oidmap_new(&theirs_deletes_by_oid) < 0) {
|
|
1173
1174
|
error = -1;
|
|
1174
1175
|
goto done;
|
|
1175
1176
|
}
|
|
@@ -1510,11 +1511,11 @@ int git_merge_diff_list__find_renames(
|
|
|
1510
1511
|
|
|
1511
1512
|
similarity_ours = git__calloc(diff_list->conflicts.length,
|
|
1512
1513
|
sizeof(struct merge_diff_similarity));
|
|
1513
|
-
|
|
1514
|
+
GIT_ERROR_CHECK_ALLOC(similarity_ours);
|
|
1514
1515
|
|
|
1515
1516
|
similarity_theirs = git__calloc(diff_list->conflicts.length,
|
|
1516
1517
|
sizeof(struct merge_diff_similarity));
|
|
1517
|
-
|
|
1518
|
+
GIT_ERROR_CHECK_ALLOC(similarity_theirs);
|
|
1518
1519
|
|
|
1519
1520
|
/* Calculate similarity between items that were deleted from the ancestor
|
|
1520
1521
|
* and added in the other branch.
|
|
@@ -1523,9 +1524,9 @@ int git_merge_diff_list__find_renames(
|
|
|
1523
1524
|
goto done;
|
|
1524
1525
|
|
|
1525
1526
|
if (opts->rename_threshold < 100 && diff_list->conflicts.length <= opts->target_limit) {
|
|
1526
|
-
|
|
1527
|
+
GIT_ERROR_CHECK_ALLOC_MULTIPLY(&cache_size, diff_list->conflicts.length, 3);
|
|
1527
1528
|
cache = git__calloc(cache_size, sizeof(void *));
|
|
1528
|
-
|
|
1529
|
+
GIT_ERROR_CHECK_ALLOC(cache);
|
|
1529
1530
|
|
|
1530
1531
|
merge_diff_list_count_candidates(diff_list, &src_count, &tgt_count);
|
|
1531
1532
|
|
|
@@ -1739,7 +1740,7 @@ static int merge_diff_list_insert_unmodified(
|
|
|
1739
1740
|
git_index_entry *entry;
|
|
1740
1741
|
|
|
1741
1742
|
entry = git_pool_malloc(&diff_list->pool, sizeof(git_index_entry));
|
|
1742
|
-
|
|
1743
|
+
GIT_ERROR_CHECK_ALLOC(entry);
|
|
1743
1744
|
|
|
1744
1745
|
if ((error = index_entry_dup_pool(entry, &diff_list->pool, tree_items[0])) >= 0)
|
|
1745
1746
|
error = git_vector_insert(&diff_list->staged, entry);
|
|
@@ -1846,13 +1847,13 @@ static int merge_normalize_opts(
|
|
|
1846
1847
|
|
|
1847
1848
|
if (given && given->default_driver) {
|
|
1848
1849
|
opts->default_driver = git__strdup(given->default_driver);
|
|
1849
|
-
|
|
1850
|
+
GIT_ERROR_CHECK_ALLOC(opts->default_driver);
|
|
1850
1851
|
} else {
|
|
1851
1852
|
error = git_config_get_entry(&entry, cfg, "merge.default");
|
|
1852
1853
|
|
|
1853
1854
|
if (error == 0) {
|
|
1854
1855
|
opts->default_driver = git__strdup(entry->value);
|
|
1855
|
-
|
|
1856
|
+
GIT_ERROR_CHECK_ALLOC(opts->default_driver);
|
|
1856
1857
|
} else if (error == GIT_ENOTFOUND) {
|
|
1857
1858
|
error = 0;
|
|
1858
1859
|
} else {
|
|
@@ -1873,7 +1874,7 @@ static int merge_normalize_opts(
|
|
|
1873
1874
|
/* assign the internal metric with whitespace flag as payload */
|
|
1874
1875
|
if (!opts->metric) {
|
|
1875
1876
|
opts->metric = git__malloc(sizeof(git_diff_similarity_metric));
|
|
1876
|
-
|
|
1877
|
+
GIT_ERROR_CHECK_ALLOC(opts->metric);
|
|
1877
1878
|
|
|
1878
1879
|
opts->metric->file_signature = git_diff_find_similar__hashsig_for_file;
|
|
1879
1880
|
opts->metric->buffer_signature = git_diff_find_similar__hashsig_for_buf;
|
|
@@ -2060,7 +2061,7 @@ int git_merge__iterators(
|
|
|
2060
2061
|
|
|
2061
2062
|
*out = NULL;
|
|
2062
2063
|
|
|
2063
|
-
|
|
2064
|
+
GIT_ERROR_CHECK_VERSION(
|
|
2064
2065
|
given_opts, GIT_MERGE_OPTIONS_VERSION, "git_merge_options");
|
|
2065
2066
|
|
|
2066
2067
|
if ((error = merge_normalize_opts(repo, &opts, given_opts)) < 0)
|
|
@@ -2079,7 +2080,7 @@ int git_merge__iterators(
|
|
|
2079
2080
|
}
|
|
2080
2081
|
|
|
2081
2082
|
diff_list = git_merge_diff_list__alloc(repo);
|
|
2082
|
-
|
|
2083
|
+
GIT_ERROR_CHECK_ALLOC(diff_list);
|
|
2083
2084
|
|
|
2084
2085
|
ancestor_iter = iterator_given_or_empty(&empty_ancestor, ancestor_iter);
|
|
2085
2086
|
our_iter = iterator_given_or_empty(&empty_ours, our_iter);
|
|
@@ -2102,7 +2103,7 @@ int git_merge__iterators(
|
|
|
2102
2103
|
|
|
2103
2104
|
if (!resolved) {
|
|
2104
2105
|
if ((opts.flags & GIT_MERGE_FAIL_ON_CONFLICT)) {
|
|
2105
|
-
|
|
2106
|
+
git_error_set(GIT_ERROR_MERGE, "merge conflicts exist");
|
|
2106
2107
|
error = GIT_EMERGECONFLICT;
|
|
2107
2108
|
goto done;
|
|
2108
2109
|
}
|
|
@@ -2199,13 +2200,13 @@ GIT_INLINE(int) insert_head_ids(
|
|
|
2199
2200
|
|
|
2200
2201
|
if (annotated_commit->type == GIT_ANNOTATED_COMMIT_REAL) {
|
|
2201
2202
|
id = git_array_alloc(*ids);
|
|
2202
|
-
|
|
2203
|
+
GIT_ERROR_CHECK_ALLOC(id);
|
|
2203
2204
|
|
|
2204
2205
|
git_oid_cpy(id, git_commit_id(annotated_commit->commit));
|
|
2205
2206
|
} else {
|
|
2206
2207
|
for (i = 0; i < annotated_commit->parents.size; i++) {
|
|
2207
2208
|
id = git_array_alloc(*ids);
|
|
2208
|
-
|
|
2209
|
+
GIT_ERROR_CHECK_ALLOC(id);
|
|
2209
2210
|
|
|
2210
2211
|
git_oid_cpy(id, &annotated_commit->parents.ptr[i]);
|
|
2211
2212
|
}
|
|
@@ -2240,7 +2241,7 @@ static int create_virtual_base(
|
|
|
2240
2241
|
return -1;
|
|
2241
2242
|
|
|
2242
2243
|
result = git__calloc(1, sizeof(git_annotated_commit));
|
|
2243
|
-
|
|
2244
|
+
GIT_ERROR_CHECK_ALLOC(result);
|
|
2244
2245
|
result->type = GIT_ANNOTATED_COMMIT_VIRTUAL;
|
|
2245
2246
|
result->index = index;
|
|
2246
2247
|
|
|
@@ -2368,7 +2369,7 @@ static int merge_annotated_commits(
|
|
|
2368
2369
|
if (error != GIT_ENOTFOUND)
|
|
2369
2370
|
goto done;
|
|
2370
2371
|
|
|
2371
|
-
|
|
2372
|
+
git_error_clear();
|
|
2372
2373
|
}
|
|
2373
2374
|
|
|
2374
2375
|
if ((error = iterator_for_annotated_commit(&base_iter, base)) < 0 ||
|
|
@@ -2430,7 +2431,7 @@ static int write_merge_head(
|
|
|
2430
2431
|
assert(repo && heads);
|
|
2431
2432
|
|
|
2432
2433
|
if ((error = git_buf_joinpath(&file_path, repo->gitdir, GIT_MERGE_HEAD_FILE)) < 0 ||
|
|
2433
|
-
(error = git_filebuf_open(&file, file_path.ptr,
|
|
2434
|
+
(error = git_filebuf_open(&file, file_path.ptr, GIT_FILEBUF_CREATE_LEADING_DIRS, GIT_MERGE_FILE_MODE)) < 0)
|
|
2434
2435
|
goto cleanup;
|
|
2435
2436
|
|
|
2436
2437
|
for (i = 0; i < heads_len; i++) {
|
|
@@ -2458,7 +2459,7 @@ static int write_merge_mode(git_repository *repo)
|
|
|
2458
2459
|
assert(repo);
|
|
2459
2460
|
|
|
2460
2461
|
if ((error = git_buf_joinpath(&file_path, repo->gitdir, GIT_MERGE_MODE_FILE)) < 0 ||
|
|
2461
|
-
(error = git_filebuf_open(&file, file_path.ptr,
|
|
2462
|
+
(error = git_filebuf_open(&file, file_path.ptr, GIT_FILEBUF_CREATE_LEADING_DIRS, GIT_MERGE_FILE_MODE)) < 0)
|
|
2462
2463
|
goto cleanup;
|
|
2463
2464
|
|
|
2464
2465
|
if ((error = git_filebuf_write(&file, "no-ff", 5)) < 0)
|
|
@@ -2678,7 +2679,7 @@ static int write_merge_msg(
|
|
|
2678
2679
|
assert(repo && heads);
|
|
2679
2680
|
|
|
2680
2681
|
entries = git__calloc(heads_len, sizeof(struct merge_msg_entry));
|
|
2681
|
-
|
|
2682
|
+
GIT_ERROR_CHECK_ALLOC(entries);
|
|
2682
2683
|
|
|
2683
2684
|
if (git_vector_init(&matching, heads_len, NULL) < 0) {
|
|
2684
2685
|
git__free(entries);
|
|
@@ -2689,7 +2690,7 @@ static int write_merge_msg(
|
|
|
2689
2690
|
entries[i].merge_head = heads[i];
|
|
2690
2691
|
|
|
2691
2692
|
if ((error = git_buf_joinpath(&file_path, repo->gitdir, GIT_MERGE_MSG_FILE)) < 0 ||
|
|
2692
|
-
(error = git_filebuf_open(&file, file_path.ptr,
|
|
2693
|
+
(error = git_filebuf_open(&file, file_path.ptr, GIT_FILEBUF_CREATE_LEADING_DIRS, GIT_MERGE_FILE_MODE)) < 0 ||
|
|
2693
2694
|
(error = git_filebuf_write(&file, "Merge ", 6)) < 0)
|
|
2694
2695
|
goto cleanup;
|
|
2695
2696
|
|
|
@@ -2812,9 +2813,9 @@ static int merge_ancestor_head(
|
|
|
2812
2813
|
|
|
2813
2814
|
assert(repo && our_head && their_heads);
|
|
2814
2815
|
|
|
2815
|
-
|
|
2816
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, their_heads_len, 1);
|
|
2816
2817
|
oids = git__calloc(alloc_len, sizeof(git_oid));
|
|
2817
|
-
|
|
2818
|
+
GIT_ERROR_CHECK_ALLOC(oids);
|
|
2818
2819
|
|
|
2819
2820
|
git_oid_cpy(&oids[0], git_commit_id(our_head->commit));
|
|
2820
2821
|
|
|
@@ -3038,7 +3039,7 @@ int git_merge__check_result(git_repository *repo, git_index *index_new)
|
|
|
3038
3039
|
goto done;
|
|
3039
3040
|
|
|
3040
3041
|
if ((conflicts = index_conflicts + wd_conflicts) > 0) {
|
|
3041
|
-
|
|
3042
|
+
git_error_set(GIT_ERROR_MERGE, "%" PRIuZ " uncommitted change%s would be overwritten by merge",
|
|
3042
3043
|
conflicts, (conflicts != 1) ? "s" : "");
|
|
3043
3044
|
error = GIT_ECONFLICT;
|
|
3044
3045
|
}
|
|
@@ -3110,28 +3111,24 @@ static int merge_heads(
|
|
|
3110
3111
|
git_annotated_commit **ancestor_head_out,
|
|
3111
3112
|
git_annotated_commit **our_head_out,
|
|
3112
3113
|
git_repository *repo,
|
|
3114
|
+
git_reference *our_ref,
|
|
3113
3115
|
const git_annotated_commit **their_heads,
|
|
3114
3116
|
size_t their_heads_len)
|
|
3115
3117
|
{
|
|
3116
3118
|
git_annotated_commit *ancestor_head = NULL, *our_head = NULL;
|
|
3117
|
-
git_reference *our_ref = NULL;
|
|
3118
3119
|
int error = 0;
|
|
3119
3120
|
|
|
3120
3121
|
*ancestor_head_out = NULL;
|
|
3121
3122
|
*our_head_out = NULL;
|
|
3122
3123
|
|
|
3123
|
-
if ((error =
|
|
3124
|
-
goto done;
|
|
3125
|
-
|
|
3126
|
-
if ((error = git_reference_lookup(&our_ref, repo, GIT_HEAD_FILE)) < 0 ||
|
|
3127
|
-
(error = git_annotated_commit_from_ref(&our_head, repo, our_ref)) < 0)
|
|
3124
|
+
if ((error = git_annotated_commit_from_ref(&our_head, repo, our_ref)) < 0)
|
|
3128
3125
|
goto done;
|
|
3129
3126
|
|
|
3130
3127
|
if ((error = merge_ancestor_head(&ancestor_head, repo, our_head, their_heads, their_heads_len)) < 0) {
|
|
3131
3128
|
if (error != GIT_ENOTFOUND)
|
|
3132
3129
|
goto done;
|
|
3133
3130
|
|
|
3134
|
-
|
|
3131
|
+
git_error_clear();
|
|
3135
3132
|
error = 0;
|
|
3136
3133
|
}
|
|
3137
3134
|
|
|
@@ -3144,8 +3141,6 @@ done:
|
|
|
3144
3141
|
git_annotated_commit_free(our_head);
|
|
3145
3142
|
}
|
|
3146
3143
|
|
|
3147
|
-
git_reference_free(our_ref);
|
|
3148
|
-
|
|
3149
3144
|
return error;
|
|
3150
3145
|
}
|
|
3151
3146
|
|
|
@@ -3162,7 +3157,7 @@ static int merge_preference(git_merge_preference_t *out, git_repository *repo)
|
|
|
3162
3157
|
|
|
3163
3158
|
if ((error = git_config_get_string(&value, config, "merge.ff")) < 0) {
|
|
3164
3159
|
if (error == GIT_ENOTFOUND) {
|
|
3165
|
-
|
|
3160
|
+
git_error_clear();
|
|
3166
3161
|
error = 0;
|
|
3167
3162
|
}
|
|
3168
3163
|
|
|
@@ -3182,20 +3177,22 @@ done:
|
|
|
3182
3177
|
return error;
|
|
3183
3178
|
}
|
|
3184
3179
|
|
|
3185
|
-
int
|
|
3180
|
+
int git_merge_analysis_for_ref(
|
|
3186
3181
|
git_merge_analysis_t *analysis_out,
|
|
3187
3182
|
git_merge_preference_t *preference_out,
|
|
3188
3183
|
git_repository *repo,
|
|
3184
|
+
git_reference *our_ref,
|
|
3189
3185
|
const git_annotated_commit **their_heads,
|
|
3190
3186
|
size_t their_heads_len)
|
|
3191
3187
|
{
|
|
3192
3188
|
git_annotated_commit *ancestor_head = NULL, *our_head = NULL;
|
|
3193
3189
|
int error = 0;
|
|
3190
|
+
bool unborn;
|
|
3194
3191
|
|
|
3195
|
-
assert(analysis_out && preference_out && repo && their_heads);
|
|
3192
|
+
assert(analysis_out && preference_out && repo && their_heads && their_heads_len > 0);
|
|
3196
3193
|
|
|
3197
3194
|
if (their_heads_len != 1) {
|
|
3198
|
-
|
|
3195
|
+
git_error_set(GIT_ERROR_MERGE, "can only merge a single branch");
|
|
3199
3196
|
error = -1;
|
|
3200
3197
|
goto done;
|
|
3201
3198
|
}
|
|
@@ -3205,12 +3202,16 @@ int git_merge_analysis(
|
|
|
3205
3202
|
if ((error = merge_preference(preference_out, repo)) < 0)
|
|
3206
3203
|
goto done;
|
|
3207
3204
|
|
|
3208
|
-
if (
|
|
3205
|
+
if ((error = git_reference__is_unborn_head(&unborn, our_ref, repo)) < 0)
|
|
3206
|
+
goto done;
|
|
3207
|
+
|
|
3208
|
+
if (unborn) {
|
|
3209
3209
|
*analysis_out |= GIT_MERGE_ANALYSIS_FASTFORWARD | GIT_MERGE_ANALYSIS_UNBORN;
|
|
3210
|
+
error = 0;
|
|
3210
3211
|
goto done;
|
|
3211
3212
|
}
|
|
3212
3213
|
|
|
3213
|
-
if ((error = merge_heads(&ancestor_head, &our_head, repo, their_heads, their_heads_len)) < 0)
|
|
3214
|
+
if ((error = merge_heads(&ancestor_head, &our_head, repo, our_ref, their_heads, their_heads_len)) < 0)
|
|
3214
3215
|
goto done;
|
|
3215
3216
|
|
|
3216
3217
|
/* We're up-to-date if we're trying to merge our own common ancestor. */
|
|
@@ -3233,6 +3234,28 @@ done:
|
|
|
3233
3234
|
return error;
|
|
3234
3235
|
}
|
|
3235
3236
|
|
|
3237
|
+
int git_merge_analysis(
|
|
3238
|
+
git_merge_analysis_t *analysis_out,
|
|
3239
|
+
git_merge_preference_t *preference_out,
|
|
3240
|
+
git_repository *repo,
|
|
3241
|
+
const git_annotated_commit **their_heads,
|
|
3242
|
+
size_t their_heads_len)
|
|
3243
|
+
{
|
|
3244
|
+
git_reference *head_ref = NULL;
|
|
3245
|
+
int error = 0;
|
|
3246
|
+
|
|
3247
|
+
if ((error = git_reference_lookup(&head_ref, repo, GIT_HEAD_FILE)) < 0) {
|
|
3248
|
+
git_error_set(GIT_ERROR_MERGE, "failed to lookup HEAD reference");
|
|
3249
|
+
return error;
|
|
3250
|
+
}
|
|
3251
|
+
|
|
3252
|
+
error = git_merge_analysis_for_ref(analysis_out, preference_out, repo, head_ref, their_heads, their_heads_len);
|
|
3253
|
+
|
|
3254
|
+
git_reference_free(head_ref);
|
|
3255
|
+
|
|
3256
|
+
return error;
|
|
3257
|
+
}
|
|
3258
|
+
|
|
3236
3259
|
int git_merge(
|
|
3237
3260
|
git_repository *repo,
|
|
3238
3261
|
const git_annotated_commit **their_heads,
|
|
@@ -3243,15 +3266,15 @@ int git_merge(
|
|
|
3243
3266
|
git_reference *our_ref = NULL;
|
|
3244
3267
|
git_checkout_options checkout_opts;
|
|
3245
3268
|
git_annotated_commit *our_head = NULL, *base = NULL;
|
|
3246
|
-
git_index *index = NULL;
|
|
3269
|
+
git_index *repo_index = NULL, *index = NULL;
|
|
3247
3270
|
git_indexwriter indexwriter = GIT_INDEXWRITER_INIT;
|
|
3248
3271
|
unsigned int checkout_strategy;
|
|
3249
3272
|
int error = 0;
|
|
3250
3273
|
|
|
3251
|
-
assert(repo && their_heads);
|
|
3274
|
+
assert(repo && their_heads && their_heads_len > 0);
|
|
3252
3275
|
|
|
3253
3276
|
if (their_heads_len != 1) {
|
|
3254
|
-
|
|
3277
|
+
git_error_set(GIT_ERROR_MERGE, "can only merge a single branch");
|
|
3255
3278
|
return -1;
|
|
3256
3279
|
}
|
|
3257
3280
|
|
|
@@ -3266,6 +3289,10 @@ int git_merge(
|
|
|
3266
3289
|
&checkout_strategy)) < 0)
|
|
3267
3290
|
goto done;
|
|
3268
3291
|
|
|
3292
|
+
if ((error = git_repository_index(&repo_index, repo) < 0) ||
|
|
3293
|
+
(error = git_index_read(repo_index, 0) < 0))
|
|
3294
|
+
goto done;
|
|
3295
|
+
|
|
3269
3296
|
/* Write the merge setup files to the repository. */
|
|
3270
3297
|
if ((error = git_annotated_commit_from_head(&our_head, repo)) < 0 ||
|
|
3271
3298
|
(error = git_merge__setup(repo, our_head, their_heads,
|
|
@@ -3299,28 +3326,45 @@ done:
|
|
|
3299
3326
|
git_annotated_commit_free(our_head);
|
|
3300
3327
|
git_annotated_commit_free(base);
|
|
3301
3328
|
git_reference_free(our_ref);
|
|
3329
|
+
git_index_free(repo_index);
|
|
3302
3330
|
|
|
3303
3331
|
return error;
|
|
3304
3332
|
}
|
|
3305
3333
|
|
|
3306
|
-
int
|
|
3334
|
+
int git_merge_options_init(git_merge_options *opts, unsigned int version)
|
|
3307
3335
|
{
|
|
3308
3336
|
GIT_INIT_STRUCTURE_FROM_TEMPLATE(
|
|
3309
3337
|
opts, version, git_merge_options, GIT_MERGE_OPTIONS_INIT);
|
|
3310
3338
|
return 0;
|
|
3311
3339
|
}
|
|
3312
3340
|
|
|
3313
|
-
int
|
|
3341
|
+
int git_merge_init_options(git_merge_options *opts, unsigned int version)
|
|
3342
|
+
{
|
|
3343
|
+
return git_merge_options_init(opts, version);
|
|
3344
|
+
}
|
|
3345
|
+
|
|
3346
|
+
int git_merge_file_input_init(git_merge_file_input *input, unsigned int version)
|
|
3314
3347
|
{
|
|
3315
3348
|
GIT_INIT_STRUCTURE_FROM_TEMPLATE(
|
|
3316
3349
|
input, version, git_merge_file_input, GIT_MERGE_FILE_INPUT_INIT);
|
|
3317
3350
|
return 0;
|
|
3318
3351
|
}
|
|
3319
3352
|
|
|
3320
|
-
int
|
|
3353
|
+
int git_merge_file_init_input(git_merge_file_input *input, unsigned int version)
|
|
3354
|
+
{
|
|
3355
|
+
return git_merge_file_input_init(input, version);
|
|
3356
|
+
}
|
|
3357
|
+
|
|
3358
|
+
int git_merge_file_options_init(
|
|
3321
3359
|
git_merge_file_options *opts, unsigned int version)
|
|
3322
3360
|
{
|
|
3323
3361
|
GIT_INIT_STRUCTURE_FROM_TEMPLATE(
|
|
3324
3362
|
opts, version, git_merge_file_options, GIT_MERGE_FILE_OPTIONS_INIT);
|
|
3325
3363
|
return 0;
|
|
3326
3364
|
}
|
|
3365
|
+
|
|
3366
|
+
int git_merge_file_init_options(
|
|
3367
|
+
git_merge_file_options *opts, unsigned int version)
|
|
3368
|
+
{
|
|
3369
|
+
return git_merge_file_options_init(opts, version);
|
|
3370
|
+
}
|