rugged 1.1.1 → 1.2.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/LICENSE +1 -0
- data/README.md +1 -1
- data/ext/rugged/rugged.c +7 -4
- data/ext/rugged/rugged_object.c +1 -1
- data/ext/rugged/rugged_repo.c +3 -3
- data/lib/rugged/repository.rb +2 -2
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +11 -6
- data/vendor/libgit2/COPYING +109 -1
- data/vendor/libgit2/cmake/Findfutimens.cmake +14 -0
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +4 -0
- data/vendor/libgit2/cmake/SelectHashes.cmake +1 -0
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +101 -0
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +17 -5
- data/vendor/libgit2/deps/ntlmclient/crypt.h +14 -9
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +20 -20
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +3 -3
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +37 -36
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +4 -3
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +178 -51
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +74 -5
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +150 -118
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +13 -9
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +16 -3
- data/vendor/libgit2/deps/ntlmclient/unicode.h +10 -4
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +16 -27
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.h +20 -0
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +28 -52
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.h +22 -0
- data/vendor/libgit2/include/git2/attr.h +89 -0
- data/vendor/libgit2/include/git2/blame.h +93 -42
- data/vendor/libgit2/include/git2/blob.h +14 -2
- data/vendor/libgit2/include/git2/branch.h +25 -0
- data/vendor/libgit2/include/git2/cert.h +42 -5
- data/vendor/libgit2/include/git2/checkout.h +28 -12
- data/vendor/libgit2/include/git2/commit.h +35 -19
- data/vendor/libgit2/include/git2/common.h +14 -4
- data/vendor/libgit2/include/git2/deprecated.h +206 -6
- data/vendor/libgit2/include/git2/diff.h +34 -19
- data/vendor/libgit2/include/git2/errors.h +6 -6
- data/vendor/libgit2/include/git2/filter.h +57 -17
- data/vendor/libgit2/include/git2/graph.h +20 -2
- data/vendor/libgit2/include/git2/index.h +2 -2
- data/vendor/libgit2/include/git2/odb.h +29 -0
- data/vendor/libgit2/include/git2/patch.h +8 -0
- data/vendor/libgit2/include/git2/rebase.h +25 -1
- data/vendor/libgit2/include/git2/refs.h +6 -2
- data/vendor/libgit2/include/git2/remote.h +59 -6
- data/vendor/libgit2/include/git2/revparse.h +5 -5
- data/vendor/libgit2/include/git2/status.h +115 -59
- data/vendor/libgit2/include/git2/submodule.h +9 -0
- data/vendor/libgit2/include/git2/sys/commit_graph.h +174 -0
- data/vendor/libgit2/include/git2/sys/filter.h +49 -28
- data/vendor/libgit2/include/git2/sys/midx.h +74 -0
- data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -0
- data/vendor/libgit2/include/git2/sys/transport.h +1 -0
- data/vendor/libgit2/include/git2/tag.h +12 -0
- data/vendor/libgit2/include/git2/tree.h +0 -14
- data/vendor/libgit2/include/git2/types.h +9 -0
- data/vendor/libgit2/include/git2/version.h +4 -4
- data/vendor/libgit2/include/git2/worktree.h +1 -0
- data/vendor/libgit2/src/CMakeLists.txt +25 -4
- data/vendor/libgit2/src/alloc.c +21 -8
- data/vendor/libgit2/src/allocators/failalloc.c +92 -0
- data/vendor/libgit2/src/allocators/failalloc.h +23 -0
- data/vendor/libgit2/src/allocators/stdalloc.c +41 -10
- data/vendor/libgit2/src/allocators/win32_leakcheck.c +118 -0
- data/vendor/libgit2/src/allocators/{win32_crtdbg.h → win32_leakcheck.h} +3 -3
- data/vendor/libgit2/src/annotated_commit.c +21 -9
- data/vendor/libgit2/src/apply.c +16 -7
- data/vendor/libgit2/src/array.h +11 -11
- data/vendor/libgit2/src/attr.c +181 -74
- data/vendor/libgit2/src/attr_file.c +84 -39
- data/vendor/libgit2/src/attr_file.h +32 -11
- data/vendor/libgit2/src/attrcache.c +42 -37
- data/vendor/libgit2/src/attrcache.h +4 -5
- data/vendor/libgit2/src/blame.c +11 -5
- data/vendor/libgit2/src/blob.c +35 -24
- data/vendor/libgit2/src/branch.c +69 -17
- data/vendor/libgit2/src/buffer.c +334 -25
- data/vendor/libgit2/src/buffer.h +153 -2
- data/vendor/libgit2/src/cache.c +2 -2
- data/vendor/libgit2/src/cache.h +7 -7
- data/vendor/libgit2/src/cc-compat.h +10 -2
- data/vendor/libgit2/src/checkout.c +48 -26
- data/vendor/libgit2/src/cherrypick.c +6 -2
- data/vendor/libgit2/src/clone.c +41 -47
- data/vendor/libgit2/src/commit.c +41 -28
- data/vendor/libgit2/src/commit_graph.c +1209 -0
- data/vendor/libgit2/src/commit_graph.h +162 -0
- data/vendor/libgit2/src/commit_list.c +46 -0
- data/vendor/libgit2/src/commit_list.h +2 -0
- data/vendor/libgit2/src/common.h +25 -2
- data/vendor/libgit2/src/config.c +37 -15
- data/vendor/libgit2/src/config_cache.c +5 -3
- data/vendor/libgit2/src/config_file.c +16 -8
- data/vendor/libgit2/src/config_parse.c +4 -6
- data/vendor/libgit2/src/crlf.c +16 -6
- data/vendor/libgit2/src/date.c +4 -3
- data/vendor/libgit2/src/delta.c +1 -1
- data/vendor/libgit2/src/describe.c +6 -3
- data/vendor/libgit2/src/diff.c +11 -8
- data/vendor/libgit2/src/diff_driver.c +21 -17
- data/vendor/libgit2/src/diff_file.c +2 -6
- data/vendor/libgit2/src/diff_generate.c +46 -17
- data/vendor/libgit2/src/diff_print.c +19 -6
- data/vendor/libgit2/src/diff_stats.c +7 -5
- data/vendor/libgit2/src/diff_tform.c +9 -8
- data/vendor/libgit2/src/diff_xdiff.c +4 -2
- data/vendor/libgit2/src/diff_xdiff.h +1 -1
- data/vendor/libgit2/src/errors.c +24 -19
- data/vendor/libgit2/src/features.h.in +5 -1
- data/vendor/libgit2/src/fetch.c +5 -2
- data/vendor/libgit2/src/fetchhead.c +8 -4
- data/vendor/libgit2/src/filebuf.c +9 -7
- data/vendor/libgit2/src/filter.c +206 -110
- data/vendor/libgit2/src/filter.h +24 -5
- data/vendor/libgit2/src/futils.c +5 -5
- data/vendor/libgit2/src/futils.h +1 -1
- data/vendor/libgit2/src/graph.c +64 -9
- data/vendor/libgit2/src/hash/sha1/collisiondetect.c +3 -3
- data/vendor/libgit2/src/hash/sha1/common_crypto.c +3 -3
- data/vendor/libgit2/src/hash/sha1/generic.h +1 -1
- data/vendor/libgit2/src/hash/sha1/mbedtls.c +12 -12
- data/vendor/libgit2/src/hash/sha1/openssl.c +3 -3
- data/vendor/libgit2/src/hash/sha1/sha1dc/sha1.c +0 -2
- data/vendor/libgit2/src/hash/sha1/win32.c +15 -11
- data/vendor/libgit2/src/hash.c +16 -13
- data/vendor/libgit2/src/hash.h +1 -1
- data/vendor/libgit2/src/hashsig.c +23 -10
- data/vendor/libgit2/src/ident.c +13 -3
- data/vendor/libgit2/src/ignore.c +35 -19
- data/vendor/libgit2/src/index.c +106 -70
- data/vendor/libgit2/src/index.h +1 -1
- data/vendor/libgit2/src/indexer.c +31 -29
- data/vendor/libgit2/src/integer.h +64 -2
- data/vendor/libgit2/src/iterator.c +36 -24
- data/vendor/libgit2/src/iterator.h +1 -1
- data/vendor/libgit2/src/khash.h +2 -11
- data/vendor/libgit2/src/{settings.c → libgit2.c} +117 -50
- data/vendor/libgit2/src/libgit2.h +15 -0
- data/vendor/libgit2/src/mailmap.c +23 -10
- data/vendor/libgit2/src/map.h +3 -3
- data/vendor/libgit2/src/merge.c +70 -30
- data/vendor/libgit2/src/merge.h +2 -1
- data/vendor/libgit2/src/merge_driver.c +19 -13
- data/vendor/libgit2/src/merge_file.c +11 -3
- data/vendor/libgit2/src/message.c +3 -1
- data/vendor/libgit2/src/midx.c +471 -10
- data/vendor/libgit2/src/midx.h +28 -1
- data/vendor/libgit2/src/mwindow.c +103 -59
- data/vendor/libgit2/src/mwindow.h +3 -3
- data/vendor/libgit2/src/net.c +127 -3
- data/vendor/libgit2/src/net.h +16 -2
- data/vendor/libgit2/src/netops.c +6 -4
- data/vendor/libgit2/src/netops.h +2 -2
- data/vendor/libgit2/src/notes.c +10 -10
- data/vendor/libgit2/src/object.c +22 -14
- data/vendor/libgit2/src/odb.c +285 -48
- data/vendor/libgit2/src/odb.h +16 -2
- data/vendor/libgit2/src/odb_loose.c +28 -18
- data/vendor/libgit2/src/odb_mempack.c +1 -1
- data/vendor/libgit2/src/odb_pack.c +391 -114
- data/vendor/libgit2/src/oid.c +5 -4
- data/vendor/libgit2/src/pack-objects.c +54 -48
- data/vendor/libgit2/src/pack.c +329 -119
- data/vendor/libgit2/src/pack.h +25 -7
- data/vendor/libgit2/src/patch.c +14 -7
- data/vendor/libgit2/src/patch_generate.c +2 -2
- data/vendor/libgit2/src/patch_parse.c +2 -1
- data/vendor/libgit2/src/path.c +98 -53
- data/vendor/libgit2/src/path.h +79 -6
- data/vendor/libgit2/src/pathspec.c +8 -8
- data/vendor/libgit2/src/pool.c +13 -7
- data/vendor/libgit2/src/posix.c +11 -3
- data/vendor/libgit2/src/reader.c +10 -6
- data/vendor/libgit2/src/rebase.c +93 -49
- data/vendor/libgit2/src/refdb.c +30 -13
- data/vendor/libgit2/src/refdb_fs.c +121 -69
- data/vendor/libgit2/src/reflog.c +19 -14
- data/vendor/libgit2/src/refs.c +76 -41
- data/vendor/libgit2/src/refspec.c +32 -12
- data/vendor/libgit2/src/remote.c +272 -102
- data/vendor/libgit2/src/remote.h +2 -1
- data/vendor/libgit2/src/repository.c +176 -103
- data/vendor/libgit2/src/repository.h +12 -1
- data/vendor/libgit2/src/reset.c +7 -6
- data/vendor/libgit2/src/revert.c +6 -2
- data/vendor/libgit2/src/revparse.c +14 -9
- data/vendor/libgit2/src/revwalk.c +32 -15
- data/vendor/libgit2/src/runtime.c +162 -0
- data/vendor/libgit2/src/runtime.h +62 -0
- data/vendor/libgit2/src/settings.h +11 -0
- data/vendor/libgit2/src/signature.c +6 -5
- data/vendor/libgit2/src/sortedcache.h +10 -8
- data/vendor/libgit2/src/stash.c +3 -1
- data/vendor/libgit2/src/status.c +7 -4
- data/vendor/libgit2/src/strarray.c +2 -1
- data/vendor/libgit2/src/streams/mbedtls.c +14 -17
- data/vendor/libgit2/src/streams/mbedtls.h +1 -1
- data/vendor/libgit2/src/streams/openssl.c +101 -201
- data/vendor/libgit2/src/streams/openssl.h +9 -1
- data/vendor/libgit2/src/streams/openssl_dynamic.c +309 -0
- data/vendor/libgit2/src/streams/openssl_dynamic.h +348 -0
- data/vendor/libgit2/src/streams/openssl_legacy.c +203 -0
- data/vendor/libgit2/src/streams/openssl_legacy.h +63 -0
- data/vendor/libgit2/src/streams/registry.c +5 -6
- data/vendor/libgit2/src/streams/socket.c +6 -2
- data/vendor/libgit2/src/streams/stransport.c +6 -3
- data/vendor/libgit2/src/streams/tls.c +5 -3
- data/vendor/libgit2/src/submodule.c +128 -62
- data/vendor/libgit2/src/submodule.h +9 -9
- data/vendor/libgit2/src/sysdir.c +4 -6
- data/vendor/libgit2/src/tag.c +47 -11
- data/vendor/libgit2/src/thread.c +140 -0
- data/vendor/libgit2/src/thread.h +479 -0
- data/vendor/libgit2/src/threadstate.c +83 -0
- data/vendor/libgit2/src/threadstate.h +24 -0
- data/vendor/libgit2/src/trace.c +2 -2
- data/vendor/libgit2/src/trace.h +17 -13
- data/vendor/libgit2/src/transaction.c +19 -8
- data/vendor/libgit2/src/transport.c +3 -3
- data/vendor/libgit2/src/transports/auth.c +1 -1
- data/vendor/libgit2/src/transports/auth_negotiate.c +11 -4
- data/vendor/libgit2/src/transports/auth_ntlm.c +10 -6
- data/vendor/libgit2/src/transports/credential.c +15 -7
- data/vendor/libgit2/src/transports/git.c +1 -3
- data/vendor/libgit2/src/transports/http.c +19 -17
- data/vendor/libgit2/src/transports/http.h +1 -0
- data/vendor/libgit2/src/transports/httpclient.c +53 -26
- data/vendor/libgit2/src/transports/httpclient.h +1 -1
- data/vendor/libgit2/src/transports/local.c +3 -3
- data/vendor/libgit2/src/transports/smart.c +12 -7
- data/vendor/libgit2/src/transports/smart.h +1 -1
- data/vendor/libgit2/src/transports/smart_protocol.c +11 -5
- data/vendor/libgit2/src/transports/ssh.c +51 -17
- data/vendor/libgit2/src/transports/winhttp.c +41 -31
- data/vendor/libgit2/src/tree.c +100 -77
- data/vendor/libgit2/src/tree.h +1 -0
- data/vendor/libgit2/src/tsort.c +0 -2
- data/vendor/libgit2/src/unix/map.c +3 -1
- data/vendor/libgit2/src/unix/pthread.h +2 -1
- data/vendor/libgit2/src/utf8.c +150 -0
- data/vendor/libgit2/src/utf8.h +52 -0
- data/vendor/libgit2/src/util.c +53 -129
- data/vendor/libgit2/src/util.h +33 -39
- data/vendor/libgit2/src/vector.c +23 -19
- data/vendor/libgit2/src/vector.h +4 -2
- data/vendor/libgit2/src/win32/findfile.c +4 -2
- data/vendor/libgit2/src/win32/map.c +1 -1
- data/vendor/libgit2/src/win32/msvc-compat.h +9 -1
- data/vendor/libgit2/src/win32/path_w32.c +22 -24
- data/vendor/libgit2/src/win32/path_w32.h +0 -1
- data/vendor/libgit2/src/win32/posix_w32.c +7 -1
- data/vendor/libgit2/src/win32/precompiled.h +0 -1
- data/vendor/libgit2/src/win32/reparse.h +4 -4
- data/vendor/libgit2/src/win32/thread.c +24 -15
- data/vendor/libgit2/src/win32/thread.h +1 -1
- data/vendor/libgit2/src/win32/w32_buffer.c +3 -3
- data/vendor/libgit2/src/win32/w32_common.h +18 -9
- data/vendor/libgit2/src/win32/{w32_crtdbg_stacktrace.c → w32_leakcheck.c} +269 -33
- data/vendor/libgit2/src/win32/w32_leakcheck.h +222 -0
- data/vendor/libgit2/src/win32/w32_util.h +6 -6
- data/vendor/libgit2/src/worktree.c +27 -16
- data/vendor/libgit2/src/zstream.c +1 -1
- metadata +32 -16
- data/vendor/libgit2/src/allocators/win32_crtdbg.c +0 -118
- data/vendor/libgit2/src/buf_text.c +0 -316
- data/vendor/libgit2/src/buf_text.h +0 -122
- data/vendor/libgit2/src/global.c +0 -363
- data/vendor/libgit2/src/global.h +0 -41
- data/vendor/libgit2/src/thread-utils.c +0 -58
- data/vendor/libgit2/src/thread-utils.h +0 -369
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -127
- data/vendor/libgit2/src/win32/w32_stack.c +0 -188
- data/vendor/libgit2/src/win32/w32_stack.h +0 -140
data/vendor/libgit2/src/hash.h
CHANGED
|
@@ -17,7 +17,7 @@ typedef uint64_t hashsig_state;
|
|
|
17
17
|
#define HASHSIG_SCALE 100
|
|
18
18
|
|
|
19
19
|
#define HASHSIG_MAX_RUN 80
|
|
20
|
-
#define HASHSIG_HASH_START
|
|
20
|
+
#define HASHSIG_HASH_START INT64_C(0x012345678ABCDEF0)
|
|
21
21
|
#define HASHSIG_HASH_SHIFT 5
|
|
22
22
|
|
|
23
23
|
#define HASHSIG_HASH_MIX(S,CH) \
|
|
@@ -133,13 +133,13 @@ typedef struct {
|
|
|
133
133
|
uint8_t ignore_ch[256];
|
|
134
134
|
} hashsig_in_progress;
|
|
135
135
|
|
|
136
|
-
static
|
|
136
|
+
static int hashsig_in_progress_init(
|
|
137
137
|
hashsig_in_progress *prog, git_hashsig *sig)
|
|
138
138
|
{
|
|
139
139
|
int i;
|
|
140
140
|
|
|
141
141
|
/* no more than one can be set */
|
|
142
|
-
|
|
142
|
+
GIT_ASSERT(!(sig->opt & GIT_HASHSIG_IGNORE_WHITESPACE) ||
|
|
143
143
|
!(sig->opt & GIT_HASHSIG_SMART_WHITESPACE));
|
|
144
144
|
|
|
145
145
|
if (sig->opt & GIT_HASHSIG_IGNORE_WHITESPACE) {
|
|
@@ -153,6 +153,8 @@ static void hashsig_in_progress_init(
|
|
|
153
153
|
} else {
|
|
154
154
|
memset(prog, 0, sizeof(*prog));
|
|
155
155
|
}
|
|
156
|
+
|
|
157
|
+
return 0;
|
|
156
158
|
}
|
|
157
159
|
|
|
158
160
|
static int hashsig_add_hashes(
|
|
@@ -251,7 +253,8 @@ int git_hashsig_create(
|
|
|
251
253
|
git_hashsig *sig = hashsig_alloc(opts);
|
|
252
254
|
GIT_ERROR_CHECK_ALLOC(sig);
|
|
253
255
|
|
|
254
|
-
hashsig_in_progress_init(&prog, sig)
|
|
256
|
+
if ((error = hashsig_in_progress_init(&prog, sig)) < 0)
|
|
257
|
+
return error;
|
|
255
258
|
|
|
256
259
|
error = hashsig_add_hashes(sig, (const uint8_t *)buf, buflen, &prog);
|
|
257
260
|
|
|
@@ -283,7 +286,10 @@ int git_hashsig_create_fromfile(
|
|
|
283
286
|
return fd;
|
|
284
287
|
}
|
|
285
288
|
|
|
286
|
-
hashsig_in_progress_init(&prog, sig)
|
|
289
|
+
if ((error = hashsig_in_progress_init(&prog, sig)) < 0) {
|
|
290
|
+
p_close(fd);
|
|
291
|
+
return error;
|
|
292
|
+
}
|
|
287
293
|
|
|
288
294
|
while (!error) {
|
|
289
295
|
if ((buflen = p_read(fd, buf, sizeof(buf))) <= 0) {
|
|
@@ -318,7 +324,7 @@ static int hashsig_heap_compare(const hashsig_heap *a, const hashsig_heap *b)
|
|
|
318
324
|
{
|
|
319
325
|
int matches = 0, i, j, cmp;
|
|
320
326
|
|
|
321
|
-
|
|
327
|
+
GIT_ASSERT_WITH_RETVAL(a->cmp == b->cmp, 0);
|
|
322
328
|
|
|
323
329
|
/* hash heaps are sorted - just look for overlap vs total */
|
|
324
330
|
|
|
@@ -354,9 +360,16 @@ int git_hashsig_compare(const git_hashsig *a, const git_hashsig *b)
|
|
|
354
360
|
/* if we have fewer than the maximum number of elements, then just use
|
|
355
361
|
* one array since the two arrays will be the same
|
|
356
362
|
*/
|
|
357
|
-
if (a->mins.size < HASHSIG_HEAP_SIZE)
|
|
363
|
+
if (a->mins.size < HASHSIG_HEAP_SIZE) {
|
|
358
364
|
return hashsig_heap_compare(&a->mins, &b->mins);
|
|
359
|
-
else
|
|
360
|
-
|
|
361
|
-
|
|
365
|
+
} else {
|
|
366
|
+
int mins, maxs;
|
|
367
|
+
|
|
368
|
+
if ((mins = hashsig_heap_compare(&a->mins, &b->mins)) < 0)
|
|
369
|
+
return mins;
|
|
370
|
+
if ((maxs = hashsig_heap_compare(&a->maxs, &b->maxs)) < 0)
|
|
371
|
+
return maxs;
|
|
372
|
+
|
|
373
|
+
return (mins + maxs) / 2;
|
|
374
|
+
}
|
|
362
375
|
}
|
data/vendor/libgit2/src/ident.c
CHANGED
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
#include "git2/sys/filter.h"
|
|
11
11
|
#include "filter.h"
|
|
12
12
|
#include "buffer.h"
|
|
13
|
-
#include "buf_text.h"
|
|
14
13
|
|
|
15
14
|
static int ident_find_id(
|
|
16
15
|
const char **id_start, const char **id_end, const char *start, size_t len)
|
|
@@ -105,7 +104,7 @@ static int ident_apply(
|
|
|
105
104
|
GIT_UNUSED(self); GIT_UNUSED(payload);
|
|
106
105
|
|
|
107
106
|
/* Don't filter binary files */
|
|
108
|
-
if (
|
|
107
|
+
if (git_buf_is_binary(from))
|
|
109
108
|
return GIT_PASSTHROUGH;
|
|
110
109
|
|
|
111
110
|
if (git_filter_source_mode(src) == GIT_FILTER_SMUDGE)
|
|
@@ -114,6 +113,17 @@ static int ident_apply(
|
|
|
114
113
|
return ident_remove_id(to, from);
|
|
115
114
|
}
|
|
116
115
|
|
|
116
|
+
static int ident_stream(
|
|
117
|
+
git_writestream **out,
|
|
118
|
+
git_filter *self,
|
|
119
|
+
void **payload,
|
|
120
|
+
const git_filter_source *src,
|
|
121
|
+
git_writestream *next)
|
|
122
|
+
{
|
|
123
|
+
return git_filter_buffered_stream_new(out,
|
|
124
|
+
self, ident_apply, NULL, payload, src, next);
|
|
125
|
+
}
|
|
126
|
+
|
|
117
127
|
git_filter *git_ident_filter_new(void)
|
|
118
128
|
{
|
|
119
129
|
git_filter *f = git__calloc(1, sizeof(git_filter));
|
|
@@ -123,7 +133,7 @@ git_filter *git_ident_filter_new(void)
|
|
|
123
133
|
f->version = GIT_FILTER_VERSION;
|
|
124
134
|
f->attributes = "+ident"; /* apply to files with ident attribute set */
|
|
125
135
|
f->shutdown = git_filter_free;
|
|
126
|
-
f->
|
|
136
|
+
f->stream = ident_stream;
|
|
127
137
|
|
|
128
138
|
return f;
|
|
129
139
|
}
|
data/vendor/libgit2/src/ignore.c
CHANGED
|
@@ -101,7 +101,7 @@ static int does_negate_pattern(git_attr_fnmatch *rule, git_attr_fnmatch *neg)
|
|
|
101
101
|
*/
|
|
102
102
|
static int does_negate_rule(int *out, git_vector *rules, git_attr_fnmatch *match)
|
|
103
103
|
{
|
|
104
|
-
int error = 0, wildmatch_flags;
|
|
104
|
+
int error = 0, wildmatch_flags, effective_flags;
|
|
105
105
|
size_t i;
|
|
106
106
|
git_attr_fnmatch *rule;
|
|
107
107
|
char *path;
|
|
@@ -141,8 +141,17 @@ static int does_negate_rule(int *out, git_vector *rules, git_attr_fnmatch *match
|
|
|
141
141
|
if (git_buf_oom(&buf))
|
|
142
142
|
goto out;
|
|
143
143
|
|
|
144
|
+
/*
|
|
145
|
+
* if rule isn't for full path we match without PATHNAME flag
|
|
146
|
+
* as lines like *.txt should match something like dir/test.txt
|
|
147
|
+
* requiring * to also match /
|
|
148
|
+
*/
|
|
149
|
+
effective_flags = wildmatch_flags;
|
|
150
|
+
if (!(rule->flags & GIT_ATTR_FNMATCH_FULLPATH))
|
|
151
|
+
effective_flags &= ~WM_PATHNAME;
|
|
152
|
+
|
|
144
153
|
/* if we found a match, we want to keep this rule */
|
|
145
|
-
if ((wildmatch(git_buf_cstr(&buf), path,
|
|
154
|
+
if ((wildmatch(git_buf_cstr(&buf), path, effective_flags)) == WM_MATCH) {
|
|
146
155
|
*out = 1;
|
|
147
156
|
error = 0;
|
|
148
157
|
goto out;
|
|
@@ -238,11 +247,12 @@ static int push_ignore_file(
|
|
|
238
247
|
const char *base,
|
|
239
248
|
const char *filename)
|
|
240
249
|
{
|
|
241
|
-
|
|
250
|
+
git_attr_file_source source = { GIT_ATTR_FILE_SOURCE_FILE, base, filename };
|
|
242
251
|
git_attr_file *file = NULL;
|
|
252
|
+
int error = 0;
|
|
253
|
+
|
|
254
|
+
error = git_attr_cache__get(&file, ignores->repo, NULL, &source, parse_ignore_file, false);
|
|
243
255
|
|
|
244
|
-
error = git_attr_cache__get(&file, ignores->repo, NULL, GIT_ATTR_FILE__FROM_FILE,
|
|
245
|
-
base, filename, parse_ignore_file, false);
|
|
246
256
|
if (error < 0)
|
|
247
257
|
return error;
|
|
248
258
|
|
|
@@ -263,13 +273,13 @@ static int push_one_ignore(void *payload, const char *path)
|
|
|
263
273
|
|
|
264
274
|
static int get_internal_ignores(git_attr_file **out, git_repository *repo)
|
|
265
275
|
{
|
|
276
|
+
git_attr_file_source source = { GIT_ATTR_FILE_SOURCE_MEMORY, NULL, GIT_IGNORE_INTERNAL };
|
|
266
277
|
int error;
|
|
267
278
|
|
|
268
279
|
if ((error = git_attr_cache__init(repo)) < 0)
|
|
269
280
|
return error;
|
|
270
281
|
|
|
271
|
-
error = git_attr_cache__get(out, repo, NULL,
|
|
272
|
-
GIT_IGNORE_INTERNAL, NULL, false);
|
|
282
|
+
error = git_attr_cache__get(out, repo, NULL, &source, NULL, false);
|
|
273
283
|
|
|
274
284
|
/* if internal rules list is empty, insert default rules */
|
|
275
285
|
if (!error && !(*out)->rules.length)
|
|
@@ -287,7 +297,9 @@ int git_ignore__for_path(
|
|
|
287
297
|
const char *workdir = git_repository_workdir(repo);
|
|
288
298
|
git_buf infopath = GIT_BUF_INIT;
|
|
289
299
|
|
|
290
|
-
|
|
300
|
+
GIT_ASSERT_ARG(repo);
|
|
301
|
+
GIT_ASSERT_ARG(ignores);
|
|
302
|
+
GIT_ASSERT_ARG(path);
|
|
291
303
|
|
|
292
304
|
memset(ignores, 0, sizeof(*ignores));
|
|
293
305
|
ignores->repo = repo;
|
|
@@ -307,12 +319,17 @@ int git_ignore__for_path(
|
|
|
307
319
|
if ((error = git_path_dirname_r(&local, path)) < 0 ||
|
|
308
320
|
(error = git_path_resolve_relative(&local, 0)) < 0 ||
|
|
309
321
|
(error = git_path_to_dir(&local)) < 0 ||
|
|
310
|
-
(error = git_buf_joinpath(&ignores->dir, workdir, local.ptr)) < 0
|
|
311
|
-
|
|
322
|
+
(error = git_buf_joinpath(&ignores->dir, workdir, local.ptr)) < 0 ||
|
|
323
|
+
(error = git_path_validate_workdir_buf(repo, &ignores->dir)) < 0) {
|
|
324
|
+
/* Nothing, we just want to stop on the first error */
|
|
325
|
+
}
|
|
326
|
+
|
|
312
327
|
git_buf_dispose(&local);
|
|
313
328
|
} else {
|
|
314
|
-
error = git_buf_joinpath(&ignores->dir, path, "")
|
|
329
|
+
if (!(error = git_buf_joinpath(&ignores->dir, path, "")))
|
|
330
|
+
error = git_path_validate_filesystem(ignores->dir.ptr, ignores->dir.size);
|
|
315
331
|
}
|
|
332
|
+
|
|
316
333
|
if (error < 0)
|
|
317
334
|
goto cleanup;
|
|
318
335
|
|
|
@@ -451,7 +468,7 @@ int git_ignore__lookup(
|
|
|
451
468
|
*out = GIT_IGNORE_NOTFOUND;
|
|
452
469
|
|
|
453
470
|
if (git_attr_path__init(
|
|
454
|
-
&path, pathname, git_repository_workdir(ignores->repo), dir_flag) < 0)
|
|
471
|
+
&path, ignores->repo, pathname, git_repository_workdir(ignores->repo), dir_flag) < 0)
|
|
455
472
|
return -1;
|
|
456
473
|
|
|
457
474
|
/* first process builtins - success means path was found */
|
|
@@ -521,7 +538,9 @@ int git_ignore_path_is_ignored(
|
|
|
521
538
|
git_attr_file *file;
|
|
522
539
|
git_dir_flag dir_flag = GIT_DIR_FLAG_UNKNOWN;
|
|
523
540
|
|
|
524
|
-
|
|
541
|
+
GIT_ASSERT_ARG(repo);
|
|
542
|
+
GIT_ASSERT_ARG(ignored);
|
|
543
|
+
GIT_ASSERT_ARG(pathname);
|
|
525
544
|
|
|
526
545
|
workdir = git_repository_workdir(repo);
|
|
527
546
|
|
|
@@ -533,7 +552,7 @@ int git_ignore_path_is_ignored(
|
|
|
533
552
|
else if (git_repository_is_bare(repo))
|
|
534
553
|
dir_flag = GIT_DIR_FLAG_FALSE;
|
|
535
554
|
|
|
536
|
-
if ((error = git_attr_path__init(&path, pathname, workdir, dir_flag)) < 0 ||
|
|
555
|
+
if ((error = git_attr_path__init(&path, repo, pathname, workdir, dir_flag)) < 0 ||
|
|
537
556
|
(error = git_ignore__for_path(repo, path.path, &ignores)) < 0)
|
|
538
557
|
goto cleanup;
|
|
539
558
|
|
|
@@ -586,7 +605,7 @@ int git_ignore__check_pathspec_for_exact_ignores(
|
|
|
586
605
|
git_attr_fnmatch *match;
|
|
587
606
|
int ignored;
|
|
588
607
|
git_buf path = GIT_BUF_INIT;
|
|
589
|
-
const char *
|
|
608
|
+
const char *filename;
|
|
590
609
|
git_index *idx;
|
|
591
610
|
|
|
592
611
|
if ((error = git_repository__ensure_not_bare(
|
|
@@ -594,8 +613,6 @@ int git_ignore__check_pathspec_for_exact_ignores(
|
|
|
594
613
|
(error = git_repository_index(&idx, repo)) < 0)
|
|
595
614
|
return error;
|
|
596
615
|
|
|
597
|
-
wd = git_repository_workdir(repo);
|
|
598
|
-
|
|
599
616
|
git_vector_foreach(vspec, i, match) {
|
|
600
617
|
/* skip wildcard matches (if they are being used) */
|
|
601
618
|
if ((match->flags & GIT_ATTR_FNMATCH_HASWILD) != 0 &&
|
|
@@ -608,7 +625,7 @@ int git_ignore__check_pathspec_for_exact_ignores(
|
|
|
608
625
|
if (git_index_get_bypath(idx, filename, 0) != NULL)
|
|
609
626
|
continue;
|
|
610
627
|
|
|
611
|
-
if ((error =
|
|
628
|
+
if ((error = git_repository_workdir_path(&path, repo, filename)) < 0)
|
|
612
629
|
break;
|
|
613
630
|
|
|
614
631
|
/* is there a file on disk that matches this exactly? */
|
|
@@ -632,4 +649,3 @@ int git_ignore__check_pathspec_for_exact_ignores(
|
|
|
632
649
|
|
|
633
650
|
return error;
|
|
634
651
|
}
|
|
635
|
-
|
data/vendor/libgit2/src/index.c
CHANGED
|
@@ -406,7 +406,7 @@ int git_index_open(git_index **index_out, const char *index_path)
|
|
|
406
406
|
git_index *index;
|
|
407
407
|
int error = -1;
|
|
408
408
|
|
|
409
|
-
|
|
409
|
+
GIT_ASSERT_ARG(index_out);
|
|
410
410
|
|
|
411
411
|
index = git__calloc(1, sizeof(git_index));
|
|
412
412
|
GIT_ERROR_CHECK_ALLOC(index);
|
|
@@ -461,7 +461,8 @@ static void index_free(git_index *index)
|
|
|
461
461
|
/* index iterators increment the refcount of the index, so if we
|
|
462
462
|
* get here then there should be no outstanding iterators.
|
|
463
463
|
*/
|
|
464
|
-
|
|
464
|
+
if (git_atomic32_get(&index->readers))
|
|
465
|
+
return;
|
|
465
466
|
|
|
466
467
|
git_index_clear(index);
|
|
467
468
|
git_idxmap_free(index->entries_map);
|
|
@@ -487,14 +488,14 @@ void git_index_free(git_index *index)
|
|
|
487
488
|
/* call with locked index */
|
|
488
489
|
static void index_free_deleted(git_index *index)
|
|
489
490
|
{
|
|
490
|
-
int readers = (int)
|
|
491
|
+
int readers = (int)git_atomic32_get(&index->readers);
|
|
491
492
|
size_t i;
|
|
492
493
|
|
|
493
494
|
if (readers > 0 || !index->deleted.length)
|
|
494
495
|
return;
|
|
495
496
|
|
|
496
497
|
for (i = 0; i < index->deleted.length; ++i) {
|
|
497
|
-
git_index_entry *ie =
|
|
498
|
+
git_index_entry *ie = git_atomic_swap(index->deleted.contents[i], NULL);
|
|
498
499
|
index_entry_free(ie);
|
|
499
500
|
}
|
|
500
501
|
|
|
@@ -515,7 +516,7 @@ static int index_remove_entry(git_index *index, size_t pos)
|
|
|
515
516
|
error = git_vector_remove(&index->entries, pos);
|
|
516
517
|
|
|
517
518
|
if (!error) {
|
|
518
|
-
if (
|
|
519
|
+
if (git_atomic32_get(&index->readers) > 0) {
|
|
519
520
|
error = git_vector_insert(&index->deleted, entry);
|
|
520
521
|
} else {
|
|
521
522
|
index_entry_free(entry);
|
|
@@ -531,7 +532,7 @@ int git_index_clear(git_index *index)
|
|
|
531
532
|
{
|
|
532
533
|
int error = 0;
|
|
533
534
|
|
|
534
|
-
|
|
535
|
+
GIT_ASSERT_ARG(index);
|
|
535
536
|
|
|
536
537
|
index->dirty = 1;
|
|
537
538
|
index->tree = NULL;
|
|
@@ -566,7 +567,7 @@ int git_index_set_caps(git_index *index, int caps)
|
|
|
566
567
|
{
|
|
567
568
|
unsigned int old_ignore_case;
|
|
568
569
|
|
|
569
|
-
|
|
570
|
+
GIT_ASSERT_ARG(index);
|
|
570
571
|
|
|
571
572
|
old_ignore_case = index->ignore_case;
|
|
572
573
|
|
|
@@ -778,14 +779,14 @@ done:
|
|
|
778
779
|
|
|
779
780
|
unsigned git_index_version(git_index *index)
|
|
780
781
|
{
|
|
781
|
-
|
|
782
|
+
GIT_ASSERT_ARG(index);
|
|
782
783
|
|
|
783
784
|
return index->version;
|
|
784
785
|
}
|
|
785
786
|
|
|
786
787
|
int git_index_set_version(git_index *index, unsigned int version)
|
|
787
788
|
{
|
|
788
|
-
|
|
789
|
+
GIT_ASSERT_ARG(index);
|
|
789
790
|
|
|
790
791
|
if (version < INDEX_VERSION_NUMBER_LB ||
|
|
791
792
|
version > INDEX_VERSION_NUMBER_UB) {
|
|
@@ -814,9 +815,9 @@ int git_index_write(git_index *index)
|
|
|
814
815
|
return error;
|
|
815
816
|
}
|
|
816
817
|
|
|
817
|
-
const char *
|
|
818
|
+
const char *git_index_path(const git_index *index)
|
|
818
819
|
{
|
|
819
|
-
|
|
820
|
+
GIT_ASSERT_ARG_WITH_RETVAL(index, NULL);
|
|
820
821
|
return index->index_file_path;
|
|
821
822
|
}
|
|
822
823
|
|
|
@@ -824,7 +825,8 @@ int git_index_write_tree(git_oid *oid, git_index *index)
|
|
|
824
825
|
{
|
|
825
826
|
git_repository *repo;
|
|
826
827
|
|
|
827
|
-
|
|
828
|
+
GIT_ASSERT_ARG(oid);
|
|
829
|
+
GIT_ASSERT_ARG(index);
|
|
828
830
|
|
|
829
831
|
repo = INDEX_OWNER(index);
|
|
830
832
|
|
|
@@ -838,20 +840,25 @@ int git_index_write_tree(git_oid *oid, git_index *index)
|
|
|
838
840
|
int git_index_write_tree_to(
|
|
839
841
|
git_oid *oid, git_index *index, git_repository *repo)
|
|
840
842
|
{
|
|
841
|
-
|
|
843
|
+
GIT_ASSERT_ARG(oid);
|
|
844
|
+
GIT_ASSERT_ARG(index);
|
|
845
|
+
GIT_ASSERT_ARG(repo);
|
|
846
|
+
|
|
842
847
|
return git_tree__write_index(oid, index, repo);
|
|
843
848
|
}
|
|
844
849
|
|
|
845
850
|
size_t git_index_entrycount(const git_index *index)
|
|
846
851
|
{
|
|
847
|
-
|
|
852
|
+
GIT_ASSERT_ARG(index);
|
|
853
|
+
|
|
848
854
|
return index->entries.length;
|
|
849
855
|
}
|
|
850
856
|
|
|
851
857
|
const git_index_entry *git_index_get_byindex(
|
|
852
858
|
git_index *index, size_t n)
|
|
853
859
|
{
|
|
854
|
-
|
|
860
|
+
GIT_ASSERT_ARG_WITH_RETVAL(index, NULL);
|
|
861
|
+
|
|
855
862
|
git_vector_sort(&index->entries);
|
|
856
863
|
return git_vector_get(&index->entries, n);
|
|
857
864
|
}
|
|
@@ -862,7 +869,7 @@ const git_index_entry *git_index_get_bypath(
|
|
|
862
869
|
git_index_entry key = {{ 0 }};
|
|
863
870
|
git_index_entry *value;
|
|
864
871
|
|
|
865
|
-
|
|
872
|
+
GIT_ASSERT_ARG_WITH_RETVAL(index, NULL);
|
|
866
873
|
|
|
867
874
|
key.path = path;
|
|
868
875
|
GIT_INDEX_ENTRY_STAGE_SET(&key, stage);
|
|
@@ -937,7 +944,7 @@ static int index_entry_create(
|
|
|
937
944
|
if (st)
|
|
938
945
|
mode = st->st_mode;
|
|
939
946
|
|
|
940
|
-
if (!
|
|
947
|
+
if (!git_path_validate(repo, path, mode, path_valid_flags)) {
|
|
941
948
|
git_error_set(GIT_ERROR_INDEX, "invalid path: '%s'", path);
|
|
942
949
|
return -1;
|
|
943
950
|
}
|
|
@@ -981,7 +988,7 @@ static int index_entry_init(
|
|
|
981
988
|
if (git_repository__ensure_not_bare(repo, "create blob from file") < 0)
|
|
982
989
|
return GIT_EBAREREPO;
|
|
983
990
|
|
|
984
|
-
if (
|
|
991
|
+
if (git_repository_workdir_path(&path, repo, rel_path) < 0)
|
|
985
992
|
return -1;
|
|
986
993
|
|
|
987
994
|
error = git_path_lstat(path.ptr, &st);
|
|
@@ -1039,23 +1046,24 @@ static int index_entry_reuc_init(git_index_reuc_entry **reuc_out,
|
|
|
1039
1046
|
{
|
|
1040
1047
|
git_index_reuc_entry *reuc = NULL;
|
|
1041
1048
|
|
|
1042
|
-
|
|
1049
|
+
GIT_ASSERT_ARG(reuc_out);
|
|
1050
|
+
GIT_ASSERT_ARG(path);
|
|
1043
1051
|
|
|
1044
1052
|
*reuc_out = reuc = reuc_entry_alloc(path);
|
|
1045
1053
|
GIT_ERROR_CHECK_ALLOC(reuc);
|
|
1046
1054
|
|
|
1047
1055
|
if ((reuc->mode[0] = ancestor_mode) > 0) {
|
|
1048
|
-
|
|
1056
|
+
GIT_ASSERT(ancestor_oid);
|
|
1049
1057
|
git_oid_cpy(&reuc->oid[0], ancestor_oid);
|
|
1050
1058
|
}
|
|
1051
1059
|
|
|
1052
1060
|
if ((reuc->mode[1] = our_mode) > 0) {
|
|
1053
|
-
|
|
1061
|
+
GIT_ASSERT(our_oid);
|
|
1054
1062
|
git_oid_cpy(&reuc->oid[1], our_oid);
|
|
1055
1063
|
}
|
|
1056
1064
|
|
|
1057
1065
|
if ((reuc->mode[2] = their_mode) > 0) {
|
|
1058
|
-
|
|
1066
|
+
GIT_ASSERT(their_oid);
|
|
1059
1067
|
git_oid_cpy(&reuc->oid[2], their_oid);
|
|
1060
1068
|
}
|
|
1061
1069
|
|
|
@@ -1347,7 +1355,8 @@ static int index_insert(
|
|
|
1347
1355
|
size_t path_length, position;
|
|
1348
1356
|
int error;
|
|
1349
1357
|
|
|
1350
|
-
|
|
1358
|
+
GIT_ASSERT_ARG(index);
|
|
1359
|
+
GIT_ASSERT_ARG(entry_ptr);
|
|
1351
1360
|
|
|
1352
1361
|
entry = *entry_ptr;
|
|
1353
1362
|
|
|
@@ -1472,7 +1481,8 @@ int git_index_add_from_buffer(
|
|
|
1472
1481
|
int error = 0;
|
|
1473
1482
|
git_oid id;
|
|
1474
1483
|
|
|
1475
|
-
|
|
1484
|
+
GIT_ASSERT_ARG(index);
|
|
1485
|
+
GIT_ASSERT_ARG(source_entry && source_entry->path);
|
|
1476
1486
|
|
|
1477
1487
|
if (INDEX_OWNER(index) == NULL)
|
|
1478
1488
|
return create_index_error(-1,
|
|
@@ -1522,7 +1532,7 @@ static int add_repo_as_submodule(git_index_entry **out, git_index *index, const
|
|
|
1522
1532
|
struct stat st;
|
|
1523
1533
|
int error;
|
|
1524
1534
|
|
|
1525
|
-
if ((error =
|
|
1535
|
+
if ((error = git_repository_workdir_path(&abspath, repo, path)) < 0)
|
|
1526
1536
|
return error;
|
|
1527
1537
|
|
|
1528
1538
|
if ((error = p_stat(abspath.ptr, &st)) < 0) {
|
|
@@ -1557,7 +1567,8 @@ int git_index_add_bypath(git_index *index, const char *path)
|
|
|
1557
1567
|
git_index_entry *entry = NULL;
|
|
1558
1568
|
int ret;
|
|
1559
1569
|
|
|
1560
|
-
|
|
1570
|
+
GIT_ASSERT_ARG(index);
|
|
1571
|
+
GIT_ASSERT_ARG(path);
|
|
1561
1572
|
|
|
1562
1573
|
if ((ret = index_entry_init(&entry, index, path)) == 0)
|
|
1563
1574
|
ret = index_insert(index, &entry, 1, false, false, true);
|
|
@@ -1609,7 +1620,8 @@ int git_index_remove_bypath(git_index *index, const char *path)
|
|
|
1609
1620
|
{
|
|
1610
1621
|
int ret;
|
|
1611
1622
|
|
|
1612
|
-
|
|
1623
|
+
GIT_ASSERT_ARG(index);
|
|
1624
|
+
GIT_ASSERT_ARG(path);
|
|
1613
1625
|
|
|
1614
1626
|
if (((ret = git_index_remove(index, path, 0)) < 0 &&
|
|
1615
1627
|
ret != GIT_ENOTFOUND) ||
|
|
@@ -1629,7 +1641,7 @@ int git_index__fill(git_index *index, const git_vector *source_entries)
|
|
|
1629
1641
|
int error = 0;
|
|
1630
1642
|
size_t i;
|
|
1631
1643
|
|
|
1632
|
-
|
|
1644
|
+
GIT_ASSERT_ARG(index);
|
|
1633
1645
|
|
|
1634
1646
|
if (!source_entries->length)
|
|
1635
1647
|
return 0;
|
|
@@ -1670,7 +1682,8 @@ int git_index_add(git_index *index, const git_index_entry *source_entry)
|
|
|
1670
1682
|
git_index_entry *entry = NULL;
|
|
1671
1683
|
int ret;
|
|
1672
1684
|
|
|
1673
|
-
|
|
1685
|
+
GIT_ASSERT_ARG(index);
|
|
1686
|
+
GIT_ASSERT_ARG(source_entry && source_entry->path);
|
|
1674
1687
|
|
|
1675
1688
|
if (!valid_filemode(source_entry->mode)) {
|
|
1676
1689
|
git_error_set(GIT_ERROR_INDEX, "invalid entry mode");
|
|
@@ -1758,7 +1771,8 @@ int git_index_find_prefix(size_t *at_pos, git_index *index, const char *prefix)
|
|
|
1758
1771
|
int git_index__find_pos(
|
|
1759
1772
|
size_t *out, git_index *index, const char *path, size_t path_len, int stage)
|
|
1760
1773
|
{
|
|
1761
|
-
|
|
1774
|
+
GIT_ASSERT_ARG(index);
|
|
1775
|
+
GIT_ASSERT_ARG(path);
|
|
1762
1776
|
return index_find(out, index, path, path_len, stage);
|
|
1763
1777
|
}
|
|
1764
1778
|
|
|
@@ -1766,7 +1780,8 @@ int git_index_find(size_t *at_pos, git_index *index, const char *path)
|
|
|
1766
1780
|
{
|
|
1767
1781
|
size_t pos;
|
|
1768
1782
|
|
|
1769
|
-
|
|
1783
|
+
GIT_ASSERT_ARG(index);
|
|
1784
|
+
GIT_ASSERT_ARG(path);
|
|
1770
1785
|
|
|
1771
1786
|
if (git_vector_bsearch2(
|
|
1772
1787
|
&pos, &index->entries, index->entries_search_path, path) < 0) {
|
|
@@ -1799,7 +1814,7 @@ int git_index_conflict_add(git_index *index,
|
|
|
1799
1814
|
unsigned short i;
|
|
1800
1815
|
int ret = 0;
|
|
1801
1816
|
|
|
1802
|
-
|
|
1817
|
+
GIT_ASSERT_ARG(index);
|
|
1803
1818
|
|
|
1804
1819
|
if ((ancestor_entry &&
|
|
1805
1820
|
(ret = index_entry_dup(&entries[0], index, ancestor_entry)) < 0) ||
|
|
@@ -1870,7 +1885,10 @@ static int index_conflict__get_byindex(
|
|
|
1870
1885
|
size_t count;
|
|
1871
1886
|
int stage, len = 0;
|
|
1872
1887
|
|
|
1873
|
-
|
|
1888
|
+
GIT_ASSERT_ARG(ancestor_out);
|
|
1889
|
+
GIT_ASSERT_ARG(our_out);
|
|
1890
|
+
GIT_ASSERT_ARG(their_out);
|
|
1891
|
+
GIT_ASSERT_ARG(index);
|
|
1874
1892
|
|
|
1875
1893
|
*ancestor_out = NULL;
|
|
1876
1894
|
*our_out = NULL;
|
|
@@ -1916,7 +1934,11 @@ int git_index_conflict_get(
|
|
|
1916
1934
|
size_t pos;
|
|
1917
1935
|
int len = 0;
|
|
1918
1936
|
|
|
1919
|
-
|
|
1937
|
+
GIT_ASSERT_ARG(ancestor_out);
|
|
1938
|
+
GIT_ASSERT_ARG(our_out);
|
|
1939
|
+
GIT_ASSERT_ARG(their_out);
|
|
1940
|
+
GIT_ASSERT_ARG(index);
|
|
1941
|
+
GIT_ASSERT_ARG(path);
|
|
1920
1942
|
|
|
1921
1943
|
*ancestor_out = NULL;
|
|
1922
1944
|
*our_out = NULL;
|
|
@@ -1963,13 +1985,14 @@ static int index_conflict_remove(git_index *index, const char *path)
|
|
|
1963
1985
|
|
|
1964
1986
|
int git_index_conflict_remove(git_index *index, const char *path)
|
|
1965
1987
|
{
|
|
1966
|
-
|
|
1988
|
+
GIT_ASSERT_ARG(index);
|
|
1989
|
+
GIT_ASSERT_ARG(path);
|
|
1967
1990
|
return index_conflict_remove(index, path);
|
|
1968
1991
|
}
|
|
1969
1992
|
|
|
1970
1993
|
int git_index_conflict_cleanup(git_index *index)
|
|
1971
1994
|
{
|
|
1972
|
-
|
|
1995
|
+
GIT_ASSERT_ARG(index);
|
|
1973
1996
|
return index_conflict_remove(index, NULL);
|
|
1974
1997
|
}
|
|
1975
1998
|
|
|
@@ -1978,7 +2001,7 @@ int git_index_has_conflicts(const git_index *index)
|
|
|
1978
2001
|
size_t i;
|
|
1979
2002
|
git_index_entry *entry;
|
|
1980
2003
|
|
|
1981
|
-
|
|
2004
|
+
GIT_ASSERT_ARG(index);
|
|
1982
2005
|
|
|
1983
2006
|
git_vector_foreach(&index->entries, i, entry) {
|
|
1984
2007
|
if (GIT_INDEX_ENTRY_STAGE(entry) > 0)
|
|
@@ -1995,7 +2018,8 @@ int git_index_iterator_new(
|
|
|
1995
2018
|
git_index_iterator *it;
|
|
1996
2019
|
int error;
|
|
1997
2020
|
|
|
1998
|
-
|
|
2021
|
+
GIT_ASSERT_ARG(iterator_out);
|
|
2022
|
+
GIT_ASSERT_ARG(index);
|
|
1999
2023
|
|
|
2000
2024
|
it = git__calloc(1, sizeof(git_index_iterator));
|
|
2001
2025
|
GIT_ERROR_CHECK_ALLOC(it);
|
|
@@ -2015,7 +2039,8 @@ int git_index_iterator_next(
|
|
|
2015
2039
|
const git_index_entry **out,
|
|
2016
2040
|
git_index_iterator *it)
|
|
2017
2041
|
{
|
|
2018
|
-
|
|
2042
|
+
GIT_ASSERT_ARG(out);
|
|
2043
|
+
GIT_ASSERT_ARG(it);
|
|
2019
2044
|
|
|
2020
2045
|
if (it->cur >= git_vector_length(&it->snap))
|
|
2021
2046
|
return GIT_ITEROVER;
|
|
@@ -2039,7 +2064,8 @@ int git_index_conflict_iterator_new(
|
|
|
2039
2064
|
{
|
|
2040
2065
|
git_index_conflict_iterator *it = NULL;
|
|
2041
2066
|
|
|
2042
|
-
|
|
2067
|
+
GIT_ASSERT_ARG(iterator_out);
|
|
2068
|
+
GIT_ASSERT_ARG(index);
|
|
2043
2069
|
|
|
2044
2070
|
it = git__calloc(1, sizeof(git_index_conflict_iterator));
|
|
2045
2071
|
GIT_ERROR_CHECK_ALLOC(it);
|
|
@@ -2059,7 +2085,10 @@ int git_index_conflict_next(
|
|
|
2059
2085
|
const git_index_entry *entry;
|
|
2060
2086
|
int len;
|
|
2061
2087
|
|
|
2062
|
-
|
|
2088
|
+
GIT_ASSERT_ARG(ancestor_out);
|
|
2089
|
+
GIT_ASSERT_ARG(our_out);
|
|
2090
|
+
GIT_ASSERT_ARG(their_out);
|
|
2091
|
+
GIT_ASSERT_ARG(iterator);
|
|
2063
2092
|
|
|
2064
2093
|
*ancestor_out = NULL;
|
|
2065
2094
|
*our_out = NULL;
|
|
@@ -2097,14 +2126,14 @@ void git_index_conflict_iterator_free(git_index_conflict_iterator *iterator)
|
|
|
2097
2126
|
|
|
2098
2127
|
size_t git_index_name_entrycount(git_index *index)
|
|
2099
2128
|
{
|
|
2100
|
-
|
|
2129
|
+
GIT_ASSERT_ARG(index);
|
|
2101
2130
|
return index->names.length;
|
|
2102
2131
|
}
|
|
2103
2132
|
|
|
2104
2133
|
const git_index_name_entry *git_index_name_get_byindex(
|
|
2105
2134
|
git_index *index, size_t n)
|
|
2106
2135
|
{
|
|
2107
|
-
|
|
2136
|
+
GIT_ASSERT_ARG_WITH_RETVAL(index, NULL);
|
|
2108
2137
|
|
|
2109
2138
|
git_vector_sort(&index->names);
|
|
2110
2139
|
return git_vector_get(&index->names, n);
|
|
@@ -2125,7 +2154,7 @@ int git_index_name_add(git_index *index,
|
|
|
2125
2154
|
{
|
|
2126
2155
|
git_index_name_entry *conflict_name;
|
|
2127
2156
|
|
|
2128
|
-
|
|
2157
|
+
GIT_ASSERT_ARG((ancestor && ours) || (ancestor && theirs) || (ours && theirs));
|
|
2129
2158
|
|
|
2130
2159
|
conflict_name = git__calloc(1, sizeof(git_index_name_entry));
|
|
2131
2160
|
GIT_ERROR_CHECK_ALLOC(conflict_name);
|
|
@@ -2148,7 +2177,7 @@ int git_index_name_clear(git_index *index)
|
|
|
2148
2177
|
size_t i;
|
|
2149
2178
|
git_index_name_entry *conflict_name;
|
|
2150
2179
|
|
|
2151
|
-
|
|
2180
|
+
GIT_ASSERT_ARG(index);
|
|
2152
2181
|
|
|
2153
2182
|
git_vector_foreach(&index->names, i, conflict_name)
|
|
2154
2183
|
index_name_entry_free(conflict_name);
|
|
@@ -2162,7 +2191,7 @@ int git_index_name_clear(git_index *index)
|
|
|
2162
2191
|
|
|
2163
2192
|
size_t git_index_reuc_entrycount(git_index *index)
|
|
2164
2193
|
{
|
|
2165
|
-
|
|
2194
|
+
GIT_ASSERT_ARG(index);
|
|
2166
2195
|
return index->reuc.length;
|
|
2167
2196
|
}
|
|
2168
2197
|
|
|
@@ -2179,8 +2208,9 @@ static int index_reuc_insert(
|
|
|
2179
2208
|
{
|
|
2180
2209
|
int res;
|
|
2181
2210
|
|
|
2182
|
-
|
|
2183
|
-
|
|
2211
|
+
GIT_ASSERT_ARG(index);
|
|
2212
|
+
GIT_ASSERT_ARG(reuc && reuc->path != NULL);
|
|
2213
|
+
GIT_ASSERT(git_vector_is_sorted(&index->reuc));
|
|
2184
2214
|
|
|
2185
2215
|
res = git_vector_insert_sorted(&index->reuc, reuc, &index_reuc_on_dup);
|
|
2186
2216
|
index->dirty = 1;
|
|
@@ -2196,7 +2226,8 @@ int git_index_reuc_add(git_index *index, const char *path,
|
|
|
2196
2226
|
git_index_reuc_entry *reuc = NULL;
|
|
2197
2227
|
int error = 0;
|
|
2198
2228
|
|
|
2199
|
-
|
|
2229
|
+
GIT_ASSERT_ARG(index);
|
|
2230
|
+
GIT_ASSERT_ARG(path);
|
|
2200
2231
|
|
|
2201
2232
|
if ((error = index_entry_reuc_init(&reuc, path, ancestor_mode,
|
|
2202
2233
|
ancestor_oid, our_mode, our_oid, their_mode, their_oid)) < 0 ||
|
|
@@ -2215,12 +2246,14 @@ const git_index_reuc_entry *git_index_reuc_get_bypath(
|
|
|
2215
2246
|
git_index *index, const char *path)
|
|
2216
2247
|
{
|
|
2217
2248
|
size_t pos;
|
|
2218
|
-
|
|
2249
|
+
|
|
2250
|
+
GIT_ASSERT_ARG_WITH_RETVAL(index, NULL);
|
|
2251
|
+
GIT_ASSERT_ARG_WITH_RETVAL(path, NULL);
|
|
2219
2252
|
|
|
2220
2253
|
if (!index->reuc.length)
|
|
2221
2254
|
return NULL;
|
|
2222
2255
|
|
|
2223
|
-
|
|
2256
|
+
GIT_ASSERT_WITH_RETVAL(git_vector_is_sorted(&index->reuc), NULL);
|
|
2224
2257
|
|
|
2225
2258
|
if (git_index_reuc_find(&pos, index, path) < 0)
|
|
2226
2259
|
return NULL;
|
|
@@ -2231,8 +2264,8 @@ const git_index_reuc_entry *git_index_reuc_get_bypath(
|
|
|
2231
2264
|
const git_index_reuc_entry *git_index_reuc_get_byindex(
|
|
2232
2265
|
git_index *index, size_t n)
|
|
2233
2266
|
{
|
|
2234
|
-
|
|
2235
|
-
|
|
2267
|
+
GIT_ASSERT_ARG_WITH_RETVAL(index, NULL);
|
|
2268
|
+
GIT_ASSERT_WITH_RETVAL(git_vector_is_sorted(&index->reuc), NULL);
|
|
2236
2269
|
|
|
2237
2270
|
return git_vector_get(&index->reuc, n);
|
|
2238
2271
|
}
|
|
@@ -2242,7 +2275,8 @@ int git_index_reuc_remove(git_index *index, size_t position)
|
|
|
2242
2275
|
int error;
|
|
2243
2276
|
git_index_reuc_entry *reuc;
|
|
2244
2277
|
|
|
2245
|
-
|
|
2278
|
+
GIT_ASSERT_ARG(index);
|
|
2279
|
+
GIT_ASSERT(git_vector_is_sorted(&index->reuc));
|
|
2246
2280
|
|
|
2247
2281
|
reuc = git_vector_get(&index->reuc, position);
|
|
2248
2282
|
error = git_vector_remove(&index->reuc, position);
|
|
@@ -2258,10 +2292,10 @@ int git_index_reuc_clear(git_index *index)
|
|
|
2258
2292
|
{
|
|
2259
2293
|
size_t i;
|
|
2260
2294
|
|
|
2261
|
-
|
|
2295
|
+
GIT_ASSERT_ARG(index);
|
|
2262
2296
|
|
|
2263
2297
|
for (i = 0; i < index->reuc.length; ++i)
|
|
2264
|
-
index_entry_reuc_free(
|
|
2298
|
+
index_entry_reuc_free(git_atomic_swap(index->reuc.contents[i], NULL));
|
|
2265
2299
|
|
|
2266
2300
|
git_vector_clear(&index->reuc);
|
|
2267
2301
|
|
|
@@ -2626,7 +2660,7 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
|
|
|
2626
2660
|
|
|
2627
2661
|
seek_forward(INDEX_HEADER_SIZE);
|
|
2628
2662
|
|
|
2629
|
-
|
|
2663
|
+
GIT_ASSERT(!index->entries.length);
|
|
2630
2664
|
|
|
2631
2665
|
if ((error = index_map_resize(index->entries_map, header.entry_count, index->ignore_case)) < 0)
|
|
2632
2666
|
return error;
|
|
@@ -2799,7 +2833,8 @@ static int write_disk_entry(git_filebuf *file, git_index_entry *entry, const cha
|
|
|
2799
2833
|
if (last) {
|
|
2800
2834
|
varint_len = git_encode_varint((unsigned char *) path,
|
|
2801
2835
|
disk_size, strlen(last) - same_len);
|
|
2802
|
-
|
|
2836
|
+
GIT_ASSERT(varint_len > 0);
|
|
2837
|
+
|
|
2803
2838
|
path += varint_len;
|
|
2804
2839
|
disk_size -= varint_len;
|
|
2805
2840
|
|
|
@@ -2807,14 +2842,14 @@ static int write_disk_entry(git_filebuf *file, git_index_entry *entry, const cha
|
|
|
2807
2842
|
* If using path compression, we are not allowed
|
|
2808
2843
|
* to have additional trailing NULs.
|
|
2809
2844
|
*/
|
|
2810
|
-
|
|
2845
|
+
GIT_ASSERT(disk_size == path_len + 1);
|
|
2811
2846
|
} else {
|
|
2812
2847
|
/*
|
|
2813
2848
|
* If no path compression is used, we do have
|
|
2814
2849
|
* NULs as padding. As such, simply assert that
|
|
2815
2850
|
* we have enough space left to write the path.
|
|
2816
2851
|
*/
|
|
2817
|
-
|
|
2852
|
+
GIT_ASSERT(disk_size > path_len);
|
|
2818
2853
|
}
|
|
2819
2854
|
|
|
2820
2855
|
memcpy(path, path_start, path_len + 1);
|
|
@@ -3011,7 +3046,8 @@ static int write_index(git_oid *checksum, git_index *index, git_filebuf *file)
|
|
|
3011
3046
|
bool is_extended;
|
|
3012
3047
|
uint32_t index_version_number;
|
|
3013
3048
|
|
|
3014
|
-
|
|
3049
|
+
GIT_ASSERT_ARG(index);
|
|
3050
|
+
GIT_ASSERT_ARG(file);
|
|
3015
3051
|
|
|
3016
3052
|
if (index->version <= INDEX_VERSION_NUMBER_EXT) {
|
|
3017
3053
|
is_extended = is_index_extended(index);
|
|
@@ -3162,7 +3198,7 @@ int git_index_read_tree(git_index *index, const git_tree *tree)
|
|
|
3162
3198
|
/* well, this isn't good */;
|
|
3163
3199
|
} else {
|
|
3164
3200
|
git_vector_swap(&entries, &index->entries);
|
|
3165
|
-
entries_map =
|
|
3201
|
+
entries_map = git_atomic_swap(index->entries_map, entries_map);
|
|
3166
3202
|
}
|
|
3167
3203
|
|
|
3168
3204
|
index->dirty = 1;
|
|
@@ -3193,7 +3229,7 @@ static int git_index_read_iterator(
|
|
|
3193
3229
|
size_t i;
|
|
3194
3230
|
int error;
|
|
3195
3231
|
|
|
3196
|
-
|
|
3232
|
+
GIT_ASSERT((new_iterator->flags & GIT_ITERATOR_DONT_IGNORE_CASE));
|
|
3197
3233
|
|
|
3198
3234
|
if ((error = git_vector_init(&new_entries, new_length_hint, index->entries._cmp)) < 0 ||
|
|
3199
3235
|
(error = git_vector_init(&remove_entries, index->entries.length, NULL)) < 0 ||
|
|
@@ -3296,7 +3332,7 @@ static int git_index_read_iterator(
|
|
|
3296
3332
|
goto done;
|
|
3297
3333
|
|
|
3298
3334
|
git_vector_swap(&new_entries, &index->entries);
|
|
3299
|
-
new_entries_map =
|
|
3335
|
+
new_entries_map = git_atomic_swap(index->entries_map, new_entries_map);
|
|
3300
3336
|
|
|
3301
3337
|
git_vector_foreach(&remove_entries, i, entry) {
|
|
3302
3338
|
if (index->tree)
|
|
@@ -3365,7 +3401,7 @@ int git_index_add_all(
|
|
|
3365
3401
|
git_pathspec ps;
|
|
3366
3402
|
bool no_fnmatch = (flags & GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH) != 0;
|
|
3367
3403
|
|
|
3368
|
-
|
|
3404
|
+
GIT_ASSERT_ARG(index);
|
|
3369
3405
|
|
|
3370
3406
|
repo = INDEX_OWNER(index);
|
|
3371
3407
|
if ((error = git_repository__ensure_not_bare(repo, "index add all")) < 0)
|
|
@@ -3451,8 +3487,8 @@ static int index_apply_to_wd_diff(git_index *index, int action, const git_strarr
|
|
|
3451
3487
|
payload,
|
|
3452
3488
|
};
|
|
3453
3489
|
|
|
3454
|
-
|
|
3455
|
-
|
|
3490
|
+
GIT_ASSERT_ARG(index);
|
|
3491
|
+
GIT_ASSERT_ARG(action == INDEX_ACTION_UPDATE || action == INDEX_ACTION_ADDALL);
|
|
3456
3492
|
|
|
3457
3493
|
repo = INDEX_OWNER(index);
|
|
3458
3494
|
|
|
@@ -3506,7 +3542,7 @@ static int index_apply_to_all(
|
|
|
3506
3542
|
const char *match;
|
|
3507
3543
|
git_buf path = GIT_BUF_INIT;
|
|
3508
3544
|
|
|
3509
|
-
|
|
3545
|
+
GIT_ASSERT_ARG(index);
|
|
3510
3546
|
|
|
3511
3547
|
if ((error = git_pathspec__init(&ps, paths)) < 0)
|
|
3512
3548
|
return error;
|
|
@@ -3602,7 +3638,7 @@ int git_index_snapshot_new(git_vector *snap, git_index *index)
|
|
|
3602
3638
|
|
|
3603
3639
|
GIT_REFCOUNT_INC(index);
|
|
3604
3640
|
|
|
3605
|
-
|
|
3641
|
+
git_atomic32_inc(&index->readers);
|
|
3606
3642
|
git_vector_sort(&index->entries);
|
|
3607
3643
|
|
|
3608
3644
|
error = git_vector_dup(snap, &index->entries, index->entries._cmp);
|
|
@@ -3617,7 +3653,7 @@ void git_index_snapshot_release(git_vector *snap, git_index *index)
|
|
|
3617
3653
|
{
|
|
3618
3654
|
git_vector_free(snap);
|
|
3619
3655
|
|
|
3620
|
-
|
|
3656
|
+
git_atomic32_dec(&index->readers);
|
|
3621
3657
|
|
|
3622
3658
|
git_index_free(index);
|
|
3623
3659
|
}
|