rugged 0.16.0 → 0.17.0b1
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.
- data/README.md +373 -243
- data/Rakefile +22 -0
- data/ext/rugged/extconf.rb +9 -6
- data/ext/rugged/rugged.c +123 -31
- data/ext/rugged/rugged.h +11 -10
- data/ext/rugged/rugged_blob.c +181 -18
- data/ext/rugged/rugged_commit.c +196 -18
- data/ext/rugged/rugged_config.c +94 -5
- data/ext/rugged/rugged_object.c +54 -1
- data/ext/rugged/rugged_reference.c +203 -15
- data/ext/rugged/{remote.c → rugged_remote.c} +35 -10
- data/ext/rugged/rugged_repo.c +323 -81
- data/ext/rugged/rugged_revwalk.c +57 -4
- data/ext/rugged/rugged_signature.c +3 -3
- data/ext/rugged/rugged_tag.c +72 -1
- data/ext/rugged/rugged_tree.c +70 -2
- data/ext/rugged/vendor/libgit2-dist/deps/regex/config.h +7 -0
- data/ext/rugged/vendor/libgit2-dist/deps/regex/regcomp.c +3856 -0
- data/ext/rugged/vendor/libgit2-dist/deps/regex/regex.c +85 -0
- data/ext/rugged/vendor/libgit2-dist/deps/regex/regex.h +582 -0
- data/ext/rugged/vendor/libgit2-dist/deps/regex/regex_internal.c +1744 -0
- data/ext/rugged/vendor/libgit2-dist/deps/regex/regex_internal.h +810 -0
- data/ext/rugged/vendor/libgit2-dist/deps/regex/regexec.c +4369 -0
- data/ext/rugged/vendor/libgit2-dist/examples/diff.c +238 -0
- data/ext/rugged/vendor/libgit2-dist/examples/general.c +4 -4
- data/ext/rugged/vendor/libgit2-dist/examples/network/fetch.c +101 -85
- data/ext/rugged/vendor/libgit2-dist/examples/network/git2.c +7 -3
- data/ext/rugged/vendor/libgit2-dist/examples/network/index-pack.c +80 -25
- data/ext/rugged/vendor/libgit2-dist/examples/network/ls-remote.c +6 -6
- data/ext/rugged/vendor/libgit2-dist/include/git2/attr.h +224 -0
- data/ext/rugged/vendor/libgit2-dist/include/git2/blob.h +59 -5
- data/ext/rugged/vendor/libgit2-dist/include/git2/branch.h +114 -7
- data/ext/rugged/vendor/libgit2-dist/include/git2/commit.h +14 -7
- data/ext/rugged/vendor/libgit2-dist/include/git2/common.h +4 -3
- data/ext/rugged/vendor/libgit2-dist/include/git2/config.h +105 -27
- data/ext/rugged/vendor/libgit2-dist/include/git2/diff.h +409 -0
- data/ext/rugged/vendor/libgit2-dist/include/git2/errors.h +47 -82
- data/ext/rugged/vendor/libgit2-dist/include/git2/index.h +25 -10
- data/ext/rugged/vendor/libgit2-dist/include/git2/indexer.h +46 -1
- data/ext/rugged/vendor/libgit2-dist/include/git2/merge.h +35 -0
- data/ext/rugged/vendor/libgit2-dist/include/git2/net.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/include/git2/notes.h +139 -0
- data/ext/rugged/vendor/libgit2-dist/include/git2/object.h +5 -5
- data/ext/rugged/vendor/libgit2-dist/include/git2/odb.h +13 -13
- data/ext/rugged/vendor/libgit2-dist/include/git2/odb_backend.h +8 -8
- data/ext/rugged/vendor/libgit2-dist/include/git2/oid.h +14 -9
- data/ext/rugged/vendor/libgit2-dist/include/git2/reflog.h +5 -5
- data/ext/rugged/vendor/libgit2-dist/include/git2/refs.h +37 -17
- data/ext/rugged/vendor/libgit2-dist/include/git2/refspec.h +17 -9
- data/ext/rugged/vendor/libgit2-dist/include/git2/remote.h +83 -16
- data/ext/rugged/vendor/libgit2-dist/include/git2/repository.h +24 -10
- data/ext/rugged/vendor/libgit2-dist/include/git2/reset.h +44 -0
- data/ext/rugged/vendor/libgit2-dist/include/git2/revparse.h +36 -0
- data/ext/rugged/vendor/libgit2-dist/include/git2/revwalk.h +74 -6
- data/ext/rugged/vendor/libgit2-dist/include/git2/signature.h +3 -3
- data/ext/rugged/vendor/libgit2-dist/include/git2/status.h +120 -19
- data/ext/rugged/vendor/libgit2-dist/include/git2/submodule.h +103 -0
- data/ext/rugged/vendor/libgit2-dist/include/git2/tag.h +28 -10
- data/ext/rugged/vendor/libgit2-dist/include/git2/threads.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/include/git2/tree.h +13 -13
- data/ext/rugged/vendor/libgit2-dist/include/git2/types.h +16 -2
- data/ext/rugged/vendor/libgit2-dist/include/git2/version.h +3 -3
- data/ext/rugged/vendor/libgit2-dist/include/git2/windows.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/include/git2.h +7 -2
- data/ext/rugged/vendor/libgit2-dist/src/attr.c +677 -0
- data/ext/rugged/vendor/libgit2-dist/src/attr.h +56 -0
- data/ext/rugged/vendor/libgit2-dist/src/attr_file.c +609 -0
- data/ext/rugged/vendor/libgit2-dist/src/attr_file.h +145 -0
- data/ext/rugged/vendor/libgit2-dist/src/blob.c +213 -60
- data/ext/rugged/vendor/libgit2-dist/src/blob.h +2 -1
- data/ext/rugged/vendor/libgit2-dist/src/branch.c +208 -0
- data/ext/rugged/vendor/libgit2-dist/src/branch.h +17 -0
- data/ext/rugged/vendor/libgit2-dist/src/bswap.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/buffer.c +395 -46
- data/ext/rugged/vendor/libgit2-dist/src/buffer.h +112 -9
- data/ext/rugged/vendor/libgit2-dist/src/cache.c +37 -49
- data/ext/rugged/vendor/libgit2-dist/src/cache.h +7 -17
- data/ext/rugged/vendor/libgit2-dist/src/cc-compat.h +18 -16
- data/ext/rugged/vendor/libgit2-dist/src/commit.c +56 -90
- data/ext/rugged/vendor/libgit2-dist/src/commit.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/common.h +12 -5
- data/ext/rugged/vendor/libgit2-dist/src/{win32 → compat}/fnmatch.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/{win32 → compat}/fnmatch.h +3 -3
- data/ext/rugged/vendor/libgit2-dist/src/config.c +247 -158
- data/ext/rugged/vendor/libgit2-dist/src/config.h +10 -1
- data/ext/rugged/vendor/libgit2-dist/src/config_cache.c +94 -0
- data/ext/rugged/vendor/libgit2-dist/src/config_file.c +606 -496
- data/ext/rugged/vendor/libgit2-dist/src/config_file.h +31 -0
- data/ext/rugged/vendor/libgit2-dist/src/crlf.c +228 -0
- data/ext/rugged/vendor/libgit2-dist/src/date.c +876 -0
- data/ext/rugged/vendor/libgit2-dist/src/delta-apply.c +15 -9
- data/ext/rugged/vendor/libgit2-dist/src/delta-apply.h +2 -2
- data/ext/rugged/vendor/libgit2-dist/src/diff.c +814 -0
- data/ext/rugged/vendor/libgit2-dist/src/diff.h +43 -0
- data/ext/rugged/vendor/libgit2-dist/src/diff_output.c +794 -0
- data/ext/rugged/vendor/libgit2-dist/src/errors.c +89 -74
- data/ext/rugged/vendor/libgit2-dist/src/fetch.c +94 -66
- data/ext/rugged/vendor/libgit2-dist/src/fetch.h +5 -4
- data/ext/rugged/vendor/libgit2-dist/src/filebuf.c +157 -100
- data/ext/rugged/vendor/libgit2-dist/src/filebuf.h +22 -8
- data/ext/rugged/vendor/libgit2-dist/src/fileops.c +330 -206
- data/ext/rugged/vendor/libgit2-dist/src/fileops.h +82 -51
- data/ext/rugged/vendor/libgit2-dist/src/filter.c +165 -0
- data/ext/rugged/vendor/libgit2-dist/src/filter.h +119 -0
- data/ext/rugged/vendor/libgit2-dist/src/global.c +4 -4
- data/ext/rugged/vendor/libgit2-dist/src/global.h +4 -1
- data/ext/rugged/vendor/libgit2-dist/src/hash.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/hash.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/ignore.c +203 -0
- data/ext/rugged/vendor/libgit2-dist/src/ignore.h +38 -0
- data/ext/rugged/vendor/libgit2-dist/src/index.c +220 -169
- data/ext/rugged/vendor/libgit2-dist/src/index.h +5 -1
- data/ext/rugged/vendor/libgit2-dist/src/indexer.c +601 -102
- data/ext/rugged/vendor/libgit2-dist/src/iterator.c +748 -0
- data/ext/rugged/vendor/libgit2-dist/src/iterator.h +151 -0
- data/ext/rugged/vendor/libgit2-dist/src/khash.h +608 -0
- data/ext/rugged/vendor/libgit2-dist/src/map.h +6 -1
- data/ext/rugged/vendor/libgit2-dist/src/message.c +61 -0
- data/ext/rugged/vendor/libgit2-dist/src/message.h +14 -0
- data/ext/rugged/vendor/libgit2-dist/src/mwindow.c +27 -29
- data/ext/rugged/vendor/libgit2-dist/src/mwindow.h +4 -4
- data/ext/rugged/vendor/libgit2-dist/src/netops.c +375 -56
- data/ext/rugged/vendor/libgit2-dist/src/netops.h +12 -9
- data/ext/rugged/vendor/libgit2-dist/src/notes.c +548 -0
- data/ext/rugged/vendor/libgit2-dist/src/notes.h +28 -0
- data/ext/rugged/vendor/libgit2-dist/src/object.c +59 -21
- data/ext/rugged/vendor/libgit2-dist/src/odb.c +212 -175
- data/ext/rugged/vendor/libgit2-dist/src/odb.h +39 -2
- data/ext/rugged/vendor/libgit2-dist/src/odb_loose.c +238 -241
- data/ext/rugged/vendor/libgit2-dist/src/odb_pack.c +94 -106
- data/ext/rugged/vendor/libgit2-dist/src/oid.c +59 -60
- data/ext/rugged/vendor/libgit2-dist/src/oidmap.h +42 -0
- data/ext/rugged/vendor/libgit2-dist/src/pack.c +198 -170
- data/ext/rugged/vendor/libgit2-dist/src/pack.h +16 -9
- data/ext/rugged/vendor/libgit2-dist/src/path.c +496 -106
- data/ext/rugged/vendor/libgit2-dist/src/path.h +214 -20
- data/ext/rugged/vendor/libgit2-dist/src/pkt.c +88 -159
- data/ext/rugged/vendor/libgit2-dist/src/pkt.h +9 -5
- data/ext/rugged/vendor/libgit2-dist/src/pool.c +294 -0
- data/ext/rugged/vendor/libgit2-dist/src/pool.h +125 -0
- data/ext/rugged/vendor/libgit2-dist/src/posix.c +38 -16
- data/ext/rugged/vendor/libgit2-dist/src/posix.h +20 -2
- data/ext/rugged/vendor/libgit2-dist/src/ppc/sha1.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/ppc/sha1.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/pqueue.c +7 -7
- data/ext/rugged/vendor/libgit2-dist/src/pqueue.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/protocol.c +21 -13
- data/ext/rugged/vendor/libgit2-dist/src/protocol.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/reflog.c +125 -103
- data/ext/rugged/vendor/libgit2-dist/src/reflog.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/refs.c +713 -640
- data/ext/rugged/vendor/libgit2-dist/src/refs.h +27 -3
- data/ext/rugged/vendor/libgit2-dist/src/refspec.c +51 -17
- data/ext/rugged/vendor/libgit2-dist/src/refspec.h +13 -1
- data/ext/rugged/vendor/libgit2-dist/src/remote.c +307 -119
- data/ext/rugged/vendor/libgit2-dist/src/remote.h +3 -2
- data/ext/rugged/vendor/libgit2-dist/src/repository.c +593 -442
- data/ext/rugged/vendor/libgit2-dist/src/repository.h +80 -2
- data/ext/rugged/vendor/libgit2-dist/src/reset.c +103 -0
- data/ext/rugged/vendor/libgit2-dist/src/revparse.c +753 -0
- data/ext/rugged/vendor/libgit2-dist/src/revwalk.c +434 -158
- data/ext/rugged/vendor/libgit2-dist/src/sha1.c +3 -3
- data/ext/rugged/vendor/libgit2-dist/src/sha1.h +2 -2
- data/ext/rugged/vendor/libgit2-dist/src/sha1_lookup.c +3 -2
- data/ext/rugged/vendor/libgit2-dist/src/sha1_lookup.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/signature.c +69 -80
- data/ext/rugged/vendor/libgit2-dist/src/signature.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/status.c +184 -638
- data/ext/rugged/vendor/libgit2-dist/src/strmap.h +64 -0
- data/ext/rugged/vendor/libgit2-dist/src/submodule.c +387 -0
- data/ext/rugged/vendor/libgit2-dist/src/tag.c +162 -137
- data/ext/rugged/vendor/libgit2-dist/src/tag.h +2 -1
- data/ext/rugged/vendor/libgit2-dist/src/thread-utils.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/thread-utils.h +8 -8
- data/ext/rugged/vendor/libgit2-dist/src/transport.c +31 -19
- data/ext/rugged/vendor/libgit2-dist/src/transport.h +31 -11
- data/ext/rugged/vendor/libgit2-dist/src/transports/git.c +168 -193
- data/ext/rugged/vendor/libgit2-dist/src/transports/http.c +192 -241
- data/ext/rugged/vendor/libgit2-dist/src/transports/local.c +92 -86
- data/ext/rugged/vendor/libgit2-dist/src/tree-cache.c +32 -49
- data/ext/rugged/vendor/libgit2-dist/src/tree-cache.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/tree.c +172 -145
- data/ext/rugged/vendor/libgit2-dist/src/tree.h +16 -2
- data/ext/rugged/vendor/libgit2-dist/src/tsort.c +16 -14
- data/ext/rugged/vendor/libgit2-dist/src/unix/map.c +8 -24
- data/ext/rugged/vendor/libgit2-dist/src/unix/posix.h +9 -3
- data/ext/rugged/vendor/libgit2-dist/src/util.c +94 -38
- data/ext/rugged/vendor/libgit2-dist/src/util.h +119 -13
- data/ext/rugged/vendor/libgit2-dist/src/vector.c +84 -31
- data/ext/rugged/vendor/libgit2-dist/src/vector.h +37 -4
- data/ext/rugged/vendor/libgit2-dist/src/win32/dir.c +81 -41
- data/ext/rugged/vendor/libgit2-dist/src/{dir.h → win32/dir.h} +4 -9
- data/ext/rugged/vendor/libgit2-dist/src/win32/map.c +19 -35
- data/ext/rugged/vendor/libgit2-dist/src/win32/mingw-compat.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/win32/msvc-compat.h +5 -1
- data/ext/rugged/vendor/libgit2-dist/src/win32/posix.h +10 -8
- data/ext/rugged/vendor/libgit2-dist/src/win32/posix_w32.c +262 -118
- data/ext/rugged/vendor/libgit2-dist/src/win32/pthread.c +12 -9
- data/ext/rugged/vendor/libgit2-dist/src/win32/pthread.h +1 -1
- data/ext/rugged/vendor/libgit2-dist/src/win32/utf-conv.c +30 -26
- data/ext/rugged/vendor/libgit2-dist/src/win32/utf-conv.h +2 -1
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xdiff.h +135 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xdiffi.c +572 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xdiffi.h +63 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xemit.c +253 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xemit.h +36 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xhistogram.c +371 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xinclude.h +46 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xmacros.h +54 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xmerge.c +619 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xpatience.c +358 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xprepare.c +483 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xprepare.h +34 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xtypes.h +67 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xutils.c +419 -0
- data/ext/rugged/vendor/libgit2-dist/src/xdiff/xutils.h +49 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/attr_expect.h +43 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/file.c +226 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/flags.c +108 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/lookup.c +262 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/repo.c +273 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/buf/basic.c +5 -5
- data/ext/rugged/vendor/libgit2-dist/tests-clar/clar_helpers.c +181 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/clar_libgit2.h +55 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/commit.c +44 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/parse.c +350 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/signature.c +65 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/write.c +140 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/config/add.c +3 -3
- data/ext/rugged/vendor/libgit2-dist/tests-clar/config/multivar.c +151 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/config/new.c +5 -5
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/config/read.c +44 -32
- data/ext/rugged/vendor/libgit2-dist/tests-clar/config/stress.c +61 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/config/write.c +20 -5
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/buffer.c +613 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/core/dirent.c +39 -26
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/env.c +115 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/errors.c +60 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/core/filebuf.c +4 -18
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/hex.c +22 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/core/oid.c +6 -6
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/path.c +420 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/pool.c +85 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/rmdir.c +68 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/core/string.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/strmap.c +102 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/core/strtol.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/vector.c +191 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/date/date.c +15 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/blob.c +254 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/diff_helpers.c +104 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/diff_helpers.h +47 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/index.c +92 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/iterator.c +572 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/patch.c +99 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/tree.c +210 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/workdir.c +543 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/index/read_tree.c +46 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/index/rename.c +2 -12
- data/ext/rugged/vendor/libgit2-dist/tests-clar/index/tests.c +246 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/network/createremotethenload.c +33 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/network/remotelocal.c +137 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/network/remotes.c +183 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/notes/notes.c +133 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/notes/notesref.c +57 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/blob/filter.c +125 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/blob/fromchunks.c +87 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/blob/write.c +69 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/commit/commitstagedfile.c +126 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/lookup.c +63 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/message.c +171 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/chars.c +3 -14
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/compare.c +4 -4
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/convert.c +10 -10
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/data.h +0 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/fromstr.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/hash.c +21 -17
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/short.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/size.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/type2string.c +14 -14
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/write.c +455 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tag/peel.c +56 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tag/read.c +130 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tag/write.c +192 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/tree/frompath.c +22 -16
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tree/read.c +75 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tree/write.c +84 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/odb/loose.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/odb/loose_data.h +0 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/odb/mixed.c +24 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/odb/pack_data.h +0 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/odb/packed.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/odb/sorting.c +1 -1
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/create.c +113 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/delete.c +91 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/listall.c +78 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/move.c +72 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/crashes.c +17 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/create.c +149 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/delete.c +85 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/list.c +53 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/listall.c +36 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/lookup.c +42 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/normalize.c +200 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/overwrite.c +136 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/pack.c +67 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/read.c +194 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/reflog.c +123 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/rename.c +339 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/revparse.c +174 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/unicode.c +42 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/discover.c +142 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/repo/getters.c +19 -1
- data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/init.c +235 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/open.c +282 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/setters.c +80 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/mixed.c +47 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/reset_helpers.c +10 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/reset_helpers.h +6 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/soft.c +102 -0
- data/ext/rugged/vendor/libgit2-dist/{tests/t05-revwalk.c → tests-clar/revwalk/basic.c} +85 -44
- data/ext/rugged/vendor/libgit2-dist/tests-clar/revwalk/mergebase.c +148 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/status/ignore.c +133 -0
- data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/status/single.c +2 -11
- data/ext/rugged/vendor/libgit2-dist/tests-clar/status/status_data.h +202 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/status/status_helpers.c +49 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/status/status_helpers.h +33 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/status/submodules.c +112 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/status/worktree.c +649 -0
- data/ext/rugged/vendor/libgit2-dist/tests-clar/threads/basic.c +20 -0
- data/ext/rugged/vendor/libgit2-dist.tar.gz +0 -0
- data/lib/rugged/commit.rb +35 -0
- data/lib/rugged/object.rb +7 -0
- data/lib/rugged/reference.rb +9 -0
- data/lib/rugged/repository.rb +99 -3
- data/lib/rugged/tag.rb +22 -0
- data/lib/rugged/tree.rb +8 -0
- data/lib/rugged/version.rb +1 -1
- data/lib/rugged.rb +4 -1
- data/test/blob_test.rb +2 -2
- data/test/commit_test.rb +27 -13
- data/test/config_test.rb +44 -0
- data/test/coverage/HEAD.json +1 -1
- data/test/fixtures/testrepo.git/config +2 -0
- data/test/fixtures/testrepo.git/objects/7f/043268ea43ce18e3540acaabf9e090c91965b0 +0 -0
- data/test/lib_test.rb +7 -0
- data/test/object_test.rb +3 -3
- data/test/reference_test.rb +46 -8
- data/test/remote_test.rb +8 -2
- data/test/repo_pack_test.rb +3 -3
- data/test/repo_test.rb +79 -11
- data/test/tag_test.rb +9 -2
- data/test/test_helper.rb +21 -0
- data/test/tree_test.rb +18 -6
- metadata +205 -81
- data/ext/rugged/vendor/libgit2-dist/include/git2/zlib.h +0 -40
- data/ext/rugged/vendor/libgit2-dist/src/hashtable.c +0 -243
- data/ext/rugged/vendor/libgit2-dist/src/hashtable.h +0 -80
- data/ext/rugged/vendor/libgit2-dist/tests/t00-core.c +0 -628
- data/ext/rugged/vendor/libgit2-dist/tests/t01-data.h +0 -322
- data/ext/rugged/vendor/libgit2-dist/tests/t01-rawobj.c +0 -638
- data/ext/rugged/vendor/libgit2-dist/tests/t03-data.h +0 -344
- data/ext/rugged/vendor/libgit2-dist/tests/t03-objwrite.c +0 -255
- data/ext/rugged/vendor/libgit2-dist/tests/t04-commit.c +0 -788
- data/ext/rugged/vendor/libgit2-dist/tests/t06-index.c +0 -219
- data/ext/rugged/vendor/libgit2-dist/tests/t07-hashtable.c +0 -192
- data/ext/rugged/vendor/libgit2-dist/tests/t08-tag.c +0 -357
- data/ext/rugged/vendor/libgit2-dist/tests/t09-tree.c +0 -221
- data/ext/rugged/vendor/libgit2-dist/tests/t10-refs.c +0 -1294
- data/ext/rugged/vendor/libgit2-dist/tests/t12-repo.c +0 -174
- data/ext/rugged/vendor/libgit2-dist/tests/t13-threads.c +0 -41
- data/ext/rugged/vendor/libgit2-dist/tests/t17-bufs.c +0 -61
- data/ext/rugged/vendor/libgit2-dist/tests/t18-status.c +0 -448
- data/ext/rugged/vendor/libgit2-dist/tests/test_helpers.c +0 -310
- data/ext/rugged/vendor/libgit2-dist/tests/test_helpers.h +0 -83
- data/ext/rugged/vendor/libgit2-dist/tests/test_lib.c +0 -198
- data/ext/rugged/vendor/libgit2-dist/tests/test_lib.h +0 -54
- data/ext/rugged/vendor/libgit2-dist/tests/test_main.c +0 -89
- data/ext/rugged/vendor/libgit2-dist/tests-clay/clay.h +0 -187
- data/ext/rugged/vendor/libgit2-dist/tests-clay/clay_libgit2.h +0 -28
- data/ext/rugged/vendor/libgit2-dist/tests-clay/clay_main.c +0 -1073
- data/ext/rugged/vendor/libgit2-dist/tests-clay/config/stress.c +0 -39
- data/ext/rugged/vendor/libgit2-dist/tests-clay/core/path.c +0 -139
- data/ext/rugged/vendor/libgit2-dist/tests-clay/core/rmdir.c +0 -50
- data/ext/rugged/vendor/libgit2-dist/tests-clay/core/vector.c +0 -66
- data/ext/rugged/vendor/libgit2-dist/tests-clay/network/remotes.c +0 -50
- data/ext/rugged/vendor/libgit2-dist/tests-clay/repo/init.c +0 -104
- data/ext/rugged/vendor/libgit2-dist/tests-clay/repo/open.c +0 -54
- data/ext/rugged/vendor/libgit2-dist/tests-clay/status/status_data.h +0 -48
- data/ext/rugged/vendor/libgit2-dist/tests-clay/status/worktree.c +0 -124
- data/lib/rugged/objects.rb +0 -45
- data/test/fixtures/testrepo.git/refs/heads/new_name +0 -1
data/ext/rugged/rugged_repo.c
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
* The MIT License
|
3
3
|
*
|
4
4
|
* Copyright (c) 2011 GitHub, Inc
|
5
|
-
*
|
5
|
+
*
|
6
6
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
7
|
* of this software and associated documentation files (the "Software"), to deal
|
8
8
|
* in the Software without restriction, including without limitation the rights
|
9
9
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
10
|
* copies of the Software, and to permit persons to whom the Software is
|
11
11
|
* furnished to do so, subject to the following conditions:
|
12
|
-
*
|
12
|
+
*
|
13
13
|
* The above copyright notice and this permission notice shall be included in
|
14
14
|
* all copies or substantial portions of the Software.
|
15
|
-
*
|
15
|
+
*
|
16
16
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
17
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
18
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
@@ -32,40 +32,33 @@ extern VALUE rb_cRuggedBackend;
|
|
32
32
|
VALUE rb_cRuggedRepo;
|
33
33
|
VALUE rb_cRuggedOdbObject;
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
break;
|
46
|
-
|
47
|
-
case T_FIXNUM:
|
48
|
-
type = FIX2INT(self);
|
49
|
-
break;
|
50
|
-
|
51
|
-
default:
|
52
|
-
type = GIT_OBJ_BAD;
|
53
|
-
break;
|
54
|
-
}
|
55
|
-
|
56
|
-
if (!git_object_typeisloose(type))
|
57
|
-
rb_raise(rb_eTypeError, "Invalid Git object type specifier");
|
58
|
-
|
59
|
-
return type;
|
60
|
-
}
|
61
|
-
|
62
|
-
static VALUE rb_git_odbobj_hash(VALUE self)
|
35
|
+
/*
|
36
|
+
* call-seq:
|
37
|
+
* odb_obj.oid -> hex_oid
|
38
|
+
*
|
39
|
+
* Return the Object ID (a 40 character SHA1 hash) for this raw
|
40
|
+
* object.
|
41
|
+
*
|
42
|
+
* odb_obj.oid #=> "d8786bfc97485e8d7b19b21fb88c8ef1f199fc3f"
|
43
|
+
*/
|
44
|
+
static VALUE rb_git_odbobj_oid(VALUE self)
|
63
45
|
{
|
64
46
|
git_odb_object *obj;
|
65
47
|
Data_Get_Struct(self, git_odb_object, obj);
|
66
48
|
return rugged_create_oid(git_odb_object_id(obj));
|
67
49
|
}
|
68
50
|
|
51
|
+
/*
|
52
|
+
* call-seq:
|
53
|
+
* odb_obj.data -> buffer
|
54
|
+
*
|
55
|
+
* Return an ASCII buffer with the raw bytes that form the Git object.
|
56
|
+
*
|
57
|
+
* odb_obj.data #=> "tree 87ebee8367f9cc5ac04858b3bd5610ca74f04df9\n"
|
58
|
+
* #=> "parent 68d041ee999cb07c6496fbdd4f384095de6ca9e1\n"
|
59
|
+
* #=> "author Vicent Martí <tanoku@gmail.com> 1326863045 -0800\n"
|
60
|
+
* #=> ...
|
61
|
+
*/
|
69
62
|
static VALUE rb_git_odbobj_data(VALUE self)
|
70
63
|
{
|
71
64
|
git_odb_object *obj;
|
@@ -73,6 +66,15 @@ static VALUE rb_git_odbobj_data(VALUE self)
|
|
73
66
|
return rugged_str_ascii(git_odb_object_data(obj), git_odb_object_size(obj));
|
74
67
|
}
|
75
68
|
|
69
|
+
/*
|
70
|
+
* call-seq:
|
71
|
+
* odb_obj.size -> size
|
72
|
+
*
|
73
|
+
* Return the size in bytes of the Git object after decompression. This is
|
74
|
+
* also the size of the +obj.data+ buffer.
|
75
|
+
*
|
76
|
+
* odb_obj.size #=> 231
|
77
|
+
*/
|
76
78
|
static VALUE rb_git_odbobj_size(VALUE self)
|
77
79
|
{
|
78
80
|
git_odb_object *obj;
|
@@ -80,11 +82,20 @@ static VALUE rb_git_odbobj_size(VALUE self)
|
|
80
82
|
return INT2FIX(git_odb_object_size(obj));
|
81
83
|
}
|
82
84
|
|
85
|
+
/*
|
86
|
+
* call-seq:
|
87
|
+
* odb_obj.type -> Symbol
|
88
|
+
*
|
89
|
+
* Return a Ruby symbol representing the basic Git type of this object.
|
90
|
+
* Possible values are +:tree+, +:blob+, +:commit+ and +:tag+
|
91
|
+
*
|
92
|
+
* odb_obj.type #=> :tag
|
93
|
+
*/
|
83
94
|
static VALUE rb_git_odbobj_type(VALUE self)
|
84
95
|
{
|
85
96
|
git_odb_object *obj;
|
86
97
|
Data_Get_Struct(self, git_odb_object, obj);
|
87
|
-
return
|
98
|
+
return rugged_otype_new(git_odb_object_type(obj));
|
88
99
|
}
|
89
100
|
|
90
101
|
void rb_git__odbobj_free(void *obj)
|
@@ -128,6 +139,21 @@ static VALUE rugged_repo_new(VALUE klass, git_repository *repo)
|
|
128
139
|
return rb_repo;
|
129
140
|
}
|
130
141
|
|
142
|
+
/*
|
143
|
+
* call-seq:
|
144
|
+
* Rugged::Repository.new(path) -> repository
|
145
|
+
*
|
146
|
+
* Open a Git repository in the given +path+ and return a +Repository+ object
|
147
|
+
* representing it. An exception will be thrown if +path+ doesn't point to a
|
148
|
+
* valid repository. If you need to create a repository from scratch, use
|
149
|
+
* +Rugged::Repository.init+ instead.
|
150
|
+
*
|
151
|
+
* The +path+ must point to the actual folder (+.git+) of a Git repository.
|
152
|
+
* If you're unsure of where is this located, use +Rugged::Repository.discover+
|
153
|
+
* instead.
|
154
|
+
*
|
155
|
+
* Rugged::Repository.new('~/test/.git') #=> #<Rugged::Repository:0x108849488>
|
156
|
+
*/
|
131
157
|
static VALUE rb_git_repo_new(VALUE klass, VALUE rb_path)
|
132
158
|
{
|
133
159
|
git_repository *repo;
|
@@ -141,6 +167,21 @@ static VALUE rb_git_repo_new(VALUE klass, VALUE rb_path)
|
|
141
167
|
return rugged_repo_new(klass, repo);
|
142
168
|
}
|
143
169
|
|
170
|
+
/*
|
171
|
+
* call-seq:
|
172
|
+
* Rugged::Repository.init_at(path, is_bare) -> repository
|
173
|
+
*
|
174
|
+
* Initialize a Git repository in +path+. This implies creating all the
|
175
|
+
* necessary files on the FS, or re-initializing an already existing
|
176
|
+
* repository if the files have already been created.
|
177
|
+
*
|
178
|
+
* The +is_bare+ attribute specifies whether the Repository should be
|
179
|
+
* created on disk as bare or not. Bare repositories have no working
|
180
|
+
* directory and are created in the root of +path+. Non-bare repositories
|
181
|
+
* are created in a +.git+ folder and use +path+ as working directory.
|
182
|
+
*
|
183
|
+
* Rugged::Repository.init_at('~/repository') #=> #<Rugged::Repository:0x108849488>
|
184
|
+
*/
|
144
185
|
static VALUE rb_git_repo_init_at(VALUE klass, VALUE path, VALUE rb_is_bare)
|
145
186
|
{
|
146
187
|
git_repository *repo;
|
@@ -155,49 +196,95 @@ static VALUE rb_git_repo_init_at(VALUE klass, VALUE path, VALUE rb_is_bare)
|
|
155
196
|
return rugged_repo_new(klass, repo);
|
156
197
|
}
|
157
198
|
|
158
|
-
#define
|
159
|
-
|
160
|
-
{ \
|
161
|
-
VALUE rb_data = rb_iv_get(self, "@" #_object); \
|
162
|
-
if (NIL_P(rb_data)) { \
|
163
|
-
git_repository *repo; \
|
164
|
-
git_##_object *data; \
|
165
|
-
int error; \
|
166
|
-
Data_Get_Struct(self, git_repository, repo); \
|
167
|
-
error = git_repository_##_object(&data, repo); \
|
168
|
-
rugged_exception_check(error); \
|
169
|
-
rb_data = rugged_##_object##_new(_klass, self, data); \
|
170
|
-
rb_iv_set(self, "@" #_object, rb_data); \
|
171
|
-
} \
|
172
|
-
return rb_data; \
|
173
|
-
}\
|
174
|
-
static VALUE rb_git_repo_set_##_object(VALUE self, VALUE rb_data) \
|
175
|
-
{ \
|
176
|
-
VALUE rb_old_data; \
|
199
|
+
#define RB_GIT_REPO_OWNED_GET(_klass, _object) \
|
200
|
+
VALUE rb_data = rb_iv_get(self, "@" #_object); \
|
201
|
+
if (NIL_P(rb_data)) { \
|
177
202
|
git_repository *repo; \
|
178
203
|
git_##_object *data; \
|
179
|
-
|
180
|
-
rb_raise(rb_eTypeError, \
|
181
|
-
"The given object is not a Rugged::" #_object); \
|
182
|
-
if (!NIL_P(rugged_owner(rb_data))) \
|
183
|
-
rb_raise(rb_eRuntimeError, \
|
184
|
-
"The given object is already owned by another repository"); \
|
204
|
+
int error; \
|
185
205
|
Data_Get_Struct(self, git_repository, repo); \
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
if (!NIL_P(rb_old_data)) rugged_set_owner(rb_old_data, Qnil); \
|
190
|
-
rugged_set_owner(rb_data, self); \
|
206
|
+
error = git_repository_##_object(&data, repo); \
|
207
|
+
rugged_exception_check(error); \
|
208
|
+
rb_data = rugged_##_object##_new(_klass, self, data); \
|
191
209
|
rb_iv_set(self, "@" #_object, rb_data); \
|
192
|
-
|
193
|
-
|
210
|
+
} \
|
211
|
+
return rb_data; \
|
194
212
|
|
195
|
-
|
196
|
-
|
213
|
+
#define RB_GIT_REPO_OWNED_SET(_klass, _object) \
|
214
|
+
VALUE rb_old_data; \
|
215
|
+
git_repository *repo; \
|
216
|
+
git_##_object *data; \
|
217
|
+
if (!rb_obj_is_kind_of(rb_data, _klass))\
|
218
|
+
rb_raise(rb_eTypeError, \
|
219
|
+
"The given object is not a Rugged::" #_object); \
|
220
|
+
if (!NIL_P(rugged_owner(rb_data))) \
|
221
|
+
rb_raise(rb_eRuntimeError, \
|
222
|
+
"The given object is already owned by another repository"); \
|
223
|
+
Data_Get_Struct(self, git_repository, repo); \
|
224
|
+
Data_Get_Struct(rb_data, git_##_object, data); \
|
225
|
+
git_repository_set_##_object(repo, data); \
|
226
|
+
rb_old_data = rb_iv_get(self, "@" #_object); \
|
227
|
+
if (!NIL_P(rb_old_data)) rugged_set_owner(rb_old_data, Qnil); \
|
228
|
+
rugged_set_owner(rb_data, self); \
|
229
|
+
rb_iv_set(self, "@" #_object, rb_data); \
|
230
|
+
return Qnil; \
|
197
231
|
|
198
|
-
/* git_repository_config, git_repository_set_config */
|
199
|
-
RB_GIT_REPO_OWNED_ATTR(rb_cRuggedConfig, config);
|
200
232
|
|
233
|
+
/*
|
234
|
+
* call-seq:
|
235
|
+
* repo.index = idx
|
236
|
+
*
|
237
|
+
* Set the index for this +Repository+. +idx+ must be a instance of
|
238
|
+
* +Rugged::Index+. This index will be used internally by all
|
239
|
+
* operations that use the Git index on +repo+.
|
240
|
+
*
|
241
|
+
* Note that it's not necessary to set the +index+ for any repository;
|
242
|
+
* by default repositories are loaded with the index file that can be
|
243
|
+
* located on the +.git+ folder in the filesystem.
|
244
|
+
*/
|
245
|
+
static VALUE rb_git_repo_set_index(VALUE self, VALUE rb_data)
|
246
|
+
{
|
247
|
+
RB_GIT_REPO_OWNED_SET(rb_cRuggedIndex, index);
|
248
|
+
}
|
249
|
+
|
250
|
+
static VALUE rb_git_repo_get_index(VALUE self)
|
251
|
+
{
|
252
|
+
RB_GIT_REPO_OWNED_GET(rb_cRuggedIndex, index);
|
253
|
+
}
|
254
|
+
|
255
|
+
/*
|
256
|
+
* call-seq:
|
257
|
+
* repo.config = cfg
|
258
|
+
*
|
259
|
+
* Set the configuration file for this +Repository+. +cfg+ must be a instance of
|
260
|
+
* +Rugged::Config+. This config file will be used internally by all
|
261
|
+
* operations that need to lookup configuration settings on +repo+.
|
262
|
+
*
|
263
|
+
* Note that it's not necessary to set the +config+ for any repository;
|
264
|
+
* by default repositories are loaded with their relevant config files
|
265
|
+
* on the filesystem, and the corresponding global and system files if
|
266
|
+
* they can be found.
|
267
|
+
*/
|
268
|
+
static VALUE rb_git_repo_set_config(VALUE self, VALUE rb_data)
|
269
|
+
{
|
270
|
+
RB_GIT_REPO_OWNED_SET(rb_cRuggedConfig, config);
|
271
|
+
}
|
272
|
+
|
273
|
+
static VALUE rb_git_repo_get_config(VALUE self)
|
274
|
+
{
|
275
|
+
RB_GIT_REPO_OWNED_GET(rb_cRuggedConfig, config);
|
276
|
+
}
|
277
|
+
|
278
|
+
/*
|
279
|
+
* call-seq:
|
280
|
+
* repo.include?(oid) -> true or false
|
281
|
+
* repo.exists?(oid) -> true or false
|
282
|
+
*
|
283
|
+
* Return whether an object with the given SHA1 OID (represented as
|
284
|
+
* a 40-character string) exists in the repository.
|
285
|
+
*
|
286
|
+
* repo.include?("d8786bfc97485e8d7b19b21fb88c8ef1f199fc3f") #=> true
|
287
|
+
*/
|
201
288
|
static VALUE rb_git_repo_exists(VALUE self, VALUE hex)
|
202
289
|
{
|
203
290
|
git_repository *repo;
|
@@ -236,6 +323,18 @@ static VALUE rb_git_repo_read(VALUE self, VALUE hex)
|
|
236
323
|
return rugged_raw_read(repo, &oid);
|
237
324
|
}
|
238
325
|
|
326
|
+
/*
|
327
|
+
* call-seq:
|
328
|
+
* Repository.hash(buffer, type) -> oid
|
329
|
+
*
|
330
|
+
* Hash the contents of +buffer+ as raw bytes (ignoring any encoding
|
331
|
+
* information) and adding the relevant header corresponding to +type+,
|
332
|
+
* and return a hex string representing the result from the hash.
|
333
|
+
*
|
334
|
+
* Repository.hash('hello world', :commit) #=> "de5ba987198bcf2518885f0fc1350e5172cded78"
|
335
|
+
*
|
336
|
+
* Repository.hash('hello_world', :tag) #=> "9d09060c850defbc7711d08b57def0d14e742f4e"
|
337
|
+
*/
|
239
338
|
static VALUE rb_git_repo_hash(VALUE self, VALUE rb_buffer, VALUE rb_type)
|
240
339
|
{
|
241
340
|
int error;
|
@@ -246,13 +345,25 @@ static VALUE rb_git_repo_hash(VALUE self, VALUE rb_buffer, VALUE rb_type)
|
|
246
345
|
error = git_odb_hash(&oid,
|
247
346
|
RSTRING_PTR(rb_buffer),
|
248
347
|
RSTRING_LEN(rb_buffer),
|
249
|
-
|
348
|
+
rugged_otype_get(rb_type)
|
250
349
|
);
|
251
350
|
rugged_exception_check(error);
|
252
351
|
|
253
352
|
return rugged_create_oid(&oid);
|
254
353
|
}
|
255
354
|
|
355
|
+
/*
|
356
|
+
* call-seq:
|
357
|
+
* Repository.hash_file(path, type) -> oid
|
358
|
+
*
|
359
|
+
* Hash the contents of the file pointed at by +path+, assuming
|
360
|
+
* that it'd be stored in the ODB with the given +type+, and return
|
361
|
+
* a hex string representing the SHA1 OID resulting from the hash.
|
362
|
+
*
|
363
|
+
* Repository.hash_file('foo.txt', :commit) #=> "de5ba987198bcf2518885f0fc1350e5172cded78"
|
364
|
+
*
|
365
|
+
* Repository.hash_file('foo.txt', :tag) #=> "9d09060c850defbc7711d08b57def0d14e742f4e"
|
366
|
+
*/
|
256
367
|
static VALUE rb_git_repo_hashfile(VALUE self, VALUE rb_path, VALUE rb_type)
|
257
368
|
{
|
258
369
|
int error;
|
@@ -262,7 +373,7 @@ static VALUE rb_git_repo_hashfile(VALUE self, VALUE rb_path, VALUE rb_type)
|
|
262
373
|
|
263
374
|
error = git_odb_hashfile(&oid,
|
264
375
|
StringValueCStr(rb_path),
|
265
|
-
|
376
|
+
rugged_otype_get(rb_type)
|
266
377
|
);
|
267
378
|
rugged_exception_check(error);
|
268
379
|
|
@@ -285,7 +396,7 @@ static VALUE rb_git_repo_write(VALUE self, VALUE rb_buffer, VALUE rub_type)
|
|
285
396
|
error = git_repository_odb(&odb, repo);
|
286
397
|
rugged_exception_check(error);
|
287
398
|
|
288
|
-
type =
|
399
|
+
type = rugged_otype_get(rub_type);
|
289
400
|
|
290
401
|
error = git_odb_open_wstream(&stream, odb, RSTRING_LEN(rb_buffer), type);
|
291
402
|
rugged_exception_check(error);
|
@@ -301,22 +412,70 @@ static VALUE rb_git_repo_write(VALUE self, VALUE rb_buffer, VALUE rub_type)
|
|
301
412
|
return rugged_create_oid(&oid);
|
302
413
|
}
|
303
414
|
|
304
|
-
#define
|
305
|
-
static VALUE rb_git_repo_##method(VALUE self) \
|
306
|
-
{ \
|
415
|
+
#define RB_GIT_REPO_GETTER(method) \
|
307
416
|
git_repository *repo; \
|
308
417
|
int error; \
|
309
418
|
Data_Get_Struct(self, git_repository, repo); \
|
310
419
|
error = git_repository_##method(repo); \
|
311
420
|
rugged_exception_check(error); \
|
312
421
|
return error ? Qtrue : Qfalse; \
|
422
|
+
|
423
|
+
/*
|
424
|
+
* call-seq:
|
425
|
+
* repo.bare? -> true or false
|
426
|
+
*
|
427
|
+
* Return whether a repository is bare or not. A bare repository has no
|
428
|
+
* working directory.
|
429
|
+
*/
|
430
|
+
static VALUE rb_git_repo_is_bare(VALUE self)
|
431
|
+
{
|
432
|
+
RB_GIT_REPO_GETTER(is_bare);
|
313
433
|
}
|
314
434
|
|
315
|
-
GIT_REPO_GETTER(is_bare); /* git_repository_is_bare */
|
316
|
-
GIT_REPO_GETTER(is_empty); /* git_repository_is_empty */
|
317
|
-
GIT_REPO_GETTER(head_detached); /* git_repository_head_detached */
|
318
|
-
GIT_REPO_GETTER(head_orphan); /* git_repository_head_orphan */
|
319
435
|
|
436
|
+
/*
|
437
|
+
* call-seq:
|
438
|
+
* repo.empty? -> true or false
|
439
|
+
*
|
440
|
+
* Return whether a repository is empty or not. An empty repository has just
|
441
|
+
* been initialized and has no commits yet.
|
442
|
+
*/
|
443
|
+
static VALUE rb_git_repo_is_empty(VALUE self)
|
444
|
+
{
|
445
|
+
RB_GIT_REPO_GETTER(is_empty);
|
446
|
+
}
|
447
|
+
|
448
|
+
/*
|
449
|
+
* call-seq:
|
450
|
+
* repo.head_detached? -> true or false
|
451
|
+
*
|
452
|
+
* Return whether the +HEAD+ of a repository is detached or not.
|
453
|
+
*/
|
454
|
+
static VALUE rb_git_repo_head_detached(VALUE self)
|
455
|
+
{
|
456
|
+
RB_GIT_REPO_GETTER(head_detached);
|
457
|
+
}
|
458
|
+
|
459
|
+
/*
|
460
|
+
* call-seq:
|
461
|
+
* repo.head_orphan? -> true or false
|
462
|
+
*
|
463
|
+
* Return whether the +HEAD+ of a repository is orphaned or not.
|
464
|
+
*/
|
465
|
+
static VALUE rb_git_repo_head_orphan(VALUE self)
|
466
|
+
{
|
467
|
+
RB_GIT_REPO_GETTER(head_orphan);
|
468
|
+
}
|
469
|
+
|
470
|
+
/*
|
471
|
+
* call-seq:
|
472
|
+
* repo.path -> path
|
473
|
+
*
|
474
|
+
* Return the full, normalized path to this repository. For non-bare repositories,
|
475
|
+
* this is the path of the actual +.git+ folder, not the working directory.
|
476
|
+
*
|
477
|
+
* repo.path #=> "/home/foo/workthing/.git"
|
478
|
+
*/
|
320
479
|
static VALUE rb_git_repo_path(VALUE self)
|
321
480
|
{
|
322
481
|
git_repository *repo;
|
@@ -324,6 +483,19 @@ static VALUE rb_git_repo_path(VALUE self)
|
|
324
483
|
return rugged_str_new2(git_repository_path(repo), NULL);
|
325
484
|
}
|
326
485
|
|
486
|
+
/*
|
487
|
+
* call-seq:
|
488
|
+
* repo.workdir -> path or nil
|
489
|
+
*
|
490
|
+
* Return the working directory for this repository, or +nil+ if
|
491
|
+
* the repository is bare.
|
492
|
+
*
|
493
|
+
* repo1.bare? #=> false
|
494
|
+
* repo1.workdir # => "/home/foo/workthing/"
|
495
|
+
*
|
496
|
+
* repo2.bare? #=> true
|
497
|
+
* repo2.workdir #=> nil
|
498
|
+
*/
|
327
499
|
static VALUE rb_git_repo_workdir(VALUE self)
|
328
500
|
{
|
329
501
|
git_repository *repo;
|
@@ -335,6 +507,22 @@ static VALUE rb_git_repo_workdir(VALUE self)
|
|
335
507
|
return workdir ? rugged_str_new2(workdir, NULL) : Qnil;
|
336
508
|
}
|
337
509
|
|
510
|
+
/*
|
511
|
+
* call-seq:
|
512
|
+
* repo.workdir = path
|
513
|
+
*
|
514
|
+
* Sets the working directory of +repo+ to +path+. All internal
|
515
|
+
* operations on +repo+ that affect the working directory will
|
516
|
+
* instead use +path+.
|
517
|
+
*
|
518
|
+
* The +workdir+ can be set on bare repositories to temporarily
|
519
|
+
* turn them into normal repositories.
|
520
|
+
*
|
521
|
+
* repo.bare? #=> true
|
522
|
+
* repo.workdir = "/tmp/workdir"
|
523
|
+
* repo.bare? #=> false
|
524
|
+
* repo.checkout
|
525
|
+
*/
|
338
526
|
static VALUE rb_git_repo_set_workdir(VALUE self, VALUE rb_workdir)
|
339
527
|
{
|
340
528
|
git_repository *repo;
|
@@ -349,6 +537,21 @@ static VALUE rb_git_repo_set_workdir(VALUE self, VALUE rb_workdir)
|
|
349
537
|
return Qnil;
|
350
538
|
}
|
351
539
|
|
540
|
+
/*
|
541
|
+
* call-seq:
|
542
|
+
* Repository.discover(path = nil, across_fs = true) -> repository
|
543
|
+
*
|
544
|
+
* Traverse +path+ upwards until a Git working directory with a +.git+
|
545
|
+
* folder has been found, open it and return it as a +Repository+
|
546
|
+
* object.
|
547
|
+
*
|
548
|
+
* If +path+ is +nil+, the current working directory will be used as
|
549
|
+
* a starting point.
|
550
|
+
*
|
551
|
+
* If +across_fs+ is +true+, the traversal won't stop when reaching
|
552
|
+
* a different device than the one that contained +path+ (only applies
|
553
|
+
* to UNIX-based OSses).
|
554
|
+
*/
|
352
555
|
static VALUE rb_git_repo_discover(int argc, VALUE *argv, VALUE self)
|
353
556
|
{
|
354
557
|
VALUE rb_path, rb_across_fs;
|
@@ -411,9 +614,45 @@ static int rugged__status_cb(const char *path, unsigned int flags, void *payload
|
|
411
614
|
flags_to_rb(flags)
|
412
615
|
);
|
413
616
|
|
414
|
-
return
|
617
|
+
return GIT_OK;
|
415
618
|
}
|
416
619
|
|
620
|
+
/*
|
621
|
+
* call-seq:
|
622
|
+
* repo.status { |status_data| block }
|
623
|
+
* repo.status(path) -> status_data
|
624
|
+
*
|
625
|
+
* Returns the status for one or more files in the working directory
|
626
|
+
* of the repository. This is equivalent to the +git status+ command.
|
627
|
+
*
|
628
|
+
* The returned +status_data+ is always an array containing one or more
|
629
|
+
* status flags as Ruby symbols. Possible flags are:
|
630
|
+
*
|
631
|
+
* - +:index_new+: the file is new in the index
|
632
|
+
* - +:index_modified+: the file has been modified in the index
|
633
|
+
* - +:index_deleted+: the file has been deleted from the index
|
634
|
+
* - +:worktree_new+: the file is new in the working directory
|
635
|
+
* - +:worktree_modified+: the file has been modified in the working directory
|
636
|
+
* - +:worktree_deleted+: the file has been deleted from the working directory
|
637
|
+
*
|
638
|
+
* If a +block+ is given, status information will be gathered for every
|
639
|
+
* single file on the working dir. The +block+ will be called with the
|
640
|
+
* status data for each file.
|
641
|
+
*
|
642
|
+
* repo.status { |status_data| puts status_data.inspect }
|
643
|
+
*
|
644
|
+
* results in, for example:
|
645
|
+
*
|
646
|
+
* [:index_new, :worktree_new]
|
647
|
+
* [:worktree_modified]
|
648
|
+
*
|
649
|
+
* If a +path+ is given instead, the function will return the +status_data+ for
|
650
|
+
* the file pointed to by path, or raise an exception if the path doesn't exist.
|
651
|
+
*
|
652
|
+
* +path+ must be relative to the repository's working directory.
|
653
|
+
*
|
654
|
+
* repo.status('src/diff.c') #=> [:index_new, :worktree_new]
|
655
|
+
*/
|
417
656
|
static VALUE rb_git_repo_status(int argc, VALUE *argv, VALUE self)
|
418
657
|
{
|
419
658
|
int error;
|
@@ -456,7 +695,9 @@ void Init_rugged_repo()
|
|
456
695
|
rb_define_singleton_method(rb_cRuggedRepo, "init_at", rb_git_repo_init_at, 2);
|
457
696
|
rb_define_singleton_method(rb_cRuggedRepo, "discover", rb_git_repo_discover, -1);
|
458
697
|
|
459
|
-
rb_define_method(rb_cRuggedRepo, "exists", rb_git_repo_exists, 1);
|
698
|
+
rb_define_method(rb_cRuggedRepo, "exists?", rb_git_repo_exists, 1);
|
699
|
+
rb_define_method(rb_cRuggedRepo, "include?", rb_git_repo_exists, 1);
|
700
|
+
|
460
701
|
rb_define_method(rb_cRuggedRepo, "read", rb_git_repo_read, 1);
|
461
702
|
rb_define_method(rb_cRuggedRepo, "write", rb_git_repo_write, 2);
|
462
703
|
rb_define_method(rb_cRuggedRepo, "path", rb_git_repo_path, 0);
|
@@ -471,6 +712,7 @@ void Init_rugged_repo()
|
|
471
712
|
|
472
713
|
rb_define_method(rb_cRuggedRepo, "bare?", rb_git_repo_is_bare, 0);
|
473
714
|
rb_define_method(rb_cRuggedRepo, "empty?", rb_git_repo_is_empty, 0);
|
715
|
+
|
474
716
|
rb_define_method(rb_cRuggedRepo, "head_detached?", rb_git_repo_head_detached, 0);
|
475
717
|
rb_define_method(rb_cRuggedRepo, "head_orphan?", rb_git_repo_head_orphan, 0);
|
476
718
|
|
@@ -478,5 +720,5 @@ void Init_rugged_repo()
|
|
478
720
|
rb_define_method(rb_cRuggedOdbObject, "data", rb_git_odbobj_data, 0);
|
479
721
|
rb_define_method(rb_cRuggedOdbObject, "len", rb_git_odbobj_size, 0);
|
480
722
|
rb_define_method(rb_cRuggedOdbObject, "type", rb_git_odbobj_type, 0);
|
481
|
-
rb_define_method(rb_cRuggedOdbObject, "
|
723
|
+
rb_define_method(rb_cRuggedOdbObject, "oid", rb_git_odbobj_oid, 0);
|
482
724
|
}
|
data/ext/rugged/rugged_revwalk.c
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
* The MIT License
|
3
3
|
*
|
4
4
|
* Copyright (c) 2011 GitHub, Inc
|
5
|
-
*
|
5
|
+
*
|
6
6
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
7
|
* of this software and associated documentation files (the "Software"), to deal
|
8
8
|
* in the Software without restriction, including without limitation the rights
|
9
9
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
10
|
* copies of the Software, and to permit persons to whom the Software is
|
11
11
|
* furnished to do so, subject to the following conditions:
|
12
|
-
*
|
12
|
+
*
|
13
13
|
* The above copyright notice and this permission notice shall be included in
|
14
14
|
* all copies or substantial portions of the Software.
|
15
|
-
*
|
15
|
+
*
|
16
16
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
17
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
18
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
@@ -39,6 +39,13 @@ VALUE rugged_walker_new(VALUE klass, VALUE owner, git_revwalk *walk)
|
|
39
39
|
return rb_walk;
|
40
40
|
}
|
41
41
|
|
42
|
+
/*
|
43
|
+
* call-seq:
|
44
|
+
* Walker.new(repository) -> walker
|
45
|
+
*
|
46
|
+
* Create a new +Walker+ instance able to walk commits found
|
47
|
+
* in +repository+, which is a <tt>Rugged::Repository</tt> instance.
|
48
|
+
*/
|
42
49
|
static VALUE rb_git_walker_new(VALUE klass, VALUE rb_repo)
|
43
50
|
{
|
44
51
|
git_repository *repo;
|
@@ -53,6 +60,31 @@ static VALUE rb_git_walker_new(VALUE klass, VALUE rb_repo)
|
|
53
60
|
return rugged_walker_new(klass, rb_repo, walk);;
|
54
61
|
}
|
55
62
|
|
63
|
+
/*
|
64
|
+
* call-seq:
|
65
|
+
* walker.each { |commit| block }
|
66
|
+
* walker.each -> Iterator
|
67
|
+
*
|
68
|
+
* Perform the walk through the repository, yielding each
|
69
|
+
* one of the commits found as a <tt>Rugged::Commit</tt> instance
|
70
|
+
* to +block+.
|
71
|
+
*
|
72
|
+
* If no +block+ is given, an +Iterator+ will be returned.
|
73
|
+
*
|
74
|
+
* The walker must have been previously set-up before a walk can be performed
|
75
|
+
* (i.e. at least one commit must have been pushed).
|
76
|
+
*
|
77
|
+
* walker.push("92b22bbcb37caf4f6f53d30292169e84f5e4283b")
|
78
|
+
* walker.each { |commit| puts commit.oid }
|
79
|
+
*
|
80
|
+
* generates:
|
81
|
+
*
|
82
|
+
* 92b22bbcb37caf4f6f53d30292169e84f5e4283b
|
83
|
+
* 6b750d5800439b502de669465b385e5f469c78b6
|
84
|
+
* ef9207141549f4ffcd3c4597e270d32e10d0a6bc
|
85
|
+
* cb75e05f0f8ac3407fb3bd0ebd5ff07573b16c9f
|
86
|
+
* ...
|
87
|
+
*/
|
56
88
|
static VALUE rb_git_walker_each(VALUE self)
|
57
89
|
{
|
58
90
|
git_revwalk *walk;
|
@@ -74,12 +106,28 @@ static VALUE rb_git_walker_each(VALUE self)
|
|
74
106
|
rb_yield(rugged_object_new(rugged_owner(self), (git_object *)commit));
|
75
107
|
}
|
76
108
|
|
77
|
-
if (error !=
|
109
|
+
if (error != GIT_REVWALKOVER)
|
78
110
|
rugged_exception_check(error);
|
79
111
|
|
80
112
|
return Qnil;
|
81
113
|
}
|
82
114
|
|
115
|
+
/*
|
116
|
+
* call-seq:
|
117
|
+
* walker.push(commit)
|
118
|
+
*
|
119
|
+
* Push one new +commit+ to start the walk from. +commit+ must be a
|
120
|
+
* +String+ with the OID of a commit in the repository, or a <tt>Rugged::Commit</tt>
|
121
|
+
* instance.
|
122
|
+
*
|
123
|
+
* More than one commit may be pushed to the walker (to walk several
|
124
|
+
* branches simulataneously).
|
125
|
+
*
|
126
|
+
* Duplicate pushed commits will be ignored; at least one commit must have been
|
127
|
+
* pushed as a starting point before the walk can begin.
|
128
|
+
*
|
129
|
+
* walker.push("92b22bbcb37caf4f6f53d30292169e84f5e4283b")
|
130
|
+
*/
|
83
131
|
static VALUE rb_git_walker_push(VALUE self, VALUE rb_commit)
|
84
132
|
{
|
85
133
|
git_revwalk *walk;
|
@@ -94,6 +142,11 @@ static VALUE rb_git_walker_push(VALUE self, VALUE rb_commit)
|
|
94
142
|
return Qnil;
|
95
143
|
}
|
96
144
|
|
145
|
+
/*
|
146
|
+
* call-seq:
|
147
|
+
* walker.hide(commit)
|
148
|
+
*
|
149
|
+
*/
|
97
150
|
static VALUE rb_git_walker_hide(VALUE self, VALUE rb_commit)
|
98
151
|
{
|
99
152
|
git_revwalk *walk;
|
@@ -55,9 +55,9 @@ git_signature *rugged_signature_get(VALUE rb_sig)
|
|
55
55
|
|
56
56
|
Check_Type(rb_sig, T_HASH);
|
57
57
|
|
58
|
-
rb_name = rb_hash_aref(rb_sig,
|
59
|
-
rb_email = rb_hash_aref(rb_sig,
|
60
|
-
rb_time = rb_hash_aref(rb_sig,
|
58
|
+
rb_name = rb_hash_aref(rb_sig, CSTR2SYM("name"));
|
59
|
+
rb_email = rb_hash_aref(rb_sig, CSTR2SYM("email"));
|
60
|
+
rb_time = rb_hash_aref(rb_sig, CSTR2SYM("time"));
|
61
61
|
|
62
62
|
Check_Type(rb_name, T_STRING);
|
63
63
|
Check_Type(rb_email, T_STRING);
|