rugged 1.6.3 → 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/ext/rugged/rugged_allocator.c +0 -54
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/AUTHORS +1 -0
- data/vendor/libgit2/CMakeLists.txt +25 -17
- data/vendor/libgit2/COPYING +195 -1
- data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
- data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
- data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
- data/vendor/libgit2/cmake/SelectGSSAPI.cmake +4 -4
- data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +34 -6
- data/vendor/libgit2/cmake/SelectHashes.cmake +32 -11
- data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
- data/vendor/libgit2/cmake/SelectSSH.cmake +22 -17
- data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
- data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
- 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 +1 -1
- 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 +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
- 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 +1 -0
- 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/xdiff/CMakeLists.txt +28 -0
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/git-xdiff.h +4 -1
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.c +19 -18
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.h +2 -4
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.c +3 -3
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xhistogram.c +7 -18
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmacros.h +18 -1
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmerge.c +22 -20
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xpatience.c +21 -30
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.c +13 -30
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.c +18 -1
- data/vendor/libgit2/{src/libgit2 → 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 +5 -27
- data/vendor/libgit2/deps/zlib/crc32.c +94 -167
- data/vendor/libgit2/deps/zlib/deflate.c +358 -435
- data/vendor/libgit2/deps/zlib/deflate.h +41 -10
- data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
- data/vendor/libgit2/deps/zlib/infback.c +17 -30
- data/vendor/libgit2/deps/zlib/inffast.c +1 -4
- data/vendor/libgit2/deps/zlib/inffast.h +1 -1
- data/vendor/libgit2/deps/zlib/inflate.c +36 -102
- 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 +287 -352
- data/vendor/libgit2/deps/zlib/zconf.h +23 -14
- data/vendor/libgit2/deps/zlib/zlib.h +202 -202
- data/vendor/libgit2/deps/zlib/zutil.c +18 -44
- data/vendor/libgit2/deps/zlib/zutil.h +13 -33
- data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
- data/vendor/libgit2/include/git2/apply.h +27 -6
- data/vendor/libgit2/include/git2/attr.h +17 -4
- data/vendor/libgit2/include/git2/blame.h +133 -28
- data/vendor/libgit2/include/git2/blob.h +71 -28
- data/vendor/libgit2/include/git2/branch.h +22 -15
- data/vendor/libgit2/include/git2/buffer.h +6 -4
- data/vendor/libgit2/include/git2/cert.h +2 -1
- data/vendor/libgit2/include/git2/checkout.h +83 -32
- data/vendor/libgit2/include/git2/cherrypick.h +10 -3
- data/vendor/libgit2/include/git2/clone.h +25 -9
- data/vendor/libgit2/include/git2/commit.h +132 -3
- data/vendor/libgit2/include/git2/common.h +138 -56
- data/vendor/libgit2/include/git2/config.h +93 -23
- data/vendor/libgit2/include/git2/credential.h +30 -2
- data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
- data/vendor/libgit2/include/git2/deprecated.h +133 -3
- data/vendor/libgit2/include/git2/describe.h +13 -1
- data/vendor/libgit2/include/git2/diff.h +77 -9
- data/vendor/libgit2/include/git2/email.h +9 -29
- data/vendor/libgit2/include/git2/errors.h +49 -74
- data/vendor/libgit2/include/git2/filter.h +14 -7
- data/vendor/libgit2/include/git2/global.h +8 -1
- data/vendor/libgit2/include/git2/graph.h +3 -2
- data/vendor/libgit2/include/git2/ignore.h +10 -0
- data/vendor/libgit2/include/git2/index.h +100 -6
- data/vendor/libgit2/include/git2/indexer.h +21 -4
- data/vendor/libgit2/include/git2/mailmap.h +7 -1
- data/vendor/libgit2/include/git2/merge.h +46 -1
- data/vendor/libgit2/include/git2/message.h +2 -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 +9 -8
- data/vendor/libgit2/include/git2/odb.h +91 -49
- data/vendor/libgit2/include/git2/odb_backend.h +80 -52
- data/vendor/libgit2/include/git2/oid.h +24 -25
- data/vendor/libgit2/include/git2/oidarray.h +7 -1
- data/vendor/libgit2/include/git2/pack.h +13 -1
- data/vendor/libgit2/include/git2/patch.h +2 -3
- data/vendor/libgit2/include/git2/pathspec.h +9 -0
- data/vendor/libgit2/include/git2/proxy.h +10 -0
- data/vendor/libgit2/include/git2/rebase.h +9 -6
- data/vendor/libgit2/include/git2/refdb.h +2 -2
- data/vendor/libgit2/include/git2/reflog.h +3 -2
- data/vendor/libgit2/include/git2/refs.h +9 -6
- data/vendor/libgit2/include/git2/refspec.h +14 -4
- data/vendor/libgit2/include/git2/remote.h +112 -18
- data/vendor/libgit2/include/git2/repository.h +61 -15
- data/vendor/libgit2/include/git2/reset.h +16 -3
- data/vendor/libgit2/include/git2/revert.h +9 -4
- data/vendor/libgit2/include/git2/revparse.h +3 -3
- data/vendor/libgit2/include/git2/revwalk.h +3 -2
- data/vendor/libgit2/include/git2/signature.h +46 -1
- data/vendor/libgit2/include/git2/stash.h +17 -3
- data/vendor/libgit2/include/git2/status.h +10 -6
- data/vendor/libgit2/include/git2/stdint.h +87 -85
- data/vendor/libgit2/include/git2/strarray.h +2 -3
- data/vendor/libgit2/include/git2/submodule.h +20 -9
- 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 +109 -58
- 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 +7 -3
- 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 +8 -1
- data/vendor/libgit2/include/git2/sys/repository.h +63 -3
- data/vendor/libgit2/include/git2/sys/stream.h +25 -2
- data/vendor/libgit2/include/git2/sys/transport.h +44 -5
- data/vendor/libgit2/include/git2/tag.h +3 -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 +16 -5
- data/vendor/libgit2/include/git2/types.h +19 -3
- data/vendor/libgit2/include/git2/version.h +44 -8
- data/vendor/libgit2/include/git2/worktree.h +19 -7
- data/vendor/libgit2/src/CMakeLists.txt +40 -15
- data/vendor/libgit2/src/cli/CMakeLists.txt +2 -2
- data/vendor/libgit2/src/cli/cmd.c +1 -1
- data/vendor/libgit2/src/cli/cmd.h +4 -0
- data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
- data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
- data/vendor/libgit2/src/cli/cmd_clone.c +27 -13
- data/vendor/libgit2/src/cli/cmd_config.c +241 -0
- data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
- data/vendor/libgit2/src/cli/cmd_help.c +6 -7
- 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 +1 -1
- data/vendor/libgit2/src/cli/main.c +52 -24
- data/vendor/libgit2/src/cli/opt.c +29 -3
- data/vendor/libgit2/src/cli/opt.h +21 -3
- data/vendor/libgit2/src/cli/opt_usage.c +102 -33
- data/vendor/libgit2/src/cli/opt_usage.h +6 -1
- data/vendor/libgit2/src/cli/progress.c +60 -10
- data/vendor/libgit2/src/cli/progress.h +16 -4
- data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
- data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
- data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
- data/vendor/libgit2/src/libgit2/CMakeLists.txt +27 -27
- data/vendor/libgit2/src/libgit2/annotated_commit.c +2 -2
- data/vendor/libgit2/src/libgit2/annotated_commit.h +1 -1
- data/vendor/libgit2/src/libgit2/apply.c +14 -16
- data/vendor/libgit2/src/libgit2/attr.c +30 -13
- data/vendor/libgit2/src/libgit2/attr_file.c +7 -2
- data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
- data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
- data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
- data/vendor/libgit2/src/libgit2/blame.c +152 -59
- data/vendor/libgit2/src/libgit2/blame.h +1 -0
- data/vendor/libgit2/src/libgit2/blame_git.c +0 -1
- data/vendor/libgit2/src/libgit2/branch.c +2 -2
- data/vendor/libgit2/src/libgit2/cache.c +22 -17
- data/vendor/libgit2/src/libgit2/cache.h +7 -9
- data/vendor/libgit2/src/libgit2/checkout.c +34 -24
- data/vendor/libgit2/src/libgit2/checkout.h +0 -2
- data/vendor/libgit2/src/libgit2/cherrypick.c +4 -5
- data/vendor/libgit2/src/libgit2/clone.c +186 -164
- data/vendor/libgit2/src/libgit2/clone.h +4 -1
- data/vendor/libgit2/src/libgit2/commit.c +123 -9
- data/vendor/libgit2/src/libgit2/commit_graph.c +166 -88
- data/vendor/libgit2/src/libgit2/commit_graph.h +21 -6
- data/vendor/libgit2/src/libgit2/commit_list.c +12 -5
- data/vendor/libgit2/src/libgit2/commit_list.h +1 -0
- data/vendor/libgit2/src/libgit2/config.c +394 -300
- data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
- data/vendor/libgit2/src/libgit2/config.h +9 -4
- data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
- data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
- data/vendor/libgit2/src/libgit2/config_file.c +113 -96
- 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 +194 -40
- data/vendor/libgit2/src/libgit2/config_parse.c +10 -9
- data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
- data/vendor/libgit2/src/libgit2/describe.c +34 -31
- data/vendor/libgit2/src/libgit2/diff.c +17 -8
- data/vendor/libgit2/src/libgit2/diff.h +6 -6
- data/vendor/libgit2/src/libgit2/diff_driver.c +12 -19
- data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
- data/vendor/libgit2/src/libgit2/diff_file.c +7 -7
- data/vendor/libgit2/src/libgit2/diff_generate.c +39 -18
- data/vendor/libgit2/src/libgit2/diff_parse.c +22 -6
- data/vendor/libgit2/src/libgit2/diff_print.c +88 -13
- data/vendor/libgit2/src/libgit2/diff_tform.c +40 -12
- data/vendor/libgit2/src/libgit2/diff_xdiff.h +1 -1
- data/vendor/libgit2/src/libgit2/email.c +5 -3
- data/vendor/libgit2/src/libgit2/fetch.c +39 -9
- data/vendor/libgit2/src/libgit2/fetch.h +0 -2
- data/vendor/libgit2/src/libgit2/fetchhead.c +11 -9
- data/vendor/libgit2/src/libgit2/filter.c +5 -5
- data/vendor/libgit2/src/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/libgit2/graph.c +1 -1
- data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
- data/vendor/libgit2/src/libgit2/ident.c +3 -3
- data/vendor/libgit2/src/libgit2/ignore.c +9 -5
- data/vendor/libgit2/src/libgit2/index.c +392 -208
- data/vendor/libgit2/src/libgit2/index.h +16 -3
- data/vendor/libgit2/src/libgit2/index_map.c +95 -0
- data/vendor/libgit2/src/libgit2/index_map.h +28 -0
- data/vendor/libgit2/src/libgit2/indexer.c +44 -41
- data/vendor/libgit2/src/libgit2/iterator.c +34 -13
- data/vendor/libgit2/src/libgit2/iterator.h +3 -0
- data/vendor/libgit2/src/libgit2/libgit2.c +155 -331
- data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
- data/vendor/libgit2/src/libgit2/merge.c +56 -46
- data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
- data/vendor/libgit2/src/libgit2/merge_file.c +0 -2
- data/vendor/libgit2/src/libgit2/midx.c +86 -44
- data/vendor/libgit2/src/libgit2/midx.h +13 -3
- data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
- data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
- data/vendor/libgit2/src/libgit2/notes.c +9 -8
- data/vendor/libgit2/src/libgit2/object.c +42 -16
- data/vendor/libgit2/src/libgit2/object.h +6 -0
- data/vendor/libgit2/src/libgit2/odb.c +16 -9
- data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
- data/vendor/libgit2/src/libgit2/odb_pack.c +28 -7
- data/vendor/libgit2/src/libgit2/oid.c +35 -2
- data/vendor/libgit2/src/libgit2/oid.h +11 -0
- data/vendor/libgit2/src/libgit2/oidarray.c +49 -3
- data/vendor/libgit2/src/libgit2/oidarray.h +5 -1
- data/vendor/libgit2/src/libgit2/pack-objects.c +77 -43
- data/vendor/libgit2/src/libgit2/pack-objects.h +17 -6
- data/vendor/libgit2/src/libgit2/pack.c +33 -27
- data/vendor/libgit2/src/libgit2/pack.h +15 -10
- data/vendor/libgit2/src/libgit2/parse.c +7 -4
- data/vendor/libgit2/src/libgit2/parse.h +1 -1
- data/vendor/libgit2/src/libgit2/patch.h +7 -1
- data/vendor/libgit2/src/libgit2/patch_generate.c +24 -5
- data/vendor/libgit2/src/libgit2/patch_parse.c +18 -10
- data/vendor/libgit2/src/libgit2/path.c +1 -1
- data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
- data/vendor/libgit2/src/libgit2/push.c +81 -30
- data/vendor/libgit2/src/libgit2/push.h +1 -0
- data/vendor/libgit2/src/libgit2/reader.c +1 -1
- data/vendor/libgit2/src/libgit2/rebase.c +72 -84
- data/vendor/libgit2/src/libgit2/refdb_fs.c +146 -70
- data/vendor/libgit2/src/libgit2/reflog.c +1 -2
- data/vendor/libgit2/src/libgit2/reflog.h +2 -0
- data/vendor/libgit2/src/libgit2/refs.c +34 -8
- data/vendor/libgit2/src/libgit2/refs.h +6 -1
- data/vendor/libgit2/src/libgit2/refspec.c +28 -1
- data/vendor/libgit2/src/libgit2/refspec.h +8 -0
- data/vendor/libgit2/src/libgit2/remote.c +136 -67
- data/vendor/libgit2/src/libgit2/remote.h +1 -0
- data/vendor/libgit2/src/libgit2/repository.c +789 -330
- data/vendor/libgit2/src/libgit2/repository.h +22 -3
- data/vendor/libgit2/src/libgit2/reset.c +2 -2
- data/vendor/libgit2/src/libgit2/revert.c +9 -13
- data/vendor/libgit2/src/libgit2/revparse.c +6 -3
- data/vendor/libgit2/src/libgit2/revwalk.c +36 -11
- data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
- data/vendor/libgit2/src/libgit2/settings.c +468 -0
- data/vendor/libgit2/src/libgit2/settings.h +6 -2
- data/vendor/libgit2/src/libgit2/signature.c +132 -15
- data/vendor/libgit2/src/libgit2/signature.h +0 -1
- data/vendor/libgit2/src/libgit2/stash.c +9 -8
- data/vendor/libgit2/src/libgit2/status.c +1 -1
- data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -61
- data/vendor/libgit2/src/libgit2/streams/openssl.c +40 -23
- data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
- data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
- data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
- 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 +237 -51
- data/vendor/libgit2/src/libgit2/streams/socket.h +3 -1
- data/vendor/libgit2/src/libgit2/streams/stransport.c +79 -19
- data/vendor/libgit2/src/libgit2/streams/tls.c +5 -0
- data/vendor/libgit2/src/libgit2/submodule.c +106 -63
- data/vendor/libgit2/src/libgit2/submodule.h +9 -10
- data/vendor/libgit2/src/libgit2/tag.c +1 -1
- data/vendor/libgit2/src/libgit2/trailer.c +6 -6
- data/vendor/libgit2/src/libgit2/transaction.c +26 -20
- data/vendor/libgit2/src/libgit2/transaction.h +4 -1
- data/vendor/libgit2/src/libgit2/transport.c +4 -1
- data/vendor/libgit2/src/libgit2/transports/auth.h +1 -2
- data/vendor/libgit2/src/libgit2/transports/{auth_negotiate.c → auth_gssapi.c} +32 -32
- data/vendor/libgit2/src/libgit2/transports/auth_negotiate.h +1 -1
- data/vendor/libgit2/src/libgit2/transports/auth_ntlm.h +1 -1
- data/vendor/libgit2/src/libgit2/transports/{auth_ntlm.c → auth_ntlmclient.c} +12 -12
- data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
- data/vendor/libgit2/src/libgit2/transports/credential.c +1 -1
- data/vendor/libgit2/src/libgit2/transports/git.c +7 -8
- data/vendor/libgit2/src/libgit2/transports/http.c +8 -4
- data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
- data/vendor/libgit2/src/libgit2/transports/httpclient.c +117 -72
- data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
- data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
- data/vendor/libgit2/src/libgit2/transports/local.c +21 -11
- data/vendor/libgit2/src/libgit2/transports/smart.c +50 -32
- data/vendor/libgit2/src/libgit2/transports/smart.h +26 -9
- data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +139 -18
- data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +209 -57
- data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
- 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/libgit2/transports/ssh_libssh2.c +1126 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
- data/vendor/libgit2/src/libgit2/transports/winhttp.c +48 -21
- data/vendor/libgit2/src/libgit2/tree-cache.c +26 -16
- data/vendor/libgit2/src/libgit2/tree-cache.h +5 -3
- data/vendor/libgit2/src/libgit2/tree.c +35 -27
- data/vendor/libgit2/src/libgit2/tree.h +3 -2
- data/vendor/libgit2/src/libgit2/worktree.c +39 -27
- data/vendor/libgit2/src/util/CMakeLists.txt +4 -6
- data/vendor/libgit2/src/util/alloc.c +69 -7
- data/vendor/libgit2/src/util/alloc.h +34 -9
- data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
- data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
- data/vendor/libgit2/src/util/allocators/failalloc.c +0 -60
- data/vendor/libgit2/src/util/allocators/failalloc.h +0 -6
- data/vendor/libgit2/src/util/allocators/stdalloc.c +2 -115
- data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +0 -68
- data/vendor/libgit2/src/util/array.h +24 -18
- data/vendor/libgit2/src/util/cc-compat.h +4 -0
- data/vendor/libgit2/src/util/ctype_compat.h +70 -0
- data/vendor/libgit2/src/util/date.c +22 -14
- data/vendor/libgit2/src/util/date.h +12 -0
- data/vendor/libgit2/src/util/errors.c +401 -0
- data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
- data/vendor/libgit2/src/util/filebuf.c +6 -1
- data/vendor/libgit2/src/util/filebuf.h +19 -6
- data/vendor/libgit2/src/util/fs_path.c +16 -5
- data/vendor/libgit2/src/util/fs_path.h +23 -0
- data/vendor/libgit2/src/util/futils.c +14 -10
- data/vendor/libgit2/src/util/futils.h +13 -4
- data/vendor/libgit2/src/util/git2_features.h.in +21 -4
- data/vendor/libgit2/src/util/git2_util.h +6 -0
- data/vendor/libgit2/src/util/hash/openssl.c +152 -0
- data/vendor/libgit2/src/util/hash/openssl.h +17 -1
- data/vendor/libgit2/src/util/hash/sha.h +4 -1
- data/vendor/libgit2/src/util/hashmap.h +424 -0
- data/vendor/libgit2/src/util/hashmap_str.h +43 -0
- data/vendor/libgit2/src/util/integer.h +3 -1
- data/vendor/libgit2/src/util/net.c +318 -161
- data/vendor/libgit2/src/util/net.h +27 -0
- data/vendor/libgit2/src/util/pool.c +1 -1
- data/vendor/libgit2/src/util/pool.h +5 -0
- data/vendor/libgit2/src/util/posix.c +54 -0
- data/vendor/libgit2/src/util/posix.h +22 -0
- data/vendor/libgit2/src/util/pqueue.h +1 -1
- data/vendor/libgit2/src/util/process.h +222 -0
- data/vendor/libgit2/src/util/rand.c +6 -10
- data/vendor/libgit2/src/util/regexp.c +1 -1
- data/vendor/libgit2/src/util/sortedcache.c +14 -13
- data/vendor/libgit2/src/util/sortedcache.h +3 -3
- data/vendor/libgit2/src/util/staticstr.h +66 -0
- data/vendor/libgit2/src/util/str.c +2 -2
- data/vendor/libgit2/src/util/strlist.c +108 -0
- data/vendor/libgit2/src/util/strlist.h +36 -0
- data/vendor/libgit2/src/util/unix/posix.h +0 -2
- data/vendor/libgit2/src/util/unix/process.c +629 -0
- data/vendor/libgit2/src/util/unix/realpath.c +23 -5
- data/vendor/libgit2/src/util/util.c +17 -12
- data/vendor/libgit2/src/util/util.h +28 -54
- data/vendor/libgit2/src/util/vector.c +3 -3
- data/vendor/libgit2/src/util/vector.h +2 -2
- data/vendor/libgit2/src/util/win32/error.c +1 -1
- data/vendor/libgit2/src/util/win32/path_w32.c +8 -8
- data/vendor/libgit2/src/util/win32/posix_w32.c +30 -7
- data/vendor/libgit2/src/util/win32/process.c +506 -0
- data/vendor/libgit2/src/util/win32/utf-conv.c +73 -75
- data/vendor/libgit2/src/util/win32/utf-conv.h +81 -14
- data/vendor/libgit2/src/util/win32/w32_util.c +1 -1
- metadata +72 -49
- data/vendor/libgit2/cmake/SelectWinHTTP.cmake +0 -17
- 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/libgit2/config_entries.c +0 -237
- data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
- data/vendor/libgit2/src/libgit2/errors.c +0 -238
- data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
- data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
- data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
- data/vendor/libgit2/src/libgit2/netops.c +0 -124
- data/vendor/libgit2/src/libgit2/netops.h +0 -68
- data/vendor/libgit2/src/libgit2/offmap.c +0 -101
- data/vendor/libgit2/src/libgit2/offmap.h +0 -133
- data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
- data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
- data/vendor/libgit2/src/libgit2/threadstate.c +0 -84
- data/vendor/libgit2/src/libgit2/threadstate.h +0 -24
- data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
- data/vendor/libgit2/src/util/khash.h +0 -615
- data/vendor/libgit2/src/util/strmap.c +0 -100
- data/vendor/libgit2/src/util/strmap.h +0 -131
- /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiff.h +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.h +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xinclude.h +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.h +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xtypes.h +0 -0
@@ -81,13 +81,18 @@ typedef enum {
|
|
81
81
|
GIT_OBJECT_REF_DELTA = 7 /**< A delta, base is given by object id. */
|
82
82
|
} git_object_t;
|
83
83
|
|
84
|
-
/**
|
84
|
+
/**
|
85
|
+
* An object database stores the objects (commit, trees, blobs, tags,
|
86
|
+
* etc) for a repository.
|
87
|
+
*/
|
85
88
|
typedef struct git_odb git_odb;
|
86
89
|
|
87
90
|
/** A custom backend in an ODB */
|
88
91
|
typedef struct git_odb_backend git_odb_backend;
|
89
92
|
|
90
|
-
/**
|
93
|
+
/**
|
94
|
+
* A "raw" object read from the object database.
|
95
|
+
*/
|
91
96
|
typedef struct git_odb_object git_odb_object;
|
92
97
|
|
93
98
|
/** A stream to read/write from the ODB */
|
@@ -194,7 +199,18 @@ typedef struct git_reference_iterator git_reference_iterator;
|
|
194
199
|
/** Transactional interface to references */
|
195
200
|
typedef struct git_transaction git_transaction;
|
196
201
|
|
197
|
-
/**
|
202
|
+
/**
|
203
|
+
* Annotated commits are commits with additional metadata about how the
|
204
|
+
* commit was resolved, which can be used for maintaining the user's
|
205
|
+
* "intent" through commands like merge and rebase.
|
206
|
+
*
|
207
|
+
* For example, if a user wants to conceptually "merge `HEAD`", then the
|
208
|
+
* commit portion of an annotated commit will point to the `HEAD` commit,
|
209
|
+
* but the _annotation_ will denote the ref `HEAD`. This allows git to
|
210
|
+
* perform the internal bookkeeping so that the system knows both the
|
211
|
+
* content of what is being merged but also how the content was looked up
|
212
|
+
* so that it can be recorded in the reflog appropriately.
|
213
|
+
*/
|
198
214
|
typedef struct git_annotated_commit git_annotated_commit;
|
199
215
|
|
200
216
|
/** Representation of a status collection */
|
@@ -7,23 +7,31 @@
|
|
7
7
|
#ifndef INCLUDE_git_version_h__
|
8
8
|
#define INCLUDE_git_version_h__
|
9
9
|
|
10
|
+
/**
|
11
|
+
* @file git2/version.h
|
12
|
+
* @brief The version of libgit2
|
13
|
+
* @ingroup Git
|
14
|
+
* @{
|
15
|
+
*/
|
16
|
+
GIT_BEGIN_DECL
|
17
|
+
|
10
18
|
/**
|
11
19
|
* The version string for libgit2. This string follows semantic
|
12
20
|
* versioning (v2) guidelines.
|
13
21
|
*/
|
14
|
-
#define LIBGIT2_VERSION
|
22
|
+
#define LIBGIT2_VERSION "1.9.0"
|
15
23
|
|
16
24
|
/** The major version number for this version of libgit2. */
|
17
|
-
#define
|
25
|
+
#define LIBGIT2_VERSION_MAJOR 1
|
18
26
|
|
19
27
|
/** The minor version number for this version of libgit2. */
|
20
|
-
#define
|
28
|
+
#define LIBGIT2_VERSION_MINOR 9
|
21
29
|
|
22
30
|
/** The revision ("teeny") version number for this version of libgit2. */
|
23
|
-
#define
|
31
|
+
#define LIBGIT2_VERSION_REVISION 0
|
24
32
|
|
25
33
|
/** The Windows DLL patch number for this version of libgit2. */
|
26
|
-
#define
|
34
|
+
#define LIBGIT2_VERSION_PATCH 0
|
27
35
|
|
28
36
|
/**
|
29
37
|
* The prerelease string for this version of libgit2. For development
|
@@ -31,9 +39,37 @@
|
|
31
39
|
* a prerelease name like "beta" or "rc1". For final releases, this will
|
32
40
|
* be `NULL`.
|
33
41
|
*/
|
34
|
-
#define
|
42
|
+
#define LIBGIT2_VERSION_PRERELEASE NULL
|
43
|
+
|
44
|
+
/**
|
45
|
+
* The library ABI soversion for this version of libgit2. This should
|
46
|
+
* only be changed when the library has a breaking ABI change, and so
|
47
|
+
* may not reflect the library's API version number.
|
48
|
+
*/
|
49
|
+
#define LIBGIT2_SOVERSION "1.9"
|
50
|
+
|
51
|
+
/**
|
52
|
+
* An integer value representing the libgit2 version number. For example,
|
53
|
+
* libgit2 1.6.3 is 1060300.
|
54
|
+
*/
|
55
|
+
#define LIBGIT2_VERSION_NUMBER ( \
|
56
|
+
(LIBGIT2_VERSION_MAJOR * 1000000) + \
|
57
|
+
(LIBGIT2_VERSION_MINOR * 10000) + \
|
58
|
+
(LIBGIT2_VERSION_REVISION * 100))
|
59
|
+
|
60
|
+
/**
|
61
|
+
* Compare the libgit2 version against a given version. Evaluates to true
|
62
|
+
* if the given major, minor, and revision values are greater than or equal
|
63
|
+
* to the currently running libgit2 version. For example:
|
64
|
+
*
|
65
|
+
* #if LIBGIT2_VERSION_CHECK(1, 6, 3)
|
66
|
+
* # error libgit2 version is >= 1.6.3
|
67
|
+
* #endif
|
68
|
+
*/
|
69
|
+
#define LIBGIT2_VERSION_CHECK(major, minor, revision) \
|
70
|
+
(LIBGIT2_VERSION_NUMBER >= ((major)*1000000)+((minor)*10000)+((revision)*100))
|
35
71
|
|
36
|
-
/**
|
37
|
-
|
72
|
+
/** @} */
|
73
|
+
GIT_END_DECL
|
38
74
|
|
39
75
|
#endif
|
@@ -11,11 +11,12 @@
|
|
11
11
|
#include "buffer.h"
|
12
12
|
#include "types.h"
|
13
13
|
#include "strarray.h"
|
14
|
+
#include "checkout.h"
|
14
15
|
|
15
16
|
/**
|
16
|
-
* @file git2/
|
17
|
-
* @brief
|
18
|
-
* @defgroup git_commit
|
17
|
+
* @file git2/worktree.h
|
18
|
+
* @brief Additional working directories for a repository
|
19
|
+
* @defgroup git_commit Additional working directories for a repository
|
19
20
|
* @ingroup Git
|
20
21
|
* @{
|
21
22
|
*/
|
@@ -85,8 +86,9 @@ GIT_EXTERN(int) git_worktree_validate(const git_worktree *wt);
|
|
85
86
|
typedef struct git_worktree_add_options {
|
86
87
|
unsigned int version;
|
87
88
|
|
88
|
-
int lock;
|
89
|
-
|
89
|
+
int lock; /**< lock newly created worktree */
|
90
|
+
int checkout_existing; /**< allow checkout of existing branch matching worktree name */
|
91
|
+
git_reference *ref; /**< reference to use for the new worktree HEAD */
|
90
92
|
|
91
93
|
/**
|
92
94
|
* Options for the checkout.
|
@@ -94,8 +96,12 @@ typedef struct git_worktree_add_options {
|
|
94
96
|
git_checkout_options checkout_options;
|
95
97
|
} git_worktree_add_options;
|
96
98
|
|
99
|
+
/** Current version for the `git_worktree_add_options` structure */
|
97
100
|
#define GIT_WORKTREE_ADD_OPTIONS_VERSION 1
|
98
|
-
|
101
|
+
|
102
|
+
/** Static constructor for `git_worktree_add_options` */
|
103
|
+
#define GIT_WORKTREE_ADD_OPTIONS_INIT { GIT_WORKTREE_ADD_OPTIONS_VERSION, \
|
104
|
+
0, 0, NULL, GIT_CHECKOUT_OPTIONS_INIT }
|
99
105
|
|
100
106
|
/**
|
101
107
|
* Initialize git_worktree_add_options structure
|
@@ -208,7 +214,10 @@ typedef struct git_worktree_prune_options {
|
|
208
214
|
uint32_t flags;
|
209
215
|
} git_worktree_prune_options;
|
210
216
|
|
217
|
+
/** Current version for the `git_worktree_prune_options` structure */
|
211
218
|
#define GIT_WORKTREE_PRUNE_OPTIONS_VERSION 1
|
219
|
+
|
220
|
+
/** Static constructor for `git_worktree_prune_options` */
|
212
221
|
#define GIT_WORKTREE_PRUNE_OPTIONS_INIT {GIT_WORKTREE_PRUNE_OPTIONS_VERSION,0}
|
213
222
|
|
214
223
|
/**
|
@@ -237,7 +246,9 @@ GIT_EXTERN(int) git_worktree_prune_options_init(
|
|
237
246
|
*
|
238
247
|
* If the worktree is not valid and not locked or if the above
|
239
248
|
* flags have been passed in, this function will return a
|
240
|
-
* positive value.
|
249
|
+
* positive value. If the worktree is not prunable, an error
|
250
|
+
* message will be set (visible in `giterr_last`) with details about
|
251
|
+
* why.
|
241
252
|
*
|
242
253
|
* @param wt Worktree to check.
|
243
254
|
* @param opts The prunable options.
|
@@ -263,4 +274,5 @@ GIT_EXTERN(int) git_worktree_prune(git_worktree *wt,
|
|
263
274
|
|
264
275
|
/** @} */
|
265
276
|
GIT_END_DECL
|
277
|
+
|
266
278
|
#endif
|
@@ -41,8 +41,8 @@ include(SelectHTTPSBackend)
|
|
41
41
|
include(SelectHashes)
|
42
42
|
include(SelectHTTPParser)
|
43
43
|
include(SelectRegex)
|
44
|
+
include(SelectXdiff)
|
44
45
|
include(SelectSSH)
|
45
|
-
include(SelectWinHTTP)
|
46
46
|
include(SelectZlib)
|
47
47
|
|
48
48
|
#
|
@@ -58,20 +58,43 @@ add_feature_info(futimens GIT_USE_FUTIMENS "futimens support")
|
|
58
58
|
|
59
59
|
# qsort
|
60
60
|
|
61
|
-
|
62
|
-
|
63
|
-
|
61
|
+
# old-style FreeBSD qsort_r() has the 'context' parameter as the first argument
|
62
|
+
# of the comparison function:
|
63
|
+
check_prototype_definition_safe(qsort_r
|
64
|
+
"void (qsort_r)(void *base, size_t nmemb, size_t size, void *context, int (*compar)(void *, const void *, const void *))"
|
65
|
+
"" "stdlib.h" GIT_QSORT_BSD)
|
66
|
+
|
67
|
+
# GNU or POSIX qsort_r() has the 'context' parameter as the last argument of the
|
68
|
+
# comparison function:
|
69
|
+
check_prototype_definition_safe(qsort_r
|
70
|
+
"void (qsort_r)(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *, void *), void *context)"
|
71
|
+
"" "stdlib.h" GIT_QSORT_GNU)
|
72
|
+
|
73
|
+
# C11 qsort_s() has the 'context' parameter as the last argument of the
|
74
|
+
# comparison function, and returns an error status:
|
75
|
+
check_prototype_definition_safe(qsort_s
|
76
|
+
"errno_t (qsort_s)(void *base, rsize_t nmemb, rsize_t size, int (*compar)(const void *, const void *, void *), void *context)"
|
77
|
+
"0" "stdlib.h" GIT_QSORT_C11)
|
78
|
+
|
79
|
+
# MSC qsort_s() has the 'context' parameter as the first argument of the
|
80
|
+
# comparison function, and as the last argument of qsort_s():
|
81
|
+
check_prototype_definition_safe(qsort_s
|
82
|
+
"void (qsort_s)(void *base, size_t num, size_t width, int (*compare )(void *, const void *, const void *), void *context)"
|
83
|
+
"" "stdlib.h" GIT_QSORT_MSC)
|
64
84
|
|
65
|
-
|
66
|
-
"void qsort_r(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *, void *), void *arg)"
|
67
|
-
"" "stdlib.h" GIT_QSORT_R_GNU)
|
85
|
+
# random / entropy data
|
68
86
|
|
69
|
-
|
87
|
+
check_symbol_exists(getentropy unistd.h GIT_RAND_GETENTROPY)
|
88
|
+
check_symbol_exists(getloadavg stdlib.h GIT_RAND_GETLOADAVG)
|
70
89
|
|
71
|
-
#
|
90
|
+
# poll
|
72
91
|
|
73
|
-
|
74
|
-
|
92
|
+
if(WIN32)
|
93
|
+
set(GIT_IO_WSAPOLL 1)
|
94
|
+
else()
|
95
|
+
check_symbol_exists(poll poll.h GIT_IO_POLL)
|
96
|
+
check_symbol_exists(select sys/select.h GIT_IO_SELECT)
|
97
|
+
endif()
|
75
98
|
|
76
99
|
# determine architecture of the machine
|
77
100
|
|
@@ -104,7 +127,8 @@ endif()
|
|
104
127
|
# realtime support
|
105
128
|
|
106
129
|
check_library_exists(rt clock_gettime "time.h" NEED_LIBRT)
|
107
|
-
|
130
|
+
|
131
|
+
if(NEED_LIBRT AND NOT CMAKE_SYSTEM_NAME MATCHES "iOS")
|
108
132
|
list(APPEND LIBGIT2_SYSTEM_LIBS rt)
|
109
133
|
list(APPEND LIBGIT2_PC_LIBS "-lrt")
|
110
134
|
endif()
|
@@ -112,7 +136,8 @@ endif()
|
|
112
136
|
# platform libraries
|
113
137
|
|
114
138
|
if(WIN32)
|
115
|
-
list(APPEND LIBGIT2_SYSTEM_LIBS ws2_32)
|
139
|
+
list(APPEND LIBGIT2_SYSTEM_LIBS "ws2_32" "secur32")
|
140
|
+
list(APPEND LIBGIT2_PC_LIBS "-lws2_32" "-lsecur32")
|
116
141
|
endif()
|
117
142
|
|
118
143
|
if(CMAKE_SYSTEM_NAME MATCHES "(Solaris|SunOS)")
|
@@ -160,7 +185,7 @@ add_feature_info(ntlmclient GIT_NTLM "NTLM authentication support for Unix")
|
|
160
185
|
|
161
186
|
# iconv
|
162
187
|
if(USE_ICONV)
|
163
|
-
find_package(
|
188
|
+
find_package(IntlIconv)
|
164
189
|
endif()
|
165
190
|
if(ICONV_FOUND)
|
166
191
|
set(GIT_USE_ICONV 1)
|
@@ -177,7 +202,7 @@ add_feature_info(iconv GIT_USE_ICONV "iconv encoding conversion support")
|
|
177
202
|
add_subdirectory(libgit2)
|
178
203
|
add_subdirectory(util)
|
179
204
|
|
180
|
-
if(BUILD_CLI)
|
205
|
+
if(BUILD_CLI AND NOT CMAKE_SYSTEM_NAME MATCHES "iOS")
|
181
206
|
add_subdirectory(cli)
|
182
207
|
endif()
|
183
208
|
|
@@ -4,7 +4,8 @@ set(CLI_INCLUDES
|
|
4
4
|
"${libgit2_SOURCE_DIR}/src/util"
|
5
5
|
"${libgit2_SOURCE_DIR}/src/cli"
|
6
6
|
"${libgit2_SOURCE_DIR}/include"
|
7
|
-
"${LIBGIT2_DEPENDENCY_INCLUDES}"
|
7
|
+
"${LIBGIT2_DEPENDENCY_INCLUDES}"
|
8
|
+
"${LIBGIT2_SYSTEM_INCLUDES}")
|
8
9
|
|
9
10
|
if(WIN32 AND NOT CYGWIN)
|
10
11
|
file(GLOB CLI_SRC_OS win32/*.c)
|
@@ -39,7 +40,6 @@ add_executable(git2_cli ${CLI_SRC_C} ${CLI_SRC_OS} ${CLI_OBJECTS}
|
|
39
40
|
${LIBGIT2_DEPENDENCY_OBJECTS})
|
40
41
|
target_link_libraries(git2_cli ${CLI_LIBGIT2_LIBRARY} ${LIBGIT2_SYSTEM_LIBS})
|
41
42
|
|
42
|
-
set_target_properties(git2_cli PROPERTIES C_STANDARD 90)
|
43
43
|
set_target_properties(git2_cli PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${libgit2_BINARY_DIR})
|
44
44
|
set_target_properties(git2_cli PROPERTIES OUTPUT_NAME ${LIBGIT2_FILENAME})
|
45
45
|
|
@@ -25,9 +25,13 @@ extern const cli_cmd_spec cli_cmds[];
|
|
25
25
|
extern const cli_cmd_spec *cli_cmd_spec_byname(const char *name);
|
26
26
|
|
27
27
|
/* Commands */
|
28
|
+
extern int cmd_blame(int argc, char **argv);
|
28
29
|
extern int cmd_cat_file(int argc, char **argv);
|
29
30
|
extern int cmd_clone(int argc, char **argv);
|
31
|
+
extern int cmd_config(int argc, char **argv);
|
30
32
|
extern int cmd_hash_object(int argc, char **argv);
|
31
33
|
extern int cmd_help(int argc, char **argv);
|
34
|
+
extern int cmd_index_pack(int argc, char **argv);
|
35
|
+
extern int cmd_init(int argc, char **argv);
|
32
36
|
|
33
37
|
#endif /* CLI_cmd_h__ */
|
@@ -0,0 +1,287 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
3
|
+
*
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
6
|
+
*/
|
7
|
+
|
8
|
+
#include <stdio.h>
|
9
|
+
#include <git2.h>
|
10
|
+
#include "common.h"
|
11
|
+
#include "cmd.h"
|
12
|
+
#include "error.h"
|
13
|
+
#include "sighandler.h"
|
14
|
+
#include "progress.h"
|
15
|
+
|
16
|
+
#include "fs_path.h"
|
17
|
+
#include "futils.h"
|
18
|
+
#include "date.h"
|
19
|
+
#include "hashmap.h"
|
20
|
+
|
21
|
+
#define COMMAND_NAME "blame"
|
22
|
+
|
23
|
+
static char *file;
|
24
|
+
static int porcelain, line_porcelain;
|
25
|
+
|
26
|
+
static const cli_opt_spec opts[] = {
|
27
|
+
CLI_COMMON_OPT,
|
28
|
+
|
29
|
+
{ CLI_OPT_TYPE_SWITCH, "porcelain", 'p', &porcelain, 1,
|
30
|
+
CLI_OPT_USAGE_DEFAULT, NULL, "show machine readable output" },
|
31
|
+
{ CLI_OPT_TYPE_SWITCH, "line-porcelain", 0, &line_porcelain, 1,
|
32
|
+
CLI_OPT_USAGE_DEFAULT, NULL, "show individual lines in machine readable output" },
|
33
|
+
{ CLI_OPT_TYPE_LITERAL },
|
34
|
+
{ CLI_OPT_TYPE_ARG, "file", 0, &file, 0,
|
35
|
+
CLI_OPT_USAGE_REQUIRED, "file", "file to blame" },
|
36
|
+
|
37
|
+
{ 0 }
|
38
|
+
};
|
39
|
+
|
40
|
+
static void print_help(void)
|
41
|
+
{
|
42
|
+
cli_opt_usage_fprint(stdout, PROGRAM_NAME, COMMAND_NAME, opts, 0);
|
43
|
+
printf("\n");
|
44
|
+
|
45
|
+
printf("Show the origin of each line of a file.\n");
|
46
|
+
printf("\n");
|
47
|
+
|
48
|
+
printf("Options:\n");
|
49
|
+
|
50
|
+
cli_opt_help_fprint(stdout, opts);
|
51
|
+
}
|
52
|
+
|
53
|
+
static int strintlen(size_t n)
|
54
|
+
{
|
55
|
+
int len = 1;
|
56
|
+
|
57
|
+
while (n > 10) {
|
58
|
+
n /= 10;
|
59
|
+
len++;
|
60
|
+
|
61
|
+
if (len == INT_MAX)
|
62
|
+
break;
|
63
|
+
}
|
64
|
+
|
65
|
+
return len;
|
66
|
+
}
|
67
|
+
|
68
|
+
static int fmt_date(git_str *out, git_time_t time, int offset)
|
69
|
+
{
|
70
|
+
time_t t;
|
71
|
+
struct tm gmt;
|
72
|
+
|
73
|
+
GIT_ASSERT_ARG(out);
|
74
|
+
|
75
|
+
t = (time_t)(time + offset * 60);
|
76
|
+
|
77
|
+
if (p_gmtime_r(&t, &gmt) == NULL)
|
78
|
+
return -1;
|
79
|
+
|
80
|
+
return git_str_printf(out, "%.4u-%02u-%02u %02u:%02u:%02u %+03d%02d",
|
81
|
+
gmt.tm_year + 1900, gmt.tm_mon + 1, gmt.tm_mday,
|
82
|
+
gmt.tm_hour, gmt.tm_min, gmt.tm_sec,
|
83
|
+
offset / 60, offset % 60);
|
84
|
+
}
|
85
|
+
|
86
|
+
static int print_standard(git_blame *blame)
|
87
|
+
{
|
88
|
+
size_t max_line_number = 0;
|
89
|
+
int max_lineno_len, max_line_len, max_author_len = 0, max_path_len = 0;
|
90
|
+
const char *last_path = NULL;
|
91
|
+
const git_blame_line *line;
|
92
|
+
bool paths_differ = false;
|
93
|
+
git_str date_str = GIT_STR_INIT;
|
94
|
+
size_t i;
|
95
|
+
int ret = 0;
|
96
|
+
|
97
|
+
/* Compute the maximum size of things */
|
98
|
+
for (i = 0; i < git_blame_hunkcount(blame); i++) {
|
99
|
+
const git_blame_hunk *hunk = git_blame_hunk_byindex(blame, i);
|
100
|
+
size_t hunk_author_len = strlen(hunk->orig_signature->name);
|
101
|
+
size_t hunk_path_len = strlen(hunk->orig_path);
|
102
|
+
size_t hunk_max_line_number =
|
103
|
+
hunk->orig_start_line_number + hunk->lines_in_hunk;
|
104
|
+
|
105
|
+
if (hunk_max_line_number > max_line_number)
|
106
|
+
max_line_number = hunk_max_line_number;
|
107
|
+
|
108
|
+
if (hunk_author_len > INT_MAX)
|
109
|
+
max_author_len = INT_MAX;
|
110
|
+
else if ((int)hunk_author_len > max_author_len)
|
111
|
+
max_author_len = (int)hunk_author_len;
|
112
|
+
|
113
|
+
if (hunk_path_len > INT_MAX)
|
114
|
+
hunk_path_len = INT_MAX;
|
115
|
+
else if ((int)hunk_path_len > max_path_len)
|
116
|
+
max_path_len = (int)hunk_path_len;
|
117
|
+
|
118
|
+
if (!paths_differ && last_path != NULL &&
|
119
|
+
strcmp(last_path, hunk->orig_path) != 0) {
|
120
|
+
paths_differ = true;
|
121
|
+
}
|
122
|
+
|
123
|
+
last_path = hunk->orig_path;
|
124
|
+
}
|
125
|
+
|
126
|
+
max_lineno_len = strintlen(max_line_number);
|
127
|
+
|
128
|
+
max_author_len--;
|
129
|
+
|
130
|
+
for (i = 1; i < git_blame_linecount(blame); i++) {
|
131
|
+
const git_blame_hunk *hunk = git_blame_hunk_byline(blame, i);
|
132
|
+
int oid_abbrev;
|
133
|
+
|
134
|
+
if (!hunk)
|
135
|
+
break;
|
136
|
+
|
137
|
+
oid_abbrev = hunk->boundary ? 7 : 8;
|
138
|
+
printf("%s%.*s ", hunk->boundary ? "^" : "",
|
139
|
+
oid_abbrev, git_oid_tostr_s(&hunk->orig_commit_id));
|
140
|
+
|
141
|
+
if (paths_differ)
|
142
|
+
printf("%-*.*s ", max_path_len, max_path_len, hunk->orig_path);
|
143
|
+
|
144
|
+
git_str_clear(&date_str);
|
145
|
+
if (fmt_date(&date_str,
|
146
|
+
hunk->orig_signature->when.time,
|
147
|
+
hunk->orig_signature->when.offset) < 0) {
|
148
|
+
ret = cli_error_git();
|
149
|
+
goto done;
|
150
|
+
}
|
151
|
+
|
152
|
+
if ((line = git_blame_line_byindex(blame, i)) == NULL) {
|
153
|
+
ret = cli_error_git();
|
154
|
+
goto done;
|
155
|
+
}
|
156
|
+
|
157
|
+
max_line_len = (int)min(line->len, INT_MAX);
|
158
|
+
|
159
|
+
printf("(%-*.*s %s %*" PRIuZ ") %.*s" ,
|
160
|
+
max_author_len, max_author_len, hunk->orig_signature->name,
|
161
|
+
date_str.ptr,
|
162
|
+
max_lineno_len, i,
|
163
|
+
max_line_len, line->ptr);
|
164
|
+
printf("\n");
|
165
|
+
}
|
166
|
+
|
167
|
+
done:
|
168
|
+
git_str_dispose(&date_str);
|
169
|
+
return ret;
|
170
|
+
}
|
171
|
+
|
172
|
+
GIT_INLINE(uint32_t) oid_hashcode(const git_oid *oid)
|
173
|
+
{
|
174
|
+
uint32_t hash;
|
175
|
+
memcpy(&hash, oid->id, sizeof(uint32_t));
|
176
|
+
return hash;
|
177
|
+
}
|
178
|
+
|
179
|
+
GIT_HASHSET_SETUP(git_blame_commitmap, const git_oid *, oid_hashcode, git_oid_equal);
|
180
|
+
|
181
|
+
static int print_porcelain(git_blame *blame)
|
182
|
+
{
|
183
|
+
git_blame_commitmap seen_ids = GIT_HASHSET_INIT;
|
184
|
+
size_t i, j;
|
185
|
+
|
186
|
+
for (i = 0; i < git_blame_hunkcount(blame); i++) {
|
187
|
+
const git_blame_line *line;
|
188
|
+
const git_blame_hunk *hunk = git_blame_hunk_byindex(blame, i);
|
189
|
+
|
190
|
+
for (j = 0; j < hunk->lines_in_hunk; j++) {
|
191
|
+
size_t line_number = hunk->final_start_line_number + j;
|
192
|
+
bool seen = git_blame_commitmap_contains(&seen_ids, &hunk->orig_commit_id);
|
193
|
+
|
194
|
+
printf("%s %" PRIuZ " %" PRIuZ,
|
195
|
+
git_oid_tostr_s(&hunk->orig_commit_id),
|
196
|
+
hunk->orig_start_line_number + j,
|
197
|
+
hunk->final_start_line_number + j);
|
198
|
+
|
199
|
+
if (!j)
|
200
|
+
printf(" %" PRIuZ, hunk->lines_in_hunk);
|
201
|
+
|
202
|
+
printf("\n");
|
203
|
+
|
204
|
+
if ((!j && !seen) || line_porcelain) {
|
205
|
+
printf("author %s\n", hunk->orig_signature->name);
|
206
|
+
printf("author-mail <%s>\n", hunk->orig_signature->email);
|
207
|
+
printf("author-time %" PRId64 "\n", hunk->orig_signature->when.time);
|
208
|
+
printf("author-tz %+03d%02d\n",
|
209
|
+
hunk->orig_signature->when.offset / 60,
|
210
|
+
hunk->orig_signature->when.offset % 60);
|
211
|
+
|
212
|
+
printf("committer %s\n", hunk->orig_committer->name);
|
213
|
+
printf("committer-mail <%s>\n", hunk->orig_committer->email);
|
214
|
+
printf("committer-time %" PRId64 "\n", hunk->orig_committer->when.time);
|
215
|
+
printf("committer-tz %+03d%02d\n",
|
216
|
+
hunk->orig_committer->when.offset / 60,
|
217
|
+
hunk->orig_committer->when.offset % 60);
|
218
|
+
|
219
|
+
printf("summary %s\n", hunk->summary);
|
220
|
+
|
221
|
+
/* TODO: previous */
|
222
|
+
|
223
|
+
printf("filename %s\n", hunk->orig_path);
|
224
|
+
}
|
225
|
+
|
226
|
+
if ((line = git_blame_line_byindex(blame, line_number)) == NULL)
|
227
|
+
return cli_error_git();
|
228
|
+
|
229
|
+
printf("\t%.*s\n", (int)min(line->len, INT_MAX),
|
230
|
+
line->ptr);
|
231
|
+
|
232
|
+
if (!seen)
|
233
|
+
git_blame_commitmap_add(&seen_ids, &hunk->orig_commit_id);
|
234
|
+
}
|
235
|
+
}
|
236
|
+
|
237
|
+
git_blame_commitmap_dispose(&seen_ids);
|
238
|
+
return 0;
|
239
|
+
}
|
240
|
+
|
241
|
+
int cmd_blame(int argc, char **argv)
|
242
|
+
{
|
243
|
+
cli_repository_open_options open_opts = { argv + 1, argc - 1 };
|
244
|
+
git_blame_options blame_opts = GIT_BLAME_OPTIONS_INIT;
|
245
|
+
git_repository *repo = NULL;
|
246
|
+
git_str workdir_path = GIT_STR_INIT;
|
247
|
+
git_blame *blame = NULL;
|
248
|
+
cli_opt invalid_opt;
|
249
|
+
int ret = 0;
|
250
|
+
|
251
|
+
blame_opts.flags |= GIT_BLAME_USE_MAILMAP;
|
252
|
+
|
253
|
+
if (cli_opt_parse(&invalid_opt, opts, argv + 1, argc - 1, CLI_OPT_PARSE_GNU))
|
254
|
+
return cli_opt_usage_error(COMMAND_NAME, opts, &invalid_opt);
|
255
|
+
|
256
|
+
if (cli_opt__show_help) {
|
257
|
+
print_help();
|
258
|
+
return 0;
|
259
|
+
}
|
260
|
+
|
261
|
+
if (!file) {
|
262
|
+
ret = cli_error_usage("you must specify a file to blame");
|
263
|
+
goto done;
|
264
|
+
}
|
265
|
+
|
266
|
+
if (cli_repository_open(&repo, &open_opts) < 0)
|
267
|
+
return cli_error_git();
|
268
|
+
|
269
|
+
if ((ret = cli_resolve_path(&workdir_path, repo, file)) != 0)
|
270
|
+
goto done;
|
271
|
+
|
272
|
+
if (git_blame_file(&blame, repo, workdir_path.ptr, &blame_opts) < 0) {
|
273
|
+
ret = cli_error_git();
|
274
|
+
goto done;
|
275
|
+
}
|
276
|
+
|
277
|
+
if (porcelain || line_porcelain)
|
278
|
+
ret = print_porcelain(blame);
|
279
|
+
else
|
280
|
+
ret = print_standard(blame);
|
281
|
+
|
282
|
+
done:
|
283
|
+
git_str_dispose(&workdir_path);
|
284
|
+
git_blame_free(blame);
|
285
|
+
git_repository_free(repo);
|
286
|
+
return ret;
|
287
|
+
}
|
@@ -6,7 +6,7 @@
|
|
6
6
|
*/
|
7
7
|
|
8
8
|
#include <git2.h>
|
9
|
-
#include "
|
9
|
+
#include "common.h"
|
10
10
|
#include "cmd.h"
|
11
11
|
|
12
12
|
#define COMMAND_NAME "cat-file"
|
@@ -19,14 +19,11 @@ typedef enum {
|
|
19
19
|
DISPLAY_TYPE
|
20
20
|
} display_t;
|
21
21
|
|
22
|
-
static int show_help;
|
23
22
|
static int display = DISPLAY_CONTENT;
|
24
23
|
static char *type_name, *object_spec;
|
25
24
|
|
26
25
|
static const cli_opt_spec opts[] = {
|
27
|
-
|
28
|
-
CLI_OPT_USAGE_HIDDEN | CLI_OPT_USAGE_STOP_PARSING, NULL,
|
29
|
-
"display help about the " COMMAND_NAME " command" },
|
26
|
+
CLI_COMMON_OPT,
|
30
27
|
|
31
28
|
{ CLI_OPT_TYPE_SWITCH, NULL, 't', &display, DISPLAY_TYPE,
|
32
29
|
CLI_OPT_USAGE_REQUIRED, NULL, "display the type of the object" },
|
@@ -45,7 +42,7 @@ static const cli_opt_spec opts[] = {
|
|
45
42
|
|
46
43
|
static void print_help(void)
|
47
44
|
{
|
48
|
-
cli_opt_usage_fprint(stdout, PROGRAM_NAME, COMMAND_NAME, opts);
|
45
|
+
cli_opt_usage_fprint(stdout, PROGRAM_NAME, COMMAND_NAME, opts, 0);
|
49
46
|
printf("\n");
|
50
47
|
|
51
48
|
printf("Display the content for the given object in the repository.\n");
|
@@ -139,6 +136,7 @@ static int print_pretty(git_object *object)
|
|
139
136
|
|
140
137
|
int cmd_cat_file(int argc, char **argv)
|
141
138
|
{
|
139
|
+
cli_repository_open_options open_opts = { argv + 1, argc - 1};
|
142
140
|
git_repository *repo = NULL;
|
143
141
|
git_object *object = NULL;
|
144
142
|
git_object_t type;
|
@@ -148,12 +146,12 @@ int cmd_cat_file(int argc, char **argv)
|
|
148
146
|
if (cli_opt_parse(&invalid_opt, opts, argv + 1, argc - 1, CLI_OPT_PARSE_GNU))
|
149
147
|
return cli_opt_usage_error(COMMAND_NAME, opts, &invalid_opt);
|
150
148
|
|
151
|
-
if (
|
149
|
+
if (cli_opt__show_help) {
|
152
150
|
print_help();
|
153
151
|
return 0;
|
154
152
|
}
|
155
153
|
|
156
|
-
if (
|
154
|
+
if (cli_repository_open(&repo, &open_opts) < 0)
|
157
155
|
return cli_error_git();
|
158
156
|
|
159
157
|
if ((giterr = git_revparse_single(&object, repo, object_spec)) < 0) {
|