rugged 1.3.2 → 1.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +34 -2
- data/ext/rugged/extconf.rb +7 -4
- data/ext/rugged/rugged.c +16 -0
- data/ext/rugged/rugged.h +4 -0
- data/ext/rugged/rugged_blame.c +2 -0
- data/ext/rugged/rugged_blob.c +3 -0
- data/ext/rugged/rugged_commit.c +1 -0
- data/ext/rugged/rugged_config.c +9 -2
- data/ext/rugged/rugged_diff.c +1 -0
- data/ext/rugged/rugged_index.c +2 -0
- data/ext/rugged/rugged_patch.c +1 -0
- data/ext/rugged/rugged_rebase.c +1 -0
- data/ext/rugged/rugged_reference.c +1 -0
- data/ext/rugged/rugged_remote.c +28 -10
- data/ext/rugged/rugged_repo.c +7 -9
- data/ext/rugged/rugged_revwalk.c +5 -1
- data/ext/rugged/rugged_settings.c +5 -0
- data/ext/rugged/rugged_submodule.c +1 -0
- data/ext/rugged/rugged_tag.c +1 -0
- data/ext/rugged/rugged_tree.c +4 -0
- data/lib/rugged/index.rb +1 -1
- data/lib/rugged/tree.rb +5 -1
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +132 -288
- data/vendor/libgit2/COPYING +106 -19
- data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
- data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
- data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
- data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
- data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
- data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
- data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
- data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
- data/vendor/libgit2/cmake/{FindHTTP_Parser.cmake → FindHTTPParser.cmake} +17 -17
- data/vendor/libgit2/cmake/FindIconv.cmake +27 -27
- data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
- data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
- data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
- data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
- data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
- data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
- data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
- data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
- data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
- data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
- data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
- data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
- data/vendor/libgit2/cmake/SelectHTTPParser.cmake +19 -0
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +100 -100
- data/vendor/libgit2/cmake/SelectHashes.cmake +91 -53
- data/vendor/libgit2/cmake/SelectRegex.cmake +51 -0
- data/vendor/libgit2/cmake/SelectSSH.cmake +41 -0
- data/vendor/libgit2/cmake/SelectWinHTTP.cmake +17 -0
- data/vendor/libgit2/cmake/SelectZlib.cmake +34 -0
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +3 -1
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +88 -88
- data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
- data/vendor/libgit2/deps/zlib/adler32.c +7 -0
- data/vendor/libgit2/deps/zlib/crc32.c +975 -288
- data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
- data/vendor/libgit2/deps/zlib/deflate.c +83 -31
- data/vendor/libgit2/deps/zlib/deflate.h +12 -15
- data/vendor/libgit2/deps/zlib/gzguts.h +3 -2
- data/vendor/libgit2/deps/zlib/infback.c +2 -1
- data/vendor/libgit2/deps/zlib/inffast.c +14 -14
- data/vendor/libgit2/deps/zlib/inflate.c +39 -8
- data/vendor/libgit2/deps/zlib/inflate.h +3 -2
- data/vendor/libgit2/deps/zlib/inftrees.c +3 -3
- data/vendor/libgit2/deps/zlib/trees.c +27 -48
- data/vendor/libgit2/deps/zlib/zlib.h +126 -100
- data/vendor/libgit2/deps/zlib/zutil.c +2 -2
- data/vendor/libgit2/deps/zlib/zutil.h +12 -9
- data/vendor/libgit2/include/git2/apply.h +16 -2
- data/vendor/libgit2/include/git2/attr.h +11 -2
- data/vendor/libgit2/include/git2/blame.h +4 -1
- data/vendor/libgit2/include/git2/blob.h +14 -1
- data/vendor/libgit2/include/git2/branch.h +4 -2
- data/vendor/libgit2/include/git2/buffer.h +18 -78
- data/vendor/libgit2/include/git2/cert.h +2 -2
- data/vendor/libgit2/include/git2/checkout.h +5 -2
- data/vendor/libgit2/include/git2/clone.h +3 -3
- data/vendor/libgit2/include/git2/commit.h +2 -0
- data/vendor/libgit2/include/git2/common.h +28 -7
- data/vendor/libgit2/include/git2/config.h +25 -9
- data/vendor/libgit2/include/git2/credential.h +2 -1
- data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
- data/vendor/libgit2/include/git2/deprecated.h +9 -1
- data/vendor/libgit2/include/git2/describe.h +7 -2
- data/vendor/libgit2/include/git2/diff.h +18 -10
- data/vendor/libgit2/include/git2/email.h +1 -1
- data/vendor/libgit2/include/git2/errors.h +17 -3
- data/vendor/libgit2/include/git2/experimental.h +20 -0
- data/vendor/libgit2/include/git2/filter.h +7 -2
- data/vendor/libgit2/include/git2/graph.h +1 -0
- data/vendor/libgit2/include/git2/ignore.h +1 -1
- data/vendor/libgit2/include/git2/index.h +11 -5
- data/vendor/libgit2/include/git2/indexer.h +48 -0
- data/vendor/libgit2/include/git2/merge.h +24 -4
- data/vendor/libgit2/include/git2/message.h +2 -0
- data/vendor/libgit2/include/git2/object.h +49 -0
- data/vendor/libgit2/include/git2/odb.h +94 -13
- data/vendor/libgit2/include/git2/odb_backend.h +107 -19
- data/vendor/libgit2/include/git2/oid.h +115 -15
- data/vendor/libgit2/include/git2/pack.h +24 -8
- data/vendor/libgit2/include/git2/patch.h +8 -0
- data/vendor/libgit2/include/git2/pathspec.h +1 -1
- data/vendor/libgit2/include/git2/proxy.h +1 -1
- data/vendor/libgit2/include/git2/rebase.h +9 -1
- data/vendor/libgit2/include/git2/refdb.h +3 -0
- data/vendor/libgit2/include/git2/reflog.h +1 -1
- data/vendor/libgit2/include/git2/refs.h +2 -2
- data/vendor/libgit2/include/git2/remote.h +184 -37
- data/vendor/libgit2/include/git2/repository.h +34 -10
- data/vendor/libgit2/include/git2/reset.h +2 -2
- data/vendor/libgit2/include/git2/revparse.h +1 -1
- data/vendor/libgit2/include/git2/revwalk.h +4 -1
- data/vendor/libgit2/include/git2/signature.h +1 -1
- data/vendor/libgit2/include/git2/stash.h +61 -7
- data/vendor/libgit2/include/git2/status.h +14 -5
- data/vendor/libgit2/include/git2/strarray.h +0 -13
- data/vendor/libgit2/include/git2/submodule.h +7 -2
- data/vendor/libgit2/include/git2/sys/commit_graph.h +1 -1
- data/vendor/libgit2/include/git2/sys/odb_backend.h +3 -6
- data/vendor/libgit2/include/git2/sys/remote.h +46 -0
- data/vendor/libgit2/include/git2/sys/stream.h +1 -1
- data/vendor/libgit2/include/git2/sys/transport.h +46 -39
- data/vendor/libgit2/include/git2/tag.h +1 -0
- data/vendor/libgit2/include/git2/tree.h +4 -3
- data/vendor/libgit2/include/git2/types.h +7 -7
- data/vendor/libgit2/include/git2/version.h +27 -6
- data/vendor/libgit2/include/git2/worktree.h +12 -2
- data/vendor/libgit2/include/git2.h +1 -0
- data/vendor/libgit2/src/CMakeLists.txt +177 -419
- data/vendor/libgit2/src/README.md +12 -0
- data/vendor/libgit2/src/cli/CMakeLists.txt +57 -0
- data/vendor/libgit2/src/cli/README.md +26 -0
- data/vendor/libgit2/src/cli/cli.h +20 -0
- data/vendor/libgit2/src/cli/cmd.c +21 -0
- data/vendor/libgit2/src/cli/cmd.h +33 -0
- data/vendor/libgit2/src/cli/cmd_cat_file.c +204 -0
- data/vendor/libgit2/src/cli/cmd_clone.c +176 -0
- data/vendor/libgit2/src/cli/cmd_hash_object.c +154 -0
- data/vendor/libgit2/src/cli/cmd_help.c +86 -0
- data/vendor/libgit2/src/cli/error.h +51 -0
- data/vendor/libgit2/src/cli/main.c +106 -0
- data/vendor/libgit2/src/cli/opt.c +669 -0
- data/vendor/libgit2/src/cli/opt.h +349 -0
- data/vendor/libgit2/src/cli/opt_usage.c +194 -0
- data/vendor/libgit2/src/cli/opt_usage.h +35 -0
- data/vendor/libgit2/src/cli/progress.c +345 -0
- data/vendor/libgit2/src/cli/progress.h +117 -0
- data/vendor/libgit2/src/cli/sighandler.h +20 -0
- data/vendor/libgit2/src/cli/unix/sighandler.c +36 -0
- data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
- data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
- data/vendor/libgit2/src/libgit2/CMakeLists.txt +141 -0
- data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +1 -1
- data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
- data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +18 -18
- data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
- data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +18 -18
- data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +18 -18
- data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +4 -4
- data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +18 -13
- data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +2 -0
- data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -1
- data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
- data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
- data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
- data/vendor/libgit2/src/{branch.h → libgit2/branch.h} +15 -3
- data/vendor/libgit2/src/libgit2/buf.c +126 -0
- data/vendor/libgit2/src/libgit2/buf.h +50 -0
- data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +74 -68
- data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +13 -13
- data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +96 -67
- data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +178 -73
- data/vendor/libgit2/src/libgit2/commit.h +87 -0
- data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +122 -89
- data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +14 -4
- data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +7 -4
- data/vendor/libgit2/src/libgit2/common.h +55 -0
- data/vendor/libgit2/src/{config.c → libgit2/config.c} +101 -69
- data/vendor/libgit2/src/{config.h → libgit2/config.h} +15 -2
- data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +105 -93
- data/vendor/libgit2/src/{config_mem.c → libgit2/config_mem.c} +9 -9
- data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +27 -23
- data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
- data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +35 -27
- data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +30 -9
- data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +2 -4
- data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +34 -36
- data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +3 -3
- data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +44 -26
- data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +47 -18
- data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
- data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +112 -100
- data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
- data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
- data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +13 -8
- data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
- data/vendor/libgit2/src/{email.c → libgit2/email.c} +55 -39
- data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
- data/vendor/libgit2/src/{errors.c → libgit2/errors.c} +18 -18
- data/vendor/libgit2/src/{errors.h → libgit2/errors.h} +1 -2
- data/vendor/libgit2/src/libgit2/experimental.h.in +13 -0
- data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +72 -27
- data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -1
- data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +23 -23
- data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +127 -53
- data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
- data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
- data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +35 -34
- data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
- data/vendor/libgit2/src/{index.c → libgit2/index.c} +91 -90
- data/vendor/libgit2/src/{index.h → libgit2/index.h} +6 -3
- data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +173 -92
- data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +71 -61
- data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +5 -5
- data/vendor/libgit2/src/{libgit2.c → libgit2/libgit2.c} +46 -11
- data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +38 -36
- data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +30 -30
- data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
- data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +2 -2
- data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -3
- data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
- data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +112 -92
- data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +5 -4
- data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +15 -12
- data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +5 -2
- data/vendor/libgit2/src/{netops.c → libgit2/netops.c} +1 -2
- data/vendor/libgit2/src/{netops.h → libgit2/netops.h} +1 -1
- data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +25 -34
- data/vendor/libgit2/src/{object.c → libgit2/object.c} +135 -30
- data/vendor/libgit2/src/{object.h → libgit2/object.h} +12 -3
- data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +228 -81
- data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
- data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
- data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +18 -5
- data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +137 -85
- data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +136 -90
- data/vendor/libgit2/src/libgit2/oid.h +273 -0
- data/vendor/libgit2/src/{oidmap.c → libgit2/oidmap.c} +1 -1
- data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +56 -30
- data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +11 -6
- data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +114 -84
- data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +31 -16
- data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +4 -3
- data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
- data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +1 -0
- data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +27 -11
- data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
- data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +29 -29
- data/vendor/libgit2/src/libgit2/path.c +375 -0
- data/vendor/libgit2/src/libgit2/path.h +68 -0
- data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +6 -6
- data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
- data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
- data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
- data/vendor/libgit2/src/{push.c → libgit2/push.c} +43 -38
- data/vendor/libgit2/src/{push.h → libgit2/push.h} +4 -16
- data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
- data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
- data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +119 -107
- data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +506 -197
- data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +7 -5
- data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +1 -2
- data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +34 -32
- data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +2 -2
- data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +32 -37
- data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +5 -2
- data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +718 -420
- data/vendor/libgit2/src/libgit2/remote.h +100 -0
- data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +629 -386
- data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +20 -9
- data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
- data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +14 -14
- data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +71 -42
- data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +12 -8
- data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +12 -6
- data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -1
- data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +235 -61
- data/vendor/libgit2/src/{status.c → libgit2/status.c} +4 -1
- data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
- data/vendor/libgit2/src/libgit2/strarray.h +25 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +8 -6
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +1 -1
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +7 -3
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +3 -3
- data/vendor/libgit2/src/{streams → libgit2/streams}/socket.c +4 -1
- data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +177 -161
- data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +1 -1
- data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
- data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +53 -18
- data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +73 -42
- data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
- data/vendor/libgit2/src/{threadstate.c → libgit2/threadstate.c} +3 -3
- data/vendor/libgit2/src/{threadstate.h → libgit2/threadstate.h} +2 -2
- data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
- data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
- data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +1 -1
- data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +1 -1
- data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +10 -10
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +2 -3
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.c +12 -13
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.c +10 -10
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +0 -1
- data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +9 -11
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +41 -20
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +2 -3
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +75 -66
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +138 -116
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +92 -133
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +35 -32
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +177 -65
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +97 -49
- data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.c +365 -198
- data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +58 -59
- data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +8 -8
- data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +2 -2
- data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +93 -83
- data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +4 -4
- data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +121 -94
- data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
- data/vendor/libgit2/src/libgit2/xdiff/git-xdiff.h +53 -0
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiff.h +15 -15
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.c +134 -108
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.c +23 -7
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xhistogram.c +87 -78
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xinclude.h +1 -12
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmerge.c +104 -117
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xpatience.c +6 -17
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.c +15 -20
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.c +18 -7
- data/vendor/libgit2/src/util/CMakeLists.txt +80 -0
- data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.h +1 -1
- data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
- data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{array.h → util/array.h} +1 -1
- data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
- data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +1 -1
- data/vendor/libgit2/src/{date.c → util/date.c} +14 -20
- data/vendor/libgit2/src/util/date.h +33 -0
- data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +29 -29
- data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +2 -2
- data/vendor/libgit2/src/{path.c → util/fs_path.c} +453 -647
- data/vendor/libgit2/src/{path.h → util/fs_path.h} +221 -188
- data/vendor/libgit2/src/{futils.c → util/futils.c} +135 -90
- data/vendor/libgit2/src/{futils.h → util/futils.h} +28 -15
- data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +15 -1
- data/vendor/libgit2/src/{common.h → util/git2_util.h} +20 -59
- data/vendor/libgit2/src/util/hash/builtin.c +53 -0
- data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
- data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
- data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
- data/vendor/libgit2/src/util/hash/openssl.c +195 -0
- data/vendor/libgit2/src/util/hash/openssl.h +45 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
- data/vendor/libgit2/src/util/hash/sha.h +70 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
- data/vendor/libgit2/src/util/hash/win32.c +549 -0
- data/vendor/libgit2/src/util/hash/win32.h +60 -0
- data/vendor/libgit2/src/util/hash.c +158 -0
- data/vendor/libgit2/src/util/hash.h +61 -0
- data/vendor/libgit2/src/{khash.h → util/khash.h} +1 -1
- data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
- data/vendor/libgit2/src/util/net.c +1003 -0
- data/vendor/libgit2/src/{net.h → util/net.h} +18 -4
- data/vendor/libgit2/src/{pool.h → util/pool.h} +1 -1
- data/vendor/libgit2/src/{posix.c → util/posix.c} +3 -3
- data/vendor/libgit2/src/{posix.h → util/posix.h} +4 -1
- data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +2 -2
- data/vendor/libgit2/src/util/rand.c +234 -0
- data/vendor/libgit2/src/util/rand.h +37 -0
- data/vendor/libgit2/src/{regexp.c → util/regexp.c} +4 -4
- data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
- data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
- data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
- data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +1 -1
- data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +2 -2
- data/vendor/libgit2/src/{buffer.c → util/str.c} +157 -151
- data/vendor/libgit2/src/util/str.h +357 -0
- data/vendor/libgit2/src/{strmap.h → util/strmap.h} +1 -1
- data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
- data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
- data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
- data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
- data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -4
- data/vendor/libgit2/src/{unix → util/unix}/realpath.c +1 -3
- data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
- data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
- data/vendor/libgit2/src/{util.c → util/util.c} +15 -15
- data/vendor/libgit2/src/{util.h → util/util.h} +4 -29
- data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
- data/vendor/libgit2/src/{vector.h → util/vector.h} +2 -2
- data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +140 -9
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
- data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
- data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +12 -28
- data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
- data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
- data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
- data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
- metadata +402 -356
- data/vendor/libgit2/src/buffer.h +0 -374
- data/vendor/libgit2/src/commit.h +0 -46
- data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
- data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
- data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
- data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
- data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
- data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
- data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
- data/vendor/libgit2/src/hash/sha1.h +0 -38
- data/vendor/libgit2/src/hash.c +0 -110
- data/vendor/libgit2/src/hash.h +0 -46
- data/vendor/libgit2/src/message.h +0 -17
- data/vendor/libgit2/src/net.c +0 -540
- data/vendor/libgit2/src/oid.h +0 -51
- data/vendor/libgit2/src/remote.h +0 -55
- data/vendor/libgit2/src/sysdir.c +0 -347
- data/vendor/libgit2/src/win32/findfile.c +0 -230
- data/vendor/libgit2/src/win32/findfile.h +0 -19
- /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
- /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
- /data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +0 -0
- /data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +0 -0
- /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
- /data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +0 -0
- /data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +0 -0
- /data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -0
- /data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +0 -0
- /data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +0 -0
- /data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +0 -0
- /data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +0 -0
- /data/vendor/libgit2/src/{config_entries.c → libgit2/config_entries.c} +0 -0
- /data/vendor/libgit2/src/{config_entries.h → libgit2/config_entries.h} +0 -0
- /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
- /data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +0 -0
- /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
- /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
- /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
- /data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +0 -0
- /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
- /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
- /data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +0 -0
- /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
- /data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +0 -0
- /data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +0 -0
- /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
- /data/vendor/libgit2/src/{idxmap.c → libgit2/idxmap.c} +0 -0
- /data/vendor/libgit2/src/{idxmap.h → libgit2/idxmap.h} +0 -0
- /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
- /data/vendor/libgit2/src/{libgit2.h → libgit2/libgit2.h} +0 -0
- /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
- /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
- /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
- /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
- /data/vendor/libgit2/src/{offmap.c → libgit2/offmap.c} +0 -0
- /data/vendor/libgit2/src/{offmap.h → libgit2/offmap.h} +0 -0
- /data/vendor/libgit2/src/{oidarray.c → libgit2/oidarray.c} +0 -0
- /data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +0 -0
- /data/vendor/libgit2/src/{oidmap.h → libgit2/oidmap.h} +0 -0
- /data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +0 -0
- /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
- /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
- /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
- /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
- /data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +0 -0
- /data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +0 -0
- /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
- /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
- /data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.h +0 -0
- /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmacros.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xtypes.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.h +0 -0
- /data/vendor/libgit2/src/{alloc.c → util/alloc.c} +0 -0
- /data/vendor/libgit2/src/{alloc.h → util/alloc.h} +0 -0
- /data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.c +0 -0
- /data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.c +0 -0
- /data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.c +0 -0
- /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
- /data/vendor/libgit2/src/{integer.h → util/integer.h} +0 -0
- /data/vendor/libgit2/src/{pool.c → util/pool.c} +0 -0
- /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
- /data/vendor/libgit2/src/{strmap.c → util/strmap.c} +0 -0
- /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
- /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
- /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
- /data/vendor/libgit2/src/{vector.c → util/vector.c} +0 -0
- /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/error.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
|
@@ -7,18 +7,20 @@
|
|
|
7
7
|
|
|
8
8
|
#include "common.h"
|
|
9
9
|
|
|
10
|
-
#include "
|
|
11
|
-
#include "git2/sys/odb_backend.h"
|
|
12
|
-
#include "git2/sys/mempack.h"
|
|
10
|
+
#include "buf.h"
|
|
13
11
|
#include "futils.h"
|
|
14
12
|
#include "hash.h"
|
|
15
13
|
#include "odb.h"
|
|
16
14
|
#include "array.h"
|
|
17
15
|
#include "oidmap.h"
|
|
16
|
+
#include "pack-objects.h"
|
|
18
17
|
|
|
19
18
|
#include "git2/odb_backend.h"
|
|
19
|
+
#include "git2/object.h"
|
|
20
20
|
#include "git2/types.h"
|
|
21
21
|
#include "git2/pack.h"
|
|
22
|
+
#include "git2/sys/odb_backend.h"
|
|
23
|
+
#include "git2/sys/mempack.h"
|
|
22
24
|
|
|
23
25
|
struct memobject {
|
|
24
26
|
git_oid oid;
|
|
@@ -100,7 +102,10 @@ static int impl__read_header(size_t *len_p, git_object_t *type_p, git_odb_backen
|
|
|
100
102
|
return 0;
|
|
101
103
|
}
|
|
102
104
|
|
|
103
|
-
int
|
|
105
|
+
static int git_mempack__dump(
|
|
106
|
+
git_str *pack,
|
|
107
|
+
git_repository *repo,
|
|
108
|
+
git_odb_backend *_backend)
|
|
104
109
|
{
|
|
105
110
|
struct memory_packer_db *db = (struct memory_packer_db *)_backend;
|
|
106
111
|
git_packbuilder *packbuilder;
|
|
@@ -120,13 +125,21 @@ int git_mempack_dump(git_buf *pack, git_repository *repo, git_odb_backend *_back
|
|
|
120
125
|
goto cleanup;
|
|
121
126
|
}
|
|
122
127
|
|
|
123
|
-
err =
|
|
128
|
+
err = git_packbuilder__write_buf(pack, packbuilder);
|
|
124
129
|
|
|
125
130
|
cleanup:
|
|
126
131
|
git_packbuilder_free(packbuilder);
|
|
127
132
|
return err;
|
|
128
133
|
}
|
|
129
134
|
|
|
135
|
+
int git_mempack_dump(
|
|
136
|
+
git_buf *pack,
|
|
137
|
+
git_repository *repo,
|
|
138
|
+
git_odb_backend *_backend)
|
|
139
|
+
{
|
|
140
|
+
GIT_BUF_WRAP_PRIVATE(pack, git_mempack__dump, repo, _backend);
|
|
141
|
+
}
|
|
142
|
+
|
|
130
143
|
int git_mempack_reset(git_odb_backend *_backend)
|
|
131
144
|
{
|
|
132
145
|
struct memory_packer_db *db = (struct memory_packer_db *)_backend;
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
|
|
27
27
|
struct pack_backend {
|
|
28
28
|
git_odb_backend parent;
|
|
29
|
+
git_odb_backend_pack_options opts;
|
|
29
30
|
git_midx_file *midx;
|
|
30
31
|
git_vector midx_packs;
|
|
31
32
|
git_vector packs;
|
|
@@ -95,27 +96,27 @@ struct pack_writepack {
|
|
|
95
96
|
* --------------------------------------------------
|
|
96
97
|
*
|
|
97
98
|
* # pack_backend__exists / pack_backend__exists_prefix
|
|
98
|
-
* | Check if the given
|
|
99
|
+
* | Check if the given oid (or an oid prefix) exists in any of the
|
|
99
100
|
* | packs that have been loaded for our ODB.
|
|
100
101
|
* |
|
|
101
102
|
* |-# pack_entry_find / pack_entry_find_prefix
|
|
102
|
-
* | If there is a multi-pack-index present, search the
|
|
103
|
+
* | If there is a multi-pack-index present, search the oid in that
|
|
103
104
|
* | index first. If it is not found there, iterate through all the unindexed
|
|
104
105
|
* | packs that have been preloaded (starting by the pack where the latest
|
|
105
106
|
* | object was found) to try to find the OID in one of them.
|
|
106
107
|
* |
|
|
107
108
|
* |-# git_midx_entry_find
|
|
108
|
-
* | Search for the
|
|
109
|
+
* | Search for the oid in the multi-pack-index. See
|
|
109
110
|
* | <https://github.com/git/git/blob/master/Documentation/technical/pack-format.txt>
|
|
110
111
|
* | for specifics on the multi-pack-index format and how do we find
|
|
111
112
|
* | entries in it.
|
|
112
113
|
* |
|
|
113
114
|
* |-# git_pack_entry_find
|
|
114
|
-
* | Check the index of an individual unindexed pack to see if the
|
|
115
|
-
* | OID can be found. If we can find the offset to that
|
|
115
|
+
* | Check the index of an individual unindexed pack to see if the
|
|
116
|
+
* | OID can be found. If we can find the offset to that inside of the
|
|
116
117
|
* | index, that means the object is contained inside of the packfile and
|
|
117
118
|
* | we can stop searching. Before returning, we verify that the
|
|
118
|
-
* | packfile
|
|
119
|
+
* | packfile behind the index we are searching still exists on disk.
|
|
119
120
|
* |
|
|
120
121
|
* |-# pack_entry_find_offset
|
|
121
122
|
* | Mmap the actual index file to disk if it hasn't been opened
|
|
@@ -141,13 +142,13 @@ struct pack_writepack {
|
|
|
141
142
|
* --------------------------------------------------
|
|
142
143
|
*
|
|
143
144
|
* # pack_backend__read / pack_backend__read_prefix
|
|
144
|
-
* | Check if the given
|
|
145
|
+
* | Check if the given oid (or an oid prefix) exists in any of the
|
|
145
146
|
* | packs that have been loaded for our ODB. If it does, open the packfile and
|
|
146
147
|
* | read from it.
|
|
147
148
|
* |
|
|
148
149
|
* |-# git_packfile_unpack
|
|
149
150
|
* Armed with a packfile and the offset within it, we can finally unpack
|
|
150
|
-
* the object pointed at by the
|
|
151
|
+
* the object pointed at by the oid. This involves mmapping part of
|
|
151
152
|
* the `.pack` file, and uncompressing the object within it (if it is
|
|
152
153
|
* stored in the undelfitied representation), or finding a base object and
|
|
153
154
|
* applying some deltas to its uncompressed representation (if it is stored
|
|
@@ -166,7 +167,7 @@ struct pack_writepack {
|
|
|
166
167
|
|
|
167
168
|
static int packfile_sort__cb(const void *a_, const void *b_);
|
|
168
169
|
|
|
169
|
-
static int packfile_load__cb(void *_data,
|
|
170
|
+
static int packfile_load__cb(void *_data, git_str *path);
|
|
170
171
|
|
|
171
172
|
static int packfile_byname_search_cmp(const void *path, const void *pack_entry);
|
|
172
173
|
|
|
@@ -177,7 +178,7 @@ static int pack_entry_find(struct git_pack_entry *e,
|
|
|
177
178
|
* a prefix of an identifier.
|
|
178
179
|
* Sets GIT_EAMBIGUOUS if short oid is ambiguous.
|
|
179
180
|
* This method assumes that len is between
|
|
180
|
-
* GIT_OID_MINPREFIXLEN and
|
|
181
|
+
* GIT_OID_MINPREFIXLEN and the hexsize for the hash type.
|
|
181
182
|
*/
|
|
182
183
|
static int pack_entry_find_prefix(
|
|
183
184
|
struct git_pack_entry *e,
|
|
@@ -195,10 +196,10 @@ static int pack_entry_find_prefix(
|
|
|
195
196
|
|
|
196
197
|
static int packfile_byname_search_cmp(const void *path_, const void *p_)
|
|
197
198
|
{
|
|
198
|
-
const
|
|
199
|
+
const git_str *path = (const git_str *)path_;
|
|
199
200
|
const struct git_pack_file *p = (const struct git_pack_file *)p_;
|
|
200
201
|
|
|
201
|
-
return strncmp(p->pack_name,
|
|
202
|
+
return strncmp(p->pack_name, git_str_cstr(path), git_str_len(path));
|
|
202
203
|
}
|
|
203
204
|
|
|
204
205
|
static int packfile_sort__cb(const void *a_, const void *b_)
|
|
@@ -231,27 +232,27 @@ static int packfile_sort__cb(const void *a_, const void *b_)
|
|
|
231
232
|
}
|
|
232
233
|
|
|
233
234
|
|
|
234
|
-
static int packfile_load__cb(void *data,
|
|
235
|
+
static int packfile_load__cb(void *data, git_str *path)
|
|
235
236
|
{
|
|
236
237
|
struct pack_backend *backend = data;
|
|
237
238
|
struct git_pack_file *pack;
|
|
238
|
-
const char *path_str =
|
|
239
|
-
|
|
240
|
-
size_t cmp_len =
|
|
239
|
+
const char *path_str = git_str_cstr(path);
|
|
240
|
+
git_str index_prefix = GIT_STR_INIT;
|
|
241
|
+
size_t cmp_len = git_str_len(path);
|
|
241
242
|
int error;
|
|
242
243
|
|
|
243
244
|
if (cmp_len <= strlen(".idx") || git__suffixcmp(path_str, ".idx") != 0)
|
|
244
245
|
return 0; /* not an index */
|
|
245
246
|
|
|
246
247
|
cmp_len -= strlen(".idx");
|
|
247
|
-
|
|
248
|
+
git_str_attach_notowned(&index_prefix, path_str, cmp_len);
|
|
248
249
|
|
|
249
250
|
if (git_vector_search2(NULL, &backend->midx_packs, packfile_byname_search_cmp, &index_prefix) == 0)
|
|
250
251
|
return 0;
|
|
251
252
|
if (git_vector_search2(NULL, &backend->packs, packfile_byname_search_cmp, &index_prefix) == 0)
|
|
252
253
|
return 0;
|
|
253
254
|
|
|
254
|
-
error = git_mwindow_get_pack(&pack, path->ptr);
|
|
255
|
+
error = git_mwindow_get_pack(&pack, path->ptr, backend->opts.oid_type);
|
|
255
256
|
|
|
256
257
|
/* ignore missing .pack file as git does */
|
|
257
258
|
if (error == GIT_ENOTFOUND) {
|
|
@@ -270,33 +271,34 @@ static int pack_entry_find(struct git_pack_entry *e, struct pack_backend *backen
|
|
|
270
271
|
{
|
|
271
272
|
struct git_pack_file *last_found = backend->last_found, *p;
|
|
272
273
|
git_midx_entry midx_entry;
|
|
274
|
+
size_t oid_hexsize = git_oid_hexsize(backend->opts.oid_type);
|
|
273
275
|
size_t i;
|
|
274
276
|
|
|
275
277
|
if (backend->midx &&
|
|
276
|
-
git_midx_entry_find(&midx_entry, backend->midx, oid,
|
|
278
|
+
git_midx_entry_find(&midx_entry, backend->midx, oid, oid_hexsize) == 0 &&
|
|
277
279
|
midx_entry.pack_index < git_vector_length(&backend->midx_packs)) {
|
|
278
280
|
e->offset = midx_entry.offset;
|
|
279
|
-
git_oid_cpy(&e->
|
|
281
|
+
git_oid_cpy(&e->id, &midx_entry.sha1);
|
|
280
282
|
e->p = git_vector_get(&backend->midx_packs, midx_entry.pack_index);
|
|
281
283
|
return 0;
|
|
282
284
|
}
|
|
283
285
|
|
|
284
286
|
if (last_found &&
|
|
285
|
-
git_pack_entry_find(e, last_found, oid,
|
|
287
|
+
git_pack_entry_find(e, last_found, oid, oid_hexsize) == 0)
|
|
286
288
|
return 0;
|
|
287
289
|
|
|
288
290
|
git_vector_foreach(&backend->packs, i, p) {
|
|
289
291
|
if (p == last_found)
|
|
290
292
|
continue;
|
|
291
293
|
|
|
292
|
-
if (git_pack_entry_find(e, p, oid,
|
|
294
|
+
if (git_pack_entry_find(e, p, oid, oid_hexsize) == 0) {
|
|
293
295
|
backend->last_found = p;
|
|
294
296
|
return 0;
|
|
295
297
|
}
|
|
296
298
|
}
|
|
297
299
|
|
|
298
300
|
return git_odb__error_notfound(
|
|
299
|
-
"failed to find pack entry", oid,
|
|
301
|
+
"failed to find pack entry", oid, oid_hexsize);
|
|
300
302
|
}
|
|
301
303
|
|
|
302
304
|
static int pack_entry_find_prefix(
|
|
@@ -307,7 +309,7 @@ static int pack_entry_find_prefix(
|
|
|
307
309
|
{
|
|
308
310
|
int error;
|
|
309
311
|
size_t i;
|
|
310
|
-
git_oid found_full_oid =
|
|
312
|
+
git_oid found_full_oid = GIT_OID_SHA1_ZERO;
|
|
311
313
|
bool found = false;
|
|
312
314
|
struct git_pack_file *last_found = backend->last_found, *p;
|
|
313
315
|
git_midx_entry midx_entry;
|
|
@@ -318,9 +320,9 @@ static int pack_entry_find_prefix(
|
|
|
318
320
|
return error;
|
|
319
321
|
if (!error && midx_entry.pack_index < git_vector_length(&backend->midx_packs)) {
|
|
320
322
|
e->offset = midx_entry.offset;
|
|
321
|
-
git_oid_cpy(&e->
|
|
323
|
+
git_oid_cpy(&e->id, &midx_entry.sha1);
|
|
322
324
|
e->p = git_vector_get(&backend->midx_packs, midx_entry.pack_index);
|
|
323
|
-
git_oid_cpy(&found_full_oid, &e->
|
|
325
|
+
git_oid_cpy(&found_full_oid, &e->id);
|
|
324
326
|
found = true;
|
|
325
327
|
}
|
|
326
328
|
}
|
|
@@ -330,9 +332,9 @@ static int pack_entry_find_prefix(
|
|
|
330
332
|
if (error == GIT_EAMBIGUOUS)
|
|
331
333
|
return error;
|
|
332
334
|
if (!error) {
|
|
333
|
-
if (found && git_oid_cmp(&e->
|
|
335
|
+
if (found && git_oid_cmp(&e->id, &found_full_oid))
|
|
334
336
|
return git_odb__error_ambiguous("found multiple pack entries");
|
|
335
|
-
git_oid_cpy(&found_full_oid, &e->
|
|
337
|
+
git_oid_cpy(&found_full_oid, &e->id);
|
|
336
338
|
found = true;
|
|
337
339
|
}
|
|
338
340
|
}
|
|
@@ -345,9 +347,9 @@ static int pack_entry_find_prefix(
|
|
|
345
347
|
if (error == GIT_EAMBIGUOUS)
|
|
346
348
|
return error;
|
|
347
349
|
if (!error) {
|
|
348
|
-
if (found && git_oid_cmp(&e->
|
|
350
|
+
if (found && git_oid_cmp(&e->id, &found_full_oid))
|
|
349
351
|
return git_odb__error_ambiguous("found multiple pack entries");
|
|
350
|
-
git_oid_cpy(&found_full_oid, &e->
|
|
352
|
+
git_oid_cpy(&found_full_oid, &e->id);
|
|
351
353
|
found = true;
|
|
352
354
|
backend->last_found = p;
|
|
353
355
|
}
|
|
@@ -404,29 +406,32 @@ static int process_multi_pack_index_pack(
|
|
|
404
406
|
int error;
|
|
405
407
|
struct git_pack_file *pack;
|
|
406
408
|
size_t found_position;
|
|
407
|
-
|
|
409
|
+
git_str pack_path = GIT_STR_INIT, index_prefix = GIT_STR_INIT;
|
|
408
410
|
|
|
409
|
-
error =
|
|
411
|
+
error = git_str_joinpath(&pack_path, backend->pack_folder, packfile_name);
|
|
410
412
|
if (error < 0)
|
|
411
413
|
return error;
|
|
412
414
|
|
|
413
415
|
/* This is ensured by midx_parse_packfile_name() */
|
|
414
|
-
if (
|
|
416
|
+
if (git_str_len(&pack_path) <= strlen(".idx") || git__suffixcmp(git_str_cstr(&pack_path), ".idx") != 0)
|
|
415
417
|
return git_odb__error_notfound("midx file contained a non-index", NULL, 0);
|
|
416
418
|
|
|
417
|
-
|
|
419
|
+
git_str_attach_notowned(&index_prefix, git_str_cstr(&pack_path), git_str_len(&pack_path) - strlen(".idx"));
|
|
418
420
|
|
|
419
421
|
if (git_vector_search2(&found_position, &backend->packs, packfile_byname_search_cmp, &index_prefix) == 0) {
|
|
420
422
|
/* Pack was found in the packs list. Moving it to the midx_packs list. */
|
|
421
|
-
|
|
423
|
+
git_str_dispose(&pack_path);
|
|
422
424
|
git_vector_set(NULL, &backend->midx_packs, i, git_vector_get(&backend->packs, found_position));
|
|
423
425
|
git_vector_remove(&backend->packs, found_position);
|
|
424
426
|
return 0;
|
|
425
427
|
}
|
|
426
428
|
|
|
427
429
|
/* Pack was not found. Allocate a new one. */
|
|
428
|
-
error = git_mwindow_get_pack(
|
|
429
|
-
|
|
430
|
+
error = git_mwindow_get_pack(
|
|
431
|
+
&pack,
|
|
432
|
+
git_str_cstr(&pack_path),
|
|
433
|
+
backend->opts.oid_type);
|
|
434
|
+
git_str_dispose(&pack_path);
|
|
430
435
|
if (error < 0)
|
|
431
436
|
return error;
|
|
432
437
|
|
|
@@ -442,11 +447,11 @@ static int process_multi_pack_index_pack(
|
|
|
442
447
|
static int refresh_multi_pack_index(struct pack_backend *backend)
|
|
443
448
|
{
|
|
444
449
|
int error;
|
|
445
|
-
|
|
450
|
+
git_str midx_path = GIT_STR_INIT;
|
|
446
451
|
const char *packfile_name;
|
|
447
452
|
size_t i;
|
|
448
453
|
|
|
449
|
-
error =
|
|
454
|
+
error = git_str_joinpath(&midx_path, backend->pack_folder, "multi-pack-index");
|
|
450
455
|
if (error < 0)
|
|
451
456
|
return error;
|
|
452
457
|
|
|
@@ -457,19 +462,19 @@ static int refresh_multi_pack_index(struct pack_backend *backend)
|
|
|
457
462
|
* refreshing the new multi-pack-index fails, or the file is deleted.
|
|
458
463
|
*/
|
|
459
464
|
if (backend->midx) {
|
|
460
|
-
if (!git_midx_needs_refresh(backend->midx,
|
|
461
|
-
|
|
465
|
+
if (!git_midx_needs_refresh(backend->midx, git_str_cstr(&midx_path))) {
|
|
466
|
+
git_str_dispose(&midx_path);
|
|
462
467
|
return 0;
|
|
463
468
|
}
|
|
464
469
|
error = remove_multi_pack_index(backend);
|
|
465
470
|
if (error < 0) {
|
|
466
|
-
|
|
471
|
+
git_str_dispose(&midx_path);
|
|
467
472
|
return error;
|
|
468
473
|
}
|
|
469
474
|
}
|
|
470
475
|
|
|
471
|
-
error = git_midx_open(&backend->midx,
|
|
472
|
-
|
|
476
|
+
error = git_midx_open(&backend->midx, git_str_cstr(&midx_path));
|
|
477
|
+
git_str_dispose(&midx_path);
|
|
473
478
|
if (error < 0)
|
|
474
479
|
return error;
|
|
475
480
|
|
|
@@ -505,7 +510,7 @@ static int pack_backend__refresh(git_odb_backend *backend_)
|
|
|
505
510
|
{
|
|
506
511
|
int error;
|
|
507
512
|
struct stat st;
|
|
508
|
-
|
|
513
|
+
git_str path = GIT_STR_INIT;
|
|
509
514
|
struct pack_backend *backend = (struct pack_backend *)backend_;
|
|
510
515
|
|
|
511
516
|
if (backend->pack_folder == NULL)
|
|
@@ -523,10 +528,10 @@ static int pack_backend__refresh(git_odb_backend *backend_)
|
|
|
523
528
|
}
|
|
524
529
|
|
|
525
530
|
/* reload all packs */
|
|
526
|
-
|
|
527
|
-
error =
|
|
531
|
+
git_str_sets(&path, backend->pack_folder);
|
|
532
|
+
error = git_fs_path_direach(&path, 0, packfile_load__cb, backend);
|
|
528
533
|
|
|
529
|
-
|
|
534
|
+
git_str_dispose(&path);
|
|
530
535
|
git_vector_sort(&backend->packs);
|
|
531
536
|
|
|
532
537
|
return error;
|
|
@@ -596,32 +601,33 @@ static int pack_backend__read_prefix(
|
|
|
596
601
|
void **buffer_p,
|
|
597
602
|
size_t *len_p,
|
|
598
603
|
git_object_t *type_p,
|
|
599
|
-
git_odb_backend *
|
|
604
|
+
git_odb_backend *_backend,
|
|
600
605
|
const git_oid *short_oid,
|
|
601
606
|
size_t len)
|
|
602
607
|
{
|
|
608
|
+
struct pack_backend *backend = (struct pack_backend *)_backend;
|
|
603
609
|
int error = 0;
|
|
604
610
|
|
|
605
611
|
if (len < GIT_OID_MINPREFIXLEN)
|
|
606
612
|
error = git_odb__error_ambiguous("prefix length too short");
|
|
607
613
|
|
|
608
|
-
else if (len >=
|
|
614
|
+
else if (len >= git_oid_hexsize(backend->opts.oid_type)) {
|
|
609
615
|
/* We can fall back to regular read method */
|
|
610
|
-
error = pack_backend__read(buffer_p, len_p, type_p,
|
|
616
|
+
error = pack_backend__read(buffer_p, len_p, type_p, _backend, short_oid);
|
|
611
617
|
if (!error)
|
|
612
618
|
git_oid_cpy(out_oid, short_oid);
|
|
613
619
|
} else {
|
|
614
620
|
struct git_pack_entry e;
|
|
615
621
|
git_rawobj raw = {NULL};
|
|
616
622
|
|
|
617
|
-
if ((error = pack_entry_find_prefix(
|
|
618
|
-
|
|
619
|
-
|
|
623
|
+
if ((error = pack_entry_find_prefix(&e,
|
|
624
|
+
backend, short_oid, len)) == 0 &&
|
|
625
|
+
(error = git_packfile_unpack(&raw, e.p, &e.offset)) == 0)
|
|
620
626
|
{
|
|
621
627
|
*buffer_p = raw.data;
|
|
622
628
|
*len_p = raw.len;
|
|
623
629
|
*type_p = raw.type;
|
|
624
|
-
git_oid_cpy(out_oid, &e.
|
|
630
|
+
git_oid_cpy(out_oid, &e.id);
|
|
625
631
|
}
|
|
626
632
|
}
|
|
627
633
|
|
|
@@ -642,7 +648,7 @@ static int pack_backend__exists_prefix(
|
|
|
642
648
|
struct git_pack_entry e = {0};
|
|
643
649
|
|
|
644
650
|
error = pack_entry_find_prefix(&e, pb, short_id, len);
|
|
645
|
-
git_oid_cpy(out, &e.
|
|
651
|
+
git_oid_cpy(out, &e.id);
|
|
646
652
|
return error;
|
|
647
653
|
}
|
|
648
654
|
|
|
@@ -712,6 +718,7 @@ static int pack_backend__writepack(struct git_odb_writepack **out,
|
|
|
712
718
|
git_indexer_options opts = GIT_INDEXER_OPTIONS_INIT;
|
|
713
719
|
struct pack_backend *backend;
|
|
714
720
|
struct pack_writepack *writepack;
|
|
721
|
+
int error;
|
|
715
722
|
|
|
716
723
|
GIT_ASSERT_ARG(out);
|
|
717
724
|
GIT_ASSERT_ARG(_backend);
|
|
@@ -726,11 +733,20 @@ static int pack_backend__writepack(struct git_odb_writepack **out,
|
|
|
726
733
|
writepack = git__calloc(1, sizeof(struct pack_writepack));
|
|
727
734
|
GIT_ERROR_CHECK_ALLOC(writepack);
|
|
728
735
|
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
736
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
737
|
+
opts.odb = odb;
|
|
738
|
+
|
|
739
|
+
error = git_indexer_new(&writepack->indexer,
|
|
740
|
+
backend->pack_folder,
|
|
741
|
+
backend->opts.oid_type,
|
|
742
|
+
&opts);
|
|
743
|
+
#else
|
|
744
|
+
error = git_indexer_new(&writepack->indexer,
|
|
745
|
+
backend->pack_folder, 0, odb, &opts);
|
|
746
|
+
#endif
|
|
747
|
+
|
|
748
|
+
if (error < 0)
|
|
732
749
|
return -1;
|
|
733
|
-
}
|
|
734
750
|
|
|
735
751
|
writepack->parent.backend = _backend;
|
|
736
752
|
writepack->parent.append = pack_backend__writepack_append;
|
|
@@ -743,21 +759,21 @@ static int pack_backend__writepack(struct git_odb_writepack **out,
|
|
|
743
759
|
}
|
|
744
760
|
|
|
745
761
|
static int get_idx_path(
|
|
746
|
-
|
|
762
|
+
git_str *idx_path,
|
|
747
763
|
struct pack_backend *backend,
|
|
748
764
|
struct git_pack_file *p)
|
|
749
765
|
{
|
|
750
766
|
size_t path_len;
|
|
751
767
|
int error;
|
|
752
768
|
|
|
753
|
-
error =
|
|
769
|
+
error = git_fs_path_prettify(idx_path, p->pack_name, backend->pack_folder);
|
|
754
770
|
if (error < 0)
|
|
755
771
|
return error;
|
|
756
|
-
path_len =
|
|
757
|
-
if (path_len <= strlen(".pack") || git__suffixcmp(
|
|
772
|
+
path_len = git_str_len(idx_path);
|
|
773
|
+
if (path_len <= strlen(".pack") || git__suffixcmp(git_str_cstr(idx_path), ".pack") != 0)
|
|
758
774
|
return git_odb__error_notfound("packfile does not end in .pack", NULL, 0);
|
|
759
775
|
path_len -= strlen(".pack");
|
|
760
|
-
error =
|
|
776
|
+
error = git_str_splice(idx_path, path_len, strlen(".pack"), ".idx", strlen(".idx"));
|
|
761
777
|
if (error < 0)
|
|
762
778
|
return error;
|
|
763
779
|
|
|
@@ -781,22 +797,22 @@ static int pack_backend__writemidx(git_odb_backend *_backend)
|
|
|
781
797
|
return error;
|
|
782
798
|
|
|
783
799
|
git_vector_foreach(&backend->midx_packs, i, p) {
|
|
784
|
-
|
|
800
|
+
git_str idx_path = GIT_STR_INIT;
|
|
785
801
|
error = get_idx_path(&idx_path, backend, p);
|
|
786
802
|
if (error < 0)
|
|
787
803
|
goto cleanup;
|
|
788
|
-
error = git_midx_writer_add(w,
|
|
789
|
-
|
|
804
|
+
error = git_midx_writer_add(w, git_str_cstr(&idx_path));
|
|
805
|
+
git_str_dispose(&idx_path);
|
|
790
806
|
if (error < 0)
|
|
791
807
|
goto cleanup;
|
|
792
808
|
}
|
|
793
809
|
git_vector_foreach(&backend->packs, i, p) {
|
|
794
|
-
|
|
810
|
+
git_str idx_path = GIT_STR_INIT;
|
|
795
811
|
error = get_idx_path(&idx_path, backend, p);
|
|
796
812
|
if (error < 0)
|
|
797
813
|
goto cleanup;
|
|
798
|
-
error = git_midx_writer_add(w,
|
|
799
|
-
|
|
814
|
+
error = git_midx_writer_add(w, git_str_cstr(&idx_path));
|
|
815
|
+
git_str_dispose(&idx_path);
|
|
800
816
|
if (error < 0)
|
|
801
817
|
goto cleanup;
|
|
802
818
|
}
|
|
@@ -840,7 +856,10 @@ static void pack_backend__free(git_odb_backend *_backend)
|
|
|
840
856
|
git__free(backend);
|
|
841
857
|
}
|
|
842
858
|
|
|
843
|
-
static int pack_backend__alloc(
|
|
859
|
+
static int pack_backend__alloc(
|
|
860
|
+
struct pack_backend **out,
|
|
861
|
+
size_t initial_size,
|
|
862
|
+
const git_odb_backend_pack_options *opts)
|
|
844
863
|
{
|
|
845
864
|
struct pack_backend *backend = git__calloc(1, sizeof(struct pack_backend));
|
|
846
865
|
GIT_ERROR_CHECK_ALLOC(backend);
|
|
@@ -849,12 +868,19 @@ static int pack_backend__alloc(struct pack_backend **out, size_t initial_size)
|
|
|
849
868
|
git__free(backend);
|
|
850
869
|
return -1;
|
|
851
870
|
}
|
|
871
|
+
|
|
852
872
|
if (git_vector_init(&backend->packs, initial_size, packfile_sort__cb) < 0) {
|
|
853
873
|
git_vector_free(&backend->midx_packs);
|
|
854
874
|
git__free(backend);
|
|
855
875
|
return -1;
|
|
856
876
|
}
|
|
857
877
|
|
|
878
|
+
if (opts)
|
|
879
|
+
memcpy(&backend->opts, opts, sizeof(git_odb_backend_pack_options));
|
|
880
|
+
|
|
881
|
+
if (!backend->opts.oid_type)
|
|
882
|
+
backend->opts.oid_type = GIT_OID_DEFAULT;
|
|
883
|
+
|
|
858
884
|
backend->parent.version = GIT_ODB_BACKEND_VERSION;
|
|
859
885
|
|
|
860
886
|
backend->parent.read = &pack_backend__read;
|
|
@@ -873,17 +899,31 @@ static int pack_backend__alloc(struct pack_backend **out, size_t initial_size)
|
|
|
873
899
|
return 0;
|
|
874
900
|
}
|
|
875
901
|
|
|
876
|
-
|
|
902
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
903
|
+
int git_odb_backend_one_pack(
|
|
904
|
+
git_odb_backend **backend_out,
|
|
905
|
+
const char *idx,
|
|
906
|
+
const git_odb_backend_pack_options *opts)
|
|
907
|
+
#else
|
|
908
|
+
int git_odb_backend_one_pack(
|
|
909
|
+
git_odb_backend **backend_out,
|
|
910
|
+
const char *idx)
|
|
911
|
+
#endif
|
|
877
912
|
{
|
|
878
913
|
struct pack_backend *backend = NULL;
|
|
879
914
|
struct git_pack_file *packfile = NULL;
|
|
880
915
|
|
|
881
|
-
|
|
916
|
+
#ifndef GIT_EXPERIMENTAL_SHA256
|
|
917
|
+
git_odb_backend_pack_options *opts = NULL;
|
|
918
|
+
#endif
|
|
919
|
+
|
|
920
|
+
git_oid_t oid_type = opts ? opts->oid_type : 0;
|
|
921
|
+
|
|
922
|
+
if (pack_backend__alloc(&backend, 1, opts) < 0)
|
|
882
923
|
return -1;
|
|
883
924
|
|
|
884
|
-
if (git_mwindow_get_pack(&packfile, idx) < 0 ||
|
|
885
|
-
|
|
886
|
-
{
|
|
925
|
+
if (git_mwindow_get_pack(&packfile, idx, oid_type) < 0 ||
|
|
926
|
+
git_vector_insert(&backend->packs, packfile) < 0) {
|
|
887
927
|
pack_backend__free((git_odb_backend *)backend);
|
|
888
928
|
return -1;
|
|
889
929
|
}
|
|
@@ -892,19 +932,31 @@ int git_odb_backend_one_pack(git_odb_backend **backend_out, const char *idx)
|
|
|
892
932
|
return 0;
|
|
893
933
|
}
|
|
894
934
|
|
|
895
|
-
|
|
935
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
936
|
+
int git_odb_backend_pack(
|
|
937
|
+
git_odb_backend **backend_out,
|
|
938
|
+
const char *objects_dir,
|
|
939
|
+
const git_odb_backend_pack_options *opts)
|
|
940
|
+
#else
|
|
941
|
+
int git_odb_backend_pack(
|
|
942
|
+
git_odb_backend **backend_out,
|
|
943
|
+
const char *objects_dir)
|
|
944
|
+
#endif
|
|
896
945
|
{
|
|
897
946
|
int error = 0;
|
|
898
947
|
struct pack_backend *backend = NULL;
|
|
899
|
-
|
|
948
|
+
git_str path = GIT_STR_INIT;
|
|
949
|
+
|
|
950
|
+
#ifndef GIT_EXPERIMENTAL_SHA256
|
|
951
|
+
git_odb_backend_pack_options *opts = NULL;
|
|
952
|
+
#endif
|
|
900
953
|
|
|
901
|
-
if (pack_backend__alloc(&backend, 8) < 0)
|
|
954
|
+
if (pack_backend__alloc(&backend, 8, opts) < 0)
|
|
902
955
|
return -1;
|
|
903
956
|
|
|
904
|
-
if (!(error =
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
backend->pack_folder = git_buf_detach(&path);
|
|
957
|
+
if (!(error = git_str_joinpath(&path, objects_dir, "pack")) &&
|
|
958
|
+
git_fs_path_isdir(git_str_cstr(&path))) {
|
|
959
|
+
backend->pack_folder = git_str_detach(&path);
|
|
908
960
|
error = pack_backend__refresh((git_odb_backend *)backend);
|
|
909
961
|
}
|
|
910
962
|
|
|
@@ -915,7 +967,7 @@ int git_odb_backend_pack(git_odb_backend **backend_out, const char *objects_dir)
|
|
|
915
967
|
|
|
916
968
|
*backend_out = (git_odb_backend *)backend;
|
|
917
969
|
|
|
918
|
-
|
|
970
|
+
git_str_dispose(&path);
|
|
919
971
|
|
|
920
972
|
return error;
|
|
921
973
|
}
|