rugged 0.18.0.gh.de28323 → 0.19.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.
- data/README.md +9 -4
- data/Rakefile +1 -1
- data/ext/rugged/extconf.rb +10 -0
- data/ext/rugged/rugged.c +153 -86
- data/ext/rugged/rugged.h +44 -33
- data/ext/rugged/rugged_blob.c +288 -60
- data/ext/rugged/rugged_branch.c +82 -57
- data/ext/rugged/rugged_commit.c +83 -86
- data/ext/rugged/rugged_config.c +68 -68
- data/ext/rugged/rugged_diff.c +509 -0
- data/ext/rugged/rugged_diff_delta.c +94 -0
- data/ext/rugged/rugged_diff_hunk.c +100 -0
- data/ext/rugged/rugged_diff_line.c +79 -0
- data/ext/rugged/rugged_diff_patch.c +169 -0
- data/ext/rugged/rugged_index.c +539 -8
- data/ext/rugged/rugged_note.c +74 -80
- data/ext/rugged/rugged_object.c +63 -8
- data/ext/rugged/rugged_reference.c +231 -145
- data/ext/rugged/rugged_remote.c +509 -53
- data/ext/rugged/rugged_repo.c +572 -236
- data/ext/rugged/rugged_revwalk.c +59 -36
- data/ext/rugged/rugged_settings.c +7 -9
- data/ext/rugged/rugged_signature.c +7 -11
- data/ext/rugged/rugged_tag.c +93 -39
- data/ext/rugged/rugged_tree.c +321 -58
- data/lib/rugged.rb +1 -0
- data/lib/rugged/commit.rb +16 -1
- data/lib/rugged/console.rb +9 -0
- data/lib/rugged/diff.rb +19 -0
- data/lib/rugged/diff/delta.rb +54 -0
- data/lib/rugged/diff/hunk.rb +23 -0
- data/lib/rugged/diff/line.rb +29 -0
- data/lib/rugged/diff/patch.rb +28 -0
- data/lib/rugged/repository.rb +36 -39
- data/lib/rugged/version.rb +1 -1
- data/test/blob_test.rb +308 -1
- data/test/branch_test.rb +7 -0
- data/test/commit_test.rb +7 -10
- data/test/coverage/cover.rb +9 -1
- data/test/diff_test.rb +777 -0
- data/test/fixtures/archive.tar.gz +0 -0
- data/test/fixtures/attr/attr0 +1 -0
- data/test/fixtures/attr/attr1 +29 -0
- data/test/fixtures/attr/attr2 +21 -0
- data/test/fixtures/attr/attr3 +4 -0
- data/test/fixtures/attr/binfile +1 -0
- data/test/fixtures/attr/dir/file +0 -0
- data/test/fixtures/attr/file +1 -0
- data/test/fixtures/attr/gitattributes +29 -0
- data/test/fixtures/attr/gitignore +2 -0
- data/test/fixtures/attr/ign +1 -0
- data/test/fixtures/attr/macro_bad +1 -0
- data/test/fixtures/attr/macro_test +1 -0
- data/test/fixtures/attr/root_test1 +1 -0
- data/test/fixtures/attr/root_test2 +6 -0
- data/test/fixtures/attr/root_test3 +19 -0
- data/test/fixtures/attr/root_test4.txt +14 -0
- data/test/fixtures/attr/sub/abc +37 -0
- data/test/fixtures/attr/sub/dir/file +0 -0
- data/test/fixtures/attr/sub/file +1 -0
- data/test/fixtures/attr/sub/ign/file +1 -0
- data/test/fixtures/attr/sub/ign/sub/file +1 -0
- data/test/fixtures/attr/sub/sub/dir +0 -0
- data/test/fixtures/attr/sub/sub/file +1 -0
- data/test/fixtures/attr/sub/sub/subsub.txt +1 -0
- data/test/fixtures/attr/sub/subdir_test1 +2 -0
- data/test/fixtures/attr/sub/subdir_test2.txt +1 -0
- data/test/fixtures/diff/another.txt +38 -0
- data/test/fixtures/diff/readme.txt +36 -0
- data/test/fixtures/mergedrepo/conflicts-one.txt +5 -0
- data/test/fixtures/mergedrepo/conflicts-two.txt +5 -0
- data/test/fixtures/mergedrepo/one.txt +10 -0
- data/test/fixtures/mergedrepo/two.txt +12 -0
- data/test/fixtures/status/current_file +1 -0
- data/test/fixtures/status/ignored_file +1 -0
- data/test/fixtures/status/modified_file +2 -0
- data/test/fixtures/status/new_file +1 -0
- data/test/fixtures/status/staged_changes +2 -0
- data/test/fixtures/status/staged_changes_modified_file +3 -0
- data/test/fixtures/status/staged_delete_modified_file +1 -0
- data/test/fixtures/status/staged_new_file +1 -0
- data/test/fixtures/status/staged_new_file_modified_file +2 -0
- data/test/fixtures/status/subdir.txt +2 -0
- data/test/fixtures/status/subdir/current_file +1 -0
- data/test/fixtures/status/subdir/modified_file +2 -0
- data/test/fixtures/status/subdir/new_file +1 -0
- data/test/fixtures/status//350/277/231 +1 -0
- data/test/fixtures/testrepo.git/config +5 -0
- data/test/fixtures/testrepo.git/objects/77/71329dfa3002caf8c61a0ceb62a31d09023f37 +0 -0
- data/test/fixtures/text_file.md +464 -0
- data/test/fixtures/unsymlinked.git/HEAD +1 -0
- data/test/fixtures/unsymlinked.git/config +6 -0
- data/test/fixtures/unsymlinked.git/description +1 -0
- data/test/fixtures/unsymlinked.git/info/exclude +2 -0
- 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 +2 -0
- 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 +1 -0
- data/test/fixtures/unsymlinked.git/refs/heads/master +1 -0
- data/test/fixtures/unsymlinked.git/refs/heads/reg-file +1 -0
- data/test/index_test.rb +120 -0
- data/test/reference_test.rb +38 -3
- data/test/remote_test.rb +224 -3
- data/test/repo_reset_test.rb +2 -0
- data/test/repo_test.rb +147 -10
- data/test/test_helper.rb +5 -2
- data/vendor/libgit2/include/git2/attr.h +3 -3
- data/vendor/libgit2/include/git2/blob.h +11 -17
- data/vendor/libgit2/include/git2/branch.h +3 -2
- data/vendor/libgit2/include/git2/checkout.h +7 -0
- data/vendor/libgit2/include/git2/clone.h +3 -0
- data/vendor/libgit2/include/git2/commit.h +61 -66
- data/vendor/libgit2/include/git2/common.h +73 -42
- data/vendor/libgit2/include/git2/config.h +57 -71
- data/vendor/libgit2/include/git2/cred_helpers.h +2 -2
- data/vendor/libgit2/include/git2/diff.h +179 -30
- data/vendor/libgit2/include/git2/errors.h +3 -3
- data/vendor/libgit2/include/git2/index.h +225 -146
- data/vendor/libgit2/include/git2/indexer.h +2 -22
- data/vendor/libgit2/include/git2/inttypes.h +9 -9
- data/vendor/libgit2/include/git2/merge.h +123 -5
- data/vendor/libgit2/include/git2/odb.h +59 -38
- data/vendor/libgit2/include/git2/odb_backend.h +45 -104
- data/vendor/libgit2/include/git2/oid.h +30 -19
- data/vendor/libgit2/include/git2/pack.h +21 -3
- data/vendor/libgit2/include/git2/refdb.h +0 -35
- data/vendor/libgit2/include/git2/refs.h +93 -31
- data/vendor/libgit2/include/git2/refspec.h +17 -0
- data/vendor/libgit2/include/git2/remote.h +60 -20
- data/vendor/libgit2/include/git2/repository.h +48 -70
- data/vendor/libgit2/include/git2/reset.h +3 -3
- data/vendor/libgit2/include/git2/revparse.h +22 -0
- data/vendor/libgit2/include/git2/stash.h +1 -1
- data/vendor/libgit2/include/git2/status.h +131 -56
- data/vendor/libgit2/include/git2/strarray.h +2 -2
- data/vendor/libgit2/include/git2/submodule.h +16 -16
- data/vendor/libgit2/include/git2/sys/commit.h +46 -0
- data/vendor/libgit2/include/git2/sys/config.h +71 -0
- data/vendor/libgit2/include/git2/sys/index.h +179 -0
- data/vendor/libgit2/include/git2/sys/odb_backend.h +86 -0
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +158 -0
- data/vendor/libgit2/include/git2/sys/refs.h +38 -0
- data/vendor/libgit2/include/git2/sys/repository.h +106 -0
- data/vendor/libgit2/include/git2/tag.h +44 -18
- data/vendor/libgit2/include/git2/trace.h +1 -2
- data/vendor/libgit2/include/git2/transport.h +74 -0
- data/vendor/libgit2/include/git2/tree.h +12 -22
- data/vendor/libgit2/include/git2/types.h +33 -0
- data/vendor/libgit2/include/git2/version.h +2 -2
- data/vendor/libgit2/src/array.h +66 -0
- data/vendor/libgit2/src/attr.c +26 -13
- data/vendor/libgit2/src/attr_file.c +3 -2
- data/vendor/libgit2/src/attr_file.h +3 -3
- data/vendor/libgit2/src/attrcache.h +4 -4
- data/vendor/libgit2/src/blob.c +13 -9
- data/vendor/libgit2/src/blob.h +2 -2
- data/vendor/libgit2/src/branch.c +67 -49
- data/vendor/libgit2/src/cache.c +224 -54
- data/vendor/libgit2/src/cache.h +33 -20
- data/vendor/libgit2/src/checkout.c +145 -85
- data/vendor/libgit2/src/clone.c +62 -50
- data/vendor/libgit2/src/commit.c +74 -40
- data/vendor/libgit2/src/commit.h +2 -3
- data/vendor/libgit2/src/commit_list.c +14 -8
- data/vendor/libgit2/src/config.c +119 -36
- data/vendor/libgit2/src/config.h +3 -0
- data/vendor/libgit2/src/config_cache.c +24 -7
- data/vendor/libgit2/src/config_file.c +9 -6
- data/vendor/libgit2/src/crlf.c +4 -2
- data/vendor/libgit2/src/date.c +3 -3
- data/vendor/libgit2/src/delta.c +1 -1
- data/vendor/libgit2/src/diff.c +681 -303
- data/vendor/libgit2/src/diff.h +34 -2
- data/vendor/libgit2/src/diff_driver.c +405 -0
- data/vendor/libgit2/src/diff_driver.h +49 -0
- data/vendor/libgit2/src/diff_file.c +447 -0
- data/vendor/libgit2/src/diff_file.h +58 -0
- data/vendor/libgit2/src/diff_patch.c +995 -0
- data/vendor/libgit2/src/diff_patch.h +46 -0
- data/vendor/libgit2/src/diff_print.c +430 -0
- data/vendor/libgit2/src/diff_tform.c +464 -203
- data/vendor/libgit2/src/diff_xdiff.c +166 -0
- data/vendor/libgit2/src/diff_xdiff.h +28 -0
- data/vendor/libgit2/src/fetch.c +11 -4
- data/vendor/libgit2/src/fileops.c +85 -61
- data/vendor/libgit2/src/fileops.h +4 -0
- data/vendor/libgit2/src/global.c +10 -2
- data/vendor/libgit2/src/global.h +0 -8
- data/vendor/libgit2/src/hash/hash_generic.h +3 -3
- data/vendor/libgit2/src/hash/hash_win32.h +4 -4
- data/vendor/libgit2/src/hashsig.c +0 -1
- data/vendor/libgit2/src/ignore.c +68 -28
- data/vendor/libgit2/src/ignore.h +10 -1
- data/vendor/libgit2/src/index.c +666 -84
- data/vendor/libgit2/src/index.h +6 -0
- data/vendor/libgit2/src/indexer.c +10 -28
- data/vendor/libgit2/src/iterator.c +427 -283
- data/vendor/libgit2/src/iterator.h +58 -4
- data/vendor/libgit2/src/merge.c +1892 -32
- data/vendor/libgit2/src/merge.h +132 -5
- data/vendor/libgit2/src/merge_file.c +174 -0
- data/vendor/libgit2/src/merge_file.h +71 -0
- data/vendor/libgit2/src/mwindow.c +1 -1
- data/vendor/libgit2/src/notes.c +45 -48
- data/vendor/libgit2/src/object.c +89 -127
- data/vendor/libgit2/src/object.h +0 -1
- data/vendor/libgit2/src/object_api.c +129 -0
- data/vendor/libgit2/src/odb.c +156 -59
- data/vendor/libgit2/src/odb.h +5 -2
- data/vendor/libgit2/src/odb_loose.c +31 -17
- data/vendor/libgit2/src/odb_pack.c +39 -43
- data/vendor/libgit2/src/oid.c +62 -27
- data/vendor/libgit2/src/oid.h +33 -0
- data/vendor/libgit2/src/oidmap.h +4 -6
- data/vendor/libgit2/src/pack-objects.c +54 -22
- data/vendor/libgit2/src/pack.c +98 -56
- data/vendor/libgit2/src/pack.h +3 -1
- data/vendor/libgit2/src/pathspec.c +26 -1
- data/vendor/libgit2/src/pathspec.h +14 -0
- data/vendor/libgit2/src/pool.c +5 -0
- data/vendor/libgit2/src/posix.c +2 -2
- data/vendor/libgit2/src/posix.h +3 -0
- data/vendor/libgit2/src/push.c +13 -10
- data/vendor/libgit2/src/refdb.c +82 -62
- data/vendor/libgit2/src/refdb.h +16 -16
- data/vendor/libgit2/src/refdb_fs.c +386 -133
- data/vendor/libgit2/src/reflog.c +3 -1
- data/vendor/libgit2/src/refs.c +247 -221
- data/vendor/libgit2/src/refs.h +2 -1
- data/vendor/libgit2/src/refspec.c +18 -1
- data/vendor/libgit2/src/refspec.h +3 -1
- data/vendor/libgit2/src/remote.c +434 -253
- data/vendor/libgit2/src/remote.h +5 -3
- data/vendor/libgit2/src/repository.c +197 -111
- data/vendor/libgit2/src/repository.h +26 -5
- data/vendor/libgit2/src/reset.c +1 -1
- data/vendor/libgit2/src/revparse.c +84 -79
- data/vendor/libgit2/src/revwalk.c +1 -1
- data/vendor/libgit2/src/signature.c +22 -10
- data/vendor/libgit2/src/stash.c +5 -2
- data/vendor/libgit2/src/status.c +311 -107
- data/vendor/libgit2/src/status.h +23 -0
- data/vendor/libgit2/src/submodule.c +21 -13
- data/vendor/libgit2/src/tag.c +42 -31
- data/vendor/libgit2/src/tag.h +2 -3
- data/vendor/libgit2/src/thread-utils.h +105 -3
- data/vendor/libgit2/src/trace.c +1 -2
- data/vendor/libgit2/src/trace.h +3 -3
- data/vendor/libgit2/src/transport.c +18 -6
- data/vendor/libgit2/src/transports/cred.c +103 -1
- data/vendor/libgit2/src/transports/local.c +19 -9
- data/vendor/libgit2/src/transports/smart_protocol.c +32 -12
- data/vendor/libgit2/src/transports/ssh.c +519 -0
- data/vendor/libgit2/src/transports/winhttp.c +3 -1
- data/vendor/libgit2/src/tree.c +26 -28
- data/vendor/libgit2/src/tree.h +3 -3
- data/vendor/libgit2/src/unix/posix.h +2 -0
- data/vendor/libgit2/src/util.c +43 -6
- data/vendor/libgit2/src/util.h +40 -12
- data/vendor/libgit2/src/vector.c +3 -5
- data/vendor/libgit2/src/vector.h +9 -0
- data/vendor/libgit2/src/win32/dir.c +1 -1
- data/vendor/libgit2/src/win32/error.c +2 -0
- data/vendor/libgit2/src/win32/findfile.c +3 -6
- data/vendor/libgit2/src/win32/posix_w32.c +85 -59
- data/vendor/libgit2/src/win32/pthread.c +16 -8
- data/vendor/libgit2/src/win32/pthread.h +7 -4
- metadata +407 -306
- data/test/coverage/HEAD.json +0 -1
- data/vendor/libgit2/include/git2/refdb_backend.h +0 -109
- data/vendor/libgit2/src/diff_output.c +0 -1819
- data/vendor/libgit2/src/diff_output.h +0 -93
data/README.md
CHANGED
|
@@ -17,6 +17,12 @@ Rugged is a self-contained gem. You can install it by running:
|
|
|
17
17
|
|
|
18
18
|
$ gem install rugged
|
|
19
19
|
|
|
20
|
+
If you're using bundler and want to bundle libgit2 with rugged, you can use the `:submodules` option:
|
|
21
|
+
|
|
22
|
+
```ruby
|
|
23
|
+
gem 'rugged', git: 'git://github.com/libgit2/rugged.git', branch: 'development', submodules: true
|
|
24
|
+
```
|
|
25
|
+
|
|
20
26
|
To load Rugged, you'll usually want to add something like this:
|
|
21
27
|
|
|
22
28
|
```ruby
|
|
@@ -34,17 +40,16 @@ at each area individually.
|
|
|
34
40
|
#### Instantiation
|
|
35
41
|
|
|
36
42
|
The repository is naturally central to Git. Rugged has a `Repository` class that
|
|
37
|
-
you can instantiate with a path:
|
|
43
|
+
you can instantiate with a path to open an existing repository :
|
|
38
44
|
|
|
39
45
|
```ruby
|
|
40
46
|
repo = Rugged::Repository.new('path/to/my/repository')
|
|
41
47
|
# => #<Rugged::Repository:2228536260 {path: "path/to/my/repository/.git/"}>
|
|
42
48
|
```
|
|
43
49
|
|
|
44
|
-
|
|
50
|
+
You can create a new repository with `init_at`. Add a second parameter `:bare` to make a bare repository:
|
|
45
51
|
|
|
46
52
|
```ruby
|
|
47
|
-
# Second parameter indicates whether the repo is a bare repository
|
|
48
53
|
Rugged::Repository.init_at('.', :bare)
|
|
49
54
|
```
|
|
50
55
|
|
|
@@ -171,7 +176,7 @@ commit.tree
|
|
|
171
176
|
# => #<Rugged::Tree:2245269740>
|
|
172
177
|
|
|
173
178
|
commit.parents
|
|
174
|
-
=> [#<Rugged::Commit:2245264600 {message: "Merge pull request #47 from isaac/remotes\n\nAdd Rugged::Repository#remotes", tree: #<Rugged::Tree:2245264240 {oid: 6a2aee58a41fa007d07aa55565e2231f9b39b4a9}>
|
|
179
|
+
# => [#<Rugged::Commit:2245264600 {message: "Merge pull request #47 from isaac/remotes\n\nAdd Rugged::Repository#remotes", tree: #<Rugged::Tree:2245264240 {oid: 6a2aee58a41fa007d07aa55565e2231f9b39b4a9}>]
|
|
175
180
|
```
|
|
176
181
|
|
|
177
182
|
You can also write new objects to the database this way:
|
data/Rakefile
CHANGED
data/ext/rugged/extconf.rb
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
require 'mkmf'
|
|
2
2
|
|
|
3
|
+
RbConfig::MAKEFILE_CONFIG['CC'] = ENV['CC'] if ENV['CC']
|
|
4
|
+
|
|
5
|
+
$CFLAGS << " #{ENV["CFLAGS"]}"
|
|
6
|
+
$CFLAGS << " -g"
|
|
7
|
+
|
|
8
|
+
if RbConfig::MAKEFILE_CONFIG['CC'] =~ /gcc|clang/
|
|
9
|
+
$CFLAGS << " -O3" unless $CFLAGS[/-O\d/]
|
|
10
|
+
$CFLAGS << " -Wall"
|
|
11
|
+
end
|
|
12
|
+
|
|
3
13
|
def sys(cmd)
|
|
4
14
|
puts " -- #{cmd}"
|
|
5
15
|
unless ret = xsystem(cmd)
|
data/ext/rugged/rugged.c
CHANGED
|
@@ -25,21 +25,28 @@
|
|
|
25
25
|
#include "rugged.h"
|
|
26
26
|
|
|
27
27
|
const char *RUGGED_ERROR_NAMES[] = {
|
|
28
|
-
"NoMemError",
|
|
29
|
-
"OSError",
|
|
30
|
-
"InvalidError",
|
|
31
|
-
"ReferenceError",
|
|
32
|
-
"ZlibError",
|
|
28
|
+
"NoMemError", /* GITERR_NOMEMORY, */
|
|
29
|
+
"OSError", /* GITERR_OS, */
|
|
30
|
+
"InvalidError", /* GITERR_INVALID, */
|
|
31
|
+
"ReferenceError", /* GITERR_REFERENCE, */
|
|
32
|
+
"ZlibError", /* GITERR_ZLIB, */
|
|
33
33
|
"RepositoryError", /* GITERR_REPOSITORY, */
|
|
34
|
-
"ConfigError",
|
|
35
|
-
"RegexError",
|
|
36
|
-
"OdbError",
|
|
37
|
-
"IndexError",
|
|
38
|
-
"ObjectError",
|
|
39
|
-
"NetworkError",
|
|
40
|
-
"TagError",
|
|
41
|
-
"TreeError",
|
|
42
|
-
"IndexerError",
|
|
34
|
+
"ConfigError", /* GITERR_CONFIG, */
|
|
35
|
+
"RegexError", /* GITERR_REGEX, */
|
|
36
|
+
"OdbError", /* GITERR_ODB, */
|
|
37
|
+
"IndexError", /* GITERR_INDEX, */
|
|
38
|
+
"ObjectError", /* GITERR_OBJECT, */
|
|
39
|
+
"NetworkError", /* GITERR_NET, */
|
|
40
|
+
"TagError", /* GITERR_TAG, */
|
|
41
|
+
"TreeError", /* GITERR_TREE, */
|
|
42
|
+
"IndexerError", /* GITERR_INDEXER, */
|
|
43
|
+
"SslError", /* GITERR_SSL, */
|
|
44
|
+
"SubmoduleError", /* GITERR_SUBMODULE, */
|
|
45
|
+
"ThreadError", /* GITERR_THREAD, */
|
|
46
|
+
"StashError", /* GITERR_STASH, */
|
|
47
|
+
"CheckoutError", /* GITERR_CHECKOUT, */
|
|
48
|
+
"FetchheadError", /* GITERR_FETCHHEAD, */
|
|
49
|
+
"MergeError", /* GITERR_MERGE, */
|
|
43
50
|
};
|
|
44
51
|
|
|
45
52
|
#define RUGGED_ERROR_COUNT (int)((sizeof(RUGGED_ERROR_NAMES)/sizeof(RUGGED_ERROR_NAMES[0])))
|
|
@@ -51,15 +58,14 @@ VALUE rb_eRuggedErrors[RUGGED_ERROR_COUNT];
|
|
|
51
58
|
static VALUE rb_mShutdownHook;
|
|
52
59
|
|
|
53
60
|
/*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
61
|
+
* call-seq:
|
|
62
|
+
* Rugged.libgit2_version -> version
|
|
56
63
|
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
64
|
+
* Returns an array representing the current libgit2 version in use. Using
|
|
65
|
+
* the array makes it easier for the end-user to take conditional actions
|
|
66
|
+
* based on each respective version attribute: major, minor, rev.
|
|
60
67
|
*
|
|
61
|
-
*
|
|
62
|
-
* #=> [0, 17, 0]
|
|
68
|
+
* Rugged.libgit2_version #=> [0, 17, 0]
|
|
63
69
|
*/
|
|
64
70
|
static VALUE rb_git_libgit2_version(VALUE self)
|
|
65
71
|
{
|
|
@@ -70,22 +76,21 @@ static VALUE rb_git_libgit2_version(VALUE self)
|
|
|
70
76
|
git_libgit2_version(&major, &minor, &rev);
|
|
71
77
|
|
|
72
78
|
// We return an array of three elements to represent the version components
|
|
73
|
-
return rb_ary_new3(3, INT2NUM(major), INT2NUM(minor), INT2NUM(rev));
|
|
79
|
+
return rb_ary_new3(3, INT2NUM(major), INT2NUM(minor), INT2NUM(rev));
|
|
74
80
|
}
|
|
75
81
|
|
|
76
82
|
/*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
83
|
+
* call-seq:
|
|
84
|
+
* Rugged.capabilities -> capabilities
|
|
79
85
|
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
86
|
+
* Returns an array representing the 'capabilities' that libgit2 was compiled
|
|
87
|
+
* with — this includes GIT_CAP_THREADS (thread support) and GIT_CAP_HTTPS (https).
|
|
88
|
+
* This is implemented in libgit2 with simple bitwise ops; we offer Rubyland an array
|
|
89
|
+
* of symbols representing the capabilities.
|
|
84
90
|
*
|
|
85
|
-
*
|
|
91
|
+
* The possible capabilities are "threads" and "https".
|
|
86
92
|
*
|
|
87
|
-
*
|
|
88
|
-
* #=> [:threads, :https]
|
|
93
|
+
* Rugged.capabilities #=> [:threads, :https]
|
|
89
94
|
*/
|
|
90
95
|
static VALUE rb_git_capabilities(VALUE self)
|
|
91
96
|
{
|
|
@@ -103,14 +108,14 @@ static VALUE rb_git_capabilities(VALUE self)
|
|
|
103
108
|
}
|
|
104
109
|
|
|
105
110
|
/*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
111
|
+
* call-seq:
|
|
112
|
+
* Rugged.hex_to_raw(oid) -> raw_buffer
|
|
108
113
|
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
114
|
+
* Turn a string of 40 hexadecimal characters into the buffer of
|
|
115
|
+
* 20 bytes it represents.
|
|
111
116
|
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
117
|
+
* Rugged.hex_to_raw('d8786bfc97485e8d7b19b21fb88c8ef1f199fc3f')
|
|
118
|
+
* #=> "\330xk\374\227H^\215{\031\262\037\270\214\216\361\361\231\374?"
|
|
114
119
|
*/
|
|
115
120
|
static VALUE rb_git_hex_to_raw(VALUE self, VALUE hex)
|
|
116
121
|
{
|
|
@@ -119,18 +124,18 @@ static VALUE rb_git_hex_to_raw(VALUE self, VALUE hex)
|
|
|
119
124
|
Check_Type(hex, T_STRING);
|
|
120
125
|
rugged_exception_check(git_oid_fromstr(&oid, StringValueCStr(hex)));
|
|
121
126
|
|
|
122
|
-
return
|
|
127
|
+
return rb_str_new((const char *)oid.id, 20);
|
|
123
128
|
}
|
|
124
129
|
|
|
125
130
|
/*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
131
|
+
* call-seq:
|
|
132
|
+
* Rugged.raw_to_hex(buffer) -> hex_oid
|
|
128
133
|
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
134
|
+
* Turn a buffer of 20 bytes (representing a SHA1 OID) into its
|
|
135
|
+
* readable hexadecimal representation.
|
|
131
136
|
*
|
|
132
|
-
*
|
|
133
|
-
*
|
|
137
|
+
* Rugged.raw_to_hex("\330xk\374\227H^\215{\031\262\037\270\214\216\361\361\231\374?")
|
|
138
|
+
* #=> "d8786bfc97485e8d7b19b21fb88c8ef1f199fc3f"
|
|
134
139
|
*/
|
|
135
140
|
static VALUE rb_git_raw_to_hex(VALUE self, VALUE raw)
|
|
136
141
|
{
|
|
@@ -145,15 +150,15 @@ static VALUE rb_git_raw_to_hex(VALUE self, VALUE raw)
|
|
|
145
150
|
git_oid_fromraw(&oid, (const unsigned char *)RSTRING_PTR(raw));
|
|
146
151
|
git_oid_fmt(out, &oid);
|
|
147
152
|
|
|
148
|
-
return
|
|
153
|
+
return rb_str_new(out, 40);
|
|
149
154
|
}
|
|
150
155
|
|
|
151
156
|
/*
|
|
152
|
-
*
|
|
153
|
-
*
|
|
157
|
+
* call-seq:
|
|
158
|
+
* Rugged.prettify_message(message, strip_comments) -> clean_message
|
|
154
159
|
*
|
|
155
|
-
*
|
|
156
|
-
*
|
|
160
|
+
* Process a commit or tag message into standard form, by stripping trailing spaces and
|
|
161
|
+
* comments, and making sure that the message has a proper header line.
|
|
157
162
|
*/
|
|
158
163
|
static VALUE rb_git_prettify_message(VALUE self, VALUE rb_message, VALUE rb_strip_comments)
|
|
159
164
|
{
|
|
@@ -170,7 +175,7 @@ static VALUE rb_git_prettify_message(VALUE self, VALUE rb_message, VALUE rb_stri
|
|
|
170
175
|
message_len = git_message_prettify(message, message_len, StringValueCStr(rb_message), strip_comments);
|
|
171
176
|
rugged_exception_check(message_len);
|
|
172
177
|
|
|
173
|
-
result =
|
|
178
|
+
result = rb_enc_str_new(message, message_len - 1, rb_utf8_encoding());
|
|
174
179
|
xfree(message);
|
|
175
180
|
|
|
176
181
|
return result;
|
|
@@ -191,45 +196,45 @@ static VALUE minimize_yield(VALUE rb_oid, VALUE *data)
|
|
|
191
196
|
}
|
|
192
197
|
|
|
193
198
|
/*
|
|
194
|
-
*
|
|
195
|
-
*
|
|
196
|
-
*
|
|
199
|
+
* call-seq:
|
|
200
|
+
* Rugged.minimize_oid(oid_iterator, min_length = 7) { |short_oid| block }
|
|
201
|
+
* Rugged.minimize_oid(oid_iterator, min_length = 7) -> min_length
|
|
197
202
|
*
|
|
198
|
-
*
|
|
199
|
-
*
|
|
203
|
+
* Iterate through +oid_iterator+, which should yield any number of SHA1 OIDs
|
|
204
|
+
* (represented as 40-character hexadecimal strings), and tries to minify them.
|
|
200
205
|
*
|
|
201
|
-
*
|
|
202
|
-
*
|
|
206
|
+
* Minifying a set of a SHA1 strings means finding the shortest root substring
|
|
207
|
+
* for each string that uniquely identifies it.
|
|
203
208
|
*
|
|
204
|
-
*
|
|
205
|
-
*
|
|
209
|
+
* If no +block+ is given, the function will return the minimal length as an
|
|
210
|
+
* integer value:
|
|
206
211
|
*
|
|
207
|
-
*
|
|
208
|
-
*
|
|
209
|
-
*
|
|
210
|
-
*
|
|
211
|
-
*
|
|
212
|
-
*
|
|
212
|
+
* oids = [
|
|
213
|
+
* 'd8786bfc974aaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
|
214
|
+
* 'd8786bfc974bbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
|
|
215
|
+
* 'd8786bfc974ccccccccccccccccccccccccccccc',
|
|
216
|
+
* '68d041ee999cb07c6496fbdd4f384095de6ca9e1',
|
|
217
|
+
* ]
|
|
213
218
|
*
|
|
214
|
-
*
|
|
219
|
+
* Rugged.minimize_oids(oids) #=> 12
|
|
215
220
|
*
|
|
216
|
-
*
|
|
217
|
-
*
|
|
221
|
+
* If a +block+ is given, it will be called with each OID from +iterator+
|
|
222
|
+
* in its minified form:
|
|
218
223
|
*
|
|
219
|
-
*
|
|
224
|
+
* Rugged.minimize_oid(oids) { |oid| puts oid }
|
|
220
225
|
*
|
|
221
|
-
*
|
|
226
|
+
* produces:
|
|
222
227
|
*
|
|
223
|
-
*
|
|
224
|
-
*
|
|
225
|
-
*
|
|
226
|
-
*
|
|
228
|
+
* d8786bfc974a
|
|
229
|
+
* d8786bfc974b
|
|
230
|
+
* d8786bfc974c
|
|
231
|
+
* 68d041ee999c
|
|
227
232
|
*
|
|
228
|
-
*
|
|
229
|
-
*
|
|
230
|
-
*
|
|
233
|
+
* The optional +min_length+ argument allows you to specify a lower bound for
|
|
234
|
+
* the minified strings; returned strings won't be shorter than the given value,
|
|
235
|
+
* even if they would still be uniquely represented.
|
|
231
236
|
*
|
|
232
|
-
*
|
|
237
|
+
* Rugged.minimize_oid(oids, 18) #=> 18
|
|
233
238
|
*/
|
|
234
239
|
static VALUE rb_git_minimize_oid(int argc, VALUE *argv, VALUE self)
|
|
235
240
|
{
|
|
@@ -251,20 +256,20 @@ static VALUE rb_git_minimize_oid(int argc, VALUE *argv, VALUE self)
|
|
|
251
256
|
|
|
252
257
|
rb_iterate(rb_each, rb_enum, &minimize_cb, (VALUE)shrt);
|
|
253
258
|
length = git_oid_shorten_add(shrt, NULL);
|
|
259
|
+
|
|
260
|
+
git_oid_shorten_free(shrt);
|
|
254
261
|
rugged_exception_check(length);
|
|
255
262
|
|
|
256
|
-
if (
|
|
263
|
+
if (!NIL_P(rb_block)) {
|
|
257
264
|
VALUE yield_data[2];
|
|
258
265
|
|
|
259
266
|
yield_data[0] = rb_block;
|
|
260
267
|
yield_data[1] = INT2FIX(length);
|
|
261
268
|
|
|
262
269
|
rb_iterate(rb_each, rb_enum, &minimize_yield, (VALUE)yield_data);
|
|
263
|
-
git_oid_shorten_free(shrt);
|
|
264
270
|
return Qnil;
|
|
265
271
|
}
|
|
266
272
|
|
|
267
|
-
git_oid_shorten_free(shrt);
|
|
268
273
|
return INT2FIX(length);
|
|
269
274
|
}
|
|
270
275
|
|
|
@@ -274,10 +279,9 @@ static void cleanup_cb(void *unused)
|
|
|
274
279
|
git_threads_shutdown();
|
|
275
280
|
}
|
|
276
281
|
|
|
277
|
-
void rugged_exception_raise(
|
|
282
|
+
void rugged_exception_raise(void)
|
|
278
283
|
{
|
|
279
|
-
VALUE err_klass
|
|
280
|
-
VALUE err_obj;
|
|
284
|
+
VALUE err_klass, err_obj;
|
|
281
285
|
const git_error *error;
|
|
282
286
|
const char *err_message;
|
|
283
287
|
|
|
@@ -296,7 +300,64 @@ void rugged_exception_raise(int errorcode)
|
|
|
296
300
|
rb_exc_raise(err_obj);
|
|
297
301
|
}
|
|
298
302
|
|
|
299
|
-
|
|
303
|
+
/*
|
|
304
|
+
* call-seq:
|
|
305
|
+
* Rugged.__cache_usage__ -> [current, max]
|
|
306
|
+
*
|
|
307
|
+
* Returns an array representing the current bytes in the internal
|
|
308
|
+
* libgit2 cache and the maximum size of the cache.
|
|
309
|
+
*/
|
|
310
|
+
static VALUE rb_git_cache_usage(VALUE self)
|
|
311
|
+
{
|
|
312
|
+
int64_t used, max;
|
|
313
|
+
git_libgit2_opts(GIT_OPT_GET_CACHED_MEMORY, &used, &max);
|
|
314
|
+
return rb_ary_new3(2, LL2NUM(used), LL2NUM(max));
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
VALUE rugged_strarray_to_rb_ary(git_strarray *str_array)
|
|
318
|
+
{
|
|
319
|
+
VALUE rb_array = rb_ary_new2(str_array->count);
|
|
320
|
+
size_t i;
|
|
321
|
+
|
|
322
|
+
for (i = 0; i < str_array->count; ++i) {
|
|
323
|
+
rb_ary_push(rb_array, rb_str_new_utf8(str_array->strings[i]));
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
return rb_array;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
void rugged_rb_ary_to_strarray(VALUE rb_array, git_strarray *str_array)
|
|
330
|
+
{
|
|
331
|
+
int i;
|
|
332
|
+
|
|
333
|
+
str_array->strings = NULL;
|
|
334
|
+
str_array->count = 0;
|
|
335
|
+
|
|
336
|
+
if (NIL_P(rb_array))
|
|
337
|
+
return;
|
|
338
|
+
|
|
339
|
+
if (TYPE(rb_array) == T_STRING) {
|
|
340
|
+
str_array->count = 1;
|
|
341
|
+
str_array->strings = xmalloc(sizeof(char *));
|
|
342
|
+
str_array->strings[0] = StringValueCStr(rb_array);
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
Check_Type(rb_array, T_ARRAY);
|
|
347
|
+
|
|
348
|
+
for (i = 0; i < RARRAY_LEN(rb_array); ++i)
|
|
349
|
+
Check_Type(rb_ary_entry(rb_array, i), T_STRING);
|
|
350
|
+
|
|
351
|
+
str_array->count = RARRAY_LEN(rb_array);
|
|
352
|
+
str_array->strings = xmalloc(str_array->count * sizeof(char *));
|
|
353
|
+
|
|
354
|
+
for (i = 0; i < RARRAY_LEN(rb_array); ++i) {
|
|
355
|
+
VALUE rb_string = rb_ary_entry(rb_array, i);
|
|
356
|
+
str_array->strings[i] = StringValueCStr(rb_string);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
void Init_rugged(void)
|
|
300
361
|
{
|
|
301
362
|
rb_mRugged = rb_define_module("Rugged");
|
|
302
363
|
|
|
@@ -316,11 +377,12 @@ void Init_rugged()
|
|
|
316
377
|
}
|
|
317
378
|
|
|
318
379
|
rb_define_module_function(rb_mRugged, "libgit2_version", rb_git_libgit2_version, 0);
|
|
319
|
-
rb_define_module_function(rb_mRugged, "capabilities", rb_git_capabilities, 0);
|
|
380
|
+
rb_define_module_function(rb_mRugged, "capabilities", rb_git_capabilities, 0);
|
|
320
381
|
rb_define_module_function(rb_mRugged, "hex_to_raw", rb_git_hex_to_raw, 1);
|
|
321
382
|
rb_define_module_function(rb_mRugged, "raw_to_hex", rb_git_raw_to_hex, 1);
|
|
322
383
|
rb_define_module_function(rb_mRugged, "minimize_oid", rb_git_minimize_oid, -1);
|
|
323
384
|
rb_define_module_function(rb_mRugged, "prettify_message", rb_git_prettify_message, 2);
|
|
385
|
+
rb_define_module_function(rb_mRugged, "__cache_usage__", rb_git_cache_usage, 0);
|
|
324
386
|
|
|
325
387
|
Init_rugged_object();
|
|
326
388
|
Init_rugged_commit();
|
|
@@ -337,6 +399,11 @@ void Init_rugged()
|
|
|
337
399
|
Init_rugged_remote();
|
|
338
400
|
Init_rugged_notes();
|
|
339
401
|
Init_rugged_settings();
|
|
402
|
+
Init_rugged_diff();
|
|
403
|
+
Init_rugged_diff_patch();
|
|
404
|
+
Init_rugged_diff_delta();
|
|
405
|
+
Init_rugged_diff_hunk();
|
|
406
|
+
Init_rugged_diff_line();
|
|
340
407
|
|
|
341
408
|
/* Constants */
|
|
342
409
|
rb_define_const(rb_mRugged, "SORT_NONE", INT2FIX(0));
|
data/ext/rugged/rugged.h
CHANGED
|
@@ -31,34 +31,41 @@
|
|
|
31
31
|
#define RSTRING_NOT_MODIFIED
|
|
32
32
|
|
|
33
33
|
#include <ruby.h>
|
|
34
|
-
|
|
35
|
-
#
|
|
36
|
-
#
|
|
34
|
+
#ifndef HAVE_RUBY_ENCODING_H
|
|
35
|
+
#error "Rugged requires Ruby 1.9+ to build"
|
|
36
|
+
#else
|
|
37
|
+
#include <ruby/encoding.h>
|
|
37
38
|
#endif
|
|
38
39
|
|
|
39
40
|
#include <assert.h>
|
|
40
41
|
#include <git2.h>
|
|
41
42
|
#include <git2/odb_backend.h>
|
|
42
43
|
|
|
44
|
+
#define rb_str_new_utf8(str) rb_enc_str_new(str, strlen(str), rb_utf8_encoding())
|
|
43
45
|
#define CSTR2SYM(s) (ID2SYM(rb_intern((s))))
|
|
44
46
|
|
|
45
47
|
/*
|
|
46
48
|
* Initialization functions
|
|
47
49
|
*/
|
|
48
|
-
void Init_rugged_object();
|
|
49
|
-
void Init_rugged_branch();
|
|
50
|
-
void Init_rugged_commit();
|
|
51
|
-
void Init_rugged_tree();
|
|
52
|
-
void Init_rugged_tag();
|
|
53
|
-
void Init_rugged_blob();
|
|
54
|
-
void Init_rugged_index();
|
|
55
|
-
void Init_rugged_repo();
|
|
56
|
-
void Init_rugged_revwalk();
|
|
57
|
-
void Init_rugged_reference();
|
|
58
|
-
void Init_rugged_config();
|
|
59
|
-
void Init_rugged_remote();
|
|
60
|
-
void Init_rugged_notes();
|
|
61
|
-
void Init_rugged_settings();
|
|
50
|
+
void Init_rugged_object(void);
|
|
51
|
+
void Init_rugged_branch(void);
|
|
52
|
+
void Init_rugged_commit(void);
|
|
53
|
+
void Init_rugged_tree(void);
|
|
54
|
+
void Init_rugged_tag(void);
|
|
55
|
+
void Init_rugged_blob(void);
|
|
56
|
+
void Init_rugged_index(void);
|
|
57
|
+
void Init_rugged_repo(void);
|
|
58
|
+
void Init_rugged_revwalk(void);
|
|
59
|
+
void Init_rugged_reference(void);
|
|
60
|
+
void Init_rugged_config(void);
|
|
61
|
+
void Init_rugged_remote(void);
|
|
62
|
+
void Init_rugged_notes(void);
|
|
63
|
+
void Init_rugged_settings(void);
|
|
64
|
+
void Init_rugged_diff(void);
|
|
65
|
+
void Init_rugged_diff_patch(void);
|
|
66
|
+
void Init_rugged_diff_delta(void);
|
|
67
|
+
void Init_rugged_diff_hunk(void);
|
|
68
|
+
void Init_rugged_diff_line(void);
|
|
62
69
|
|
|
63
70
|
VALUE rb_git_object_init(git_otype type, int argc, VALUE *argv, VALUE self);
|
|
64
71
|
|
|
@@ -69,14 +76,25 @@ VALUE rugged_signature_new(const git_signature *sig, const char *encoding_name);
|
|
|
69
76
|
VALUE rugged_index_new(VALUE klass, VALUE owner, git_index *index);
|
|
70
77
|
VALUE rugged_config_new(VALUE klass, VALUE owner, git_config *cfg);
|
|
71
78
|
VALUE rugged_object_new(VALUE owner, git_object *object);
|
|
79
|
+
VALUE rugged_object_rev_parse(VALUE rb_repo, VALUE rb_spec, int as_obj);
|
|
72
80
|
VALUE rugged_ref_new(VALUE klass, VALUE owner, git_reference *ref);
|
|
81
|
+
VALUE rugged_diff_new(VALUE klass, VALUE owner, git_diff_list *diff);
|
|
82
|
+
VALUE rugged_diff_patch_new(VALUE owner, git_diff_patch *patch);
|
|
83
|
+
VALUE rugged_diff_delta_new(VALUE owner, const git_diff_delta *delta);
|
|
84
|
+
VALUE rugged_diff_hunk_new(VALUE owner, int hunk_idx, const git_diff_range *range, const char *header, size_t header_len, size_t lines_in_hunk);
|
|
85
|
+
VALUE rugged_diff_line_new(VALUE owner, const char line_origin, const char *content, size_t content_len, int old_lineno, int new_lineno);
|
|
86
|
+
|
|
87
|
+
void rugged_parse_diff_options(git_diff_options *opts, VALUE rb_options);
|
|
73
88
|
|
|
74
89
|
VALUE rugged_otype_new(git_otype t);
|
|
75
90
|
git_otype rugged_otype_get(VALUE rb_type);
|
|
76
91
|
|
|
77
92
|
git_signature *rugged_signature_get(VALUE rb_person);
|
|
78
93
|
git_object *rugged_object_get(git_repository *repo, VALUE object_value, git_otype type);
|
|
79
|
-
|
|
94
|
+
int rugged_oid_get(git_oid *oid, git_repository *repo, VALUE p);
|
|
95
|
+
|
|
96
|
+
void rugged_rb_ary_to_strarray(VALUE rb_array, git_strarray *str_array);
|
|
97
|
+
VALUE rugged_strarray_to_rb_ary(git_strarray *str_array);
|
|
80
98
|
|
|
81
99
|
static inline void rugged_set_owner(VALUE object, VALUE owner)
|
|
82
100
|
{
|
|
@@ -88,12 +106,12 @@ static inline VALUE rugged_owner(VALUE object)
|
|
|
88
106
|
return rb_iv_get(object, "@owner");
|
|
89
107
|
}
|
|
90
108
|
|
|
91
|
-
extern void rugged_exception_raise(
|
|
109
|
+
extern void rugged_exception_raise(void);
|
|
92
110
|
|
|
93
111
|
static inline void rugged_exception_check(int errorcode)
|
|
94
112
|
{
|
|
95
113
|
if (errorcode < 0)
|
|
96
|
-
rugged_exception_raise(
|
|
114
|
+
rugged_exception_raise();
|
|
97
115
|
}
|
|
98
116
|
|
|
99
117
|
static inline int rugged_parse_bool(VALUE boolean)
|
|
@@ -106,29 +124,22 @@ static inline int rugged_parse_bool(VALUE boolean)
|
|
|
106
124
|
|
|
107
125
|
extern VALUE rb_cRuggedRepo;
|
|
108
126
|
|
|
127
|
+
struct rugged_cb_payload {
|
|
128
|
+
VALUE rb_data;
|
|
129
|
+
int exception;
|
|
130
|
+
};
|
|
131
|
+
|
|
109
132
|
static inline void rugged_check_repo(VALUE rb_repo)
|
|
110
133
|
{
|
|
111
134
|
if (!rb_obj_is_kind_of(rb_repo, rb_cRuggedRepo))
|
|
112
135
|
rb_raise(rb_eTypeError, "Expecting a Rugged Repository");
|
|
113
136
|
}
|
|
114
137
|
|
|
115
|
-
/* support for string encodings in 1.9 */
|
|
116
|
-
#ifdef HAVE_RUBY_ENCODING_H
|
|
117
|
-
# define rugged_str_new(str, len, enc) rb_enc_str_new(str, len, enc)
|
|
118
|
-
# define rugged_str_new2(str, enc) rb_enc_str_new(str, strlen(str), enc)
|
|
119
|
-
# define rugged_str_ascii(str, len) rb_enc_str_new(str, len, rb_ascii8bit_encoding());
|
|
120
|
-
|
|
121
|
-
#else
|
|
122
|
-
# define rugged_str_new(str, len, rb_enc) rb_str_new(str, len)
|
|
123
|
-
# define rugged_str_new2(str, rb_enc) rb_str_new2(str)
|
|
124
|
-
# define rugged_str_ascii(str, len) rb_str_new(str, len)
|
|
125
|
-
#endif
|
|
126
|
-
|
|
127
138
|
static inline VALUE rugged_create_oid(const git_oid *oid)
|
|
128
139
|
{
|
|
129
140
|
char out[40];
|
|
130
141
|
git_oid_fmt(out, oid);
|
|
131
|
-
return
|
|
142
|
+
return rb_str_new(out, 40);
|
|
132
143
|
}
|
|
133
144
|
|
|
134
145
|
#endif
|