rugged 1.3.2 → 1.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +34 -2
- data/ext/rugged/extconf.rb +7 -4
- data/ext/rugged/rugged.c +16 -0
- data/ext/rugged/rugged.h +4 -0
- data/ext/rugged/rugged_blame.c +2 -0
- data/ext/rugged/rugged_blob.c +3 -0
- data/ext/rugged/rugged_commit.c +1 -0
- data/ext/rugged/rugged_config.c +9 -2
- data/ext/rugged/rugged_diff.c +1 -0
- data/ext/rugged/rugged_index.c +2 -0
- data/ext/rugged/rugged_patch.c +1 -0
- data/ext/rugged/rugged_rebase.c +1 -0
- data/ext/rugged/rugged_reference.c +1 -0
- data/ext/rugged/rugged_remote.c +28 -10
- data/ext/rugged/rugged_repo.c +7 -9
- data/ext/rugged/rugged_revwalk.c +5 -1
- data/ext/rugged/rugged_settings.c +5 -0
- data/ext/rugged/rugged_submodule.c +1 -0
- data/ext/rugged/rugged_tag.c +1 -0
- data/ext/rugged/rugged_tree.c +4 -0
- data/lib/rugged/index.rb +1 -1
- data/lib/rugged/tree.rb +5 -1
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +132 -288
- data/vendor/libgit2/COPYING +106 -19
- data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
- data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
- data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
- data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
- data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
- data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
- data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
- data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
- data/vendor/libgit2/cmake/{FindHTTP_Parser.cmake → FindHTTPParser.cmake} +17 -17
- data/vendor/libgit2/cmake/FindIconv.cmake +27 -27
- data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
- data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
- data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
- data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
- data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
- data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
- data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
- data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
- data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
- data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
- data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
- data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
- data/vendor/libgit2/cmake/SelectHTTPParser.cmake +19 -0
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +100 -100
- data/vendor/libgit2/cmake/SelectHashes.cmake +91 -53
- data/vendor/libgit2/cmake/SelectRegex.cmake +51 -0
- data/vendor/libgit2/cmake/SelectSSH.cmake +41 -0
- data/vendor/libgit2/cmake/SelectWinHTTP.cmake +17 -0
- data/vendor/libgit2/cmake/SelectZlib.cmake +34 -0
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +3 -1
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +88 -88
- data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
- data/vendor/libgit2/deps/zlib/adler32.c +7 -0
- data/vendor/libgit2/deps/zlib/crc32.c +975 -288
- data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
- data/vendor/libgit2/deps/zlib/deflate.c +83 -31
- data/vendor/libgit2/deps/zlib/deflate.h +12 -15
- data/vendor/libgit2/deps/zlib/gzguts.h +3 -2
- data/vendor/libgit2/deps/zlib/infback.c +2 -1
- data/vendor/libgit2/deps/zlib/inffast.c +14 -14
- data/vendor/libgit2/deps/zlib/inflate.c +39 -8
- data/vendor/libgit2/deps/zlib/inflate.h +3 -2
- data/vendor/libgit2/deps/zlib/inftrees.c +3 -3
- data/vendor/libgit2/deps/zlib/trees.c +27 -48
- data/vendor/libgit2/deps/zlib/zlib.h +126 -100
- data/vendor/libgit2/deps/zlib/zutil.c +2 -2
- data/vendor/libgit2/deps/zlib/zutil.h +12 -9
- data/vendor/libgit2/include/git2/apply.h +16 -2
- data/vendor/libgit2/include/git2/attr.h +11 -2
- data/vendor/libgit2/include/git2/blame.h +4 -1
- data/vendor/libgit2/include/git2/blob.h +14 -1
- data/vendor/libgit2/include/git2/branch.h +4 -2
- data/vendor/libgit2/include/git2/buffer.h +18 -78
- data/vendor/libgit2/include/git2/cert.h +2 -2
- data/vendor/libgit2/include/git2/checkout.h +5 -2
- data/vendor/libgit2/include/git2/clone.h +3 -3
- data/vendor/libgit2/include/git2/commit.h +2 -0
- data/vendor/libgit2/include/git2/common.h +28 -7
- data/vendor/libgit2/include/git2/config.h +25 -9
- data/vendor/libgit2/include/git2/credential.h +2 -1
- data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
- data/vendor/libgit2/include/git2/deprecated.h +9 -1
- data/vendor/libgit2/include/git2/describe.h +7 -2
- data/vendor/libgit2/include/git2/diff.h +18 -10
- data/vendor/libgit2/include/git2/email.h +1 -1
- data/vendor/libgit2/include/git2/errors.h +17 -3
- data/vendor/libgit2/include/git2/experimental.h +20 -0
- data/vendor/libgit2/include/git2/filter.h +7 -2
- data/vendor/libgit2/include/git2/graph.h +1 -0
- data/vendor/libgit2/include/git2/ignore.h +1 -1
- data/vendor/libgit2/include/git2/index.h +11 -5
- data/vendor/libgit2/include/git2/indexer.h +48 -0
- data/vendor/libgit2/include/git2/merge.h +24 -4
- data/vendor/libgit2/include/git2/message.h +2 -0
- data/vendor/libgit2/include/git2/object.h +49 -0
- data/vendor/libgit2/include/git2/odb.h +94 -13
- data/vendor/libgit2/include/git2/odb_backend.h +107 -19
- data/vendor/libgit2/include/git2/oid.h +115 -15
- data/vendor/libgit2/include/git2/pack.h +24 -8
- data/vendor/libgit2/include/git2/patch.h +8 -0
- data/vendor/libgit2/include/git2/pathspec.h +1 -1
- data/vendor/libgit2/include/git2/proxy.h +1 -1
- data/vendor/libgit2/include/git2/rebase.h +9 -1
- data/vendor/libgit2/include/git2/refdb.h +3 -0
- data/vendor/libgit2/include/git2/reflog.h +1 -1
- data/vendor/libgit2/include/git2/refs.h +2 -2
- data/vendor/libgit2/include/git2/remote.h +184 -37
- data/vendor/libgit2/include/git2/repository.h +34 -10
- data/vendor/libgit2/include/git2/reset.h +2 -2
- data/vendor/libgit2/include/git2/revparse.h +1 -1
- data/vendor/libgit2/include/git2/revwalk.h +4 -1
- data/vendor/libgit2/include/git2/signature.h +1 -1
- data/vendor/libgit2/include/git2/stash.h +61 -7
- data/vendor/libgit2/include/git2/status.h +14 -5
- data/vendor/libgit2/include/git2/strarray.h +0 -13
- data/vendor/libgit2/include/git2/submodule.h +7 -2
- data/vendor/libgit2/include/git2/sys/commit_graph.h +1 -1
- data/vendor/libgit2/include/git2/sys/odb_backend.h +3 -6
- data/vendor/libgit2/include/git2/sys/remote.h +46 -0
- data/vendor/libgit2/include/git2/sys/stream.h +1 -1
- data/vendor/libgit2/include/git2/sys/transport.h +46 -39
- data/vendor/libgit2/include/git2/tag.h +1 -0
- data/vendor/libgit2/include/git2/tree.h +4 -3
- data/vendor/libgit2/include/git2/types.h +7 -7
- data/vendor/libgit2/include/git2/version.h +27 -6
- data/vendor/libgit2/include/git2/worktree.h +12 -2
- data/vendor/libgit2/include/git2.h +1 -0
- data/vendor/libgit2/src/CMakeLists.txt +177 -419
- data/vendor/libgit2/src/README.md +12 -0
- data/vendor/libgit2/src/cli/CMakeLists.txt +57 -0
- data/vendor/libgit2/src/cli/README.md +26 -0
- data/vendor/libgit2/src/cli/cli.h +20 -0
- data/vendor/libgit2/src/cli/cmd.c +21 -0
- data/vendor/libgit2/src/cli/cmd.h +33 -0
- data/vendor/libgit2/src/cli/cmd_cat_file.c +204 -0
- data/vendor/libgit2/src/cli/cmd_clone.c +176 -0
- data/vendor/libgit2/src/cli/cmd_hash_object.c +154 -0
- data/vendor/libgit2/src/cli/cmd_help.c +86 -0
- data/vendor/libgit2/src/cli/error.h +51 -0
- data/vendor/libgit2/src/cli/main.c +106 -0
- data/vendor/libgit2/src/cli/opt.c +669 -0
- data/vendor/libgit2/src/cli/opt.h +349 -0
- data/vendor/libgit2/src/cli/opt_usage.c +194 -0
- data/vendor/libgit2/src/cli/opt_usage.h +35 -0
- data/vendor/libgit2/src/cli/progress.c +345 -0
- data/vendor/libgit2/src/cli/progress.h +117 -0
- data/vendor/libgit2/src/cli/sighandler.h +20 -0
- data/vendor/libgit2/src/cli/unix/sighandler.c +36 -0
- data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
- data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
- data/vendor/libgit2/src/libgit2/CMakeLists.txt +141 -0
- data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +1 -1
- data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
- data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +18 -18
- data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
- data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +18 -18
- data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +18 -18
- data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +4 -4
- data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +18 -13
- data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +2 -0
- data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -1
- data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
- data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
- data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
- data/vendor/libgit2/src/{branch.h → libgit2/branch.h} +15 -3
- data/vendor/libgit2/src/libgit2/buf.c +126 -0
- data/vendor/libgit2/src/libgit2/buf.h +50 -0
- data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +74 -68
- data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +13 -13
- data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +96 -67
- data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +178 -73
- data/vendor/libgit2/src/libgit2/commit.h +87 -0
- data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +122 -89
- data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +14 -4
- data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +7 -4
- data/vendor/libgit2/src/libgit2/common.h +55 -0
- data/vendor/libgit2/src/{config.c → libgit2/config.c} +101 -69
- data/vendor/libgit2/src/{config.h → libgit2/config.h} +15 -2
- data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +105 -93
- data/vendor/libgit2/src/{config_mem.c → libgit2/config_mem.c} +9 -9
- data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +27 -23
- data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
- data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +35 -27
- data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +30 -9
- data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +2 -4
- data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +34 -36
- data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +3 -3
- data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +44 -26
- data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +47 -18
- data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
- data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +112 -100
- data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
- data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
- data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +13 -8
- data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
- data/vendor/libgit2/src/{email.c → libgit2/email.c} +55 -39
- data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
- data/vendor/libgit2/src/{errors.c → libgit2/errors.c} +18 -18
- data/vendor/libgit2/src/{errors.h → libgit2/errors.h} +1 -2
- data/vendor/libgit2/src/libgit2/experimental.h.in +13 -0
- data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +72 -27
- data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -1
- data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +23 -23
- data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +127 -53
- data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
- data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
- data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +35 -34
- data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
- data/vendor/libgit2/src/{index.c → libgit2/index.c} +91 -90
- data/vendor/libgit2/src/{index.h → libgit2/index.h} +6 -3
- data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +173 -92
- data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +71 -61
- data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +5 -5
- data/vendor/libgit2/src/{libgit2.c → libgit2/libgit2.c} +46 -11
- data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +38 -36
- data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +30 -30
- data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
- data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +2 -2
- data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -3
- data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
- data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +112 -92
- data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +5 -4
- data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +15 -12
- data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +5 -2
- data/vendor/libgit2/src/{netops.c → libgit2/netops.c} +1 -2
- data/vendor/libgit2/src/{netops.h → libgit2/netops.h} +1 -1
- data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +25 -34
- data/vendor/libgit2/src/{object.c → libgit2/object.c} +135 -30
- data/vendor/libgit2/src/{object.h → libgit2/object.h} +12 -3
- data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +228 -81
- data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
- data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
- data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +18 -5
- data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +137 -85
- data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +136 -90
- data/vendor/libgit2/src/libgit2/oid.h +273 -0
- data/vendor/libgit2/src/{oidmap.c → libgit2/oidmap.c} +1 -1
- data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +56 -30
- data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +11 -6
- data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +114 -84
- data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +31 -16
- data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +4 -3
- data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
- data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +1 -0
- data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +27 -11
- data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
- data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +29 -29
- data/vendor/libgit2/src/libgit2/path.c +375 -0
- data/vendor/libgit2/src/libgit2/path.h +68 -0
- data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +6 -6
- data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
- data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
- data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
- data/vendor/libgit2/src/{push.c → libgit2/push.c} +43 -38
- data/vendor/libgit2/src/{push.h → libgit2/push.h} +4 -16
- data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
- data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
- data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +119 -107
- data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +506 -197
- data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +7 -5
- data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +1 -2
- data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +34 -32
- data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +2 -2
- data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +32 -37
- data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +5 -2
- data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +718 -420
- data/vendor/libgit2/src/libgit2/remote.h +100 -0
- data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +629 -386
- data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +20 -9
- data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
- data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +14 -14
- data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +71 -42
- data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +12 -8
- data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +12 -6
- data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -1
- data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +235 -61
- data/vendor/libgit2/src/{status.c → libgit2/status.c} +4 -1
- data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
- data/vendor/libgit2/src/libgit2/strarray.h +25 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +8 -6
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +1 -1
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +7 -3
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +3 -3
- data/vendor/libgit2/src/{streams → libgit2/streams}/socket.c +4 -1
- data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +177 -161
- data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +1 -1
- data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
- data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +53 -18
- data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +73 -42
- data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
- data/vendor/libgit2/src/{threadstate.c → libgit2/threadstate.c} +3 -3
- data/vendor/libgit2/src/{threadstate.h → libgit2/threadstate.h} +2 -2
- data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
- data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
- data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +1 -1
- data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +1 -1
- data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +10 -10
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +2 -3
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.c +12 -13
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.c +10 -10
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +0 -1
- data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +9 -11
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +41 -20
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +2 -3
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +75 -66
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +138 -116
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +92 -133
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +35 -32
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +177 -65
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +97 -49
- data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.c +365 -198
- data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +58 -59
- data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +8 -8
- data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +2 -2
- data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +93 -83
- data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +4 -4
- data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +121 -94
- data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
- data/vendor/libgit2/src/libgit2/xdiff/git-xdiff.h +53 -0
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiff.h +15 -15
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.c +134 -108
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.c +23 -7
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xhistogram.c +87 -78
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xinclude.h +1 -12
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmerge.c +104 -117
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xpatience.c +6 -17
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.c +15 -20
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.c +18 -7
- data/vendor/libgit2/src/util/CMakeLists.txt +80 -0
- data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.h +1 -1
- data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
- data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{array.h → util/array.h} +1 -1
- data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
- data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +1 -1
- data/vendor/libgit2/src/{date.c → util/date.c} +14 -20
- data/vendor/libgit2/src/util/date.h +33 -0
- data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +29 -29
- data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +2 -2
- data/vendor/libgit2/src/{path.c → util/fs_path.c} +453 -647
- data/vendor/libgit2/src/{path.h → util/fs_path.h} +221 -188
- data/vendor/libgit2/src/{futils.c → util/futils.c} +135 -90
- data/vendor/libgit2/src/{futils.h → util/futils.h} +28 -15
- data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +15 -1
- data/vendor/libgit2/src/{common.h → util/git2_util.h} +20 -59
- data/vendor/libgit2/src/util/hash/builtin.c +53 -0
- data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
- data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
- data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
- data/vendor/libgit2/src/util/hash/openssl.c +195 -0
- data/vendor/libgit2/src/util/hash/openssl.h +45 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
- data/vendor/libgit2/src/util/hash/sha.h +70 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
- data/vendor/libgit2/src/util/hash/win32.c +549 -0
- data/vendor/libgit2/src/util/hash/win32.h +60 -0
- data/vendor/libgit2/src/util/hash.c +158 -0
- data/vendor/libgit2/src/util/hash.h +61 -0
- data/vendor/libgit2/src/{khash.h → util/khash.h} +1 -1
- data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
- data/vendor/libgit2/src/util/net.c +1003 -0
- data/vendor/libgit2/src/{net.h → util/net.h} +18 -4
- data/vendor/libgit2/src/{pool.h → util/pool.h} +1 -1
- data/vendor/libgit2/src/{posix.c → util/posix.c} +3 -3
- data/vendor/libgit2/src/{posix.h → util/posix.h} +4 -1
- data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +2 -2
- data/vendor/libgit2/src/util/rand.c +234 -0
- data/vendor/libgit2/src/util/rand.h +37 -0
- data/vendor/libgit2/src/{regexp.c → util/regexp.c} +4 -4
- data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
- data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
- data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
- data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +1 -1
- data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +2 -2
- data/vendor/libgit2/src/{buffer.c → util/str.c} +157 -151
- data/vendor/libgit2/src/util/str.h +357 -0
- data/vendor/libgit2/src/{strmap.h → util/strmap.h} +1 -1
- data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
- data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
- data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
- data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
- data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -4
- data/vendor/libgit2/src/{unix → util/unix}/realpath.c +1 -3
- data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
- data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
- data/vendor/libgit2/src/{util.c → util/util.c} +15 -15
- data/vendor/libgit2/src/{util.h → util/util.h} +4 -29
- data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
- data/vendor/libgit2/src/{vector.h → util/vector.h} +2 -2
- data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +140 -9
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
- data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
- data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +12 -28
- data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
- data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
- data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
- data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
- metadata +402 -356
- data/vendor/libgit2/src/buffer.h +0 -374
- data/vendor/libgit2/src/commit.h +0 -46
- data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
- data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
- data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
- data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
- data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
- data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
- data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
- data/vendor/libgit2/src/hash/sha1.h +0 -38
- data/vendor/libgit2/src/hash.c +0 -110
- data/vendor/libgit2/src/hash.h +0 -46
- data/vendor/libgit2/src/message.h +0 -17
- data/vendor/libgit2/src/net.c +0 -540
- data/vendor/libgit2/src/oid.h +0 -51
- data/vendor/libgit2/src/remote.h +0 -55
- data/vendor/libgit2/src/sysdir.c +0 -347
- data/vendor/libgit2/src/win32/findfile.c +0 -230
- data/vendor/libgit2/src/win32/findfile.h +0 -19
- /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
- /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
- /data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +0 -0
- /data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +0 -0
- /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
- /data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +0 -0
- /data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +0 -0
- /data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -0
- /data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +0 -0
- /data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +0 -0
- /data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +0 -0
- /data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +0 -0
- /data/vendor/libgit2/src/{config_entries.c → libgit2/config_entries.c} +0 -0
- /data/vendor/libgit2/src/{config_entries.h → libgit2/config_entries.h} +0 -0
- /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
- /data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +0 -0
- /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
- /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
- /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
- /data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +0 -0
- /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
- /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
- /data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +0 -0
- /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
- /data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +0 -0
- /data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +0 -0
- /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
- /data/vendor/libgit2/src/{idxmap.c → libgit2/idxmap.c} +0 -0
- /data/vendor/libgit2/src/{idxmap.h → libgit2/idxmap.h} +0 -0
- /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
- /data/vendor/libgit2/src/{libgit2.h → libgit2/libgit2.h} +0 -0
- /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
- /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
- /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
- /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
- /data/vendor/libgit2/src/{offmap.c → libgit2/offmap.c} +0 -0
- /data/vendor/libgit2/src/{offmap.h → libgit2/offmap.h} +0 -0
- /data/vendor/libgit2/src/{oidarray.c → libgit2/oidarray.c} +0 -0
- /data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +0 -0
- /data/vendor/libgit2/src/{oidmap.h → libgit2/oidmap.h} +0 -0
- /data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +0 -0
- /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
- /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
- /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
- /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
- /data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +0 -0
- /data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +0 -0
- /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
- /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
- /data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.h +0 -0
- /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmacros.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xtypes.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.h +0 -0
- /data/vendor/libgit2/src/{alloc.c → util/alloc.c} +0 -0
- /data/vendor/libgit2/src/{alloc.h → util/alloc.h} +0 -0
- /data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.c +0 -0
- /data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.c +0 -0
- /data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.c +0 -0
- /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
- /data/vendor/libgit2/src/{integer.h → util/integer.h} +0 -0
- /data/vendor/libgit2/src/{pool.c → util/pool.c} +0 -0
- /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
- /data/vendor/libgit2/src/{strmap.c → util/strmap.c} +0 -0
- /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
- /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
- /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
- /data/vendor/libgit2/src/{vector.c → util/vector.c} +0 -0
- /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/error.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
|
@@ -7,32 +7,34 @@
|
|
|
7
7
|
|
|
8
8
|
#include "worktree.h"
|
|
9
9
|
|
|
10
|
+
#include "buf.h"
|
|
11
|
+
#include "repository.h"
|
|
12
|
+
#include "path.h"
|
|
13
|
+
|
|
10
14
|
#include "git2/branch.h"
|
|
11
15
|
#include "git2/commit.h"
|
|
12
16
|
#include "git2/worktree.h"
|
|
13
17
|
|
|
14
|
-
#include "repository.h"
|
|
15
|
-
|
|
16
18
|
static bool is_worktree_dir(const char *dir)
|
|
17
19
|
{
|
|
18
|
-
|
|
20
|
+
git_str buf = GIT_STR_INIT;
|
|
19
21
|
int error;
|
|
20
22
|
|
|
21
|
-
if (
|
|
23
|
+
if (git_str_sets(&buf, dir) < 0)
|
|
22
24
|
return -1;
|
|
23
25
|
|
|
24
|
-
error =
|
|
25
|
-
&&
|
|
26
|
-
&&
|
|
26
|
+
error = git_fs_path_contains_file(&buf, "commondir")
|
|
27
|
+
&& git_fs_path_contains_file(&buf, "gitdir")
|
|
28
|
+
&& git_fs_path_contains_file(&buf, "HEAD");
|
|
27
29
|
|
|
28
|
-
|
|
30
|
+
git_str_dispose(&buf);
|
|
29
31
|
return error;
|
|
30
32
|
}
|
|
31
33
|
|
|
32
34
|
int git_worktree_list(git_strarray *wts, git_repository *repo)
|
|
33
35
|
{
|
|
34
36
|
git_vector worktrees = GIT_VECTOR_INIT;
|
|
35
|
-
|
|
37
|
+
git_str path = GIT_STR_INIT;
|
|
36
38
|
char *worktree;
|
|
37
39
|
size_t i, len;
|
|
38
40
|
int error;
|
|
@@ -43,18 +45,18 @@ int git_worktree_list(git_strarray *wts, git_repository *repo)
|
|
|
43
45
|
wts->count = 0;
|
|
44
46
|
wts->strings = NULL;
|
|
45
47
|
|
|
46
|
-
if ((error =
|
|
48
|
+
if ((error = git_str_joinpath(&path, repo->commondir, "worktrees/")) < 0)
|
|
47
49
|
goto exit;
|
|
48
|
-
if (!
|
|
50
|
+
if (!git_fs_path_exists(path.ptr) || git_fs_path_is_empty_dir(path.ptr))
|
|
49
51
|
goto exit;
|
|
50
|
-
if ((error =
|
|
52
|
+
if ((error = git_fs_path_dirload(&worktrees, path.ptr, path.size, 0x0)) < 0)
|
|
51
53
|
goto exit;
|
|
52
54
|
|
|
53
55
|
len = path.size;
|
|
54
56
|
|
|
55
57
|
git_vector_foreach(&worktrees, i, worktree) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
+
git_str_truncate(&path, len);
|
|
59
|
+
git_str_puts(&path, worktree);
|
|
58
60
|
|
|
59
61
|
if (!is_worktree_dir(path.ptr)) {
|
|
60
62
|
git_vector_remove(&worktrees, i);
|
|
@@ -65,68 +67,68 @@ int git_worktree_list(git_strarray *wts, git_repository *repo)
|
|
|
65
67
|
wts->strings = (char **)git_vector_detach(&wts->count, NULL, &worktrees);
|
|
66
68
|
|
|
67
69
|
exit:
|
|
68
|
-
|
|
70
|
+
git_str_dispose(&path);
|
|
69
71
|
|
|
70
72
|
return error;
|
|
71
73
|
}
|
|
72
74
|
|
|
73
75
|
char *git_worktree__read_link(const char *base, const char *file)
|
|
74
76
|
{
|
|
75
|
-
|
|
77
|
+
git_str path = GIT_STR_INIT, buf = GIT_STR_INIT;
|
|
76
78
|
|
|
77
79
|
GIT_ASSERT_ARG_WITH_RETVAL(base, NULL);
|
|
78
80
|
GIT_ASSERT_ARG_WITH_RETVAL(file, NULL);
|
|
79
81
|
|
|
80
|
-
if (
|
|
82
|
+
if (git_str_joinpath(&path, base, file) < 0)
|
|
81
83
|
goto err;
|
|
82
84
|
if (git_futils_readbuffer(&buf, path.ptr) < 0)
|
|
83
85
|
goto err;
|
|
84
|
-
|
|
86
|
+
git_str_dispose(&path);
|
|
85
87
|
|
|
86
|
-
|
|
88
|
+
git_str_rtrim(&buf);
|
|
87
89
|
|
|
88
|
-
if (!
|
|
89
|
-
return
|
|
90
|
+
if (!git_fs_path_is_relative(buf.ptr))
|
|
91
|
+
return git_str_detach(&buf);
|
|
90
92
|
|
|
91
|
-
if (
|
|
93
|
+
if (git_str_sets(&path, base) < 0)
|
|
92
94
|
goto err;
|
|
93
|
-
if (
|
|
95
|
+
if (git_fs_path_apply_relative(&path, buf.ptr) < 0)
|
|
94
96
|
goto err;
|
|
95
|
-
|
|
97
|
+
git_str_dispose(&buf);
|
|
96
98
|
|
|
97
|
-
return
|
|
99
|
+
return git_str_detach(&path);
|
|
98
100
|
|
|
99
101
|
err:
|
|
100
|
-
|
|
101
|
-
|
|
102
|
+
git_str_dispose(&buf);
|
|
103
|
+
git_str_dispose(&path);
|
|
102
104
|
|
|
103
105
|
return NULL;
|
|
104
106
|
}
|
|
105
107
|
|
|
106
|
-
static int write_wtfile(const char *base, const char *file, const
|
|
108
|
+
static int write_wtfile(const char *base, const char *file, const git_str *buf)
|
|
107
109
|
{
|
|
108
|
-
|
|
110
|
+
git_str path = GIT_STR_INIT;
|
|
109
111
|
int err;
|
|
110
112
|
|
|
111
113
|
GIT_ASSERT_ARG(base);
|
|
112
114
|
GIT_ASSERT_ARG(file);
|
|
113
115
|
GIT_ASSERT_ARG(buf);
|
|
114
116
|
|
|
115
|
-
if ((err =
|
|
117
|
+
if ((err = git_str_joinpath(&path, base, file)) < 0)
|
|
116
118
|
goto out;
|
|
117
119
|
|
|
118
120
|
if ((err = git_futils_writebuffer(buf, path.ptr, O_CREAT|O_EXCL|O_WRONLY, 0644)) < 0)
|
|
119
121
|
goto out;
|
|
120
122
|
|
|
121
123
|
out:
|
|
122
|
-
|
|
124
|
+
git_str_dispose(&path);
|
|
123
125
|
|
|
124
126
|
return err;
|
|
125
127
|
}
|
|
126
128
|
|
|
127
129
|
static int open_worktree_dir(git_worktree **out, const char *parent, const char *dir, const char *name)
|
|
128
130
|
{
|
|
129
|
-
|
|
131
|
+
git_str gitdir = GIT_STR_INIT;
|
|
130
132
|
git_worktree *wt = NULL;
|
|
131
133
|
int error = 0;
|
|
132
134
|
|
|
@@ -135,7 +137,7 @@ static int open_worktree_dir(git_worktree **out, const char *parent, const char
|
|
|
135
137
|
goto out;
|
|
136
138
|
}
|
|
137
139
|
|
|
138
|
-
if ((error =
|
|
140
|
+
if ((error = git_path_validate_length(NULL, dir)) < 0)
|
|
139
141
|
goto out;
|
|
140
142
|
|
|
141
143
|
if ((wt = git__calloc(1, sizeof(*wt))) == NULL) {
|
|
@@ -147,14 +149,14 @@ static int open_worktree_dir(git_worktree **out, const char *parent, const char
|
|
|
147
149
|
(wt->commondir_path = git_worktree__read_link(dir, "commondir")) == NULL ||
|
|
148
150
|
(wt->gitlink_path = git_worktree__read_link(dir, "gitdir")) == NULL ||
|
|
149
151
|
(parent && (wt->parent_path = git__strdup(parent)) == NULL) ||
|
|
150
|
-
(wt->worktree_path =
|
|
152
|
+
(wt->worktree_path = git_fs_path_dirname(wt->gitlink_path)) == NULL) {
|
|
151
153
|
error = -1;
|
|
152
154
|
goto out;
|
|
153
155
|
}
|
|
154
156
|
|
|
155
|
-
if ((error =
|
|
157
|
+
if ((error = git_fs_path_prettify_dir(&gitdir, dir, NULL)) < 0)
|
|
156
158
|
goto out;
|
|
157
|
-
wt->gitdir_path =
|
|
159
|
+
wt->gitdir_path = git_str_detach(&gitdir);
|
|
158
160
|
|
|
159
161
|
if ((error = git_worktree_is_locked(NULL, wt)) < 0)
|
|
160
162
|
goto out;
|
|
@@ -166,14 +168,14 @@ static int open_worktree_dir(git_worktree **out, const char *parent, const char
|
|
|
166
168
|
out:
|
|
167
169
|
if (error)
|
|
168
170
|
git_worktree_free(wt);
|
|
169
|
-
|
|
171
|
+
git_str_dispose(&gitdir);
|
|
170
172
|
|
|
171
173
|
return error;
|
|
172
174
|
}
|
|
173
175
|
|
|
174
176
|
int git_worktree_lookup(git_worktree **out, git_repository *repo, const char *name)
|
|
175
177
|
{
|
|
176
|
-
|
|
178
|
+
git_str path = GIT_STR_INIT;
|
|
177
179
|
git_worktree *wt = NULL;
|
|
178
180
|
int error;
|
|
179
181
|
|
|
@@ -182,14 +184,19 @@ int git_worktree_lookup(git_worktree **out, git_repository *repo, const char *na
|
|
|
182
184
|
|
|
183
185
|
*out = NULL;
|
|
184
186
|
|
|
185
|
-
if ((error =
|
|
187
|
+
if ((error = git_str_join3(&path, '/', repo->commondir, "worktrees", name)) < 0)
|
|
186
188
|
goto out;
|
|
187
189
|
|
|
190
|
+
if (!git_fs_path_isdir(path.ptr)) {
|
|
191
|
+
error = GIT_ENOTFOUND;
|
|
192
|
+
goto out;
|
|
193
|
+
}
|
|
194
|
+
|
|
188
195
|
if ((error = (open_worktree_dir(out, git_repository_workdir(repo), path.ptr, name))) < 0)
|
|
189
196
|
goto out;
|
|
190
197
|
|
|
191
198
|
out:
|
|
192
|
-
|
|
199
|
+
git_str_dispose(&path);
|
|
193
200
|
|
|
194
201
|
if (error)
|
|
195
202
|
git_worktree_free(wt);
|
|
@@ -199,7 +206,7 @@ out:
|
|
|
199
206
|
|
|
200
207
|
int git_worktree_open_from_repository(git_worktree **out, git_repository *repo)
|
|
201
208
|
{
|
|
202
|
-
|
|
209
|
+
git_str parent = GIT_STR_INIT;
|
|
203
210
|
const char *gitdir, *commondir;
|
|
204
211
|
char *name = NULL;
|
|
205
212
|
int error = 0;
|
|
@@ -213,18 +220,18 @@ int git_worktree_open_from_repository(git_worktree **out, git_repository *repo)
|
|
|
213
220
|
gitdir = git_repository_path(repo);
|
|
214
221
|
commondir = git_repository_commondir(repo);
|
|
215
222
|
|
|
216
|
-
if ((error =
|
|
223
|
+
if ((error = git_fs_path_prettify_dir(&parent, "..", commondir)) < 0)
|
|
217
224
|
goto out;
|
|
218
225
|
|
|
219
226
|
/* The name is defined by the last component in '.git/worktree/%s' */
|
|
220
|
-
name =
|
|
227
|
+
name = git_fs_path_basename(gitdir);
|
|
221
228
|
|
|
222
229
|
if ((error = open_worktree_dir(out, parent.ptr, gitdir, name)) < 0)
|
|
223
230
|
goto out;
|
|
224
231
|
|
|
225
232
|
out:
|
|
226
233
|
git__free(name);
|
|
227
|
-
|
|
234
|
+
git_str_dispose(&parent);
|
|
228
235
|
|
|
229
236
|
return error;
|
|
230
237
|
}
|
|
@@ -254,21 +261,21 @@ int git_worktree_validate(const git_worktree *wt)
|
|
|
254
261
|
return GIT_ERROR;
|
|
255
262
|
}
|
|
256
263
|
|
|
257
|
-
if (wt->parent_path && !
|
|
264
|
+
if (wt->parent_path && !git_fs_path_exists(wt->parent_path)) {
|
|
258
265
|
git_error_set(GIT_ERROR_WORKTREE,
|
|
259
266
|
"worktree parent directory ('%s') does not exist ",
|
|
260
267
|
wt->parent_path);
|
|
261
268
|
return GIT_ERROR;
|
|
262
269
|
}
|
|
263
270
|
|
|
264
|
-
if (!
|
|
271
|
+
if (!git_fs_path_exists(wt->commondir_path)) {
|
|
265
272
|
git_error_set(GIT_ERROR_WORKTREE,
|
|
266
273
|
"worktree common directory ('%s') does not exist ",
|
|
267
274
|
wt->commondir_path);
|
|
268
275
|
return GIT_ERROR;
|
|
269
276
|
}
|
|
270
277
|
|
|
271
|
-
if (!
|
|
278
|
+
if (!git_fs_path_exists(wt->worktree_path)) {
|
|
272
279
|
git_error_set(GIT_ERROR_WORKTREE,
|
|
273
280
|
"worktree directory '%s' does not exist",
|
|
274
281
|
wt->worktree_path);
|
|
@@ -298,20 +305,17 @@ int git_worktree_add(git_worktree **out, git_repository *repo,
|
|
|
298
305
|
const char *name, const char *worktree,
|
|
299
306
|
const git_worktree_add_options *opts)
|
|
300
307
|
{
|
|
301
|
-
|
|
308
|
+
git_str gitdir = GIT_STR_INIT, wddir = GIT_STR_INIT, buf = GIT_STR_INIT;
|
|
302
309
|
git_reference *ref = NULL, *head = NULL;
|
|
303
310
|
git_commit *commit = NULL;
|
|
304
311
|
git_repository *wt = NULL;
|
|
305
|
-
git_checkout_options coopts
|
|
312
|
+
git_checkout_options coopts;
|
|
306
313
|
git_worktree_add_options wtopts = GIT_WORKTREE_ADD_OPTIONS_INIT;
|
|
307
314
|
int err;
|
|
308
315
|
|
|
309
316
|
GIT_ERROR_CHECK_VERSION(
|
|
310
317
|
opts, GIT_WORKTREE_ADD_OPTIONS_VERSION, "git_worktree_add_options");
|
|
311
318
|
|
|
312
|
-
if (opts)
|
|
313
|
-
memcpy(&wtopts, opts, sizeof(wtopts));
|
|
314
|
-
|
|
315
319
|
GIT_ASSERT_ARG(out);
|
|
316
320
|
GIT_ASSERT_ARG(repo);
|
|
317
321
|
GIT_ASSERT_ARG(name);
|
|
@@ -319,6 +323,11 @@ int git_worktree_add(git_worktree **out, git_repository *repo,
|
|
|
319
323
|
|
|
320
324
|
*out = NULL;
|
|
321
325
|
|
|
326
|
+
if (opts)
|
|
327
|
+
memcpy(&wtopts, opts, sizeof(wtopts));
|
|
328
|
+
|
|
329
|
+
memcpy(&coopts, &wtopts.checkout_options, sizeof(coopts));
|
|
330
|
+
|
|
322
331
|
if (wtopts.ref) {
|
|
323
332
|
if (!git_reference_is_branch(wtopts.ref)) {
|
|
324
333
|
git_error_set(GIT_ERROR_WORKTREE, "reference is not a branch");
|
|
@@ -334,28 +343,28 @@ int git_worktree_add(git_worktree **out, git_repository *repo,
|
|
|
334
343
|
}
|
|
335
344
|
|
|
336
345
|
/* Create gitdir directory ".git/worktrees/<name>" */
|
|
337
|
-
if ((err =
|
|
346
|
+
if ((err = git_str_joinpath(&gitdir, repo->commondir, "worktrees")) < 0)
|
|
338
347
|
goto out;
|
|
339
|
-
if (!
|
|
348
|
+
if (!git_fs_path_exists(gitdir.ptr))
|
|
340
349
|
if ((err = git_futils_mkdir(gitdir.ptr, 0755, GIT_MKDIR_EXCL)) < 0)
|
|
341
350
|
goto out;
|
|
342
|
-
if ((err =
|
|
351
|
+
if ((err = git_str_joinpath(&gitdir, gitdir.ptr, name)) < 0)
|
|
343
352
|
goto out;
|
|
344
353
|
if ((err = git_futils_mkdir(gitdir.ptr, 0755, GIT_MKDIR_EXCL)) < 0)
|
|
345
354
|
goto out;
|
|
346
|
-
if ((err =
|
|
355
|
+
if ((err = git_fs_path_prettify_dir(&gitdir, gitdir.ptr, NULL)) < 0)
|
|
347
356
|
goto out;
|
|
348
357
|
|
|
349
358
|
/* Create worktree work dir */
|
|
350
359
|
if ((err = git_futils_mkdir(worktree, 0755, GIT_MKDIR_EXCL)) < 0)
|
|
351
360
|
goto out;
|
|
352
|
-
if ((err =
|
|
361
|
+
if ((err = git_fs_path_prettify_dir(&wddir, worktree, NULL)) < 0)
|
|
353
362
|
goto out;
|
|
354
363
|
|
|
355
364
|
if (wtopts.lock) {
|
|
356
365
|
int fd;
|
|
357
366
|
|
|
358
|
-
if ((err =
|
|
367
|
+
if ((err = git_str_joinpath(&buf, gitdir.ptr, "locked")) < 0)
|
|
359
368
|
goto out;
|
|
360
369
|
|
|
361
370
|
if ((fd = p_creat(buf.ptr, 0644)) < 0) {
|
|
@@ -364,22 +373,22 @@ int git_worktree_add(git_worktree **out, git_repository *repo,
|
|
|
364
373
|
}
|
|
365
374
|
|
|
366
375
|
p_close(fd);
|
|
367
|
-
|
|
376
|
+
git_str_clear(&buf);
|
|
368
377
|
}
|
|
369
378
|
|
|
370
379
|
/* Create worktree .git file */
|
|
371
|
-
if ((err =
|
|
380
|
+
if ((err = git_str_printf(&buf, "gitdir: %s\n", gitdir.ptr)) < 0)
|
|
372
381
|
goto out;
|
|
373
382
|
if ((err = write_wtfile(wddir.ptr, ".git", &buf)) < 0)
|
|
374
383
|
goto out;
|
|
375
384
|
|
|
376
385
|
/* Create gitdir files */
|
|
377
|
-
if ((err =
|
|
378
|
-
|| (err =
|
|
386
|
+
if ((err = git_fs_path_prettify_dir(&buf, repo->commondir, NULL) < 0)
|
|
387
|
+
|| (err = git_str_putc(&buf, '\n')) < 0
|
|
379
388
|
|| (err = write_wtfile(gitdir.ptr, "commondir", &buf)) < 0)
|
|
380
389
|
goto out;
|
|
381
|
-
if ((err =
|
|
382
|
-
|| (err =
|
|
390
|
+
if ((err = git_str_joinpath(&buf, wddir.ptr, ".git")) < 0
|
|
391
|
+
|| (err = git_str_putc(&buf, '\n')) < 0
|
|
383
392
|
|| (err = write_wtfile(gitdir.ptr, "gitdir", &buf)) < 0)
|
|
384
393
|
goto out;
|
|
385
394
|
|
|
@@ -403,7 +412,6 @@ int git_worktree_add(git_worktree **out, git_repository *repo,
|
|
|
403
412
|
goto out;
|
|
404
413
|
|
|
405
414
|
/* Checkout worktree's HEAD */
|
|
406
|
-
coopts.checkout_strategy = GIT_CHECKOUT_FORCE;
|
|
407
415
|
if ((err = git_checkout_head(wt, &coopts)) < 0)
|
|
408
416
|
goto out;
|
|
409
417
|
|
|
@@ -412,9 +420,9 @@ int git_worktree_add(git_worktree **out, git_repository *repo,
|
|
|
412
420
|
goto out;
|
|
413
421
|
|
|
414
422
|
out:
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
423
|
+
git_str_dispose(&gitdir);
|
|
424
|
+
git_str_dispose(&wddir);
|
|
425
|
+
git_str_dispose(&buf);
|
|
418
426
|
git_reference_free(ref);
|
|
419
427
|
git_reference_free(head);
|
|
420
428
|
git_commit_free(commit);
|
|
@@ -425,7 +433,7 @@ out:
|
|
|
425
433
|
|
|
426
434
|
int git_worktree_lock(git_worktree *wt, const char *reason)
|
|
427
435
|
{
|
|
428
|
-
|
|
436
|
+
git_str buf = GIT_STR_INIT, path = GIT_STR_INIT;
|
|
429
437
|
int error;
|
|
430
438
|
|
|
431
439
|
GIT_ASSERT_ARG(wt);
|
|
@@ -437,11 +445,11 @@ int git_worktree_lock(git_worktree *wt, const char *reason)
|
|
|
437
445
|
goto out;
|
|
438
446
|
}
|
|
439
447
|
|
|
440
|
-
if ((error =
|
|
448
|
+
if ((error = git_str_joinpath(&path, wt->gitdir_path, "locked")) < 0)
|
|
441
449
|
goto out;
|
|
442
450
|
|
|
443
451
|
if (reason)
|
|
444
|
-
|
|
452
|
+
git_str_attach_notowned(&buf, reason, strlen(reason));
|
|
445
453
|
|
|
446
454
|
if ((error = git_futils_writebuffer(&buf, path.ptr, O_CREAT|O_EXCL|O_WRONLY, 0644)) < 0)
|
|
447
455
|
goto out;
|
|
@@ -449,14 +457,14 @@ int git_worktree_lock(git_worktree *wt, const char *reason)
|
|
|
449
457
|
wt->locked = 1;
|
|
450
458
|
|
|
451
459
|
out:
|
|
452
|
-
|
|
460
|
+
git_str_dispose(&path);
|
|
453
461
|
|
|
454
462
|
return error;
|
|
455
463
|
}
|
|
456
464
|
|
|
457
465
|
int git_worktree_unlock(git_worktree *wt)
|
|
458
466
|
{
|
|
459
|
-
|
|
467
|
+
git_str path = GIT_STR_INIT;
|
|
460
468
|
int error;
|
|
461
469
|
|
|
462
470
|
GIT_ASSERT_ARG(wt);
|
|
@@ -466,42 +474,61 @@ int git_worktree_unlock(git_worktree *wt)
|
|
|
466
474
|
if (!error)
|
|
467
475
|
return 1;
|
|
468
476
|
|
|
469
|
-
if (
|
|
477
|
+
if (git_str_joinpath(&path, wt->gitdir_path, "locked") < 0)
|
|
470
478
|
return -1;
|
|
471
479
|
|
|
472
480
|
if (p_unlink(path.ptr) != 0) {
|
|
473
|
-
|
|
481
|
+
git_str_dispose(&path);
|
|
474
482
|
return -1;
|
|
475
483
|
}
|
|
476
484
|
|
|
477
485
|
wt->locked = 0;
|
|
478
486
|
|
|
479
|
-
|
|
487
|
+
git_str_dispose(&path);
|
|
480
488
|
|
|
481
489
|
return 0;
|
|
482
490
|
}
|
|
483
491
|
|
|
484
|
-
int
|
|
492
|
+
static int git_worktree__is_locked(git_str *reason, const git_worktree *wt)
|
|
485
493
|
{
|
|
486
|
-
|
|
494
|
+
git_str path = GIT_STR_INIT;
|
|
487
495
|
int error, locked;
|
|
488
496
|
|
|
489
497
|
GIT_ASSERT_ARG(wt);
|
|
490
498
|
|
|
491
499
|
if (reason)
|
|
492
|
-
|
|
500
|
+
git_str_clear(reason);
|
|
493
501
|
|
|
494
|
-
if ((error =
|
|
502
|
+
if ((error = git_str_joinpath(&path, wt->gitdir_path, "locked")) < 0)
|
|
495
503
|
goto out;
|
|
496
|
-
locked =
|
|
504
|
+
locked = git_fs_path_exists(path.ptr);
|
|
497
505
|
if (locked && reason &&
|
|
498
506
|
(error = git_futils_readbuffer(reason, path.ptr)) < 0)
|
|
499
507
|
goto out;
|
|
500
508
|
|
|
501
509
|
error = locked;
|
|
502
510
|
out:
|
|
503
|
-
|
|
511
|
+
git_str_dispose(&path);
|
|
512
|
+
|
|
513
|
+
return error;
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
int git_worktree_is_locked(git_buf *reason, const git_worktree *wt)
|
|
517
|
+
{
|
|
518
|
+
git_str str = GIT_STR_INIT;
|
|
519
|
+
int error = 0;
|
|
520
|
+
|
|
521
|
+
if (reason && (error = git_buf_tostr(&str, reason)) < 0)
|
|
522
|
+
return error;
|
|
523
|
+
|
|
524
|
+
error = git_worktree__is_locked(reason ? &str : NULL, wt);
|
|
525
|
+
|
|
526
|
+
if (error >= 0 && reason) {
|
|
527
|
+
if (git_buf_fromstr(reason, &str) < 0)
|
|
528
|
+
error = -1;
|
|
529
|
+
}
|
|
504
530
|
|
|
531
|
+
git_str_dispose(&str);
|
|
505
532
|
return error;
|
|
506
533
|
}
|
|
507
534
|
|
|
@@ -547,17 +574,17 @@ int git_worktree_is_prunable(git_worktree *wt,
|
|
|
547
574
|
memcpy(&popts, opts, sizeof(popts));
|
|
548
575
|
|
|
549
576
|
if ((popts.flags & GIT_WORKTREE_PRUNE_LOCKED) == 0) {
|
|
550
|
-
|
|
577
|
+
git_str reason = GIT_STR_INIT;
|
|
551
578
|
int error;
|
|
552
579
|
|
|
553
|
-
if ((error =
|
|
580
|
+
if ((error = git_worktree__is_locked(&reason, wt)) < 0)
|
|
554
581
|
return error;
|
|
555
582
|
|
|
556
583
|
if (error) {
|
|
557
584
|
if (!reason.size)
|
|
558
|
-
|
|
585
|
+
git_str_attach_notowned(&reason, "no reason given", 15);
|
|
559
586
|
git_error_set(GIT_ERROR_WORKTREE, "not pruning locked working tree: '%s'", reason.ptr);
|
|
560
|
-
|
|
587
|
+
git_str_dispose(&reason);
|
|
561
588
|
return 0;
|
|
562
589
|
}
|
|
563
590
|
}
|
|
@@ -575,7 +602,7 @@ int git_worktree_prune(git_worktree *wt,
|
|
|
575
602
|
git_worktree_prune_options *opts)
|
|
576
603
|
{
|
|
577
604
|
git_worktree_prune_options popts = GIT_WORKTREE_PRUNE_OPTIONS_INIT;
|
|
578
|
-
|
|
605
|
+
git_str path = GIT_STR_INIT;
|
|
579
606
|
char *wtpath;
|
|
580
607
|
int err;
|
|
581
608
|
|
|
@@ -592,9 +619,9 @@ int git_worktree_prune(git_worktree *wt,
|
|
|
592
619
|
}
|
|
593
620
|
|
|
594
621
|
/* Delete gitdir in parent repository */
|
|
595
|
-
if ((err =
|
|
622
|
+
if ((err = git_str_join3(&path, '/', wt->commondir_path, "worktrees", wt->name)) < 0)
|
|
596
623
|
goto out;
|
|
597
|
-
if (!
|
|
624
|
+
if (!git_fs_path_exists(path.ptr))
|
|
598
625
|
{
|
|
599
626
|
git_error_set(GIT_ERROR_WORKTREE, "worktree gitdir '%s' does not exist", path.ptr);
|
|
600
627
|
err = -1;
|
|
@@ -606,15 +633,15 @@ int git_worktree_prune(git_worktree *wt,
|
|
|
606
633
|
/* Skip deletion of the actual working tree if it does
|
|
607
634
|
* not exist or deletion was not requested */
|
|
608
635
|
if ((popts.flags & GIT_WORKTREE_PRUNE_WORKING_TREE) == 0 ||
|
|
609
|
-
!
|
|
636
|
+
!git_fs_path_exists(wt->gitlink_path))
|
|
610
637
|
{
|
|
611
638
|
goto out;
|
|
612
639
|
}
|
|
613
640
|
|
|
614
|
-
if ((wtpath =
|
|
641
|
+
if ((wtpath = git_fs_path_dirname(wt->gitlink_path)) == NULL)
|
|
615
642
|
goto out;
|
|
616
|
-
|
|
617
|
-
if (!
|
|
643
|
+
git_str_attach(&path, wtpath, 0);
|
|
644
|
+
if (!git_fs_path_exists(path.ptr))
|
|
618
645
|
{
|
|
619
646
|
git_error_set(GIT_ERROR_WORKTREE, "working tree '%s' does not exist", path.ptr);
|
|
620
647
|
err = -1;
|
|
@@ -624,7 +651,7 @@ int git_worktree_prune(git_worktree *wt,
|
|
|
624
651
|
goto out;
|
|
625
652
|
|
|
626
653
|
out:
|
|
627
|
-
|
|
654
|
+
git_str_dispose(&path);
|
|
628
655
|
|
|
629
656
|
return err;
|
|
630
657
|
}
|
|
@@ -0,0 +1,53 @@
|
|
|
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
|
+
/*
|
|
9
|
+
* This file provides the necessary indirection between xdiff and
|
|
10
|
+
* libgit2. libgit2-specific functionality should live here, so
|
|
11
|
+
* that git and libgit2 can share a common xdiff implementation.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
#ifndef INCLUDE_git_xdiff_h__
|
|
15
|
+
#define INCLUDE_git_xdiff_h__
|
|
16
|
+
|
|
17
|
+
#include "regexp.h"
|
|
18
|
+
|
|
19
|
+
/* Work around C90-conformance issues */
|
|
20
|
+
#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L)
|
|
21
|
+
# if defined(_MSC_VER)
|
|
22
|
+
# define inline __inline
|
|
23
|
+
# elif defined(__GNUC__)
|
|
24
|
+
# define inline __inline__
|
|
25
|
+
# else
|
|
26
|
+
# define inline
|
|
27
|
+
# endif
|
|
28
|
+
#endif
|
|
29
|
+
|
|
30
|
+
#define xdl_malloc(x) git__malloc(x)
|
|
31
|
+
#define xdl_free(ptr) git__free(ptr)
|
|
32
|
+
#define xdl_realloc(ptr, x) git__realloc(ptr, x)
|
|
33
|
+
|
|
34
|
+
#define XDL_BUG(msg) GIT_ASSERT(msg)
|
|
35
|
+
|
|
36
|
+
#define xdl_regex_t git_regexp
|
|
37
|
+
#define xdl_regmatch_t git_regmatch
|
|
38
|
+
|
|
39
|
+
GIT_INLINE(int) xdl_regexec_buf(
|
|
40
|
+
const xdl_regex_t *preg, const char *buf, size_t size,
|
|
41
|
+
size_t nmatch, xdl_regmatch_t pmatch[], int eflags)
|
|
42
|
+
{
|
|
43
|
+
GIT_UNUSED(preg);
|
|
44
|
+
GIT_UNUSED(buf);
|
|
45
|
+
GIT_UNUSED(size);
|
|
46
|
+
GIT_UNUSED(nmatch);
|
|
47
|
+
GIT_UNUSED(pmatch);
|
|
48
|
+
GIT_UNUSED(eflags);
|
|
49
|
+
GIT_ASSERT("not implemented");
|
|
50
|
+
return -1;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
#endif
|