rugged 0.19.0 → 0.28.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 +7 -0
- data/LICENSE +1 -1
- data/README.md +184 -33
- data/ext/rugged/extconf.rb +111 -28
- data/ext/rugged/rugged.c +327 -89
- data/ext/rugged/rugged.h +64 -28
- data/ext/rugged/rugged_allocator.c +89 -0
- data/ext/rugged/rugged_backend.c +17 -0
- data/ext/rugged/rugged_blame.c +278 -0
- data/ext/rugged/rugged_blob.c +301 -75
- data/ext/rugged/rugged_branch.c +92 -242
- data/ext/rugged/rugged_branch_collection.c +388 -0
- data/ext/rugged/rugged_commit.c +575 -79
- data/ext/rugged/rugged_config.c +129 -36
- data/ext/rugged/rugged_cred.c +131 -0
- data/ext/rugged/rugged_diff.c +291 -122
- data/ext/rugged/rugged_diff_delta.c +16 -22
- data/ext/rugged/rugged_diff_hunk.c +35 -51
- data/ext/rugged/rugged_diff_line.c +23 -36
- data/ext/rugged/rugged_index.c +289 -152
- data/ext/rugged/rugged_note.c +50 -60
- data/ext/rugged/rugged_object.c +13 -30
- data/ext/rugged/rugged_patch.c +400 -0
- data/ext/rugged/rugged_rebase.c +397 -0
- data/ext/rugged/rugged_reference.c +76 -346
- data/ext/rugged/rugged_reference_collection.c +423 -0
- data/ext/rugged/rugged_remote.c +438 -461
- data/ext/rugged/rugged_remote_collection.c +435 -0
- data/ext/rugged/rugged_repo.c +1548 -365
- data/ext/rugged/rugged_revwalk.c +378 -99
- data/ext/rugged/rugged_settings.c +86 -23
- data/ext/rugged/rugged_signature.c +47 -37
- data/ext/rugged/rugged_submodule.c +835 -0
- data/ext/rugged/rugged_submodule_collection.c +366 -0
- data/ext/rugged/rugged_tag.c +88 -210
- data/ext/rugged/rugged_tag_collection.c +326 -0
- data/ext/rugged/rugged_tree.c +460 -217
- data/lib/rugged/attributes.rb +46 -0
- data/lib/rugged/blob.rb +33 -0
- data/lib/rugged/branch.rb +12 -16
- data/lib/rugged/commit.rb +9 -0
- data/lib/rugged/console.rb +5 -0
- data/lib/rugged/credentials.rb +48 -0
- data/lib/rugged/diff/delta.rb +6 -2
- data/lib/rugged/diff/hunk.rb +9 -9
- data/lib/rugged/diff/line.rb +28 -5
- data/lib/rugged/diff.rb +7 -1
- data/lib/rugged/index.rb +120 -0
- data/lib/rugged/object.rb +5 -0
- data/lib/rugged/patch.rb +41 -0
- data/lib/rugged/reference.rb +6 -3
- data/lib/rugged/remote.rb +5 -9
- data/lib/rugged/repository.rb +126 -14
- data/lib/rugged/submodule_collection.rb +53 -0
- data/lib/rugged/tag.rb +45 -16
- data/lib/rugged/tree.rb +163 -1
- data/lib/rugged/version.rb +6 -1
- data/lib/rugged/walker.rb +5 -0
- data/lib/rugged.rb +16 -1
- data/vendor/libgit2/AUTHORS +77 -0
- data/vendor/libgit2/CMakeLists.txt +317 -0
- data/vendor/libgit2/COPYING +993 -0
- data/vendor/libgit2/cmake/Modules/AddCFlagIfSupported.cmake +30 -0
- data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +29 -0
- data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +96 -0
- data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +11 -0
- data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +26 -0
- data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +324 -0
- data/vendor/libgit2/cmake/Modules/FindHTTP_Parser.cmake +39 -0
- data/vendor/libgit2/cmake/Modules/FindIconv.cmake +45 -0
- data/vendor/libgit2/cmake/Modules/FindPkgLibraries.cmake +28 -0
- data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +28 -0
- data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +20 -0
- data/vendor/libgit2/cmake/Modules/FindmbedTLS.cmake +93 -0
- data/vendor/libgit2/cmake/Modules/IdeSplitSources.cmake +22 -0
- data/vendor/libgit2/deps/http-parser/CMakeLists.txt +5 -0
- data/vendor/libgit2/deps/http-parser/COPYING +23 -0
- data/vendor/libgit2/deps/http-parser/http_parser.c +5 -2
- data/vendor/libgit2/deps/http-parser/http_parser.h +2 -0
- data/vendor/libgit2/deps/regex/CMakeLists.txt +2 -0
- data/vendor/libgit2/deps/regex/COPYING +502 -0
- data/vendor/libgit2/deps/regex/regex.c +10 -3
- data/vendor/libgit2/deps/winhttp/CMakeLists.txt +26 -0
- data/vendor/libgit2/deps/winhttp/COPYING.GPL +993 -0
- data/vendor/libgit2/deps/winhttp/COPYING.LGPL +502 -0
- data/vendor/libgit2/deps/winhttp/urlmon.h +45 -0
- data/vendor/libgit2/deps/winhttp/winhttp.def +29 -0
- data/vendor/libgit2/deps/winhttp/winhttp.h +594 -0
- data/vendor/libgit2/deps/winhttp/winhttp64.def +29 -0
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +5 -0
- data/vendor/libgit2/deps/zlib/COPYING +27 -0
- data/vendor/libgit2/deps/zlib/adler32.c +51 -34
- data/vendor/libgit2/deps/zlib/crc32.c +61 -61
- data/vendor/libgit2/deps/zlib/crc32.h +1 -1
- data/vendor/libgit2/deps/zlib/deflate.c +681 -352
- data/vendor/libgit2/deps/zlib/deflate.h +25 -18
- data/vendor/libgit2/deps/zlib/gzguts.h +218 -0
- data/vendor/libgit2/deps/zlib/infback.c +640 -0
- data/vendor/libgit2/deps/zlib/inffast.c +36 -53
- data/vendor/libgit2/deps/zlib/inffixed.h +3 -3
- data/vendor/libgit2/deps/zlib/inflate.c +167 -86
- data/vendor/libgit2/deps/zlib/inflate.h +7 -4
- data/vendor/libgit2/deps/zlib/inftrees.c +24 -50
- data/vendor/libgit2/deps/zlib/trees.c +55 -96
- data/vendor/libgit2/deps/zlib/zconf.h +499 -19
- data/vendor/libgit2/deps/zlib/zlib.h +526 -227
- data/vendor/libgit2/deps/zlib/zutil.c +39 -32
- data/vendor/libgit2/deps/zlib/zutil.h +75 -78
- data/vendor/libgit2/include/git2/annotated_commit.h +125 -0
- data/vendor/libgit2/include/git2/apply.h +129 -0
- data/vendor/libgit2/include/git2/attr.h +36 -21
- data/vendor/libgit2/include/git2/blame.h +229 -0
- data/vendor/libgit2/include/git2/blob.h +81 -44
- data/vendor/libgit2/include/git2/branch.h +81 -42
- data/vendor/libgit2/include/git2/buffer.h +128 -0
- data/vendor/libgit2/include/git2/checkout.h +141 -67
- data/vendor/libgit2/include/git2/cherrypick.h +92 -0
- data/vendor/libgit2/include/git2/clone.h +157 -58
- data/vendor/libgit2/include/git2/commit.h +231 -12
- data/vendor/libgit2/include/git2/common.h +216 -30
- data/vendor/libgit2/include/git2/config.h +274 -48
- data/vendor/libgit2/include/git2/cred_helpers.h +4 -4
- data/vendor/libgit2/include/git2/deprecated.h +253 -0
- data/vendor/libgit2/include/git2/describe.h +189 -0
- data/vendor/libgit2/include/git2/diff.h +985 -575
- data/vendor/libgit2/include/git2/errors.h +93 -52
- data/vendor/libgit2/include/git2/filter.h +217 -0
- data/vendor/libgit2/include/git2/global.h +44 -0
- data/vendor/libgit2/include/git2/graph.h +17 -0
- data/vendor/libgit2/include/git2/ignore.h +2 -2
- data/vendor/libgit2/include/git2/index.h +269 -94
- data/vendor/libgit2/include/git2/indexer.h +44 -12
- data/vendor/libgit2/include/git2/mailmap.h +115 -0
- data/vendor/libgit2/include/git2/merge.h +501 -64
- data/vendor/libgit2/include/git2/message.h +52 -17
- data/vendor/libgit2/include/git2/net.h +11 -5
- data/vendor/libgit2/include/git2/notes.h +120 -16
- data/vendor/libgit2/include/git2/object.h +62 -23
- data/vendor/libgit2/include/git2/odb.h +140 -24
- data/vendor/libgit2/include/git2/odb_backend.h +56 -12
- data/vendor/libgit2/include/git2/oid.h +17 -18
- data/vendor/libgit2/include/git2/oidarray.h +40 -0
- data/vendor/libgit2/include/git2/pack.h +86 -7
- data/vendor/libgit2/include/git2/patch.h +274 -0
- data/vendor/libgit2/include/git2/pathspec.h +280 -0
- data/vendor/libgit2/include/git2/proxy.h +96 -0
- data/vendor/libgit2/include/git2/rebase.h +323 -0
- data/vendor/libgit2/include/git2/reflog.h +12 -9
- data/vendor/libgit2/include/git2/refs.h +241 -46
- data/vendor/libgit2/include/git2/refspec.h +20 -4
- data/vendor/libgit2/include/git2/remote.h +636 -209
- data/vendor/libgit2/include/git2/repository.h +267 -57
- data/vendor/libgit2/include/git2/reset.h +36 -6
- data/vendor/libgit2/include/git2/revert.h +91 -0
- data/vendor/libgit2/include/git2/revparse.h +27 -16
- data/vendor/libgit2/include/git2/revwalk.h +78 -35
- data/vendor/libgit2/include/git2/signature.h +32 -5
- data/vendor/libgit2/include/git2/stash.h +160 -21
- data/vendor/libgit2/include/git2/status.h +92 -30
- data/vendor/libgit2/include/git2/submodule.h +226 -133
- data/vendor/libgit2/include/git2/sys/alloc.h +101 -0
- data/vendor/libgit2/include/git2/sys/commit.h +38 -4
- data/vendor/libgit2/include/git2/sys/config.h +68 -9
- data/vendor/libgit2/include/git2/sys/diff.h +94 -0
- data/vendor/libgit2/include/git2/sys/filter.h +332 -0
- data/vendor/libgit2/include/git2/sys/hashsig.h +106 -0
- data/vendor/libgit2/include/git2/sys/index.h +6 -5
- data/vendor/libgit2/include/git2/sys/mempack.h +86 -0
- data/vendor/libgit2/include/git2/sys/merge.h +182 -0
- data/vendor/libgit2/include/git2/sys/odb_backend.h +66 -28
- data/vendor/libgit2/include/git2/sys/openssl.h +38 -0
- data/vendor/libgit2/include/git2/sys/path.h +64 -0
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +79 -19
- data/vendor/libgit2/include/git2/sys/reflog.h +21 -0
- data/vendor/libgit2/include/git2/sys/refs.h +13 -2
- data/vendor/libgit2/include/git2/sys/repository.h +64 -1
- data/vendor/libgit2/include/git2/sys/stream.h +138 -0
- data/vendor/libgit2/include/git2/sys/time.h +31 -0
- data/vendor/libgit2/include/git2/sys/transport.h +439 -0
- data/vendor/libgit2/include/git2/tag.h +11 -2
- data/vendor/libgit2/include/git2/trace.h +1 -1
- data/vendor/libgit2/include/git2/transaction.h +121 -0
- data/vendor/libgit2/include/git2/transport.h +261 -292
- data/vendor/libgit2/include/git2/tree.h +111 -21
- data/vendor/libgit2/include/git2/types.h +244 -32
- data/vendor/libgit2/include/git2/version.h +5 -2
- data/vendor/libgit2/include/git2/worktree.h +255 -0
- data/vendor/libgit2/include/git2.h +50 -40
- data/vendor/libgit2/libgit2.pc.in +13 -0
- data/vendor/libgit2/src/CMakeLists.txt +525 -0
- data/vendor/libgit2/src/alloc.c +55 -0
- data/vendor/libgit2/src/alloc.h +40 -0
- data/vendor/libgit2/src/annotated_commit.c +228 -0
- data/vendor/libgit2/src/annotated_commit.h +52 -0
- data/vendor/libgit2/src/apply.c +855 -0
- data/vendor/libgit2/src/apply.h +25 -0
- data/vendor/libgit2/src/array.h +74 -16
- data/vendor/libgit2/src/attr.c +239 -408
- data/vendor/libgit2/src/attr.h +3 -33
- data/vendor/libgit2/src/attr_file.c +424 -156
- data/vendor/libgit2/src/attr_file.h +95 -23
- data/vendor/libgit2/src/attrcache.c +469 -0
- data/vendor/libgit2/src/attrcache.h +37 -5
- data/vendor/libgit2/src/bitvec.h +75 -0
- data/vendor/libgit2/src/blame.c +532 -0
- data/vendor/libgit2/src/blame.h +95 -0
- data/vendor/libgit2/src/blame_git.c +668 -0
- data/vendor/libgit2/src/blame_git.h +22 -0
- data/vendor/libgit2/src/blob.c +233 -129
- data/vendor/libgit2/src/blob.h +29 -1
- data/vendor/libgit2/src/branch.c +295 -197
- data/vendor/libgit2/src/branch.h +2 -0
- data/vendor/libgit2/src/buf_text.c +52 -27
- data/vendor/libgit2/src/buf_text.h +7 -7
- data/vendor/libgit2/src/buffer.c +609 -52
- data/vendor/libgit2/src/buffer.h +68 -23
- data/vendor/libgit2/src/cache.c +48 -51
- data/vendor/libgit2/src/cache.h +6 -4
- data/vendor/libgit2/src/cc-compat.h +35 -7
- data/vendor/libgit2/src/checkout.c +1827 -483
- data/vendor/libgit2/src/checkout.h +4 -1
- data/vendor/libgit2/src/cherrypick.c +230 -0
- data/vendor/libgit2/src/clone.c +338 -258
- data/vendor/libgit2/src/{compress.h → clone.h} +5 -5
- data/vendor/libgit2/src/commit.c +711 -124
- data/vendor/libgit2/src/commit.h +10 -3
- data/vendor/libgit2/src/commit_list.c +21 -14
- data/vendor/libgit2/src/commit_list.h +9 -3
- data/vendor/libgit2/src/common.h +153 -13
- data/vendor/libgit2/src/config.c +871 -242
- data/vendor/libgit2/src/config.h +58 -14
- data/vendor/libgit2/src/config_backend.h +84 -0
- data/vendor/libgit2/src/config_cache.c +44 -18
- data/vendor/libgit2/src/config_entries.c +259 -0
- data/vendor/libgit2/src/config_entries.h +23 -0
- data/vendor/libgit2/src/config_file.c +837 -1113
- data/vendor/libgit2/src/config_mem.c +224 -0
- data/vendor/libgit2/src/config_parse.c +558 -0
- data/vendor/libgit2/src/config_parse.h +64 -0
- data/vendor/libgit2/src/crlf.c +290 -195
- data/vendor/libgit2/src/date.c +35 -7
- data/vendor/libgit2/src/delta.c +275 -71
- data/vendor/libgit2/src/delta.h +80 -58
- data/vendor/libgit2/src/describe.c +893 -0
- data/vendor/libgit2/src/diff.c +330 -1128
- data/vendor/libgit2/src/diff.h +25 -67
- data/vendor/libgit2/src/diff_driver.c +225 -109
- data/vendor/libgit2/src/diff_driver.h +5 -2
- data/vendor/libgit2/src/diff_file.c +128 -103
- data/vendor/libgit2/src/diff_file.h +17 -12
- data/vendor/libgit2/src/diff_generate.c +1622 -0
- data/vendor/libgit2/src/diff_generate.h +128 -0
- data/vendor/libgit2/src/diff_parse.c +108 -0
- data/vendor/libgit2/src/diff_parse.h +20 -0
- data/vendor/libgit2/src/diff_print.c +578 -218
- data/vendor/libgit2/src/diff_stats.c +362 -0
- data/vendor/libgit2/src/diff_tform.c +429 -257
- data/vendor/libgit2/src/diff_tform.h +25 -0
- data/vendor/libgit2/src/diff_xdiff.c +143 -46
- data/vendor/libgit2/src/diff_xdiff.h +12 -5
- data/vendor/libgit2/src/errors.c +150 -34
- data/vendor/libgit2/src/features.h.in +37 -0
- data/vendor/libgit2/src/fetch.c +69 -46
- data/vendor/libgit2/src/fetch.h +6 -12
- data/vendor/libgit2/src/fetchhead.c +40 -33
- data/vendor/libgit2/src/fetchhead.h +5 -4
- data/vendor/libgit2/src/filebuf.c +163 -61
- data/vendor/libgit2/src/filebuf.h +13 -7
- data/vendor/libgit2/src/fileops.c +549 -407
- data/vendor/libgit2/src/fileops.h +97 -106
- data/vendor/libgit2/src/filter.c +989 -46
- data/vendor/libgit2/src/filter.h +21 -70
- data/vendor/libgit2/src/fnmatch.c +67 -11
- data/vendor/libgit2/src/fnmatch.h +27 -7
- data/vendor/libgit2/src/global.c +257 -63
- data/vendor/libgit2/src/global.h +19 -0
- data/vendor/libgit2/src/graph.c +39 -23
- data/vendor/libgit2/src/hash/hash_collisiondetect.h +51 -0
- data/vendor/libgit2/src/hash/hash_common_crypto.h +61 -0
- data/vendor/libgit2/src/hash/hash_generic.c +3 -3
- data/vendor/libgit2/src/hash/hash_generic.h +10 -5
- data/vendor/libgit2/src/hash/hash_mbedtls.c +38 -0
- data/vendor/libgit2/src/hash/hash_mbedtls.h +24 -0
- data/vendor/libgit2/src/hash/hash_openssl.h +26 -8
- data/vendor/libgit2/src/hash/hash_win32.c +71 -43
- data/vendor/libgit2/src/hash/hash_win32.h +4 -3
- data/vendor/libgit2/src/hash/sha1dc/sha1.c +1900 -0
- data/vendor/libgit2/src/hash/sha1dc/sha1.h +110 -0
- data/vendor/libgit2/src/hash/sha1dc/ubc_check.c +372 -0
- data/vendor/libgit2/src/hash/sha1dc/ubc_check.h +52 -0
- data/vendor/libgit2/src/hash.c +0 -1
- data/vendor/libgit2/src/hash.h +13 -6
- data/vendor/libgit2/src/hashsig.c +121 -126
- data/vendor/libgit2/src/ident.c +129 -0
- data/vendor/libgit2/src/idxmap.c +153 -0
- data/vendor/libgit2/src/idxmap.h +41 -0
- data/vendor/libgit2/src/ignore.c +362 -123
- data/vendor/libgit2/src/ignore.h +16 -4
- data/vendor/libgit2/src/index.c +2131 -692
- data/vendor/libgit2/src/index.h +138 -6
- data/vendor/libgit2/src/indexer.c +866 -266
- data/vendor/libgit2/src/indexer.h +16 -0
- data/vendor/libgit2/src/integer.h +106 -0
- data/vendor/libgit2/src/iterator.c +1888 -967
- data/vendor/libgit2/src/iterator.h +130 -67
- data/vendor/libgit2/src/khash.h +43 -29
- data/vendor/libgit2/src/mailmap.c +485 -0
- data/vendor/libgit2/src/mailmap.h +35 -0
- data/vendor/libgit2/src/map.h +1 -1
- data/vendor/libgit2/src/merge.c +1679 -479
- data/vendor/libgit2/src/merge.h +89 -22
- data/vendor/libgit2/src/merge_driver.c +426 -0
- data/vendor/libgit2/src/merge_driver.h +62 -0
- data/vendor/libgit2/src/merge_file.c +238 -101
- data/vendor/libgit2/src/message.c +4 -28
- data/vendor/libgit2/src/message.h +3 -1
- data/vendor/libgit2/src/mwindow.c +123 -15
- data/vendor/libgit2/src/mwindow.h +10 -1
- data/vendor/libgit2/src/netops.c +178 -499
- data/vendor/libgit2/src/netops.h +51 -27
- data/vendor/libgit2/src/notes.c +251 -94
- data/vendor/libgit2/src/notes.h +5 -2
- data/vendor/libgit2/src/object.c +253 -67
- data/vendor/libgit2/src/object.h +40 -2
- data/vendor/libgit2/src/object_api.c +30 -11
- data/vendor/libgit2/src/odb.c +765 -201
- data/vendor/libgit2/src/odb.h +40 -8
- data/vendor/libgit2/src/odb_loose.c +560 -346
- data/vendor/libgit2/src/odb_mempack.c +185 -0
- data/vendor/libgit2/src/odb_pack.c +117 -73
- data/vendor/libgit2/src/offmap.c +113 -0
- data/vendor/libgit2/src/offmap.h +32 -42
- data/vendor/libgit2/src/oid.c +45 -25
- data/vendor/libgit2/src/oid.h +26 -8
- data/vendor/libgit2/src/oidarray.c +34 -0
- data/vendor/libgit2/src/oidarray.h +20 -0
- data/vendor/libgit2/src/oidmap.c +125 -0
- data/vendor/libgit2/src/oidmap.h +30 -17
- data/vendor/libgit2/src/pack-objects.c +688 -265
- data/vendor/libgit2/src/pack-objects.h +27 -13
- data/vendor/libgit2/src/pack.c +418 -202
- data/vendor/libgit2/src/pack.h +25 -16
- data/vendor/libgit2/src/parse.c +124 -0
- data/vendor/libgit2/src/parse.h +61 -0
- data/vendor/libgit2/src/patch.c +223 -0
- data/vendor/libgit2/src/patch.h +68 -0
- data/vendor/libgit2/src/patch_generate.c +901 -0
- data/vendor/libgit2/src/patch_generate.h +69 -0
- data/vendor/libgit2/src/patch_parse.c +1136 -0
- data/vendor/libgit2/src/patch_parse.h +51 -0
- data/vendor/libgit2/src/path.c +1247 -241
- data/vendor/libgit2/src/path.h +353 -57
- data/vendor/libgit2/src/pathspec.c +586 -58
- data/vendor/libgit2/src/pathspec.h +37 -15
- data/vendor/libgit2/src/pool.c +134 -221
- data/vendor/libgit2/src/pool.h +38 -50
- data/vendor/libgit2/src/posix.c +76 -10
- data/vendor/libgit2/src/posix.h +74 -32
- data/vendor/libgit2/src/pqueue.c +79 -117
- data/vendor/libgit2/src/pqueue.h +38 -82
- data/vendor/libgit2/src/proxy.c +39 -0
- data/vendor/libgit2/src/proxy.h +17 -0
- data/vendor/libgit2/src/push.c +178 -279
- data/vendor/libgit2/src/push.h +93 -4
- data/vendor/libgit2/src/reader.c +265 -0
- data/vendor/libgit2/src/reader.h +107 -0
- data/vendor/libgit2/src/rebase.c +1364 -0
- data/vendor/libgit2/src/refdb.c +74 -19
- data/vendor/libgit2/src/refdb.h +16 -3
- data/vendor/libgit2/src/refdb_fs.c +1472 -603
- data/vendor/libgit2/src/refdb_fs.h +4 -0
- data/vendor/libgit2/src/reflog.c +40 -330
- data/vendor/libgit2/src/reflog.h +8 -2
- data/vendor/libgit2/src/refs.c +641 -225
- data/vendor/libgit2/src/refs.h +53 -6
- data/vendor/libgit2/src/refspec.c +175 -62
- data/vendor/libgit2/src/refspec.h +10 -25
- data/vendor/libgit2/src/remote.c +1741 -723
- data/vendor/libgit2/src/remote.h +17 -5
- data/vendor/libgit2/src/repository.c +1505 -421
- data/vendor/libgit2/src/repository.h +95 -15
- data/vendor/libgit2/src/reset.c +63 -26
- data/vendor/libgit2/src/revert.c +232 -0
- data/vendor/libgit2/src/revparse.c +94 -80
- data/vendor/libgit2/src/revwalk.c +427 -194
- data/vendor/libgit2/src/revwalk.h +14 -5
- data/vendor/libgit2/src/settings.c +290 -0
- data/vendor/libgit2/src/sha1_lookup.c +16 -159
- data/vendor/libgit2/src/sha1_lookup.h +5 -4
- data/vendor/libgit2/src/signature.c +138 -26
- data/vendor/libgit2/src/signature.h +5 -0
- data/vendor/libgit2/src/sortedcache.c +395 -0
- data/vendor/libgit2/src/sortedcache.h +180 -0
- data/vendor/libgit2/src/stash.c +629 -168
- data/vendor/libgit2/src/status.c +125 -75
- data/vendor/libgit2/src/status.h +4 -2
- data/vendor/libgit2/src/stdalloc.c +120 -0
- data/vendor/libgit2/src/stdalloc.h +17 -0
- data/vendor/libgit2/src/stream.h +86 -0
- data/vendor/libgit2/src/streams/mbedtls.c +483 -0
- data/vendor/libgit2/src/streams/mbedtls.h +23 -0
- data/vendor/libgit2/src/streams/openssl.c +789 -0
- data/vendor/libgit2/src/streams/openssl.h +23 -0
- data/vendor/libgit2/src/streams/registry.c +118 -0
- data/vendor/libgit2/src/streams/registry.h +19 -0
- data/vendor/libgit2/src/streams/socket.c +235 -0
- data/vendor/libgit2/src/streams/socket.h +23 -0
- data/vendor/libgit2/src/streams/stransport.c +323 -0
- data/vendor/libgit2/src/streams/stransport.h +21 -0
- data/vendor/libgit2/src/streams/tls.c +73 -0
- data/vendor/libgit2/src/streams/tls.h +31 -0
- data/vendor/libgit2/src/strmap.c +147 -0
- data/vendor/libgit2/src/strmap.h +46 -51
- data/vendor/libgit2/src/strnlen.h +24 -0
- data/vendor/libgit2/src/submodule.c +1633 -877
- data/vendor/libgit2/src/submodule.h +83 -21
- data/vendor/libgit2/src/sysdir.c +355 -0
- data/vendor/libgit2/src/sysdir.h +119 -0
- data/vendor/libgit2/src/tag.c +87 -62
- data/vendor/libgit2/src/tag.h +4 -1
- data/vendor/libgit2/src/thread-utils.c +3 -0
- data/vendor/libgit2/src/thread-utils.h +71 -35
- data/vendor/libgit2/src/trace.c +4 -4
- data/vendor/libgit2/src/trace.h +11 -3
- data/vendor/libgit2/src/trailer.c +416 -0
- data/vendor/libgit2/src/transaction.c +382 -0
- data/vendor/libgit2/src/transaction.h +14 -0
- data/vendor/libgit2/src/transport.c +133 -67
- data/vendor/libgit2/src/transports/auth.c +75 -0
- data/vendor/libgit2/src/transports/auth.h +64 -0
- data/vendor/libgit2/src/transports/auth_negotiate.c +277 -0
- data/vendor/libgit2/src/transports/auth_negotiate.h +27 -0
- data/vendor/libgit2/src/transports/cred.c +296 -68
- data/vendor/libgit2/src/transports/cred.h +16 -0
- data/vendor/libgit2/src/transports/cred_helpers.c +4 -0
- data/vendor/libgit2/src/transports/git.c +108 -90
- data/vendor/libgit2/src/transports/http.c +803 -258
- data/vendor/libgit2/src/transports/http.h +25 -0
- data/vendor/libgit2/src/transports/local.c +265 -169
- data/vendor/libgit2/src/transports/smart.c +255 -45
- data/vendor/libgit2/src/transports/smart.h +42 -22
- data/vendor/libgit2/src/transports/smart_pkt.c +250 -159
- data/vendor/libgit2/src/transports/smart_protocol.c +414 -196
- data/vendor/libgit2/src/transports/ssh.c +645 -236
- data/vendor/libgit2/src/transports/ssh.h +14 -0
- data/vendor/libgit2/src/transports/winhttp.c +809 -353
- data/vendor/libgit2/src/tree-cache.c +138 -52
- data/vendor/libgit2/src/tree-cache.h +14 -7
- data/vendor/libgit2/src/tree.c +620 -259
- data/vendor/libgit2/src/tree.h +12 -19
- data/vendor/libgit2/src/tsort.c +3 -2
- data/vendor/libgit2/src/unix/map.c +25 -7
- data/vendor/libgit2/src/unix/posix.h +77 -12
- data/vendor/libgit2/src/unix/pthread.h +56 -0
- data/vendor/libgit2/src/unix/realpath.c +12 -8
- data/vendor/libgit2/src/userdiff.h +208 -0
- data/vendor/libgit2/src/util.c +349 -165
- data/vendor/libgit2/src/util.h +167 -85
- data/vendor/libgit2/src/varint.c +43 -0
- data/vendor/libgit2/src/varint.h +17 -0
- data/vendor/libgit2/src/vector.c +156 -33
- data/vendor/libgit2/src/vector.h +41 -5
- data/vendor/libgit2/src/win32/dir.c +22 -42
- data/vendor/libgit2/src/win32/dir.h +7 -5
- data/vendor/libgit2/src/win32/error.c +6 -32
- data/vendor/libgit2/src/win32/error.h +4 -2
- data/vendor/libgit2/src/win32/findfile.c +62 -69
- data/vendor/libgit2/src/win32/findfile.h +5 -13
- data/vendor/libgit2/src/win32/git2.rc +44 -0
- data/vendor/libgit2/src/win32/map.c +39 -11
- data/vendor/libgit2/src/win32/mingw-compat.h +10 -11
- data/vendor/libgit2/src/win32/msvc-compat.h +10 -33
- data/vendor/libgit2/src/win32/path_w32.c +476 -0
- data/vendor/libgit2/src/win32/path_w32.h +104 -0
- data/vendor/libgit2/src/win32/posix.h +35 -30
- data/vendor/libgit2/src/win32/posix_w32.c +659 -327
- data/vendor/libgit2/src/win32/precompiled.h +7 -2
- data/vendor/libgit2/src/win32/reparse.h +57 -0
- data/vendor/libgit2/src/win32/thread.c +258 -0
- data/vendor/libgit2/src/win32/thread.h +64 -0
- data/vendor/libgit2/src/win32/utf-conv.c +127 -62
- data/vendor/libgit2/src/win32/utf-conv.h +47 -6
- data/vendor/libgit2/src/win32/version.h +21 -4
- data/vendor/libgit2/src/win32/w32_buffer.c +54 -0
- data/vendor/libgit2/src/win32/w32_buffer.h +20 -0
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +438 -0
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +129 -0
- data/vendor/libgit2/src/win32/w32_stack.c +193 -0
- data/vendor/libgit2/src/win32/w32_stack.h +140 -0
- data/vendor/libgit2/src/win32/w32_util.c +95 -0
- data/vendor/libgit2/src/win32/w32_util.h +170 -0
- data/vendor/libgit2/src/win32/win32-compat.h +52 -0
- data/vendor/libgit2/src/worktree.c +578 -0
- data/vendor/libgit2/src/worktree.h +39 -0
- data/vendor/libgit2/src/xdiff/xdiff.h +33 -18
- data/vendor/libgit2/src/xdiff/xdiffi.c +578 -88
- data/vendor/libgit2/src/xdiff/xdiffi.h +3 -2
- data/vendor/libgit2/src/xdiff/xemit.c +106 -45
- data/vendor/libgit2/src/xdiff/xemit.h +3 -3
- data/vendor/libgit2/src/xdiff/xhistogram.c +5 -4
- data/vendor/libgit2/src/xdiff/xinclude.h +3 -2
- data/vendor/libgit2/src/xdiff/xmacros.h +2 -2
- data/vendor/libgit2/src/xdiff/xmerge.c +167 -48
- data/vendor/libgit2/src/xdiff/xpatience.c +42 -10
- data/vendor/libgit2/src/xdiff/xprepare.c +14 -14
- data/vendor/libgit2/src/xdiff/xprepare.h +2 -2
- data/vendor/libgit2/src/xdiff/xtypes.h +2 -2
- data/vendor/libgit2/src/xdiff/xutils.c +60 -56
- data/vendor/libgit2/src/xdiff/xutils.h +3 -5
- data/vendor/libgit2/src/zstream.c +205 -0
- data/vendor/libgit2/src/zstream.h +53 -0
- metadata +281 -233
- data/Rakefile +0 -61
- data/ext/rugged/rugged_diff_patch.c +0 -169
- data/lib/rugged/diff/patch.rb +0 -28
- data/test/blob_test.rb +0 -341
- data/test/branch_test.rb +0 -199
- data/test/commit_test.rb +0 -104
- data/test/config_test.rb +0 -45
- data/test/coverage/cover.rb +0 -133
- data/test/diff_test.rb +0 -777
- data/test/errors_test.rb +0 -34
- data/test/fixtures/alternate/objects/14/6ae76773c91e3b1d00cf7a338ec55ae58297e2 +0 -0
- data/test/fixtures/alternate/objects/14/9c32d47e99d0a3572ff1e70a2e0051bbf347a9 +0 -0
- data/test/fixtures/alternate/objects/14/fb3108588f9421bf764041e5e3ac305eb6277f +0 -0
- data/test/fixtures/archive.tar.gz +0 -0
- data/test/fixtures/attr/attr0 +0 -1
- data/test/fixtures/attr/attr1 +0 -29
- data/test/fixtures/attr/attr2 +0 -21
- data/test/fixtures/attr/attr3 +0 -4
- data/test/fixtures/attr/binfile +0 -1
- data/test/fixtures/attr/dir/file +0 -0
- data/test/fixtures/attr/file +0 -1
- data/test/fixtures/attr/gitattributes +0 -29
- data/test/fixtures/attr/gitignore +0 -2
- data/test/fixtures/attr/ign +0 -1
- data/test/fixtures/attr/macro_bad +0 -1
- data/test/fixtures/attr/macro_test +0 -1
- data/test/fixtures/attr/root_test1 +0 -1
- data/test/fixtures/attr/root_test2 +0 -6
- data/test/fixtures/attr/root_test3 +0 -19
- data/test/fixtures/attr/root_test4.txt +0 -14
- data/test/fixtures/attr/sub/abc +0 -37
- data/test/fixtures/attr/sub/dir/file +0 -0
- data/test/fixtures/attr/sub/file +0 -1
- data/test/fixtures/attr/sub/ign/file +0 -1
- data/test/fixtures/attr/sub/ign/sub/file +0 -1
- data/test/fixtures/attr/sub/sub/dir +0 -0
- data/test/fixtures/attr/sub/sub/file +0 -1
- data/test/fixtures/attr/sub/sub/subsub.txt +0 -1
- data/test/fixtures/attr/sub/subdir_test1 +0 -2
- data/test/fixtures/attr/sub/subdir_test2.txt +0 -1
- data/test/fixtures/diff/another.txt +0 -38
- data/test/fixtures/diff/readme.txt +0 -36
- data/test/fixtures/mergedrepo/conflicts-one.txt +0 -5
- data/test/fixtures/mergedrepo/conflicts-two.txt +0 -5
- data/test/fixtures/mergedrepo/one.txt +0 -10
- data/test/fixtures/mergedrepo/two.txt +0 -12
- data/test/fixtures/status/current_file +0 -1
- data/test/fixtures/status/ignored_file +0 -1
- data/test/fixtures/status/modified_file +0 -2
- data/test/fixtures/status/new_file +0 -1
- data/test/fixtures/status/staged_changes +0 -2
- data/test/fixtures/status/staged_changes_modified_file +0 -3
- data/test/fixtures/status/staged_delete_modified_file +0 -1
- data/test/fixtures/status/staged_new_file +0 -1
- data/test/fixtures/status/staged_new_file_modified_file +0 -2
- data/test/fixtures/status/subdir/current_file +0 -1
- data/test/fixtures/status/subdir/modified_file +0 -2
- data/test/fixtures/status/subdir/new_file +0 -1
- data/test/fixtures/status/subdir.txt +0 -2
- data/test/fixtures/status//350/277/231 +0 -1
- data/test/fixtures/testrepo.git/HEAD +0 -1
- data/test/fixtures/testrepo.git/config +0 -13
- data/test/fixtures/testrepo.git/description +0 -1
- data/test/fixtures/testrepo.git/index +0 -0
- data/test/fixtures/testrepo.git/info/exclude +0 -6
- data/test/fixtures/testrepo.git/logs/HEAD +0 -3
- data/test/fixtures/testrepo.git/logs/refs/heads/master +0 -3
- data/test/fixtures/testrepo.git/logs/refs/notes/commits +0 -1
- data/test/fixtures/testrepo.git/objects/0c/37a5391bbff43c37f0d0371823a5509eed5b1d +0 -0
- data/test/fixtures/testrepo.git/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 +0 -0
- data/test/fixtures/testrepo.git/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 +0 -0
- data/test/fixtures/testrepo.git/objects/18/10dff58d8a660512d4832e740f692884338ccd +0 -0
- data/test/fixtures/testrepo.git/objects/2d/2eff63372b08adf0a9eb84109ccf7d19e2f3a2 +0 -0
- data/test/fixtures/testrepo.git/objects/36/060c58702ed4c2a40832c51758d5344201d89a +0 -2
- data/test/fixtures/testrepo.git/objects/44/1034f860c1d5d90e4188d11ae0d325176869a8 +0 -1
- data/test/fixtures/testrepo.git/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 +0 -0
- data/test/fixtures/testrepo.git/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 +0 -2
- data/test/fixtures/testrepo.git/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 +0 -2
- data/test/fixtures/testrepo.git/objects/60/d415052a33de2150bf68757f6461df4f563ae4 +0 -0
- data/test/fixtures/testrepo.git/objects/61/9f9935957e010c419cb9d15621916ddfcc0b96 +0 -0
- data/test/fixtures/testrepo.git/objects/68/8a8f4ef7496901d15322972f96e212a9e466cc +0 -1
- data/test/fixtures/testrepo.git/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a +0 -0
- data/test/fixtures/testrepo.git/objects/77/71329dfa3002caf8c61a0ceb62a31d09023f37 +0 -0
- data/test/fixtures/testrepo.git/objects/81/4889a078c031f61ed08ab5fa863aea9314344d +0 -0
- data/test/fixtures/testrepo.git/objects/84/96071c1b46c854b31185ea97743be6a8774479 +0 -0
- data/test/fixtures/testrepo.git/objects/94/eca2de348d5f672faf56b0decafa5937e3235e +0 -0
- data/test/fixtures/testrepo.git/objects/9b/7384fe1676186192842f5d3e129457b62db9e3 +0 -0
- data/test/fixtures/testrepo.git/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a +0 -3
- data/test/fixtures/testrepo.git/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f +0 -2
- data/test/fixtures/testrepo.git/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd +0 -0
- data/test/fixtures/testrepo.git/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 +0 -0
- data/test/fixtures/testrepo.git/objects/b7/4713326bc972cc15751ed504dca6f6f3b91f7a +0 -3
- data/test/fixtures/testrepo.git/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 +0 -3
- data/test/fixtures/testrepo.git/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd +0 -3
- data/test/fixtures/testrepo.git/objects/c4/dc1555e4d4fa0e0c9c3fc46734c7c35b3ce90b +0 -0
- data/test/fixtures/testrepo.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
- data/test/fixtures/testrepo.git/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 +0 -0
- data/test/fixtures/testrepo.git/objects/fa/49b077972391ad58037050f2a75f74e3671e92 +0 -0
- data/test/fixtures/testrepo.git/objects/fd/093bff70906175335656e6ce6ae05783708765 +0 -0
- data/test/fixtures/testrepo.git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx +0 -0
- data/test/fixtures/testrepo.git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack +0 -0
- data/test/fixtures/testrepo.git/packed-refs +0 -2
- data/test/fixtures/testrepo.git/refs/heads/master +0 -1
- data/test/fixtures/testrepo.git/refs/notes/commits +0 -1
- data/test/fixtures/testrepo.git/refs/tags/v0.9 +0 -1
- data/test/fixtures/testrepo.git/refs/tags/v1.0 +0 -1
- data/test/fixtures/text_file.md +0 -464
- data/test/fixtures/unsymlinked.git/HEAD +0 -1
- data/test/fixtures/unsymlinked.git/config +0 -6
- data/test/fixtures/unsymlinked.git/description +0 -1
- data/test/fixtures/unsymlinked.git/info/exclude +0 -2
- data/test/fixtures/unsymlinked.git/objects/08/8b64704e0d6b8bd061dea879418cb5442a3fbf +0 -0
- data/test/fixtures/unsymlinked.git/objects/13/a5e939bca25940c069fd2169d993dba328e30b +0 -0
- data/test/fixtures/unsymlinked.git/objects/19/bf568e59e3a0b363cafb4106226e62d4a4c41c +0 -0
- data/test/fixtures/unsymlinked.git/objects/58/1fadd35b4cf320d102a152f918729011604773 +0 -0
- data/test/fixtures/unsymlinked.git/objects/5c/87b6791e8b13da658a14d1ef7e09b5dc3bac8c +0 -0
- data/test/fixtures/unsymlinked.git/objects/6f/e5f5398af85fb3de8a6aba0339b6d3bfa26a27 +0 -0
- data/test/fixtures/unsymlinked.git/objects/7f/ccd75616ec188b8f1b23d67506a334cc34a49d +0 -0
- data/test/fixtures/unsymlinked.git/objects/80/6999882bf91d24241e4077906b9017605eb1f3 +0 -0
- data/test/fixtures/unsymlinked.git/objects/83/7d176303c5005505ec1e4a30231c40930c0230 +0 -0
- data/test/fixtures/unsymlinked.git/objects/a8/595ccca04f40818ae0155c8f9c77a230e597b6 +0 -2
- data/test/fixtures/unsymlinked.git/objects/cf/8f1cf5cce859c438d6cc067284cb5e161206e7 +0 -0
- data/test/fixtures/unsymlinked.git/objects/d5/278d05c8607ec420bfee4cf219fbc0eeebfd6a +0 -0
- data/test/fixtures/unsymlinked.git/objects/f4/e16fb76536591a41454194058d048d8e4dd2e9 +0 -0
- data/test/fixtures/unsymlinked.git/objects/f9/e65619d93fdf2673882e0a261c5e93b1a84006 +0 -0
- data/test/fixtures/unsymlinked.git/refs/heads/exe-file +0 -1
- data/test/fixtures/unsymlinked.git/refs/heads/master +0 -1
- data/test/fixtures/unsymlinked.git/refs/heads/reg-file +0 -1
- data/test/index_test.rb +0 -333
- data/test/lib_test.rb +0 -127
- data/test/note_test.rb +0 -158
- data/test/object_test.rb +0 -43
- data/test/reference_test.rb +0 -207
- data/test/remote_test.rb +0 -324
- data/test/repo_pack_test.rb +0 -24
- data/test/repo_reset_test.rb +0 -82
- data/test/repo_test.rb +0 -402
- data/test/tag_test.rb +0 -68
- data/test/test_helper.rb +0 -92
- data/test/tree_test.rb +0 -91
- data/test/walker_test.rb +0 -88
- data/vendor/libgit2/Makefile.embed +0 -42
- data/vendor/libgit2/include/git2/push.h +0 -131
- data/vendor/libgit2/include/git2/threads.h +0 -50
- data/vendor/libgit2/src/amiga/map.c +0 -48
- data/vendor/libgit2/src/bswap.h +0 -97
- data/vendor/libgit2/src/compress.c +0 -53
- data/vendor/libgit2/src/config_file.h +0 -60
- data/vendor/libgit2/src/delta-apply.c +0 -134
- data/vendor/libgit2/src/delta-apply.h +0 -50
- data/vendor/libgit2/src/diff_patch.c +0 -995
- data/vendor/libgit2/src/diff_patch.h +0 -46
- data/vendor/libgit2/src/hashsig.h +0 -72
- data/vendor/libgit2/src/merge_file.h +0 -71
- data/vendor/libgit2/src/win32/pthread.c +0 -144
- data/vendor/libgit2/src/win32/pthread.h +0 -50
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 28cda5c3e68cfdf6edcf8efb20157b83af045c61009b9d84ef45d04307222f68
|
|
4
|
+
data.tar.gz: 6136a85649898880308af6d3ae92d3c3ac1802fe3b4595b826129ad4bdb9375d
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 4893ace2448d29b3945a0d45bc0770d2543dc5c40f8fafd9530fe41d9f52715f008f7c88510115bb9c1413fd5a434ef60d636f7544f96a0057fc65051a4d8efa
|
|
7
|
+
data.tar.gz: d3df3dad58a2405fa3da033bb5d3debb25d80f37563c342247099a390b663b807ca75b993cbde772e27d108e56b6590bfe921b3e1fcd9e64c897e97345c614af
|
data/LICENSE
CHANGED
data/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Rugged
|
|
1
|
+
# Rugged [](https://travis-ci.org/libgit2/rugged)
|
|
2
2
|
**libgit2 bindings in Ruby**
|
|
3
3
|
|
|
4
4
|
Rugged is a library for accessing [libgit2](https://github.com/libgit2/libgit2) in Ruby. It gives you the speed and
|
|
@@ -17,10 +17,19 @@ Rugged is a self-contained gem. You can install it by running:
|
|
|
17
17
|
|
|
18
18
|
$ gem install rugged
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
You need to have CMake and `pkg-config` installed on your system to be able to build the included version of `libgit2`. On OS X, after installing [Homebrew](http://brew.sh/), you can get CMake with:
|
|
21
|
+
```bash
|
|
22
|
+
$ brew install cmake
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Please follow the above in case installation of the gem fails with `ERROR: CMake is required to build Rugged.`.
|
|
26
|
+
|
|
27
|
+
If you want to build Rugged with HTTPS and SSH support, check out the list of optional [libgit2 dependencies](https://github.com/libgit2/libgit2#optional-dependencies).
|
|
28
|
+
|
|
29
|
+
If you're using bundler and want to bundle `libgit2` with Rugged, you can use the `:submodules` option:
|
|
21
30
|
|
|
22
31
|
```ruby
|
|
23
|
-
gem 'rugged', git: 'git://github.com/libgit2/rugged.git',
|
|
32
|
+
gem 'rugged', git: 'git://github.com/libgit2/rugged.git', submodules: true
|
|
24
33
|
```
|
|
25
34
|
|
|
26
35
|
To load Rugged, you'll usually want to add something like this:
|
|
@@ -29,6 +38,24 @@ To load Rugged, you'll usually want to add something like this:
|
|
|
29
38
|
require 'rugged'
|
|
30
39
|
```
|
|
31
40
|
|
|
41
|
+
### Use the system provided libgit2
|
|
42
|
+
|
|
43
|
+
By default, Rugged builds and uses a bundled version of libgit2. If you
|
|
44
|
+
want to use the system library instead, you can install rugged as follows:
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
gem install rugged -- --use-system-libraries
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Or if you are using bundler:
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
bundle config build.rugged --use-system-libraries
|
|
54
|
+
bundle install
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
However, note that Rugged does only support specific versions of libgit2.
|
|
58
|
+
|
|
32
59
|
## Usage
|
|
33
60
|
|
|
34
61
|
Rugged gives you access to the many parts of a Git repository. You can read and
|
|
@@ -76,7 +103,7 @@ repo.bare?
|
|
|
76
103
|
# => false
|
|
77
104
|
repo.empty?
|
|
78
105
|
# => true
|
|
79
|
-
repo.
|
|
106
|
+
repo.head_unborn?
|
|
80
107
|
# => false
|
|
81
108
|
repo.head_detached?
|
|
82
109
|
# => false
|
|
@@ -89,13 +116,15 @@ repo.workdir
|
|
|
89
116
|
|
|
90
117
|
# The HEAD of the repository.
|
|
91
118
|
ref = repo.head
|
|
92
|
-
# => #<Rugged::Reference:2228467240 {name: "refs/heads/master", target: "
|
|
119
|
+
# => #<Rugged::Reference:2228467240 {name: "refs/heads/master", target: #<Rugged::Commit:2228467250 {message: "helpful message", tree: #<Rugged::Tree:2228467260 {oid: 5d6f29220a0783b8085134df14ec4d960b6c3bf2}>}>
|
|
93
120
|
|
|
94
|
-
# From the returned ref, you can also access the `name` and
|
|
121
|
+
# From the returned ref, you can also access the `name`, `target`, and target SHA:
|
|
95
122
|
ref.name
|
|
96
123
|
# => "refs/heads/master"
|
|
97
124
|
ref.target
|
|
98
|
-
# => "
|
|
125
|
+
# => #<Rugged::Commit:2228467250 {message: "helpful message", tree: #<Rugged::Tree:2228467260 {oid: 5d6f29220a0783b8085134df14ec4d960b6c3bf2}>}>
|
|
126
|
+
ref.target_id
|
|
127
|
+
# => "2bc6a70483369f33f641ca44873497f13a15cde5"
|
|
99
128
|
|
|
100
129
|
# Reading an object
|
|
101
130
|
object = repo.read('a0ae5566e3c8a3bddffab21022056f0b5e03ef07')
|
|
@@ -122,7 +151,8 @@ more high-level, so it may be preferable:
|
|
|
122
151
|
|
|
123
152
|
```ruby
|
|
124
153
|
oid = repo.write("This is a blob.", :blob)
|
|
125
|
-
index =
|
|
154
|
+
index = repo.index
|
|
155
|
+
index.read_tree(repo.head.target.tree)
|
|
126
156
|
index.add(:path => "README.md", :oid => oid, :mode => 0100644)
|
|
127
157
|
|
|
128
158
|
options = {}
|
|
@@ -239,11 +269,11 @@ You can also write trees with the `TreeBuilder`:
|
|
|
239
269
|
|
|
240
270
|
```ruby
|
|
241
271
|
oid = repo.write("This is a blob.", :blob)
|
|
242
|
-
builder = Rugged::Tree::Builder.new
|
|
272
|
+
builder = Rugged::Tree::Builder.new(repo)
|
|
243
273
|
builder << { :type => :blob, :name => "README.md", :oid => oid, :filemode => 0100644 }
|
|
244
274
|
|
|
245
275
|
options = {}
|
|
246
|
-
options[:tree] = builder.write
|
|
276
|
+
options[:tree] = builder.write
|
|
247
277
|
|
|
248
278
|
options[:author] = { :email => "testuser@github.com", :name => 'Test Author', :time => Time.now }
|
|
249
279
|
options[:committer] = { :email => "testuser@github.com", :name => 'Test Author', :time => Time.now }
|
|
@@ -254,6 +284,46 @@ options[:update_ref] = 'HEAD'
|
|
|
254
284
|
Rugged::Commit.create(repo, options)
|
|
255
285
|
```
|
|
256
286
|
|
|
287
|
+
### Blob Objects
|
|
288
|
+
|
|
289
|
+
Blob objects represent the data in the files of a Tree Object.
|
|
290
|
+
|
|
291
|
+
```ruby
|
|
292
|
+
blob = repo.lookup('e1253910439ea902cf49be8a9f02f3c08d89ac73')
|
|
293
|
+
blob.content # => Gives you the content of the blob.
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
#### Streaming Blob Objects
|
|
297
|
+
|
|
298
|
+
There is currently no way to stream data from a blob, because `libgit2` itself does not (yet) support
|
|
299
|
+
streaming blobs out of the git object database. While there are hooks and interfaces for supporting it,
|
|
300
|
+
the default file system backend always loads the entire blob contents into memory.
|
|
301
|
+
|
|
302
|
+
If you need to access a Blob object through an IO-like API, you can wrap it with the `StringIO` class.
|
|
303
|
+
Note that the only advantage here is a stream-compatible interface, the complete blob object will still
|
|
304
|
+
be loaded into memory. Below is an example for streaming a Blob using the Sinatra framework:
|
|
305
|
+
|
|
306
|
+
```ruby
|
|
307
|
+
# Sinatra endpoint
|
|
308
|
+
get "/blobs/:sha" do
|
|
309
|
+
repo = Rugged::Repository.new(my_repo_path)
|
|
310
|
+
blob = repo.lookup params[:sha]
|
|
311
|
+
|
|
312
|
+
headers({
|
|
313
|
+
"Vary" => "Accept",
|
|
314
|
+
"Connection" => "keep-alive",
|
|
315
|
+
"Transfer-Encoding" => "chunked",
|
|
316
|
+
"Content-Type" => "application/octet-stream",
|
|
317
|
+
})
|
|
318
|
+
|
|
319
|
+
stream do |out|
|
|
320
|
+
StringIO.new(blob.content).each(8000) do |chunk|
|
|
321
|
+
out << chunk
|
|
322
|
+
end
|
|
323
|
+
end
|
|
324
|
+
end
|
|
325
|
+
```
|
|
326
|
+
|
|
257
327
|
---
|
|
258
328
|
|
|
259
329
|
### Commit Walker
|
|
@@ -315,29 +385,28 @@ index.add(path)
|
|
|
315
385
|
|
|
316
386
|
### Refs
|
|
317
387
|
|
|
318
|
-
|
|
388
|
+
You can access references through the `Rugged::ReferenceCollection` object returned by `Repository#references`.
|
|
319
389
|
|
|
320
390
|
```ruby
|
|
321
|
-
ref = repo.
|
|
322
|
-
ref = Rugged::Reference.lookup(repo, "refs/heads/master")
|
|
391
|
+
ref = repo.references["refs/heads/master"]
|
|
323
392
|
|
|
324
|
-
sha = ref.
|
|
393
|
+
sha = ref.target_id
|
|
325
394
|
str = ref.type # :direct
|
|
326
395
|
str = ref.name # "refs/heads/master"
|
|
327
396
|
```
|
|
328
397
|
|
|
329
|
-
You can also easily
|
|
398
|
+
You can also easily iterate over all references:
|
|
330
399
|
|
|
331
400
|
```ruby
|
|
332
|
-
repo.
|
|
401
|
+
repo.references.each do |ref|
|
|
333
402
|
puts ref.name
|
|
334
403
|
end
|
|
335
404
|
```
|
|
336
405
|
|
|
337
|
-
Or
|
|
406
|
+
Or only over references that match the given pattern (glob):
|
|
338
407
|
|
|
339
408
|
```ruby
|
|
340
|
-
repo.refs
|
|
409
|
+
repo.references.each("refs/tags/*") do |ref|
|
|
341
410
|
puts ref.name
|
|
342
411
|
end
|
|
343
412
|
```
|
|
@@ -345,19 +414,22 @@ end
|
|
|
345
414
|
It is also easy to create, update, rename or delete a reference:
|
|
346
415
|
|
|
347
416
|
```ruby
|
|
348
|
-
ref =
|
|
417
|
+
ref = repo.references.create("refs/heads/unit_test", some_commit_sha)
|
|
349
418
|
|
|
350
|
-
|
|
419
|
+
repo.references.update(ref, new_sha) # or...
|
|
420
|
+
repo.references.update("refs/heads/unit_test", new_sha)
|
|
351
421
|
|
|
352
|
-
|
|
422
|
+
repo.references.rename(ref, "refs/heads/blead") # or...
|
|
423
|
+
repo.references.rename("refs/heads/unit_test", "refs/heads/blead")
|
|
353
424
|
|
|
354
|
-
|
|
425
|
+
repo.references.delete(ref) # or...
|
|
426
|
+
repo.references.delete("refs/heads/unit_test") # or...
|
|
355
427
|
```
|
|
356
428
|
|
|
357
429
|
Finally, you can access the reflog for any branch:
|
|
358
430
|
|
|
359
431
|
```ruby
|
|
360
|
-
ref =
|
|
432
|
+
ref = repo.references["refs/heads/master"]
|
|
361
433
|
entry = ref.log.first
|
|
362
434
|
sha = entry[:id_old]
|
|
363
435
|
sha = entry[:id_new]
|
|
@@ -369,42 +441,99 @@ prsn = entry[:committer]
|
|
|
369
441
|
|
|
370
442
|
### Branches
|
|
371
443
|
|
|
372
|
-
`Rugged::
|
|
444
|
+
The `Rugged::BranchCollection` object returned by `Repository#branches` will help
|
|
445
|
+
you with all of your branch-related needs.
|
|
373
446
|
|
|
374
447
|
Iterate over all branches:
|
|
375
448
|
|
|
376
449
|
```ruby
|
|
377
|
-
|
|
450
|
+
repo.branches.each_name().sort
|
|
378
451
|
# => ["master", "origin/HEAD", "origin/master", "origin/packed"]
|
|
379
452
|
|
|
380
|
-
|
|
453
|
+
repo.branches.each_name(:local).sort
|
|
381
454
|
# => ["master"]
|
|
382
455
|
|
|
383
|
-
|
|
456
|
+
repo.branches.each_name(:remote).sort
|
|
384
457
|
# => ["origin/HEAD", "origin/master", "origin/packed"]
|
|
385
458
|
```
|
|
386
459
|
|
|
387
460
|
Look up branches and get attributes:
|
|
388
461
|
|
|
389
462
|
```ruby
|
|
390
|
-
branch =
|
|
463
|
+
branch = repo.branches["master"]
|
|
391
464
|
branch.name # => 'master'
|
|
392
465
|
branch.canonical_name # => 'refs/heads/master'
|
|
393
466
|
```
|
|
394
467
|
|
|
395
|
-
Look up the
|
|
468
|
+
Look up the id for the target of a branch:
|
|
396
469
|
|
|
397
470
|
```ruby
|
|
398
|
-
|
|
471
|
+
repo.branches["master"].target_id
|
|
399
472
|
# => "36060c58702ed4c2a40832c51758d5344201d89a"
|
|
400
473
|
```
|
|
401
474
|
|
|
402
475
|
Creation and deletion:
|
|
403
476
|
|
|
404
477
|
```ruby
|
|
405
|
-
branch = repo.
|
|
406
|
-
|
|
407
|
-
|
|
478
|
+
branch = repo.branches.create("test_branch", "HEAD")
|
|
479
|
+
|
|
480
|
+
repo.branches.rename("test_branch", "new_branch") # or...
|
|
481
|
+
repo.branches.rename("refs/heads/test_branch", "new_branch") # or...
|
|
482
|
+
repo.branches.rename(ref, "new_branch") # or...
|
|
483
|
+
|
|
484
|
+
repo.branches.delete("test_branch") # or...
|
|
485
|
+
repo.branches.delete("refs/heads/test_branch") # or...
|
|
486
|
+
repo.branches.delete(ref) # or...
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
---
|
|
490
|
+
|
|
491
|
+
### Diffs
|
|
492
|
+
|
|
493
|
+
There are various ways to get hands on diffs:
|
|
494
|
+
|
|
495
|
+
```ruby
|
|
496
|
+
# Diff between two subsequent commits
|
|
497
|
+
diff_commits = commit_object.parents[0].diff(commit_object)
|
|
498
|
+
|
|
499
|
+
# Diff between two tree objects
|
|
500
|
+
diff_trees = tree_object_a.diff(tree_object_b)
|
|
501
|
+
|
|
502
|
+
# Diff between index/staging and current working directory
|
|
503
|
+
diff_index = repository.index.diff
|
|
504
|
+
|
|
505
|
+
# Diff between index/staging and another diffable (commit/tree/index)
|
|
506
|
+
diff_index_diffable = repository.index.diff(some_diffable)
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
When you already have a diff object, you can examine it:
|
|
510
|
+
|
|
511
|
+
```ruby
|
|
512
|
+
# Get patch
|
|
513
|
+
diff.patch
|
|
514
|
+
=> "diff --git a/foo1 b/foo1\nnew file mode 100644\nindex 0000000..81b68f0\n--- /dev/null\n+++ b/foo1\n@@ -0,0 +1,2 @@\n+abc\n+add line1\ndiff --git a/txt1 b/txt1\ndeleted file mode 100644\nindex 81b68f0..0000000\n--- a/txt1\n+++ /dev/null\n@@ -1,2 +0,0 @@\n-abc\n-add line1\ndiff --git a/txt2 b/txt2\nindex a7bb42f..a357de7 100644\n--- a/txt2\n+++ b/txt2\n@@ -1,2 +1,3 @@\n abc2\n add line2-1\n+add line2-2\n"
|
|
515
|
+
|
|
516
|
+
# Get delta (faster, if you only need information on what files changed)
|
|
517
|
+
diff.each_delta{ |d| puts d.inspect }
|
|
518
|
+
#<Rugged::Diff::Delta:70144372137380 {old_file: {:oid=>"0000000000000000000000000000000000000000", :path=>"foo1", :size=>0, :flags=>6, :mode=>0}, new_file: {:oid=>"81b68f040b120c9627518213f7fc317d1ed18e1c", :path=>"foo1", :size=>14, :flags=>6, :mode=>33188}, similarity: 0, status: :added>
|
|
519
|
+
#<Rugged::Diff::Delta:70144372136540 {old_file: {:oid=>"81b68f040b120c9627518213f7fc317d1ed18e1c", :path=>"txt1", :size=>14, :flags=>6, :mode=>33188}, new_file: {:oid=>"0000000000000000000000000000000000000000", :path=>"txt1", :size=>0, :flags=>6, :mode=>0}, similarity: 0, status: :deleted>
|
|
520
|
+
#<Rugged::Diff::Delta:70144372135780 {old_file: {:oid=>"a7bb42f71183c162efea5e4c80597437d716c62b", :path=>"txt2", :size=>17, :flags=>6, :mode=>33188}, new_file: {:oid=>"a357de7d870823acc3953f1b2471f9c18d0d56ea", :path=>"txt2", :size=>29, :flags=>6, :mode=>33188}, similarity: 0, status: :modified>
|
|
521
|
+
|
|
522
|
+
# Detect renamed files
|
|
523
|
+
# Note that the status field changed from :added/:deleted to :renamed
|
|
524
|
+
diff.find_similar!
|
|
525
|
+
diff.each_delta{ |d| puts d.inspect }
|
|
526
|
+
#<Rugged::Diff::Delta:70144372230920 {old_file: {:oid=>"81b68f040b120c9627518213f7fc317d1ed18e1c", :path=>"txt1", :size=>14, :flags=>6, :mode=>33188}, new_file: {:oid=>"81b68f040b120c9627518213f7fc317d1ed18e1c", :path=>"foo1", :size=>14, :flags=>6, :mode=>33188}, similarity: 100, status: :renamed>
|
|
527
|
+
#<Rugged::Diff::Delta:70144372230140 {old_file: {:oid=>"a7bb42f71183c162efea5e4c80597437d716c62b", :path=>"txt2", :size=>17, :flags=>6, :mode=>33188}, new_file: {:oid=>"a357de7d870823acc3953f1b2471f9c18d0d56ea", :path=>"txt2", :size=>29, :flags=>6, :mode=>33188}, similarity: 0, status: :modified>
|
|
528
|
+
|
|
529
|
+
# Merge one diff into another (mutating the first one)
|
|
530
|
+
diff1.merge!(diff2)
|
|
531
|
+
|
|
532
|
+
# Write a patch into a file (or any other object responding to write)
|
|
533
|
+
# Note that the patch as in diff.patch will be written, it won't be applied
|
|
534
|
+
file = File.open('/some/file', 'w')
|
|
535
|
+
diff.write_patch(file)
|
|
536
|
+
file.close
|
|
408
537
|
```
|
|
409
538
|
|
|
410
539
|
---
|
|
@@ -442,6 +571,22 @@ Rugged.raw_to_hex("\277\336Y\315\320\337\254\035\211(\024\366j\225d\032\275\212\
|
|
|
442
571
|
|
|
443
572
|
---
|
|
444
573
|
|
|
574
|
+
### Alternative backends
|
|
575
|
+
|
|
576
|
+
You can store bare repositories in alternative backends instead of storing on disk. (see
|
|
577
|
+
`redbadger/rugged-redis` for an example of how a rugged backend works).
|
|
578
|
+
|
|
579
|
+
```ruby
|
|
580
|
+
a_backend = Rugged::InMemory::Backend.new(opt1: 'setting', opt2: 'setting')
|
|
581
|
+
|
|
582
|
+
repo = Rugged::Repository.init_at('repo_name', :bare, backend: a_backend)
|
|
583
|
+
|
|
584
|
+
# or
|
|
585
|
+
|
|
586
|
+
repo = Rugged::Repository.bare('repo_name', backend: a_backend)
|
|
587
|
+
```
|
|
588
|
+
---
|
|
589
|
+
|
|
445
590
|
## Contributing
|
|
446
591
|
|
|
447
592
|
Fork libgit2/rugged on GitHub, make it awesomer (preferably in a branch named
|
|
@@ -458,11 +603,17 @@ Simply clone and install:
|
|
|
458
603
|
$ rake compile
|
|
459
604
|
$ rake test
|
|
460
605
|
|
|
606
|
+
## Support
|
|
607
|
+
|
|
608
|
+
We encourage you to use StackOverflow for any questions or concerns regarding Rugged. Please tag your questions with the [rugged](http://stackoverflow.com/questions/tagged/rugged) keyword.
|
|
609
|
+
|
|
610
|
+
For bug reports, please open a ticket on the GitHub [issue tracker](https://github.com/libgit2/rugged/issues).
|
|
461
611
|
|
|
462
612
|
## Authors
|
|
463
613
|
|
|
464
614
|
* Vicent Marti <tanoku@gmail.com>
|
|
465
615
|
* Scott Chacon <schacon@gmail.com>
|
|
616
|
+
* Arthur Schreiber <schreiber.arthur@gmail.com>
|
|
466
617
|
|
|
467
618
|
|
|
468
619
|
## License
|
data/ext/rugged/extconf.rb
CHANGED
|
@@ -1,14 +1,20 @@
|
|
|
1
|
+
# Copyright (C) the Rugged contributors. All rights reserved.
|
|
2
|
+
#
|
|
3
|
+
# This file is part of Rugged, distributed under the MIT license.
|
|
4
|
+
# For full terms see the included LICENSE file.
|
|
5
|
+
|
|
1
6
|
require 'mkmf'
|
|
7
|
+
require 'timeout'
|
|
2
8
|
|
|
3
9
|
RbConfig::MAKEFILE_CONFIG['CC'] = ENV['CC'] if ENV['CC']
|
|
4
10
|
|
|
5
11
|
$CFLAGS << " #{ENV["CFLAGS"]}"
|
|
6
12
|
$CFLAGS << " -g"
|
|
13
|
+
$CFLAGS << " -O3" unless $CFLAGS[/-O\d/]
|
|
14
|
+
$CFLAGS << " -Wall -Wno-comment"
|
|
7
15
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
$CFLAGS << " -Wall"
|
|
11
|
-
end
|
|
16
|
+
cmake_flags = [ ENV["CMAKE_FLAGS"] ]
|
|
17
|
+
cmake_flags << "-DUSE_SHA1DC=ON" if with_config("sha1dc")
|
|
12
18
|
|
|
13
19
|
def sys(cmd)
|
|
14
20
|
puts " -- #{cmd}"
|
|
@@ -18,39 +24,116 @@ def sys(cmd)
|
|
|
18
24
|
ret
|
|
19
25
|
end
|
|
20
26
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
if MAKE_PROGRAM.nil?
|
|
24
|
-
STDERR.puts "ERROR: GNU make is required to build Rugged"
|
|
25
|
-
exit(1)
|
|
27
|
+
# Thrown when we detect CMake is taking too long and we killed it
|
|
28
|
+
class CMakeTimeout < StandardError
|
|
26
29
|
end
|
|
27
30
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
def self.run_cmake(timeout, args)
|
|
32
|
+
# Set to process group so we can kill it and its children
|
|
33
|
+
pid = Process.spawn("cmake #{args}", pgroup: true)
|
|
34
|
+
|
|
35
|
+
Timeout.timeout(timeout) do
|
|
36
|
+
Process.waitpid(pid)
|
|
34
37
|
end
|
|
38
|
+
|
|
39
|
+
rescue Timeout::Error
|
|
40
|
+
# Kill it, #detach is essentially a background wait, since we don't actually
|
|
41
|
+
# care about waiting for it now
|
|
42
|
+
Process.kill(-9, pid)
|
|
43
|
+
Process.detach(pid)
|
|
44
|
+
raise CMakeTimeout.new("cmake has exceeded its timeout of #{timeout}s")
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
MAKE = if Gem.win_platform?
|
|
48
|
+
# On Windows, Ruby-DevKit only has 'make'.
|
|
49
|
+
find_executable('make')
|
|
35
50
|
else
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
51
|
+
find_executable('gmake') || find_executable('make')
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
if !MAKE
|
|
55
|
+
abort "ERROR: GNU make is required to build Rugged."
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
CWD = File.expand_path(File.dirname(__FILE__))
|
|
59
|
+
LIBGIT2_DIR = File.join(CWD, '..', '..', 'vendor', 'libgit2')
|
|
60
|
+
|
|
61
|
+
if arg_config("--use-system-libraries", !!ENV['RUGGED_USE_SYSTEM_LIBRARIES'])
|
|
62
|
+
puts "Building Rugged using system libraries.\n"
|
|
63
|
+
|
|
64
|
+
dir_config('git2').any? or pkg_config('libgit2')
|
|
65
|
+
|
|
66
|
+
major = minor = nil
|
|
67
|
+
|
|
68
|
+
File.readlines(File.join(LIBGIT2_DIR, "include", "git2", "version.h")).each do |line|
|
|
69
|
+
if !major && (matches = line.match(/^#define LIBGIT2_VER_MAJOR ([0-9]+)$/))
|
|
70
|
+
major = matches[1]
|
|
71
|
+
next
|
|
44
72
|
end
|
|
73
|
+
|
|
74
|
+
if !minor && (matches = line.match(/^#define LIBGIT2_VER_MINOR ([0-9]+)$/))
|
|
75
|
+
minor = matches[1]
|
|
76
|
+
next
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
break if major && minor
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
try_compile(<<-SRC) or abort "libgit2 version is not compatible, expected ~> #{major}.#{minor}.0"
|
|
83
|
+
#include <git2/version.h>
|
|
84
|
+
|
|
85
|
+
#if LIBGIT2_VER_MAJOR != #{major} || LIBGIT2_VER_MINOR != #{minor}
|
|
86
|
+
#error libgit2 version is not compatible
|
|
87
|
+
#endif
|
|
88
|
+
SRC
|
|
89
|
+
else
|
|
90
|
+
if !find_executable('cmake')
|
|
91
|
+
abort "ERROR: CMake is required to build Rugged."
|
|
45
92
|
end
|
|
46
93
|
|
|
47
|
-
|
|
48
|
-
|
|
94
|
+
if !Gem.win_platform? && !find_executable('pkg-config')
|
|
95
|
+
abort "ERROR: pkg-config is required to build Rugged."
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
Dir.chdir(LIBGIT2_DIR) do
|
|
99
|
+
Dir.mkdir("build") if !Dir.exists?("build")
|
|
49
100
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
101
|
+
Dir.chdir("build") do
|
|
102
|
+
# On Windows, Ruby-DevKit is MSYS-based, so ensure to use MSYS Makefiles.
|
|
103
|
+
generator = "-G \"MSYS Makefiles\"" if Gem.win_platform?
|
|
104
|
+
run_cmake(5 * 60, ".. -DBUILD_CLAR=OFF -DTHREADSAFE=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_C_FLAGS=-fPIC -DCMAKE_BUILD_TYPE=RelWithDebInfo #{cmake_flags.join(' ')} #{generator}")
|
|
105
|
+
sys(MAKE)
|
|
106
|
+
|
|
107
|
+
# "normal" libraries (and libgit2 builds) get all these when they build but we're doing it
|
|
108
|
+
# statically so we put the libraries in by hand. It's important that we put the libraries themselves
|
|
109
|
+
# in $LIBS or the final linking stage won't pick them up
|
|
110
|
+
if Gem.win_platform?
|
|
111
|
+
$LDFLAGS << " " + "-L#{Dir.pwd}/deps/winhttp"
|
|
112
|
+
$LIBS << " -lwinhttp -lcrypt32 -lrpcrt4 -lole32 -lz -lssh2"
|
|
113
|
+
else
|
|
114
|
+
pcfile = File.join(LIBGIT2_DIR, "build", "libgit2.pc")
|
|
115
|
+
$LDFLAGS << " " + `pkg-config --libs --static #{pcfile}`.strip
|
|
116
|
+
end
|
|
117
|
+
end
|
|
53
118
|
end
|
|
119
|
+
|
|
120
|
+
# Prepend the vendored libgit2 build dir to the $DEFLIBPATH.
|
|
121
|
+
#
|
|
122
|
+
# By default, $DEFLIBPATH includes $(libpath), which usually points
|
|
123
|
+
# to something like /usr/lib for system ruby versions (not those
|
|
124
|
+
# installed through rbenv or rvm).
|
|
125
|
+
#
|
|
126
|
+
# This was causing system-wide libgit2 installations to be preferred
|
|
127
|
+
# over of our vendored libgit2 version when building rugged.
|
|
128
|
+
#
|
|
129
|
+
# By putting the path to the vendored libgit2 library at the front of
|
|
130
|
+
# $DEFLIBPATH, we can ensure that our bundled version is always used.
|
|
131
|
+
$DEFLIBPATH.unshift("#{LIBGIT2_DIR}/build")
|
|
132
|
+
dir_config('git2', "#{LIBGIT2_DIR}/include", "#{LIBGIT2_DIR}/build")
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
unless have_library 'git2' and have_header 'git2.h'
|
|
136
|
+
abort "ERROR: Failed to build libgit2"
|
|
54
137
|
end
|
|
55
138
|
|
|
56
139
|
create_makefile("rugged/rugged")
|