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
@@ -13,6 +13,38 @@
|
|
13
13
|
#include "sysdir.h"
|
14
14
|
#include "ignore.h"
|
15
15
|
#include "path.h"
|
16
|
+
#include "hashmap_str.h"
|
17
|
+
|
18
|
+
GIT_HASHMAP_STR_SETUP(git_attr_cache_filemap, git_attr_file_entry *);
|
19
|
+
GIT_HASHMAP_STR_SETUP(git_attr_cache_macromap, git_attr_rule *);
|
20
|
+
|
21
|
+
struct git_attr_cache {
|
22
|
+
char *cfg_attr_file; /* cached value of core.attributesfile */
|
23
|
+
char *cfg_excl_file; /* cached value of core.excludesfile */
|
24
|
+
|
25
|
+
/* hash path to git_attr_file_entry records */
|
26
|
+
git_attr_cache_filemap files;
|
27
|
+
/* hash name to git_attr_rule */
|
28
|
+
git_attr_cache_macromap macros;
|
29
|
+
|
30
|
+
git_mutex lock;
|
31
|
+
git_pool pool;
|
32
|
+
};
|
33
|
+
|
34
|
+
const char *git_attr_cache_attributesfile(git_attr_cache *cache)
|
35
|
+
{
|
36
|
+
return cache->cfg_attr_file;
|
37
|
+
}
|
38
|
+
|
39
|
+
const char *git_attr_cache_excludesfile(git_attr_cache *cache)
|
40
|
+
{
|
41
|
+
return cache->cfg_excl_file;
|
42
|
+
}
|
43
|
+
|
44
|
+
git_pool *git_attr_cache_pool(git_attr_cache *cache)
|
45
|
+
{
|
46
|
+
return &cache->pool;
|
47
|
+
}
|
16
48
|
|
17
49
|
GIT_INLINE(int) attr_cache_lock(git_attr_cache *cache)
|
18
50
|
{
|
@@ -34,7 +66,12 @@ GIT_INLINE(void) attr_cache_unlock(git_attr_cache *cache)
|
|
34
66
|
GIT_INLINE(git_attr_file_entry *) attr_cache_lookup_entry(
|
35
67
|
git_attr_cache *cache, const char *path)
|
36
68
|
{
|
37
|
-
|
69
|
+
git_attr_file_entry *result;
|
70
|
+
|
71
|
+
if (git_attr_cache_filemap_get(&result, &cache->files, path) == 0)
|
72
|
+
return result;
|
73
|
+
|
74
|
+
return NULL;
|
38
75
|
}
|
39
76
|
|
40
77
|
int git_attr_cache__alloc_file_entry(
|
@@ -92,7 +129,7 @@ static int attr_cache_make_entry(
|
|
92
129
|
git_repository_workdir(repo), path, &cache->pool)) < 0)
|
93
130
|
return error;
|
94
131
|
|
95
|
-
if ((error =
|
132
|
+
if ((error = git_attr_cache_filemap_put(&cache->files, entry->path, entry)) < 0)
|
96
133
|
return error;
|
97
134
|
|
98
135
|
*out = entry;
|
@@ -271,12 +308,11 @@ bool git_attr_cache__is_cached(
|
|
271
308
|
{
|
272
309
|
git_attr_cache *cache = git_repository_attr_cache(repo);
|
273
310
|
git_attr_file_entry *entry;
|
274
|
-
git_strmap *files;
|
275
311
|
|
276
|
-
if (!cache
|
312
|
+
if (!cache)
|
277
313
|
return false;
|
278
314
|
|
279
|
-
if ((entry
|
315
|
+
if (git_attr_cache_filemap_get(&entry, &cache->files, filename) != 0)
|
280
316
|
return false;
|
281
317
|
|
282
318
|
return entry && (entry->file[source_type] != NULL);
|
@@ -318,6 +354,9 @@ static int attr_cache__lookup_path(
|
|
318
354
|
|
319
355
|
static void attr_cache__free(git_attr_cache *cache)
|
320
356
|
{
|
357
|
+
git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
|
358
|
+
git_attr_rule *rule;
|
359
|
+
git_attr_file_entry *entry;
|
321
360
|
bool unlock;
|
322
361
|
|
323
362
|
if (!cache)
|
@@ -325,30 +364,24 @@ static void attr_cache__free(git_attr_cache *cache)
|
|
325
364
|
|
326
365
|
unlock = (attr_cache_lock(cache) == 0);
|
327
366
|
|
328
|
-
|
329
|
-
git_attr_file_entry *entry;
|
367
|
+
while (git_attr_cache_filemap_iterate(&iter, NULL, &entry, &cache->files) == 0) {
|
330
368
|
git_attr_file *file;
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
git_attr_file__free(file);
|
338
|
-
}
|
369
|
+
size_t i;
|
370
|
+
|
371
|
+
for (i = 0; i < GIT_ATTR_FILE_NUM_SOURCES; i++) {
|
372
|
+
if ((file = git_atomic_swap(entry->file[i], NULL)) != NULL) {
|
373
|
+
GIT_REFCOUNT_OWN(file, NULL);
|
374
|
+
git_attr_file__free(file);
|
339
375
|
}
|
340
|
-
}
|
341
|
-
git_strmap_free(cache->files);
|
376
|
+
}
|
342
377
|
}
|
343
378
|
|
344
|
-
|
345
|
-
|
379
|
+
iter = GIT_HASHMAP_ITER_INIT;
|
380
|
+
while (git_attr_cache_macromap_iterate(&iter, NULL, &rule, &cache->macros) == 0)
|
381
|
+
git_attr_rule__free(rule);
|
346
382
|
|
347
|
-
|
348
|
-
|
349
|
-
});
|
350
|
-
git_strmap_free(cache->macros);
|
351
|
-
}
|
383
|
+
git_attr_cache_filemap_dispose(&cache->files);
|
384
|
+
git_attr_cache_macromap_dispose(&cache->macros);
|
352
385
|
|
353
386
|
git_pool_clear(&cache->pool);
|
354
387
|
|
@@ -401,9 +434,7 @@ int git_attr_cache__init(git_repository *repo)
|
|
401
434
|
/* allocate hashtable for attribute and ignore file contents,
|
402
435
|
* hashtable for attribute macros, and string pool
|
403
436
|
*/
|
404
|
-
if ((ret =
|
405
|
-
(ret = git_strmap_new(&cache->macros)) < 0 ||
|
406
|
-
(ret = git_pool_init(&cache->pool, 1)) < 0)
|
437
|
+
if ((ret = git_pool_init(&cache->pool, 1)) < 0)
|
407
438
|
goto cancel;
|
408
439
|
|
409
440
|
if (git_atomic_compare_and_swap(&repo->attrcache, NULL, cache) != NULL)
|
@@ -457,11 +488,11 @@ int git_attr_cache__insert_macro(git_repository *repo, git_attr_rule *macro)
|
|
457
488
|
goto out;
|
458
489
|
locked = true;
|
459
490
|
|
460
|
-
if ((preexisting
|
461
|
-
|
491
|
+
if (git_attr_cache_macromap_get(&preexisting, &cache->macros, macro->match.pattern) == 0)
|
492
|
+
git_attr_rule__free(preexisting);
|
462
493
|
|
463
|
-
if ((error =
|
464
|
-
|
494
|
+
if ((error = git_attr_cache_macromap_put(&cache->macros, macro->match.pattern, macro)) < 0)
|
495
|
+
goto out;
|
465
496
|
|
466
497
|
out:
|
467
498
|
if (locked)
|
@@ -472,7 +503,12 @@ out:
|
|
472
503
|
git_attr_rule *git_attr_cache__lookup_macro(
|
473
504
|
git_repository *repo, const char *name)
|
474
505
|
{
|
475
|
-
|
506
|
+
git_attr_cache *cache = git_repository_attr_cache(repo);
|
507
|
+
git_attr_rule *rule;
|
508
|
+
|
509
|
+
if (!cache ||
|
510
|
+
git_attr_cache_macromap_get(&rule, &cache->macros, name) != 0)
|
511
|
+
return NULL;
|
476
512
|
|
477
|
-
return
|
513
|
+
return rule;
|
478
514
|
}
|
@@ -10,22 +10,18 @@
|
|
10
10
|
#include "common.h"
|
11
11
|
|
12
12
|
#include "attr_file.h"
|
13
|
-
#include "strmap.h"
|
14
13
|
|
15
14
|
#define GIT_ATTR_CONFIG "core.attributesfile"
|
16
15
|
#define GIT_IGNORE_CONFIG "core.excludesfile"
|
17
16
|
|
18
|
-
typedef struct
|
19
|
-
char *cfg_attr_file; /* cached value of core.attributesfile */
|
20
|
-
char *cfg_excl_file; /* cached value of core.excludesfile */
|
21
|
-
git_strmap *files; /* hash path to git_attr_cache_entry records */
|
22
|
-
git_strmap *macros; /* hash name to vector<git_attr_assignment> */
|
23
|
-
git_mutex lock;
|
24
|
-
git_pool pool;
|
25
|
-
} git_attr_cache;
|
17
|
+
typedef struct git_attr_cache git_attr_cache;
|
26
18
|
|
27
19
|
extern int git_attr_cache__init(git_repository *repo);
|
28
20
|
|
21
|
+
extern const char *git_attr_cache_attributesfile(git_attr_cache *ac);
|
22
|
+
extern const char *git_attr_cache_excludesfile(git_attr_cache *ac);
|
23
|
+
extern git_pool *git_attr_cache_pool(git_attr_cache *ac);
|
24
|
+
|
29
25
|
/* get file - loading and reload as needed */
|
30
26
|
extern int git_attr_cache__get(
|
31
27
|
git_attr_file **file,
|
@@ -19,7 +19,6 @@
|
|
19
19
|
#include "repository.h"
|
20
20
|
#include "blame_git.h"
|
21
21
|
|
22
|
-
|
23
22
|
static int hunk_byfinalline_search_cmp(const void *key, const void *entry)
|
24
23
|
{
|
25
24
|
git_blame_hunk *hunk = (git_blame_hunk*)entry;
|
@@ -60,10 +59,11 @@ static bool hunk_starts_at_or_after_line(git_blame_hunk *hunk, size_t line)
|
|
60
59
|
}
|
61
60
|
|
62
61
|
static git_blame_hunk *new_hunk(
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
62
|
+
size_t start,
|
63
|
+
size_t lines,
|
64
|
+
size_t orig_start,
|
65
|
+
const char *path,
|
66
|
+
git_blame *blame)
|
67
67
|
{
|
68
68
|
git_blame_hunk *hunk = git__calloc(1, sizeof(git_blame_hunk));
|
69
69
|
if (!hunk) return NULL;
|
@@ -72,27 +72,31 @@ static git_blame_hunk *new_hunk(
|
|
72
72
|
hunk->final_start_line_number = start;
|
73
73
|
hunk->orig_start_line_number = orig_start;
|
74
74
|
hunk->orig_path = path ? git__strdup(path) : NULL;
|
75
|
-
git_oid_clear(&hunk->orig_commit_id,
|
76
|
-
git_oid_clear(&hunk->final_commit_id,
|
75
|
+
git_oid_clear(&hunk->orig_commit_id, blame->repository->oid_type);
|
76
|
+
git_oid_clear(&hunk->final_commit_id, blame->repository->oid_type);
|
77
77
|
|
78
78
|
return hunk;
|
79
79
|
}
|
80
80
|
|
81
81
|
static void free_hunk(git_blame_hunk *hunk)
|
82
82
|
{
|
83
|
-
git__free((
|
83
|
+
git__free((char *)hunk->orig_path);
|
84
|
+
git__free((char *)hunk->summary);
|
84
85
|
git_signature_free(hunk->final_signature);
|
86
|
+
git_signature_free(hunk->final_committer);
|
85
87
|
git_signature_free(hunk->orig_signature);
|
88
|
+
git_signature_free(hunk->orig_committer);
|
86
89
|
git__free(hunk);
|
87
90
|
}
|
88
91
|
|
89
|
-
static git_blame_hunk *dup_hunk(git_blame_hunk *hunk)
|
92
|
+
static git_blame_hunk *dup_hunk(git_blame_hunk *hunk, git_blame *blame)
|
90
93
|
{
|
91
94
|
git_blame_hunk *newhunk = new_hunk(
|
92
95
|
hunk->final_start_line_number,
|
93
96
|
hunk->lines_in_hunk,
|
94
97
|
hunk->orig_start_line_number,
|
95
|
-
hunk->orig_path
|
98
|
+
hunk->orig_path,
|
99
|
+
blame);
|
96
100
|
|
97
101
|
if (!newhunk)
|
98
102
|
return NULL;
|
@@ -102,7 +106,10 @@ static git_blame_hunk *dup_hunk(git_blame_hunk *hunk)
|
|
102
106
|
newhunk->boundary = hunk->boundary;
|
103
107
|
|
104
108
|
if (git_signature_dup(&newhunk->final_signature, hunk->final_signature) < 0 ||
|
105
|
-
|
109
|
+
git_signature_dup(&newhunk->final_committer, hunk->final_committer) < 0 ||
|
110
|
+
git_signature_dup(&newhunk->orig_signature, hunk->orig_signature) < 0 ||
|
111
|
+
git_signature_dup(&newhunk->orig_committer, hunk->orig_committer) < 0 ||
|
112
|
+
(newhunk->summary = git__strdup(hunk->summary)) == NULL) {
|
106
113
|
free_hunk(newhunk);
|
107
114
|
return NULL;
|
108
115
|
}
|
@@ -115,12 +122,12 @@ static git_blame_hunk *dup_hunk(git_blame_hunk *hunk)
|
|
115
122
|
static void shift_hunks_by(git_vector *v, size_t start_line, int shift_by)
|
116
123
|
{
|
117
124
|
size_t i;
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
hunk->final_start_line_number += shift_by;
|
125
|
+
for (i = 0; i < v->length; i++) {
|
126
|
+
git_blame_hunk *hunk = (git_blame_hunk*)v->contents[i];
|
127
|
+
if(hunk->final_start_line_number < start_line){
|
128
|
+
continue;
|
123
129
|
}
|
130
|
+
hunk->final_start_line_number += shift_by;
|
124
131
|
}
|
125
132
|
}
|
126
133
|
|
@@ -137,10 +144,9 @@ git_blame *git_blame__alloc(
|
|
137
144
|
gbr->options = opts;
|
138
145
|
|
139
146
|
if (git_vector_init(&gbr->hunks, 8, hunk_cmp) < 0 ||
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
{
|
147
|
+
git_vector_init(&gbr->paths, 8, paths_cmp) < 0 ||
|
148
|
+
(gbr->path = git__strdup(path)) == NULL ||
|
149
|
+
git_vector_insert(&gbr->paths, git__strdup(path)) < 0) {
|
144
150
|
git_blame_free(gbr);
|
145
151
|
return NULL;
|
146
152
|
}
|
@@ -163,9 +169,11 @@ void git_blame_free(git_blame *blame)
|
|
163
169
|
|
164
170
|
git_vector_foreach(&blame->hunks, i, hunk)
|
165
171
|
free_hunk(hunk);
|
166
|
-
git_vector_free(&blame->hunks);
|
167
172
|
|
168
|
-
|
173
|
+
git_vector_dispose(&blame->hunks);
|
174
|
+
git_array_clear(blame->lines);
|
175
|
+
|
176
|
+
git_vector_dispose_deep(&blame->paths);
|
169
177
|
|
170
178
|
git_array_clear(blame->line_index);
|
171
179
|
|
@@ -176,31 +184,76 @@ void git_blame_free(git_blame *blame)
|
|
176
184
|
git__free(blame);
|
177
185
|
}
|
178
186
|
|
179
|
-
|
187
|
+
size_t git_blame_hunkcount(git_blame *blame)
|
180
188
|
{
|
181
189
|
GIT_ASSERT_ARG(blame);
|
182
|
-
|
190
|
+
|
191
|
+
return blame->hunks.length;
|
192
|
+
}
|
193
|
+
|
194
|
+
size_t git_blame_linecount(git_blame *blame)
|
195
|
+
{
|
196
|
+
GIT_ASSERT_ARG(blame);
|
197
|
+
|
198
|
+
return git_array_size(blame->line_index);
|
199
|
+
}
|
200
|
+
|
201
|
+
const git_blame_line *git_blame_line_byindex(
|
202
|
+
git_blame *blame,
|
203
|
+
size_t idx)
|
204
|
+
{
|
205
|
+
GIT_ASSERT_ARG_WITH_RETVAL(blame, NULL);
|
206
|
+
GIT_ASSERT_WITH_RETVAL(idx > 0 && idx <= git_array_size(blame->line_index), NULL);
|
207
|
+
|
208
|
+
return git_array_get(blame->lines, idx - 1);
|
183
209
|
}
|
184
210
|
|
185
|
-
const git_blame_hunk *
|
211
|
+
const git_blame_hunk *git_blame_hunk_byindex(
|
212
|
+
git_blame *blame,
|
213
|
+
size_t index)
|
186
214
|
{
|
187
215
|
GIT_ASSERT_ARG_WITH_RETVAL(blame, NULL);
|
188
|
-
return
|
216
|
+
return git_vector_get(&blame->hunks, index);
|
189
217
|
}
|
190
218
|
|
191
|
-
const git_blame_hunk *
|
219
|
+
const git_blame_hunk *git_blame_hunk_byline(
|
220
|
+
git_blame *blame,
|
221
|
+
size_t lineno)
|
192
222
|
{
|
193
223
|
size_t i, new_lineno = lineno;
|
194
224
|
|
195
225
|
GIT_ASSERT_ARG_WITH_RETVAL(blame, NULL);
|
196
226
|
|
197
|
-
if (
|
198
|
-
|
199
|
-
|
227
|
+
if (git_vector_bsearch2(&i, &blame->hunks,
|
228
|
+
hunk_byfinalline_search_cmp, &new_lineno) != 0)
|
229
|
+
return NULL;
|
230
|
+
|
231
|
+
return git_blame_hunk_byindex(blame, i);
|
232
|
+
}
|
200
233
|
|
201
|
-
|
234
|
+
#ifndef GIT_DEPRECATE_HARD
|
235
|
+
uint32_t git_blame_get_hunk_count(git_blame *blame)
|
236
|
+
{
|
237
|
+
size_t count = git_blame_hunkcount(blame);
|
238
|
+
GIT_ASSERT(count < UINT32_MAX);
|
239
|
+
return (uint32_t)count;
|
202
240
|
}
|
203
241
|
|
242
|
+
const git_blame_hunk *git_blame_get_hunk_byindex(
|
243
|
+
git_blame *blame,
|
244
|
+
uint32_t index)
|
245
|
+
{
|
246
|
+
return git_blame_hunk_byindex(blame, index);
|
247
|
+
}
|
248
|
+
|
249
|
+
const git_blame_hunk *git_blame_get_hunk_byline(
|
250
|
+
git_blame *blame,
|
251
|
+
size_t lineno)
|
252
|
+
{
|
253
|
+
return git_blame_hunk_byline(blame, lineno);
|
254
|
+
}
|
255
|
+
#endif
|
256
|
+
|
204
257
|
static int normalize_options(
|
205
258
|
git_blame_options *out,
|
206
259
|
const git_blame_options *in,
|
@@ -237,7 +290,8 @@ static git_blame_hunk *split_hunk_in_vector(
|
|
237
290
|
git_vector *vec,
|
238
291
|
git_blame_hunk *hunk,
|
239
292
|
size_t rel_line,
|
240
|
-
bool return_new
|
293
|
+
bool return_new,
|
294
|
+
git_blame *blame)
|
241
295
|
{
|
242
296
|
size_t new_line_count;
|
243
297
|
git_blame_hunk *nh;
|
@@ -250,8 +304,9 @@ static git_blame_hunk *split_hunk_in_vector(
|
|
250
304
|
}
|
251
305
|
|
252
306
|
new_line_count = hunk->lines_in_hunk - rel_line;
|
253
|
-
nh = new_hunk(hunk->final_start_line_number + rel_line,
|
254
|
-
|
307
|
+
nh = new_hunk(hunk->final_start_line_number + rel_line,
|
308
|
+
new_line_count, hunk->orig_start_line_number + rel_line,
|
309
|
+
hunk->orig_path, blame);
|
255
310
|
|
256
311
|
if (!nh)
|
257
312
|
return NULL;
|
@@ -278,42 +333,77 @@ static int index_blob_lines(git_blame *blame)
|
|
278
333
|
const char *buf = blame->final_buf;
|
279
334
|
size_t len = blame->final_buf_size;
|
280
335
|
int num = 0, incomplete = 0, bol = 1;
|
336
|
+
git_blame_line *line = NULL;
|
281
337
|
size_t *i;
|
282
338
|
|
283
339
|
if (len && buf[len-1] != '\n')
|
284
340
|
incomplete++; /* incomplete line at the end */
|
341
|
+
|
285
342
|
while (len--) {
|
286
343
|
if (bol) {
|
287
344
|
i = git_array_alloc(blame->line_index);
|
288
345
|
GIT_ERROR_CHECK_ALLOC(i);
|
289
346
|
*i = buf - blame->final_buf;
|
347
|
+
|
348
|
+
GIT_ASSERT(line == NULL);
|
349
|
+
line = git_array_alloc(blame->lines);
|
350
|
+
GIT_ERROR_CHECK_ALLOC(line);
|
351
|
+
|
352
|
+
line->ptr = buf;
|
290
353
|
bol = 0;
|
291
354
|
}
|
355
|
+
|
292
356
|
if (*buf++ == '\n') {
|
357
|
+
GIT_ASSERT(line);
|
358
|
+
line->len = (buf - line->ptr) - 1;
|
359
|
+
line = NULL;
|
360
|
+
|
293
361
|
num++;
|
294
362
|
bol = 1;
|
295
363
|
}
|
296
364
|
}
|
365
|
+
|
297
366
|
i = git_array_alloc(blame->line_index);
|
298
367
|
GIT_ERROR_CHECK_ALLOC(i);
|
299
368
|
*i = buf - blame->final_buf;
|
369
|
+
|
370
|
+
if (!bol) {
|
371
|
+
GIT_ASSERT(line);
|
372
|
+
line->len = buf - line->ptr;
|
373
|
+
line = NULL;
|
374
|
+
}
|
375
|
+
|
376
|
+
GIT_ASSERT(!line);
|
377
|
+
|
300
378
|
blame->num_lines = num + incomplete;
|
301
379
|
return blame->num_lines;
|
302
380
|
}
|
303
381
|
|
304
382
|
static git_blame_hunk *hunk_from_entry(git_blame__entry *e, git_blame *blame)
|
305
383
|
{
|
384
|
+
const char *summary;
|
306
385
|
git_blame_hunk *h = new_hunk(
|
307
|
-
|
386
|
+
e->lno+1, e->num_lines, e->s_lno+1, e->suspect->path,
|
387
|
+
blame);
|
308
388
|
|
309
389
|
if (!h)
|
310
390
|
return NULL;
|
311
391
|
|
312
392
|
git_oid_cpy(&h->final_commit_id, git_commit_id(e->suspect->commit));
|
313
393
|
git_oid_cpy(&h->orig_commit_id, git_commit_id(e->suspect->commit));
|
314
|
-
|
315
|
-
|
316
|
-
|
394
|
+
|
395
|
+
if (git_commit_author_with_mailmap(
|
396
|
+
&h->final_signature, e->suspect->commit, blame->mailmap) < 0 ||
|
397
|
+
git_commit_committer_with_mailmap(
|
398
|
+
&h->final_committer, e->suspect->commit, blame->mailmap) < 0 ||
|
399
|
+
git_signature_dup(&h->orig_signature, h->final_signature) < 0 ||
|
400
|
+
git_signature_dup(&h->orig_committer, h->final_committer) < 0 ||
|
401
|
+
(summary = git_commit_summary(e->suspect->commit)) == NULL ||
|
402
|
+
(h->summary = git__strdup(summary)) == NULL) {
|
403
|
+
free_hunk(h);
|
404
|
+
return NULL;
|
405
|
+
}
|
406
|
+
|
317
407
|
h->boundary = e->is_boundary ? 1 : 0;
|
318
408
|
return h;
|
319
409
|
}
|
@@ -342,12 +432,12 @@ static int blame_internal(git_blame *blame)
|
|
342
432
|
|
343
433
|
if ((error = load_blob(blame)) < 0 ||
|
344
434
|
(error = git_blame__get_origin(&o, blame, blame->final, blame->path)) < 0)
|
345
|
-
goto
|
435
|
+
goto on_error;
|
346
436
|
|
347
437
|
if (git_blob_rawsize(blame->final_blob) > SIZE_MAX) {
|
348
438
|
git_error_set(GIT_ERROR_NOMEMORY, "blob is too large to blame");
|
349
439
|
error = -1;
|
350
|
-
goto
|
440
|
+
goto on_error;
|
351
441
|
}
|
352
442
|
|
353
443
|
blame->final_buf = git_blob_rawcontent(blame->final_blob);
|
@@ -366,17 +456,19 @@ static int blame_internal(git_blame *blame)
|
|
366
456
|
|
367
457
|
blame->ent = ent;
|
368
458
|
|
369
|
-
error = git_blame__like_git(blame, blame->options.flags)
|
459
|
+
if ((error = git_blame__like_git(blame, blame->options.flags)) < 0)
|
460
|
+
goto on_error;
|
370
461
|
|
371
|
-
|
372
|
-
for (ent = blame->ent; ent; ) {
|
373
|
-
git_blame__entry *e = ent->next;
|
462
|
+
for (ent = blame->ent; ent; ent = ent->next) {
|
374
463
|
git_blame_hunk *h = hunk_from_entry(ent, blame);
|
375
|
-
|
376
464
|
git_vector_insert(&blame->hunks, h);
|
465
|
+
}
|
377
466
|
|
467
|
+
on_error:
|
468
|
+
for (ent = blame->ent; ent; ) {
|
469
|
+
git_blame__entry *next = ent->next;
|
378
470
|
git_blame__free_entry(ent);
|
379
|
-
ent =
|
471
|
+
ent = next;
|
380
472
|
}
|
381
473
|
|
382
474
|
return error;
|
@@ -439,20 +531,21 @@ static int buffer_hunk_cb(
|
|
439
531
|
|
440
532
|
GIT_UNUSED(delta);
|
441
533
|
|
442
|
-
wedge_line = (hunk->old_lines
|
534
|
+
wedge_line = (hunk->new_start >= hunk->old_start || hunk->old_lines==0) ? hunk->new_start : hunk->old_start;
|
443
535
|
blame->current_diff_line = wedge_line;
|
444
|
-
|
445
|
-
blame->current_hunk = (git_blame_hunk*)git_blame_get_hunk_byline(blame, wedge_line);
|
536
|
+
blame->current_hunk = (git_blame_hunk*)git_blame_hunk_byline(blame, wedge_line);
|
446
537
|
if (!blame->current_hunk) {
|
447
538
|
/* Line added at the end of the file */
|
448
|
-
blame->current_hunk = new_hunk(wedge_line, 0, wedge_line,
|
539
|
+
blame->current_hunk = new_hunk(wedge_line, 0, wedge_line,
|
540
|
+
blame->path, blame);
|
541
|
+
blame->current_diff_line++;
|
449
542
|
GIT_ERROR_CHECK_ALLOC(blame->current_hunk);
|
450
|
-
|
451
543
|
git_vector_insert(&blame->hunks, blame->current_hunk);
|
452
544
|
} else if (!hunk_starts_at_or_after_line(blame->current_hunk, wedge_line)){
|
453
545
|
/* If this hunk doesn't start between existing hunks, split a hunk up so it does */
|
454
546
|
blame->current_hunk = split_hunk_in_vector(&blame->hunks, blame->current_hunk,
|
455
|
-
wedge_line - blame->current_hunk->
|
547
|
+
wedge_line - blame->current_hunk->final_start_line_number, true,
|
548
|
+
blame);
|
456
549
|
GIT_ERROR_CHECK_ALLOC(blame->current_hunk);
|
457
550
|
}
|
458
551
|
|
@@ -477,13 +570,12 @@ static int buffer_line_cb(
|
|
477
570
|
hunk_ends_at_or_before_line(blame->current_hunk, blame->current_diff_line)) {
|
478
571
|
/* Append to the current buffer-blame hunk */
|
479
572
|
blame->current_hunk->lines_in_hunk++;
|
480
|
-
shift_hunks_by(&blame->hunks, blame->current_diff_line
|
573
|
+
shift_hunks_by(&blame->hunks, blame->current_diff_line, 1);
|
481
574
|
} else {
|
482
575
|
/* Create a new buffer-blame hunk with this line */
|
483
576
|
shift_hunks_by(&blame->hunks, blame->current_diff_line, 1);
|
484
|
-
blame->current_hunk = new_hunk(blame->current_diff_line, 1, 0, blame->path);
|
577
|
+
blame->current_hunk = new_hunk(blame->current_diff_line, 1, 0, blame->path, blame);
|
485
578
|
GIT_ERROR_CHECK_ALLOC(blame->current_hunk);
|
486
|
-
|
487
579
|
git_vector_insert_sorted(&blame->hunks, blame->current_hunk, NULL);
|
488
580
|
}
|
489
581
|
blame->current_diff_line++;
|
@@ -491,15 +583,16 @@ static int buffer_line_cb(
|
|
491
583
|
|
492
584
|
if (line->origin == GIT_DIFF_LINE_DELETION) {
|
493
585
|
/* Trim the line from the current hunk; remove it if it's now empty */
|
494
|
-
size_t shift_base = blame->current_diff_line + blame->current_hunk->lines_in_hunk
|
586
|
+
size_t shift_base = blame->current_diff_line + blame->current_hunk->lines_in_hunk;
|
495
587
|
|
496
588
|
if (--(blame->current_hunk->lines_in_hunk) == 0) {
|
497
589
|
size_t i;
|
498
|
-
|
590
|
+
size_t i_next;
|
499
591
|
if (!git_vector_search2(&i, &blame->hunks, ptrs_equal_cmp, blame->current_hunk)) {
|
500
592
|
git_vector_remove(&blame->hunks, i);
|
501
593
|
free_hunk(blame->current_hunk);
|
502
|
-
|
594
|
+
i_next = min( i , blame->hunks.length -1);
|
595
|
+
blame->current_hunk = (git_blame_hunk*)git_blame_hunk_byindex(blame, (uint32_t)i_next);
|
503
596
|
}
|
504
597
|
}
|
505
598
|
shift_hunks_by(&blame->hunks, shift_base, -1);
|
@@ -529,7 +622,7 @@ int git_blame_buffer(
|
|
529
622
|
|
530
623
|
/* Duplicate all of the hunk structures in the reference blame */
|
531
624
|
git_vector_foreach(&reference->hunks, i, hunk) {
|
532
|
-
git_blame_hunk *h = dup_hunk(hunk);
|
625
|
+
git_blame_hunk *h = dup_hunk(hunk, blame);
|
533
626
|
GIT_ERROR_CHECK_ALLOC(h);
|
534
627
|
|
535
628
|
git_vector_insert(&blame->hunks, h);
|
@@ -134,9 +134,9 @@ int git_branch_create(
|
|
134
134
|
const git_commit *commit,
|
135
135
|
int force)
|
136
136
|
{
|
137
|
-
char commit_id[
|
137
|
+
char commit_id[GIT_OID_MAX_HEXSIZE + 1];
|
138
138
|
|
139
|
-
git_oid_tostr(commit_id,
|
139
|
+
git_oid_tostr(commit_id, GIT_OID_MAX_HEXSIZE + 1, git_commit_id(commit));
|
140
140
|
return create_branch(ref_out, repository, branch_name, commit, commit_id, force);
|
141
141
|
}
|
142
142
|
|