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
|
@@ -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.
|