rugged 1.3.2.3 → 1.4.2
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 +1 -1
- data/ext/rugged/rugged_config.c +7 -2
- data/ext/rugged/rugged_remote.c +17 -0
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +103 -276
- data/vendor/libgit2/COPYING +36 -19
- data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
- data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
- data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
- data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
- data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
- data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
- data/vendor/libgit2/cmake/{FindHTTP_Parser.cmake → FindHTTPParser.cmake} +17 -17
- data/vendor/libgit2/cmake/FindIconv.cmake +27 -27
- data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
- data/vendor/libgit2/cmake/FindPCRE.cmake +13 -13
- data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
- data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
- data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
- data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
- data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
- data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
- data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
- data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
- data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
- data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
- data/vendor/libgit2/cmake/SelectHTTPParser.cmake +19 -0
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +100 -100
- data/vendor/libgit2/cmake/SelectHashes.cmake +39 -49
- data/vendor/libgit2/cmake/SelectRegex.cmake +51 -0
- data/vendor/libgit2/cmake/SelectSSH.cmake +41 -0
- data/vendor/libgit2/cmake/SelectWinHTTP.cmake +17 -0
- data/vendor/libgit2/cmake/SelectZlib.cmake +34 -0
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +31 -31
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +1 -1
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +88 -88
- data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
- data/vendor/libgit2/deps/zlib/adler32.c +0 -7
- data/vendor/libgit2/deps/zlib/crc32.c +288 -975
- data/vendor/libgit2/deps/zlib/crc32.h +436 -9441
- data/vendor/libgit2/deps/zlib/deflate.c +31 -83
- data/vendor/libgit2/deps/zlib/deflate.h +15 -12
- data/vendor/libgit2/deps/zlib/gzguts.h +2 -3
- data/vendor/libgit2/deps/zlib/infback.c +1 -2
- data/vendor/libgit2/deps/zlib/inffast.c +14 -14
- data/vendor/libgit2/deps/zlib/inflate.c +8 -39
- data/vendor/libgit2/deps/zlib/inflate.h +2 -3
- data/vendor/libgit2/deps/zlib/inftrees.c +3 -3
- data/vendor/libgit2/deps/zlib/trees.c +48 -27
- data/vendor/libgit2/deps/zlib/zlib.h +100 -126
- data/vendor/libgit2/deps/zlib/zutil.c +2 -2
- data/vendor/libgit2/deps/zlib/zutil.h +9 -12
- data/vendor/libgit2/include/git2/apply.h +16 -2
- data/vendor/libgit2/include/git2/attr.h +11 -2
- data/vendor/libgit2/include/git2/blame.h +4 -1
- data/vendor/libgit2/include/git2/blob.h +14 -1
- data/vendor/libgit2/include/git2/branch.h +2 -0
- data/vendor/libgit2/include/git2/buffer.h +18 -78
- data/vendor/libgit2/include/git2/cert.h +2 -2
- data/vendor/libgit2/include/git2/checkout.h +5 -2
- data/vendor/libgit2/include/git2/clone.h +3 -3
- data/vendor/libgit2/include/git2/commit.h +2 -0
- data/vendor/libgit2/include/git2/common.h +5 -12
- data/vendor/libgit2/include/git2/config.h +19 -3
- data/vendor/libgit2/include/git2/credential.h +2 -1
- data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
- data/vendor/libgit2/include/git2/deprecated.h +1 -1
- data/vendor/libgit2/include/git2/describe.h +7 -2
- data/vendor/libgit2/include/git2/diff.h +17 -9
- data/vendor/libgit2/include/git2/email.h +1 -1
- data/vendor/libgit2/include/git2/errors.h +1 -2
- data/vendor/libgit2/include/git2/filter.h +7 -2
- data/vendor/libgit2/include/git2/graph.h +1 -0
- data/vendor/libgit2/include/git2/ignore.h +1 -1
- data/vendor/libgit2/include/git2/index.h +11 -5
- data/vendor/libgit2/include/git2/indexer.h +19 -0
- data/vendor/libgit2/include/git2/merge.h +23 -3
- data/vendor/libgit2/include/git2/message.h +2 -0
- data/vendor/libgit2/include/git2/object.h +23 -0
- data/vendor/libgit2/include/git2/odb.h +37 -7
- data/vendor/libgit2/include/git2/odb_backend.h +1 -1
- data/vendor/libgit2/include/git2/pack.h +24 -8
- data/vendor/libgit2/include/git2/patch.h +8 -0
- data/vendor/libgit2/include/git2/pathspec.h +1 -1
- data/vendor/libgit2/include/git2/proxy.h +1 -1
- data/vendor/libgit2/include/git2/rebase.h +9 -1
- data/vendor/libgit2/include/git2/refdb.h +3 -0
- data/vendor/libgit2/include/git2/reflog.h +1 -1
- data/vendor/libgit2/include/git2/refs.h +2 -2
- data/vendor/libgit2/include/git2/remote.h +184 -37
- data/vendor/libgit2/include/git2/repository.h +14 -9
- data/vendor/libgit2/include/git2/reset.h +2 -2
- data/vendor/libgit2/include/git2/revparse.h +1 -1
- data/vendor/libgit2/include/git2/revwalk.h +4 -1
- data/vendor/libgit2/include/git2/signature.h +1 -1
- data/vendor/libgit2/include/git2/stash.h +3 -3
- data/vendor/libgit2/include/git2/status.h +9 -3
- data/vendor/libgit2/include/git2/submodule.h +7 -2
- data/vendor/libgit2/include/git2/sys/commit_graph.h +1 -1
- data/vendor/libgit2/include/git2/sys/odb_backend.h +2 -5
- data/vendor/libgit2/include/git2/sys/remote.h +31 -0
- data/vendor/libgit2/include/git2/sys/stream.h +1 -1
- data/vendor/libgit2/include/git2/sys/transport.h +25 -34
- data/vendor/libgit2/include/git2/tag.h +1 -0
- data/vendor/libgit2/include/git2/tree.h +4 -3
- data/vendor/libgit2/include/git2/types.h +7 -7
- data/vendor/libgit2/include/git2/version.h +3 -3
- data/vendor/libgit2/include/git2/worktree.h +12 -2
- data/vendor/libgit2/src/CMakeLists.txt +189 -315
- data/vendor/libgit2/src/annotated_commit.h +1 -1
- data/vendor/libgit2/src/apply.c +18 -18
- data/vendor/libgit2/src/apply.h +2 -2
- data/vendor/libgit2/src/attr.c +18 -18
- data/vendor/libgit2/src/attr_file.c +17 -17
- data/vendor/libgit2/src/attr_file.h +4 -4
- data/vendor/libgit2/src/attrcache.c +17 -12
- data/vendor/libgit2/src/blame_git.c +1 -1
- data/vendor/libgit2/src/blob.c +33 -26
- data/vendor/libgit2/src/blob.h +1 -1
- data/vendor/libgit2/src/branch.c +150 -109
- data/vendor/libgit2/src/branch.h +15 -3
- data/vendor/libgit2/src/buf.c +126 -0
- data/vendor/libgit2/src/buf.h +50 -0
- data/vendor/libgit2/src/cc-compat.h +1 -1
- data/vendor/libgit2/src/checkout.c +74 -68
- data/vendor/libgit2/src/cherrypick.c +10 -10
- data/vendor/libgit2/src/clone.c +66 -66
- data/vendor/libgit2/src/commit.c +128 -58
- data/vendor/libgit2/src/commit.h +24 -1
- data/vendor/libgit2/src/commit_graph.c +68 -53
- data/vendor/libgit2/src/commit_graph.h +10 -3
- data/vendor/libgit2/src/commit_list.c +2 -3
- data/vendor/libgit2/src/common.h +10 -3
- data/vendor/libgit2/src/config.c +99 -77
- data/vendor/libgit2/src/config.h +15 -2
- data/vendor/libgit2/src/config_file.c +103 -91
- data/vendor/libgit2/src/config_mem.c +9 -9
- data/vendor/libgit2/src/config_parse.c +27 -23
- data/vendor/libgit2/src/crlf.c +24 -21
- data/vendor/libgit2/src/date.c +10 -17
- data/vendor/libgit2/src/date.h +33 -0
- data/vendor/libgit2/src/describe.c +27 -19
- data/vendor/libgit2/src/diff.c +25 -8
- data/vendor/libgit2/src/diff.h +2 -4
- data/vendor/libgit2/src/diff_driver.c +34 -36
- data/vendor/libgit2/src/diff_driver.h +3 -3
- data/vendor/libgit2/src/diff_file.c +29 -20
- data/vendor/libgit2/src/diff_generate.c +30 -6
- data/vendor/libgit2/src/diff_generate.h +5 -3
- data/vendor/libgit2/src/diff_print.c +102 -95
- data/vendor/libgit2/src/diff_stats.c +40 -29
- data/vendor/libgit2/src/{message.h → diff_stats.h} +7 -6
- data/vendor/libgit2/src/diff_tform.c +9 -8
- data/vendor/libgit2/src/diff_xdiff.c +3 -8
- data/vendor/libgit2/src/email.c +54 -38
- data/vendor/libgit2/src/email.h +1 -1
- data/vendor/libgit2/src/errors.c +18 -18
- data/vendor/libgit2/src/features.h.in +6 -1
- data/vendor/libgit2/src/fetch.c +69 -24
- data/vendor/libgit2/src/fetch.h +1 -1
- data/vendor/libgit2/src/fetchhead.c +19 -19
- data/vendor/libgit2/src/filebuf.c +28 -28
- data/vendor/libgit2/src/filebuf.h +1 -1
- data/vendor/libgit2/src/filter.c +96 -52
- data/vendor/libgit2/src/filter.h +26 -5
- data/vendor/libgit2/src/fs_path.c +1912 -0
- data/vendor/libgit2/src/fs_path.h +752 -0
- data/vendor/libgit2/src/futils.c +91 -85
- data/vendor/libgit2/src/futils.h +26 -14
- data/vendor/libgit2/src/hash/sha1/collisiondetect.c +2 -2
- data/vendor/libgit2/src/hash/sha1/common_crypto.c +2 -2
- data/vendor/libgit2/src/hash/sha1/generic.c +2 -2
- data/vendor/libgit2/src/hash/sha1/mbedtls.c +2 -2
- data/vendor/libgit2/src/hash/sha1/openssl.c +2 -2
- data/vendor/libgit2/src/hash/sha1/sha1dc/sha1.c +1 -1
- data/vendor/libgit2/src/hash/sha1/win32.c +6 -6
- data/vendor/libgit2/src/hash/sha1.h +3 -1
- data/vendor/libgit2/src/hash.c +67 -35
- data/vendor/libgit2/src/hash.h +12 -12
- data/vendor/libgit2/src/ident.c +18 -18
- data/vendor/libgit2/src/ignore.c +35 -34
- data/vendor/libgit2/src/ignore.h +2 -2
- data/vendor/libgit2/src/index.c +79 -80
- data/vendor/libgit2/src/index.h +6 -3
- data/vendor/libgit2/src/indexer.c +75 -57
- data/vendor/libgit2/src/iterator.c +64 -56
- data/vendor/libgit2/src/iterator.h +5 -5
- data/vendor/libgit2/src/khash.h +1 -1
- data/vendor/libgit2/src/libgit2.c +22 -19
- data/vendor/libgit2/src/mailmap.c +38 -36
- data/vendor/libgit2/src/merge.c +27 -27
- data/vendor/libgit2/src/merge.h +1 -14
- data/vendor/libgit2/src/merge_driver.c +2 -2
- data/vendor/libgit2/src/merge_file.c +13 -3
- data/vendor/libgit2/src/message.c +21 -10
- data/vendor/libgit2/src/midx.c +83 -66
- data/vendor/libgit2/src/midx.h +3 -3
- data/vendor/libgit2/src/mwindow.c +1 -1
- data/vendor/libgit2/src/net.c +278 -68
- data/vendor/libgit2/src/net.h +10 -3
- data/vendor/libgit2/src/netops.c +1 -1
- data/vendor/libgit2/src/netops.h +1 -1
- data/vendor/libgit2/src/notes.c +20 -29
- data/vendor/libgit2/src/object.c +49 -9
- data/vendor/libgit2/src/object.h +1 -1
- data/vendor/libgit2/src/odb.c +35 -32
- data/vendor/libgit2/src/odb.h +1 -1
- data/vendor/libgit2/src/odb_loose.c +68 -68
- data/vendor/libgit2/src/odb_mempack.c +18 -5
- data/vendor/libgit2/src/odb_pack.c +43 -43
- data/vendor/libgit2/src/oid.c +11 -4
- data/vendor/libgit2/src/oid.h +15 -0
- data/vendor/libgit2/src/pack-objects.c +41 -26
- data/vendor/libgit2/src/pack-objects.h +11 -6
- data/vendor/libgit2/src/pack.c +10 -10
- data/vendor/libgit2/src/patch.c +3 -3
- data/vendor/libgit2/src/patch.h +1 -0
- data/vendor/libgit2/src/patch_generate.c +27 -11
- data/vendor/libgit2/src/patch_generate.h +5 -5
- data/vendor/libgit2/src/patch_parse.c +24 -24
- data/vendor/libgit2/src/path.c +76 -1951
- data/vendor/libgit2/src/path.h +34 -741
- data/vendor/libgit2/src/pathspec.c +6 -6
- data/vendor/libgit2/src/pathspec.h +2 -2
- data/vendor/libgit2/src/posix.c +3 -3
- data/vendor/libgit2/src/posix.h +1 -0
- data/vendor/libgit2/src/pqueue.h +1 -1
- data/vendor/libgit2/src/proxy.c +4 -1
- data/vendor/libgit2/src/proxy.h +1 -1
- data/vendor/libgit2/src/push.c +30 -35
- data/vendor/libgit2/src/push.h +4 -16
- data/vendor/libgit2/src/rand.c +226 -0
- data/vendor/libgit2/src/rand.h +37 -0
- data/vendor/libgit2/src/reader.c +8 -8
- data/vendor/libgit2/src/reader.h +2 -2
- data/vendor/libgit2/src/rebase.c +89 -88
- data/vendor/libgit2/src/refdb_fs.c +447 -173
- data/vendor/libgit2/src/refs.c +32 -32
- data/vendor/libgit2/src/refs.h +2 -2
- data/vendor/libgit2/src/refspec.c +32 -37
- data/vendor/libgit2/src/refspec.h +5 -2
- data/vendor/libgit2/src/regexp.c +1 -1
- data/vendor/libgit2/src/remote.c +713 -419
- data/vendor/libgit2/src/remote.h +15 -10
- data/vendor/libgit2/src/repository.c +350 -467
- data/vendor/libgit2/src/repository.h +11 -10
- data/vendor/libgit2/src/reset.c +8 -5
- data/vendor/libgit2/src/revert.c +10 -10
- data/vendor/libgit2/src/revparse.c +48 -35
- data/vendor/libgit2/src/revwalk.c +7 -7
- data/vendor/libgit2/src/signature.c +12 -6
- data/vendor/libgit2/src/signature.h +1 -1
- data/vendor/libgit2/src/sortedcache.c +1 -1
- data/vendor/libgit2/src/sortedcache.h +1 -1
- data/vendor/libgit2/src/stash.c +36 -37
- data/vendor/libgit2/src/status.c +4 -1
- data/vendor/libgit2/src/{buffer.c → str.c} +157 -151
- data/vendor/libgit2/src/str.h +357 -0
- data/vendor/libgit2/src/streams/mbedtls.c +8 -6
- data/vendor/libgit2/src/streams/openssl_dynamic.h +3 -3
- data/vendor/libgit2/src/submodule.c +171 -159
- data/vendor/libgit2/src/submodule.h +1 -1
- data/vendor/libgit2/src/sysdir.c +68 -52
- data/vendor/libgit2/src/sysdir.h +15 -10
- data/vendor/libgit2/src/tag.c +29 -27
- data/vendor/libgit2/src/thread.h +3 -3
- data/vendor/libgit2/src/threadstate.c +3 -3
- data/vendor/libgit2/src/threadstate.h +1 -1
- data/vendor/libgit2/src/trace.c +1 -14
- data/vendor/libgit2/src/trace.h +5 -22
- data/vendor/libgit2/src/trailer.c +1 -1
- data/vendor/libgit2/src/transaction.c +1 -1
- data/vendor/libgit2/src/transport.c +10 -10
- data/vendor/libgit2/src/transports/auth.c +7 -9
- data/vendor/libgit2/src/transports/auth.h +2 -3
- data/vendor/libgit2/src/transports/auth_negotiate.c +12 -13
- data/vendor/libgit2/src/transports/auth_ntlm.c +10 -10
- data/vendor/libgit2/src/transports/auth_ntlm.h +0 -1
- data/vendor/libgit2/src/transports/git.c +9 -11
- data/vendor/libgit2/src/transports/http.c +37 -17
- data/vendor/libgit2/src/transports/http.h +2 -3
- data/vendor/libgit2/src/transports/httpclient.c +65 -65
- data/vendor/libgit2/src/transports/local.c +124 -116
- data/vendor/libgit2/src/transports/smart.c +51 -139
- data/vendor/libgit2/src/transports/smart.h +25 -31
- data/vendor/libgit2/src/transports/smart_pkt.c +33 -33
- data/vendor/libgit2/src/transports/smart_protocol.c +57 -39
- data/vendor/libgit2/src/transports/ssh.c +47 -112
- data/vendor/libgit2/src/transports/winhttp.c +50 -56
- data/vendor/libgit2/src/tree-cache.c +5 -5
- data/vendor/libgit2/src/tree-cache.h +2 -2
- data/vendor/libgit2/src/tree.c +59 -48
- data/vendor/libgit2/src/tree.h +1 -1
- data/vendor/libgit2/src/unix/map.c +0 -2
- data/vendor/libgit2/src/unix/posix.h +1 -4
- data/vendor/libgit2/src/unix/realpath.c +0 -2
- data/vendor/libgit2/src/util.c +14 -14
- data/vendor/libgit2/src/util.h +2 -28
- data/vendor/libgit2/src/vector.h +1 -1
- data/vendor/libgit2/src/win32/findfile.c +172 -116
- data/vendor/libgit2/src/win32/findfile.h +7 -4
- data/vendor/libgit2/src/win32/path_w32.c +140 -9
- data/vendor/libgit2/src/win32/path_w32.h +2 -0
- data/vendor/libgit2/src/win32/posix.h +0 -1
- data/vendor/libgit2/src/win32/posix_w32.c +11 -27
- data/vendor/libgit2/src/win32/w32_buffer.c +2 -3
- data/vendor/libgit2/src/win32/w32_buffer.h +2 -3
- data/vendor/libgit2/src/win32/w32_leakcheck.c +1 -1
- data/vendor/libgit2/src/worktree.c +116 -94
- data/vendor/libgit2/src/worktree.h +1 -1
- data/vendor/libgit2/src/xdiff/git-xdiff.h +53 -0
- data/vendor/libgit2/src/xdiff/xdiff.h +15 -15
- data/vendor/libgit2/src/xdiff/xdiffi.c +134 -108
- data/vendor/libgit2/src/xdiff/xemit.c +23 -7
- data/vendor/libgit2/src/xdiff/xhistogram.c +87 -78
- data/vendor/libgit2/src/xdiff/xinclude.h +1 -12
- data/vendor/libgit2/src/xdiff/xmerge.c +104 -117
- data/vendor/libgit2/src/xdiff/xpatience.c +6 -17
- data/vendor/libgit2/src/xdiff/xprepare.c +15 -20
- data/vendor/libgit2/src/xdiff/xutils.c +18 -7
- data/vendor/libgit2/src/zstream.c +5 -5
- data/vendor/libgit2/src/zstream.h +4 -4
- metadata +25 -10
- data/vendor/libgit2/src/buffer.h +0 -374
data/vendor/libgit2/src/apply.c
CHANGED
|
@@ -265,7 +265,7 @@ done:
|
|
|
265
265
|
}
|
|
266
266
|
|
|
267
267
|
static int apply_hunks(
|
|
268
|
-
|
|
268
|
+
git_str *out,
|
|
269
269
|
const char *source,
|
|
270
270
|
size_t source_len,
|
|
271
271
|
git_patch *patch,
|
|
@@ -286,7 +286,7 @@ static int apply_hunks(
|
|
|
286
286
|
}
|
|
287
287
|
|
|
288
288
|
git_vector_foreach(&image.lines, i, line)
|
|
289
|
-
|
|
289
|
+
git_str_put(out, line->content, line->content_len);
|
|
290
290
|
|
|
291
291
|
done:
|
|
292
292
|
patch_image_free(&image);
|
|
@@ -295,24 +295,24 @@ done:
|
|
|
295
295
|
}
|
|
296
296
|
|
|
297
297
|
static int apply_binary_delta(
|
|
298
|
-
|
|
298
|
+
git_str *out,
|
|
299
299
|
const char *source,
|
|
300
300
|
size_t source_len,
|
|
301
301
|
git_diff_binary_file *binary_file)
|
|
302
302
|
{
|
|
303
|
-
|
|
303
|
+
git_str inflated = GIT_STR_INIT;
|
|
304
304
|
int error = 0;
|
|
305
305
|
|
|
306
306
|
/* no diff means identical contents */
|
|
307
307
|
if (binary_file->datalen == 0)
|
|
308
|
-
return
|
|
308
|
+
return git_str_put(out, source, source_len);
|
|
309
309
|
|
|
310
310
|
error = git_zstream_inflatebuf(&inflated,
|
|
311
311
|
binary_file->data, binary_file->datalen);
|
|
312
312
|
|
|
313
313
|
if (!error && inflated.size != binary_file->inflatedlen) {
|
|
314
314
|
error = apply_err("inflated delta does not match expected length");
|
|
315
|
-
|
|
315
|
+
git_str_dispose(out);
|
|
316
316
|
}
|
|
317
317
|
|
|
318
318
|
if (error < 0)
|
|
@@ -330,7 +330,7 @@ static int apply_binary_delta(
|
|
|
330
330
|
out->asize = data_len;
|
|
331
331
|
}
|
|
332
332
|
else if (binary_file->type == GIT_DIFF_BINARY_LITERAL) {
|
|
333
|
-
|
|
333
|
+
git_str_swap(out, &inflated);
|
|
334
334
|
}
|
|
335
335
|
else {
|
|
336
336
|
error = apply_err("unknown binary delta type");
|
|
@@ -338,17 +338,17 @@ static int apply_binary_delta(
|
|
|
338
338
|
}
|
|
339
339
|
|
|
340
340
|
done:
|
|
341
|
-
|
|
341
|
+
git_str_dispose(&inflated);
|
|
342
342
|
return error;
|
|
343
343
|
}
|
|
344
344
|
|
|
345
345
|
static int apply_binary(
|
|
346
|
-
|
|
346
|
+
git_str *out,
|
|
347
347
|
const char *source,
|
|
348
348
|
size_t source_len,
|
|
349
349
|
git_patch *patch)
|
|
350
350
|
{
|
|
351
|
-
|
|
351
|
+
git_str reverse = GIT_STR_INIT;
|
|
352
352
|
int error = 0;
|
|
353
353
|
|
|
354
354
|
if (!patch->binary.contains_data) {
|
|
@@ -378,14 +378,14 @@ static int apply_binary(
|
|
|
378
378
|
|
|
379
379
|
done:
|
|
380
380
|
if (error < 0)
|
|
381
|
-
|
|
381
|
+
git_str_dispose(out);
|
|
382
382
|
|
|
383
|
-
|
|
383
|
+
git_str_dispose(&reverse);
|
|
384
384
|
return error;
|
|
385
385
|
}
|
|
386
386
|
|
|
387
387
|
int git_apply__patch(
|
|
388
|
-
|
|
388
|
+
git_str *contents_out,
|
|
389
389
|
char **filename_out,
|
|
390
390
|
unsigned int *mode_out,
|
|
391
391
|
const char *source,
|
|
@@ -423,13 +423,13 @@ int git_apply__patch(
|
|
|
423
423
|
else if (patch->hunks.size)
|
|
424
424
|
error = apply_hunks(contents_out, source, source_len, patch, &ctx);
|
|
425
425
|
else
|
|
426
|
-
error =
|
|
426
|
+
error = git_str_put(contents_out, source, source_len);
|
|
427
427
|
|
|
428
428
|
if (error)
|
|
429
429
|
goto done;
|
|
430
430
|
|
|
431
431
|
if (patch->delta->status == GIT_DELTA_DELETED &&
|
|
432
|
-
|
|
432
|
+
git_str_len(contents_out) > 0) {
|
|
433
433
|
error = apply_err("removal patch leaves file contents");
|
|
434
434
|
goto done;
|
|
435
435
|
}
|
|
@@ -456,7 +456,7 @@ static int apply_one(
|
|
|
456
456
|
const git_apply_options *opts)
|
|
457
457
|
{
|
|
458
458
|
git_patch *patch = NULL;
|
|
459
|
-
|
|
459
|
+
git_str pre_contents = GIT_STR_INIT, post_contents = GIT_STR_INIT;
|
|
460
460
|
const git_diff_delta *delta;
|
|
461
461
|
char *filename = NULL;
|
|
462
462
|
unsigned int mode;
|
|
@@ -579,8 +579,8 @@ static int apply_one(
|
|
|
579
579
|
git_strmap_delete(removed_paths, delta->new_file.path);
|
|
580
580
|
|
|
581
581
|
done:
|
|
582
|
-
|
|
583
|
-
|
|
582
|
+
git_str_dispose(&pre_contents);
|
|
583
|
+
git_str_dispose(&post_contents);
|
|
584
584
|
git__free(filename);
|
|
585
585
|
git_patch_free(patch);
|
|
586
586
|
|
data/vendor/libgit2/src/apply.h
CHANGED
data/vendor/libgit2/src/attr.c
CHANGED
|
@@ -338,7 +338,7 @@ GIT_INLINE(int) preload_attr_file(
|
|
|
338
338
|
}
|
|
339
339
|
|
|
340
340
|
static int system_attr_file(
|
|
341
|
-
|
|
341
|
+
git_str *out,
|
|
342
342
|
git_attr_session *attr_session)
|
|
343
343
|
{
|
|
344
344
|
int error;
|
|
@@ -366,11 +366,11 @@ static int system_attr_file(
|
|
|
366
366
|
if (attr_session->sysdir.size == 0)
|
|
367
367
|
return GIT_ENOTFOUND;
|
|
368
368
|
|
|
369
|
-
/* We can safely provide a
|
|
370
|
-
* a consumer. This allows them to treat this as a regular `
|
|
371
|
-
* but their call to `
|
|
369
|
+
/* We can safely provide a git_str with no allocation (asize == 0) to
|
|
370
|
+
* a consumer. This allows them to treat this as a regular `git_str`,
|
|
371
|
+
* but their call to `git_str_dispose` will not attempt to free it.
|
|
372
372
|
*/
|
|
373
|
-
|
|
373
|
+
git_str_attach_notowned(
|
|
374
374
|
out, attr_session->sysdir.ptr, attr_session->sysdir.size);
|
|
375
375
|
return 0;
|
|
376
376
|
}
|
|
@@ -380,7 +380,7 @@ static int attr_setup(
|
|
|
380
380
|
git_attr_session *attr_session,
|
|
381
381
|
git_attr_options *opts)
|
|
382
382
|
{
|
|
383
|
-
|
|
383
|
+
git_str system = GIT_STR_INIT, info = GIT_STR_INIT;
|
|
384
384
|
git_attr_file_source index_source = { GIT_ATTR_FILE_SOURCE_INDEX, NULL, GIT_ATTR_FILE, NULL };
|
|
385
385
|
git_attr_file_source head_source = { GIT_ATTR_FILE_SOURCE_HEAD, NULL, GIT_ATTR_FILE, NULL };
|
|
386
386
|
git_attr_file_source commit_source = { GIT_ATTR_FILE_SOURCE_COMMIT, NULL, GIT_ATTR_FILE, NULL };
|
|
@@ -411,7 +411,7 @@ static int attr_setup(
|
|
|
411
411
|
git_repository_attr_cache(repo)->cfg_attr_file)) < 0)
|
|
412
412
|
goto out;
|
|
413
413
|
|
|
414
|
-
if ((error =
|
|
414
|
+
if ((error = git_repository__item_path(&info, repo, GIT_REPOSITORY_ITEM_INFO)) < 0 ||
|
|
415
415
|
(error = preload_attr_file(repo, attr_session, info.ptr, GIT_ATTR_FILE_INREPO)) < 0) {
|
|
416
416
|
if (error != GIT_ENOTFOUND)
|
|
417
417
|
goto out;
|
|
@@ -447,8 +447,8 @@ static int attr_setup(
|
|
|
447
447
|
attr_session->init_setup = 1;
|
|
448
448
|
|
|
449
449
|
out:
|
|
450
|
-
|
|
451
|
-
|
|
450
|
+
git_str_dispose(&system);
|
|
451
|
+
git_str_dispose(&info);
|
|
452
452
|
|
|
453
453
|
return error;
|
|
454
454
|
}
|
|
@@ -625,11 +625,11 @@ static int collect_attr_files(
|
|
|
625
625
|
git_vector *files)
|
|
626
626
|
{
|
|
627
627
|
int error = 0;
|
|
628
|
-
|
|
628
|
+
git_str dir = GIT_STR_INIT, attrfile = GIT_STR_INIT;
|
|
629
629
|
const char *workdir = git_repository_workdir(repo);
|
|
630
630
|
attr_walk_up_info info = { NULL };
|
|
631
631
|
|
|
632
|
-
GIT_ASSERT(!
|
|
632
|
+
GIT_ASSERT(!git_fs_path_is_absolute(path));
|
|
633
633
|
|
|
634
634
|
if ((error = attr_setup(repo, attr_session, opts)) < 0)
|
|
635
635
|
return error;
|
|
@@ -637,23 +637,23 @@ static int collect_attr_files(
|
|
|
637
637
|
/* Resolve path in a non-bare repo */
|
|
638
638
|
if (workdir != NULL) {
|
|
639
639
|
if (!(error = git_repository_workdir_path(&dir, repo, path)))
|
|
640
|
-
error =
|
|
640
|
+
error = git_fs_path_find_dir(&dir);
|
|
641
641
|
}
|
|
642
642
|
else {
|
|
643
|
-
error =
|
|
643
|
+
error = git_fs_path_dirname_r(&dir, path);
|
|
644
644
|
}
|
|
645
645
|
|
|
646
646
|
if (error < 0)
|
|
647
647
|
goto cleanup;
|
|
648
648
|
|
|
649
|
-
/* in
|
|
649
|
+
/* in precedence order highest to lowest:
|
|
650
650
|
* - $GIT_DIR/info/attributes
|
|
651
651
|
* - path components with .gitattributes
|
|
652
652
|
* - config core.attributesfile
|
|
653
653
|
* - $GIT_PREFIX/etc/gitattributes
|
|
654
654
|
*/
|
|
655
655
|
|
|
656
|
-
if ((error =
|
|
656
|
+
if ((error = git_repository__item_path(&attrfile, repo, GIT_REPOSITORY_ITEM_INFO)) < 0 ||
|
|
657
657
|
(error = push_attr_file(repo, attr_session, files, attrfile.ptr, GIT_ATTR_FILE_INREPO)) < 0) {
|
|
658
658
|
if (error != GIT_ENOTFOUND)
|
|
659
659
|
goto cleanup;
|
|
@@ -670,7 +670,7 @@ static int collect_attr_files(
|
|
|
670
670
|
if (!strcmp(dir.ptr, "."))
|
|
671
671
|
error = push_one_attr(&info, "");
|
|
672
672
|
else
|
|
673
|
-
error =
|
|
673
|
+
error = git_fs_path_walk_up(&dir, workdir, push_one_attr, &info);
|
|
674
674
|
|
|
675
675
|
if (error < 0)
|
|
676
676
|
goto cleanup;
|
|
@@ -693,8 +693,8 @@ static int collect_attr_files(
|
|
|
693
693
|
cleanup:
|
|
694
694
|
if (error < 0)
|
|
695
695
|
release_attr_files(files);
|
|
696
|
-
|
|
697
|
-
|
|
696
|
+
git_str_dispose(&attrfile);
|
|
697
|
+
git_str_dispose(&dir);
|
|
698
698
|
|
|
699
699
|
return error;
|
|
700
700
|
}
|
|
@@ -117,13 +117,13 @@ int git_attr_file__load(
|
|
|
117
117
|
git_tree *tree = NULL;
|
|
118
118
|
git_tree_entry *tree_entry = NULL;
|
|
119
119
|
git_blob *blob = NULL;
|
|
120
|
-
|
|
120
|
+
git_str content = GIT_STR_INIT;
|
|
121
121
|
const char *content_str;
|
|
122
122
|
git_attr_file *file;
|
|
123
123
|
struct stat st;
|
|
124
124
|
bool nonexistent = false;
|
|
125
125
|
int bom_offset;
|
|
126
|
-
|
|
126
|
+
git_str_bom_t bom;
|
|
127
127
|
git_oid id;
|
|
128
128
|
git_object_size_t blobsize;
|
|
129
129
|
|
|
@@ -143,7 +143,7 @@ int git_attr_file__load(
|
|
|
143
143
|
blobsize = git_blob_rawsize(blob);
|
|
144
144
|
|
|
145
145
|
GIT_ERROR_CHECK_BLOBSIZE(blobsize);
|
|
146
|
-
|
|
146
|
+
git_str_put(&content, git_blob_rawcontent(blob), (size_t)blobsize);
|
|
147
147
|
break;
|
|
148
148
|
}
|
|
149
149
|
case GIT_ATTR_FILE_SOURCE_FILE: {
|
|
@@ -198,7 +198,7 @@ int git_attr_file__load(
|
|
|
198
198
|
blobsize = git_blob_rawsize(blob);
|
|
199
199
|
|
|
200
200
|
GIT_ERROR_CHECK_BLOBSIZE(blobsize);
|
|
201
|
-
if ((error =
|
|
201
|
+
if ((error = git_str_put(&content,
|
|
202
202
|
git_blob_rawcontent(blob), (size_t)blobsize)) < 0)
|
|
203
203
|
goto cleanup;
|
|
204
204
|
|
|
@@ -213,10 +213,10 @@ int git_attr_file__load(
|
|
|
213
213
|
goto cleanup;
|
|
214
214
|
|
|
215
215
|
/* advance over a UTF8 BOM */
|
|
216
|
-
content_str =
|
|
217
|
-
bom_offset =
|
|
216
|
+
content_str = git_str_cstr(&content);
|
|
217
|
+
bom_offset = git_str_detect_bom(&bom, &content);
|
|
218
218
|
|
|
219
|
-
if (bom ==
|
|
219
|
+
if (bom == GIT_STR_BOM_UTF8)
|
|
220
220
|
content_str += bom_offset;
|
|
221
221
|
|
|
222
222
|
/* store the key of the attr_reader; don't bother with cache
|
|
@@ -250,7 +250,7 @@ cleanup:
|
|
|
250
250
|
git_tree_entry_free(tree_entry);
|
|
251
251
|
git_tree_free(tree);
|
|
252
252
|
git_commit_free(commit);
|
|
253
|
-
|
|
253
|
+
git_str_dispose(&content);
|
|
254
254
|
|
|
255
255
|
return error;
|
|
256
256
|
}
|
|
@@ -345,7 +345,7 @@ int git_attr_file__parse_buffer(
|
|
|
345
345
|
int error = 0;
|
|
346
346
|
|
|
347
347
|
/* If subdir file path, convert context for file paths */
|
|
348
|
-
if (attrs->entry &&
|
|
348
|
+
if (attrs->entry && git_fs_path_root(attrs->entry->path) < 0 &&
|
|
349
349
|
!git__suffixcmp(attrs->entry->path, "/" GIT_ATTR_FILE))
|
|
350
350
|
context = attrs->entry->path;
|
|
351
351
|
|
|
@@ -435,7 +435,7 @@ int git_attr_file__lookup_one(
|
|
|
435
435
|
|
|
436
436
|
int git_attr_file__load_standalone(git_attr_file **out, const char *path)
|
|
437
437
|
{
|
|
438
|
-
|
|
438
|
+
git_str content = GIT_STR_INIT;
|
|
439
439
|
git_attr_file_source source = { GIT_ATTR_FILE_SOURCE_FILE };
|
|
440
440
|
git_attr_file *file = NULL;
|
|
441
441
|
int error;
|
|
@@ -457,7 +457,7 @@ int git_attr_file__load_standalone(git_attr_file **out, const char *path)
|
|
|
457
457
|
out:
|
|
458
458
|
if (error < 0)
|
|
459
459
|
git_attr_file__free(file);
|
|
460
|
-
|
|
460
|
+
git_str_dispose(&content);
|
|
461
461
|
|
|
462
462
|
return error;
|
|
463
463
|
}
|
|
@@ -558,9 +558,9 @@ int git_attr_path__init(
|
|
|
558
558
|
ssize_t root;
|
|
559
559
|
|
|
560
560
|
/* build full path as best we can */
|
|
561
|
-
|
|
561
|
+
git_str_init(&info->full, 0);
|
|
562
562
|
|
|
563
|
-
if (
|
|
563
|
+
if (git_fs_path_join_unrooted(&info->full, path, base, &root) < 0)
|
|
564
564
|
return -1;
|
|
565
565
|
|
|
566
566
|
info->path = info->full.ptr + root;
|
|
@@ -596,7 +596,7 @@ int git_attr_path__init(
|
|
|
596
596
|
|
|
597
597
|
case GIT_DIR_FLAG_UNKNOWN:
|
|
598
598
|
default:
|
|
599
|
-
info->is_dir = (int)
|
|
599
|
+
info->is_dir = (int)git_fs_path_isdir(info->full.ptr);
|
|
600
600
|
break;
|
|
601
601
|
}
|
|
602
602
|
|
|
@@ -605,7 +605,7 @@ int git_attr_path__init(
|
|
|
605
605
|
|
|
606
606
|
void git_attr_path__free(git_attr_path *info)
|
|
607
607
|
{
|
|
608
|
-
|
|
608
|
+
git_str_dispose(&info->full);
|
|
609
609
|
info->path = NULL;
|
|
610
610
|
info->basename = NULL;
|
|
611
611
|
}
|
|
@@ -1020,8 +1020,8 @@ void git_attr_session__free(git_attr_session *session)
|
|
|
1020
1020
|
if (!session)
|
|
1021
1021
|
return;
|
|
1022
1022
|
|
|
1023
|
-
|
|
1024
|
-
|
|
1023
|
+
git_str_dispose(&session->sysdir);
|
|
1024
|
+
git_str_dispose(&session->tmp);
|
|
1025
1025
|
|
|
1026
1026
|
memset(session, 0, sizeof(git_attr_session));
|
|
1027
1027
|
}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
#include "git2/attr.h"
|
|
14
14
|
#include "vector.h"
|
|
15
15
|
#include "pool.h"
|
|
16
|
-
#include "
|
|
16
|
+
#include "str.h"
|
|
17
17
|
#include "futils.h"
|
|
18
18
|
|
|
19
19
|
#define GIT_ATTR_FILE ".gitattributes"
|
|
@@ -118,7 +118,7 @@ struct git_attr_file_entry {
|
|
|
118
118
|
};
|
|
119
119
|
|
|
120
120
|
typedef struct {
|
|
121
|
-
|
|
121
|
+
git_str full;
|
|
122
122
|
char *path;
|
|
123
123
|
char *basename;
|
|
124
124
|
int is_dir;
|
|
@@ -132,8 +132,8 @@ typedef struct {
|
|
|
132
132
|
int key;
|
|
133
133
|
unsigned int init_setup:1,
|
|
134
134
|
init_sysdir:1;
|
|
135
|
-
|
|
136
|
-
|
|
135
|
+
git_str sysdir;
|
|
136
|
+
git_str tmp;
|
|
137
137
|
} git_attr_session;
|
|
138
138
|
|
|
139
139
|
extern int git_attr_session__init(git_attr_session *attr_session, git_repository *repo);
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
#include "config.h"
|
|
13
13
|
#include "sysdir.h"
|
|
14
14
|
#include "ignore.h"
|
|
15
|
+
#include "path.h"
|
|
15
16
|
|
|
16
17
|
GIT_INLINE(int) attr_cache_lock(git_attr_cache *cache)
|
|
17
18
|
{
|
|
@@ -43,11 +44,12 @@ int git_attr_cache__alloc_file_entry(
|
|
|
43
44
|
const char *path,
|
|
44
45
|
git_pool *pool)
|
|
45
46
|
{
|
|
47
|
+
git_str fullpath_str = GIT_STR_INIT;
|
|
46
48
|
size_t baselen = 0, pathlen = strlen(path);
|
|
47
49
|
size_t cachesize = sizeof(git_attr_file_entry) + pathlen + 1;
|
|
48
50
|
git_attr_file_entry *ce;
|
|
49
51
|
|
|
50
|
-
if (base != NULL &&
|
|
52
|
+
if (base != NULL && git_fs_path_root(path) < 0) {
|
|
51
53
|
baselen = strlen(base);
|
|
52
54
|
cachesize += baselen;
|
|
53
55
|
|
|
@@ -66,7 +68,10 @@ int git_attr_cache__alloc_file_entry(
|
|
|
66
68
|
}
|
|
67
69
|
memcpy(&ce->fullpath[baselen], path, pathlen);
|
|
68
70
|
|
|
69
|
-
|
|
71
|
+
fullpath_str.ptr = ce->fullpath;
|
|
72
|
+
fullpath_str.size = pathlen + baselen;
|
|
73
|
+
|
|
74
|
+
if (git_path_validate_str_length(repo, &fullpath_str) < 0)
|
|
70
75
|
return -1;
|
|
71
76
|
|
|
72
77
|
ce->path = &ce->fullpath[baselen];
|
|
@@ -161,7 +166,7 @@ static int attr_cache_lookup(
|
|
|
161
166
|
git_attr_file_source *source)
|
|
162
167
|
{
|
|
163
168
|
int error = 0;
|
|
164
|
-
|
|
169
|
+
git_str path = GIT_STR_INIT;
|
|
165
170
|
const char *wd = git_repository_workdir(repo);
|
|
166
171
|
const char *filename;
|
|
167
172
|
git_attr_cache *cache = git_repository_attr_cache(repo);
|
|
@@ -169,11 +174,11 @@ static int attr_cache_lookup(
|
|
|
169
174
|
git_attr_file *file = NULL;
|
|
170
175
|
|
|
171
176
|
/* join base and path as needed */
|
|
172
|
-
if (source->base != NULL &&
|
|
173
|
-
|
|
177
|
+
if (source->base != NULL && git_fs_path_root(source->filename) < 0) {
|
|
178
|
+
git_str *p = attr_session ? &attr_session->tmp : &path;
|
|
174
179
|
|
|
175
|
-
if (
|
|
176
|
-
|
|
180
|
+
if (git_str_joinpath(p, source->base, source->filename) < 0 ||
|
|
181
|
+
git_path_validate_str_length(repo, p) < 0)
|
|
177
182
|
return -1;
|
|
178
183
|
|
|
179
184
|
filename = p->ptr;
|
|
@@ -203,7 +208,7 @@ cleanup:
|
|
|
203
208
|
*out_file = file;
|
|
204
209
|
*out_entry = entry;
|
|
205
210
|
|
|
206
|
-
|
|
211
|
+
git_str_dispose(&path);
|
|
207
212
|
return error;
|
|
208
213
|
}
|
|
209
214
|
|
|
@@ -281,7 +286,7 @@ bool git_attr_cache__is_cached(
|
|
|
281
286
|
static int attr_cache__lookup_path(
|
|
282
287
|
char **out, git_config *cfg, const char *key, const char *fallback)
|
|
283
288
|
{
|
|
284
|
-
|
|
289
|
+
git_str buf = GIT_STR_INIT;
|
|
285
290
|
int error;
|
|
286
291
|
git_config_entry *entry = NULL;
|
|
287
292
|
|
|
@@ -296,17 +301,17 @@ static int attr_cache__lookup_path(
|
|
|
296
301
|
/* expand leading ~/ as needed */
|
|
297
302
|
if (cfgval && cfgval[0] == '~' && cfgval[1] == '/') {
|
|
298
303
|
if (! (error = git_sysdir_expand_global_file(&buf, &cfgval[2])))
|
|
299
|
-
*out =
|
|
304
|
+
*out = git_str_detach(&buf);
|
|
300
305
|
} else if (cfgval) {
|
|
301
306
|
*out = git__strdup(cfgval);
|
|
302
307
|
}
|
|
303
308
|
}
|
|
304
309
|
else if (!git_sysdir_find_xdg_file(&buf, fallback)) {
|
|
305
|
-
*out =
|
|
310
|
+
*out = git_str_detach(&buf);
|
|
306
311
|
}
|
|
307
312
|
|
|
308
313
|
git_config_entry_free(entry);
|
|
309
|
-
|
|
314
|
+
git_str_dispose(&buf);
|
|
310
315
|
|
|
311
316
|
return error;
|
|
312
317
|
}
|
|
@@ -393,7 +393,7 @@ static void fill_origin_blob(git_blame__origin *o, mmfile_t *file)
|
|
|
393
393
|
memset(file, 0, sizeof(*file));
|
|
394
394
|
if (o->blob) {
|
|
395
395
|
file->ptr = (char*)git_blob_rawcontent(o->blob);
|
|
396
|
-
file->size = (
|
|
396
|
+
file->size = (long)git_blob_rawsize(o->blob);
|
|
397
397
|
}
|
|
398
398
|
}
|
|
399
399
|
|
data/vendor/libgit2/src/blob.c
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
#include "git2/repository.h"
|
|
13
13
|
#include "git2/odb_backend.h"
|
|
14
14
|
|
|
15
|
+
#include "buf.h"
|
|
15
16
|
#include "filebuf.h"
|
|
16
17
|
#include "filter.h"
|
|
17
18
|
|
|
@@ -35,12 +36,12 @@ git_object_size_t git_blob_rawsize(const git_blob *blob)
|
|
|
35
36
|
return (git_object_size_t)git_odb_object_size(blob->data.odb);
|
|
36
37
|
}
|
|
37
38
|
|
|
38
|
-
int git_blob__getbuf(
|
|
39
|
+
int git_blob__getbuf(git_str *buffer, git_blob *blob)
|
|
39
40
|
{
|
|
40
41
|
git_object_size_t size = git_blob_rawsize(blob);
|
|
41
42
|
|
|
42
43
|
GIT_ERROR_CHECK_BLOBSIZE(size);
|
|
43
|
-
return
|
|
44
|
+
return git_str_set(buffer, git_blob_rawcontent(blob), (size_t)size);
|
|
44
45
|
}
|
|
45
46
|
|
|
46
47
|
void git_blob__free(void *_blob)
|
|
@@ -142,9 +143,9 @@ static int write_file_filtered(
|
|
|
142
143
|
git_repository* repo)
|
|
143
144
|
{
|
|
144
145
|
int error;
|
|
145
|
-
|
|
146
|
+
git_str tgt = GIT_STR_INIT;
|
|
146
147
|
|
|
147
|
-
error =
|
|
148
|
+
error = git_filter_list__apply_to_file(&tgt, fl, repo, full_path);
|
|
148
149
|
|
|
149
150
|
/* Write the file to disk if it was properly filtered */
|
|
150
151
|
if (!error) {
|
|
@@ -153,7 +154,7 @@ static int write_file_filtered(
|
|
|
153
154
|
error = git_odb_write(id, odb, tgt.ptr, tgt.size, GIT_OBJECT_BLOB);
|
|
154
155
|
}
|
|
155
156
|
|
|
156
|
-
|
|
157
|
+
git_str_dispose(&tgt);
|
|
157
158
|
return error;
|
|
158
159
|
}
|
|
159
160
|
|
|
@@ -193,7 +194,7 @@ int git_blob__create_from_paths(
|
|
|
193
194
|
git_odb *odb = NULL;
|
|
194
195
|
git_object_size_t size;
|
|
195
196
|
mode_t mode;
|
|
196
|
-
|
|
197
|
+
git_str path = GIT_STR_INIT;
|
|
197
198
|
|
|
198
199
|
GIT_ASSERT_ARG(hint_path || !try_load_filters);
|
|
199
200
|
|
|
@@ -204,7 +205,7 @@ int git_blob__create_from_paths(
|
|
|
204
205
|
content_path = path.ptr;
|
|
205
206
|
}
|
|
206
207
|
|
|
207
|
-
if ((error =
|
|
208
|
+
if ((error = git_fs_path_lstat(content_path, &st)) < 0 ||
|
|
208
209
|
(error = git_repository_odb(&odb, repo)) < 0)
|
|
209
210
|
goto done;
|
|
210
211
|
|
|
@@ -261,7 +262,7 @@ int git_blob__create_from_paths(
|
|
|
261
262
|
|
|
262
263
|
done:
|
|
263
264
|
git_odb_free(odb);
|
|
264
|
-
|
|
265
|
+
git_str_dispose(&path);
|
|
265
266
|
|
|
266
267
|
return error;
|
|
267
268
|
}
|
|
@@ -276,11 +277,11 @@ int git_blob_create_from_disk(
|
|
|
276
277
|
git_oid *id, git_repository *repo, const char *path)
|
|
277
278
|
{
|
|
278
279
|
int error;
|
|
279
|
-
|
|
280
|
+
git_str full_path = GIT_STR_INIT;
|
|
280
281
|
const char *workdir, *hintpath = NULL;
|
|
281
282
|
|
|
282
|
-
if ((error =
|
|
283
|
-
|
|
283
|
+
if ((error = git_fs_path_prettify(&full_path, path, NULL)) < 0) {
|
|
284
|
+
git_str_dispose(&full_path);
|
|
284
285
|
return error;
|
|
285
286
|
}
|
|
286
287
|
|
|
@@ -290,9 +291,9 @@ int git_blob_create_from_disk(
|
|
|
290
291
|
hintpath = full_path.ptr + strlen(workdir);
|
|
291
292
|
|
|
292
293
|
error = git_blob__create_from_paths(
|
|
293
|
-
id, NULL, repo,
|
|
294
|
+
id, NULL, repo, git_str_cstr(&full_path), hintpath, 0, !!hintpath);
|
|
294
295
|
|
|
295
|
-
|
|
296
|
+
git_str_dispose(&full_path);
|
|
296
297
|
return error;
|
|
297
298
|
}
|
|
298
299
|
|
|
@@ -330,7 +331,7 @@ static int blob_writestream_write(git_writestream *_stream, const char *buffer,
|
|
|
330
331
|
int git_blob_create_from_stream(git_writestream **out, git_repository *repo, const char *hintpath)
|
|
331
332
|
{
|
|
332
333
|
int error;
|
|
333
|
-
|
|
334
|
+
git_str path = GIT_STR_INIT;
|
|
334
335
|
blob_writestream *stream;
|
|
335
336
|
|
|
336
337
|
GIT_ASSERT_ARG(out);
|
|
@@ -349,11 +350,11 @@ int git_blob_create_from_stream(git_writestream **out, git_repository *repo, con
|
|
|
349
350
|
stream->parent.close = blob_writestream_close;
|
|
350
351
|
stream->parent.free = blob_writestream_free;
|
|
351
352
|
|
|
352
|
-
if ((error =
|
|
353
|
-
|| (error =
|
|
353
|
+
if ((error = git_repository__item_path(&path, repo, GIT_REPOSITORY_ITEM_OBJECTS)) < 0
|
|
354
|
+
|| (error = git_str_joinpath(&path, path.ptr, "streamed")) < 0)
|
|
354
355
|
goto cleanup;
|
|
355
356
|
|
|
356
|
-
if ((error = git_filebuf_open_withsize(&stream->fbuf,
|
|
357
|
+
if ((error = git_filebuf_open_withsize(&stream->fbuf, git_str_cstr(&path), GIT_FILEBUF_TEMPORARY,
|
|
357
358
|
0666, 2 * 1024 * 1024)) < 0)
|
|
358
359
|
goto cleanup;
|
|
359
360
|
|
|
@@ -363,7 +364,7 @@ cleanup:
|
|
|
363
364
|
if (error < 0)
|
|
364
365
|
blob_writestream_free((git_writestream *) stream);
|
|
365
366
|
|
|
366
|
-
|
|
367
|
+
git_str_dispose(&path);
|
|
367
368
|
return error;
|
|
368
369
|
}
|
|
369
370
|
|
|
@@ -391,16 +392,25 @@ cleanup:
|
|
|
391
392
|
|
|
392
393
|
int git_blob_is_binary(const git_blob *blob)
|
|
393
394
|
{
|
|
394
|
-
|
|
395
|
+
git_str content = GIT_STR_INIT;
|
|
395
396
|
git_object_size_t size;
|
|
396
397
|
|
|
397
398
|
GIT_ASSERT_ARG(blob);
|
|
398
399
|
|
|
399
400
|
size = git_blob_rawsize(blob);
|
|
400
401
|
|
|
401
|
-
|
|
402
|
+
git_str_attach_notowned(&content, git_blob_rawcontent(blob),
|
|
402
403
|
(size_t)min(size, GIT_FILTER_BYTES_TO_CHECK_NUL));
|
|
403
|
-
return
|
|
404
|
+
return git_str_is_binary(&content);
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
int git_blob_data_is_binary(const char *str, size_t len)
|
|
408
|
+
{
|
|
409
|
+
git_str content = GIT_STR_INIT;
|
|
410
|
+
|
|
411
|
+
git_str_attach_notowned(&content, str, len);
|
|
412
|
+
|
|
413
|
+
return git_str_is_binary(&content);
|
|
404
414
|
}
|
|
405
415
|
|
|
406
416
|
int git_blob_filter_options_init(
|
|
@@ -418,10 +428,10 @@ int git_blob_filter(
|
|
|
418
428
|
const char *path,
|
|
419
429
|
git_blob_filter_options *given_opts)
|
|
420
430
|
{
|
|
421
|
-
int error = 0;
|
|
422
|
-
git_filter_list *fl = NULL;
|
|
423
431
|
git_blob_filter_options opts = GIT_BLOB_FILTER_OPTIONS_INIT;
|
|
424
432
|
git_filter_options filter_opts = GIT_FILTER_OPTIONS_INIT;
|
|
433
|
+
git_filter_list *fl = NULL;
|
|
434
|
+
int error = 0;
|
|
425
435
|
|
|
426
436
|
GIT_ASSERT_ARG(blob);
|
|
427
437
|
GIT_ASSERT_ARG(path);
|
|
@@ -430,9 +440,6 @@ int git_blob_filter(
|
|
|
430
440
|
GIT_ERROR_CHECK_VERSION(
|
|
431
441
|
given_opts, GIT_BLOB_FILTER_OPTIONS_VERSION, "git_blob_filter_options");
|
|
432
442
|
|
|
433
|
-
if (git_buf_sanitize(out) < 0)
|
|
434
|
-
return -1;
|
|
435
|
-
|
|
436
443
|
if (given_opts != NULL)
|
|
437
444
|
memcpy(&opts, given_opts, sizeof(git_blob_filter_options));
|
|
438
445
|
|