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
|
@@ -34,7 +34,6 @@
|
|
|
34
34
|
#include "submodule.h"
|
|
35
35
|
#include "worktree.h"
|
|
36
36
|
#include "path.h"
|
|
37
|
-
#include "strmap.h"
|
|
38
37
|
|
|
39
38
|
#ifdef GIT_WIN32
|
|
40
39
|
# include "win32/w32_util.h"
|
|
@@ -62,7 +61,8 @@ static const struct {
|
|
|
62
61
|
{ GIT_REPOSITORY_ITEM_COMMONDIR, GIT_REPOSITORY_ITEM_GITDIR, "hooks", true },
|
|
63
62
|
{ GIT_REPOSITORY_ITEM_COMMONDIR, GIT_REPOSITORY_ITEM_GITDIR, "logs", true },
|
|
64
63
|
{ GIT_REPOSITORY_ITEM_GITDIR, GIT_REPOSITORY_ITEM__LAST, "modules", true },
|
|
65
|
-
{ GIT_REPOSITORY_ITEM_COMMONDIR, GIT_REPOSITORY_ITEM_GITDIR, "worktrees", true }
|
|
64
|
+
{ GIT_REPOSITORY_ITEM_COMMONDIR, GIT_REPOSITORY_ITEM_GITDIR, "worktrees", true },
|
|
65
|
+
{ GIT_REPOSITORY_ITEM_GITDIR, GIT_REPOSITORY_ITEM_GITDIR, "config.worktree", false }
|
|
66
66
|
};
|
|
67
67
|
|
|
68
68
|
static int check_repositoryformatversion(int *version, git_config *config);
|
|
@@ -328,19 +328,34 @@ on_error:
|
|
|
328
328
|
return NULL;
|
|
329
329
|
}
|
|
330
330
|
|
|
331
|
-
int
|
|
331
|
+
int git_repository__new(git_repository **out, git_oid_t oid_type)
|
|
332
332
|
{
|
|
333
333
|
git_repository *repo;
|
|
334
334
|
|
|
335
335
|
*out = repo = repository_alloc();
|
|
336
336
|
GIT_ERROR_CHECK_ALLOC(repo);
|
|
337
337
|
|
|
338
|
+
GIT_ASSERT_ARG(git_oid_type_is_valid(oid_type));
|
|
339
|
+
|
|
338
340
|
repo->is_bare = 1;
|
|
339
341
|
repo->is_worktree = 0;
|
|
342
|
+
repo->oid_type = oid_type;
|
|
340
343
|
|
|
341
344
|
return 0;
|
|
342
345
|
}
|
|
343
346
|
|
|
347
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
348
|
+
int git_repository_new(git_repository **out, git_repository_new_options *opts)
|
|
349
|
+
{
|
|
350
|
+
return git_repository__new(out, opts && opts->oid_type ? opts->oid_type : GIT_OID_DEFAULT);
|
|
351
|
+
}
|
|
352
|
+
#else
|
|
353
|
+
int git_repository_new(git_repository** out)
|
|
354
|
+
{
|
|
355
|
+
return git_repository__new(out, GIT_OID_SHA1);
|
|
356
|
+
}
|
|
357
|
+
#endif
|
|
358
|
+
|
|
344
359
|
static int load_config_data(git_repository *repo, const git_config *config)
|
|
345
360
|
{
|
|
346
361
|
int is_bare;
|
|
@@ -545,25 +560,39 @@ typedef struct {
|
|
|
545
560
|
static int validate_ownership_cb(const git_config_entry *entry, void *payload)
|
|
546
561
|
{
|
|
547
562
|
validate_ownership_data *data = payload;
|
|
563
|
+
const char *test_path;
|
|
548
564
|
|
|
549
565
|
if (strcmp(entry->value, "") == 0) {
|
|
550
566
|
*data->is_safe = false;
|
|
551
567
|
} else if (strcmp(entry->value, "*") == 0) {
|
|
552
568
|
*data->is_safe = true;
|
|
553
569
|
} else {
|
|
554
|
-
|
|
570
|
+
if (git_str_sets(&data->tmp, entry->value) < 0)
|
|
571
|
+
return -1;
|
|
572
|
+
|
|
573
|
+
if (!git_fs_path_is_root(data->tmp.ptr)) {
|
|
574
|
+
/* Input must not have trailing backslash. */
|
|
575
|
+
if (!data->tmp.size ||
|
|
576
|
+
data->tmp.ptr[data->tmp.size - 1] == '/')
|
|
577
|
+
return 0;
|
|
578
|
+
|
|
579
|
+
if (git_fs_path_to_dir(&data->tmp) < 0)
|
|
580
|
+
return -1;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
test_path = data->tmp.ptr;
|
|
555
584
|
|
|
556
|
-
#ifdef GIT_WIN32
|
|
557
585
|
/*
|
|
558
|
-
* Git for Windows does some
|
|
559
|
-
* paths that start with a
|
|
560
|
-
* to escape that with
|
|
561
|
-
*
|
|
562
|
-
*
|
|
563
|
-
*
|
|
564
|
-
*
|
|
565
|
-
*
|
|
566
|
-
*
|
|
586
|
+
* Git - and especially, Git for Windows - does some
|
|
587
|
+
* truly bizarre things with paths that start with a
|
|
588
|
+
* forward slash; and expects you to escape that with
|
|
589
|
+
* `%(prefix)`. This syntax generally means to add the
|
|
590
|
+
* prefix that Git was installed to (eg `/usr/local`)
|
|
591
|
+
* unless it's an absolute path, in which case the
|
|
592
|
+
* leading `%(prefix)/` is just removed. And Git for
|
|
593
|
+
* Windows expects you to use this syntax for absolute
|
|
594
|
+
* Unix-style paths (in "Git Bash" or Windows Subsystem
|
|
595
|
+
* for Linux).
|
|
567
596
|
*
|
|
568
597
|
* Worse, the behavior used to be that a leading `/` was
|
|
569
598
|
* not absolute. It would indicate that Git for Windows
|
|
@@ -578,13 +607,8 @@ static int validate_ownership_cb(const git_config_entry *entry, void *payload)
|
|
|
578
607
|
*/
|
|
579
608
|
if (strncmp(test_path, "%(prefix)//", strlen("%(prefix)//")) == 0)
|
|
580
609
|
test_path += strlen("%(prefix)/");
|
|
581
|
-
else if (strncmp(test_path, "//", 2) == 0 &&
|
|
582
|
-
strncmp(test_path, "//wsl.localhost/", strlen("//wsl.localhost/")) != 0)
|
|
583
|
-
test_path++;
|
|
584
|
-
#endif
|
|
585
610
|
|
|
586
|
-
if (
|
|
587
|
-
strcmp(data->tmp.ptr, data->repo_path) == 0)
|
|
611
|
+
if (strcmp(test_path, data->repo_path) == 0)
|
|
588
612
|
*data->is_safe = true;
|
|
589
613
|
}
|
|
590
614
|
|
|
@@ -681,9 +705,12 @@ static int validate_ownership(git_repository *repo)
|
|
|
681
705
|
goto done;
|
|
682
706
|
|
|
683
707
|
if (!is_safe) {
|
|
708
|
+
size_t path_len = git_fs_path_is_root(path) ?
|
|
709
|
+
strlen(path) : git_fs_path_dirlen(path);
|
|
710
|
+
|
|
684
711
|
git_error_set(GIT_ERROR_CONFIG,
|
|
685
|
-
"repository path '
|
|
686
|
-
path);
|
|
712
|
+
"repository path '%.*s' is not owned by current user",
|
|
713
|
+
(int)min(path_len, INT_MAX), path);
|
|
687
714
|
error = GIT_EOWNER;
|
|
688
715
|
}
|
|
689
716
|
|
|
@@ -852,8 +879,30 @@ static int load_grafts(git_repository *repo)
|
|
|
852
879
|
git_str path = GIT_STR_INIT;
|
|
853
880
|
int error;
|
|
854
881
|
|
|
855
|
-
|
|
856
|
-
|
|
882
|
+
/* refresh if they've both been opened previously */
|
|
883
|
+
if (repo->grafts && repo->shallow_grafts) {
|
|
884
|
+
if ((error = git_grafts_refresh(repo->grafts)) < 0 ||
|
|
885
|
+
(error = git_grafts_refresh(repo->shallow_grafts)) < 0)
|
|
886
|
+
return error;
|
|
887
|
+
}
|
|
888
|
+
|
|
889
|
+
/* resolve info path, which may not be found for inmemory repository */
|
|
890
|
+
if ((error = git_repository__item_path(&path, repo, GIT_REPOSITORY_ITEM_INFO)) < 0) {
|
|
891
|
+
if (error != GIT_ENOTFOUND)
|
|
892
|
+
return error;
|
|
893
|
+
|
|
894
|
+
/* create empty/inmemory grafts for inmemory repository */
|
|
895
|
+
if (!repo->grafts && (error = git_grafts_new(&repo->grafts, repo->oid_type)) < 0)
|
|
896
|
+
return error;
|
|
897
|
+
|
|
898
|
+
if (!repo->shallow_grafts && (error = git_grafts_new(&repo->shallow_grafts, repo->oid_type)) < 0)
|
|
899
|
+
return error;
|
|
900
|
+
|
|
901
|
+
return 0;
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
/* load grafts from disk */
|
|
905
|
+
if ((error = git_str_joinpath(&path, path.ptr, "grafts")) < 0 ||
|
|
857
906
|
(error = git_grafts_open_or_refresh(&repo->grafts, path.ptr, repo->oid_type)) < 0)
|
|
858
907
|
goto error;
|
|
859
908
|
|
|
@@ -1174,17 +1223,15 @@ out:
|
|
|
1174
1223
|
return err;
|
|
1175
1224
|
}
|
|
1176
1225
|
|
|
1177
|
-
int
|
|
1178
|
-
git_repository **out,
|
|
1179
|
-
git_odb *odb,
|
|
1180
|
-
git_oid_t oid_type)
|
|
1226
|
+
int git_repository_wrap_odb(git_repository **out, git_odb *odb)
|
|
1181
1227
|
{
|
|
1182
1228
|
git_repository *repo;
|
|
1183
1229
|
|
|
1184
1230
|
repo = repository_alloc();
|
|
1185
1231
|
GIT_ERROR_CHECK_ALLOC(repo);
|
|
1186
1232
|
|
|
1187
|
-
|
|
1233
|
+
GIT_ASSERT(git_oid_type_is_valid(odb->options.oid_type));
|
|
1234
|
+
repo->oid_type = odb->options.oid_type;
|
|
1188
1235
|
|
|
1189
1236
|
git_repository_set_odb(repo, odb);
|
|
1190
1237
|
*out = repo;
|
|
@@ -1192,21 +1239,6 @@ int git_repository__wrap_odb(
|
|
|
1192
1239
|
return 0;
|
|
1193
1240
|
}
|
|
1194
1241
|
|
|
1195
|
-
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
1196
|
-
int git_repository_wrap_odb(
|
|
1197
|
-
git_repository **out,
|
|
1198
|
-
git_odb *odb,
|
|
1199
|
-
git_oid_t oid_type)
|
|
1200
|
-
{
|
|
1201
|
-
return git_repository__wrap_odb(out, odb, oid_type);
|
|
1202
|
-
}
|
|
1203
|
-
#else
|
|
1204
|
-
int git_repository_wrap_odb(git_repository **out, git_odb *odb)
|
|
1205
|
-
{
|
|
1206
|
-
return git_repository__wrap_odb(out, odb, GIT_OID_DEFAULT);
|
|
1207
|
-
}
|
|
1208
|
-
#endif
|
|
1209
|
-
|
|
1210
1242
|
int git_repository_discover(
|
|
1211
1243
|
git_buf *out,
|
|
1212
1244
|
const char *start_path,
|
|
@@ -1226,6 +1258,24 @@ int git_repository_discover(
|
|
|
1226
1258
|
return error;
|
|
1227
1259
|
}
|
|
1228
1260
|
|
|
1261
|
+
static int has_config_worktree(bool *out, git_config *cfg)
|
|
1262
|
+
{
|
|
1263
|
+
int worktreeconfig = 0, error;
|
|
1264
|
+
|
|
1265
|
+
*out = false;
|
|
1266
|
+
|
|
1267
|
+
error = git_config_get_bool(&worktreeconfig, cfg, "extensions.worktreeconfig");
|
|
1268
|
+
|
|
1269
|
+
if (error == 0)
|
|
1270
|
+
*out = worktreeconfig;
|
|
1271
|
+
else if (error == GIT_ENOTFOUND)
|
|
1272
|
+
*out = false;
|
|
1273
|
+
else
|
|
1274
|
+
return error;
|
|
1275
|
+
|
|
1276
|
+
return 0;
|
|
1277
|
+
}
|
|
1278
|
+
|
|
1229
1279
|
static int load_config(
|
|
1230
1280
|
git_config **out,
|
|
1231
1281
|
git_repository *repo,
|
|
@@ -1234,9 +1284,11 @@ static int load_config(
|
|
|
1234
1284
|
const char *system_config_path,
|
|
1235
1285
|
const char *programdata_path)
|
|
1236
1286
|
{
|
|
1237
|
-
int error;
|
|
1238
1287
|
git_str config_path = GIT_STR_INIT;
|
|
1239
1288
|
git_config *cfg = NULL;
|
|
1289
|
+
git_config_level_t write_order;
|
|
1290
|
+
bool has_worktree;
|
|
1291
|
+
int error;
|
|
1240
1292
|
|
|
1241
1293
|
GIT_ASSERT_ARG(out);
|
|
1242
1294
|
|
|
@@ -1250,6 +1302,14 @@ static int load_config(
|
|
|
1250
1302
|
if (error && error != GIT_ENOTFOUND)
|
|
1251
1303
|
goto on_error;
|
|
1252
1304
|
|
|
1305
|
+
if ((error = has_config_worktree(&has_worktree, cfg)) == 0 &&
|
|
1306
|
+
has_worktree &&
|
|
1307
|
+
(error = git_repository__item_path(&config_path, repo, GIT_REPOSITORY_ITEM_WORKTREE_CONFIG)) == 0)
|
|
1308
|
+
error = git_config_add_file_ondisk(cfg, config_path.ptr, GIT_CONFIG_LEVEL_WORKTREE, repo, 0);
|
|
1309
|
+
|
|
1310
|
+
if (error && error != GIT_ENOTFOUND)
|
|
1311
|
+
goto on_error;
|
|
1312
|
+
|
|
1253
1313
|
git_str_dispose(&config_path);
|
|
1254
1314
|
}
|
|
1255
1315
|
|
|
@@ -1279,6 +1339,11 @@ static int load_config(
|
|
|
1279
1339
|
|
|
1280
1340
|
git_error_clear(); /* clear any lingering ENOTFOUND errors */
|
|
1281
1341
|
|
|
1342
|
+
write_order = GIT_CONFIG_LEVEL_LOCAL;
|
|
1343
|
+
|
|
1344
|
+
if ((error = git_config_set_writeorder(cfg, &write_order, 1)) < 0)
|
|
1345
|
+
goto on_error;
|
|
1346
|
+
|
|
1282
1347
|
*out = cfg;
|
|
1283
1348
|
return 0;
|
|
1284
1349
|
|
|
@@ -1798,7 +1863,9 @@ static int check_repositoryformatversion(int *version, git_config *config)
|
|
|
1798
1863
|
|
|
1799
1864
|
static const char *builtin_extensions[] = {
|
|
1800
1865
|
"noop",
|
|
1801
|
-
"objectformat"
|
|
1866
|
+
"objectformat",
|
|
1867
|
+
"worktreeconfig",
|
|
1868
|
+
"preciousobjects"
|
|
1802
1869
|
};
|
|
1803
1870
|
|
|
1804
1871
|
static git_vector user_extensions = { 0, git__strcmp_cb };
|
|
@@ -2024,7 +2091,7 @@ int git_repository__set_extensions(const char **extensions, size_t len)
|
|
|
2024
2091
|
|
|
2025
2092
|
void git_repository__free_extensions(void)
|
|
2026
2093
|
{
|
|
2027
|
-
|
|
2094
|
+
git_vector_dispose_deep(&user_extensions);
|
|
2028
2095
|
}
|
|
2029
2096
|
|
|
2030
2097
|
int git_repository_create_head(const char *git_dir, const char *ref_name)
|
|
@@ -2439,7 +2506,7 @@ static int repo_write_gitlink(
|
|
|
2439
2506
|
error = git_fs_path_make_relative(&path_to_repo, in_dir);
|
|
2440
2507
|
|
|
2441
2508
|
if (!error)
|
|
2442
|
-
error =
|
|
2509
|
+
error = git_str_printf(&buf, "%s %s\n", GIT_FILE_CONTENT_PREFIX, path_to_repo.ptr);
|
|
2443
2510
|
|
|
2444
2511
|
if (!error)
|
|
2445
2512
|
error = repo_write_template(in_dir, true, DOT_GIT, 0666, true, buf.ptr);
|
|
@@ -2471,7 +2538,8 @@ static int repo_init_structure(
|
|
|
2471
2538
|
int error = 0;
|
|
2472
2539
|
repo_template_item *tpl;
|
|
2473
2540
|
bool external_tpl =
|
|
2474
|
-
|
|
2541
|
+
opts->template_path != NULL ||
|
|
2542
|
+
(opts->flags & GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE) != 0;
|
|
2475
2543
|
mode_t dmode = pick_dir_mode(opts);
|
|
2476
2544
|
bool chmod = opts->mode != GIT_REPOSITORY_INIT_SHARED_UMASK;
|
|
2477
2545
|
|
|
@@ -2630,6 +2698,8 @@ static int repo_init_directories(
|
|
|
2630
2698
|
if (git_str_joinpath(repo_path, given_repo, add_dotgit ? GIT_DIR : "") < 0)
|
|
2631
2699
|
return -1;
|
|
2632
2700
|
|
|
2701
|
+
git_fs_path_mkposix(repo_path->ptr);
|
|
2702
|
+
|
|
2633
2703
|
has_dotgit = (git__suffixcmp(repo_path->ptr, "/" GIT_DIR) == 0);
|
|
2634
2704
|
if (has_dotgit)
|
|
2635
2705
|
opts->flags |= GIT_REPOSITORY_INIT__HAS_DOTGIT;
|
|
@@ -3197,14 +3267,18 @@ int git_repository_set_workdir(
|
|
|
3197
3267
|
if (git_fs_path_prettify_dir(&path, workdir, NULL) < 0)
|
|
3198
3268
|
return -1;
|
|
3199
3269
|
|
|
3200
|
-
if (repo->workdir && strcmp(repo->workdir, path.ptr) == 0)
|
|
3270
|
+
if (repo->workdir && strcmp(repo->workdir, path.ptr) == 0) {
|
|
3271
|
+
git_str_dispose(&path);
|
|
3201
3272
|
return 0;
|
|
3273
|
+
}
|
|
3202
3274
|
|
|
3203
3275
|
if (update_gitlink) {
|
|
3204
3276
|
git_config *config;
|
|
3205
3277
|
|
|
3206
|
-
if (git_repository_config__weakptr(&config, repo) < 0)
|
|
3278
|
+
if (git_repository_config__weakptr(&config, repo) < 0) {
|
|
3279
|
+
git_str_dispose(&path);
|
|
3207
3280
|
return -1;
|
|
3281
|
+
}
|
|
3208
3282
|
|
|
3209
3283
|
error = repo_write_gitlink(path.ptr, git_repository_path(repo), false);
|
|
3210
3284
|
|
|
@@ -3226,6 +3300,7 @@ int git_repository_set_workdir(
|
|
|
3226
3300
|
|
|
3227
3301
|
git__free(old_workdir);
|
|
3228
3302
|
}
|
|
3303
|
+
git_str_dispose(&path);
|
|
3229
3304
|
|
|
3230
3305
|
return error;
|
|
3231
3306
|
}
|
|
@@ -3268,6 +3343,25 @@ int git_repository_set_bare(git_repository *repo)
|
|
|
3268
3343
|
return 0;
|
|
3269
3344
|
}
|
|
3270
3345
|
|
|
3346
|
+
int git_repository_head_commit(git_commit **commit, git_repository *repo)
|
|
3347
|
+
{
|
|
3348
|
+
git_reference *head;
|
|
3349
|
+
git_object *obj;
|
|
3350
|
+
int error;
|
|
3351
|
+
|
|
3352
|
+
if ((error = git_repository_head(&head, repo)) < 0)
|
|
3353
|
+
return error;
|
|
3354
|
+
|
|
3355
|
+
if ((error = git_reference_peel(&obj, head, GIT_OBJECT_COMMIT)) < 0)
|
|
3356
|
+
goto cleanup;
|
|
3357
|
+
|
|
3358
|
+
*commit = (git_commit *)obj;
|
|
3359
|
+
|
|
3360
|
+
cleanup:
|
|
3361
|
+
git_reference_free(head);
|
|
3362
|
+
return error;
|
|
3363
|
+
}
|
|
3364
|
+
|
|
3271
3365
|
int git_repository_head_tree(git_tree **tree, git_repository *repo)
|
|
3272
3366
|
{
|
|
3273
3367
|
git_reference *head;
|
|
@@ -3839,3 +3933,89 @@ git_oid_t git_repository_oid_type(git_repository *repo)
|
|
|
3839
3933
|
{
|
|
3840
3934
|
return repo ? repo->oid_type : 0;
|
|
3841
3935
|
}
|
|
3936
|
+
|
|
3937
|
+
struct mergehead_data {
|
|
3938
|
+
git_repository *repo;
|
|
3939
|
+
git_vector *parents;
|
|
3940
|
+
};
|
|
3941
|
+
|
|
3942
|
+
static int insert_mergehead(const git_oid *oid, void *payload)
|
|
3943
|
+
{
|
|
3944
|
+
git_commit *commit;
|
|
3945
|
+
struct mergehead_data *data = (struct mergehead_data *)payload;
|
|
3946
|
+
|
|
3947
|
+
if (git_commit_lookup(&commit, data->repo, oid) < 0)
|
|
3948
|
+
return -1;
|
|
3949
|
+
|
|
3950
|
+
return git_vector_insert(data->parents, commit);
|
|
3951
|
+
}
|
|
3952
|
+
|
|
3953
|
+
int git_repository_commit_parents(git_commitarray *out, git_repository *repo)
|
|
3954
|
+
{
|
|
3955
|
+
git_commit *first_parent = NULL, *commit;
|
|
3956
|
+
git_reference *head_ref = NULL;
|
|
3957
|
+
git_vector parents = GIT_VECTOR_INIT;
|
|
3958
|
+
struct mergehead_data data;
|
|
3959
|
+
size_t i;
|
|
3960
|
+
int error;
|
|
3961
|
+
|
|
3962
|
+
GIT_ASSERT_ARG(out && repo);
|
|
3963
|
+
|
|
3964
|
+
out->count = 0;
|
|
3965
|
+
out->commits = NULL;
|
|
3966
|
+
|
|
3967
|
+
error = git_revparse_ext((git_object **)&first_parent, &head_ref, repo, "HEAD");
|
|
3968
|
+
|
|
3969
|
+
if (error != 0) {
|
|
3970
|
+
if (error == GIT_ENOTFOUND)
|
|
3971
|
+
error = 0;
|
|
3972
|
+
|
|
3973
|
+
goto done;
|
|
3974
|
+
}
|
|
3975
|
+
|
|
3976
|
+
if ((error = git_vector_insert(&parents, first_parent)) < 0)
|
|
3977
|
+
goto done;
|
|
3978
|
+
|
|
3979
|
+
data.repo = repo;
|
|
3980
|
+
data.parents = &parents;
|
|
3981
|
+
|
|
3982
|
+
error = git_repository_mergehead_foreach(repo, insert_mergehead, &data);
|
|
3983
|
+
|
|
3984
|
+
if (error == GIT_ENOTFOUND)
|
|
3985
|
+
error = 0;
|
|
3986
|
+
else if (error != 0)
|
|
3987
|
+
goto done;
|
|
3988
|
+
|
|
3989
|
+
out->commits = (git_commit **)git_vector_detach(&out->count, NULL, &parents);
|
|
3990
|
+
|
|
3991
|
+
done:
|
|
3992
|
+
git_vector_foreach(&parents, i, commit)
|
|
3993
|
+
git__free(commit);
|
|
3994
|
+
|
|
3995
|
+
git_reference_free(head_ref);
|
|
3996
|
+
return error;
|
|
3997
|
+
}
|
|
3998
|
+
|
|
3999
|
+
int git_repository__abbrev_length(int *out, git_repository *repo)
|
|
4000
|
+
{
|
|
4001
|
+
size_t oid_hexsize;
|
|
4002
|
+
int len;
|
|
4003
|
+
int error;
|
|
4004
|
+
|
|
4005
|
+
oid_hexsize = git_oid_hexsize(repo->oid_type);
|
|
4006
|
+
|
|
4007
|
+
if ((error = git_repository__configmap_lookup(&len, repo, GIT_CONFIGMAP_ABBREV)) < 0)
|
|
4008
|
+
return error;
|
|
4009
|
+
|
|
4010
|
+
if (len < GIT_ABBREV_MINIMUM) {
|
|
4011
|
+
git_error_set(GIT_ERROR_CONFIG, "invalid oid abbreviation setting: '%d'", len);
|
|
4012
|
+
return -1;
|
|
4013
|
+
}
|
|
4014
|
+
|
|
4015
|
+
if (len == GIT_ABBREV_FALSE || (size_t)len > oid_hexsize)
|
|
4016
|
+
len = (int)oid_hexsize;
|
|
4017
|
+
|
|
4018
|
+
*out = len;
|
|
4019
|
+
|
|
4020
|
+
return error;
|
|
4021
|
+
}
|
|
@@ -102,6 +102,8 @@ typedef enum {
|
|
|
102
102
|
/* core.trustctime */
|
|
103
103
|
GIT_TRUSTCTIME_DEFAULT = GIT_CONFIGMAP_TRUE,
|
|
104
104
|
/* core.abbrev */
|
|
105
|
+
GIT_ABBREV_FALSE = GIT_OID_MAX_HEXSIZE,
|
|
106
|
+
GIT_ABBREV_MINIMUM = 4,
|
|
105
107
|
GIT_ABBREV_DEFAULT = 7,
|
|
106
108
|
/* core.precomposeunicode */
|
|
107
109
|
GIT_PRECOMPOSE_DEFAULT = GIT_CONFIGMAP_FALSE,
|
|
@@ -165,7 +167,7 @@ struct git_repository {
|
|
|
165
167
|
git_atomic32 attr_session_key;
|
|
166
168
|
|
|
167
169
|
intptr_t configmap_cache[GIT_CONFIGMAP_CACHE_MAX];
|
|
168
|
-
|
|
170
|
+
git_submodule_cache *submodule_cache;
|
|
169
171
|
};
|
|
170
172
|
|
|
171
173
|
GIT_INLINE(git_attr_cache *) git_repository_attr_cache(git_repository *repo)
|
|
@@ -173,6 +175,7 @@ GIT_INLINE(git_attr_cache *) git_repository_attr_cache(git_repository *repo)
|
|
|
173
175
|
return repo->attrcache;
|
|
174
176
|
}
|
|
175
177
|
|
|
178
|
+
int git_repository_head_commit(git_commit **commit, git_repository *repo);
|
|
176
179
|
int git_repository_head_tree(git_tree **tree, git_repository *repo);
|
|
177
180
|
int git_repository_create_head(const char *git_dir, const char *ref_name);
|
|
178
181
|
|
|
@@ -196,11 +199,6 @@ int git_repository_index__weakptr(git_index **out, git_repository *repo);
|
|
|
196
199
|
int git_repository_grafts__weakptr(git_grafts **out, git_repository *repo);
|
|
197
200
|
int git_repository_shallow_grafts__weakptr(git_grafts **out, git_repository *repo);
|
|
198
201
|
|
|
199
|
-
int git_repository__wrap_odb(
|
|
200
|
-
git_repository **out,
|
|
201
|
-
git_odb *odb,
|
|
202
|
-
git_oid_t oid_type);
|
|
203
|
-
|
|
204
202
|
/*
|
|
205
203
|
* Configuration map cache
|
|
206
204
|
*
|
|
@@ -210,6 +208,9 @@ int git_repository__wrap_odb(
|
|
|
210
208
|
int git_repository__configmap_lookup(int *out, git_repository *repo, git_configmap_item item);
|
|
211
209
|
void git_repository__configmap_lookup_cache_clear(git_repository *repo);
|
|
212
210
|
|
|
211
|
+
/** Return the length that object names will be abbreviated to. */
|
|
212
|
+
int git_repository__abbrev_length(int *out, git_repository *repo);
|
|
213
|
+
|
|
213
214
|
int git_repository__item_path(git_str *out, const git_repository *repo, git_repository_item_t item);
|
|
214
215
|
|
|
215
216
|
GIT_INLINE(int) git_repository__ensure_not_bare(
|
|
@@ -280,4 +281,7 @@ int git_repository__set_objectformat(
|
|
|
280
281
|
git_repository *repo,
|
|
281
282
|
git_oid_t oid_type);
|
|
282
283
|
|
|
284
|
+
/* SHA256-aware internal functions */
|
|
285
|
+
int git_repository__new(git_repository **out, git_oid_t oid_type);
|
|
286
|
+
|
|
283
287
|
#endif
|
|
@@ -74,8 +74,7 @@ static int revert_normalize_opts(
|
|
|
74
74
|
const char *their_label)
|
|
75
75
|
{
|
|
76
76
|
int error = 0;
|
|
77
|
-
unsigned int default_checkout_strategy =
|
|
78
|
-
GIT_CHECKOUT_ALLOW_CONFLICTS;
|
|
77
|
+
unsigned int default_checkout_strategy = GIT_CHECKOUT_ALLOW_CONFLICTS;
|
|
79
78
|
|
|
80
79
|
GIT_UNUSED(repo);
|
|
81
80
|
|
|
@@ -816,7 +816,7 @@ static int revparse(
|
|
|
816
816
|
if (temp_object != NULL)
|
|
817
817
|
base_rev = temp_object;
|
|
818
818
|
break;
|
|
819
|
-
} else if (spec[pos+1] == '\0') {
|
|
819
|
+
} else if (spec[pos + 1] == '\0' && !pos) {
|
|
820
820
|
spec = "HEAD";
|
|
821
821
|
identifier_len = 4;
|
|
822
822
|
parsed = true;
|
|
@@ -935,7 +935,7 @@ int git_revparse(
|
|
|
935
935
|
* allowed.
|
|
936
936
|
*/
|
|
937
937
|
if (!git__strcmp(spec, "..")) {
|
|
938
|
-
git_error_set(GIT_ERROR_INVALID, "
|
|
938
|
+
git_error_set(GIT_ERROR_INVALID, "invalid pattern '..'");
|
|
939
939
|
return GIT_EINVALIDSPEC;
|
|
940
940
|
}
|
|
941
941
|
|
|
@@ -14,6 +14,9 @@
|
|
|
14
14
|
#include "git2/revparse.h"
|
|
15
15
|
#include "merge.h"
|
|
16
16
|
#include "vector.h"
|
|
17
|
+
#include "hashmap_oid.h"
|
|
18
|
+
|
|
19
|
+
GIT_HASHMAP_OID_FUNCTIONS(git_revwalk_oidmap, GIT_HASHMAP_INLINE, git_commit_list_node *);
|
|
17
20
|
|
|
18
21
|
static int get_revision(git_commit_list_node **out, git_revwalk *walk, git_commit_list **list);
|
|
19
22
|
|
|
@@ -23,7 +26,7 @@ git_commit_list_node *git_revwalk__commit_lookup(
|
|
|
23
26
|
git_commit_list_node *commit;
|
|
24
27
|
|
|
25
28
|
/* lookup and reserve space if not already present */
|
|
26
|
-
if ((commit
|
|
29
|
+
if (git_revwalk_oidmap_get(&commit, &walk->commits, oid) == 0)
|
|
27
30
|
return commit;
|
|
28
31
|
|
|
29
32
|
commit = git_commit_list_alloc_node(walk);
|
|
@@ -32,7 +35,7 @@ git_commit_list_node *git_revwalk__commit_lookup(
|
|
|
32
35
|
|
|
33
36
|
git_oid_cpy(&commit->oid, oid);
|
|
34
37
|
|
|
35
|
-
if ((
|
|
38
|
+
if (git_revwalk_oidmap_put(&walk->commits, &commit->oid, commit) < 0)
|
|
36
39
|
return NULL;
|
|
37
40
|
|
|
38
41
|
return commit;
|
|
@@ -623,7 +626,7 @@ static int prepare_walk(git_revwalk *walk)
|
|
|
623
626
|
return GIT_ITEROVER;
|
|
624
627
|
}
|
|
625
628
|
|
|
626
|
-
/*
|
|
629
|
+
/*
|
|
627
630
|
* This is a bit convoluted, but necessary to maintain the order of
|
|
628
631
|
* the commits. This is especially important in situations where
|
|
629
632
|
* git_revwalk__push_glob is called with a git_revwalk__push_options
|
|
@@ -643,13 +646,13 @@ static int prepare_walk(git_revwalk *walk)
|
|
|
643
646
|
git_error_set_oom();
|
|
644
647
|
return -1;
|
|
645
648
|
}
|
|
646
|
-
|
|
649
|
+
|
|
647
650
|
commit->seen = 1;
|
|
648
651
|
if (commits_last == NULL)
|
|
649
652
|
commits = new_list;
|
|
650
653
|
else
|
|
651
654
|
commits_last->next = new_list;
|
|
652
|
-
|
|
655
|
+
|
|
653
656
|
commits_last = new_list;
|
|
654
657
|
}
|
|
655
658
|
}
|
|
@@ -700,8 +703,7 @@ int git_revwalk_new(git_revwalk **revwalk_out, git_repository *repo)
|
|
|
700
703
|
git_revwalk *walk = git__calloc(1, sizeof(git_revwalk));
|
|
701
704
|
GIT_ERROR_CHECK_ALLOC(walk);
|
|
702
705
|
|
|
703
|
-
if (
|
|
704
|
-
git_pqueue_init(&walk->iterator_time, 0, 8, git_commit_list_time_cmp) < 0 ||
|
|
706
|
+
if (git_pqueue_init(&walk->iterator_time, 0, 8, git_commit_list_time_cmp) < 0 ||
|
|
705
707
|
git_pool_init(&walk->commit_pool, COMMIT_ALLOC) < 0)
|
|
706
708
|
return -1;
|
|
707
709
|
|
|
@@ -727,7 +729,7 @@ void git_revwalk_free(git_revwalk *walk)
|
|
|
727
729
|
git_revwalk_reset(walk);
|
|
728
730
|
git_odb_free(walk->odb);
|
|
729
731
|
|
|
730
|
-
|
|
732
|
+
git_revwalk_oidmap_dispose(&walk->commits);
|
|
731
733
|
git_pool_clear(&walk->commit_pool);
|
|
732
734
|
git_pqueue_free(&walk->iterator_time);
|
|
733
735
|
git__free(walk);
|
|
@@ -799,17 +801,18 @@ int git_revwalk_next(git_oid *oid, git_revwalk *walk)
|
|
|
799
801
|
int git_revwalk_reset(git_revwalk *walk)
|
|
800
802
|
{
|
|
801
803
|
git_commit_list_node *commit;
|
|
804
|
+
git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
|
|
802
805
|
|
|
803
806
|
GIT_ASSERT_ARG(walk);
|
|
804
807
|
|
|
805
|
-
|
|
808
|
+
while (git_revwalk_oidmap_iterate(&iter, NULL, &commit, &walk->commits) == 0) {
|
|
806
809
|
commit->seen = 0;
|
|
807
810
|
commit->in_degree = 0;
|
|
808
811
|
commit->topo_delay = 0;
|
|
809
812
|
commit->uninteresting = 0;
|
|
810
813
|
commit->added = 0;
|
|
811
814
|
commit->flags = 0;
|
|
812
|
-
|
|
815
|
+
}
|
|
813
816
|
|
|
814
817
|
git_pqueue_clear(&walk->iterator_time);
|
|
815
818
|
git_commit_list_free(&walk->iterator_topo);
|
|
@@ -10,19 +10,19 @@
|
|
|
10
10
|
#include "common.h"
|
|
11
11
|
|
|
12
12
|
#include "git2/revwalk.h"
|
|
13
|
-
#include "oidmap.h"
|
|
14
13
|
#include "commit_list.h"
|
|
15
14
|
#include "pqueue.h"
|
|
16
15
|
#include "pool.h"
|
|
17
16
|
#include "vector.h"
|
|
17
|
+
#include "hashmap_oid.h"
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
GIT_HASHMAP_OID_STRUCT(git_revwalk_oidmap, git_commit_list_node *);
|
|
20
20
|
|
|
21
21
|
struct git_revwalk {
|
|
22
22
|
git_repository *repo;
|
|
23
23
|
git_odb *odb;
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
git_revwalk_oidmap commits;
|
|
26
26
|
git_pool commit_pool;
|
|
27
27
|
|
|
28
28
|
git_commit_list *iterator_topo;
|