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
@@ -17,9 +17,9 @@
|
|
17
17
|
#include "remote.h"
|
18
18
|
#include "refspec.h"
|
19
19
|
#include "pack.h"
|
20
|
-
#include "netops.h"
|
21
20
|
#include "repository.h"
|
22
21
|
#include "refs.h"
|
22
|
+
#include "transports/smart.h"
|
23
23
|
|
24
24
|
static int maybe_want(git_remote *remote, git_remote_head *head, git_refspec *tagspec, git_remote_autotag_option_t tagopt)
|
25
25
|
{
|
@@ -59,8 +59,12 @@ static int mark_local(git_remote *remote)
|
|
59
59
|
return -1;
|
60
60
|
|
61
61
|
git_vector_foreach(&remote->refs, i, head) {
|
62
|
-
/* If we have the object, mark it so we don't ask for it
|
63
|
-
|
62
|
+
/* If we have the object, mark it so we don't ask for it.
|
63
|
+
However if we are unshallowing or changing history
|
64
|
+
depth, we need to ask for it even though the head
|
65
|
+
exists locally. */
|
66
|
+
if (remote->nego.depth == GIT_FETCH_DEPTH_FULL &&
|
67
|
+
git_odb_exists(odb, &head->oid))
|
64
68
|
head->local = 1;
|
65
69
|
else
|
66
70
|
remote->need_pack = 1;
|
@@ -76,7 +80,7 @@ static int maybe_want_oid(git_remote *remote, git_refspec *spec)
|
|
76
80
|
oid_head = git__calloc(1, sizeof(git_remote_head));
|
77
81
|
GIT_ERROR_CHECK_ALLOC(oid_head);
|
78
82
|
|
79
|
-
git_oid__fromstr(&oid_head->oid, spec->src,
|
83
|
+
git_oid__fromstr(&oid_head->oid, spec->src, remote->repo->oid_type);
|
80
84
|
|
81
85
|
if (spec->dst) {
|
82
86
|
oid_head->name = git__strdup(spec->dst);
|
@@ -137,7 +141,7 @@ static int filter_wants(git_remote *remote, const git_fetch_options *opts)
|
|
137
141
|
|
138
142
|
/* Handle explicitly specified OID specs */
|
139
143
|
git_vector_foreach(&remote->active_refspecs, i, spec) {
|
140
|
-
if (!git_oid__is_hexstr(spec->src,
|
144
|
+
if (!git_oid__is_hexstr(spec->src, remote->repo->oid_type))
|
141
145
|
continue;
|
142
146
|
|
143
147
|
if (!(remote_caps & oid_mask)) {
|
@@ -166,9 +170,15 @@ cleanup:
|
|
166
170
|
int git_fetch_negotiate(git_remote *remote, const git_fetch_options *opts)
|
167
171
|
{
|
168
172
|
git_transport *t = remote->transport;
|
173
|
+
int error;
|
169
174
|
|
170
175
|
remote->need_pack = 0;
|
171
176
|
|
177
|
+
if (opts) {
|
178
|
+
GIT_ASSERT_ARG(opts->depth >= 0);
|
179
|
+
remote->nego.depth = opts->depth;
|
180
|
+
}
|
181
|
+
|
172
182
|
if (filter_wants(remote, opts) < 0)
|
173
183
|
return -1;
|
174
184
|
|
@@ -180,20 +190,40 @@ int git_fetch_negotiate(git_remote *remote, const git_fetch_options *opts)
|
|
180
190
|
* Now we have everything set up so we can start tell the
|
181
191
|
* server what we want and what we have.
|
182
192
|
*/
|
183
|
-
|
193
|
+
remote->nego.refs = (const git_remote_head * const *)remote->refs.contents;
|
194
|
+
remote->nego.refs_len = remote->refs.length;
|
195
|
+
|
196
|
+
if (git_repository__shallow_roots(&remote->nego.shallow_roots,
|
197
|
+
&remote->nego.shallow_roots_len,
|
198
|
+
remote->repo) < 0)
|
199
|
+
return -1;
|
200
|
+
|
201
|
+
error = t->negotiate_fetch(t,
|
184
202
|
remote->repo,
|
185
|
-
|
186
|
-
|
203
|
+
&remote->nego);
|
204
|
+
|
205
|
+
git__free(remote->nego.shallow_roots);
|
206
|
+
|
207
|
+
return error;
|
187
208
|
}
|
188
209
|
|
189
210
|
int git_fetch_download_pack(git_remote *remote)
|
190
211
|
{
|
212
|
+
git_oidarray shallow_roots = { NULL };
|
191
213
|
git_transport *t = remote->transport;
|
214
|
+
int error;
|
192
215
|
|
193
216
|
if (!remote->need_pack)
|
194
217
|
return 0;
|
195
218
|
|
196
|
-
|
219
|
+
if ((error = t->download_pack(t, remote->repo, &remote->stats)) != 0 ||
|
220
|
+
(error = t->shallow_roots(&shallow_roots, t)) != 0)
|
221
|
+
return error;
|
222
|
+
|
223
|
+
error = git_repository__shallow_roots_write(remote->repo, &shallow_roots);
|
224
|
+
|
225
|
+
git_oidarray_dispose(&shallow_roots);
|
226
|
+
return error;
|
197
227
|
}
|
198
228
|
|
199
229
|
int git_fetch_options_init(git_fetch_options *opts, unsigned int version)
|
@@ -105,15 +105,14 @@ static int fetchhead_ref_write(
|
|
105
105
|
git_filebuf *file,
|
106
106
|
git_fetchhead_ref *fetchhead_ref)
|
107
107
|
{
|
108
|
-
char oid[
|
108
|
+
char oid[GIT_OID_MAX_HEXSIZE + 1];
|
109
109
|
const char *type, *name;
|
110
110
|
int head = 0;
|
111
111
|
|
112
112
|
GIT_ASSERT_ARG(file);
|
113
113
|
GIT_ASSERT_ARG(fetchhead_ref);
|
114
114
|
|
115
|
-
|
116
|
-
oid[GIT_OID_SHA1_HEXSIZE] = '\0';
|
115
|
+
git_oid_tostr(oid, GIT_OID_MAX_HEXSIZE + 1, &fetchhead_ref->oid);
|
117
116
|
|
118
117
|
if (git__prefixcmp(fetchhead_ref->ref_name, GIT_REFS_HEADS_DIR) == 0) {
|
119
118
|
type = "branch ";
|
@@ -174,7 +173,8 @@ static int fetchhead_ref_parse(
|
|
174
173
|
git_str *ref_name,
|
175
174
|
const char **remote_url,
|
176
175
|
char *line,
|
177
|
-
size_t line_num
|
176
|
+
size_t line_num,
|
177
|
+
git_oid_t oid_type)
|
178
178
|
{
|
179
179
|
char *oid_str, *is_merge_str, *desc, *name = NULL;
|
180
180
|
const char *type = NULL;
|
@@ -196,13 +196,13 @@ static int fetchhead_ref_parse(
|
|
196
196
|
*is_merge = 1;
|
197
197
|
}
|
198
198
|
|
199
|
-
if (strlen(oid_str) !=
|
199
|
+
if (strlen(oid_str) != git_oid_hexsize(oid_type)) {
|
200
200
|
git_error_set(GIT_ERROR_FETCHHEAD,
|
201
201
|
"invalid object ID in FETCH_HEAD line %"PRIuZ, line_num);
|
202
202
|
return -1;
|
203
203
|
}
|
204
204
|
|
205
|
-
if (git_oid__fromstr(oid, oid_str,
|
205
|
+
if (git_oid__fromstr(oid, oid_str, oid_type) < 0) {
|
206
206
|
const git_error *oid_err = git_error_last();
|
207
207
|
const char *err_msg = oid_err ? oid_err->message : "invalid object ID";
|
208
208
|
|
@@ -269,7 +269,8 @@ static int fetchhead_ref_parse(
|
|
269
269
|
return error;
|
270
270
|
}
|
271
271
|
|
272
|
-
int git_repository_fetchhead_foreach(
|
272
|
+
int git_repository_fetchhead_foreach(
|
273
|
+
git_repository *repo,
|
273
274
|
git_repository_fetchhead_foreach_cb cb,
|
274
275
|
void *payload)
|
275
276
|
{
|
@@ -296,8 +297,9 @@ int git_repository_fetchhead_foreach(git_repository *repo,
|
|
296
297
|
while ((line = git__strsep(&buffer, "\n")) != NULL) {
|
297
298
|
++line_num;
|
298
299
|
|
299
|
-
if ((error = fetchhead_ref_parse(
|
300
|
-
&
|
300
|
+
if ((error = fetchhead_ref_parse(&oid, &is_merge, &name,
|
301
|
+
&remote_url, line, line_num,
|
302
|
+
repo->oid_type)) < 0)
|
301
303
|
goto done;
|
302
304
|
|
303
305
|
if (git_str_len(&name) > 0)
|
@@ -239,7 +239,7 @@ static void git_filter_global_shutdown(void)
|
|
239
239
|
git__free(fdef);
|
240
240
|
}
|
241
241
|
|
242
|
-
|
242
|
+
git_vector_dispose(&filter_registry.filters);
|
243
243
|
|
244
244
|
git_rwlock_wrunlock(&filter_registry.lock);
|
245
245
|
git_rwlock_free(&filter_registry.lock);
|
@@ -908,7 +908,7 @@ static int buffered_stream_close(git_writestream *s)
|
|
908
908
|
{
|
909
909
|
struct buffered_stream *buffered_stream = (struct buffered_stream *)s;
|
910
910
|
git_str *writebuf;
|
911
|
-
|
911
|
+
git_error *last_error;
|
912
912
|
int error;
|
913
913
|
|
914
914
|
GIT_ASSERT_ARG(buffered_stream);
|
@@ -946,9 +946,9 @@ static int buffered_stream_close(git_writestream *s)
|
|
946
946
|
} else {
|
947
947
|
/* close stream before erroring out taking care
|
948
948
|
* to preserve the original error */
|
949
|
-
|
949
|
+
git_error_save(&last_error);
|
950
950
|
buffered_stream->target->close(buffered_stream->target);
|
951
|
-
|
951
|
+
git_error_restore(last_error);
|
952
952
|
return error;
|
953
953
|
}
|
954
954
|
|
@@ -1106,7 +1106,7 @@ static void filter_streams_free(git_vector *streams)
|
|
1106
1106
|
|
1107
1107
|
git_vector_foreach(streams, i, stream)
|
1108
1108
|
stream->free(stream);
|
1109
|
-
|
1109
|
+
git_vector_dispose(streams);
|
1110
1110
|
}
|
1111
1111
|
|
1112
1112
|
int git_filter_list_stream_file(
|
@@ -10,7 +10,7 @@
|
|
10
10
|
#endif
|
11
11
|
|
12
12
|
#ifndef LIBGIT2_COMMENTS
|
13
|
-
# define LIBGIT2_COMMENTS "For more information visit
|
13
|
+
# define LIBGIT2_COMMENTS "For more information visit https://libgit2.org/"
|
14
14
|
#endif
|
15
15
|
|
16
16
|
#ifdef __GNUC__
|
@@ -25,8 +25,8 @@ VS_VERSION_INFO VERSIONINFO
|
|
25
25
|
#else
|
26
26
|
VS_VERSION_INFO VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE
|
27
27
|
#endif
|
28
|
-
FILEVERSION
|
29
|
-
PRODUCTVERSION
|
28
|
+
FILEVERSION LIBGIT2_VERSION_MAJOR,LIBGIT2_VERSION_MINOR,LIBGIT2_VERSION_REVISION,LIBGIT2_VERSION_PATCH
|
29
|
+
PRODUCTVERSION LIBGIT2_VERSION_MAJOR,LIBGIT2_VERSION_MINOR,LIBGIT2_VERSION_REVISION,LIBGIT2_VERSION_PATCH
|
30
30
|
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
|
31
31
|
#ifdef _DEBUG
|
32
32
|
FILEFLAGS VS_FF_DEBUG
|
@@ -0,0 +1,270 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
3
|
+
*
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
6
|
+
*/
|
7
|
+
|
8
|
+
#include "grafts.h"
|
9
|
+
|
10
|
+
#include "futils.h"
|
11
|
+
#include "oid.h"
|
12
|
+
#include "oidarray.h"
|
13
|
+
#include "parse.h"
|
14
|
+
#include "hashmap_oid.h"
|
15
|
+
|
16
|
+
GIT_HASHMAP_OID_SETUP(git_grafts_oidmap, git_commit_graft *);
|
17
|
+
|
18
|
+
struct git_grafts {
|
19
|
+
/* Map of `git_commit_graft`s */
|
20
|
+
git_grafts_oidmap commits;
|
21
|
+
|
22
|
+
/* Type of object IDs */
|
23
|
+
git_oid_t oid_type;
|
24
|
+
|
25
|
+
/* File backing the graft. NULL if it's an in-memory graft */
|
26
|
+
char *path;
|
27
|
+
unsigned char path_checksum[GIT_HASH_SHA256_SIZE];
|
28
|
+
};
|
29
|
+
|
30
|
+
int git_grafts_new(git_grafts **out, git_oid_t oid_type)
|
31
|
+
{
|
32
|
+
git_grafts *grafts;
|
33
|
+
|
34
|
+
GIT_ASSERT_ARG(out && oid_type);
|
35
|
+
|
36
|
+
grafts = git__calloc(1, sizeof(*grafts));
|
37
|
+
GIT_ERROR_CHECK_ALLOC(grafts);
|
38
|
+
|
39
|
+
grafts->oid_type = oid_type;
|
40
|
+
|
41
|
+
*out = grafts;
|
42
|
+
return 0;
|
43
|
+
}
|
44
|
+
|
45
|
+
int git_grafts_open(
|
46
|
+
git_grafts **out,
|
47
|
+
const char *path,
|
48
|
+
git_oid_t oid_type)
|
49
|
+
{
|
50
|
+
git_grafts *grafts = NULL;
|
51
|
+
int error;
|
52
|
+
|
53
|
+
GIT_ASSERT_ARG(out && path && oid_type);
|
54
|
+
|
55
|
+
if ((error = git_grafts_new(&grafts, oid_type)) < 0)
|
56
|
+
goto error;
|
57
|
+
|
58
|
+
grafts->path = git__strdup(path);
|
59
|
+
GIT_ERROR_CHECK_ALLOC(grafts->path);
|
60
|
+
|
61
|
+
if ((error = git_grafts_refresh(grafts)) < 0)
|
62
|
+
goto error;
|
63
|
+
|
64
|
+
*out = grafts;
|
65
|
+
|
66
|
+
error:
|
67
|
+
if (error < 0)
|
68
|
+
git_grafts_free(grafts);
|
69
|
+
|
70
|
+
return error;
|
71
|
+
}
|
72
|
+
|
73
|
+
int git_grafts_open_or_refresh(
|
74
|
+
git_grafts **out,
|
75
|
+
const char *path,
|
76
|
+
git_oid_t oid_type)
|
77
|
+
{
|
78
|
+
GIT_ASSERT_ARG(out && path && oid_type);
|
79
|
+
|
80
|
+
return *out ? git_grafts_refresh(*out) : git_grafts_open(out, path, oid_type);
|
81
|
+
}
|
82
|
+
|
83
|
+
void git_grafts_free(git_grafts *grafts)
|
84
|
+
{
|
85
|
+
if (!grafts)
|
86
|
+
return;
|
87
|
+
git__free(grafts->path);
|
88
|
+
git_grafts_clear(grafts);
|
89
|
+
git_grafts_oidmap_dispose(&grafts->commits);
|
90
|
+
git__free(grafts);
|
91
|
+
}
|
92
|
+
|
93
|
+
void git_grafts_clear(git_grafts *grafts)
|
94
|
+
{
|
95
|
+
git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
|
96
|
+
git_commit_graft *graft;
|
97
|
+
|
98
|
+
if (!grafts)
|
99
|
+
return;
|
100
|
+
|
101
|
+
while (git_grafts_oidmap_iterate(&iter, NULL, &graft, &grafts->commits) == 0) {
|
102
|
+
git__free(graft->parents.ptr);
|
103
|
+
git__free(graft);
|
104
|
+
}
|
105
|
+
|
106
|
+
git_grafts_oidmap_clear(&grafts->commits);
|
107
|
+
}
|
108
|
+
|
109
|
+
int git_grafts_refresh(git_grafts *grafts)
|
110
|
+
{
|
111
|
+
git_str contents = GIT_STR_INIT;
|
112
|
+
int error, updated = 0;
|
113
|
+
|
114
|
+
GIT_ASSERT_ARG(grafts);
|
115
|
+
|
116
|
+
if (!grafts->path)
|
117
|
+
return 0;
|
118
|
+
|
119
|
+
if ((error = git_futils_readbuffer_updated(&contents, grafts->path,
|
120
|
+
grafts->path_checksum, &updated)) < 0) {
|
121
|
+
|
122
|
+
if (error == GIT_ENOTFOUND) {
|
123
|
+
git_grafts_clear(grafts);
|
124
|
+
error = 0;
|
125
|
+
}
|
126
|
+
|
127
|
+
goto cleanup;
|
128
|
+
}
|
129
|
+
|
130
|
+
if (!updated) {
|
131
|
+
goto cleanup;
|
132
|
+
}
|
133
|
+
|
134
|
+
if ((error = git_grafts_parse(grafts, contents.ptr, contents.size)) < 0)
|
135
|
+
goto cleanup;
|
136
|
+
|
137
|
+
cleanup:
|
138
|
+
git_str_dispose(&contents);
|
139
|
+
return error;
|
140
|
+
}
|
141
|
+
|
142
|
+
int git_grafts_parse(git_grafts *grafts, const char *buf, size_t len)
|
143
|
+
{
|
144
|
+
git_array_oid_t parents = GIT_ARRAY_INIT;
|
145
|
+
git_parse_ctx parser;
|
146
|
+
int error;
|
147
|
+
|
148
|
+
git_grafts_clear(grafts);
|
149
|
+
|
150
|
+
if ((error = git_parse_ctx_init(&parser, buf, len)) < 0)
|
151
|
+
goto error;
|
152
|
+
|
153
|
+
for (; parser.remain_len; git_parse_advance_line(&parser)) {
|
154
|
+
git_oid graft_oid;
|
155
|
+
|
156
|
+
if ((error = git_parse_advance_oid(&graft_oid, &parser, grafts->oid_type)) < 0) {
|
157
|
+
git_error_set(GIT_ERROR_GRAFTS, "invalid graft OID at line %" PRIuZ, parser.line_num);
|
158
|
+
goto error;
|
159
|
+
}
|
160
|
+
|
161
|
+
while (parser.line_len && git_parse_advance_expected(&parser, "\n", 1) != 0) {
|
162
|
+
git_oid *id = git_array_alloc(parents);
|
163
|
+
GIT_ERROR_CHECK_ALLOC(id);
|
164
|
+
|
165
|
+
if ((error = git_parse_advance_expected(&parser, " ", 1)) < 0 ||
|
166
|
+
(error = git_parse_advance_oid(id, &parser, grafts->oid_type)) < 0) {
|
167
|
+
git_error_set(GIT_ERROR_GRAFTS, "invalid parent OID at line %" PRIuZ, parser.line_num);
|
168
|
+
goto error;
|
169
|
+
}
|
170
|
+
}
|
171
|
+
|
172
|
+
if ((error = git_grafts_add(grafts, &graft_oid, parents)) < 0)
|
173
|
+
goto error;
|
174
|
+
|
175
|
+
git_array_clear(parents);
|
176
|
+
}
|
177
|
+
|
178
|
+
error:
|
179
|
+
git_array_clear(parents);
|
180
|
+
return error;
|
181
|
+
}
|
182
|
+
|
183
|
+
int git_grafts_add(git_grafts *grafts, const git_oid *oid, git_array_oid_t parents)
|
184
|
+
{
|
185
|
+
git_commit_graft *graft;
|
186
|
+
git_oid *parent_oid;
|
187
|
+
int error;
|
188
|
+
size_t i;
|
189
|
+
|
190
|
+
GIT_ASSERT_ARG(grafts && oid);
|
191
|
+
|
192
|
+
graft = git__calloc(1, sizeof(*graft));
|
193
|
+
GIT_ERROR_CHECK_ALLOC(graft);
|
194
|
+
|
195
|
+
git_array_init_to_size(graft->parents, git_array_size(parents));
|
196
|
+
git_array_foreach(parents, i, parent_oid) {
|
197
|
+
git_oid *id = git_array_alloc(graft->parents);
|
198
|
+
GIT_ERROR_CHECK_ALLOC(id);
|
199
|
+
|
200
|
+
git_oid_cpy(id, parent_oid);
|
201
|
+
}
|
202
|
+
git_oid_cpy(&graft->oid, oid);
|
203
|
+
|
204
|
+
if ((error = git_grafts_remove(grafts, &graft->oid)) < 0 && error != GIT_ENOTFOUND)
|
205
|
+
goto cleanup;
|
206
|
+
|
207
|
+
if ((error = git_grafts_oidmap_put(&grafts->commits, &graft->oid, graft)) < 0)
|
208
|
+
goto cleanup;
|
209
|
+
|
210
|
+
return 0;
|
211
|
+
|
212
|
+
cleanup:
|
213
|
+
git_array_clear(graft->parents);
|
214
|
+
git__free(graft);
|
215
|
+
return error;
|
216
|
+
}
|
217
|
+
|
218
|
+
int git_grafts_remove(git_grafts *grafts, const git_oid *oid)
|
219
|
+
{
|
220
|
+
git_commit_graft *graft;
|
221
|
+
int error;
|
222
|
+
|
223
|
+
GIT_ASSERT_ARG(grafts && oid);
|
224
|
+
|
225
|
+
if (git_grafts_oidmap_get(&graft, &grafts->commits, oid) != 0)
|
226
|
+
return GIT_ENOTFOUND;
|
227
|
+
|
228
|
+
if ((error = git_grafts_oidmap_remove(&grafts->commits, oid)) < 0)
|
229
|
+
return error;
|
230
|
+
|
231
|
+
git__free(graft->parents.ptr);
|
232
|
+
git__free(graft);
|
233
|
+
|
234
|
+
return 0;
|
235
|
+
}
|
236
|
+
|
237
|
+
int git_grafts_get(git_commit_graft **out, git_grafts *grafts, const git_oid *oid)
|
238
|
+
{
|
239
|
+
GIT_ASSERT_ARG(out && grafts && oid);
|
240
|
+
return git_grafts_oidmap_get(out, &grafts->commits, oid);
|
241
|
+
}
|
242
|
+
|
243
|
+
int git_grafts_oids(git_oid **out, size_t *out_len, git_grafts *grafts)
|
244
|
+
{
|
245
|
+
git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
|
246
|
+
git_array_oid_t array = GIT_ARRAY_INIT;
|
247
|
+
const git_oid *oid;
|
248
|
+
size_t existing;
|
249
|
+
|
250
|
+
GIT_ASSERT_ARG(out && grafts);
|
251
|
+
|
252
|
+
if ((existing = git_grafts_oidmap_size(&grafts->commits)) > 0)
|
253
|
+
git_array_init_to_size(array, existing);
|
254
|
+
|
255
|
+
while (git_grafts_oidmap_iterate(&iter, &oid, NULL, &grafts->commits) == 0) {
|
256
|
+
git_oid *cpy = git_array_alloc(array);
|
257
|
+
GIT_ERROR_CHECK_ALLOC(cpy);
|
258
|
+
git_oid_cpy(cpy, oid);
|
259
|
+
}
|
260
|
+
|
261
|
+
*out = array.ptr;
|
262
|
+
*out_len = array.size;
|
263
|
+
|
264
|
+
return 0;
|
265
|
+
}
|
266
|
+
|
267
|
+
size_t git_grafts_size(git_grafts *grafts)
|
268
|
+
{
|
269
|
+
return git_grafts_oidmap_size(&grafts->commits);
|
270
|
+
}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
3
|
+
*
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
6
|
+
*/
|
7
|
+
#ifndef INCLUDE_graft_h__
|
8
|
+
#define INCLUDE_graft_h__
|
9
|
+
|
10
|
+
#include "common.h"
|
11
|
+
#include "oidarray.h"
|
12
|
+
|
13
|
+
/** graft commit */
|
14
|
+
typedef struct {
|
15
|
+
git_oid oid;
|
16
|
+
git_array_oid_t parents;
|
17
|
+
} git_commit_graft;
|
18
|
+
|
19
|
+
typedef struct git_grafts git_grafts;
|
20
|
+
|
21
|
+
int git_grafts_new(git_grafts **out, git_oid_t oid_type);
|
22
|
+
int git_grafts_open(git_grafts **out, const char *path, git_oid_t oid_type);
|
23
|
+
int git_grafts_open_or_refresh(git_grafts **out, const char *path, git_oid_t oid_type);
|
24
|
+
void git_grafts_free(git_grafts *grafts);
|
25
|
+
void git_grafts_clear(git_grafts *grafts);
|
26
|
+
|
27
|
+
int git_grafts_refresh(git_grafts *grafts);
|
28
|
+
int git_grafts_parse(git_grafts *grafts, const char *buf, size_t len);
|
29
|
+
int git_grafts_add(git_grafts *grafts, const git_oid *oid, git_array_oid_t parents);
|
30
|
+
int git_grafts_remove(git_grafts *grafts, const git_oid *oid);
|
31
|
+
int git_grafts_get(git_commit_graft **out, git_grafts *grafts, const git_oid *oid);
|
32
|
+
int git_grafts_oids(git_oid **out, size_t *out_len, git_grafts *grafts);
|
33
|
+
size_t git_grafts_size(git_grafts *grafts);
|
34
|
+
|
35
|
+
#endif
|
@@ -0,0 +1,30 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
3
|
+
*
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
6
|
+
*/
|
7
|
+
#ifndef INCLUDE_hashmap_oid_h__
|
8
|
+
#define INCLUDE_hashmap_oid_h__
|
9
|
+
|
10
|
+
#include "hashmap.h"
|
11
|
+
|
12
|
+
GIT_INLINE(uint32_t) git_hashmap_oid_hashcode(const git_oid *oid)
|
13
|
+
{
|
14
|
+
uint32_t hash;
|
15
|
+
memcpy(&hash, oid->id, sizeof(uint32_t));
|
16
|
+
return hash;
|
17
|
+
}
|
18
|
+
|
19
|
+
#define GIT_HASHMAP_OID_STRUCT(name, val_t) \
|
20
|
+
GIT_HASHMAP_STRUCT(name, const git_oid *, val_t)
|
21
|
+
#define GIT_HASHMAP_OID_PROTOTYPES(name, val_t) \
|
22
|
+
GIT_HASHMAP_PROTOTYPES(name, const git_oid *, val_t)
|
23
|
+
#define GIT_HASHMAP_OID_FUNCTIONS(name, scope, val_t) \
|
24
|
+
GIT_HASHMAP_FUNCTIONS(name, scope, const git_oid *, val_t, git_hashmap_oid_hashcode, git_oid_equal)
|
25
|
+
|
26
|
+
#define GIT_HASHMAP_OID_SETUP(name, val_t) \
|
27
|
+
GIT_HASHMAP_OID_STRUCT(name, val_t) \
|
28
|
+
GIT_HASHMAP_OID_FUNCTIONS(name, GIT_HASHMAP_INLINE, val_t)
|
29
|
+
|
30
|
+
#endif
|
@@ -42,7 +42,7 @@ static int ident_find_id(
|
|
42
42
|
static int ident_insert_id(
|
43
43
|
git_str *to, const git_str *from, const git_filter_source *src)
|
44
44
|
{
|
45
|
-
char oid[
|
45
|
+
char oid[GIT_OID_MAX_HEXSIZE + 1];
|
46
46
|
const char *id_start, *id_end, *from_end = from->ptr + from->size;
|
47
47
|
size_t need_size;
|
48
48
|
|
@@ -57,7 +57,7 @@ static int ident_insert_id(
|
|
57
57
|
return GIT_PASSTHROUGH;
|
58
58
|
|
59
59
|
need_size = (size_t)(id_start - from->ptr) +
|
60
|
-
5 /* "$Id: " */ +
|
60
|
+
5 /* "$Id: " */ + GIT_OID_MAX_HEXSIZE + 2 /* " $" */ +
|
61
61
|
(size_t)(from_end - id_end);
|
62
62
|
|
63
63
|
if (git_str_grow(to, need_size) < 0)
|
@@ -65,7 +65,7 @@ static int ident_insert_id(
|
|
65
65
|
|
66
66
|
git_str_set(to, from->ptr, (size_t)(id_start - from->ptr));
|
67
67
|
git_str_put(to, "$Id: ", 5);
|
68
|
-
|
68
|
+
git_str_puts(to, oid);
|
69
69
|
git_str_put(to, " $", 2);
|
70
70
|
git_str_put(to, id_end, (size_t)(from_end - id_end));
|
71
71
|
|
@@ -296,6 +296,8 @@ int git_ignore__for_path(
|
|
296
296
|
{
|
297
297
|
int error = 0;
|
298
298
|
const char *workdir = git_repository_workdir(repo);
|
299
|
+
git_attr_cache *attrcache;
|
300
|
+
const char *excludes_file = NULL;
|
299
301
|
git_str infopath = GIT_STR_INIT;
|
300
302
|
|
301
303
|
GIT_ASSERT_ARG(repo);
|
@@ -358,10 +360,12 @@ int git_ignore__for_path(
|
|
358
360
|
}
|
359
361
|
|
360
362
|
/* load core.excludesfile */
|
361
|
-
|
363
|
+
attrcache = git_repository_attr_cache(repo);
|
364
|
+
excludes_file = git_attr_cache_excludesfile(attrcache);
|
365
|
+
|
366
|
+
if (excludes_file != NULL)
|
362
367
|
error = push_ignore_file(
|
363
|
-
ignores, &ignores->ign_global, NULL,
|
364
|
-
git_repository_attr_cache(repo)->cfg_excl_file);
|
368
|
+
ignores, &ignores->ign_global, NULL, excludes_file);
|
365
369
|
|
366
370
|
cleanup:
|
367
371
|
git_str_dispose(&infopath);
|
@@ -428,13 +432,13 @@ void git_ignore__free(git_ignores *ignores)
|
|
428
432
|
git_attr_file__free(file);
|
429
433
|
ignores->ign_path.contents[i] = NULL;
|
430
434
|
}
|
431
|
-
|
435
|
+
git_vector_dispose(&ignores->ign_path);
|
432
436
|
|
433
437
|
git_vector_foreach(&ignores->ign_global, i, file) {
|
434
438
|
git_attr_file__free(file);
|
435
439
|
ignores->ign_global.contents[i] = NULL;
|
436
440
|
}
|
437
|
-
|
441
|
+
git_vector_dispose(&ignores->ign_global);
|
438
442
|
|
439
443
|
git_str_dispose(&ignores->dir);
|
440
444
|
}
|