rugged 1.3.1 → 1.9.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 +6 -3
- data/ext/rugged/rugged.c +16 -0
- data/ext/rugged/rugged.h +4 -0
- data/ext/rugged/rugged_allocator.c +0 -54
- 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/AUTHORS +1 -0
- data/vendor/libgit2/CMakeLists.txt +141 -289
- data/vendor/libgit2/COPYING +301 -20
- data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
- data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
- data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -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 +17 -17
- data/vendor/libgit2/cmake/FindIntlIconv.cmake +51 -0
- data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
- 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 +34 -0
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +129 -101
- data/vendor/libgit2/cmake/SelectHashes.cmake +113 -54
- data/vendor/libgit2/cmake/SelectRegex.cmake +56 -0
- data/vendor/libgit2/cmake/SelectSSH.cmake +46 -0
- data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
- data/vendor/libgit2/cmake/SelectZlib.cmake +38 -0
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
- data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
- data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
- data/vendor/libgit2/deps/llhttp/api.c +510 -0
- data/vendor/libgit2/deps/llhttp/http.c +170 -0
- data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
- data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
- data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +7 -5
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +25 -25
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
- data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
- data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +89 -88
- data/vendor/libgit2/deps/pcre/LICENCE +5 -5
- data/vendor/libgit2/deps/pcre/pcre.h +2 -2
- data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
- data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
- data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
- data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
- data/vendor/libgit2/deps/xdiff/git-xdiff.h +56 -0
- data/vendor/libgit2/{src → deps}/xdiff/xdiff.h +15 -15
- data/vendor/libgit2/{src → deps}/xdiff/xdiffi.c +152 -125
- data/vendor/libgit2/{src → deps}/xdiff/xdiffi.h +2 -4
- data/vendor/libgit2/{src → deps}/xdiff/xemit.c +26 -10
- data/vendor/libgit2/{src → deps}/xdiff/xhistogram.c +92 -94
- data/vendor/libgit2/{src → deps}/xdiff/xinclude.h +1 -12
- data/vendor/libgit2/{src → deps}/xdiff/xmacros.h +18 -1
- data/vendor/libgit2/{src → deps}/xdiff/xmerge.c +126 -137
- data/vendor/libgit2/{src → deps}/xdiff/xpatience.c +26 -46
- data/vendor/libgit2/{src → deps}/xdiff/xprepare.c +24 -46
- data/vendor/libgit2/{src → deps}/xdiff/xutils.c +36 -8
- data/vendor/libgit2/{src → deps}/xdiff/xutils.h +2 -1
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
- data/vendor/libgit2/deps/zlib/LICENSE +22 -0
- data/vendor/libgit2/deps/zlib/adler32.c +7 -22
- data/vendor/libgit2/deps/zlib/crc32.c +931 -317
- data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
- data/vendor/libgit2/deps/zlib/deflate.c +428 -453
- data/vendor/libgit2/deps/zlib/deflate.h +51 -23
- data/vendor/libgit2/deps/zlib/gzguts.h +15 -19
- data/vendor/libgit2/deps/zlib/infback.c +19 -31
- data/vendor/libgit2/deps/zlib/inffast.c +15 -18
- data/vendor/libgit2/deps/zlib/inffast.h +1 -1
- data/vendor/libgit2/deps/zlib/inflate.c +75 -110
- data/vendor/libgit2/deps/zlib/inflate.h +3 -2
- data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
- data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
- data/vendor/libgit2/deps/zlib/trees.c +294 -380
- data/vendor/libgit2/deps/zlib/zconf.h +23 -14
- data/vendor/libgit2/deps/zlib/zlib.h +310 -284
- data/vendor/libgit2/deps/zlib/zutil.c +20 -46
- data/vendor/libgit2/deps/zlib/zutil.h +24 -41
- data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
- data/vendor/libgit2/include/git2/apply.h +43 -8
- data/vendor/libgit2/include/git2/attr.h +28 -6
- data/vendor/libgit2/include/git2/blame.h +137 -29
- data/vendor/libgit2/include/git2/blob.h +85 -29
- data/vendor/libgit2/include/git2/branch.h +25 -16
- data/vendor/libgit2/include/git2/buffer.h +24 -82
- data/vendor/libgit2/include/git2/cert.h +4 -3
- data/vendor/libgit2/include/git2/checkout.h +88 -34
- data/vendor/libgit2/include/git2/cherrypick.h +10 -3
- data/vendor/libgit2/include/git2/clone.h +28 -12
- data/vendor/libgit2/include/git2/commit.h +134 -3
- data/vendor/libgit2/include/git2/common.h +172 -59
- data/vendor/libgit2/include/git2/config.h +118 -32
- data/vendor/libgit2/include/git2/credential.h +32 -3
- data/vendor/libgit2/include/git2/credential_helpers.h +2 -0
- data/vendor/libgit2/include/git2/deprecated.h +141 -3
- data/vendor/libgit2/include/git2/describe.h +20 -3
- data/vendor/libgit2/include/git2/diff.h +95 -19
- data/vendor/libgit2/include/git2/email.h +10 -30
- data/vendor/libgit2/include/git2/errors.h +51 -61
- data/vendor/libgit2/include/git2/experimental.h +20 -0
- data/vendor/libgit2/include/git2/filter.h +21 -9
- data/vendor/libgit2/include/git2/global.h +8 -1
- data/vendor/libgit2/include/git2/graph.h +4 -2
- data/vendor/libgit2/include/git2/ignore.h +11 -1
- data/vendor/libgit2/include/git2/index.h +111 -11
- data/vendor/libgit2/include/git2/indexer.h +67 -2
- data/vendor/libgit2/include/git2/mailmap.h +7 -1
- data/vendor/libgit2/include/git2/merge.h +70 -5
- data/vendor/libgit2/include/git2/message.h +4 -2
- data/vendor/libgit2/include/git2/net.h +3 -1
- data/vendor/libgit2/include/git2/notes.h +9 -6
- data/vendor/libgit2/include/git2/object.h +57 -7
- data/vendor/libgit2/include/git2/odb.h +156 -33
- data/vendor/libgit2/include/git2/odb_backend.h +132 -16
- data/vendor/libgit2/include/git2/oid.h +116 -17
- data/vendor/libgit2/include/git2/oidarray.h +7 -1
- data/vendor/libgit2/include/git2/pack.h +37 -9
- data/vendor/libgit2/include/git2/patch.h +10 -3
- data/vendor/libgit2/include/git2/pathspec.h +10 -1
- data/vendor/libgit2/include/git2/proxy.h +11 -1
- data/vendor/libgit2/include/git2/rebase.h +18 -7
- data/vendor/libgit2/include/git2/refdb.h +5 -2
- data/vendor/libgit2/include/git2/reflog.h +4 -3
- data/vendor/libgit2/include/git2/refs.h +11 -8
- data/vendor/libgit2/include/git2/refspec.h +14 -4
- data/vendor/libgit2/include/git2/remote.h +295 -54
- data/vendor/libgit2/include/git2/repository.h +95 -25
- data/vendor/libgit2/include/git2/reset.h +18 -5
- data/vendor/libgit2/include/git2/revert.h +9 -4
- data/vendor/libgit2/include/git2/revparse.h +4 -4
- data/vendor/libgit2/include/git2/revwalk.h +7 -3
- data/vendor/libgit2/include/git2/signature.h +47 -2
- data/vendor/libgit2/include/git2/stash.h +78 -10
- data/vendor/libgit2/include/git2/status.h +24 -11
- data/vendor/libgit2/include/git2/stdint.h +87 -85
- data/vendor/libgit2/include/git2/strarray.h +2 -16
- data/vendor/libgit2/include/git2/submodule.h +27 -11
- data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
- data/vendor/libgit2/include/git2/sys/commit.h +77 -3
- data/vendor/libgit2/include/git2/sys/commit_graph.h +110 -59
- data/vendor/libgit2/include/git2/sys/config.h +80 -4
- data/vendor/libgit2/include/git2/sys/credential.h +4 -3
- data/vendor/libgit2/include/git2/sys/diff.h +21 -1
- data/vendor/libgit2/include/git2/sys/email.h +7 -0
- data/vendor/libgit2/include/git2/sys/errors.h +76 -0
- data/vendor/libgit2/include/git2/sys/filter.h +66 -3
- data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
- data/vendor/libgit2/include/git2/sys/index.h +3 -2
- data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
- data/vendor/libgit2/include/git2/sys/merge.h +55 -7
- data/vendor/libgit2/include/git2/sys/midx.h +47 -4
- data/vendor/libgit2/include/git2/sys/odb_backend.h +10 -9
- data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
- data/vendor/libgit2/include/git2/sys/path.h +12 -1
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
- data/vendor/libgit2/include/git2/sys/refs.h +3 -2
- data/vendor/libgit2/include/git2/sys/remote.h +53 -0
- data/vendor/libgit2/include/git2/sys/repository.h +63 -3
- data/vendor/libgit2/include/git2/sys/stream.h +26 -3
- data/vendor/libgit2/include/git2/sys/transport.h +87 -41
- data/vendor/libgit2/include/git2/tag.h +4 -1
- data/vendor/libgit2/include/git2/trace.h +9 -3
- data/vendor/libgit2/include/git2/transaction.h +3 -2
- data/vendor/libgit2/include/git2/transport.h +11 -3
- data/vendor/libgit2/include/git2/tree.h +20 -8
- data/vendor/libgit2/include/git2/types.h +26 -10
- data/vendor/libgit2/include/git2/version.h +63 -6
- data/vendor/libgit2/include/git2/worktree.h +30 -8
- data/vendor/libgit2/include/git2.h +1 -0
- data/vendor/libgit2/src/CMakeLists.txt +203 -420
- data/vendor/libgit2/src/README.md +12 -0
- data/vendor/libgit2/src/cli/CMakeLists.txt +56 -0
- data/vendor/libgit2/src/cli/README.md +26 -0
- data/vendor/libgit2/src/{branch.h → cli/cmd.c} +10 -8
- data/vendor/libgit2/src/cli/cmd.h +37 -0
- data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
- data/vendor/libgit2/src/cli/cmd_cat_file.c +202 -0
- data/vendor/libgit2/src/cli/cmd_clone.c +190 -0
- data/vendor/libgit2/src/cli/cmd_config.c +241 -0
- data/vendor/libgit2/src/cli/cmd_hash_object.c +152 -0
- data/vendor/libgit2/src/cli/cmd_help.c +85 -0
- data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
- data/vendor/libgit2/src/cli/cmd_init.c +102 -0
- data/vendor/libgit2/src/cli/common.c +168 -0
- data/vendor/libgit2/src/cli/common.h +63 -0
- data/vendor/libgit2/src/cli/error.h +51 -0
- data/vendor/libgit2/src/cli/main.c +134 -0
- data/vendor/libgit2/src/cli/opt.c +695 -0
- data/vendor/libgit2/src/cli/opt.h +367 -0
- data/vendor/libgit2/src/cli/opt_usage.c +263 -0
- data/vendor/libgit2/src/cli/opt_usage.h +40 -0
- data/vendor/libgit2/src/cli/progress.c +395 -0
- data/vendor/libgit2/src/cli/progress.h +129 -0
- data/vendor/libgit2/src/cli/sighandler.h +20 -0
- data/vendor/libgit2/src/cli/unix/sighandler.c +37 -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 +140 -0
- data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +2 -2
- data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
- data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +32 -34
- data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
- data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +48 -31
- data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +25 -20
- data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +6 -4
- data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +87 -46
- data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +5 -9
- data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +152 -57
- data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +1 -0
- data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -2
- 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/libgit2/branch.h +31 -0
- data/vendor/libgit2/src/libgit2/buf.c +126 -0
- data/vendor/libgit2/src/libgit2/buf.h +50 -0
- data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +22 -17
- data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +7 -9
- data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +107 -91
- data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -2
- data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +14 -15
- data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +254 -203
- data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +4 -1
- data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +296 -77
- data/vendor/libgit2/src/libgit2/commit.h +87 -0
- data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +246 -135
- data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +33 -8
- data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +17 -7
- data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +1 -0
- data/vendor/libgit2/src/libgit2/common.h +55 -0
- data/vendor/libgit2/src/{config.c → libgit2/config.c} +490 -360
- data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
- data/vendor/libgit2/src/{config.h → libgit2/config.h} +24 -6
- data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +8 -10
- data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +4 -5
- data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +212 -183
- data/vendor/libgit2/src/libgit2/config_list.c +285 -0
- data/vendor/libgit2/src/libgit2/config_list.h +32 -0
- data/vendor/libgit2/src/libgit2/config_mem.c +374 -0
- data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +37 -32
- data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +24 -31
- data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
- data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +62 -51
- data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +44 -14
- data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +8 -10
- data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +46 -55
- data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +5 -5
- data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +45 -27
- data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +70 -20
- data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
- data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +22 -6
- data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +192 -105
- 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} +49 -16
- data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
- data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +1 -1
- data/vendor/libgit2/src/{email.c → libgit2/email.c} +58 -40
- data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
- data/vendor/libgit2/src/{transports/ssh.h → libgit2/experimental.h.in} +3 -4
- data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +105 -30
- data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -3
- data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +30 -28
- data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +132 -58
- data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
- data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +3 -3
- data/vendor/libgit2/src/libgit2/grafts.c +270 -0
- data/vendor/libgit2/src/libgit2/grafts.h +35 -0
- data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +1 -1
- data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
- data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
- data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +44 -39
- data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
- data/vendor/libgit2/src/{index.c → libgit2/index.c} +460 -276
- data/vendor/libgit2/src/{index.h → libgit2/index.h} +21 -5
- data/vendor/libgit2/src/libgit2/index_map.c +95 -0
- data/vendor/libgit2/src/libgit2/index_map.h +28 -0
- data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +208 -124
- data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +102 -71
- data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +8 -5
- data/vendor/libgit2/src/libgit2/libgit2.c +268 -0
- data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +39 -37
- data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +83 -73
- data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
- data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +4 -4
- data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -5
- data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
- data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +174 -112
- data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +17 -6
- data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +53 -57
- data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +9 -2
- data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +29 -37
- data/vendor/libgit2/src/{object.c → libgit2/object.c} +166 -35
- data/vendor/libgit2/src/{object.h → libgit2/object.h} +17 -2
- data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +261 -88
- 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} +67 -22
- data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +162 -89
- data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +171 -92
- data/vendor/libgit2/src/libgit2/oid.h +284 -0
- data/vendor/libgit2/src/libgit2/oidarray.c +89 -0
- data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +5 -1
- data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +126 -66
- data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +28 -12
- data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +146 -111
- data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +45 -25
- data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +8 -4
- data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +1 -1
- data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
- data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +8 -1
- data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +51 -16
- data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
- data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +42 -34
- 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} +7 -7
- 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} +116 -60
- data/vendor/libgit2/src/{push.h → libgit2/push.h} +5 -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} +147 -147
- data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +639 -254
- data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +8 -7
- data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +3 -2
- data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +67 -39
- data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +8 -3
- data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +60 -38
- data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +13 -2
- data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +821 -454
- data/vendor/libgit2/src/libgit2/remote.h +101 -0
- data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +1377 -594
- data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +43 -12
- data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
- data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +18 -22
- data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +76 -44
- data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +48 -19
- data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +3 -3
- data/vendor/libgit2/src/{libgit2.c → libgit2/settings.c} +162 -95
- data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +6 -2
- data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +144 -21
- data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -2
- data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +243 -68
- data/vendor/libgit2/src/{status.c → libgit2/status.c} +5 -2
- 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 +62 -67
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +41 -24
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +2 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +11 -3
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +6 -3
- data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
- data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
- data/vendor/libgit2/src/libgit2/streams/socket.c +428 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +3 -1
- data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +79 -19
- data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +5 -0
- data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +279 -220
- data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +10 -11
- data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
- data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +55 -18
- data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +74 -43
- data/vendor/libgit2/src/{tag.h → libgit2/tag.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} +7 -7
- data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +27 -21
- data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +4 -1
- data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +14 -11
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +3 -5
- data/vendor/libgit2/src/{transports/auth_negotiate.c → libgit2/transports/auth_gssapi.c} +44 -45
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +1 -1
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +1 -2
- data/vendor/libgit2/src/{transports/auth_ntlm.c → libgit2/transports/auth_ntlmclient.c} +22 -22
- data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +1 -1
- data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +16 -19
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +49 -24
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -11
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +188 -134
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
- data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
- data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +159 -127
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +142 -165
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +56 -36
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +307 -74
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +297 -97
- data/vendor/libgit2/src/libgit2/transports/ssh.c +85 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
- data/vendor/libgit2/src/{transports/ssh.c → libgit2/transports/ssh_libssh2.c} +414 -268
- data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +101 -75
- data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +30 -20
- data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +7 -5
- data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +128 -110
- data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +7 -6
- data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +160 -121
- data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
- data/vendor/libgit2/src/util/CMakeLists.txt +77 -0
- data/vendor/libgit2/src/{alloc.c → util/alloc.c} +69 -7
- data/vendor/libgit2/src/util/alloc.h +65 -0
- data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
- data/vendor/libgit2/src/util/allocators/debugalloc.h +17 -0
- data/vendor/libgit2/src/util/allocators/failalloc.c +32 -0
- data/vendor/libgit2/src/util/allocators/failalloc.h +17 -0
- data/vendor/libgit2/src/util/allocators/stdalloc.c +37 -0
- data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
- data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +50 -0
- data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{array.h → util/array.h} +25 -19
- data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
- data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +5 -1
- data/vendor/libgit2/src/util/ctype_compat.h +70 -0
- data/vendor/libgit2/src/{date.c → util/date.c} +35 -33
- data/vendor/libgit2/src/util/date.h +45 -0
- data/vendor/libgit2/src/util/errors.c +401 -0
- data/vendor/libgit2/src/{errors.h → util/errors.h} +22 -19
- data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +35 -30
- data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +21 -8
- data/vendor/libgit2/src/{path.c → util/fs_path.c} +591 -615
- data/vendor/libgit2/src/{path.h → util/fs_path.h} +257 -181
- data/vendor/libgit2/src/{futils.c → util/futils.c} +144 -95
- data/vendor/libgit2/src/{futils.h → util/futils.h} +40 -18
- data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +33 -2
- data/vendor/libgit2/src/{common.h → util/git2_util.h} +26 -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 +347 -0
- data/vendor/libgit2/src/util/hash/openssl.h +61 -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 +73 -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/util/hashmap.h +424 -0
- data/vendor/libgit2/src/util/hashmap_str.h +43 -0
- data/vendor/libgit2/src/{integer.h → util/integer.h} +3 -1
- data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
- data/vendor/libgit2/src/util/net.c +1160 -0
- data/vendor/libgit2/src/{net.h → util/net.h} +45 -4
- data/vendor/libgit2/src/{pool.c → util/pool.c} +1 -1
- data/vendor/libgit2/src/{pool.h → util/pool.h} +6 -1
- data/vendor/libgit2/src/{posix.c → util/posix.c} +57 -3
- data/vendor/libgit2/src/{posix.h → util/posix.h} +26 -1
- data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +3 -3
- data/vendor/libgit2/src/util/process.h +222 -0
- data/vendor/libgit2/src/util/rand.c +230 -0
- data/vendor/libgit2/src/util/rand.h +37 -0
- data/vendor/libgit2/src/{regexp.c → util/regexp.c} +5 -5
- 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} +15 -14
- data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +5 -5
- data/vendor/libgit2/src/util/staticstr.h +66 -0
- data/vendor/libgit2/src/{buffer.c → util/str.c} +159 -153
- data/vendor/libgit2/src/util/str.h +357 -0
- data/vendor/libgit2/src/util/strlist.c +108 -0
- data/vendor/libgit2/src/util/strlist.h +36 -0
- 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 -6
- data/vendor/libgit2/src/util/unix/process.c +629 -0
- data/vendor/libgit2/src/{unix → util/unix}/realpath.c +24 -8
- 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} +24 -19
- data/vendor/libgit2/src/{util.h → util/util.h} +30 -81
- data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
- data/vendor/libgit2/src/{vector.c → util/vector.c} +3 -3
- data/vendor/libgit2/src/{vector.h → util/vector.h} +4 -4
- 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.c +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 +148 -17
- 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 +42 -35
- 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/util/win32/process.c +506 -0
- data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
- data/vendor/libgit2/src/util/win32/utf-conv.c +144 -0
- data/vendor/libgit2/src/util/win32/utf-conv.h +127 -0
- 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.c +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 +431 -362
- data/vendor/libgit2/cmake/FindIconv.cmake +0 -45
- data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
- data/vendor/libgit2/deps/http-parser/COPYING +0 -23
- data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
- data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
- data/vendor/libgit2/deps/zlib/COPYING +0 -27
- data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
- data/vendor/libgit2/src/alloc.h +0 -40
- data/vendor/libgit2/src/allocators/failalloc.c +0 -92
- data/vendor/libgit2/src/allocators/failalloc.h +0 -23
- data/vendor/libgit2/src/allocators/stdalloc.c +0 -150
- data/vendor/libgit2/src/allocators/win32_leakcheck.c +0 -118
- data/vendor/libgit2/src/buffer.h +0 -374
- data/vendor/libgit2/src/commit.h +0 -46
- data/vendor/libgit2/src/config_entries.c +0 -237
- data/vendor/libgit2/src/config_entries.h +0 -24
- data/vendor/libgit2/src/config_mem.c +0 -220
- data/vendor/libgit2/src/errors.c +0 -238
- 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/idxmap.c +0 -157
- data/vendor/libgit2/src/idxmap.h +0 -177
- data/vendor/libgit2/src/khash.h +0 -615
- data/vendor/libgit2/src/libgit2.h +0 -15
- data/vendor/libgit2/src/message.h +0 -17
- data/vendor/libgit2/src/net.c +0 -540
- data/vendor/libgit2/src/netops.c +0 -125
- data/vendor/libgit2/src/netops.h +0 -68
- data/vendor/libgit2/src/offmap.c +0 -101
- data/vendor/libgit2/src/offmap.h +0 -133
- data/vendor/libgit2/src/oid.h +0 -51
- data/vendor/libgit2/src/oidarray.c +0 -43
- data/vendor/libgit2/src/oidmap.c +0 -107
- data/vendor/libgit2/src/oidmap.h +0 -128
- data/vendor/libgit2/src/remote.h +0 -55
- data/vendor/libgit2/src/streams/socket.c +0 -239
- data/vendor/libgit2/src/strmap.c +0 -100
- data/vendor/libgit2/src/strmap.h +0 -131
- data/vendor/libgit2/src/sysdir.c +0 -347
- data/vendor/libgit2/src/threadstate.c +0 -84
- data/vendor/libgit2/src/threadstate.h +0 -24
- data/vendor/libgit2/src/win32/findfile.c +0 -230
- data/vendor/libgit2/src/win32/findfile.h +0 -19
- data/vendor/libgit2/src/win32/utf-conv.c +0 -146
- data/vendor/libgit2/src/win32/utf-conv.h +0 -60
- /data/vendor/libgit2/{src → deps}/xdiff/xemit.h +0 -0
- /data/vendor/libgit2/{src → deps}/xdiff/xprepare.h +0 -0
- /data/vendor/libgit2/{src → deps}/xdiff/xtypes.h +0 -0
- /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/{blame_git.h → libgit2/blame_git.h} +0 -0
- /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +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.h → libgit2/diff_parse.h} +0 -0
- /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
- /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
- /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
- /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.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/{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/{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_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}/stransport.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
- /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +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/{pqueue.c → util/pqueue.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/{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}/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}/version.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
@@ -46,10 +46,8 @@ typedef struct {
|
|
46
46
|
typedef struct loose_backend {
|
47
47
|
git_odb_backend parent;
|
48
48
|
|
49
|
-
|
50
|
-
|
51
|
-
mode_t object_file_mode;
|
52
|
-
mode_t object_dir_mode;
|
49
|
+
git_odb_backend_loose_options options;
|
50
|
+
size_t oid_hexsize;
|
53
51
|
|
54
52
|
size_t objects_dirlen;
|
55
53
|
char objects_dir[GIT_FLEX_ARRAY];
|
@@ -59,13 +57,19 @@ typedef struct loose_backend {
|
|
59
57
|
* in order to locate objects matching a short oid.
|
60
58
|
*/
|
61
59
|
typedef struct {
|
60
|
+
loose_backend *backend;
|
61
|
+
|
62
62
|
size_t dir_len;
|
63
|
-
|
63
|
+
|
64
|
+
/* Hex formatted oid to match (and its length) */
|
65
|
+
unsigned char short_oid[GIT_OID_MAX_HEXSIZE];
|
64
66
|
size_t short_oid_len;
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
67
|
+
|
68
|
+
/* Number of matching objects found so far */
|
69
|
+
int found;
|
70
|
+
|
71
|
+
/* Hex formatted oid of the object found */
|
72
|
+
unsigned char res_oid[GIT_OID_MAX_HEXSIZE];
|
69
73
|
} loose_locate_object_state;
|
70
74
|
|
71
75
|
|
@@ -76,31 +80,30 @@ typedef struct {
|
|
76
80
|
***********************************************************/
|
77
81
|
|
78
82
|
static int object_file_name(
|
79
|
-
|
83
|
+
git_str *name, const loose_backend *be, const git_oid *id)
|
80
84
|
{
|
81
|
-
|
85
|
+
/* append loose object filename: aa/aaa... (41 bytes plus NUL) */
|
86
|
+
size_t path_size = be->oid_hexsize + 1;
|
82
87
|
|
83
|
-
|
84
|
-
|
85
|
-
GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, alloclen, 3);
|
86
|
-
if (git_buf_grow(name, alloclen) < 0)
|
87
|
-
return -1;
|
88
|
+
git_str_set(name, be->objects_dir, be->objects_dirlen);
|
89
|
+
git_fs_path_to_dir(name);
|
88
90
|
|
89
|
-
|
90
|
-
|
91
|
+
if (git_str_grow_by(name, path_size + 1) < 0)
|
92
|
+
return -1;
|
91
93
|
|
92
|
-
/* loose object filename: aa/aaa... (41 bytes) */
|
93
94
|
git_oid_pathfmt(name->ptr + name->size, id);
|
94
|
-
name->size +=
|
95
|
+
name->size += path_size;
|
95
96
|
name->ptr[name->size] = '\0';
|
96
97
|
|
97
98
|
return 0;
|
98
99
|
}
|
99
100
|
|
100
|
-
static int object_mkdir(const
|
101
|
+
static int object_mkdir(const git_str *name, const loose_backend *be)
|
101
102
|
{
|
102
103
|
return git_futils_mkdir_relative(
|
103
|
-
name->ptr + be->objects_dirlen,
|
104
|
+
name->ptr + be->objects_dirlen,
|
105
|
+
be->objects_dir,
|
106
|
+
be->options.dir_mode,
|
104
107
|
GIT_MKDIR_PATH | GIT_MKDIR_SKIP_LAST | GIT_MKDIR_VERIFY_DIR, NULL);
|
105
108
|
}
|
106
109
|
|
@@ -222,9 +225,9 @@ static int is_zlib_compressed_data(unsigned char *data, size_t data_len)
|
|
222
225
|
* of loose object data into packs. This format is no longer used, but
|
223
226
|
* we must still read it.
|
224
227
|
*/
|
225
|
-
static int read_loose_packlike(git_rawobj *out,
|
228
|
+
static int read_loose_packlike(git_rawobj *out, git_str *obj)
|
226
229
|
{
|
227
|
-
|
230
|
+
git_str body = GIT_STR_INIT;
|
228
231
|
const unsigned char *obj_data;
|
229
232
|
obj_hdr hdr;
|
230
233
|
size_t obj_len, head_len, alloc_size;
|
@@ -253,7 +256,7 @@ static int read_loose_packlike(git_rawobj *out, git_buf *obj)
|
|
253
256
|
* allocate a buffer and inflate the data into it
|
254
257
|
*/
|
255
258
|
if (GIT_ADD_SIZET_OVERFLOW(&alloc_size, hdr.size, 1) ||
|
256
|
-
|
259
|
+
git_str_init(&body, alloc_size) < 0) {
|
257
260
|
error = -1;
|
258
261
|
goto done;
|
259
262
|
}
|
@@ -263,14 +266,14 @@ static int read_loose_packlike(git_rawobj *out, git_buf *obj)
|
|
263
266
|
|
264
267
|
out->len = hdr.size;
|
265
268
|
out->type = hdr.type;
|
266
|
-
out->data =
|
269
|
+
out->data = git_str_detach(&body);
|
267
270
|
|
268
271
|
done:
|
269
|
-
|
272
|
+
git_str_dispose(&body);
|
270
273
|
return error;
|
271
274
|
}
|
272
275
|
|
273
|
-
static int read_loose_standard(git_rawobj *out,
|
276
|
+
static int read_loose_standard(git_rawobj *out, git_str *obj)
|
274
277
|
{
|
275
278
|
git_zstream zstream = GIT_ZSTREAM_INIT;
|
276
279
|
unsigned char head[MAX_HEADER_LEN], *body = NULL;
|
@@ -279,7 +282,7 @@ static int read_loose_standard(git_rawobj *out, git_buf *obj)
|
|
279
282
|
int error;
|
280
283
|
|
281
284
|
if ((error = git_zstream_init(&zstream, GIT_ZSTREAM_INFLATE)) < 0 ||
|
282
|
-
(error = git_zstream_set_input(&zstream,
|
285
|
+
(error = git_zstream_set_input(&zstream, git_str_cstr(obj), git_str_len(obj))) < 0)
|
283
286
|
goto done;
|
284
287
|
|
285
288
|
decompressed = sizeof(head);
|
@@ -339,15 +342,15 @@ done:
|
|
339
342
|
return error;
|
340
343
|
}
|
341
344
|
|
342
|
-
static int read_loose(git_rawobj *out,
|
345
|
+
static int read_loose(git_rawobj *out, git_str *loc)
|
343
346
|
{
|
344
347
|
int error;
|
345
|
-
|
348
|
+
git_str obj = GIT_STR_INIT;
|
346
349
|
|
347
350
|
GIT_ASSERT_ARG(out);
|
348
351
|
GIT_ASSERT_ARG(loc);
|
349
352
|
|
350
|
-
if (
|
353
|
+
if (git_str_oom(loc))
|
351
354
|
return -1;
|
352
355
|
|
353
356
|
out->data = NULL;
|
@@ -363,7 +366,7 @@ static int read_loose(git_rawobj *out, git_buf *loc)
|
|
363
366
|
error = read_loose_standard(out, &obj);
|
364
367
|
|
365
368
|
done:
|
366
|
-
|
369
|
+
git_str_dispose(&obj);
|
367
370
|
return error;
|
368
371
|
}
|
369
372
|
|
@@ -406,7 +409,7 @@ done:
|
|
406
409
|
return error;
|
407
410
|
}
|
408
411
|
|
409
|
-
static int read_header_loose(git_rawobj *out,
|
412
|
+
static int read_header_loose(git_rawobj *out, git_str *loc)
|
410
413
|
{
|
411
414
|
unsigned char obj[1024];
|
412
415
|
ssize_t obj_len;
|
@@ -415,7 +418,7 @@ static int read_header_loose(git_rawobj *out, git_buf *loc)
|
|
415
418
|
GIT_ASSERT_ARG(out);
|
416
419
|
GIT_ASSERT_ARG(loc);
|
417
420
|
|
418
|
-
if (
|
421
|
+
if (git_str_oom(loc))
|
419
422
|
return -1;
|
420
423
|
|
421
424
|
out->data = NULL;
|
@@ -446,28 +449,29 @@ done:
|
|
446
449
|
}
|
447
450
|
|
448
451
|
static int locate_object(
|
449
|
-
|
452
|
+
git_str *object_location,
|
450
453
|
loose_backend *backend,
|
451
454
|
const git_oid *oid)
|
452
455
|
{
|
453
456
|
int error = object_file_name(object_location, backend, oid);
|
454
457
|
|
455
|
-
if (!error && !
|
458
|
+
if (!error && !git_fs_path_exists(object_location->ptr))
|
456
459
|
return GIT_ENOTFOUND;
|
457
460
|
|
458
461
|
return error;
|
459
462
|
}
|
460
463
|
|
461
464
|
/* Explore an entry of a directory and see if it matches a short oid */
|
462
|
-
static int fn_locate_object_short_oid(void *state,
|
465
|
+
static int fn_locate_object_short_oid(void *state, git_str *pathbuf) {
|
463
466
|
loose_locate_object_state *sstate = (loose_locate_object_state *)state;
|
467
|
+
size_t hex_size = sstate->backend->oid_hexsize;
|
464
468
|
|
465
|
-
if (
|
469
|
+
if (git_str_len(pathbuf) - sstate->dir_len != hex_size - 2) {
|
466
470
|
/* Entry cannot be an object. Continue to next entry */
|
467
471
|
return 0;
|
468
472
|
}
|
469
473
|
|
470
|
-
if (
|
474
|
+
if (git_fs_path_isdir(pathbuf->ptr) == false) {
|
471
475
|
/* We are already in the directory matching the 2 first hex characters,
|
472
476
|
* compare the first ncmp characters of the oids */
|
473
477
|
if (!memcmp(sstate->short_oid + 2,
|
@@ -477,7 +481,9 @@ static int fn_locate_object_short_oid(void *state, git_buf *pathbuf) {
|
|
477
481
|
if (!sstate->found) {
|
478
482
|
sstate->res_oid[0] = sstate->short_oid[0];
|
479
483
|
sstate->res_oid[1] = sstate->short_oid[1];
|
480
|
-
memcpy(sstate->res_oid
|
484
|
+
memcpy(sstate->res_oid + 2,
|
485
|
+
pathbuf->ptr+sstate->dir_len,
|
486
|
+
hex_size - 2);
|
481
487
|
}
|
482
488
|
sstate->found++;
|
483
489
|
}
|
@@ -491,7 +497,7 @@ static int fn_locate_object_short_oid(void *state, git_buf *pathbuf) {
|
|
491
497
|
|
492
498
|
/* Locate an object matching a given short oid */
|
493
499
|
static int locate_object_short_oid(
|
494
|
-
|
500
|
+
git_str *object_location,
|
495
501
|
git_oid *res_oid,
|
496
502
|
loose_backend *backend,
|
497
503
|
const git_oid *short_oid,
|
@@ -503,36 +509,37 @@ static int locate_object_short_oid(
|
|
503
509
|
int error;
|
504
510
|
|
505
511
|
/* prealloc memory for OBJ_DIR/xx/xx..38x..xx */
|
506
|
-
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, dir_len,
|
512
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, dir_len, backend->oid_hexsize);
|
507
513
|
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, alloc_len, 3);
|
508
|
-
if (
|
514
|
+
if (git_str_grow(object_location, alloc_len) < 0)
|
509
515
|
return -1;
|
510
516
|
|
511
|
-
|
512
|
-
|
517
|
+
git_str_set(object_location, objects_dir, dir_len);
|
518
|
+
git_fs_path_to_dir(object_location);
|
513
519
|
|
514
520
|
/* save adjusted position at end of dir so it can be restored later */
|
515
|
-
dir_len =
|
521
|
+
dir_len = git_str_len(object_location);
|
516
522
|
|
517
523
|
/* Convert raw oid to hex formatted oid */
|
518
524
|
git_oid_fmt((char *)state.short_oid, short_oid);
|
519
525
|
|
520
526
|
/* Explore OBJ_DIR/xx/ where xx is the beginning of hex formatted short oid */
|
521
|
-
if (
|
527
|
+
if (git_str_put(object_location, (char *)state.short_oid, 3) < 0)
|
522
528
|
return -1;
|
523
529
|
object_location->ptr[object_location->size - 1] = '/';
|
524
530
|
|
525
531
|
/* Check that directory exists */
|
526
|
-
if (
|
532
|
+
if (git_fs_path_isdir(object_location->ptr) == false)
|
527
533
|
return git_odb__error_notfound("no matching loose object for prefix",
|
528
534
|
short_oid, len);
|
529
535
|
|
530
|
-
state.
|
536
|
+
state.backend = backend;
|
537
|
+
state.dir_len = git_str_len(object_location);
|
531
538
|
state.short_oid_len = len;
|
532
539
|
state.found = 0;
|
533
540
|
|
534
541
|
/* Explore directory to find a unique object matching short_oid */
|
535
|
-
error =
|
542
|
+
error = git_fs_path_direach(
|
536
543
|
object_location, 0, fn_locate_object_short_oid, &state);
|
537
544
|
if (error < 0 && error != GIT_EAMBIGUOUS)
|
538
545
|
return error;
|
@@ -545,34 +552,26 @@ static int locate_object_short_oid(
|
|
545
552
|
return git_odb__error_ambiguous("multiple matches in loose objects");
|
546
553
|
|
547
554
|
/* Convert obtained hex formatted oid to raw */
|
548
|
-
error =
|
555
|
+
error = git_oid__fromstr(res_oid, (char *)state.res_oid, backend->options.oid_type);
|
549
556
|
if (error)
|
550
557
|
return error;
|
551
558
|
|
552
559
|
/* Update the location according to the oid obtained */
|
553
|
-
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, dir_len,
|
560
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, dir_len, backend->oid_hexsize);
|
554
561
|
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, alloc_len, 2);
|
555
562
|
|
556
|
-
|
557
|
-
if (
|
563
|
+
git_str_truncate(object_location, dir_len);
|
564
|
+
if (git_str_grow(object_location, alloc_len) < 0)
|
558
565
|
return -1;
|
559
566
|
|
560
567
|
git_oid_pathfmt(object_location->ptr + dir_len, res_oid);
|
561
568
|
|
562
|
-
object_location->size +=
|
569
|
+
object_location->size += backend->oid_hexsize + 1;
|
563
570
|
object_location->ptr[object_location->size] = '\0';
|
564
571
|
|
565
572
|
return 0;
|
566
573
|
}
|
567
574
|
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
575
|
/***********************************************************
|
577
576
|
*
|
578
577
|
* LOOSE BACKEND PUBLIC API
|
@@ -583,7 +582,7 @@ static int locate_object_short_oid(
|
|
583
582
|
|
584
583
|
static int loose_backend__read_header(size_t *len_p, git_object_t *type_p, git_odb_backend *backend, const git_oid *oid)
|
585
584
|
{
|
586
|
-
|
585
|
+
git_str object_path = GIT_STR_INIT;
|
587
586
|
git_rawobj raw;
|
588
587
|
int error;
|
589
588
|
|
@@ -595,20 +594,20 @@ static int loose_backend__read_header(size_t *len_p, git_object_t *type_p, git_o
|
|
595
594
|
|
596
595
|
if (locate_object(&object_path, (loose_backend *)backend, oid) < 0) {
|
597
596
|
error = git_odb__error_notfound("no matching loose object",
|
598
|
-
oid,
|
597
|
+
oid, ((struct loose_backend *)backend)->oid_hexsize);
|
599
598
|
} else if ((error = read_header_loose(&raw, &object_path)) == 0) {
|
600
599
|
*len_p = raw.len;
|
601
600
|
*type_p = raw.type;
|
602
601
|
}
|
603
602
|
|
604
|
-
|
603
|
+
git_str_dispose(&object_path);
|
605
604
|
|
606
605
|
return error;
|
607
606
|
}
|
608
607
|
|
609
608
|
static int loose_backend__read(void **buffer_p, size_t *len_p, git_object_t *type_p, git_odb_backend *backend, const git_oid *oid)
|
610
609
|
{
|
611
|
-
|
610
|
+
git_str object_path = GIT_STR_INIT;
|
612
611
|
git_rawobj raw;
|
613
612
|
int error = 0;
|
614
613
|
|
@@ -617,14 +616,14 @@ static int loose_backend__read(void **buffer_p, size_t *len_p, git_object_t *typ
|
|
617
616
|
|
618
617
|
if (locate_object(&object_path, (loose_backend *)backend, oid) < 0) {
|
619
618
|
error = git_odb__error_notfound("no matching loose object",
|
620
|
-
oid,
|
619
|
+
oid, ((struct loose_backend *)backend)->oid_hexsize);
|
621
620
|
} else if ((error = read_loose(&raw, &object_path)) == 0) {
|
622
621
|
*buffer_p = raw.data;
|
623
622
|
*len_p = raw.len;
|
624
623
|
*type_p = raw.type;
|
625
624
|
}
|
626
625
|
|
627
|
-
|
626
|
+
git_str_dispose(&object_path);
|
628
627
|
|
629
628
|
return error;
|
630
629
|
}
|
@@ -634,21 +633,23 @@ static int loose_backend__read_prefix(
|
|
634
633
|
void **buffer_p,
|
635
634
|
size_t *len_p,
|
636
635
|
git_object_t *type_p,
|
637
|
-
git_odb_backend *
|
636
|
+
git_odb_backend *_backend,
|
638
637
|
const git_oid *short_oid,
|
639
638
|
size_t len)
|
640
639
|
{
|
640
|
+
struct loose_backend *backend = (struct loose_backend *)_backend;
|
641
641
|
int error = 0;
|
642
642
|
|
643
|
-
GIT_ASSERT_ARG(len >= GIT_OID_MINPREFIXLEN &&
|
643
|
+
GIT_ASSERT_ARG(len >= GIT_OID_MINPREFIXLEN &&
|
644
|
+
len <= backend->oid_hexsize);
|
644
645
|
|
645
|
-
if (len ==
|
646
|
+
if (len == backend->oid_hexsize) {
|
646
647
|
/* We can fall back to regular read method */
|
647
|
-
error = loose_backend__read(buffer_p, len_p, type_p,
|
648
|
+
error = loose_backend__read(buffer_p, len_p, type_p, _backend, short_oid);
|
648
649
|
if (!error)
|
649
650
|
git_oid_cpy(out_oid, short_oid);
|
650
651
|
} else {
|
651
|
-
|
652
|
+
git_str object_path = GIT_STR_INIT;
|
652
653
|
git_rawobj raw;
|
653
654
|
|
654
655
|
GIT_ASSERT_ARG(backend && short_oid);
|
@@ -662,7 +663,7 @@ static int loose_backend__read_prefix(
|
|
662
663
|
*type_p = raw.type;
|
663
664
|
}
|
664
665
|
|
665
|
-
|
666
|
+
git_str_dispose(&object_path);
|
666
667
|
}
|
667
668
|
|
668
669
|
return error;
|
@@ -670,7 +671,7 @@ static int loose_backend__read_prefix(
|
|
670
671
|
|
671
672
|
static int loose_backend__exists(git_odb_backend *backend, const git_oid *oid)
|
672
673
|
{
|
673
|
-
|
674
|
+
git_str object_path = GIT_STR_INIT;
|
674
675
|
int error;
|
675
676
|
|
676
677
|
GIT_ASSERT_ARG(backend);
|
@@ -678,7 +679,7 @@ static int loose_backend__exists(git_odb_backend *backend, const git_oid *oid)
|
|
678
679
|
|
679
680
|
error = locate_object(&object_path, (loose_backend *)backend, oid);
|
680
681
|
|
681
|
-
|
682
|
+
git_str_dispose(&object_path);
|
682
683
|
|
683
684
|
return !error;
|
684
685
|
}
|
@@ -686,7 +687,7 @@ static int loose_backend__exists(git_odb_backend *backend, const git_oid *oid)
|
|
686
687
|
static int loose_backend__exists_prefix(
|
687
688
|
git_oid *out, git_odb_backend *backend, const git_oid *short_id, size_t len)
|
688
689
|
{
|
689
|
-
|
690
|
+
git_str object_path = GIT_STR_INIT;
|
690
691
|
int error;
|
691
692
|
|
692
693
|
GIT_ASSERT_ARG(backend);
|
@@ -697,21 +698,24 @@ static int loose_backend__exists_prefix(
|
|
697
698
|
error = locate_object_short_oid(
|
698
699
|
&object_path, out, (loose_backend *)backend, short_id, len);
|
699
700
|
|
700
|
-
|
701
|
+
git_str_dispose(&object_path);
|
701
702
|
|
702
703
|
return error;
|
703
704
|
}
|
704
705
|
|
705
706
|
struct foreach_state {
|
707
|
+
struct loose_backend *backend;
|
706
708
|
size_t dir_len;
|
707
709
|
git_odb_foreach_cb cb;
|
708
710
|
void *data;
|
709
711
|
};
|
710
712
|
|
711
|
-
GIT_INLINE(int) filename_to_oid(git_oid *oid, const char *ptr)
|
713
|
+
GIT_INLINE(int) filename_to_oid(struct loose_backend *backend, git_oid *oid, const char *ptr)
|
712
714
|
{
|
713
|
-
int v
|
714
|
-
|
715
|
+
int v;
|
716
|
+
size_t i = 0;
|
717
|
+
|
718
|
+
if (strlen(ptr) != backend->oid_hexsize + 1)
|
715
719
|
return -1;
|
716
720
|
|
717
721
|
if (ptr[2] != '/') {
|
@@ -725,7 +729,7 @@ GIT_INLINE(int) filename_to_oid(git_oid *oid, const char *ptr)
|
|
725
729
|
oid->id[0] = (unsigned char) v;
|
726
730
|
|
727
731
|
ptr += 3;
|
728
|
-
for (i = 0; i <
|
732
|
+
for (i = 0; i < backend->oid_hexsize - 2; i += 2) {
|
729
733
|
v = (git__fromhex(ptr[i]) << 4) | git__fromhex(ptr[i + 1]);
|
730
734
|
if (v < 0)
|
731
735
|
return -1;
|
@@ -733,37 +737,41 @@ GIT_INLINE(int) filename_to_oid(git_oid *oid, const char *ptr)
|
|
733
737
|
oid->id[1 + i/2] = (unsigned char) v;
|
734
738
|
}
|
735
739
|
|
740
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
741
|
+
oid->type = backend->options.oid_type;
|
742
|
+
#endif
|
743
|
+
|
736
744
|
return 0;
|
737
745
|
}
|
738
746
|
|
739
|
-
static int foreach_object_dir_cb(void *_state,
|
747
|
+
static int foreach_object_dir_cb(void *_state, git_str *path)
|
740
748
|
{
|
741
749
|
git_oid oid;
|
742
750
|
struct foreach_state *state = (struct foreach_state *) _state;
|
743
751
|
|
744
|
-
if (filename_to_oid(&oid, path->ptr + state->dir_len) < 0)
|
752
|
+
if (filename_to_oid(state->backend, &oid, path->ptr + state->dir_len) < 0)
|
745
753
|
return 0;
|
746
754
|
|
747
755
|
return git_error_set_after_callback_function(
|
748
756
|
state->cb(&oid, state->data), "git_odb_foreach");
|
749
757
|
}
|
750
758
|
|
751
|
-
static int foreach_cb(void *_state,
|
759
|
+
static int foreach_cb(void *_state, git_str *path)
|
752
760
|
{
|
753
761
|
struct foreach_state *state = (struct foreach_state *) _state;
|
754
762
|
|
755
763
|
/* non-dir is some stray file, ignore it */
|
756
|
-
if (!
|
764
|
+
if (!git_fs_path_isdir(git_str_cstr(path)))
|
757
765
|
return 0;
|
758
766
|
|
759
|
-
return
|
767
|
+
return git_fs_path_direach(path, 0, foreach_object_dir_cb, state);
|
760
768
|
}
|
761
769
|
|
762
770
|
static int loose_backend__foreach(git_odb_backend *_backend, git_odb_foreach_cb cb, void *data)
|
763
771
|
{
|
764
772
|
char *objects_dir;
|
765
773
|
int error;
|
766
|
-
|
774
|
+
git_str buf = GIT_STR_INIT;
|
767
775
|
struct foreach_state state;
|
768
776
|
loose_backend *backend = (loose_backend *) _backend;
|
769
777
|
|
@@ -772,19 +780,20 @@ static int loose_backend__foreach(git_odb_backend *_backend, git_odb_foreach_cb
|
|
772
780
|
|
773
781
|
objects_dir = backend->objects_dir;
|
774
782
|
|
775
|
-
|
776
|
-
|
777
|
-
if (
|
783
|
+
git_str_sets(&buf, objects_dir);
|
784
|
+
git_fs_path_to_dir(&buf);
|
785
|
+
if (git_str_oom(&buf))
|
778
786
|
return -1;
|
779
787
|
|
780
788
|
memset(&state, 0, sizeof(state));
|
789
|
+
state.backend = backend;
|
781
790
|
state.cb = cb;
|
782
791
|
state.data = data;
|
783
|
-
state.dir_len =
|
792
|
+
state.dir_len = git_str_len(&buf);
|
784
793
|
|
785
|
-
error =
|
794
|
+
error = git_fs_path_direach(&buf, 0, foreach_cb, &state);
|
786
795
|
|
787
|
-
|
796
|
+
git_str_dispose(&buf);
|
788
797
|
|
789
798
|
return error;
|
790
799
|
}
|
@@ -793,7 +802,7 @@ static int loose_backend__writestream_finalize(git_odb_stream *_stream, const gi
|
|
793
802
|
{
|
794
803
|
loose_writestream *stream = (loose_writestream *)_stream;
|
795
804
|
loose_backend *backend = (loose_backend *)_stream->backend;
|
796
|
-
|
805
|
+
git_str final_path = GIT_STR_INIT;
|
797
806
|
int error = 0;
|
798
807
|
|
799
808
|
if (object_file_name(&final_path, backend, oid) < 0 ||
|
@@ -803,7 +812,7 @@ static int loose_backend__writestream_finalize(git_odb_stream *_stream, const gi
|
|
803
812
|
error = git_filebuf_commit_at(
|
804
813
|
&stream->fbuf, final_path.ptr);
|
805
814
|
|
806
|
-
|
815
|
+
git_str_dispose(&final_path);
|
807
816
|
|
808
817
|
return error;
|
809
818
|
}
|
@@ -825,9 +834,10 @@ static void loose_backend__writestream_free(git_odb_stream *_stream)
|
|
825
834
|
static int filebuf_flags(loose_backend *backend)
|
826
835
|
{
|
827
836
|
int flags = GIT_FILEBUF_TEMPORARY |
|
828
|
-
(backend->
|
837
|
+
(backend->options.compression_level << GIT_FILEBUF_DEFLATE_SHIFT);
|
829
838
|
|
830
|
-
if (backend->
|
839
|
+
if ((backend->options.flags & GIT_ODB_BACKEND_LOOSE_FSYNC) ||
|
840
|
+
git_repository__fsync_gitdir)
|
831
841
|
flags |= GIT_FILEBUF_FSYNC;
|
832
842
|
|
833
843
|
return flags;
|
@@ -838,7 +848,7 @@ static int loose_backend__writestream(git_odb_stream **stream_out, git_odb_backe
|
|
838
848
|
loose_backend *backend;
|
839
849
|
loose_writestream *stream = NULL;
|
840
850
|
char hdr[MAX_HEADER_LEN];
|
841
|
-
|
851
|
+
git_str tmp_path = GIT_STR_INIT;
|
842
852
|
size_t hdrlen;
|
843
853
|
int error;
|
844
854
|
|
@@ -861,16 +871,16 @@ static int loose_backend__writestream(git_odb_stream **stream_out, git_odb_backe
|
|
861
871
|
stream->stream.free = &loose_backend__writestream_free;
|
862
872
|
stream->stream.mode = GIT_STREAM_WRONLY;
|
863
873
|
|
864
|
-
if (
|
874
|
+
if (git_str_joinpath(&tmp_path, backend->objects_dir, "tmp_object") < 0 ||
|
865
875
|
git_filebuf_open(&stream->fbuf, tmp_path.ptr, filebuf_flags(backend),
|
866
|
-
backend->
|
876
|
+
backend->options.file_mode) < 0 ||
|
867
877
|
stream->stream.write((git_odb_stream *)stream, hdr, hdrlen) < 0)
|
868
878
|
{
|
869
879
|
git_filebuf_cleanup(&stream->fbuf);
|
870
880
|
git__free(stream);
|
871
881
|
stream = NULL;
|
872
882
|
}
|
873
|
-
|
883
|
+
git_str_dispose(&tmp_path);
|
874
884
|
*stream_out = (git_odb_stream *)stream;
|
875
885
|
|
876
886
|
return !stream ? -1 : 0;
|
@@ -996,7 +1006,8 @@ static int loose_backend__readstream(
|
|
996
1006
|
loose_backend *backend;
|
997
1007
|
loose_readstream *stream = NULL;
|
998
1008
|
git_hash_ctx *hash_ctx = NULL;
|
999
|
-
|
1009
|
+
git_str object_path = GIT_STR_INIT;
|
1010
|
+
git_hash_algorithm_t algorithm;
|
1000
1011
|
obj_hdr hdr;
|
1001
1012
|
int error = 0;
|
1002
1013
|
|
@@ -1013,7 +1024,7 @@ static int loose_backend__readstream(
|
|
1013
1024
|
|
1014
1025
|
if (locate_object(&object_path, backend, oid) < 0) {
|
1015
1026
|
error = git_odb__error_notfound("no matching loose object",
|
1016
|
-
oid,
|
1027
|
+
oid, backend->oid_hexsize);
|
1017
1028
|
goto done;
|
1018
1029
|
}
|
1019
1030
|
|
@@ -1023,9 +1034,11 @@ static int loose_backend__readstream(
|
|
1023
1034
|
hash_ctx = git__malloc(sizeof(git_hash_ctx));
|
1024
1035
|
GIT_ERROR_CHECK_ALLOC(hash_ctx);
|
1025
1036
|
|
1026
|
-
|
1027
|
-
|
1028
|
-
|
1037
|
+
algorithm = git_oid_algorithm(backend->options.oid_type);
|
1038
|
+
|
1039
|
+
if ((error = git_hash_ctx_init(hash_ctx, algorithm)) < 0 ||
|
1040
|
+
(error = git_futils_mmap_ro_file(&stream->map, object_path.ptr)) < 0 ||
|
1041
|
+
(error = git_zstream_init(&stream->zstream, GIT_ZSTREAM_INFLATE)) < 0)
|
1029
1042
|
goto done;
|
1030
1043
|
|
1031
1044
|
/* check for a packlike loose object */
|
@@ -1059,14 +1072,14 @@ done:
|
|
1059
1072
|
}
|
1060
1073
|
}
|
1061
1074
|
|
1062
|
-
|
1075
|
+
git_str_dispose(&object_path);
|
1063
1076
|
return error;
|
1064
1077
|
}
|
1065
1078
|
|
1066
1079
|
static int loose_backend__write(git_odb_backend *_backend, const git_oid *oid, const void *data, size_t len, git_object_t type)
|
1067
1080
|
{
|
1068
1081
|
int error = 0;
|
1069
|
-
|
1082
|
+
git_str final_path = GIT_STR_INIT;
|
1070
1083
|
char header[MAX_HEADER_LEN];
|
1071
1084
|
size_t header_len;
|
1072
1085
|
git_filebuf fbuf = GIT_FILEBUF_INIT;
|
@@ -1079,9 +1092,9 @@ static int loose_backend__write(git_odb_backend *_backend, const git_oid *oid, c
|
|
1079
1092
|
header, sizeof(header), len, type)) < 0)
|
1080
1093
|
goto cleanup;
|
1081
1094
|
|
1082
|
-
if (
|
1095
|
+
if (git_str_joinpath(&final_path, backend->objects_dir, "tmp_object") < 0 ||
|
1083
1096
|
git_filebuf_open(&fbuf, final_path.ptr, filebuf_flags(backend),
|
1084
|
-
backend->
|
1097
|
+
backend->options.file_mode) < 0)
|
1085
1098
|
{
|
1086
1099
|
error = -1;
|
1087
1100
|
goto cleanup;
|
@@ -1098,7 +1111,7 @@ static int loose_backend__write(git_odb_backend *_backend, const git_oid *oid, c
|
|
1098
1111
|
cleanup:
|
1099
1112
|
if (error < 0)
|
1100
1113
|
git_filebuf_cleanup(&fbuf);
|
1101
|
-
|
1114
|
+
git_str_dispose(&final_path);
|
1102
1115
|
return error;
|
1103
1116
|
}
|
1104
1117
|
|
@@ -1107,14 +1120,14 @@ static int loose_backend__freshen(
|
|
1107
1120
|
const git_oid *oid)
|
1108
1121
|
{
|
1109
1122
|
loose_backend *backend = (loose_backend *)_backend;
|
1110
|
-
|
1123
|
+
git_str path = GIT_STR_INIT;
|
1111
1124
|
int error;
|
1112
1125
|
|
1113
1126
|
if (object_file_name(&path, backend, oid) < 0)
|
1114
1127
|
return -1;
|
1115
1128
|
|
1116
1129
|
error = git_futils_touch(path.ptr, NULL);
|
1117
|
-
|
1130
|
+
git_str_dispose(&path);
|
1118
1131
|
|
1119
1132
|
return error;
|
1120
1133
|
}
|
@@ -1124,13 +1137,34 @@ static void loose_backend__free(git_odb_backend *_backend)
|
|
1124
1137
|
git__free(_backend);
|
1125
1138
|
}
|
1126
1139
|
|
1127
|
-
|
1140
|
+
static void normalize_options(
|
1141
|
+
git_odb_backend_loose_options *opts,
|
1142
|
+
const git_odb_backend_loose_options *given_opts)
|
1143
|
+
{
|
1144
|
+
git_odb_backend_loose_options init = GIT_ODB_BACKEND_LOOSE_OPTIONS_INIT;
|
1145
|
+
|
1146
|
+
if (given_opts)
|
1147
|
+
memcpy(opts, given_opts, sizeof(git_odb_backend_loose_options));
|
1148
|
+
else
|
1149
|
+
memcpy(opts, &init, sizeof(git_odb_backend_loose_options));
|
1150
|
+
|
1151
|
+
if (opts->compression_level < 0)
|
1152
|
+
opts->compression_level = Z_BEST_SPEED;
|
1153
|
+
|
1154
|
+
if (opts->dir_mode == 0)
|
1155
|
+
opts->dir_mode = GIT_OBJECT_DIR_MODE;
|
1156
|
+
|
1157
|
+
if (opts->file_mode == 0)
|
1158
|
+
opts->file_mode = GIT_OBJECT_FILE_MODE;
|
1159
|
+
|
1160
|
+
if (opts->oid_type == 0)
|
1161
|
+
opts->oid_type = GIT_OID_DEFAULT;
|
1162
|
+
}
|
1163
|
+
|
1164
|
+
int git_odb__backend_loose(
|
1128
1165
|
git_odb_backend **backend_out,
|
1129
1166
|
const char *objects_dir,
|
1130
|
-
|
1131
|
-
int do_fsync,
|
1132
|
-
unsigned int dir_mode,
|
1133
|
-
unsigned int file_mode)
|
1167
|
+
git_odb_backend_loose_options *opts)
|
1134
1168
|
{
|
1135
1169
|
loose_backend *backend;
|
1136
1170
|
size_t objects_dirlen, alloclen;
|
@@ -1148,22 +1182,12 @@ int git_odb_backend_loose(
|
|
1148
1182
|
backend->parent.version = GIT_ODB_BACKEND_VERSION;
|
1149
1183
|
backend->objects_dirlen = objects_dirlen;
|
1150
1184
|
memcpy(backend->objects_dir, objects_dir, objects_dirlen);
|
1185
|
+
|
1151
1186
|
if (backend->objects_dir[backend->objects_dirlen - 1] != '/')
|
1152
1187
|
backend->objects_dir[backend->objects_dirlen++] = '/';
|
1153
1188
|
|
1154
|
-
|
1155
|
-
|
1156
|
-
|
1157
|
-
if (dir_mode == 0)
|
1158
|
-
dir_mode = GIT_OBJECT_DIR_MODE;
|
1159
|
-
|
1160
|
-
if (file_mode == 0)
|
1161
|
-
file_mode = GIT_OBJECT_FILE_MODE;
|
1162
|
-
|
1163
|
-
backend->object_zlib_level = compression_level;
|
1164
|
-
backend->fsync_object_files = do_fsync;
|
1165
|
-
backend->object_dir_mode = dir_mode;
|
1166
|
-
backend->object_file_mode = file_mode;
|
1189
|
+
normalize_options(&backend->options, opts);
|
1190
|
+
backend->oid_hexsize = git_oid_hexsize(backend->options.oid_type);
|
1167
1191
|
|
1168
1192
|
backend->parent.read = &loose_backend__read;
|
1169
1193
|
backend->parent.write = &loose_backend__write;
|
@@ -1180,3 +1204,37 @@ int git_odb_backend_loose(
|
|
1180
1204
|
*backend_out = (git_odb_backend *)backend;
|
1181
1205
|
return 0;
|
1182
1206
|
}
|
1207
|
+
|
1208
|
+
|
1209
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
1210
|
+
int git_odb_backend_loose(
|
1211
|
+
git_odb_backend **backend_out,
|
1212
|
+
const char *objects_dir,
|
1213
|
+
git_odb_backend_loose_options *opts)
|
1214
|
+
{
|
1215
|
+
return git_odb__backend_loose(backend_out, objects_dir, opts);
|
1216
|
+
}
|
1217
|
+
#else
|
1218
|
+
int git_odb_backend_loose(
|
1219
|
+
git_odb_backend **backend_out,
|
1220
|
+
const char *objects_dir,
|
1221
|
+
int compression_level,
|
1222
|
+
int do_fsync,
|
1223
|
+
unsigned int dir_mode,
|
1224
|
+
unsigned int file_mode)
|
1225
|
+
{
|
1226
|
+
git_odb_backend_loose_flag_t flags = 0;
|
1227
|
+
git_odb_backend_loose_options opts = GIT_ODB_BACKEND_LOOSE_OPTIONS_INIT;
|
1228
|
+
|
1229
|
+
if (do_fsync)
|
1230
|
+
flags |= GIT_ODB_BACKEND_LOOSE_FSYNC;
|
1231
|
+
|
1232
|
+
opts.flags = flags;
|
1233
|
+
opts.compression_level = compression_level;
|
1234
|
+
opts.dir_mode = dir_mode;
|
1235
|
+
opts.file_mode = file_mode;
|
1236
|
+
opts.oid_type = GIT_OID_DEFAULT;
|
1237
|
+
|
1238
|
+
return git_odb__backend_loose(backend_out, objects_dir, &opts);
|
1239
|
+
}
|
1240
|
+
#endif
|