rugged 1.3.1 → 1.6.2
Sign up to get free protection for your applications and to get access to all the features.
- 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_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 +38 -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 +18 -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} +107 -71
- 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} +54 -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} +690 -366
- data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +21 -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} +580 -615
- data/vendor/libgit2/src/{path.h → util/fs_path.h} +234 -181
- 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
@@ -0,0 +1,126 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
3
|
+
*
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
6
|
+
*/
|
7
|
+
|
8
|
+
#include "buf.h"
|
9
|
+
#include "common.h"
|
10
|
+
|
11
|
+
int git_buf_sanitize(git_buf *buf)
|
12
|
+
{
|
13
|
+
GIT_ASSERT_ARG(buf);
|
14
|
+
|
15
|
+
if (buf->reserved > 0)
|
16
|
+
buf->ptr[0] = '\0';
|
17
|
+
else
|
18
|
+
buf->ptr = git_str__initstr;
|
19
|
+
|
20
|
+
buf->size = 0;
|
21
|
+
return 0;
|
22
|
+
}
|
23
|
+
|
24
|
+
int git_buf_tostr(git_str *out, git_buf *buf)
|
25
|
+
{
|
26
|
+
GIT_ASSERT_ARG(out);
|
27
|
+
GIT_ASSERT_ARG(buf);
|
28
|
+
|
29
|
+
if (git_buf_sanitize(buf) < 0)
|
30
|
+
return -1;
|
31
|
+
|
32
|
+
out->ptr = buf->ptr;
|
33
|
+
out->asize = buf->reserved;
|
34
|
+
out->size = buf->size;
|
35
|
+
|
36
|
+
buf->ptr = git_str__initstr;
|
37
|
+
buf->reserved = 0;
|
38
|
+
buf->size = 0;
|
39
|
+
|
40
|
+
return 0;
|
41
|
+
}
|
42
|
+
|
43
|
+
int git_buf_fromstr(git_buf *out, git_str *str)
|
44
|
+
{
|
45
|
+
GIT_ASSERT_ARG(out);
|
46
|
+
GIT_ASSERT_ARG(str);
|
47
|
+
|
48
|
+
out->ptr = str->ptr;
|
49
|
+
out->reserved = str->asize;
|
50
|
+
out->size = str->size;
|
51
|
+
|
52
|
+
str->ptr = git_str__initstr;
|
53
|
+
str->asize = 0;
|
54
|
+
str->size = 0;
|
55
|
+
|
56
|
+
return 0;
|
57
|
+
}
|
58
|
+
|
59
|
+
void git_buf_dispose(git_buf *buf)
|
60
|
+
{
|
61
|
+
if (!buf)
|
62
|
+
return;
|
63
|
+
|
64
|
+
if (buf->ptr != git_str__initstr)
|
65
|
+
git__free(buf->ptr);
|
66
|
+
|
67
|
+
buf->ptr = git_str__initstr;
|
68
|
+
buf->reserved = 0;
|
69
|
+
buf->size = 0;
|
70
|
+
}
|
71
|
+
|
72
|
+
#ifndef GIT_DEPRECATE_HARD
|
73
|
+
int git_buf_grow(git_buf *buffer, size_t target_size)
|
74
|
+
{
|
75
|
+
char *newptr;
|
76
|
+
|
77
|
+
if (buffer->reserved >= target_size)
|
78
|
+
return 0;
|
79
|
+
|
80
|
+
if (buffer->ptr == git_str__initstr)
|
81
|
+
newptr = git__malloc(target_size);
|
82
|
+
else
|
83
|
+
newptr = git__realloc(buffer->ptr, target_size);
|
84
|
+
|
85
|
+
if (!newptr)
|
86
|
+
return -1;
|
87
|
+
|
88
|
+
buffer->ptr = newptr;
|
89
|
+
buffer->reserved = target_size;
|
90
|
+
return 0;
|
91
|
+
}
|
92
|
+
|
93
|
+
int git_buf_set(git_buf *buffer, const void *data, size_t datalen)
|
94
|
+
{
|
95
|
+
size_t alloclen;
|
96
|
+
|
97
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, datalen, 1);
|
98
|
+
|
99
|
+
if (git_buf_grow(buffer, alloclen) < 0)
|
100
|
+
return -1;
|
101
|
+
|
102
|
+
memmove(buffer->ptr, data, datalen);
|
103
|
+
buffer->size = datalen;
|
104
|
+
buffer->ptr[buffer->size] = '\0';
|
105
|
+
|
106
|
+
return 0;
|
107
|
+
}
|
108
|
+
|
109
|
+
int git_buf_is_binary(const git_buf *buf)
|
110
|
+
{
|
111
|
+
git_str str = GIT_STR_INIT_CONST(buf->ptr, buf->size);
|
112
|
+
return git_str_is_binary(&str);
|
113
|
+
}
|
114
|
+
|
115
|
+
int git_buf_contains_nul(const git_buf *buf)
|
116
|
+
{
|
117
|
+
git_str str = GIT_STR_INIT_CONST(buf->ptr, buf->size);
|
118
|
+
return git_str_contains_nul(&str);
|
119
|
+
}
|
120
|
+
|
121
|
+
void git_buf_free(git_buf *buffer)
|
122
|
+
{
|
123
|
+
git_buf_dispose(buffer);
|
124
|
+
}
|
125
|
+
|
126
|
+
#endif
|
@@ -0,0 +1,50 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
3
|
+
*
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
6
|
+
*/
|
7
|
+
#ifndef INCLUDE_buf_h__
|
8
|
+
#define INCLUDE_buf_h__
|
9
|
+
|
10
|
+
#include "git2/buffer.h"
|
11
|
+
#include "common.h"
|
12
|
+
|
13
|
+
/*
|
14
|
+
* Adapts a private API that takes a `git_str` into a public API that
|
15
|
+
* takes a `git_buf`.
|
16
|
+
*/
|
17
|
+
|
18
|
+
#define GIT_BUF_WRAP_PRIVATE(buf, fn, ...) \
|
19
|
+
{ \
|
20
|
+
git_str str = GIT_STR_INIT; \
|
21
|
+
int error; \
|
22
|
+
if ((error = git_buf_tostr(&str, buf)) == 0 && \
|
23
|
+
(error = fn(&str, __VA_ARGS__)) == 0) \
|
24
|
+
error = git_buf_fromstr(buf, &str); \
|
25
|
+
git_str_dispose(&str); \
|
26
|
+
return error; \
|
27
|
+
}
|
28
|
+
|
29
|
+
/**
|
30
|
+
* "Sanitizes" a buffer from user input. This simply ensures that the
|
31
|
+
* `git_buf` has nice defaults if the user didn't set the members to
|
32
|
+
* anything, so that if we return early we don't leave it populated
|
33
|
+
* with nonsense.
|
34
|
+
*/
|
35
|
+
extern int git_buf_sanitize(git_buf *from_user);
|
36
|
+
|
37
|
+
/**
|
38
|
+
* Populate a `git_str` from a `git_buf` for passing to libgit2 internal
|
39
|
+
* functions. Sanitizes the given `git_buf` before proceeding. The
|
40
|
+
* `git_buf` will no longer point to this memory.
|
41
|
+
*/
|
42
|
+
extern int git_buf_tostr(git_str *out, git_buf *buf);
|
43
|
+
|
44
|
+
/**
|
45
|
+
* Populate a `git_buf` from a `git_str` for returning to a user.
|
46
|
+
* The `git_str` will no longer point to this memory.
|
47
|
+
*/
|
48
|
+
extern int git_buf_fromstr(git_buf *out, git_str *str);
|
49
|
+
|
50
|
+
#endif
|
@@ -27,10 +27,11 @@
|
|
27
27
|
#include "diff_generate.h"
|
28
28
|
#include "pathspec.h"
|
29
29
|
#include "diff_xdiff.h"
|
30
|
-
#include "
|
30
|
+
#include "fs_path.h"
|
31
31
|
#include "attr.h"
|
32
32
|
#include "pool.h"
|
33
33
|
#include "strmap.h"
|
34
|
+
#include "path.h"
|
34
35
|
|
35
36
|
/* See docs/checkout-internals.md for more information */
|
36
37
|
|
@@ -44,7 +45,7 @@ enum {
|
|
44
45
|
CHECKOUT_ACTION__UPDATE_CONFLICT = 32,
|
45
46
|
CHECKOUT_ACTION__MAX = 32,
|
46
47
|
CHECKOUT_ACTION__REMOVE_AND_UPDATE =
|
47
|
-
(CHECKOUT_ACTION__UPDATE_BLOB | CHECKOUT_ACTION__REMOVE)
|
48
|
+
(CHECKOUT_ACTION__UPDATE_BLOB | CHECKOUT_ACTION__REMOVE)
|
48
49
|
};
|
49
50
|
|
50
51
|
typedef struct {
|
@@ -61,9 +62,9 @@ typedef struct {
|
|
61
62
|
git_vector update_conflicts;
|
62
63
|
git_vector *update_reuc;
|
63
64
|
git_vector *update_names;
|
64
|
-
|
65
|
+
git_str target_path;
|
65
66
|
size_t target_len;
|
66
|
-
|
67
|
+
git_str tmp;
|
67
68
|
unsigned int strategy;
|
68
69
|
int can_symlink;
|
69
70
|
int respect_filemode;
|
@@ -80,11 +81,11 @@ typedef struct {
|
|
80
81
|
const git_index_entry *ours;
|
81
82
|
const git_index_entry *theirs;
|
82
83
|
|
83
|
-
int name_collision:1,
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
84
|
+
unsigned int name_collision:1,
|
85
|
+
directoryfile:1,
|
86
|
+
one_to_two:1,
|
87
|
+
binary:1,
|
88
|
+
submodule:1;
|
88
89
|
} checkout_conflictdata;
|
89
90
|
|
90
91
|
static int checkout_notify(
|
@@ -321,14 +322,14 @@ static int checkout_action_no_wd(
|
|
321
322
|
}
|
322
323
|
|
323
324
|
static int checkout_target_fullpath(
|
324
|
-
|
325
|
+
git_str **out, checkout_data *data, const char *path)
|
325
326
|
{
|
326
|
-
|
327
|
+
git_str_truncate(&data->target_path, data->target_len);
|
327
328
|
|
328
|
-
if (path &&
|
329
|
+
if (path && git_str_puts(&data->target_path, path) < 0)
|
329
330
|
return -1;
|
330
331
|
|
331
|
-
if (
|
332
|
+
if (git_path_validate_str_length(data->repo, &data->target_path) < 0)
|
332
333
|
return -1;
|
333
334
|
|
334
335
|
*out = &data->target_path;
|
@@ -339,7 +340,7 @@ static int checkout_target_fullpath(
|
|
339
340
|
static bool wd_item_is_removable(
|
340
341
|
checkout_data *data, const git_index_entry *wd)
|
341
342
|
{
|
342
|
-
|
343
|
+
git_str *full;
|
343
344
|
|
344
345
|
if (wd->mode != GIT_FILEMODE_TREE)
|
345
346
|
return true;
|
@@ -347,7 +348,7 @@ static bool wd_item_is_removable(
|
|
347
348
|
if (checkout_target_fullpath(&full, data, wd->path) < 0)
|
348
349
|
return false;
|
349
350
|
|
350
|
-
return !full || !
|
351
|
+
return !full || !git_fs_path_contains(full, DOT_GIT);
|
351
352
|
}
|
352
353
|
|
353
354
|
static int checkout_queue_remove(checkout_data *data, const char *path)
|
@@ -423,7 +424,7 @@ static int checkout_action_wd_only(
|
|
423
424
|
|
424
425
|
/* copy the entry for issuing notification callback later */
|
425
426
|
git_index_entry saved_wd = *wd;
|
426
|
-
|
427
|
+
git_str_sets(&data->tmp, wd->path);
|
427
428
|
saved_wd.path = data->tmp.ptr;
|
428
429
|
|
429
430
|
error = git_iterator_advance_over(
|
@@ -476,12 +477,12 @@ static bool submodule_is_config_only(
|
|
476
477
|
|
477
478
|
static bool checkout_is_empty_dir(checkout_data *data, const char *path)
|
478
479
|
{
|
479
|
-
|
480
|
+
git_str *fullpath;
|
480
481
|
|
481
482
|
if (checkout_target_fullpath(&fullpath, data, path) < 0)
|
482
483
|
return false;
|
483
484
|
|
484
|
-
return
|
485
|
+
return git_fs_path_is_empty_dir(fullpath->ptr);
|
485
486
|
}
|
486
487
|
|
487
488
|
static int checkout_action_with_wd(
|
@@ -962,7 +963,7 @@ static int checkout_conflicts_load(checkout_data *data, git_iterator *workdir, g
|
|
962
963
|
{
|
963
964
|
git_index *index;
|
964
965
|
|
965
|
-
/* Only write
|
966
|
+
/* Only write conflicts from sources that have them: indexes. */
|
966
967
|
if ((index = git_iterator_index(data->target)) == NULL)
|
967
968
|
return 0;
|
968
969
|
|
@@ -1201,12 +1202,12 @@ static int checkout_conflicts_mark_directoryfile(
|
|
1201
1202
|
goto done;
|
1202
1203
|
}
|
1203
1204
|
|
1204
|
-
prefixed =
|
1205
|
+
prefixed = git_fs_path_equal_or_prefixed(path, entry->path, NULL);
|
1205
1206
|
|
1206
|
-
if (prefixed ==
|
1207
|
+
if (prefixed == GIT_FS_PATH_EQUAL)
|
1207
1208
|
continue;
|
1208
1209
|
|
1209
|
-
if (prefixed ==
|
1210
|
+
if (prefixed == GIT_FS_PATH_PREFIX)
|
1210
1211
|
conflict->directoryfile = 1;
|
1211
1212
|
|
1212
1213
|
break;
|
@@ -1280,14 +1281,14 @@ static int checkout_verify_paths(
|
|
1280
1281
|
unsigned int flags = GIT_PATH_REJECT_WORKDIR_DEFAULTS;
|
1281
1282
|
|
1282
1283
|
if (action & CHECKOUT_ACTION__REMOVE) {
|
1283
|
-
if (!
|
1284
|
+
if (!git_path_is_valid(repo, delta->old_file.path, delta->old_file.mode, flags)) {
|
1284
1285
|
git_error_set(GIT_ERROR_CHECKOUT, "cannot remove invalid path '%s'", delta->old_file.path);
|
1285
1286
|
return -1;
|
1286
1287
|
}
|
1287
1288
|
}
|
1288
1289
|
|
1289
1290
|
if (action & ~CHECKOUT_ACTION__REMOVE) {
|
1290
|
-
if (!
|
1291
|
+
if (!git_path_is_valid(repo, delta->new_file.path, delta->new_file.mode, flags)) {
|
1291
1292
|
git_error_set(GIT_ERROR_CHECKOUT, "cannot checkout to invalid path '%s'", delta->new_file.path);
|
1292
1293
|
return -1;
|
1293
1294
|
}
|
@@ -1584,7 +1585,7 @@ static int blob_content_to_link(
|
|
1584
1585
|
git_blob *blob,
|
1585
1586
|
const char *path)
|
1586
1587
|
{
|
1587
|
-
|
1588
|
+
git_str linktarget = GIT_STR_INIT;
|
1588
1589
|
int error;
|
1589
1590
|
|
1590
1591
|
if ((error = mkpath2file(data, path, data->opts.dir_mode)) < 0)
|
@@ -1594,10 +1595,10 @@ static int blob_content_to_link(
|
|
1594
1595
|
return error;
|
1595
1596
|
|
1596
1597
|
if (data->can_symlink) {
|
1597
|
-
if ((error = p_symlink(
|
1598
|
+
if ((error = p_symlink(git_str_cstr(&linktarget), path)) < 0)
|
1598
1599
|
git_error_set(GIT_ERROR_OS, "could not create symlink %s", path);
|
1599
1600
|
} else {
|
1600
|
-
error = git_futils_fake_symlink(
|
1601
|
+
error = git_futils_fake_symlink(git_str_cstr(&linktarget), path);
|
1601
1602
|
}
|
1602
1603
|
|
1603
1604
|
if (!error) {
|
@@ -1609,7 +1610,7 @@ static int blob_content_to_link(
|
|
1609
1610
|
st->st_mode = GIT_FILEMODE_LINK;
|
1610
1611
|
}
|
1611
1612
|
|
1612
|
-
|
1613
|
+
git_str_dispose(&linktarget);
|
1613
1614
|
|
1614
1615
|
return error;
|
1615
1616
|
}
|
@@ -1636,7 +1637,7 @@ static int checkout_submodule_update_index(
|
|
1636
1637
|
checkout_data *data,
|
1637
1638
|
const git_diff_file *file)
|
1638
1639
|
{
|
1639
|
-
|
1640
|
+
git_str *fullpath;
|
1640
1641
|
struct stat st;
|
1641
1642
|
|
1642
1643
|
/* update the index unless prevented */
|
@@ -1772,7 +1773,7 @@ static int checkout_blob(
|
|
1772
1773
|
checkout_data *data,
|
1773
1774
|
const git_diff_file *file)
|
1774
1775
|
{
|
1775
|
-
|
1776
|
+
git_str *fullpath;
|
1776
1777
|
struct stat st;
|
1777
1778
|
int error = 0;
|
1778
1779
|
|
@@ -1809,7 +1810,7 @@ static int checkout_remove_the_old(
|
|
1809
1810
|
git_diff_delta *delta;
|
1810
1811
|
const char *str;
|
1811
1812
|
size_t i;
|
1812
|
-
|
1813
|
+
git_str *fullpath;
|
1813
1814
|
uint32_t flg = GIT_RMDIR_EMPTY_PARENTS |
|
1814
1815
|
GIT_RMDIR_REMOVE_FILES | GIT_RMDIR_REMOVE_BLOCKERS;
|
1815
1816
|
|
@@ -1927,40 +1928,40 @@ static int checkout_lookup_head_tree(git_tree **out, git_repository *repo)
|
|
1927
1928
|
|
1928
1929
|
|
1929
1930
|
static int conflict_entry_name(
|
1930
|
-
|
1931
|
+
git_str *out,
|
1931
1932
|
const char *side_name,
|
1932
1933
|
const char *filename)
|
1933
1934
|
{
|
1934
|
-
if (
|
1935
|
-
|
1936
|
-
|
1935
|
+
if (git_str_puts(out, side_name) < 0 ||
|
1936
|
+
git_str_putc(out, ':') < 0 ||
|
1937
|
+
git_str_puts(out, filename) < 0)
|
1937
1938
|
return -1;
|
1938
1939
|
|
1939
1940
|
return 0;
|
1940
1941
|
}
|
1941
1942
|
|
1942
|
-
static int checkout_path_suffixed(
|
1943
|
+
static int checkout_path_suffixed(git_str *path, const char *suffix)
|
1943
1944
|
{
|
1944
1945
|
size_t path_len;
|
1945
1946
|
int i = 0, error = 0;
|
1946
1947
|
|
1947
|
-
if ((error =
|
1948
|
+
if ((error = git_str_putc(path, '~')) < 0 || (error = git_str_puts(path, suffix)) < 0)
|
1948
1949
|
return -1;
|
1949
1950
|
|
1950
|
-
path_len =
|
1951
|
+
path_len = git_str_len(path);
|
1951
1952
|
|
1952
|
-
while (
|
1953
|
-
|
1953
|
+
while (git_fs_path_exists(git_str_cstr(path)) && i < INT_MAX) {
|
1954
|
+
git_str_truncate(path, path_len);
|
1954
1955
|
|
1955
|
-
if ((error =
|
1956
|
-
(error =
|
1956
|
+
if ((error = git_str_putc(path, '_')) < 0 ||
|
1957
|
+
(error = git_str_printf(path, "%d", i)) < 0)
|
1957
1958
|
return error;
|
1958
1959
|
|
1959
1960
|
i++;
|
1960
1961
|
}
|
1961
1962
|
|
1962
1963
|
if (i == INT_MAX) {
|
1963
|
-
|
1964
|
+
git_str_truncate(path, path_len);
|
1964
1965
|
|
1965
1966
|
git_error_set(GIT_ERROR_CHECKOUT, "could not write '%s': working directory file exists", path->ptr);
|
1966
1967
|
return GIT_EEXISTS;
|
@@ -1974,8 +1975,8 @@ static int checkout_write_entry(
|
|
1974
1975
|
checkout_conflictdata *conflict,
|
1975
1976
|
const git_index_entry *side)
|
1976
1977
|
{
|
1977
|
-
const char *hint_path, *suffix;
|
1978
|
-
|
1978
|
+
const char *hint_path = NULL, *suffix;
|
1979
|
+
git_str *fullpath;
|
1979
1980
|
struct stat st;
|
1980
1981
|
int error;
|
1981
1982
|
|
@@ -2025,7 +2026,7 @@ static int checkout_write_entries(
|
|
2025
2026
|
}
|
2026
2027
|
|
2027
2028
|
static int checkout_merge_path(
|
2028
|
-
|
2029
|
+
git_str *out,
|
2029
2030
|
checkout_data *data,
|
2030
2031
|
checkout_conflictdata *conflict,
|
2031
2032
|
git_merge_file_result *result)
|
@@ -2033,8 +2034,8 @@ static int checkout_merge_path(
|
|
2033
2034
|
const char *our_label_raw, *their_label_raw, *suffix;
|
2034
2035
|
int error = 0;
|
2035
2036
|
|
2036
|
-
if ((error =
|
2037
|
-
(error =
|
2037
|
+
if ((error = git_str_joinpath(out, data->opts.target_directory, result->path)) < 0 ||
|
2038
|
+
(error = git_path_validate_str_length(data->repo, out)) < 0)
|
2038
2039
|
return error;
|
2039
2040
|
|
2040
2041
|
/* Most conflicts simply use the filename in the index */
|
@@ -2056,9 +2057,9 @@ static int checkout_write_merge(
|
|
2056
2057
|
checkout_data *data,
|
2057
2058
|
checkout_conflictdata *conflict)
|
2058
2059
|
{
|
2059
|
-
|
2060
|
-
path_suffixed =
|
2061
|
-
in_data =
|
2060
|
+
git_str our_label = GIT_STR_INIT, their_label = GIT_STR_INIT,
|
2061
|
+
path_suffixed = GIT_STR_INIT, path_workdir = GIT_STR_INIT,
|
2062
|
+
in_data = GIT_STR_INIT, out_data = GIT_STR_INIT;
|
2062
2063
|
git_merge_file_options opts = GIT_MERGE_FILE_OPTIONS_INIT;
|
2063
2064
|
git_merge_file_result result = {0};
|
2064
2065
|
git_filebuf output = GIT_FILEBUF_INIT;
|
@@ -2069,6 +2070,9 @@ static int checkout_write_merge(
|
|
2069
2070
|
if (data->opts.checkout_strategy & GIT_CHECKOUT_CONFLICT_STYLE_DIFF3)
|
2070
2071
|
opts.flags |= GIT_MERGE_FILE_STYLE_DIFF3;
|
2071
2072
|
|
2073
|
+
if (data->opts.checkout_strategy & GIT_CHECKOUT_CONFLICT_STYLE_ZDIFF3)
|
2074
|
+
opts.flags |= GIT_MERGE_FILE_STYLE_ZDIFF3;
|
2075
|
+
|
2072
2076
|
opts.ancestor_label = data->opts.ancestor_label ?
|
2073
2077
|
data->opts.ancestor_label : "ancestor";
|
2074
2078
|
opts.our_label = data->opts.our_label ?
|
@@ -2088,8 +2092,8 @@ static int checkout_write_merge(
|
|
2088
2092
|
&their_label, opts.their_label, conflict->theirs->path)) < 0)
|
2089
2093
|
goto done;
|
2090
2094
|
|
2091
|
-
opts.our_label =
|
2092
|
-
opts.their_label =
|
2095
|
+
opts.our_label = git_str_cstr(&our_label);
|
2096
|
+
opts.their_label = git_str_cstr(&their_label);
|
2093
2097
|
}
|
2094
2098
|
|
2095
2099
|
if ((error = git_merge_file_from_index(&result, data->repo,
|
@@ -2106,7 +2110,7 @@ static int checkout_write_merge(
|
|
2106
2110
|
goto done;
|
2107
2111
|
|
2108
2112
|
if ((data->strategy & GIT_CHECKOUT_UPDATE_ONLY) != 0 &&
|
2109
|
-
(error = checkout_safe_for_update_only(data,
|
2113
|
+
(error = checkout_safe_for_update_only(data, git_str_cstr(&path_workdir), result.mode)) <= 0)
|
2110
2114
|
goto done;
|
2111
2115
|
|
2112
2116
|
if (!data->opts.disable_filters) {
|
@@ -2127,7 +2131,7 @@ static int checkout_write_merge(
|
|
2127
2131
|
}
|
2128
2132
|
|
2129
2133
|
if ((error = mkpath2file(data, path_workdir.ptr, data->opts.dir_mode)) < 0 ||
|
2130
|
-
(error = git_filebuf_open(&output,
|
2134
|
+
(error = git_filebuf_open(&output, git_str_cstr(&path_workdir), GIT_FILEBUF_DO_NOT_BUFFER, result.mode)) < 0 ||
|
2131
2135
|
(error = git_filebuf_write(&output, out_data.ptr, out_data.size)) < 0 ||
|
2132
2136
|
(error = git_filebuf_commit(&output)) < 0)
|
2133
2137
|
goto done;
|
@@ -2135,13 +2139,13 @@ static int checkout_write_merge(
|
|
2135
2139
|
done:
|
2136
2140
|
git_filter_list_free(fl);
|
2137
2141
|
|
2138
|
-
|
2139
|
-
|
2140
|
-
|
2142
|
+
git_str_dispose(&out_data);
|
2143
|
+
git_str_dispose(&our_label);
|
2144
|
+
git_str_dispose(&their_label);
|
2141
2145
|
|
2142
2146
|
git_merge_file_result_free(&result);
|
2143
|
-
|
2144
|
-
|
2147
|
+
git_str_dispose(&path_workdir);
|
2148
|
+
git_str_dispose(&path_suffixed);
|
2145
2149
|
|
2146
2150
|
return error;
|
2147
2151
|
}
|
@@ -2321,8 +2325,8 @@ static void checkout_data_clear(checkout_data *data)
|
|
2321
2325
|
git__free(data->pfx);
|
2322
2326
|
data->pfx = NULL;
|
2323
2327
|
|
2324
|
-
|
2325
|
-
|
2328
|
+
git_str_dispose(&data->target_path);
|
2329
|
+
git_str_dispose(&data->tmp);
|
2326
2330
|
|
2327
2331
|
git_index_free(data->index);
|
2328
2332
|
data->index = NULL;
|
@@ -2337,10 +2341,10 @@ static int validate_target_directory(checkout_data *data)
|
|
2337
2341
|
{
|
2338
2342
|
int error;
|
2339
2343
|
|
2340
|
-
if ((error =
|
2344
|
+
if ((error = git_path_validate_length(data->repo, data->opts.target_directory)) < 0)
|
2341
2345
|
return error;
|
2342
2346
|
|
2343
|
-
if (
|
2347
|
+
if (git_fs_path_isdir(data->opts.target_directory))
|
2344
2348
|
return 0;
|
2345
2349
|
|
2346
2350
|
error = checkout_mkdir(data, data->opts.target_directory, NULL,
|
@@ -2492,6 +2496,8 @@ static int checkout_data_init(
|
|
2492
2496
|
data->opts.checkout_strategy |= GIT_CHECKOUT_CONFLICT_STYLE_MERGE;
|
2493
2497
|
else if (strcmp(conflict_style->value, "diff3") == 0)
|
2494
2498
|
data->opts.checkout_strategy |= GIT_CHECKOUT_CONFLICT_STYLE_DIFF3;
|
2499
|
+
else if (strcmp(conflict_style->value, "zdiff3") == 0)
|
2500
|
+
data->opts.checkout_strategy |= GIT_CHECKOUT_CONFLICT_STYLE_ZDIFF3;
|
2495
2501
|
else {
|
2496
2502
|
git_error_set(GIT_ERROR_CHECKOUT, "unknown style '%s' given for 'merge.conflictstyle'",
|
2497
2503
|
conflict_style->value);
|
@@ -2506,12 +2512,12 @@ static int checkout_data_init(
|
|
2506
2512
|
(error = git_vector_init(&data->removes, 0, git__strcmp_cb)) < 0 ||
|
2507
2513
|
(error = git_vector_init(&data->remove_conflicts, 0, NULL)) < 0 ||
|
2508
2514
|
(error = git_vector_init(&data->update_conflicts, 0, NULL)) < 0 ||
|
2509
|
-
(error =
|
2510
|
-
(error =
|
2515
|
+
(error = git_str_puts(&data->target_path, data->opts.target_directory)) < 0 ||
|
2516
|
+
(error = git_fs_path_to_dir(&data->target_path)) < 0 ||
|
2511
2517
|
(error = git_strmap_new(&data->mkdir_map)) < 0)
|
2512
2518
|
goto cleanup;
|
2513
2519
|
|
2514
|
-
data->target_len =
|
2520
|
+
data->target_len = git_str_len(&data->target_path);
|
2515
2521
|
|
2516
2522
|
git_attr_session__init(&data->attr_session, data->repo);
|
2517
2523
|
|
@@ -2623,7 +2629,7 @@ int git_checkout_iterator(
|
|
2623
2629
|
|
2624
2630
|
if (data.strategy & GIT_CHECKOUT_DRY_RUN)
|
2625
2631
|
goto cleanup;
|
2626
|
-
|
2632
|
+
|
2627
2633
|
data.total_steps = counts[CHECKOUT_ACTION__REMOVE] +
|
2628
2634
|
counts[CHECKOUT_ACTION__REMOVE_CONFLICT] +
|
2629
2635
|
counts[CHECKOUT_ACTION__UPDATE_BLOB] +
|
@@ -26,10 +26,10 @@ static int write_cherrypick_head(
|
|
26
26
|
const char *commit_oidstr)
|
27
27
|
{
|
28
28
|
git_filebuf file = GIT_FILEBUF_INIT;
|
29
|
-
|
29
|
+
git_str file_path = GIT_STR_INIT;
|
30
30
|
int error = 0;
|
31
31
|
|
32
|
-
if ((error =
|
32
|
+
if ((error = git_str_joinpath(&file_path, repo->gitdir, GIT_CHERRYPICK_HEAD_FILE)) >= 0 &&
|
33
33
|
(error = git_filebuf_open(&file, file_path.ptr, GIT_FILEBUF_CREATE_LEADING_DIRS, GIT_CHERRYPICK_FILE_MODE)) >= 0 &&
|
34
34
|
(error = git_filebuf_printf(&file, "%s\n", commit_oidstr)) >= 0)
|
35
35
|
error = git_filebuf_commit(&file);
|
@@ -37,7 +37,7 @@ static int write_cherrypick_head(
|
|
37
37
|
if (error < 0)
|
38
38
|
git_filebuf_cleanup(&file);
|
39
39
|
|
40
|
-
|
40
|
+
git_str_dispose(&file_path);
|
41
41
|
|
42
42
|
return error;
|
43
43
|
}
|
@@ -47,10 +47,10 @@ static int write_merge_msg(
|
|
47
47
|
const char *commit_msg)
|
48
48
|
{
|
49
49
|
git_filebuf file = GIT_FILEBUF_INIT;
|
50
|
-
|
50
|
+
git_str file_path = GIT_STR_INIT;
|
51
51
|
int error = 0;
|
52
52
|
|
53
|
-
if ((error =
|
53
|
+
if ((error = git_str_joinpath(&file_path, repo->gitdir, GIT_MERGE_MSG_FILE)) < 0 ||
|
54
54
|
(error = git_filebuf_open(&file, file_path.ptr, GIT_FILEBUF_CREATE_LEADING_DIRS, GIT_CHERRYPICK_FILE_MODE)) < 0 ||
|
55
55
|
(error = git_filebuf_printf(&file, "%s", commit_msg)) < 0)
|
56
56
|
goto cleanup;
|
@@ -61,7 +61,7 @@ cleanup:
|
|
61
61
|
if (error < 0)
|
62
62
|
git_filebuf_cleanup(&file);
|
63
63
|
|
64
|
-
|
64
|
+
git_str_dispose(&file_path);
|
65
65
|
|
66
66
|
return error;
|
67
67
|
}
|
@@ -106,10 +106,10 @@ static int cherrypick_state_cleanup(git_repository *repo)
|
|
106
106
|
|
107
107
|
static int cherrypick_seterr(git_commit *commit, const char *fmt)
|
108
108
|
{
|
109
|
-
char commit_oidstr[
|
109
|
+
char commit_oidstr[GIT_OID_SHA1_HEXSIZE + 1];
|
110
110
|
|
111
111
|
git_error_set(GIT_ERROR_CHERRYPICK, fmt,
|
112
|
-
git_oid_tostr(commit_oidstr,
|
112
|
+
git_oid_tostr(commit_oidstr, GIT_OID_SHA1_HEXSIZE + 1, git_commit_id(commit)));
|
113
113
|
|
114
114
|
return -1;
|
115
115
|
}
|
@@ -173,9 +173,9 @@ int git_cherrypick(
|
|
173
173
|
git_cherrypick_options opts;
|
174
174
|
git_reference *our_ref = NULL;
|
175
175
|
git_commit *our_commit = NULL;
|
176
|
-
char commit_oidstr[
|
176
|
+
char commit_oidstr[GIT_OID_SHA1_HEXSIZE + 1];
|
177
177
|
const char *commit_msg, *commit_summary;
|
178
|
-
|
178
|
+
git_str their_label = GIT_STR_INIT;
|
179
179
|
git_index *index = NULL;
|
180
180
|
git_indexwriter indexwriter = GIT_INDEXWRITER_INIT;
|
181
181
|
int error = 0;
|
@@ -197,8 +197,8 @@ int git_cherrypick(
|
|
197
197
|
git_oid_nfmt(commit_oidstr, sizeof(commit_oidstr), git_commit_id(commit));
|
198
198
|
|
199
199
|
if ((error = write_merge_msg(repo, commit_msg)) < 0 ||
|
200
|
-
(error =
|
201
|
-
(error = cherrypick_normalize_opts(repo, &opts, given_opts,
|
200
|
+
(error = git_str_printf(&their_label, "%.7s... %s", commit_oidstr, commit_summary)) < 0 ||
|
201
|
+
(error = cherrypick_normalize_opts(repo, &opts, given_opts, git_str_cstr(&their_label))) < 0 ||
|
202
202
|
(error = git_indexwriter_init_for_operation(&indexwriter, repo, &opts.checkout_opts.checkout_strategy)) < 0 ||
|
203
203
|
(error = write_cherrypick_head(repo, commit_oidstr)) < 0 ||
|
204
204
|
(error = git_repository_head(&our_ref, repo)) < 0 ||
|
@@ -220,7 +220,7 @@ done:
|
|
220
220
|
git_index_free(index);
|
221
221
|
git_commit_free(our_commit);
|
222
222
|
git_reference_free(our_ref);
|
223
|
-
|
223
|
+
git_str_dispose(&their_label);
|
224
224
|
|
225
225
|
return error;
|
226
226
|
}
|