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
|
@@ -1001,13 +1001,14 @@ int get_delta_base(
|
|
|
1001
1001
|
base_offset = delta_obj_offset - unsigned_base_offset;
|
|
1002
1002
|
*curpos += used;
|
|
1003
1003
|
} else if (type == GIT_OBJECT_REF_DELTA) {
|
|
1004
|
+
git_oid base_oid;
|
|
1005
|
+
git_oid_fromraw(&base_oid, base_info);
|
|
1006
|
+
|
|
1004
1007
|
/* If we have the cooperative cache, search in it first */
|
|
1005
1008
|
if (p->has_cache) {
|
|
1006
1009
|
struct git_pack_entry *entry;
|
|
1007
|
-
git_oid oid;
|
|
1008
1010
|
|
|
1009
|
-
|
|
1010
|
-
if ((entry = git_oidmap_get(p->idx_cache, &oid)) != NULL) {
|
|
1011
|
+
if ((entry = git_oidmap_get(p->idx_cache, &base_oid)) != NULL) {
|
|
1011
1012
|
if (entry->offset == 0)
|
|
1012
1013
|
return packfile_error("delta offset is zero");
|
|
1013
1014
|
|
|
@@ -1024,7 +1025,7 @@ int get_delta_base(
|
|
|
1024
1025
|
}
|
|
1025
1026
|
|
|
1026
1027
|
/* The base entry _must_ be in the same pack */
|
|
1027
|
-
if (pack_entry_find_offset(&base_offset, &unused, p,
|
|
1028
|
+
if (pack_entry_find_offset(&base_offset, &unused, p, &base_oid, GIT_OID_HEXSZ) < 0)
|
|
1028
1029
|
return packfile_error("base entry delta is not in the same pack");
|
|
1029
1030
|
*curpos += 20;
|
|
1030
1031
|
} else
|
|
@@ -1082,7 +1083,7 @@ static int packfile_open_locked(struct git_pack_file *p)
|
|
|
1082
1083
|
{
|
|
1083
1084
|
struct stat st;
|
|
1084
1085
|
struct git_pack_header hdr;
|
|
1085
|
-
|
|
1086
|
+
unsigned char sha1[GIT_OID_RAWSZ];
|
|
1086
1087
|
unsigned char *idx_sha1;
|
|
1087
1088
|
|
|
1088
1089
|
if (pack_index_open_locked(p) < 0)
|
|
@@ -1130,12 +1131,12 @@ static int packfile_open_locked(struct git_pack_file *p)
|
|
|
1130
1131
|
|
|
1131
1132
|
/* Verify the pack matches its index. */
|
|
1132
1133
|
if (p->num_objects != ntohl(hdr.hdr_entries) ||
|
|
1133
|
-
|
|
1134
|
+
p_pread(p->mwf.fd, sha1, GIT_OID_RAWSZ, p->mwf.size - GIT_OID_RAWSZ) < 0)
|
|
1134
1135
|
goto cleanup;
|
|
1135
1136
|
|
|
1136
1137
|
idx_sha1 = ((unsigned char *)p->index_map.data) + p->index_map.len - 40;
|
|
1137
1138
|
|
|
1138
|
-
if (
|
|
1139
|
+
if (git_oid_raw_cmp(sha1, idx_sha1) != 0)
|
|
1139
1140
|
goto cleanup;
|
|
1140
1141
|
|
|
1141
1142
|
if (git_mwindow_file_register(&p->mwf) < 0)
|
|
@@ -1340,10 +1341,14 @@ int git_pack_foreach_entry(
|
|
|
1340
1341
|
}
|
|
1341
1342
|
|
|
1342
1343
|
git_vector_free(&offsets);
|
|
1343
|
-
p->oids = (
|
|
1344
|
+
p->oids = (unsigned char **)git_vector_detach(NULL, NULL, &oids);
|
|
1344
1345
|
}
|
|
1345
1346
|
|
|
1346
|
-
/*
|
|
1347
|
+
/*
|
|
1348
|
+
* We need to copy the OIDs to another array before we
|
|
1349
|
+
* relinquish the lock to avoid races. We can also take
|
|
1350
|
+
* this opportunity to put them into normal form.
|
|
1351
|
+
*/
|
|
1347
1352
|
git_array_init_to_size(oids, p->num_objects);
|
|
1348
1353
|
if (!oids.ptr) {
|
|
1349
1354
|
git_mutex_unlock(&p->lock);
|
|
@@ -1357,7 +1362,7 @@ int git_pack_foreach_entry(
|
|
|
1357
1362
|
git_array_clear(oids);
|
|
1358
1363
|
GIT_ERROR_CHECK_ALLOC(oid);
|
|
1359
1364
|
}
|
|
1360
|
-
|
|
1365
|
+
git_oid_fromraw(oid, p->oids[i]);
|
|
1361
1366
|
}
|
|
1362
1367
|
|
|
1363
1368
|
git_mutex_unlock(&p->lock);
|
|
@@ -1380,7 +1385,7 @@ int git_pack_foreach_entry_offset(
|
|
|
1380
1385
|
{
|
|
1381
1386
|
const unsigned char *index;
|
|
1382
1387
|
off64_t current_offset;
|
|
1383
|
-
|
|
1388
|
+
git_oid current_oid;
|
|
1384
1389
|
uint32_t i;
|
|
1385
1390
|
int error = 0;
|
|
1386
1391
|
|
|
@@ -1422,8 +1427,9 @@ int git_pack_foreach_entry_offset(
|
|
|
1422
1427
|
current_offset = (((off64_t)ntohl(*((uint32_t *)(large_offset_ptr + 0)))) << 32) |
|
|
1423
1428
|
ntohl(*((uint32_t *)(large_offset_ptr + 4)));
|
|
1424
1429
|
}
|
|
1425
|
-
|
|
1426
|
-
|
|
1430
|
+
|
|
1431
|
+
git_oid_fromraw(¤t_oid, (index + 20 * i));
|
|
1432
|
+
if ((error = cb(¤t_oid, current_offset, data)) != 0) {
|
|
1427
1433
|
error = git_error_set_after_callback(error);
|
|
1428
1434
|
goto cleanup;
|
|
1429
1435
|
}
|
|
@@ -1431,8 +1437,8 @@ int git_pack_foreach_entry_offset(
|
|
|
1431
1437
|
} else {
|
|
1432
1438
|
for (i = 0; i < p->num_objects; i++) {
|
|
1433
1439
|
current_offset = ntohl(*(const uint32_t *)(index + 24 * i));
|
|
1434
|
-
current_oid
|
|
1435
|
-
if ((error = cb(current_oid, current_offset, data)) != 0) {
|
|
1440
|
+
git_oid_fromraw(¤t_oid, (index + 24 * i + 4));
|
|
1441
|
+
if ((error = cb(¤t_oid, current_offset, data)) != 0) {
|
|
1436
1442
|
error = git_error_set_after_callback(error);
|
|
1437
1443
|
goto cleanup;
|
|
1438
1444
|
}
|
|
@@ -1451,7 +1457,7 @@ int git_pack__lookup_sha1(const void *oid_lookup_table, size_t stride, unsigned
|
|
|
1451
1457
|
|
|
1452
1458
|
while (lo < hi) {
|
|
1453
1459
|
unsigned mi = (lo + hi) / 2;
|
|
1454
|
-
int cmp =
|
|
1460
|
+
int cmp = git_oid_raw_cmp(base + mi * stride, oid_prefix);
|
|
1455
1461
|
|
|
1456
1462
|
if (!cmp)
|
|
1457
1463
|
return mi;
|
|
@@ -1530,7 +1536,7 @@ static int pack_entry_find_offset(
|
|
|
1530
1536
|
if (pos < (int)p->num_objects) {
|
|
1531
1537
|
current = index + pos * stride;
|
|
1532
1538
|
|
|
1533
|
-
if (!
|
|
1539
|
+
if (!git_oid_raw_ncmp(short_oid->id, current, len))
|
|
1534
1540
|
found = 1;
|
|
1535
1541
|
}
|
|
1536
1542
|
}
|
|
@@ -1539,7 +1545,7 @@ static int pack_entry_find_offset(
|
|
|
1539
1545
|
/* Check for ambiguousity */
|
|
1540
1546
|
const unsigned char *next = current + stride;
|
|
1541
1547
|
|
|
1542
|
-
if (!
|
|
1548
|
+
if (!git_oid_raw_ncmp(short_oid->id, next, len)) {
|
|
1543
1549
|
found = 2;
|
|
1544
1550
|
}
|
|
1545
1551
|
}
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
#include "offmap.h"
|
|
20
20
|
#include "oidmap.h"
|
|
21
21
|
#include "zstream.h"
|
|
22
|
+
#include "oid.h"
|
|
22
23
|
|
|
23
24
|
/**
|
|
24
25
|
* Function type for callbacks from git_pack_foreach_entry_offset.
|
|
@@ -32,7 +33,7 @@ typedef int git_pack_foreach_entry_offset_cb(
|
|
|
32
33
|
|
|
33
34
|
#define PACK_SIGNATURE 0x5041434b /* "PACK" */
|
|
34
35
|
#define PACK_VERSION 2
|
|
35
|
-
#define pack_version_ok(v) ((v) == htonl(2)
|
|
36
|
+
#define pack_version_ok(v) ((v) == htonl(2))
|
|
36
37
|
struct git_pack_header {
|
|
37
38
|
uint32_t hdr_signature;
|
|
38
39
|
uint32_t hdr_version;
|
|
@@ -104,7 +105,7 @@ struct git_pack_file {
|
|
|
104
105
|
git_time_t mtime;
|
|
105
106
|
unsigned pack_local:1, pack_keep:1, has_cache:1;
|
|
106
107
|
git_oidmap *idx_cache;
|
|
107
|
-
|
|
108
|
+
unsigned char **oids;
|
|
108
109
|
|
|
109
110
|
git_pack_cache bases; /* delta base cache */
|
|
110
111
|
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
#define ONTO_FILE "onto"
|
|
36
36
|
#define ONTO_NAME_FILE "onto_name"
|
|
37
37
|
#define QUIET_FILE "quiet"
|
|
38
|
+
#define INTERACTIVE_FILE "interactive"
|
|
38
39
|
|
|
39
40
|
#define MSGNUM_FILE "msgnum"
|
|
40
41
|
#define END_FILE "end"
|
|
@@ -92,6 +93,7 @@ static int rebase_state_type(
|
|
|
92
93
|
git_repository *repo)
|
|
93
94
|
{
|
|
94
95
|
git_str path = GIT_STR_INIT;
|
|
96
|
+
git_str interactive_path = GIT_STR_INIT;
|
|
95
97
|
git_rebase_t type = GIT_REBASE_NONE;
|
|
96
98
|
|
|
97
99
|
if (git_str_joinpath(&path, repo->gitdir, REBASE_APPLY_DIR) < 0)
|
|
@@ -107,7 +109,14 @@ static int rebase_state_type(
|
|
|
107
109
|
return -1;
|
|
108
110
|
|
|
109
111
|
if (git_fs_path_isdir(git_str_cstr(&path))) {
|
|
110
|
-
|
|
112
|
+
if (git_str_joinpath(&interactive_path, path.ptr, INTERACTIVE_FILE) < 0)
|
|
113
|
+
return -1;
|
|
114
|
+
|
|
115
|
+
if (git_fs_path_isfile(interactive_path.ptr))
|
|
116
|
+
type = GIT_REBASE_INTERACTIVE;
|
|
117
|
+
else
|
|
118
|
+
type = GIT_REBASE_MERGE;
|
|
119
|
+
|
|
111
120
|
goto done;
|
|
112
121
|
}
|
|
113
122
|
|
|
@@ -118,6 +127,7 @@ done:
|
|
|
118
127
|
*path_out = git_str_detach(&path);
|
|
119
128
|
|
|
120
129
|
git_str_dispose(&path);
|
|
130
|
+
git_str_dispose(&interactive_path);
|
|
121
131
|
|
|
122
132
|
return 0;
|
|
123
133
|
}
|
|
File without changes
|
|
File without changes
|
|
@@ -740,7 +740,7 @@ static int packed_lookup(
|
|
|
740
740
|
return 0;
|
|
741
741
|
}
|
|
742
742
|
}
|
|
743
|
-
return
|
|
743
|
+
return ref_error_notfound(ref_name);
|
|
744
744
|
|
|
745
745
|
parse_failed:
|
|
746
746
|
git_error_set(GIT_ERROR_REFERENCE, "corrupted packed references file");
|
|
@@ -1361,7 +1361,11 @@ static int packed_write(refdb_fs_backend *backend)
|
|
|
1361
1361
|
|
|
1362
1362
|
for (i = 0; i < git_sortedcache_entrycount(refcache); ++i) {
|
|
1363
1363
|
struct packref *ref = git_sortedcache_entry(refcache, i);
|
|
1364
|
-
|
|
1364
|
+
|
|
1365
|
+
GIT_ASSERT_WITH_CLEANUP(ref, {
|
|
1366
|
+
error = -1;
|
|
1367
|
+
goto fail;
|
|
1368
|
+
});
|
|
1365
1369
|
|
|
1366
1370
|
if ((error = packed_find_peel(backend, ref)) < 0)
|
|
1367
1371
|
goto fail;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1830,7 +1830,7 @@ static int update_one_tip(
|
|
|
1830
1830
|
}
|
|
1831
1831
|
|
|
1832
1832
|
if (error == GIT_ENOTFOUND) {
|
|
1833
|
-
memset(&old, 0,
|
|
1833
|
+
memset(&old, 0, sizeof(git_oid));
|
|
1834
1834
|
error = 0;
|
|
1835
1835
|
|
|
1836
1836
|
if (autotag && (error = git_vector_insert(update_heads, head)) < 0)
|
|
@@ -1895,8 +1895,11 @@ static int update_tips_for_spec(
|
|
|
1895
1895
|
if (git_oid__is_hexstr(spec->src)) {
|
|
1896
1896
|
git_oid id;
|
|
1897
1897
|
|
|
1898
|
-
if ((error = git_oid_fromstr(&id, spec->src)) < 0
|
|
1899
|
-
|
|
1898
|
+
if ((error = git_oid_fromstr(&id, spec->src)) < 0)
|
|
1899
|
+
goto on_error;
|
|
1900
|
+
|
|
1901
|
+
if (spec->dst &&
|
|
1902
|
+
(error = update_ref(remote, spec->dst, &id, log_message, callbacks)) < 0)
|
|
1900
1903
|
goto on_error;
|
|
1901
1904
|
|
|
1902
1905
|
git_oid_cpy(&oid_head.oid, &id);
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
#include "git2/remote.h"
|
|
13
13
|
#include "git2/transport.h"
|
|
14
|
+
#include "git2/sys/remote.h"
|
|
14
15
|
#include "git2/sys/transport.h"
|
|
15
16
|
|
|
16
17
|
#include "refspec.h"
|
|
@@ -53,7 +54,6 @@ int git_remote_connect_options_normalize(
|
|
|
53
54
|
git_remote_connect_options *dst,
|
|
54
55
|
git_repository *repo,
|
|
55
56
|
const git_remote_connect_options *src);
|
|
56
|
-
void git_remote_connect_options_dispose(git_remote_connect_options *opts);
|
|
57
57
|
|
|
58
58
|
int git_remote_capabilities(unsigned int *out, git_remote *remote);
|
|
59
59
|
|
|
File without changes
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
# include "win32/w32_util.h"
|
|
40
40
|
#endif
|
|
41
41
|
|
|
42
|
+
bool git_repository__validate_ownership = true;
|
|
42
43
|
bool git_repository__fsync_gitdir = false;
|
|
43
44
|
|
|
44
45
|
static const struct {
|
|
@@ -65,6 +66,7 @@ static const struct {
|
|
|
65
66
|
|
|
66
67
|
static int check_repositoryformatversion(int *version, git_config *config);
|
|
67
68
|
static int check_extensions(git_config *config, int version);
|
|
69
|
+
static int load_global_config(git_config **config);
|
|
68
70
|
|
|
69
71
|
#define GIT_COMMONDIR_FILE "commondir"
|
|
70
72
|
#define GIT_GITDIR_FILE "gitdir"
|
|
@@ -483,6 +485,116 @@ static int read_gitfile(git_str *path_out, const char *file_path)
|
|
|
483
485
|
return error;
|
|
484
486
|
}
|
|
485
487
|
|
|
488
|
+
typedef struct {
|
|
489
|
+
const char *repo_path;
|
|
490
|
+
git_str tmp;
|
|
491
|
+
bool *is_safe;
|
|
492
|
+
} validate_ownership_data;
|
|
493
|
+
|
|
494
|
+
static int validate_ownership_cb(const git_config_entry *entry, void *payload)
|
|
495
|
+
{
|
|
496
|
+
validate_ownership_data *data = payload;
|
|
497
|
+
|
|
498
|
+
if (strcmp(entry->value, "") == 0)
|
|
499
|
+
*data->is_safe = false;
|
|
500
|
+
|
|
501
|
+
if (git_fs_path_prettify_dir(&data->tmp, entry->value, NULL) == 0 &&
|
|
502
|
+
strcmp(data->tmp.ptr, data->repo_path) == 0)
|
|
503
|
+
*data->is_safe = true;
|
|
504
|
+
|
|
505
|
+
return 0;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
static int validate_ownership_config(bool *is_safe, const char *path)
|
|
509
|
+
{
|
|
510
|
+
validate_ownership_data ownership_data = {
|
|
511
|
+
path, GIT_STR_INIT, is_safe
|
|
512
|
+
};
|
|
513
|
+
git_config *config;
|
|
514
|
+
int error;
|
|
515
|
+
|
|
516
|
+
if (load_global_config(&config) != 0)
|
|
517
|
+
return 0;
|
|
518
|
+
|
|
519
|
+
error = git_config_get_multivar_foreach(config,
|
|
520
|
+
"safe.directory", NULL,
|
|
521
|
+
validate_ownership_cb,
|
|
522
|
+
&ownership_data);
|
|
523
|
+
|
|
524
|
+
git_config_free(config);
|
|
525
|
+
git_str_dispose(&ownership_data.tmp);
|
|
526
|
+
|
|
527
|
+
return error;
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
static int validate_ownership_path(bool *is_safe, const char *path)
|
|
531
|
+
{
|
|
532
|
+
git_fs_path_owner_t owner_level =
|
|
533
|
+
GIT_FS_PATH_OWNER_CURRENT_USER |
|
|
534
|
+
GIT_FS_PATH_USER_IS_ADMINISTRATOR |
|
|
535
|
+
GIT_FS_PATH_OWNER_RUNNING_SUDO;
|
|
536
|
+
int error = 0;
|
|
537
|
+
|
|
538
|
+
if (path)
|
|
539
|
+
error = git_fs_path_owner_is(is_safe, path, owner_level);
|
|
540
|
+
|
|
541
|
+
if (error == GIT_ENOTFOUND) {
|
|
542
|
+
*is_safe = true;
|
|
543
|
+
error = 0;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
return error;
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
static int validate_ownership(git_repository *repo)
|
|
550
|
+
{
|
|
551
|
+
const char *validation_paths[3] = { NULL }, *path;
|
|
552
|
+
size_t validation_len = 0, i;
|
|
553
|
+
bool is_safe = false;
|
|
554
|
+
int error = 0;
|
|
555
|
+
|
|
556
|
+
/*
|
|
557
|
+
* If there's a worktree, validate the permissions to it *and*
|
|
558
|
+
* the git directory, and use the worktree as the configuration
|
|
559
|
+
* key for allowlisting the directory. In a bare setup, only
|
|
560
|
+
* look at the gitdir and use that as the allowlist. So we
|
|
561
|
+
* examine all `validation_paths` but use only the first as
|
|
562
|
+
* the configuration lookup.
|
|
563
|
+
*/
|
|
564
|
+
|
|
565
|
+
if (repo->workdir)
|
|
566
|
+
validation_paths[validation_len++] = repo->workdir;
|
|
567
|
+
|
|
568
|
+
if (repo->gitlink)
|
|
569
|
+
validation_paths[validation_len++] = repo->gitlink;
|
|
570
|
+
|
|
571
|
+
validation_paths[validation_len++] = repo->gitdir;
|
|
572
|
+
|
|
573
|
+
for (i = 0; i < validation_len; i++) {
|
|
574
|
+
path = validation_paths[i];
|
|
575
|
+
|
|
576
|
+
if ((error = validate_ownership_path(&is_safe, path)) < 0)
|
|
577
|
+
goto done;
|
|
578
|
+
|
|
579
|
+
if (!is_safe)
|
|
580
|
+
break;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
if (is_safe ||
|
|
584
|
+
(error = validate_ownership_config(&is_safe, validation_paths[0])) < 0)
|
|
585
|
+
goto done;
|
|
586
|
+
|
|
587
|
+
if (!is_safe) {
|
|
588
|
+
git_error_set(GIT_ERROR_CONFIG,
|
|
589
|
+
"repository path '%s' is not owned by current user",
|
|
590
|
+
path);
|
|
591
|
+
error = GIT_EOWNER;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
done:
|
|
595
|
+
return error;
|
|
596
|
+
}
|
|
597
|
+
|
|
486
598
|
static int find_repo(
|
|
487
599
|
git_str *gitdir_path,
|
|
488
600
|
git_str *workdir_path,
|
|
@@ -904,16 +1016,23 @@ int git_repository_open_ext(
|
|
|
904
1016
|
if ((error = check_extensions(config, version)) < 0)
|
|
905
1017
|
goto cleanup;
|
|
906
1018
|
|
|
907
|
-
if ((flags & GIT_REPOSITORY_OPEN_BARE) != 0)
|
|
1019
|
+
if ((flags & GIT_REPOSITORY_OPEN_BARE) != 0) {
|
|
908
1020
|
repo->is_bare = 1;
|
|
909
|
-
else {
|
|
910
|
-
|
|
1021
|
+
} else {
|
|
911
1022
|
if (config &&
|
|
912
1023
|
((error = load_config_data(repo, config)) < 0 ||
|
|
913
1024
|
(error = load_workdir(repo, config, &workdir)) < 0))
|
|
914
1025
|
goto cleanup;
|
|
915
1026
|
}
|
|
916
1027
|
|
|
1028
|
+
/*
|
|
1029
|
+
* Ensure that the git directory and worktree are
|
|
1030
|
+
* owned by the current user.
|
|
1031
|
+
*/
|
|
1032
|
+
if (git_repository__validate_ownership &&
|
|
1033
|
+
(error = validate_ownership(repo)) < 0)
|
|
1034
|
+
goto cleanup;
|
|
1035
|
+
|
|
917
1036
|
cleanup:
|
|
918
1037
|
git_str_dispose(&gitdir);
|
|
919
1038
|
git_str_dispose(&workdir);
|
|
@@ -1462,6 +1581,7 @@ static int check_valid_extension(const git_config_entry *entry, void *payload)
|
|
|
1462
1581
|
}
|
|
1463
1582
|
|
|
1464
1583
|
for (i = 0; i < ARRAY_SIZE(builtin_extensions); i++) {
|
|
1584
|
+
git_str_clear(&cfg);
|
|
1465
1585
|
extension = builtin_extensions[i];
|
|
1466
1586
|
|
|
1467
1587
|
if ((error = git_str_printf(&cfg, "extensions.%s", extension)) < 0)
|
|
@@ -1606,13 +1726,40 @@ static bool is_filesystem_case_insensitive(const char *gitdir_path)
|
|
|
1606
1726
|
return is_insensitive;
|
|
1607
1727
|
}
|
|
1608
1728
|
|
|
1609
|
-
|
|
1729
|
+
/*
|
|
1730
|
+
* Return a configuration object with only the global and system
|
|
1731
|
+
* configurations; no repository-level configuration.
|
|
1732
|
+
*/
|
|
1733
|
+
static int load_global_config(git_config **config)
|
|
1610
1734
|
{
|
|
1611
|
-
git_config *config = NULL;
|
|
1612
1735
|
git_str global_buf = GIT_STR_INIT;
|
|
1613
1736
|
git_str xdg_buf = GIT_STR_INIT;
|
|
1614
1737
|
git_str system_buf = GIT_STR_INIT;
|
|
1615
1738
|
git_str programdata_buf = GIT_STR_INIT;
|
|
1739
|
+
int error;
|
|
1740
|
+
|
|
1741
|
+
git_config__find_global(&global_buf);
|
|
1742
|
+
git_config__find_xdg(&xdg_buf);
|
|
1743
|
+
git_config__find_system(&system_buf);
|
|
1744
|
+
git_config__find_programdata(&programdata_buf);
|
|
1745
|
+
|
|
1746
|
+
error = load_config(config, NULL,
|
|
1747
|
+
path_unless_empty(&global_buf),
|
|
1748
|
+
path_unless_empty(&xdg_buf),
|
|
1749
|
+
path_unless_empty(&system_buf),
|
|
1750
|
+
path_unless_empty(&programdata_buf));
|
|
1751
|
+
|
|
1752
|
+
git_str_dispose(&global_buf);
|
|
1753
|
+
git_str_dispose(&xdg_buf);
|
|
1754
|
+
git_str_dispose(&system_buf);
|
|
1755
|
+
git_str_dispose(&programdata_buf);
|
|
1756
|
+
|
|
1757
|
+
return error;
|
|
1758
|
+
}
|
|
1759
|
+
|
|
1760
|
+
static bool are_symlinks_supported(const char *wd_path)
|
|
1761
|
+
{
|
|
1762
|
+
git_config *config = NULL;
|
|
1616
1763
|
int symlinks = 0;
|
|
1617
1764
|
|
|
1618
1765
|
/*
|
|
@@ -1623,19 +1770,9 @@ static bool are_symlinks_supported(const char *wd_path)
|
|
|
1623
1770
|
* _not_ set, then we do not test or enable symlink support.
|
|
1624
1771
|
*/
|
|
1625
1772
|
#ifdef GIT_WIN32
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
git_config__find_programdata(&programdata_buf);
|
|
1630
|
-
|
|
1631
|
-
if (load_config(&config, NULL,
|
|
1632
|
-
path_unless_empty(&global_buf),
|
|
1633
|
-
path_unless_empty(&xdg_buf),
|
|
1634
|
-
path_unless_empty(&system_buf),
|
|
1635
|
-
path_unless_empty(&programdata_buf)) < 0)
|
|
1636
|
-
goto done;
|
|
1637
|
-
|
|
1638
|
-
if (git_config_get_bool(&symlinks, config, "core.symlinks") < 0 || !symlinks)
|
|
1773
|
+
if (load_global_config(&config) < 0 ||
|
|
1774
|
+
git_config_get_bool(&symlinks, config, "core.symlinks") < 0 ||
|
|
1775
|
+
!symlinks)
|
|
1639
1776
|
goto done;
|
|
1640
1777
|
#endif
|
|
1641
1778
|
|
|
@@ -1643,10 +1780,6 @@ static bool are_symlinks_supported(const char *wd_path)
|
|
|
1643
1780
|
goto done;
|
|
1644
1781
|
|
|
1645
1782
|
done:
|
|
1646
|
-
git_str_dispose(&global_buf);
|
|
1647
|
-
git_str_dispose(&xdg_buf);
|
|
1648
|
-
git_str_dispose(&system_buf);
|
|
1649
|
-
git_str_dispose(&programdata_buf);
|
|
1650
1783
|
git_config_free(config);
|
|
1651
1784
|
return symlinks != 0;
|
|
1652
1785
|
}
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|