rugged 0.24.0b11 → 0.24.0b12
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/ext/rugged/extconf.rb +15 -3
- data/ext/rugged/rugged_commit.c +49 -0
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +2 -2
- data/vendor/libgit2/include/git2/stash.h +1 -1
- data/vendor/libgit2/libgit2.pc.in +1 -1
- data/vendor/libgit2/src/index.c +15 -130
- data/vendor/libgit2/src/index.h +0 -1
- data/vendor/libgit2/src/path.c +1 -1
- data/vendor/libgit2/src/repository.c +3 -1
- data/vendor/libgit2/src/tag.c +1 -1
- data/vendor/libgit2/src/transports/ssh.c +8 -3
- 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: 4bd70b6169b13b2a50eff47a4d3b01e333388f12
|
4
|
+
data.tar.gz: cfb572bc347939bab52487dff98b4c75650bea53
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f43d9d0c6618f4a2d490bfc7e39a810bc1753741e93671d427c38f4d9dd235061ec37f4f6430c553bb9d9ad1aa1fc331cc27aee7ea659e3ba479ceb7ae2b98ed
|
7
|
+
data.tar.gz: 2700a84afcd1c5647917597154ff348c7884657d4df03a040dc8e322e536d7086548d5b92a22acd8bb91b6f3ca58e2a32be10be681af8b49ecbd2f36bc137510
|
data/ext/rugged/extconf.rb
CHANGED
@@ -15,6 +15,10 @@ def sys(cmd)
|
|
15
15
|
ret
|
16
16
|
end
|
17
17
|
|
18
|
+
def windows?
|
19
|
+
RbConfig::CONFIG['host_os'] =~ /mswin|mingw/
|
20
|
+
end
|
21
|
+
|
18
22
|
if !(MAKE = find_executable('gmake') || find_executable('make'))
|
19
23
|
abort "ERROR: GNU make is required to build Rugged."
|
20
24
|
end
|
@@ -55,7 +59,7 @@ else
|
|
55
59
|
abort "ERROR: CMake is required to build Rugged."
|
56
60
|
end
|
57
61
|
|
58
|
-
if !find_executable('pkg-config')
|
62
|
+
if !windows? && !find_executable('pkg-config')
|
59
63
|
abort "ERROR: pkg-config is required to build Rugged."
|
60
64
|
end
|
61
65
|
|
@@ -66,8 +70,16 @@ else
|
|
66
70
|
sys("cmake .. -DBUILD_CLAR=OFF -DTHREADSAFE=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_C_FLAGS=-fPIC -DCMAKE_BUILD_TYPE=RelWithDebInfo -G \"Unix Makefiles\"")
|
67
71
|
sys(MAKE)
|
68
72
|
|
69
|
-
|
70
|
-
|
73
|
+
# "normal" libraries (and libgit2 builds) get all these when they build but we're doing it
|
74
|
+
# statically so we put the libraries in by hand. It's important that we put the libraries themselves
|
75
|
+
# in $LIBS or the final linking stage won't pick them up
|
76
|
+
if windows?
|
77
|
+
$LDFLAGS << " " + "-L#{Dir.pwd}/deps/winhttp"
|
78
|
+
$LIBS << " -lwinhttp -lcrypt32 -lrpcrt4 -lole32"
|
79
|
+
else
|
80
|
+
pcfile = File.join(LIBGIT2_DIR, "build", "libgit2.pc")
|
81
|
+
$LDFLAGS << " " + `pkg-config --libs --static #{pcfile}`.strip
|
82
|
+
end
|
71
83
|
end
|
72
84
|
end
|
73
85
|
|
data/ext/rugged/rugged_commit.c
CHANGED
@@ -23,6 +23,7 @@
|
|
23
23
|
*/
|
24
24
|
|
25
25
|
#include "rugged.h"
|
26
|
+
#include "git2/commit.h"
|
26
27
|
|
27
28
|
extern VALUE rb_mRugged;
|
28
29
|
extern VALUE rb_cRuggedObject;
|
@@ -556,6 +557,51 @@ static VALUE rb_git_commit_to_mbox(int argc, VALUE *argv, VALUE self)
|
|
556
557
|
return rb_email_patch;
|
557
558
|
}
|
558
559
|
|
560
|
+
/*
|
561
|
+
* call-seq:
|
562
|
+
* commit.header_field(field_name) -> str
|
563
|
+
*
|
564
|
+
* Returns +commit+'s header field value.
|
565
|
+
*/
|
566
|
+
static VALUE rb_git_commit_header_field(VALUE self, VALUE rb_field) {
|
567
|
+
git_buf header_field = { 0 };
|
568
|
+
VALUE rb_result;
|
569
|
+
git_commit *commit;
|
570
|
+
|
571
|
+
Check_Type(rb_field, T_STRING);
|
572
|
+
|
573
|
+
Data_Get_Struct(self, git_commit, commit);
|
574
|
+
|
575
|
+
rugged_exception_check(
|
576
|
+
git_commit_header_field(&header_field, commit, StringValueCStr(rb_field))
|
577
|
+
);
|
578
|
+
|
579
|
+
rb_result = rb_enc_str_new(header_field.ptr, header_field.size, rb_utf8_encoding());
|
580
|
+
|
581
|
+
git_buf_free(&header_field);
|
582
|
+
|
583
|
+
return rb_result;
|
584
|
+
}
|
585
|
+
|
586
|
+
/*
|
587
|
+
* call-seq:
|
588
|
+
* commit.header -> str
|
589
|
+
*
|
590
|
+
* Returns +commit+'s entire raw header.
|
591
|
+
*/
|
592
|
+
static VALUE rb_git_commit_header(VALUE self) {
|
593
|
+
VALUE rb_result;
|
594
|
+
git_commit *commit;
|
595
|
+
const char *raw_header;
|
596
|
+
|
597
|
+
Data_Get_Struct(self, git_commit, commit);
|
598
|
+
|
599
|
+
raw_header = git_commit_raw_header(commit);
|
600
|
+
|
601
|
+
rb_result = rb_enc_str_new(raw_header, strlen(raw_header), rb_utf8_encoding());
|
602
|
+
|
603
|
+
return rb_result;
|
604
|
+
}
|
559
605
|
|
560
606
|
void Init_rugged_commit(void)
|
561
607
|
{
|
@@ -579,4 +625,7 @@ void Init_rugged_commit(void)
|
|
579
625
|
rb_define_method(rb_cRuggedCommit, "amend", rb_git_commit_amend, 1);
|
580
626
|
|
581
627
|
rb_define_method(rb_cRuggedCommit, "to_mbox", rb_git_commit_to_mbox, -1);
|
628
|
+
|
629
|
+
rb_define_method(rb_cRuggedCommit, "header_field", rb_git_commit_header_field, 1);
|
630
|
+
rb_define_method(rb_cRuggedCommit, "header", rb_git_commit_header, 0);
|
582
631
|
}
|
data/lib/rugged/version.rb
CHANGED
@@ -258,6 +258,7 @@ IF (WIN32 AND WINHTTP)
|
|
258
258
|
ENDIF ()
|
259
259
|
|
260
260
|
LINK_LIBRARIES(winhttp rpcrt4 crypt32)
|
261
|
+
LIST(APPEND LIBGIT2_PC_LIBS "-lwinhttp" "-lrpcrt4" "-lcrypt32" "-lole32")
|
261
262
|
ELSE ()
|
262
263
|
IF (CURL)
|
263
264
|
PKG_CHECK_MODULES(CURL libcurl)
|
@@ -339,8 +340,7 @@ IF (LIBSSH2_FOUND)
|
|
339
340
|
ADD_DEFINITIONS(-DGIT_SSH)
|
340
341
|
INCLUDE_DIRECTORIES(${LIBSSH2_INCLUDE_DIRS})
|
341
342
|
LINK_DIRECTORIES(${LIBSSH2_LIBRARY_DIRS})
|
342
|
-
|
343
|
-
#SET(LIBGIT2_PC_LIBS "${LIBGIT2_PC_LIBS} ${LIBSSH2_LDFLAGS}")
|
343
|
+
SET(LIBGIT2_PC_REQUIRES "${LIBGIT2_PC_REQUIRES} libssh2")
|
344
344
|
SET(SSH_LIBRARIES ${LIBSSH2_LIBRARIES})
|
345
345
|
|
346
346
|
CHECK_LIBRARY_EXISTS("${LIBSSH2_LIBRARIES}" libssh2_userauth_publickey_frommemory "${LIBSSH2_LIBRARY_DIRS}" HAVE_LIBSSH2_MEMORY_CREDENTIALS)
|
data/vendor/libgit2/src/index.c
CHANGED
@@ -356,28 +356,6 @@ static unsigned int index_merge_mode(
|
|
356
356
|
return git_index__create_mode(mode);
|
357
357
|
}
|
358
358
|
|
359
|
-
static int index_sort_if_needed(git_index *index, bool need_lock)
|
360
|
-
{
|
361
|
-
/* not truly threadsafe because between when this checks and/or
|
362
|
-
* sorts the array another thread could come in and unsort it
|
363
|
-
*/
|
364
|
-
|
365
|
-
if (git_vector_is_sorted(&index->entries))
|
366
|
-
return 0;
|
367
|
-
|
368
|
-
if (need_lock && git_mutex_lock(&index->lock) < 0) {
|
369
|
-
giterr_set(GITERR_OS, "Unable to lock index");
|
370
|
-
return -1;
|
371
|
-
}
|
372
|
-
|
373
|
-
git_vector_sort(&index->entries);
|
374
|
-
|
375
|
-
if (need_lock)
|
376
|
-
git_mutex_unlock(&index->lock);
|
377
|
-
|
378
|
-
return 0;
|
379
|
-
}
|
380
|
-
|
381
359
|
GIT_INLINE(int) index_find_in_entries(
|
382
360
|
size_t *out, git_vector *entries, git_vector_cmp entry_srch,
|
383
361
|
const char *path, size_t path_len, int stage)
|
@@ -391,10 +369,9 @@ GIT_INLINE(int) index_find_in_entries(
|
|
391
369
|
|
392
370
|
GIT_INLINE(int) index_find(
|
393
371
|
size_t *out, git_index *index,
|
394
|
-
const char *path, size_t path_len, int stage
|
372
|
+
const char *path, size_t path_len, int stage)
|
395
373
|
{
|
396
|
-
|
397
|
-
return -1;
|
374
|
+
git_vector_sort(&index->entries);
|
398
375
|
|
399
376
|
return index_find_in_entries(
|
400
377
|
out, &index->entries, index->entries_search, path, path_len, stage);
|
@@ -418,7 +395,7 @@ void git_index__set_ignore_case(git_index *index, bool ignore_case)
|
|
418
395
|
|
419
396
|
git_vector_set_cmp(&index->entries,
|
420
397
|
ignore_case ? git_index_entry_icmp : git_index_entry_cmp);
|
421
|
-
|
398
|
+
git_vector_sort(&index->entries);
|
422
399
|
|
423
400
|
git_vector_set_cmp(&index->reuc, ignore_case ? reuc_icmp : reuc_cmp);
|
424
401
|
git_vector_sort(&index->reuc);
|
@@ -434,12 +411,6 @@ int git_index_open(git_index **index_out, const char *index_path)
|
|
434
411
|
index = git__calloc(1, sizeof(git_index));
|
435
412
|
GITERR_CHECK_ALLOC(index);
|
436
413
|
|
437
|
-
if (git_mutex_init(&index->lock)) {
|
438
|
-
giterr_set(GITERR_OS, "Failed to initialize lock");
|
439
|
-
git__free(index);
|
440
|
-
return -1;
|
441
|
-
}
|
442
|
-
|
443
414
|
git_pool_init(&index->tree_pool, 1);
|
444
415
|
|
445
416
|
if (index_path != NULL) {
|
@@ -498,7 +469,6 @@ static void index_free(git_index *index)
|
|
498
469
|
git_vector_free(&index->deleted);
|
499
470
|
|
500
471
|
git__free(index->index_file_path);
|
501
|
-
git_mutex_free(&index->lock);
|
502
472
|
|
503
473
|
git__memzero(index, sizeof(*index));
|
504
474
|
git__free(index);
|
@@ -561,11 +531,6 @@ int git_index_clear(git_index *index)
|
|
561
531
|
index->tree = NULL;
|
562
532
|
git_pool_clear(&index->tree_pool);
|
563
533
|
|
564
|
-
if (git_mutex_lock(&index->lock) < 0) {
|
565
|
-
giterr_set(GITERR_OS, "Failed to lock index");
|
566
|
-
return -1;
|
567
|
-
}
|
568
|
-
|
569
534
|
git_idxmap_clear(index->entries_map);
|
570
535
|
while (!error && index->entries.length > 0)
|
571
536
|
error = index_remove_entry(index, index->entries.length - 1);
|
@@ -576,8 +541,6 @@ int git_index_clear(git_index *index)
|
|
576
541
|
|
577
542
|
git_futils_filestamp_set(&index->stamp, NULL);
|
578
543
|
|
579
|
-
git_mutex_unlock(&index->lock);
|
580
|
-
|
581
544
|
return error;
|
582
545
|
}
|
583
546
|
|
@@ -836,8 +799,7 @@ const git_index_entry *git_index_get_byindex(
|
|
836
799
|
git_index *index, size_t n)
|
837
800
|
{
|
838
801
|
assert(index);
|
839
|
-
|
840
|
-
return NULL;
|
802
|
+
git_vector_sort(&index->entries);
|
841
803
|
return git_vector_get(&index->entries, n);
|
842
804
|
}
|
843
805
|
|
@@ -1094,7 +1056,7 @@ static int has_dir_name(git_index *index,
|
|
1094
1056
|
}
|
1095
1057
|
len = slash - name;
|
1096
1058
|
|
1097
|
-
if (!index_find(&pos, index, name, len, stage
|
1059
|
+
if (!index_find(&pos, index, name, len, stage)) {
|
1098
1060
|
retval = -1;
|
1099
1061
|
if (!ok_to_replace)
|
1100
1062
|
break;
|
@@ -1231,7 +1193,7 @@ static void index_existing_and_best(
|
|
1231
1193
|
int error;
|
1232
1194
|
|
1233
1195
|
error = index_find(&pos,
|
1234
|
-
index, entry->path, 0, GIT_IDXENTRY_STAGE(entry)
|
1196
|
+
index, entry->path, 0, GIT_IDXENTRY_STAGE(entry));
|
1235
1197
|
|
1236
1198
|
if (error == 0) {
|
1237
1199
|
*existing = index->entries.contents[pos];
|
@@ -1296,11 +1258,6 @@ static int index_insert(
|
|
1296
1258
|
/* this entry is now up-to-date and should not be checked for raciness */
|
1297
1259
|
entry->flags_extended |= GIT_IDXENTRY_UPTODATE;
|
1298
1260
|
|
1299
|
-
if (git_mutex_lock(&index->lock) < 0) {
|
1300
|
-
giterr_set(GITERR_OS, "Unable to acquire index lock");
|
1301
|
-
return -1;
|
1302
|
-
}
|
1303
|
-
|
1304
1261
|
git_vector_sort(&index->entries);
|
1305
1262
|
|
1306
1263
|
/* look if an entry with this path already exists, either staged, or (if
|
@@ -1355,8 +1312,6 @@ static int index_insert(
|
|
1355
1312
|
*entry_ptr = NULL;
|
1356
1313
|
}
|
1357
1314
|
|
1358
|
-
git_mutex_unlock(&index->lock);
|
1359
|
-
|
1360
1315
|
return error;
|
1361
1316
|
}
|
1362
1317
|
|
@@ -1559,11 +1514,6 @@ int git_index__fill(git_index *index, const git_vector *source_entries)
|
|
1559
1514
|
if (!source_entries->length)
|
1560
1515
|
return 0;
|
1561
1516
|
|
1562
|
-
if (git_mutex_lock(&index->lock) < 0) {
|
1563
|
-
giterr_set(GITERR_OS, "Unable to acquire index lock");
|
1564
|
-
return -1;
|
1565
|
-
}
|
1566
|
-
|
1567
1517
|
git_vector_size_hint(&index->entries, source_entries->length);
|
1568
1518
|
git_idxmap_resize(index->entries_map, source_entries->length * 1.3);
|
1569
1519
|
|
@@ -1588,7 +1538,6 @@ int git_index__fill(git_index *index, const git_vector *source_entries)
|
|
1588
1538
|
if (!ret)
|
1589
1539
|
git_vector_sort(&index->entries);
|
1590
1540
|
|
1591
|
-
git_mutex_unlock(&index->lock);
|
1592
1541
|
return ret;
|
1593
1542
|
}
|
1594
1543
|
|
@@ -1619,17 +1568,12 @@ int git_index_remove(git_index *index, const char *path, int stage)
|
|
1619
1568
|
size_t position;
|
1620
1569
|
git_index_entry remove_key = {{ 0 }};
|
1621
1570
|
|
1622
|
-
if (git_mutex_lock(&index->lock) < 0) {
|
1623
|
-
giterr_set(GITERR_OS, "Failed to lock index");
|
1624
|
-
return -1;
|
1625
|
-
}
|
1626
|
-
|
1627
1571
|
remove_key.path = path;
|
1628
1572
|
GIT_IDXENTRY_STAGE_SET(&remove_key, stage);
|
1629
1573
|
|
1630
1574
|
DELETE_IN_MAP(index, &remove_key);
|
1631
1575
|
|
1632
|
-
if (index_find(&position, index, path, 0, stage
|
1576
|
+
if (index_find(&position, index, path, 0, stage) < 0) {
|
1633
1577
|
giterr_set(
|
1634
1578
|
GITERR_INDEX, "Index does not contain %s at stage %d", path, stage);
|
1635
1579
|
error = GIT_ENOTFOUND;
|
@@ -1637,7 +1581,6 @@ int git_index_remove(git_index *index, const char *path, int stage)
|
|
1637
1581
|
error = index_remove_entry(index, position);
|
1638
1582
|
}
|
1639
1583
|
|
1640
|
-
git_mutex_unlock(&index->lock);
|
1641
1584
|
return error;
|
1642
1585
|
}
|
1643
1586
|
|
@@ -1648,14 +1591,9 @@ int git_index_remove_directory(git_index *index, const char *dir, int stage)
|
|
1648
1591
|
size_t pos;
|
1649
1592
|
git_index_entry *entry;
|
1650
1593
|
|
1651
|
-
if (git_mutex_lock(&index->lock) < 0) {
|
1652
|
-
giterr_set(GITERR_OS, "Failed to lock index");
|
1653
|
-
return -1;
|
1654
|
-
}
|
1655
|
-
|
1656
1594
|
if (!(error = git_buf_sets(&pfx, dir)) &&
|
1657
1595
|
!(error = git_path_to_dir(&pfx)))
|
1658
|
-
index_find(&pos, index, pfx.ptr, pfx.size, GIT_INDEX_STAGE_ANY
|
1596
|
+
index_find(&pos, index, pfx.ptr, pfx.size, GIT_INDEX_STAGE_ANY);
|
1659
1597
|
|
1660
1598
|
while (!error) {
|
1661
1599
|
entry = git_vector_get(&index->entries, pos);
|
@@ -1672,7 +1610,6 @@ int git_index_remove_directory(git_index *index, const char *dir, int stage)
|
|
1672
1610
|
/* removed entry at 'pos' so we don't need to increment */
|
1673
1611
|
}
|
1674
1612
|
|
1675
|
-
git_mutex_unlock(&index->lock);
|
1676
1613
|
git_buf_free(&pfx);
|
1677
1614
|
|
1678
1615
|
return error;
|
@@ -1684,12 +1621,7 @@ int git_index_find_prefix(size_t *at_pos, git_index *index, const char *prefix)
|
|
1684
1621
|
size_t pos;
|
1685
1622
|
const git_index_entry *entry;
|
1686
1623
|
|
1687
|
-
|
1688
|
-
giterr_set(GITERR_OS, "Failed to lock index");
|
1689
|
-
return -1;
|
1690
|
-
}
|
1691
|
-
|
1692
|
-
index_find(&pos, index, prefix, strlen(prefix), GIT_INDEX_STAGE_ANY, false);
|
1624
|
+
index_find(&pos, index, prefix, strlen(prefix), GIT_INDEX_STAGE_ANY);
|
1693
1625
|
entry = git_vector_get(&index->entries, pos);
|
1694
1626
|
if (!entry || git__prefixcmp(entry->path, prefix) != 0)
|
1695
1627
|
error = GIT_ENOTFOUND;
|
@@ -1697,8 +1629,6 @@ int git_index_find_prefix(size_t *at_pos, git_index *index, const char *prefix)
|
|
1697
1629
|
if (!error && at_pos)
|
1698
1630
|
*at_pos = pos;
|
1699
1631
|
|
1700
|
-
git_mutex_unlock(&index->lock);
|
1701
|
-
|
1702
1632
|
return error;
|
1703
1633
|
}
|
1704
1634
|
|
@@ -1706,7 +1636,7 @@ int git_index__find_pos(
|
|
1706
1636
|
size_t *out, git_index *index, const char *path, size_t path_len, int stage)
|
1707
1637
|
{
|
1708
1638
|
assert(index && path);
|
1709
|
-
return index_find(out, index, path, path_len, stage
|
1639
|
+
return index_find(out, index, path, path_len, stage);
|
1710
1640
|
}
|
1711
1641
|
|
1712
1642
|
int git_index_find(size_t *at_pos, git_index *index, const char *path)
|
@@ -1715,14 +1645,8 @@ int git_index_find(size_t *at_pos, git_index *index, const char *path)
|
|
1715
1645
|
|
1716
1646
|
assert(index && path);
|
1717
1647
|
|
1718
|
-
if (git_mutex_lock(&index->lock) < 0) {
|
1719
|
-
giterr_set(GITERR_OS, "Failed to lock index");
|
1720
|
-
return -1;
|
1721
|
-
}
|
1722
|
-
|
1723
1648
|
if (git_vector_bsearch2(
|
1724
1649
|
&pos, &index->entries, index->entries_search_path, path) < 0) {
|
1725
|
-
git_mutex_unlock(&index->lock);
|
1726
1650
|
giterr_set(GITERR_INDEX, "Index does not contain %s", path);
|
1727
1651
|
return GIT_ENOTFOUND;
|
1728
1652
|
}
|
@@ -1740,7 +1664,6 @@ int git_index_find(size_t *at_pos, git_index *index, const char *path)
|
|
1740
1664
|
if (at_pos)
|
1741
1665
|
*at_pos = pos;
|
1742
1666
|
|
1743
|
-
git_mutex_unlock(&index->lock);
|
1744
1667
|
return 0;
|
1745
1668
|
}
|
1746
1669
|
|
@@ -1896,11 +1819,6 @@ static int index_conflict_remove(git_index *index, const char *path)
|
|
1896
1819
|
if (path != NULL && git_index_find(&pos, index, path) < 0)
|
1897
1820
|
return GIT_ENOTFOUND;
|
1898
1821
|
|
1899
|
-
if (git_mutex_lock(&index->lock) < 0) {
|
1900
|
-
giterr_set(GITERR_OS, "Unable to lock index");
|
1901
|
-
return -1;
|
1902
|
-
}
|
1903
|
-
|
1904
1822
|
while ((conflict_entry = git_vector_get(&index->entries, pos)) != NULL) {
|
1905
1823
|
|
1906
1824
|
if (path != NULL &&
|
@@ -1916,8 +1834,6 @@ static int index_conflict_remove(git_index *index, const char *path)
|
|
1916
1834
|
break;
|
1917
1835
|
}
|
1918
1836
|
|
1919
|
-
git_mutex_unlock(&index->lock);
|
1920
|
-
|
1921
1837
|
return error;
|
1922
1838
|
}
|
1923
1839
|
|
@@ -2456,11 +2372,6 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
|
|
2456
2372
|
|
2457
2373
|
seek_forward(INDEX_HEADER_SIZE);
|
2458
2374
|
|
2459
|
-
if (git_mutex_lock(&index->lock) < 0) {
|
2460
|
-
giterr_set(GITERR_OS, "Unable to acquire index lock");
|
2461
|
-
return -1;
|
2462
|
-
}
|
2463
|
-
|
2464
2375
|
assert(!index->entries.length);
|
2465
2376
|
|
2466
2377
|
if (index->ignore_case)
|
@@ -2490,6 +2401,7 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
|
|
2490
2401
|
index_entry_free(entry);
|
2491
2402
|
goto done;
|
2492
2403
|
}
|
2404
|
+
error = 0;
|
2493
2405
|
|
2494
2406
|
seek_forward(entry_size);
|
2495
2407
|
}
|
@@ -2537,10 +2449,9 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
|
|
2537
2449
|
* in-memory index is supposed to be case-insensitive
|
2538
2450
|
*/
|
2539
2451
|
git_vector_set_sorted(&index->entries, !index->ignore_case);
|
2540
|
-
|
2452
|
+
git_vector_sort(&index->entries);
|
2541
2453
|
|
2542
2454
|
done:
|
2543
|
-
git_mutex_unlock(&index->lock);
|
2544
2455
|
return error;
|
2545
2456
|
}
|
2546
2457
|
|
@@ -2630,11 +2541,6 @@ static int write_entries(git_index *index, git_filebuf *file)
|
|
2630
2541
|
git_vector case_sorted, *entries;
|
2631
2542
|
git_index_entry *entry;
|
2632
2543
|
|
2633
|
-
if (git_mutex_lock(&index->lock) < 0) {
|
2634
|
-
giterr_set(GITERR_OS, "Failed to lock index");
|
2635
|
-
return -1;
|
2636
|
-
}
|
2637
|
-
|
2638
2544
|
/* If index->entries is sorted case-insensitively, then we need
|
2639
2545
|
* to re-sort it case-sensitively before writing */
|
2640
2546
|
if (index->ignore_case) {
|
@@ -2649,8 +2555,6 @@ static int write_entries(git_index *index, git_filebuf *file)
|
|
2649
2555
|
if ((error = write_disk_entry(file, entry)) < 0)
|
2650
2556
|
break;
|
2651
2557
|
|
2652
|
-
git_mutex_unlock(&index->lock);
|
2653
|
-
|
2654
2558
|
if (index->ignore_case)
|
2655
2559
|
git_vector_free(&case_sorted);
|
2656
2560
|
|
@@ -2935,8 +2839,7 @@ int git_index_read_tree(git_index *index, const git_tree *tree)
|
|
2935
2839
|
index->tree = NULL;
|
2936
2840
|
git_pool_clear(&index->tree_pool);
|
2937
2841
|
|
2938
|
-
|
2939
|
-
return -1;
|
2842
|
+
git_vector_sort(&index->entries);
|
2940
2843
|
|
2941
2844
|
if ((error = git_tree_walk(tree, GIT_TREEWALK_POST, read_tree_cb, &data)) < 0)
|
2942
2845
|
goto cleanup;
|
@@ -2959,15 +2862,11 @@ int git_index_read_tree(git_index *index, const git_tree *tree)
|
|
2959
2862
|
|
2960
2863
|
git_vector_sort(&entries);
|
2961
2864
|
|
2962
|
-
if ((error = git_index_clear(index)) < 0)
|
2865
|
+
if ((error = git_index_clear(index)) < 0) {
|
2963
2866
|
/* well, this isn't good */;
|
2964
|
-
else if (git_mutex_lock(&index->lock) < 0) {
|
2965
|
-
giterr_set(GITERR_OS, "Unable to acquire index lock");
|
2966
|
-
error = -1;
|
2967
2867
|
} else {
|
2968
2868
|
git_vector_swap(&entries, &index->entries);
|
2969
2869
|
entries_map = git__swap(index->entries_map, entries_map);
|
2970
|
-
git_mutex_unlock(&index->lock);
|
2971
2870
|
}
|
2972
2871
|
|
2973
2872
|
cleanup:
|
@@ -3367,18 +3266,11 @@ int git_index_snapshot_new(git_vector *snap, git_index *index)
|
|
3367
3266
|
|
3368
3267
|
GIT_REFCOUNT_INC(index);
|
3369
3268
|
|
3370
|
-
if (git_mutex_lock(&index->lock) < 0) {
|
3371
|
-
giterr_set(GITERR_OS, "Failed to lock index");
|
3372
|
-
return -1;
|
3373
|
-
}
|
3374
|
-
|
3375
3269
|
git_atomic_inc(&index->readers);
|
3376
3270
|
git_vector_sort(&index->entries);
|
3377
3271
|
|
3378
3272
|
error = git_vector_dup(snap, &index->entries, index->entries._cmp);
|
3379
3273
|
|
3380
|
-
git_mutex_unlock(&index->lock);
|
3381
|
-
|
3382
3274
|
if (error < 0)
|
3383
3275
|
git_index_free(index);
|
3384
3276
|
|
@@ -3391,11 +3283,6 @@ void git_index_snapshot_release(git_vector *snap, git_index *index)
|
|
3391
3283
|
|
3392
3284
|
git_atomic_dec(&index->readers);
|
3393
3285
|
|
3394
|
-
if (!git_mutex_lock(&index->lock)) {
|
3395
|
-
index_free_deleted(index); /* try to free pending deleted items */
|
3396
|
-
git_mutex_unlock(&index->lock);
|
3397
|
-
}
|
3398
|
-
|
3399
3286
|
git_index_free(index);
|
3400
3287
|
}
|
3401
3288
|
|
@@ -3460,9 +3347,7 @@ int git_indexwriter_commit(git_indexwriter *writer)
|
|
3460
3347
|
if (!writer->should_write)
|
3461
3348
|
return 0;
|
3462
3349
|
|
3463
|
-
|
3464
|
-
return -1;
|
3465
|
-
|
3350
|
+
git_vector_sort(&writer->index->entries);
|
3466
3351
|
git_vector_sort(&writer->index->reuc);
|
3467
3352
|
|
3468
3353
|
if ((error = write_index(&checksum, writer->index, &writer->file)) < 0) {
|
data/vendor/libgit2/src/index.h
CHANGED
data/vendor/libgit2/src/path.c
CHANGED
@@ -1438,7 +1438,9 @@ static int repo_init_structure(
|
|
1438
1438
|
}
|
1439
1439
|
|
1440
1440
|
if (tdir) {
|
1441
|
-
uint32_t cpflags = GIT_CPDIR_COPY_SYMLINKS |
|
1441
|
+
uint32_t cpflags = GIT_CPDIR_COPY_SYMLINKS |
|
1442
|
+
GIT_CPDIR_SIMPLE_TO_MODE |
|
1443
|
+
GIT_CPDIR_COPY_DOTFILES;
|
1442
1444
|
if (opts->mode != GIT_REPOSITORY_INIT_SHARED_UMASK)
|
1443
1445
|
cpflags |= GIT_CPDIR_CHMOD_DIRS;
|
1444
1446
|
error = git_futils_cp_r(tdir, repo_dir, cpflags, dmode);
|
data/vendor/libgit2/src/tag.c
CHANGED
@@ -358,7 +358,7 @@ int git_tag_create_frombuffer(git_oid *oid, git_repository *repo, const char *bu
|
|
358
358
|
git_odb_object_free(target_obj);
|
359
359
|
|
360
360
|
/** Ensure the tag name doesn't conflict with an already existing
|
361
|
-
* reference unless overwriting has
|
361
|
+
* reference unless overwriting has explicitly been requested **/
|
362
362
|
if (error == 0 && !allow_ref_overwrite) {
|
363
363
|
giterr_set(GITERR_TAG, "Tag already exists");
|
364
364
|
return GIT_EEXISTS;
|
@@ -136,9 +136,14 @@ static int ssh_stream_read(
|
|
136
136
|
* not-found error, so read from stderr and signal EOF on
|
137
137
|
* stderr.
|
138
138
|
*/
|
139
|
-
if (rc == 0
|
140
|
-
|
141
|
-
|
139
|
+
if (rc == 0) {
|
140
|
+
if ((rc = libssh2_channel_read_stderr(s->channel, buffer, buf_size)) > 0) {
|
141
|
+
giterr_set(GITERR_SSH, "%*s", rc, buffer);
|
142
|
+
return GIT_EEOF;
|
143
|
+
} else if (rc < LIBSSH2_ERROR_NONE) {
|
144
|
+
ssh_error(s->session, "SSH could not read stderr");
|
145
|
+
return -1;
|
146
|
+
}
|
142
147
|
}
|
143
148
|
|
144
149
|
|
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.0b12
|
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:
|
12
|
+
date: 2016-01-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake-compiler
|
@@ -530,7 +530,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
530
530
|
version: 1.3.1
|
531
531
|
requirements: []
|
532
532
|
rubyforge_project:
|
533
|
-
rubygems_version: 2.2.
|
533
|
+
rubygems_version: 2.2.2
|
534
534
|
signing_key:
|
535
535
|
specification_version: 4
|
536
536
|
summary: Rugged is a Ruby binding to the libgit2 linkable library
|