rugged 1.3.1 → 1.6.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +34 -2
- data/ext/rugged/extconf.rb +6 -3
- 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 +38 -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 +18 -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} +107 -71
- 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} +54 -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} +690 -366
- data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +21 -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} +580 -615
- data/vendor/libgit2/src/{path.h → util/fs_path.h} +234 -181
- 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
@@ -20,6 +20,7 @@
|
|
20
20
|
#include "idxmap.h"
|
21
21
|
#include "diff.h"
|
22
22
|
#include "varint.h"
|
23
|
+
#include "path.h"
|
23
24
|
|
24
25
|
#include "git2/odb.h"
|
25
26
|
#include "git2/oid.h"
|
@@ -33,7 +34,6 @@ static int index_apply_to_wd_diff(git_index *index, int action, const git_strarr
|
|
33
34
|
|
34
35
|
#define minimal_entry_size (offsetof(struct entry_short, path))
|
35
36
|
|
36
|
-
static const size_t INDEX_FOOTER_SIZE = GIT_OID_RAWSZ;
|
37
37
|
static const size_t INDEX_HEADER_SIZE = 12;
|
38
38
|
|
39
39
|
static const unsigned int INDEX_VERSION_NUMBER_DEFAULT = 2;
|
@@ -74,7 +74,7 @@ struct entry_short {
|
|
74
74
|
uint32_t uid;
|
75
75
|
uint32_t gid;
|
76
76
|
uint32_t file_size;
|
77
|
-
|
77
|
+
unsigned char oid[GIT_OID_SHA1_SIZE];
|
78
78
|
uint16_t flags;
|
79
79
|
char path[1]; /* arbitrary length */
|
80
80
|
};
|
@@ -88,7 +88,7 @@ struct entry_long {
|
|
88
88
|
uint32_t uid;
|
89
89
|
uint32_t gid;
|
90
90
|
uint32_t file_size;
|
91
|
-
|
91
|
+
unsigned char oid[GIT_OID_SHA1_SIZE];
|
92
92
|
uint16_t flags;
|
93
93
|
uint16_t flags_extended;
|
94
94
|
char path[1]; /* arbitrary length */
|
@@ -120,7 +120,7 @@ static int read_header(struct index_header *dest, const void *buffer);
|
|
120
120
|
|
121
121
|
static int parse_index(git_index *index, const char *buffer, size_t buffer_size);
|
122
122
|
static bool is_index_extended(git_index *index);
|
123
|
-
static int write_index(
|
123
|
+
static int write_index(unsigned char checksum[GIT_HASH_SHA1_SIZE], size_t *checksum_size, git_index *index, git_filebuf *file);
|
124
124
|
|
125
125
|
static void index_entry_free(git_index_entry *entry);
|
126
126
|
static void index_entry_reuc_free(git_index_reuc_entry *reuc);
|
@@ -420,7 +420,7 @@ int git_index_open(git_index **index_out, const char *index_path)
|
|
420
420
|
goto fail;
|
421
421
|
|
422
422
|
/* Check if index file is stored on disk already */
|
423
|
-
if (
|
423
|
+
if (git_fs_path_exists(index->index_file_path) == true)
|
424
424
|
index->on_disk = 1;
|
425
425
|
}
|
426
426
|
|
@@ -606,10 +606,12 @@ int git_index_caps(const git_index *index)
|
|
606
606
|
(index->no_symlinks ? GIT_INDEX_CAPABILITY_NO_SYMLINKS : 0));
|
607
607
|
}
|
608
608
|
|
609
|
+
#ifndef GIT_DEPRECATE_HARD
|
609
610
|
const git_oid *git_index_checksum(git_index *index)
|
610
611
|
{
|
611
|
-
return
|
612
|
+
return (git_oid *)index->checksum;
|
612
613
|
}
|
614
|
+
#endif
|
613
615
|
|
614
616
|
/**
|
615
617
|
* Returns 1 for changed, 0 for not changed and <0 for errors
|
@@ -618,37 +620,38 @@ static int compare_checksum(git_index *index)
|
|
618
620
|
{
|
619
621
|
int fd;
|
620
622
|
ssize_t bytes_read;
|
621
|
-
|
623
|
+
unsigned char checksum[GIT_HASH_SHA1_SIZE];
|
624
|
+
size_t checksum_size = GIT_HASH_SHA1_SIZE;
|
622
625
|
|
623
626
|
if ((fd = p_open(index->index_file_path, O_RDONLY)) < 0)
|
624
627
|
return fd;
|
625
628
|
|
626
|
-
if (p_lseek(fd, -
|
629
|
+
if (p_lseek(fd, (0 - (ssize_t)checksum_size), SEEK_END) < 0) {
|
627
630
|
p_close(fd);
|
628
631
|
git_error_set(GIT_ERROR_OS, "failed to seek to end of file");
|
629
632
|
return -1;
|
630
633
|
}
|
631
634
|
|
632
|
-
bytes_read = p_read(fd,
|
635
|
+
bytes_read = p_read(fd, checksum, checksum_size);
|
633
636
|
p_close(fd);
|
634
637
|
|
635
|
-
if (bytes_read <
|
638
|
+
if (bytes_read < (ssize_t)checksum_size)
|
636
639
|
return -1;
|
637
640
|
|
638
|
-
return !!
|
641
|
+
return !!memcmp(checksum, index->checksum, checksum_size);
|
639
642
|
}
|
640
643
|
|
641
644
|
int git_index_read(git_index *index, int force)
|
642
645
|
{
|
643
646
|
int error = 0, updated;
|
644
|
-
|
647
|
+
git_str buffer = GIT_STR_INIT;
|
645
648
|
git_futils_filestamp stamp = index->stamp;
|
646
649
|
|
647
650
|
if (!index->index_file_path)
|
648
651
|
return create_index_error(-1,
|
649
652
|
"failed to read index: The index is in-memory only");
|
650
653
|
|
651
|
-
index->on_disk =
|
654
|
+
index->on_disk = git_fs_path_exists(index->index_file_path);
|
652
655
|
|
653
656
|
if (!index->on_disk) {
|
654
657
|
if (force && (error = git_index_clear(index)) < 0)
|
@@ -687,7 +690,7 @@ int git_index_read(git_index *index, int force)
|
|
687
690
|
index->dirty = 0;
|
688
691
|
}
|
689
692
|
|
690
|
-
|
693
|
+
git_str_dispose(&buffer);
|
691
694
|
return error;
|
692
695
|
}
|
693
696
|
|
@@ -702,16 +705,6 @@ int git_index_read_safely(git_index *index)
|
|
702
705
|
return git_index_read(index, false);
|
703
706
|
}
|
704
707
|
|
705
|
-
int git_index__changed_relative_to(
|
706
|
-
git_index *index, const git_oid *checksum)
|
707
|
-
{
|
708
|
-
/* attempt to update index (ignoring errors) */
|
709
|
-
if (git_index_read(index, false) < 0)
|
710
|
-
git_error_clear();
|
711
|
-
|
712
|
-
return !!git_oid_cmp(&index->checksum, checksum);
|
713
|
-
}
|
714
|
-
|
715
708
|
static bool is_racy_entry(git_index *index, const git_index_entry *entry)
|
716
709
|
{
|
717
710
|
/* Git special-cases submodules in the check */
|
@@ -944,7 +937,7 @@ static int index_entry_create(
|
|
944
937
|
if (st)
|
945
938
|
mode = st->st_mode;
|
946
939
|
|
947
|
-
if (!
|
940
|
+
if (!git_path_is_valid(repo, path, mode, path_valid_flags)) {
|
948
941
|
git_error_set(GIT_ERROR_INDEX, "invalid path: '%s'", path);
|
949
942
|
return -1;
|
950
943
|
}
|
@@ -969,7 +962,7 @@ static int index_entry_init(
|
|
969
962
|
{
|
970
963
|
int error = 0;
|
971
964
|
git_index_entry *entry = NULL;
|
972
|
-
|
965
|
+
git_str path = GIT_STR_INIT;
|
973
966
|
struct stat st;
|
974
967
|
git_oid oid;
|
975
968
|
git_repository *repo;
|
@@ -991,8 +984,8 @@ static int index_entry_init(
|
|
991
984
|
if (git_repository_workdir_path(&path, repo, rel_path) < 0)
|
992
985
|
return -1;
|
993
986
|
|
994
|
-
error =
|
995
|
-
|
987
|
+
error = git_fs_path_lstat(path.ptr, &st);
|
988
|
+
git_str_dispose(&path);
|
996
989
|
|
997
990
|
if (error < 0)
|
998
991
|
return error;
|
@@ -1525,7 +1518,7 @@ int git_index_add_from_buffer(
|
|
1525
1518
|
static int add_repo_as_submodule(git_index_entry **out, git_index *index, const char *path)
|
1526
1519
|
{
|
1527
1520
|
git_repository *sub;
|
1528
|
-
|
1521
|
+
git_str abspath = GIT_STR_INIT;
|
1529
1522
|
git_repository *repo = INDEX_OWNER(index);
|
1530
1523
|
git_reference *head;
|
1531
1524
|
git_index_entry *entry;
|
@@ -1556,7 +1549,7 @@ static int add_repo_as_submodule(git_index_entry **out, git_index *index, const
|
|
1556
1549
|
|
1557
1550
|
git_reference_free(head);
|
1558
1551
|
git_repository_free(sub);
|
1559
|
-
|
1552
|
+
git_str_dispose(&abspath);
|
1560
1553
|
|
1561
1554
|
*out = entry;
|
1562
1555
|
return 0;
|
@@ -1722,13 +1715,13 @@ int git_index_remove(git_index *index, const char *path, int stage)
|
|
1722
1715
|
|
1723
1716
|
int git_index_remove_directory(git_index *index, const char *dir, int stage)
|
1724
1717
|
{
|
1725
|
-
|
1718
|
+
git_str pfx = GIT_STR_INIT;
|
1726
1719
|
int error = 0;
|
1727
1720
|
size_t pos;
|
1728
1721
|
git_index_entry *entry;
|
1729
1722
|
|
1730
|
-
if (!(error =
|
1731
|
-
!(error =
|
1723
|
+
if (!(error = git_str_sets(&pfx, dir)) &&
|
1724
|
+
!(error = git_fs_path_to_dir(&pfx)))
|
1732
1725
|
index_find(&pos, index, pfx.ptr, pfx.size, GIT_INDEX_STAGE_ANY);
|
1733
1726
|
|
1734
1727
|
while (!error) {
|
@@ -1746,7 +1739,7 @@ int git_index_remove_directory(git_index *index, const char *dir, int stage)
|
|
1746
1739
|
/* removed entry at 'pos' so we don't need to increment */
|
1747
1740
|
}
|
1748
1741
|
|
1749
|
-
|
1742
|
+
git_str_dispose(&pfx);
|
1750
1743
|
|
1751
1744
|
return error;
|
1752
1745
|
}
|
@@ -2361,14 +2354,16 @@ static int read_reuc(git_index *index, const char *buffer, size_t size)
|
|
2361
2354
|
for (i = 0; i < 3; i++) {
|
2362
2355
|
if (!lost->mode[i])
|
2363
2356
|
continue;
|
2364
|
-
if (size <
|
2357
|
+
if (size < GIT_OID_SHA1_SIZE) {
|
2365
2358
|
index_entry_reuc_free(lost);
|
2366
2359
|
return index_error_invalid("reading reuc entry oid");
|
2367
2360
|
}
|
2368
2361
|
|
2369
|
-
|
2370
|
-
|
2371
|
-
|
2362
|
+
if (git_oid__fromraw(&lost->oid[i], (const unsigned char *) buffer, GIT_OID_SHA1) < 0)
|
2363
|
+
return -1;
|
2364
|
+
|
2365
|
+
size -= GIT_OID_SHA1_SIZE;
|
2366
|
+
buffer += GIT_OID_SHA1_SIZE;
|
2372
2367
|
}
|
2373
2368
|
|
2374
2369
|
/* entry was read successfully - insert into reuc vector */
|
@@ -2469,8 +2464,9 @@ static int read_entry(
|
|
2469
2464
|
git_index_entry entry = {{0}};
|
2470
2465
|
bool compressed = index->version >= INDEX_VERSION_NUMBER_COMP;
|
2471
2466
|
char *tmp_path = NULL;
|
2467
|
+
size_t checksum_size = GIT_HASH_SHA1_SIZE;
|
2472
2468
|
|
2473
|
-
if (
|
2469
|
+
if (checksum_size + minimal_entry_size > buffer_size)
|
2474
2470
|
return -1;
|
2475
2471
|
|
2476
2472
|
/* buffer is not guaranteed to be aligned */
|
@@ -2486,9 +2482,11 @@ static int read_entry(
|
|
2486
2482
|
entry.uid = ntohl(source.uid);
|
2487
2483
|
entry.gid = ntohl(source.gid);
|
2488
2484
|
entry.file_size = ntohl(source.file_size);
|
2489
|
-
git_oid_cpy(&entry.id, &source.oid);
|
2490
2485
|
entry.flags = ntohs(source.flags);
|
2491
2486
|
|
2487
|
+
if (git_oid__fromraw(&entry.id, source.oid, GIT_OID_SHA1) < 0)
|
2488
|
+
return -1;
|
2489
|
+
|
2492
2490
|
if (entry.flags & GIT_INDEX_ENTRY_EXTENDED) {
|
2493
2491
|
uint16_t flags_raw;
|
2494
2492
|
size_t flags_offset;
|
@@ -2551,7 +2549,7 @@ static int read_entry(
|
|
2551
2549
|
if (entry_size == 0)
|
2552
2550
|
return -1;
|
2553
2551
|
|
2554
|
-
if (
|
2552
|
+
if (checksum_size + entry_size > buffer_size)
|
2555
2553
|
return -1;
|
2556
2554
|
|
2557
2555
|
if (index_entry_dup(out, index, &entry) < 0) {
|
@@ -2585,6 +2583,7 @@ static int read_extension(size_t *read_len, git_index *index, const char *buffer
|
|
2585
2583
|
{
|
2586
2584
|
struct index_extension dest;
|
2587
2585
|
size_t total_size;
|
2586
|
+
size_t checksum_size = GIT_HASH_SHA1_SIZE;
|
2588
2587
|
|
2589
2588
|
/* buffer is not guaranteed to be aligned */
|
2590
2589
|
memcpy(&dest, buffer, sizeof(struct index_extension));
|
@@ -2594,7 +2593,7 @@ static int read_extension(size_t *read_len, git_index *index, const char *buffer
|
|
2594
2593
|
|
2595
2594
|
if (dest.extension_size > total_size ||
|
2596
2595
|
buffer_size < total_size ||
|
2597
|
-
buffer_size - total_size <
|
2596
|
+
buffer_size - total_size < checksum_size) {
|
2598
2597
|
index_error_invalid("extension is truncated");
|
2599
2598
|
return -1;
|
2600
2599
|
}
|
@@ -2631,7 +2630,8 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
|
|
2631
2630
|
int error = 0;
|
2632
2631
|
unsigned int i;
|
2633
2632
|
struct index_header header = { 0 };
|
2634
|
-
|
2633
|
+
unsigned char checksum[GIT_HASH_SHA1_SIZE];
|
2634
|
+
size_t checksum_size = GIT_HASH_SHA1_SIZE;
|
2635
2635
|
const char *last = NULL;
|
2636
2636
|
const char *empty = "";
|
2637
2637
|
|
@@ -2643,12 +2643,12 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
|
|
2643
2643
|
buffer_size -= _increase;\
|
2644
2644
|
}
|
2645
2645
|
|
2646
|
-
if (buffer_size < INDEX_HEADER_SIZE +
|
2646
|
+
if (buffer_size < INDEX_HEADER_SIZE + checksum_size)
|
2647
2647
|
return index_error_invalid("insufficient buffer space");
|
2648
2648
|
|
2649
2649
|
/* Precalculate the SHA1 of the files's contents -- we'll match it to
|
2650
2650
|
* the provided SHA1 in the footer */
|
2651
|
-
git_hash_buf(
|
2651
|
+
git_hash_buf(checksum, buffer, buffer_size - checksum_size, GIT_HASH_ALGORITHM_SHA1);
|
2652
2652
|
|
2653
2653
|
/* Parse header */
|
2654
2654
|
if ((error = read_header(&header, buffer)) < 0)
|
@@ -2666,7 +2666,7 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
|
|
2666
2666
|
return error;
|
2667
2667
|
|
2668
2668
|
/* Parse all the entries */
|
2669
|
-
for (i = 0; i < header.entry_count && buffer_size >
|
2669
|
+
for (i = 0; i < header.entry_count && buffer_size > checksum_size; ++i) {
|
2670
2670
|
git_index_entry *entry = NULL;
|
2671
2671
|
size_t entry_size;
|
2672
2672
|
|
@@ -2698,7 +2698,7 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
|
|
2698
2698
|
}
|
2699
2699
|
|
2700
2700
|
/* There's still space for some extensions! */
|
2701
|
-
while (buffer_size >
|
2701
|
+
while (buffer_size > checksum_size) {
|
2702
2702
|
size_t extension_size;
|
2703
2703
|
|
2704
2704
|
if ((error = read_extension(&extension_size, index, buffer, buffer_size)) < 0) {
|
@@ -2708,22 +2708,20 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
|
|
2708
2708
|
seek_forward(extension_size);
|
2709
2709
|
}
|
2710
2710
|
|
2711
|
-
if (buffer_size !=
|
2711
|
+
if (buffer_size != checksum_size) {
|
2712
2712
|
error = index_error_invalid(
|
2713
2713
|
"buffer size does not match index footer size");
|
2714
2714
|
goto done;
|
2715
2715
|
}
|
2716
2716
|
|
2717
2717
|
/* 160-bit SHA-1 over the content of the index file before this checksum. */
|
2718
|
-
|
2719
|
-
|
2720
|
-
if (git_oid__cmp(&checksum_calculated, &checksum_expected) != 0) {
|
2718
|
+
if (memcmp(checksum, buffer, checksum_size) != 0) {
|
2721
2719
|
error = index_error_invalid(
|
2722
2720
|
"calculated checksum does not match expected");
|
2723
2721
|
goto done;
|
2724
2722
|
}
|
2725
2723
|
|
2726
|
-
|
2724
|
+
memcpy(index->checksum, checksum, checksum_size);
|
2727
2725
|
|
2728
2726
|
#undef seek_forward
|
2729
2727
|
|
@@ -2809,9 +2807,7 @@ static int write_disk_entry(git_filebuf *file, git_index_entry *entry, const cha
|
|
2809
2807
|
ondisk.uid = htonl(entry->uid);
|
2810
2808
|
ondisk.gid = htonl(entry->gid);
|
2811
2809
|
ondisk.file_size = htonl((uint32_t)entry->file_size);
|
2812
|
-
|
2813
|
-
git_oid_cpy(&ondisk.oid, &entry->id);
|
2814
|
-
|
2810
|
+
git_oid_raw_cpy(ondisk.oid, entry->id.id, GIT_OID_SHA1_SIZE);
|
2815
2811
|
ondisk.flags = htons(entry->flags);
|
2816
2812
|
|
2817
2813
|
if (entry->flags & GIT_INDEX_ENTRY_EXTENDED) {
|
@@ -2892,7 +2888,7 @@ done:
|
|
2892
2888
|
return error;
|
2893
2889
|
}
|
2894
2890
|
|
2895
|
-
static int write_extension(git_filebuf *file, struct index_extension *header,
|
2891
|
+
static int write_extension(git_filebuf *file, struct index_extension *header, git_str *data)
|
2896
2892
|
{
|
2897
2893
|
struct index_extension ondisk;
|
2898
2894
|
|
@@ -2904,30 +2900,30 @@ static int write_extension(git_filebuf *file, struct index_extension *header, gi
|
|
2904
2900
|
return git_filebuf_write(file, data->ptr, data->size);
|
2905
2901
|
}
|
2906
2902
|
|
2907
|
-
static int create_name_extension_data(
|
2903
|
+
static int create_name_extension_data(git_str *name_buf, git_index_name_entry *conflict_name)
|
2908
2904
|
{
|
2909
2905
|
int error = 0;
|
2910
2906
|
|
2911
2907
|
if (conflict_name->ancestor == NULL)
|
2912
|
-
error =
|
2908
|
+
error = git_str_put(name_buf, "\0", 1);
|
2913
2909
|
else
|
2914
|
-
error =
|
2910
|
+
error = git_str_put(name_buf, conflict_name->ancestor, strlen(conflict_name->ancestor) + 1);
|
2915
2911
|
|
2916
2912
|
if (error != 0)
|
2917
2913
|
goto on_error;
|
2918
2914
|
|
2919
2915
|
if (conflict_name->ours == NULL)
|
2920
|
-
error =
|
2916
|
+
error = git_str_put(name_buf, "\0", 1);
|
2921
2917
|
else
|
2922
|
-
error =
|
2918
|
+
error = git_str_put(name_buf, conflict_name->ours, strlen(conflict_name->ours) + 1);
|
2923
2919
|
|
2924
2920
|
if (error != 0)
|
2925
2921
|
goto on_error;
|
2926
2922
|
|
2927
2923
|
if (conflict_name->theirs == NULL)
|
2928
|
-
error =
|
2924
|
+
error = git_str_put(name_buf, "\0", 1);
|
2929
2925
|
else
|
2930
|
-
error =
|
2926
|
+
error = git_str_put(name_buf, conflict_name->theirs, strlen(conflict_name->theirs) + 1);
|
2931
2927
|
|
2932
2928
|
on_error:
|
2933
2929
|
return error;
|
@@ -2935,7 +2931,7 @@ on_error:
|
|
2935
2931
|
|
2936
2932
|
static int write_name_extension(git_index *index, git_filebuf *file)
|
2937
2933
|
{
|
2938
|
-
|
2934
|
+
git_str name_buf = GIT_STR_INIT;
|
2939
2935
|
git_vector *out = &index->names;
|
2940
2936
|
git_index_name_entry *conflict_name;
|
2941
2937
|
struct index_extension extension;
|
@@ -2953,28 +2949,28 @@ static int write_name_extension(git_index *index, git_filebuf *file)
|
|
2953
2949
|
|
2954
2950
|
error = write_extension(file, &extension, &name_buf);
|
2955
2951
|
|
2956
|
-
|
2952
|
+
git_str_dispose(&name_buf);
|
2957
2953
|
|
2958
2954
|
done:
|
2959
2955
|
return error;
|
2960
2956
|
}
|
2961
2957
|
|
2962
|
-
static int create_reuc_extension_data(
|
2958
|
+
static int create_reuc_extension_data(git_str *reuc_buf, git_index_reuc_entry *reuc)
|
2963
2959
|
{
|
2964
2960
|
int i;
|
2965
2961
|
int error = 0;
|
2966
2962
|
|
2967
|
-
if ((error =
|
2963
|
+
if ((error = git_str_put(reuc_buf, reuc->path, strlen(reuc->path) + 1)) < 0)
|
2968
2964
|
return error;
|
2969
2965
|
|
2970
2966
|
for (i = 0; i < 3; i++) {
|
2971
|
-
if ((error =
|
2972
|
-
(error =
|
2967
|
+
if ((error = git_str_printf(reuc_buf, "%o", reuc->mode[i])) < 0 ||
|
2968
|
+
(error = git_str_put(reuc_buf, "\0", 1)) < 0)
|
2973
2969
|
return error;
|
2974
2970
|
}
|
2975
2971
|
|
2976
2972
|
for (i = 0; i < 3; i++) {
|
2977
|
-
if (reuc->mode[i] && (error =
|
2973
|
+
if (reuc->mode[i] && (error = git_str_put(reuc_buf, (char *)&reuc->oid[i].id, GIT_OID_SHA1_SIZE)) < 0)
|
2978
2974
|
return error;
|
2979
2975
|
}
|
2980
2976
|
|
@@ -2983,7 +2979,7 @@ static int create_reuc_extension_data(git_buf *reuc_buf, git_index_reuc_entry *r
|
|
2983
2979
|
|
2984
2980
|
static int write_reuc_extension(git_index *index, git_filebuf *file)
|
2985
2981
|
{
|
2986
|
-
|
2982
|
+
git_str reuc_buf = GIT_STR_INIT;
|
2987
2983
|
git_vector *out = &index->reuc;
|
2988
2984
|
git_index_reuc_entry *reuc;
|
2989
2985
|
struct index_extension extension;
|
@@ -3001,7 +2997,7 @@ static int write_reuc_extension(git_index *index, git_filebuf *file)
|
|
3001
2997
|
|
3002
2998
|
error = write_extension(file, &extension, &reuc_buf);
|
3003
2999
|
|
3004
|
-
|
3000
|
+
git_str_dispose(&reuc_buf);
|
3005
3001
|
|
3006
3002
|
done:
|
3007
3003
|
return error;
|
@@ -3010,7 +3006,7 @@ done:
|
|
3010
3006
|
static int write_tree_extension(git_index *index, git_filebuf *file)
|
3011
3007
|
{
|
3012
3008
|
struct index_extension extension;
|
3013
|
-
|
3009
|
+
git_str buf = GIT_STR_INIT;
|
3014
3010
|
int error;
|
3015
3011
|
|
3016
3012
|
if (index->tree == NULL)
|
@@ -3025,7 +3021,7 @@ static int write_tree_extension(git_index *index, git_filebuf *file)
|
|
3025
3021
|
|
3026
3022
|
error = write_extension(file, &extension, &buf);
|
3027
3023
|
|
3028
|
-
|
3024
|
+
git_str_dispose(&buf);
|
3029
3025
|
|
3030
3026
|
return error;
|
3031
3027
|
}
|
@@ -3039,9 +3035,12 @@ static void clear_uptodate(git_index *index)
|
|
3039
3035
|
entry->flags_extended &= ~GIT_INDEX_ENTRY_UPTODATE;
|
3040
3036
|
}
|
3041
3037
|
|
3042
|
-
static int write_index(
|
3038
|
+
static int write_index(
|
3039
|
+
unsigned char checksum[GIT_HASH_SHA1_SIZE],
|
3040
|
+
size_t *checksum_size,
|
3041
|
+
git_index *index,
|
3042
|
+
git_filebuf *file)
|
3043
3043
|
{
|
3044
|
-
git_oid hash_final;
|
3045
3044
|
struct index_header header;
|
3046
3045
|
bool is_extended;
|
3047
3046
|
uint32_t index_version_number;
|
@@ -3049,6 +3048,8 @@ static int write_index(git_oid *checksum, git_index *index, git_filebuf *file)
|
|
3049
3048
|
GIT_ASSERT_ARG(index);
|
3050
3049
|
GIT_ASSERT_ARG(file);
|
3051
3050
|
|
3051
|
+
*checksum_size = GIT_HASH_SHA1_SIZE;
|
3052
|
+
|
3052
3053
|
if (index->version <= INDEX_VERSION_NUMBER_EXT) {
|
3053
3054
|
is_extended = is_index_extended(index);
|
3054
3055
|
index_version_number = is_extended ? INDEX_VERSION_NUMBER_EXT : INDEX_VERSION_NUMBER_LB;
|
@@ -3079,11 +3080,10 @@ static int write_index(git_oid *checksum, git_index *index, git_filebuf *file)
|
|
3079
3080
|
return -1;
|
3080
3081
|
|
3081
3082
|
/* get out the hash for all the contents we've appended to the file */
|
3082
|
-
git_filebuf_hash(
|
3083
|
-
git_oid_cpy(checksum, &hash_final);
|
3083
|
+
git_filebuf_hash(checksum, file);
|
3084
3084
|
|
3085
3085
|
/* write it at the end of the file */
|
3086
|
-
if (git_filebuf_write(file,
|
3086
|
+
if (git_filebuf_write(file, checksum, *checksum_size) < 0)
|
3087
3087
|
return -1;
|
3088
3088
|
|
3089
3089
|
/* file entries are no longer up to date */
|
@@ -3115,13 +3115,13 @@ static int read_tree_cb(
|
|
3115
3115
|
{
|
3116
3116
|
read_tree_data *data = payload;
|
3117
3117
|
git_index_entry *entry = NULL, *old_entry;
|
3118
|
-
|
3118
|
+
git_str path = GIT_STR_INIT;
|
3119
3119
|
size_t pos;
|
3120
3120
|
|
3121
3121
|
if (git_tree_entry__is_tree(tentry))
|
3122
3122
|
return 0;
|
3123
3123
|
|
3124
|
-
if (
|
3124
|
+
if (git_str_joinpath(&path, root, tentry->filename) < 0)
|
3125
3125
|
return -1;
|
3126
3126
|
|
3127
3127
|
if (index_entry_create(&entry, INDEX_OWNER(data->index), path.ptr, NULL, false) < 0)
|
@@ -3143,7 +3143,7 @@ static int read_tree_cb(
|
|
3143
3143
|
}
|
3144
3144
|
|
3145
3145
|
index_entry_adjust_namemask(entry, path.size);
|
3146
|
-
|
3146
|
+
git_str_dispose(&path);
|
3147
3147
|
|
3148
3148
|
if (git_vector_insert(data->new_entries, entry) < 0) {
|
3149
3149
|
index_entry_free(entry);
|
@@ -3385,7 +3385,7 @@ enum {
|
|
3385
3385
|
INDEX_ACTION_NONE = 0,
|
3386
3386
|
INDEX_ACTION_UPDATE = 1,
|
3387
3387
|
INDEX_ACTION_REMOVE = 2,
|
3388
|
-
INDEX_ACTION_ADDALL = 3
|
3388
|
+
INDEX_ACTION_ADDALL = 3
|
3389
3389
|
};
|
3390
3390
|
|
3391
3391
|
int git_index_add_all(
|
@@ -3498,7 +3498,7 @@ static int index_apply_to_wd_diff(git_index *index, int action, const git_strarr
|
|
3498
3498
|
}
|
3499
3499
|
|
3500
3500
|
/*
|
3501
|
-
* We do the matching ourselves
|
3501
|
+
* We do the matching ourselves instead of passing the list to
|
3502
3502
|
* diff because we want to tell the callback which one
|
3503
3503
|
* matched, which we do not know if we ask diff to filter for us.
|
3504
3504
|
*/
|
@@ -3540,7 +3540,7 @@ static int index_apply_to_all(
|
|
3540
3540
|
size_t i;
|
3541
3541
|
git_pathspec ps;
|
3542
3542
|
const char *match;
|
3543
|
-
|
3543
|
+
git_str path = GIT_STR_INIT;
|
3544
3544
|
|
3545
3545
|
GIT_ASSERT_ARG(index);
|
3546
3546
|
|
@@ -3569,7 +3569,7 @@ static int index_apply_to_all(
|
|
3569
3569
|
}
|
3570
3570
|
|
3571
3571
|
/* index manipulation may alter entry, so don't depend on it */
|
3572
|
-
if ((error =
|
3572
|
+
if ((error = git_str_sets(&path, entry->path)) < 0)
|
3573
3573
|
break;
|
3574
3574
|
|
3575
3575
|
switch (action) {
|
@@ -3598,7 +3598,7 @@ static int index_apply_to_all(
|
|
3598
3598
|
}
|
3599
3599
|
}
|
3600
3600
|
|
3601
|
-
|
3601
|
+
git_str_dispose(&path);
|
3602
3602
|
git_pathspec__clear(&ps);
|
3603
3603
|
|
3604
3604
|
return error;
|
@@ -3713,8 +3713,9 @@ int git_indexwriter_init_for_operation(
|
|
3713
3713
|
|
3714
3714
|
int git_indexwriter_commit(git_indexwriter *writer)
|
3715
3715
|
{
|
3716
|
+
unsigned char checksum[GIT_HASH_SHA1_SIZE];
|
3717
|
+
size_t checksum_size;
|
3716
3718
|
int error;
|
3717
|
-
git_oid checksum = {{ 0 }};
|
3718
3719
|
|
3719
3720
|
if (!writer->should_write)
|
3720
3721
|
return 0;
|
@@ -3722,7 +3723,7 @@ int git_indexwriter_commit(git_indexwriter *writer)
|
|
3722
3723
|
git_vector_sort(&writer->index->entries);
|
3723
3724
|
git_vector_sort(&writer->index->reuc);
|
3724
3725
|
|
3725
|
-
if ((error = write_index(
|
3726
|
+
if ((error = write_index(checksum, &checksum_size, writer->index, &writer->file)) < 0) {
|
3726
3727
|
git_indexwriter_cleanup(writer);
|
3727
3728
|
return error;
|
3728
3729
|
}
|
@@ -3738,7 +3739,7 @@ int git_indexwriter_commit(git_indexwriter *writer)
|
|
3738
3739
|
|
3739
3740
|
writer->index->dirty = 0;
|
3740
3741
|
writer->index->on_disk = 1;
|
3741
|
-
|
3742
|
+
memcpy(writer->index->checksum, checksum, checksum_size);
|
3742
3743
|
|
3743
3744
|
git_index_free(writer->index);
|
3744
3745
|
writer->index = NULL;
|
@@ -27,7 +27,7 @@ struct git_index {
|
|
27
27
|
|
28
28
|
char *index_file_path;
|
29
29
|
git_futils_filestamp stamp;
|
30
|
-
|
30
|
+
unsigned char checksum[GIT_HASH_SHA1_SIZE];
|
31
31
|
|
32
32
|
git_vector entries;
|
33
33
|
git_idxmap *entries_map;
|
@@ -133,10 +133,13 @@ extern unsigned int git_index__create_mode(unsigned int mode);
|
|
133
133
|
|
134
134
|
GIT_INLINE(const git_futils_filestamp *) git_index__filestamp(git_index *index)
|
135
135
|
{
|
136
|
-
|
136
|
+
return &index->stamp;
|
137
137
|
}
|
138
138
|
|
139
|
-
|
139
|
+
GIT_INLINE(unsigned char *) git_index__checksum(git_index *index)
|
140
|
+
{
|
141
|
+
return index->checksum;
|
142
|
+
}
|
140
143
|
|
141
144
|
/* Copy the current entries vector *and* increment the index refcount.
|
142
145
|
* Call `git_index__release_snapshot` when done.
|