rugged 0.22.1b1 → 0.22.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +4 -2
- data/vendor/libgit2/include/git2/repository.h +2 -2
- data/vendor/libgit2/include/git2/sys/repository.h +4 -1
- data/vendor/libgit2/include/git2/sys/stream.h +2 -0
- data/vendor/libgit2/include/git2/version.h +2 -2
- data/vendor/libgit2/src/branch.c +6 -1
- data/vendor/libgit2/src/buf_text.c +4 -1
- data/vendor/libgit2/src/checkout.c +2 -1
- data/vendor/libgit2/src/common.h +1 -0
- data/vendor/libgit2/src/config_file.c +1 -0
- data/vendor/libgit2/src/diff_patch.c +2 -1
- data/vendor/libgit2/src/fileops.c +18 -11
- data/vendor/libgit2/src/index.c +3 -0
- data/vendor/libgit2/src/indexer.c +1 -0
- data/vendor/libgit2/src/openssl_stream.c +7 -4
- data/vendor/libgit2/src/pack.c +9 -2
- data/vendor/libgit2/src/pathspec.c +3 -0
- data/vendor/libgit2/src/rebase.c +3 -1
- data/vendor/libgit2/src/refdb_fs.c +9 -0
- data/vendor/libgit2/src/remote.c +5 -1
- data/vendor/libgit2/src/repository.c +3 -2
- data/vendor/libgit2/src/stream.h +5 -0
- data/vendor/libgit2/src/transports/git.c +1 -0
- data/vendor/libgit2/src/transports/http.c +7 -1
- data/vendor/libgit2/src/win32/posix_w32.c +2 -6
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: abca236e3268bc314b36598c2745031738e9711b
|
4
|
+
data.tar.gz: dd4156ca02aff6e7cec599fd53f99d945080e7cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6d673c0721ec99e5589219ce2c6a21791d6ae37536888c36c17ff888dc6760d08f5d7f0c6d8fc91a1558ebecb1ba33fdb63c6e67ce744bdb63d5c3b3a3da1a8f
|
7
|
+
data.tar.gz: ca34fafae0486a29f7a015f12fc7f0a51fca43ad3251231d9f109966c327601f5736a4d2f9c0db2891ad86ceb6d985f17ab524afb75f6b093c7af82084d07bcc
|
data/lib/rugged/version.rb
CHANGED
@@ -42,7 +42,6 @@ OPTION( VALGRIND "Configure build for valgrind" OFF )
|
|
42
42
|
|
43
43
|
IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
44
44
|
SET( USE_ICONV ON )
|
45
|
-
ADD_DEFINITIONS(-DGIT_COMMON_CRYPTO)
|
46
45
|
ENDIF()
|
47
46
|
|
48
47
|
IF(MSVC)
|
@@ -172,6 +171,8 @@ ENDIF()
|
|
172
171
|
IF (WIN32 AND NOT MINGW AND NOT SHA1_TYPE STREQUAL "builtin")
|
173
172
|
ADD_DEFINITIONS(-DWIN32_SHA1)
|
174
173
|
FILE(GLOB SRC_SHA1 src/hash/hash_win32.c)
|
174
|
+
ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
175
|
+
ADD_DEFINITIONS(-DGIT_COMMON_CRYPTO)
|
175
176
|
ELSEIF (OPENSSL_FOUND AND NOT SHA1_TYPE STREQUAL "builtin")
|
176
177
|
ADD_DEFINITIONS(-DOPENSSL_SHA1)
|
177
178
|
IF (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
|
@@ -217,7 +218,8 @@ IF (USE_SSH)
|
|
217
218
|
ENDIF()
|
218
219
|
IF (LIBSSH2_FOUND)
|
219
220
|
ADD_DEFINITIONS(-DGIT_SSH)
|
220
|
-
INCLUDE_DIRECTORIES(${
|
221
|
+
INCLUDE_DIRECTORIES(${LIBSSH2_INCLUDE_DIRS})
|
222
|
+
LINK_DIRECTORIES(${LIBSSH2_LIBRARY_DIRS})
|
221
223
|
SET(LIBGIT2_PC_REQUIRES "${LIBGIT2_PC_REQUIRES} libssh2")
|
222
224
|
SET(SSH_LIBRARIES ${LIBSSH2_LIBRARIES})
|
223
225
|
ENDIF()
|
@@ -342,8 +342,8 @@ GIT_EXTERN(int) git_repository_head_unborn(git_repository *repo);
|
|
342
342
|
/**
|
343
343
|
* Check if a repository is empty
|
344
344
|
*
|
345
|
-
* An empty repository has just been initialized and contains
|
346
|
-
*
|
345
|
+
* An empty repository has just been initialized and contains no references
|
346
|
+
* apart from HEAD, which must be pointing to the unborn master branch.
|
347
347
|
*
|
348
348
|
* @param repo Repo to test
|
349
349
|
* @return 1 if the repository is empty, 0 if it isn't, error code
|
@@ -7,6 +7,9 @@
|
|
7
7
|
#ifndef INCLUDE_sys_git_repository_h__
|
8
8
|
#define INCLUDE_sys_git_repository_h__
|
9
9
|
|
10
|
+
#include "git2/common.h"
|
11
|
+
#include "git2/types.h"
|
12
|
+
|
10
13
|
/**
|
11
14
|
* @file git2/sys/repository.h
|
12
15
|
* @brief Git repository custom implementation routines
|
@@ -53,7 +56,7 @@ GIT_EXTERN(void) git_repository__cleanup(git_repository *repo);
|
|
53
56
|
*
|
54
57
|
* @param repo A repository object
|
55
58
|
* @param recurse_submodules Should submodules be updated recursively
|
56
|
-
* @
|
59
|
+
* @return 0 on success, < 0 on error
|
57
60
|
*/
|
58
61
|
GIT_EXTERN(int) git_repository_reinit_filesystem(
|
59
62
|
git_repository *repo,
|
@@ -7,10 +7,10 @@
|
|
7
7
|
#ifndef INCLUDE_git_version_h__
|
8
8
|
#define INCLUDE_git_version_h__
|
9
9
|
|
10
|
-
#define LIBGIT2_VERSION "0.22.
|
10
|
+
#define LIBGIT2_VERSION "0.22.2"
|
11
11
|
#define LIBGIT2_VER_MAJOR 0
|
12
12
|
#define LIBGIT2_VER_MINOR 22
|
13
|
-
#define LIBGIT2_VER_REVISION
|
13
|
+
#define LIBGIT2_VER_REVISION 2
|
14
14
|
|
15
15
|
#define LIBGIT2_SOVERSION 22
|
16
16
|
|
data/vendor/libgit2/src/branch.c
CHANGED
@@ -138,8 +138,13 @@ int git_branch_delete(git_reference *branch)
|
|
138
138
|
if (git_reference_delete(branch) < 0)
|
139
139
|
goto on_error;
|
140
140
|
|
141
|
-
if (git_reflog_delete(git_reference_owner(branch), git_reference_name(branch)) < 0)
|
141
|
+
if ((error = git_reflog_delete(git_reference_owner(branch), git_reference_name(branch))) < 0) {
|
142
|
+
if (error == GIT_ENOTFOUND) {
|
143
|
+
giterr_clear();
|
144
|
+
error = 0;
|
145
|
+
}
|
142
146
|
goto on_error;
|
147
|
+
}
|
143
148
|
|
144
149
|
error = 0;
|
145
150
|
|
@@ -191,7 +191,10 @@ bool git_buf_text_is_binary(const git_buf *buf)
|
|
191
191
|
while (scan < end) {
|
192
192
|
unsigned char c = *scan++;
|
193
193
|
|
194
|
-
|
194
|
+
/* Printable characters are those above SPACE (0x1F) excluding DEL,
|
195
|
+
* and including BS, ESC and FF.
|
196
|
+
*/
|
197
|
+
if ((c > 0x1F && c != 127) || c == '\b' || c == '\033' || c == '\014')
|
195
198
|
printable++;
|
196
199
|
else if (c == '\0')
|
197
200
|
return true;
|
@@ -1190,7 +1190,7 @@ static int checkout_verify_paths(
|
|
1190
1190
|
|
1191
1191
|
if (action & ~CHECKOUT_ACTION__REMOVE) {
|
1192
1192
|
if (!git_path_isvalid(repo, delta->new_file.path, flags)) {
|
1193
|
-
giterr_set(GITERR_CHECKOUT, "Cannot checkout to invalid path '%s'", delta->
|
1193
|
+
giterr_set(GITERR_CHECKOUT, "Cannot checkout to invalid path '%s'", delta->new_file.path);
|
1194
1194
|
return -1;
|
1195
1195
|
}
|
1196
1196
|
}
|
@@ -2212,6 +2212,7 @@ static void checkout_data_clear(checkout_data *data)
|
|
2212
2212
|
git__free(data->pfx);
|
2213
2213
|
data->pfx = NULL;
|
2214
2214
|
|
2215
|
+
git_buf_free(&data->last_mkdir);
|
2215
2216
|
git_buf_free(&data->path);
|
2216
2217
|
git_buf_free(&data->tmp);
|
2217
2218
|
|
data/vendor/libgit2/src/common.h
CHANGED
@@ -1284,6 +1284,7 @@ static int config_parse(git_strmap *values, diskfile_backend *cfg_file, struct r
|
|
1284
1284
|
if (result == 0) {
|
1285
1285
|
result = config_parse(values, cfg_file, r, level, depth+1);
|
1286
1286
|
r = git_array_get(cfg_file->readers, index);
|
1287
|
+
reader = git_array_get(cfg_file->readers, reader_idx);
|
1287
1288
|
}
|
1288
1289
|
else if (result == GIT_ENOTFOUND) {
|
1289
1290
|
giterr_clear();
|
@@ -822,7 +822,8 @@ int git_patch__invoke_callbacks(
|
|
822
822
|
for (i = 0; !error && i < git_array_size(patch->hunks); ++i) {
|
823
823
|
diff_patch_hunk *h = git_array_get(patch->hunks, i);
|
824
824
|
|
825
|
-
|
825
|
+
if (hunk_cb)
|
826
|
+
error = hunk_cb(patch->delta, &h->hunk, payload);
|
826
827
|
|
827
828
|
if (!line_cb)
|
828
829
|
continue;
|
@@ -330,7 +330,7 @@ int git_futils_mkdir_withperf(
|
|
330
330
|
{
|
331
331
|
int error = -1;
|
332
332
|
git_buf make_path = GIT_BUF_INIT;
|
333
|
-
ssize_t root = 0, min_root_len;
|
333
|
+
ssize_t root = 0, min_root_len, root_len;
|
334
334
|
char lastch = '/', *tail;
|
335
335
|
struct stat st;
|
336
336
|
|
@@ -343,22 +343,29 @@ int git_futils_mkdir_withperf(
|
|
343
343
|
goto done;
|
344
344
|
}
|
345
345
|
|
346
|
-
/*
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
346
|
+
/* Trim trailing slashes (except the root) */
|
347
|
+
if ((root_len = git_path_root(make_path.ptr)) < 0)
|
348
|
+
root_len = 0;
|
349
|
+
else
|
350
|
+
root_len++;
|
351
|
+
|
352
|
+
while (make_path.size > (size_t)root_len &&
|
353
|
+
make_path.ptr[make_path.size - 1] == '/')
|
354
|
+
make_path.ptr[--make_path.size] = '\0';
|
351
355
|
|
352
356
|
/* if we are not supposed to made the last element, truncate it */
|
353
357
|
if ((flags & GIT_MKDIR_SKIP_LAST2) != 0) {
|
354
|
-
|
358
|
+
git_path_dirname_r(&make_path, make_path.ptr);
|
355
359
|
flags |= GIT_MKDIR_SKIP_LAST;
|
356
360
|
}
|
357
|
-
if ((flags & GIT_MKDIR_SKIP_LAST) != 0)
|
358
|
-
|
361
|
+
if ((flags & GIT_MKDIR_SKIP_LAST) != 0) {
|
362
|
+
git_path_dirname_r(&make_path, make_path.ptr);
|
363
|
+
}
|
359
364
|
|
360
|
-
/*
|
361
|
-
|
365
|
+
/* We were either given the root path (or trimmed it to
|
366
|
+
* the root), we don't have anything to do.
|
367
|
+
*/
|
368
|
+
if (make_path.size <= (size_t)root_len) {
|
362
369
|
error = 0;
|
363
370
|
goto done;
|
364
371
|
}
|
data/vendor/libgit2/src/index.c
CHANGED
@@ -7,11 +7,10 @@
|
|
7
7
|
|
8
8
|
#ifdef GIT_SSL
|
9
9
|
|
10
|
-
#include <openssl/ssl.h>
|
11
|
-
#include <openssl/err.h>
|
12
|
-
#include <openssl/x509v3.h>
|
13
|
-
|
14
10
|
#include <ctype.h>
|
11
|
+
#include <sys/types.h>
|
12
|
+
#include <sys/socket.h>
|
13
|
+
#include <netinet/in.h>
|
15
14
|
|
16
15
|
#include "global.h"
|
17
16
|
#include "posix.h"
|
@@ -20,6 +19,10 @@
|
|
20
19
|
#include "netops.h"
|
21
20
|
#include "git2/transport.h"
|
22
21
|
|
22
|
+
#include <openssl/ssl.h>
|
23
|
+
#include <openssl/err.h>
|
24
|
+
#include <openssl/x509v3.h>
|
25
|
+
|
23
26
|
static int ssl_set_error(SSL *ssl, int error)
|
24
27
|
{
|
25
28
|
int err;
|
data/vendor/libgit2/src/pack.c
CHANGED
@@ -56,6 +56,7 @@ static git_pack_cache_entry *new_cache_object(git_rawobj *source)
|
|
56
56
|
if (!e)
|
57
57
|
return NULL;
|
58
58
|
|
59
|
+
git_atomic_inc(&e->refcount);
|
59
60
|
memcpy(&e->raw, source, sizeof(git_rawobj));
|
60
61
|
|
61
62
|
return e;
|
@@ -145,7 +146,11 @@ static void free_lowest_entry(git_pack_cache *cache)
|
|
145
146
|
}
|
146
147
|
}
|
147
148
|
|
148
|
-
static int cache_add(
|
149
|
+
static int cache_add(
|
150
|
+
git_pack_cache_entry **cached_out,
|
151
|
+
git_pack_cache *cache,
|
152
|
+
git_rawobj *base,
|
153
|
+
git_off_t offset)
|
149
154
|
{
|
150
155
|
git_pack_cache_entry *entry;
|
151
156
|
int error, exists = 0;
|
@@ -171,6 +176,8 @@ static int cache_add(git_pack_cache *cache, git_rawobj *base, git_off_t offset)
|
|
171
176
|
assert(error != 0);
|
172
177
|
kh_value(cache->entries, k) = entry;
|
173
178
|
cache->memory_used += entry->raw.len;
|
179
|
+
|
180
|
+
*cached_out = entry;
|
174
181
|
}
|
175
182
|
git_mutex_unlock(&cache->lock);
|
176
183
|
/* Somebody beat us to adding it into the cache */
|
@@ -699,7 +706,7 @@ int git_packfile_unpack(
|
|
699
706
|
* long as it's not already the cached one.
|
700
707
|
*/
|
701
708
|
if (!cached)
|
702
|
-
free_base = !!cache_add(&p->bases, obj, elem->base_key);
|
709
|
+
free_base = !!cache_add(&cached, &p->bases, obj, elem->base_key);
|
703
710
|
|
704
711
|
elem = &stack[elem_pos - 1];
|
705
712
|
curpos = elem->offset;
|
data/vendor/libgit2/src/rebase.c
CHANGED
@@ -634,7 +634,7 @@ int git_rebase_init(
|
|
634
634
|
|
635
635
|
*out = NULL;
|
636
636
|
|
637
|
-
GITERR_CHECK_VERSION(given_opts,
|
637
|
+
GITERR_CHECK_VERSION(given_opts, GIT_REBASE_OPTIONS_VERSION, "git_rebase_options");
|
638
638
|
|
639
639
|
if (!onto)
|
640
640
|
onto = upstream;
|
@@ -1058,6 +1058,8 @@ int git_rebase_finish(
|
|
1058
1058
|
|
1059
1059
|
assert(rebase);
|
1060
1060
|
|
1061
|
+
GITERR_CHECK_VERSION(given_opts, GIT_REBASE_OPTIONS_VERSION, "git_rebase_options");
|
1062
|
+
|
1061
1063
|
if ((error = rebase_normalize_opts(rebase->repo, &opts, given_opts)) < 0)
|
1062
1064
|
goto done;
|
1063
1065
|
|
@@ -1771,6 +1771,15 @@ static int reflog_append(refdb_fs_backend *backend, const git_reference *ref, co
|
|
1771
1771
|
goto cleanup;
|
1772
1772
|
}
|
1773
1773
|
|
1774
|
+
/* If the new branch matches part of the namespace of a previously deleted branch,
|
1775
|
+
* there maybe an obsolete/unused directory (or directory hierarchy) in the way.
|
1776
|
+
*/
|
1777
|
+
if (git_path_isdir(git_buf_cstr(&path)) &&
|
1778
|
+
(git_futils_rmdir_r(git_buf_cstr(&path), NULL, GIT_RMDIR_SKIP_NONEMPTY) < 0)) {
|
1779
|
+
error = -1;
|
1780
|
+
goto cleanup;
|
1781
|
+
}
|
1782
|
+
|
1774
1783
|
error = git_futils_writebuffer(&buf, git_buf_cstr(&path), O_WRONLY|O_CREAT|O_APPEND, GIT_REFLOG_FILE_MODE);
|
1775
1784
|
|
1776
1785
|
cleanup:
|
data/vendor/libgit2/src/remote.c
CHANGED
@@ -1459,7 +1459,7 @@ int git_remote_update_tips(
|
|
1459
1459
|
const char *reflog_message)
|
1460
1460
|
{
|
1461
1461
|
git_refspec *spec, tagspec;
|
1462
|
-
git_vector refs;
|
1462
|
+
git_vector refs = GIT_VECTOR_INIT;
|
1463
1463
|
int error;
|
1464
1464
|
size_t i;
|
1465
1465
|
|
@@ -2330,6 +2330,10 @@ int git_remote_upload(git_remote *remote, const git_strarray *refspecs, const gi
|
|
2330
2330
|
(error = git_remote_connect(remote, GIT_DIRECTION_PUSH)) < 0)
|
2331
2331
|
goto cleanup;
|
2332
2332
|
|
2333
|
+
free_refspecs(&remote->active_refspecs);
|
2334
|
+
if (dwim_refspecs(&remote->active_refspecs, &remote->refspecs, &remote->refs) < 0)
|
2335
|
+
goto cleanup;
|
2336
|
+
|
2333
2337
|
if (remote->push) {
|
2334
2338
|
git_push_free(remote->push);
|
2335
2339
|
remote->push = NULL;
|
@@ -808,7 +808,8 @@ const char *git_repository__8dot3_name(git_repository *repo)
|
|
808
808
|
|
809
809
|
/* We anticipate the 8.3 name is "GIT~1", so use a static for
|
810
810
|
* easy testing in the common case */
|
811
|
-
if (
|
811
|
+
if (repo->name_8dot3 &&
|
812
|
+
strcasecmp(repo->name_8dot3, git_repository__8dot3_default) == 0)
|
812
813
|
repo->has_8dot3_default = 1;
|
813
814
|
}
|
814
815
|
#endif
|
@@ -1723,7 +1724,7 @@ int git_repository_set_bare(git_repository *repo)
|
|
1723
1724
|
if ((error = git_repository_config__weakptr(&config, repo)) < 0)
|
1724
1725
|
return error;
|
1725
1726
|
|
1726
|
-
if ((error = git_config_set_bool(config, "core.bare",
|
1727
|
+
if ((error = git_config_set_bool(config, "core.bare", true)) < 0)
|
1727
1728
|
return error;
|
1728
1729
|
|
1729
1730
|
if ((error = git_config__update_entry(config, "core.worktree", NULL, true, true)) < 0)
|
data/vendor/libgit2/src/stream.h
CHANGED
@@ -15,6 +15,11 @@ GIT_INLINE(int) git_stream_connect(git_stream *st)
|
|
15
15
|
return st->connect(st);
|
16
16
|
}
|
17
17
|
|
18
|
+
GIT_INLINE(int) git_stream_is_encrypted(git_stream *st)
|
19
|
+
{
|
20
|
+
return st->encrypted;
|
21
|
+
}
|
22
|
+
|
18
23
|
GIT_INLINE(int) git_stream_certificate(git_cert **out, git_stream *st)
|
19
24
|
{
|
20
25
|
if (!st->encrypted) {
|
@@ -350,6 +350,11 @@ static int on_headers_complete(http_parser *parser)
|
|
350
350
|
} else {
|
351
351
|
assert(t->cred);
|
352
352
|
|
353
|
+
if (!(t->cred->credtype & allowed_auth_types)) {
|
354
|
+
giterr_set(GITERR_NET, "credentials callback returned an invalid cred type");
|
355
|
+
return t->parse_error = PARSE_ERROR_GENERIC;
|
356
|
+
}
|
357
|
+
|
353
358
|
/* Successfully acquired a credential. */
|
354
359
|
t->parse_error = PARSE_ERROR_REPLAY;
|
355
360
|
return 0;
|
@@ -553,7 +558,8 @@ static int http_connect(http_subtransport *t)
|
|
553
558
|
error = git_stream_connect(t->io);
|
554
559
|
|
555
560
|
#ifdef GIT_SSL
|
556
|
-
if ((!error || error == GIT_ECERTIFICATE) && t->owner->certificate_check_cb != NULL
|
561
|
+
if ((!error || error == GIT_ECERTIFICATE) && t->owner->certificate_check_cb != NULL &&
|
562
|
+
git_stream_is_encrypted(t->io)) {
|
557
563
|
git_cert *cert;
|
558
564
|
int is_valid;
|
559
565
|
|
@@ -448,12 +448,8 @@ int p_stat(const char* path, struct stat* buf)
|
|
448
448
|
git_win32_path path_w;
|
449
449
|
int len;
|
450
450
|
|
451
|
-
if ((len = git_win32_path_from_utf8(path_w, path)) < 0
|
452
|
-
|
453
|
-
|
454
|
-
git_win32__path_trim_end(path_w, len);
|
455
|
-
|
456
|
-
if (lstat_w(path_w, buf, false) < 0)
|
451
|
+
if ((len = git_win32_path_from_utf8(path_w, path)) < 0 ||
|
452
|
+
lstat_w(path_w, buf, false) < 0)
|
457
453
|
return -1;
|
458
454
|
|
459
455
|
/* The item is a symbolic link or mount point. No need to iterate
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rugged
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.22.
|
4
|
+
version: 0.22.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Chacon
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-05-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake-compiler
|
@@ -506,9 +506,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
506
506
|
version: 1.9.3
|
507
507
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
508
508
|
requirements:
|
509
|
-
- - "
|
509
|
+
- - ">="
|
510
510
|
- !ruby/object:Gem::Version
|
511
|
-
version:
|
511
|
+
version: '0'
|
512
512
|
requirements: []
|
513
513
|
rubyforge_project:
|
514
514
|
rubygems_version: 2.2.2
|