rugged 1.0.1 → 1.1.0
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/rugged_commit.c +1 -1
- data/lib/rugged/commit.rb +16 -2
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +31 -69
- data/vendor/libgit2/cmake/{Modules/AddCFlagIfSupported.cmake → AddCFlagIfSupported.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/EnableWarnings.cmake → EnableWarnings.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindCoreFoundation.cmake → FindCoreFoundation.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindGSSAPI.cmake → FindGSSAPI.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindGSSFramework.cmake → FindGSSFramework.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindHTTP_Parser.cmake → FindHTTP_Parser.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindIconv.cmake → FindIconv.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindPCRE.cmake → FindPCRE.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindPCRE2.cmake → FindPCRE2.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindPkgLibraries.cmake → FindPkgLibraries.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindSecurity.cmake → FindSecurity.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindStatNsec.cmake → FindStatNsec.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindmbedTLS.cmake → FindmbedTLS.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/IdeSplitSources.cmake → IdeSplitSources.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/PkgBuildConfig.cmake → PkgBuildConfig.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/SanitizeBool.cmake → SanitizeBool.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/SelectGSSAPI.cmake → SelectGSSAPI.cmake} +18 -26
- data/vendor/libgit2/cmake/{Modules/SelectHTTPSBackend.cmake → SelectHTTPSBackend.cmake} +25 -32
- data/vendor/libgit2/cmake/{Modules/SelectHashes.cmake → SelectHashes.cmake} +20 -28
- data/vendor/libgit2/deps/http-parser/CMakeLists.txt +4 -3
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +6 -5
- data/vendor/libgit2/deps/ntlmclient/compat.h +8 -1
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +8 -11
- data/vendor/libgit2/deps/pcre/LICENCE +93 -0
- data/vendor/libgit2/deps/pcre/pcre.h +2 -2
- data/vendor/libgit2/deps/pcre/pcre_compile.c +29 -17
- data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +4 -4
- data/vendor/libgit2/deps/pcre/pcreposix.c +2 -3
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -5
- data/vendor/libgit2/deps/zlib/deflate.c +1 -0
- data/vendor/libgit2/include/git2/annotated_commit.h +1 -1
- data/vendor/libgit2/include/git2/blame.h +2 -0
- data/vendor/libgit2/include/git2/common.h +15 -3
- data/vendor/libgit2/include/git2/deprecated.h +42 -2
- data/vendor/libgit2/include/git2/errors.h +2 -1
- data/vendor/libgit2/include/git2/index.h +1 -2
- data/vendor/libgit2/include/git2/pack.h +1 -1
- data/vendor/libgit2/include/git2/strarray.h +6 -10
- data/vendor/libgit2/include/git2/version.h +4 -4
- data/vendor/libgit2/src/CMakeLists.txt +53 -41
- data/vendor/libgit2/src/apply.c +5 -1
- data/vendor/libgit2/src/assert_safe.h +58 -0
- data/vendor/libgit2/src/attr_file.c +8 -3
- data/vendor/libgit2/src/attrcache.c +2 -3
- data/vendor/libgit2/src/blame.c +2 -0
- data/vendor/libgit2/src/blame_git.c +6 -3
- data/vendor/libgit2/src/blob.c +2 -0
- data/vendor/libgit2/src/branch.c +19 -21
- data/vendor/libgit2/src/buffer.c +6 -3
- data/vendor/libgit2/src/cache.c +1 -22
- data/vendor/libgit2/src/checkout.c +49 -72
- data/vendor/libgit2/src/cherrypick.c +2 -0
- data/vendor/libgit2/src/clone.c +78 -18
- data/vendor/libgit2/src/common.h +1 -0
- data/vendor/libgit2/src/config.c +3 -7
- data/vendor/libgit2/src/config_entries.c +35 -27
- data/vendor/libgit2/src/config_parse.c +1 -1
- data/vendor/libgit2/src/config_snapshot.c +2 -1
- data/vendor/libgit2/src/describe.c +5 -1
- data/vendor/libgit2/src/diff.c +12 -11
- data/vendor/libgit2/src/diff_file.c +3 -1
- data/vendor/libgit2/src/diff_generate.c +10 -11
- data/vendor/libgit2/src/diff_parse.c +2 -3
- data/vendor/libgit2/src/diff_print.c +63 -60
- data/vendor/libgit2/src/diff_stats.c +12 -11
- data/vendor/libgit2/src/diff_tform.c +2 -3
- data/vendor/libgit2/src/errors.c +2 -0
- data/vendor/libgit2/src/fetch.c +2 -0
- data/vendor/libgit2/src/filter.c +3 -3
- data/vendor/libgit2/src/futils.c +3 -3
- data/vendor/libgit2/src/futils.h +3 -3
- data/vendor/libgit2/src/global.c +3 -1
- data/vendor/libgit2/src/idxmap.c +0 -22
- data/vendor/libgit2/src/index.c +12 -7
- data/vendor/libgit2/src/indexer.c +10 -4
- data/vendor/libgit2/src/iterator.c +4 -4
- data/vendor/libgit2/src/merge.c +13 -7
- data/vendor/libgit2/src/merge_file.c +4 -6
- data/vendor/libgit2/src/midx.c +418 -0
- data/vendor/libgit2/src/midx.h +83 -0
- data/vendor/libgit2/src/mwindow.c +124 -51
- data/vendor/libgit2/src/net.c +6 -1
- data/vendor/libgit2/src/object.c +2 -1
- data/vendor/libgit2/src/odb.c +9 -6
- data/vendor/libgit2/src/odb_loose.c +3 -3
- data/vendor/libgit2/src/odb_mempack.c +2 -0
- data/vendor/libgit2/src/oid.c +2 -0
- data/vendor/libgit2/src/pack-objects.c +29 -21
- data/vendor/libgit2/src/pack.c +47 -28
- data/vendor/libgit2/src/pack.h +19 -2
- data/vendor/libgit2/src/patch_generate.c +1 -3
- data/vendor/libgit2/src/patch_parse.c +4 -2
- data/vendor/libgit2/src/path.c +4 -4
- data/vendor/libgit2/src/pathspec.c +4 -3
- data/vendor/libgit2/src/pool.c +21 -15
- data/vendor/libgit2/src/pool.h +9 -1
- data/vendor/libgit2/src/proxy.c +2 -0
- data/vendor/libgit2/src/push.c +2 -0
- data/vendor/libgit2/src/rebase.c +2 -0
- data/vendor/libgit2/src/refdb.c +135 -0
- data/vendor/libgit2/src/refdb.h +69 -0
- data/vendor/libgit2/src/refdb_fs.c +19 -81
- data/vendor/libgit2/src/reflog.c +2 -6
- data/vendor/libgit2/src/refs.c +60 -188
- data/vendor/libgit2/src/refs.h +1 -19
- data/vendor/libgit2/src/regexp.c +2 -2
- data/vendor/libgit2/src/remote.c +32 -17
- data/vendor/libgit2/src/repository.c +168 -79
- data/vendor/libgit2/src/repository.h +10 -27
- data/vendor/libgit2/src/revert.c +2 -0
- data/vendor/libgit2/src/revparse.c +5 -4
- data/vendor/libgit2/src/revwalk.c +3 -5
- data/vendor/libgit2/src/settings.c +9 -0
- data/vendor/libgit2/src/sortedcache.c +2 -3
- data/vendor/libgit2/src/stash.c +2 -0
- data/vendor/libgit2/src/status.c +2 -0
- data/vendor/libgit2/src/strarray.c +63 -0
- data/vendor/libgit2/src/streams/openssl.c +12 -6
- data/vendor/libgit2/src/streams/registry.c +5 -3
- data/vendor/libgit2/src/submodule.c +6 -4
- data/vendor/libgit2/src/sysdir.c +4 -20
- data/vendor/libgit2/src/sysdir.h +0 -11
- data/vendor/libgit2/src/tag.c +2 -0
- data/vendor/libgit2/src/thread-utils.h +139 -21
- data/vendor/libgit2/src/transaction.c +2 -1
- data/vendor/libgit2/src/transports/credential.c +2 -0
- data/vendor/libgit2/src/transports/credential_helpers.c +2 -0
- data/vendor/libgit2/src/transports/httpclient.c +6 -8
- data/vendor/libgit2/src/transports/local.c +2 -2
- data/vendor/libgit2/src/transports/smart.c +2 -2
- data/vendor/libgit2/src/transports/winhttp.c +18 -7
- data/vendor/libgit2/src/unix/posix.h +13 -1
- data/vendor/libgit2/src/util.c +25 -58
- data/vendor/libgit2/src/util.h +2 -2
- data/vendor/libgit2/src/win32/git2.rc +18 -3
- data/vendor/libgit2/src/win32/path_w32.c +2 -2
- data/vendor/libgit2/src/worktree.c +4 -0
- metadata +27 -25
- data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +0 -29
- data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +0 -96
- data/vendor/libgit2/src/refdb_fs.h +0 -19
data/vendor/libgit2/src/revert.c
CHANGED
@@ -231,7 +231,9 @@ int git_revert_options_init(git_revert_options *opts, unsigned int version)
|
|
231
231
|
return 0;
|
232
232
|
}
|
233
233
|
|
234
|
+
#ifndef GIT_DEPRECATE_HARD
|
234
235
|
int git_revert_init_options(git_revert_options *opts, unsigned int version)
|
235
236
|
{
|
236
237
|
return git_revert_options_init(opts, version);
|
237
238
|
}
|
239
|
+
#endif
|
@@ -537,7 +537,8 @@ static int extract_curly_braces_content(git_buf *buf, const char *spec, size_t *
|
|
537
537
|
if (spec[*pos] == '\0')
|
538
538
|
return GIT_EINVALIDSPEC;
|
539
539
|
|
540
|
-
git_buf_putc(buf, spec[(*pos)++])
|
540
|
+
if (git_buf_putc(buf, spec[(*pos)++]) < 0)
|
541
|
+
return -1;
|
541
542
|
}
|
542
543
|
|
543
544
|
(*pos)++;
|
@@ -585,7 +586,7 @@ static int extract_how_many(int *n, const char *spec, size_t *pos)
|
|
585
586
|
*pos = end_ptr - spec;
|
586
587
|
}
|
587
588
|
|
588
|
-
}
|
589
|
+
} while (spec[(*pos)] == kind && kind == '~');
|
589
590
|
|
590
591
|
*n = accumulated;
|
591
592
|
|
@@ -659,7 +660,7 @@ static int ensure_left_hand_identifier_is_not_known_yet(git_object *object, git_
|
|
659
660
|
return GIT_EINVALIDSPEC;
|
660
661
|
}
|
661
662
|
|
662
|
-
int
|
663
|
+
static int revparse(
|
663
664
|
git_object **object_out,
|
664
665
|
git_reference **reference_out,
|
665
666
|
size_t *identifier_len_out,
|
@@ -835,7 +836,7 @@ int git_revparse_ext(
|
|
835
836
|
git_object *obj = NULL;
|
836
837
|
git_reference *ref = NULL;
|
837
838
|
|
838
|
-
if ((error =
|
839
|
+
if ((error = revparse(&obj, &ref, &identifier_len, repo, spec)) < 0)
|
839
840
|
goto cleanup;
|
840
841
|
|
841
842
|
*object_out = obj;
|
@@ -659,13 +659,11 @@ int git_revwalk_new(git_revwalk **revwalk_out, git_repository *repo)
|
|
659
659
|
git_revwalk *walk = git__calloc(1, sizeof(git_revwalk));
|
660
660
|
GIT_ERROR_CHECK_ALLOC(walk);
|
661
661
|
|
662
|
-
if (git_oidmap_new(&walk->commits) < 0
|
662
|
+
if (git_oidmap_new(&walk->commits) < 0 ||
|
663
|
+
git_pqueue_init(&walk->iterator_time, 0, 8, git_commit_list_time_cmp) < 0 ||
|
664
|
+
git_pool_init(&walk->commit_pool, COMMIT_ALLOC) < 0)
|
663
665
|
return -1;
|
664
666
|
|
665
|
-
if (git_pqueue_init(&walk->iterator_time, 0, 8, git_commit_list_time_cmp) < 0)
|
666
|
-
return -1;
|
667
|
-
|
668
|
-
git_pool_init(&walk->commit_pool, COMMIT_ALLOC);
|
669
667
|
walk->get_next = &revwalk_next_unsorted;
|
670
668
|
walk->enqueue = &revwalk_enqueue_unsorted;
|
671
669
|
|
@@ -59,6 +59,7 @@ int git_libgit2_features(void)
|
|
59
59
|
/* Declarations for tuneable settings */
|
60
60
|
extern size_t git_mwindow__window_size;
|
61
61
|
extern size_t git_mwindow__mapped_limit;
|
62
|
+
extern size_t git_mwindow__file_limit;
|
62
63
|
extern size_t git_indexer__max_objects;
|
63
64
|
extern bool git_disable_pack_keep_file_checks;
|
64
65
|
|
@@ -124,6 +125,14 @@ int git_libgit2_opts(int key, ...)
|
|
124
125
|
*(va_arg(ap, size_t *)) = git_mwindow__mapped_limit;
|
125
126
|
break;
|
126
127
|
|
128
|
+
case GIT_OPT_SET_MWINDOW_FILE_LIMIT:
|
129
|
+
git_mwindow__file_limit = va_arg(ap, size_t);
|
130
|
+
break;
|
131
|
+
|
132
|
+
case GIT_OPT_GET_MWINDOW_FILE_LIMIT:
|
133
|
+
*(va_arg(ap, size_t *)) = git_mwindow__file_limit;
|
134
|
+
break;
|
135
|
+
|
127
136
|
case GIT_OPT_GET_SEARCH_PATH:
|
128
137
|
if ((error = config_level_to_sysdir(va_arg(ap, int))) >= 0) {
|
129
138
|
git_buf *out = va_arg(ap, git_buf *);
|
@@ -25,9 +25,8 @@ int git_sortedcache_new(
|
|
25
25
|
sc = git__calloc(1, alloclen);
|
26
26
|
GIT_ERROR_CHECK_ALLOC(sc);
|
27
27
|
|
28
|
-
git_pool_init(&sc->pool, 1)
|
29
|
-
|
30
|
-
if (git_vector_init(&sc->items, 4, item_cmp) < 0 ||
|
28
|
+
if (git_pool_init(&sc->pool, 1) < 0 ||
|
29
|
+
git_vector_init(&sc->items, 4, item_cmp) < 0 ||
|
31
30
|
git_strmap_new(&sc->map) < 0)
|
32
31
|
goto fail;
|
33
32
|
|
data/vendor/libgit2/src/stash.c
CHANGED
@@ -776,10 +776,12 @@ int git_stash_apply_options_init(git_stash_apply_options *opts, unsigned int ver
|
|
776
776
|
return 0;
|
777
777
|
}
|
778
778
|
|
779
|
+
#ifndef GIT_DEPRECATE_HARD
|
779
780
|
int git_stash_apply_init_options(git_stash_apply_options *opts, unsigned int version)
|
780
781
|
{
|
781
782
|
return git_stash_apply_options_init(opts, version);
|
782
783
|
}
|
784
|
+
#endif
|
783
785
|
|
784
786
|
#define NOTIFY_PROGRESS(opts, progress_type) \
|
785
787
|
do { \
|
data/vendor/libgit2/src/status.c
CHANGED
@@ -548,10 +548,12 @@ int git_status_options_init(git_status_options *opts, unsigned int version)
|
|
548
548
|
return 0;
|
549
549
|
}
|
550
550
|
|
551
|
+
#ifndef GIT_DEPRECATE_HARD
|
551
552
|
int git_status_init_options(git_status_options *opts, unsigned int version)
|
552
553
|
{
|
553
554
|
return git_status_options_init(opts, version);
|
554
555
|
}
|
556
|
+
#endif
|
555
557
|
|
556
558
|
int git_status_list_get_perfdata(
|
557
559
|
git_diff_perfdata *out, const git_status_list *status)
|
@@ -0,0 +1,63 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
3
|
+
*
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
6
|
+
*/
|
7
|
+
|
8
|
+
#include "util.h"
|
9
|
+
|
10
|
+
#include "common.h"
|
11
|
+
|
12
|
+
int git_strarray_copy(git_strarray *tgt, const git_strarray *src)
|
13
|
+
{
|
14
|
+
size_t i;
|
15
|
+
|
16
|
+
assert(tgt && src);
|
17
|
+
|
18
|
+
memset(tgt, 0, sizeof(*tgt));
|
19
|
+
|
20
|
+
if (!src->count)
|
21
|
+
return 0;
|
22
|
+
|
23
|
+
tgt->strings = git__calloc(src->count, sizeof(char *));
|
24
|
+
GIT_ERROR_CHECK_ALLOC(tgt->strings);
|
25
|
+
|
26
|
+
for (i = 0; i < src->count; ++i) {
|
27
|
+
if (!src->strings[i])
|
28
|
+
continue;
|
29
|
+
|
30
|
+
tgt->strings[tgt->count] = git__strdup(src->strings[i]);
|
31
|
+
if (!tgt->strings[tgt->count]) {
|
32
|
+
git_strarray_dispose(tgt);
|
33
|
+
memset(tgt, 0, sizeof(*tgt));
|
34
|
+
return -1;
|
35
|
+
}
|
36
|
+
|
37
|
+
tgt->count++;
|
38
|
+
}
|
39
|
+
|
40
|
+
return 0;
|
41
|
+
}
|
42
|
+
|
43
|
+
void git_strarray_dispose(git_strarray *array)
|
44
|
+
{
|
45
|
+
size_t i;
|
46
|
+
|
47
|
+
if (array == NULL)
|
48
|
+
return;
|
49
|
+
|
50
|
+
for (i = 0; i < array->count; ++i)
|
51
|
+
git__free(array->strings[i]);
|
52
|
+
|
53
|
+
git__free(array->strings);
|
54
|
+
|
55
|
+
memset(array, 0, sizeof(*array));
|
56
|
+
}
|
57
|
+
|
58
|
+
#ifndef GIT_DEPRECATE_HARD
|
59
|
+
void git_strarray_free(git_strarray *array)
|
60
|
+
{
|
61
|
+
git_strarray_dispose(array);
|
62
|
+
}
|
63
|
+
#endif
|
@@ -655,15 +655,16 @@ static int openssl_connect(git_stream *stream)
|
|
655
655
|
static int openssl_certificate(git_cert **out, git_stream *stream)
|
656
656
|
{
|
657
657
|
openssl_stream *st = (openssl_stream *) stream;
|
658
|
-
int len;
|
659
658
|
X509 *cert = SSL_get_peer_certificate(st->ssl);
|
660
|
-
unsigned char *guard, *encoded_cert;
|
659
|
+
unsigned char *guard, *encoded_cert = NULL;
|
660
|
+
int error, len;
|
661
661
|
|
662
662
|
/* Retrieve the length of the certificate first */
|
663
663
|
len = i2d_X509(cert, NULL);
|
664
664
|
if (len < 0) {
|
665
665
|
git_error_set(GIT_ERROR_NET, "failed to retrieve certificate information");
|
666
|
-
|
666
|
+
error = -1;
|
667
|
+
goto out;
|
667
668
|
}
|
668
669
|
|
669
670
|
encoded_cert = git__malloc(len);
|
@@ -673,18 +674,23 @@ static int openssl_certificate(git_cert **out, git_stream *stream)
|
|
673
674
|
|
674
675
|
len = i2d_X509(cert, &guard);
|
675
676
|
if (len < 0) {
|
676
|
-
git__free(encoded_cert);
|
677
677
|
git_error_set(GIT_ERROR_NET, "failed to retrieve certificate information");
|
678
|
-
|
678
|
+
error = -1;
|
679
|
+
goto out;
|
679
680
|
}
|
680
681
|
|
681
682
|
st->cert_info.parent.cert_type = GIT_CERT_X509;
|
682
683
|
st->cert_info.data = encoded_cert;
|
683
684
|
st->cert_info.len = len;
|
685
|
+
encoded_cert = NULL;
|
684
686
|
|
685
687
|
*out = &st->cert_info.parent;
|
688
|
+
error = 0;
|
686
689
|
|
687
|
-
|
690
|
+
out:
|
691
|
+
git__free(encoded_cert);
|
692
|
+
X509_free(cert);
|
693
|
+
return error;
|
688
694
|
}
|
689
695
|
|
690
696
|
static int openssl_set_proxy(git_stream *stream, const git_proxy_options *proxy_opts)
|
@@ -5,9 +5,10 @@
|
|
5
5
|
* a Linking Exception. For full terms see the included COPYING file.
|
6
6
|
*/
|
7
7
|
|
8
|
-
#include "git2/errors.h"
|
9
|
-
|
10
8
|
#include "common.h"
|
9
|
+
|
10
|
+
#include "streams/registry.h"
|
11
|
+
|
11
12
|
#include "global.h"
|
12
13
|
#include "streams/tls.h"
|
13
14
|
#include "streams/mbedtls.h"
|
@@ -100,7 +101,7 @@ int git_stream_register(git_stream_t type, git_stream_registration *registration
|
|
100
101
|
return 0;
|
101
102
|
}
|
102
103
|
|
103
|
-
|
104
|
+
#ifndef GIT_DEPRECATE_HARD
|
104
105
|
int git_stream_register_tls(
|
105
106
|
int GIT_CALLBACK(ctor)(git_stream **out, const char *host, const char *port))
|
106
107
|
{
|
@@ -116,3 +117,4 @@ int git_stream_register_tls(
|
|
116
117
|
return git_stream_register(GIT_STREAM_TLS, NULL);
|
117
118
|
}
|
118
119
|
}
|
120
|
+
#endif
|
@@ -958,7 +958,7 @@ cleanup:
|
|
958
958
|
return error;
|
959
959
|
}
|
960
960
|
|
961
|
-
const char *
|
961
|
+
static const char *submodule_update_to_str(git_submodule_update_t update)
|
962
962
|
{
|
963
963
|
int i;
|
964
964
|
for (i = 0; i < (int)ARRAY_SIZE(_sm_update_map); ++i)
|
@@ -1240,10 +1240,12 @@ int git_submodule_update_options_init(git_submodule_update_options *opts, unsign
|
|
1240
1240
|
return 0;
|
1241
1241
|
}
|
1242
1242
|
|
1243
|
+
#ifndef GIT_DEPRECATE_HARD
|
1243
1244
|
int git_submodule_update_init_options(git_submodule_update_options *opts, unsigned int version)
|
1244
1245
|
{
|
1245
1246
|
return git_submodule_update_options_init(opts, version);
|
1246
1247
|
}
|
1248
|
+
#endif
|
1247
1249
|
|
1248
1250
|
int git_submodule_update(git_submodule *sm, int init, git_submodule_update_options *_update_options)
|
1249
1251
|
{
|
@@ -1401,7 +1403,7 @@ int git_submodule_init(git_submodule *sm, int overwrite)
|
|
1401
1403
|
/* write "submodule.NAME.update" if not default */
|
1402
1404
|
|
1403
1405
|
val = (sm->update == GIT_SUBMODULE_UPDATE_CHECKOUT) ?
|
1404
|
-
NULL :
|
1406
|
+
NULL : submodule_update_to_str(sm->update);
|
1405
1407
|
|
1406
1408
|
if ((error = git_buf_printf(&key, "submodule.%s.update", sm->name)) < 0 ||
|
1407
1409
|
(error = git_config__update_entry(
|
@@ -1838,7 +1840,7 @@ int git_submodule_parse_update(git_submodule_update_t *out, const char *value)
|
|
1838
1840
|
return 0;
|
1839
1841
|
}
|
1840
1842
|
|
1841
|
-
int
|
1843
|
+
static int submodule_parse_recurse(git_submodule_recurse_t *out, const char *value)
|
1842
1844
|
{
|
1843
1845
|
int val;
|
1844
1846
|
|
@@ -1934,7 +1936,7 @@ static int submodule_read_config(git_submodule *sm, git_config *cfg)
|
|
1934
1936
|
|
1935
1937
|
if ((error = get_value(&value, cfg, &key, sm->name, "fetchRecurseSubmodules")) == 0) {
|
1936
1938
|
in_config = 1;
|
1937
|
-
if ((error =
|
1939
|
+
if ((error = submodule_parse_recurse(&sm->fetch_recurse, value)) < 0)
|
1938
1940
|
goto cleanup;
|
1939
1941
|
sm->fetch_recurse_default = sm->fetch_recurse;
|
1940
1942
|
} else if (error != GIT_ENOTFOUND) {
|
data/vendor/libgit2/src/sysdir.c
CHANGED
@@ -216,25 +216,6 @@ int git_sysdir_get(const git_buf **out, git_sysdir_t which)
|
|
216
216
|
return 0;
|
217
217
|
}
|
218
218
|
|
219
|
-
int git_sysdir_get_str(
|
220
|
-
char *out,
|
221
|
-
size_t outlen,
|
222
|
-
git_sysdir_t which)
|
223
|
-
{
|
224
|
-
const git_buf *path = NULL;
|
225
|
-
|
226
|
-
GIT_ERROR_CHECK_ERROR(git_sysdir_check_selector(which));
|
227
|
-
GIT_ERROR_CHECK_ERROR(git_sysdir_get(&path, which));
|
228
|
-
|
229
|
-
if (!out || path->size >= outlen) {
|
230
|
-
git_error_set(GIT_ERROR_NOMEMORY, "buffer is too short for the path");
|
231
|
-
return GIT_EBUFS;
|
232
|
-
}
|
233
|
-
|
234
|
-
git_buf_copy_cstr(out, outlen, path);
|
235
|
-
return 0;
|
236
|
-
}
|
237
|
-
|
238
219
|
#define PATH_MAGIC "$PATH"
|
239
220
|
|
240
221
|
int git_sysdir_set(git_sysdir_t which, const char *search_path)
|
@@ -317,8 +298,11 @@ static int git_sysdir_find_in_dirlist(
|
|
317
298
|
}
|
318
299
|
|
319
300
|
done:
|
301
|
+
if (name)
|
302
|
+
git_error_set(GIT_ERROR_OS, "the %s file '%s' doesn't exist", label, name);
|
303
|
+
else
|
304
|
+
git_error_set(GIT_ERROR_OS, "the %s directory doesn't exist", label);
|
320
305
|
git_buf_dispose(path);
|
321
|
-
git_error_set(GIT_ERROR_OS, "the %s file '%s' doesn't exist", label, name);
|
322
306
|
return GIT_ENOTFOUND;
|
323
307
|
}
|
324
308
|
|
data/vendor/libgit2/src/sysdir.h
CHANGED
@@ -93,17 +93,6 @@ extern int git_sysdir_global_init(void);
|
|
93
93
|
*/
|
94
94
|
extern int git_sysdir_get(const git_buf **out, git_sysdir_t which);
|
95
95
|
|
96
|
-
/**
|
97
|
-
* Get search path into a preallocated buffer
|
98
|
-
*
|
99
|
-
* @param out String buffer to write into
|
100
|
-
* @param outlen Size of string buffer
|
101
|
-
* @param which Which search path to return
|
102
|
-
* @return 0 on success, GIT_EBUFS if out is too small, <0 on other failure
|
103
|
-
*/
|
104
|
-
|
105
|
-
extern int git_sysdir_get_str(char *out, size_t outlen, git_sysdir_t which);
|
106
|
-
|
107
96
|
/**
|
108
97
|
* Set search paths for global/system/xdg files
|
109
98
|
*
|
data/vendor/libgit2/src/tag.c
CHANGED
@@ -524,7 +524,9 @@ int git_tag_peel(git_object **tag_target, const git_tag *tag)
|
|
524
524
|
|
525
525
|
/* Deprecated Functions */
|
526
526
|
|
527
|
+
#ifndef GIT_DEPRECATE_HARD
|
527
528
|
int git_tag_create_frombuffer(git_oid *oid, git_repository *repo, const char *buffer, int allow_ref_overwrite)
|
528
529
|
{
|
529
530
|
return git_tag_create_from_buffer(oid, repo, buffer, allow_ref_overwrite);
|
530
531
|
}
|
532
|
+
#endif
|
@@ -7,12 +7,30 @@
|
|
7
7
|
#ifndef INCLUDE_thread_utils_h__
|
8
8
|
#define INCLUDE_thread_utils_h__
|
9
9
|
|
10
|
-
#if defined(
|
10
|
+
#if defined(GIT_THREADS)
|
11
|
+
|
12
|
+
#if defined(__clang__)
|
13
|
+
|
14
|
+
# if (__clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ < 1))
|
15
|
+
# error Atomic primitives do not exist on this version of clang; configure libgit2 with -DTHREADSAFE=OFF
|
16
|
+
# else
|
17
|
+
# define GIT_BUILTIN_ATOMIC
|
18
|
+
# endif
|
19
|
+
|
20
|
+
#elif defined(__GNUC__)
|
21
|
+
|
11
22
|
# if (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 1))
|
12
23
|
# error Atomic primitives do not exist on this version of gcc; configure libgit2 with -DTHREADSAFE=OFF
|
24
|
+
# elif (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7))
|
25
|
+
# define GIT_BUILTIN_ATOMIC
|
26
|
+
# else
|
27
|
+
# define GIT_BUILTIN_SYNC
|
13
28
|
# endif
|
29
|
+
|
14
30
|
#endif
|
15
31
|
|
32
|
+
#endif /* GIT_THREADS */
|
33
|
+
|
16
34
|
/* Common operations even if threading has been disabled */
|
17
35
|
typedef struct {
|
18
36
|
#if defined(GIT_WIN32)
|
@@ -26,21 +44,25 @@ typedef struct {
|
|
26
44
|
|
27
45
|
typedef struct {
|
28
46
|
#if defined(GIT_WIN32)
|
29
|
-
__int64 val;
|
47
|
+
volatile __int64 val;
|
30
48
|
#else
|
31
|
-
int64_t val;
|
49
|
+
volatile int64_t val;
|
32
50
|
#endif
|
33
51
|
} git_atomic64;
|
34
52
|
|
35
53
|
typedef git_atomic64 git_atomic_ssize;
|
36
54
|
|
55
|
+
#define git_atomic_ssize_set git_atomic64_set
|
37
56
|
#define git_atomic_ssize_add git_atomic64_add
|
57
|
+
#define git_atomic_ssize_get git_atomic64_get
|
38
58
|
|
39
59
|
#else
|
40
60
|
|
41
61
|
typedef git_atomic git_atomic_ssize;
|
42
62
|
|
63
|
+
#define git_atomic_ssize_set git_atomic_set
|
43
64
|
#define git_atomic_ssize_add git_atomic_add
|
65
|
+
#define git_atomic_ssize_get git_atomic_get
|
44
66
|
|
45
67
|
#endif
|
46
68
|
|
@@ -56,7 +78,9 @@ GIT_INLINE(void) git_atomic_set(git_atomic *a, int val)
|
|
56
78
|
{
|
57
79
|
#if defined(GIT_WIN32)
|
58
80
|
InterlockedExchange(&a->val, (LONG)val);
|
59
|
-
#elif defined(
|
81
|
+
#elif defined(GIT_BUILTIN_ATOMIC)
|
82
|
+
__atomic_store_n(&a->val, val, __ATOMIC_SEQ_CST);
|
83
|
+
#elif defined(GIT_BUILTIN_SYNC)
|
60
84
|
__sync_lock_test_and_set(&a->val, val);
|
61
85
|
#else
|
62
86
|
# error "Unsupported architecture for atomic operations"
|
@@ -67,7 +91,9 @@ GIT_INLINE(int) git_atomic_inc(git_atomic *a)
|
|
67
91
|
{
|
68
92
|
#if defined(GIT_WIN32)
|
69
93
|
return InterlockedIncrement(&a->val);
|
70
|
-
#elif defined(
|
94
|
+
#elif defined(GIT_BUILTIN_ATOMIC)
|
95
|
+
return __atomic_add_fetch(&a->val, 1, __ATOMIC_SEQ_CST);
|
96
|
+
#elif defined(GIT_BUILTIN_SYNC)
|
71
97
|
return __sync_add_and_fetch(&a->val, 1);
|
72
98
|
#else
|
73
99
|
# error "Unsupported architecture for atomic operations"
|
@@ -78,7 +104,9 @@ GIT_INLINE(int) git_atomic_add(git_atomic *a, int32_t addend)
|
|
78
104
|
{
|
79
105
|
#if defined(GIT_WIN32)
|
80
106
|
return InterlockedExchangeAdd(&a->val, addend);
|
81
|
-
#elif defined(
|
107
|
+
#elif defined(GIT_BUILTIN_ATOMIC)
|
108
|
+
return __atomic_add_fetch(&a->val, addend, __ATOMIC_SEQ_CST);
|
109
|
+
#elif defined(GIT_BUILTIN_SYNC)
|
82
110
|
return __sync_add_and_fetch(&a->val, addend);
|
83
111
|
#else
|
84
112
|
# error "Unsupported architecture for atomic operations"
|
@@ -89,25 +117,45 @@ GIT_INLINE(int) git_atomic_dec(git_atomic *a)
|
|
89
117
|
{
|
90
118
|
#if defined(GIT_WIN32)
|
91
119
|
return InterlockedDecrement(&a->val);
|
92
|
-
#elif defined(
|
120
|
+
#elif defined(GIT_BUILTIN_ATOMIC)
|
121
|
+
return __atomic_sub_fetch(&a->val, 1, __ATOMIC_SEQ_CST);
|
122
|
+
#elif defined(GIT_BUILTIN_SYNC)
|
93
123
|
return __sync_sub_and_fetch(&a->val, 1);
|
94
124
|
#else
|
95
125
|
# error "Unsupported architecture for atomic operations"
|
96
126
|
#endif
|
97
127
|
}
|
98
128
|
|
129
|
+
GIT_INLINE(int) git_atomic_get(git_atomic *a)
|
130
|
+
{
|
131
|
+
#if defined(GIT_WIN32)
|
132
|
+
return (int)InterlockedCompareExchange(&a->val, 0, 0);
|
133
|
+
#elif defined(GIT_BUILTIN_ATOMIC)
|
134
|
+
return __atomic_load_n(&a->val, __ATOMIC_SEQ_CST);
|
135
|
+
#elif defined(GIT_BUILTIN_SYNC)
|
136
|
+
return __sync_val_compare_and_swap(&a->val, 0, 0);
|
137
|
+
#else
|
138
|
+
# error "Unsupported architecture for atomic operations"
|
139
|
+
#endif
|
140
|
+
}
|
141
|
+
|
99
142
|
GIT_INLINE(void *) git___compare_and_swap(
|
100
143
|
void * volatile *ptr, void *oldval, void *newval)
|
101
144
|
{
|
102
|
-
volatile void *foundval;
|
103
145
|
#if defined(GIT_WIN32)
|
146
|
+
volatile void *foundval;
|
104
147
|
foundval = InterlockedCompareExchangePointer((volatile PVOID *)ptr, newval, oldval);
|
105
|
-
|
148
|
+
return (foundval == oldval) ? oldval : newval;
|
149
|
+
#elif defined(GIT_BUILTIN_ATOMIC)
|
150
|
+
bool success = __atomic_compare_exchange(ptr, &oldval, &newval, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);
|
151
|
+
return success ? oldval : newval;
|
152
|
+
#elif defined(GIT_BUILTIN_SYNC)
|
153
|
+
volatile void *foundval;
|
106
154
|
foundval = __sync_val_compare_and_swap(ptr, oldval, newval);
|
155
|
+
return (foundval == oldval) ? oldval : newval;
|
107
156
|
#else
|
108
157
|
# error "Unsupported architecture for atomic operations"
|
109
158
|
#endif
|
110
|
-
return (foundval == oldval) ? oldval : newval;
|
111
159
|
}
|
112
160
|
|
113
161
|
GIT_INLINE(volatile void *) git___swap(
|
@@ -115,8 +163,30 @@ GIT_INLINE(volatile void *) git___swap(
|
|
115
163
|
{
|
116
164
|
#if defined(GIT_WIN32)
|
117
165
|
return InterlockedExchangePointer(ptr, newval);
|
118
|
-
#
|
166
|
+
#elif defined(GIT_BUILTIN_ATOMIC)
|
167
|
+
void * volatile foundval;
|
168
|
+
__atomic_exchange(ptr, &newval, &foundval, __ATOMIC_SEQ_CST);
|
169
|
+
return foundval;
|
170
|
+
#elif defined(GIT_BUILTIN_SYNC)
|
119
171
|
return __sync_lock_test_and_set(ptr, newval);
|
172
|
+
#else
|
173
|
+
# error "Unsupported architecture for atomic operations"
|
174
|
+
#endif
|
175
|
+
}
|
176
|
+
|
177
|
+
GIT_INLINE(volatile void *) git___load(void * volatile *ptr)
|
178
|
+
{
|
179
|
+
#if defined(GIT_WIN32)
|
180
|
+
void *newval = NULL, *oldval = NULL;
|
181
|
+
volatile void *foundval = NULL;
|
182
|
+
foundval = InterlockedCompareExchangePointer((volatile PVOID *)ptr, newval, oldval);
|
183
|
+
return foundval;
|
184
|
+
#elif defined(GIT_BUILTIN_ATOMIC)
|
185
|
+
return (volatile void *)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
|
186
|
+
#elif defined(GIT_BUILTIN_SYNC)
|
187
|
+
return (volatile void *)__sync_val_compare_and_swap(ptr, 0, 0);
|
188
|
+
#else
|
189
|
+
# error "Unsupported architecture for atomic operations"
|
120
190
|
#endif
|
121
191
|
}
|
122
192
|
|
@@ -126,13 +196,41 @@ GIT_INLINE(int64_t) git_atomic64_add(git_atomic64 *a, int64_t addend)
|
|
126
196
|
{
|
127
197
|
#if defined(GIT_WIN32)
|
128
198
|
return InterlockedExchangeAdd64(&a->val, addend);
|
129
|
-
#elif defined(
|
199
|
+
#elif defined(GIT_BUILTIN_ATOMIC)
|
200
|
+
return __atomic_add_fetch(&a->val, addend, __ATOMIC_SEQ_CST);
|
201
|
+
#elif defined(GIT_BUILTIN_SYNC)
|
130
202
|
return __sync_add_and_fetch(&a->val, addend);
|
131
203
|
#else
|
132
204
|
# error "Unsupported architecture for atomic operations"
|
133
205
|
#endif
|
134
206
|
}
|
135
207
|
|
208
|
+
GIT_INLINE(void) git_atomic64_set(git_atomic64 *a, int64_t val)
|
209
|
+
{
|
210
|
+
#if defined(GIT_WIN32)
|
211
|
+
InterlockedExchange64(&a->val, val);
|
212
|
+
#elif defined(GIT_BUILTIN_ATOMIC)
|
213
|
+
__atomic_store_n(&a->val, val, __ATOMIC_SEQ_CST);
|
214
|
+
#elif defined(GIT_BUILTIN_SYNC)
|
215
|
+
__sync_lock_test_and_set(&a->val, val);
|
216
|
+
#else
|
217
|
+
# error "Unsupported architecture for atomic operations"
|
218
|
+
#endif
|
219
|
+
}
|
220
|
+
|
221
|
+
GIT_INLINE(int64_t) git_atomic64_get(git_atomic64 *a)
|
222
|
+
{
|
223
|
+
#if defined(GIT_WIN32)
|
224
|
+
return (int64_t)InterlockedCompareExchange64(&a->val, 0, 0);
|
225
|
+
#elif defined(GIT_BUILTIN_ATOMIC)
|
226
|
+
return __atomic_load_n(&a->val, __ATOMIC_SEQ_CST);
|
227
|
+
#elif defined(GIT_BUILTIN_SYNC)
|
228
|
+
return __sync_val_compare_and_swap(&a->val, 0, 0);
|
229
|
+
#else
|
230
|
+
# error "Unsupported architecture for atomic operations"
|
231
|
+
#endif
|
232
|
+
}
|
233
|
+
|
136
234
|
#endif
|
137
235
|
|
138
236
|
#else
|
@@ -190,6 +288,11 @@ GIT_INLINE(int) git_atomic_dec(git_atomic *a)
|
|
190
288
|
return --a->val;
|
191
289
|
}
|
192
290
|
|
291
|
+
GIT_INLINE(int) git_atomic_get(git_atomic *a)
|
292
|
+
{
|
293
|
+
return (int)a->val;
|
294
|
+
}
|
295
|
+
|
193
296
|
GIT_INLINE(void *) git___compare_and_swap(
|
194
297
|
void * volatile *ptr, void *oldval, void *newval)
|
195
298
|
{
|
@@ -216,15 +319,20 @@ GIT_INLINE(int64_t) git_atomic64_add(git_atomic64 *a, int64_t addend)
|
|
216
319
|
return a->val;
|
217
320
|
}
|
218
321
|
|
219
|
-
|
220
|
-
|
221
|
-
|
322
|
+
GIT_INLINE(void) git_atomic64_set(git_atomic64 *a, int64_t val)
|
323
|
+
{
|
324
|
+
a->val = val;
|
325
|
+
}
|
222
326
|
|
223
|
-
GIT_INLINE(
|
327
|
+
GIT_INLINE(int64_t) git_atomic64_get(git_atomic64 *a)
|
224
328
|
{
|
225
|
-
return (
|
329
|
+
return (int64_t)a->val;
|
226
330
|
}
|
227
331
|
|
332
|
+
#endif
|
333
|
+
|
334
|
+
#endif
|
335
|
+
|
228
336
|
/* Atomically replace oldval with newval
|
229
337
|
* @return oldval if it was replaced or newval if it was not
|
230
338
|
*/
|
@@ -233,14 +341,24 @@ GIT_INLINE(int) git_atomic_get(git_atomic *a)
|
|
233
341
|
|
234
342
|
#define git__swap(ptr, val) (void *)git___swap((void * volatile *)&ptr, val)
|
235
343
|
|
344
|
+
#define git__load(ptr) (void *)git___load((void * volatile *)&ptr)
|
345
|
+
|
236
346
|
extern int git_online_cpus(void);
|
237
347
|
|
238
|
-
#if defined(GIT_THREADS)
|
239
|
-
|
240
|
-
#
|
241
|
-
#
|
348
|
+
#if defined(GIT_THREADS)
|
349
|
+
|
350
|
+
# if defined(GIT_WIN32)
|
351
|
+
# define GIT_MEMORY_BARRIER MemoryBarrier()
|
352
|
+
# elif defined(GIT_BUILTIN_ATOMIC)
|
353
|
+
# define GIT_MEMORY_BARRIER __atomic_thread_fence(__ATOMIC_SEQ_CST)
|
354
|
+
# elif defined(GIT_BUILTIN_SYNC)
|
355
|
+
# define GIT_MEMORY_BARRIER __sync_synchronize()
|
356
|
+
# endif
|
357
|
+
|
242
358
|
#else
|
359
|
+
|
243
360
|
# define GIT_MEMORY_BARRIER /* noop */
|
361
|
+
|
244
362
|
#endif
|
245
363
|
|
246
364
|
#endif
|