rugged 1.3.1 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +34 -2
- data/ext/rugged/extconf.rb +6 -3
- data/ext/rugged/rugged.c +16 -0
- data/ext/rugged/rugged.h +4 -0
- data/ext/rugged/rugged_allocator.c +0 -54
- data/ext/rugged/rugged_blame.c +2 -0
- data/ext/rugged/rugged_blob.c +3 -0
- data/ext/rugged/rugged_commit.c +1 -0
- data/ext/rugged/rugged_config.c +9 -2
- data/ext/rugged/rugged_diff.c +1 -0
- data/ext/rugged/rugged_index.c +2 -0
- data/ext/rugged/rugged_patch.c +1 -0
- data/ext/rugged/rugged_rebase.c +1 -0
- data/ext/rugged/rugged_reference.c +1 -0
- data/ext/rugged/rugged_remote.c +28 -10
- data/ext/rugged/rugged_repo.c +7 -9
- data/ext/rugged/rugged_revwalk.c +5 -1
- data/ext/rugged/rugged_settings.c +5 -0
- data/ext/rugged/rugged_submodule.c +1 -0
- data/ext/rugged/rugged_tag.c +1 -0
- data/ext/rugged/rugged_tree.c +4 -0
- data/lib/rugged/index.rb +1 -1
- data/lib/rugged/tree.rb +5 -1
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/AUTHORS +1 -0
- data/vendor/libgit2/CMakeLists.txt +141 -289
- data/vendor/libgit2/COPYING +301 -20
- data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
- data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
- data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
- data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
- data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
- data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
- data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
- data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
- data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
- data/vendor/libgit2/cmake/FindHTTP_Parser.cmake +17 -17
- data/vendor/libgit2/cmake/FindIntlIconv.cmake +51 -0
- data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
- data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
- data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
- data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
- data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
- data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
- data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
- data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
- data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
- data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
- data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
- data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
- data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
- data/vendor/libgit2/cmake/SelectHTTPParser.cmake +34 -0
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +129 -101
- data/vendor/libgit2/cmake/SelectHashes.cmake +113 -54
- data/vendor/libgit2/cmake/SelectRegex.cmake +56 -0
- data/vendor/libgit2/cmake/SelectSSH.cmake +46 -0
- data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
- data/vendor/libgit2/cmake/SelectZlib.cmake +38 -0
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
- data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
- data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
- data/vendor/libgit2/deps/llhttp/api.c +510 -0
- data/vendor/libgit2/deps/llhttp/http.c +170 -0
- data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
- data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
- data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +7 -5
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +25 -25
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
- data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
- data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +89 -88
- data/vendor/libgit2/deps/pcre/LICENCE +5 -5
- data/vendor/libgit2/deps/pcre/pcre.h +2 -2
- data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
- data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
- data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
- data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
- data/vendor/libgit2/deps/xdiff/git-xdiff.h +56 -0
- data/vendor/libgit2/{src → deps}/xdiff/xdiff.h +15 -15
- data/vendor/libgit2/{src → deps}/xdiff/xdiffi.c +152 -125
- data/vendor/libgit2/{src → deps}/xdiff/xdiffi.h +2 -4
- data/vendor/libgit2/{src → deps}/xdiff/xemit.c +26 -10
- data/vendor/libgit2/{src → deps}/xdiff/xhistogram.c +92 -94
- data/vendor/libgit2/{src → deps}/xdiff/xinclude.h +1 -12
- data/vendor/libgit2/{src → deps}/xdiff/xmacros.h +18 -1
- data/vendor/libgit2/{src → deps}/xdiff/xmerge.c +126 -137
- data/vendor/libgit2/{src → deps}/xdiff/xpatience.c +26 -46
- data/vendor/libgit2/{src → deps}/xdiff/xprepare.c +24 -46
- data/vendor/libgit2/{src → deps}/xdiff/xutils.c +36 -8
- data/vendor/libgit2/{src → deps}/xdiff/xutils.h +2 -1
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
- data/vendor/libgit2/deps/zlib/LICENSE +22 -0
- data/vendor/libgit2/deps/zlib/adler32.c +7 -22
- data/vendor/libgit2/deps/zlib/crc32.c +931 -317
- data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
- data/vendor/libgit2/deps/zlib/deflate.c +428 -453
- data/vendor/libgit2/deps/zlib/deflate.h +51 -23
- data/vendor/libgit2/deps/zlib/gzguts.h +15 -19
- data/vendor/libgit2/deps/zlib/infback.c +19 -31
- data/vendor/libgit2/deps/zlib/inffast.c +15 -18
- data/vendor/libgit2/deps/zlib/inffast.h +1 -1
- data/vendor/libgit2/deps/zlib/inflate.c +75 -110
- data/vendor/libgit2/deps/zlib/inflate.h +3 -2
- data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
- data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
- data/vendor/libgit2/deps/zlib/trees.c +294 -380
- data/vendor/libgit2/deps/zlib/zconf.h +23 -14
- data/vendor/libgit2/deps/zlib/zlib.h +310 -284
- data/vendor/libgit2/deps/zlib/zutil.c +20 -46
- data/vendor/libgit2/deps/zlib/zutil.h +24 -41
- data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
- data/vendor/libgit2/include/git2/apply.h +43 -8
- data/vendor/libgit2/include/git2/attr.h +28 -6
- data/vendor/libgit2/include/git2/blame.h +137 -29
- data/vendor/libgit2/include/git2/blob.h +85 -29
- data/vendor/libgit2/include/git2/branch.h +25 -16
- data/vendor/libgit2/include/git2/buffer.h +24 -82
- data/vendor/libgit2/include/git2/cert.h +4 -3
- data/vendor/libgit2/include/git2/checkout.h +88 -34
- data/vendor/libgit2/include/git2/cherrypick.h +10 -3
- data/vendor/libgit2/include/git2/clone.h +28 -12
- data/vendor/libgit2/include/git2/commit.h +134 -3
- data/vendor/libgit2/include/git2/common.h +172 -59
- data/vendor/libgit2/include/git2/config.h +118 -32
- data/vendor/libgit2/include/git2/credential.h +32 -3
- data/vendor/libgit2/include/git2/credential_helpers.h +2 -0
- data/vendor/libgit2/include/git2/deprecated.h +141 -3
- data/vendor/libgit2/include/git2/describe.h +20 -3
- data/vendor/libgit2/include/git2/diff.h +95 -19
- data/vendor/libgit2/include/git2/email.h +10 -30
- data/vendor/libgit2/include/git2/errors.h +51 -61
- data/vendor/libgit2/include/git2/experimental.h +20 -0
- data/vendor/libgit2/include/git2/filter.h +21 -9
- data/vendor/libgit2/include/git2/global.h +8 -1
- data/vendor/libgit2/include/git2/graph.h +4 -2
- data/vendor/libgit2/include/git2/ignore.h +11 -1
- data/vendor/libgit2/include/git2/index.h +111 -11
- data/vendor/libgit2/include/git2/indexer.h +67 -2
- data/vendor/libgit2/include/git2/mailmap.h +7 -1
- data/vendor/libgit2/include/git2/merge.h +70 -5
- data/vendor/libgit2/include/git2/message.h +4 -2
- data/vendor/libgit2/include/git2/net.h +3 -1
- data/vendor/libgit2/include/git2/notes.h +9 -6
- data/vendor/libgit2/include/git2/object.h +57 -7
- data/vendor/libgit2/include/git2/odb.h +156 -33
- data/vendor/libgit2/include/git2/odb_backend.h +132 -16
- data/vendor/libgit2/include/git2/oid.h +116 -17
- data/vendor/libgit2/include/git2/oidarray.h +7 -1
- data/vendor/libgit2/include/git2/pack.h +37 -9
- data/vendor/libgit2/include/git2/patch.h +10 -3
- data/vendor/libgit2/include/git2/pathspec.h +10 -1
- data/vendor/libgit2/include/git2/proxy.h +11 -1
- data/vendor/libgit2/include/git2/rebase.h +18 -7
- data/vendor/libgit2/include/git2/refdb.h +5 -2
- data/vendor/libgit2/include/git2/reflog.h +4 -3
- data/vendor/libgit2/include/git2/refs.h +11 -8
- data/vendor/libgit2/include/git2/refspec.h +14 -4
- data/vendor/libgit2/include/git2/remote.h +295 -54
- data/vendor/libgit2/include/git2/repository.h +95 -25
- data/vendor/libgit2/include/git2/reset.h +18 -5
- data/vendor/libgit2/include/git2/revert.h +9 -4
- data/vendor/libgit2/include/git2/revparse.h +4 -4
- data/vendor/libgit2/include/git2/revwalk.h +7 -3
- data/vendor/libgit2/include/git2/signature.h +47 -2
- data/vendor/libgit2/include/git2/stash.h +78 -10
- data/vendor/libgit2/include/git2/status.h +24 -11
- data/vendor/libgit2/include/git2/stdint.h +87 -85
- data/vendor/libgit2/include/git2/strarray.h +2 -16
- data/vendor/libgit2/include/git2/submodule.h +27 -11
- data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
- data/vendor/libgit2/include/git2/sys/commit.h +77 -3
- data/vendor/libgit2/include/git2/sys/commit_graph.h +110 -59
- data/vendor/libgit2/include/git2/sys/config.h +80 -4
- data/vendor/libgit2/include/git2/sys/credential.h +4 -3
- data/vendor/libgit2/include/git2/sys/diff.h +21 -1
- data/vendor/libgit2/include/git2/sys/email.h +7 -0
- data/vendor/libgit2/include/git2/sys/errors.h +76 -0
- data/vendor/libgit2/include/git2/sys/filter.h +66 -3
- data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
- data/vendor/libgit2/include/git2/sys/index.h +3 -2
- data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
- data/vendor/libgit2/include/git2/sys/merge.h +55 -7
- data/vendor/libgit2/include/git2/sys/midx.h +47 -4
- data/vendor/libgit2/include/git2/sys/odb_backend.h +10 -9
- data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
- data/vendor/libgit2/include/git2/sys/path.h +12 -1
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
- data/vendor/libgit2/include/git2/sys/refs.h +3 -2
- data/vendor/libgit2/include/git2/sys/remote.h +53 -0
- data/vendor/libgit2/include/git2/sys/repository.h +63 -3
- data/vendor/libgit2/include/git2/sys/stream.h +26 -3
- data/vendor/libgit2/include/git2/sys/transport.h +87 -41
- data/vendor/libgit2/include/git2/tag.h +4 -1
- data/vendor/libgit2/include/git2/trace.h +9 -3
- data/vendor/libgit2/include/git2/transaction.h +3 -2
- data/vendor/libgit2/include/git2/transport.h +11 -3
- data/vendor/libgit2/include/git2/tree.h +20 -8
- data/vendor/libgit2/include/git2/types.h +26 -10
- data/vendor/libgit2/include/git2/version.h +63 -6
- data/vendor/libgit2/include/git2/worktree.h +30 -8
- data/vendor/libgit2/include/git2.h +1 -0
- data/vendor/libgit2/src/CMakeLists.txt +203 -420
- data/vendor/libgit2/src/README.md +12 -0
- data/vendor/libgit2/src/cli/CMakeLists.txt +56 -0
- data/vendor/libgit2/src/cli/README.md +26 -0
- data/vendor/libgit2/src/{branch.h → cli/cmd.c} +10 -8
- data/vendor/libgit2/src/cli/cmd.h +37 -0
- data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
- data/vendor/libgit2/src/cli/cmd_cat_file.c +202 -0
- data/vendor/libgit2/src/cli/cmd_clone.c +190 -0
- data/vendor/libgit2/src/cli/cmd_config.c +241 -0
- data/vendor/libgit2/src/cli/cmd_hash_object.c +152 -0
- data/vendor/libgit2/src/cli/cmd_help.c +85 -0
- data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
- data/vendor/libgit2/src/cli/cmd_init.c +102 -0
- data/vendor/libgit2/src/cli/common.c +168 -0
- data/vendor/libgit2/src/cli/common.h +63 -0
- data/vendor/libgit2/src/cli/error.h +51 -0
- data/vendor/libgit2/src/cli/main.c +134 -0
- data/vendor/libgit2/src/cli/opt.c +695 -0
- data/vendor/libgit2/src/cli/opt.h +367 -0
- data/vendor/libgit2/src/cli/opt_usage.c +263 -0
- data/vendor/libgit2/src/cli/opt_usage.h +40 -0
- data/vendor/libgit2/src/cli/progress.c +395 -0
- data/vendor/libgit2/src/cli/progress.h +129 -0
- data/vendor/libgit2/src/cli/sighandler.h +20 -0
- data/vendor/libgit2/src/cli/unix/sighandler.c +37 -0
- data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
- data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
- data/vendor/libgit2/src/libgit2/CMakeLists.txt +140 -0
- data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +2 -2
- data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
- data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +32 -34
- data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
- data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +48 -31
- data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +25 -20
- data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +6 -4
- data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +87 -46
- data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +5 -9
- data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +152 -57
- data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +1 -0
- data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -2
- data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
- data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
- data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
- data/vendor/libgit2/src/libgit2/branch.h +31 -0
- data/vendor/libgit2/src/libgit2/buf.c +126 -0
- data/vendor/libgit2/src/libgit2/buf.h +50 -0
- data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +22 -17
- data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +7 -9
- data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +107 -91
- data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -2
- data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +14 -15
- data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +254 -203
- data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +4 -1
- data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +296 -77
- data/vendor/libgit2/src/libgit2/commit.h +87 -0
- data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +246 -135
- data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +33 -8
- data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +17 -7
- data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +1 -0
- data/vendor/libgit2/src/libgit2/common.h +55 -0
- data/vendor/libgit2/src/{config.c → libgit2/config.c} +490 -360
- data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
- data/vendor/libgit2/src/{config.h → libgit2/config.h} +24 -6
- data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +8 -10
- data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +4 -5
- data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +212 -183
- data/vendor/libgit2/src/libgit2/config_list.c +285 -0
- data/vendor/libgit2/src/libgit2/config_list.h +32 -0
- data/vendor/libgit2/src/libgit2/config_mem.c +374 -0
- data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +37 -32
- data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +24 -31
- data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
- data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +62 -51
- data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +44 -14
- data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +8 -10
- data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +46 -55
- data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +5 -5
- data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +45 -27
- data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +70 -20
- data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
- data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +22 -6
- data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +192 -105
- data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
- data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
- data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +49 -16
- data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
- data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +1 -1
- data/vendor/libgit2/src/{email.c → libgit2/email.c} +58 -40
- data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
- data/vendor/libgit2/src/{transports/ssh.h → libgit2/experimental.h.in} +3 -4
- data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +105 -30
- data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -3
- data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +30 -28
- data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +132 -58
- data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
- data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +3 -3
- data/vendor/libgit2/src/libgit2/grafts.c +270 -0
- data/vendor/libgit2/src/libgit2/grafts.h +35 -0
- data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +1 -1
- data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
- data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
- data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +44 -39
- data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
- data/vendor/libgit2/src/{index.c → libgit2/index.c} +460 -276
- data/vendor/libgit2/src/{index.h → libgit2/index.h} +21 -5
- data/vendor/libgit2/src/libgit2/index_map.c +95 -0
- data/vendor/libgit2/src/libgit2/index_map.h +28 -0
- data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +208 -124
- data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +102 -71
- data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +8 -5
- data/vendor/libgit2/src/libgit2/libgit2.c +268 -0
- data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +39 -37
- data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +83 -73
- data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
- data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +4 -4
- data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -5
- data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
- data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +174 -112
- data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +17 -6
- data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +53 -57
- data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +9 -2
- data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +29 -37
- data/vendor/libgit2/src/{object.c → libgit2/object.c} +166 -35
- data/vendor/libgit2/src/{object.h → libgit2/object.h} +17 -2
- data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +261 -88
- data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
- data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
- data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +67 -22
- data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +162 -89
- data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +171 -92
- data/vendor/libgit2/src/libgit2/oid.h +284 -0
- data/vendor/libgit2/src/libgit2/oidarray.c +89 -0
- data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +5 -1
- data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +126 -66
- data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +28 -12
- data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +146 -111
- data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +45 -25
- data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +8 -4
- data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +1 -1
- data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
- data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +8 -1
- data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +51 -16
- data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
- data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +42 -34
- data/vendor/libgit2/src/libgit2/path.c +375 -0
- data/vendor/libgit2/src/libgit2/path.h +68 -0
- data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +7 -7
- data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
- data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
- data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
- data/vendor/libgit2/src/{push.c → libgit2/push.c} +116 -60
- data/vendor/libgit2/src/{push.h → libgit2/push.h} +5 -16
- data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
- data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
- data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +147 -147
- data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +639 -254
- data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +8 -7
- data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +3 -2
- data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +67 -39
- data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +8 -3
- data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +60 -38
- data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +13 -2
- data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +821 -454
- data/vendor/libgit2/src/libgit2/remote.h +101 -0
- data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +1377 -594
- data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +43 -12
- data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
- data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +18 -22
- data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +76 -44
- data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +48 -19
- data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +3 -3
- data/vendor/libgit2/src/{libgit2.c → libgit2/settings.c} +162 -95
- data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +6 -2
- data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +144 -21
- data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -2
- data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +243 -68
- data/vendor/libgit2/src/{status.c → libgit2/status.c} +5 -2
- data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
- data/vendor/libgit2/src/libgit2/strarray.h +25 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +62 -67
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +41 -24
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +2 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +11 -3
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +6 -3
- data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
- data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
- data/vendor/libgit2/src/libgit2/streams/socket.c +428 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +3 -1
- data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +79 -19
- data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +5 -0
- data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +279 -220
- data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +10 -11
- data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
- data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +55 -18
- data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +74 -43
- data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
- data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
- data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
- data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +7 -7
- data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +27 -21
- data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +4 -1
- data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +14 -11
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +3 -5
- data/vendor/libgit2/src/{transports/auth_negotiate.c → libgit2/transports/auth_gssapi.c} +44 -45
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +1 -1
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +1 -2
- data/vendor/libgit2/src/{transports/auth_ntlm.c → libgit2/transports/auth_ntlmclient.c} +22 -22
- data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +1 -1
- data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +16 -19
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +49 -24
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -11
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +188 -134
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
- data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
- data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +159 -127
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +142 -165
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +56 -36
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +307 -74
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +297 -97
- data/vendor/libgit2/src/libgit2/transports/ssh.c +85 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
- data/vendor/libgit2/src/{transports/ssh.c → libgit2/transports/ssh_libssh2.c} +414 -268
- data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +101 -75
- data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +30 -20
- data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +7 -5
- data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +128 -110
- data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +7 -6
- data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +160 -121
- data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
- data/vendor/libgit2/src/util/CMakeLists.txt +77 -0
- data/vendor/libgit2/src/{alloc.c → util/alloc.c} +69 -7
- data/vendor/libgit2/src/util/alloc.h +65 -0
- data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
- data/vendor/libgit2/src/util/allocators/debugalloc.h +17 -0
- data/vendor/libgit2/src/util/allocators/failalloc.c +32 -0
- data/vendor/libgit2/src/util/allocators/failalloc.h +17 -0
- data/vendor/libgit2/src/util/allocators/stdalloc.c +37 -0
- data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
- data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +50 -0
- data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{array.h → util/array.h} +25 -19
- data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
- data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +5 -1
- data/vendor/libgit2/src/util/ctype_compat.h +70 -0
- data/vendor/libgit2/src/{date.c → util/date.c} +35 -33
- data/vendor/libgit2/src/util/date.h +45 -0
- data/vendor/libgit2/src/util/errors.c +401 -0
- data/vendor/libgit2/src/{errors.h → util/errors.h} +22 -19
- data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +35 -30
- data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +21 -8
- data/vendor/libgit2/src/{path.c → util/fs_path.c} +591 -615
- data/vendor/libgit2/src/{path.h → util/fs_path.h} +257 -181
- data/vendor/libgit2/src/{futils.c → util/futils.c} +144 -95
- data/vendor/libgit2/src/{futils.h → util/futils.h} +40 -18
- data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +33 -2
- data/vendor/libgit2/src/{common.h → util/git2_util.h} +26 -59
- data/vendor/libgit2/src/util/hash/builtin.c +53 -0
- data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
- data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
- data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
- data/vendor/libgit2/src/util/hash/openssl.c +347 -0
- data/vendor/libgit2/src/util/hash/openssl.h +61 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
- data/vendor/libgit2/src/util/hash/sha.h +73 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
- data/vendor/libgit2/src/util/hash/win32.c +549 -0
- data/vendor/libgit2/src/util/hash/win32.h +60 -0
- data/vendor/libgit2/src/util/hash.c +158 -0
- data/vendor/libgit2/src/util/hash.h +61 -0
- data/vendor/libgit2/src/util/hashmap.h +424 -0
- data/vendor/libgit2/src/util/hashmap_str.h +43 -0
- data/vendor/libgit2/src/{integer.h → util/integer.h} +3 -1
- data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
- data/vendor/libgit2/src/util/net.c +1160 -0
- data/vendor/libgit2/src/{net.h → util/net.h} +45 -4
- data/vendor/libgit2/src/{pool.c → util/pool.c} +1 -1
- data/vendor/libgit2/src/{pool.h → util/pool.h} +6 -1
- data/vendor/libgit2/src/{posix.c → util/posix.c} +57 -3
- data/vendor/libgit2/src/{posix.h → util/posix.h} +26 -1
- data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +3 -3
- data/vendor/libgit2/src/util/process.h +222 -0
- data/vendor/libgit2/src/util/rand.c +230 -0
- data/vendor/libgit2/src/util/rand.h +37 -0
- data/vendor/libgit2/src/{regexp.c → util/regexp.c} +5 -5
- data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
- data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
- data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
- data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +15 -14
- data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +5 -5
- data/vendor/libgit2/src/util/staticstr.h +66 -0
- data/vendor/libgit2/src/{buffer.c → util/str.c} +159 -153
- data/vendor/libgit2/src/util/str.h +357 -0
- data/vendor/libgit2/src/util/strlist.c +108 -0
- data/vendor/libgit2/src/util/strlist.h +36 -0
- data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
- data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
- data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
- data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
- data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -6
- data/vendor/libgit2/src/util/unix/process.c +629 -0
- data/vendor/libgit2/src/{unix → util/unix}/realpath.c +24 -8
- data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
- data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
- data/vendor/libgit2/src/{util.c → util/util.c} +24 -19
- data/vendor/libgit2/src/{util.h → util/util.h} +30 -81
- data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
- data/vendor/libgit2/src/{vector.c → util/vector.c} +3 -3
- data/vendor/libgit2/src/{vector.h → util/vector.h} +4 -4
- data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/error.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +148 -17
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
- data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
- data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +42 -35
- data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
- data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
- data/vendor/libgit2/src/util/win32/process.c +506 -0
- data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
- data/vendor/libgit2/src/util/win32/utf-conv.c +144 -0
- data/vendor/libgit2/src/util/win32/utf-conv.h +127 -0
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
- data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
- data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
- metadata +431 -362
- data/vendor/libgit2/cmake/FindIconv.cmake +0 -45
- data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
- data/vendor/libgit2/deps/http-parser/COPYING +0 -23
- data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
- data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
- data/vendor/libgit2/deps/zlib/COPYING +0 -27
- data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
- data/vendor/libgit2/src/alloc.h +0 -40
- data/vendor/libgit2/src/allocators/failalloc.c +0 -92
- data/vendor/libgit2/src/allocators/failalloc.h +0 -23
- data/vendor/libgit2/src/allocators/stdalloc.c +0 -150
- data/vendor/libgit2/src/allocators/win32_leakcheck.c +0 -118
- data/vendor/libgit2/src/buffer.h +0 -374
- data/vendor/libgit2/src/commit.h +0 -46
- data/vendor/libgit2/src/config_entries.c +0 -237
- data/vendor/libgit2/src/config_entries.h +0 -24
- data/vendor/libgit2/src/config_mem.c +0 -220
- data/vendor/libgit2/src/errors.c +0 -238
- data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
- data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
- data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
- data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
- data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
- data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
- data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
- data/vendor/libgit2/src/hash/sha1.h +0 -38
- data/vendor/libgit2/src/hash.c +0 -110
- data/vendor/libgit2/src/hash.h +0 -46
- data/vendor/libgit2/src/idxmap.c +0 -157
- data/vendor/libgit2/src/idxmap.h +0 -177
- data/vendor/libgit2/src/khash.h +0 -615
- data/vendor/libgit2/src/libgit2.h +0 -15
- data/vendor/libgit2/src/message.h +0 -17
- data/vendor/libgit2/src/net.c +0 -540
- data/vendor/libgit2/src/netops.c +0 -125
- data/vendor/libgit2/src/netops.h +0 -68
- data/vendor/libgit2/src/offmap.c +0 -101
- data/vendor/libgit2/src/offmap.h +0 -133
- data/vendor/libgit2/src/oid.h +0 -51
- data/vendor/libgit2/src/oidarray.c +0 -43
- data/vendor/libgit2/src/oidmap.c +0 -107
- data/vendor/libgit2/src/oidmap.h +0 -128
- data/vendor/libgit2/src/remote.h +0 -55
- data/vendor/libgit2/src/streams/socket.c +0 -239
- data/vendor/libgit2/src/strmap.c +0 -100
- data/vendor/libgit2/src/strmap.h +0 -131
- data/vendor/libgit2/src/sysdir.c +0 -347
- data/vendor/libgit2/src/threadstate.c +0 -84
- data/vendor/libgit2/src/threadstate.h +0 -24
- data/vendor/libgit2/src/win32/findfile.c +0 -230
- data/vendor/libgit2/src/win32/findfile.h +0 -19
- data/vendor/libgit2/src/win32/utf-conv.c +0 -146
- data/vendor/libgit2/src/win32/utf-conv.h +0 -60
- /data/vendor/libgit2/{src → deps}/xdiff/xemit.h +0 -0
- /data/vendor/libgit2/{src → deps}/xdiff/xprepare.h +0 -0
- /data/vendor/libgit2/{src → deps}/xdiff/xtypes.h +0 -0
- /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
- /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
- /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
- /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
- /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
- /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
- /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
- /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
- /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
- /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
- /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
- /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
- /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
- /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
- /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
- /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
- /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
- /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
- /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
- /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
- /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
- /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
- /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
- /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
- /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
- /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
- /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
- /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
- /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
@@ -16,14 +16,14 @@
|
|
16
16
|
#include "git2/commit.h"
|
17
17
|
#include "git2/tree.h"
|
18
18
|
|
19
|
+
#include "checkout.h"
|
19
20
|
#include "remote.h"
|
20
21
|
#include "futils.h"
|
21
22
|
#include "refs.h"
|
22
|
-
#include "
|
23
|
+
#include "fs_path.h"
|
23
24
|
#include "repository.h"
|
24
25
|
#include "odb.h"
|
25
|
-
|
26
|
-
static int clone_local_into(git_repository *repo, git_remote *remote, const git_fetch_options *fetch_opts, const git_checkout_options *co_opts, const char *branch, int link);
|
26
|
+
#include "net.h"
|
27
27
|
|
28
28
|
static int create_branch(
|
29
29
|
git_reference **branch,
|
@@ -34,7 +34,7 @@ static int create_branch(
|
|
34
34
|
{
|
35
35
|
git_commit *head_obj = NULL;
|
36
36
|
git_reference *branch_ref = NULL;
|
37
|
-
|
37
|
+
git_str refname = GIT_STR_INIT;
|
38
38
|
int error;
|
39
39
|
|
40
40
|
/* Find the target commit */
|
@@ -42,11 +42,11 @@ static int create_branch(
|
|
42
42
|
return error;
|
43
43
|
|
44
44
|
/* Create the new branch */
|
45
|
-
if ((error =
|
45
|
+
if ((error = git_str_printf(&refname, GIT_REFS_HEADS_DIR "%s", name)) < 0)
|
46
46
|
return error;
|
47
47
|
|
48
|
-
error = git_reference_create(&branch_ref, repo,
|
49
|
-
|
48
|
+
error = git_reference_create(&branch_ref, repo, git_str_cstr(&refname), target, 0, log_message);
|
49
|
+
git_str_dispose(&refname);
|
50
50
|
git_commit_free(head_obj);
|
51
51
|
|
52
52
|
if (!error)
|
@@ -64,29 +64,29 @@ static int setup_tracking_config(
|
|
64
64
|
const char *merge_target)
|
65
65
|
{
|
66
66
|
git_config *cfg;
|
67
|
-
|
67
|
+
git_str remote_key = GIT_STR_INIT, merge_key = GIT_STR_INIT;
|
68
68
|
int error = -1;
|
69
69
|
|
70
70
|
if (git_repository_config__weakptr(&cfg, repo) < 0)
|
71
71
|
return -1;
|
72
72
|
|
73
|
-
if (
|
73
|
+
if (git_str_printf(&remote_key, "branch.%s.remote", branch_name) < 0)
|
74
74
|
goto cleanup;
|
75
75
|
|
76
|
-
if (
|
76
|
+
if (git_str_printf(&merge_key, "branch.%s.merge", branch_name) < 0)
|
77
77
|
goto cleanup;
|
78
78
|
|
79
|
-
if (git_config_set_string(cfg,
|
79
|
+
if (git_config_set_string(cfg, git_str_cstr(&remote_key), remote_name) < 0)
|
80
80
|
goto cleanup;
|
81
81
|
|
82
|
-
if (git_config_set_string(cfg,
|
82
|
+
if (git_config_set_string(cfg, git_str_cstr(&merge_key), merge_target) < 0)
|
83
83
|
goto cleanup;
|
84
84
|
|
85
85
|
error = 0;
|
86
86
|
|
87
87
|
cleanup:
|
88
|
-
|
89
|
-
|
88
|
+
git_str_dispose(&remote_key);
|
89
|
+
git_str_dispose(&merge_key);
|
90
90
|
return error;
|
91
91
|
}
|
92
92
|
|
@@ -139,7 +139,7 @@ static int update_head_to_new_branch(
|
|
139
139
|
|
140
140
|
static int update_head_to_default(git_repository *repo)
|
141
141
|
{
|
142
|
-
|
142
|
+
git_str initialbranch = GIT_STR_INIT;
|
143
143
|
const char *branch_name;
|
144
144
|
int error = 0;
|
145
145
|
|
@@ -158,24 +158,24 @@ static int update_head_to_default(git_repository *repo)
|
|
158
158
|
initialbranch.ptr);
|
159
159
|
|
160
160
|
done:
|
161
|
-
|
161
|
+
git_str_dispose(&initialbranch);
|
162
162
|
return error;
|
163
163
|
}
|
164
164
|
|
165
165
|
static int update_remote_head(
|
166
166
|
git_repository *repo,
|
167
167
|
git_remote *remote,
|
168
|
-
|
168
|
+
git_str *target,
|
169
169
|
const char *reflog_message)
|
170
170
|
{
|
171
171
|
git_refspec *refspec;
|
172
172
|
git_reference *remote_head = NULL;
|
173
|
-
|
174
|
-
|
173
|
+
git_str remote_head_name = GIT_STR_INIT;
|
174
|
+
git_str remote_branch_name = GIT_STR_INIT;
|
175
175
|
int error;
|
176
176
|
|
177
177
|
/* Determine the remote tracking ref name from the local branch */
|
178
|
-
refspec = git_remote__matching_refspec(remote,
|
178
|
+
refspec = git_remote__matching_refspec(remote, git_str_cstr(target));
|
179
179
|
|
180
180
|
if (refspec == NULL) {
|
181
181
|
git_error_set(GIT_ERROR_NET, "the remote's default branch does not fit the refspec configuration");
|
@@ -183,13 +183,13 @@ static int update_remote_head(
|
|
183
183
|
goto cleanup;
|
184
184
|
}
|
185
185
|
|
186
|
-
if ((error =
|
186
|
+
if ((error = git_refspec__transform(
|
187
187
|
&remote_branch_name,
|
188
188
|
refspec,
|
189
|
-
|
189
|
+
git_str_cstr(target))) < 0)
|
190
190
|
goto cleanup;
|
191
191
|
|
192
|
-
if ((error =
|
192
|
+
if ((error = git_str_printf(&remote_head_name,
|
193
193
|
"%s%s/%s",
|
194
194
|
GIT_REFS_REMOTES_DIR,
|
195
195
|
git_remote_name(remote),
|
@@ -199,15 +199,15 @@ static int update_remote_head(
|
|
199
199
|
error = git_reference_symbolic_create(
|
200
200
|
&remote_head,
|
201
201
|
repo,
|
202
|
-
|
203
|
-
|
202
|
+
git_str_cstr(&remote_head_name),
|
203
|
+
git_str_cstr(&remote_branch_name),
|
204
204
|
true,
|
205
205
|
reflog_message);
|
206
206
|
|
207
207
|
cleanup:
|
208
208
|
git_reference_free(remote_head);
|
209
|
-
|
210
|
-
|
209
|
+
git_str_dispose(&remote_branch_name);
|
210
|
+
git_str_dispose(&remote_head_name);
|
211
211
|
return error;
|
212
212
|
}
|
213
213
|
|
@@ -220,7 +220,7 @@ static int update_head_to_remote(
|
|
220
220
|
size_t refs_len;
|
221
221
|
const git_remote_head *remote_head, **refs;
|
222
222
|
const git_oid *remote_head_id;
|
223
|
-
|
223
|
+
git_str branch = GIT_STR_INIT;
|
224
224
|
|
225
225
|
if ((error = git_remote_ls(&refs, &refs_len, remote)) < 0)
|
226
226
|
return error;
|
@@ -235,7 +235,7 @@ static int update_head_to_remote(
|
|
235
235
|
|
236
236
|
remote_head_id = &remote_head->oid;
|
237
237
|
|
238
|
-
error =
|
238
|
+
error = git_remote__default_branch(&branch, remote);
|
239
239
|
if (error == GIT_ENOTFOUND) {
|
240
240
|
error = git_repository_set_head_detached(
|
241
241
|
repo, remote_head_id);
|
@@ -248,11 +248,11 @@ static int update_head_to_remote(
|
|
248
248
|
error = update_head_to_new_branch(
|
249
249
|
repo,
|
250
250
|
remote_head_id,
|
251
|
-
|
251
|
+
git_str_cstr(&branch),
|
252
252
|
reflog_message);
|
253
253
|
|
254
254
|
cleanup:
|
255
|
-
|
255
|
+
git_str_dispose(&branch);
|
256
256
|
|
257
257
|
return error;
|
258
258
|
}
|
@@ -264,36 +264,40 @@ static int update_head_to_branch(
|
|
264
264
|
const char *reflog_message)
|
265
265
|
{
|
266
266
|
int retcode;
|
267
|
-
|
267
|
+
git_str remote_branch_name = GIT_STR_INIT;
|
268
268
|
git_reference *remote_ref = NULL;
|
269
|
-
|
269
|
+
git_str default_branch = GIT_STR_INIT;
|
270
270
|
|
271
271
|
GIT_ASSERT_ARG(remote);
|
272
272
|
GIT_ASSERT_ARG(branch);
|
273
273
|
|
274
|
-
if ((retcode =
|
274
|
+
if ((retcode = git_str_printf(&remote_branch_name, GIT_REFS_REMOTES_DIR "%s/%s",
|
275
275
|
git_remote_name(remote), branch)) < 0 )
|
276
276
|
goto cleanup;
|
277
277
|
|
278
|
-
if ((retcode = git_reference_lookup(&remote_ref, repo,
|
278
|
+
if ((retcode = git_reference_lookup(&remote_ref, repo, git_str_cstr(&remote_branch_name))) < 0)
|
279
279
|
goto cleanup;
|
280
280
|
|
281
281
|
if ((retcode = update_head_to_new_branch(repo, git_reference_target(remote_ref), branch,
|
282
282
|
reflog_message)) < 0)
|
283
283
|
goto cleanup;
|
284
284
|
|
285
|
-
|
285
|
+
retcode = git_remote__default_branch(&default_branch, remote);
|
286
|
+
|
287
|
+
if (retcode == GIT_ENOTFOUND)
|
288
|
+
retcode = 0;
|
289
|
+
else if (retcode)
|
286
290
|
goto cleanup;
|
287
291
|
|
288
|
-
if (!git_remote__matching_refspec(remote,
|
292
|
+
if (!git_remote__matching_refspec(remote, git_str_cstr(&default_branch)))
|
289
293
|
goto cleanup;
|
290
294
|
|
291
295
|
retcode = update_remote_head(repo, remote, &default_branch, reflog_message);
|
292
296
|
|
293
297
|
cleanup:
|
294
298
|
git_reference_free(remote_ref);
|
295
|
-
|
296
|
-
|
299
|
+
git_str_dispose(&remote_branch_name);
|
300
|
+
git_str_dispose(&default_branch);
|
297
301
|
return retcode;
|
298
302
|
}
|
299
303
|
|
@@ -332,8 +336,9 @@ static int create_and_configure_origin(
|
|
332
336
|
git_remote_create_cb remote_create = options->remote_cb;
|
333
337
|
void *payload = options->remote_cb_payload;
|
334
338
|
|
335
|
-
/* If the path
|
336
|
-
if (
|
339
|
+
/* If the path is local and exists it should be the absolute path. */
|
340
|
+
if (!git_net_str_is_url(url) && git_fs_path_root(url) < 0 &&
|
341
|
+
git_fs_path_exists(url)) {
|
337
342
|
if (p_realpath(url, buf) == NULL)
|
338
343
|
return -1;
|
339
344
|
|
@@ -356,45 +361,64 @@ on_error:
|
|
356
361
|
return error;
|
357
362
|
}
|
358
363
|
|
359
|
-
static
|
364
|
+
static int should_checkout(
|
365
|
+
bool *out,
|
360
366
|
git_repository *repo,
|
361
367
|
bool is_bare,
|
362
|
-
const
|
368
|
+
const git_clone_options *opts)
|
363
369
|
{
|
364
|
-
|
365
|
-
return false;
|
370
|
+
int error;
|
366
371
|
|
367
|
-
if (!opts
|
368
|
-
|
372
|
+
if (!opts || is_bare ||
|
373
|
+
opts->checkout_opts.checkout_strategy == GIT_CHECKOUT_NONE) {
|
374
|
+
*out = false;
|
375
|
+
return 0;
|
376
|
+
}
|
369
377
|
|
370
|
-
if (
|
371
|
-
return
|
378
|
+
if ((error = git_repository_head_unborn(repo)) < 0)
|
379
|
+
return error;
|
372
380
|
|
373
|
-
|
381
|
+
*out = !error;
|
382
|
+
return 0;
|
374
383
|
}
|
375
384
|
|
376
|
-
static int checkout_branch(
|
385
|
+
static int checkout_branch(
|
386
|
+
git_repository *repo,
|
387
|
+
git_remote *remote,
|
388
|
+
const git_clone_options *opts,
|
389
|
+
const char *reflog_message)
|
377
390
|
{
|
391
|
+
bool checkout;
|
378
392
|
int error;
|
379
393
|
|
380
|
-
if (
|
381
|
-
error = update_head_to_branch(repo, remote,
|
394
|
+
if (opts->checkout_branch)
|
395
|
+
error = update_head_to_branch(repo, remote, opts->checkout_branch, reflog_message);
|
382
396
|
/* Point HEAD to the same ref as the remote's head */
|
383
397
|
else
|
384
398
|
error = update_head_to_remote(repo, remote, reflog_message);
|
385
399
|
|
386
|
-
if (
|
387
|
-
error
|
400
|
+
if (error < 0)
|
401
|
+
return error;
|
402
|
+
|
403
|
+
if ((error = should_checkout(&checkout, repo, git_repository_is_bare(repo), opts)) < 0)
|
404
|
+
return error;
|
405
|
+
|
406
|
+
if (checkout)
|
407
|
+
error = git_checkout_head(repo, &opts->checkout_opts);
|
388
408
|
|
389
409
|
return error;
|
390
410
|
}
|
391
411
|
|
392
|
-
static int clone_into(
|
412
|
+
static int clone_into(
|
413
|
+
git_repository *repo,
|
414
|
+
git_remote *_remote,
|
415
|
+
const git_clone_options *opts)
|
393
416
|
{
|
394
|
-
|
395
|
-
|
396
|
-
git_fetch_options fetch_opts;
|
417
|
+
git_str reflog_message = GIT_STR_INIT;
|
418
|
+
git_remote_connect_options connect_opts = GIT_REMOTE_CONNECT_OPTIONS_INIT;
|
397
419
|
git_remote *remote;
|
420
|
+
git_oid_t oid_type;
|
421
|
+
int error;
|
398
422
|
|
399
423
|
GIT_ASSERT_ARG(repo);
|
400
424
|
GIT_ASSERT_ARG(_remote);
|
@@ -407,54 +431,173 @@ static int clone_into(git_repository *repo, git_remote *_remote, const git_fetch
|
|
407
431
|
if ((error = git_remote_dup(&remote, _remote)) < 0)
|
408
432
|
return error;
|
409
433
|
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
434
|
+
if ((error = git_remote_connect_options__from_fetch_opts(&connect_opts, remote, &opts->fetch_opts)) < 0)
|
435
|
+
goto cleanup;
|
436
|
+
|
437
|
+
git_str_printf(&reflog_message, "clone: from %s", git_remote_url(remote));
|
438
|
+
|
439
|
+
/*
|
440
|
+
* Connect to the server so that we can identify the remote
|
441
|
+
* object format.
|
442
|
+
*/
|
414
443
|
|
415
|
-
if ((error =
|
444
|
+
if ((error = git_remote_connect_ext(remote, GIT_DIRECTION_FETCH,
|
445
|
+
&connect_opts)) < 0)
|
416
446
|
goto cleanup;
|
417
447
|
|
418
|
-
error =
|
448
|
+
if ((error = git_remote_oid_type(&oid_type, remote)) < 0 ||
|
449
|
+
(error = git_repository__set_objectformat(repo, oid_type)) < 0)
|
450
|
+
goto cleanup;
|
451
|
+
|
452
|
+
if ((error = git_remote_fetch(remote, NULL, &opts->fetch_opts, git_str_cstr(&reflog_message))) != 0)
|
453
|
+
goto cleanup;
|
454
|
+
|
455
|
+
error = checkout_branch(repo, remote, opts, git_str_cstr(&reflog_message));
|
419
456
|
|
420
457
|
cleanup:
|
421
458
|
git_remote_free(remote);
|
422
|
-
|
459
|
+
git_remote_connect_options_dispose(&connect_opts);
|
460
|
+
git_str_dispose(&reflog_message);
|
461
|
+
|
462
|
+
return error;
|
463
|
+
}
|
464
|
+
|
465
|
+
static bool can_link(const char *src, const char *dst, int link)
|
466
|
+
{
|
467
|
+
#ifdef GIT_WIN32
|
468
|
+
GIT_UNUSED(src);
|
469
|
+
GIT_UNUSED(dst);
|
470
|
+
GIT_UNUSED(link);
|
471
|
+
return false;
|
472
|
+
#else
|
473
|
+
|
474
|
+
struct stat st_src, st_dst;
|
475
|
+
|
476
|
+
if (!link)
|
477
|
+
return false;
|
478
|
+
|
479
|
+
if (p_stat(src, &st_src) < 0)
|
480
|
+
return false;
|
481
|
+
|
482
|
+
if (p_stat(dst, &st_dst) < 0)
|
483
|
+
return false;
|
484
|
+
|
485
|
+
return st_src.st_dev == st_dst.st_dev;
|
486
|
+
#endif
|
487
|
+
}
|
488
|
+
|
489
|
+
static int clone_local_into(
|
490
|
+
git_repository *repo,
|
491
|
+
git_remote *remote,
|
492
|
+
const git_clone_options *opts)
|
493
|
+
{
|
494
|
+
int error, flags;
|
495
|
+
git_repository *src;
|
496
|
+
git_str src_odb = GIT_STR_INIT, dst_odb = GIT_STR_INIT, src_path = GIT_STR_INIT;
|
497
|
+
git_str reflog_message = GIT_STR_INIT;
|
498
|
+
bool link = (opts && opts->local != GIT_CLONE_LOCAL_NO_LINKS);
|
499
|
+
|
500
|
+
GIT_ASSERT_ARG(repo);
|
501
|
+
GIT_ASSERT_ARG(remote);
|
502
|
+
|
503
|
+
if (!git_repository_is_empty(repo)) {
|
504
|
+
git_error_set(GIT_ERROR_INVALID, "the repository is not empty");
|
505
|
+
return -1;
|
506
|
+
}
|
507
|
+
|
508
|
+
/*
|
509
|
+
* Let's figure out what path we should use for the source
|
510
|
+
* repo, if it's not rooted, the path should be relative to
|
511
|
+
* the repository's worktree/gitdir.
|
512
|
+
*/
|
513
|
+
if ((error = git_fs_path_from_url_or_path(&src_path, git_remote_url(remote))) < 0)
|
514
|
+
return error;
|
515
|
+
|
516
|
+
/* Copy .git/objects/ from the source to the target */
|
517
|
+
if ((error = git_repository_open(&src, git_str_cstr(&src_path))) < 0) {
|
518
|
+
git_str_dispose(&src_path);
|
519
|
+
return error;
|
520
|
+
}
|
521
|
+
|
522
|
+
if (git_repository__item_path(&src_odb, src, GIT_REPOSITORY_ITEM_OBJECTS) < 0 ||
|
523
|
+
git_repository__item_path(&dst_odb, repo, GIT_REPOSITORY_ITEM_OBJECTS) < 0) {
|
524
|
+
error = -1;
|
525
|
+
goto cleanup;
|
526
|
+
}
|
527
|
+
|
528
|
+
flags = 0;
|
529
|
+
if (can_link(git_repository_path(src), git_repository_path(repo), link))
|
530
|
+
flags |= GIT_CPDIR_LINK_FILES;
|
531
|
+
|
532
|
+
error = git_futils_cp_r(git_str_cstr(&src_odb), git_str_cstr(&dst_odb),
|
533
|
+
flags, GIT_OBJECT_DIR_MODE);
|
534
|
+
|
535
|
+
/*
|
536
|
+
* can_link() doesn't catch all variations, so if we hit an
|
537
|
+
* error and did want to link, let's try again without trying
|
538
|
+
* to link.
|
539
|
+
*/
|
540
|
+
if (error < 0 && link) {
|
541
|
+
flags &= ~GIT_CPDIR_LINK_FILES;
|
542
|
+
error = git_futils_cp_r(git_str_cstr(&src_odb), git_str_cstr(&dst_odb),
|
543
|
+
flags, GIT_OBJECT_DIR_MODE);
|
544
|
+
}
|
545
|
+
|
546
|
+
if (error < 0)
|
547
|
+
goto cleanup;
|
548
|
+
|
549
|
+
git_str_printf(&reflog_message, "clone: from %s", git_remote_url(remote));
|
550
|
+
|
551
|
+
if ((error = git_remote_fetch(remote, NULL, &opts->fetch_opts, git_str_cstr(&reflog_message))) != 0)
|
552
|
+
goto cleanup;
|
423
553
|
|
554
|
+
error = checkout_branch(repo, remote, opts, git_str_cstr(&reflog_message));
|
555
|
+
|
556
|
+
cleanup:
|
557
|
+
git_str_dispose(&reflog_message);
|
558
|
+
git_str_dispose(&src_path);
|
559
|
+
git_str_dispose(&src_odb);
|
560
|
+
git_str_dispose(&dst_odb);
|
561
|
+
git_repository_free(src);
|
424
562
|
return error;
|
425
563
|
}
|
426
564
|
|
427
|
-
int git_clone__should_clone_local(
|
565
|
+
int git_clone__should_clone_local(
|
566
|
+
bool *out,
|
567
|
+
const char *url_or_path,
|
568
|
+
git_clone_local_t local)
|
428
569
|
{
|
429
|
-
|
430
|
-
|
431
|
-
|
570
|
+
git_str fromurl = GIT_STR_INIT;
|
571
|
+
|
572
|
+
*out = false;
|
432
573
|
|
433
574
|
if (local == GIT_CLONE_NO_LOCAL)
|
434
575
|
return 0;
|
435
576
|
|
436
|
-
if ((
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
577
|
+
if (git_net_str_is_url(url_or_path)) {
|
578
|
+
/* If GIT_CLONE_LOCAL_AUTO is specified, any url should
|
579
|
+
* be treated as remote */
|
580
|
+
if (local == GIT_CLONE_LOCAL_AUTO ||
|
581
|
+
!git_fs_path_is_local_file_url(url_or_path))
|
582
|
+
return 0;
|
441
583
|
|
442
|
-
|
443
|
-
|
584
|
+
if (git_fs_path_fromurl(&fromurl, url_or_path) < 0)
|
585
|
+
return -1;
|
444
586
|
|
445
|
-
|
446
|
-
|
587
|
+
*out = git_fs_path_isdir(git_str_cstr(&fromurl));
|
588
|
+
git_str_dispose(&fromurl);
|
589
|
+
} else {
|
590
|
+
*out = git_fs_path_isdir(url_or_path);
|
591
|
+
}
|
447
592
|
|
448
|
-
|
449
|
-
git_buf_dispose(&fromurl);
|
450
|
-
return is_local;
|
593
|
+
return 0;
|
451
594
|
}
|
452
595
|
|
453
|
-
static int
|
596
|
+
static int clone_repo(
|
454
597
|
git_repository **out,
|
455
598
|
const char *url,
|
456
599
|
const char *local_path,
|
457
|
-
const git_clone_options *
|
600
|
+
const git_clone_options *given_opts,
|
458
601
|
int use_existing)
|
459
602
|
{
|
460
603
|
int error = 0;
|
@@ -468,20 +611,26 @@ static int git__clone(
|
|
468
611
|
GIT_ASSERT_ARG(url);
|
469
612
|
GIT_ASSERT_ARG(local_path);
|
470
613
|
|
471
|
-
if (
|
472
|
-
memcpy(&options,
|
614
|
+
if (given_opts)
|
615
|
+
memcpy(&options, given_opts, sizeof(git_clone_options));
|
473
616
|
|
474
617
|
GIT_ERROR_CHECK_VERSION(&options, GIT_CLONE_OPTIONS_VERSION, "git_clone_options");
|
475
618
|
|
619
|
+
/* enforce some behavior on fetch */
|
620
|
+
options.fetch_opts.update_fetchhead = 0;
|
621
|
+
|
622
|
+
if (!options.fetch_opts.depth)
|
623
|
+
options.fetch_opts.download_tags = GIT_REMOTE_DOWNLOAD_TAGS_ALL;
|
624
|
+
|
476
625
|
/* Only clone to a new directory or an empty directory */
|
477
|
-
if (
|
626
|
+
if (git_fs_path_exists(local_path) && !use_existing && !git_fs_path_is_empty_dir(local_path)) {
|
478
627
|
git_error_set(GIT_ERROR_INVALID,
|
479
628
|
"'%s' exists and is not an empty directory", local_path);
|
480
629
|
return GIT_EEXISTS;
|
481
630
|
}
|
482
631
|
|
483
632
|
/* Only remove the root directory on failure if we create it */
|
484
|
-
if (
|
633
|
+
if (git_fs_path_exists(local_path))
|
485
634
|
rmdir_flags |= GIT_RMDIR_SKIP_ROOT;
|
486
635
|
|
487
636
|
if (options.repository_cb)
|
@@ -493,33 +642,31 @@ static int git__clone(
|
|
493
642
|
return error;
|
494
643
|
|
495
644
|
if (!(error = create_and_configure_origin(&origin, repo, url, &options))) {
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
error
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
error =
|
505
|
-
repo, origin, &options.fetch_opts, &options.checkout_opts,
|
506
|
-
options.checkout_branch);
|
645
|
+
bool clone_local;
|
646
|
+
|
647
|
+
if ((error = git_clone__should_clone_local(&clone_local, url, options.local)) < 0) {
|
648
|
+
git_remote_free(origin);
|
649
|
+
return error;
|
650
|
+
}
|
651
|
+
|
652
|
+
if (clone_local)
|
653
|
+
error = clone_local_into(repo, origin, &options);
|
507
654
|
else
|
508
|
-
error =
|
655
|
+
error = clone_into(repo, origin, &options);
|
509
656
|
|
510
657
|
git_remote_free(origin);
|
511
658
|
}
|
512
659
|
|
513
660
|
if (error != 0) {
|
514
|
-
|
515
|
-
|
661
|
+
git_error *last_error;
|
662
|
+
git_error_save(&last_error);
|
516
663
|
|
517
664
|
git_repository_free(repo);
|
518
665
|
repo = NULL;
|
519
666
|
|
520
667
|
(void)git_futils_rmdir_r(local_path, NULL, rmdir_flags);
|
521
668
|
|
522
|
-
|
669
|
+
git_error_restore(last_error);
|
523
670
|
}
|
524
671
|
|
525
672
|
*out = repo;
|
@@ -530,18 +677,18 @@ int git_clone(
|
|
530
677
|
git_repository **out,
|
531
678
|
const char *url,
|
532
679
|
const char *local_path,
|
533
|
-
const git_clone_options *
|
680
|
+
const git_clone_options *options)
|
534
681
|
{
|
535
|
-
return
|
682
|
+
return clone_repo(out, url, local_path, options, 0);
|
536
683
|
}
|
537
684
|
|
538
685
|
int git_clone__submodule(
|
539
686
|
git_repository **out,
|
540
687
|
const char *url,
|
541
688
|
const char *local_path,
|
542
|
-
const git_clone_options *
|
689
|
+
const git_clone_options *options)
|
543
690
|
{
|
544
|
-
return
|
691
|
+
return clone_repo(out, url, local_path, options, 1);
|
545
692
|
}
|
546
693
|
|
547
694
|
int git_clone_options_init(git_clone_options *opts, unsigned int version)
|
@@ -557,99 +704,3 @@ int git_clone_init_options(git_clone_options *opts, unsigned int version)
|
|
557
704
|
return git_clone_options_init(opts, version);
|
558
705
|
}
|
559
706
|
#endif
|
560
|
-
|
561
|
-
static bool can_link(const char *src, const char *dst, int link)
|
562
|
-
{
|
563
|
-
#ifdef GIT_WIN32
|
564
|
-
GIT_UNUSED(src);
|
565
|
-
GIT_UNUSED(dst);
|
566
|
-
GIT_UNUSED(link);
|
567
|
-
return false;
|
568
|
-
#else
|
569
|
-
|
570
|
-
struct stat st_src, st_dst;
|
571
|
-
|
572
|
-
if (!link)
|
573
|
-
return false;
|
574
|
-
|
575
|
-
if (p_stat(src, &st_src) < 0)
|
576
|
-
return false;
|
577
|
-
|
578
|
-
if (p_stat(dst, &st_dst) < 0)
|
579
|
-
return false;
|
580
|
-
|
581
|
-
return st_src.st_dev == st_dst.st_dev;
|
582
|
-
#endif
|
583
|
-
}
|
584
|
-
|
585
|
-
static int clone_local_into(git_repository *repo, git_remote *remote, const git_fetch_options *fetch_opts, const git_checkout_options *co_opts, const char *branch, int link)
|
586
|
-
{
|
587
|
-
int error, flags;
|
588
|
-
git_repository *src;
|
589
|
-
git_buf src_odb = GIT_BUF_INIT, dst_odb = GIT_BUF_INIT, src_path = GIT_BUF_INIT;
|
590
|
-
git_buf reflog_message = GIT_BUF_INIT;
|
591
|
-
|
592
|
-
GIT_ASSERT_ARG(repo);
|
593
|
-
GIT_ASSERT_ARG(remote);
|
594
|
-
|
595
|
-
if (!git_repository_is_empty(repo)) {
|
596
|
-
git_error_set(GIT_ERROR_INVALID, "the repository is not empty");
|
597
|
-
return -1;
|
598
|
-
}
|
599
|
-
|
600
|
-
/*
|
601
|
-
* Let's figure out what path we should use for the source
|
602
|
-
* repo, if it's not rooted, the path should be relative to
|
603
|
-
* the repository's worktree/gitdir.
|
604
|
-
*/
|
605
|
-
if ((error = git_path_from_url_or_path(&src_path, git_remote_url(remote))) < 0)
|
606
|
-
return error;
|
607
|
-
|
608
|
-
/* Copy .git/objects/ from the source to the target */
|
609
|
-
if ((error = git_repository_open(&src, git_buf_cstr(&src_path))) < 0) {
|
610
|
-
git_buf_dispose(&src_path);
|
611
|
-
return error;
|
612
|
-
}
|
613
|
-
|
614
|
-
if (git_repository_item_path(&src_odb, src, GIT_REPOSITORY_ITEM_OBJECTS) < 0
|
615
|
-
|| git_repository_item_path(&dst_odb, repo, GIT_REPOSITORY_ITEM_OBJECTS) < 0) {
|
616
|
-
error = -1;
|
617
|
-
goto cleanup;
|
618
|
-
}
|
619
|
-
|
620
|
-
flags = 0;
|
621
|
-
if (can_link(git_repository_path(src), git_repository_path(repo), link))
|
622
|
-
flags |= GIT_CPDIR_LINK_FILES;
|
623
|
-
|
624
|
-
error = git_futils_cp_r(git_buf_cstr(&src_odb), git_buf_cstr(&dst_odb),
|
625
|
-
flags, GIT_OBJECT_DIR_MODE);
|
626
|
-
|
627
|
-
/*
|
628
|
-
* can_link() doesn't catch all variations, so if we hit an
|
629
|
-
* error and did want to link, let's try again without trying
|
630
|
-
* to link.
|
631
|
-
*/
|
632
|
-
if (error < 0 && link) {
|
633
|
-
flags &= ~GIT_CPDIR_LINK_FILES;
|
634
|
-
error = git_futils_cp_r(git_buf_cstr(&src_odb), git_buf_cstr(&dst_odb),
|
635
|
-
flags, GIT_OBJECT_DIR_MODE);
|
636
|
-
}
|
637
|
-
|
638
|
-
if (error < 0)
|
639
|
-
goto cleanup;
|
640
|
-
|
641
|
-
git_buf_printf(&reflog_message, "clone: from %s", git_remote_url(remote));
|
642
|
-
|
643
|
-
if ((error = git_remote_fetch(remote, NULL, fetch_opts, git_buf_cstr(&reflog_message))) != 0)
|
644
|
-
goto cleanup;
|
645
|
-
|
646
|
-
error = checkout_branch(repo, remote, co_opts, branch, git_buf_cstr(&reflog_message));
|
647
|
-
|
648
|
-
cleanup:
|
649
|
-
git_buf_dispose(&reflog_message);
|
650
|
-
git_buf_dispose(&src_path);
|
651
|
-
git_buf_dispose(&src_odb);
|
652
|
-
git_buf_dispose(&dst_odb);
|
653
|
-
git_repository_free(src);
|
654
|
-
return error;
|
655
|
-
}
|