rugged 1.4.2 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +34 -2
- data/ext/rugged/extconf.rb +1 -0
- data/ext/rugged/rugged.c +16 -0
- data/ext/rugged/rugged.h +4 -0
- data/ext/rugged/rugged_remote.c +10 -10
- data/ext/rugged/rugged_repo.c +2 -7
- data/ext/rugged/rugged_settings.c +5 -0
- data/lib/rugged/tree.rb +4 -0
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +16 -3
- data/vendor/libgit2/COPYING +40 -0
- data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
- data/vendor/libgit2/cmake/FindPCRE.cmake +3 -4
- data/vendor/libgit2/cmake/FindPCRE2.cmake +1 -1
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +1 -1
- data/vendor/libgit2/cmake/SelectHashes.cmake +62 -14
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +3 -1
- 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/branch.h +2 -2
- data/vendor/libgit2/include/git2/common.h +22 -1
- data/vendor/libgit2/include/git2/config.h +6 -6
- data/vendor/libgit2/include/git2/deprecated.h +2 -0
- data/vendor/libgit2/include/git2/errors.h +19 -4
- data/vendor/libgit2/include/git2/merge.h +1 -1
- data/vendor/libgit2/include/git2/status.h +5 -2
- data/vendor/libgit2/include/git2/sys/remote.h +15 -0
- data/vendor/libgit2/include/git2/sys/transport.h +9 -5
- data/vendor/libgit2/include/git2/version.h +27 -6
- data/vendor/libgit2/src/CMakeLists.txt +104 -214
- data/vendor/libgit2/src/README.md +12 -0
- data/vendor/libgit2/src/cli/CMakeLists.txt +53 -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 +135 -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/{win32 → cli/win32}/precompiled.c +0 -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/features.h.in +9 -0
- data/vendor/libgit2/src/libgit2/CMakeLists.txt +131 -0
- data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +0 -0
- data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +0 -0
- data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +0 -0
- data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +0 -0
- data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +0 -0
- data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
- data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +0 -0
- data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +0 -0
- data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +0 -0
- data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +0 -0
- data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +0 -0
- data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +0 -0
- data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +0 -0
- data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
- data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +1 -1
- data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +0 -0
- data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +14 -9
- data/vendor/libgit2/src/{branch.h → libgit2/branch.h} +0 -0
- data/vendor/libgit2/src/{buf.c → libgit2/buf.c} +0 -0
- data/vendor/libgit2/src/{buf.h → libgit2/buf.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.c → libgit2/checkout.c} +0 -0
- data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -0
- data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +0 -0
- data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +0 -0
- data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +0 -0
- data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +0 -0
- data/vendor/libgit2/src/{commit.h → libgit2/commit.h} +0 -0
- data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +20 -17
- data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +1 -1
- data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +0 -0
- data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +0 -0
- data/vendor/libgit2/src/libgit2/common.h +55 -0
- data/vendor/libgit2/src/{config.c → libgit2/config.c} +14 -7
- data/vendor/libgit2/src/{config.h → libgit2/config.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_file.c → libgit2/config_file.c} +0 -0
- data/vendor/libgit2/src/{config_mem.c → libgit2/config_mem.c} +0 -0
- data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +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/{crlf.c → libgit2/crlf.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/{describe.c → libgit2/describe.c} +0 -0
- data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +0 -0
- data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +0 -0
- data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +0 -0
- data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +0 -0
- data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +0 -0
- data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
- data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +0 -0
- data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.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_print.c → libgit2/diff_print.c} +5 -0
- data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +0 -0
- data/vendor/libgit2/src/{diff_stats.h → libgit2/diff_stats.h} +0 -0
- data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +0 -0
- data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
- data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +1 -0
- data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +0 -0
- data/vendor/libgit2/src/{email.c → libgit2/email.c} +0 -0
- data/vendor/libgit2/src/{email.h → libgit2/email.h} +0 -0
- data/vendor/libgit2/src/{errors.c → libgit2/errors.c} +0 -0
- data/vendor/libgit2/src/{errors.h → libgit2/errors.h} +1 -2
- data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +5 -2
- data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +0 -0
- data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +0 -0
- data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
- data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +31 -1
- data/vendor/libgit2/src/{filter.h → libgit2/filter.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/{ident.c → libgit2/ident.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/{ignore.c → libgit2/ignore.c} +0 -0
- data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +0 -0
- data/vendor/libgit2/src/{index.c → libgit2/index.c} +6 -6
- data/vendor/libgit2/src/{index.h → libgit2/index.h} +0 -0
- data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +2 -2
- data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
- data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +3 -3
- data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +0 -0
- data/vendor/libgit2/src/{libgit2.c → libgit2/libgit2.c} +13 -0
- data/vendor/libgit2/src/{libgit2.h → libgit2/libgit2.h} +0 -0
- data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +0 -0
- data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
- data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +0 -0
- data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +0 -0
- data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +0 -0
- data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
- data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +0 -0
- data/vendor/libgit2/src/{message.c → libgit2/message.c} +0 -0
- data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +28 -26
- data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +2 -1
- data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +9 -9
- data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +1 -1
- data/vendor/libgit2/src/{netops.c → libgit2/netops.c} +0 -1
- data/vendor/libgit2/src/{netops.h → libgit2/netops.h} +0 -0
- data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +0 -0
- data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
- data/vendor/libgit2/src/{object.c → libgit2/object.c} +1 -0
- data/vendor/libgit2/src/{object.h → libgit2/object.h} +0 -0
- data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
- data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +2 -2
- data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +0 -0
- data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +0 -0
- data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +0 -0
- data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.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/{oid.c → libgit2/oid.c} +2 -21
- data/vendor/libgit2/src/{oid.h → libgit2/oid.h} +35 -2
- 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.c → libgit2/oidmap.c} +1 -1
- data/vendor/libgit2/src/{oidmap.h → libgit2/oidmap.h} +0 -0
- data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +0 -0
- data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +0 -0
- data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +24 -18
- data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +3 -2
- data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +0 -0
- data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +0 -0
- data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +0 -0
- data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +0 -0
- data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +0 -0
- data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +0 -0
- data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +0 -0
- data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
- data/vendor/libgit2/src/{path.c → libgit2/path.c} +1 -0
- data/vendor/libgit2/src/{path.h → libgit2/path.h} +0 -0
- data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +0 -0
- data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +0 -0
- data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +0 -0
- data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +0 -0
- data/vendor/libgit2/src/{push.c → libgit2/push.c} +0 -0
- data/vendor/libgit2/src/{push.h → libgit2/push.h} +0 -0
- data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +0 -0
- data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +0 -0
- data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +11 -1
- 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/{refdb_fs.c → libgit2/refdb_fs.c} +6 -2
- data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +0 -0
- data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +0 -0
- data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +0 -0
- data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +0 -0
- data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +0 -0
- data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +0 -0
- data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +6 -3
- data/vendor/libgit2/src/{remote.h → libgit2/remote.h} +1 -1
- data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
- data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +155 -22
- data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +1 -0
- data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +0 -0
- data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +0 -0
- data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +0 -0
- data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +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/{signature.c → libgit2/signature.c} +0 -0
- data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +0 -0
- data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +0 -0
- data/vendor/libgit2/src/{status.c → libgit2/status.c} +0 -0
- data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
- data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +0 -0
- data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +0 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +0 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +0 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +0 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.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.c +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/{submodule.c → libgit2/submodule.c} +0 -0
- data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +0 -0
- data/vendor/libgit2/src/{sysdir.c → libgit2/sysdir.c} +0 -0
- data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +0 -0
- data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +15 -5
- data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +0 -0
- data/vendor/libgit2/src/{threadstate.c → libgit2/threadstate.c} +0 -0
- data/vendor/libgit2/src/{threadstate.h → libgit2/threadstate.h} +0 -0
- data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +0 -0
- data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +0 -0
- data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +0 -0
- data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +0 -0
- data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +0 -0
- data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +0 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +0 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +0 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.c +0 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +0 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.c +0 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.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}/git.c +0 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +0 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +1 -1
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +0 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +0 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +12 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +0 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +0 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +0 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.c +0 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.h +0 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +0 -0
- data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +1 -1
- data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +0 -0
- data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +16 -23
- data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +1 -1
- data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
- data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +0 -0
- data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +0 -0
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/git-xdiff.h +0 -0
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiff.h +0 -0
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.c +0 -0
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.h +0 -0
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.c +0 -0
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.h +0 -0
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xhistogram.c +0 -0
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xinclude.h +0 -0
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmacros.h +0 -0
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmerge.c +0 -0
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xpatience.c +0 -0
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.c +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.c +0 -0
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.h +0 -0
- data/vendor/libgit2/src/util/CMakeLists.txt +74 -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}/failalloc.h +1 -1
- data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.c +0 -0
- data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
- data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.c +0 -0
- 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/{bitvec.h → util/bitvec.h} +0 -0
- data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +0 -0
- data/vendor/libgit2/src/{date.c → util/date.c} +4 -3
- data/vendor/libgit2/src/{date.h → util/date.h} +0 -0
- data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +1 -1
- data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +1 -1
- data/vendor/libgit2/src/{fs_path.c → util/fs_path.c} +219 -65
- data/vendor/libgit2/src/{fs_path.h → util/fs_path.h} +47 -9
- data/vendor/libgit2/src/{futils.c → util/futils.c} +44 -2
- data/vendor/libgit2/src/{futils.h → util/futils.h} +2 -1
- data/vendor/libgit2/src/{common.h → util/git2_util.h} +13 -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 +1 -1
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.c +55 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.c +46 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
- data/vendor/libgit2/src/util/hash/openssl.c +194 -0
- data/vendor/libgit2/src/util/hash/openssl.h +45 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha.h +355 -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 +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/util/hash/win32.c +549 -0
- data/vendor/libgit2/src/util/hash/win32.h +60 -0
- data/vendor/libgit2/src/{hash.c → util/hash.c} +17 -1
- data/vendor/libgit2/src/{hash.h → util/hash.h} +5 -3
- data/vendor/libgit2/src/{integer.h → util/integer.h} +0 -0
- data/vendor/libgit2/src/{khash.h → util/khash.h} +0 -0
- data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
- data/vendor/libgit2/src/{net.c → util/net.c} +0 -1
- data/vendor/libgit2/src/{net.h → util/net.h} +1 -1
- data/vendor/libgit2/src/{pool.c → util/pool.c} +0 -0
- data/vendor/libgit2/src/{pool.h → util/pool.h} +1 -1
- data/vendor/libgit2/src/{posix.c → util/posix.c} +0 -0
- data/vendor/libgit2/src/{posix.h → util/posix.h} +1 -1
- data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
- data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +1 -1
- data/vendor/libgit2/src/{rand.c → util/rand.c} +7 -3
- data/vendor/libgit2/src/{rand.h → util/rand.h} +1 -1
- data/vendor/libgit2/src/{regexp.c → util/regexp.c} +0 -0
- 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} +0 -0
- data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +1 -1
- data/vendor/libgit2/src/{str.c → util/str.c} +0 -0
- data/vendor/libgit2/src/{str.h → util/str.h} +1 -1
- data/vendor/libgit2/src/{strmap.c → util/strmap.c} +0 -0
- data/vendor/libgit2/src/{strmap.h → util/strmap.h} +1 -1
- data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
- data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
- data/vendor/libgit2/src/{thread.h → util/thread.h} +0 -0
- data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
- data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -1
- data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -1
- data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
- data/vendor/libgit2/src/{unix → util/unix}/realpath.c +1 -1
- 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} +1 -1
- data/vendor/libgit2/src/{util.h → util/util.h} +1 -1
- data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
- data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
- data/vendor/libgit2/src/{vector.c → util/vector.c} +0 -0
- data/vendor/libgit2/src/{vector.h → util/vector.h} +1 -1
- data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
- data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
- data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/error.c +0 -0
- data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/findfile.c +0 -0
- data/vendor/libgit2/src/{win32 → util/win32}/findfile.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
- 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}/path_w32.c +0 -0
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +1 -1
- 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}/reparse.h +0 -0
- data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
- data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.c +0 -0
- data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +0 -0
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +0 -0
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +0 -0
- data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
- data/vendor/libgit2/src/{zstream.c → util/zstream.c} +0 -0
- data/vendor/libgit2/src/{zstream.h → util/zstream.h} +1 -1
- metadata +394 -365
- 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/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 -40
|
@@ -893,6 +893,17 @@ static int buffered_stream_write(
|
|
|
893
893
|
return git_str_put(&buffered_stream->input, buffer, len);
|
|
894
894
|
}
|
|
895
895
|
|
|
896
|
+
#ifndef GIT_DEPRECATE_HARD
|
|
897
|
+
# define BUF_TO_STRUCT(b, s) \
|
|
898
|
+
(b)->ptr = (s)->ptr; \
|
|
899
|
+
(b)->size = (s)->size; \
|
|
900
|
+
(b)->reserved = (s)->asize;
|
|
901
|
+
# define STRUCT_TO_BUF(s, b) \
|
|
902
|
+
(s)->ptr = (b)->ptr; \
|
|
903
|
+
(s)->size = (b)->size; \
|
|
904
|
+
(s)->asize = (b)->reserved;
|
|
905
|
+
#endif
|
|
906
|
+
|
|
896
907
|
static int buffered_stream_close(git_writestream *s)
|
|
897
908
|
{
|
|
898
909
|
struct buffered_stream *buffered_stream = (struct buffered_stream *)s;
|
|
@@ -902,6 +913,25 @@ static int buffered_stream_close(git_writestream *s)
|
|
|
902
913
|
|
|
903
914
|
GIT_ASSERT_ARG(buffered_stream);
|
|
904
915
|
|
|
916
|
+
#ifndef GIT_DEPRECATE_HARD
|
|
917
|
+
if (buffered_stream->write_fn == NULL) {
|
|
918
|
+
git_buf legacy_output = GIT_BUF_INIT,
|
|
919
|
+
legacy_input = GIT_BUF_INIT;
|
|
920
|
+
|
|
921
|
+
BUF_TO_STRUCT(&legacy_output, buffered_stream->output);
|
|
922
|
+
BUF_TO_STRUCT(&legacy_input, &buffered_stream->input);
|
|
923
|
+
|
|
924
|
+
error = buffered_stream->legacy_write_fn(
|
|
925
|
+
buffered_stream->filter,
|
|
926
|
+
buffered_stream->payload,
|
|
927
|
+
&legacy_output,
|
|
928
|
+
&legacy_input,
|
|
929
|
+
buffered_stream->source);
|
|
930
|
+
|
|
931
|
+
STRUCT_TO_BUF(buffered_stream->output, &legacy_output);
|
|
932
|
+
STRUCT_TO_BUF(&buffered_stream->input, &legacy_input);
|
|
933
|
+
} else
|
|
934
|
+
#endif
|
|
905
935
|
error = buffered_stream->write_fn(
|
|
906
936
|
buffered_stream->filter,
|
|
907
937
|
buffered_stream->payload,
|
|
@@ -1085,7 +1115,7 @@ int git_filter_list_stream_file(
|
|
|
1085
1115
|
const char *path,
|
|
1086
1116
|
git_writestream *target)
|
|
1087
1117
|
{
|
|
1088
|
-
char buf[
|
|
1118
|
+
char buf[GIT_BUFSIZE_FILTERIO];
|
|
1089
1119
|
git_str abspath = GIT_STR_INIT;
|
|
1090
1120
|
const char *base = repo ? git_repository_workdir(repo) : NULL;
|
|
1091
1121
|
git_vector filter_streams = GIT_VECTOR_INIT;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -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_RAWSZ];
|
|
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_RAWSZ];
|
|
92
92
|
uint16_t flags;
|
|
93
93
|
uint16_t flags_extended;
|
|
94
94
|
char path[1]; /* arbitrary length */
|
|
@@ -2480,9 +2480,11 @@ static int read_entry(
|
|
|
2480
2480
|
entry.uid = ntohl(source.uid);
|
|
2481
2481
|
entry.gid = ntohl(source.gid);
|
|
2482
2482
|
entry.file_size = ntohl(source.file_size);
|
|
2483
|
-
git_oid_cpy(&entry.id, &source.oid);
|
|
2484
2483
|
entry.flags = ntohs(source.flags);
|
|
2485
2484
|
|
|
2485
|
+
if (git_oid_fromraw(&entry.id, source.oid) < 0)
|
|
2486
|
+
return -1;
|
|
2487
|
+
|
|
2486
2488
|
if (entry.flags & GIT_INDEX_ENTRY_EXTENDED) {
|
|
2487
2489
|
uint16_t flags_raw;
|
|
2488
2490
|
size_t flags_offset;
|
|
@@ -2803,9 +2805,7 @@ static int write_disk_entry(git_filebuf *file, git_index_entry *entry, const cha
|
|
|
2803
2805
|
ondisk.uid = htonl(entry->uid);
|
|
2804
2806
|
ondisk.gid = htonl(entry->gid);
|
|
2805
2807
|
ondisk.file_size = htonl((uint32_t)entry->file_size);
|
|
2806
|
-
|
|
2807
|
-
git_oid_cpy(&ondisk.oid, &entry->id);
|
|
2808
|
-
|
|
2808
|
+
git_oid_raw_cpy(ondisk.oid, entry->id.id);
|
|
2809
2809
|
ondisk.flags = htons(entry->flags);
|
|
2810
2810
|
|
|
2811
2811
|
if (entry->flags & GIT_INDEX_ENTRY_EXTENDED) {
|
|
File without changes
|
|
@@ -385,7 +385,7 @@ static int check_object_connectivity(git_indexer *idx, const git_rawobj *obj)
|
|
|
385
385
|
size_t i;
|
|
386
386
|
|
|
387
387
|
git_array_foreach(tree->entries, i, entry)
|
|
388
|
-
if (add_expected_oid(idx, entry->oid) < 0)
|
|
388
|
+
if (add_expected_oid(idx, &entry->oid) < 0)
|
|
389
389
|
goto out;
|
|
390
390
|
|
|
391
391
|
break;
|
|
@@ -1269,7 +1269,7 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
|
|
|
1269
1269
|
|
|
1270
1270
|
/* Write out the object names (SHA-1 hashes) */
|
|
1271
1271
|
git_vector_foreach(&idx->objects, i, entry) {
|
|
1272
|
-
git_filebuf_write(&index_file, &entry->oid,
|
|
1272
|
+
git_filebuf_write(&index_file, &entry->oid.id, GIT_OID_RAWSZ);
|
|
1273
1273
|
}
|
|
1274
1274
|
|
|
1275
1275
|
/* Write out the CRC32 values */
|
|
File without changes
|
|
@@ -613,7 +613,7 @@ GIT_INLINE(int) tree_iterator_frame_push_neighbors(
|
|
|
613
613
|
break;
|
|
614
614
|
|
|
615
615
|
if ((error = git_tree_lookup(&tree,
|
|
616
|
-
iter->base.repo, entry->tree_entry->oid)) < 0)
|
|
616
|
+
iter->base.repo, &entry->tree_entry->oid)) < 0)
|
|
617
617
|
break;
|
|
618
618
|
|
|
619
619
|
if (git_vector_insert(&parent_frame->similar_trees, tree) < 0)
|
|
@@ -659,7 +659,7 @@ GIT_INLINE(int) tree_iterator_frame_push(
|
|
|
659
659
|
int error;
|
|
660
660
|
|
|
661
661
|
if ((error = git_tree_lookup(&tree,
|
|
662
|
-
iter->base.repo, entry->tree_entry->oid)) < 0 ||
|
|
662
|
+
iter->base.repo, &entry->tree_entry->oid)) < 0 ||
|
|
663
663
|
(error = tree_iterator_frame_init(iter, tree, entry)) < 0)
|
|
664
664
|
goto done;
|
|
665
665
|
|
|
@@ -740,7 +740,7 @@ static void tree_iterator_set_current(
|
|
|
740
740
|
|
|
741
741
|
iter->entry.mode = tree_entry->attr;
|
|
742
742
|
iter->entry.path = iter->entry_path.ptr;
|
|
743
|
-
git_oid_cpy(&iter->entry.id, tree_entry->oid);
|
|
743
|
+
git_oid_cpy(&iter->entry.id, &tree_entry->oid);
|
|
744
744
|
}
|
|
745
745
|
|
|
746
746
|
static int tree_iterator_advance(const git_index_entry **out, git_iterator *i)
|
|
File without changes
|
|
@@ -107,6 +107,11 @@ int git_libgit2_version(int *major, int *minor, int *rev)
|
|
|
107
107
|
return 0;
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
+
const char *git_libgit2_prerelease(void)
|
|
111
|
+
{
|
|
112
|
+
return LIBGIT2_VER_PRERELEASE;
|
|
113
|
+
}
|
|
114
|
+
|
|
110
115
|
int git_libgit2_features(void)
|
|
111
116
|
{
|
|
112
117
|
return 0
|
|
@@ -401,6 +406,14 @@ int git_libgit2_opts(int key, ...)
|
|
|
401
406
|
}
|
|
402
407
|
break;
|
|
403
408
|
|
|
409
|
+
case GIT_OPT_GET_OWNER_VALIDATION:
|
|
410
|
+
*(va_arg(ap, int *)) = git_repository__validate_ownership;
|
|
411
|
+
break;
|
|
412
|
+
|
|
413
|
+
case GIT_OPT_SET_OWNER_VALIDATION:
|
|
414
|
+
git_repository__validate_ownership = (va_arg(ap, int) != 0);
|
|
415
|
+
break;
|
|
416
|
+
|
|
404
417
|
default:
|
|
405
418
|
git_error_set(GIT_ERROR_INVALID, "invalid option key");
|
|
406
419
|
error = -1;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -115,7 +115,7 @@ static int midx_parse_oid_lookup(
|
|
|
115
115
|
struct git_midx_chunk *chunk_oid_lookup)
|
|
116
116
|
{
|
|
117
117
|
uint32_t i;
|
|
118
|
-
|
|
118
|
+
unsigned char *oid, *prev_oid, zero_oid[GIT_OID_RAWSZ] = {0};
|
|
119
119
|
|
|
120
120
|
if (chunk_oid_lookup->offset == 0)
|
|
121
121
|
return midx_error("missing OID Lookup chunk");
|
|
@@ -124,10 +124,10 @@ static int midx_parse_oid_lookup(
|
|
|
124
124
|
if (chunk_oid_lookup->length != idx->num_objects * GIT_OID_RAWSZ)
|
|
125
125
|
return midx_error("OID Lookup chunk has wrong length");
|
|
126
126
|
|
|
127
|
-
idx->oid_lookup = oid = (
|
|
128
|
-
prev_oid =
|
|
129
|
-
for (i = 0; i < idx->num_objects; ++i,
|
|
130
|
-
if (
|
|
127
|
+
idx->oid_lookup = oid = (unsigned char *)(data + chunk_oid_lookup->offset);
|
|
128
|
+
prev_oid = zero_oid;
|
|
129
|
+
for (i = 0; i < idx->num_objects; ++i, oid += GIT_OID_RAWSZ) {
|
|
130
|
+
if (git_oid_raw_cmp(prev_oid, oid) >= 0)
|
|
131
131
|
return midx_error("OID Lookup index is non-monotonic");
|
|
132
132
|
prev_oid = oid;
|
|
133
133
|
}
|
|
@@ -179,7 +179,6 @@ int git_midx_parse(
|
|
|
179
179
|
uint32_t i;
|
|
180
180
|
off64_t last_chunk_offset, chunk_offset, trailer_offset;
|
|
181
181
|
size_t checksum_size;
|
|
182
|
-
unsigned char checksum[GIT_HASH_SHA1_SIZE];
|
|
183
182
|
int error;
|
|
184
183
|
struct git_midx_chunk chunk_packfile_names = {0},
|
|
185
184
|
chunk_oid_fanout = {0},
|
|
@@ -217,16 +216,16 @@ int git_midx_parse(
|
|
|
217
216
|
return midx_error("wrong index size");
|
|
218
217
|
memcpy(idx->checksum, data + trailer_offset, checksum_size);
|
|
219
218
|
|
|
220
|
-
if (git_hash_buf(checksum, data, (size_t)trailer_offset, GIT_HASH_ALGORITHM_SHA1) < 0)
|
|
221
|
-
return midx_error("could not calculate signature");
|
|
222
|
-
if (memcmp(checksum, idx->checksum, checksum_size) != 0)
|
|
223
|
-
return midx_error("index signature mismatch");
|
|
224
|
-
|
|
225
219
|
chunk_hdr = data + sizeof(struct git_midx_header);
|
|
226
220
|
last_chunk = NULL;
|
|
227
221
|
for (i = 0; i < hdr->chunks; ++i, chunk_hdr += 12) {
|
|
228
|
-
|
|
229
|
-
|
|
222
|
+
uint32_t chunk_id = ntohl(*((uint32_t *)(chunk_hdr + 0)));
|
|
223
|
+
uint64_t high_offset = ((uint64_t)ntohl(*((uint32_t *)(chunk_hdr + 4)))) & 0xffffffffu;
|
|
224
|
+
uint64_t low_offset = ((uint64_t)ntohl(*((uint32_t *)(chunk_hdr + 8)))) & 0xffffffffu;
|
|
225
|
+
|
|
226
|
+
if (high_offset >= INT32_MAX)
|
|
227
|
+
return midx_error("chunk offset out of range");
|
|
228
|
+
chunk_offset = (off64_t)(high_offset << 32 | low_offset);
|
|
230
229
|
if (chunk_offset < last_chunk_offset)
|
|
231
230
|
return midx_error("chunks are non-monotonic");
|
|
232
231
|
if (chunk_offset >= trailer_offset)
|
|
@@ -235,7 +234,7 @@ int git_midx_parse(
|
|
|
235
234
|
last_chunk->length = (size_t)(chunk_offset - last_chunk_offset);
|
|
236
235
|
last_chunk_offset = chunk_offset;
|
|
237
236
|
|
|
238
|
-
switch (
|
|
237
|
+
switch (chunk_id) {
|
|
239
238
|
case MIDX_PACKFILE_NAMES_ID:
|
|
240
239
|
chunk_packfile_names.offset = last_chunk_offset;
|
|
241
240
|
last_chunk = &chunk_packfile_names;
|
|
@@ -384,7 +383,7 @@ int git_midx_entry_find(
|
|
|
384
383
|
int pos, found = 0;
|
|
385
384
|
size_t pack_index;
|
|
386
385
|
uint32_t hi, lo;
|
|
387
|
-
|
|
386
|
+
unsigned char *current = NULL;
|
|
388
387
|
const unsigned char *object_offset;
|
|
389
388
|
off64_t offset;
|
|
390
389
|
|
|
@@ -398,26 +397,25 @@ int git_midx_entry_find(
|
|
|
398
397
|
if (pos >= 0) {
|
|
399
398
|
/* An object matching exactly the oid was found */
|
|
400
399
|
found = 1;
|
|
401
|
-
current = idx->oid_lookup + pos;
|
|
400
|
+
current = idx->oid_lookup + (pos * GIT_OID_RAWSZ);
|
|
402
401
|
} else {
|
|
403
402
|
/* No object was found */
|
|
404
403
|
/* pos refers to the object with the "closest" oid to short_oid */
|
|
405
404
|
pos = -1 - pos;
|
|
406
405
|
if (pos < (int)idx->num_objects) {
|
|
407
|
-
current = idx->oid_lookup + pos;
|
|
406
|
+
current = idx->oid_lookup + (pos * GIT_OID_RAWSZ);
|
|
408
407
|
|
|
409
|
-
if (!
|
|
408
|
+
if (!git_oid_raw_ncmp(short_oid->id, current, len))
|
|
410
409
|
found = 1;
|
|
411
410
|
}
|
|
412
411
|
}
|
|
413
412
|
|
|
414
413
|
if (found && len != GIT_OID_HEXSZ && pos + 1 < (int)idx->num_objects) {
|
|
415
414
|
/* Check for ambiguousity */
|
|
416
|
-
const
|
|
415
|
+
const unsigned char *next = current + GIT_OID_RAWSZ;
|
|
417
416
|
|
|
418
|
-
if (!
|
|
417
|
+
if (!git_oid_raw_ncmp(short_oid->id, next, len))
|
|
419
418
|
found = 2;
|
|
420
|
-
}
|
|
421
419
|
}
|
|
422
420
|
|
|
423
421
|
if (!found)
|
|
@@ -427,8 +425,8 @@ int git_midx_entry_find(
|
|
|
427
425
|
|
|
428
426
|
object_offset = idx->object_offsets + pos * 8;
|
|
429
427
|
offset = ntohl(*((uint32_t *)(object_offset + 4)));
|
|
430
|
-
if (offset & 0x80000000) {
|
|
431
|
-
uint32_t object_large_offsets_pos = offset
|
|
428
|
+
if (idx->object_large_offsets && offset & 0x80000000) {
|
|
429
|
+
uint32_t object_large_offsets_pos = (uint32_t) (offset ^ 0x80000000);
|
|
432
430
|
const unsigned char *object_large_offsets_index = idx->object_large_offsets;
|
|
433
431
|
|
|
434
432
|
/* Make sure we're not being sent out of bounds */
|
|
@@ -445,7 +443,7 @@ int git_midx_entry_find(
|
|
|
445
443
|
return midx_error("invalid index into the packfile names table");
|
|
446
444
|
e->pack_index = pack_index;
|
|
447
445
|
e->offset = offset;
|
|
448
|
-
|
|
446
|
+
git_oid_fromraw(&e->sha1, current);
|
|
449
447
|
return 0;
|
|
450
448
|
}
|
|
451
449
|
|
|
@@ -454,13 +452,17 @@ int git_midx_foreach_entry(
|
|
|
454
452
|
git_odb_foreach_cb cb,
|
|
455
453
|
void *data)
|
|
456
454
|
{
|
|
455
|
+
git_oid oid;
|
|
457
456
|
size_t i;
|
|
458
457
|
int error;
|
|
459
458
|
|
|
460
459
|
GIT_ASSERT_ARG(idx);
|
|
461
460
|
|
|
462
461
|
for (i = 0; i < idx->num_objects; ++i) {
|
|
463
|
-
if ((error =
|
|
462
|
+
if ((error = git_oid_fromraw(&oid, &idx->oid_lookup[i * GIT_OID_RAWSZ])) < 0)
|
|
463
|
+
return error;
|
|
464
|
+
|
|
465
|
+
if ((error = cb(&oid, data)) != 0)
|
|
464
466
|
return git_error_set_after_callback(error);
|
|
465
467
|
}
|
|
466
468
|
|
|
@@ -746,7 +748,7 @@ static int midx_write(
|
|
|
746
748
|
|
|
747
749
|
/* Fill the OID Lookup table. */
|
|
748
750
|
git_vector_foreach (&object_entries, i, entry) {
|
|
749
|
-
error = git_str_put(&oid_lookup, (
|
|
751
|
+
error = git_str_put(&oid_lookup, (char *)&entry->sha1.id, GIT_OID_RAWSZ);
|
|
750
752
|
if (error < 0)
|
|
751
753
|
goto cleanup;
|
|
752
754
|
}
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
#include "map.h"
|
|
18
18
|
#include "mwindow.h"
|
|
19
19
|
#include "odb.h"
|
|
20
|
+
#include "oid.h"
|
|
20
21
|
|
|
21
22
|
/*
|
|
22
23
|
* A multi-pack-index file.
|
|
@@ -40,7 +41,7 @@ typedef struct git_midx_file {
|
|
|
40
41
|
uint32_t num_objects;
|
|
41
42
|
|
|
42
43
|
/* The OID Lookup table. */
|
|
43
|
-
|
|
44
|
+
unsigned char *oid_lookup;
|
|
44
45
|
|
|
45
46
|
/* The Object Offsets table. Each entry has two 4-byte fields with the pack index and the offset. */
|
|
46
47
|
const unsigned char *object_offsets;
|
|
@@ -186,13 +186,16 @@ int git_mwindow_free_all(git_mwindow_file *mwf)
|
|
|
186
186
|
}
|
|
187
187
|
|
|
188
188
|
/*
|
|
189
|
-
* Check if a window 'win' contains the address 'offset'
|
|
189
|
+
* Check if a window 'win' contains both the address 'offset' and 'extra'.
|
|
190
|
+
*
|
|
191
|
+
* 'extra' is the size of the hash we're using as we always want to make sure
|
|
192
|
+
* that it's contained.
|
|
190
193
|
*/
|
|
191
|
-
int git_mwindow_contains(git_mwindow *win, off64_t offset)
|
|
194
|
+
int git_mwindow_contains(git_mwindow *win, off64_t offset, off64_t extra)
|
|
192
195
|
{
|
|
193
196
|
off64_t win_off = win->offset;
|
|
194
197
|
return win_off <= offset
|
|
195
|
-
&& offset <= (off64_t)(win_off + win->window_map.len);
|
|
198
|
+
&& (offset + extra) <= (off64_t)(win_off + win->window_map.len);
|
|
196
199
|
}
|
|
197
200
|
|
|
198
201
|
#define GIT_MWINDOW__LRU -1
|
|
@@ -237,9 +240,7 @@ static bool git_mwindow_scan_recently_used(
|
|
|
237
240
|
* store it in the output parameter. If lru_window is NULL,
|
|
238
241
|
* it's the first loop, so store it as well.
|
|
239
242
|
*/
|
|
240
|
-
if (!lru_window ||
|
|
241
|
-
(comparison_sign == GIT_MWINDOW__LRU && lru_window->last_used > w->last_used) ||
|
|
242
|
-
(comparison_sign == GIT_MWINDOW__MRU && lru_window->last_used < w->last_used)) {
|
|
243
|
+
if (!lru_window || (comparison_sign * w->last_used) > lru_window->last_used) {
|
|
243
244
|
lru_window = w;
|
|
244
245
|
lru_last = w_last;
|
|
245
246
|
found = true;
|
|
@@ -406,14 +407,13 @@ unsigned char *git_mwindow_open(
|
|
|
406
407
|
return NULL;
|
|
407
408
|
}
|
|
408
409
|
|
|
409
|
-
if (!w || !(git_mwindow_contains(w, offset
|
|
410
|
+
if (!w || !(git_mwindow_contains(w, offset, extra))) {
|
|
410
411
|
if (w) {
|
|
411
412
|
w->inuse_cnt--;
|
|
412
413
|
}
|
|
413
414
|
|
|
414
415
|
for (w = mwf->windows; w; w = w->next) {
|
|
415
|
-
if (git_mwindow_contains(w, offset)
|
|
416
|
-
git_mwindow_contains(w, offset + extra))
|
|
416
|
+
if (git_mwindow_contains(w, offset, extra))
|
|
417
417
|
break;
|
|
418
418
|
}
|
|
419
419
|
|
|
@@ -38,7 +38,7 @@ typedef struct git_mwindow_ctl {
|
|
|
38
38
|
git_vector windowfiles;
|
|
39
39
|
} git_mwindow_ctl;
|
|
40
40
|
|
|
41
|
-
int git_mwindow_contains(git_mwindow *win, off64_t offset);
|
|
41
|
+
int git_mwindow_contains(git_mwindow *win, off64_t offset, off64_t extra);
|
|
42
42
|
int git_mwindow_free_all(git_mwindow_file *mwf); /* locks */
|
|
43
43
|
unsigned char *git_mwindow_open(git_mwindow_file *mwf, git_mwindow **cursor, off64_t offset, size_t extra, unsigned int *left);
|
|
44
44
|
int git_mwindow_file_register(git_mwindow_file *mwf);
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -198,7 +198,7 @@ void git_odb_object_free(git_odb_object *object)
|
|
|
198
198
|
int git_odb__hashfd(git_oid *out, git_file fd, size_t size, git_object_t type)
|
|
199
199
|
{
|
|
200
200
|
size_t hdr_len;
|
|
201
|
-
char hdr[64], buffer[
|
|
201
|
+
char hdr[64], buffer[GIT_BUFSIZE_FILEIO];
|
|
202
202
|
git_hash_ctx ctx;
|
|
203
203
|
ssize_t read_len = 0;
|
|
204
204
|
int error = 0;
|
|
@@ -1067,7 +1067,7 @@ int git_odb_expand_ids(
|
|
|
1067
1067
|
int git_odb_read_header(size_t *len_p, git_object_t *type_p, git_odb *db, const git_oid *id)
|
|
1068
1068
|
{
|
|
1069
1069
|
int error;
|
|
1070
|
-
git_odb_object *object;
|
|
1070
|
+
git_odb_object *object = NULL;
|
|
1071
1071
|
|
|
1072
1072
|
error = git_odb__read_header_or_object(&object, len_p, type_p, db, id);
|
|
1073
1073
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -187,8 +187,7 @@ int git_oid_fromraw(git_oid *out, const unsigned char *raw)
|
|
|
187
187
|
|
|
188
188
|
int git_oid_cpy(git_oid *out, const git_oid *src)
|
|
189
189
|
{
|
|
190
|
-
|
|
191
|
-
return 0;
|
|
190
|
+
return git_oid_raw_cpy(out->id, src->id);
|
|
192
191
|
}
|
|
193
192
|
|
|
194
193
|
int git_oid_cmp(const git_oid *a, const git_oid *b)
|
|
@@ -203,25 +202,7 @@ int git_oid_equal(const git_oid *a, const git_oid *b)
|
|
|
203
202
|
|
|
204
203
|
int git_oid_ncmp(const git_oid *oid_a, const git_oid *oid_b, size_t len)
|
|
205
204
|
{
|
|
206
|
-
|
|
207
|
-
const unsigned char *b = oid_b->id;
|
|
208
|
-
|
|
209
|
-
if (len > GIT_OID_HEXSZ)
|
|
210
|
-
len = GIT_OID_HEXSZ;
|
|
211
|
-
|
|
212
|
-
while (len > 1) {
|
|
213
|
-
if (*a != *b)
|
|
214
|
-
return 1;
|
|
215
|
-
a++;
|
|
216
|
-
b++;
|
|
217
|
-
len -= 2;
|
|
218
|
-
};
|
|
219
|
-
|
|
220
|
-
if (len)
|
|
221
|
-
if ((*a ^ *b) & 0xf0)
|
|
222
|
-
return 1;
|
|
223
|
-
|
|
224
|
-
return 0;
|
|
205
|
+
return git_oid_raw_ncmp(oid_a->id, oid_b->id, len);
|
|
225
206
|
}
|
|
226
207
|
|
|
227
208
|
int git_oid_strcmp(const git_oid *oid_a, const char *str)
|
|
@@ -25,11 +25,44 @@ extern const git_oid git_oid__empty_tree_sha1;
|
|
|
25
25
|
*/
|
|
26
26
|
char *git_oid_allocfmt(const git_oid *id);
|
|
27
27
|
|
|
28
|
-
GIT_INLINE(int)
|
|
28
|
+
GIT_INLINE(int) git_oid_raw_ncmp(
|
|
29
|
+
const unsigned char *sha1,
|
|
30
|
+
const unsigned char *sha2,
|
|
31
|
+
size_t len)
|
|
32
|
+
{
|
|
33
|
+
if (len > GIT_OID_HEXSZ)
|
|
34
|
+
len = GIT_OID_HEXSZ;
|
|
35
|
+
|
|
36
|
+
while (len > 1) {
|
|
37
|
+
if (*sha1 != *sha2)
|
|
38
|
+
return 1;
|
|
39
|
+
sha1++;
|
|
40
|
+
sha2++;
|
|
41
|
+
len -= 2;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
if (len)
|
|
45
|
+
if ((*sha1 ^ *sha2) & 0xf0)
|
|
46
|
+
return 1;
|
|
47
|
+
|
|
48
|
+
return 0;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
GIT_INLINE(int) git_oid_raw_cmp(
|
|
52
|
+
const unsigned char *sha1,
|
|
53
|
+
const unsigned char *sha2)
|
|
29
54
|
{
|
|
30
55
|
return memcmp(sha1, sha2, GIT_OID_RAWSZ);
|
|
31
56
|
}
|
|
32
57
|
|
|
58
|
+
GIT_INLINE(int) git_oid_raw_cpy(
|
|
59
|
+
unsigned char *dst,
|
|
60
|
+
const unsigned char *src)
|
|
61
|
+
{
|
|
62
|
+
memcpy(dst, src, GIT_OID_RAWSZ);
|
|
63
|
+
return 0;
|
|
64
|
+
}
|
|
65
|
+
|
|
33
66
|
/*
|
|
34
67
|
* Compare two oid structures.
|
|
35
68
|
*
|
|
@@ -39,7 +72,7 @@ GIT_INLINE(int) git_oid__hashcmp(const unsigned char *sha1, const unsigned char
|
|
|
39
72
|
*/
|
|
40
73
|
GIT_INLINE(int) git_oid__cmp(const git_oid *a, const git_oid *b)
|
|
41
74
|
{
|
|
42
|
-
return
|
|
75
|
+
return git_oid_raw_cmp(a->id, b->id);
|
|
43
76
|
}
|
|
44
77
|
|
|
45
78
|
GIT_INLINE(void) git_oid__cpy_prefix(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|