rugged 0.28.4 → 0.28.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/AUTHORS +0 -1
- data/vendor/libgit2/CMakeLists.txt +16 -36
- data/vendor/libgit2/COPYING +0 -28
- data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +1 -5
- data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
- data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
- data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
- data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +0 -6
- data/vendor/libgit2/deps/http-parser/http_parser.c +6 -11
- data/vendor/libgit2/deps/regex/CMakeLists.txt +2 -0
- data/vendor/libgit2/deps/regex/COPYING +502 -0
- data/vendor/libgit2/deps/regex/config.h +7 -0
- data/vendor/libgit2/deps/regex/regcomp.c +3857 -0
- data/vendor/libgit2/deps/regex/regex.c +92 -0
- data/vendor/libgit2/deps/regex/regex.h +582 -0
- data/vendor/libgit2/deps/regex/regex_internal.c +1744 -0
- data/vendor/libgit2/deps/regex/regex_internal.h +819 -0
- data/vendor/libgit2/deps/regex/regexec.c +4369 -0
- data/vendor/libgit2/deps/zlib/adler32.c +7 -0
- data/vendor/libgit2/deps/zlib/crc32.c +7 -0
- data/vendor/libgit2/include/git2.h +0 -2
- data/vendor/libgit2/include/git2/apply.h +2 -22
- data/vendor/libgit2/include/git2/attr.h +12 -19
- data/vendor/libgit2/include/git2/blame.h +2 -2
- data/vendor/libgit2/include/git2/blob.h +12 -44
- data/vendor/libgit2/include/git2/buffer.h +14 -20
- data/vendor/libgit2/include/git2/checkout.h +14 -46
- data/vendor/libgit2/include/git2/cherrypick.h +3 -3
- data/vendor/libgit2/include/git2/clone.h +2 -2
- data/vendor/libgit2/include/git2/commit.h +1 -23
- data/vendor/libgit2/include/git2/common.h +5 -7
- data/vendor/libgit2/include/git2/config.h +12 -12
- data/vendor/libgit2/include/git2/deprecated.h +3 -243
- data/vendor/libgit2/include/git2/describe.h +4 -4
- data/vendor/libgit2/include/git2/diff.h +14 -16
- data/vendor/libgit2/include/git2/filter.h +0 -8
- data/vendor/libgit2/include/git2/index.h +1 -2
- data/vendor/libgit2/include/git2/indexer.h +4 -48
- data/vendor/libgit2/include/git2/inttypes.h +309 -0
- data/vendor/libgit2/include/git2/merge.h +10 -6
- data/vendor/libgit2/include/git2/net.h +5 -0
- data/vendor/libgit2/include/git2/object.h +14 -2
- data/vendor/libgit2/include/git2/odb.h +2 -3
- data/vendor/libgit2/include/git2/odb_backend.h +4 -5
- data/vendor/libgit2/include/git2/oid.h +1 -1
- data/vendor/libgit2/include/git2/pack.h +1 -12
- data/vendor/libgit2/include/git2/proxy.h +3 -5
- data/vendor/libgit2/include/git2/rebase.h +2 -46
- data/vendor/libgit2/include/git2/refs.h +0 -19
- data/vendor/libgit2/include/git2/remote.h +12 -35
- data/vendor/libgit2/include/git2/repository.h +2 -24
- data/vendor/libgit2/include/git2/revert.h +1 -1
- data/vendor/libgit2/include/git2/stash.h +3 -3
- data/vendor/libgit2/include/git2/status.h +16 -25
- data/vendor/libgit2/include/git2/submodule.h +3 -20
- data/vendor/libgit2/include/git2/sys/alloc.h +9 -9
- data/vendor/libgit2/include/git2/sys/odb_backend.h +4 -48
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +21 -57
- data/vendor/libgit2/include/git2/sys/repository.h +1 -5
- data/vendor/libgit2/include/git2/sys/time.h +31 -0
- data/vendor/libgit2/include/git2/sys/transport.h +2 -2
- data/vendor/libgit2/include/git2/tag.h +2 -11
- data/vendor/libgit2/include/git2/trace.h +2 -2
- data/vendor/libgit2/include/git2/transport.h +340 -11
- data/vendor/libgit2/include/git2/tree.h +1 -1
- data/vendor/libgit2/include/git2/types.h +89 -4
- data/vendor/libgit2/include/git2/version.h +2 -2
- data/vendor/libgit2/include/git2/worktree.h +5 -5
- data/vendor/libgit2/libgit2.pc.in +13 -0
- data/vendor/libgit2/src/CMakeLists.txt +222 -88
- data/vendor/libgit2/src/alloc.c +14 -2
- data/vendor/libgit2/src/apply.c +30 -60
- data/vendor/libgit2/src/attr.c +64 -70
- data/vendor/libgit2/src/attr_file.c +96 -189
- data/vendor/libgit2/src/attr_file.h +9 -9
- data/vendor/libgit2/src/attrcache.c +46 -44
- data/vendor/libgit2/src/attrcache.h +1 -2
- data/vendor/libgit2/src/blame.c +5 -17
- data/vendor/libgit2/src/blame.h +1 -1
- data/vendor/libgit2/src/blame_git.c +7 -21
- data/vendor/libgit2/src/blob.c +17 -81
- data/vendor/libgit2/src/blob.h +2 -2
- data/vendor/libgit2/src/branch.c +5 -29
- data/vendor/libgit2/src/buffer.c +7 -14
- data/vendor/libgit2/src/cache.c +33 -26
- data/vendor/libgit2/src/cache.h +1 -1
- data/vendor/libgit2/src/cc-compat.h +0 -5
- data/vendor/libgit2/src/checkout.c +16 -26
- data/vendor/libgit2/src/cherrypick.c +3 -9
- data/vendor/libgit2/src/clone.c +7 -29
- data/vendor/libgit2/src/clone.h +0 -4
- data/vendor/libgit2/src/commit.c +21 -69
- data/vendor/libgit2/src/commit.h +0 -6
- data/vendor/libgit2/src/commit_list.c +76 -28
- data/vendor/libgit2/src/commit_list.h +2 -2
- data/vendor/libgit2/src/common.h +75 -3
- data/vendor/libgit2/src/config.c +40 -31
- data/vendor/libgit2/src/config.h +6 -7
- data/vendor/libgit2/src/config_backend.h +0 -12
- data/vendor/libgit2/src/config_cache.c +39 -39
- data/vendor/libgit2/src/config_entries.c +99 -69
- data/vendor/libgit2/src/config_entries.h +0 -1
- data/vendor/libgit2/src/config_file.c +380 -337
- data/vendor/libgit2/src/config_mem.c +16 -12
- data/vendor/libgit2/src/config_parse.c +29 -49
- data/vendor/libgit2/src/config_parse.h +12 -13
- data/vendor/libgit2/src/crlf.c +14 -14
- data/vendor/libgit2/src/describe.c +20 -21
- data/vendor/libgit2/src/diff.c +58 -43
- data/vendor/libgit2/src/diff.h +1 -2
- data/vendor/libgit2/src/diff_driver.c +38 -37
- data/vendor/libgit2/src/diff_file.c +7 -9
- data/vendor/libgit2/src/diff_file.h +1 -1
- data/vendor/libgit2/src/diff_generate.c +85 -135
- data/vendor/libgit2/src/diff_generate.h +2 -2
- data/vendor/libgit2/src/diff_parse.c +1 -1
- data/vendor/libgit2/src/diff_print.c +13 -25
- data/vendor/libgit2/src/diff_stats.c +1 -1
- data/vendor/libgit2/src/diff_tform.c +4 -4
- data/vendor/libgit2/src/errors.c +22 -12
- data/vendor/libgit2/src/features.h.in +2 -9
- data/vendor/libgit2/src/fetch.c +2 -7
- data/vendor/libgit2/src/fetchhead.c +1 -1
- data/vendor/libgit2/src/filebuf.c +10 -6
- data/vendor/libgit2/src/filebuf.h +2 -2
- data/vendor/libgit2/src/{futils.c → fileops.c} +17 -21
- data/vendor/libgit2/src/{futils.h → fileops.h} +5 -5
- data/vendor/libgit2/src/filter.c +8 -16
- data/vendor/libgit2/src/fnmatch.c +248 -0
- data/vendor/libgit2/src/fnmatch.h +48 -0
- data/vendor/libgit2/src/global.c +40 -12
- data/vendor/libgit2/src/global.h +2 -0
- data/vendor/libgit2/src/hash.c +0 -61
- data/vendor/libgit2/src/hash.h +21 -19
- data/vendor/libgit2/src/hash/{sha1/collisiondetect.c → hash_collisiondetect.h} +17 -14
- data/vendor/libgit2/src/hash/{sha1/common_crypto.c → hash_common_crypto.h} +19 -15
- data/vendor/libgit2/src/hash/{sha1/generic.c → hash_generic.c} +10 -22
- data/vendor/libgit2/src/hash/{sha1/generic.h → hash_generic.h} +14 -4
- data/vendor/libgit2/src/hash/{sha1/mbedtls.c → hash_mbedtls.c} +7 -15
- data/vendor/libgit2/src/hash/{sha1/mbedtls.h → hash_mbedtls.h} +11 -6
- data/vendor/libgit2/src/hash/{sha1/openssl.c → hash_openssl.h} +18 -14
- data/vendor/libgit2/src/hash/{sha1/win32.c → hash_win32.c} +24 -34
- data/vendor/libgit2/src/hash/{sha1/win32.h → hash_win32.h} +19 -6
- data/vendor/libgit2/src/hash/{sha1/sha1dc → sha1dc}/sha1.c +3 -14
- data/vendor/libgit2/src/hash/{sha1/sha1dc → sha1dc}/sha1.h +0 -0
- data/vendor/libgit2/src/hash/{sha1/sha1dc → sha1dc}/ubc_check.c +0 -0
- data/vendor/libgit2/src/hash/{sha1/sha1dc → sha1dc}/ubc_check.h +0 -0
- data/vendor/libgit2/src/hashsig.c +1 -1
- data/vendor/libgit2/src/idxmap.c +65 -91
- data/vendor/libgit2/src/idxmap.h +15 -151
- data/vendor/libgit2/src/ignore.c +38 -32
- data/vendor/libgit2/src/index.c +43 -66
- data/vendor/libgit2/src/index.h +1 -1
- data/vendor/libgit2/src/indexer.c +70 -69
- data/vendor/libgit2/src/integer.h +4 -39
- data/vendor/libgit2/src/iterator.c +22 -27
- data/vendor/libgit2/src/map.h +1 -1
- data/vendor/libgit2/src/merge.c +44 -58
- data/vendor/libgit2/src/merge_driver.c +4 -4
- data/vendor/libgit2/src/merge_file.c +1 -1
- data/vendor/libgit2/src/mwindow.c +23 -18
- data/vendor/libgit2/src/mwindow.h +4 -4
- data/vendor/libgit2/src/netops.c +165 -55
- data/vendor/libgit2/src/netops.h +25 -3
- data/vendor/libgit2/src/notes.c +2 -2
- data/vendor/libgit2/src/object.c +2 -2
- data/vendor/libgit2/src/object.h +0 -2
- data/vendor/libgit2/src/odb.c +23 -41
- data/vendor/libgit2/src/odb.h +2 -3
- data/vendor/libgit2/src/odb_loose.c +10 -17
- data/vendor/libgit2/src/odb_mempack.c +23 -10
- data/vendor/libgit2/src/odb_pack.c +4 -4
- data/vendor/libgit2/src/offmap.c +55 -43
- data/vendor/libgit2/src/offmap.h +24 -102
- data/vendor/libgit2/src/oid.c +1 -6
- data/vendor/libgit2/src/oidmap.c +57 -39
- data/vendor/libgit2/src/oidmap.h +19 -99
- data/vendor/libgit2/src/pack-objects.c +32 -25
- data/vendor/libgit2/src/pack-objects.h +1 -1
- data/vendor/libgit2/src/pack.c +47 -45
- data/vendor/libgit2/src/pack.h +14 -12
- data/vendor/libgit2/src/parse.c +0 -10
- data/vendor/libgit2/src/parse.h +3 -3
- data/vendor/libgit2/src/patch.c +1 -1
- data/vendor/libgit2/src/patch_generate.c +2 -2
- data/vendor/libgit2/src/patch_parse.c +31 -124
- data/vendor/libgit2/src/path.c +6 -43
- data/vendor/libgit2/src/path.h +0 -2
- data/vendor/libgit2/src/pathspec.c +13 -13
- data/vendor/libgit2/src/pool.c +22 -26
- data/vendor/libgit2/src/pool.h +7 -7
- data/vendor/libgit2/src/posix.c +7 -7
- data/vendor/libgit2/src/posix.h +1 -12
- data/vendor/libgit2/src/proxy.c +2 -7
- data/vendor/libgit2/src/push.c +5 -10
- data/vendor/libgit2/src/reader.c +2 -2
- data/vendor/libgit2/src/rebase.c +7 -66
- data/vendor/libgit2/src/refdb.c +0 -12
- data/vendor/libgit2/src/refdb_fs.c +165 -214
- data/vendor/libgit2/src/reflog.c +13 -11
- data/vendor/libgit2/src/refs.c +18 -24
- data/vendor/libgit2/src/refspec.c +16 -9
- data/vendor/libgit2/src/remote.c +52 -50
- data/vendor/libgit2/src/remote.h +2 -2
- data/vendor/libgit2/src/repository.c +100 -115
- data/vendor/libgit2/src/repository.h +40 -49
- data/vendor/libgit2/src/revert.c +3 -8
- data/vendor/libgit2/src/revparse.c +19 -18
- data/vendor/libgit2/src/revwalk.c +30 -63
- data/vendor/libgit2/src/revwalk.h +0 -20
- data/vendor/libgit2/src/settings.c +0 -5
- data/vendor/libgit2/src/sortedcache.c +26 -12
- data/vendor/libgit2/src/sortedcache.h +1 -1
- data/vendor/libgit2/src/stash.c +65 -45
- data/vendor/libgit2/src/status.c +9 -15
- data/vendor/libgit2/src/{allocators/stdalloc.c → stdalloc.c} +4 -3
- data/vendor/libgit2/src/{allocators/stdalloc.h → stdalloc.h} +4 -4
- data/vendor/libgit2/src/streams/openssl.c +0 -20
- data/vendor/libgit2/src/streams/socket.c +2 -2
- data/vendor/libgit2/src/strmap.c +84 -37
- data/vendor/libgit2/src/strmap.h +33 -105
- data/vendor/libgit2/src/submodule.c +70 -102
- data/vendor/libgit2/src/submodule.h +1 -1
- data/vendor/libgit2/src/sysdir.c +1 -11
- data/vendor/libgit2/src/tag.c +2 -10
- data/vendor/libgit2/src/trace.c +1 -1
- data/vendor/libgit2/src/trace.h +2 -2
- data/vendor/libgit2/src/trailer.c +32 -46
- data/vendor/libgit2/src/transaction.c +9 -10
- data/vendor/libgit2/src/transports/auth.c +9 -10
- data/vendor/libgit2/src/transports/auth.h +4 -11
- data/vendor/libgit2/src/transports/auth_negotiate.c +9 -23
- data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
- data/vendor/libgit2/src/transports/cred.c +6 -6
- data/vendor/libgit2/src/{allocators/win32_crtdbg.h → transports/cred.h} +4 -5
- data/vendor/libgit2/src/transports/git.c +16 -11
- data/vendor/libgit2/src/transports/http.c +276 -419
- data/vendor/libgit2/src/transports/http.h +1 -1
- data/vendor/libgit2/src/transports/local.c +9 -9
- data/vendor/libgit2/src/transports/smart.c +17 -17
- data/vendor/libgit2/src/transports/smart.h +2 -2
- data/vendor/libgit2/src/transports/smart_protocol.c +60 -36
- data/vendor/libgit2/src/transports/ssh.c +36 -46
- data/vendor/libgit2/src/transports/winhttp.c +207 -231
- data/vendor/libgit2/src/tree-cache.c +7 -14
- data/vendor/libgit2/src/tree.c +24 -10
- data/vendor/libgit2/src/unix/map.c +1 -1
- data/vendor/libgit2/src/unix/posix.h +11 -1
- data/vendor/libgit2/src/userdiff.h +1 -3
- data/vendor/libgit2/src/util.c +53 -51
- data/vendor/libgit2/src/util.h +21 -16
- data/vendor/libgit2/src/win32/map.c +5 -3
- data/vendor/libgit2/src/win32/path_w32.c +2 -12
- data/vendor/libgit2/src/win32/path_w32.h +29 -0
- data/vendor/libgit2/src/win32/posix.h +4 -1
- data/vendor/libgit2/src/win32/posix_w32.c +5 -40
- data/vendor/libgit2/src/win32/precompiled.h +2 -0
- data/vendor/libgit2/src/win32/thread.c +10 -5
- data/vendor/libgit2/src/win32/w32_buffer.c +3 -7
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +93 -0
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +2 -0
- data/vendor/libgit2/src/win32/w32_stack.c +9 -4
- data/vendor/libgit2/src/win32/w32_stack.h +3 -3
- data/vendor/libgit2/src/win32/w32_util.c +0 -31
- data/vendor/libgit2/src/win32/w32_util.h +32 -6
- data/vendor/libgit2/src/worktree.c +22 -36
- data/vendor/libgit2/src/xdiff/xdiffi.c +1 -1
- data/vendor/libgit2/src/xdiff/xmerge.c +0 -12
- data/vendor/libgit2/src/xdiff/xpatience.c +0 -3
- metadata +34 -98
- data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +0 -28
- data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +0 -38
- data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +0 -37
- data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +0 -110
- data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +0 -53
- data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +0 -124
- data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +0 -66
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +0 -21
- data/vendor/libgit2/deps/ntlmclient/compat.h +0 -33
- data/vendor/libgit2/deps/ntlmclient/crypt.h +0 -64
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +0 -120
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +0 -18
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -145
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +0 -18
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +0 -130
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +0 -21
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +0 -1420
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +0 -174
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +0 -320
- data/vendor/libgit2/deps/ntlmclient/unicode.h +0 -36
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +0 -445
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +0 -201
- data/vendor/libgit2/deps/ntlmclient/utf8.h +0 -1257
- data/vendor/libgit2/deps/ntlmclient/util.c +0 -21
- data/vendor/libgit2/deps/ntlmclient/util.h +0 -14
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +0 -140
- data/vendor/libgit2/deps/pcre/COPYING +0 -5
- data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +0 -22
- data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +0 -17
- data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +0 -58
- data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +0 -29
- data/vendor/libgit2/deps/pcre/config.h.in +0 -57
- data/vendor/libgit2/deps/pcre/pcre.h +0 -641
- data/vendor/libgit2/deps/pcre/pcre_byte_order.c +0 -319
- data/vendor/libgit2/deps/pcre/pcre_chartables.c +0 -198
- data/vendor/libgit2/deps/pcre/pcre_compile.c +0 -9800
- data/vendor/libgit2/deps/pcre/pcre_config.c +0 -190
- data/vendor/libgit2/deps/pcre/pcre_dfa_exec.c +0 -3676
- data/vendor/libgit2/deps/pcre/pcre_exec.c +0 -7173
- data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +0 -245
- data/vendor/libgit2/deps/pcre/pcre_get.c +0 -669
- data/vendor/libgit2/deps/pcre/pcre_globals.c +0 -86
- data/vendor/libgit2/deps/pcre/pcre_internal.h +0 -2787
- data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +0 -11913
- data/vendor/libgit2/deps/pcre/pcre_maketables.c +0 -156
- data/vendor/libgit2/deps/pcre/pcre_newline.c +0 -210
- data/vendor/libgit2/deps/pcre/pcre_ord2utf8.c +0 -94
- data/vendor/libgit2/deps/pcre/pcre_printint.c +0 -834
- data/vendor/libgit2/deps/pcre/pcre_refcount.c +0 -92
- data/vendor/libgit2/deps/pcre/pcre_string_utils.c +0 -211
- data/vendor/libgit2/deps/pcre/pcre_study.c +0 -1686
- data/vendor/libgit2/deps/pcre/pcre_tables.c +0 -727
- data/vendor/libgit2/deps/pcre/pcre_ucd.c +0 -3644
- data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +0 -301
- data/vendor/libgit2/deps/pcre/pcre_version.c +0 -98
- data/vendor/libgit2/deps/pcre/pcre_xclass.c +0 -268
- data/vendor/libgit2/deps/pcre/pcreposix.c +0 -421
- data/vendor/libgit2/deps/pcre/pcreposix.h +0 -117
- data/vendor/libgit2/deps/pcre/ucp.h +0 -224
- data/vendor/libgit2/include/git2/cert.h +0 -135
- data/vendor/libgit2/include/git2/cred.h +0 -308
- data/vendor/libgit2/include/git2/sys/cred.h +0 -90
- data/vendor/libgit2/src/allocators/win32_crtdbg.c +0 -118
- data/vendor/libgit2/src/config_snapshot.c +0 -206
- data/vendor/libgit2/src/errors.h +0 -81
- data/vendor/libgit2/src/hash/sha1.h +0 -38
- data/vendor/libgit2/src/hash/sha1/collisiondetect.h +0 -19
- data/vendor/libgit2/src/hash/sha1/common_crypto.h +0 -19
- data/vendor/libgit2/src/hash/sha1/openssl.h +0 -19
- data/vendor/libgit2/src/net.c +0 -184
- data/vendor/libgit2/src/net.h +0 -36
- data/vendor/libgit2/src/regexp.c +0 -221
- data/vendor/libgit2/src/regexp.h +0 -97
- data/vendor/libgit2/src/transports/auth_ntlm.c +0 -223
- data/vendor/libgit2/src/transports/auth_ntlm.h +0 -35
- data/vendor/libgit2/src/wildmatch.c +0 -320
- data/vendor/libgit2/src/wildmatch.h +0 -23
- data/vendor/libgit2/src/win32/w32_common.h +0 -39
data/vendor/libgit2/src/index.c
CHANGED
@@ -29,18 +29,18 @@
|
|
29
29
|
|
30
30
|
#define INSERT_IN_MAP_EX(idx, map, e, err) do { \
|
31
31
|
if ((idx)->ignore_case) \
|
32
|
-
(
|
32
|
+
git_idxmap_icase_insert((git_idxmap_icase *) (map), (e), (e), (err)); \
|
33
33
|
else \
|
34
|
-
(
|
34
|
+
git_idxmap_insert((map), (e), (e), (err)); \
|
35
35
|
} while (0)
|
36
36
|
|
37
37
|
#define INSERT_IN_MAP(idx, e, err) INSERT_IN_MAP_EX(idx, (idx)->entries_map, e, err)
|
38
38
|
|
39
|
-
#define LOOKUP_IN_MAP(
|
39
|
+
#define LOOKUP_IN_MAP(p, idx, k) do { \
|
40
40
|
if ((idx)->ignore_case) \
|
41
|
-
(
|
41
|
+
(p) = git_idxmap_icase_lookup_index((git_idxmap_icase *) index->entries_map, (k)); \
|
42
42
|
else \
|
43
|
-
(
|
43
|
+
(p) = git_idxmap_lookup_index(index->entries_map, (k)); \
|
44
44
|
} while (0)
|
45
45
|
|
46
46
|
#define DELETE_IN_MAP(idx, e) do { \
|
@@ -423,10 +423,10 @@ int git_index_open(git_index **index_out, const char *index_path)
|
|
423
423
|
}
|
424
424
|
|
425
425
|
if (git_vector_init(&index->entries, 32, git_index_entry_cmp) < 0 ||
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
426
|
+
git_idxmap_alloc(&index->entries_map) < 0 ||
|
427
|
+
git_vector_init(&index->names, 8, conflict_name_cmp) < 0 ||
|
428
|
+
git_vector_init(&index->reuc, 8, reuc_cmp) < 0 ||
|
429
|
+
git_vector_init(&index->deleted, 8, git_index_entry_cmp) < 0)
|
430
430
|
goto fail;
|
431
431
|
|
432
432
|
index->entries_cmp_path = git__strcmp_cb;
|
@@ -570,11 +570,11 @@ int git_index_set_caps(git_index *index, int caps)
|
|
570
570
|
return create_index_error(
|
571
571
|
-1, "cannot access repository to set index caps");
|
572
572
|
|
573
|
-
if (!
|
573
|
+
if (!git_repository__cvar(&val, repo, GIT_CVAR_IGNORECASE))
|
574
574
|
index->ignore_case = (val != 0);
|
575
|
-
if (!
|
575
|
+
if (!git_repository__cvar(&val, repo, GIT_CVAR_FILEMODE))
|
576
576
|
index->distrust_filemode = (val == 0);
|
577
|
-
if (!
|
577
|
+
if (!git_repository__cvar(&val, repo, GIT_CVAR_SYMLINKS))
|
578
578
|
index->no_symlinks = (val == 0);
|
579
579
|
}
|
580
580
|
else {
|
@@ -852,21 +852,20 @@ const git_index_entry *git_index_get_bypath(
|
|
852
852
|
git_index *index, const char *path, int stage)
|
853
853
|
{
|
854
854
|
git_index_entry key = {{ 0 }};
|
855
|
-
|
855
|
+
size_t pos;
|
856
856
|
|
857
857
|
assert(index);
|
858
858
|
|
859
859
|
key.path = path;
|
860
860
|
GIT_INDEX_ENTRY_STAGE_SET(&key, stage);
|
861
861
|
|
862
|
-
LOOKUP_IN_MAP(
|
862
|
+
LOOKUP_IN_MAP(pos, index, &key);
|
863
863
|
|
864
|
-
if (
|
865
|
-
|
866
|
-
return NULL;
|
867
|
-
}
|
864
|
+
if (git_idxmap_valid_index(index->entries_map, pos))
|
865
|
+
return git_idxmap_value_at(index->entries_map, pos);
|
868
866
|
|
869
|
-
|
867
|
+
git_error_set(GIT_ERROR_INDEX, "index does not contain '%s'", path);
|
868
|
+
return NULL;
|
870
869
|
}
|
871
870
|
|
872
871
|
void git_index_entry__init_from_stat(
|
@@ -1402,7 +1401,7 @@ static int index_insert(
|
|
1402
1401
|
if ((error = git_vector_insert_sorted(&index->entries, entry, index_no_dups)) < 0)
|
1403
1402
|
goto out;
|
1404
1403
|
|
1405
|
-
INSERT_IN_MAP(index, entry, error);
|
1404
|
+
INSERT_IN_MAP(index, entry, &error);
|
1406
1405
|
}
|
1407
1406
|
|
1408
1407
|
index->dirty = 1;
|
@@ -1454,7 +1453,7 @@ GIT_INLINE(bool) valid_filemode(const int filemode)
|
|
1454
1453
|
return (is_file_or_link(filemode) || filemode == GIT_FILEMODE_COMMIT);
|
1455
1454
|
}
|
1456
1455
|
|
1457
|
-
int
|
1456
|
+
int git_index_add_frombuffer(
|
1458
1457
|
git_index *index, const git_index_entry *source_entry,
|
1459
1458
|
const void *buffer, size_t len)
|
1460
1459
|
{
|
@@ -1474,22 +1473,17 @@ int git_index_add_from_buffer(
|
|
1474
1473
|
return -1;
|
1475
1474
|
}
|
1476
1475
|
|
1477
|
-
if (len > UINT32_MAX) {
|
1478
|
-
git_error_set(GIT_ERROR_INDEX, "buffer is too large");
|
1479
|
-
return -1;
|
1480
|
-
}
|
1481
|
-
|
1482
1476
|
if (index_entry_dup(&entry, index, source_entry) < 0)
|
1483
1477
|
return -1;
|
1484
1478
|
|
1485
|
-
error =
|
1479
|
+
error = git_blob_create_frombuffer(&id, INDEX_OWNER(index), buffer, len);
|
1486
1480
|
if (error < 0) {
|
1487
1481
|
index_entry_free(entry);
|
1488
1482
|
return error;
|
1489
1483
|
}
|
1490
1484
|
|
1491
1485
|
git_oid_cpy(&entry->id, &id);
|
1492
|
-
entry->file_size =
|
1486
|
+
entry->file_size = len;
|
1493
1487
|
|
1494
1488
|
if ((error = index_insert(index, &entry, 1, true, true, true)) < 0)
|
1495
1489
|
return error;
|
@@ -1624,9 +1618,8 @@ int git_index__fill(git_index *index, const git_vector *source_entries)
|
|
1624
1618
|
if (!source_entries->length)
|
1625
1619
|
return 0;
|
1626
1620
|
|
1627
|
-
|
1628
|
-
|
1629
|
-
return -1;
|
1621
|
+
git_vector_size_hint(&index->entries, source_entries->length);
|
1622
|
+
git_idxmap_resize(index->entries_map, (size_t)(source_entries->length * 1.3));
|
1630
1623
|
|
1631
1624
|
git_vector_foreach(source_entries, i, source_entry) {
|
1632
1625
|
git_index_entry *entry = NULL;
|
@@ -1641,7 +1634,7 @@ int git_index__fill(git_index *index, const git_vector *source_entries)
|
|
1641
1634
|
if ((ret = git_vector_insert(&index->entries, entry)) < 0)
|
1642
1635
|
break;
|
1643
1636
|
|
1644
|
-
INSERT_IN_MAP(index, entry, ret);
|
1637
|
+
INSERT_IN_MAP(index, entry, &ret);
|
1645
1638
|
if (ret < 0)
|
1646
1639
|
break;
|
1647
1640
|
|
@@ -2614,12 +2607,10 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
|
|
2614
2607
|
|
2615
2608
|
assert(!index->entries.length);
|
2616
2609
|
|
2617
|
-
if (index->ignore_case
|
2618
|
-
|
2619
|
-
|
2620
|
-
|
2621
|
-
else if ((error = git_idxmap_resize(index->entries_map, header.entry_count)) < 0)
|
2622
|
-
return error;
|
2610
|
+
if (index->ignore_case)
|
2611
|
+
git_idxmap_icase_resize((git_idxmap_icase *) index->entries_map, header.entry_count);
|
2612
|
+
else
|
2613
|
+
git_idxmap_resize(index->entries_map, header.entry_count);
|
2623
2614
|
|
2624
2615
|
/* Parse all the entries */
|
2625
2616
|
for (i = 0; i < header.entry_count && buffer_size > INDEX_FOOTER_SIZE; ++i) {
|
@@ -2636,7 +2627,7 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
|
|
2636
2627
|
goto done;
|
2637
2628
|
}
|
2638
2629
|
|
2639
|
-
INSERT_IN_MAP(index, entry, error);
|
2630
|
+
INSERT_IN_MAP(index, entry, &error);
|
2640
2631
|
|
2641
2632
|
if (error < 0) {
|
2642
2633
|
index_entry_free(entry);
|
@@ -3115,7 +3106,7 @@ int git_index_read_tree(git_index *index, const git_tree *tree)
|
|
3115
3106
|
size_t i;
|
3116
3107
|
git_index_entry *e;
|
3117
3108
|
|
3118
|
-
if (
|
3109
|
+
if (git_idxmap_alloc(&entries_map) < 0)
|
3119
3110
|
return -1;
|
3120
3111
|
|
3121
3112
|
git_vector_set_cmp(&entries, index->entries._cmp); /* match sort */
|
@@ -3133,15 +3124,13 @@ int git_index_read_tree(git_index *index, const git_tree *tree)
|
|
3133
3124
|
if ((error = git_tree_walk(tree, GIT_TREEWALK_POST, read_tree_cb, &data)) < 0)
|
3134
3125
|
goto cleanup;
|
3135
3126
|
|
3136
|
-
if (index->ignore_case
|
3137
|
-
|
3138
|
-
|
3139
|
-
|
3140
|
-
else if ((error = git_idxmap_resize(entries_map, entries.length)) < 0)
|
3141
|
-
goto cleanup;
|
3127
|
+
if (index->ignore_case)
|
3128
|
+
git_idxmap_icase_resize((git_idxmap_icase *) entries_map, entries.length);
|
3129
|
+
else
|
3130
|
+
git_idxmap_resize(entries_map, entries.length);
|
3142
3131
|
|
3143
3132
|
git_vector_foreach(&entries, i, e) {
|
3144
|
-
INSERT_IN_MAP_EX(index, entries_map, e, error);
|
3133
|
+
INSERT_IN_MAP_EX(index, entries_map, e, &error);
|
3145
3134
|
|
3146
3135
|
if (error < 0) {
|
3147
3136
|
git_error_set(GIT_ERROR_INDEX, "failed to insert entry into map");
|
@@ -3191,17 +3180,14 @@ static int git_index_read_iterator(
|
|
3191
3180
|
assert((new_iterator->flags & GIT_ITERATOR_DONT_IGNORE_CASE));
|
3192
3181
|
|
3193
3182
|
if ((error = git_vector_init(&new_entries, new_length_hint, index->entries._cmp)) < 0 ||
|
3194
|
-
|
3195
|
-
|
3183
|
+
(error = git_vector_init(&remove_entries, index->entries.length, NULL)) < 0 ||
|
3184
|
+
(error = git_idxmap_alloc(&new_entries_map)) < 0)
|
3196
3185
|
goto done;
|
3197
3186
|
|
3198
|
-
if (index->ignore_case && new_length_hint
|
3199
|
-
|
3200
|
-
|
3201
|
-
|
3202
|
-
else if (new_length_hint &&
|
3203
|
-
(error = git_idxmap_resize(new_entries_map, new_length_hint)) < 0)
|
3204
|
-
goto done;
|
3187
|
+
if (index->ignore_case && new_length_hint)
|
3188
|
+
git_idxmap_icase_resize((git_idxmap_icase *) new_entries_map, new_length_hint);
|
3189
|
+
else if (new_length_hint)
|
3190
|
+
git_idxmap_resize(new_entries_map, new_length_hint);
|
3205
3191
|
|
3206
3192
|
opts.flags = GIT_ITERATOR_DONT_IGNORE_CASE |
|
3207
3193
|
GIT_ITERATOR_INCLUDE_CONFLICTS;
|
@@ -3265,7 +3251,7 @@ static int git_index_read_iterator(
|
|
3265
3251
|
|
3266
3252
|
if (add_entry) {
|
3267
3253
|
if ((error = git_vector_insert(&new_entries, add_entry)) == 0)
|
3268
|
-
INSERT_IN_MAP_EX(index, new_entries_map, add_entry, error);
|
3254
|
+
INSERT_IN_MAP_EX(index, new_entries_map, add_entry, &error);
|
3269
3255
|
}
|
3270
3256
|
|
3271
3257
|
if (remove_entry && error >= 0)
|
@@ -3714,12 +3700,3 @@ void git_indexwriter_cleanup(git_indexwriter *writer)
|
|
3714
3700
|
git_index_free(writer->index);
|
3715
3701
|
writer->index = NULL;
|
3716
3702
|
}
|
3717
|
-
|
3718
|
-
/* Deprecated functions */
|
3719
|
-
|
3720
|
-
int git_index_add_frombuffer(
|
3721
|
-
git_index *index, const git_index_entry *source_entry,
|
3722
|
-
const void *buffer, size_t len)
|
3723
|
-
{
|
3724
|
-
return git_index_add_from_buffer(index, source_entry, buffer, len);
|
3725
|
-
}
|
data/vendor/libgit2/src/index.h
CHANGED
@@ -19,7 +19,6 @@
|
|
19
19
|
#include "pack.h"
|
20
20
|
#include "filebuf.h"
|
21
21
|
#include "oid.h"
|
22
|
-
#include "oidarray.h"
|
23
22
|
#include "oidmap.h"
|
24
23
|
#include "zstream.h"
|
25
24
|
#include "object.h"
|
@@ -47,8 +46,8 @@ struct git_indexer {
|
|
47
46
|
struct git_pack_header hdr;
|
48
47
|
struct git_pack_file *pack;
|
49
48
|
unsigned int mode;
|
50
|
-
|
51
|
-
|
49
|
+
git_off_t off;
|
50
|
+
git_off_t entry_start;
|
52
51
|
git_object_t entry_type;
|
53
52
|
git_buf entry_data;
|
54
53
|
git_packfile_stream stream;
|
@@ -58,7 +57,7 @@ struct git_indexer {
|
|
58
57
|
unsigned int fanout[256];
|
59
58
|
git_hash_ctx hash_ctx;
|
60
59
|
git_oid hash;
|
61
|
-
|
60
|
+
git_transfer_progress_cb progress_cb;
|
62
61
|
void *progress_payload;
|
63
62
|
char objbuf[8*1024];
|
64
63
|
|
@@ -75,7 +74,7 @@ struct git_indexer {
|
|
75
74
|
};
|
76
75
|
|
77
76
|
struct delta_info {
|
78
|
-
|
77
|
+
git_off_t delta_off;
|
79
78
|
};
|
80
79
|
|
81
80
|
const git_oid *git_indexer_hash(const git_indexer *idx)
|
@@ -116,18 +115,13 @@ static int objects_cmp(const void *a, const void *b)
|
|
116
115
|
return git_oid__cmp(&entrya->oid, &entryb->oid);
|
117
116
|
}
|
118
117
|
|
119
|
-
int
|
118
|
+
int git_indexer_init_options(git_indexer_options *opts, unsigned int version)
|
120
119
|
{
|
121
120
|
GIT_INIT_STRUCTURE_FROM_TEMPLATE(
|
122
121
|
opts, version, git_indexer_options, GIT_INDEXER_OPTIONS_INIT);
|
123
122
|
return 0;
|
124
123
|
}
|
125
124
|
|
126
|
-
int git_indexer_init_options(git_indexer_options *opts, unsigned int version)
|
127
|
-
{
|
128
|
-
return git_indexer_options_init(opts, version);
|
129
|
-
}
|
130
|
-
|
131
125
|
int git_indexer_new(
|
132
126
|
git_indexer **out,
|
133
127
|
const char *prefix,
|
@@ -153,9 +147,8 @@ int git_indexer_new(
|
|
153
147
|
git_hash_ctx_init(&idx->hash_ctx);
|
154
148
|
git_hash_ctx_init(&idx->trailer);
|
155
149
|
git_buf_init(&idx->entry_data, 0);
|
156
|
-
|
157
|
-
|
158
|
-
goto cleanup;
|
150
|
+
idx->expected_oids = git_oidmap_alloc();
|
151
|
+
GIT_ERROR_CHECK_ALLOC(idx->expected_oids);
|
159
152
|
|
160
153
|
idx->do_verify = opts.verify;
|
161
154
|
|
@@ -220,7 +213,7 @@ static int store_delta(git_indexer *idx)
|
|
220
213
|
return 0;
|
221
214
|
}
|
222
215
|
|
223
|
-
static int hash_header(git_hash_ctx *ctx,
|
216
|
+
static int hash_header(git_hash_ctx *ctx, git_off_t len, git_object_t type)
|
224
217
|
{
|
225
218
|
char buffer[64];
|
226
219
|
size_t hdrlen;
|
@@ -265,7 +258,7 @@ static int advance_delta_offset(git_indexer *idx, git_object_t type)
|
|
265
258
|
if (type == GIT_OBJECT_REF_DELTA) {
|
266
259
|
idx->off += GIT_OID_RAWSZ;
|
267
260
|
} else {
|
268
|
-
|
261
|
+
git_off_t base_off = get_delta_base(idx->pack, &w, &idx->off, type, idx->entry_start);
|
269
262
|
git_mwindow_close(&w);
|
270
263
|
if (base_off < 0)
|
271
264
|
return (int)base_off;
|
@@ -291,7 +284,7 @@ static int read_object_stream(git_indexer *idx, git_packfile_stream *stream)
|
|
291
284
|
return 0;
|
292
285
|
}
|
293
286
|
|
294
|
-
static int crc_object(uint32_t *crc_out, git_mwindow_file *mwf,
|
287
|
+
static int crc_object(uint32_t *crc_out, git_mwindow_file *mwf, git_off_t start, git_off_t size)
|
295
288
|
{
|
296
289
|
void *ptr;
|
297
290
|
uint32_t crc;
|
@@ -315,8 +308,10 @@ static int crc_object(uint32_t *crc_out, git_mwindow_file *mwf, off64_t start, o
|
|
315
308
|
return 0;
|
316
309
|
}
|
317
310
|
|
318
|
-
static
|
311
|
+
static void add_expected_oid(git_indexer *idx, const git_oid *oid)
|
319
312
|
{
|
313
|
+
int ret;
|
314
|
+
|
320
315
|
/*
|
321
316
|
* If we know about that object because it is stored in our ODB or
|
322
317
|
* because we have already processed it as part of our pack file, we do
|
@@ -326,18 +321,15 @@ static int add_expected_oid(git_indexer *idx, const git_oid *oid)
|
|
326
321
|
!git_oidmap_exists(idx->pack->idx_cache, oid) &&
|
327
322
|
!git_oidmap_exists(idx->expected_oids, oid)) {
|
328
323
|
git_oid *dup = git__malloc(sizeof(*oid));
|
329
|
-
GIT_ERROR_CHECK_ALLOC(dup);
|
330
324
|
git_oid_cpy(dup, oid);
|
331
|
-
|
325
|
+
git_oidmap_put(idx->expected_oids, dup, &ret);
|
332
326
|
}
|
333
|
-
|
334
|
-
return 0;
|
335
327
|
}
|
336
328
|
|
337
329
|
static int check_object_connectivity(git_indexer *idx, const git_rawobj *obj)
|
338
330
|
{
|
339
331
|
git_object *object;
|
340
|
-
|
332
|
+
size_t keyidx;
|
341
333
|
int error;
|
342
334
|
|
343
335
|
if (obj->type != GIT_OBJECT_BLOB &&
|
@@ -349,9 +341,11 @@ static int check_object_connectivity(git_indexer *idx, const git_rawobj *obj)
|
|
349
341
|
if ((error = git_object__from_raw(&object, obj->data, obj->len, obj->type)) < 0)
|
350
342
|
goto out;
|
351
343
|
|
352
|
-
|
353
|
-
|
354
|
-
|
344
|
+
keyidx = git_oidmap_lookup_index(idx->expected_oids, &object->cached.oid);
|
345
|
+
if (git_oidmap_valid_index(idx->expected_oids, keyidx)) {
|
346
|
+
const git_oid *key = git_oidmap_key(idx->expected_oids, keyidx);
|
347
|
+
git__free((git_oid *) key);
|
348
|
+
git_oidmap_delete_at(idx->expected_oids, keyidx);
|
355
349
|
}
|
356
350
|
|
357
351
|
/*
|
@@ -369,8 +363,7 @@ static int check_object_connectivity(git_indexer *idx, const git_rawobj *obj)
|
|
369
363
|
size_t i;
|
370
364
|
|
371
365
|
git_array_foreach(tree->entries, i, entry)
|
372
|
-
|
373
|
-
goto out;
|
366
|
+
add_expected_oid(idx, entry->oid);
|
374
367
|
|
375
368
|
break;
|
376
369
|
}
|
@@ -381,11 +374,9 @@ static int check_object_connectivity(git_indexer *idx, const git_rawobj *obj)
|
|
381
374
|
size_t i;
|
382
375
|
|
383
376
|
git_array_foreach(commit->parent_ids, i, parent_oid)
|
384
|
-
|
385
|
-
goto out;
|
377
|
+
add_expected_oid(idx, parent_oid);
|
386
378
|
|
387
|
-
|
388
|
-
goto out;
|
379
|
+
add_expected_oid(idx, &commit->tree_id);
|
389
380
|
|
390
381
|
break;
|
391
382
|
}
|
@@ -393,8 +384,7 @@ static int check_object_connectivity(git_indexer *idx, const git_rawobj *obj)
|
|
393
384
|
{
|
394
385
|
git_tag *tag = (git_tag *) object;
|
395
386
|
|
396
|
-
|
397
|
-
goto out;
|
387
|
+
add_expected_oid(idx, &tag->target);
|
398
388
|
|
399
389
|
break;
|
400
390
|
}
|
@@ -412,11 +402,12 @@ out:
|
|
412
402
|
static int store_object(git_indexer *idx)
|
413
403
|
{
|
414
404
|
int i, error;
|
405
|
+
size_t k;
|
415
406
|
git_oid oid;
|
416
407
|
struct entry *entry;
|
417
|
-
|
408
|
+
git_off_t entry_size;
|
418
409
|
struct git_pack_entry *pentry;
|
419
|
-
|
410
|
+
git_off_t entry_start = idx->entry_start;
|
420
411
|
|
421
412
|
entry = git__calloc(1, sizeof(*entry));
|
422
413
|
GIT_ERROR_CHECK_ALLOC(entry);
|
@@ -447,18 +438,22 @@ static int store_object(git_indexer *idx)
|
|
447
438
|
git_oid_cpy(&pentry->sha1, &oid);
|
448
439
|
pentry->offset = entry_start;
|
449
440
|
|
450
|
-
|
451
|
-
|
441
|
+
k = git_oidmap_put(idx->pack->idx_cache, &pentry->sha1, &error);
|
442
|
+
if (error == -1) {
|
452
443
|
git__free(pentry);
|
444
|
+
git_error_set_oom();
|
453
445
|
goto on_error;
|
454
446
|
}
|
455
447
|
|
456
|
-
if (
|
448
|
+
if (error == 0) {
|
449
|
+
git_error_set(GIT_ERROR_INDEXER, "duplicate object %s found in pack", git_oid_tostr_s(&pentry->sha1));
|
457
450
|
git__free(pentry);
|
458
|
-
git_error_set_oom();
|
459
451
|
goto on_error;
|
460
452
|
}
|
461
453
|
|
454
|
+
|
455
|
+
git_oidmap_set_value_at(idx->pack->idx_cache, k, pentry);
|
456
|
+
|
462
457
|
git_oid_cpy(&entry->oid, &oid);
|
463
458
|
|
464
459
|
if (crc_object(&entry->crc, &idx->pack->mwf, entry_start, entry_size) < 0)
|
@@ -485,9 +480,10 @@ GIT_INLINE(bool) has_entry(git_indexer *idx, git_oid *id)
|
|
485
480
|
return git_oidmap_exists(idx->pack->idx_cache, id);
|
486
481
|
}
|
487
482
|
|
488
|
-
static int save_entry(git_indexer *idx, struct entry *entry, struct git_pack_entry *pentry,
|
483
|
+
static int save_entry(git_indexer *idx, struct entry *entry, struct git_pack_entry *pentry, git_off_t entry_start)
|
489
484
|
{
|
490
|
-
int i;
|
485
|
+
int i, error;
|
486
|
+
size_t k;
|
491
487
|
|
492
488
|
if (entry_start > UINT31_MAX) {
|
493
489
|
entry->offset = UINT32_MAX;
|
@@ -497,13 +493,15 @@ static int save_entry(git_indexer *idx, struct entry *entry, struct git_pack_ent
|
|
497
493
|
}
|
498
494
|
|
499
495
|
pentry->offset = entry_start;
|
496
|
+
k = git_oidmap_put(idx->pack->idx_cache, &pentry->sha1, &error);
|
500
497
|
|
501
|
-
if (
|
502
|
-
git_oidmap_set(idx->pack->idx_cache, &pentry->sha1, pentry) < 0) {
|
498
|
+
if (error <= 0) {
|
503
499
|
git_error_set(GIT_ERROR_INDEXER, "cannot insert object into pack");
|
504
500
|
return -1;
|
505
501
|
}
|
506
502
|
|
503
|
+
git_oidmap_set_value_at(idx->pack->idx_cache, k, pentry);
|
504
|
+
|
507
505
|
/* Add the object to the list */
|
508
506
|
if (git_vector_insert(&idx->objects, entry) < 0)
|
509
507
|
return -1;
|
@@ -515,7 +513,7 @@ static int save_entry(git_indexer *idx, struct entry *entry, struct git_pack_ent
|
|
515
513
|
return 0;
|
516
514
|
}
|
517
515
|
|
518
|
-
static int hash_and_save(git_indexer *idx, git_rawobj *obj,
|
516
|
+
static int hash_and_save(git_indexer *idx, git_rawobj *obj, git_off_t entry_start)
|
519
517
|
{
|
520
518
|
git_oid oid;
|
521
519
|
size_t entry_size;
|
@@ -550,7 +548,7 @@ on_error:
|
|
550
548
|
return -1;
|
551
549
|
}
|
552
550
|
|
553
|
-
static int do_progress_callback(git_indexer *idx,
|
551
|
+
static int do_progress_callback(git_indexer *idx, git_transfer_progress *stats)
|
554
552
|
{
|
555
553
|
if (idx->progress_cb)
|
556
554
|
return git_error_set_after_callback_function(
|
@@ -596,12 +594,12 @@ static void hash_partially(git_indexer *idx, const uint8_t *data, size_t size)
|
|
596
594
|
idx->inbuf_len += size - to_expell;
|
597
595
|
}
|
598
596
|
|
599
|
-
static int write_at(git_indexer *idx, const void *data,
|
597
|
+
static int write_at(git_indexer *idx, const void *data, git_off_t offset, size_t size)
|
600
598
|
{
|
601
599
|
git_file fd = idx->pack->mwf.fd;
|
602
600
|
size_t mmap_alignment;
|
603
601
|
size_t page_offset;
|
604
|
-
|
602
|
+
git_off_t page_start;
|
605
603
|
unsigned char *map_data;
|
606
604
|
git_map map;
|
607
605
|
int error;
|
@@ -627,11 +625,11 @@ static int write_at(git_indexer *idx, const void *data, off64_t offset, size_t s
|
|
627
625
|
|
628
626
|
static int append_to_pack(git_indexer *idx, const void *data, size_t size)
|
629
627
|
{
|
630
|
-
|
628
|
+
git_off_t new_size;
|
631
629
|
size_t mmap_alignment;
|
632
630
|
size_t page_offset;
|
633
|
-
|
634
|
-
|
631
|
+
git_off_t page_start;
|
632
|
+
git_off_t current_size = idx->pack->mwf.size;
|
635
633
|
int fd = idx->pack->mwf.fd;
|
636
634
|
int error;
|
637
635
|
|
@@ -658,10 +656,10 @@ static int append_to_pack(git_indexer *idx, const void *data, size_t size)
|
|
658
656
|
return write_at(idx, data, idx->pack->mwf.size, size);
|
659
657
|
}
|
660
658
|
|
661
|
-
static int read_stream_object(git_indexer *idx,
|
659
|
+
static int read_stream_object(git_indexer *idx, git_transfer_progress *stats)
|
662
660
|
{
|
663
661
|
git_packfile_stream *stream = &idx->stream;
|
664
|
-
|
662
|
+
git_off_t entry_start = idx->off;
|
665
663
|
size_t entry_size;
|
666
664
|
git_object_t type;
|
667
665
|
git_mwindow *w = NULL;
|
@@ -747,7 +745,7 @@ static int read_stream_object(git_indexer *idx, git_indexer_progress *stats)
|
|
747
745
|
return 0;
|
748
746
|
}
|
749
747
|
|
750
|
-
int git_indexer_append(git_indexer *idx, const void *data, size_t size,
|
748
|
+
int git_indexer_append(git_indexer *idx, const void *data, size_t size, git_transfer_progress *stats)
|
751
749
|
{
|
752
750
|
int error = -1;
|
753
751
|
struct git_pack_header *hdr = &idx->hdr;
|
@@ -783,8 +781,8 @@ int git_indexer_append(git_indexer *idx, const void *data, size_t size, git_inde
|
|
783
781
|
return -1;
|
784
782
|
}
|
785
783
|
|
786
|
-
|
787
|
-
|
784
|
+
idx->pack->idx_cache = git_oidmap_alloc();
|
785
|
+
GIT_ERROR_CHECK_ALLOC(idx->pack->idx_cache);
|
788
786
|
|
789
787
|
idx->pack->has_cache = 1;
|
790
788
|
if (git_vector_init(&idx->objects, total_objects, objects_cmp) < 0)
|
@@ -865,7 +863,7 @@ static int inject_object(git_indexer *idx, git_oid *id)
|
|
865
863
|
git_oid foo = {{0}};
|
866
864
|
unsigned char hdr[64];
|
867
865
|
git_buf buf = GIT_BUF_INIT;
|
868
|
-
|
866
|
+
git_off_t entry_start;
|
869
867
|
const void *data;
|
870
868
|
size_t len, hdr_len;
|
871
869
|
int error;
|
@@ -931,7 +929,7 @@ cleanup:
|
|
931
929
|
return error;
|
932
930
|
}
|
933
931
|
|
934
|
-
static int fix_thin_pack(git_indexer *idx,
|
932
|
+
static int fix_thin_pack(git_indexer *idx, git_transfer_progress *stats)
|
935
933
|
{
|
936
934
|
int error, found_ref_delta = 0;
|
937
935
|
unsigned int i;
|
@@ -939,7 +937,7 @@ static int fix_thin_pack(git_indexer *idx, git_indexer_progress *stats)
|
|
939
937
|
size_t size;
|
940
938
|
git_object_t type;
|
941
939
|
git_mwindow *w = NULL;
|
942
|
-
|
940
|
+
git_off_t curpos = 0;
|
943
941
|
unsigned char *base_info;
|
944
942
|
unsigned int left = 0;
|
945
943
|
git_oid base;
|
@@ -993,7 +991,7 @@ static int fix_thin_pack(git_indexer *idx, git_indexer_progress *stats)
|
|
993
991
|
return 0;
|
994
992
|
}
|
995
993
|
|
996
|
-
static int resolve_deltas(git_indexer *idx,
|
994
|
+
static int resolve_deltas(git_indexer *idx, git_transfer_progress *stats)
|
997
995
|
{
|
998
996
|
unsigned int i;
|
999
997
|
int error;
|
@@ -1050,11 +1048,11 @@ static int resolve_deltas(git_indexer *idx, git_indexer_progress *stats)
|
|
1050
1048
|
return 0;
|
1051
1049
|
}
|
1052
1050
|
|
1053
|
-
static int update_header_and_rehash(git_indexer *idx,
|
1051
|
+
static int update_header_and_rehash(git_indexer *idx, git_transfer_progress *stats)
|
1054
1052
|
{
|
1055
1053
|
void *ptr;
|
1056
1054
|
size_t chunk = 1024*1024;
|
1057
|
-
|
1055
|
+
git_off_t hashed = 0;
|
1058
1056
|
git_mwindow *w = NULL;
|
1059
1057
|
git_mwindow_file *mwf;
|
1060
1058
|
unsigned int left;
|
@@ -1091,7 +1089,7 @@ static int update_header_and_rehash(git_indexer *idx, git_indexer_progress *stat
|
|
1091
1089
|
return 0;
|
1092
1090
|
}
|
1093
1091
|
|
1094
|
-
int git_indexer_commit(git_indexer *idx,
|
1092
|
+
int git_indexer_commit(git_indexer *idx, git_transfer_progress *stats)
|
1095
1093
|
{
|
1096
1094
|
git_mwindow *w = NULL;
|
1097
1095
|
unsigned int i, long_offsets = 0, left;
|
@@ -1294,9 +1292,7 @@ on_error:
|
|
1294
1292
|
|
1295
1293
|
void git_indexer_free(git_indexer *idx)
|
1296
1294
|
{
|
1297
|
-
|
1298
|
-
git_oid *value;
|
1299
|
-
size_t iter;
|
1295
|
+
size_t pos;
|
1300
1296
|
|
1301
1297
|
if (idx == NULL)
|
1302
1298
|
return;
|
@@ -1325,9 +1321,14 @@ void git_indexer_free(git_indexer *idx)
|
|
1325
1321
|
git_mutex_unlock(&git__mwindow_mutex);
|
1326
1322
|
}
|
1327
1323
|
|
1328
|
-
|
1329
|
-
|
1330
|
-
|
1324
|
+
for (pos = git_oidmap_begin(idx->expected_oids);
|
1325
|
+
pos != git_oidmap_end(idx->expected_oids); pos++)
|
1326
|
+
{
|
1327
|
+
if (git_oidmap_has_data(idx->expected_oids, pos)) {
|
1328
|
+
git__free((git_oid *) git_oidmap_key(idx->expected_oids, pos));
|
1329
|
+
git_oidmap_delete_at(idx->expected_oids, pos);
|
1330
|
+
}
|
1331
|
+
}
|
1331
1332
|
|
1332
1333
|
git_hash_ctx_cleanup(&idx->trailer);
|
1333
1334
|
git_hash_ctx_cleanup(&idx->hash_ctx);
|