rugged 1.3.2 → 1.6.2
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/README.md +34 -2
- data/ext/rugged/extconf.rb +7 -4
- data/ext/rugged/rugged.c +16 -0
- data/ext/rugged/rugged.h +4 -0
- data/ext/rugged/rugged_blame.c +2 -0
- data/ext/rugged/rugged_blob.c +3 -0
- data/ext/rugged/rugged_commit.c +1 -0
- data/ext/rugged/rugged_config.c +9 -2
- data/ext/rugged/rugged_diff.c +1 -0
- data/ext/rugged/rugged_index.c +2 -0
- data/ext/rugged/rugged_patch.c +1 -0
- data/ext/rugged/rugged_rebase.c +1 -0
- data/ext/rugged/rugged_reference.c +1 -0
- data/ext/rugged/rugged_remote.c +28 -10
- data/ext/rugged/rugged_repo.c +7 -9
- data/ext/rugged/rugged_revwalk.c +5 -1
- data/ext/rugged/rugged_settings.c +5 -0
- data/ext/rugged/rugged_submodule.c +1 -0
- data/ext/rugged/rugged_tag.c +1 -0
- data/ext/rugged/rugged_tree.c +4 -0
- data/lib/rugged/index.rb +1 -1
- data/lib/rugged/tree.rb +5 -1
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +132 -288
- data/vendor/libgit2/COPYING +106 -19
- data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
- data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
- data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
- data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
- data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
- data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
- data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
- data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
- data/vendor/libgit2/cmake/{FindHTTP_Parser.cmake → FindHTTPParser.cmake} +17 -17
- data/vendor/libgit2/cmake/FindIconv.cmake +27 -27
- data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
- data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
- data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
- data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
- data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
- data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
- data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
- data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
- data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
- data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
- data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
- data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
- data/vendor/libgit2/cmake/SelectHTTPParser.cmake +19 -0
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +100 -100
- data/vendor/libgit2/cmake/SelectHashes.cmake +91 -53
- data/vendor/libgit2/cmake/SelectRegex.cmake +51 -0
- data/vendor/libgit2/cmake/SelectSSH.cmake +41 -0
- data/vendor/libgit2/cmake/SelectWinHTTP.cmake +17 -0
- data/vendor/libgit2/cmake/SelectZlib.cmake +34 -0
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +3 -1
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +88 -88
- data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
- data/vendor/libgit2/deps/zlib/adler32.c +7 -0
- data/vendor/libgit2/deps/zlib/crc32.c +975 -288
- data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
- data/vendor/libgit2/deps/zlib/deflate.c +83 -31
- data/vendor/libgit2/deps/zlib/deflate.h +12 -15
- data/vendor/libgit2/deps/zlib/gzguts.h +3 -2
- data/vendor/libgit2/deps/zlib/infback.c +2 -1
- data/vendor/libgit2/deps/zlib/inffast.c +14 -14
- data/vendor/libgit2/deps/zlib/inflate.c +39 -8
- data/vendor/libgit2/deps/zlib/inflate.h +3 -2
- data/vendor/libgit2/deps/zlib/inftrees.c +3 -3
- data/vendor/libgit2/deps/zlib/trees.c +27 -48
- data/vendor/libgit2/deps/zlib/zlib.h +126 -100
- data/vendor/libgit2/deps/zlib/zutil.c +2 -2
- data/vendor/libgit2/deps/zlib/zutil.h +12 -9
- data/vendor/libgit2/include/git2/apply.h +16 -2
- data/vendor/libgit2/include/git2/attr.h +11 -2
- data/vendor/libgit2/include/git2/blame.h +4 -1
- data/vendor/libgit2/include/git2/blob.h +14 -1
- data/vendor/libgit2/include/git2/branch.h +4 -2
- data/vendor/libgit2/include/git2/buffer.h +18 -78
- data/vendor/libgit2/include/git2/cert.h +2 -2
- data/vendor/libgit2/include/git2/checkout.h +5 -2
- data/vendor/libgit2/include/git2/clone.h +3 -3
- data/vendor/libgit2/include/git2/commit.h +2 -0
- data/vendor/libgit2/include/git2/common.h +28 -7
- data/vendor/libgit2/include/git2/config.h +25 -9
- data/vendor/libgit2/include/git2/credential.h +2 -1
- data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
- data/vendor/libgit2/include/git2/deprecated.h +9 -1
- data/vendor/libgit2/include/git2/describe.h +7 -2
- data/vendor/libgit2/include/git2/diff.h +18 -10
- data/vendor/libgit2/include/git2/email.h +1 -1
- data/vendor/libgit2/include/git2/errors.h +17 -3
- data/vendor/libgit2/include/git2/experimental.h +20 -0
- data/vendor/libgit2/include/git2/filter.h +7 -2
- data/vendor/libgit2/include/git2/graph.h +1 -0
- data/vendor/libgit2/include/git2/ignore.h +1 -1
- data/vendor/libgit2/include/git2/index.h +11 -5
- data/vendor/libgit2/include/git2/indexer.h +48 -0
- data/vendor/libgit2/include/git2/merge.h +24 -4
- data/vendor/libgit2/include/git2/message.h +2 -0
- data/vendor/libgit2/include/git2/object.h +49 -0
- data/vendor/libgit2/include/git2/odb.h +94 -13
- data/vendor/libgit2/include/git2/odb_backend.h +107 -19
- data/vendor/libgit2/include/git2/oid.h +115 -15
- data/vendor/libgit2/include/git2/pack.h +24 -8
- data/vendor/libgit2/include/git2/patch.h +8 -0
- data/vendor/libgit2/include/git2/pathspec.h +1 -1
- data/vendor/libgit2/include/git2/proxy.h +1 -1
- data/vendor/libgit2/include/git2/rebase.h +9 -1
- data/vendor/libgit2/include/git2/refdb.h +3 -0
- data/vendor/libgit2/include/git2/reflog.h +1 -1
- data/vendor/libgit2/include/git2/refs.h +2 -2
- data/vendor/libgit2/include/git2/remote.h +184 -37
- data/vendor/libgit2/include/git2/repository.h +34 -10
- data/vendor/libgit2/include/git2/reset.h +2 -2
- data/vendor/libgit2/include/git2/revparse.h +1 -1
- data/vendor/libgit2/include/git2/revwalk.h +4 -1
- data/vendor/libgit2/include/git2/signature.h +1 -1
- data/vendor/libgit2/include/git2/stash.h +61 -7
- data/vendor/libgit2/include/git2/status.h +14 -5
- data/vendor/libgit2/include/git2/strarray.h +0 -13
- data/vendor/libgit2/include/git2/submodule.h +7 -2
- data/vendor/libgit2/include/git2/sys/commit_graph.h +1 -1
- data/vendor/libgit2/include/git2/sys/odb_backend.h +3 -6
- data/vendor/libgit2/include/git2/sys/remote.h +46 -0
- data/vendor/libgit2/include/git2/sys/stream.h +1 -1
- data/vendor/libgit2/include/git2/sys/transport.h +46 -39
- data/vendor/libgit2/include/git2/tag.h +1 -0
- data/vendor/libgit2/include/git2/tree.h +4 -3
- data/vendor/libgit2/include/git2/types.h +7 -7
- data/vendor/libgit2/include/git2/version.h +27 -6
- data/vendor/libgit2/include/git2/worktree.h +12 -2
- data/vendor/libgit2/include/git2.h +1 -0
- data/vendor/libgit2/src/CMakeLists.txt +177 -419
- data/vendor/libgit2/src/README.md +12 -0
- data/vendor/libgit2/src/cli/CMakeLists.txt +57 -0
- data/vendor/libgit2/src/cli/README.md +26 -0
- data/vendor/libgit2/src/cli/cli.h +20 -0
- data/vendor/libgit2/src/cli/cmd.c +21 -0
- data/vendor/libgit2/src/cli/cmd.h +33 -0
- data/vendor/libgit2/src/cli/cmd_cat_file.c +204 -0
- data/vendor/libgit2/src/cli/cmd_clone.c +176 -0
- data/vendor/libgit2/src/cli/cmd_hash_object.c +154 -0
- data/vendor/libgit2/src/cli/cmd_help.c +86 -0
- data/vendor/libgit2/src/cli/error.h +51 -0
- data/vendor/libgit2/src/cli/main.c +106 -0
- data/vendor/libgit2/src/cli/opt.c +669 -0
- data/vendor/libgit2/src/cli/opt.h +349 -0
- data/vendor/libgit2/src/cli/opt_usage.c +194 -0
- data/vendor/libgit2/src/cli/opt_usage.h +35 -0
- data/vendor/libgit2/src/cli/progress.c +345 -0
- data/vendor/libgit2/src/cli/progress.h +117 -0
- data/vendor/libgit2/src/cli/sighandler.h +20 -0
- data/vendor/libgit2/src/cli/unix/sighandler.c +36 -0
- data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
- data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
- data/vendor/libgit2/src/libgit2/CMakeLists.txt +141 -0
- data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +1 -1
- data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
- data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +18 -18
- data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
- data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +18 -18
- data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +18 -18
- data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +4 -4
- data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +18 -13
- data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +2 -0
- data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -1
- data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
- data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
- data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
- data/vendor/libgit2/src/{branch.h → libgit2/branch.h} +15 -3
- data/vendor/libgit2/src/libgit2/buf.c +126 -0
- data/vendor/libgit2/src/libgit2/buf.h +50 -0
- data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +74 -68
- data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +13 -13
- data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +96 -67
- data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +178 -73
- data/vendor/libgit2/src/libgit2/commit.h +87 -0
- data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +122 -89
- data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +14 -4
- data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +7 -4
- data/vendor/libgit2/src/libgit2/common.h +55 -0
- data/vendor/libgit2/src/{config.c → libgit2/config.c} +101 -69
- data/vendor/libgit2/src/{config.h → libgit2/config.h} +15 -2
- data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +105 -93
- data/vendor/libgit2/src/{config_mem.c → libgit2/config_mem.c} +9 -9
- data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +27 -23
- data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
- data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +35 -27
- data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +30 -9
- data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +2 -4
- data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +34 -36
- data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +3 -3
- data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +44 -26
- data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +47 -18
- data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
- data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +112 -100
- data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
- data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
- data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +13 -8
- data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
- data/vendor/libgit2/src/{email.c → libgit2/email.c} +55 -39
- data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
- data/vendor/libgit2/src/{errors.c → libgit2/errors.c} +18 -18
- data/vendor/libgit2/src/{errors.h → libgit2/errors.h} +1 -2
- data/vendor/libgit2/src/libgit2/experimental.h.in +13 -0
- data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +72 -27
- data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -1
- data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +23 -23
- data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +127 -53
- data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
- data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
- data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +35 -34
- data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
- data/vendor/libgit2/src/{index.c → libgit2/index.c} +91 -90
- data/vendor/libgit2/src/{index.h → libgit2/index.h} +6 -3
- data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +173 -92
- data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +71 -61
- data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +5 -5
- data/vendor/libgit2/src/{libgit2.c → libgit2/libgit2.c} +46 -11
- data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +38 -36
- data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +30 -30
- data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
- data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +2 -2
- data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -3
- data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
- data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +112 -92
- data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +5 -4
- data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +15 -12
- data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +5 -2
- data/vendor/libgit2/src/{netops.c → libgit2/netops.c} +1 -2
- data/vendor/libgit2/src/{netops.h → libgit2/netops.h} +1 -1
- data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +25 -34
- data/vendor/libgit2/src/{object.c → libgit2/object.c} +135 -30
- data/vendor/libgit2/src/{object.h → libgit2/object.h} +12 -3
- data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +228 -81
- data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
- data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
- data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +18 -5
- data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +137 -85
- data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +136 -90
- data/vendor/libgit2/src/libgit2/oid.h +273 -0
- data/vendor/libgit2/src/{oidmap.c → libgit2/oidmap.c} +1 -1
- data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +56 -30
- data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +11 -6
- data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +114 -84
- data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +31 -16
- data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +4 -3
- data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
- data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +1 -0
- data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +27 -11
- data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
- data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +29 -29
- data/vendor/libgit2/src/libgit2/path.c +375 -0
- data/vendor/libgit2/src/libgit2/path.h +68 -0
- data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +6 -6
- data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
- data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
- data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
- data/vendor/libgit2/src/{push.c → libgit2/push.c} +43 -38
- data/vendor/libgit2/src/{push.h → libgit2/push.h} +4 -16
- data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
- data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
- data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +119 -107
- data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +506 -197
- data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +7 -5
- data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +1 -2
- data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +34 -32
- data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +2 -2
- data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +32 -37
- data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +5 -2
- data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +718 -420
- data/vendor/libgit2/src/libgit2/remote.h +100 -0
- data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +629 -386
- data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +20 -9
- data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
- data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +14 -14
- data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +71 -42
- data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +12 -8
- data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +12 -6
- data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -1
- data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +235 -61
- data/vendor/libgit2/src/{status.c → libgit2/status.c} +4 -1
- data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
- data/vendor/libgit2/src/libgit2/strarray.h +25 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +8 -6
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +1 -1
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +7 -3
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +3 -3
- data/vendor/libgit2/src/{streams → libgit2/streams}/socket.c +4 -1
- data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +177 -161
- data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +1 -1
- data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
- data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +53 -18
- data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +73 -42
- data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
- data/vendor/libgit2/src/{threadstate.c → libgit2/threadstate.c} +3 -3
- data/vendor/libgit2/src/{threadstate.h → libgit2/threadstate.h} +2 -2
- data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
- data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
- data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +1 -1
- data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +1 -1
- data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +10 -10
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +2 -3
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.c +12 -13
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.c +10 -10
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +0 -1
- data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +9 -11
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +41 -20
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +2 -3
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +75 -66
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +138 -116
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +92 -133
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +35 -32
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +177 -65
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +97 -49
- data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.c +365 -198
- data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +58 -59
- data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +8 -8
- data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +2 -2
- data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +93 -83
- data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +4 -4
- data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +121 -94
- data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
- data/vendor/libgit2/src/libgit2/xdiff/git-xdiff.h +53 -0
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiff.h +15 -15
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.c +134 -108
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.c +23 -7
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xhistogram.c +87 -78
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xinclude.h +1 -12
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmerge.c +104 -117
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xpatience.c +6 -17
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.c +15 -20
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.c +18 -7
- data/vendor/libgit2/src/util/CMakeLists.txt +80 -0
- data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.h +1 -1
- data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
- data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{array.h → util/array.h} +1 -1
- data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
- data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +1 -1
- data/vendor/libgit2/src/{date.c → util/date.c} +14 -20
- data/vendor/libgit2/src/util/date.h +33 -0
- data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +29 -29
- data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +2 -2
- data/vendor/libgit2/src/{path.c → util/fs_path.c} +453 -647
- data/vendor/libgit2/src/{path.h → util/fs_path.h} +221 -188
- data/vendor/libgit2/src/{futils.c → util/futils.c} +135 -90
- data/vendor/libgit2/src/{futils.h → util/futils.h} +28 -15
- data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +15 -1
- data/vendor/libgit2/src/{common.h → util/git2_util.h} +20 -59
- data/vendor/libgit2/src/util/hash/builtin.c +53 -0
- data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
- data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
- data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
- data/vendor/libgit2/src/util/hash/openssl.c +195 -0
- data/vendor/libgit2/src/util/hash/openssl.h +45 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
- data/vendor/libgit2/src/util/hash/sha.h +70 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
- data/vendor/libgit2/src/util/hash/win32.c +549 -0
- data/vendor/libgit2/src/util/hash/win32.h +60 -0
- data/vendor/libgit2/src/util/hash.c +158 -0
- data/vendor/libgit2/src/util/hash.h +61 -0
- data/vendor/libgit2/src/{khash.h → util/khash.h} +1 -1
- data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
- data/vendor/libgit2/src/util/net.c +1003 -0
- data/vendor/libgit2/src/{net.h → util/net.h} +18 -4
- data/vendor/libgit2/src/{pool.h → util/pool.h} +1 -1
- data/vendor/libgit2/src/{posix.c → util/posix.c} +3 -3
- data/vendor/libgit2/src/{posix.h → util/posix.h} +4 -1
- data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +2 -2
- data/vendor/libgit2/src/util/rand.c +234 -0
- data/vendor/libgit2/src/util/rand.h +37 -0
- data/vendor/libgit2/src/{regexp.c → util/regexp.c} +4 -4
- data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
- data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
- data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
- data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +1 -1
- data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +2 -2
- data/vendor/libgit2/src/{buffer.c → util/str.c} +157 -151
- data/vendor/libgit2/src/util/str.h +357 -0
- data/vendor/libgit2/src/{strmap.h → util/strmap.h} +1 -1
- data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
- data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
- data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
- data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
- data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -4
- data/vendor/libgit2/src/{unix → util/unix}/realpath.c +1 -3
- data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
- data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
- data/vendor/libgit2/src/{util.c → util/util.c} +15 -15
- data/vendor/libgit2/src/{util.h → util/util.h} +4 -29
- data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
- data/vendor/libgit2/src/{vector.h → util/vector.h} +2 -2
- data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +140 -9
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
- data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
- data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +12 -28
- data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
- data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
- data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
- data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
- metadata +402 -356
- data/vendor/libgit2/src/buffer.h +0 -374
- data/vendor/libgit2/src/commit.h +0 -46
- data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
- data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
- data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
- data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
- data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
- data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
- data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
- data/vendor/libgit2/src/hash/sha1.h +0 -38
- data/vendor/libgit2/src/hash.c +0 -110
- data/vendor/libgit2/src/hash.h +0 -46
- data/vendor/libgit2/src/message.h +0 -17
- data/vendor/libgit2/src/net.c +0 -540
- data/vendor/libgit2/src/oid.h +0 -51
- data/vendor/libgit2/src/remote.h +0 -55
- data/vendor/libgit2/src/sysdir.c +0 -347
- data/vendor/libgit2/src/win32/findfile.c +0 -230
- data/vendor/libgit2/src/win32/findfile.h +0 -19
- /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
- /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
- /data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +0 -0
- /data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +0 -0
- /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
- /data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +0 -0
- /data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +0 -0
- /data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -0
- /data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +0 -0
- /data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +0 -0
- /data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +0 -0
- /data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +0 -0
- /data/vendor/libgit2/src/{config_entries.c → libgit2/config_entries.c} +0 -0
- /data/vendor/libgit2/src/{config_entries.h → libgit2/config_entries.h} +0 -0
- /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
- /data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +0 -0
- /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
- /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
- /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
- /data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +0 -0
- /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
- /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
- /data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +0 -0
- /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
- /data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +0 -0
- /data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +0 -0
- /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
- /data/vendor/libgit2/src/{idxmap.c → libgit2/idxmap.c} +0 -0
- /data/vendor/libgit2/src/{idxmap.h → libgit2/idxmap.h} +0 -0
- /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
- /data/vendor/libgit2/src/{libgit2.h → libgit2/libgit2.h} +0 -0
- /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
- /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
- /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
- /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
- /data/vendor/libgit2/src/{offmap.c → libgit2/offmap.c} +0 -0
- /data/vendor/libgit2/src/{offmap.h → libgit2/offmap.h} +0 -0
- /data/vendor/libgit2/src/{oidarray.c → libgit2/oidarray.c} +0 -0
- /data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +0 -0
- /data/vendor/libgit2/src/{oidmap.h → libgit2/oidmap.h} +0 -0
- /data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +0 -0
- /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
- /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
- /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
- /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
- /data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +0 -0
- /data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +0 -0
- /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
- /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
- /data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.h +0 -0
- /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmacros.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xtypes.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.h +0 -0
- /data/vendor/libgit2/src/{alloc.c → util/alloc.c} +0 -0
- /data/vendor/libgit2/src/{alloc.h → util/alloc.h} +0 -0
- /data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.c +0 -0
- /data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.c +0 -0
- /data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.c +0 -0
- /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
- /data/vendor/libgit2/src/{integer.h → util/integer.h} +0 -0
- /data/vendor/libgit2/src/{pool.c → util/pool.c} +0 -0
- /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
- /data/vendor/libgit2/src/{strmap.c → util/strmap.c} +0 -0
- /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
- /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
- /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
- /data/vendor/libgit2/src/{vector.c → util/vector.c} +0 -0
- /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/error.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
|
@@ -21,7 +21,7 @@ typedef enum {
|
|
|
21
21
|
DIFF_DRIVER_AUTO = 0,
|
|
22
22
|
DIFF_DRIVER_BINARY = 1,
|
|
23
23
|
DIFF_DRIVER_TEXT = 2,
|
|
24
|
-
DIFF_DRIVER_PATTERNLIST = 3
|
|
24
|
+
DIFF_DRIVER_PATTERNLIST = 3
|
|
25
25
|
} git_diff_driver_t;
|
|
26
26
|
|
|
27
27
|
typedef struct {
|
|
@@ -51,11 +51,9 @@ struct git_diff_driver_registry {
|
|
|
51
51
|
|
|
52
52
|
#define FORCE_DIFFABLE (GIT_DIFF_FORCE_TEXT | GIT_DIFF_FORCE_BINARY)
|
|
53
53
|
|
|
54
|
-
static git_diff_driver
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
{ DIFF_DRIVER_TEXT, GIT_DIFF_FORCE_TEXT, 0 },
|
|
58
|
-
};
|
|
54
|
+
static git_diff_driver diff_driver_auto = { DIFF_DRIVER_AUTO, 0, 0 };
|
|
55
|
+
static git_diff_driver diff_driver_binary = { DIFF_DRIVER_BINARY, GIT_DIFF_FORCE_BINARY, 0 };
|
|
56
|
+
static git_diff_driver diff_driver_text = { DIFF_DRIVER_TEXT, GIT_DIFF_FORCE_TEXT, 0 };
|
|
59
57
|
|
|
60
58
|
git_diff_driver_registry *git_diff_driver_registry_new(void)
|
|
61
59
|
{
|
|
@@ -90,7 +88,7 @@ static int diff_driver_add_patterns(
|
|
|
90
88
|
int error = 0;
|
|
91
89
|
const char *scan, *end;
|
|
92
90
|
git_diff_driver_pattern *pat = NULL;
|
|
93
|
-
|
|
91
|
+
git_str buf = GIT_STR_INIT;
|
|
94
92
|
|
|
95
93
|
for (scan = regex_str; scan; scan = end) {
|
|
96
94
|
/* get pattern to fill in */
|
|
@@ -105,10 +103,10 @@ static int diff_driver_add_patterns(
|
|
|
105
103
|
}
|
|
106
104
|
|
|
107
105
|
if ((end = strchr(scan, '\n')) != NULL) {
|
|
108
|
-
error =
|
|
106
|
+
error = git_str_set(&buf, scan, end - scan);
|
|
109
107
|
end++;
|
|
110
108
|
} else {
|
|
111
|
-
error =
|
|
109
|
+
error = git_str_sets(&buf, scan);
|
|
112
110
|
}
|
|
113
111
|
if (error < 0)
|
|
114
112
|
break;
|
|
@@ -122,7 +120,7 @@ static int diff_driver_add_patterns(
|
|
|
122
120
|
|
|
123
121
|
if (error && pat != NULL)
|
|
124
122
|
(void)git_array_pop(drv->fn_patterns); /* release last item */
|
|
125
|
-
|
|
123
|
+
git_str_dispose(&buf);
|
|
126
124
|
|
|
127
125
|
/* We want to ignore bad patterns, so return success regardless */
|
|
128
126
|
return 0;
|
|
@@ -237,7 +235,7 @@ static int git_diff_driver_load(
|
|
|
237
235
|
git_diff_driver *drv;
|
|
238
236
|
size_t namelen;
|
|
239
237
|
git_config *cfg = NULL;
|
|
240
|
-
|
|
238
|
+
git_str name = GIT_STR_INIT;
|
|
241
239
|
git_config_entry *ce = NULL;
|
|
242
240
|
bool found_driver = false;
|
|
243
241
|
|
|
@@ -260,13 +258,13 @@ static int git_diff_driver_load(
|
|
|
260
258
|
goto done;
|
|
261
259
|
}
|
|
262
260
|
|
|
263
|
-
if ((error =
|
|
261
|
+
if ((error = git_str_printf(&name, "diff.%s.binary", driver_name)) < 0)
|
|
264
262
|
goto done;
|
|
265
263
|
|
|
266
264
|
switch (git_config__get_bool_force(cfg, name.ptr, -1)) {
|
|
267
265
|
case true:
|
|
268
266
|
/* if diff.<driver>.binary is true, just return the binary driver */
|
|
269
|
-
*out = &
|
|
267
|
+
*out = &diff_driver_binary;
|
|
270
268
|
goto done;
|
|
271
269
|
case false:
|
|
272
270
|
/* if diff.<driver>.binary is false, force binary checks off */
|
|
@@ -281,8 +279,8 @@ static int git_diff_driver_load(
|
|
|
281
279
|
|
|
282
280
|
/* TODO: warn if diff.<name>.command or diff.<name>.textconv are set */
|
|
283
281
|
|
|
284
|
-
|
|
285
|
-
if ((error =
|
|
282
|
+
git_str_truncate(&name, namelen + strlen("diff.."));
|
|
283
|
+
if ((error = git_str_PUTS(&name, "xfuncname")) < 0)
|
|
286
284
|
goto done;
|
|
287
285
|
|
|
288
286
|
if ((error = git_config_get_multivar_foreach(
|
|
@@ -292,8 +290,8 @@ static int git_diff_driver_load(
|
|
|
292
290
|
git_error_clear(); /* no diff.<driver>.xfuncname, so just continue */
|
|
293
291
|
}
|
|
294
292
|
|
|
295
|
-
|
|
296
|
-
if ((error =
|
|
293
|
+
git_str_truncate(&name, namelen + strlen("diff.."));
|
|
294
|
+
if ((error = git_str_PUTS(&name, "funcname")) < 0)
|
|
297
295
|
goto done;
|
|
298
296
|
|
|
299
297
|
if ((error = git_config_get_multivar_foreach(
|
|
@@ -309,8 +307,8 @@ static int git_diff_driver_load(
|
|
|
309
307
|
found_driver = true;
|
|
310
308
|
}
|
|
311
309
|
|
|
312
|
-
|
|
313
|
-
if ((error =
|
|
310
|
+
git_str_truncate(&name, namelen + strlen("diff.."));
|
|
311
|
+
if ((error = git_str_PUTS(&name, "wordregex")) < 0)
|
|
314
312
|
goto done;
|
|
315
313
|
|
|
316
314
|
if ((error = git_config__lookup_entry(&ce, cfg, name.ptr, false)) < 0)
|
|
@@ -340,7 +338,7 @@ static int git_diff_driver_load(
|
|
|
340
338
|
|
|
341
339
|
done:
|
|
342
340
|
git_config_entry_free(ce);
|
|
343
|
-
|
|
341
|
+
git_str_dispose(&name);
|
|
344
342
|
git_config_free(cfg);
|
|
345
343
|
|
|
346
344
|
if (!*out) {
|
|
@@ -374,9 +372,9 @@ int git_diff_driver_lookup(
|
|
|
374
372
|
else if (GIT_ATTR_IS_UNSPECIFIED(values[0]))
|
|
375
373
|
/* just use the auto value */;
|
|
376
374
|
else if (GIT_ATTR_IS_FALSE(values[0]))
|
|
377
|
-
*out = &
|
|
375
|
+
*out = &diff_driver_binary;
|
|
378
376
|
else if (GIT_ATTR_IS_TRUE(values[0]))
|
|
379
|
-
*out = &
|
|
377
|
+
*out = &diff_driver_text;
|
|
380
378
|
|
|
381
379
|
/* otherwise look for driver information in config and build driver */
|
|
382
380
|
else if ((error = git_diff_driver_load(out, repo, values[0])) < 0) {
|
|
@@ -387,7 +385,7 @@ int git_diff_driver_lookup(
|
|
|
387
385
|
}
|
|
388
386
|
|
|
389
387
|
if (!*out)
|
|
390
|
-
*out = &
|
|
388
|
+
*out = &diff_driver_auto;
|
|
391
389
|
|
|
392
390
|
return error;
|
|
393
391
|
}
|
|
@@ -420,11 +418,11 @@ void git_diff_driver_update_options(
|
|
|
420
418
|
int git_diff_driver_content_is_binary(
|
|
421
419
|
git_diff_driver *driver, const char *content, size_t content_len)
|
|
422
420
|
{
|
|
423
|
-
|
|
421
|
+
git_str search = GIT_STR_INIT;
|
|
424
422
|
|
|
425
423
|
GIT_UNUSED(driver);
|
|
426
424
|
|
|
427
|
-
|
|
425
|
+
git_str_attach_notowned(&search, content,
|
|
428
426
|
min(content_len, GIT_FILTER_BYTES_TO_CHECK_NUL));
|
|
429
427
|
|
|
430
428
|
/* TODO: provide encoding / binary detection callbacks that can
|
|
@@ -432,15 +430,15 @@ int git_diff_driver_content_is_binary(
|
|
|
432
430
|
* let's just use the simple NUL-byte detection that core git uses.
|
|
433
431
|
*/
|
|
434
432
|
|
|
435
|
-
/* previously was: if (
|
|
436
|
-
if (
|
|
433
|
+
/* previously was: if (git_str_is_binary(&search)) */
|
|
434
|
+
if (git_str_contains_nul(&search))
|
|
437
435
|
return 1;
|
|
438
436
|
|
|
439
437
|
return 0;
|
|
440
438
|
}
|
|
441
439
|
|
|
442
440
|
static int diff_context_line__simple(
|
|
443
|
-
git_diff_driver *driver,
|
|
441
|
+
git_diff_driver *driver, git_str *line)
|
|
444
442
|
{
|
|
445
443
|
char firstch = line->ptr[0];
|
|
446
444
|
GIT_UNUSED(driver);
|
|
@@ -448,7 +446,7 @@ static int diff_context_line__simple(
|
|
|
448
446
|
}
|
|
449
447
|
|
|
450
448
|
static int diff_context_line__pattern_match(
|
|
451
|
-
git_diff_driver *driver,
|
|
449
|
+
git_diff_driver *driver, git_str *line)
|
|
452
450
|
{
|
|
453
451
|
size_t i, maxi = git_array_size(driver->fn_patterns);
|
|
454
452
|
git_regmatch pmatch[2];
|
|
@@ -462,9 +460,9 @@ static int diff_context_line__pattern_match(
|
|
|
462
460
|
|
|
463
461
|
/* use pmatch data to trim line data */
|
|
464
462
|
i = (pmatch[1].start >= 0) ? 1 : 0;
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
463
|
+
git_str_consume(line, git_str_cstr(line) + pmatch[i].start);
|
|
464
|
+
git_str_truncate(line, pmatch[i].end - pmatch[i].start);
|
|
465
|
+
git_str_rtrim(line);
|
|
468
466
|
|
|
469
467
|
return true;
|
|
470
468
|
}
|
|
@@ -482,9 +480,9 @@ static long diff_context_find(
|
|
|
482
480
|
{
|
|
483
481
|
git_diff_find_context_payload *ctxt = payload;
|
|
484
482
|
|
|
485
|
-
if (
|
|
483
|
+
if (git_str_set(&ctxt->line, line, (size_t)line_len) < 0)
|
|
486
484
|
return -1;
|
|
487
|
-
|
|
485
|
+
git_str_rtrim(&ctxt->line);
|
|
488
486
|
|
|
489
487
|
if (!ctxt->line.size)
|
|
490
488
|
return -1;
|
|
@@ -511,14 +509,14 @@ void git_diff_find_context_init(
|
|
|
511
509
|
payload_out->driver = driver;
|
|
512
510
|
payload_out->match_line = (driver->type == DIFF_DRIVER_PATTERNLIST) ?
|
|
513
511
|
diff_context_line__pattern_match : diff_context_line__simple;
|
|
514
|
-
|
|
512
|
+
git_str_init(&payload_out->line, 0);
|
|
515
513
|
}
|
|
516
514
|
}
|
|
517
515
|
|
|
518
516
|
void git_diff_find_context_clear(git_diff_find_context_payload *payload)
|
|
519
517
|
{
|
|
520
518
|
if (payload) {
|
|
521
|
-
|
|
519
|
+
git_str_dispose(&payload->line);
|
|
522
520
|
payload->driver = NULL;
|
|
523
521
|
}
|
|
524
522
|
}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
#include "common.h"
|
|
11
11
|
|
|
12
12
|
#include "attr_file.h"
|
|
13
|
-
#include "
|
|
13
|
+
#include "str.h"
|
|
14
14
|
|
|
15
15
|
typedef struct git_diff_driver_registry git_diff_driver_registry;
|
|
16
16
|
|
|
@@ -34,12 +34,12 @@ typedef long (*git_diff_find_context_fn)(
|
|
|
34
34
|
const char *, long, char *, long, void *);
|
|
35
35
|
|
|
36
36
|
typedef int (*git_diff_find_context_line)(
|
|
37
|
-
git_diff_driver *,
|
|
37
|
+
git_diff_driver *, git_str *);
|
|
38
38
|
|
|
39
39
|
typedef struct {
|
|
40
40
|
git_diff_driver *driver;
|
|
41
41
|
git_diff_find_context_line match_line;
|
|
42
|
-
|
|
42
|
+
git_str line;
|
|
43
43
|
} git_diff_find_context_payload;
|
|
44
44
|
|
|
45
45
|
void git_diff_find_context_init(
|
|
@@ -144,6 +144,7 @@ int git_diff_file_content__init_from_src(
|
|
|
144
144
|
|
|
145
145
|
if (!src->blob && !src->buf) {
|
|
146
146
|
fc->flags |= GIT_DIFF_FLAG__NO_DATA;
|
|
147
|
+
git_oid_clear(&fc->file->id, GIT_OID_SHA1);
|
|
147
148
|
} else {
|
|
148
149
|
fc->flags |= GIT_DIFF_FLAG__LOADED;
|
|
149
150
|
fc->file->flags |= GIT_DIFF_FLAG_VALID_ID;
|
|
@@ -153,7 +154,7 @@ int git_diff_file_content__init_from_src(
|
|
|
153
154
|
git_blob_dup((git_blob **)&fc->blob, (git_blob *) src->blob);
|
|
154
155
|
fc->file->size = git_blob_rawsize(src->blob);
|
|
155
156
|
git_oid_cpy(&fc->file->id, git_blob_id(src->blob));
|
|
156
|
-
fc->file->id_abbrev =
|
|
157
|
+
fc->file->id_abbrev = GIT_OID_SHA1_HEXSIZE;
|
|
157
158
|
|
|
158
159
|
fc->map.len = (size_t)fc->file->size;
|
|
159
160
|
fc->map.data = (char *)git_blob_rawcontent(src->blob);
|
|
@@ -161,10 +162,10 @@ int git_diff_file_content__init_from_src(
|
|
|
161
162
|
fc->flags |= GIT_DIFF_FLAG__FREE_BLOB;
|
|
162
163
|
} else {
|
|
163
164
|
int error;
|
|
164
|
-
if ((error =
|
|
165
|
+
if ((error = git_odb__hash(&fc->file->id, src->buf, src->buflen, GIT_OBJECT_BLOB, GIT_OID_SHA1)) < 0)
|
|
165
166
|
return error;
|
|
166
167
|
fc->file->size = src->buflen;
|
|
167
|
-
fc->file->id_abbrev =
|
|
168
|
+
fc->file->id_abbrev = GIT_OID_SHA1_HEXSIZE;
|
|
168
169
|
|
|
169
170
|
fc->map.len = src->buflen;
|
|
170
171
|
fc->map.data = (char *)src->buf;
|
|
@@ -177,8 +178,8 @@ int git_diff_file_content__init_from_src(
|
|
|
177
178
|
static int diff_file_content_commit_to_str(
|
|
178
179
|
git_diff_file_content *fc, bool check_status)
|
|
179
180
|
{
|
|
180
|
-
char oid[
|
|
181
|
-
|
|
181
|
+
char oid[GIT_OID_SHA1_HEXSIZE+1];
|
|
182
|
+
git_str content = GIT_STR_INIT;
|
|
182
183
|
const char *status = "";
|
|
183
184
|
|
|
184
185
|
if (check_status) {
|
|
@@ -217,11 +218,11 @@ static int diff_file_content_commit_to_str(
|
|
|
217
218
|
}
|
|
218
219
|
|
|
219
220
|
git_oid_tostr(oid, sizeof(oid), &fc->file->id);
|
|
220
|
-
if (
|
|
221
|
+
if (git_str_printf(&content, "Subproject commit %s%s\n", oid, status) < 0)
|
|
221
222
|
return -1;
|
|
222
223
|
|
|
223
|
-
fc->map.len =
|
|
224
|
-
fc->map.data =
|
|
224
|
+
fc->map.len = git_str_len(&content);
|
|
225
|
+
fc->map.data = git_str_detach(&content);
|
|
225
226
|
fc->flags |= GIT_DIFF_FLAG__FREE_DATA;
|
|
226
227
|
|
|
227
228
|
return 0;
|
|
@@ -270,24 +271,24 @@ static int diff_file_content_load_blob(
|
|
|
270
271
|
}
|
|
271
272
|
|
|
272
273
|
static int diff_file_content_load_workdir_symlink_fake(
|
|
273
|
-
git_diff_file_content *fc,
|
|
274
|
+
git_diff_file_content *fc, git_str *path)
|
|
274
275
|
{
|
|
275
|
-
|
|
276
|
+
git_str target = GIT_STR_INIT;
|
|
276
277
|
int error;
|
|
277
278
|
|
|
278
279
|
if ((error = git_futils_readbuffer(&target, path->ptr)) < 0)
|
|
279
280
|
return error;
|
|
280
281
|
|
|
281
|
-
fc->map.len =
|
|
282
|
-
fc->map.data =
|
|
282
|
+
fc->map.len = git_str_len(&target);
|
|
283
|
+
fc->map.data = git_str_detach(&target);
|
|
283
284
|
fc->flags |= GIT_DIFF_FLAG__FREE_DATA;
|
|
284
285
|
|
|
285
|
-
|
|
286
|
+
git_str_dispose(&target);
|
|
286
287
|
return error;
|
|
287
288
|
}
|
|
288
289
|
|
|
289
290
|
static int diff_file_content_load_workdir_symlink(
|
|
290
|
-
git_diff_file_content *fc,
|
|
291
|
+
git_diff_file_content *fc, git_str *path)
|
|
291
292
|
{
|
|
292
293
|
ssize_t alloc_len, read_len;
|
|
293
294
|
int symlink_supported, error;
|
|
@@ -309,7 +310,7 @@ static int diff_file_content_load_workdir_symlink(
|
|
|
309
310
|
|
|
310
311
|
fc->flags |= GIT_DIFF_FLAG__FREE_DATA;
|
|
311
312
|
|
|
312
|
-
read_len = p_readlink(
|
|
313
|
+
read_len = p_readlink(git_str_cstr(path), fc->map.data, alloc_len);
|
|
313
314
|
if (read_len < 0) {
|
|
314
315
|
git_error_set(GIT_ERROR_OS, "failed to read symlink '%s'", fc->file->path);
|
|
315
316
|
return -1;
|
|
@@ -321,23 +322,39 @@ static int diff_file_content_load_workdir_symlink(
|
|
|
321
322
|
|
|
322
323
|
static int diff_file_content_load_workdir_file(
|
|
323
324
|
git_diff_file_content *fc,
|
|
324
|
-
|
|
325
|
+
git_str *path,
|
|
325
326
|
git_diff_options *diff_opts)
|
|
326
327
|
{
|
|
327
328
|
int error = 0;
|
|
328
329
|
git_filter_list *fl = NULL;
|
|
329
|
-
git_file fd = git_futils_open_ro(
|
|
330
|
-
|
|
330
|
+
git_file fd = git_futils_open_ro(git_str_cstr(path));
|
|
331
|
+
git_str raw = GIT_STR_INIT;
|
|
332
|
+
git_object_size_t new_file_size = 0;
|
|
331
333
|
|
|
332
334
|
if (fd < 0)
|
|
333
335
|
return fd;
|
|
334
336
|
|
|
335
|
-
|
|
336
|
-
error = git_futils_filesize(&fc->file->size, fd);
|
|
337
|
+
error = git_futils_filesize(&new_file_size, fd);
|
|
337
338
|
|
|
338
|
-
if (error < 0
|
|
339
|
+
if (error < 0)
|
|
339
340
|
goto cleanup;
|
|
340
341
|
|
|
342
|
+
if (!(fc->file->flags & GIT_DIFF_FLAG_VALID_SIZE)) {
|
|
343
|
+
fc->file->size = new_file_size;
|
|
344
|
+
fc->file->flags |= GIT_DIFF_FLAG_VALID_SIZE;
|
|
345
|
+
} else if (fc->file->size != new_file_size) {
|
|
346
|
+
git_error_set(GIT_ERROR_FILESYSTEM, "file changed before we could read it");
|
|
347
|
+
error = -1;
|
|
348
|
+
goto cleanup;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
/* if file is empty, don't attempt to mmap or readbuffer */
|
|
352
|
+
if (fc->file->size == 0) {
|
|
353
|
+
fc->map.len = 0;
|
|
354
|
+
fc->map.data = git_str__initstr;
|
|
355
|
+
goto cleanup;
|
|
356
|
+
}
|
|
357
|
+
|
|
341
358
|
if ((diff_opts->flags & GIT_DIFF_SHOW_BINARY) == 0 &&
|
|
342
359
|
diff_file_content_binary_by_size(fc))
|
|
343
360
|
goto cleanup;
|
|
@@ -360,7 +377,7 @@ static int diff_file_content_load_workdir_file(
|
|
|
360
377
|
}
|
|
361
378
|
|
|
362
379
|
if (!(error = git_futils_readbuffer_fd(&raw, fd, (size_t)fc->file->size))) {
|
|
363
|
-
|
|
380
|
+
git_str out = GIT_STR_INIT;
|
|
364
381
|
|
|
365
382
|
error = git_filter_list__convert_buf(&out, fl, &raw);
|
|
366
383
|
|
|
@@ -383,7 +400,7 @@ static int diff_file_content_load_workdir(
|
|
|
383
400
|
git_diff_options *diff_opts)
|
|
384
401
|
{
|
|
385
402
|
int error = 0;
|
|
386
|
-
|
|
403
|
+
git_str path = GIT_STR_INIT;
|
|
387
404
|
|
|
388
405
|
if (fc->file->mode == GIT_FILEMODE_COMMIT)
|
|
389
406
|
return diff_file_content_commit_to_str(fc, true);
|
|
@@ -401,12 +418,13 @@ static int diff_file_content_load_workdir(
|
|
|
401
418
|
|
|
402
419
|
/* once data is loaded, update OID if we didn't have it previously */
|
|
403
420
|
if (!error && (fc->file->flags & GIT_DIFF_FLAG_VALID_ID) == 0) {
|
|
404
|
-
error =
|
|
405
|
-
&fc->file->id, fc->map.data, fc->map.len,
|
|
421
|
+
error = git_odb__hash(
|
|
422
|
+
&fc->file->id, fc->map.data, fc->map.len,
|
|
423
|
+
GIT_OBJECT_BLOB, GIT_OID_SHA1);
|
|
406
424
|
fc->file->flags |= GIT_DIFF_FLAG_VALID_ID;
|
|
407
425
|
}
|
|
408
426
|
|
|
409
|
-
|
|
427
|
+
git_str_dispose(&path);
|
|
410
428
|
return error;
|
|
411
429
|
}
|
|
412
430
|
|
|
@@ -61,6 +61,9 @@ static git_diff_delta *diff_delta__alloc(
|
|
|
61
61
|
}
|
|
62
62
|
delta->status = status;
|
|
63
63
|
|
|
64
|
+
git_oid_clear(&delta->old_file.id, GIT_OID_SHA1);
|
|
65
|
+
git_oid_clear(&delta->new_file.id, GIT_OID_SHA1);
|
|
66
|
+
|
|
64
67
|
return delta;
|
|
65
68
|
}
|
|
66
69
|
|
|
@@ -117,6 +120,26 @@ static bool diff_pathspec_match(
|
|
|
117
120
|
matched_pathspec, NULL);
|
|
118
121
|
}
|
|
119
122
|
|
|
123
|
+
static void diff_delta__flag_known_size(git_diff_file *file)
|
|
124
|
+
{
|
|
125
|
+
/*
|
|
126
|
+
* If we don't know the ID, that can only come from the workdir
|
|
127
|
+
* iterator, which means we *do* know the file size. This is a
|
|
128
|
+
* leaky abstraction, but alas. Otherwise, we test against the
|
|
129
|
+
* empty blob id.
|
|
130
|
+
*/
|
|
131
|
+
if (file->size ||
|
|
132
|
+
!(file->flags & GIT_DIFF_FLAG_VALID_ID) ||
|
|
133
|
+
git_oid_equal(&file->id, &git_oid__empty_blob_sha1))
|
|
134
|
+
file->flags |= GIT_DIFF_FLAG_VALID_SIZE;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
static void diff_delta__flag_known_sizes(git_diff_delta *delta)
|
|
138
|
+
{
|
|
139
|
+
diff_delta__flag_known_size(&delta->old_file);
|
|
140
|
+
diff_delta__flag_known_size(&delta->new_file);
|
|
141
|
+
}
|
|
142
|
+
|
|
120
143
|
static int diff_delta__from_one(
|
|
121
144
|
git_diff_generated *diff,
|
|
122
145
|
git_delta_t status,
|
|
@@ -168,13 +191,15 @@ static int diff_delta__from_one(
|
|
|
168
191
|
delta->old_file.size = entry->file_size;
|
|
169
192
|
delta->old_file.flags |= GIT_DIFF_FLAG_EXISTS;
|
|
170
193
|
git_oid_cpy(&delta->old_file.id, &entry->id);
|
|
171
|
-
delta->
|
|
194
|
+
git_oid_clear(&delta->new_file.id, GIT_OID_SHA1);
|
|
195
|
+
delta->old_file.id_abbrev = GIT_OID_SHA1_HEXSIZE;
|
|
172
196
|
} else /* ADDED, IGNORED, UNTRACKED */ {
|
|
173
197
|
delta->new_file.mode = entry->mode;
|
|
174
198
|
delta->new_file.size = entry->file_size;
|
|
175
199
|
delta->new_file.flags |= GIT_DIFF_FLAG_EXISTS;
|
|
200
|
+
git_oid_clear(&delta->old_file.id, GIT_OID_SHA1);
|
|
176
201
|
git_oid_cpy(&delta->new_file.id, &entry->id);
|
|
177
|
-
delta->new_file.id_abbrev =
|
|
202
|
+
delta->new_file.id_abbrev = GIT_OID_SHA1_HEXSIZE;
|
|
178
203
|
}
|
|
179
204
|
|
|
180
205
|
delta->old_file.flags |= GIT_DIFF_FLAG_VALID_ID;
|
|
@@ -182,6 +207,8 @@ static int diff_delta__from_one(
|
|
|
182
207
|
if (has_old || !git_oid_is_zero(&delta->new_file.id))
|
|
183
208
|
delta->new_file.flags |= GIT_DIFF_FLAG_VALID_ID;
|
|
184
209
|
|
|
210
|
+
diff_delta__flag_known_sizes(delta);
|
|
211
|
+
|
|
185
212
|
return diff_insert_delta(diff, delta, matched_pathspec);
|
|
186
213
|
}
|
|
187
214
|
|
|
@@ -227,14 +254,14 @@ static int diff_delta__from_two(
|
|
|
227
254
|
delta->old_file.size = old_entry->file_size;
|
|
228
255
|
delta->old_file.mode = old_mode;
|
|
229
256
|
git_oid_cpy(&delta->old_file.id, old_id);
|
|
230
|
-
delta->old_file.id_abbrev =
|
|
257
|
+
delta->old_file.id_abbrev = GIT_OID_SHA1_HEXSIZE;
|
|
231
258
|
delta->old_file.flags |= GIT_DIFF_FLAG_VALID_ID |
|
|
232
259
|
GIT_DIFF_FLAG_EXISTS;
|
|
233
260
|
}
|
|
234
261
|
|
|
235
262
|
if (!git_index_entry_is_conflict(new_entry)) {
|
|
236
263
|
git_oid_cpy(&delta->new_file.id, new_id);
|
|
237
|
-
delta->new_file.id_abbrev =
|
|
264
|
+
delta->new_file.id_abbrev = GIT_OID_SHA1_HEXSIZE;
|
|
238
265
|
delta->new_file.size = new_entry->file_size;
|
|
239
266
|
delta->new_file.mode = new_mode;
|
|
240
267
|
delta->old_file.flags |= GIT_DIFF_FLAG_EXISTS;
|
|
@@ -244,6 +271,8 @@ static int diff_delta__from_two(
|
|
|
244
271
|
delta->new_file.flags |= GIT_DIFF_FLAG_VALID_ID;
|
|
245
272
|
}
|
|
246
273
|
|
|
274
|
+
diff_delta__flag_known_sizes(delta);
|
|
275
|
+
|
|
247
276
|
return diff_insert_delta(diff, delta, matched_pathspec);
|
|
248
277
|
}
|
|
249
278
|
|
|
@@ -574,6 +603,7 @@ int git_diff__oid_for_file(
|
|
|
574
603
|
entry.mode = mode;
|
|
575
604
|
entry.file_size = (uint32_t)size;
|
|
576
605
|
entry.path = (char *)path;
|
|
606
|
+
git_oid_clear(&entry.id, GIT_OID_SHA1);
|
|
577
607
|
|
|
578
608
|
return git_diff__oid_for_entry(out, diff, &entry, mode, NULL);
|
|
579
609
|
}
|
|
@@ -586,7 +616,7 @@ int git_diff__oid_for_entry(
|
|
|
586
616
|
const git_oid *update_match)
|
|
587
617
|
{
|
|
588
618
|
git_diff_generated *diff;
|
|
589
|
-
|
|
619
|
+
git_str full_path = GIT_STR_INIT;
|
|
590
620
|
git_index_entry entry = *src;
|
|
591
621
|
git_filter_list *fl = NULL;
|
|
592
622
|
int error = 0;
|
|
@@ -594,7 +624,7 @@ int git_diff__oid_for_entry(
|
|
|
594
624
|
GIT_ASSERT(d->type == GIT_DIFF_TYPE_GENERATED);
|
|
595
625
|
diff = (git_diff_generated *)d;
|
|
596
626
|
|
|
597
|
-
|
|
627
|
+
git_oid_clear(out, GIT_OID_SHA1);
|
|
598
628
|
|
|
599
629
|
if (git_repository_workdir_path(&full_path, diff->base.repo, entry.path) < 0)
|
|
600
630
|
return -1;
|
|
@@ -605,8 +635,8 @@ int git_diff__oid_for_entry(
|
|
|
605
635
|
diff->base.perf.stat_calls++;
|
|
606
636
|
|
|
607
637
|
if (p_stat(full_path.ptr, &st) < 0) {
|
|
608
|
-
error =
|
|
609
|
-
|
|
638
|
+
error = git_fs_path_set_error(errno, entry.path, "stat");
|
|
639
|
+
git_str_dispose(&full_path);
|
|
610
640
|
return error;
|
|
611
641
|
}
|
|
612
642
|
|
|
@@ -630,7 +660,7 @@ int git_diff__oid_for_entry(
|
|
|
630
660
|
git_error_clear();
|
|
631
661
|
}
|
|
632
662
|
} else if (S_ISLNK(mode)) {
|
|
633
|
-
error = git_odb__hashlink(out, full_path.ptr);
|
|
663
|
+
error = git_odb__hashlink(out, full_path.ptr, GIT_OID_SHA1);
|
|
634
664
|
diff->base.perf.oid_calculations++;
|
|
635
665
|
} else if (!git__is_sizet(entry.file_size)) {
|
|
636
666
|
git_error_set(GIT_ERROR_NOMEMORY, "file size overflow (for 32-bits) on '%s'",
|
|
@@ -645,7 +675,8 @@ int git_diff__oid_for_entry(
|
|
|
645
675
|
error = fd;
|
|
646
676
|
else {
|
|
647
677
|
error = git_odb__hashfd_filtered(
|
|
648
|
-
out, fd, (size_t)entry.file_size,
|
|
678
|
+
out, fd, (size_t)entry.file_size,
|
|
679
|
+
GIT_OBJECT_BLOB, GIT_OID_SHA1, fl);
|
|
649
680
|
p_close(fd);
|
|
650
681
|
diff->base.perf.oid_calculations++;
|
|
651
682
|
}
|
|
@@ -669,7 +700,7 @@ int git_diff__oid_for_entry(
|
|
|
669
700
|
}
|
|
670
701
|
}
|
|
671
702
|
|
|
672
|
-
|
|
703
|
+
git_str_dispose(&full_path);
|
|
673
704
|
return error;
|
|
674
705
|
}
|
|
675
706
|
|
|
@@ -754,7 +785,7 @@ static int maybe_modified(
|
|
|
754
785
|
git_diff_generated *diff,
|
|
755
786
|
diff_in_progress *info)
|
|
756
787
|
{
|
|
757
|
-
git_oid noid;
|
|
788
|
+
git_oid noid = GIT_OID_SHA1_ZERO;
|
|
758
789
|
git_delta_t status = GIT_DELTA_MODIFIED;
|
|
759
790
|
const git_index_entry *oitem = info->oitem;
|
|
760
791
|
const git_index_entry *nitem = info->nitem;
|
|
@@ -768,8 +799,6 @@ static int maybe_modified(
|
|
|
768
799
|
if (!diff_pathspec_match(&matched_pathspec, diff, oitem))
|
|
769
800
|
return 0;
|
|
770
801
|
|
|
771
|
-
memset(&noid, 0, sizeof(noid));
|
|
772
|
-
|
|
773
802
|
/* on platforms with no symlinks, preserve mode of existing symlinks */
|
|
774
803
|
if (S_ISLNK(omode) && S_ISREG(nmode) && new_is_workdir &&
|
|
775
804
|
!(diff->diffcaps & GIT_DIFFCAPS_HAS_SYMLINKS))
|
|
@@ -1023,10 +1052,10 @@ static int handle_unmatched_new_item(
|
|
|
1023
1052
|
|
|
1024
1053
|
/* do not advance into directories that contain a .git file */
|
|
1025
1054
|
if (recurse_into_dir && !contains_oitem) {
|
|
1026
|
-
|
|
1055
|
+
git_str *full = NULL;
|
|
1027
1056
|
if (git_iterator_current_workdir_path(&full, info->new_iter) < 0)
|
|
1028
1057
|
return -1;
|
|
1029
|
-
if (full &&
|
|
1058
|
+
if (full && git_fs_path_contains(full, DOT_GIT)) {
|
|
1030
1059
|
/* TODO: warning if not a valid git repository */
|
|
1031
1060
|
recurse_into_dir = false;
|
|
1032
1061
|
}
|
|
@@ -1671,11 +1700,11 @@ int git_diff__commit(
|
|
|
1671
1700
|
*out = NULL;
|
|
1672
1701
|
|
|
1673
1702
|
if ((parents = git_commit_parentcount(commit)) > 1) {
|
|
1674
|
-
char commit_oidstr[
|
|
1703
|
+
char commit_oidstr[GIT_OID_SHA1_HEXSIZE + 1];
|
|
1675
1704
|
|
|
1676
1705
|
error = -1;
|
|
1677
1706
|
git_error_set(GIT_ERROR_INVALID, "commit %s is a merge commit",
|
|
1678
|
-
git_oid_tostr(commit_oidstr,
|
|
1707
|
+
git_oid_tostr(commit_oidstr, GIT_OID_SHA1_HEXSIZE + 1, git_commit_id(commit)));
|
|
1679
1708
|
goto on_error;
|
|
1680
1709
|
}
|
|
1681
1710
|
|
|
@@ -18,7 +18,7 @@ enum {
|
|
|
18
18
|
GIT_DIFFCAPS_IGNORE_STAT = (1 << 1), /* use stat? */
|
|
19
19
|
GIT_DIFFCAPS_TRUST_MODE_BITS = (1 << 2), /* use st_mode? */
|
|
20
20
|
GIT_DIFFCAPS_TRUST_CTIME = (1 << 3), /* use st_ctime? */
|
|
21
|
-
GIT_DIFFCAPS_USE_DEV = (1 << 4)
|
|
21
|
+
GIT_DIFFCAPS_USE_DEV = (1 << 4) /* use st_dev? */
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
#define DIFF_FLAGS_KNOWN_BINARY (GIT_DIFF_FLAG_BINARY|GIT_DIFF_FLAG_NOT_BINARY)
|
|
@@ -36,7 +36,7 @@ enum {
|
|
|
36
36
|
GIT_DIFF_FLAG__TO_SPLIT = (1 << 17), /* split entry during rename det. */
|
|
37
37
|
GIT_DIFF_FLAG__IS_RENAME_TARGET = (1 << 18),
|
|
38
38
|
GIT_DIFF_FLAG__IS_RENAME_SOURCE = (1 << 19),
|
|
39
|
-
GIT_DIFF_FLAG__HAS_SELF_SIMILARITY = (1 << 20)
|
|
39
|
+
GIT_DIFF_FLAG__HAS_SELF_SIMILARITY = (1 << 20)
|
|
40
40
|
};
|
|
41
41
|
|
|
42
42
|
#define GIT_DIFF_FLAG__CLEAR_INTERNAL(F) (F) = ((F) & 0x00FFFF)
|
|
@@ -119,8 +119,10 @@ GIT_INLINE(int) git_diff_file__resolve_zero_size(
|
|
|
119
119
|
|
|
120
120
|
git_odb_free(odb);
|
|
121
121
|
|
|
122
|
-
if (!error)
|
|
122
|
+
if (!error) {
|
|
123
123
|
file->size = (git_object_size_t)len;
|
|
124
|
+
file->flags |= GIT_DIFF_FLAG_VALID_SIZE;
|
|
125
|
+
}
|
|
124
126
|
|
|
125
127
|
return error;
|
|
126
128
|
}
|