rugged 1.3.2 → 1.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +34 -2
- data/ext/rugged/extconf.rb +7 -4
- data/ext/rugged/rugged.c +16 -0
- data/ext/rugged/rugged.h +4 -0
- data/ext/rugged/rugged_blame.c +2 -0
- data/ext/rugged/rugged_blob.c +3 -0
- data/ext/rugged/rugged_commit.c +1 -0
- data/ext/rugged/rugged_config.c +9 -2
- data/ext/rugged/rugged_diff.c +1 -0
- data/ext/rugged/rugged_index.c +2 -0
- data/ext/rugged/rugged_patch.c +1 -0
- data/ext/rugged/rugged_rebase.c +1 -0
- data/ext/rugged/rugged_reference.c +1 -0
- data/ext/rugged/rugged_remote.c +28 -10
- data/ext/rugged/rugged_repo.c +7 -9
- data/ext/rugged/rugged_revwalk.c +5 -1
- data/ext/rugged/rugged_settings.c +5 -0
- data/ext/rugged/rugged_submodule.c +1 -0
- data/ext/rugged/rugged_tag.c +1 -0
- data/ext/rugged/rugged_tree.c +4 -0
- data/lib/rugged/index.rb +1 -1
- data/lib/rugged/tree.rb +5 -1
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +132 -288
- data/vendor/libgit2/COPYING +106 -19
- data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
- data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
- data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
- data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
- data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
- data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
- data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
- data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
- data/vendor/libgit2/cmake/{FindHTTP_Parser.cmake → FindHTTPParser.cmake} +17 -17
- data/vendor/libgit2/cmake/FindIconv.cmake +27 -27
- data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
- data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
- data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
- data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
- data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
- data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
- data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
- data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
- data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
- data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
- data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
- data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
- data/vendor/libgit2/cmake/SelectHTTPParser.cmake +19 -0
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +100 -100
- data/vendor/libgit2/cmake/SelectHashes.cmake +91 -53
- data/vendor/libgit2/cmake/SelectRegex.cmake +51 -0
- data/vendor/libgit2/cmake/SelectSSH.cmake +41 -0
- data/vendor/libgit2/cmake/SelectWinHTTP.cmake +17 -0
- data/vendor/libgit2/cmake/SelectZlib.cmake +34 -0
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +3 -1
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +88 -88
- data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
- data/vendor/libgit2/deps/zlib/adler32.c +7 -0
- data/vendor/libgit2/deps/zlib/crc32.c +975 -288
- data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
- data/vendor/libgit2/deps/zlib/deflate.c +83 -31
- data/vendor/libgit2/deps/zlib/deflate.h +12 -15
- data/vendor/libgit2/deps/zlib/gzguts.h +3 -2
- data/vendor/libgit2/deps/zlib/infback.c +2 -1
- data/vendor/libgit2/deps/zlib/inffast.c +14 -14
- data/vendor/libgit2/deps/zlib/inflate.c +39 -8
- data/vendor/libgit2/deps/zlib/inflate.h +3 -2
- data/vendor/libgit2/deps/zlib/inftrees.c +3 -3
- data/vendor/libgit2/deps/zlib/trees.c +27 -48
- data/vendor/libgit2/deps/zlib/zlib.h +126 -100
- data/vendor/libgit2/deps/zlib/zutil.c +2 -2
- data/vendor/libgit2/deps/zlib/zutil.h +12 -9
- data/vendor/libgit2/include/git2/apply.h +16 -2
- data/vendor/libgit2/include/git2/attr.h +11 -2
- data/vendor/libgit2/include/git2/blame.h +4 -1
- data/vendor/libgit2/include/git2/blob.h +14 -1
- data/vendor/libgit2/include/git2/branch.h +4 -2
- data/vendor/libgit2/include/git2/buffer.h +18 -78
- data/vendor/libgit2/include/git2/cert.h +2 -2
- data/vendor/libgit2/include/git2/checkout.h +5 -2
- data/vendor/libgit2/include/git2/clone.h +3 -3
- data/vendor/libgit2/include/git2/commit.h +2 -0
- data/vendor/libgit2/include/git2/common.h +28 -7
- data/vendor/libgit2/include/git2/config.h +25 -9
- data/vendor/libgit2/include/git2/credential.h +2 -1
- data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
- data/vendor/libgit2/include/git2/deprecated.h +9 -1
- data/vendor/libgit2/include/git2/describe.h +7 -2
- data/vendor/libgit2/include/git2/diff.h +18 -10
- data/vendor/libgit2/include/git2/email.h +1 -1
- data/vendor/libgit2/include/git2/errors.h +17 -3
- data/vendor/libgit2/include/git2/experimental.h +20 -0
- data/vendor/libgit2/include/git2/filter.h +7 -2
- data/vendor/libgit2/include/git2/graph.h +1 -0
- data/vendor/libgit2/include/git2/ignore.h +1 -1
- data/vendor/libgit2/include/git2/index.h +11 -5
- data/vendor/libgit2/include/git2/indexer.h +48 -0
- data/vendor/libgit2/include/git2/merge.h +24 -4
- data/vendor/libgit2/include/git2/message.h +2 -0
- data/vendor/libgit2/include/git2/object.h +49 -0
- data/vendor/libgit2/include/git2/odb.h +94 -13
- data/vendor/libgit2/include/git2/odb_backend.h +107 -19
- data/vendor/libgit2/include/git2/oid.h +115 -15
- data/vendor/libgit2/include/git2/pack.h +24 -8
- data/vendor/libgit2/include/git2/patch.h +8 -0
- data/vendor/libgit2/include/git2/pathspec.h +1 -1
- data/vendor/libgit2/include/git2/proxy.h +1 -1
- data/vendor/libgit2/include/git2/rebase.h +9 -1
- data/vendor/libgit2/include/git2/refdb.h +3 -0
- data/vendor/libgit2/include/git2/reflog.h +1 -1
- data/vendor/libgit2/include/git2/refs.h +2 -2
- data/vendor/libgit2/include/git2/remote.h +184 -37
- data/vendor/libgit2/include/git2/repository.h +34 -10
- data/vendor/libgit2/include/git2/reset.h +2 -2
- data/vendor/libgit2/include/git2/revparse.h +1 -1
- data/vendor/libgit2/include/git2/revwalk.h +4 -1
- data/vendor/libgit2/include/git2/signature.h +1 -1
- data/vendor/libgit2/include/git2/stash.h +61 -7
- data/vendor/libgit2/include/git2/status.h +14 -5
- data/vendor/libgit2/include/git2/strarray.h +0 -13
- data/vendor/libgit2/include/git2/submodule.h +7 -2
- data/vendor/libgit2/include/git2/sys/commit_graph.h +1 -1
- data/vendor/libgit2/include/git2/sys/odb_backend.h +3 -6
- data/vendor/libgit2/include/git2/sys/remote.h +46 -0
- data/vendor/libgit2/include/git2/sys/stream.h +1 -1
- data/vendor/libgit2/include/git2/sys/transport.h +46 -39
- data/vendor/libgit2/include/git2/tag.h +1 -0
- data/vendor/libgit2/include/git2/tree.h +4 -3
- data/vendor/libgit2/include/git2/types.h +7 -7
- data/vendor/libgit2/include/git2/version.h +27 -6
- data/vendor/libgit2/include/git2/worktree.h +12 -2
- data/vendor/libgit2/include/git2.h +1 -0
- data/vendor/libgit2/src/CMakeLists.txt +177 -419
- data/vendor/libgit2/src/README.md +12 -0
- data/vendor/libgit2/src/cli/CMakeLists.txt +57 -0
- data/vendor/libgit2/src/cli/README.md +26 -0
- data/vendor/libgit2/src/cli/cli.h +20 -0
- data/vendor/libgit2/src/cli/cmd.c +21 -0
- data/vendor/libgit2/src/cli/cmd.h +33 -0
- data/vendor/libgit2/src/cli/cmd_cat_file.c +204 -0
- data/vendor/libgit2/src/cli/cmd_clone.c +176 -0
- data/vendor/libgit2/src/cli/cmd_hash_object.c +154 -0
- data/vendor/libgit2/src/cli/cmd_help.c +86 -0
- data/vendor/libgit2/src/cli/error.h +51 -0
- data/vendor/libgit2/src/cli/main.c +106 -0
- data/vendor/libgit2/src/cli/opt.c +669 -0
- data/vendor/libgit2/src/cli/opt.h +349 -0
- data/vendor/libgit2/src/cli/opt_usage.c +194 -0
- data/vendor/libgit2/src/cli/opt_usage.h +35 -0
- data/vendor/libgit2/src/cli/progress.c +345 -0
- data/vendor/libgit2/src/cli/progress.h +117 -0
- data/vendor/libgit2/src/cli/sighandler.h +20 -0
- data/vendor/libgit2/src/cli/unix/sighandler.c +36 -0
- data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
- data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
- data/vendor/libgit2/src/libgit2/CMakeLists.txt +141 -0
- data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +1 -1
- data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
- data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +18 -18
- data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
- data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +18 -18
- data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +18 -18
- data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +4 -4
- data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +18 -13
- data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +2 -0
- data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -1
- data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
- data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
- data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
- data/vendor/libgit2/src/{branch.h → libgit2/branch.h} +15 -3
- data/vendor/libgit2/src/libgit2/buf.c +126 -0
- data/vendor/libgit2/src/libgit2/buf.h +50 -0
- data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +74 -68
- data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +13 -13
- data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +96 -67
- data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +178 -73
- data/vendor/libgit2/src/libgit2/commit.h +87 -0
- data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +122 -89
- data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +14 -4
- data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +7 -4
- data/vendor/libgit2/src/libgit2/common.h +55 -0
- data/vendor/libgit2/src/{config.c → libgit2/config.c} +101 -69
- data/vendor/libgit2/src/{config.h → libgit2/config.h} +15 -2
- data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +105 -93
- data/vendor/libgit2/src/{config_mem.c → libgit2/config_mem.c} +9 -9
- data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +27 -23
- data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
- data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +35 -27
- data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +30 -9
- data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +2 -4
- data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +34 -36
- data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +3 -3
- data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +44 -26
- data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +47 -18
- data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
- data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +112 -100
- data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
- data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
- data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +13 -8
- data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
- data/vendor/libgit2/src/{email.c → libgit2/email.c} +55 -39
- data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
- data/vendor/libgit2/src/{errors.c → libgit2/errors.c} +18 -18
- data/vendor/libgit2/src/{errors.h → libgit2/errors.h} +1 -2
- data/vendor/libgit2/src/libgit2/experimental.h.in +13 -0
- data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +72 -27
- data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -1
- data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +23 -23
- data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +127 -53
- data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
- data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
- data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +35 -34
- data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
- data/vendor/libgit2/src/{index.c → libgit2/index.c} +91 -90
- data/vendor/libgit2/src/{index.h → libgit2/index.h} +6 -3
- data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +173 -92
- data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +71 -61
- data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +5 -5
- data/vendor/libgit2/src/{libgit2.c → libgit2/libgit2.c} +46 -11
- data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +38 -36
- data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +30 -30
- data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
- data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +2 -2
- data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -3
- data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
- data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +112 -92
- data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +5 -4
- data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +15 -12
- data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +5 -2
- data/vendor/libgit2/src/{netops.c → libgit2/netops.c} +1 -2
- data/vendor/libgit2/src/{netops.h → libgit2/netops.h} +1 -1
- data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +25 -34
- data/vendor/libgit2/src/{object.c → libgit2/object.c} +135 -30
- data/vendor/libgit2/src/{object.h → libgit2/object.h} +12 -3
- data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +228 -81
- data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
- data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
- data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +18 -5
- data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +137 -85
- data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +136 -90
- data/vendor/libgit2/src/libgit2/oid.h +273 -0
- data/vendor/libgit2/src/{oidmap.c → libgit2/oidmap.c} +1 -1
- data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +56 -30
- data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +11 -6
- data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +114 -84
- data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +31 -16
- data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +4 -3
- data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
- data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +1 -0
- data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +27 -11
- data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
- data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +29 -29
- data/vendor/libgit2/src/libgit2/path.c +375 -0
- data/vendor/libgit2/src/libgit2/path.h +68 -0
- data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +6 -6
- data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
- data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
- data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
- data/vendor/libgit2/src/{push.c → libgit2/push.c} +43 -38
- data/vendor/libgit2/src/{push.h → libgit2/push.h} +4 -16
- data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
- data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
- data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +119 -107
- data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +506 -197
- data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +7 -5
- data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +1 -2
- data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +34 -32
- data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +2 -2
- data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +32 -37
- data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +5 -2
- data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +718 -420
- data/vendor/libgit2/src/libgit2/remote.h +100 -0
- data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +629 -386
- data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +20 -9
- data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
- data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +14 -14
- data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +71 -42
- data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +12 -8
- data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +12 -6
- data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -1
- data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +235 -61
- data/vendor/libgit2/src/{status.c → libgit2/status.c} +4 -1
- data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
- data/vendor/libgit2/src/libgit2/strarray.h +25 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +8 -6
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +1 -1
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +7 -3
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +3 -3
- data/vendor/libgit2/src/{streams → libgit2/streams}/socket.c +4 -1
- data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +177 -161
- data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +1 -1
- data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
- data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +53 -18
- data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +73 -42
- data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
- data/vendor/libgit2/src/{threadstate.c → libgit2/threadstate.c} +3 -3
- data/vendor/libgit2/src/{threadstate.h → libgit2/threadstate.h} +2 -2
- data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
- data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
- data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +1 -1
- data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +1 -1
- data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +10 -10
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +2 -3
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.c +12 -13
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.c +10 -10
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +0 -1
- data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +9 -11
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +41 -20
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +2 -3
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +75 -66
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +138 -116
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +92 -133
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +35 -32
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +177 -65
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +97 -49
- data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.c +365 -198
- data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +58 -59
- data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +8 -8
- data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +2 -2
- data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +93 -83
- data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +4 -4
- data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +121 -94
- data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
- data/vendor/libgit2/src/libgit2/xdiff/git-xdiff.h +53 -0
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiff.h +15 -15
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.c +134 -108
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.c +23 -7
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xhistogram.c +87 -78
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xinclude.h +1 -12
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmerge.c +104 -117
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xpatience.c +6 -17
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.c +15 -20
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.c +18 -7
- data/vendor/libgit2/src/util/CMakeLists.txt +80 -0
- data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.h +1 -1
- data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
- data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{array.h → util/array.h} +1 -1
- data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
- data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +1 -1
- data/vendor/libgit2/src/{date.c → util/date.c} +14 -20
- data/vendor/libgit2/src/util/date.h +33 -0
- data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +29 -29
- data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +2 -2
- data/vendor/libgit2/src/{path.c → util/fs_path.c} +453 -647
- data/vendor/libgit2/src/{path.h → util/fs_path.h} +221 -188
- data/vendor/libgit2/src/{futils.c → util/futils.c} +135 -90
- data/vendor/libgit2/src/{futils.h → util/futils.h} +28 -15
- data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +15 -1
- data/vendor/libgit2/src/{common.h → util/git2_util.h} +20 -59
- data/vendor/libgit2/src/util/hash/builtin.c +53 -0
- data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
- data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
- data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
- data/vendor/libgit2/src/util/hash/openssl.c +195 -0
- data/vendor/libgit2/src/util/hash/openssl.h +45 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
- data/vendor/libgit2/src/util/hash/sha.h +70 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
- data/vendor/libgit2/src/util/hash/win32.c +549 -0
- data/vendor/libgit2/src/util/hash/win32.h +60 -0
- data/vendor/libgit2/src/util/hash.c +158 -0
- data/vendor/libgit2/src/util/hash.h +61 -0
- data/vendor/libgit2/src/{khash.h → util/khash.h} +1 -1
- data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
- data/vendor/libgit2/src/util/net.c +1003 -0
- data/vendor/libgit2/src/{net.h → util/net.h} +18 -4
- data/vendor/libgit2/src/{pool.h → util/pool.h} +1 -1
- data/vendor/libgit2/src/{posix.c → util/posix.c} +3 -3
- data/vendor/libgit2/src/{posix.h → util/posix.h} +4 -1
- data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +2 -2
- data/vendor/libgit2/src/util/rand.c +234 -0
- data/vendor/libgit2/src/util/rand.h +37 -0
- data/vendor/libgit2/src/{regexp.c → util/regexp.c} +4 -4
- data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
- data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
- data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
- data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +1 -1
- data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +2 -2
- data/vendor/libgit2/src/{buffer.c → util/str.c} +157 -151
- data/vendor/libgit2/src/util/str.h +357 -0
- data/vendor/libgit2/src/{strmap.h → util/strmap.h} +1 -1
- data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
- data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
- data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
- data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
- data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -4
- data/vendor/libgit2/src/{unix → util/unix}/realpath.c +1 -3
- data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
- data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
- data/vendor/libgit2/src/{util.c → util/util.c} +15 -15
- data/vendor/libgit2/src/{util.h → util/util.h} +4 -29
- data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
- data/vendor/libgit2/src/{vector.h → util/vector.h} +2 -2
- data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +140 -9
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
- data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
- data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +12 -28
- data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
- data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
- data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
- data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
- metadata +402 -356
- data/vendor/libgit2/src/buffer.h +0 -374
- data/vendor/libgit2/src/commit.h +0 -46
- data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
- data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
- data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
- data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
- data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
- data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
- data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
- data/vendor/libgit2/src/hash/sha1.h +0 -38
- data/vendor/libgit2/src/hash.c +0 -110
- data/vendor/libgit2/src/hash.h +0 -46
- data/vendor/libgit2/src/message.h +0 -17
- data/vendor/libgit2/src/net.c +0 -540
- data/vendor/libgit2/src/oid.h +0 -51
- data/vendor/libgit2/src/remote.h +0 -55
- data/vendor/libgit2/src/sysdir.c +0 -347
- data/vendor/libgit2/src/win32/findfile.c +0 -230
- data/vendor/libgit2/src/win32/findfile.h +0 -19
- /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
- /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
- /data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +0 -0
- /data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +0 -0
- /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
- /data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +0 -0
- /data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +0 -0
- /data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -0
- /data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +0 -0
- /data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +0 -0
- /data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +0 -0
- /data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +0 -0
- /data/vendor/libgit2/src/{config_entries.c → libgit2/config_entries.c} +0 -0
- /data/vendor/libgit2/src/{config_entries.h → libgit2/config_entries.h} +0 -0
- /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
- /data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +0 -0
- /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
- /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
- /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
- /data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +0 -0
- /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
- /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
- /data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +0 -0
- /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
- /data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +0 -0
- /data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +0 -0
- /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
- /data/vendor/libgit2/src/{idxmap.c → libgit2/idxmap.c} +0 -0
- /data/vendor/libgit2/src/{idxmap.h → libgit2/idxmap.h} +0 -0
- /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
- /data/vendor/libgit2/src/{libgit2.h → libgit2/libgit2.h} +0 -0
- /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
- /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
- /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
- /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
- /data/vendor/libgit2/src/{offmap.c → libgit2/offmap.c} +0 -0
- /data/vendor/libgit2/src/{offmap.h → libgit2/offmap.h} +0 -0
- /data/vendor/libgit2/src/{oidarray.c → libgit2/oidarray.c} +0 -0
- /data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +0 -0
- /data/vendor/libgit2/src/{oidmap.h → libgit2/oidmap.h} +0 -0
- /data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +0 -0
- /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
- /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
- /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
- /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
- /data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +0 -0
- /data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +0 -0
- /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
- /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
- /data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.h +0 -0
- /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmacros.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xtypes.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.h +0 -0
- /data/vendor/libgit2/src/{alloc.c → util/alloc.c} +0 -0
- /data/vendor/libgit2/src/{alloc.h → util/alloc.h} +0 -0
- /data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.c +0 -0
- /data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.c +0 -0
- /data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.c +0 -0
- /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
- /data/vendor/libgit2/src/{integer.h → util/integer.h} +0 -0
- /data/vendor/libgit2/src/{pool.c → util/pool.c} +0 -0
- /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
- /data/vendor/libgit2/src/{strmap.c → util/strmap.c} +0 -0
- /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
- /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
- /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
- /data/vendor/libgit2/src/{vector.c → util/vector.c} +0 -0
- /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/error.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
|
@@ -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
|
}
|