rugged 1.6.3 → 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/ext/rugged/rugged_allocator.c +0 -54
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/AUTHORS +1 -0
- data/vendor/libgit2/CMakeLists.txt +25 -17
- data/vendor/libgit2/COPYING +195 -1
- data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
- data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
- data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
- data/vendor/libgit2/cmake/SelectGSSAPI.cmake +4 -4
- data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +34 -6
- data/vendor/libgit2/cmake/SelectHashes.cmake +32 -11
- data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
- data/vendor/libgit2/cmake/SelectSSH.cmake +22 -17
- data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
- 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/pcre/LICENCE +5 -5
- data/vendor/libgit2/deps/pcre/pcre.h +2 -2
- data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
- data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
- data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/git-xdiff.h +4 -1
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.c +19 -18
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.h +2 -4
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.c +3 -3
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xhistogram.c +7 -18
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmacros.h +18 -1
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmerge.c +22 -20
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xpatience.c +21 -30
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.c +13 -30
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.c +18 -1
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.h +2 -1
- 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 +138 -56
- 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 +77 -9
- data/vendor/libgit2/include/git2/email.h +9 -29
- data/vendor/libgit2/include/git2/errors.h +49 -74
- 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 -6
- 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 +24 -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 +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 +112 -18
- data/vendor/libgit2/include/git2/repository.h +61 -15
- 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 -34
- data/vendor/libgit2/include/git2/sys/commit.h +77 -3
- data/vendor/libgit2/include/git2/sys/commit_graph.h +109 -58
- 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 +47 -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 +25 -2
- data/vendor/libgit2/include/git2/sys/transport.h +44 -5
- 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 +19 -7
- data/vendor/libgit2/src/CMakeLists.txt +40 -15
- 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 +27 -13
- 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 +60 -10
- data/vendor/libgit2/src/cli/progress.h +16 -4
- 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 +27 -27
- data/vendor/libgit2/src/libgit2/annotated_commit.c +2 -2
- data/vendor/libgit2/src/libgit2/annotated_commit.h +1 -1
- data/vendor/libgit2/src/libgit2/apply.c +14 -16
- 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 +152 -59
- data/vendor/libgit2/src/libgit2/blame.h +1 -0
- data/vendor/libgit2/src/libgit2/blame_git.c +0 -1
- data/vendor/libgit2/src/libgit2/branch.c +2 -2
- 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 +4 -5
- data/vendor/libgit2/src/libgit2/clone.c +186 -164
- data/vendor/libgit2/src/libgit2/clone.h +4 -1
- data/vendor/libgit2/src/libgit2/commit.c +123 -9
- data/vendor/libgit2/src/libgit2/commit_graph.c +166 -88
- data/vendor/libgit2/src/libgit2/commit_graph.h +21 -6
- data/vendor/libgit2/src/libgit2/commit_list.c +12 -5
- data/vendor/libgit2/src/libgit2/commit_list.h +1 -0
- data/vendor/libgit2/src/libgit2/config.c +394 -300
- 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 +113 -96
- 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 +34 -31
- data/vendor/libgit2/src/libgit2/diff.c +17 -8
- data/vendor/libgit2/src/libgit2/diff.h +6 -6
- 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_file.c +7 -7
- data/vendor/libgit2/src/libgit2/diff_generate.c +39 -18
- data/vendor/libgit2/src/libgit2/diff_parse.c +22 -6
- data/vendor/libgit2/src/libgit2/diff_print.c +88 -13
- data/vendor/libgit2/src/libgit2/diff_tform.c +40 -12
- data/vendor/libgit2/src/libgit2/diff_xdiff.h +1 -1
- data/vendor/libgit2/src/libgit2/email.c +5 -3
- data/vendor/libgit2/src/libgit2/fetch.c +39 -9
- data/vendor/libgit2/src/libgit2/fetch.h +0 -2
- data/vendor/libgit2/src/libgit2/fetchhead.c +11 -9
- 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 +270 -0
- data/vendor/libgit2/src/libgit2/grafts.h +35 -0
- data/vendor/libgit2/src/libgit2/graph.c +1 -1
- data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
- data/vendor/libgit2/src/libgit2/ident.c +3 -3
- data/vendor/libgit2/src/libgit2/ignore.c +9 -5
- data/vendor/libgit2/src/libgit2/index.c +392 -208
- data/vendor/libgit2/src/libgit2/index.h +16 -3
- 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 +44 -41
- data/vendor/libgit2/src/libgit2/iterator.c +34 -13
- data/vendor/libgit2/src/libgit2/iterator.h +3 -0
- data/vendor/libgit2/src/libgit2/libgit2.c +155 -331
- data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
- data/vendor/libgit2/src/libgit2/merge.c +56 -46
- data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
- data/vendor/libgit2/src/libgit2/merge_file.c +0 -2
- data/vendor/libgit2/src/libgit2/midx.c +86 -44
- data/vendor/libgit2/src/libgit2/midx.h +13 -3
- data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
- data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
- data/vendor/libgit2/src/libgit2/notes.c +9 -8
- data/vendor/libgit2/src/libgit2/object.c +42 -16
- data/vendor/libgit2/src/libgit2/object.h +6 -0
- data/vendor/libgit2/src/libgit2/odb.c +16 -9
- data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
- data/vendor/libgit2/src/libgit2/odb_pack.c +28 -7
- data/vendor/libgit2/src/libgit2/oid.c +35 -2
- data/vendor/libgit2/src/libgit2/oid.h +11 -0
- data/vendor/libgit2/src/libgit2/oidarray.c +49 -3
- data/vendor/libgit2/src/libgit2/oidarray.h +5 -1
- data/vendor/libgit2/src/libgit2/pack-objects.c +77 -43
- data/vendor/libgit2/src/libgit2/pack-objects.h +17 -6
- data/vendor/libgit2/src/libgit2/pack.c +33 -27
- data/vendor/libgit2/src/libgit2/pack.h +15 -10
- data/vendor/libgit2/src/libgit2/parse.c +7 -4
- data/vendor/libgit2/src/libgit2/parse.h +1 -1
- data/vendor/libgit2/src/libgit2/patch.h +7 -1
- data/vendor/libgit2/src/libgit2/patch_generate.c +24 -5
- data/vendor/libgit2/src/libgit2/patch_parse.c +18 -10
- 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 +81 -30
- data/vendor/libgit2/src/libgit2/push.h +1 -0
- data/vendor/libgit2/src/libgit2/reader.c +1 -1
- data/vendor/libgit2/src/libgit2/rebase.c +72 -84
- data/vendor/libgit2/src/libgit2/refdb_fs.c +146 -70
- 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 +34 -8
- 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 +136 -67
- data/vendor/libgit2/src/libgit2/remote.h +1 -0
- data/vendor/libgit2/src/libgit2/repository.c +789 -330
- data/vendor/libgit2/src/libgit2/repository.h +22 -3
- data/vendor/libgit2/src/libgit2/reset.c +2 -2
- data/vendor/libgit2/src/libgit2/revert.c +9 -13
- data/vendor/libgit2/src/libgit2/revparse.c +6 -3
- data/vendor/libgit2/src/libgit2/revwalk.c +36 -11
- 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/stash.c +9 -8
- data/vendor/libgit2/src/libgit2/status.c +1 -1
- data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -61
- data/vendor/libgit2/src/libgit2/streams/openssl.c +40 -23
- 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/schannel.c +715 -0
- data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
- data/vendor/libgit2/src/libgit2/streams/socket.c +237 -51
- data/vendor/libgit2/src/libgit2/streams/socket.h +3 -1
- data/vendor/libgit2/src/libgit2/streams/stransport.c +79 -19
- data/vendor/libgit2/src/libgit2/streams/tls.c +5 -0
- data/vendor/libgit2/src/libgit2/submodule.c +106 -63
- data/vendor/libgit2/src/libgit2/submodule.h +9 -10
- 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/auth.h +1 -2
- data/vendor/libgit2/src/libgit2/transports/{auth_negotiate.c → auth_gssapi.c} +32 -32
- data/vendor/libgit2/src/libgit2/transports/auth_negotiate.h +1 -1
- data/vendor/libgit2/src/libgit2/transports/auth_ntlm.h +1 -1
- data/vendor/libgit2/src/libgit2/transports/{auth_ntlm.c → auth_ntlmclient.c} +12 -12
- data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
- data/vendor/libgit2/src/libgit2/transports/credential.c +1 -1
- data/vendor/libgit2/src/libgit2/transports/git.c +7 -8
- data/vendor/libgit2/src/libgit2/transports/http.c +8 -4
- data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
- data/vendor/libgit2/src/libgit2/transports/httpclient.c +117 -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 +21 -11
- data/vendor/libgit2/src/libgit2/transports/smart.c +50 -32
- data/vendor/libgit2/src/libgit2/transports/smart.h +26 -9
- data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +139 -18
- data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +209 -57
- 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 +48 -21
- data/vendor/libgit2/src/libgit2/tree-cache.c +26 -16
- data/vendor/libgit2/src/libgit2/tree-cache.h +5 -3
- data/vendor/libgit2/src/libgit2/tree.c +35 -27
- data/vendor/libgit2/src/libgit2/tree.h +3 -2
- data/vendor/libgit2/src/libgit2/worktree.c +39 -27
- data/vendor/libgit2/src/util/CMakeLists.txt +4 -6
- data/vendor/libgit2/src/util/alloc.c +69 -7
- data/vendor/libgit2/src/util/alloc.h +34 -9
- 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/failalloc.c +0 -60
- data/vendor/libgit2/src/util/allocators/failalloc.h +0 -6
- data/vendor/libgit2/src/util/allocators/stdalloc.c +2 -115
- data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +0 -68
- data/vendor/libgit2/src/util/array.h +24 -18
- data/vendor/libgit2/src/util/cc-compat.h +4 -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/filebuf.c +6 -1
- data/vendor/libgit2/src/util/filebuf.h +19 -6
- data/vendor/libgit2/src/util/fs_path.c +16 -5
- data/vendor/libgit2/src/util/fs_path.h +23 -0
- data/vendor/libgit2/src/util/futils.c +14 -10
- data/vendor/libgit2/src/util/futils.h +13 -4
- data/vendor/libgit2/src/util/git2_features.h.in +21 -4
- 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 +318 -161
- data/vendor/libgit2/src/util/net.h +27 -0
- data/vendor/libgit2/src/util/pool.c +1 -1
- data/vendor/libgit2/src/util/pool.h +5 -0
- data/vendor/libgit2/src/util/posix.c +54 -0
- data/vendor/libgit2/src/util/posix.h +22 -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 +6 -10
- 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/staticstr.h +66 -0
- 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 +17 -12
- data/vendor/libgit2/src/util/util.h +28 -54
- data/vendor/libgit2/src/util/vector.c +3 -3
- data/vendor/libgit2/src/util/vector.h +2 -2
- data/vendor/libgit2/src/util/win32/error.c +1 -1
- data/vendor/libgit2/src/util/win32/path_w32.c +8 -8
- data/vendor/libgit2/src/util/win32/posix_w32.c +30 -7
- data/vendor/libgit2/src/util/win32/process.c +506 -0
- data/vendor/libgit2/src/util/win32/utf-conv.c +73 -75
- data/vendor/libgit2/src/util/win32/utf-conv.h +81 -14
- data/vendor/libgit2/src/util/win32/w32_util.c +1 -1
- metadata +72 -49
- data/vendor/libgit2/cmake/SelectWinHTTP.cmake +0 -17
- 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 -238
- 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/netops.c +0 -124
- data/vendor/libgit2/src/libgit2/netops.h +0 -68
- 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 -84
- data/vendor/libgit2/src/libgit2/threadstate.h +0 -24
- 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
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiff.h +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.h +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xinclude.h +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.h +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xtypes.h +0 -0
@@ -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;
|
@@ -460,7 +460,7 @@ int git_note_commit_read(
|
|
460
460
|
{
|
461
461
|
int error;
|
462
462
|
git_tree *tree = NULL;
|
463
|
-
char target[
|
463
|
+
char target[GIT_OID_MAX_HEXSIZE + 1];
|
464
464
|
|
465
465
|
git_oid_tostr(target, sizeof(target), oid);
|
466
466
|
|
@@ -507,7 +507,7 @@ int git_note_commit_create(
|
|
507
507
|
{
|
508
508
|
int error;
|
509
509
|
git_tree *tree = NULL;
|
510
|
-
char target[
|
510
|
+
char target[GIT_OID_MAX_HEXSIZE + 1];
|
511
511
|
|
512
512
|
git_oid_tostr(target, sizeof(target), oid);
|
513
513
|
|
@@ -578,7 +578,7 @@ int git_note_commit_remove(
|
|
578
578
|
{
|
579
579
|
int error;
|
580
580
|
git_tree *tree = NULL;
|
581
|
-
char target[
|
581
|
+
char target[GIT_OID_MAX_HEXSIZE + 1];
|
582
582
|
|
583
583
|
git_oid_tostr(target, sizeof(target), oid);
|
584
584
|
|
@@ -665,8 +665,9 @@ void git_note_free(git_note *note)
|
|
665
665
|
}
|
666
666
|
|
667
667
|
static int process_entry_path(
|
668
|
-
|
669
|
-
|
668
|
+
git_oid *annotated_object_id,
|
669
|
+
git_note_iterator *it,
|
670
|
+
const char *entry_path)
|
670
671
|
{
|
671
672
|
int error = 0;
|
672
673
|
size_t i = 0, j = 0, len;
|
@@ -698,12 +699,12 @@ static int process_entry_path(
|
|
698
699
|
buf.ptr[j] = '\0';
|
699
700
|
buf.size = j;
|
700
701
|
|
701
|
-
if (j !=
|
702
|
+
if (j != git_oid_hexsize(it->repo->oid_type)) {
|
702
703
|
/* This is not a note entry */
|
703
704
|
goto cleanup;
|
704
705
|
}
|
705
706
|
|
706
|
-
error = git_oid__fromstr(annotated_object_id, buf.ptr,
|
707
|
+
error = git_oid__fromstr(annotated_object_id, buf.ptr, it->repo->oid_type);
|
707
708
|
|
708
709
|
cleanup:
|
709
710
|
git_str_dispose(&buf);
|
@@ -799,7 +800,7 @@ int git_note_next(
|
|
799
800
|
|
800
801
|
git_oid_cpy(note_id, &item->id);
|
801
802
|
|
802
|
-
if ((error = process_entry_path(item->path
|
803
|
+
if ((error = process_entry_path(annotated_id, it, item->path)) < 0)
|
803
804
|
return error;
|
804
805
|
|
805
806
|
if ((error = git_iterator_advance(NULL, it)) < 0 && error != GIT_ITEROVER)
|
@@ -108,15 +108,13 @@ int git_object__from_raw(
|
|
108
108
|
return 0;
|
109
109
|
}
|
110
110
|
|
111
|
-
int
|
111
|
+
int git_object__init_from_odb_object(
|
112
112
|
git_object **object_out,
|
113
113
|
git_repository *repo,
|
114
114
|
git_odb_object *odb_obj,
|
115
115
|
git_object_t type)
|
116
116
|
{
|
117
|
-
int error;
|
118
117
|
size_t object_size;
|
119
|
-
git_object_def *def;
|
120
118
|
git_object *object = NULL;
|
121
119
|
|
122
120
|
GIT_ASSERT_ARG(object_out);
|
@@ -143,6 +141,23 @@ int git_object__from_odb_object(
|
|
143
141
|
object->cached.size = odb_obj->cached.size;
|
144
142
|
object->repo = repo;
|
145
143
|
|
144
|
+
*object_out = object;
|
145
|
+
return 0;
|
146
|
+
}
|
147
|
+
|
148
|
+
int git_object__from_odb_object(
|
149
|
+
git_object **object_out,
|
150
|
+
git_repository *repo,
|
151
|
+
git_odb_object *odb_obj,
|
152
|
+
git_object_t type)
|
153
|
+
{
|
154
|
+
int error;
|
155
|
+
git_object_def *def;
|
156
|
+
git_object *object = NULL;
|
157
|
+
|
158
|
+
if ((error = git_object__init_from_odb_object(&object, repo, odb_obj, type)) < 0)
|
159
|
+
return error;
|
160
|
+
|
146
161
|
/* Parse raw object data */
|
147
162
|
def = &git_objects_table[odb_obj->cached.type];
|
148
163
|
GIT_ASSERT(def->free && def->parse);
|
@@ -181,6 +196,7 @@ int git_object_lookup_prefix(
|
|
181
196
|
git_object *object = NULL;
|
182
197
|
git_odb *odb = NULL;
|
183
198
|
git_odb_object *odb_obj = NULL;
|
199
|
+
size_t oid_hexsize;
|
184
200
|
int error = 0;
|
185
201
|
|
186
202
|
GIT_ASSERT_ARG(repo);
|
@@ -196,10 +212,12 @@ int git_object_lookup_prefix(
|
|
196
212
|
if (error < 0)
|
197
213
|
return error;
|
198
214
|
|
199
|
-
|
200
|
-
|
215
|
+
oid_hexsize = git_oid_hexsize(repo->oid_type);
|
216
|
+
|
217
|
+
if (len > oid_hexsize)
|
218
|
+
len = oid_hexsize;
|
201
219
|
|
202
|
-
if (len ==
|
220
|
+
if (len == oid_hexsize) {
|
203
221
|
git_cached_obj *cached = NULL;
|
204
222
|
|
205
223
|
/* We want to match the full id : we can first look up in the cache,
|
@@ -233,8 +251,9 @@ int git_object_lookup_prefix(
|
|
233
251
|
error = git_odb_read(&odb_obj, odb, id);
|
234
252
|
}
|
235
253
|
} else {
|
236
|
-
git_oid short_oid
|
254
|
+
git_oid short_oid;
|
237
255
|
|
256
|
+
git_oid_clear(&short_oid, repo->oid_type);
|
238
257
|
git_oid__cpy_prefix(&short_oid, id, len);
|
239
258
|
|
240
259
|
/* If len < GIT_OID_SHA1_HEXSIZE (a strict short oid was given), we have
|
@@ -262,7 +281,8 @@ int git_object_lookup_prefix(
|
|
262
281
|
}
|
263
282
|
|
264
283
|
int git_object_lookup(git_object **object_out, git_repository *repo, const git_oid *id, git_object_t type) {
|
265
|
-
return git_object_lookup_prefix(object_out,
|
284
|
+
return git_object_lookup_prefix(object_out,
|
285
|
+
repo, id, git_oid_hexsize(repo->oid_type), type);
|
266
286
|
}
|
267
287
|
|
268
288
|
void git_object_free(git_object *object)
|
@@ -503,31 +523,37 @@ cleanup:
|
|
503
523
|
static int git_object__short_id(git_str *out, const git_object *obj)
|
504
524
|
{
|
505
525
|
git_repository *repo;
|
506
|
-
|
507
|
-
git_oid id = GIT_OID_SHA1_ZERO;
|
526
|
+
git_oid id;
|
508
527
|
git_odb *odb;
|
528
|
+
size_t oid_hexsize;
|
529
|
+
int len, error;
|
509
530
|
|
510
531
|
GIT_ASSERT_ARG(out);
|
511
532
|
GIT_ASSERT_ARG(obj);
|
512
533
|
|
513
534
|
repo = git_object_owner(obj);
|
514
535
|
|
515
|
-
|
536
|
+
git_oid_clear(&id, repo->oid_type);
|
537
|
+
oid_hexsize = git_oid_hexsize(repo->oid_type);
|
538
|
+
|
539
|
+
if ((error = git_repository__abbrev_length(&len, repo)) < 0)
|
516
540
|
return error;
|
517
541
|
|
542
|
+
if ((size_t)len == oid_hexsize) {
|
543
|
+
if ((error = git_oid_cpy(&id, &obj->cached.oid)) < 0) {
|
544
|
+
return error;
|
545
|
+
}
|
546
|
+
}
|
547
|
+
|
518
548
|
if ((error = git_repository_odb(&odb, repo)) < 0)
|
519
549
|
return error;
|
520
550
|
|
521
|
-
while (len <
|
551
|
+
while ((size_t)len < oid_hexsize) {
|
522
552
|
/* set up short oid */
|
523
553
|
memcpy(&id.id, &obj->cached.oid.id, (len + 1) / 2);
|
524
554
|
if (len & 1)
|
525
555
|
id.id[len / 2] &= 0xf0;
|
526
556
|
|
527
|
-
#ifdef GIT_EXPERIMENTAL_SHA256
|
528
|
-
id.type = GIT_OID_SHA1;
|
529
|
-
#endif
|
530
|
-
|
531
557
|
error = git_odb_exists_prefix(NULL, odb, &id, len);
|
532
558
|
if (error != GIT_EAMBIGUOUS)
|
533
559
|
break;
|
@@ -36,6 +36,12 @@ int git_object__from_raw(
|
|
36
36
|
git_object_t object_type,
|
37
37
|
git_oid_t oid_type);
|
38
38
|
|
39
|
+
int git_object__init_from_odb_object(
|
40
|
+
git_object **object_out,
|
41
|
+
git_repository *repo,
|
42
|
+
git_odb_object *odb_obj,
|
43
|
+
git_object_t type);
|
44
|
+
|
39
45
|
int git_object__from_odb_object(
|
40
46
|
git_object **object_out,
|
41
47
|
git_repository *repo,
|
@@ -748,7 +748,8 @@ int git_odb__add_default_backends(
|
|
748
748
|
git_error_set(GIT_ERROR_ODB, "failed to acquire the odb lock");
|
749
749
|
return -1;
|
750
750
|
}
|
751
|
-
if (!db->cgraph &&
|
751
|
+
if (!db->cgraph &&
|
752
|
+
git_commit_graph_new(&db->cgraph, objects_dir, false, db->options.oid_type) < 0) {
|
752
753
|
git_mutex_unlock(&db->lock);
|
753
754
|
return -1;
|
754
755
|
}
|
@@ -914,7 +915,7 @@ static void odb_free(git_odb *db)
|
|
914
915
|
git_mutex_unlock(&db->lock);
|
915
916
|
|
916
917
|
git_commit_graph_free(db->cgraph);
|
917
|
-
|
918
|
+
git_vector_dispose(&db->backends);
|
918
919
|
git_cache_dispose(&db->own_cache);
|
919
920
|
git_mutex_free(&db->lock);
|
920
921
|
|
@@ -1493,11 +1494,16 @@ static int read_prefix_1(git_odb_object **out, git_odb *db,
|
|
1493
1494
|
|
1494
1495
|
if (found && git_oid__cmp(&full_oid, &found_full_oid)) {
|
1495
1496
|
git_str buf = GIT_STR_INIT;
|
1497
|
+
const char *idstr;
|
1496
1498
|
|
1497
|
-
|
1498
|
-
|
1499
|
-
|
1500
|
-
|
1499
|
+
if ((idstr = git_oid_tostr_s(&full_oid)) == NULL) {
|
1500
|
+
git_str_puts(&buf, "failed to parse object id");
|
1501
|
+
} else {
|
1502
|
+
git_str_printf(&buf, "multiple matches for prefix: %s", idstr);
|
1503
|
+
|
1504
|
+
if ((idstr = git_oid_tostr_s(&found_full_oid)) != NULL)
|
1505
|
+
git_str_printf(&buf, " %s", idstr);
|
1506
|
+
}
|
1501
1507
|
|
1502
1508
|
error = git_odb__error_ambiguous(buf.ptr);
|
1503
1509
|
git_str_dispose(&buf);
|
@@ -1603,7 +1609,7 @@ int git_odb_foreach(git_odb *db, git_odb_foreach_cb cb, void *payload)
|
|
1603
1609
|
}
|
1604
1610
|
|
1605
1611
|
cleanup:
|
1606
|
-
|
1612
|
+
git_vector_dispose(&backends);
|
1607
1613
|
|
1608
1614
|
return error;
|
1609
1615
|
}
|
@@ -1790,7 +1796,8 @@ void git_odb_stream_free(git_odb_stream *stream)
|
|
1790
1796
|
if (stream == NULL)
|
1791
1797
|
return;
|
1792
1798
|
|
1793
|
-
|
1799
|
+
if (stream->hash_ctx)
|
1800
|
+
git_hash_ctx_cleanup(stream->hash_ctx);
|
1794
1801
|
git__free(stream->hash_ctx);
|
1795
1802
|
stream->free(stream);
|
1796
1803
|
}
|
@@ -1916,7 +1923,7 @@ void git_odb_backend_data_free(git_odb_backend *backend, void *data)
|
|
1916
1923
|
git__free(data);
|
1917
1924
|
}
|
1918
1925
|
|
1919
|
-
int git_odb_refresh(
|
1926
|
+
int git_odb_refresh(git_odb *db)
|
1920
1927
|
{
|
1921
1928
|
size_t i;
|
1922
1929
|
int error;
|
@@ -12,7 +12,6 @@
|
|
12
12
|
#include "hash.h"
|
13
13
|
#include "odb.h"
|
14
14
|
#include "array.h"
|
15
|
-
#include "oidmap.h"
|
16
15
|
#include "pack-objects.h"
|
17
16
|
|
18
17
|
#include "git2/odb_backend.h"
|
@@ -29,9 +28,11 @@ struct memobject {
|
|
29
28
|
char data[GIT_FLEX_ARRAY];
|
30
29
|
};
|
31
30
|
|
31
|
+
GIT_HASHMAP_OID_SETUP(git_odb_mempack_oidmap, struct memobject *);
|
32
|
+
|
32
33
|
struct memory_packer_db {
|
33
34
|
git_odb_backend parent;
|
34
|
-
|
35
|
+
git_odb_mempack_oidmap objects;
|
35
36
|
git_array_t(struct memobject *) commits;
|
36
37
|
};
|
37
38
|
|
@@ -41,7 +42,7 @@ static int impl__write(git_odb_backend *_backend, const git_oid *oid, const void
|
|
41
42
|
struct memobject *obj = NULL;
|
42
43
|
size_t alloc_len;
|
43
44
|
|
44
|
-
if (
|
45
|
+
if (git_odb_mempack_oidmap_contains(&db->objects, oid))
|
45
46
|
return 0;
|
46
47
|
|
47
48
|
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, sizeof(struct memobject), len);
|
@@ -53,7 +54,7 @@ static int impl__write(git_odb_backend *_backend, const git_oid *oid, const void
|
|
53
54
|
obj->len = len;
|
54
55
|
obj->type = type;
|
55
56
|
|
56
|
-
if (
|
57
|
+
if (git_odb_mempack_oidmap_put(&db->objects, &obj->oid, obj) < 0)
|
57
58
|
return -1;
|
58
59
|
|
59
60
|
if (type == GIT_OBJECT_COMMIT) {
|
@@ -69,16 +70,17 @@ static int impl__exists(git_odb_backend *backend, const git_oid *oid)
|
|
69
70
|
{
|
70
71
|
struct memory_packer_db *db = (struct memory_packer_db *)backend;
|
71
72
|
|
72
|
-
return
|
73
|
+
return git_odb_mempack_oidmap_contains(&db->objects, oid);
|
73
74
|
}
|
74
75
|
|
75
76
|
static int impl__read(void **buffer_p, size_t *len_p, git_object_t *type_p, git_odb_backend *backend, const git_oid *oid)
|
76
77
|
{
|
77
78
|
struct memory_packer_db *db = (struct memory_packer_db *)backend;
|
78
79
|
struct memobject *obj;
|
80
|
+
int error;
|
79
81
|
|
80
|
-
if ((
|
81
|
-
return
|
82
|
+
if ((error = git_odb_mempack_oidmap_get(&obj, &db->objects, oid)) != 0)
|
83
|
+
return error;
|
82
84
|
|
83
85
|
*len_p = obj->len;
|
84
86
|
*type_p = obj->type;
|
@@ -93,9 +95,10 @@ static int impl__read_header(size_t *len_p, git_object_t *type_p, git_odb_backen
|
|
93
95
|
{
|
94
96
|
struct memory_packer_db *db = (struct memory_packer_db *)backend;
|
95
97
|
struct memobject *obj;
|
98
|
+
int error;
|
96
99
|
|
97
|
-
if ((
|
98
|
-
return
|
100
|
+
if ((error = git_odb_mempack_oidmap_get(&obj, &db->objects, oid)) != 0)
|
101
|
+
return error;
|
99
102
|
|
100
103
|
*len_p = obj->len;
|
101
104
|
*type_p = obj->type;
|
@@ -132,6 +135,29 @@ cleanup:
|
|
132
135
|
return err;
|
133
136
|
}
|
134
137
|
|
138
|
+
int git_mempack_write_thin_pack(git_odb_backend *backend, git_packbuilder *pb)
|
139
|
+
{
|
140
|
+
struct memory_packer_db *db = (struct memory_packer_db *)backend;
|
141
|
+
const git_oid *oid;
|
142
|
+
git_hashmap_iter_t iter = GIT_HASHMAP_INIT;
|
143
|
+
int err;
|
144
|
+
|
145
|
+
while (true) {
|
146
|
+
err = git_odb_mempack_oidmap_iterate(&iter, &oid, NULL, &db->objects);
|
147
|
+
|
148
|
+
if (err == GIT_ITEROVER)
|
149
|
+
break;
|
150
|
+
else if (err != 0)
|
151
|
+
return err;
|
152
|
+
|
153
|
+
err = git_packbuilder_insert(pb, oid, NULL);
|
154
|
+
if (err != 0)
|
155
|
+
return err;
|
156
|
+
}
|
157
|
+
|
158
|
+
return 0;
|
159
|
+
}
|
160
|
+
|
135
161
|
int git_mempack_dump(
|
136
162
|
git_buf *pack,
|
137
163
|
git_repository *repo,
|
@@ -144,14 +170,13 @@ int git_mempack_reset(git_odb_backend *_backend)
|
|
144
170
|
{
|
145
171
|
struct memory_packer_db *db = (struct memory_packer_db *)_backend;
|
146
172
|
struct memobject *object = NULL;
|
173
|
+
git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
|
147
174
|
|
148
|
-
|
175
|
+
while (git_odb_mempack_oidmap_iterate(&iter, NULL, &object, &db->objects) == 0)
|
149
176
|
git__free(object);
|
150
|
-
});
|
151
177
|
|
152
178
|
git_array_clear(db->commits);
|
153
|
-
|
154
|
-
git_oidmap_clear(db->objects);
|
179
|
+
git_odb_mempack_oidmap_clear(&db->objects);
|
155
180
|
|
156
181
|
return 0;
|
157
182
|
}
|
@@ -161,7 +186,7 @@ static void impl__free(git_odb_backend *_backend)
|
|
161
186
|
struct memory_packer_db *db = (struct memory_packer_db *)_backend;
|
162
187
|
|
163
188
|
git_mempack_reset(_backend);
|
164
|
-
|
189
|
+
git_odb_mempack_oidmap_dispose(&db->objects);
|
165
190
|
git__free(db);
|
166
191
|
}
|
167
192
|
|
@@ -174,9 +199,6 @@ int git_mempack_new(git_odb_backend **out)
|
|
174
199
|
db = git__calloc(1, sizeof(struct memory_packer_db));
|
175
200
|
GIT_ERROR_CHECK_ALLOC(db);
|
176
201
|
|
177
|
-
if (git_oidmap_new(&db->objects) < 0)
|
178
|
-
return -1;
|
179
|
-
|
180
202
|
db->parent.version = GIT_ODB_BACKEND_VERSION;
|
181
203
|
db->parent.read = &impl__read;
|
182
204
|
db->parent.write = &impl__write;
|
@@ -187,3 +209,13 @@ int git_mempack_new(git_odb_backend **out)
|
|
187
209
|
*out = (git_odb_backend *)db;
|
188
210
|
return 0;
|
189
211
|
}
|
212
|
+
|
213
|
+
int git_mempack_object_count(size_t *out, git_odb_backend *_backend)
|
214
|
+
{
|
215
|
+
struct memory_packer_db *db = (struct memory_packer_db *)_backend;
|
216
|
+
|
217
|
+
GIT_ASSERT_ARG(_backend);
|
218
|
+
|
219
|
+
*out = (size_t)git_odb_mempack_oidmap_size(&db->objects);
|
220
|
+
return 0;
|
221
|
+
}
|