rugged 0.28.4.1 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/ext/rugged/extconf.rb +3 -1
- data/ext/rugged/rugged.c +35 -31
- data/ext/rugged/rugged.h +13 -0
- data/ext/rugged/rugged_blob.c +11 -9
- data/ext/rugged/rugged_commit.c +17 -15
- data/ext/rugged/rugged_config.c +1 -1
- data/ext/rugged/rugged_diff.c +4 -26
- data/ext/rugged/rugged_index.c +4 -2
- data/ext/rugged/rugged_note.c +5 -3
- data/ext/rugged/rugged_object.c +57 -10
- data/ext/rugged/rugged_rebase.c +3 -1
- data/ext/rugged/rugged_remote.c +32 -8
- data/ext/rugged/rugged_repo.c +232 -17
- data/ext/rugged/rugged_tag.c +8 -6
- data/ext/rugged/rugged_tree.c +18 -16
- data/lib/rugged/commit.rb +1 -2
- data/lib/rugged/repository.rb +5 -6
- data/lib/rugged/submodule_collection.rb +4 -4
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/AUTHORS +1 -0
- data/vendor/libgit2/CMakeLists.txt +39 -19
- data/vendor/libgit2/COPYING +28 -0
- data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +5 -1
- data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
- data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
- data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +28 -0
- data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +38 -0
- data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +37 -0
- data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
- data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +6 -0
- data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +77 -0
- data/vendor/libgit2/cmake/Modules/SanitizeBool.cmake +20 -0
- data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +56 -0
- data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +127 -0
- data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +69 -0
- data/vendor/libgit2/deps/http-parser/http_parser.c +11 -6
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +23 -0
- data/vendor/libgit2/deps/ntlmclient/compat.h +55 -0
- data/vendor/libgit2/deps/ntlmclient/crypt.h +64 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +120 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +18 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +145 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +18 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +130 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +21 -0
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +1422 -0
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +174 -0
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +320 -0
- data/vendor/libgit2/deps/ntlmclient/unicode.h +36 -0
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +445 -0
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +201 -0
- data/vendor/libgit2/deps/ntlmclient/utf8.h +1257 -0
- data/vendor/libgit2/deps/ntlmclient/util.c +21 -0
- data/vendor/libgit2/deps/ntlmclient/util.h +14 -0
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +140 -0
- data/vendor/libgit2/deps/pcre/COPYING +5 -0
- data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +22 -0
- data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +17 -0
- data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +58 -0
- data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +29 -0
- data/vendor/libgit2/deps/pcre/config.h.in +57 -0
- data/vendor/libgit2/deps/pcre/pcre.h +641 -0
- data/vendor/libgit2/deps/pcre/pcre_byte_order.c +319 -0
- data/vendor/libgit2/deps/pcre/pcre_chartables.c +198 -0
- data/vendor/libgit2/deps/pcre/pcre_compile.c +9800 -0
- data/vendor/libgit2/deps/pcre/pcre_config.c +190 -0
- data/vendor/libgit2/deps/pcre/pcre_dfa_exec.c +3676 -0
- data/vendor/libgit2/deps/pcre/pcre_exec.c +7173 -0
- data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +245 -0
- data/vendor/libgit2/deps/pcre/pcre_get.c +669 -0
- data/vendor/libgit2/deps/pcre/pcre_globals.c +86 -0
- data/vendor/libgit2/deps/pcre/pcre_internal.h +2787 -0
- data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +11913 -0
- data/vendor/libgit2/deps/pcre/pcre_maketables.c +156 -0
- data/vendor/libgit2/deps/pcre/pcre_newline.c +210 -0
- data/vendor/libgit2/deps/pcre/pcre_ord2utf8.c +94 -0
- data/vendor/libgit2/deps/pcre/pcre_printint.c +834 -0
- data/vendor/libgit2/deps/pcre/pcre_refcount.c +92 -0
- data/vendor/libgit2/deps/pcre/pcre_string_utils.c +211 -0
- data/vendor/libgit2/deps/pcre/pcre_study.c +1686 -0
- data/vendor/libgit2/deps/pcre/pcre_tables.c +727 -0
- data/vendor/libgit2/deps/pcre/pcre_ucd.c +3644 -0
- data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +301 -0
- data/vendor/libgit2/deps/pcre/pcre_version.c +98 -0
- data/vendor/libgit2/deps/pcre/pcre_xclass.c +268 -0
- data/vendor/libgit2/deps/pcre/pcreposix.c +421 -0
- data/vendor/libgit2/deps/pcre/pcreposix.h +117 -0
- data/vendor/libgit2/deps/pcre/ucp.h +224 -0
- data/vendor/libgit2/deps/zlib/adler32.c +0 -7
- data/vendor/libgit2/deps/zlib/crc32.c +0 -7
- data/vendor/libgit2/include/git2.h +2 -0
- data/vendor/libgit2/include/git2/apply.h +22 -2
- data/vendor/libgit2/include/git2/attr.h +23 -13
- data/vendor/libgit2/include/git2/blame.h +2 -2
- data/vendor/libgit2/include/git2/blob.h +44 -12
- data/vendor/libgit2/include/git2/branch.h +74 -57
- data/vendor/libgit2/include/git2/buffer.h +20 -14
- data/vendor/libgit2/include/git2/cert.h +135 -0
- data/vendor/libgit2/include/git2/checkout.h +46 -14
- data/vendor/libgit2/include/git2/cherrypick.h +3 -3
- data/vendor/libgit2/include/git2/clone.h +2 -2
- data/vendor/libgit2/include/git2/commit.h +23 -1
- data/vendor/libgit2/include/git2/common.h +15 -6
- data/vendor/libgit2/include/git2/config.h +12 -12
- data/vendor/libgit2/include/git2/cred_helpers.h +4 -42
- data/vendor/libgit2/include/git2/credential.h +314 -0
- data/vendor/libgit2/include/git2/credential_helpers.h +52 -0
- data/vendor/libgit2/include/git2/deprecated.h +321 -3
- data/vendor/libgit2/include/git2/describe.h +4 -4
- data/vendor/libgit2/include/git2/diff.h +16 -14
- data/vendor/libgit2/include/git2/errors.h +4 -2
- data/vendor/libgit2/include/git2/filter.h +8 -0
- data/vendor/libgit2/include/git2/index.h +2 -1
- data/vendor/libgit2/include/git2/indexer.h +48 -4
- data/vendor/libgit2/include/git2/merge.h +6 -10
- data/vendor/libgit2/include/git2/net.h +0 -5
- data/vendor/libgit2/include/git2/object.h +2 -14
- data/vendor/libgit2/include/git2/odb.h +3 -2
- data/vendor/libgit2/include/git2/odb_backend.h +5 -4
- data/vendor/libgit2/include/git2/oid.h +11 -6
- data/vendor/libgit2/include/git2/pack.h +12 -1
- data/vendor/libgit2/include/git2/proxy.h +6 -4
- data/vendor/libgit2/include/git2/rebase.h +46 -2
- data/vendor/libgit2/include/git2/refs.h +19 -0
- data/vendor/libgit2/include/git2/remote.h +40 -15
- data/vendor/libgit2/include/git2/repository.h +29 -6
- data/vendor/libgit2/include/git2/revert.h +1 -1
- data/vendor/libgit2/include/git2/revwalk.h +7 -3
- data/vendor/libgit2/include/git2/stash.h +4 -4
- data/vendor/libgit2/include/git2/status.h +25 -16
- data/vendor/libgit2/include/git2/submodule.h +20 -3
- data/vendor/libgit2/include/git2/sys/alloc.h +9 -9
- data/vendor/libgit2/include/git2/sys/cred.h +15 -0
- data/vendor/libgit2/include/git2/sys/credential.h +90 -0
- data/vendor/libgit2/include/git2/sys/index.h +4 -2
- data/vendor/libgit2/include/git2/sys/mempack.h +2 -1
- data/vendor/libgit2/include/git2/sys/merge.h +1 -1
- data/vendor/libgit2/include/git2/sys/odb_backend.h +48 -4
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +164 -21
- data/vendor/libgit2/include/git2/sys/repository.h +17 -6
- data/vendor/libgit2/include/git2/sys/transport.h +4 -4
- data/vendor/libgit2/include/git2/tag.h +11 -2
- data/vendor/libgit2/include/git2/trace.h +2 -2
- data/vendor/libgit2/include/git2/transport.h +11 -340
- data/vendor/libgit2/include/git2/tree.h +5 -3
- data/vendor/libgit2/include/git2/types.h +4 -89
- data/vendor/libgit2/include/git2/version.h +5 -5
- data/vendor/libgit2/include/git2/worktree.h +5 -5
- data/vendor/libgit2/src/CMakeLists.txt +99 -236
- data/vendor/libgit2/src/alloc.c +2 -14
- data/vendor/libgit2/src/{stdalloc.c → allocators/stdalloc.c} +3 -4
- data/vendor/libgit2/src/{stdalloc.h → allocators/stdalloc.h} +4 -4
- data/vendor/libgit2/src/allocators/win32_crtdbg.c +118 -0
- data/vendor/libgit2/src/{transports/cred.h → allocators/win32_crtdbg.h} +5 -4
- data/vendor/libgit2/src/apply.c +60 -30
- data/vendor/libgit2/src/attr.c +70 -64
- data/vendor/libgit2/src/attr_file.c +189 -96
- data/vendor/libgit2/src/attr_file.h +9 -9
- data/vendor/libgit2/src/attrcache.c +48 -48
- data/vendor/libgit2/src/attrcache.h +2 -1
- data/vendor/libgit2/src/blame.c +17 -5
- data/vendor/libgit2/src/blame.h +1 -1
- data/vendor/libgit2/src/blame_git.c +21 -7
- data/vendor/libgit2/src/blob.c +81 -17
- data/vendor/libgit2/src/blob.h +2 -2
- data/vendor/libgit2/src/branch.c +60 -32
- data/vendor/libgit2/src/buffer.c +19 -7
- data/vendor/libgit2/src/buffer.h +1 -0
- data/vendor/libgit2/src/cache.c +33 -36
- data/vendor/libgit2/src/cache.h +1 -1
- data/vendor/libgit2/src/cc-compat.h +5 -0
- data/vendor/libgit2/src/checkout.c +26 -16
- data/vendor/libgit2/src/cherrypick.c +9 -3
- data/vendor/libgit2/src/clone.c +29 -7
- data/vendor/libgit2/src/clone.h +4 -0
- data/vendor/libgit2/src/commit.c +70 -22
- data/vendor/libgit2/src/commit.h +6 -0
- data/vendor/libgit2/src/commit_list.c +28 -76
- data/vendor/libgit2/src/commit_list.h +2 -2
- data/vendor/libgit2/src/common.h +3 -75
- data/vendor/libgit2/src/config.c +31 -40
- data/vendor/libgit2/src/config.h +7 -6
- data/vendor/libgit2/src/config_backend.h +12 -0
- data/vendor/libgit2/src/config_cache.c +39 -39
- data/vendor/libgit2/src/config_entries.c +69 -99
- data/vendor/libgit2/src/config_entries.h +1 -0
- data/vendor/libgit2/src/config_file.c +346 -380
- data/vendor/libgit2/src/config_mem.c +12 -16
- data/vendor/libgit2/src/config_parse.c +49 -29
- data/vendor/libgit2/src/config_parse.h +13 -12
- data/vendor/libgit2/src/config_snapshot.c +206 -0
- data/vendor/libgit2/src/crlf.c +14 -14
- data/vendor/libgit2/src/describe.c +21 -20
- data/vendor/libgit2/src/diff.c +43 -58
- data/vendor/libgit2/src/diff.h +4 -3
- data/vendor/libgit2/src/diff_driver.c +37 -38
- data/vendor/libgit2/src/diff_file.c +12 -10
- data/vendor/libgit2/src/diff_file.h +2 -2
- data/vendor/libgit2/src/diff_generate.c +148 -98
- data/vendor/libgit2/src/diff_generate.h +2 -2
- data/vendor/libgit2/src/diff_parse.c +1 -1
- data/vendor/libgit2/src/diff_print.c +25 -13
- data/vendor/libgit2/src/diff_stats.c +1 -1
- data/vendor/libgit2/src/diff_tform.c +11 -11
- data/vendor/libgit2/src/errors.c +21 -25
- data/vendor/libgit2/src/errors.h +81 -0
- data/vendor/libgit2/src/features.h.in +9 -2
- data/vendor/libgit2/src/fetch.c +7 -2
- data/vendor/libgit2/src/fetchhead.c +36 -4
- data/vendor/libgit2/src/filebuf.c +6 -10
- data/vendor/libgit2/src/filebuf.h +2 -2
- data/vendor/libgit2/src/filter.c +16 -8
- data/vendor/libgit2/src/{fileops.c → futils.c} +21 -17
- data/vendor/libgit2/src/{fileops.h → futils.h} +5 -5
- data/vendor/libgit2/src/global.c +12 -40
- data/vendor/libgit2/src/global.h +0 -2
- data/vendor/libgit2/src/hash.c +61 -0
- data/vendor/libgit2/src/hash.h +19 -21
- data/vendor/libgit2/src/hash/sha1.h +38 -0
- data/vendor/libgit2/src/hash/{hash_collisiondetect.h → sha1/collisiondetect.c} +14 -17
- data/vendor/libgit2/src/{sha1_lookup.h → hash/sha1/collisiondetect.h} +8 -8
- data/vendor/libgit2/src/hash/{hash_common_crypto.h → sha1/common_crypto.c} +15 -19
- data/vendor/libgit2/src/hash/sha1/common_crypto.h +19 -0
- data/vendor/libgit2/src/hash/{hash_generic.c → sha1/generic.c} +22 -10
- data/vendor/libgit2/src/hash/{hash_generic.h → sha1/generic.h} +4 -14
- data/vendor/libgit2/src/hash/{hash_mbedtls.c → sha1/mbedtls.c} +15 -7
- data/vendor/libgit2/src/hash/{hash_mbedtls.h → sha1/mbedtls.h} +6 -11
- data/vendor/libgit2/src/hash/{hash_openssl.h → sha1/openssl.c} +14 -18
- data/vendor/libgit2/src/hash/sha1/openssl.h +19 -0
- data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.c +14 -3
- data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.h +0 -0
- data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.c +0 -0
- data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.h +0 -0
- data/vendor/libgit2/src/hash/{hash_win32.c → sha1/win32.c} +34 -24
- data/vendor/libgit2/src/hash/{hash_win32.h → sha1/win32.h} +6 -19
- data/vendor/libgit2/src/hashsig.c +1 -1
- data/vendor/libgit2/src/idxmap.c +91 -65
- data/vendor/libgit2/src/idxmap.h +151 -15
- data/vendor/libgit2/src/ignore.c +32 -38
- data/vendor/libgit2/src/index.c +105 -83
- data/vendor/libgit2/src/index.h +1 -1
- data/vendor/libgit2/src/indexer.c +71 -72
- data/vendor/libgit2/src/integer.h +39 -4
- data/vendor/libgit2/src/iterator.c +40 -35
- data/vendor/libgit2/src/iterator.h +8 -8
- data/vendor/libgit2/src/map.h +1 -1
- data/vendor/libgit2/src/merge.c +78 -51
- data/vendor/libgit2/src/merge.h +2 -2
- data/vendor/libgit2/src/merge_driver.c +5 -5
- data/vendor/libgit2/src/merge_file.c +1 -1
- data/vendor/libgit2/src/mwindow.c +18 -23
- data/vendor/libgit2/src/mwindow.h +4 -4
- data/vendor/libgit2/src/net.c +411 -0
- data/vendor/libgit2/src/net.h +57 -0
- data/vendor/libgit2/src/netops.c +6 -193
- data/vendor/libgit2/src/netops.h +1 -34
- data/vendor/libgit2/src/notes.c +8 -5
- data/vendor/libgit2/src/object.c +3 -3
- data/vendor/libgit2/src/object.h +2 -0
- data/vendor/libgit2/src/odb.c +41 -23
- data/vendor/libgit2/src/odb.h +3 -2
- data/vendor/libgit2/src/odb_loose.c +17 -10
- data/vendor/libgit2/src/odb_mempack.c +13 -24
- data/vendor/libgit2/src/odb_pack.c +4 -5
- data/vendor/libgit2/src/offmap.c +43 -55
- data/vendor/libgit2/src/offmap.h +102 -24
- data/vendor/libgit2/src/oid.c +19 -8
- data/vendor/libgit2/src/oidmap.c +39 -57
- data/vendor/libgit2/src/oidmap.h +99 -19
- data/vendor/libgit2/src/pack-objects.c +28 -33
- data/vendor/libgit2/src/pack-objects.h +1 -1
- data/vendor/libgit2/src/pack.c +117 -129
- data/vendor/libgit2/src/pack.h +15 -18
- data/vendor/libgit2/src/parse.c +10 -0
- data/vendor/libgit2/src/parse.h +3 -3
- data/vendor/libgit2/src/patch.c +1 -1
- data/vendor/libgit2/src/patch_generate.c +2 -2
- data/vendor/libgit2/src/patch_parse.c +130 -33
- data/vendor/libgit2/src/path.c +43 -6
- data/vendor/libgit2/src/path.h +2 -0
- data/vendor/libgit2/src/pathspec.c +14 -14
- data/vendor/libgit2/src/pool.c +26 -22
- data/vendor/libgit2/src/pool.h +7 -7
- data/vendor/libgit2/src/posix.c +7 -7
- data/vendor/libgit2/src/posix.h +12 -1
- data/vendor/libgit2/src/proxy.c +7 -2
- data/vendor/libgit2/src/push.c +13 -7
- data/vendor/libgit2/src/reader.c +2 -2
- data/vendor/libgit2/src/rebase.c +87 -28
- data/vendor/libgit2/src/refdb.c +12 -0
- data/vendor/libgit2/src/refdb_fs.c +219 -167
- data/vendor/libgit2/src/reflog.c +11 -13
- data/vendor/libgit2/src/refs.c +39 -23
- data/vendor/libgit2/src/refs.h +8 -1
- data/vendor/libgit2/src/refspec.c +9 -16
- data/vendor/libgit2/src/regexp.c +221 -0
- data/vendor/libgit2/src/regexp.h +97 -0
- data/vendor/libgit2/src/remote.c +57 -55
- data/vendor/libgit2/src/remote.h +2 -2
- data/vendor/libgit2/src/repository.c +187 -154
- data/vendor/libgit2/src/repository.h +49 -40
- data/vendor/libgit2/src/revert.c +8 -3
- data/vendor/libgit2/src/revparse.c +18 -19
- data/vendor/libgit2/src/revwalk.c +72 -34
- data/vendor/libgit2/src/revwalk.h +20 -0
- data/vendor/libgit2/src/settings.c +13 -1
- data/vendor/libgit2/src/sortedcache.c +12 -26
- data/vendor/libgit2/src/sortedcache.h +1 -1
- data/vendor/libgit2/src/stash.c +47 -67
- data/vendor/libgit2/src/status.c +17 -11
- data/vendor/libgit2/src/streams/openssl.c +54 -2
- data/vendor/libgit2/src/streams/socket.c +2 -2
- data/vendor/libgit2/src/strmap.c +37 -84
- data/vendor/libgit2/src/strmap.h +105 -33
- data/vendor/libgit2/src/submodule.c +151 -126
- data/vendor/libgit2/src/submodule.h +1 -1
- data/vendor/libgit2/src/sysdir.c +11 -1
- data/vendor/libgit2/src/tag.c +10 -2
- data/vendor/libgit2/src/trace.c +1 -1
- data/vendor/libgit2/src/trace.h +3 -3
- data/vendor/libgit2/src/trailer.c +46 -32
- data/vendor/libgit2/src/transaction.c +10 -9
- data/vendor/libgit2/src/transports/auth.c +16 -15
- data/vendor/libgit2/src/transports/auth.h +18 -11
- data/vendor/libgit2/src/transports/auth_negotiate.c +64 -33
- data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
- data/vendor/libgit2/src/transports/auth_ntlm.c +223 -0
- data/vendor/libgit2/src/transports/auth_ntlm.h +38 -0
- data/vendor/libgit2/src/transports/credential.c +476 -0
- data/vendor/libgit2/src/transports/{cred_helpers.c → credential_helpers.c} +21 -8
- data/vendor/libgit2/src/transports/git.c +11 -16
- data/vendor/libgit2/src/transports/http.c +488 -1248
- data/vendor/libgit2/src/transports/http.h +4 -1
- data/vendor/libgit2/src/transports/httpclient.c +1549 -0
- data/vendor/libgit2/src/transports/httpclient.h +190 -0
- data/vendor/libgit2/src/transports/local.c +10 -10
- data/vendor/libgit2/src/transports/smart.c +19 -19
- data/vendor/libgit2/src/transports/smart.h +3 -3
- data/vendor/libgit2/src/transports/smart_pkt.c +1 -1
- data/vendor/libgit2/src/transports/smart_protocol.c +40 -64
- data/vendor/libgit2/src/transports/ssh.c +77 -59
- data/vendor/libgit2/src/transports/winhttp.c +272 -242
- data/vendor/libgit2/src/tree-cache.c +14 -7
- data/vendor/libgit2/src/tree.c +16 -26
- data/vendor/libgit2/src/unix/map.c +1 -1
- data/vendor/libgit2/src/unix/posix.h +2 -12
- data/vendor/libgit2/src/userdiff.h +3 -1
- data/vendor/libgit2/src/util.c +51 -53
- data/vendor/libgit2/src/util.h +16 -21
- data/vendor/libgit2/src/wildmatch.c +320 -0
- data/vendor/libgit2/src/wildmatch.h +23 -0
- data/vendor/libgit2/src/win32/map.c +3 -5
- data/vendor/libgit2/src/win32/path_w32.c +40 -3
- data/vendor/libgit2/src/win32/path_w32.h +15 -29
- data/vendor/libgit2/src/win32/posix.h +1 -4
- data/vendor/libgit2/src/win32/posix_w32.c +47 -5
- data/vendor/libgit2/src/win32/precompiled.h +0 -2
- data/vendor/libgit2/src/win32/thread.c +5 -10
- data/vendor/libgit2/src/win32/w32_buffer.c +7 -3
- data/vendor/libgit2/src/win32/w32_common.h +39 -0
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +0 -93
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -2
- data/vendor/libgit2/src/win32/w32_stack.c +4 -9
- data/vendor/libgit2/src/win32/w32_stack.h +3 -3
- data/vendor/libgit2/src/win32/w32_util.c +31 -0
- data/vendor/libgit2/src/win32/w32_util.h +6 -32
- data/vendor/libgit2/src/worktree.c +79 -49
- data/vendor/libgit2/src/xdiff/xdiffi.c +1 -1
- data/vendor/libgit2/src/xdiff/xmerge.c +12 -0
- data/vendor/libgit2/src/xdiff/xpatience.c +3 -0
- data/vendor/libgit2/src/zstream.c +5 -0
- data/vendor/libgit2/src/zstream.h +1 -0
- metadata +108 -41
- data/vendor/libgit2/deps/regex/CMakeLists.txt +0 -2
- data/vendor/libgit2/deps/regex/COPYING +0 -502
- data/vendor/libgit2/deps/regex/config.h +0 -7
- data/vendor/libgit2/deps/regex/regcomp.c +0 -3857
- data/vendor/libgit2/deps/regex/regex.c +0 -92
- data/vendor/libgit2/deps/regex/regex.h +0 -582
- data/vendor/libgit2/deps/regex/regex_internal.c +0 -1744
- data/vendor/libgit2/deps/regex/regex_internal.h +0 -819
- data/vendor/libgit2/deps/regex/regexec.c +0 -4369
- data/vendor/libgit2/include/git2/inttypes.h +0 -309
- data/vendor/libgit2/include/git2/sys/time.h +0 -31
- data/vendor/libgit2/libgit2.pc.in +0 -13
- data/vendor/libgit2/src/fnmatch.c +0 -248
- data/vendor/libgit2/src/fnmatch.h +0 -48
- data/vendor/libgit2/src/sha1_lookup.c +0 -35
- data/vendor/libgit2/src/transports/cred.c +0 -390
data/ext/rugged/rugged_note.c
CHANGED
@@ -10,6 +10,8 @@
|
|
10
10
|
extern VALUE rb_cRuggedRepo;
|
11
11
|
extern VALUE rb_cRuggedObject;
|
12
12
|
|
13
|
+
extern const rb_data_type_t rugged_object_type;
|
14
|
+
|
13
15
|
static VALUE rugged_git_note_message(const git_note *note)
|
14
16
|
{
|
15
17
|
const char *message;
|
@@ -59,7 +61,7 @@ static VALUE rb_git_note_lookup(int argc, VALUE *argv, VALUE self)
|
|
59
61
|
notes_ref = StringValueCStr(rb_notes_ref);
|
60
62
|
}
|
61
63
|
|
62
|
-
|
64
|
+
TypedData_Get_Struct(self, git_object, &rugged_object_type, object);
|
63
65
|
|
64
66
|
owner = rugged_owner(self);
|
65
67
|
Data_Get_Struct(owner, git_repository, repo);
|
@@ -124,7 +126,7 @@ static VALUE rb_git_note_create(VALUE self, VALUE rb_data)
|
|
124
126
|
|
125
127
|
Check_Type(rb_data, T_HASH);
|
126
128
|
|
127
|
-
|
129
|
+
TypedData_Get_Struct(self, git_object, &rugged_object_type, target);
|
128
130
|
|
129
131
|
owner = rugged_owner(self);
|
130
132
|
Data_Get_Struct(owner, git_repository, repo);
|
@@ -207,7 +209,7 @@ static VALUE rb_git_note_remove(int argc, VALUE *argv, VALUE self)
|
|
207
209
|
VALUE rb_committer = Qnil;
|
208
210
|
VALUE owner;
|
209
211
|
|
210
|
-
|
212
|
+
TypedData_Get_Struct(self, git_object, &rugged_object_type, target);
|
211
213
|
|
212
214
|
owner = rugged_owner(self);
|
213
215
|
Data_Get_Struct(owner, git_repository, repo);
|
data/ext/rugged/rugged_object.c
CHANGED
@@ -16,6 +16,8 @@ extern VALUE rb_cRuggedRepo;
|
|
16
16
|
|
17
17
|
VALUE rb_cRuggedObject;
|
18
18
|
|
19
|
+
const rb_data_type_t rugged_object_type;
|
20
|
+
|
19
21
|
git_otype rugged_otype_get(VALUE self)
|
20
22
|
{
|
21
23
|
git_otype type = GIT_OBJ_BAD;
|
@@ -74,7 +76,7 @@ int rugged_oid_get(git_oid *oid, git_repository *repo, VALUE p)
|
|
74
76
|
int error;
|
75
77
|
|
76
78
|
if (rb_obj_is_kind_of(p, rb_cRuggedObject)) {
|
77
|
-
|
79
|
+
TypedData_Get_Struct(p, git_object, &rugged_object_type, object);
|
78
80
|
git_oid_cpy(oid, git_object_id(object));
|
79
81
|
} else {
|
80
82
|
Check_Type(p, T_STRING);
|
@@ -100,7 +102,7 @@ git_object *rugged_object_get(git_repository *repo, VALUE object_value, git_otyp
|
|
100
102
|
|
101
103
|
if (rb_obj_is_kind_of(object_value, rb_cRuggedObject)) {
|
102
104
|
git_object *owned_obj = NULL;
|
103
|
-
|
105
|
+
TypedData_Get_Struct(object_value, git_object, &rugged_object_type, owned_obj);
|
104
106
|
git_object_dup(&object, owned_obj);
|
105
107
|
} else {
|
106
108
|
int error;
|
@@ -132,11 +134,56 @@ git_object *rugged_object_get(git_repository *repo, VALUE object_value, git_otyp
|
|
132
134
|
return object;
|
133
135
|
}
|
134
136
|
|
135
|
-
static void rb_git_object__free(
|
137
|
+
static void rb_git_object__free(void *data)
|
136
138
|
{
|
139
|
+
git_object *object = (git_object *) data;
|
137
140
|
git_object_free(object);
|
138
141
|
}
|
139
142
|
|
143
|
+
static size_t rb_git_object__size(const void *data)
|
144
|
+
{
|
145
|
+
git_object *object = (git_object *) data;
|
146
|
+
size_t size = 0;
|
147
|
+
|
148
|
+
/*
|
149
|
+
* We cannot always be accurate cheaply, but we can give some numbers
|
150
|
+
* which are closer than zero by taking an average/guessed size.
|
151
|
+
*/
|
152
|
+
switch (git_object_type(object)) {
|
153
|
+
case GIT_OBJ_BLOB:
|
154
|
+
{
|
155
|
+
git_blob *blob = (git_blob *) object;
|
156
|
+
size = git_blob_rawsize(blob);
|
157
|
+
break;
|
158
|
+
}
|
159
|
+
case GIT_OBJ_TREE:
|
160
|
+
{
|
161
|
+
git_tree *tree = (git_tree *) object;
|
162
|
+
size = git_tree_entrycount(tree) * 64;
|
163
|
+
break;
|
164
|
+
}
|
165
|
+
case GIT_OBJ_COMMIT:
|
166
|
+
case GIT_OBJ_TAG:
|
167
|
+
size = 256;
|
168
|
+
break;
|
169
|
+
default:
|
170
|
+
break;
|
171
|
+
}
|
172
|
+
|
173
|
+
return size;
|
174
|
+
}
|
175
|
+
|
176
|
+
const rb_data_type_t rugged_object_type = {
|
177
|
+
.wrap_struct_name = "Rugged::Object",
|
178
|
+
.function = {
|
179
|
+
.dmark = NULL,
|
180
|
+
.dfree = rb_git_object__free,
|
181
|
+
.dsize = rb_git_object__size,
|
182
|
+
},
|
183
|
+
.data = NULL,
|
184
|
+
.flags = RUBY_TYPED_FREE_IMMEDIATELY,
|
185
|
+
};
|
186
|
+
|
140
187
|
VALUE rugged_object_new(VALUE owner, git_object *object)
|
141
188
|
{
|
142
189
|
VALUE klass, rb_object;
|
@@ -164,7 +211,7 @@ VALUE rugged_object_new(VALUE owner, git_object *object)
|
|
164
211
|
return Qnil; /* never reached */
|
165
212
|
}
|
166
213
|
|
167
|
-
rb_object =
|
214
|
+
rb_object = TypedData_Wrap_Struct(klass, &rugged_object_type, object);
|
168
215
|
rugged_set_owner(rb_object, owner);
|
169
216
|
return rb_object;
|
170
217
|
}
|
@@ -307,8 +354,8 @@ static VALUE rb_git_object_equal(VALUE self, VALUE other)
|
|
307
354
|
if (!rb_obj_is_kind_of(other, rb_cRuggedObject))
|
308
355
|
return Qfalse;
|
309
356
|
|
310
|
-
|
311
|
-
|
357
|
+
TypedData_Get_Struct(self, git_object, &rugged_object_type, a);
|
358
|
+
TypedData_Get_Struct(other, git_object, &rugged_object_type, b);
|
312
359
|
|
313
360
|
return git_oid_cmp(git_object_id(a), git_object_id(b)) == 0 ? Qtrue : Qfalse;
|
314
361
|
}
|
@@ -321,7 +368,7 @@ static VALUE rb_git_object_equal(VALUE self, VALUE other)
|
|
321
368
|
static VALUE rb_git_object_oid_GET(VALUE self)
|
322
369
|
{
|
323
370
|
git_object *object;
|
324
|
-
|
371
|
+
TypedData_Get_Struct(self, git_object, &rugged_object_type, object);
|
325
372
|
return rugged_create_oid(git_object_id(object));
|
326
373
|
}
|
327
374
|
|
@@ -333,7 +380,7 @@ static VALUE rb_git_object_oid_GET(VALUE self)
|
|
333
380
|
static VALUE rb_git_object_type_GET(VALUE self)
|
334
381
|
{
|
335
382
|
git_object *object;
|
336
|
-
|
383
|
+
TypedData_Get_Struct(self, git_object, &rugged_object_type, object);
|
337
384
|
|
338
385
|
return rugged_otype_new(git_object_type(object));
|
339
386
|
}
|
@@ -346,14 +393,14 @@ static VALUE rb_git_object_type_GET(VALUE self)
|
|
346
393
|
static VALUE rb_git_object_read_raw(VALUE self)
|
347
394
|
{
|
348
395
|
git_object *object;
|
349
|
-
|
396
|
+
TypedData_Get_Struct(self, git_object, &rugged_object_type, object);
|
350
397
|
|
351
398
|
return rugged_raw_read(git_object_owner(object), git_object_id(object));
|
352
399
|
}
|
353
400
|
|
354
401
|
void Init_rugged_object(void)
|
355
402
|
{
|
356
|
-
rb_cRuggedObject = rb_define_class_under(rb_mRugged, "Object",
|
403
|
+
rb_cRuggedObject = rb_define_class_under(rb_mRugged, "Object", rb_cData);
|
357
404
|
rb_define_singleton_method(rb_cRuggedObject, "lookup", rb_git_object_lookup, 2);
|
358
405
|
rb_define_singleton_method(rb_cRuggedObject, "rev_parse", rb_git_object_rev_parse, 2);
|
359
406
|
rb_define_singleton_method(rb_cRuggedObject, "rev_parse_oid", rb_git_object_rev_parse_oid, 2);
|
data/ext/rugged/rugged_rebase.c
CHANGED
@@ -15,6 +15,8 @@ extern VALUE rb_cRuggedReference;
|
|
15
15
|
|
16
16
|
VALUE rb_cRuggedRebase;
|
17
17
|
|
18
|
+
extern const rb_data_type_t rugged_object_type;
|
19
|
+
|
18
20
|
static VALUE rebase_operation_type(git_rebase_operation *operation);
|
19
21
|
|
20
22
|
static void parse_rebase_options(git_rebase_options *ret, VALUE rb_options)
|
@@ -70,7 +72,7 @@ static void get_annotated_commit(git_annotated_commit **annotated_commit, VALUE
|
|
70
72
|
const git_commit * commit;
|
71
73
|
const git_oid * oid;
|
72
74
|
|
73
|
-
|
75
|
+
TypedData_Get_Struct(rb_value, git_commit, &rugged_object_type, commit);
|
74
76
|
|
75
77
|
oid = git_commit_id(commit);
|
76
78
|
error = git_annotated_commit_lookup(annotated_commit, repo, oid);
|
data/ext/rugged/rugged_remote.c
CHANGED
@@ -157,12 +157,6 @@ static int credentials_cb(
|
|
157
157
|
return payload->exception ? GIT_ERROR : GIT_OK;
|
158
158
|
}
|
159
159
|
|
160
|
-
#define CALLABLE_OR_RAISE(ret, name) \
|
161
|
-
do { \
|
162
|
-
if (!rb_respond_to(ret, rb_intern("call"))) \
|
163
|
-
rb_raise(rb_eArgError, "Expected a Proc or an object that responds to #call (:" name " )."); \
|
164
|
-
} while (0);
|
165
|
-
|
166
160
|
void rugged_remote_init_callbacks_and_payload_from_options(
|
167
161
|
VALUE rb_options,
|
168
162
|
git_remote_callbacks *callbacks,
|
@@ -213,6 +207,18 @@ static void init_custom_headers(VALUE rb_options, git_strarray *custom_headers)
|
|
213
207
|
}
|
214
208
|
}
|
215
209
|
|
210
|
+
static void init_proxy_options(VALUE rb_options, git_proxy_options *proxy_options)
|
211
|
+
{
|
212
|
+
if (NIL_P(rb_options)) return;
|
213
|
+
|
214
|
+
VALUE val = rb_hash_aref(rb_options, CSTR2SYM("proxy_url"));
|
215
|
+
if (!NIL_P(val)) {
|
216
|
+
Check_Type(val, T_STRING);
|
217
|
+
proxy_options->type = GIT_PROXY_SPECIFIED;
|
218
|
+
proxy_options->url = StringValueCStr(val);
|
219
|
+
}
|
220
|
+
}
|
221
|
+
|
216
222
|
static int parse_prune_type(VALUE rb_prune_type)
|
217
223
|
{
|
218
224
|
if (rb_prune_type == Qtrue) {
|
@@ -289,11 +295,15 @@ static VALUE rugged_rhead_new(const git_remote_head *head)
|
|
289
295
|
*
|
290
296
|
* :headers ::
|
291
297
|
* Extra HTTP headers to include with the request (only applies to http:// or https:// remotes)
|
298
|
+
*
|
299
|
+
* :proxy_url ::
|
300
|
+
* The url of an http proxy to use to access the remote repository.
|
292
301
|
*/
|
293
302
|
static VALUE rb_git_remote_ls(int argc, VALUE *argv, VALUE self)
|
294
303
|
{
|
295
304
|
git_remote *remote;
|
296
305
|
git_remote_callbacks callbacks = GIT_REMOTE_CALLBACKS_INIT;
|
306
|
+
git_proxy_options proxy_options = GIT_PROXY_OPTIONS_INIT;
|
297
307
|
git_strarray custom_headers = {0};
|
298
308
|
const git_remote_head **heads;
|
299
309
|
|
@@ -310,8 +320,9 @@ static VALUE rb_git_remote_ls(int argc, VALUE *argv, VALUE self)
|
|
310
320
|
|
311
321
|
rugged_remote_init_callbacks_and_payload_from_options(rb_options, &callbacks, &payload);
|
312
322
|
init_custom_headers(rb_options, &custom_headers);
|
323
|
+
init_proxy_options(rb_options, &proxy_options);
|
313
324
|
|
314
|
-
if ((error = git_remote_connect(remote, GIT_DIRECTION_FETCH, &callbacks,
|
325
|
+
if ((error = git_remote_connect(remote, GIT_DIRECTION_FETCH, &callbacks, &proxy_options, &custom_headers)) ||
|
315
326
|
(error = git_remote_ls(&heads, &heads_len, remote)))
|
316
327
|
goto cleanup;
|
317
328
|
|
@@ -480,6 +491,9 @@ static VALUE rb_git_remote_push_refspecs(VALUE self)
|
|
480
491
|
* :headers ::
|
481
492
|
* Extra HTTP headers to include with the request (only applies to http:// or https:// remotes)
|
482
493
|
*
|
494
|
+
* :proxy_url ::
|
495
|
+
* The url of an http proxy to use to access the remote repository.
|
496
|
+
*
|
483
497
|
* Example:
|
484
498
|
*
|
485
499
|
* remote = repo.remotes["origin"]
|
@@ -490,6 +504,7 @@ static VALUE rb_git_remote_check_connection(int argc, VALUE *argv, VALUE self)
|
|
490
504
|
{
|
491
505
|
git_remote *remote;
|
492
506
|
git_remote_callbacks callbacks = GIT_REMOTE_CALLBACKS_INIT;
|
507
|
+
git_proxy_options proxy_options = GIT_PROXY_OPTIONS_INIT;
|
493
508
|
git_strarray custom_headers = {0};
|
494
509
|
struct rugged_remote_cb_payload payload = { Qnil, Qnil, Qnil, Qnil, Qnil, Qnil, Qnil, 0 };
|
495
510
|
VALUE rb_direction, rb_options;
|
@@ -510,8 +525,9 @@ static VALUE rb_git_remote_check_connection(int argc, VALUE *argv, VALUE self)
|
|
510
525
|
|
511
526
|
rugged_remote_init_callbacks_and_payload_from_options(rb_options, &callbacks, &payload);
|
512
527
|
init_custom_headers(rb_options, &custom_headers);
|
528
|
+
init_proxy_options(rb_options, &proxy_options);
|
513
529
|
|
514
|
-
error = git_remote_connect(remote, direction, &callbacks,
|
530
|
+
error = git_remote_connect(remote, direction, &callbacks, &proxy_options, &custom_headers);
|
515
531
|
git_remote_disconnect(remote);
|
516
532
|
|
517
533
|
xfree(custom_headers.strings);
|
@@ -569,6 +585,9 @@ static VALUE rb_git_remote_check_connection(int argc, VALUE *argv, VALUE self)
|
|
569
585
|
* Specifies the prune mode for the fetch. +true+ remove any remote-tracking references that
|
570
586
|
* no longer exist, +false+ do not prune, +nil+ use configured settings Defaults to "nil".
|
571
587
|
*
|
588
|
+
* :proxy_url ::
|
589
|
+
* The url of an http proxy to use to access the remote repository.
|
590
|
+
*
|
572
591
|
* Example:
|
573
592
|
*
|
574
593
|
* remote = Rugged::Remote.lookup(@repo, 'origin')
|
@@ -599,6 +618,7 @@ static VALUE rb_git_remote_fetch(int argc, VALUE *argv, VALUE self)
|
|
599
618
|
|
600
619
|
rugged_remote_init_callbacks_and_payload_from_options(rb_options, &opts.callbacks, &payload);
|
601
620
|
init_custom_headers(rb_options, &opts.custom_headers);
|
621
|
+
init_proxy_options(rb_options, &opts.proxy_opts);
|
602
622
|
|
603
623
|
if (!NIL_P(rb_options)) {
|
604
624
|
VALUE rb_prune_type;
|
@@ -660,6 +680,9 @@ static VALUE rb_git_remote_fetch(int argc, VALUE *argv, VALUE self)
|
|
660
680
|
* :headers ::
|
661
681
|
* Extra HTTP headers to include with the push (only applies to http:// or https:// remotes)
|
662
682
|
*
|
683
|
+
* :proxy_url ::
|
684
|
+
* The url of an http proxy to use to access the remote repository.
|
685
|
+
*
|
663
686
|
* Example:
|
664
687
|
*
|
665
688
|
* remote = Rugged::Remote.lookup(@repo, 'origin')
|
@@ -685,6 +708,7 @@ static VALUE rb_git_remote_push(int argc, VALUE *argv, VALUE self)
|
|
685
708
|
|
686
709
|
rugged_remote_init_callbacks_and_payload_from_options(rb_options, &opts.callbacks, &payload);
|
687
710
|
init_custom_headers(rb_options, &opts.custom_headers);
|
711
|
+
init_proxy_options(rb_options, &opts.proxy_opts);
|
688
712
|
|
689
713
|
error = git_remote_push(remote, &refspecs, &opts);
|
690
714
|
|
data/ext/rugged/rugged_repo.c
CHANGED
@@ -10,6 +10,7 @@
|
|
10
10
|
#include <git2/sys/odb_backend.h>
|
11
11
|
#include <git2/sys/refdb_backend.h>
|
12
12
|
#include <git2/refs.h>
|
13
|
+
#include <git2/apply.h>
|
13
14
|
|
14
15
|
extern VALUE rb_mRugged;
|
15
16
|
extern VALUE rb_eRuggedError;
|
@@ -18,6 +19,7 @@ extern VALUE rb_cRuggedConfig;
|
|
18
19
|
extern VALUE rb_cRuggedBackend;
|
19
20
|
extern VALUE rb_cRuggedRemote;
|
20
21
|
extern VALUE rb_cRuggedCommit;
|
22
|
+
extern VALUE rb_cRuggedDiff;
|
21
23
|
extern VALUE rb_cRuggedTag;
|
22
24
|
extern VALUE rb_cRuggedTree;
|
23
25
|
extern VALUE rb_cRuggedReference;
|
@@ -32,6 +34,9 @@ VALUE rb_cRuggedOdbObject;
|
|
32
34
|
|
33
35
|
static ID id_call;
|
34
36
|
|
37
|
+
extern const rb_data_type_t rugged_object_type;
|
38
|
+
static const rb_data_type_t rugged_odb_object_type;
|
39
|
+
|
35
40
|
/*
|
36
41
|
* call-seq:
|
37
42
|
* odb_obj.oid -> hex_oid
|
@@ -44,7 +49,7 @@ static ID id_call;
|
|
44
49
|
static VALUE rb_git_odbobj_oid(VALUE self)
|
45
50
|
{
|
46
51
|
git_odb_object *obj;
|
47
|
-
|
52
|
+
TypedData_Get_Struct(self, git_odb_object, &rugged_odb_object_type, obj);
|
48
53
|
return rugged_create_oid(git_odb_object_id(obj));
|
49
54
|
}
|
50
55
|
|
@@ -62,7 +67,7 @@ static VALUE rb_git_odbobj_oid(VALUE self)
|
|
62
67
|
static VALUE rb_git_odbobj_data(VALUE self)
|
63
68
|
{
|
64
69
|
git_odb_object *obj;
|
65
|
-
|
70
|
+
TypedData_Get_Struct(self, git_odb_object, &rugged_odb_object_type, obj);
|
66
71
|
return rb_str_new(git_odb_object_data(obj), git_odb_object_size(obj));
|
67
72
|
}
|
68
73
|
|
@@ -78,7 +83,7 @@ static VALUE rb_git_odbobj_data(VALUE self)
|
|
78
83
|
static VALUE rb_git_odbobj_size(VALUE self)
|
79
84
|
{
|
80
85
|
git_odb_object *obj;
|
81
|
-
|
86
|
+
TypedData_Get_Struct(self, git_odb_object, &rugged_odb_object_type, obj);
|
82
87
|
return INT2FIX(git_odb_object_size(obj));
|
83
88
|
}
|
84
89
|
|
@@ -94,7 +99,7 @@ static VALUE rb_git_odbobj_size(VALUE self)
|
|
94
99
|
static VALUE rb_git_odbobj_type(VALUE self)
|
95
100
|
{
|
96
101
|
git_odb_object *obj;
|
97
|
-
|
102
|
+
TypedData_Get_Struct(self, git_odb_object, &rugged_odb_object_type, obj);
|
98
103
|
return rugged_otype_new(git_odb_object_type(obj));
|
99
104
|
}
|
100
105
|
|
@@ -103,6 +108,24 @@ void rb_git__odbobj_free(void *obj)
|
|
103
108
|
git_odb_object_free((git_odb_object *)obj);
|
104
109
|
}
|
105
110
|
|
111
|
+
static size_t rb_git__odbobj_size(const void *obj)
|
112
|
+
{
|
113
|
+
return git_odb_object_size((git_odb_object *)obj);
|
114
|
+
}
|
115
|
+
|
116
|
+
static const rb_data_type_t rugged_odb_object_type = {
|
117
|
+
.wrap_struct_name = "Rugged::OdbObject",
|
118
|
+
.function = {
|
119
|
+
.dmark = NULL,
|
120
|
+
.dfree = rb_git__odbobj_free,
|
121
|
+
.dsize = rb_git__odbobj_size,
|
122
|
+
},
|
123
|
+
.data = NULL,
|
124
|
+
.flags = RUBY_TYPED_FREE_IMMEDIATELY,
|
125
|
+
};
|
126
|
+
|
127
|
+
|
128
|
+
|
106
129
|
VALUE rugged_raw_read(git_repository *repo, const git_oid *oid)
|
107
130
|
{
|
108
131
|
git_odb *odb;
|
@@ -117,7 +140,7 @@ VALUE rugged_raw_read(git_repository *repo, const git_oid *oid)
|
|
117
140
|
git_odb_free(odb);
|
118
141
|
rugged_exception_check(error);
|
119
142
|
|
120
|
-
return
|
143
|
+
return TypedData_Wrap_Struct(rb_cRuggedOdbObject, &rugged_odb_object_type, obj);
|
121
144
|
}
|
122
145
|
|
123
146
|
void rb_git_repo__free(git_repository *repo)
|
@@ -396,6 +419,98 @@ static VALUE rb_git_repo_init_at(int argc, VALUE *argv, VALUE klass)
|
|
396
419
|
return rugged_repo_new(klass, repo);
|
397
420
|
}
|
398
421
|
|
422
|
+
static int apply_cb_result(int exception, VALUE result)
|
423
|
+
{
|
424
|
+
if (exception || result == Qnil) {
|
425
|
+
return GIT_EAPPLYFAIL;
|
426
|
+
} else {
|
427
|
+
if (RTEST(result)) {
|
428
|
+
return 0;
|
429
|
+
} else {
|
430
|
+
return 1;
|
431
|
+
}
|
432
|
+
}
|
433
|
+
}
|
434
|
+
|
435
|
+
static int apply_delta_cb(const git_diff_delta *delta, void *data)
|
436
|
+
{
|
437
|
+
struct rugged_apply_cb_payload *payload = data;
|
438
|
+
VALUE args = rb_ary_new2(2);
|
439
|
+
VALUE result;
|
440
|
+
|
441
|
+
if (NIL_P(payload->delta_cb))
|
442
|
+
return 0;
|
443
|
+
|
444
|
+
VALUE rb_delta = rugged_diff_delta_new(Qnil, delta);
|
445
|
+
|
446
|
+
rb_ary_push(args, payload->delta_cb);
|
447
|
+
rb_ary_push(args, rb_delta);
|
448
|
+
|
449
|
+
result = rb_protect(rugged__block_yield_splat, args, &payload->exception);
|
450
|
+
|
451
|
+
return apply_cb_result(payload->exception, result);
|
452
|
+
}
|
453
|
+
|
454
|
+
static int apply_hunk_cb(const git_diff_hunk *hunk, void *data)
|
455
|
+
{
|
456
|
+
struct rugged_apply_cb_payload *payload = data;
|
457
|
+
VALUE args = rb_ary_new2(2);
|
458
|
+
VALUE result;
|
459
|
+
|
460
|
+
if (NIL_P(payload->hunk_cb))
|
461
|
+
return 0;
|
462
|
+
|
463
|
+
VALUE rb_hunk = rugged_diff_hunk_new(Qnil, 0, hunk, 0);
|
464
|
+
|
465
|
+
rb_ary_push(args, payload->hunk_cb);
|
466
|
+
rb_ary_push(args, rb_hunk);
|
467
|
+
|
468
|
+
result = rb_protect(rugged__block_yield_splat, args, &payload->exception);
|
469
|
+
|
470
|
+
return apply_cb_result(payload->exception, result);
|
471
|
+
}
|
472
|
+
|
473
|
+
static void rugged_parse_apply_options(git_apply_options *opts, git_apply_location_t *location, VALUE rb_options, struct rugged_apply_cb_payload *payload)
|
474
|
+
{
|
475
|
+
if (!NIL_P(rb_options)) {
|
476
|
+
VALUE rb_value;
|
477
|
+
Check_Type(rb_options, T_HASH);
|
478
|
+
|
479
|
+
rb_value = rb_hash_aref(rb_options, CSTR2SYM("location"));
|
480
|
+
if (!NIL_P(rb_value)) {
|
481
|
+
ID id_location;
|
482
|
+
|
483
|
+
Check_Type(rb_value, T_SYMBOL);
|
484
|
+
id_location = SYM2ID(rb_value);
|
485
|
+
|
486
|
+
if (id_location == rb_intern("both")) {
|
487
|
+
*location = GIT_APPLY_LOCATION_BOTH;
|
488
|
+
} else if (id_location == rb_intern("index")) {
|
489
|
+
*location = GIT_APPLY_LOCATION_INDEX;
|
490
|
+
} else if (id_location == rb_intern("workdir")) {
|
491
|
+
*location = GIT_APPLY_LOCATION_WORKDIR;
|
492
|
+
} else {
|
493
|
+
rb_raise(rb_eTypeError,
|
494
|
+
"Invalid location. Expected `:both`, `:index`, or `:workdir`");
|
495
|
+
}
|
496
|
+
}
|
497
|
+
|
498
|
+
opts->payload = payload;
|
499
|
+
|
500
|
+
payload->delta_cb = rb_hash_aref(rb_options, CSTR2SYM("delta_callback"));
|
501
|
+
if (!NIL_P(payload->delta_cb)) {
|
502
|
+
CALLABLE_OR_RAISE(payload->delta_cb, "delta_callback");
|
503
|
+
opts->delta_cb = apply_delta_cb;
|
504
|
+
}
|
505
|
+
|
506
|
+
payload->hunk_cb = rb_hash_aref(rb_options, CSTR2SYM("hunk_callback"));
|
507
|
+
if (!NIL_P(payload->hunk_cb)) {
|
508
|
+
CALLABLE_OR_RAISE(payload->hunk_cb, "hunk_callback");
|
509
|
+
opts->hunk_cb = apply_hunk_cb;
|
510
|
+
}
|
511
|
+
}
|
512
|
+
}
|
513
|
+
|
399
514
|
static void parse_clone_options(git_clone_options *ret, VALUE rb_options, struct rugged_remote_cb_payload *remote_payload)
|
400
515
|
{
|
401
516
|
VALUE val;
|
@@ -413,6 +528,13 @@ static void parse_clone_options(git_clone_options *ret, VALUE rb_options, struct
|
|
413
528
|
ret->checkout_branch = StringValueCStr(val);
|
414
529
|
}
|
415
530
|
|
531
|
+
val = rb_hash_aref(rb_options, CSTR2SYM("proxy_url"));
|
532
|
+
if (!NIL_P(val)) {
|
533
|
+
Check_Type(val, T_STRING);
|
534
|
+
ret->fetch_opts.proxy_opts.type = GIT_PROXY_SPECIFIED;
|
535
|
+
ret->fetch_opts.proxy_opts.url = StringValueCStr(val);
|
536
|
+
}
|
537
|
+
|
416
538
|
rugged_remote_init_callbacks_and_payload_from_options(rb_options, &ret->fetch_opts.callbacks, remote_payload);
|
417
539
|
}
|
418
540
|
|
@@ -437,6 +559,9 @@ static void parse_clone_options(git_clone_options *ret, VALUE rb_options, struct
|
|
437
559
|
* :ignore_cert_errors ::
|
438
560
|
* If set to +true+, errors while validating the remote's host certificate will be ignored.
|
439
561
|
*
|
562
|
+
* :proxy_url ::
|
563
|
+
* The url of an http proxy to use to access the remote repository.
|
564
|
+
*
|
440
565
|
* :credentials ::
|
441
566
|
* The credentials to use for the clone operation. Can be either an instance of one
|
442
567
|
* of the Rugged::Credentials types, or a proc returning one of the former.
|
@@ -788,7 +913,7 @@ static VALUE rb_git_repo_merge_analysis(int argc, VALUE *argv, VALUE self)
|
|
788
913
|
rb_raise(rb_eArgError, "Expected a Rugged::Commit.");
|
789
914
|
}
|
790
915
|
|
791
|
-
|
916
|
+
TypedData_Get_Struct(rb_their_commit, git_commit, &rugged_object_type, their_commit);
|
792
917
|
|
793
918
|
error = git_annotated_commit_lookup(&annotated_commit, repo, git_commit_id(their_commit));
|
794
919
|
rugged_exception_check(error);
|
@@ -856,8 +981,8 @@ static VALUE rb_git_repo_revert_commit(int argc, VALUE *argv, VALUE self)
|
|
856
981
|
}
|
857
982
|
|
858
983
|
Data_Get_Struct(self, git_repository, repo);
|
859
|
-
|
860
|
-
|
984
|
+
TypedData_Get_Struct(rb_revert_commit, git_commit, &rugged_object_type, revert_commit);
|
985
|
+
TypedData_Get_Struct(rb_our_commit, git_commit, &rugged_object_type, our_commit);
|
861
986
|
|
862
987
|
error = git_revert_commit(&index, repo, revert_commit, our_commit, mainline, &opts);
|
863
988
|
if (error == GIT_EMERGECONFLICT)
|
@@ -868,6 +993,69 @@ static VALUE rb_git_repo_revert_commit(int argc, VALUE *argv, VALUE self)
|
|
868
993
|
return rugged_index_new(rb_cRuggedIndex, self, index);
|
869
994
|
}
|
870
995
|
|
996
|
+
/*
|
997
|
+
* call-seq:
|
998
|
+
* repo.apply(diff, options = {}) -> true or false
|
999
|
+
*
|
1000
|
+
* Applies the given diff to the repository.
|
1001
|
+
* The following options can be passed in the +options+ Hash:
|
1002
|
+
*
|
1003
|
+
* :location ::
|
1004
|
+
* Whether to apply the changes to the workdir (default for non-bare),
|
1005
|
+
* the index (default for bare) or both. Valid values: +:index+, +:workdir+,
|
1006
|
+
* +:both+.
|
1007
|
+
*
|
1008
|
+
* :delta_callback ::
|
1009
|
+
* While applying the patch, this callback will be executed per delta (file).
|
1010
|
+
* The current +delta+ will be passed to the block. The block's return value
|
1011
|
+
* determines further behavior. When the block evaluates to:
|
1012
|
+
* - +true+: the hunk will be applied and the apply process will continue.
|
1013
|
+
* - +false+: the hunk will be skipped, but the apply process continues.
|
1014
|
+
* - +nil+: the hunk is not applied, and the apply process is aborted.
|
1015
|
+
*
|
1016
|
+
* :hunk_callback ::
|
1017
|
+
* While applying the patch, this callback will be executed per hunk.
|
1018
|
+
* The current +hunk+ will be passed to the block. The block's return value
|
1019
|
+
* determines further behavior, as per +:delta_callback+.
|
1020
|
+
*
|
1021
|
+
*/
|
1022
|
+
static VALUE rb_git_repo_apply(int argc, VALUE *argv, VALUE self)
|
1023
|
+
{
|
1024
|
+
VALUE rb_diff, rb_options;
|
1025
|
+
git_diff *diff;
|
1026
|
+
git_repository *repo;
|
1027
|
+
git_apply_options opts = GIT_APPLY_OPTIONS_INIT;
|
1028
|
+
git_apply_location_t location;
|
1029
|
+
struct rugged_apply_cb_payload payload = { Qnil, Qnil, 0 };
|
1030
|
+
int error;
|
1031
|
+
|
1032
|
+
Data_Get_Struct(self, git_repository, repo);
|
1033
|
+
if (git_repository_is_bare(repo)) {
|
1034
|
+
location = GIT_APPLY_LOCATION_INDEX;
|
1035
|
+
} else {
|
1036
|
+
location = GIT_APPLY_LOCATION_WORKDIR;
|
1037
|
+
}
|
1038
|
+
|
1039
|
+
rb_scan_args(argc, argv, "11", &rb_diff, &rb_options);
|
1040
|
+
|
1041
|
+
if (!rb_obj_is_kind_of(rb_diff, rb_cRuggedDiff)) {
|
1042
|
+
rb_raise(rb_eArgError, "Expected a Rugged::Diff.");
|
1043
|
+
}
|
1044
|
+
|
1045
|
+
if (!NIL_P(rb_options)) {
|
1046
|
+
Check_Type(rb_options, T_HASH);
|
1047
|
+
rugged_parse_apply_options(&opts, &location, rb_options, &payload);
|
1048
|
+
}
|
1049
|
+
|
1050
|
+
Data_Get_Struct(rb_diff, git_diff, diff);
|
1051
|
+
|
1052
|
+
error = git_apply(repo, diff, location, &opts);
|
1053
|
+
|
1054
|
+
rugged_exception_check(error);
|
1055
|
+
|
1056
|
+
return Qtrue;
|
1057
|
+
}
|
1058
|
+
|
871
1059
|
/*
|
872
1060
|
* call-seq:
|
873
1061
|
* repo.merge_commits(our_commit, their_commit, options = {}) -> index
|
@@ -911,8 +1099,8 @@ static VALUE rb_git_repo_merge_commits(int argc, VALUE *argv, VALUE self)
|
|
911
1099
|
}
|
912
1100
|
|
913
1101
|
Data_Get_Struct(self, git_repository, repo);
|
914
|
-
|
915
|
-
|
1102
|
+
TypedData_Get_Struct(rb_our_commit, git_commit, &rugged_object_type, our_commit);
|
1103
|
+
TypedData_Get_Struct(rb_their_commit, git_commit, &rugged_object_type, their_commit);
|
916
1104
|
|
917
1105
|
error = git_merge_commits(&index, repo, our_commit, their_commit, &opts);
|
918
1106
|
if (error == GIT_EMERGECONFLICT)
|
@@ -1518,7 +1706,7 @@ static VALUE rb_git_repo_file_status(VALUE self, VALUE rb_path)
|
|
1518
1706
|
|
1519
1707
|
static VALUE rb_git_repo_file_each_status(VALUE self)
|
1520
1708
|
{
|
1521
|
-
int error, exception;
|
1709
|
+
int error, exception = 0;
|
1522
1710
|
size_t i, nentries;
|
1523
1711
|
git_repository *repo;
|
1524
1712
|
git_status_list *list;
|
@@ -2026,7 +2214,7 @@ void rugged_parse_checkout_options(git_checkout_options *opts, VALUE rb_options)
|
|
2026
2214
|
rb_value = rb_hash_aref(rb_options, CSTR2SYM("baseline"));
|
2027
2215
|
if (!NIL_P(rb_value)) {
|
2028
2216
|
if (rb_obj_is_kind_of(rb_value, rb_cRuggedTree)) {
|
2029
|
-
|
2217
|
+
TypedData_Get_Struct(rb_value, git_tree, &rugged_object_type, opts->baseline);
|
2030
2218
|
} else {
|
2031
2219
|
rb_raise(rb_eTypeError, "Expected a Rugged::Tree.");
|
2032
2220
|
}
|
@@ -2190,7 +2378,7 @@ static VALUE rb_git_checkout_tree(int argc, VALUE *argv, VALUE self)
|
|
2190
2378
|
}
|
2191
2379
|
|
2192
2380
|
Data_Get_Struct(self, git_repository, repo);
|
2193
|
-
|
2381
|
+
TypedData_Get_Struct(rb_treeish, git_object, &rugged_object_type, treeish);
|
2194
2382
|
|
2195
2383
|
rugged_parse_checkout_options(&opts, rb_options);
|
2196
2384
|
|
@@ -2488,7 +2676,7 @@ static VALUE rb_git_repo_cherrypick(int argc, VALUE *argv, VALUE self)
|
|
2488
2676
|
}
|
2489
2677
|
|
2490
2678
|
Data_Get_Struct(self, git_repository, repo);
|
2491
|
-
|
2679
|
+
TypedData_Get_Struct(rb_commit, git_commit, &rugged_object_type, commit);
|
2492
2680
|
|
2493
2681
|
rugged_parse_cherrypick_options(&opts, rb_options);
|
2494
2682
|
|
@@ -2541,8 +2729,8 @@ static VALUE rb_git_repo_cherrypick_commit(int argc, VALUE *argv, VALUE self)
|
|
2541
2729
|
}
|
2542
2730
|
|
2543
2731
|
Data_Get_Struct(self, git_repository, repo);
|
2544
|
-
|
2545
|
-
|
2732
|
+
TypedData_Get_Struct(rb_commit, git_commit, &rugged_object_type, commit);
|
2733
|
+
TypedData_Get_Struct(rb_our_commit, git_commit, &rugged_object_type, our_commit);
|
2546
2734
|
|
2547
2735
|
rugged_parse_merge_options(&opts, rb_options);
|
2548
2736
|
|
@@ -2553,6 +2741,29 @@ static VALUE rb_git_repo_cherrypick_commit(int argc, VALUE *argv, VALUE self)
|
|
2553
2741
|
return rugged_index_new(rb_cRuggedIndex, self, index);
|
2554
2742
|
}
|
2555
2743
|
|
2744
|
+
/*
|
2745
|
+
* call-seq: repo.diff_from_buffer(buffer) -> Rugged::Diff object
|
2746
|
+
*
|
2747
|
+
* Where +buffer+ is a +String+.
|
2748
|
+
* Returns A Rugged::Diff object
|
2749
|
+
*/
|
2750
|
+
static VALUE rb_git_diff_from_buffer(VALUE self, VALUE rb_buffer)
|
2751
|
+
{
|
2752
|
+
git_diff *diff = NULL;
|
2753
|
+
const char *buffer;
|
2754
|
+
size_t len;
|
2755
|
+
int error;
|
2756
|
+
|
2757
|
+
Check_Type(rb_buffer, T_STRING);
|
2758
|
+
buffer = RSTRING_PTR(rb_buffer);
|
2759
|
+
len = RSTRING_LEN(rb_buffer);
|
2760
|
+
|
2761
|
+
error = git_diff_from_buffer(&diff, buffer, len);
|
2762
|
+
rugged_exception_check(error);
|
2763
|
+
|
2764
|
+
return rugged_diff_new(rb_cRuggedDiff, self, diff);
|
2765
|
+
}
|
2766
|
+
|
2556
2767
|
void Init_rugged_repo(void)
|
2557
2768
|
{
|
2558
2769
|
id_call = rb_intern("call");
|
@@ -2608,7 +2819,11 @@ void Init_rugged_repo(void)
|
|
2608
2819
|
rb_define_method(rb_cRuggedRepo, "merge_analysis", rb_git_repo_merge_analysis, -1);
|
2609
2820
|
rb_define_method(rb_cRuggedRepo, "merge_commits", rb_git_repo_merge_commits, -1);
|
2610
2821
|
|
2822
|
+
rb_define_method(rb_cRuggedRepo, "apply", rb_git_repo_apply, -1);
|
2823
|
+
|
2611
2824
|
rb_define_method(rb_cRuggedRepo, "revert_commit", rb_git_repo_revert_commit, -1);
|
2825
|
+
|
2826
|
+
rb_define_method(rb_cRuggedRepo, "diff_from_buffer", rb_git_diff_from_buffer, 1);
|
2612
2827
|
|
2613
2828
|
rb_define_method(rb_cRuggedRepo, "path_ignored?", rb_git_repo_is_path_ignored, 1);
|
2614
2829
|
|
@@ -2630,7 +2845,7 @@ void Init_rugged_repo(void)
|
|
2630
2845
|
rb_define_method(rb_cRuggedRepo, "cherrypick_commit", rb_git_repo_cherrypick_commit, -1);
|
2631
2846
|
rb_define_method(rb_cRuggedRepo, "fetch_attributes", rb_git_repo_attributes, -1);
|
2632
2847
|
|
2633
|
-
rb_cRuggedOdbObject = rb_define_class_under(rb_mRugged, "OdbObject",
|
2848
|
+
rb_cRuggedOdbObject = rb_define_class_under(rb_mRugged, "OdbObject", rb_cData);
|
2634
2849
|
rb_define_method(rb_cRuggedOdbObject, "data", rb_git_odbobj_data, 0);
|
2635
2850
|
rb_define_method(rb_cRuggedOdbObject, "len", rb_git_odbobj_size, 0);
|
2636
2851
|
rb_define_method(rb_cRuggedOdbObject, "type", rb_git_odbobj_type, 0);
|