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
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
#include "array.h"
|
|
20
20
|
#include "cache.h"
|
|
21
21
|
#include "refs.h"
|
|
22
|
-
#include "
|
|
22
|
+
#include "str.h"
|
|
23
23
|
#include "object.h"
|
|
24
24
|
#include "attrcache.h"
|
|
25
25
|
#include "submodule.h"
|
|
@@ -119,14 +119,14 @@ typedef enum {
|
|
|
119
119
|
/* core.fsyncObjectFiles */
|
|
120
120
|
GIT_FSYNCOBJECTFILES_DEFAULT = GIT_CONFIGMAP_FALSE,
|
|
121
121
|
/* core.longpaths */
|
|
122
|
-
GIT_LONGPATHS_DEFAULT = GIT_CONFIGMAP_FALSE
|
|
122
|
+
GIT_LONGPATHS_DEFAULT = GIT_CONFIGMAP_FALSE
|
|
123
123
|
} git_configmap_value;
|
|
124
124
|
|
|
125
125
|
/* internal repository init flags */
|
|
126
126
|
enum {
|
|
127
127
|
GIT_REPOSITORY_INIT__HAS_DOTGIT = (1u << 16),
|
|
128
128
|
GIT_REPOSITORY_INIT__NATURAL_WD = (1u << 17),
|
|
129
|
-
GIT_REPOSITORY_INIT__IS_REINIT = (1u << 18)
|
|
129
|
+
GIT_REPOSITORY_INIT__IS_REINIT = (1u << 18)
|
|
130
130
|
};
|
|
131
131
|
|
|
132
132
|
/** Internal structure for repository object */
|
|
@@ -149,10 +149,11 @@ struct git_repository {
|
|
|
149
149
|
char *ident_name;
|
|
150
150
|
char *ident_email;
|
|
151
151
|
|
|
152
|
-
git_array_t(
|
|
152
|
+
git_array_t(git_str) reserved_names;
|
|
153
153
|
|
|
154
154
|
unsigned is_bare:1;
|
|
155
155
|
unsigned is_worktree:1;
|
|
156
|
+
git_oid_t oid_type;
|
|
156
157
|
|
|
157
158
|
unsigned int lru_counter;
|
|
158
159
|
|
|
@@ -197,6 +198,8 @@ int git_repository_index__weakptr(git_index **out, git_repository *repo);
|
|
|
197
198
|
int git_repository__configmap_lookup(int *out, git_repository *repo, git_configmap_item item);
|
|
198
199
|
void git_repository__configmap_lookup_cache_clear(git_repository *repo);
|
|
199
200
|
|
|
201
|
+
int git_repository__item_path(git_str *out, const git_repository *repo, git_repository_item_t item);
|
|
202
|
+
|
|
200
203
|
GIT_INLINE(int) git_repository__ensure_not_bare(
|
|
201
204
|
git_repository *repo,
|
|
202
205
|
const char *operation_name)
|
|
@@ -217,10 +220,10 @@ int git_repository__set_orig_head(git_repository *repo, const git_oid *orig_head
|
|
|
217
220
|
int git_repository__cleanup_files(git_repository *repo, const char *files[], size_t files_len);
|
|
218
221
|
|
|
219
222
|
/* The default "reserved names" for a repository */
|
|
220
|
-
extern
|
|
223
|
+
extern git_str git_repository__reserved_names_win32[];
|
|
221
224
|
extern size_t git_repository__reserved_names_win32_len;
|
|
222
225
|
|
|
223
|
-
extern
|
|
226
|
+
extern git_str git_repository__reserved_names_posix[];
|
|
224
227
|
extern size_t git_repository__reserved_names_posix_len;
|
|
225
228
|
|
|
226
229
|
/*
|
|
@@ -234,13 +237,13 @@ extern size_t git_repository__reserved_names_posix_len;
|
|
|
234
237
|
* will still be populated with good defaults.
|
|
235
238
|
*/
|
|
236
239
|
bool git_repository__reserved_names(
|
|
237
|
-
|
|
240
|
+
git_str **out, size_t *outlen, git_repository *repo, bool include_ntfs);
|
|
238
241
|
|
|
239
242
|
/*
|
|
240
243
|
* The default branch for the repository; the `init.defaultBranch`
|
|
241
244
|
* configuration option, if set, or `master` if it is not.
|
|
242
245
|
*/
|
|
243
|
-
int git_repository_initialbranch(
|
|
246
|
+
int git_repository_initialbranch(git_str *out, git_repository *repo);
|
|
244
247
|
|
|
245
248
|
/*
|
|
246
249
|
* Given a relative `path`, this makes it absolute based on the
|
|
@@ -248,10 +251,18 @@ int git_repository_initialbranch(git_buf *out, git_repository *repo);
|
|
|
248
251
|
* to ensure that the path is not longer than MAX_PATH on Windows
|
|
249
252
|
* (unless `core.longpaths` is set in the repo config).
|
|
250
253
|
*/
|
|
251
|
-
int git_repository_workdir_path(
|
|
254
|
+
int git_repository_workdir_path(git_str *out, git_repository *repo, const char *path);
|
|
252
255
|
|
|
253
256
|
int git_repository__extensions(char ***out, size_t *out_len);
|
|
254
257
|
int git_repository__set_extensions(const char **extensions, size_t len);
|
|
255
258
|
void git_repository__free_extensions(void);
|
|
256
259
|
|
|
260
|
+
/*
|
|
261
|
+
* Set the object format (OID type) for a repository; this will set
|
|
262
|
+
* both the configuration and the internal value for the oid type.
|
|
263
|
+
*/
|
|
264
|
+
int git_repository__set_objectformat(
|
|
265
|
+
git_repository *repo,
|
|
266
|
+
git_oid_t oid_type);
|
|
267
|
+
|
|
257
268
|
#endif
|
|
@@ -111,7 +111,7 @@ static int reset(
|
|
|
111
111
|
git_tree *tree = NULL;
|
|
112
112
|
int error = 0;
|
|
113
113
|
git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT;
|
|
114
|
-
|
|
114
|
+
git_str log_message = GIT_STR_INIT;
|
|
115
115
|
|
|
116
116
|
GIT_ASSERT_ARG(repo);
|
|
117
117
|
GIT_ASSERT_ARG(target);
|
|
@@ -144,7 +144,7 @@ static int reset(
|
|
|
144
144
|
goto cleanup;
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
if ((error =
|
|
147
|
+
if ((error = git_str_printf(&log_message, "reset: moving to %s", to)) < 0)
|
|
148
148
|
return error;
|
|
149
149
|
|
|
150
150
|
if (reset_type == GIT_RESET_HARD) {
|
|
@@ -157,7 +157,7 @@ static int reset(
|
|
|
157
157
|
|
|
158
158
|
/* move HEAD to the new target */
|
|
159
159
|
if ((error = git_reference__update_terminal(repo, GIT_HEAD_FILE,
|
|
160
|
-
git_object_id(commit), NULL,
|
|
160
|
+
git_object_id(commit), NULL, git_str_cstr(&log_message))) < 0)
|
|
161
161
|
goto cleanup;
|
|
162
162
|
|
|
163
163
|
if (reset_type > GIT_RESET_SOFT) {
|
|
@@ -177,7 +177,7 @@ cleanup:
|
|
|
177
177
|
git_object_free(commit);
|
|
178
178
|
git_index_free(index);
|
|
179
179
|
git_tree_free(tree);
|
|
180
|
-
|
|
180
|
+
git_str_dispose(&log_message);
|
|
181
181
|
|
|
182
182
|
return error;
|
|
183
183
|
}
|
|
@@ -188,7 +188,10 @@ int git_reset(
|
|
|
188
188
|
git_reset_t reset_type,
|
|
189
189
|
const git_checkout_options *checkout_opts)
|
|
190
190
|
{
|
|
191
|
-
|
|
191
|
+
char to[GIT_OID_SHA1_HEXSIZE + 1];
|
|
192
|
+
|
|
193
|
+
git_oid_tostr(to, GIT_OID_SHA1_HEXSIZE + 1, git_object_id(target));
|
|
194
|
+
return reset(repo, target, to, reset_type, checkout_opts);
|
|
192
195
|
}
|
|
193
196
|
|
|
194
197
|
int git_reset_from_annotated(
|
|
@@ -25,10 +25,10 @@ static int write_revert_head(
|
|
|
25
25
|
const char *commit_oidstr)
|
|
26
26
|
{
|
|
27
27
|
git_filebuf file = GIT_FILEBUF_INIT;
|
|
28
|
-
|
|
28
|
+
git_str file_path = GIT_STR_INIT;
|
|
29
29
|
int error = 0;
|
|
30
30
|
|
|
31
|
-
if ((error =
|
|
31
|
+
if ((error = git_str_joinpath(&file_path, repo->gitdir, GIT_REVERT_HEAD_FILE)) >= 0 &&
|
|
32
32
|
(error = git_filebuf_open(&file, file_path.ptr, GIT_FILEBUF_CREATE_LEADING_DIRS, GIT_REVERT_FILE_MODE)) >= 0 &&
|
|
33
33
|
(error = git_filebuf_printf(&file, "%s\n", commit_oidstr)) >= 0)
|
|
34
34
|
error = git_filebuf_commit(&file);
|
|
@@ -36,7 +36,7 @@ static int write_revert_head(
|
|
|
36
36
|
if (error < 0)
|
|
37
37
|
git_filebuf_cleanup(&file);
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
git_str_dispose(&file_path);
|
|
40
40
|
|
|
41
41
|
return error;
|
|
42
42
|
}
|
|
@@ -47,10 +47,10 @@ static int write_merge_msg(
|
|
|
47
47
|
const char *commit_msgline)
|
|
48
48
|
{
|
|
49
49
|
git_filebuf file = GIT_FILEBUF_INIT;
|
|
50
|
-
|
|
50
|
+
git_str file_path = GIT_STR_INIT;
|
|
51
51
|
int error = 0;
|
|
52
52
|
|
|
53
|
-
if ((error =
|
|
53
|
+
if ((error = git_str_joinpath(&file_path, repo->gitdir, GIT_MERGE_MSG_FILE)) < 0 ||
|
|
54
54
|
(error = git_filebuf_open(&file, file_path.ptr, GIT_FILEBUF_CREATE_LEADING_DIRS, GIT_REVERT_FILE_MODE)) < 0 ||
|
|
55
55
|
(error = git_filebuf_printf(&file, "Revert \"%s\"\n\nThis reverts commit %s.\n",
|
|
56
56
|
commit_msgline, commit_oidstr)) < 0)
|
|
@@ -62,7 +62,7 @@ cleanup:
|
|
|
62
62
|
if (error < 0)
|
|
63
63
|
git_filebuf_cleanup(&file);
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
git_str_dispose(&file_path);
|
|
66
66
|
|
|
67
67
|
return error;
|
|
68
68
|
}
|
|
@@ -107,10 +107,10 @@ static int revert_state_cleanup(git_repository *repo)
|
|
|
107
107
|
|
|
108
108
|
static int revert_seterr(git_commit *commit, const char *fmt)
|
|
109
109
|
{
|
|
110
|
-
char commit_oidstr[
|
|
110
|
+
char commit_oidstr[GIT_OID_SHA1_HEXSIZE + 1];
|
|
111
111
|
|
|
112
112
|
git_oid_fmt(commit_oidstr, git_commit_id(commit));
|
|
113
|
-
commit_oidstr[
|
|
113
|
+
commit_oidstr[GIT_OID_SHA1_HEXSIZE] = '\0';
|
|
114
114
|
|
|
115
115
|
git_error_set(GIT_ERROR_REVERT, fmt, commit_oidstr);
|
|
116
116
|
|
|
@@ -176,9 +176,9 @@ int git_revert(
|
|
|
176
176
|
git_revert_options opts;
|
|
177
177
|
git_reference *our_ref = NULL;
|
|
178
178
|
git_commit *our_commit = NULL;
|
|
179
|
-
char commit_oidstr[
|
|
179
|
+
char commit_oidstr[GIT_OID_SHA1_HEXSIZE + 1];
|
|
180
180
|
const char *commit_msg;
|
|
181
|
-
|
|
181
|
+
git_str their_label = GIT_STR_INIT;
|
|
182
182
|
git_index *index = NULL;
|
|
183
183
|
git_indexwriter indexwriter = GIT_INDEXWRITER_INIT;
|
|
184
184
|
int error;
|
|
@@ -192,15 +192,15 @@ int git_revert(
|
|
|
192
192
|
return error;
|
|
193
193
|
|
|
194
194
|
git_oid_fmt(commit_oidstr, git_commit_id(commit));
|
|
195
|
-
commit_oidstr[
|
|
195
|
+
commit_oidstr[GIT_OID_SHA1_HEXSIZE] = '\0';
|
|
196
196
|
|
|
197
197
|
if ((commit_msg = git_commit_summary(commit)) == NULL) {
|
|
198
198
|
error = -1;
|
|
199
199
|
goto on_error;
|
|
200
200
|
}
|
|
201
201
|
|
|
202
|
-
if ((error =
|
|
203
|
-
(error = revert_normalize_opts(repo, &opts, given_opts,
|
|
202
|
+
if ((error = git_str_printf(&their_label, "parent of %.7s... %s", commit_oidstr, commit_msg)) < 0 ||
|
|
203
|
+
(error = revert_normalize_opts(repo, &opts, given_opts, git_str_cstr(&their_label))) < 0 ||
|
|
204
204
|
(error = git_indexwriter_init_for_operation(&indexwriter, repo, &opts.checkout_opts.checkout_strategy)) < 0 ||
|
|
205
205
|
(error = write_revert_head(repo, commit_oidstr)) < 0 ||
|
|
206
206
|
(error = write_merge_msg(repo, commit_oidstr, commit_msg)) < 0 ||
|
|
@@ -223,7 +223,7 @@ done:
|
|
|
223
223
|
git_index_free(index);
|
|
224
224
|
git_commit_free(our_commit);
|
|
225
225
|
git_reference_free(our_ref);
|
|
226
|
-
|
|
226
|
+
git_str_dispose(&their_label);
|
|
227
227
|
|
|
228
228
|
return error;
|
|
229
229
|
}
|
|
@@ -7,28 +7,36 @@
|
|
|
7
7
|
|
|
8
8
|
#include "common.h"
|
|
9
9
|
|
|
10
|
-
#include "
|
|
10
|
+
#include "str.h"
|
|
11
11
|
#include "tree.h"
|
|
12
12
|
#include "refdb.h"
|
|
13
13
|
#include "regexp.h"
|
|
14
|
+
#include "date.h"
|
|
14
15
|
|
|
15
16
|
#include "git2.h"
|
|
16
17
|
|
|
17
|
-
static int maybe_sha_or_abbrev(
|
|
18
|
+
static int maybe_sha_or_abbrev(
|
|
19
|
+
git_object **out,
|
|
20
|
+
git_repository *repo,
|
|
21
|
+
const char *spec,
|
|
22
|
+
size_t speclen)
|
|
18
23
|
{
|
|
19
24
|
git_oid oid;
|
|
20
25
|
|
|
21
|
-
if (
|
|
26
|
+
if (git_oid__fromstrn(&oid, spec, speclen, repo->oid_type) < 0)
|
|
22
27
|
return GIT_ENOTFOUND;
|
|
23
28
|
|
|
24
29
|
return git_object_lookup_prefix(out, repo, &oid, speclen, GIT_OBJECT_ANY);
|
|
25
30
|
}
|
|
26
31
|
|
|
27
|
-
static int maybe_sha(
|
|
32
|
+
static int maybe_sha(
|
|
33
|
+
git_object **out,
|
|
34
|
+
git_repository *repo,
|
|
35
|
+
const char *spec)
|
|
28
36
|
{
|
|
29
37
|
size_t speclen = strlen(spec);
|
|
30
38
|
|
|
31
|
-
if (speclen !=
|
|
39
|
+
if (speclen != git_oid_hexsize(repo->oid_type))
|
|
32
40
|
return GIT_ENOTFOUND;
|
|
33
41
|
|
|
34
42
|
return maybe_sha_or_abbrev(out, repo, spec, speclen);
|
|
@@ -109,8 +117,8 @@ static int revparse_lookup_object(
|
|
|
109
117
|
if (error != GIT_ENOTFOUND)
|
|
110
118
|
return error;
|
|
111
119
|
|
|
112
|
-
if ((strlen(spec) <
|
|
113
|
-
|
|
120
|
+
if ((strlen(spec) < git_oid_hexsize(repo->oid_type)) &&
|
|
121
|
+
((error = maybe_abbrev(object_out, repo, spec)) != GIT_ENOTFOUND))
|
|
114
122
|
return error;
|
|
115
123
|
|
|
116
124
|
if ((error = maybe_describe(object_out, repo, spec)) != GIT_ENOTFOUND)
|
|
@@ -145,7 +153,7 @@ static int retrieve_previously_checked_out_branch_or_revision(git_object **out,
|
|
|
145
153
|
size_t i, numentries, cur;
|
|
146
154
|
const git_reflog_entry *entry;
|
|
147
155
|
const char *msg;
|
|
148
|
-
|
|
156
|
+
git_str buf = GIT_STR_INIT;
|
|
149
157
|
|
|
150
158
|
cur = position;
|
|
151
159
|
|
|
@@ -179,16 +187,16 @@ static int retrieve_previously_checked_out_branch_or_revision(git_object **out,
|
|
|
179
187
|
if (cur > 0)
|
|
180
188
|
continue;
|
|
181
189
|
|
|
182
|
-
if ((
|
|
190
|
+
if ((git_str_put(&buf, msg+regexmatches[1].start, regexmatches[1].end - regexmatches[1].start)) < 0)
|
|
183
191
|
goto cleanup;
|
|
184
192
|
|
|
185
|
-
if ((error = git_reference_dwim(base_ref, repo,
|
|
193
|
+
if ((error = git_reference_dwim(base_ref, repo, git_str_cstr(&buf))) == 0)
|
|
186
194
|
goto cleanup;
|
|
187
195
|
|
|
188
196
|
if (error < 0 && error != GIT_ENOTFOUND)
|
|
189
197
|
goto cleanup;
|
|
190
198
|
|
|
191
|
-
error = maybe_abbrev(out, repo,
|
|
199
|
+
error = maybe_abbrev(out, repo, git_str_cstr(&buf));
|
|
192
200
|
|
|
193
201
|
goto cleanup;
|
|
194
202
|
}
|
|
@@ -197,7 +205,7 @@ static int retrieve_previously_checked_out_branch_or_revision(git_object **out,
|
|
|
197
205
|
|
|
198
206
|
cleanup:
|
|
199
207
|
git_reference_free(ref);
|
|
200
|
-
|
|
208
|
+
git_str_dispose(&buf);
|
|
201
209
|
git_regexp_dispose(&preg);
|
|
202
210
|
git_reflog_free(reflog);
|
|
203
211
|
return error;
|
|
@@ -207,7 +215,7 @@ static int retrieve_oid_from_reflog(git_oid *oid, git_reference *ref, size_t ide
|
|
|
207
215
|
{
|
|
208
216
|
git_reflog *reflog;
|
|
209
217
|
size_t numentries;
|
|
210
|
-
const git_reflog_entry *entry;
|
|
218
|
+
const git_reflog_entry *entry = NULL;
|
|
211
219
|
bool search_by_pos = (identifier <= 100000000);
|
|
212
220
|
|
|
213
221
|
if (git_reflog_read(&reflog, git_reference_owner(ref), git_reference_name(ref)) < 0)
|
|
@@ -236,8 +244,15 @@ static int retrieve_oid_from_reflog(git_oid *oid, git_reference *ref, size_t ide
|
|
|
236
244
|
break;
|
|
237
245
|
}
|
|
238
246
|
|
|
239
|
-
if (i == numentries)
|
|
240
|
-
|
|
247
|
+
if (i == numentries) {
|
|
248
|
+
if (entry == NULL)
|
|
249
|
+
goto notfound;
|
|
250
|
+
|
|
251
|
+
/*
|
|
252
|
+
* TODO: emit a warning (log for 'branch' only goes back to ...)
|
|
253
|
+
*/
|
|
254
|
+
git_oid_cpy(oid, git_reflog_entry_id_new(entry));
|
|
255
|
+
}
|
|
241
256
|
}
|
|
242
257
|
|
|
243
258
|
git_reflog_free(reflog);
|
|
@@ -260,7 +275,16 @@ static int retrieve_revobject_from_reflog(git_object **out, git_reference **base
|
|
|
260
275
|
int error = -1;
|
|
261
276
|
|
|
262
277
|
if (*base_ref == NULL) {
|
|
263
|
-
|
|
278
|
+
/*
|
|
279
|
+
* When HEAD@{n} is specified, do not use dwim, which would resolve the
|
|
280
|
+
* reference (to the current branch that HEAD is pointing to).
|
|
281
|
+
*/
|
|
282
|
+
if (position > 0 && strcmp(identifier, GIT_HEAD_FILE) == 0)
|
|
283
|
+
error = git_reference_lookup(&ref, repo, GIT_HEAD_FILE);
|
|
284
|
+
else
|
|
285
|
+
error = git_reference_dwim(&ref, repo, identifier);
|
|
286
|
+
|
|
287
|
+
if (error < 0)
|
|
264
288
|
return error;
|
|
265
289
|
} else {
|
|
266
290
|
ref = *base_ref;
|
|
@@ -314,12 +338,12 @@ static int handle_at_syntax(git_object **out, git_reference **ref, const char *s
|
|
|
314
338
|
{
|
|
315
339
|
bool is_numeric;
|
|
316
340
|
int parsed = 0, error = -1;
|
|
317
|
-
|
|
341
|
+
git_str identifier = GIT_STR_INIT;
|
|
318
342
|
git_time_t timestamp;
|
|
319
343
|
|
|
320
344
|
GIT_ASSERT(*out == NULL);
|
|
321
345
|
|
|
322
|
-
if (
|
|
346
|
+
if (git_str_put(&identifier, spec, identifier_len) < 0)
|
|
323
347
|
return -1;
|
|
324
348
|
|
|
325
349
|
is_numeric = !try_parse_numeric(&parsed, curly_braces_content);
|
|
@@ -331,26 +355,28 @@ static int handle_at_syntax(git_object **out, git_reference **ref, const char *s
|
|
|
331
355
|
|
|
332
356
|
if (is_numeric) {
|
|
333
357
|
if (parsed < 0)
|
|
334
|
-
error = retrieve_previously_checked_out_branch_or_revision(out, ref, repo,
|
|
358
|
+
error = retrieve_previously_checked_out_branch_or_revision(out, ref, repo, git_str_cstr(&identifier), -parsed);
|
|
335
359
|
else
|
|
336
|
-
error = retrieve_revobject_from_reflog(out, ref, repo,
|
|
360
|
+
error = retrieve_revobject_from_reflog(out, ref, repo, git_str_cstr(&identifier), parsed);
|
|
337
361
|
|
|
338
362
|
goto cleanup;
|
|
339
363
|
}
|
|
340
364
|
|
|
341
365
|
if (!strcmp(curly_braces_content, "u") || !strcmp(curly_braces_content, "upstream")) {
|
|
342
|
-
error = retrieve_remote_tracking_reference(ref,
|
|
366
|
+
error = retrieve_remote_tracking_reference(ref, git_str_cstr(&identifier), repo);
|
|
343
367
|
|
|
344
368
|
goto cleanup;
|
|
345
369
|
}
|
|
346
370
|
|
|
347
|
-
if (
|
|
371
|
+
if (git_date_parse(×tamp, curly_braces_content) < 0) {
|
|
372
|
+
error = GIT_EINVALIDSPEC;
|
|
348
373
|
goto cleanup;
|
|
374
|
+
}
|
|
349
375
|
|
|
350
|
-
error = retrieve_revobject_from_reflog(out, ref, repo,
|
|
376
|
+
error = retrieve_revobject_from_reflog(out, ref, repo, git_str_cstr(&identifier), (size_t)timestamp);
|
|
351
377
|
|
|
352
378
|
cleanup:
|
|
353
|
-
|
|
379
|
+
git_str_dispose(&identifier);
|
|
354
380
|
return error;
|
|
355
381
|
}
|
|
356
382
|
|
|
@@ -520,9 +546,9 @@ static int handle_caret_curly_syntax(git_object **out, git_object *obj, const ch
|
|
|
520
546
|
return git_object_peel(out, obj, expected_type);
|
|
521
547
|
}
|
|
522
548
|
|
|
523
|
-
static int extract_curly_braces_content(
|
|
549
|
+
static int extract_curly_braces_content(git_str *buf, const char *spec, size_t *pos)
|
|
524
550
|
{
|
|
525
|
-
|
|
551
|
+
git_str_clear(buf);
|
|
526
552
|
|
|
527
553
|
GIT_ASSERT_ARG(spec[*pos] == '^' || spec[*pos] == '@');
|
|
528
554
|
|
|
@@ -537,7 +563,7 @@ static int extract_curly_braces_content(git_buf *buf, const char *spec, size_t *
|
|
|
537
563
|
if (spec[*pos] == '\0')
|
|
538
564
|
return GIT_EINVALIDSPEC;
|
|
539
565
|
|
|
540
|
-
if (
|
|
566
|
+
if (git_str_putc(buf, spec[(*pos)++]) < 0)
|
|
541
567
|
return -1;
|
|
542
568
|
}
|
|
543
569
|
|
|
@@ -546,18 +572,18 @@ static int extract_curly_braces_content(git_buf *buf, const char *spec, size_t *
|
|
|
546
572
|
return 0;
|
|
547
573
|
}
|
|
548
574
|
|
|
549
|
-
static int extract_path(
|
|
575
|
+
static int extract_path(git_str *buf, const char *spec, size_t *pos)
|
|
550
576
|
{
|
|
551
|
-
|
|
577
|
+
git_str_clear(buf);
|
|
552
578
|
|
|
553
579
|
GIT_ASSERT_ARG(spec[*pos] == ':');
|
|
554
580
|
|
|
555
581
|
(*pos)++;
|
|
556
582
|
|
|
557
|
-
if (
|
|
583
|
+
if (git_str_puts(buf, spec + *pos) < 0)
|
|
558
584
|
return -1;
|
|
559
585
|
|
|
560
|
-
*pos +=
|
|
586
|
+
*pos += git_str_len(buf);
|
|
561
587
|
|
|
562
588
|
return 0;
|
|
563
589
|
}
|
|
@@ -610,7 +636,7 @@ static int object_from_reference(git_object **object, git_reference *reference)
|
|
|
610
636
|
static int ensure_base_rev_loaded(git_object **object, git_reference **reference, const char *spec, size_t identifier_len, git_repository *repo, bool allow_empty_identifier)
|
|
611
637
|
{
|
|
612
638
|
int error;
|
|
613
|
-
|
|
639
|
+
git_str identifier = GIT_STR_INIT;
|
|
614
640
|
|
|
615
641
|
if (*object != NULL)
|
|
616
642
|
return 0;
|
|
@@ -621,11 +647,11 @@ static int ensure_base_rev_loaded(git_object **object, git_reference **reference
|
|
|
621
647
|
if (!allow_empty_identifier && identifier_len == 0)
|
|
622
648
|
return GIT_EINVALIDSPEC;
|
|
623
649
|
|
|
624
|
-
if (
|
|
650
|
+
if (git_str_put(&identifier, spec, identifier_len) < 0)
|
|
625
651
|
return -1;
|
|
626
652
|
|
|
627
|
-
error = revparse_lookup_object(object, reference, repo,
|
|
628
|
-
|
|
653
|
+
error = revparse_lookup_object(object, reference, repo, git_str_cstr(&identifier));
|
|
654
|
+
git_str_dispose(&identifier);
|
|
629
655
|
|
|
630
656
|
return error;
|
|
631
657
|
}
|
|
@@ -669,7 +695,7 @@ static int revparse(
|
|
|
669
695
|
{
|
|
670
696
|
size_t pos = 0, identifier_len = 0;
|
|
671
697
|
int error = -1, n;
|
|
672
|
-
|
|
698
|
+
git_str buf = GIT_STR_INIT;
|
|
673
699
|
|
|
674
700
|
git_reference *reference = NULL;
|
|
675
701
|
git_object *base_rev = NULL;
|
|
@@ -698,7 +724,7 @@ static int revparse(
|
|
|
698
724
|
if ((error = extract_curly_braces_content(&buf, spec, &pos)) < 0)
|
|
699
725
|
goto cleanup;
|
|
700
726
|
|
|
701
|
-
if ((error = handle_caret_curly_syntax(&temp_object, base_rev,
|
|
727
|
+
if ((error = handle_caret_curly_syntax(&temp_object, base_rev, git_str_cstr(&buf))) < 0)
|
|
702
728
|
goto cleanup;
|
|
703
729
|
|
|
704
730
|
git_object_free(base_rev);
|
|
@@ -750,11 +776,11 @@ static int revparse(
|
|
|
750
776
|
if ((error = ensure_base_rev_loaded(&base_rev, &reference, spec, identifier_len, repo, true)) < 0)
|
|
751
777
|
goto cleanup;
|
|
752
778
|
|
|
753
|
-
if ((error = handle_colon_syntax(&temp_object, base_rev,
|
|
779
|
+
if ((error = handle_colon_syntax(&temp_object, base_rev, git_str_cstr(&buf))) < 0)
|
|
754
780
|
goto cleanup;
|
|
755
781
|
} else {
|
|
756
|
-
if (*
|
|
757
|
-
if ((error = handle_grep_syntax(&temp_object, repo, NULL,
|
|
782
|
+
if (*git_str_cstr(&buf) == '/') {
|
|
783
|
+
if ((error = handle_grep_syntax(&temp_object, repo, NULL, git_str_cstr(&buf) + 1)) < 0)
|
|
758
784
|
goto cleanup;
|
|
759
785
|
} else {
|
|
760
786
|
|
|
@@ -783,12 +809,15 @@ static int revparse(
|
|
|
783
809
|
if ((error = ensure_base_rev_is_not_known_yet(base_rev)) < 0)
|
|
784
810
|
goto cleanup;
|
|
785
811
|
|
|
786
|
-
if ((error = handle_at_syntax(&temp_object, &reference, spec, identifier_len, repo,
|
|
812
|
+
if ((error = handle_at_syntax(&temp_object, &reference, spec, identifier_len, repo, git_str_cstr(&buf))) < 0)
|
|
787
813
|
goto cleanup;
|
|
788
814
|
|
|
789
815
|
if (temp_object != NULL)
|
|
790
816
|
base_rev = temp_object;
|
|
791
817
|
break;
|
|
818
|
+
} else if (spec[pos+1] == '\0') {
|
|
819
|
+
spec = "HEAD";
|
|
820
|
+
break;
|
|
792
821
|
}
|
|
793
822
|
/* fall through */
|
|
794
823
|
|
|
@@ -824,7 +853,7 @@ cleanup:
|
|
|
824
853
|
git_reference_free(reference);
|
|
825
854
|
}
|
|
826
855
|
|
|
827
|
-
|
|
856
|
+
git_str_dispose(&buf);
|
|
828
857
|
return error;
|
|
829
858
|
}
|
|
830
859
|
|
|
@@ -121,8 +121,12 @@ int git_revwalk__push_ref(git_revwalk *walk, const char *refname, const git_revw
|
|
|
121
121
|
{
|
|
122
122
|
git_oid oid;
|
|
123
123
|
|
|
124
|
-
|
|
124
|
+
int error = git_reference_name_to_id(&oid, walk->repo, refname);
|
|
125
|
+
if (opts->from_glob && (error == GIT_ENOTFOUND || error == GIT_EINVALIDSPEC || error == GIT_EPEEL)) {
|
|
126
|
+
return 0;
|
|
127
|
+
} else if (error < 0) {
|
|
125
128
|
return -1;
|
|
129
|
+
}
|
|
126
130
|
|
|
127
131
|
return git_revwalk__push_commit(walk, &oid, opts);
|
|
128
132
|
}
|
|
@@ -131,7 +135,7 @@ int git_revwalk__push_glob(git_revwalk *walk, const char *glob, const git_revwal
|
|
|
131
135
|
{
|
|
132
136
|
git_revwalk__push_options opts = GIT_REVWALK__PUSH_OPTIONS_INIT;
|
|
133
137
|
int error = 0;
|
|
134
|
-
|
|
138
|
+
git_str buf = GIT_STR_INIT;
|
|
135
139
|
git_reference *ref;
|
|
136
140
|
git_reference_iterator *iter;
|
|
137
141
|
size_t wildcard;
|
|
@@ -144,15 +148,15 @@ int git_revwalk__push_glob(git_revwalk *walk, const char *glob, const git_revwal
|
|
|
144
148
|
|
|
145
149
|
/* refs/ is implied if not given in the glob */
|
|
146
150
|
if (git__prefixcmp(glob, GIT_REFS_DIR) != 0)
|
|
147
|
-
|
|
151
|
+
git_str_joinpath(&buf, GIT_REFS_DIR, glob);
|
|
148
152
|
else
|
|
149
|
-
|
|
150
|
-
|
|
153
|
+
git_str_puts(&buf, glob);
|
|
154
|
+
GIT_ERROR_CHECK_ALLOC_STR(&buf);
|
|
151
155
|
|
|
152
156
|
/* If no '?', '*' or '[' exist, we append '/ *' to the glob */
|
|
153
157
|
wildcard = strcspn(glob, "?*[");
|
|
154
158
|
if (!glob[wildcard])
|
|
155
|
-
|
|
159
|
+
git_str_put(&buf, "/*", 2);
|
|
156
160
|
|
|
157
161
|
if ((error = git_reference_iterator_glob_new(&iter, walk->repo, buf.ptr)) < 0)
|
|
158
162
|
goto out;
|
|
@@ -169,7 +173,7 @@ int git_revwalk__push_glob(git_revwalk *walk, const char *glob, const git_revwal
|
|
|
169
173
|
if (error == GIT_ITEROVER)
|
|
170
174
|
error = 0;
|
|
171
175
|
out:
|
|
172
|
-
|
|
176
|
+
git_str_dispose(&buf);
|
|
173
177
|
return error;
|
|
174
178
|
}
|
|
175
179
|
|
|
@@ -427,7 +431,7 @@ static int add_parents_to_list(git_revwalk *walk, git_commit_list_node *commit,
|
|
|
427
431
|
return 0;
|
|
428
432
|
}
|
|
429
433
|
|
|
430
|
-
/* How many
|
|
434
|
+
/* How many uninteresting commits we want to look at after we run out of interesting ones */
|
|
431
435
|
#define SLOP 5
|
|
432
436
|
|
|
433
437
|
static int still_interesting(git_commit_list *list, int64_t time, int slop)
|
|
@@ -23,6 +23,12 @@ void git_signature_free(git_signature *sig)
|
|
|
23
23
|
git__free(sig);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
static int signature_parse_error(const char *msg)
|
|
27
|
+
{
|
|
28
|
+
git_error_set(GIT_ERROR_INVALID, "failed to parse signature - %s", msg);
|
|
29
|
+
return GIT_EINVALID;
|
|
30
|
+
}
|
|
31
|
+
|
|
26
32
|
static int signature_error(const char *msg)
|
|
27
33
|
{
|
|
28
34
|
git_error_set(GIT_ERROR_INVALID, "failed to parse signature - %s", msg);
|
|
@@ -206,13 +212,13 @@ int git_signature__parse(git_signature *sig, const char **buffer_out,
|
|
|
206
212
|
|
|
207
213
|
if (ender &&
|
|
208
214
|
(buffer_end = memchr(buffer, ender, buffer_end - buffer)) == NULL)
|
|
209
|
-
return
|
|
215
|
+
return signature_parse_error("no newline given");
|
|
210
216
|
|
|
211
217
|
if (header) {
|
|
212
218
|
const size_t header_len = strlen(header);
|
|
213
219
|
|
|
214
220
|
if (buffer + header_len >= buffer_end || memcmp(buffer, header, header_len) != 0)
|
|
215
|
-
return
|
|
221
|
+
return signature_parse_error("expected prefix doesn't match actual");
|
|
216
222
|
|
|
217
223
|
buffer += header_len;
|
|
218
224
|
}
|
|
@@ -221,7 +227,7 @@ int git_signature__parse(git_signature *sig, const char **buffer_out,
|
|
|
221
227
|
email_end = git__memrchr(buffer, '>', buffer_end - buffer);
|
|
222
228
|
|
|
223
229
|
if (!email_start || !email_end || email_end <= email_start)
|
|
224
|
-
return
|
|
230
|
+
return signature_parse_error("malformed e-mail");
|
|
225
231
|
|
|
226
232
|
email_start += 1;
|
|
227
233
|
sig->name = extract_trimmed(buffer, email_start - buffer - 1);
|
|
@@ -237,7 +243,7 @@ int git_signature__parse(git_signature *sig, const char **buffer_out,
|
|
|
237
243
|
git__free(sig->name);
|
|
238
244
|
git__free(sig->email);
|
|
239
245
|
sig->name = sig->email = NULL;
|
|
240
|
-
return
|
|
246
|
+
return signature_parse_error("invalid Unix timestamp");
|
|
241
247
|
}
|
|
242
248
|
|
|
243
249
|
/* do we have a timezone? */
|
|
@@ -299,7 +305,7 @@ int git_signature_from_buffer(git_signature **out, const char *buf)
|
|
|
299
305
|
return error;
|
|
300
306
|
}
|
|
301
307
|
|
|
302
|
-
void git_signature__writebuf(
|
|
308
|
+
void git_signature__writebuf(git_str *buf, const char *header, const git_signature *sig)
|
|
303
309
|
{
|
|
304
310
|
int offset, hours, mins;
|
|
305
311
|
char sign;
|
|
@@ -313,7 +319,7 @@ void git_signature__writebuf(git_buf *buf, const char *header, const git_signatu
|
|
|
313
319
|
hours = offset / 60;
|
|
314
320
|
mins = offset % 60;
|
|
315
321
|
|
|
316
|
-
|
|
322
|
+
git_str_printf(buf, "%s%s <%s> %u %c%02d%02d\n",
|
|
317
323
|
header ? header : "", sig->name, sig->email,
|
|
318
324
|
(unsigned)sig->when.time, sign, hours, mins);
|
|
319
325
|
}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
#include <time.h>
|
|
16
16
|
|
|
17
17
|
int git_signature__parse(git_signature *sig, const char **buffer_out, const char *buffer_end, const char *header, char ender);
|
|
18
|
-
void git_signature__writebuf(
|
|
18
|
+
void git_signature__writebuf(git_str *buf, const char *header, const git_signature *sig);
|
|
19
19
|
bool git_signature__equal(const git_signature *one, const git_signature *two);
|
|
20
20
|
|
|
21
21
|
int git_signature__pdup(git_signature **dest, const git_signature *source, git_pool *pool);
|