rugged 0.17.0.b7 → 0.18.0.b1
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/LICENSE +1 -1
- data/README.md +88 -32
- data/ext/rugged/extconf.rb +4 -2
- data/ext/rugged/rugged.c +72 -10
- data/ext/rugged/rugged.h +14 -10
- data/ext/rugged/rugged_blob.c +8 -10
- data/ext/rugged/rugged_branch.c +11 -14
- data/ext/rugged/rugged_commit.c +31 -24
- data/ext/rugged/rugged_config.c +2 -2
- data/ext/rugged/rugged_index.c +133 -198
- data/ext/rugged/rugged_note.c +372 -0
- data/ext/rugged/rugged_object.c +50 -22
- data/ext/rugged/rugged_reference.c +122 -130
- data/ext/rugged/rugged_remote.c +72 -29
- data/ext/rugged/rugged_repo.c +402 -20
- data/ext/rugged/rugged_revwalk.c +7 -3
- data/ext/rugged/rugged_settings.c +110 -0
- data/ext/rugged/rugged_signature.c +23 -7
- data/ext/rugged/rugged_tag.c +32 -16
- data/ext/rugged/rugged_tree.c +44 -15
- data/lib/rugged.rb +1 -0
- data/lib/rugged/index.rb +8 -0
- data/lib/rugged/remote.rb +13 -0
- data/lib/rugged/repository.rb +3 -3
- data/lib/rugged/version.rb +1 -1
- data/test/blob_test.rb +13 -15
- data/test/branch_test.rb +32 -67
- data/test/commit_test.rb +50 -12
- data/test/config_test.rb +12 -11
- data/test/coverage/HEAD.json +1 -1
- data/test/coverage/cover.rb +40 -21
- data/test/errors_test.rb +34 -0
- 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/testrepo.git/logs/refs/notes/commits +1 -0
- data/test/fixtures/testrepo.git/objects/44/1034f860c1d5d90e4188d11ae0d325176869a8 +1 -0
- data/test/fixtures/testrepo.git/objects/60/d415052a33de2150bf68757f6461df4f563ae4 +0 -0
- data/test/fixtures/testrepo.git/objects/68/8a8f4ef7496901d15322972f96e212a9e466cc +1 -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/b7/4713326bc972cc15751ed504dca6f6f3b91f7a +3 -0
- data/test/fixtures/testrepo.git/refs/notes/commits +1 -0
- data/test/index_test.rb +65 -69
- data/test/lib_test.rb +76 -11
- data/test/note_test.rb +158 -0
- data/test/object_test.rb +8 -11
- data/test/reference_test.rb +77 -85
- data/test/remote_test.rb +86 -8
- data/test/repo_pack_test.rb +9 -7
- data/test/repo_reset_test.rb +80 -0
- data/test/repo_test.rb +176 -53
- data/test/tag_test.rb +44 -7
- data/test/test_helper.rb +63 -35
- data/test/tree_test.rb +34 -13
- data/test/walker_test.rb +14 -14
- data/vendor/libgit2/Makefile.embed +1 -1
- data/vendor/libgit2/deps/http-parser/http_parser.c +974 -578
- data/vendor/libgit2/deps/http-parser/http_parser.h +106 -70
- data/vendor/libgit2/deps/regex/regcomp.c +7 -6
- data/vendor/libgit2/deps/regex/regex_internal.c +1 -1
- data/vendor/libgit2/deps/regex/regex_internal.h +12 -3
- data/vendor/libgit2/deps/regex/regexec.c +5 -5
- data/vendor/libgit2/include/git2.h +5 -1
- data/vendor/libgit2/include/git2/attr.h +4 -2
- data/vendor/libgit2/include/git2/blob.h +39 -12
- data/vendor/libgit2/include/git2/branch.h +123 -35
- data/vendor/libgit2/include/git2/checkout.h +206 -48
- data/vendor/libgit2/include/git2/clone.h +72 -27
- data/vendor/libgit2/include/git2/commit.h +20 -17
- data/vendor/libgit2/include/git2/common.h +67 -1
- data/vendor/libgit2/include/git2/config.h +81 -60
- data/vendor/libgit2/include/git2/cred_helpers.h +53 -0
- data/vendor/libgit2/include/git2/diff.h +459 -150
- data/vendor/libgit2/include/git2/errors.h +9 -1
- data/vendor/libgit2/include/git2/graph.h +41 -0
- data/vendor/libgit2/include/git2/ignore.h +7 -6
- data/vendor/libgit2/include/git2/index.h +323 -97
- data/vendor/libgit2/include/git2/indexer.h +27 -59
- data/vendor/libgit2/include/git2/inttypes.h +4 -0
- data/vendor/libgit2/include/git2/merge.h +13 -3
- data/vendor/libgit2/include/git2/message.h +14 -8
- data/vendor/libgit2/include/git2/net.h +9 -7
- data/vendor/libgit2/include/git2/notes.h +88 -29
- data/vendor/libgit2/include/git2/object.h +16 -6
- data/vendor/libgit2/include/git2/odb.h +80 -17
- data/vendor/libgit2/include/git2/odb_backend.h +47 -11
- data/vendor/libgit2/include/git2/oid.h +26 -17
- data/vendor/libgit2/include/git2/pack.h +62 -8
- data/vendor/libgit2/include/git2/push.h +131 -0
- data/vendor/libgit2/include/git2/refdb.h +103 -0
- data/vendor/libgit2/include/git2/refdb_backend.h +109 -0
- data/vendor/libgit2/include/git2/reflog.h +30 -21
- data/vendor/libgit2/include/git2/refs.h +215 -193
- data/vendor/libgit2/include/git2/refspec.h +22 -2
- data/vendor/libgit2/include/git2/remote.h +158 -37
- data/vendor/libgit2/include/git2/repository.h +150 -31
- data/vendor/libgit2/include/git2/reset.h +43 -9
- data/vendor/libgit2/include/git2/revparse.h +48 -4
- data/vendor/libgit2/include/git2/revwalk.h +25 -10
- data/vendor/libgit2/include/git2/signature.h +20 -12
- data/vendor/libgit2/include/git2/stash.h +121 -0
- data/vendor/libgit2/include/git2/status.h +122 -53
- data/vendor/libgit2/include/git2/strarray.h +17 -11
- data/vendor/libgit2/include/git2/submodule.h +42 -7
- data/vendor/libgit2/include/git2/tag.h +72 -59
- data/vendor/libgit2/include/git2/threads.h +4 -2
- data/vendor/libgit2/include/git2/trace.h +68 -0
- data/vendor/libgit2/include/git2/transport.h +328 -0
- data/vendor/libgit2/include/git2/tree.h +149 -120
- data/vendor/libgit2/include/git2/types.h +13 -12
- data/vendor/libgit2/include/git2/version.h +3 -3
- data/vendor/libgit2/src/amiga/map.c +2 -2
- data/vendor/libgit2/src/attr.c +58 -48
- data/vendor/libgit2/src/attr.h +4 -18
- data/vendor/libgit2/src/attr_file.c +30 -6
- data/vendor/libgit2/src/attr_file.h +6 -8
- data/vendor/libgit2/src/attrcache.h +24 -0
- data/vendor/libgit2/src/blob.c +30 -7
- data/vendor/libgit2/src/blob.h +1 -1
- data/vendor/libgit2/src/branch.c +361 -68
- data/vendor/libgit2/src/branch.h +17 -0
- data/vendor/libgit2/src/bswap.h +1 -1
- data/vendor/libgit2/src/buf_text.c +291 -0
- data/vendor/libgit2/src/buf_text.h +122 -0
- data/vendor/libgit2/src/buffer.c +27 -101
- data/vendor/libgit2/src/buffer.h +54 -39
- data/vendor/libgit2/src/cache.c +15 -6
- data/vendor/libgit2/src/cache.h +1 -1
- data/vendor/libgit2/src/cc-compat.h +3 -1
- data/vendor/libgit2/src/checkout.c +1165 -222
- data/vendor/libgit2/src/checkout.h +24 -0
- data/vendor/libgit2/src/clone.c +171 -86
- data/vendor/libgit2/src/commit.c +44 -45
- data/vendor/libgit2/src/commit.h +3 -3
- data/vendor/libgit2/src/commit_list.c +194 -0
- data/vendor/libgit2/src/commit_list.h +49 -0
- data/vendor/libgit2/src/common.h +44 -10
- data/vendor/libgit2/src/compress.c +1 -1
- data/vendor/libgit2/src/compress.h +1 -1
- data/vendor/libgit2/src/config.c +211 -124
- data/vendor/libgit2/src/config.h +23 -4
- data/vendor/libgit2/src/config_cache.c +2 -2
- data/vendor/libgit2/src/config_file.c +129 -53
- data/vendor/libgit2/src/config_file.h +10 -8
- data/vendor/libgit2/src/crlf.c +66 -67
- data/vendor/libgit2/src/date.c +12 -12
- data/vendor/libgit2/src/delta-apply.c +14 -1
- data/vendor/libgit2/src/delta-apply.h +18 -1
- data/vendor/libgit2/src/delta.c +40 -107
- data/vendor/libgit2/src/delta.h +19 -17
- data/vendor/libgit2/src/diff.c +347 -496
- data/vendor/libgit2/src/diff.h +27 -1
- data/vendor/libgit2/src/diff_output.c +564 -249
- data/vendor/libgit2/src/diff_output.h +15 -8
- data/vendor/libgit2/src/diff_tform.c +687 -0
- data/vendor/libgit2/src/errors.c +27 -36
- data/vendor/libgit2/src/fetch.c +13 -351
- data/vendor/libgit2/src/fetch.h +13 -3
- data/vendor/libgit2/src/fetchhead.c +295 -0
- data/vendor/libgit2/src/fetchhead.h +34 -0
- data/vendor/libgit2/src/filebuf.c +42 -15
- data/vendor/libgit2/src/filebuf.h +4 -2
- data/vendor/libgit2/src/fileops.c +466 -113
- data/vendor/libgit2/src/fileops.h +154 -28
- data/vendor/libgit2/src/filter.c +3 -75
- data/vendor/libgit2/src/filter.h +1 -29
- data/vendor/libgit2/src/fnmatch.c +1 -1
- data/vendor/libgit2/src/fnmatch.h +1 -1
- data/vendor/libgit2/src/global.c +54 -10
- data/vendor/libgit2/src/global.h +10 -1
- data/vendor/libgit2/src/graph.c +178 -0
- data/vendor/libgit2/src/hash.c +25 -52
- data/vendor/libgit2/src/hash.h +21 -9
- data/vendor/libgit2/src/{sha1/sha1.c → hash/hash_generic.c} +20 -12
- data/vendor/libgit2/src/hash/hash_generic.h +24 -0
- data/vendor/libgit2/src/hash/hash_openssl.h +45 -0
- data/vendor/libgit2/src/hash/hash_win32.c +291 -0
- data/vendor/libgit2/src/hash/hash_win32.h +140 -0
- data/vendor/libgit2/src/hashsig.c +368 -0
- data/vendor/libgit2/src/hashsig.h +72 -0
- data/vendor/libgit2/src/ignore.c +22 -15
- data/vendor/libgit2/src/ignore.h +6 -1
- data/vendor/libgit2/src/index.c +770 -171
- data/vendor/libgit2/src/index.h +13 -5
- data/vendor/libgit2/src/indexer.c +286 -431
- data/vendor/libgit2/src/iterator.c +854 -466
- data/vendor/libgit2/src/iterator.h +134 -109
- data/vendor/libgit2/src/map.h +1 -1
- data/vendor/libgit2/src/merge.c +296 -0
- data/vendor/libgit2/src/merge.h +22 -0
- data/vendor/libgit2/src/message.c +1 -1
- data/vendor/libgit2/src/message.h +1 -1
- data/vendor/libgit2/src/mwindow.c +35 -30
- data/vendor/libgit2/src/mwindow.h +2 -2
- data/vendor/libgit2/src/netops.c +162 -98
- data/vendor/libgit2/src/netops.h +50 -15
- data/vendor/libgit2/src/notes.c +109 -58
- data/vendor/libgit2/src/notes.h +2 -1
- data/vendor/libgit2/src/object.c +46 -57
- data/vendor/libgit2/src/object.h +1 -8
- data/vendor/libgit2/src/odb.c +151 -40
- data/vendor/libgit2/src/odb.h +5 -1
- data/vendor/libgit2/src/odb_loose.c +4 -5
- data/vendor/libgit2/src/odb_pack.c +122 -80
- data/vendor/libgit2/src/offmap.h +65 -0
- data/vendor/libgit2/src/oid.c +12 -4
- data/vendor/libgit2/src/oidmap.h +1 -1
- data/vendor/libgit2/src/pack-objects.c +88 -61
- data/vendor/libgit2/src/pack-objects.h +8 -8
- data/vendor/libgit2/src/pack.c +293 -28
- data/vendor/libgit2/src/pack.h +49 -4
- data/vendor/libgit2/src/path.c +103 -14
- data/vendor/libgit2/src/path.h +23 -7
- data/vendor/libgit2/src/pathspec.c +168 -0
- data/vendor/libgit2/src/pathspec.h +40 -0
- data/vendor/libgit2/src/pool.c +29 -4
- data/vendor/libgit2/src/pool.h +8 -1
- data/vendor/libgit2/src/posix.c +26 -27
- data/vendor/libgit2/src/posix.h +2 -3
- data/vendor/libgit2/src/pqueue.c +23 -1
- data/vendor/libgit2/src/pqueue.h +23 -1
- data/vendor/libgit2/src/push.c +653 -0
- data/vendor/libgit2/src/push.h +51 -0
- data/vendor/libgit2/src/refdb.c +185 -0
- data/vendor/libgit2/src/refdb.h +46 -0
- data/vendor/libgit2/src/refdb_fs.c +1024 -0
- data/vendor/libgit2/src/refdb_fs.h +15 -0
- data/vendor/libgit2/src/reflog.c +77 -45
- data/vendor/libgit2/src/reflog.h +1 -3
- data/vendor/libgit2/src/refs.c +366 -1326
- data/vendor/libgit2/src/refs.h +22 -13
- data/vendor/libgit2/src/refspec.c +46 -7
- data/vendor/libgit2/src/refspec.h +11 -1
- data/vendor/libgit2/src/remote.c +758 -120
- data/vendor/libgit2/src/remote.h +10 -5
- data/vendor/libgit2/src/repo_template.h +6 -6
- data/vendor/libgit2/src/repository.c +315 -96
- data/vendor/libgit2/src/repository.h +5 -3
- data/vendor/libgit2/src/reset.c +99 -81
- data/vendor/libgit2/src/revparse.c +157 -84
- data/vendor/libgit2/src/revwalk.c +68 -470
- data/vendor/libgit2/src/revwalk.h +44 -0
- data/vendor/libgit2/src/sha1_lookup.c +1 -1
- data/vendor/libgit2/src/sha1_lookup.h +1 -1
- data/vendor/libgit2/src/signature.c +68 -200
- data/vendor/libgit2/src/signature.h +1 -1
- data/vendor/libgit2/src/stash.c +663 -0
- data/vendor/libgit2/src/status.c +101 -79
- data/vendor/libgit2/src/strmap.h +1 -1
- data/vendor/libgit2/src/submodule.c +67 -51
- data/vendor/libgit2/src/submodule.h +1 -1
- data/vendor/libgit2/src/tag.c +35 -29
- data/vendor/libgit2/src/tag.h +1 -1
- data/vendor/libgit2/src/thread-utils.c +1 -1
- data/vendor/libgit2/src/thread-utils.h +2 -2
- data/vendor/libgit2/src/trace.c +39 -0
- data/vendor/libgit2/src/trace.h +56 -0
- data/vendor/libgit2/src/transport.c +81 -34
- data/vendor/libgit2/src/transports/cred.c +60 -0
- data/vendor/libgit2/src/transports/cred_helpers.c +49 -0
- data/vendor/libgit2/src/transports/git.c +234 -127
- data/vendor/libgit2/src/transports/http.c +761 -433
- data/vendor/libgit2/src/transports/local.c +460 -64
- data/vendor/libgit2/src/transports/smart.c +345 -0
- data/vendor/libgit2/src/transports/smart.h +179 -0
- data/vendor/libgit2/src/{pkt.c → transports/smart_pkt.c} +131 -12
- data/vendor/libgit2/src/transports/smart_protocol.c +856 -0
- data/vendor/libgit2/src/transports/winhttp.c +1136 -0
- data/vendor/libgit2/src/tree-cache.c +2 -2
- data/vendor/libgit2/src/tree-cache.h +1 -1
- data/vendor/libgit2/src/tree.c +239 -166
- data/vendor/libgit2/src/tree.h +11 -2
- data/vendor/libgit2/src/tsort.c +39 -23
- data/vendor/libgit2/src/unix/map.c +1 -1
- data/vendor/libgit2/src/unix/posix.h +12 -2
- data/vendor/libgit2/src/unix/realpath.c +30 -0
- data/vendor/libgit2/src/util.c +250 -13
- data/vendor/libgit2/src/util.h +71 -14
- data/vendor/libgit2/src/vector.c +123 -60
- data/vendor/libgit2/src/vector.h +24 -22
- data/vendor/libgit2/src/win32/dir.c +1 -1
- data/vendor/libgit2/src/win32/dir.h +1 -1
- data/vendor/libgit2/src/win32/error.c +77 -0
- data/vendor/libgit2/src/win32/error.h +13 -0
- data/vendor/libgit2/src/win32/findfile.c +143 -54
- data/vendor/libgit2/src/win32/findfile.h +10 -6
- data/vendor/libgit2/src/win32/map.c +1 -1
- data/vendor/libgit2/src/win32/mingw-compat.h +1 -1
- data/vendor/libgit2/src/win32/msvc-compat.h +10 -1
- data/vendor/libgit2/src/win32/posix.h +10 -1
- data/vendor/libgit2/src/win32/posix_w32.c +132 -63
- data/vendor/libgit2/src/win32/precompiled.c +1 -1
- data/vendor/libgit2/src/win32/pthread.c +1 -1
- data/vendor/libgit2/src/win32/pthread.h +1 -1
- data/vendor/libgit2/src/win32/utf-conv.c +5 -5
- data/vendor/libgit2/src/win32/utf-conv.h +3 -3
- data/vendor/libgit2/src/win32/version.h +20 -0
- metadata +308 -252
- data/test/fixtures/testrepo.git/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 +0 -0
- data/test/fixtures/testrepo.git/objects/7f/043268ea43ce18e3540acaabf9e090c91965b0 +0 -0
- data/test/fixtures/testrepo.git/objects/a3/e05719b428a2d0ed7a55c4ce53dcc5768c6d5e +0 -0
- data/test/index_test.rb~ +0 -218
- data/vendor/libgit2/src/pkt.h +0 -91
- data/vendor/libgit2/src/ppc/sha1.c +0 -70
- data/vendor/libgit2/src/ppc/sha1.h +0 -26
- data/vendor/libgit2/src/protocol.c +0 -110
- data/vendor/libgit2/src/protocol.h +0 -21
- data/vendor/libgit2/src/sha1.h +0 -33
- data/vendor/libgit2/src/transport.h +0 -148
data/ext/rugged/rugged_revwalk.c
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* The MIT License
|
|
3
3
|
*
|
|
4
|
-
* Copyright (c)
|
|
4
|
+
* Copyright (c) 2013 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
|
|
@@ -135,10 +135,12 @@ static VALUE rb_git_walker_push(VALUE self, VALUE rb_commit)
|
|
|
135
135
|
|
|
136
136
|
Data_Get_Struct(self, git_revwalk, walk);
|
|
137
137
|
|
|
138
|
-
commit = (git_commit *)
|
|
138
|
+
commit = (git_commit *)rugged_object_get(
|
|
139
139
|
git_revwalk_repository(walk), rb_commit, GIT_OBJ_COMMIT);
|
|
140
140
|
|
|
141
141
|
git_revwalk_push(walk, git_object_id((git_object *)commit));
|
|
142
|
+
|
|
143
|
+
git_commit_free(commit);
|
|
142
144
|
return Qnil;
|
|
143
145
|
}
|
|
144
146
|
|
|
@@ -154,10 +156,12 @@ static VALUE rb_git_walker_hide(VALUE self, VALUE rb_commit)
|
|
|
154
156
|
|
|
155
157
|
Data_Get_Struct(self, git_revwalk, walk);
|
|
156
158
|
|
|
157
|
-
commit = (git_commit *)
|
|
159
|
+
commit = (git_commit *)rugged_object_get(
|
|
158
160
|
git_revwalk_repository(walk), rb_commit, GIT_OBJ_COMMIT);
|
|
159
161
|
|
|
160
162
|
git_revwalk_hide(walk, git_object_id((git_object *)commit));
|
|
163
|
+
|
|
164
|
+
git_commit_free(commit);
|
|
161
165
|
return Qnil;
|
|
162
166
|
}
|
|
163
167
|
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The MIT License
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2013 GitHub, Inc
|
|
5
|
+
*
|
|
6
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
* in the Software without restriction, including without limitation the rights
|
|
9
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
* furnished to do so, subject to the following conditions:
|
|
12
|
+
*
|
|
13
|
+
* The above copyright notice and this permission notice shall be included in
|
|
14
|
+
* all copies or substantial portions of the Software.
|
|
15
|
+
*
|
|
16
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
22
|
+
* THE SOFTWARE.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
#include "rugged.h"
|
|
26
|
+
|
|
27
|
+
#if !defined(NUM2SIZET)
|
|
28
|
+
# if SIZEOF_SIZE_T == SIZEOF_LONG
|
|
29
|
+
# define NUM2SIZET(n) ((size_t)NUM2ULONG(n))
|
|
30
|
+
# define SIZET2NUM(n) ((size_t)ULONG2NUM(n))
|
|
31
|
+
# else
|
|
32
|
+
# define NUM2SIZET(n) ((size_t)NUM2ULL(n))
|
|
33
|
+
# define SIZET2NUM(n) ((size_t)ULL2NUM(n))
|
|
34
|
+
# endif
|
|
35
|
+
#endif /* ! defined(NUM2SIZET) */
|
|
36
|
+
|
|
37
|
+
extern VALUE rb_mRugged;
|
|
38
|
+
|
|
39
|
+
/*
|
|
40
|
+
* call-seq:
|
|
41
|
+
* Rugged.Settings[option] = value
|
|
42
|
+
*
|
|
43
|
+
* Sets a libgit2 library option
|
|
44
|
+
*
|
|
45
|
+
*/
|
|
46
|
+
static VALUE rb_git_set_option(VALUE self, VALUE option, VALUE value)
|
|
47
|
+
{
|
|
48
|
+
const char *opt;
|
|
49
|
+
|
|
50
|
+
Check_Type(option, T_STRING);
|
|
51
|
+
opt = StringValueCStr(option);
|
|
52
|
+
|
|
53
|
+
if (strcmp(opt, "mwindow_size") == 0) {
|
|
54
|
+
size_t val;
|
|
55
|
+
Check_Type(value, T_FIXNUM);
|
|
56
|
+
val = NUM2SIZET(value);
|
|
57
|
+
git_libgit2_opts(GIT_OPT_SET_MWINDOW_SIZE, val);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
else if (strcmp(opt, "mwindow_mapped_limit") == 0) {
|
|
61
|
+
size_t val;
|
|
62
|
+
Check_Type(value, T_FIXNUM);
|
|
63
|
+
val = NUM2SIZET(value);
|
|
64
|
+
git_libgit2_opts(GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, val);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
else {
|
|
68
|
+
rb_raise(rb_eArgError, "Unknown option specified");
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return Qnil;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/*
|
|
75
|
+
* call-seq:
|
|
76
|
+
* val = Rugged.Settings[option]
|
|
77
|
+
*
|
|
78
|
+
* Gets the value of a libgit2 library option
|
|
79
|
+
*
|
|
80
|
+
*/
|
|
81
|
+
static VALUE rb_git_get_option(VALUE self, VALUE option)
|
|
82
|
+
{
|
|
83
|
+
const char *opt;
|
|
84
|
+
|
|
85
|
+
Check_Type(option, T_STRING);
|
|
86
|
+
opt = StringValueCStr(option);
|
|
87
|
+
|
|
88
|
+
if (strcmp(opt, "mwindow_size") == 0) {
|
|
89
|
+
size_t val;
|
|
90
|
+
git_libgit2_opts(GIT_OPT_GET_MWINDOW_SIZE, &val);
|
|
91
|
+
return SIZET2NUM(val);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
else if (strcmp(opt, "mwindow_mapped_limit") == 0) {
|
|
95
|
+
size_t val;
|
|
96
|
+
git_libgit2_opts(GIT_OPT_GET_MWINDOW_MAPPED_LIMIT, &val);
|
|
97
|
+
return SIZET2NUM(val);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
else {
|
|
101
|
+
rb_raise(rb_eArgError, "Unknown option specified");
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
void Init_rugged_settings()
|
|
106
|
+
{
|
|
107
|
+
VALUE rb_cRuggedSettings = rb_define_class_under(rb_mRugged, "Settings", rb_cObject);
|
|
108
|
+
rb_define_module_function(rb_cRuggedSettings, "[]=", rb_git_set_option, 2);
|
|
109
|
+
rb_define_module_function(rb_cRuggedSettings, "[]", rb_git_get_option, 1);
|
|
110
|
+
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* The MIT License
|
|
3
3
|
*
|
|
4
|
-
* Copyright (c)
|
|
5
|
-
*
|
|
4
|
+
* Copyright (c) 2013 GitHub, Inc
|
|
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
|
|
@@ -37,8 +37,17 @@ VALUE rugged_signature_new(const git_signature *sig, const char *encoding_name)
|
|
|
37
37
|
|
|
38
38
|
rb_sig = rb_hash_new();
|
|
39
39
|
|
|
40
|
+
#if RUBY_API_VERSION_MINOR >= 9
|
|
41
|
+
/* Allocate the time with a the given timezone */
|
|
42
|
+
rb_time = rb_funcall(
|
|
43
|
+
rb_time_new(sig->when.time, 0),
|
|
44
|
+
rb_intern("getlocal"), 1,
|
|
45
|
+
INT2FIX(sig->when.offset * 60)
|
|
46
|
+
);
|
|
47
|
+
#else
|
|
40
48
|
rb_time = rb_time_new(sig->when.time, 0);
|
|
41
|
-
|
|
49
|
+
rb_hash_aset(rb_sig, CSTR2SYM("time_offset"), INT2FIX(sig->when.offset * 60));
|
|
50
|
+
#endif
|
|
42
51
|
|
|
43
52
|
rb_hash_aset(rb_sig, CSTR2SYM("name"), rugged_str_new2(sig->name, encoding));
|
|
44
53
|
rb_hash_aset(rb_sig, CSTR2SYM("email"), rugged_str_new2(sig->email, encoding));
|
|
@@ -50,7 +59,7 @@ VALUE rugged_signature_new(const git_signature *sig, const char *encoding_name)
|
|
|
50
59
|
git_signature *rugged_signature_get(VALUE rb_sig)
|
|
51
60
|
{
|
|
52
61
|
int error;
|
|
53
|
-
VALUE rb_time, rb_unix_t, rb_offset, rb_name, rb_email;
|
|
62
|
+
VALUE rb_time, rb_unix_t, rb_offset, rb_name, rb_email, rb_time_offset;
|
|
54
63
|
git_signature *sig;
|
|
55
64
|
|
|
56
65
|
Check_Type(rb_sig, T_HASH);
|
|
@@ -58,6 +67,7 @@ git_signature *rugged_signature_get(VALUE rb_sig)
|
|
|
58
67
|
rb_name = rb_hash_aref(rb_sig, CSTR2SYM("name"));
|
|
59
68
|
rb_email = rb_hash_aref(rb_sig, CSTR2SYM("email"));
|
|
60
69
|
rb_time = rb_hash_aref(rb_sig, CSTR2SYM("time"));
|
|
70
|
+
rb_time_offset = rb_hash_aref(rb_sig, CSTR2SYM("time_offset"));
|
|
61
71
|
|
|
62
72
|
Check_Type(rb_name, T_STRING);
|
|
63
73
|
Check_Type(rb_email, T_STRING);
|
|
@@ -65,7 +75,13 @@ git_signature *rugged_signature_get(VALUE rb_sig)
|
|
|
65
75
|
rb_raise(rb_eTypeError, "expected Time object");
|
|
66
76
|
|
|
67
77
|
rb_unix_t = rb_funcall(rb_time, rb_intern("tv_sec"), 0);
|
|
68
|
-
|
|
78
|
+
|
|
79
|
+
if (NIL_P(rb_time_offset)) {
|
|
80
|
+
rb_offset = rb_funcall(rb_time, rb_intern("utc_offset"), 0);
|
|
81
|
+
} else {
|
|
82
|
+
Check_Type(rb_time_offset, T_FIXNUM);
|
|
83
|
+
rb_offset = rb_time_offset;
|
|
84
|
+
}
|
|
69
85
|
|
|
70
86
|
error = git_signature_new(&sig,
|
|
71
87
|
StringValueCStr(rb_name),
|
data/ext/rugged/rugged_tag.c
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* The MIT License
|
|
3
3
|
*
|
|
4
|
-
* Copyright (c)
|
|
4
|
+
* Copyright (c) 2013 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
|
|
@@ -57,20 +57,21 @@ static VALUE rb_git_tag_target_GET(VALUE self)
|
|
|
57
57
|
/*
|
|
58
58
|
* call-seq:
|
|
59
59
|
* tag.target_oid -> oid
|
|
60
|
+
* tag.target_id -> oid
|
|
60
61
|
*
|
|
61
62
|
* Return the oid pointed at by this tag, as a <tt>String</tt>
|
|
62
63
|
* instance.
|
|
63
64
|
*
|
|
64
|
-
* tag.
|
|
65
|
+
* tag.target_id #=> "2cb831a8aea28b2c1b9c63385585b864e4d3bad1"
|
|
65
66
|
*/
|
|
66
|
-
static VALUE
|
|
67
|
+
static VALUE rb_git_tag_target_id_GET(VALUE self)
|
|
67
68
|
{
|
|
68
69
|
git_tag *tag;
|
|
69
70
|
const git_oid *target_oid;
|
|
70
71
|
|
|
71
72
|
Data_Get_Struct(self, git_tag, tag);
|
|
72
73
|
|
|
73
|
-
target_oid =
|
|
74
|
+
target_oid = git_tag_target_id(tag);
|
|
74
75
|
|
|
75
76
|
return rugged_create_oid(target_oid);
|
|
76
77
|
}
|
|
@@ -92,7 +93,7 @@ static VALUE rb_git_tag_target_type_GET(VALUE self)
|
|
|
92
93
|
git_tag *tag;
|
|
93
94
|
Data_Get_Struct(self, git_tag, tag);
|
|
94
95
|
|
|
95
|
-
return rugged_otype_new(
|
|
96
|
+
return rugged_otype_new(git_tag_target_type(tag));
|
|
96
97
|
}
|
|
97
98
|
|
|
98
99
|
/*
|
|
@@ -124,9 +125,15 @@ static VALUE rb_git_tag_name_GET(VALUE self)
|
|
|
124
125
|
static VALUE rb_git_tag_tagger_GET(VALUE self)
|
|
125
126
|
{
|
|
126
127
|
git_tag *tag;
|
|
128
|
+
const git_signature *tagger;
|
|
129
|
+
|
|
127
130
|
Data_Get_Struct(self, git_tag, tag);
|
|
131
|
+
tagger = git_tag_tagger(tag);
|
|
132
|
+
|
|
133
|
+
if (!tagger)
|
|
134
|
+
return Qnil;
|
|
128
135
|
|
|
129
|
-
return rugged_signature_new(
|
|
136
|
+
return rugged_signature_new(tagger, NULL);
|
|
130
137
|
}
|
|
131
138
|
|
|
132
139
|
/*
|
|
@@ -141,9 +148,15 @@ static VALUE rb_git_tag_tagger_GET(VALUE self)
|
|
|
141
148
|
static VALUE rb_git_tag_message_GET(VALUE self)
|
|
142
149
|
{
|
|
143
150
|
git_tag *tag;
|
|
151
|
+
const char *message;
|
|
152
|
+
|
|
144
153
|
Data_Get_Struct(self, git_tag, tag);
|
|
154
|
+
message = git_tag_message(tag);
|
|
155
|
+
|
|
156
|
+
if (!message)
|
|
157
|
+
return Qnil;
|
|
145
158
|
|
|
146
|
-
return rugged_str_new2(
|
|
159
|
+
return rugged_str_new2(message, NULL);
|
|
147
160
|
}
|
|
148
161
|
|
|
149
162
|
static VALUE rb_git_tag_create(VALUE self, VALUE rb_repo, VALUE rb_data)
|
|
@@ -155,7 +168,7 @@ static VALUE rb_git_tag_create(VALUE self, VALUE rb_repo, VALUE rb_data)
|
|
|
155
168
|
VALUE rb_name, rb_target, rb_tagger, rb_message, rb_force;
|
|
156
169
|
|
|
157
170
|
if (!rb_obj_is_kind_of(rb_repo, rb_cRuggedRepo))
|
|
158
|
-
rb_raise(rb_eTypeError, "
|
|
171
|
+
rb_raise(rb_eTypeError, "Expecting a Rugged::Repository instance");
|
|
159
172
|
|
|
160
173
|
Data_Get_Struct(rb_repo, git_repository, repo);
|
|
161
174
|
|
|
@@ -172,22 +185,24 @@ static VALUE rb_git_tag_create(VALUE self, VALUE rb_repo, VALUE rb_data)
|
|
|
172
185
|
rb_name = rb_hash_aref(rb_data, CSTR2SYM("name"));
|
|
173
186
|
Check_Type(rb_name, T_STRING);
|
|
174
187
|
|
|
175
|
-
rb_target = rb_hash_aref(rb_data, CSTR2SYM("target"));
|
|
176
|
-
target = rugged_object_load(repo, rb_target, GIT_OBJ_ANY);
|
|
177
|
-
|
|
178
188
|
rb_force = rb_hash_aref(rb_data, CSTR2SYM("force"));
|
|
179
189
|
if (!NIL_P(rb_force))
|
|
180
190
|
force = rugged_parse_bool(rb_force);
|
|
181
191
|
|
|
182
192
|
/* only for heavy tags */
|
|
183
|
-
rb_message = rb_hash_aref(rb_data, CSTR2SYM("message"));
|
|
184
193
|
rb_tagger = rb_hash_aref(rb_data, CSTR2SYM("tagger"));
|
|
194
|
+
rb_message = rb_hash_aref(rb_data, CSTR2SYM("message"));
|
|
195
|
+
|
|
196
|
+
if (!NIL_P(rb_message))
|
|
197
|
+
Check_Type(rb_message, T_STRING);
|
|
198
|
+
|
|
199
|
+
rb_target = rb_hash_aref(rb_data, CSTR2SYM("target"));
|
|
200
|
+
target = rugged_object_get(repo, rb_target, GIT_OBJ_ANY);
|
|
185
201
|
|
|
186
202
|
if (!NIL_P(rb_tagger) && !NIL_P(rb_message)) {
|
|
187
203
|
git_signature *tagger = NULL;
|
|
188
204
|
|
|
189
205
|
tagger = rugged_signature_get(rb_tagger);
|
|
190
|
-
Check_Type(rb_message, T_STRING);
|
|
191
206
|
|
|
192
207
|
error = git_tag_create(
|
|
193
208
|
&tag_oid,
|
|
@@ -239,7 +254,7 @@ static VALUE rb_git_tag_each(int argc, VALUE *argv, VALUE self)
|
|
|
239
254
|
}
|
|
240
255
|
|
|
241
256
|
if (!rb_obj_is_kind_of(rb_repo, rb_cRuggedRepo))
|
|
242
|
-
rb_raise(rb_eTypeError, "
|
|
257
|
+
rb_raise(rb_eTypeError, "Expecting a Rugged::Repository instance");
|
|
243
258
|
|
|
244
259
|
Data_Get_Struct(rb_repo, git_repository, repo);
|
|
245
260
|
|
|
@@ -259,7 +274,7 @@ static VALUE rb_git_tag_delete(VALUE self, VALUE rb_repo, VALUE rb_name)
|
|
|
259
274
|
int error;
|
|
260
275
|
|
|
261
276
|
if (!rb_obj_is_kind_of(rb_repo, rb_cRuggedRepo))
|
|
262
|
-
rb_raise(rb_eTypeError, "
|
|
277
|
+
rb_raise(rb_eTypeError, "Expecting a Rugged::Repository instance");
|
|
263
278
|
Data_Get_Struct(rb_repo, git_repository, repo);
|
|
264
279
|
|
|
265
280
|
Check_Type(rb_name, T_STRING);
|
|
@@ -280,7 +295,8 @@ void Init_rugged_tag()
|
|
|
280
295
|
rb_define_method(rb_cRuggedTag, "message", rb_git_tag_message_GET, 0);
|
|
281
296
|
rb_define_method(rb_cRuggedTag, "name", rb_git_tag_name_GET, 0);
|
|
282
297
|
rb_define_method(rb_cRuggedTag, "target", rb_git_tag_target_GET, 0);
|
|
283
|
-
rb_define_method(rb_cRuggedTag, "target_oid",
|
|
298
|
+
rb_define_method(rb_cRuggedTag, "target_oid", rb_git_tag_target_id_GET, 0);
|
|
299
|
+
rb_define_method(rb_cRuggedTag, "target_id", rb_git_tag_target_id_GET, 0);
|
|
284
300
|
rb_define_method(rb_cRuggedTag, "target_type", rb_git_tag_target_type_GET, 0);
|
|
285
301
|
rb_define_method(rb_cRuggedTag, "tagger", rb_git_tag_tagger_GET, 0);
|
|
286
302
|
}
|
data/ext/rugged/rugged_tree.c
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* The MIT License
|
|
3
3
|
*
|
|
4
|
-
* Copyright (c)
|
|
4
|
+
* Copyright (c) 2013 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
|
|
@@ -67,6 +67,7 @@ static VALUE rb_git_treeentry_fromC(const git_tree_entry *entry)
|
|
|
67
67
|
/*
|
|
68
68
|
* Rugged Tree
|
|
69
69
|
*/
|
|
70
|
+
|
|
70
71
|
/*
|
|
71
72
|
* call-seq:
|
|
72
73
|
* tree.count -> count
|
|
@@ -117,6 +118,33 @@ static VALUE rb_git_tree_get_entry(VALUE self, VALUE entry_id)
|
|
|
117
118
|
rb_raise(rb_eTypeError, "entry_id must be either an index or a filename");
|
|
118
119
|
}
|
|
119
120
|
|
|
121
|
+
/*
|
|
122
|
+
* call-seq:
|
|
123
|
+
* tree.get_entry_by_oid(rb_oid) -> entry
|
|
124
|
+
*
|
|
125
|
+
* Return one of the entries from a tree as a +Hash+, based off the oid SHA.
|
|
126
|
+
*
|
|
127
|
+
* If the entry doesn't exist, +nil+ will be returned.
|
|
128
|
+
*
|
|
129
|
+
* This does a full traversal of the every element in the tree, so this method
|
|
130
|
+
* is not especially fast.
|
|
131
|
+
*
|
|
132
|
+
* tree.get_entry_by_oid("d8786bfc97485e8d7b19b21fb88c8ef1f199fc3f")
|
|
133
|
+
* #=> {:name => "foo.txt", :type => :blob, :oid => "d8786bfc97485e8d7b19b21fb88c8ef1f199fc3f", :filemode => 0}
|
|
134
|
+
*
|
|
135
|
+
*/
|
|
136
|
+
static VALUE rb_git_tree_get_entry_by_oid(VALUE self, VALUE rb_oid)
|
|
137
|
+
{
|
|
138
|
+
git_tree *tree;
|
|
139
|
+
git_oid oid;
|
|
140
|
+
Data_Get_Struct(self, git_tree, tree);
|
|
141
|
+
|
|
142
|
+
Check_Type(rb_oid, T_STRING);
|
|
143
|
+
rugged_exception_check(git_oid_fromstr(&oid, StringValueCStr(rb_oid)));
|
|
144
|
+
|
|
145
|
+
return rb_git_treeentry_fromC(git_tree_entry_byoid(tree, &oid));
|
|
146
|
+
}
|
|
147
|
+
|
|
120
148
|
/*
|
|
121
149
|
* call-seq:
|
|
122
150
|
* tree.each { |entry| block }
|
|
@@ -139,7 +167,7 @@ static VALUE rb_git_tree_get_entry(VALUE self, VALUE entry_id)
|
|
|
139
167
|
static VALUE rb_git_tree_each(VALUE self)
|
|
140
168
|
{
|
|
141
169
|
git_tree *tree;
|
|
142
|
-
|
|
170
|
+
size_t i, count;
|
|
143
171
|
Data_Get_Struct(self, git_tree, tree);
|
|
144
172
|
|
|
145
173
|
if (!rb_block_given_p())
|
|
@@ -206,9 +234,9 @@ static VALUE rb_git_tree_walk(VALUE self, VALUE rb_mode)
|
|
|
206
234
|
mode = GIT_TREEWALK_POST;
|
|
207
235
|
else
|
|
208
236
|
rb_raise(rb_eTypeError,
|
|
209
|
-
|
|
237
|
+
"Invalid iteration mode. Expected `:preorder` or `:postorder`");
|
|
210
238
|
|
|
211
|
-
error = git_tree_walk(tree, &rugged__treewalk_cb,
|
|
239
|
+
error = git_tree_walk(tree, mode, &rugged__treewalk_cb, (void *)rb_block_proc());
|
|
212
240
|
rugged_exception_check(error);
|
|
213
241
|
|
|
214
242
|
return Qnil;
|
|
@@ -216,20 +244,20 @@ static VALUE rb_git_tree_walk(VALUE self, VALUE rb_mode)
|
|
|
216
244
|
|
|
217
245
|
static VALUE rb_git_tree_path(VALUE self, VALUE rb_path)
|
|
218
246
|
{
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
247
|
+
int error;
|
|
248
|
+
git_tree *tree;
|
|
249
|
+
git_tree_entry *entry;
|
|
250
|
+
VALUE rb_entry;
|
|
251
|
+
Data_Get_Struct(self, git_tree, tree);
|
|
252
|
+
Check_Type(rb_path, T_STRING);
|
|
225
253
|
|
|
226
|
-
|
|
227
|
-
|
|
254
|
+
error = git_tree_entry_bypath(&entry, tree, StringValueCStr(rb_path));
|
|
255
|
+
rugged_exception_check(error);
|
|
228
256
|
|
|
229
|
-
|
|
230
|
-
|
|
257
|
+
rb_entry = rb_git_treeentry_fromC(entry);
|
|
258
|
+
git_tree_entry_free(entry);
|
|
231
259
|
|
|
232
|
-
|
|
260
|
+
return rb_entry;
|
|
233
261
|
}
|
|
234
262
|
|
|
235
263
|
static void rb_git_treebuilder_free(git_treebuilder *bld)
|
|
@@ -373,6 +401,7 @@ void Init_rugged_tree()
|
|
|
373
401
|
rb_define_method(rb_cRuggedTree, "count", rb_git_tree_entrycount, 0);
|
|
374
402
|
rb_define_method(rb_cRuggedTree, "length", rb_git_tree_entrycount, 0);
|
|
375
403
|
rb_define_method(rb_cRuggedTree, "get_entry", rb_git_tree_get_entry, 1);
|
|
404
|
+
rb_define_method(rb_cRuggedTree, "get_entry_by_oid", rb_git_tree_get_entry_by_oid, 1);
|
|
376
405
|
rb_define_method(rb_cRuggedTree, "path", rb_git_tree_path, 1);
|
|
377
406
|
rb_define_method(rb_cRuggedTree, "[]", rb_git_tree_get_entry, 1);
|
|
378
407
|
rb_define_method(rb_cRuggedTree, "each", rb_git_tree_each, 0);
|