rugged 1.7.2 → 1.9.4
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/ext/rugged/extconf.rb +4 -4
- data/ext/rugged/rugged.c +12 -1
- data/ext/rugged/rugged_blame.c +22 -6
- data/ext/rugged/rugged_blob.c +24 -9
- data/ext/rugged/rugged_branch.c +10 -7
- data/ext/rugged/rugged_branch_collection.c +8 -6
- data/ext/rugged/rugged_commit.c +7 -6
- data/ext/rugged/rugged_config.c +20 -11
- data/ext/rugged/rugged_diff.c +26 -12
- data/ext/rugged/rugged_diff_hunk.c +2 -1
- data/ext/rugged/rugged_index.c +39 -29
- data/ext/rugged/rugged_note.c +7 -6
- data/ext/rugged/rugged_object.c +3 -2
- data/ext/rugged/rugged_patch.c +23 -9
- data/ext/rugged/rugged_rebase.c +22 -10
- data/ext/rugged/rugged_reference.c +22 -13
- data/ext/rugged/rugged_reference_collection.c +9 -7
- data/ext/rugged/rugged_remote.c +23 -12
- data/ext/rugged/rugged_remote_collection.c +11 -9
- data/ext/rugged/rugged_repo.c +60 -45
- data/ext/rugged/rugged_revwalk.c +22 -12
- data/ext/rugged/rugged_submodule.c +23 -20
- data/ext/rugged/rugged_submodule_collection.c +20 -9
- data/ext/rugged/rugged_tag.c +6 -4
- data/ext/rugged/rugged_tag_collection.c +7 -5
- data/ext/rugged/rugged_tree.c +27 -15
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/AUTHORS +3 -0
- data/vendor/libgit2/CMakeLists.txt +23 -10
- data/vendor/libgit2/COPYING +195 -1
- data/vendor/libgit2/cmake/DefaultCFlags.cmake +4 -1
- data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
- data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
- data/vendor/libgit2/cmake/SelectGSSAPI.cmake +1 -1
- data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +17 -8
- data/vendor/libgit2/cmake/SelectHashes.cmake +28 -11
- data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
- data/vendor/libgit2/cmake/SelectSSH.cmake +30 -19
- data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
- data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
- data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
- data/vendor/libgit2/deps/llhttp/api.c +510 -0
- data/vendor/libgit2/deps/llhttp/http.c +170 -0
- data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
- data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
- data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
- data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
- data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +3 -3
- data/vendor/libgit2/deps/xdiff/CMakeLists.txt +1 -1
- data/vendor/libgit2/deps/xdiff/xmerge.c +16 -12
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
- data/vendor/libgit2/deps/zlib/LICENSE +22 -0
- data/vendor/libgit2/deps/zlib/adler32.c +5 -27
- data/vendor/libgit2/deps/zlib/crc32.c +94 -167
- data/vendor/libgit2/deps/zlib/deflate.c +358 -435
- data/vendor/libgit2/deps/zlib/deflate.h +41 -10
- data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
- data/vendor/libgit2/deps/zlib/infback.c +17 -30
- data/vendor/libgit2/deps/zlib/inffast.c +1 -4
- data/vendor/libgit2/deps/zlib/inffast.h +1 -1
- data/vendor/libgit2/deps/zlib/inflate.c +36 -102
- data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
- data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
- data/vendor/libgit2/deps/zlib/trees.c +287 -352
- data/vendor/libgit2/deps/zlib/zconf.h +23 -14
- data/vendor/libgit2/deps/zlib/zlib.h +202 -202
- data/vendor/libgit2/deps/zlib/zutil.c +18 -44
- data/vendor/libgit2/deps/zlib/zutil.h +13 -33
- data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
- data/vendor/libgit2/include/git2/apply.h +27 -6
- data/vendor/libgit2/include/git2/attr.h +17 -4
- data/vendor/libgit2/include/git2/blame.h +133 -28
- data/vendor/libgit2/include/git2/blob.h +71 -28
- data/vendor/libgit2/include/git2/branch.h +22 -15
- data/vendor/libgit2/include/git2/buffer.h +6 -4
- data/vendor/libgit2/include/git2/cert.h +2 -1
- data/vendor/libgit2/include/git2/checkout.h +83 -32
- data/vendor/libgit2/include/git2/cherrypick.h +10 -3
- data/vendor/libgit2/include/git2/clone.h +25 -9
- data/vendor/libgit2/include/git2/commit.h +132 -3
- data/vendor/libgit2/include/git2/common.h +120 -63
- data/vendor/libgit2/include/git2/config.h +93 -23
- data/vendor/libgit2/include/git2/credential.h +30 -2
- data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
- data/vendor/libgit2/include/git2/deprecated.h +134 -4
- data/vendor/libgit2/include/git2/describe.h +13 -1
- data/vendor/libgit2/include/git2/diff.h +38 -8
- data/vendor/libgit2/include/git2/email.h +9 -29
- data/vendor/libgit2/include/git2/errors.h +46 -73
- data/vendor/libgit2/include/git2/filter.h +14 -7
- data/vendor/libgit2/include/git2/global.h +8 -1
- data/vendor/libgit2/include/git2/graph.h +3 -2
- data/vendor/libgit2/include/git2/ignore.h +10 -0
- data/vendor/libgit2/include/git2/index.h +100 -15
- data/vendor/libgit2/include/git2/indexer.h +21 -4
- data/vendor/libgit2/include/git2/mailmap.h +7 -1
- data/vendor/libgit2/include/git2/merge.h +50 -3
- data/vendor/libgit2/include/git2/message.h +2 -2
- data/vendor/libgit2/include/git2/net.h +3 -1
- data/vendor/libgit2/include/git2/notes.h +9 -6
- data/vendor/libgit2/include/git2/object.h +9 -8
- data/vendor/libgit2/include/git2/odb.h +91 -49
- data/vendor/libgit2/include/git2/odb_backend.h +80 -52
- data/vendor/libgit2/include/git2/oid.h +23 -25
- data/vendor/libgit2/include/git2/oidarray.h +7 -1
- data/vendor/libgit2/include/git2/pack.h +13 -1
- data/vendor/libgit2/include/git2/patch.h +2 -3
- data/vendor/libgit2/include/git2/pathspec.h +9 -0
- data/vendor/libgit2/include/git2/proxy.h +12 -3
- data/vendor/libgit2/include/git2/rebase.h +9 -6
- data/vendor/libgit2/include/git2/refdb.h +2 -2
- data/vendor/libgit2/include/git2/reflog.h +3 -2
- data/vendor/libgit2/include/git2/refs.h +9 -6
- data/vendor/libgit2/include/git2/refspec.h +14 -4
- data/vendor/libgit2/include/git2/remote.h +113 -25
- data/vendor/libgit2/include/git2/repository.h +57 -21
- data/vendor/libgit2/include/git2/reset.h +16 -3
- data/vendor/libgit2/include/git2/revert.h +9 -4
- data/vendor/libgit2/include/git2/revparse.h +3 -3
- data/vendor/libgit2/include/git2/revwalk.h +3 -2
- data/vendor/libgit2/include/git2/signature.h +46 -1
- data/vendor/libgit2/include/git2/stash.h +17 -3
- data/vendor/libgit2/include/git2/status.h +10 -6
- data/vendor/libgit2/include/git2/stdint.h +87 -85
- data/vendor/libgit2/include/git2/strarray.h +2 -3
- data/vendor/libgit2/include/git2/submodule.h +20 -9
- data/vendor/libgit2/include/git2/sys/alloc.h +12 -0
- data/vendor/libgit2/include/git2/sys/commit.h +77 -3
- data/vendor/libgit2/include/git2/sys/commit_graph.h +103 -62
- data/vendor/libgit2/include/git2/sys/config.h +80 -4
- data/vendor/libgit2/include/git2/sys/credential.h +4 -3
- data/vendor/libgit2/include/git2/sys/diff.h +21 -1
- data/vendor/libgit2/include/git2/sys/email.h +7 -0
- data/vendor/libgit2/include/git2/sys/errors.h +76 -0
- data/vendor/libgit2/include/git2/sys/filter.h +66 -3
- data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
- data/vendor/libgit2/include/git2/sys/index.h +3 -2
- data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
- data/vendor/libgit2/include/git2/sys/merge.h +55 -7
- data/vendor/libgit2/include/git2/sys/midx.h +43 -4
- data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
- data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
- data/vendor/libgit2/include/git2/sys/path.h +12 -1
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
- data/vendor/libgit2/include/git2/sys/refs.h +3 -2
- data/vendor/libgit2/include/git2/sys/remote.h +8 -1
- data/vendor/libgit2/include/git2/sys/repository.h +63 -3
- data/vendor/libgit2/include/git2/sys/stream.h +11 -2
- data/vendor/libgit2/include/git2/sys/transport.h +25 -4
- data/vendor/libgit2/include/git2/tag.h +3 -1
- data/vendor/libgit2/include/git2/trace.h +9 -3
- data/vendor/libgit2/include/git2/transaction.h +3 -2
- data/vendor/libgit2/include/git2/transport.h +11 -3
- data/vendor/libgit2/include/git2/tree.h +16 -5
- data/vendor/libgit2/include/git2/types.h +19 -3
- data/vendor/libgit2/include/git2/version.h +46 -8
- data/vendor/libgit2/include/git2/worktree.h +16 -6
- data/vendor/libgit2/src/CMakeLists.txt +6 -4
- data/vendor/libgit2/src/cli/CMakeLists.txt +3 -4
- data/vendor/libgit2/src/cli/cmd.c +1 -1
- data/vendor/libgit2/src/cli/cmd.h +4 -0
- data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
- data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
- data/vendor/libgit2/src/cli/cmd_clone.c +5 -7
- data/vendor/libgit2/src/cli/cmd_config.c +241 -0
- data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
- data/vendor/libgit2/src/cli/cmd_help.c +6 -7
- data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
- data/vendor/libgit2/src/cli/cmd_init.c +102 -0
- data/vendor/libgit2/src/cli/common.c +168 -0
- data/vendor/libgit2/src/cli/common.h +63 -0
- data/vendor/libgit2/src/cli/error.h +1 -1
- data/vendor/libgit2/src/cli/main.c +52 -24
- data/vendor/libgit2/src/cli/opt.c +31 -5
- data/vendor/libgit2/src/cli/opt.h +21 -3
- data/vendor/libgit2/src/cli/opt_usage.c +102 -33
- data/vendor/libgit2/src/cli/opt_usage.h +6 -1
- data/vendor/libgit2/src/cli/progress.c +51 -2
- data/vendor/libgit2/src/cli/progress.h +12 -0
- data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
- data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
- data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
- data/vendor/libgit2/src/libgit2/CMakeLists.txt +55 -21
- data/vendor/libgit2/src/libgit2/apply.c +10 -13
- data/vendor/libgit2/src/libgit2/attr.c +30 -13
- data/vendor/libgit2/src/libgit2/attr_file.c +17 -5
- data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
- data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
- data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
- data/vendor/libgit2/src/libgit2/blame.c +130 -44
- data/vendor/libgit2/src/libgit2/blame.h +1 -0
- data/vendor/libgit2/src/libgit2/cache.c +22 -17
- data/vendor/libgit2/src/libgit2/cache.h +7 -9
- data/vendor/libgit2/src/libgit2/checkout.c +34 -24
- data/vendor/libgit2/src/libgit2/checkout.h +0 -2
- data/vendor/libgit2/src/libgit2/cherrypick.c +1 -2
- data/vendor/libgit2/src/libgit2/clone.c +192 -166
- data/vendor/libgit2/src/libgit2/clone.h +4 -1
- data/vendor/libgit2/src/libgit2/commit.c +93 -1
- data/vendor/libgit2/src/libgit2/commit_graph.c +68 -58
- data/vendor/libgit2/src/libgit2/commit_graph.h +1 -2
- data/vendor/libgit2/src/libgit2/config.c +390 -299
- data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
- data/vendor/libgit2/src/libgit2/config.h +9 -4
- data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
- data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
- data/vendor/libgit2/src/libgit2/config_file.c +101 -89
- data/vendor/libgit2/src/libgit2/config_list.c +285 -0
- data/vendor/libgit2/src/libgit2/config_list.h +32 -0
- data/vendor/libgit2/src/libgit2/config_mem.c +195 -40
- data/vendor/libgit2/src/libgit2/config_parse.c +12 -10
- data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
- data/vendor/libgit2/src/libgit2/delta.c +5 -1
- data/vendor/libgit2/src/libgit2/describe.c +24 -24
- data/vendor/libgit2/src/libgit2/diff.c +1 -1
- data/vendor/libgit2/src/libgit2/diff_driver.c +13 -20
- data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
- data/vendor/libgit2/src/libgit2/diff_generate.c +3 -3
- data/vendor/libgit2/src/libgit2/diff_parse.c +2 -2
- data/vendor/libgit2/src/libgit2/diff_print.c +65 -9
- data/vendor/libgit2/src/libgit2/diff_stats.c +19 -12
- data/vendor/libgit2/src/libgit2/diff_tform.c +36 -8
- data/vendor/libgit2/src/libgit2/email.c +1 -0
- data/vendor/libgit2/src/libgit2/fetch.c +5 -3
- data/vendor/libgit2/src/libgit2/fetchhead.c +1 -1
- data/vendor/libgit2/src/libgit2/filter.c +5 -5
- data/vendor/libgit2/src/libgit2/git2.rc +3 -3
- data/vendor/libgit2/src/libgit2/grafts.c +18 -20
- data/vendor/libgit2/src/libgit2/grafts.h +0 -1
- data/vendor/libgit2/src/libgit2/graph.c +1 -1
- data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
- data/vendor/libgit2/src/libgit2/ignore.c +9 -5
- data/vendor/libgit2/src/libgit2/index.c +76 -98
- data/vendor/libgit2/src/libgit2/index.h +5 -2
- data/vendor/libgit2/src/libgit2/index_map.c +95 -0
- data/vendor/libgit2/src/libgit2/index_map.h +28 -0
- data/vendor/libgit2/src/libgit2/indexer.c +36 -40
- data/vendor/libgit2/src/libgit2/iterator.c +14 -8
- data/vendor/libgit2/src/libgit2/libgit2.c +153 -368
- data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
- data/vendor/libgit2/src/libgit2/merge.c +43 -38
- data/vendor/libgit2/src/libgit2/merge.h +4 -0
- data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
- data/vendor/libgit2/src/libgit2/merge_file.c +43 -30
- data/vendor/libgit2/src/libgit2/message.c +1 -1
- data/vendor/libgit2/src/libgit2/midx.c +30 -18
- data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
- data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
- data/vendor/libgit2/src/libgit2/object.c +6 -5
- data/vendor/libgit2/src/libgit2/odb.c +7 -10
- data/vendor/libgit2/src/libgit2/odb_loose.c +24 -14
- data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
- data/vendor/libgit2/src/libgit2/odb_pack.c +13 -5
- data/vendor/libgit2/src/libgit2/oid.c +36 -10
- data/vendor/libgit2/src/libgit2/oid.h +11 -0
- data/vendor/libgit2/src/libgit2/pack-objects.c +59 -34
- data/vendor/libgit2/src/libgit2/pack-objects.h +12 -4
- data/vendor/libgit2/src/libgit2/pack.c +33 -24
- data/vendor/libgit2/src/libgit2/pack.h +15 -10
- data/vendor/libgit2/src/libgit2/patch_parse.c +2 -2
- data/vendor/libgit2/src/libgit2/path.c +1 -1
- data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
- data/vendor/libgit2/src/libgit2/push.c +79 -28
- data/vendor/libgit2/src/libgit2/push.h +1 -0
- data/vendor/libgit2/src/libgit2/refdb_fs.c +128 -61
- data/vendor/libgit2/src/libgit2/reflog.c +1 -2
- data/vendor/libgit2/src/libgit2/reflog.h +2 -0
- data/vendor/libgit2/src/libgit2/refs.c +41 -13
- data/vendor/libgit2/src/libgit2/refs.h +6 -1
- data/vendor/libgit2/src/libgit2/refspec.c +28 -1
- data/vendor/libgit2/src/libgit2/refspec.h +8 -0
- data/vendor/libgit2/src/libgit2/remote.c +125 -62
- data/vendor/libgit2/src/libgit2/remote.h +0 -1
- data/vendor/libgit2/src/libgit2/repository.c +235 -54
- data/vendor/libgit2/src/libgit2/repository.h +10 -6
- data/vendor/libgit2/src/libgit2/revert.c +1 -2
- data/vendor/libgit2/src/libgit2/revparse.c +2 -2
- data/vendor/libgit2/src/libgit2/revwalk.c +13 -10
- data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
- data/vendor/libgit2/src/libgit2/settings.c +468 -0
- data/vendor/libgit2/src/libgit2/settings.h +6 -2
- data/vendor/libgit2/src/libgit2/signature.c +132 -15
- data/vendor/libgit2/src/libgit2/signature.h +0 -1
- data/vendor/libgit2/src/libgit2/status.c +1 -1
- data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -60
- data/vendor/libgit2/src/libgit2/streams/openssl.c +32 -7
- data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
- data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
- data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
- data/vendor/libgit2/src/libgit2/streams/socket.c +30 -0
- data/vendor/libgit2/src/libgit2/streams/stransport.c +39 -7
- data/vendor/libgit2/src/libgit2/submodule.c +118 -68
- data/vendor/libgit2/src/libgit2/submodule.h +6 -7
- data/vendor/libgit2/src/libgit2/tag.c +4 -2
- data/vendor/libgit2/src/libgit2/trailer.c +6 -6
- data/vendor/libgit2/src/libgit2/transaction.c +26 -20
- data/vendor/libgit2/src/libgit2/transaction.h +4 -1
- data/vendor/libgit2/src/libgit2/transport.c +4 -1
- data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +2 -0
- data/vendor/libgit2/src/libgit2/transports/credential.c +2 -2
- data/vendor/libgit2/src/libgit2/transports/git.c +1 -1
- data/vendor/libgit2/src/libgit2/transports/http.c +1 -2
- data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
- data/vendor/libgit2/src/libgit2/transports/httpclient.c +124 -81
- data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
- data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
- data/vendor/libgit2/src/libgit2/transports/local.c +16 -8
- data/vendor/libgit2/src/libgit2/transports/smart.c +25 -13
- data/vendor/libgit2/src/libgit2/transports/smart.h +4 -2
- data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +5 -5
- data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +55 -10
- data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
- data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +386 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1126 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
- data/vendor/libgit2/src/libgit2/transports/winhttp.c +35 -7
- data/vendor/libgit2/src/libgit2/tree.c +34 -26
- data/vendor/libgit2/src/libgit2/tree.h +3 -2
- data/vendor/libgit2/src/libgit2/worktree.c +14 -17
- data/vendor/libgit2/src/util/CMakeLists.txt +7 -10
- data/vendor/libgit2/src/util/alloc.c +4 -1
- data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
- data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
- data/vendor/libgit2/src/util/allocators/stdalloc.c +0 -10
- data/vendor/libgit2/src/util/array.h +18 -17
- data/vendor/libgit2/src/util/cc-compat.h +2 -0
- data/vendor/libgit2/src/util/ctype_compat.h +70 -0
- data/vendor/libgit2/src/util/date.c +22 -14
- data/vendor/libgit2/src/util/date.h +12 -0
- data/vendor/libgit2/src/util/errors.c +401 -0
- data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
- data/vendor/libgit2/src/util/fs_path.c +81 -10
- data/vendor/libgit2/src/util/fs_path.h +29 -0
- data/vendor/libgit2/src/util/futils.c +6 -5
- data/vendor/libgit2/src/util/futils.h +24 -7
- data/vendor/libgit2/src/util/git2_features.h.in +12 -1
- data/vendor/libgit2/src/util/git2_util.h +6 -0
- data/vendor/libgit2/src/util/hash/builtin.c +14 -4
- data/vendor/libgit2/src/util/hash/openssl.c +148 -0
- data/vendor/libgit2/src/util/hash/openssl.h +17 -1
- data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +8 -6
- data/vendor/libgit2/src/util/hash/sha.h +4 -1
- data/vendor/libgit2/src/util/hashmap.h +425 -0
- data/vendor/libgit2/src/util/hashmap_str.h +43 -0
- data/vendor/libgit2/src/util/integer.h +3 -1
- data/vendor/libgit2/src/util/net.c +17 -11
- data/vendor/libgit2/src/util/net.h +2 -0
- data/vendor/libgit2/src/util/pool.c +1 -1
- data/vendor/libgit2/src/util/pool.h +5 -0
- data/vendor/libgit2/src/util/pqueue.h +1 -1
- data/vendor/libgit2/src/util/process.h +223 -0
- data/vendor/libgit2/src/util/rand.c +1 -7
- data/vendor/libgit2/src/util/regexp.c +1 -1
- data/vendor/libgit2/src/util/runtime.c +2 -2
- data/vendor/libgit2/src/util/sortedcache.c +14 -13
- data/vendor/libgit2/src/util/sortedcache.h +3 -3
- data/vendor/libgit2/src/util/str.c +20 -8
- data/vendor/libgit2/src/util/str.h +5 -3
- data/vendor/libgit2/src/util/strlist.c +108 -0
- data/vendor/libgit2/src/util/strlist.h +36 -0
- data/vendor/libgit2/src/util/unix/posix.h +0 -2
- data/vendor/libgit2/src/util/unix/process.c +706 -0
- data/vendor/libgit2/src/util/unix/realpath.c +23 -5
- data/vendor/libgit2/src/util/util.c +18 -5
- data/vendor/libgit2/src/util/util.h +5 -38
- data/vendor/libgit2/src/util/vector.c +3 -3
- data/vendor/libgit2/src/util/vector.h +2 -2
- data/vendor/libgit2/src/util/win32/path_w32.c +81 -5
- data/vendor/libgit2/src/util/win32/posix_w32.c +29 -6
- data/vendor/libgit2/src/util/win32/process.c +522 -0
- metadata +60 -32
- data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
- data/vendor/libgit2/deps/http-parser/COPYING +0 -23
- data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
- data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
- data/vendor/libgit2/deps/zlib/COPYING +0 -27
- data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
- data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
- data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
- data/vendor/libgit2/src/libgit2/errors.c +0 -293
- data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
- data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
- data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
- data/vendor/libgit2/src/libgit2/offmap.c +0 -101
- data/vendor/libgit2/src/libgit2/offmap.h +0 -133
- data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
- data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
- data/vendor/libgit2/src/libgit2/threadstate.c +0 -97
- data/vendor/libgit2/src/libgit2/threadstate.h +0 -22
- data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
- data/vendor/libgit2/src/util/khash.h +0 -615
- data/vendor/libgit2/src/util/strmap.c +0 -100
- data/vendor/libgit2/src/util/strmap.h +0 -131
- /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
|
@@ -32,7 +32,6 @@
|
|
|
32
32
|
#include "commit.h"
|
|
33
33
|
#include "oidarray.h"
|
|
34
34
|
#include "merge_driver.h"
|
|
35
|
-
#include "oidmap.h"
|
|
36
35
|
#include "array.h"
|
|
37
36
|
|
|
38
37
|
#include "git2/types.h"
|
|
@@ -124,11 +123,11 @@ static int merge_bases_many(git_commit_list **out, git_revwalk **walk_out, git_r
|
|
|
124
123
|
*out = result;
|
|
125
124
|
*walk_out = walk;
|
|
126
125
|
|
|
127
|
-
|
|
126
|
+
git_vector_dispose(&list);
|
|
128
127
|
return 0;
|
|
129
128
|
|
|
130
129
|
on_error:
|
|
131
|
-
|
|
130
|
+
git_vector_dispose(&list);
|
|
132
131
|
git_revwalk_free(walk);
|
|
133
132
|
return error;
|
|
134
133
|
}
|
|
@@ -511,7 +510,7 @@ static int remove_redundant(git_revwalk *walk, git_vector *commits, uint32_t min
|
|
|
511
510
|
done:
|
|
512
511
|
git__free(redundant);
|
|
513
512
|
git__free(filled_index);
|
|
514
|
-
|
|
513
|
+
git_vector_dispose(&work);
|
|
515
514
|
return error;
|
|
516
515
|
}
|
|
517
516
|
|
|
@@ -570,7 +569,7 @@ int git_merge__bases_many(
|
|
|
570
569
|
if ((error = clear_commit_marks(one, ALL_FLAGS)) < 0 ||
|
|
571
570
|
(error = clear_commit_marks_many(twos, ALL_FLAGS)) < 0 ||
|
|
572
571
|
(error = remove_redundant(walk, &redundant, minimum_generation)) < 0) {
|
|
573
|
-
|
|
572
|
+
git_vector_dispose(&redundant);
|
|
574
573
|
return error;
|
|
575
574
|
}
|
|
576
575
|
|
|
@@ -579,7 +578,7 @@ int git_merge__bases_many(
|
|
|
579
578
|
git_commit_list_insert_by_date(two, &result);
|
|
580
579
|
}
|
|
581
580
|
|
|
582
|
-
|
|
581
|
+
git_vector_dispose(&redundant);
|
|
583
582
|
}
|
|
584
583
|
|
|
585
584
|
*out = result;
|
|
@@ -937,7 +936,7 @@ static int merge_conflict_resolve_contents(
|
|
|
937
936
|
git_merge_file_result result = {0};
|
|
938
937
|
git_merge_driver *driver;
|
|
939
938
|
git_merge_driver__builtin builtin = {{0}};
|
|
940
|
-
git_index_entry *merge_result;
|
|
939
|
+
git_index_entry *merge_result = NULL;
|
|
941
940
|
git_odb *odb = NULL;
|
|
942
941
|
const char *name;
|
|
943
942
|
bool fallback = false;
|
|
@@ -1144,24 +1143,28 @@ typedef struct {
|
|
|
1144
1143
|
size_t first_entry;
|
|
1145
1144
|
} deletes_by_oid_queue;
|
|
1146
1145
|
|
|
1147
|
-
|
|
1146
|
+
GIT_HASHMAP_OID_SETUP(git_merge_deletes_oidmap, deletes_by_oid_queue *);
|
|
1147
|
+
|
|
1148
|
+
static void deletes_by_oid_dispose(git_merge_deletes_oidmap *map)
|
|
1149
|
+
{
|
|
1150
|
+
git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
|
|
1148
1151
|
deletes_by_oid_queue *queue;
|
|
1149
1152
|
|
|
1150
1153
|
if (!map)
|
|
1151
1154
|
return;
|
|
1152
1155
|
|
|
1153
|
-
|
|
1156
|
+
while (git_merge_deletes_oidmap_iterate(&iter, NULL, &queue, map) == 0)
|
|
1154
1157
|
git_array_clear(queue->arr);
|
|
1155
|
-
|
|
1156
|
-
|
|
1158
|
+
|
|
1159
|
+
git_merge_deletes_oidmap_dispose(map);
|
|
1157
1160
|
}
|
|
1158
1161
|
|
|
1159
|
-
static int deletes_by_oid_enqueue(
|
|
1162
|
+
static int deletes_by_oid_enqueue(git_merge_deletes_oidmap *map, git_pool *pool, const git_oid *id, size_t idx)
|
|
1160
1163
|
{
|
|
1161
1164
|
deletes_by_oid_queue *queue;
|
|
1162
1165
|
size_t *array_entry;
|
|
1163
1166
|
|
|
1164
|
-
if ((queue
|
|
1167
|
+
if (git_merge_deletes_oidmap_get(&queue, map, id) != 0) {
|
|
1165
1168
|
queue = git_pool_malloc(pool, sizeof(deletes_by_oid_queue));
|
|
1166
1169
|
GIT_ERROR_CHECK_ALLOC(queue);
|
|
1167
1170
|
|
|
@@ -1169,7 +1172,7 @@ static int deletes_by_oid_enqueue(git_oidmap *map, git_pool *pool, const git_oid
|
|
|
1169
1172
|
queue->next_pos = 0;
|
|
1170
1173
|
queue->first_entry = idx;
|
|
1171
1174
|
|
|
1172
|
-
if (
|
|
1175
|
+
if (git_merge_deletes_oidmap_put(map, id, queue) < 0)
|
|
1173
1176
|
return -1;
|
|
1174
1177
|
} else {
|
|
1175
1178
|
array_entry = git_array_alloc(queue->arr);
|
|
@@ -1180,13 +1183,14 @@ static int deletes_by_oid_enqueue(git_oidmap *map, git_pool *pool, const git_oid
|
|
|
1180
1183
|
return 0;
|
|
1181
1184
|
}
|
|
1182
1185
|
|
|
1183
|
-
static int deletes_by_oid_dequeue(size_t *idx,
|
|
1186
|
+
static int deletes_by_oid_dequeue(size_t *idx, git_merge_deletes_oidmap *map, const git_oid *id)
|
|
1184
1187
|
{
|
|
1185
1188
|
deletes_by_oid_queue *queue;
|
|
1186
1189
|
size_t *array_entry;
|
|
1190
|
+
int error;
|
|
1187
1191
|
|
|
1188
|
-
if ((
|
|
1189
|
-
return
|
|
1192
|
+
if ((error = git_merge_deletes_oidmap_get(&queue, map, id)) != 0)
|
|
1193
|
+
return error;
|
|
1190
1194
|
|
|
1191
1195
|
if (queue->next_pos == 0) {
|
|
1192
1196
|
*idx = queue->first_entry;
|
|
@@ -1209,15 +1213,10 @@ static int merge_diff_mark_similarity_exact(
|
|
|
1209
1213
|
{
|
|
1210
1214
|
size_t i, j;
|
|
1211
1215
|
git_merge_diff *conflict_src, *conflict_tgt;
|
|
1212
|
-
|
|
1216
|
+
git_merge_deletes_oidmap ours_deletes_by_oid = GIT_HASHMAP_INIT,
|
|
1217
|
+
theirs_deletes_by_oid = GIT_HASHMAP_INIT;
|
|
1213
1218
|
int error = 0;
|
|
1214
1219
|
|
|
1215
|
-
if (git_oidmap_new(&ours_deletes_by_oid) < 0 ||
|
|
1216
|
-
git_oidmap_new(&theirs_deletes_by_oid) < 0) {
|
|
1217
|
-
error = -1;
|
|
1218
|
-
goto done;
|
|
1219
|
-
}
|
|
1220
|
-
|
|
1221
1220
|
/* Build a map of object ids to conflicts */
|
|
1222
1221
|
git_vector_foreach(&diff_list->conflicts, i, conflict_src) {
|
|
1223
1222
|
/* Items can be the source of a rename iff they have an item in the
|
|
@@ -1225,14 +1224,21 @@ static int merge_diff_mark_similarity_exact(
|
|
|
1225
1224
|
if (!GIT_MERGE_INDEX_ENTRY_EXISTS(conflict_src->ancestor_entry))
|
|
1226
1225
|
continue;
|
|
1227
1226
|
|
|
1227
|
+
/*
|
|
1228
|
+
* Ignore empty files because it has always the same blob sha1
|
|
1229
|
+
* and will lead to incorrect matches between all entries.
|
|
1230
|
+
*/
|
|
1231
|
+
if (git_oid_equal(&conflict_src->ancestor_entry.id, &git_oid__empty_blob_sha1))
|
|
1232
|
+
continue;
|
|
1233
|
+
|
|
1228
1234
|
if (!GIT_MERGE_INDEX_ENTRY_EXISTS(conflict_src->our_entry)) {
|
|
1229
|
-
error = deletes_by_oid_enqueue(ours_deletes_by_oid, &diff_list->pool, &conflict_src->ancestor_entry.id, i);
|
|
1235
|
+
error = deletes_by_oid_enqueue(&ours_deletes_by_oid, &diff_list->pool, &conflict_src->ancestor_entry.id, i);
|
|
1230
1236
|
if (error < 0)
|
|
1231
1237
|
goto done;
|
|
1232
1238
|
}
|
|
1233
1239
|
|
|
1234
1240
|
if (!GIT_MERGE_INDEX_ENTRY_EXISTS(conflict_src->their_entry)) {
|
|
1235
|
-
error = deletes_by_oid_enqueue(theirs_deletes_by_oid, &diff_list->pool, &conflict_src->ancestor_entry.id, i);
|
|
1241
|
+
error = deletes_by_oid_enqueue(&theirs_deletes_by_oid, &diff_list->pool, &conflict_src->ancestor_entry.id, i);
|
|
1236
1242
|
if (error < 0)
|
|
1237
1243
|
goto done;
|
|
1238
1244
|
}
|
|
@@ -1243,7 +1249,7 @@ static int merge_diff_mark_similarity_exact(
|
|
|
1243
1249
|
continue;
|
|
1244
1250
|
|
|
1245
1251
|
if (GIT_MERGE_INDEX_ENTRY_EXISTS(conflict_tgt->our_entry)) {
|
|
1246
|
-
if (deletes_by_oid_dequeue(&i, ours_deletes_by_oid, &conflict_tgt->our_entry.id) == 0) {
|
|
1252
|
+
if (deletes_by_oid_dequeue(&i, &ours_deletes_by_oid, &conflict_tgt->our_entry.id) == 0) {
|
|
1247
1253
|
similarity_ours[i].similarity = 100;
|
|
1248
1254
|
similarity_ours[i].other_idx = j;
|
|
1249
1255
|
|
|
@@ -1253,7 +1259,7 @@ static int merge_diff_mark_similarity_exact(
|
|
|
1253
1259
|
}
|
|
1254
1260
|
|
|
1255
1261
|
if (GIT_MERGE_INDEX_ENTRY_EXISTS(conflict_tgt->their_entry)) {
|
|
1256
|
-
if (deletes_by_oid_dequeue(&i, theirs_deletes_by_oid, &conflict_tgt->their_entry.id) == 0) {
|
|
1262
|
+
if (deletes_by_oid_dequeue(&i, &theirs_deletes_by_oid, &conflict_tgt->their_entry.id) == 0) {
|
|
1257
1263
|
similarity_theirs[i].similarity = 100;
|
|
1258
1264
|
similarity_theirs[i].other_idx = j;
|
|
1259
1265
|
|
|
@@ -1264,8 +1270,8 @@ static int merge_diff_mark_similarity_exact(
|
|
|
1264
1270
|
}
|
|
1265
1271
|
|
|
1266
1272
|
done:
|
|
1267
|
-
|
|
1268
|
-
|
|
1273
|
+
deletes_by_oid_dispose(&ours_deletes_by_oid);
|
|
1274
|
+
deletes_by_oid_dispose(&theirs_deletes_by_oid);
|
|
1269
1275
|
|
|
1270
1276
|
return error;
|
|
1271
1277
|
}
|
|
@@ -1859,9 +1865,9 @@ void git_merge_diff_list__free(git_merge_diff_list *diff_list)
|
|
|
1859
1865
|
if (!diff_list)
|
|
1860
1866
|
return;
|
|
1861
1867
|
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1868
|
+
git_vector_dispose(&diff_list->staged);
|
|
1869
|
+
git_vector_dispose(&diff_list->conflicts);
|
|
1870
|
+
git_vector_dispose(&diff_list->resolved);
|
|
1865
1871
|
git_pool_clear(&diff_list->pool);
|
|
1866
1872
|
git__free(diff_list);
|
|
1867
1873
|
}
|
|
@@ -2829,7 +2835,7 @@ cleanup:
|
|
|
2829
2835
|
|
|
2830
2836
|
git_str_dispose(&file_path);
|
|
2831
2837
|
|
|
2832
|
-
|
|
2838
|
+
git_vector_dispose(&matching);
|
|
2833
2839
|
git__free(entries);
|
|
2834
2840
|
|
|
2835
2841
|
return error;
|
|
@@ -3008,7 +3014,7 @@ done:
|
|
|
3008
3014
|
git_iterator_free(iter_new);
|
|
3009
3015
|
git_diff_free(staged_diff_list);
|
|
3010
3016
|
git_diff_free(index_diff_list);
|
|
3011
|
-
|
|
3017
|
+
git_vector_dispose(&staged_paths);
|
|
3012
3018
|
|
|
3013
3019
|
return error;
|
|
3014
3020
|
}
|
|
@@ -3105,7 +3111,7 @@ int git_merge__check_result(git_repository *repo, git_index *index_new)
|
|
|
3105
3111
|
}
|
|
3106
3112
|
|
|
3107
3113
|
done:
|
|
3108
|
-
|
|
3114
|
+
git_vector_dispose(&paths);
|
|
3109
3115
|
git_tree_free(head_tree);
|
|
3110
3116
|
git_iterator_free(iter_head);
|
|
3111
3117
|
git_iterator_free(iter_new);
|
|
@@ -3346,8 +3352,7 @@ int git_merge(
|
|
|
3346
3352
|
goto done;
|
|
3347
3353
|
|
|
3348
3354
|
checkout_strategy = given_checkout_opts ?
|
|
3349
|
-
given_checkout_opts->checkout_strategy :
|
|
3350
|
-
GIT_CHECKOUT_SAFE;
|
|
3355
|
+
given_checkout_opts->checkout_strategy : 0;
|
|
3351
3356
|
|
|
3352
3357
|
if ((error = git_indexwriter_init_for_operation(&indexwriter, repo,
|
|
3353
3358
|
&checkout_strategy)) < 0)
|
|
@@ -165,6 +165,10 @@ GIT_INLINE(const char *) git_merge_file__best_path(
|
|
|
165
165
|
if (!ancestor) {
|
|
166
166
|
if (ours && theirs && strcmp(ours, theirs) == 0)
|
|
167
167
|
return ours;
|
|
168
|
+
if (ours && !theirs)
|
|
169
|
+
return ours;
|
|
170
|
+
if (theirs && !ours)
|
|
171
|
+
return theirs;
|
|
168
172
|
|
|
169
173
|
return NULL;
|
|
170
174
|
}
|
|
@@ -218,7 +218,7 @@ int git_merge_driver_global_init(void)
|
|
|
218
218
|
|
|
219
219
|
done:
|
|
220
220
|
if (error < 0)
|
|
221
|
-
|
|
221
|
+
git_vector_dispose_deep(&merge_driver_registry.drivers);
|
|
222
222
|
|
|
223
223
|
return error;
|
|
224
224
|
}
|
|
@@ -238,7 +238,7 @@ static void git_merge_driver_global_shutdown(void)
|
|
|
238
238
|
git__free(entry);
|
|
239
239
|
}
|
|
240
240
|
|
|
241
|
-
|
|
241
|
+
git_vector_dispose(&merge_driver_registry.drivers);
|
|
242
242
|
|
|
243
243
|
git_rwlock_wrunlock(&merge_driver_registry.lock);
|
|
244
244
|
git_rwlock_free(&merge_driver_registry.lock);
|
|
@@ -84,30 +84,34 @@ static int merge_file__xdiff(
|
|
|
84
84
|
|
|
85
85
|
memset(&xmparam, 0x0, sizeof(xmparam_t));
|
|
86
86
|
|
|
87
|
-
if (ours->size > LONG_MAX ||
|
|
88
|
-
theirs->size > LONG_MAX ||
|
|
87
|
+
if ((ours && ours->size > LONG_MAX) ||
|
|
88
|
+
(theirs && theirs->size > LONG_MAX) ||
|
|
89
89
|
(ancestor && ancestor->size > LONG_MAX)) {
|
|
90
90
|
git_error_set(GIT_ERROR_MERGE, "failed to merge files");
|
|
91
91
|
error = -1;
|
|
92
92
|
goto done;
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
if (ancestor) {
|
|
95
|
+
if (ancestor && ancestor->size) {
|
|
96
96
|
xmparam.ancestor = (options.ancestor_label) ?
|
|
97
97
|
options.ancestor_label : ancestor->path;
|
|
98
98
|
ancestor_mmfile.ptr = (char *)ancestor->ptr;
|
|
99
99
|
ancestor_mmfile.size = (long)ancestor->size;
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
-
|
|
103
|
-
options.our_label
|
|
104
|
-
|
|
105
|
-
|
|
102
|
+
if (ours && ours->size) {
|
|
103
|
+
xmparam.file1 = (options.our_label) ?
|
|
104
|
+
options.our_label : ours->path;
|
|
105
|
+
our_mmfile.ptr = (char *)ours->ptr;
|
|
106
|
+
our_mmfile.size = (long)ours->size;
|
|
107
|
+
}
|
|
106
108
|
|
|
107
|
-
|
|
108
|
-
options.their_label
|
|
109
|
-
|
|
110
|
-
|
|
109
|
+
if (theirs && theirs->size) {
|
|
110
|
+
xmparam.file2 = (options.their_label) ?
|
|
111
|
+
options.their_label : theirs->path;
|
|
112
|
+
their_mmfile.ptr = (char *)theirs->ptr;
|
|
113
|
+
their_mmfile.size = (long)theirs->size;
|
|
114
|
+
}
|
|
111
115
|
|
|
112
116
|
if (options.favor == GIT_MERGE_FILE_FAVOR_OURS)
|
|
113
117
|
xmparam.favor = XDL_MERGE_FAVOR_OURS;
|
|
@@ -148,8 +152,8 @@ static int merge_file__xdiff(
|
|
|
148
152
|
|
|
149
153
|
path = git_merge_file__best_path(
|
|
150
154
|
ancestor ? ancestor->path : NULL,
|
|
151
|
-
ours->path,
|
|
152
|
-
theirs->path);
|
|
155
|
+
ours ? ours->path : NULL,
|
|
156
|
+
theirs ? theirs->path : NULL);
|
|
153
157
|
|
|
154
158
|
if (path != NULL && (out->path = git__strdup(path)) == NULL) {
|
|
155
159
|
error = -1;
|
|
@@ -161,8 +165,8 @@ static int merge_file__xdiff(
|
|
|
161
165
|
out->len = mmbuffer.size;
|
|
162
166
|
out->mode = git_merge_file__best_mode(
|
|
163
167
|
ancestor ? ancestor->mode : 0,
|
|
164
|
-
ours->mode,
|
|
165
|
-
theirs->mode);
|
|
168
|
+
ours ? ours->mode : 0,
|
|
169
|
+
theirs ? theirs->mode : 0);
|
|
166
170
|
|
|
167
171
|
done:
|
|
168
172
|
if (error < 0)
|
|
@@ -201,7 +205,7 @@ static int merge_file__binary(
|
|
|
201
205
|
goto done;
|
|
202
206
|
|
|
203
207
|
if ((out->path = git__strdup(favored->path)) == NULL ||
|
|
204
|
-
|
|
208
|
+
(out->ptr = git__malloc(favored->size)) == NULL)
|
|
205
209
|
goto done;
|
|
206
210
|
|
|
207
211
|
memcpy((char *)out->ptr, favored->ptr, favored->size);
|
|
@@ -221,8 +225,8 @@ static int merge_file__from_inputs(
|
|
|
221
225
|
const git_merge_file_options *given_opts)
|
|
222
226
|
{
|
|
223
227
|
if (merge_file__is_binary(ancestor) ||
|
|
224
|
-
|
|
225
|
-
|
|
228
|
+
merge_file__is_binary(ours) ||
|
|
229
|
+
merge_file__is_binary(theirs))
|
|
226
230
|
return merge_file__binary(out, ours, theirs, given_opts);
|
|
227
231
|
|
|
228
232
|
return merge_file__xdiff(out, ancestor, ours, theirs, given_opts);
|
|
@@ -261,8 +265,11 @@ int git_merge_file(
|
|
|
261
265
|
if (ancestor)
|
|
262
266
|
ancestor = git_merge_file__normalize_inputs(&inputs[0], ancestor);
|
|
263
267
|
|
|
264
|
-
|
|
265
|
-
|
|
268
|
+
if (ours)
|
|
269
|
+
ours = git_merge_file__normalize_inputs(&inputs[1], ours);
|
|
270
|
+
|
|
271
|
+
if (theirs)
|
|
272
|
+
theirs = git_merge_file__normalize_inputs(&inputs[2], theirs);
|
|
266
273
|
|
|
267
274
|
return merge_file__from_inputs(out, ancestor, ours, theirs, options);
|
|
268
275
|
}
|
|
@@ -275,16 +282,16 @@ int git_merge_file_from_index(
|
|
|
275
282
|
const git_index_entry *theirs,
|
|
276
283
|
const git_merge_file_options *options)
|
|
277
284
|
{
|
|
278
|
-
git_merge_file_input
|
|
279
|
-
|
|
280
|
-
|
|
285
|
+
git_merge_file_input ancestor_input = {0};
|
|
286
|
+
git_merge_file_input our_input = {0};
|
|
287
|
+
git_merge_file_input their_input = {0};
|
|
288
|
+
git_odb *odb;
|
|
281
289
|
git_odb_object *odb_object[3] = { 0 };
|
|
282
290
|
int error = 0;
|
|
283
291
|
|
|
284
292
|
GIT_ASSERT_ARG(out);
|
|
285
293
|
GIT_ASSERT_ARG(repo);
|
|
286
|
-
GIT_ASSERT_ARG(ours);
|
|
287
|
-
GIT_ASSERT_ARG(theirs);
|
|
294
|
+
GIT_ASSERT_ARG(ancestor || ours || theirs);
|
|
288
295
|
|
|
289
296
|
memset(out, 0x0, sizeof(git_merge_file_result));
|
|
290
297
|
|
|
@@ -295,16 +302,22 @@ int git_merge_file_from_index(
|
|
|
295
302
|
if ((error = merge_file_input_from_index(
|
|
296
303
|
&ancestor_input, &odb_object[0], odb, ancestor)) < 0)
|
|
297
304
|
goto done;
|
|
305
|
+
}
|
|
298
306
|
|
|
299
|
-
|
|
307
|
+
if (ours) {
|
|
308
|
+
if ((error = merge_file_input_from_index(
|
|
309
|
+
&our_input, &odb_object[1], odb, ours)) < 0)
|
|
310
|
+
goto done;
|
|
300
311
|
}
|
|
301
312
|
|
|
302
|
-
if (
|
|
303
|
-
|
|
304
|
-
|
|
313
|
+
if (theirs) {
|
|
314
|
+
if ((error = merge_file_input_from_index(
|
|
315
|
+
&their_input, &odb_object[2], odb, theirs)) < 0)
|
|
316
|
+
goto done;
|
|
317
|
+
}
|
|
305
318
|
|
|
306
319
|
error = merge_file__from_inputs(out,
|
|
307
|
-
|
|
320
|
+
&ancestor_input, &our_input, &their_input, options);
|
|
308
321
|
|
|
309
322
|
done:
|
|
310
323
|
git_odb_object_free(odb_object[0]);
|
|
@@ -33,7 +33,7 @@ static int git_message__prettify(
|
|
|
33
33
|
|
|
34
34
|
int consecutive_empty_lines = 0;
|
|
35
35
|
size_t i, line_length, rtrimmed_line_length;
|
|
36
|
-
char *next_newline;
|
|
36
|
+
const char *next_newline;
|
|
37
37
|
|
|
38
38
|
for (i = 0; i < strlen(message); i += line_length) {
|
|
39
39
|
next_newline = memchr(message + i, '\n', message_len - i);
|
|
@@ -460,7 +460,7 @@ int git_midx_foreach_entry(
|
|
|
460
460
|
{
|
|
461
461
|
git_oid oid;
|
|
462
462
|
size_t oid_size, i;
|
|
463
|
-
int error;
|
|
463
|
+
int error = 0;
|
|
464
464
|
|
|
465
465
|
GIT_ASSERT_ARG(idx);
|
|
466
466
|
|
|
@@ -484,7 +484,7 @@ int git_midx_close(git_midx_file *idx)
|
|
|
484
484
|
if (idx->index_map.data)
|
|
485
485
|
git_futils_mmap_free(&idx->index_map);
|
|
486
486
|
|
|
487
|
-
|
|
487
|
+
git_vector_dispose(&idx->packfile_names);
|
|
488
488
|
|
|
489
489
|
return 0;
|
|
490
490
|
}
|
|
@@ -508,20 +508,28 @@ static int packfile__cmp(const void *a_, const void *b_)
|
|
|
508
508
|
}
|
|
509
509
|
|
|
510
510
|
int git_midx_writer_new(
|
|
511
|
-
|
|
512
|
-
|
|
511
|
+
git_midx_writer **out,
|
|
512
|
+
const char *pack_dir
|
|
513
513
|
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
514
|
-
|
|
514
|
+
, git_midx_writer_options *opts
|
|
515
515
|
#endif
|
|
516
516
|
)
|
|
517
517
|
{
|
|
518
518
|
git_midx_writer *w;
|
|
519
|
+
git_oid_t oid_type;
|
|
519
520
|
|
|
520
|
-
|
|
521
|
-
git_oid_t oid_type = GIT_OID_SHA1;
|
|
522
|
-
#endif
|
|
521
|
+
GIT_ASSERT_ARG(out && pack_dir);
|
|
523
522
|
|
|
524
|
-
|
|
523
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
524
|
+
GIT_ERROR_CHECK_VERSION(opts,
|
|
525
|
+
GIT_MIDX_WRITER_OPTIONS_VERSION,
|
|
526
|
+
"git_midx_writer_options");
|
|
527
|
+
|
|
528
|
+
oid_type = opts && opts->oid_type ? opts->oid_type : GIT_OID_DEFAULT;
|
|
529
|
+
GIT_ASSERT_ARG(git_oid_type_is_valid(oid_type));
|
|
530
|
+
#else
|
|
531
|
+
oid_type = GIT_OID_SHA1;
|
|
532
|
+
#endif
|
|
525
533
|
|
|
526
534
|
w = git__calloc(1, sizeof(git_midx_writer));
|
|
527
535
|
GIT_ERROR_CHECK_ALLOC(w);
|
|
@@ -554,7 +562,7 @@ void git_midx_writer_free(git_midx_writer *w)
|
|
|
554
562
|
|
|
555
563
|
git_vector_foreach (&w->packs, i, p)
|
|
556
564
|
git_mwindow_put_pack(p);
|
|
557
|
-
|
|
565
|
+
git_vector_dispose(&w->packs);
|
|
558
566
|
git_str_dispose(&w->pack_dir);
|
|
559
567
|
git__free(w);
|
|
560
568
|
}
|
|
@@ -571,8 +579,7 @@ int git_midx_writer_add(
|
|
|
571
579
|
if (error < 0)
|
|
572
580
|
return error;
|
|
573
581
|
|
|
574
|
-
|
|
575
|
-
error = git_mwindow_get_pack(&p, git_str_cstr(&idx_path_buf), 0);
|
|
582
|
+
error = git_mwindow_get_pack(&p, git_str_cstr(&idx_path_buf), w->oid_type);
|
|
576
583
|
git_str_dispose(&idx_path_buf);
|
|
577
584
|
if (error < 0)
|
|
578
585
|
return error;
|
|
@@ -660,9 +667,11 @@ static int midx_write_hash(const char *buf, size_t size, void *data)
|
|
|
660
667
|
struct midx_write_hash_context *ctx = (struct midx_write_hash_context *)data;
|
|
661
668
|
int error;
|
|
662
669
|
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
670
|
+
if (ctx->ctx) {
|
|
671
|
+
error = git_hash_update(ctx->ctx, buf, size);
|
|
672
|
+
if (error < 0)
|
|
673
|
+
return error;
|
|
674
|
+
}
|
|
666
675
|
|
|
667
676
|
return ctx->write_cb(buf, size, ctx->cb_data);
|
|
668
677
|
}
|
|
@@ -703,9 +712,9 @@ static int midx_write(
|
|
|
703
712
|
hash_cb_data.ctx = &ctx;
|
|
704
713
|
|
|
705
714
|
oid_size = git_oid_size(w->oid_type);
|
|
706
|
-
|
|
707
|
-
GIT_ASSERT((checksum_type = git_oid_algorithm(w->oid_type)));
|
|
715
|
+
checksum_type = git_oid_algorithm(w->oid_type);
|
|
708
716
|
checksum_size = git_hash_size(checksum_type);
|
|
717
|
+
GIT_ASSERT(oid_size && checksum_type && checksum_size);
|
|
709
718
|
|
|
710
719
|
if ((error = git_hash_ctx_init(&ctx, checksum_type)) < 0)
|
|
711
720
|
return error;
|
|
@@ -863,13 +872,16 @@ static int midx_write(
|
|
|
863
872
|
error = git_hash_final(checksum, &ctx);
|
|
864
873
|
if (error < 0)
|
|
865
874
|
goto cleanup;
|
|
875
|
+
|
|
876
|
+
hash_cb_data.ctx = NULL;
|
|
877
|
+
|
|
866
878
|
error = write_cb((char *)checksum, checksum_size, cb_data);
|
|
867
879
|
if (error < 0)
|
|
868
880
|
goto cleanup;
|
|
869
881
|
|
|
870
882
|
cleanup:
|
|
871
883
|
git_array_clear(object_entries_array);
|
|
872
|
-
|
|
884
|
+
git_vector_dispose(&object_entries);
|
|
873
885
|
git_str_dispose(&packfile_names);
|
|
874
886
|
git_str_dispose(&oid_lookup);
|
|
875
887
|
git_str_dispose(&object_offsets);
|