rugged-mysql 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +5 -0
- data/.ruby-version +1 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +22 -0
- data/LICENSE +22 -0
- data/README.md +40 -0
- data/Rakefile +8 -0
- data/ext/rugged/mysql/extconf.rb +24 -0
- data/ext/rugged/mysql/mysql_odb_backend.c +478 -0
- data/ext/rugged/mysql/mysql_refdb_backend.c +735 -0
- data/ext/rugged/mysql/rugged_mysql.c +13 -0
- data/ext/rugged/mysql/rugged_mysql.h +4 -0
- data/ext/rugged/mysql/rugged_mysql_backend.c +161 -0
- data/lib/rugged-mysql.rb +1 -0
- data/lib/rugged/mysql.rb +9 -0
- data/lib/rugged/mysql/version.rb +5 -0
- data/rugged-mysql.gemspec +28 -0
- metadata +118 -0
@@ -0,0 +1,13 @@
|
|
1
|
+
#include "rugged_mysql.h"
|
2
|
+
|
3
|
+
VALUE rb_mRugged;
|
4
|
+
VALUE rb_mRuggedMysql;
|
5
|
+
VALUE rb_cRuggedBackend;
|
6
|
+
|
7
|
+
void Init_rugged_mysql(void)
|
8
|
+
{
|
9
|
+
rb_mRugged = rb_const_get(rb_cObject, rb_intern("Rugged"));
|
10
|
+
rb_cRuggedBackend = rb_const_get(rb_mRugged, rb_intern("Backend"));
|
11
|
+
rb_mRuggedMysql = rb_const_get(rb_mRugged, rb_intern("Mysql"));
|
12
|
+
Init_rugged_mysql_backend();
|
13
|
+
}
|
@@ -0,0 +1,161 @@
|
|
1
|
+
#include <git2.h>
|
2
|
+
#include <git2/sys/odb_backend.h>
|
3
|
+
#include <git2/sys/refdb_backend.h>
|
4
|
+
#include <rugged.h>
|
5
|
+
|
6
|
+
#include "rugged_mysql.h"
|
7
|
+
|
8
|
+
extern VALUE rb_mRuggedMysql;
|
9
|
+
extern VALUE rb_cRuggedBackend;
|
10
|
+
|
11
|
+
VALUE rb_cRuggedMysqlBackend;
|
12
|
+
|
13
|
+
int git_odb__error_ambiguous(char *);
|
14
|
+
int git_odb__error_notfound(char *);
|
15
|
+
int git_odb__error_ambiguous(char *);
|
16
|
+
|
17
|
+
typedef struct _rugged_backend {
|
18
|
+
int (*odb_backend) (git_odb_backend ** backend_out,
|
19
|
+
struct _rugged_backend * backend);
|
20
|
+
int (*refdb_backend) (git_refdb_backend ** backend_out,
|
21
|
+
struct _rugged_backend * backend);
|
22
|
+
} rugged_backend;
|
23
|
+
|
24
|
+
typedef struct {
|
25
|
+
rugged_backend backend;
|
26
|
+
char *host;
|
27
|
+
int port;
|
28
|
+
char *socket;
|
29
|
+
char *username;
|
30
|
+
char *password;
|
31
|
+
char *database;
|
32
|
+
} rugged_mysql_backend;
|
33
|
+
|
34
|
+
static void rb_rugged_mysql_backend__free(rugged_mysql_backend * backend)
|
35
|
+
{
|
36
|
+
free(backend->host);
|
37
|
+
free(backend->socket);
|
38
|
+
free(backend->username);
|
39
|
+
if (backend->password != NULL) {
|
40
|
+
free(backend->password);
|
41
|
+
}
|
42
|
+
free(backend->database);
|
43
|
+
free(backend);
|
44
|
+
}
|
45
|
+
|
46
|
+
static int
|
47
|
+
rugged_mysql__odb_backend(git_odb_backend ** backend_out,
|
48
|
+
rugged_backend * backend)
|
49
|
+
{
|
50
|
+
rugged_mysql_backend *rugged_backend = (rugged_mysql_backend *) backend;
|
51
|
+
|
52
|
+
return git_odb_backend_mysql(backend_out, rugged_backend->host,
|
53
|
+
rugged_backend->port,
|
54
|
+
rugged_backend->socket,
|
55
|
+
rugged_backend->username,
|
56
|
+
rugged_backend->password,
|
57
|
+
rugged_backend->database, NULL);
|
58
|
+
}
|
59
|
+
|
60
|
+
static int
|
61
|
+
rugged_mysql__refdb_backend(git_refdb_backend ** backend_out,
|
62
|
+
rugged_backend * backend)
|
63
|
+
{
|
64
|
+
rugged_mysql_backend *rugged_backend = (rugged_mysql_backend *) backend;
|
65
|
+
|
66
|
+
return git_refdb_backend_mysql(backend_out, rugged_backend->host,
|
67
|
+
rugged_backend->port,
|
68
|
+
rugged_backend->socket,
|
69
|
+
rugged_backend->username,
|
70
|
+
rugged_backend->password,
|
71
|
+
rugged_backend->database, NULL);
|
72
|
+
}
|
73
|
+
|
74
|
+
static rugged_mysql_backend *rugged_mysql_backend_new(char *host, int port,
|
75
|
+
char *socket,
|
76
|
+
char *username,
|
77
|
+
char *password,
|
78
|
+
char *database)
|
79
|
+
{
|
80
|
+
rugged_mysql_backend *mysql_backend =
|
81
|
+
malloc(sizeof(rugged_mysql_backend));
|
82
|
+
|
83
|
+
mysql_backend->backend.odb_backend = rugged_mysql__odb_backend;
|
84
|
+
mysql_backend->backend.refdb_backend = rugged_mysql__refdb_backend;
|
85
|
+
|
86
|
+
mysql_backend->host = strdup(host);
|
87
|
+
mysql_backend->port = port;
|
88
|
+
mysql_backend->socket = strdup(socket);
|
89
|
+
mysql_backend->username = strdup(username);
|
90
|
+
mysql_backend->password = password == NULL ? NULL : strdup(password);
|
91
|
+
|
92
|
+
return mysql_backend;
|
93
|
+
}
|
94
|
+
|
95
|
+
/*
|
96
|
+
Public: Initialize a mysql backend.
|
97
|
+
opts - hash containing the connection options.
|
98
|
+
:host - (optional) string, default localhost
|
99
|
+
:port - (optional) integer, default 3306
|
100
|
+
:password - (optional) string, default NULL
|
101
|
+
:socket - (optional) string, default /var/run/mysqld/mysqld.sock
|
102
|
+
:username - (optional) string, default root
|
103
|
+
:database - string
|
104
|
+
*/
|
105
|
+
static VALUE rb_rugged_mysql_backend_new(VALUE klass, VALUE rb_opts)
|
106
|
+
{
|
107
|
+
VALUE val;
|
108
|
+
char *host;
|
109
|
+
char *socket = "/var/run/mysqld/mysqld.sock";
|
110
|
+
char *database;
|
111
|
+
char *username = "root";
|
112
|
+
char *password = NULL;
|
113
|
+
int port = 3306;
|
114
|
+
|
115
|
+
Check_Type(rb_opts, T_HASH);
|
116
|
+
|
117
|
+
if ((val = rb_hash_aref(rb_opts, ID2SYM(rb_intern("host")))) != Qnil) {
|
118
|
+
Check_Type(val, T_STRING);
|
119
|
+
host = StringValueCStr(val);
|
120
|
+
}
|
121
|
+
|
122
|
+
if ((val = rb_hash_aref(rb_opts, ID2SYM(rb_intern("port")))) != Qnil) {
|
123
|
+
Check_Type(val, T_FIXNUM);
|
124
|
+
port = NUM2INT(val);
|
125
|
+
}
|
126
|
+
|
127
|
+
if ((val = rb_hash_aref(rb_opts, ID2SYM(rb_intern("socket")))) != Qnil) {
|
128
|
+
Check_Type(val, T_STRING);
|
129
|
+
socket = StringValueCStr(val);
|
130
|
+
}
|
131
|
+
|
132
|
+
if ((val =
|
133
|
+
rb_hash_aref(rb_opts, ID2SYM(rb_intern("username")))) != Qnil) {
|
134
|
+
Check_Type(val, T_STRING);
|
135
|
+
username = StringValueCStr(val);
|
136
|
+
}
|
137
|
+
|
138
|
+
if ((val =
|
139
|
+
rb_hash_aref(rb_opts, ID2SYM(rb_intern("password")))) != Qnil) {
|
140
|
+
Check_Type(val, T_STRING);
|
141
|
+
password = StringValueCStr(val);
|
142
|
+
}
|
143
|
+
|
144
|
+
val = rb_hash_aref(rb_opts, ID2SYM(rb_intern("database")));
|
145
|
+
Check_Type(val, T_STRING);
|
146
|
+
database = StringValueCStr(val);
|
147
|
+
|
148
|
+
return Data_Wrap_Struct(klass, NULL, rb_rugged_mysql_backend__free,
|
149
|
+
rugged_mysql_backend_new(host, port, socket,
|
150
|
+
username, password,
|
151
|
+
database));
|
152
|
+
}
|
153
|
+
|
154
|
+
void Init_rugged_mysql_backend(void)
|
155
|
+
{
|
156
|
+
rb_cRuggedMysqlBackend =
|
157
|
+
rb_define_class_under(rb_mRuggedMysql, "Backend",
|
158
|
+
rb_cRuggedBackend);
|
159
|
+
rb_define_singleton_method(rb_cRuggedMysqlBackend, "new",
|
160
|
+
rb_rugged_mysql_backend_new, 1);
|
161
|
+
}
|
data/lib/rugged-mysql.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'rugged/mysql'
|
data/lib/rugged/mysql.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'rugged/mysql/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'rugged-mysql'
|
8
|
+
spec.version = Rugged::Mysql::VERSION
|
9
|
+
spec.authors = ['Jitang Zheng']
|
10
|
+
spec.email = ['jitang.zheng@gmail.com']
|
11
|
+
spec.summary = %q{A mysql backend of rugged.}
|
12
|
+
spec.description = %q{Enables rugged to store git objects and references into MySQL.}
|
13
|
+
spec.homepage = 'https://github.com/chonglou/rugged-mysql'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
spec.extensions = %w[ext/rugged/mysql/extconf.rb]
|
21
|
+
|
22
|
+
spec.add_development_dependency 'bundler', '~> 1.7'
|
23
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
24
|
+
spec.add_development_dependency 'rake-compiler'
|
25
|
+
spec.add_dependency 'rugged', '~> 0.21.2'
|
26
|
+
|
27
|
+
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,118 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rugged-mysql
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jitang Zheng
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-11-19 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.7'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake-compiler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rugged
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.21.2
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.21.2
|
69
|
+
description: Enables rugged to store git objects and references into MySQL.
|
70
|
+
email:
|
71
|
+
- jitang.zheng@gmail.com
|
72
|
+
executables: []
|
73
|
+
extensions:
|
74
|
+
- ext/rugged/mysql/extconf.rb
|
75
|
+
extra_rdoc_files: []
|
76
|
+
files:
|
77
|
+
- ".gitignore"
|
78
|
+
- ".ruby-version"
|
79
|
+
- Gemfile
|
80
|
+
- Gemfile.lock
|
81
|
+
- LICENSE
|
82
|
+
- README.md
|
83
|
+
- Rakefile
|
84
|
+
- ext/rugged/mysql/extconf.rb
|
85
|
+
- ext/rugged/mysql/mysql_odb_backend.c
|
86
|
+
- ext/rugged/mysql/mysql_refdb_backend.c
|
87
|
+
- ext/rugged/mysql/rugged_mysql.c
|
88
|
+
- ext/rugged/mysql/rugged_mysql.h
|
89
|
+
- ext/rugged/mysql/rugged_mysql_backend.c
|
90
|
+
- lib/rugged-mysql.rb
|
91
|
+
- lib/rugged/mysql.rb
|
92
|
+
- lib/rugged/mysql/version.rb
|
93
|
+
- rugged-mysql.gemspec
|
94
|
+
homepage: https://github.com/chonglou/rugged-mysql
|
95
|
+
licenses:
|
96
|
+
- MIT
|
97
|
+
metadata: {}
|
98
|
+
post_install_message:
|
99
|
+
rdoc_options: []
|
100
|
+
require_paths:
|
101
|
+
- lib
|
102
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
104
|
+
- - ">="
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '0'
|
107
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
requirements: []
|
113
|
+
rubyforge_project:
|
114
|
+
rubygems_version: 2.2.2
|
115
|
+
signing_key:
|
116
|
+
specification_version: 4
|
117
|
+
summary: A mysql backend of rugged.
|
118
|
+
test_files: []
|