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
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
|
|
10
10
|
#include "repository.h"
|
|
11
11
|
#include "commit.h"
|
|
12
|
-
#include "message.h"
|
|
13
12
|
#include "tree.h"
|
|
14
13
|
#include "reflog.h"
|
|
15
14
|
#include "blob.h"
|
|
@@ -26,6 +25,7 @@
|
|
|
26
25
|
#include "merge.h"
|
|
27
26
|
#include "diff.h"
|
|
28
27
|
#include "diff_generate.h"
|
|
28
|
+
#include "strarray.h"
|
|
29
29
|
|
|
30
30
|
static int create_error(int error, const char *msg)
|
|
31
31
|
{
|
|
@@ -43,20 +43,20 @@ static int retrieve_head(git_reference **out, git_repository *repo)
|
|
|
43
43
|
return error;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
static int append_abbreviated_oid(
|
|
46
|
+
static int append_abbreviated_oid(git_str *out, const git_oid *b_commit)
|
|
47
47
|
{
|
|
48
48
|
char *formatted_oid;
|
|
49
49
|
|
|
50
50
|
formatted_oid = git_oid_allocfmt(b_commit);
|
|
51
51
|
GIT_ERROR_CHECK_ALLOC(formatted_oid);
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
git_str_put(out, formatted_oid, 7);
|
|
54
54
|
git__free(formatted_oid);
|
|
55
55
|
|
|
56
|
-
return
|
|
56
|
+
return git_str_oom(out) ? -1 : 0;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
static int append_commit_description(
|
|
59
|
+
static int append_commit_description(git_str *out, git_commit *commit)
|
|
60
60
|
{
|
|
61
61
|
const char *summary = git_commit_summary(commit);
|
|
62
62
|
GIT_ERROR_CHECK_ALLOC(summary);
|
|
@@ -64,16 +64,16 @@ static int append_commit_description(git_buf *out, git_commit *commit)
|
|
|
64
64
|
if (append_abbreviated_oid(out, git_commit_id(commit)) < 0)
|
|
65
65
|
return -1;
|
|
66
66
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
git_str_putc(out, ' ');
|
|
68
|
+
git_str_puts(out, summary);
|
|
69
|
+
git_str_putc(out, '\n');
|
|
70
70
|
|
|
71
|
-
return
|
|
71
|
+
return git_str_oom(out) ? -1 : 0;
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
static int retrieve_base_commit_and_message(
|
|
75
75
|
git_commit **b_commit,
|
|
76
|
-
|
|
76
|
+
git_str *stash_message,
|
|
77
77
|
git_repository *repo)
|
|
78
78
|
{
|
|
79
79
|
git_reference *head = NULL;
|
|
@@ -83,9 +83,9 @@ static int retrieve_base_commit_and_message(
|
|
|
83
83
|
return error;
|
|
84
84
|
|
|
85
85
|
if (strcmp("HEAD", git_reference_name(head)) == 0)
|
|
86
|
-
error =
|
|
86
|
+
error = git_str_puts(stash_message, "(no branch): ");
|
|
87
87
|
else
|
|
88
|
-
error =
|
|
88
|
+
error = git_str_printf(
|
|
89
89
|
stash_message,
|
|
90
90
|
"%s: ",
|
|
91
91
|
git_reference_name(head) + strlen(GIT_REFS_HEADS_DIR));
|
|
@@ -128,13 +128,13 @@ static int commit_index(
|
|
|
128
128
|
{
|
|
129
129
|
git_tree *i_tree = NULL;
|
|
130
130
|
git_oid i_commit_oid;
|
|
131
|
-
|
|
131
|
+
git_str msg = GIT_STR_INIT;
|
|
132
132
|
int error;
|
|
133
133
|
|
|
134
134
|
if ((error = build_tree_from_index(&i_tree, repo, index)) < 0)
|
|
135
135
|
goto cleanup;
|
|
136
136
|
|
|
137
|
-
if ((error =
|
|
137
|
+
if ((error = git_str_printf(&msg, "index on %s\n", message)) < 0)
|
|
138
138
|
goto cleanup;
|
|
139
139
|
|
|
140
140
|
if ((error = git_commit_create(
|
|
@@ -144,7 +144,7 @@ static int commit_index(
|
|
|
144
144
|
stasher,
|
|
145
145
|
stasher,
|
|
146
146
|
NULL,
|
|
147
|
-
|
|
147
|
+
git_str_cstr(&msg),
|
|
148
148
|
i_tree,
|
|
149
149
|
1,
|
|
150
150
|
&parent)) < 0)
|
|
@@ -154,7 +154,7 @@ static int commit_index(
|
|
|
154
154
|
|
|
155
155
|
cleanup:
|
|
156
156
|
git_tree_free(i_tree);
|
|
157
|
-
|
|
157
|
+
git_str_dispose(&msg);
|
|
158
158
|
return error;
|
|
159
159
|
}
|
|
160
160
|
|
|
@@ -194,6 +194,30 @@ static int stash_to_index(
|
|
|
194
194
|
return git_index_add(index, &entry);
|
|
195
195
|
}
|
|
196
196
|
|
|
197
|
+
static int stash_update_index_from_paths(
|
|
198
|
+
git_repository *repo,
|
|
199
|
+
git_index *index,
|
|
200
|
+
const git_strarray *paths)
|
|
201
|
+
{
|
|
202
|
+
unsigned int status_flags;
|
|
203
|
+
size_t i;
|
|
204
|
+
int error = 0;
|
|
205
|
+
|
|
206
|
+
for (i = 0; i < paths->count; i++) {
|
|
207
|
+
git_status_file(&status_flags, repo, paths->strings[i]);
|
|
208
|
+
|
|
209
|
+
if (status_flags & (GIT_STATUS_WT_DELETED | GIT_STATUS_INDEX_DELETED)) {
|
|
210
|
+
if ((error = git_index_remove(index, paths->strings[i], 0)) < 0)
|
|
211
|
+
return error;
|
|
212
|
+
} else {
|
|
213
|
+
if ((error = stash_to_index(repo, index, paths->strings[i])) < 0)
|
|
214
|
+
return error;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
return error;
|
|
219
|
+
}
|
|
220
|
+
|
|
197
221
|
static int stash_update_index_from_diff(
|
|
198
222
|
git_repository *repo,
|
|
199
223
|
git_index *index,
|
|
@@ -303,13 +327,13 @@ static int commit_untracked(
|
|
|
303
327
|
{
|
|
304
328
|
git_tree *u_tree = NULL;
|
|
305
329
|
git_oid u_commit_oid;
|
|
306
|
-
|
|
330
|
+
git_str msg = GIT_STR_INIT;
|
|
307
331
|
int error;
|
|
308
332
|
|
|
309
333
|
if ((error = build_untracked_tree(&u_tree, repo, i_commit, flags)) < 0)
|
|
310
334
|
goto cleanup;
|
|
311
335
|
|
|
312
|
-
if ((error =
|
|
336
|
+
if ((error = git_str_printf(&msg, "untracked files on %s\n", message)) < 0)
|
|
313
337
|
goto cleanup;
|
|
314
338
|
|
|
315
339
|
if ((error = git_commit_create(
|
|
@@ -319,7 +343,7 @@ static int commit_untracked(
|
|
|
319
343
|
stasher,
|
|
320
344
|
stasher,
|
|
321
345
|
NULL,
|
|
322
|
-
|
|
346
|
+
git_str_cstr(&msg),
|
|
323
347
|
u_tree,
|
|
324
348
|
0,
|
|
325
349
|
NULL)) < 0)
|
|
@@ -329,7 +353,7 @@ static int commit_untracked(
|
|
|
329
353
|
|
|
330
354
|
cleanup:
|
|
331
355
|
git_tree_free(u_tree);
|
|
332
|
-
|
|
356
|
+
git_str_dispose(&msg);
|
|
333
357
|
return error;
|
|
334
358
|
}
|
|
335
359
|
|
|
@@ -389,24 +413,79 @@ cleanup:
|
|
|
389
413
|
return error;
|
|
390
414
|
}
|
|
391
415
|
|
|
392
|
-
static int
|
|
416
|
+
static int build_stash_commit_from_tree(
|
|
393
417
|
git_oid *w_commit_oid,
|
|
394
418
|
git_repository *repo,
|
|
395
419
|
const git_signature *stasher,
|
|
396
420
|
const char *message,
|
|
397
421
|
git_commit *i_commit,
|
|
398
422
|
git_commit *b_commit,
|
|
399
|
-
git_commit *u_commit
|
|
423
|
+
git_commit *u_commit,
|
|
424
|
+
const git_tree *tree)
|
|
400
425
|
{
|
|
401
426
|
const git_commit *parents[] = { NULL, NULL, NULL };
|
|
402
|
-
git_index *i_index = NULL, *r_index = NULL;
|
|
403
|
-
git_tree *w_tree = NULL;
|
|
404
|
-
int error = 0, ignorecase;
|
|
405
427
|
|
|
406
428
|
parents[0] = b_commit;
|
|
407
429
|
parents[1] = i_commit;
|
|
408
430
|
parents[2] = u_commit;
|
|
409
431
|
|
|
432
|
+
return git_commit_create(
|
|
433
|
+
w_commit_oid,
|
|
434
|
+
repo,
|
|
435
|
+
NULL,
|
|
436
|
+
stasher,
|
|
437
|
+
stasher,
|
|
438
|
+
NULL,
|
|
439
|
+
message,
|
|
440
|
+
tree,
|
|
441
|
+
u_commit ? 3 : 2,
|
|
442
|
+
parents);
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
static int build_stash_commit_from_index(
|
|
446
|
+
git_oid *w_commit_oid,
|
|
447
|
+
git_repository *repo,
|
|
448
|
+
const git_signature *stasher,
|
|
449
|
+
const char *message,
|
|
450
|
+
git_commit *i_commit,
|
|
451
|
+
git_commit *b_commit,
|
|
452
|
+
git_commit *u_commit,
|
|
453
|
+
git_index *index)
|
|
454
|
+
{
|
|
455
|
+
git_tree *tree;
|
|
456
|
+
int error;
|
|
457
|
+
|
|
458
|
+
if ((error = build_tree_from_index(&tree, repo, index)) < 0)
|
|
459
|
+
goto cleanup;
|
|
460
|
+
|
|
461
|
+
error = build_stash_commit_from_tree(
|
|
462
|
+
w_commit_oid,
|
|
463
|
+
repo,
|
|
464
|
+
stasher,
|
|
465
|
+
message,
|
|
466
|
+
i_commit,
|
|
467
|
+
b_commit,
|
|
468
|
+
u_commit,
|
|
469
|
+
tree);
|
|
470
|
+
|
|
471
|
+
cleanup:
|
|
472
|
+
git_tree_free(tree);
|
|
473
|
+
return error;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
static int commit_worktree(
|
|
477
|
+
git_oid *w_commit_oid,
|
|
478
|
+
git_repository *repo,
|
|
479
|
+
const git_signature *stasher,
|
|
480
|
+
const char *message,
|
|
481
|
+
git_commit *i_commit,
|
|
482
|
+
git_commit *b_commit,
|
|
483
|
+
git_commit *u_commit)
|
|
484
|
+
{
|
|
485
|
+
git_index *i_index = NULL, *r_index = NULL;
|
|
486
|
+
git_tree *w_tree = NULL;
|
|
487
|
+
int error = 0, ignorecase;
|
|
488
|
+
|
|
410
489
|
if ((error = git_repository_index(&r_index, repo) < 0) ||
|
|
411
490
|
(error = git_index_new(&i_index)) < 0 ||
|
|
412
491
|
(error = git_index__fill(i_index, &r_index->entries) < 0) ||
|
|
@@ -418,17 +497,16 @@ static int commit_worktree(
|
|
|
418
497
|
if ((error = build_workdir_tree(&w_tree, repo, i_index, b_commit)) < 0)
|
|
419
498
|
goto cleanup;
|
|
420
499
|
|
|
421
|
-
error =
|
|
500
|
+
error = build_stash_commit_from_tree(
|
|
422
501
|
w_commit_oid,
|
|
423
502
|
repo,
|
|
424
|
-
NULL,
|
|
425
503
|
stasher,
|
|
426
|
-
stasher,
|
|
427
|
-
NULL,
|
|
428
504
|
message,
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
505
|
+
i_commit,
|
|
506
|
+
b_commit,
|
|
507
|
+
u_commit,
|
|
508
|
+
w_tree
|
|
509
|
+
);
|
|
432
510
|
|
|
433
511
|
cleanup:
|
|
434
512
|
git_tree_free(w_tree);
|
|
@@ -437,33 +515,33 @@ cleanup:
|
|
|
437
515
|
return error;
|
|
438
516
|
}
|
|
439
517
|
|
|
440
|
-
static int prepare_worktree_commit_message(
|
|
518
|
+
static int prepare_worktree_commit_message(git_str *out, const char *user_message)
|
|
441
519
|
{
|
|
442
|
-
|
|
520
|
+
git_str buf = GIT_STR_INIT;
|
|
443
521
|
int error = 0;
|
|
444
522
|
|
|
445
523
|
if (!user_message) {
|
|
446
|
-
|
|
524
|
+
git_str_printf(&buf, "WIP on %s", git_str_cstr(out));
|
|
447
525
|
} else {
|
|
448
526
|
const char *colon;
|
|
449
527
|
|
|
450
|
-
if ((colon = strchr(
|
|
528
|
+
if ((colon = strchr(git_str_cstr(out), ':')) == NULL)
|
|
451
529
|
goto cleanup;
|
|
452
530
|
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
531
|
+
git_str_puts(&buf, "On ");
|
|
532
|
+
git_str_put(&buf, git_str_cstr(out), colon - out->ptr);
|
|
533
|
+
git_str_printf(&buf, ": %s\n", user_message);
|
|
456
534
|
}
|
|
457
535
|
|
|
458
|
-
if (
|
|
536
|
+
if (git_str_oom(&buf)) {
|
|
459
537
|
error = -1;
|
|
460
538
|
goto cleanup;
|
|
461
539
|
}
|
|
462
540
|
|
|
463
|
-
|
|
541
|
+
git_str_swap(out, &buf);
|
|
464
542
|
|
|
465
543
|
cleanup:
|
|
466
|
-
|
|
544
|
+
git_str_dispose(&buf);
|
|
467
545
|
return error;
|
|
468
546
|
}
|
|
469
547
|
|
|
@@ -521,6 +599,54 @@ static int ensure_there_are_changes_to_stash(git_repository *repo, uint32_t flag
|
|
|
521
599
|
return error;
|
|
522
600
|
}
|
|
523
601
|
|
|
602
|
+
static int has_changes_cb(
|
|
603
|
+
const char *path,
|
|
604
|
+
unsigned int status,
|
|
605
|
+
void *payload)
|
|
606
|
+
{
|
|
607
|
+
GIT_UNUSED(path);
|
|
608
|
+
GIT_UNUSED(status);
|
|
609
|
+
GIT_UNUSED(payload);
|
|
610
|
+
|
|
611
|
+
if (status == GIT_STATUS_CURRENT)
|
|
612
|
+
return GIT_ENOTFOUND;
|
|
613
|
+
|
|
614
|
+
return 0;
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
static int ensure_there_are_changes_to_stash_paths(
|
|
618
|
+
git_repository *repo,
|
|
619
|
+
uint32_t flags,
|
|
620
|
+
const git_strarray *paths)
|
|
621
|
+
{
|
|
622
|
+
int error;
|
|
623
|
+
git_status_options opts = GIT_STATUS_OPTIONS_INIT;
|
|
624
|
+
|
|
625
|
+
opts.show = GIT_STATUS_SHOW_INDEX_AND_WORKDIR;
|
|
626
|
+
opts.flags = GIT_STATUS_OPT_EXCLUDE_SUBMODULES |
|
|
627
|
+
GIT_STATUS_OPT_INCLUDE_UNMODIFIED |
|
|
628
|
+
GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH;
|
|
629
|
+
|
|
630
|
+
if (flags & GIT_STASH_INCLUDE_UNTRACKED)
|
|
631
|
+
opts.flags |= GIT_STATUS_OPT_INCLUDE_UNTRACKED |
|
|
632
|
+
GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS;
|
|
633
|
+
|
|
634
|
+
if (flags & GIT_STASH_INCLUDE_IGNORED)
|
|
635
|
+
opts.flags |= GIT_STATUS_OPT_INCLUDE_IGNORED |
|
|
636
|
+
GIT_STATUS_OPT_RECURSE_IGNORED_DIRS;
|
|
637
|
+
|
|
638
|
+
git_strarray_copy(&opts.pathspec, paths);
|
|
639
|
+
|
|
640
|
+
error = git_status_foreach_ext(repo, &opts, has_changes_cb, NULL);
|
|
641
|
+
|
|
642
|
+
git_strarray_dispose(&opts.pathspec);
|
|
643
|
+
|
|
644
|
+
if (error == GIT_ENOTFOUND)
|
|
645
|
+
return create_error(GIT_ENOTFOUND, "one of the files does not have any changes to stash.");
|
|
646
|
+
|
|
647
|
+
return error;
|
|
648
|
+
}
|
|
649
|
+
|
|
524
650
|
static int reset_index_and_workdir(git_repository *repo, git_commit *commit, uint32_t flags)
|
|
525
651
|
{
|
|
526
652
|
git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT;
|
|
@@ -541,14 +667,36 @@ int git_stash_save(
|
|
|
541
667
|
const char *message,
|
|
542
668
|
uint32_t flags)
|
|
543
669
|
{
|
|
544
|
-
|
|
670
|
+
git_stash_save_options opts = GIT_STASH_SAVE_OPTIONS_INIT;
|
|
671
|
+
|
|
672
|
+
GIT_ASSERT_ARG(stasher);
|
|
673
|
+
|
|
674
|
+
opts.stasher = stasher;
|
|
675
|
+
opts.message = message;
|
|
676
|
+
opts.flags = flags;
|
|
677
|
+
|
|
678
|
+
return git_stash_save_with_opts(out, repo, &opts);
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
int git_stash_save_with_opts(
|
|
682
|
+
git_oid *out,
|
|
683
|
+
git_repository *repo,
|
|
684
|
+
const git_stash_save_options *opts)
|
|
685
|
+
{
|
|
686
|
+
git_index *index = NULL, *paths_index = NULL;
|
|
545
687
|
git_commit *b_commit = NULL, *i_commit = NULL, *u_commit = NULL;
|
|
546
|
-
|
|
688
|
+
git_str msg = GIT_STR_INIT;
|
|
689
|
+
git_tree *tree = NULL;
|
|
690
|
+
git_reference *head = NULL;
|
|
691
|
+
bool has_paths = false;
|
|
692
|
+
|
|
547
693
|
int error;
|
|
548
694
|
|
|
549
695
|
GIT_ASSERT_ARG(out);
|
|
550
696
|
GIT_ASSERT_ARG(repo);
|
|
551
|
-
GIT_ASSERT_ARG(stasher);
|
|
697
|
+
GIT_ASSERT_ARG(opts && opts->stasher);
|
|
698
|
+
|
|
699
|
+
has_paths = opts->paths.count > 0;
|
|
552
700
|
|
|
553
701
|
if ((error = git_repository__ensure_not_bare(repo, "stash save")) < 0)
|
|
554
702
|
return error;
|
|
@@ -556,44 +704,63 @@ int git_stash_save(
|
|
|
556
704
|
if ((error = retrieve_base_commit_and_message(&b_commit, &msg, repo)) < 0)
|
|
557
705
|
goto cleanup;
|
|
558
706
|
|
|
559
|
-
if (
|
|
707
|
+
if (!has_paths &&
|
|
708
|
+
(error = ensure_there_are_changes_to_stash(repo, opts->flags)) < 0)
|
|
709
|
+
goto cleanup;
|
|
710
|
+
else if (has_paths &&
|
|
711
|
+
(error = ensure_there_are_changes_to_stash_paths(
|
|
712
|
+
repo, opts->flags, &opts->paths)) < 0)
|
|
560
713
|
goto cleanup;
|
|
561
714
|
|
|
562
715
|
if ((error = git_repository_index(&index, repo)) < 0)
|
|
563
716
|
goto cleanup;
|
|
564
717
|
|
|
565
|
-
if ((error = commit_index(&i_commit, repo, index, stasher,
|
|
566
|
-
|
|
718
|
+
if ((error = commit_index(&i_commit, repo, index, opts->stasher,
|
|
719
|
+
git_str_cstr(&msg), b_commit)) < 0)
|
|
567
720
|
goto cleanup;
|
|
568
721
|
|
|
569
|
-
if ((flags & (GIT_STASH_INCLUDE_UNTRACKED | GIT_STASH_INCLUDE_IGNORED)) &&
|
|
570
|
-
(error = commit_untracked(&u_commit, repo, stasher,
|
|
571
|
-
|
|
722
|
+
if ((opts->flags & (GIT_STASH_INCLUDE_UNTRACKED | GIT_STASH_INCLUDE_IGNORED)) &&
|
|
723
|
+
(error = commit_untracked(&u_commit, repo, opts->stasher,
|
|
724
|
+
git_str_cstr(&msg), i_commit, opts->flags)) < 0)
|
|
572
725
|
goto cleanup;
|
|
573
726
|
|
|
574
|
-
if ((error = prepare_worktree_commit_message(&msg, message)) < 0)
|
|
727
|
+
if ((error = prepare_worktree_commit_message(&msg, opts->message)) < 0)
|
|
575
728
|
goto cleanup;
|
|
576
729
|
|
|
577
|
-
if (
|
|
578
|
-
|
|
579
|
-
|
|
730
|
+
if (!has_paths) {
|
|
731
|
+
if ((error = commit_worktree(out, repo, opts->stasher, git_str_cstr(&msg),
|
|
732
|
+
i_commit, b_commit, u_commit)) < 0)
|
|
733
|
+
goto cleanup;
|
|
734
|
+
} else {
|
|
735
|
+
if ((error = git_index_new(&paths_index)) < 0 ||
|
|
736
|
+
(error = retrieve_head(&head, repo)) < 0 ||
|
|
737
|
+
(error = git_reference_peel((git_object**)&tree, head, GIT_OBJECT_TREE)) < 0 ||
|
|
738
|
+
(error = git_index_read_tree(paths_index, tree)) < 0 ||
|
|
739
|
+
(error = stash_update_index_from_paths(repo, paths_index, &opts->paths)) < 0 ||
|
|
740
|
+
(error = build_stash_commit_from_index(out, repo, opts->stasher, git_str_cstr(&msg),
|
|
741
|
+
i_commit, b_commit, u_commit, paths_index)) < 0)
|
|
742
|
+
goto cleanup;
|
|
743
|
+
}
|
|
580
744
|
|
|
581
|
-
|
|
745
|
+
git_str_rtrim(&msg);
|
|
582
746
|
|
|
583
|
-
if ((error = update_reflog(out, repo,
|
|
747
|
+
if ((error = update_reflog(out, repo, git_str_cstr(&msg))) < 0)
|
|
584
748
|
goto cleanup;
|
|
585
749
|
|
|
586
|
-
if ((
|
|
587
|
-
|
|
750
|
+
if (!(opts->flags & GIT_STASH_KEEP_ALL) &&
|
|
751
|
+
(error = reset_index_and_workdir(repo,
|
|
752
|
+
(opts->flags & GIT_STASH_KEEP_INDEX) ? i_commit : b_commit,opts->flags)) < 0)
|
|
588
753
|
goto cleanup;
|
|
589
754
|
|
|
590
755
|
cleanup:
|
|
591
|
-
|
|
592
|
-
git_buf_dispose(&msg);
|
|
756
|
+
git_str_dispose(&msg);
|
|
593
757
|
git_commit_free(i_commit);
|
|
594
758
|
git_commit_free(b_commit);
|
|
595
759
|
git_commit_free(u_commit);
|
|
760
|
+
git_tree_free(tree);
|
|
761
|
+
git_reference_free(head);
|
|
596
762
|
git_index_free(index);
|
|
763
|
+
git_index_free(paths_index);
|
|
597
764
|
|
|
598
765
|
return error;
|
|
599
766
|
}
|
|
@@ -778,6 +945,13 @@ int git_stash_apply_options_init(git_stash_apply_options *opts, unsigned int ver
|
|
|
778
945
|
return 0;
|
|
779
946
|
}
|
|
780
947
|
|
|
948
|
+
int git_stash_save_options_init(git_stash_save_options *opts, unsigned int version)
|
|
949
|
+
{
|
|
950
|
+
GIT_INIT_STRUCTURE_FROM_TEMPLATE(
|
|
951
|
+
opts, version, git_stash_save_options, GIT_STASH_SAVE_OPTIONS_INIT);
|
|
952
|
+
return 0;
|
|
953
|
+
}
|
|
954
|
+
|
|
781
955
|
#ifndef GIT_DEPRECATE_HARD
|
|
782
956
|
int git_stash_apply_init_options(git_stash_apply_options *opts, unsigned int version)
|
|
783
957
|
{
|
|
@@ -84,7 +84,7 @@ static unsigned int workdir_delta2status(
|
|
|
84
84
|
|
|
85
85
|
if (!git_oid_equal(&idx2wd->old_file.id, &idx2wd->new_file.id)) {
|
|
86
86
|
/* if OIDs don't match, we might need to calculate them now to
|
|
87
|
-
* discern between RENAMED vs RENAMED+
|
|
87
|
+
* discern between RENAMED vs RENAMED+MODIFIED
|
|
88
88
|
*/
|
|
89
89
|
if (git_oid_is_zero(&idx2wd->old_file.id) &&
|
|
90
90
|
diff->old_src == GIT_ITERATOR_WORKDIR &&
|
|
@@ -336,6 +336,9 @@ int git_status_list_new(
|
|
|
336
336
|
GIT_DIFF_FIND_RENAMES_FROM_REWRITES |
|
|
337
337
|
GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY;
|
|
338
338
|
|
|
339
|
+
if (opts != NULL && opts->rename_threshold != 0)
|
|
340
|
+
findopt.rename_threshold = opts->rename_threshold;
|
|
341
|
+
|
|
339
342
|
if (show != GIT_STATUS_SHOW_WORKDIR_ONLY) {
|
|
340
343
|
if ((error = git_diff_tree_to_index(
|
|
341
344
|
&status->head2idx, repo, head, index, &diffopt)) < 0)
|
|
@@ -0,0 +1,25 @@
|
|
|
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_strarray_h__
|
|
8
|
+
#define INCLUDE_strarray_h__
|
|
9
|
+
|
|
10
|
+
#include "common.h"
|
|
11
|
+
#include "git2/strarray.h"
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Copy a string array object from source to target.
|
|
15
|
+
*
|
|
16
|
+
* Note: target is overwritten and hence should be empty, otherwise its
|
|
17
|
+
* contents are leaked. Call git_strarray_free() if necessary.
|
|
18
|
+
*
|
|
19
|
+
* @param tgt target
|
|
20
|
+
* @param src source
|
|
21
|
+
* @return 0 on success, < 0 on allocation failure
|
|
22
|
+
*/
|
|
23
|
+
extern int git_strarray_copy(git_strarray *tgt, const git_strarray *src);
|
|
24
|
+
|
|
25
|
+
#endif
|
|
@@ -23,12 +23,14 @@
|
|
|
23
23
|
#endif
|
|
24
24
|
|
|
25
25
|
/* Work around C90-conformance issues */
|
|
26
|
-
#if defined(
|
|
27
|
-
#
|
|
28
|
-
#
|
|
29
|
-
#
|
|
30
|
-
#
|
|
31
|
-
#
|
|
26
|
+
#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L)
|
|
27
|
+
# if defined(_MSC_VER)
|
|
28
|
+
# define inline __inline
|
|
29
|
+
# elif defined(__GNUC__)
|
|
30
|
+
# define inline __inline__
|
|
31
|
+
# else
|
|
32
|
+
# define inline
|
|
33
|
+
# endif
|
|
32
34
|
#endif
|
|
33
35
|
|
|
34
36
|
#include <mbedtls/config.h>
|
|
@@ -198,7 +198,7 @@ static int openssl_ensure_initialized(void)
|
|
|
198
198
|
if ((error = git_openssl_stream_dynamic_init()) == 0)
|
|
199
199
|
error = openssl_init();
|
|
200
200
|
|
|
201
|
-
openssl_initialized =
|
|
201
|
+
openssl_initialized = !error;
|
|
202
202
|
}
|
|
203
203
|
|
|
204
204
|
error |= git_mutex_unlock(&openssl_mutex);
|
|
@@ -91,7 +91,7 @@ int (*sk_num)(const void *sk);
|
|
|
91
91
|
void *(*sk_value)(const void *sk, int i);
|
|
92
92
|
void (*sk_free)(void *sk);
|
|
93
93
|
|
|
94
|
-
void *openssl_handle;
|
|
94
|
+
static void *openssl_handle;
|
|
95
95
|
|
|
96
96
|
GIT_INLINE(void *) openssl_sym(int *err, const char *name, bool required)
|
|
97
97
|
{
|
|
@@ -125,7 +125,8 @@ int git_openssl_stream_dynamic_init(void)
|
|
|
125
125
|
(openssl_handle = dlopen("libssl.1.1.dylib", RTLD_NOW)) == NULL &&
|
|
126
126
|
(openssl_handle = dlopen("libssl.so.1.0.0", RTLD_NOW)) == NULL &&
|
|
127
127
|
(openssl_handle = dlopen("libssl.1.0.0.dylib", RTLD_NOW)) == NULL &&
|
|
128
|
-
(openssl_handle = dlopen("libssl.so.10", RTLD_NOW)) == NULL
|
|
128
|
+
(openssl_handle = dlopen("libssl.so.10", RTLD_NOW)) == NULL &&
|
|
129
|
+
(openssl_handle = dlopen("libssl.so.3", RTLD_NOW)) == NULL) {
|
|
129
130
|
git_error_set(GIT_ERROR_SSL, "could not load ssl libraries");
|
|
130
131
|
return -1;
|
|
131
132
|
}
|
|
@@ -175,7 +176,6 @@ int git_openssl_stream_dynamic_init(void)
|
|
|
175
176
|
|
|
176
177
|
SSL_connect = (int (*)(SSL *))openssl_sym(&err, "SSL_connect", true);
|
|
177
178
|
SSL_ctrl = (long (*)(SSL *, int, long, void *))openssl_sym(&err, "SSL_ctrl", true);
|
|
178
|
-
SSL_get_peer_certificate = (X509 *(*)(const SSL *))openssl_sym(&err, "SSL_get_peer_certificate", true);
|
|
179
179
|
SSL_library_init = (int (*)(void))openssl_sym(&err, "SSL_library_init", false);
|
|
180
180
|
SSL_free = (void (*)(SSL *))openssl_sym(&err, "SSL_free", true);
|
|
181
181
|
SSL_get_error = (int (*)(SSL *, int))openssl_sym(&err, "SSL_get_error", true);
|
|
@@ -187,6 +187,10 @@ int git_openssl_stream_dynamic_init(void)
|
|
|
187
187
|
SSL_shutdown = (int (*)(SSL *ssl))openssl_sym(&err, "SSL_shutdown", true);
|
|
188
188
|
SSL_write = (int (*)(SSL *, const void *, int))openssl_sym(&err, "SSL_write", true);
|
|
189
189
|
|
|
190
|
+
if (!(SSL_get_peer_certificate = (X509 *(*)(const SSL *))openssl_sym(&err, "SSL_get_peer_certificate", false))) {
|
|
191
|
+
SSL_get_peer_certificate = (X509 *(*)(const SSL *))openssl_sym(&err, "SSL_get1_peer_certificate", true);
|
|
192
|
+
}
|
|
193
|
+
|
|
190
194
|
SSL_CTX_ctrl = (long (*)(SSL_CTX *, int, long, void *))openssl_sym(&err, "SSL_CTX_ctrl", true);
|
|
191
195
|
SSL_CTX_free = (void (*)(SSL_CTX *))openssl_sym(&err, "SSL_CTX_free", true);
|
|
192
196
|
SSL_CTX_new = (SSL_CTX *(*)(const SSL_METHOD *))openssl_sym(&err, "SSL_CTX_new", true);
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* The implementation was written so as to conform with Netscapes SSL.
|
|
14
14
|
*
|
|
15
15
|
* This library is free for commercial and non-commercial use as long as
|
|
16
|
-
* the following conditions are
|
|
16
|
+
* the following conditions are adhered to. The following conditions
|
|
17
17
|
* apply to all code found in this distribution, be it the RC4, RSA,
|
|
18
18
|
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
|
19
19
|
* included with this distribution is covered by the same copyright terms
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
* must display the following acknowledgement:
|
|
39
39
|
* "This product includes cryptographic software written by
|
|
40
40
|
* Eric Young (eay@cryptsoft.com)"
|
|
41
|
-
* The word 'cryptographic' can be left out if the
|
|
41
|
+
* The word 'cryptographic' can be left out if the routines from the library
|
|
42
42
|
* being used are not cryptographic related :-).
|
|
43
43
|
* 4. If you include any Windows specific code (or a derivative thereof) from
|
|
44
44
|
* the apps directory (application code) you must include an acknowledgement:
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
57
57
|
* SUCH DAMAGE.
|
|
58
58
|
*
|
|
59
|
-
* The licence and distribution terms for any
|
|
59
|
+
* The licence and distribution terms for any publicly available version or
|
|
60
60
|
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
|
61
61
|
* copied and put under another distribution licence
|
|
62
62
|
* [including the GNU Public Licence.]
|
|
@@ -135,9 +135,12 @@ static ssize_t socket_write(git_stream *stream, const char *data, size_t len, in
|
|
|
135
135
|
git_socket_stream *st = (git_socket_stream *) stream;
|
|
136
136
|
ssize_t written;
|
|
137
137
|
|
|
138
|
+
GIT_ASSERT(flags == 0);
|
|
139
|
+
GIT_UNUSED(flags);
|
|
140
|
+
|
|
138
141
|
errno = 0;
|
|
139
142
|
|
|
140
|
-
if ((written = p_send(st->s, data, len,
|
|
143
|
+
if ((written = p_send(st->s, data, len, 0)) < 0) {
|
|
141
144
|
net_set_error("error sending data");
|
|
142
145
|
return -1;
|
|
143
146
|
}
|