rugged 0.24.0b9 → 0.24.0b11
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/include/git2/blame.h +6 -6
- data/vendor/libgit2/include/git2/blob.h +2 -2
- data/vendor/libgit2/include/git2/commit.h +13 -0
- data/vendor/libgit2/include/git2/diff.h +4 -1
- data/vendor/libgit2/src/blame.c +12 -12
- data/vendor/libgit2/src/blame.h +3 -3
- data/vendor/libgit2/src/blame_git.c +22 -16
- data/vendor/libgit2/src/commit.c +28 -0
- data/vendor/libgit2/src/commit.h +1 -0
- data/vendor/libgit2/src/diff.c +10 -1
- data/vendor/libgit2/src/idxmap.h +1 -0
- data/vendor/libgit2/src/index.c +59 -13
- data/vendor/libgit2/src/index.h +2 -0
- data/vendor/libgit2/src/merge.c +2 -5
- data/vendor/libgit2/src/transports/winhttp.c +4 -1
- data/vendor/libgit2/src/vector.c +7 -0
- data/vendor/libgit2/src/vector.h +1 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 35c31e3f98a02a4d6608d6ef7f8b6456e4cccd50
|
4
|
+
data.tar.gz: 80737d111cc76ea74882b0c65ee2eac6e01bbf44
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5f804e4bdc3a71f54c4b0dd7aa73adf2e9fdb9e5ca4d01b167a338a171496c2b06ceacf4b9f99092cea3d9e175ec081bd22a0703335822545f329db0d16c5f47
|
7
|
+
data.tar.gz: 330afdcb7d42082175e3d174aabbc41743156e535a97358d312e1ebbbcb2cb5822dde0e6641bba7c938edc89907ab500ca83ebb441414e4c93772394105ae95f
|
data/lib/rugged/version.rb
CHANGED
@@ -74,8 +74,8 @@ typedef struct git_blame_options {
|
|
74
74
|
uint16_t min_match_characters;
|
75
75
|
git_oid newest_commit;
|
76
76
|
git_oid oldest_commit;
|
77
|
-
|
78
|
-
|
77
|
+
size_t min_line;
|
78
|
+
size_t max_line;
|
79
79
|
} git_blame_options;
|
80
80
|
|
81
81
|
#define GIT_BLAME_OPTIONS_VERSION 1
|
@@ -113,15 +113,15 @@ GIT_EXTERN(int) git_blame_init_options(
|
|
113
113
|
* root, or the commit specified in git_blame_options.oldest_commit)
|
114
114
|
*/
|
115
115
|
typedef struct git_blame_hunk {
|
116
|
-
|
116
|
+
size_t lines_in_hunk;
|
117
117
|
|
118
118
|
git_oid final_commit_id;
|
119
|
-
|
119
|
+
size_t final_start_line_number;
|
120
120
|
git_signature *final_signature;
|
121
121
|
|
122
122
|
git_oid orig_commit_id;
|
123
123
|
const char *orig_path;
|
124
|
-
|
124
|
+
size_t orig_start_line_number;
|
125
125
|
git_signature *orig_signature;
|
126
126
|
|
127
127
|
char boundary;
|
@@ -156,7 +156,7 @@ GIT_EXTERN(const git_blame_hunk*) git_blame_get_hunk_byindex(
|
|
156
156
|
*/
|
157
157
|
GIT_EXTERN(const git_blame_hunk*) git_blame_get_hunk_byline(
|
158
158
|
git_blame *blame,
|
159
|
-
|
159
|
+
size_t lineno);
|
160
160
|
|
161
161
|
/**
|
162
162
|
* Get the blame for a single file.
|
@@ -171,8 +171,8 @@ typedef int (*git_blob_chunk_cb)(char *content, size_t max_length, void *payload
|
|
171
171
|
* - The `callback` must return the number of bytes that have been
|
172
172
|
* written to the `content` buffer.
|
173
173
|
*
|
174
|
-
* - When there is no more data to stream, `callback` should return
|
175
|
-
*
|
174
|
+
* - When there is no more data to stream, `callback` should return 0.
|
175
|
+
* This will prevent it from being invoked anymore.
|
176
176
|
*
|
177
177
|
* - If an error occurs, the callback should return a negative value.
|
178
178
|
* This value will be returned to the caller.
|
@@ -127,6 +127,19 @@ GIT_EXTERN(const char *) git_commit_message_raw(const git_commit *commit);
|
|
127
127
|
*/
|
128
128
|
GIT_EXTERN(const char *) git_commit_summary(git_commit *commit);
|
129
129
|
|
130
|
+
/**
|
131
|
+
* Get the long "body" of the git commit message.
|
132
|
+
*
|
133
|
+
* The returned message is the body of the commit, comprising
|
134
|
+
* everything but the first paragraph of the message. Leading and
|
135
|
+
* trailing whitespaces are trimmed.
|
136
|
+
*
|
137
|
+
* @param commit a previously loaded commit.
|
138
|
+
* @return the body of a commit or NULL when no the message only
|
139
|
+
* consists of a summary
|
140
|
+
*/
|
141
|
+
GIT_EXTERN(const char *) git_commit_body(git_commit *commit);
|
142
|
+
|
130
143
|
/**
|
131
144
|
* Get the commit time (i.e. committer time) of a commit.
|
132
145
|
*
|
@@ -1286,12 +1286,15 @@ typedef struct {
|
|
1286
1286
|
/** Summary of the change */
|
1287
1287
|
const char *summary;
|
1288
1288
|
|
1289
|
+
/** Commit message's body */
|
1290
|
+
const char *body;
|
1291
|
+
|
1289
1292
|
/** Author of the change */
|
1290
1293
|
const git_signature *author;
|
1291
1294
|
} git_diff_format_email_options;
|
1292
1295
|
|
1293
1296
|
#define GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION 1
|
1294
|
-
#define GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT {GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION, 0, 1, 1, NULL, NULL, NULL}
|
1297
|
+
#define GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT {GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION, 0, 1, 1, NULL, NULL, NULL, NULL}
|
1295
1298
|
|
1296
1299
|
/**
|
1297
1300
|
* Create an e-mail ready patch from a diff.
|
data/vendor/libgit2/src/blame.c
CHANGED
@@ -23,8 +23,8 @@ static int hunk_byfinalline_search_cmp(const void *key, const void *entry)
|
|
23
23
|
git_blame_hunk *hunk = (git_blame_hunk*)entry;
|
24
24
|
|
25
25
|
size_t lineno = *(size_t*)key;
|
26
|
-
size_t lines_in_hunk =
|
27
|
-
size_t final_start_line_number =
|
26
|
+
size_t lines_in_hunk = hunk->lines_in_hunk;
|
27
|
+
size_t final_start_line_number = hunk->final_start_line_number;
|
28
28
|
|
29
29
|
if (lineno < final_start_line_number)
|
30
30
|
return -1;
|
@@ -44,7 +44,7 @@ static int hunk_cmp(const void *_a, const void *_b)
|
|
44
44
|
|
45
45
|
static bool hunk_ends_at_or_before_line(git_blame_hunk *hunk, size_t line)
|
46
46
|
{
|
47
|
-
return line >= (
|
47
|
+
return line >= (hunk->final_start_line_number + hunk->lines_in_hunk - 1);
|
48
48
|
}
|
49
49
|
|
50
50
|
static bool hunk_starts_at_or_after_line(git_blame_hunk *hunk, size_t line)
|
@@ -53,9 +53,9 @@ static bool hunk_starts_at_or_after_line(git_blame_hunk *hunk, size_t line)
|
|
53
53
|
}
|
54
54
|
|
55
55
|
static git_blame_hunk* new_hunk(
|
56
|
-
|
57
|
-
|
58
|
-
|
56
|
+
size_t start,
|
57
|
+
size_t lines,
|
58
|
+
size_t orig_start,
|
59
59
|
const char *path)
|
60
60
|
{
|
61
61
|
git_blame_hunk *hunk = git__calloc(1, sizeof(git_blame_hunk));
|
@@ -166,9 +166,9 @@ const git_blame_hunk *git_blame_get_hunk_byindex(git_blame *blame, uint32_t inde
|
|
166
166
|
return (git_blame_hunk*)git_vector_get(&blame->hunks, index);
|
167
167
|
}
|
168
168
|
|
169
|
-
const git_blame_hunk *git_blame_get_hunk_byline(git_blame *blame,
|
169
|
+
const git_blame_hunk *git_blame_get_hunk_byline(git_blame *blame, size_t lineno)
|
170
170
|
{
|
171
|
-
size_t i, new_lineno =
|
171
|
+
size_t i, new_lineno = lineno;
|
172
172
|
assert(blame);
|
173
173
|
|
174
174
|
if (!git_vector_bsearch2(&i, &blame->hunks, hunk_byfinalline_search_cmp, &new_lineno)) {
|
@@ -223,8 +223,8 @@ static git_blame_hunk *split_hunk_in_vector(
|
|
223
223
|
}
|
224
224
|
|
225
225
|
new_line_count = hunk->lines_in_hunk - rel_line;
|
226
|
-
nh = new_hunk(
|
227
|
-
|
226
|
+
nh = new_hunk(hunk->final_start_line_number + rel_line, new_line_count,
|
227
|
+
hunk->orig_start_line_number + rel_line, hunk->orig_path);
|
228
228
|
|
229
229
|
if (!nh)
|
230
230
|
return NULL;
|
@@ -233,7 +233,7 @@ static git_blame_hunk *split_hunk_in_vector(
|
|
233
233
|
git_oid_cpy(&nh->orig_commit_id, &hunk->orig_commit_id);
|
234
234
|
|
235
235
|
/* Adjust hunk that was split */
|
236
|
-
hunk->lines_in_hunk -=
|
236
|
+
hunk->lines_in_hunk -= new_line_count;
|
237
237
|
git_vector_insert_sorted(vec, nh, NULL);
|
238
238
|
{
|
239
239
|
git_blame_hunk *ret = return_new ? nh : hunk;
|
@@ -442,7 +442,7 @@ static int buffer_line_cb(
|
|
442
442
|
} else {
|
443
443
|
/* Create a new buffer-blame hunk with this line */
|
444
444
|
shift_hunks_by(&blame->hunks, blame->current_diff_line, 1);
|
445
|
-
blame->current_hunk = new_hunk(
|
445
|
+
blame->current_hunk = new_hunk(blame->current_diff_line, 1, 0, blame->path);
|
446
446
|
GITERR_CHECK_ALLOC(blame->current_hunk);
|
447
447
|
|
448
448
|
git_vector_insert_sorted(&blame->hunks, blame->current_hunk, NULL);
|
data/vendor/libgit2/src/blame.h
CHANGED
@@ -31,10 +31,10 @@ typedef struct git_blame__entry {
|
|
31
31
|
/* the first line of this group in the final image;
|
32
32
|
* internally all line numbers are 0 based.
|
33
33
|
*/
|
34
|
-
|
34
|
+
size_t lno;
|
35
35
|
|
36
36
|
/* how many lines this group has */
|
37
|
-
|
37
|
+
size_t num_lines;
|
38
38
|
|
39
39
|
/* the commit that introduced this group into the final image */
|
40
40
|
git_blame__origin *suspect;
|
@@ -51,7 +51,7 @@ typedef struct git_blame__entry {
|
|
51
51
|
/* the line number of the first line of this group in the
|
52
52
|
* suspect's file; internally all line numbers are 0 based.
|
53
53
|
*/
|
54
|
-
|
54
|
+
size_t s_lno;
|
55
55
|
|
56
56
|
/* how significant this entry is -- cached to avoid
|
57
57
|
* scanning the lines over and over.
|
@@ -93,18 +93,25 @@ static bool same_suspect(git_blame__origin *a, git_blame__origin *b)
|
|
93
93
|
}
|
94
94
|
|
95
95
|
/* find the line number of the last line the target is suspected for */
|
96
|
-
static
|
96
|
+
static bool find_last_in_target(size_t *out, git_blame *blame, git_blame__origin *target)
|
97
97
|
{
|
98
98
|
git_blame__entry *e;
|
99
|
-
|
99
|
+
size_t last_in_target = 0;
|
100
|
+
bool found = false;
|
101
|
+
|
102
|
+
*out = 0;
|
100
103
|
|
101
104
|
for (e=blame->ent; e; e=e->next) {
|
102
105
|
if (e->guilty || !same_suspect(e->suspect, target))
|
103
106
|
continue;
|
104
|
-
if (last_in_target < e->s_lno + e->num_lines)
|
107
|
+
if (last_in_target < e->s_lno + e->num_lines) {
|
108
|
+
found = true;
|
105
109
|
last_in_target = e->s_lno + e->num_lines;
|
110
|
+
}
|
106
111
|
}
|
107
|
-
|
112
|
+
|
113
|
+
*out = last_in_target;
|
114
|
+
return found;
|
108
115
|
}
|
109
116
|
|
110
117
|
/*
|
@@ -122,9 +129,9 @@ static int find_last_in_target(git_blame *blame, git_blame__origin *target)
|
|
122
129
|
* to be blamed for the parent, and after that portion.
|
123
130
|
*/
|
124
131
|
static void split_overlap(git_blame__entry *split, git_blame__entry *e,
|
125
|
-
|
132
|
+
size_t tlno, size_t plno, size_t same, git_blame__origin *parent)
|
126
133
|
{
|
127
|
-
|
134
|
+
size_t chunk_end_lno;
|
128
135
|
|
129
136
|
if (e->s_lno < tlno) {
|
130
137
|
/* there is a pre-chunk part not blamed on the parent */
|
@@ -265,9 +272,9 @@ static void decref_split(git_blame__entry *split)
|
|
265
272
|
static void blame_overlap(
|
266
273
|
git_blame *blame,
|
267
274
|
git_blame__entry *e,
|
268
|
-
|
269
|
-
|
270
|
-
|
275
|
+
size_t tlno,
|
276
|
+
size_t plno,
|
277
|
+
size_t same,
|
271
278
|
git_blame__origin *parent)
|
272
279
|
{
|
273
280
|
git_blame__entry split[3] = {{0}};
|
@@ -285,9 +292,9 @@ static void blame_overlap(
|
|
285
292
|
*/
|
286
293
|
static void blame_chunk(
|
287
294
|
git_blame *blame,
|
288
|
-
|
289
|
-
|
290
|
-
|
295
|
+
size_t tlno,
|
296
|
+
size_t plno,
|
297
|
+
size_t same,
|
291
298
|
git_blame__origin *target,
|
292
299
|
git_blame__origin *parent)
|
293
300
|
{
|
@@ -314,7 +321,7 @@ static int my_emit(
|
|
314
321
|
blame_chunk(d->blame, d->tlno, d->plno, start_b, d->target, d->parent);
|
315
322
|
d->plno = start_a + count_a;
|
316
323
|
d->tlno = start_b + count_b;
|
317
|
-
|
324
|
+
|
318
325
|
return 0;
|
319
326
|
}
|
320
327
|
|
@@ -376,12 +383,11 @@ static int pass_blame_to_parent(
|
|
376
383
|
git_blame__origin *target,
|
377
384
|
git_blame__origin *parent)
|
378
385
|
{
|
379
|
-
|
386
|
+
size_t last_in_target;
|
380
387
|
mmfile_t file_p, file_o;
|
381
388
|
blame_chunk_cb_data d = { blame, target, parent, 0, 0 };
|
382
389
|
|
383
|
-
|
384
|
-
if (last_in_target < 0)
|
390
|
+
if (!find_last_in_target(&last_in_target, blame, target))
|
385
391
|
return 1; /* nothing remains for this target */
|
386
392
|
|
387
393
|
fill_origin_blob(parent, &file_p);
|
data/vendor/libgit2/src/commit.c
CHANGED
@@ -31,6 +31,7 @@ void git_commit__free(void *_commit)
|
|
31
31
|
git__free(commit->raw_message);
|
32
32
|
git__free(commit->message_encoding);
|
33
33
|
git__free(commit->summary);
|
34
|
+
git__free(commit->body);
|
34
35
|
|
35
36
|
git__free(commit);
|
36
37
|
}
|
@@ -472,6 +473,33 @@ const char *git_commit_summary(git_commit *commit)
|
|
472
473
|
return commit->summary;
|
473
474
|
}
|
474
475
|
|
476
|
+
const char *git_commit_body(git_commit *commit)
|
477
|
+
{
|
478
|
+
const char *msg, *end;
|
479
|
+
|
480
|
+
assert(commit);
|
481
|
+
|
482
|
+
if (!commit->body) {
|
483
|
+
/* search for end of summary */
|
484
|
+
for (msg = git_commit_message(commit); *msg; ++msg)
|
485
|
+
if (msg[0] == '\n' && (!msg[1] || msg[1] == '\n'))
|
486
|
+
break;
|
487
|
+
|
488
|
+
/* trim leading and trailing whitespace */
|
489
|
+
for (; *msg; ++msg)
|
490
|
+
if (!git__isspace(*msg))
|
491
|
+
break;
|
492
|
+
for (end = msg + strlen(msg) - 1; msg <= end; --end)
|
493
|
+
if (!git__isspace(*end))
|
494
|
+
break;
|
495
|
+
|
496
|
+
if (*msg)
|
497
|
+
commit->body = git__strndup(msg, end - msg + 1);
|
498
|
+
}
|
499
|
+
|
500
|
+
return commit->body;
|
501
|
+
}
|
502
|
+
|
475
503
|
int git_commit_tree(git_tree **tree_out, const git_commit *commit)
|
476
504
|
{
|
477
505
|
assert(commit);
|
data/vendor/libgit2/src/commit.h
CHANGED
data/vendor/libgit2/src/diff.c
CHANGED
@@ -1659,6 +1659,7 @@ int git_diff_format_email__append_header_tobuf(
|
|
1659
1659
|
const git_oid *id,
|
1660
1660
|
const git_signature *author,
|
1661
1661
|
const char *summary,
|
1662
|
+
const char *body,
|
1662
1663
|
size_t patch_no,
|
1663
1664
|
size_t total_patches,
|
1664
1665
|
bool exclude_patchno_marker)
|
@@ -1698,6 +1699,13 @@ int git_diff_format_email__append_header_tobuf(
|
|
1698
1699
|
|
1699
1700
|
error = git_buf_printf(out, "%s\n\n", summary);
|
1700
1701
|
|
1702
|
+
if (body) {
|
1703
|
+
git_buf_puts(out, body);
|
1704
|
+
|
1705
|
+
if (out->ptr[out->size - 1] != '\n')
|
1706
|
+
git_buf_putc(out, '\n');
|
1707
|
+
}
|
1708
|
+
|
1701
1709
|
return error;
|
1702
1710
|
}
|
1703
1711
|
|
@@ -1775,7 +1783,7 @@ int git_diff_format_email(
|
|
1775
1783
|
|
1776
1784
|
error = git_diff_format_email__append_header_tobuf(out,
|
1777
1785
|
opts->id, opts->author, summary == NULL ? opts->summary : summary,
|
1778
|
-
opts->patch_no, opts->total_patches, ignore_marker);
|
1786
|
+
opts->body, opts->patch_no, opts->total_patches, ignore_marker);
|
1779
1787
|
|
1780
1788
|
if (error < 0)
|
1781
1789
|
goto on_error;
|
@@ -1818,6 +1826,7 @@ int git_diff_commit_as_email(
|
|
1818
1826
|
opts.total_patches = total_patches;
|
1819
1827
|
opts.id = git_commit_id(commit);
|
1820
1828
|
opts.summary = git_commit_summary(commit);
|
1829
|
+
opts.body = git_commit_body(commit);
|
1821
1830
|
opts.author = git_commit_author(commit);
|
1822
1831
|
|
1823
1832
|
if ((error = git_diff__commit(&diff, repo, commit, diff_opts)) < 0)
|
data/vendor/libgit2/src/idxmap.h
CHANGED
@@ -70,6 +70,7 @@ static kh_inline khint_t idxentry_hash(const git_index_entry *e)
|
|
70
70
|
#define git_idxmap_valid_index(h, idx) (idx != kh_end(h))
|
71
71
|
#define git_idxmap_has_data(h, idx) kh_exist(h, idx)
|
72
72
|
|
73
|
+
#define git_idxmap_resize(h,s) kh_resize(idx, h, s)
|
73
74
|
#define git_idxmap_free(h) kh_destroy(idx, h), h = NULL
|
74
75
|
#define git_idxmap_clear(h) kh_clear(idx, h)
|
75
76
|
|
data/vendor/libgit2/src/index.c
CHANGED
@@ -879,6 +879,18 @@ void git_index_entry__init_from_stat(
|
|
879
879
|
entry->file_size = st->st_size;
|
880
880
|
}
|
881
881
|
|
882
|
+
static void index_entry_adjust_namemask(
|
883
|
+
git_index_entry *entry,
|
884
|
+
size_t path_length)
|
885
|
+
{
|
886
|
+
entry->flags &= ~GIT_IDXENTRY_NAMEMASK;
|
887
|
+
|
888
|
+
if (path_length < GIT_IDXENTRY_NAMEMASK)
|
889
|
+
entry->flags |= path_length & GIT_IDXENTRY_NAMEMASK;
|
890
|
+
else
|
891
|
+
entry->flags |= GIT_IDXENTRY_NAMEMASK;
|
892
|
+
}
|
893
|
+
|
882
894
|
static int index_entry_create(
|
883
895
|
git_index_entry **out,
|
884
896
|
git_repository *repo,
|
@@ -1279,13 +1291,7 @@ static int index_insert(
|
|
1279
1291
|
|
1280
1292
|
/* make sure that the path length flag is correct */
|
1281
1293
|
path_length = ((struct entry_internal *)entry)->pathlen;
|
1282
|
-
|
1283
|
-
entry->flags &= ~GIT_IDXENTRY_NAMEMASK;
|
1284
|
-
|
1285
|
-
if (path_length < GIT_IDXENTRY_NAMEMASK)
|
1286
|
-
entry->flags |= path_length & GIT_IDXENTRY_NAMEMASK;
|
1287
|
-
else
|
1288
|
-
entry->flags |= GIT_IDXENTRY_NAMEMASK;
|
1294
|
+
index_entry_adjust_namemask(entry, path_length);
|
1289
1295
|
|
1290
1296
|
/* this entry is now up-to-date and should not be checked for raciness */
|
1291
1297
|
entry->flags_extended |= GIT_IDXENTRY_UPTODATE;
|
@@ -1542,6 +1548,50 @@ int git_index_remove_bypath(git_index *index, const char *path)
|
|
1542
1548
|
return 0;
|
1543
1549
|
}
|
1544
1550
|
|
1551
|
+
int git_index__fill(git_index *index, const git_vector *source_entries)
|
1552
|
+
{
|
1553
|
+
const git_index_entry *source_entry = NULL;
|
1554
|
+
size_t i;
|
1555
|
+
int ret = 0;
|
1556
|
+
|
1557
|
+
assert(index);
|
1558
|
+
|
1559
|
+
if (!source_entries->length)
|
1560
|
+
return 0;
|
1561
|
+
|
1562
|
+
if (git_mutex_lock(&index->lock) < 0) {
|
1563
|
+
giterr_set(GITERR_OS, "Unable to acquire index lock");
|
1564
|
+
return -1;
|
1565
|
+
}
|
1566
|
+
|
1567
|
+
git_vector_size_hint(&index->entries, source_entries->length);
|
1568
|
+
git_idxmap_resize(index->entries_map, source_entries->length * 1.3);
|
1569
|
+
|
1570
|
+
git_vector_foreach(source_entries, i, source_entry) {
|
1571
|
+
git_index_entry *entry = NULL;
|
1572
|
+
|
1573
|
+
if ((ret = index_entry_dup(&entry, index, source_entry)) < 0)
|
1574
|
+
break;
|
1575
|
+
|
1576
|
+
index_entry_adjust_namemask(entry, ((struct entry_internal *)entry)->pathlen);
|
1577
|
+
entry->flags_extended |= GIT_IDXENTRY_UPTODATE;
|
1578
|
+
entry->mode = git_index__create_mode(entry->mode);
|
1579
|
+
|
1580
|
+
if ((ret = git_vector_insert(&index->entries, entry)) < 0)
|
1581
|
+
break;
|
1582
|
+
|
1583
|
+
INSERT_IN_MAP(index, entry, ret);
|
1584
|
+
if (ret < 0)
|
1585
|
+
break;
|
1586
|
+
}
|
1587
|
+
|
1588
|
+
if (!ret)
|
1589
|
+
git_vector_sort(&index->entries);
|
1590
|
+
|
1591
|
+
git_mutex_unlock(&index->lock);
|
1592
|
+
return ret;
|
1593
|
+
}
|
1594
|
+
|
1545
1595
|
|
1546
1596
|
int git_index_add(git_index *index, const git_index_entry *source_entry)
|
1547
1597
|
{
|
@@ -2852,11 +2902,7 @@ static int read_tree_cb(
|
|
2852
2902
|
entry->flags_extended = 0;
|
2853
2903
|
}
|
2854
2904
|
|
2855
|
-
|
2856
|
-
entry->flags = path.size & GIT_IDXENTRY_NAMEMASK;
|
2857
|
-
else
|
2858
|
-
entry->flags = GIT_IDXENTRY_NAMEMASK;
|
2859
|
-
|
2905
|
+
index_entry_adjust_namemask(entry, path.size);
|
2860
2906
|
git_buf_free(&path);
|
2861
2907
|
|
2862
2908
|
if (git_vector_insert(data->new_entries, entry) < 0) {
|
@@ -3014,7 +3060,7 @@ int git_index_read_index(
|
|
3014
3060
|
INSERT_IN_MAP_EX(index, new_entries_map, add_entry, error);
|
3015
3061
|
}
|
3016
3062
|
|
3017
|
-
if (remove_entry &&
|
3063
|
+
if (remove_entry && error >= 0)
|
3018
3064
|
error = git_vector_insert(&remove_entries, remove_entry);
|
3019
3065
|
|
3020
3066
|
if (error < 0) {
|
data/vendor/libgit2/src/index.h
CHANGED
@@ -113,6 +113,8 @@ GIT_INLINE(bool) git_index_entry_newer_than_index(
|
|
113
113
|
extern int git_index__find_pos(
|
114
114
|
size_t *at_pos, git_index *index, const char *path, size_t path_len, int stage);
|
115
115
|
|
116
|
+
extern int git_index__fill(git_index *index, const git_vector *source_entries);
|
117
|
+
|
116
118
|
extern void git_index__set_ignore_case(git_index *index, bool ignore_case);
|
117
119
|
|
118
120
|
extern unsigned int git_index__create_mode(unsigned int mode);
|
data/vendor/libgit2/src/merge.c
CHANGED
@@ -1739,7 +1739,6 @@ static int index_from_diff_list(git_index **out,
|
|
1739
1739
|
{
|
1740
1740
|
git_index *index;
|
1741
1741
|
size_t i;
|
1742
|
-
git_index_entry *entry;
|
1743
1742
|
git_merge_diff *conflict;
|
1744
1743
|
int error = 0;
|
1745
1744
|
|
@@ -1748,10 +1747,8 @@ static int index_from_diff_list(git_index **out,
|
|
1748
1747
|
if ((error = git_index_new(&index)) < 0)
|
1749
1748
|
return error;
|
1750
1749
|
|
1751
|
-
|
1752
|
-
|
1753
|
-
goto on_error;
|
1754
|
-
}
|
1750
|
+
if ((error = git_index__fill(index, &diff_list->staged)) < 0)
|
1751
|
+
goto on_error;
|
1755
1752
|
|
1756
1753
|
git_vector_foreach(&diff_list->conflicts, i, conflict) {
|
1757
1754
|
const git_index_entry *ancestor =
|
@@ -930,7 +930,10 @@ replay:
|
|
930
930
|
cred_error = t->owner->cred_acquire_cb(&t->cred, t->owner->url,
|
931
931
|
t->connection_data.user, allowed_types, t->owner->cred_acquire_payload);
|
932
932
|
|
933
|
-
|
933
|
+
/* Treat GIT_PASSTHROUGH as though git_cred_acquire_cb isn't set */
|
934
|
+
if (cred_error == GIT_PASSTHROUGH)
|
935
|
+
cred_error = 1;
|
936
|
+
else if (cred_error < 0)
|
934
937
|
return cred_error;
|
935
938
|
}
|
936
939
|
|
data/vendor/libgit2/src/vector.c
CHANGED
@@ -40,6 +40,13 @@ GIT_INLINE(int) resize_vector(git_vector *v, size_t new_size)
|
|
40
40
|
return 0;
|
41
41
|
}
|
42
42
|
|
43
|
+
int git_vector_size_hint(git_vector *v, size_t size_hint)
|
44
|
+
{
|
45
|
+
if (v->_alloc_size >= size_hint)
|
46
|
+
return 0;
|
47
|
+
return resize_vector(v, size_hint);
|
48
|
+
}
|
49
|
+
|
43
50
|
int git_vector_dup(git_vector *v, const git_vector *src, git_vector_cmp cmp)
|
44
51
|
{
|
45
52
|
size_t bytes;
|
data/vendor/libgit2/src/vector.h
CHANGED
@@ -32,6 +32,7 @@ void git_vector_free_deep(git_vector *v); /* free each entry and self */
|
|
32
32
|
void git_vector_clear(git_vector *v);
|
33
33
|
int git_vector_dup(git_vector *v, const git_vector *src, git_vector_cmp cmp);
|
34
34
|
void git_vector_swap(git_vector *a, git_vector *b);
|
35
|
+
int git_vector_size_hint(git_vector *v, size_t size_hint);
|
35
36
|
|
36
37
|
void **git_vector_detach(size_t *size, size_t *asize, git_vector *v);
|
37
38
|
|
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.0b11
|
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-
|
12
|
+
date: 2015-12-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake-compiler
|