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
|
@@ -115,7 +115,7 @@ struct pack_writepack {
|
|
|
115
115
|
* | OID can be found. If we can find the offset to that SHA1 inside of the
|
|
116
116
|
* | index, that means the object is contained inside of the packfile and
|
|
117
117
|
* | we can stop searching. Before returning, we verify that the
|
|
118
|
-
* | packfile
|
|
118
|
+
* | packfile behind the index we are searching still exists on disk.
|
|
119
119
|
* |
|
|
120
120
|
* |-# pack_entry_find_offset
|
|
121
121
|
* | Mmap the actual index file to disk if it hasn't been opened
|
|
@@ -166,7 +166,7 @@ struct pack_writepack {
|
|
|
166
166
|
|
|
167
167
|
static int packfile_sort__cb(const void *a_, const void *b_);
|
|
168
168
|
|
|
169
|
-
static int packfile_load__cb(void *_data,
|
|
169
|
+
static int packfile_load__cb(void *_data, git_str *path);
|
|
170
170
|
|
|
171
171
|
static int packfile_byname_search_cmp(const void *path, const void *pack_entry);
|
|
172
172
|
|
|
@@ -195,10 +195,10 @@ static int pack_entry_find_prefix(
|
|
|
195
195
|
|
|
196
196
|
static int packfile_byname_search_cmp(const void *path_, const void *p_)
|
|
197
197
|
{
|
|
198
|
-
const
|
|
198
|
+
const git_str *path = (const git_str *)path_;
|
|
199
199
|
const struct git_pack_file *p = (const struct git_pack_file *)p_;
|
|
200
200
|
|
|
201
|
-
return strncmp(p->pack_name,
|
|
201
|
+
return strncmp(p->pack_name, git_str_cstr(path), git_str_len(path));
|
|
202
202
|
}
|
|
203
203
|
|
|
204
204
|
static int packfile_sort__cb(const void *a_, const void *b_)
|
|
@@ -231,20 +231,20 @@ static int packfile_sort__cb(const void *a_, const void *b_)
|
|
|
231
231
|
}
|
|
232
232
|
|
|
233
233
|
|
|
234
|
-
static int packfile_load__cb(void *data,
|
|
234
|
+
static int packfile_load__cb(void *data, git_str *path)
|
|
235
235
|
{
|
|
236
236
|
struct pack_backend *backend = data;
|
|
237
237
|
struct git_pack_file *pack;
|
|
238
|
-
const char *path_str =
|
|
239
|
-
|
|
240
|
-
size_t cmp_len =
|
|
238
|
+
const char *path_str = git_str_cstr(path);
|
|
239
|
+
git_str index_prefix = GIT_STR_INIT;
|
|
240
|
+
size_t cmp_len = git_str_len(path);
|
|
241
241
|
int error;
|
|
242
242
|
|
|
243
243
|
if (cmp_len <= strlen(".idx") || git__suffixcmp(path_str, ".idx") != 0)
|
|
244
244
|
return 0; /* not an index */
|
|
245
245
|
|
|
246
246
|
cmp_len -= strlen(".idx");
|
|
247
|
-
|
|
247
|
+
git_str_attach_notowned(&index_prefix, path_str, cmp_len);
|
|
248
248
|
|
|
249
249
|
if (git_vector_search2(NULL, &backend->midx_packs, packfile_byname_search_cmp, &index_prefix) == 0)
|
|
250
250
|
return 0;
|
|
@@ -404,29 +404,29 @@ static int process_multi_pack_index_pack(
|
|
|
404
404
|
int error;
|
|
405
405
|
struct git_pack_file *pack;
|
|
406
406
|
size_t found_position;
|
|
407
|
-
|
|
407
|
+
git_str pack_path = GIT_STR_INIT, index_prefix = GIT_STR_INIT;
|
|
408
408
|
|
|
409
|
-
error =
|
|
409
|
+
error = git_str_joinpath(&pack_path, backend->pack_folder, packfile_name);
|
|
410
410
|
if (error < 0)
|
|
411
411
|
return error;
|
|
412
412
|
|
|
413
413
|
/* This is ensured by midx_parse_packfile_name() */
|
|
414
|
-
if (
|
|
414
|
+
if (git_str_len(&pack_path) <= strlen(".idx") || git__suffixcmp(git_str_cstr(&pack_path), ".idx") != 0)
|
|
415
415
|
return git_odb__error_notfound("midx file contained a non-index", NULL, 0);
|
|
416
416
|
|
|
417
|
-
|
|
417
|
+
git_str_attach_notowned(&index_prefix, git_str_cstr(&pack_path), git_str_len(&pack_path) - strlen(".idx"));
|
|
418
418
|
|
|
419
419
|
if (git_vector_search2(&found_position, &backend->packs, packfile_byname_search_cmp, &index_prefix) == 0) {
|
|
420
420
|
/* Pack was found in the packs list. Moving it to the midx_packs list. */
|
|
421
|
-
|
|
421
|
+
git_str_dispose(&pack_path);
|
|
422
422
|
git_vector_set(NULL, &backend->midx_packs, i, git_vector_get(&backend->packs, found_position));
|
|
423
423
|
git_vector_remove(&backend->packs, found_position);
|
|
424
424
|
return 0;
|
|
425
425
|
}
|
|
426
426
|
|
|
427
427
|
/* Pack was not found. Allocate a new one. */
|
|
428
|
-
error = git_mwindow_get_pack(&pack,
|
|
429
|
-
|
|
428
|
+
error = git_mwindow_get_pack(&pack, git_str_cstr(&pack_path));
|
|
429
|
+
git_str_dispose(&pack_path);
|
|
430
430
|
if (error < 0)
|
|
431
431
|
return error;
|
|
432
432
|
|
|
@@ -442,11 +442,11 @@ static int process_multi_pack_index_pack(
|
|
|
442
442
|
static int refresh_multi_pack_index(struct pack_backend *backend)
|
|
443
443
|
{
|
|
444
444
|
int error;
|
|
445
|
-
|
|
445
|
+
git_str midx_path = GIT_STR_INIT;
|
|
446
446
|
const char *packfile_name;
|
|
447
447
|
size_t i;
|
|
448
448
|
|
|
449
|
-
error =
|
|
449
|
+
error = git_str_joinpath(&midx_path, backend->pack_folder, "multi-pack-index");
|
|
450
450
|
if (error < 0)
|
|
451
451
|
return error;
|
|
452
452
|
|
|
@@ -457,19 +457,19 @@ static int refresh_multi_pack_index(struct pack_backend *backend)
|
|
|
457
457
|
* refreshing the new multi-pack-index fails, or the file is deleted.
|
|
458
458
|
*/
|
|
459
459
|
if (backend->midx) {
|
|
460
|
-
if (!git_midx_needs_refresh(backend->midx,
|
|
461
|
-
|
|
460
|
+
if (!git_midx_needs_refresh(backend->midx, git_str_cstr(&midx_path))) {
|
|
461
|
+
git_str_dispose(&midx_path);
|
|
462
462
|
return 0;
|
|
463
463
|
}
|
|
464
464
|
error = remove_multi_pack_index(backend);
|
|
465
465
|
if (error < 0) {
|
|
466
|
-
|
|
466
|
+
git_str_dispose(&midx_path);
|
|
467
467
|
return error;
|
|
468
468
|
}
|
|
469
469
|
}
|
|
470
470
|
|
|
471
|
-
error = git_midx_open(&backend->midx,
|
|
472
|
-
|
|
471
|
+
error = git_midx_open(&backend->midx, git_str_cstr(&midx_path));
|
|
472
|
+
git_str_dispose(&midx_path);
|
|
473
473
|
if (error < 0)
|
|
474
474
|
return error;
|
|
475
475
|
|
|
@@ -505,7 +505,7 @@ static int pack_backend__refresh(git_odb_backend *backend_)
|
|
|
505
505
|
{
|
|
506
506
|
int error;
|
|
507
507
|
struct stat st;
|
|
508
|
-
|
|
508
|
+
git_str path = GIT_STR_INIT;
|
|
509
509
|
struct pack_backend *backend = (struct pack_backend *)backend_;
|
|
510
510
|
|
|
511
511
|
if (backend->pack_folder == NULL)
|
|
@@ -523,10 +523,10 @@ static int pack_backend__refresh(git_odb_backend *backend_)
|
|
|
523
523
|
}
|
|
524
524
|
|
|
525
525
|
/* reload all packs */
|
|
526
|
-
|
|
527
|
-
error =
|
|
526
|
+
git_str_sets(&path, backend->pack_folder);
|
|
527
|
+
error = git_fs_path_direach(&path, 0, packfile_load__cb, backend);
|
|
528
528
|
|
|
529
|
-
|
|
529
|
+
git_str_dispose(&path);
|
|
530
530
|
git_vector_sort(&backend->packs);
|
|
531
531
|
|
|
532
532
|
return error;
|
|
@@ -743,21 +743,21 @@ static int pack_backend__writepack(struct git_odb_writepack **out,
|
|
|
743
743
|
}
|
|
744
744
|
|
|
745
745
|
static int get_idx_path(
|
|
746
|
-
|
|
746
|
+
git_str *idx_path,
|
|
747
747
|
struct pack_backend *backend,
|
|
748
748
|
struct git_pack_file *p)
|
|
749
749
|
{
|
|
750
750
|
size_t path_len;
|
|
751
751
|
int error;
|
|
752
752
|
|
|
753
|
-
error =
|
|
753
|
+
error = git_fs_path_prettify(idx_path, p->pack_name, backend->pack_folder);
|
|
754
754
|
if (error < 0)
|
|
755
755
|
return error;
|
|
756
|
-
path_len =
|
|
757
|
-
if (path_len <= strlen(".pack") || git__suffixcmp(
|
|
756
|
+
path_len = git_str_len(idx_path);
|
|
757
|
+
if (path_len <= strlen(".pack") || git__suffixcmp(git_str_cstr(idx_path), ".pack") != 0)
|
|
758
758
|
return git_odb__error_notfound("packfile does not end in .pack", NULL, 0);
|
|
759
759
|
path_len -= strlen(".pack");
|
|
760
|
-
error =
|
|
760
|
+
error = git_str_splice(idx_path, path_len, strlen(".pack"), ".idx", strlen(".idx"));
|
|
761
761
|
if (error < 0)
|
|
762
762
|
return error;
|
|
763
763
|
|
|
@@ -781,22 +781,22 @@ static int pack_backend__writemidx(git_odb_backend *_backend)
|
|
|
781
781
|
return error;
|
|
782
782
|
|
|
783
783
|
git_vector_foreach(&backend->midx_packs, i, p) {
|
|
784
|
-
|
|
784
|
+
git_str idx_path = GIT_STR_INIT;
|
|
785
785
|
error = get_idx_path(&idx_path, backend, p);
|
|
786
786
|
if (error < 0)
|
|
787
787
|
goto cleanup;
|
|
788
|
-
error = git_midx_writer_add(w,
|
|
789
|
-
|
|
788
|
+
error = git_midx_writer_add(w, git_str_cstr(&idx_path));
|
|
789
|
+
git_str_dispose(&idx_path);
|
|
790
790
|
if (error < 0)
|
|
791
791
|
goto cleanup;
|
|
792
792
|
}
|
|
793
793
|
git_vector_foreach(&backend->packs, i, p) {
|
|
794
|
-
|
|
794
|
+
git_str idx_path = GIT_STR_INIT;
|
|
795
795
|
error = get_idx_path(&idx_path, backend, p);
|
|
796
796
|
if (error < 0)
|
|
797
797
|
goto cleanup;
|
|
798
|
-
error = git_midx_writer_add(w,
|
|
799
|
-
|
|
798
|
+
error = git_midx_writer_add(w, git_str_cstr(&idx_path));
|
|
799
|
+
git_str_dispose(&idx_path);
|
|
800
800
|
if (error < 0)
|
|
801
801
|
goto cleanup;
|
|
802
802
|
}
|
|
@@ -896,15 +896,15 @@ int git_odb_backend_pack(git_odb_backend **backend_out, const char *objects_dir)
|
|
|
896
896
|
{
|
|
897
897
|
int error = 0;
|
|
898
898
|
struct pack_backend *backend = NULL;
|
|
899
|
-
|
|
899
|
+
git_str path = GIT_STR_INIT;
|
|
900
900
|
|
|
901
901
|
if (pack_backend__alloc(&backend, 8) < 0)
|
|
902
902
|
return -1;
|
|
903
903
|
|
|
904
|
-
if (!(error =
|
|
905
|
-
|
|
904
|
+
if (!(error = git_str_joinpath(&path, objects_dir, "pack")) &&
|
|
905
|
+
git_fs_path_isdir(git_str_cstr(&path)))
|
|
906
906
|
{
|
|
907
|
-
backend->pack_folder =
|
|
907
|
+
backend->pack_folder = git_str_detach(&path);
|
|
908
908
|
error = pack_backend__refresh((git_odb_backend *)backend);
|
|
909
909
|
}
|
|
910
910
|
|
|
@@ -915,7 +915,7 @@ int git_odb_backend_pack(git_odb_backend **backend_out, const char *objects_dir)
|
|
|
915
915
|
|
|
916
916
|
*backend_out = (git_odb_backend *)backend;
|
|
917
917
|
|
|
918
|
-
|
|
918
|
+
git_str_dispose(&path);
|
|
919
919
|
|
|
920
920
|
return error;
|
|
921
921
|
}
|
data/vendor/libgit2/src/oid.c
CHANGED
|
@@ -13,6 +13,13 @@
|
|
|
13
13
|
#include <string.h>
|
|
14
14
|
#include <limits.h>
|
|
15
15
|
|
|
16
|
+
const git_oid git_oid__empty_blob_sha1 =
|
|
17
|
+
{{ 0xe6, 0x9d, 0xe2, 0x9b, 0xb2, 0xd1, 0xd6, 0x43, 0x4b, 0x8b,
|
|
18
|
+
0x29, 0xae, 0x77, 0x5a, 0xd8, 0xc2, 0xe4, 0x8c, 0x53, 0x91 }};
|
|
19
|
+
const git_oid git_oid__empty_tree_sha1 =
|
|
20
|
+
{{ 0x4b, 0x82, 0x5d, 0xc6, 0x42, 0xcb, 0x6e, 0xb9, 0xa0, 0x60,
|
|
21
|
+
0xe5, 0x4b, 0xf8, 0xd6, 0x92, 0x88, 0xfb, 0xee, 0x49, 0x04 }};
|
|
22
|
+
|
|
16
23
|
static char to_hex[] = "0123456789abcdef";
|
|
17
24
|
|
|
18
25
|
static int oid_error_invalid(const char *msg)
|
|
@@ -162,14 +169,14 @@ int git_oid__parse(
|
|
|
162
169
|
return 0;
|
|
163
170
|
}
|
|
164
171
|
|
|
165
|
-
void git_oid__writebuf(
|
|
172
|
+
void git_oid__writebuf(git_str *buf, const char *header, const git_oid *oid)
|
|
166
173
|
{
|
|
167
174
|
char hex_oid[GIT_OID_HEXSZ];
|
|
168
175
|
|
|
169
176
|
git_oid_fmt(hex_oid, oid);
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
177
|
+
git_str_puts(buf, header);
|
|
178
|
+
git_str_put(buf, hex_oid, GIT_OID_HEXSZ);
|
|
179
|
+
git_str_putc(buf, '\n');
|
|
173
180
|
}
|
|
174
181
|
|
|
175
182
|
int git_oid_fromraw(git_oid *out, const unsigned char *raw)
|
data/vendor/libgit2/src/oid.h
CHANGED
|
@@ -11,6 +11,9 @@
|
|
|
11
11
|
|
|
12
12
|
#include "git2/oid.h"
|
|
13
13
|
|
|
14
|
+
extern const git_oid git_oid__empty_blob_sha1;
|
|
15
|
+
extern const git_oid git_oid__empty_tree_sha1;
|
|
16
|
+
|
|
14
17
|
/**
|
|
15
18
|
* Format a git_oid into a newly allocated c-string.
|
|
16
19
|
*
|
|
@@ -48,4 +51,16 @@ GIT_INLINE(void) git_oid__cpy_prefix(
|
|
|
48
51
|
out->id[len / 2] &= 0xF0;
|
|
49
52
|
}
|
|
50
53
|
|
|
54
|
+
GIT_INLINE(bool) git_oid__is_hexstr(const char *str)
|
|
55
|
+
{
|
|
56
|
+
size_t i;
|
|
57
|
+
|
|
58
|
+
for (i = 0; str[i] != '\0'; i++) {
|
|
59
|
+
if (git__fromhex(str[i]) < 0)
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return (i == GIT_OID_HEXSZ);
|
|
64
|
+
}
|
|
65
|
+
|
|
51
66
|
#endif
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
#include "pack-objects.h"
|
|
9
9
|
|
|
10
|
+
#include "buf.h"
|
|
10
11
|
#include "zstream.h"
|
|
11
12
|
#include "delta.h"
|
|
12
13
|
#include "iterator.h"
|
|
@@ -33,7 +34,7 @@ struct unpacked {
|
|
|
33
34
|
|
|
34
35
|
struct tree_walk_context {
|
|
35
36
|
git_packbuilder *pb;
|
|
36
|
-
|
|
37
|
+
git_str buf;
|
|
37
38
|
};
|
|
38
39
|
|
|
39
40
|
struct pack_write_context {
|
|
@@ -141,7 +142,7 @@ int git_packbuilder_new(git_packbuilder **out, git_repository *repo)
|
|
|
141
142
|
pb->repo = repo;
|
|
142
143
|
pb->nr_threads = 1; /* do not spawn any thread by default */
|
|
143
144
|
|
|
144
|
-
if (git_hash_ctx_init(&pb->ctx) < 0 ||
|
|
145
|
+
if (git_hash_ctx_init(&pb->ctx, GIT_HASH_ALGORITHM_SHA1) < 0 ||
|
|
145
146
|
git_zstream_init(&pb->zstream, GIT_ZSTREAM_DEFLATE) < 0 ||
|
|
146
147
|
git_repository_odb(&pb->odb, repo) < 0 ||
|
|
147
148
|
packbuilder_config(pb) < 0)
|
|
@@ -664,7 +665,7 @@ static int write_pack(git_packbuilder *pb,
|
|
|
664
665
|
pb->nr_remaining -= pb->nr_written;
|
|
665
666
|
} while (pb->nr_remaining && i < pb->nr_objects);
|
|
666
667
|
|
|
667
|
-
if ((error = git_hash_final(
|
|
668
|
+
if ((error = git_hash_final(entry_oid.id, &pb->ctx)) < 0)
|
|
668
669
|
goto done;
|
|
669
670
|
|
|
670
671
|
error = write_cb(entry_oid.id, GIT_OID_RAWSZ, cb_data);
|
|
@@ -685,8 +686,8 @@ done:
|
|
|
685
686
|
|
|
686
687
|
static int write_pack_buf(void *buf, size_t size, void *data)
|
|
687
688
|
{
|
|
688
|
-
|
|
689
|
-
return
|
|
689
|
+
git_str *b = (git_str *)data;
|
|
690
|
+
return git_str_put(b, buf, size);
|
|
690
691
|
}
|
|
691
692
|
|
|
692
693
|
static int type_size_sort(const void *_a, const void *_b)
|
|
@@ -947,7 +948,7 @@ static int find_deltas(git_packbuilder *pb, git_pobject **list,
|
|
|
947
948
|
size_t *list_size, size_t window, size_t depth)
|
|
948
949
|
{
|
|
949
950
|
git_pobject *po;
|
|
950
|
-
|
|
951
|
+
git_str zbuf = GIT_STR_INIT;
|
|
951
952
|
struct unpacked *array;
|
|
952
953
|
size_t idx = 0, count = 0;
|
|
953
954
|
size_t mem_usage = 0;
|
|
@@ -1045,7 +1046,7 @@ static int find_deltas(git_packbuilder *pb, git_pobject **list,
|
|
|
1045
1046
|
|
|
1046
1047
|
memcpy(po->delta_data, zbuf.ptr, zbuf.size);
|
|
1047
1048
|
po->z_delta_size = zbuf.size;
|
|
1048
|
-
|
|
1049
|
+
git_str_clear(&zbuf);
|
|
1049
1050
|
|
|
1050
1051
|
GIT_ASSERT(git_packbuilder__cache_lock(pb) == 0);
|
|
1051
1052
|
pb->delta_cache_size -= po->delta_size;
|
|
@@ -1093,7 +1094,7 @@ on_error:
|
|
|
1093
1094
|
git__free(array[i].data);
|
|
1094
1095
|
}
|
|
1095
1096
|
git__free(array);
|
|
1096
|
-
|
|
1097
|
+
git_str_dispose(&zbuf);
|
|
1097
1098
|
|
|
1098
1099
|
return error;
|
|
1099
1100
|
}
|
|
@@ -1307,7 +1308,7 @@ static int ll_find_deltas(git_packbuilder *pb, git_pobject **list,
|
|
|
1307
1308
|
#define ll_find_deltas(pb, l, ls, w, d) find_deltas(pb, l, &ls, w, d)
|
|
1308
1309
|
#endif
|
|
1309
1310
|
|
|
1310
|
-
|
|
1311
|
+
int git_packbuilder__prepare(git_packbuilder *pb)
|
|
1311
1312
|
{
|
|
1312
1313
|
git_pobject **delta_list;
|
|
1313
1314
|
size_t i, n = 0;
|
|
@@ -1352,7 +1353,7 @@ static int prepare_pack(git_packbuilder *pb)
|
|
|
1352
1353
|
return 0;
|
|
1353
1354
|
}
|
|
1354
1355
|
|
|
1355
|
-
#define PREPARE_PACK if (
|
|
1356
|
+
#define PREPARE_PACK if (git_packbuilder__prepare(pb) < 0) { return -1; }
|
|
1356
1357
|
|
|
1357
1358
|
int git_packbuilder_foreach(git_packbuilder *pb, int (*cb)(void *buf, size_t size, void *payload), void *payload)
|
|
1358
1359
|
{
|
|
@@ -1360,18 +1361,18 @@ int git_packbuilder_foreach(git_packbuilder *pb, int (*cb)(void *buf, size_t siz
|
|
|
1360
1361
|
return write_pack(pb, cb, payload);
|
|
1361
1362
|
}
|
|
1362
1363
|
|
|
1363
|
-
int
|
|
1364
|
+
int git_packbuilder__write_buf(git_str *buf, git_packbuilder *pb)
|
|
1364
1365
|
{
|
|
1365
|
-
int error;
|
|
1366
|
-
|
|
1367
|
-
if ((error = git_buf_sanitize(buf)) < 0)
|
|
1368
|
-
return error;
|
|
1369
|
-
|
|
1370
1366
|
PREPARE_PACK;
|
|
1371
1367
|
|
|
1372
1368
|
return write_pack(pb, &write_pack_buf, buf);
|
|
1373
1369
|
}
|
|
1374
1370
|
|
|
1371
|
+
int git_packbuilder_write_buf(git_buf *buf, git_packbuilder *pb)
|
|
1372
|
+
{
|
|
1373
|
+
GIT_BUF_WRAP_PRIVATE(buf, git_packbuilder__write_buf, pb);
|
|
1374
|
+
}
|
|
1375
|
+
|
|
1375
1376
|
static int write_cb(void *buf, size_t len, void *payload)
|
|
1376
1377
|
{
|
|
1377
1378
|
struct pack_write_context *ctx = payload;
|
|
@@ -1386,7 +1387,7 @@ int git_packbuilder_write(
|
|
|
1386
1387
|
void *progress_cb_payload)
|
|
1387
1388
|
{
|
|
1388
1389
|
int error = -1;
|
|
1389
|
-
|
|
1390
|
+
git_str object_path = GIT_STR_INIT;
|
|
1390
1391
|
git_indexer_options opts = GIT_INDEXER_OPTIONS_INIT;
|
|
1391
1392
|
git_indexer *indexer = NULL;
|
|
1392
1393
|
git_indexer_progress stats;
|
|
@@ -1396,11 +1397,11 @@ int git_packbuilder_write(
|
|
|
1396
1397
|
PREPARE_PACK;
|
|
1397
1398
|
|
|
1398
1399
|
if (path == NULL) {
|
|
1399
|
-
if ((error =
|
|
1400
|
+
if ((error = git_repository__item_path(&object_path, pb->repo, GIT_REPOSITORY_ITEM_OBJECTS)) < 0)
|
|
1400
1401
|
goto cleanup;
|
|
1401
|
-
if ((error =
|
|
1402
|
+
if ((error = git_str_joinpath(&object_path, git_str_cstr(&object_path), "pack")) < 0)
|
|
1402
1403
|
goto cleanup;
|
|
1403
|
-
path =
|
|
1404
|
+
path = git_str_cstr(&object_path);
|
|
1404
1405
|
}
|
|
1405
1406
|
|
|
1406
1407
|
opts.progress_cb = progress_cb;
|
|
@@ -1421,20 +1422,32 @@ int git_packbuilder_write(
|
|
|
1421
1422
|
if ((error = git_indexer_commit(indexer, &stats)) < 0)
|
|
1422
1423
|
goto cleanup;
|
|
1423
1424
|
|
|
1425
|
+
#ifndef GIT_DEPRECATE_HARD
|
|
1424
1426
|
git_oid_cpy(&pb->pack_oid, git_indexer_hash(indexer));
|
|
1427
|
+
#endif
|
|
1428
|
+
|
|
1429
|
+
pb->pack_name = git__strdup(git_indexer_name(indexer));
|
|
1430
|
+
GIT_ERROR_CHECK_ALLOC(pb->pack_name);
|
|
1425
1431
|
|
|
1426
1432
|
cleanup:
|
|
1427
1433
|
git_indexer_free(indexer);
|
|
1428
|
-
|
|
1434
|
+
git_str_dispose(&object_path);
|
|
1429
1435
|
return error;
|
|
1430
1436
|
}
|
|
1431
1437
|
|
|
1432
1438
|
#undef PREPARE_PACK
|
|
1433
1439
|
|
|
1440
|
+
#ifndef GIT_DEPRECATE_HARD
|
|
1434
1441
|
const git_oid *git_packbuilder_hash(git_packbuilder *pb)
|
|
1435
1442
|
{
|
|
1436
1443
|
return &pb->pack_oid;
|
|
1437
1444
|
}
|
|
1445
|
+
#endif
|
|
1446
|
+
|
|
1447
|
+
const char *git_packbuilder_name(git_packbuilder *pb)
|
|
1448
|
+
{
|
|
1449
|
+
return pb->pack_name;
|
|
1450
|
+
}
|
|
1438
1451
|
|
|
1439
1452
|
|
|
1440
1453
|
static int cb_tree_walk(
|
|
@@ -1447,10 +1460,10 @@ static int cb_tree_walk(
|
|
|
1447
1460
|
if (git_tree_entry_type(entry) == GIT_OBJECT_COMMIT)
|
|
1448
1461
|
return 0;
|
|
1449
1462
|
|
|
1450
|
-
if (!(error =
|
|
1451
|
-
!(error =
|
|
1463
|
+
if (!(error = git_str_sets(&ctx->buf, root)) &&
|
|
1464
|
+
!(error = git_str_puts(&ctx->buf, git_tree_entry_name(entry))))
|
|
1452
1465
|
error = git_packbuilder_insert(
|
|
1453
|
-
ctx->pb, git_tree_entry_id(entry),
|
|
1466
|
+
ctx->pb, git_tree_entry_id(entry), git_str_cstr(&ctx->buf));
|
|
1454
1467
|
|
|
1455
1468
|
return error;
|
|
1456
1469
|
}
|
|
@@ -1474,14 +1487,14 @@ int git_packbuilder_insert_tree(git_packbuilder *pb, const git_oid *oid)
|
|
|
1474
1487
|
{
|
|
1475
1488
|
int error;
|
|
1476
1489
|
git_tree *tree = NULL;
|
|
1477
|
-
struct tree_walk_context context = { pb,
|
|
1490
|
+
struct tree_walk_context context = { pb, GIT_STR_INIT };
|
|
1478
1491
|
|
|
1479
1492
|
if (!(error = git_tree_lookup(&tree, pb->repo, oid)) &&
|
|
1480
1493
|
!(error = git_packbuilder_insert(pb, oid, NULL)))
|
|
1481
1494
|
error = git_tree_walk(tree, GIT_TREEWALK_PRE, cb_tree_walk, &context);
|
|
1482
1495
|
|
|
1483
1496
|
git_tree_free(tree);
|
|
1484
|
-
|
|
1497
|
+
git_str_dispose(&context.buf);
|
|
1485
1498
|
return error;
|
|
1486
1499
|
}
|
|
1487
1500
|
|
|
@@ -1802,5 +1815,7 @@ void git_packbuilder_free(git_packbuilder *pb)
|
|
|
1802
1815
|
git_hash_ctx_cleanup(&pb->ctx);
|
|
1803
1816
|
git_zstream_free(&pb->zstream);
|
|
1804
1817
|
|
|
1818
|
+
git__free(pb->pack_name);
|
|
1819
|
+
|
|
1805
1820
|
git__free(pb);
|
|
1806
1821
|
}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
#include "common.h"
|
|
12
12
|
|
|
13
|
-
#include "
|
|
13
|
+
#include "str.h"
|
|
14
14
|
#include "hash.h"
|
|
15
15
|
#include "oidmap.h"
|
|
16
16
|
#include "netops.h"
|
|
@@ -46,10 +46,10 @@ typedef struct git_pobject {
|
|
|
46
46
|
size_t delta_size;
|
|
47
47
|
size_t z_delta_size;
|
|
48
48
|
|
|
49
|
-
int written:1,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
unsigned int written:1,
|
|
50
|
+
recursing:1,
|
|
51
|
+
tagged:1,
|
|
52
|
+
filled:1;
|
|
53
53
|
} git_pobject;
|
|
54
54
|
|
|
55
55
|
struct git_packbuilder {
|
|
@@ -73,7 +73,10 @@ struct git_packbuilder {
|
|
|
73
73
|
git_oidmap *walk_objects;
|
|
74
74
|
git_pool object_pool;
|
|
75
75
|
|
|
76
|
+
#ifndef GIT_DEPRECATE_HARD
|
|
76
77
|
git_oid pack_oid; /* hash of written pack */
|
|
78
|
+
#endif
|
|
79
|
+
char *pack_name; /* name of written pack */
|
|
77
80
|
|
|
78
81
|
/* synchronization objects */
|
|
79
82
|
git_mutex cache_mutex;
|
|
@@ -96,6 +99,8 @@ struct git_packbuilder {
|
|
|
96
99
|
bool done;
|
|
97
100
|
};
|
|
98
101
|
|
|
99
|
-
int
|
|
102
|
+
int git_packbuilder__write_buf(git_str *buf, git_packbuilder *pb);
|
|
103
|
+
int git_packbuilder__prepare(git_packbuilder *pb);
|
|
104
|
+
|
|
100
105
|
|
|
101
106
|
#endif
|
data/vendor/libgit2/src/pack.c
CHANGED
|
@@ -308,7 +308,7 @@ static int pack_index_open_locked(struct git_pack_file *p)
|
|
|
308
308
|
{
|
|
309
309
|
int error = 0;
|
|
310
310
|
size_t name_len;
|
|
311
|
-
|
|
311
|
+
git_str idx_name = GIT_STR_INIT;
|
|
312
312
|
|
|
313
313
|
if (p->index_version > -1)
|
|
314
314
|
goto cleanup;
|
|
@@ -317,12 +317,12 @@ static int pack_index_open_locked(struct git_pack_file *p)
|
|
|
317
317
|
name_len = strlen(p->pack_name);
|
|
318
318
|
GIT_ASSERT(name_len > strlen(".pack"));
|
|
319
319
|
|
|
320
|
-
if ((error =
|
|
320
|
+
if ((error = git_str_init(&idx_name, name_len)) < 0)
|
|
321
321
|
goto cleanup;
|
|
322
322
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
if (
|
|
323
|
+
git_str_put(&idx_name, p->pack_name, name_len - strlen(".pack"));
|
|
324
|
+
git_str_puts(&idx_name, ".idx");
|
|
325
|
+
if (git_str_oom(&idx_name)) {
|
|
326
326
|
error = -1;
|
|
327
327
|
goto cleanup;
|
|
328
328
|
}
|
|
@@ -331,7 +331,7 @@ static int pack_index_open_locked(struct git_pack_file *p)
|
|
|
331
331
|
error = pack_index_check_locked(idx_name.ptr, p);
|
|
332
332
|
|
|
333
333
|
cleanup:
|
|
334
|
-
|
|
334
|
+
git_str_dispose(&idx_name);
|
|
335
335
|
|
|
336
336
|
return error;
|
|
337
337
|
}
|
|
@@ -1156,17 +1156,17 @@ cleanup:
|
|
|
1156
1156
|
int git_packfile__name(char **out, const char *path)
|
|
1157
1157
|
{
|
|
1158
1158
|
size_t path_len;
|
|
1159
|
-
|
|
1159
|
+
git_str buf = GIT_STR_INIT;
|
|
1160
1160
|
|
|
1161
1161
|
path_len = strlen(path);
|
|
1162
1162
|
|
|
1163
1163
|
if (path_len < strlen(".idx"))
|
|
1164
1164
|
return git_odb__error_notfound("invalid packfile path", NULL, 0);
|
|
1165
1165
|
|
|
1166
|
-
if (
|
|
1166
|
+
if (git_str_printf(&buf, "%.*s.pack", (int)(path_len - strlen(".idx")), path) < 0)
|
|
1167
1167
|
return -1;
|
|
1168
1168
|
|
|
1169
|
-
*out =
|
|
1169
|
+
*out = git_str_detach(&buf);
|
|
1170
1170
|
return 0;
|
|
1171
1171
|
}
|
|
1172
1172
|
|
|
@@ -1198,7 +1198,7 @@ int git_packfile_alloc(struct git_pack_file **pack_out, const char *path)
|
|
|
1198
1198
|
|
|
1199
1199
|
if (!git_disable_pack_keep_file_checks) {
|
|
1200
1200
|
memcpy(p->pack_name + root_len, ".keep", sizeof(".keep"));
|
|
1201
|
-
if (
|
|
1201
|
+
if (git_fs_path_exists(p->pack_name) == true)
|
|
1202
1202
|
p->pack_keep = 1;
|
|
1203
1203
|
}
|
|
1204
1204
|
|
data/vendor/libgit2/src/patch.c
CHANGED
|
@@ -76,15 +76,15 @@ size_t git_patch_size(
|
|
|
76
76
|
out += patch->header_size;
|
|
77
77
|
|
|
78
78
|
if (include_file_headers) {
|
|
79
|
-
|
|
79
|
+
git_str file_header = GIT_STR_INIT;
|
|
80
80
|
|
|
81
81
|
if (git_diff_delta__format_file_header(
|
|
82
82
|
&file_header, patch->delta, NULL, NULL, 0, true) < 0)
|
|
83
83
|
git_error_clear();
|
|
84
84
|
else
|
|
85
|
-
out +=
|
|
85
|
+
out += git_str_len(&file_header);
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
git_str_dispose(&file_header);
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
return out;
|