rugged 0.24.0b2 → 0.24.0b3
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 +4 -4
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/include/git2/index.h +21 -7
- data/vendor/libgit2/src/commit_list.c +3 -3
- data/vendor/libgit2/src/commit_list.h +1 -1
- data/vendor/libgit2/src/index.c +62 -15
- data/vendor/libgit2/src/signature.c +16 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a31950be316b1d3480f1617cc75189bf90697dc2
|
4
|
+
data.tar.gz: a97a557386b6875652eb2859e88da305fbb65ae3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c6879754a8a09f93cff19b46a3faa180a091dbc5c80f0c00361da4d8661bcd837d362df6f519913501f3a878ec1f0a1fd192dcdb14d3b56d6384661769cc9144
|
7
|
+
data.tar.gz: c958d72e7dfd55e54cd5b6ee6d6e9e56013919eb084759ef67354e02d48f883b93f2f2c5e876c1c48359321d8bb4458f1c5cde6a201ca6a92f19a0accab3a53d
|
data/lib/rugged/version.rb
CHANGED
@@ -154,13 +154,27 @@ typedef enum {
|
|
154
154
|
GIT_INDEX_ADD_CHECK_PATHSPEC = (1u << 2),
|
155
155
|
} git_index_add_option_t;
|
156
156
|
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
157
|
+
typedef enum {
|
158
|
+
/**
|
159
|
+
* Match any index stage.
|
160
|
+
*
|
161
|
+
* Some index APIs take a stage to match; pass this value to match
|
162
|
+
* any entry matching the path regardless of stage.
|
163
|
+
*/
|
164
|
+
GIT_INDEX_STAGE_ANY = -1,
|
165
|
+
|
166
|
+
/** A normal staged file in the index. */
|
167
|
+
GIT_INDEX_STAGE_NORMAL = 0,
|
168
|
+
|
169
|
+
/** The ancestor side of a conflict. */
|
170
|
+
GIT_INDEX_STAGE_ANCESTOR = 1,
|
171
|
+
|
172
|
+
/** The "ours" side of a conflict. */
|
173
|
+
GIT_INDEX_STAGE_OURS = 2,
|
174
|
+
|
175
|
+
/** The "theirs" side of a conflict. */
|
176
|
+
GIT_INDEX_STAGE_THEIRS = 3,
|
177
|
+
} git_index_stage_t;
|
164
178
|
|
165
179
|
/** @name Index File Functions
|
166
180
|
*
|
@@ -110,7 +110,7 @@ static int commit_quick_parse(
|
|
110
110
|
const uint8_t *buffer_end = buffer + buffer_len;
|
111
111
|
const uint8_t *parents_start, *committer_start;
|
112
112
|
int i, parents = 0;
|
113
|
-
|
113
|
+
int64_t commit_time;
|
114
114
|
|
115
115
|
buffer += strlen("tree ") + GIT_OID_HEXSZ + 1;
|
116
116
|
|
@@ -166,10 +166,10 @@ static int commit_quick_parse(
|
|
166
166
|
buffer--;
|
167
167
|
}
|
168
168
|
|
169
|
-
if ((buffer == committer_start) || (
|
169
|
+
if ((buffer == committer_start) || (git__strtol64(&commit_time, (char *)(buffer + 1), NULL, 10) < 0))
|
170
170
|
return commit_error(commit, "cannot parse commit time");
|
171
171
|
|
172
|
-
commit->time =
|
172
|
+
commit->time = commit_time;
|
173
173
|
commit->parsed = 1;
|
174
174
|
return 0;
|
175
175
|
}
|
data/vendor/libgit2/src/index.c
CHANGED
@@ -1114,7 +1114,9 @@ static int check_file_directory_collision(git_index *index,
|
|
1114
1114
|
}
|
1115
1115
|
|
1116
1116
|
static int canonicalize_directory_path(
|
1117
|
-
git_index *index,
|
1117
|
+
git_index *index,
|
1118
|
+
git_index_entry *entry,
|
1119
|
+
git_index_entry *existing)
|
1118
1120
|
{
|
1119
1121
|
const git_index_entry *match, *best = NULL;
|
1120
1122
|
char *search, *sep;
|
@@ -1124,8 +1126,8 @@ static int canonicalize_directory_path(
|
|
1124
1126
|
return 0;
|
1125
1127
|
|
1126
1128
|
/* item already exists in the index, simply re-use the existing case */
|
1127
|
-
if (
|
1128
|
-
memcpy((char *)entry->path,
|
1129
|
+
if (existing) {
|
1130
|
+
memcpy((char *)entry->path, existing->path, strlen(existing->path));
|
1129
1131
|
return 0;
|
1130
1132
|
}
|
1131
1133
|
|
@@ -1190,6 +1192,52 @@ static int index_no_dups(void **old, void *new)
|
|
1190
1192
|
return GIT_EEXISTS;
|
1191
1193
|
}
|
1192
1194
|
|
1195
|
+
static void index_existing_and_best(
|
1196
|
+
git_index_entry **existing,
|
1197
|
+
size_t *existing_position,
|
1198
|
+
git_index_entry **best,
|
1199
|
+
git_index *index,
|
1200
|
+
const git_index_entry *entry)
|
1201
|
+
{
|
1202
|
+
git_index_entry *e;
|
1203
|
+
size_t pos;
|
1204
|
+
int error;
|
1205
|
+
|
1206
|
+
error = index_find(&pos,
|
1207
|
+
index, entry->path, 0, GIT_IDXENTRY_STAGE(entry), false);
|
1208
|
+
|
1209
|
+
if (error == 0) {
|
1210
|
+
*existing = index->entries.contents[pos];
|
1211
|
+
*existing_position = pos;
|
1212
|
+
*best = index->entries.contents[pos];
|
1213
|
+
return;
|
1214
|
+
}
|
1215
|
+
|
1216
|
+
*existing = NULL;
|
1217
|
+
*existing_position = 0;
|
1218
|
+
*best = NULL;
|
1219
|
+
|
1220
|
+
if (GIT_IDXENTRY_STAGE(entry) == 0) {
|
1221
|
+
for (; pos < index->entries.length; pos++) {
|
1222
|
+
int (*strcomp)(const char *a, const char *b) =
|
1223
|
+
index->ignore_case ? git__strcasecmp : git__strcmp;
|
1224
|
+
|
1225
|
+
e = index->entries.contents[pos];
|
1226
|
+
|
1227
|
+
if (strcomp(entry->path, e->path) != 0)
|
1228
|
+
break;
|
1229
|
+
|
1230
|
+
if (GIT_IDXENTRY_STAGE(e) == GIT_INDEX_STAGE_ANCESTOR) {
|
1231
|
+
*best = e;
|
1232
|
+
continue;
|
1233
|
+
} else {
|
1234
|
+
*best = e;
|
1235
|
+
break;
|
1236
|
+
}
|
1237
|
+
}
|
1238
|
+
}
|
1239
|
+
}
|
1240
|
+
|
1193
1241
|
/* index_insert takes ownership of the new entry - if it can't insert
|
1194
1242
|
* it, then it will return an error **and also free the entry**. When
|
1195
1243
|
* it replaces an existing entry, it will update the entry_ptr with the
|
@@ -1208,7 +1256,7 @@ static int index_insert(
|
|
1208
1256
|
{
|
1209
1257
|
int error = 0;
|
1210
1258
|
size_t path_length, position;
|
1211
|
-
git_index_entry *existing
|
1259
|
+
git_index_entry *existing, *best, *entry;
|
1212
1260
|
|
1213
1261
|
assert(index && entry_ptr);
|
1214
1262
|
|
@@ -1231,20 +1279,19 @@ static int index_insert(
|
|
1231
1279
|
|
1232
1280
|
git_vector_sort(&index->entries);
|
1233
1281
|
|
1234
|
-
/* look if an entry with this path already exists
|
1235
|
-
|
1236
|
-
|
1237
|
-
|
1238
|
-
|
1239
|
-
|
1240
|
-
|
1241
|
-
|
1242
|
-
|
1243
|
-
}
|
1282
|
+
/* look if an entry with this path already exists, either staged, or (if
|
1283
|
+
* this entry is a regular staged item) as the "ours" side of a conflict.
|
1284
|
+
*/
|
1285
|
+
index_existing_and_best(&existing, &position, &best, index, entry);
|
1286
|
+
|
1287
|
+
/* update the file mode */
|
1288
|
+
entry->mode = trust_mode ?
|
1289
|
+
git_index__create_mode(entry->mode) :
|
1290
|
+
index_merge_mode(index, best, entry->mode);
|
1244
1291
|
|
1245
1292
|
/* canonicalize the directory name */
|
1246
1293
|
if (!trust_path)
|
1247
|
-
error = canonicalize_directory_path(index, entry);
|
1294
|
+
error = canonicalize_directory_path(index, entry, best);
|
1248
1295
|
|
1249
1296
|
/* look for tree / blob name collisions, removing conflicts if requested */
|
1250
1297
|
if (!error)
|
@@ -34,13 +34,27 @@ static bool contains_angle_brackets(const char *input)
|
|
34
34
|
return strchr(input, '<') != NULL || strchr(input, '>') != NULL;
|
35
35
|
}
|
36
36
|
|
37
|
+
static bool is_crud(unsigned char c)
|
38
|
+
{
|
39
|
+
return c <= 32 ||
|
40
|
+
c == '.' ||
|
41
|
+
c == ',' ||
|
42
|
+
c == ':' ||
|
43
|
+
c == ';' ||
|
44
|
+
c == '<' ||
|
45
|
+
c == '>' ||
|
46
|
+
c == '"' ||
|
47
|
+
c == '\\' ||
|
48
|
+
c == '\'';
|
49
|
+
}
|
50
|
+
|
37
51
|
static char *extract_trimmed(const char *ptr, size_t len)
|
38
52
|
{
|
39
|
-
while (len &&
|
53
|
+
while (len && is_crud((unsigned char)ptr[0])) {
|
40
54
|
ptr++; len--;
|
41
55
|
}
|
42
56
|
|
43
|
-
while (len &&
|
57
|
+
while (len && is_crud((unsigned char)ptr[len - 1])) {
|
44
58
|
len--;
|
45
59
|
}
|
46
60
|
|
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.24.
|
4
|
+
version: 0.24.0b3
|
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-10-
|
12
|
+
date: 2015-10-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake-compiler
|
@@ -529,7 +529,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
529
529
|
version: 1.3.1
|
530
530
|
requirements: []
|
531
531
|
rubyforge_project:
|
532
|
-
rubygems_version: 2.2.
|
532
|
+
rubygems_version: 2.2.2
|
533
533
|
signing_key:
|
534
534
|
specification_version: 4
|
535
535
|
summary: Rugged is a Ruby binding to the libgit2 linkable library
|