rugged 1.7.2 → 1.9.0
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 +23 -10
- data/vendor/libgit2/COPYING +195 -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 +22 -17
- 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 +1 -0
- data/vendor/libgit2/deps/xdiff/xmerge.c +2 -2
- 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 +133 -3
- 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 +99 -14
- 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 +46 -1
- 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 -24
- 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 +10 -0
- 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 +94 -18
- 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 +24 -3
- 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 +44 -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 +2 -2
- 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 +29 -3
- 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 +26 -8
- 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 +7 -2
- 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 +186 -166
- data/vendor/libgit2/src/libgit2/clone.h +4 -1
- data/vendor/libgit2/src/libgit2/commit.c +92 -0
- data/vendor/libgit2/src/libgit2/commit_graph.c +67 -56
- data/vendor/libgit2/src/libgit2/commit_graph.h +1 -2
- data/vendor/libgit2/src/libgit2/config.c +389 -298
- 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 +99 -88
- 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 +194 -40
- data/vendor/libgit2/src/libgit2/config_parse.c +10 -9
- data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
- 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 +12 -19
- 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_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/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 +68 -90
- data/vendor/libgit2/src/libgit2/index.h +2 -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 +34 -38
- 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 +42 -37
- data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
- data/vendor/libgit2/src/libgit2/midx.c +28 -15
- 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 +5 -4
- 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 +32 -5
- data/vendor/libgit2/src/libgit2/oid.h +11 -0
- data/vendor/libgit2/src/libgit2/pack-objects.c +58 -31
- data/vendor/libgit2/src/libgit2/pack-objects.h +12 -4
- data/vendor/libgit2/src/libgit2/pack.c +30 -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 +26 -7
- 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 +121 -61
- data/vendor/libgit2/src/libgit2/repository.c +231 -51
- 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/stransport.c +39 -7
- data/vendor/libgit2/src/libgit2/submodule.c +106 -63
- data/vendor/libgit2/src/libgit2/submodule.h +6 -7
- data/vendor/libgit2/src/libgit2/tag.c +1 -1
- 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/credential.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 +112 -72
- 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 +8 -7
- data/vendor/libgit2/src/libgit2/transports/smart.c +20 -8
- data/vendor/libgit2/src/libgit2/transports/smart.h +4 -2
- data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +2 -2
- 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 +347 -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 +4 -6
- 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 +15 -4
- data/vendor/libgit2/src/util/fs_path.h +23 -0
- data/vendor/libgit2/src/util/futils.c +6 -5
- data/vendor/libgit2/src/util/futils.h +13 -4
- 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/openssl.c +152 -0
- data/vendor/libgit2/src/util/hash/openssl.h +17 -1
- data/vendor/libgit2/src/util/hash/sha.h +4 -1
- data/vendor/libgit2/src/util/hashmap.h +424 -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 +13 -7
- 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 +222 -0
- data/vendor/libgit2/src/util/rand.c +1 -7
- data/vendor/libgit2/src/util/regexp.c +1 -1
- 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 +2 -2
- 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 +629 -0
- data/vendor/libgit2/src/util/unix/realpath.c +23 -5
- data/vendor/libgit2/src/util/util.c +2 -2
- data/vendor/libgit2/src/util/util.h +4 -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/posix_w32.c +29 -6
- data/vendor/libgit2/src/util/win32/process.c +506 -0
- metadata +45 -28
- 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;
|
|
@@ -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)
|
|
@@ -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);
|
|
@@ -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
|
}
|
|
@@ -660,9 +668,11 @@ static int midx_write_hash(const char *buf, size_t size, void *data)
|
|
|
660
668
|
struct midx_write_hash_context *ctx = (struct midx_write_hash_context *)data;
|
|
661
669
|
int error;
|
|
662
670
|
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
671
|
+
if (ctx->ctx) {
|
|
672
|
+
error = git_hash_update(ctx->ctx, buf, size);
|
|
673
|
+
if (error < 0)
|
|
674
|
+
return error;
|
|
675
|
+
}
|
|
666
676
|
|
|
667
677
|
return ctx->write_cb(buf, size, ctx->cb_data);
|
|
668
678
|
}
|
|
@@ -703,9 +713,9 @@ static int midx_write(
|
|
|
703
713
|
hash_cb_data.ctx = &ctx;
|
|
704
714
|
|
|
705
715
|
oid_size = git_oid_size(w->oid_type);
|
|
706
|
-
|
|
707
|
-
GIT_ASSERT((checksum_type = git_oid_algorithm(w->oid_type)));
|
|
716
|
+
checksum_type = git_oid_algorithm(w->oid_type);
|
|
708
717
|
checksum_size = git_hash_size(checksum_type);
|
|
718
|
+
GIT_ASSERT(oid_size && checksum_type && checksum_size);
|
|
709
719
|
|
|
710
720
|
if ((error = git_hash_ctx_init(&ctx, checksum_type)) < 0)
|
|
711
721
|
return error;
|
|
@@ -863,13 +873,16 @@ static int midx_write(
|
|
|
863
873
|
error = git_hash_final(checksum, &ctx);
|
|
864
874
|
if (error < 0)
|
|
865
875
|
goto cleanup;
|
|
876
|
+
|
|
877
|
+
hash_cb_data.ctx = NULL;
|
|
878
|
+
|
|
866
879
|
error = write_cb((char *)checksum, checksum_size, cb_data);
|
|
867
880
|
if (error < 0)
|
|
868
881
|
goto cleanup;
|
|
869
882
|
|
|
870
883
|
cleanup:
|
|
871
884
|
git_array_clear(object_entries_array);
|
|
872
|
-
|
|
885
|
+
git_vector_dispose(&object_entries);
|
|
873
886
|
git_str_dispose(&packfile_names);
|
|
874
887
|
git_str_dispose(&oid_lookup);
|
|
875
888
|
git_str_dispose(&object_offsets);
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
#include "futils.h"
|
|
12
12
|
#include "map.h"
|
|
13
13
|
#include "runtime.h"
|
|
14
|
-
#include "strmap.h"
|
|
15
14
|
#include "pack.h"
|
|
16
15
|
|
|
17
16
|
#define DEFAULT_WINDOW_SIZE \
|
|
@@ -29,33 +28,27 @@ size_t git_mwindow__window_size = DEFAULT_WINDOW_SIZE;
|
|
|
29
28
|
size_t git_mwindow__mapped_limit = DEFAULT_MAPPED_LIMIT;
|
|
30
29
|
size_t git_mwindow__file_limit = DEFAULT_FILE_LIMIT;
|
|
31
30
|
|
|
32
|
-
/* Mutex to control access to `git_mwindow__mem_ctl` and `
|
|
33
|
-
git_mutex
|
|
31
|
+
/* Mutex to control access to `git_mwindow__mem_ctl` and `git_mwindow__pack_cache`. */
|
|
32
|
+
git_mutex git_mwindow__mutex;
|
|
34
33
|
|
|
35
|
-
/* Whenever you want to read or modify this, grab `
|
|
34
|
+
/* Whenever you want to read or modify this, grab `git_mwindow__mutex` */
|
|
36
35
|
git_mwindow_ctl git_mwindow__mem_ctl;
|
|
37
36
|
|
|
38
37
|
/* Global list of mwindow files, to open packs once across repos */
|
|
39
|
-
|
|
38
|
+
GIT_HASHMAP_STR_FUNCTIONS(git_mwindow_packmap, , struct git_pack_file *);
|
|
39
|
+
git_mwindow_packmap git_mwindow__pack_cache;
|
|
40
40
|
|
|
41
41
|
static void git_mwindow_global_shutdown(void)
|
|
42
42
|
{
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
git_mutex_free(&git__mwindow_mutex);
|
|
46
|
-
|
|
47
|
-
git__pack_cache = NULL;
|
|
48
|
-
git_strmap_free(tmp);
|
|
43
|
+
git_mutex_free(&git_mwindow__mutex);
|
|
44
|
+
git_mwindow_packmap_dispose(&git_mwindow__pack_cache);
|
|
49
45
|
}
|
|
50
46
|
|
|
51
47
|
int git_mwindow_global_init(void)
|
|
52
48
|
{
|
|
53
49
|
int error;
|
|
54
50
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if ((error = git_mutex_init(&git__mwindow_mutex)) < 0 ||
|
|
58
|
-
(error = git_strmap_new(&git__pack_cache)) < 0)
|
|
51
|
+
if ((error = git_mutex_init(&git_mwindow__mutex)) < 0)
|
|
59
52
|
return error;
|
|
60
53
|
|
|
61
54
|
return git_runtime_shutdown_register(git_mwindow_global_shutdown);
|
|
@@ -73,31 +66,34 @@ int git_mwindow_get_pack(
|
|
|
73
66
|
if ((error = git_packfile__name(&packname, path)) < 0)
|
|
74
67
|
return error;
|
|
75
68
|
|
|
76
|
-
if (git_mutex_lock(&
|
|
69
|
+
if (git_mutex_lock(&git_mwindow__mutex) < 0) {
|
|
77
70
|
git_error_set(GIT_ERROR_OS, "failed to lock mwindow mutex");
|
|
78
71
|
return -1;
|
|
79
72
|
}
|
|
80
73
|
|
|
81
|
-
|
|
74
|
+
error = git_mwindow_packmap_get(&pack, &git_mwindow__pack_cache, packname);
|
|
82
75
|
git__free(packname);
|
|
83
76
|
|
|
84
|
-
if (
|
|
77
|
+
if (error == 0) {
|
|
85
78
|
git_atomic32_inc(&pack->refcount);
|
|
86
|
-
git_mutex_unlock(&
|
|
79
|
+
git_mutex_unlock(&git_mwindow__mutex);
|
|
87
80
|
*out = pack;
|
|
88
81
|
return 0;
|
|
82
|
+
} else if (error != GIT_ENOTFOUND) {
|
|
83
|
+
return error;
|
|
89
84
|
}
|
|
90
85
|
|
|
91
86
|
/* If we didn't find it, we need to create it */
|
|
92
87
|
if ((error = git_packfile_alloc(&pack, path, oid_type)) < 0) {
|
|
93
|
-
git_mutex_unlock(&
|
|
88
|
+
git_mutex_unlock(&git_mwindow__mutex);
|
|
94
89
|
return error;
|
|
95
90
|
}
|
|
96
91
|
|
|
97
92
|
git_atomic32_inc(&pack->refcount);
|
|
98
93
|
|
|
99
|
-
error =
|
|
100
|
-
git_mutex_unlock(&
|
|
94
|
+
error = git_mwindow_packmap_put(&git_mwindow__pack_cache, pack->pack_name, pack);
|
|
95
|
+
git_mutex_unlock(&git_mwindow__mutex);
|
|
96
|
+
|
|
101
97
|
if (error < 0) {
|
|
102
98
|
git_packfile_free(pack, false);
|
|
103
99
|
return error;
|
|
@@ -112,21 +108,18 @@ int git_mwindow_put_pack(struct git_pack_file *pack)
|
|
|
112
108
|
int count, error;
|
|
113
109
|
struct git_pack_file *pack_to_delete = NULL;
|
|
114
110
|
|
|
115
|
-
if ((error = git_mutex_lock(&
|
|
111
|
+
if ((error = git_mutex_lock(&git_mwindow__mutex)) < 0)
|
|
116
112
|
return error;
|
|
117
113
|
|
|
118
|
-
/* put before get would be a corrupted state */
|
|
119
|
-
GIT_ASSERT(git__pack_cache);
|
|
120
|
-
|
|
121
114
|
/* if we cannot find it, the state is corrupted */
|
|
122
|
-
GIT_ASSERT(
|
|
115
|
+
GIT_ASSERT(git_mwindow_packmap_contains(&git_mwindow__pack_cache, pack->pack_name));
|
|
123
116
|
|
|
124
117
|
count = git_atomic32_dec(&pack->refcount);
|
|
125
118
|
if (count == 0) {
|
|
126
|
-
|
|
119
|
+
git_mwindow_packmap_remove(&git_mwindow__pack_cache, pack->pack_name);
|
|
127
120
|
pack_to_delete = pack;
|
|
128
121
|
}
|
|
129
|
-
git_mutex_unlock(&
|
|
122
|
+
git_mutex_unlock(&git_mwindow__mutex);
|
|
130
123
|
git_packfile_free(pack_to_delete, false);
|
|
131
124
|
|
|
132
125
|
return 0;
|
|
@@ -134,7 +127,7 @@ int git_mwindow_put_pack(struct git_pack_file *pack)
|
|
|
134
127
|
|
|
135
128
|
/*
|
|
136
129
|
* Free all the windows in a sequence, typically because we're done
|
|
137
|
-
* with the file. Needs to hold the
|
|
130
|
+
* with the file. Needs to hold the git_mwindow__mutex.
|
|
138
131
|
*/
|
|
139
132
|
static int git_mwindow_free_all_locked(git_mwindow_file *mwf)
|
|
140
133
|
{
|
|
@@ -152,7 +145,7 @@ static int git_mwindow_free_all_locked(git_mwindow_file *mwf)
|
|
|
152
145
|
}
|
|
153
146
|
|
|
154
147
|
if (ctl->windowfiles.length == 0) {
|
|
155
|
-
|
|
148
|
+
git_vector_dispose(&ctl->windowfiles);
|
|
156
149
|
ctl->windowfiles.contents = NULL;
|
|
157
150
|
}
|
|
158
151
|
|
|
@@ -176,14 +169,14 @@ int git_mwindow_free_all(git_mwindow_file *mwf)
|
|
|
176
169
|
{
|
|
177
170
|
int error;
|
|
178
171
|
|
|
179
|
-
if (git_mutex_lock(&
|
|
172
|
+
if (git_mutex_lock(&git_mwindow__mutex)) {
|
|
180
173
|
git_error_set(GIT_ERROR_THREAD, "unable to lock mwindow mutex");
|
|
181
174
|
return -1;
|
|
182
175
|
}
|
|
183
176
|
|
|
184
177
|
error = git_mwindow_free_all_locked(mwf);
|
|
185
178
|
|
|
186
|
-
git_mutex_unlock(&
|
|
179
|
+
git_mutex_unlock(&git_mwindow__mutex);
|
|
187
180
|
|
|
188
181
|
return error;
|
|
189
182
|
}
|
|
@@ -405,7 +398,7 @@ unsigned char *git_mwindow_open(
|
|
|
405
398
|
git_mwindow_ctl *ctl = &git_mwindow__mem_ctl;
|
|
406
399
|
git_mwindow *w = *cursor;
|
|
407
400
|
|
|
408
|
-
if (git_mutex_lock(&
|
|
401
|
+
if (git_mutex_lock(&git_mwindow__mutex)) {
|
|
409
402
|
git_error_set(GIT_ERROR_THREAD, "unable to lock mwindow mutex");
|
|
410
403
|
return NULL;
|
|
411
404
|
}
|
|
@@ -427,7 +420,7 @@ unsigned char *git_mwindow_open(
|
|
|
427
420
|
if (!w) {
|
|
428
421
|
w = new_window_locked(mwf->fd, mwf->size, offset);
|
|
429
422
|
if (w == NULL) {
|
|
430
|
-
git_mutex_unlock(&
|
|
423
|
+
git_mutex_unlock(&git_mwindow__mutex);
|
|
431
424
|
return NULL;
|
|
432
425
|
}
|
|
433
426
|
w->next = mwf->windows;
|
|
@@ -447,7 +440,7 @@ unsigned char *git_mwindow_open(
|
|
|
447
440
|
if (left)
|
|
448
441
|
*left = (unsigned int)(w->window_map.len - offset);
|
|
449
442
|
|
|
450
|
-
git_mutex_unlock(&
|
|
443
|
+
git_mutex_unlock(&git_mwindow__mutex);
|
|
451
444
|
return (unsigned char *) w->window_map.data + offset;
|
|
452
445
|
}
|
|
453
446
|
|
|
@@ -459,14 +452,14 @@ int git_mwindow_file_register(git_mwindow_file *mwf)
|
|
|
459
452
|
size_t i;
|
|
460
453
|
git_mwindow_file *closed_file = NULL;
|
|
461
454
|
|
|
462
|
-
if (git_mutex_lock(&
|
|
455
|
+
if (git_mutex_lock(&git_mwindow__mutex)) {
|
|
463
456
|
git_error_set(GIT_ERROR_THREAD, "unable to lock mwindow mutex");
|
|
464
457
|
return -1;
|
|
465
458
|
}
|
|
466
459
|
|
|
467
460
|
if (ctl->windowfiles.length == 0 &&
|
|
468
461
|
(error = git_vector_init(&ctl->windowfiles, 8, NULL)) < 0) {
|
|
469
|
-
git_mutex_unlock(&
|
|
462
|
+
git_mutex_unlock(&git_mwindow__mutex);
|
|
470
463
|
goto cleanup;
|
|
471
464
|
}
|
|
472
465
|
|
|
@@ -486,7 +479,7 @@ int git_mwindow_file_register(git_mwindow_file *mwf)
|
|
|
486
479
|
}
|
|
487
480
|
|
|
488
481
|
error = git_vector_insert(&ctl->windowfiles, mwf);
|
|
489
|
-
git_mutex_unlock(&
|
|
482
|
+
git_mutex_unlock(&git_mwindow__mutex);
|
|
490
483
|
if (error < 0)
|
|
491
484
|
goto cleanup;
|
|
492
485
|
|
|
@@ -505,7 +498,7 @@ int git_mwindow_file_register(git_mwindow_file *mwf)
|
|
|
505
498
|
}
|
|
506
499
|
|
|
507
500
|
cleanup:
|
|
508
|
-
|
|
501
|
+
git_vector_dispose(&closed_files);
|
|
509
502
|
return error;
|
|
510
503
|
}
|
|
511
504
|
|
|
@@ -515,30 +508,30 @@ void git_mwindow_file_deregister(git_mwindow_file *mwf)
|
|
|
515
508
|
git_mwindow_file *cur;
|
|
516
509
|
size_t i;
|
|
517
510
|
|
|
518
|
-
if (git_mutex_lock(&
|
|
511
|
+
if (git_mutex_lock(&git_mwindow__mutex))
|
|
519
512
|
return;
|
|
520
513
|
|
|
521
514
|
git_vector_foreach(&ctl->windowfiles, i, cur) {
|
|
522
515
|
if (cur == mwf) {
|
|
523
516
|
git_vector_remove(&ctl->windowfiles, i);
|
|
524
|
-
git_mutex_unlock(&
|
|
517
|
+
git_mutex_unlock(&git_mwindow__mutex);
|
|
525
518
|
return;
|
|
526
519
|
}
|
|
527
520
|
}
|
|
528
|
-
git_mutex_unlock(&
|
|
521
|
+
git_mutex_unlock(&git_mwindow__mutex);
|
|
529
522
|
}
|
|
530
523
|
|
|
531
524
|
void git_mwindow_close(git_mwindow **window)
|
|
532
525
|
{
|
|
533
526
|
git_mwindow *w = *window;
|
|
534
527
|
if (w) {
|
|
535
|
-
if (git_mutex_lock(&
|
|
528
|
+
if (git_mutex_lock(&git_mwindow__mutex)) {
|
|
536
529
|
git_error_set(GIT_ERROR_THREAD, "unable to lock mwindow mutex");
|
|
537
530
|
return;
|
|
538
531
|
}
|
|
539
532
|
|
|
540
533
|
w->inuse_cnt--;
|
|
541
|
-
git_mutex_unlock(&
|
|
534
|
+
git_mutex_unlock(&git_mwindow__mutex);
|
|
542
535
|
*window = NULL;
|
|
543
536
|
}
|
|
544
537
|
}
|
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
|
|
13
13
|
#include "map.h"
|
|
14
14
|
#include "vector.h"
|
|
15
|
+
#include "hashmap_str.h"
|
|
16
|
+
|
|
17
|
+
GIT_HASHMAP_STR_STRUCT(git_mwindow_packmap, struct git_pack_file *);
|
|
18
|
+
GIT_HASHMAP_STR_PROTOTYPES(git_mwindow_packmap, struct git_pack_file *);
|
|
15
19
|
|
|
16
20
|
typedef struct git_mwindow {
|
|
17
21
|
struct git_mwindow *next;
|
|
@@ -526,7 +526,7 @@ static int git_object__short_id(git_str *out, const git_object *obj)
|
|
|
526
526
|
git_oid id;
|
|
527
527
|
git_odb *odb;
|
|
528
528
|
size_t oid_hexsize;
|
|
529
|
-
int len
|
|
529
|
+
int len, error;
|
|
530
530
|
|
|
531
531
|
GIT_ASSERT_ARG(out);
|
|
532
532
|
GIT_ASSERT_ARG(obj);
|
|
@@ -536,12 +536,13 @@ static int git_object__short_id(git_str *out, const git_object *obj)
|
|
|
536
536
|
git_oid_clear(&id, repo->oid_type);
|
|
537
537
|
oid_hexsize = git_oid_hexsize(repo->oid_type);
|
|
538
538
|
|
|
539
|
-
if ((error =
|
|
539
|
+
if ((error = git_repository__abbrev_length(&len, repo)) < 0)
|
|
540
540
|
return error;
|
|
541
541
|
|
|
542
|
-
if (
|
|
543
|
-
|
|
544
|
-
|
|
542
|
+
if ((size_t)len == oid_hexsize) {
|
|
543
|
+
if ((error = git_oid_cpy(&id, &obj->cached.oid)) < 0) {
|
|
544
|
+
return error;
|
|
545
|
+
}
|
|
545
546
|
}
|
|
546
547
|
|
|
547
548
|
if ((error = git_repository_odb(&odb, repo)) < 0)
|
|
@@ -915,7 +915,7 @@ static void odb_free(git_odb *db)
|
|
|
915
915
|
git_mutex_unlock(&db->lock);
|
|
916
916
|
|
|
917
917
|
git_commit_graph_free(db->cgraph);
|
|
918
|
-
|
|
918
|
+
git_vector_dispose(&db->backends);
|
|
919
919
|
git_cache_dispose(&db->own_cache);
|
|
920
920
|
git_mutex_free(&db->lock);
|
|
921
921
|
|
|
@@ -1609,7 +1609,7 @@ int git_odb_foreach(git_odb *db, git_odb_foreach_cb cb, void *payload)
|
|
|
1609
1609
|
}
|
|
1610
1610
|
|
|
1611
1611
|
cleanup:
|
|
1612
|
-
|
|
1612
|
+
git_vector_dispose(&backends);
|
|
1613
1613
|
|
|
1614
1614
|
return error;
|
|
1615
1615
|
}
|
|
@@ -1796,7 +1796,8 @@ void git_odb_stream_free(git_odb_stream *stream)
|
|
|
1796
1796
|
if (stream == NULL)
|
|
1797
1797
|
return;
|
|
1798
1798
|
|
|
1799
|
-
|
|
1799
|
+
if (stream->hash_ctx)
|
|
1800
|
+
git_hash_ctx_cleanup(stream->hash_ctx);
|
|
1800
1801
|
git__free(stream->hash_ctx);
|
|
1801
1802
|
stream->free(stream);
|
|
1802
1803
|
}
|
|
@@ -1922,7 +1923,7 @@ void git_odb_backend_data_free(git_odb_backend *backend, void *data)
|
|
|
1922
1923
|
git__free(data);
|
|
1923
1924
|
}
|
|
1924
1925
|
|
|
1925
|
-
int git_odb_refresh(
|
|
1926
|
+
int git_odb_refresh(git_odb *db)
|
|
1926
1927
|
{
|
|
1927
1928
|
size_t i;
|
|
1928
1929
|
int error;
|