rugged 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE +1 -0
- data/README.md +3 -3
- data/ext/rugged/rugged.c +7 -4
- data/ext/rugged/rugged_commit.c +1 -1
- data/ext/rugged/rugged_config.c +1 -1
- data/ext/rugged/rugged_object.c +1 -1
- data/ext/rugged/rugged_remote.c +32 -2
- data/ext/rugged/rugged_repo.c +13 -3
- data/lib/rugged/commit.rb +17 -4
- data/lib/rugged/repository.rb +7 -8
- data/lib/rugged/submodule_collection.rb +4 -4
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +41 -74
- data/vendor/libgit2/COPYING +109 -1
- data/vendor/libgit2/cmake/{Modules/AddCFlagIfSupported.cmake → AddCFlagIfSupported.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/EnableWarnings.cmake → EnableWarnings.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindCoreFoundation.cmake → FindCoreFoundation.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindGSSAPI.cmake → FindGSSAPI.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindGSSFramework.cmake → FindGSSFramework.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindHTTP_Parser.cmake → FindHTTP_Parser.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindIconv.cmake → FindIconv.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindPCRE.cmake → FindPCRE.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindPCRE2.cmake → FindPCRE2.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindPkgLibraries.cmake → FindPkgLibraries.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindSecurity.cmake → FindSecurity.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindStatNsec.cmake → FindStatNsec.cmake} +0 -0
- data/vendor/libgit2/cmake/Findfutimens.cmake +14 -0
- data/vendor/libgit2/cmake/{Modules/FindmbedTLS.cmake → FindmbedTLS.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/IdeSplitSources.cmake → IdeSplitSources.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/PkgBuildConfig.cmake → PkgBuildConfig.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/SanitizeBool.cmake → SanitizeBool.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/SelectGSSAPI.cmake → SelectGSSAPI.cmake} +18 -26
- data/vendor/libgit2/cmake/{Modules/SelectHTTPSBackend.cmake → SelectHTTPSBackend.cmake} +29 -32
- data/vendor/libgit2/cmake/{Modules/SelectHashes.cmake → SelectHashes.cmake} +21 -28
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +101 -0
- data/vendor/libgit2/deps/http-parser/CMakeLists.txt +4 -3
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +24 -10
- data/vendor/libgit2/deps/ntlmclient/compat.h +0 -27
- data/vendor/libgit2/deps/ntlmclient/crypt.h +14 -9
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +20 -20
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +3 -3
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +37 -36
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +4 -3
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +178 -51
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +74 -5
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +164 -135
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +13 -9
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +16 -3
- data/vendor/libgit2/deps/ntlmclient/unicode.h +10 -4
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +16 -27
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.h +20 -0
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +28 -52
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.h +22 -0
- data/vendor/libgit2/deps/ntlmclient/util.c +15 -1
- data/vendor/libgit2/deps/ntlmclient/util.h +2 -1
- data/vendor/libgit2/deps/pcre/LICENCE +93 -0
- data/vendor/libgit2/deps/pcre/pcre.h +2 -2
- data/vendor/libgit2/deps/pcre/pcre_compile.c +29 -17
- data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +4 -4
- data/vendor/libgit2/deps/pcre/pcreposix.c +2 -3
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -5
- data/vendor/libgit2/deps/zlib/deflate.c +1 -0
- data/vendor/libgit2/include/git2/annotated_commit.h +1 -1
- data/vendor/libgit2/include/git2/apply.h +2 -0
- data/vendor/libgit2/include/git2/attr.h +89 -0
- data/vendor/libgit2/include/git2/blame.h +95 -42
- data/vendor/libgit2/include/git2/blob.h +31 -3
- data/vendor/libgit2/include/git2/branch.h +25 -0
- data/vendor/libgit2/include/git2/cert.h +42 -5
- data/vendor/libgit2/include/git2/checkout.h +28 -12
- data/vendor/libgit2/include/git2/commit.h +35 -19
- data/vendor/libgit2/include/git2/common.h +33 -6
- data/vendor/libgit2/include/git2/config.h +1 -1
- data/vendor/libgit2/include/git2/deprecated.h +248 -8
- data/vendor/libgit2/include/git2/diff.h +35 -20
- data/vendor/libgit2/include/git2/errors.h +8 -7
- data/vendor/libgit2/include/git2/filter.h +57 -17
- data/vendor/libgit2/include/git2/graph.h +20 -2
- data/vendor/libgit2/include/git2/index.h +4 -5
- data/vendor/libgit2/include/git2/indexer.h +2 -1
- data/vendor/libgit2/include/git2/odb.h +44 -20
- data/vendor/libgit2/include/git2/pack.h +1 -1
- data/vendor/libgit2/include/git2/patch.h +8 -0
- data/vendor/libgit2/include/git2/rebase.h +25 -1
- data/vendor/libgit2/include/git2/refs.h +9 -5
- data/vendor/libgit2/include/git2/remote.h +59 -6
- data/vendor/libgit2/include/git2/repository.h +95 -52
- data/vendor/libgit2/include/git2/revparse.h +5 -5
- data/vendor/libgit2/include/git2/status.h +115 -59
- data/vendor/libgit2/include/git2/strarray.h +6 -10
- data/vendor/libgit2/include/git2/submodule.h +9 -0
- data/vendor/libgit2/include/git2/sys/commit_graph.h +174 -0
- data/vendor/libgit2/include/git2/sys/filter.h +49 -28
- data/vendor/libgit2/include/git2/sys/midx.h +74 -0
- data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -0
- data/vendor/libgit2/include/git2/sys/transport.h +1 -0
- data/vendor/libgit2/include/git2/tag.h +12 -0
- data/vendor/libgit2/include/git2/transport.h +1 -1
- data/vendor/libgit2/include/git2/tree.h +2 -14
- data/vendor/libgit2/include/git2/types.h +9 -0
- data/vendor/libgit2/include/git2/version.h +3 -3
- data/vendor/libgit2/include/git2/worktree.h +1 -0
- data/vendor/libgit2/src/CMakeLists.txt +77 -44
- data/vendor/libgit2/src/alloc.c +21 -8
- data/vendor/libgit2/src/allocators/failalloc.c +92 -0
- data/vendor/libgit2/src/allocators/failalloc.h +23 -0
- data/vendor/libgit2/src/allocators/stdalloc.c +41 -10
- data/vendor/libgit2/src/allocators/win32_leakcheck.c +118 -0
- data/vendor/libgit2/src/allocators/{win32_crtdbg.h → win32_leakcheck.h} +3 -3
- data/vendor/libgit2/src/annotated_commit.c +21 -9
- data/vendor/libgit2/src/apply.c +21 -8
- data/vendor/libgit2/src/array.h +11 -11
- data/vendor/libgit2/src/assert_safe.h +58 -0
- data/vendor/libgit2/src/attr.c +181 -74
- data/vendor/libgit2/src/attr_file.c +92 -42
- data/vendor/libgit2/src/attr_file.h +32 -11
- data/vendor/libgit2/src/attrcache.c +44 -40
- data/vendor/libgit2/src/attrcache.h +4 -5
- data/vendor/libgit2/src/blame.c +28 -15
- data/vendor/libgit2/src/blame_git.c +6 -3
- data/vendor/libgit2/src/blob.c +46 -24
- data/vendor/libgit2/src/branch.c +87 -37
- data/vendor/libgit2/src/buffer.c +339 -27
- data/vendor/libgit2/src/buffer.h +153 -2
- data/vendor/libgit2/src/cache.c +3 -24
- data/vendor/libgit2/src/cache.h +7 -7
- data/vendor/libgit2/src/cc-compat.h +10 -2
- data/vendor/libgit2/src/checkout.c +97 -98
- data/vendor/libgit2/src/cherrypick.c +8 -2
- data/vendor/libgit2/src/clone.c +104 -29
- data/vendor/libgit2/src/commit.c +41 -28
- data/vendor/libgit2/src/commit_graph.c +1209 -0
- data/vendor/libgit2/src/commit_graph.h +162 -0
- data/vendor/libgit2/src/commit_list.c +46 -0
- data/vendor/libgit2/src/commit_list.h +2 -0
- data/vendor/libgit2/src/common.h +26 -2
- data/vendor/libgit2/src/config.c +40 -22
- data/vendor/libgit2/src/config_cache.c +9 -4
- data/vendor/libgit2/src/config_entries.c +35 -27
- data/vendor/libgit2/src/config_file.c +25 -8
- data/vendor/libgit2/src/config_parse.c +5 -7
- data/vendor/libgit2/src/config_snapshot.c +2 -1
- data/vendor/libgit2/src/crlf.c +16 -6
- data/vendor/libgit2/src/date.c +4 -3
- data/vendor/libgit2/src/delta.c +1 -1
- data/vendor/libgit2/src/describe.c +11 -4
- data/vendor/libgit2/src/diff.c +23 -19
- data/vendor/libgit2/src/diff_driver.c +21 -17
- data/vendor/libgit2/src/diff_file.c +5 -7
- data/vendor/libgit2/src/diff_generate.c +56 -28
- data/vendor/libgit2/src/diff_parse.c +2 -3
- data/vendor/libgit2/src/diff_print.c +81 -65
- data/vendor/libgit2/src/diff_stats.c +19 -16
- data/vendor/libgit2/src/diff_tform.c +13 -13
- data/vendor/libgit2/src/diff_xdiff.c +4 -2
- data/vendor/libgit2/src/diff_xdiff.h +1 -1
- data/vendor/libgit2/src/errors.c +26 -19
- data/vendor/libgit2/src/features.h.in +5 -1
- data/vendor/libgit2/src/fetch.c +7 -2
- data/vendor/libgit2/src/fetchhead.c +8 -4
- data/vendor/libgit2/src/filebuf.c +9 -7
- data/vendor/libgit2/src/filter.c +209 -113
- data/vendor/libgit2/src/filter.h +24 -5
- data/vendor/libgit2/src/futils.c +8 -8
- data/vendor/libgit2/src/futils.h +4 -4
- data/vendor/libgit2/src/graph.c +64 -9
- data/vendor/libgit2/src/hash/sha1/collisiondetect.c +3 -3
- data/vendor/libgit2/src/hash/sha1/common_crypto.c +3 -3
- data/vendor/libgit2/src/hash/sha1/generic.h +1 -1
- data/vendor/libgit2/src/hash/sha1/mbedtls.c +12 -12
- data/vendor/libgit2/src/hash/sha1/openssl.c +3 -3
- data/vendor/libgit2/src/hash/sha1/sha1dc/sha1.c +0 -2
- data/vendor/libgit2/src/hash/sha1/win32.c +15 -11
- data/vendor/libgit2/src/hash.c +16 -13
- data/vendor/libgit2/src/hash.h +1 -1
- data/vendor/libgit2/src/hashsig.c +23 -10
- data/vendor/libgit2/src/ident.c +13 -3
- data/vendor/libgit2/src/idxmap.c +0 -22
- data/vendor/libgit2/src/ignore.c +35 -19
- data/vendor/libgit2/src/index.c +126 -84
- data/vendor/libgit2/src/index.h +1 -1
- data/vendor/libgit2/src/indexer.c +60 -36
- data/vendor/libgit2/src/integer.h +79 -2
- data/vendor/libgit2/src/iterator.c +40 -28
- data/vendor/libgit2/src/iterator.h +1 -1
- data/vendor/libgit2/src/khash.h +2 -11
- data/vendor/libgit2/src/{settings.c → libgit2.c} +125 -49
- data/vendor/libgit2/src/libgit2.h +15 -0
- data/vendor/libgit2/src/mailmap.c +23 -10
- data/vendor/libgit2/src/map.h +3 -3
- data/vendor/libgit2/src/merge.c +108 -46
- data/vendor/libgit2/src/merge.h +2 -1
- data/vendor/libgit2/src/merge_driver.c +19 -13
- data/vendor/libgit2/src/merge_file.c +15 -9
- data/vendor/libgit2/src/message.c +3 -1
- data/vendor/libgit2/src/midx.c +879 -0
- data/vendor/libgit2/src/midx.h +110 -0
- data/vendor/libgit2/src/mwindow.c +214 -95
- data/vendor/libgit2/src/mwindow.h +3 -3
- data/vendor/libgit2/src/net.c +133 -4
- data/vendor/libgit2/src/net.h +16 -2
- data/vendor/libgit2/src/netops.c +6 -4
- data/vendor/libgit2/src/netops.h +2 -2
- data/vendor/libgit2/src/notes.c +10 -10
- data/vendor/libgit2/src/object.c +24 -15
- data/vendor/libgit2/src/odb.c +298 -57
- data/vendor/libgit2/src/odb.h +16 -2
- data/vendor/libgit2/src/odb_loose.c +31 -21
- data/vendor/libgit2/src/odb_mempack.c +3 -1
- data/vendor/libgit2/src/odb_pack.c +391 -114
- data/vendor/libgit2/src/oid.c +7 -4
- data/vendor/libgit2/src/pack-objects.c +83 -69
- data/vendor/libgit2/src/pack.c +383 -150
- data/vendor/libgit2/src/pack.h +44 -9
- data/vendor/libgit2/src/patch.c +14 -7
- data/vendor/libgit2/src/patch_generate.c +3 -5
- data/vendor/libgit2/src/patch_parse.c +6 -3
- data/vendor/libgit2/src/path.c +102 -57
- data/vendor/libgit2/src/path.h +79 -6
- data/vendor/libgit2/src/pathspec.c +12 -11
- data/vendor/libgit2/src/pool.c +34 -22
- data/vendor/libgit2/src/pool.h +9 -1
- data/vendor/libgit2/src/posix.c +43 -12
- data/vendor/libgit2/src/posix.h +9 -0
- data/vendor/libgit2/src/proxy.c +2 -0
- data/vendor/libgit2/src/push.c +2 -0
- data/vendor/libgit2/src/reader.c +10 -6
- data/vendor/libgit2/src/rebase.c +95 -49
- data/vendor/libgit2/src/refdb.c +165 -13
- data/vendor/libgit2/src/refdb.h +69 -0
- data/vendor/libgit2/src/refdb_fs.c +144 -152
- data/vendor/libgit2/src/reflog.c +21 -20
- data/vendor/libgit2/src/refs.c +151 -231
- data/vendor/libgit2/src/refs.h +2 -20
- data/vendor/libgit2/src/refspec.c +80 -44
- data/vendor/libgit2/src/regexp.c +2 -2
- data/vendor/libgit2/src/remote.c +312 -121
- data/vendor/libgit2/src/remote.h +2 -1
- data/vendor/libgit2/src/repository.c +351 -189
- data/vendor/libgit2/src/repository.h +23 -29
- data/vendor/libgit2/src/reset.c +7 -6
- data/vendor/libgit2/src/revert.c +8 -2
- data/vendor/libgit2/src/revparse.c +19 -13
- data/vendor/libgit2/src/revwalk.c +35 -20
- data/vendor/libgit2/src/runtime.c +162 -0
- data/vendor/libgit2/src/runtime.h +62 -0
- data/vendor/libgit2/src/{refdb_fs.h → settings.h} +3 -11
- data/vendor/libgit2/src/signature.c +6 -5
- data/vendor/libgit2/src/sortedcache.c +2 -3
- data/vendor/libgit2/src/sortedcache.h +10 -8
- data/vendor/libgit2/src/stash.c +7 -3
- data/vendor/libgit2/src/status.c +9 -4
- data/vendor/libgit2/src/strarray.c +64 -0
- data/vendor/libgit2/src/streams/mbedtls.c +14 -17
- data/vendor/libgit2/src/streams/mbedtls.h +1 -1
- data/vendor/libgit2/src/streams/openssl.c +113 -207
- data/vendor/libgit2/src/streams/openssl.h +9 -1
- data/vendor/libgit2/src/streams/openssl_dynamic.c +309 -0
- data/vendor/libgit2/src/streams/openssl_dynamic.h +348 -0
- data/vendor/libgit2/src/streams/openssl_legacy.c +203 -0
- data/vendor/libgit2/src/streams/openssl_legacy.h +63 -0
- data/vendor/libgit2/src/streams/registry.c +10 -9
- data/vendor/libgit2/src/streams/socket.c +6 -2
- data/vendor/libgit2/src/streams/stransport.c +6 -3
- data/vendor/libgit2/src/streams/tls.c +5 -3
- data/vendor/libgit2/src/submodule.c +134 -66
- data/vendor/libgit2/src/submodule.h +9 -9
- data/vendor/libgit2/src/sysdir.c +8 -26
- data/vendor/libgit2/src/sysdir.h +0 -11
- data/vendor/libgit2/src/tag.c +49 -11
- data/vendor/libgit2/src/thread.c +140 -0
- data/vendor/libgit2/src/thread.h +479 -0
- data/vendor/libgit2/src/threadstate.c +83 -0
- data/vendor/libgit2/src/threadstate.h +24 -0
- data/vendor/libgit2/src/trace.c +2 -2
- data/vendor/libgit2/src/trace.h +17 -13
- data/vendor/libgit2/src/transaction.c +21 -9
- data/vendor/libgit2/src/transport.c +3 -3
- data/vendor/libgit2/src/transports/auth.c +1 -1
- data/vendor/libgit2/src/transports/auth_negotiate.c +11 -4
- data/vendor/libgit2/src/transports/auth_ntlm.c +10 -6
- data/vendor/libgit2/src/transports/credential.c +17 -7
- data/vendor/libgit2/src/transports/credential_helpers.c +2 -0
- data/vendor/libgit2/src/transports/git.c +1 -3
- data/vendor/libgit2/src/transports/http.c +19 -17
- data/vendor/libgit2/src/transports/http.h +1 -0
- data/vendor/libgit2/src/transports/httpclient.c +84 -42
- data/vendor/libgit2/src/transports/httpclient.h +1 -1
- data/vendor/libgit2/src/transports/local.c +5 -5
- data/vendor/libgit2/src/transports/smart.c +14 -9
- data/vendor/libgit2/src/transports/smart.h +1 -1
- data/vendor/libgit2/src/transports/smart_protocol.c +11 -5
- data/vendor/libgit2/src/transports/ssh.c +51 -17
- data/vendor/libgit2/src/transports/winhttp.c +156 -88
- data/vendor/libgit2/src/tree.c +100 -77
- data/vendor/libgit2/src/tree.h +1 -0
- data/vendor/libgit2/src/tsort.c +0 -2
- data/vendor/libgit2/src/unix/map.c +3 -1
- data/vendor/libgit2/src/unix/posix.h +16 -1
- data/vendor/libgit2/src/unix/pthread.h +2 -1
- data/vendor/libgit2/src/utf8.c +150 -0
- data/vendor/libgit2/src/utf8.h +52 -0
- data/vendor/libgit2/src/util.c +74 -183
- data/vendor/libgit2/src/util.h +33 -39
- data/vendor/libgit2/src/vector.c +23 -19
- data/vendor/libgit2/src/vector.h +4 -2
- data/vendor/libgit2/src/win32/findfile.c +4 -2
- data/vendor/libgit2/src/win32/git2.rc +18 -3
- data/vendor/libgit2/src/win32/map.c +1 -1
- data/vendor/libgit2/src/win32/msvc-compat.h +9 -1
- data/vendor/libgit2/src/win32/path_w32.c +23 -25
- data/vendor/libgit2/src/win32/path_w32.h +0 -1
- data/vendor/libgit2/src/win32/posix_w32.c +77 -1
- data/vendor/libgit2/src/win32/precompiled.h +0 -1
- data/vendor/libgit2/src/win32/reparse.h +4 -4
- data/vendor/libgit2/src/win32/thread.c +24 -15
- data/vendor/libgit2/src/win32/thread.h +1 -1
- data/vendor/libgit2/src/win32/w32_buffer.c +3 -3
- data/vendor/libgit2/src/win32/w32_common.h +18 -9
- data/vendor/libgit2/src/win32/{w32_crtdbg_stacktrace.c → w32_leakcheck.c} +269 -33
- data/vendor/libgit2/src/win32/w32_leakcheck.h +222 -0
- data/vendor/libgit2/src/win32/w32_util.h +6 -6
- data/vendor/libgit2/src/worktree.c +37 -15
- data/vendor/libgit2/src/zstream.c +1 -1
- metadata +56 -38
- data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +0 -29
- data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +0 -96
- data/vendor/libgit2/src/allocators/win32_crtdbg.c +0 -118
- data/vendor/libgit2/src/buf_text.c +0 -316
- data/vendor/libgit2/src/buf_text.h +0 -122
- data/vendor/libgit2/src/global.c +0 -361
- data/vendor/libgit2/src/global.h +0 -41
- data/vendor/libgit2/src/thread-utils.c +0 -58
- data/vendor/libgit2/src/thread-utils.h +0 -246
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -127
- data/vendor/libgit2/src/win32/w32_stack.c +0 -188
- data/vendor/libgit2/src/win32/w32_stack.h +0 -140
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#ifndef INCLUDE_commit_graph_h__
|
|
9
|
+
#define INCLUDE_commit_graph_h__
|
|
10
|
+
|
|
11
|
+
#include "common.h"
|
|
12
|
+
|
|
13
|
+
#include "git2/types.h"
|
|
14
|
+
#include "git2/sys/commit_graph.h"
|
|
15
|
+
|
|
16
|
+
#include "map.h"
|
|
17
|
+
#include "vector.h"
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* A commit-graph file.
|
|
21
|
+
*
|
|
22
|
+
* This file contains metadata about commits, particularly the generation
|
|
23
|
+
* number for each one. This can help speed up graph operations without
|
|
24
|
+
* requiring a full graph traversal.
|
|
25
|
+
*
|
|
26
|
+
* Support for this feature was added in git 2.19.
|
|
27
|
+
*/
|
|
28
|
+
typedef struct git_commit_graph_file {
|
|
29
|
+
git_map graph_map;
|
|
30
|
+
|
|
31
|
+
/* The OID Fanout table. */
|
|
32
|
+
const uint32_t *oid_fanout;
|
|
33
|
+
/* The total number of commits in the graph. */
|
|
34
|
+
uint32_t num_commits;
|
|
35
|
+
|
|
36
|
+
/* The OID Lookup table. */
|
|
37
|
+
git_oid *oid_lookup;
|
|
38
|
+
|
|
39
|
+
/*
|
|
40
|
+
* The Commit Data table. Each entry contains the OID of the commit followed
|
|
41
|
+
* by two 8-byte fields in network byte order:
|
|
42
|
+
* - The indices of the first two parents (32 bits each).
|
|
43
|
+
* - The generation number (first 30 bits) and commit time in seconds since
|
|
44
|
+
* UNIX epoch (34 bits).
|
|
45
|
+
*/
|
|
46
|
+
const unsigned char *commit_data;
|
|
47
|
+
|
|
48
|
+
/*
|
|
49
|
+
* The Extra Edge List table. Each 4-byte entry is a network byte order index
|
|
50
|
+
* of one of the i-th (i > 0) parents of commits in the `commit_data` table,
|
|
51
|
+
* when the commit has more than 2 parents.
|
|
52
|
+
*/
|
|
53
|
+
const unsigned char *extra_edge_list;
|
|
54
|
+
/* The number of entries in the Extra Edge List table. Each entry is 4 bytes wide. */
|
|
55
|
+
size_t num_extra_edge_list;
|
|
56
|
+
|
|
57
|
+
/* The trailer of the file. Contains the SHA1-checksum of the whole file. */
|
|
58
|
+
git_oid checksum;
|
|
59
|
+
} git_commit_graph_file;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* An entry in the commit-graph file. Provides a subset of the information that
|
|
63
|
+
* can be obtained from the commit header.
|
|
64
|
+
*/
|
|
65
|
+
typedef struct git_commit_graph_entry {
|
|
66
|
+
/* The generation number of the commit within the graph */
|
|
67
|
+
size_t generation;
|
|
68
|
+
|
|
69
|
+
/* Time in seconds from UNIX epoch. */
|
|
70
|
+
git_time_t commit_time;
|
|
71
|
+
|
|
72
|
+
/* The number of parents of the commit. */
|
|
73
|
+
size_t parent_count;
|
|
74
|
+
|
|
75
|
+
/*
|
|
76
|
+
* The indices of the parent commits within the Commit Data table. The value
|
|
77
|
+
* of `GIT_COMMIT_GRAPH_MISSING_PARENT` indicates that no parent is in that
|
|
78
|
+
* position.
|
|
79
|
+
*/
|
|
80
|
+
size_t parent_indices[2];
|
|
81
|
+
|
|
82
|
+
/* The index within the Extra Edge List of any parent after the first two. */
|
|
83
|
+
size_t extra_parents_index;
|
|
84
|
+
|
|
85
|
+
/* The SHA-1 hash of the root tree of the commit. */
|
|
86
|
+
git_oid tree_oid;
|
|
87
|
+
|
|
88
|
+
/* The SHA-1 hash of the requested commit. */
|
|
89
|
+
git_oid sha1;
|
|
90
|
+
} git_commit_graph_entry;
|
|
91
|
+
|
|
92
|
+
/* A wrapper for git_commit_graph_file to enable lazy loading in the ODB. */
|
|
93
|
+
struct git_commit_graph {
|
|
94
|
+
/* The path to the commit-graph file. Something like ".git/objects/info/commit-graph". */
|
|
95
|
+
git_buf filename;
|
|
96
|
+
|
|
97
|
+
/* The underlying commit-graph file. */
|
|
98
|
+
git_commit_graph_file *file;
|
|
99
|
+
|
|
100
|
+
/* Whether the commit-graph file was already checked for validity. */
|
|
101
|
+
bool checked;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
/** Create a new commit-graph, optionally opening the underlying file. */
|
|
105
|
+
int git_commit_graph_new(git_commit_graph **cgraph_out, const char *objects_dir, bool open_file);
|
|
106
|
+
|
|
107
|
+
/** Open and validate a commit-graph file. */
|
|
108
|
+
int git_commit_graph_file_open(git_commit_graph_file **file_out, const char *path);
|
|
109
|
+
|
|
110
|
+
/*
|
|
111
|
+
* Attempt to get the git_commit_graph's commit-graph file. This object is
|
|
112
|
+
* still owned by the git_commit_graph. If the repository does not contain a commit graph,
|
|
113
|
+
* it will return GIT_ENOTFOUND.
|
|
114
|
+
*
|
|
115
|
+
* This function is not thread-safe.
|
|
116
|
+
*/
|
|
117
|
+
int git_commit_graph_get_file(git_commit_graph_file **file_out, git_commit_graph *cgraph);
|
|
118
|
+
|
|
119
|
+
/* Marks the commit-graph file as needing a refresh. */
|
|
120
|
+
void git_commit_graph_refresh(git_commit_graph *cgraph);
|
|
121
|
+
|
|
122
|
+
/*
|
|
123
|
+
* A writer for `commit-graph` files.
|
|
124
|
+
*/
|
|
125
|
+
struct git_commit_graph_writer {
|
|
126
|
+
/*
|
|
127
|
+
* The path of the `objects/info` directory where the `commit-graph` will be
|
|
128
|
+
* stored.
|
|
129
|
+
*/
|
|
130
|
+
git_buf objects_info_dir;
|
|
131
|
+
|
|
132
|
+
/* The list of packed commits. */
|
|
133
|
+
git_vector commits;
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
/*
|
|
137
|
+
* Returns whether the git_commit_graph_file needs to be reloaded since the
|
|
138
|
+
* contents of the commit-graph file have changed on disk.
|
|
139
|
+
*/
|
|
140
|
+
bool git_commit_graph_file_needs_refresh(
|
|
141
|
+
const git_commit_graph_file *file, const char *path);
|
|
142
|
+
|
|
143
|
+
int git_commit_graph_entry_find(
|
|
144
|
+
git_commit_graph_entry *e,
|
|
145
|
+
const git_commit_graph_file *file,
|
|
146
|
+
const git_oid *short_oid,
|
|
147
|
+
size_t len);
|
|
148
|
+
int git_commit_graph_entry_parent(
|
|
149
|
+
git_commit_graph_entry *parent,
|
|
150
|
+
const git_commit_graph_file *file,
|
|
151
|
+
const git_commit_graph_entry *entry,
|
|
152
|
+
size_t n);
|
|
153
|
+
int git_commit_graph_file_close(git_commit_graph_file *cgraph);
|
|
154
|
+
void git_commit_graph_file_free(git_commit_graph_file *cgraph);
|
|
155
|
+
|
|
156
|
+
/* This is exposed for use in the fuzzers. */
|
|
157
|
+
int git_commit_graph_file_parse(
|
|
158
|
+
git_commit_graph_file *file,
|
|
159
|
+
const unsigned char *data,
|
|
160
|
+
size_t size);
|
|
161
|
+
|
|
162
|
+
#endif
|
|
@@ -12,6 +12,24 @@
|
|
|
12
12
|
#include "odb.h"
|
|
13
13
|
#include "commit.h"
|
|
14
14
|
|
|
15
|
+
int git_commit_list_generation_cmp(const void *a, const void *b)
|
|
16
|
+
{
|
|
17
|
+
uint32_t generation_a = ((git_commit_list_node *) a)->generation;
|
|
18
|
+
uint32_t generation_b = ((git_commit_list_node *) b)->generation;
|
|
19
|
+
|
|
20
|
+
if (!generation_a || !generation_b) {
|
|
21
|
+
/* Fall back to comparing by timestamps if at least one commit lacks a generation. */
|
|
22
|
+
return git_commit_list_time_cmp(a, b);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (generation_a < generation_b)
|
|
26
|
+
return 1;
|
|
27
|
+
if (generation_a > generation_b)
|
|
28
|
+
return -1;
|
|
29
|
+
|
|
30
|
+
return 0;
|
|
31
|
+
}
|
|
32
|
+
|
|
15
33
|
int git_commit_list_time_cmp(const void *a, const void *b)
|
|
16
34
|
{
|
|
17
35
|
int64_t time_a = ((git_commit_list_node *) a)->time;
|
|
@@ -124,6 +142,7 @@ static int commit_quick_parse(
|
|
|
124
142
|
return -1;
|
|
125
143
|
}
|
|
126
144
|
|
|
145
|
+
node->generation = 0;
|
|
127
146
|
node->time = commit->committer->when.time;
|
|
128
147
|
node->out_degree = (uint16_t) git_array_size(commit->parent_ids);
|
|
129
148
|
node->parents = alloc_parents(walk, node, node->out_degree);
|
|
@@ -143,11 +162,38 @@ static int commit_quick_parse(
|
|
|
143
162
|
int git_commit_list_parse(git_revwalk *walk, git_commit_list_node *commit)
|
|
144
163
|
{
|
|
145
164
|
git_odb_object *obj;
|
|
165
|
+
git_commit_graph_file *cgraph_file = NULL;
|
|
146
166
|
int error;
|
|
147
167
|
|
|
148
168
|
if (commit->parsed)
|
|
149
169
|
return 0;
|
|
150
170
|
|
|
171
|
+
/* Let's try to use the commit graph first. */
|
|
172
|
+
git_odb__get_commit_graph_file(&cgraph_file, walk->odb);
|
|
173
|
+
if (cgraph_file) {
|
|
174
|
+
git_commit_graph_entry e;
|
|
175
|
+
|
|
176
|
+
error = git_commit_graph_entry_find(&e, cgraph_file, &commit->oid, GIT_OID_RAWSZ);
|
|
177
|
+
if (error == 0 && git__is_uint16(e.parent_count)) {
|
|
178
|
+
size_t i;
|
|
179
|
+
commit->generation = (uint32_t)e.generation;
|
|
180
|
+
commit->time = e.commit_time;
|
|
181
|
+
commit->out_degree = (uint16_t)e.parent_count;
|
|
182
|
+
commit->parents = alloc_parents(walk, commit, commit->out_degree);
|
|
183
|
+
GIT_ERROR_CHECK_ALLOC(commit->parents);
|
|
184
|
+
|
|
185
|
+
for (i = 0; i < commit->out_degree; ++i) {
|
|
186
|
+
git_commit_graph_entry parent;
|
|
187
|
+
error = git_commit_graph_entry_parent(&parent, cgraph_file, &e, i);
|
|
188
|
+
if (error < 0)
|
|
189
|
+
return error;
|
|
190
|
+
commit->parents[i] = git_revwalk__commit_lookup(walk, &parent.sha1);
|
|
191
|
+
}
|
|
192
|
+
commit->parsed = 1;
|
|
193
|
+
return 0;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
151
197
|
if ((error = git_odb_read(&obj, walk->odb, &commit->oid)) < 0)
|
|
152
198
|
return error;
|
|
153
199
|
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
typedef struct git_commit_list_node {
|
|
27
27
|
git_oid oid;
|
|
28
28
|
int64_t time;
|
|
29
|
+
uint32_t generation;
|
|
29
30
|
unsigned int seen:1,
|
|
30
31
|
uninteresting:1,
|
|
31
32
|
topo_delay:1,
|
|
@@ -45,6 +46,7 @@ typedef struct git_commit_list {
|
|
|
45
46
|
} git_commit_list;
|
|
46
47
|
|
|
47
48
|
git_commit_list_node *git_commit_list_alloc_node(git_revwalk *walk);
|
|
49
|
+
int git_commit_list_generation_cmp(const void *a, const void *b);
|
|
48
50
|
int git_commit_list_time_cmp(const void *a, const void *b);
|
|
49
51
|
void git_commit_list_free(git_commit_list **list_p);
|
|
50
52
|
git_commit_list *git_commit_list_insert(git_commit_list_node *item, git_commit_list **list_p);
|
data/vendor/libgit2/src/common.h
CHANGED
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
# define GIT_INLINE(type) static __inline type
|
|
20
20
|
#elif defined(__GNUC__)
|
|
21
21
|
# define GIT_INLINE(type) static __inline__ type
|
|
22
|
+
#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
|
|
23
|
+
# define GIT_INLINE(type) static inline type
|
|
22
24
|
#else
|
|
23
25
|
# define GIT_INLINE(type) static type
|
|
24
26
|
#endif
|
|
@@ -28,6 +30,24 @@
|
|
|
28
30
|
# define __has_builtin(x) 0
|
|
29
31
|
#endif
|
|
30
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Declare that a function's return value must be used.
|
|
35
|
+
*
|
|
36
|
+
* Used mostly to guard against potential silent bugs at runtime. This is
|
|
37
|
+
* recommended to be added to functions that:
|
|
38
|
+
*
|
|
39
|
+
* - Allocate / reallocate memory. This prevents memory leaks or errors where
|
|
40
|
+
* buffers are expected to have grown to a certain size, but could not be
|
|
41
|
+
* resized.
|
|
42
|
+
* - Acquire locks. When a lock cannot be acquired, that will almost certainly
|
|
43
|
+
* cause a data race / undefined behavior.
|
|
44
|
+
*/
|
|
45
|
+
#if defined(__GNUC__)
|
|
46
|
+
# define GIT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
|
|
47
|
+
#else
|
|
48
|
+
# define GIT_WARN_UNUSED_RESULT
|
|
49
|
+
#endif
|
|
50
|
+
|
|
31
51
|
#include <assert.h>
|
|
32
52
|
#include <errno.h>
|
|
33
53
|
#include <limits.h>
|
|
@@ -63,7 +83,9 @@
|
|
|
63
83
|
# include <pthread.h>
|
|
64
84
|
# include <sched.h>
|
|
65
85
|
# endif
|
|
66
|
-
|
|
86
|
+
|
|
87
|
+
#define GIT_LIBGIT2_CALL
|
|
88
|
+
#define GIT_SYSTEM_CALL
|
|
67
89
|
|
|
68
90
|
#ifdef GIT_USE_STAT_ATIMESPEC
|
|
69
91
|
# define st_atim st_atimespec
|
|
@@ -78,8 +100,10 @@
|
|
|
78
100
|
#include "git2/types.h"
|
|
79
101
|
#include "git2/errors.h"
|
|
80
102
|
#include "errors.h"
|
|
81
|
-
#include "thread
|
|
103
|
+
#include "thread.h"
|
|
82
104
|
#include "integer.h"
|
|
105
|
+
#include "assert_safe.h"
|
|
106
|
+
#include "utf8.h"
|
|
83
107
|
|
|
84
108
|
/*
|
|
85
109
|
* Include the declarations for deprecated functions; this ensures
|
data/vendor/libgit2/src/config.c
CHANGED
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
#include "git2/config.h"
|
|
11
11
|
#include "git2/sys/config.h"
|
|
12
12
|
|
|
13
|
-
#include "buf_text.h"
|
|
14
13
|
#include "config_backend.h"
|
|
15
14
|
#include "regexp.h"
|
|
16
15
|
#include "sysdir.h"
|
|
@@ -108,7 +107,8 @@ int git_config_add_file_ondisk(
|
|
|
108
107
|
struct stat st;
|
|
109
108
|
int res;
|
|
110
109
|
|
|
111
|
-
|
|
110
|
+
GIT_ASSERT_ARG(cfg);
|
|
111
|
+
GIT_ASSERT_ARG(path);
|
|
112
112
|
|
|
113
113
|
res = p_stat(path, &st);
|
|
114
114
|
if (res < 0 && errno != ENOENT && errno != ENOTDIR) {
|
|
@@ -316,7 +316,8 @@ int git_config_add_backend(
|
|
|
316
316
|
backend_internal *internal;
|
|
317
317
|
int result;
|
|
318
318
|
|
|
319
|
-
|
|
319
|
+
GIT_ASSERT_ARG(cfg);
|
|
320
|
+
GIT_ASSERT_ARG(backend);
|
|
320
321
|
|
|
321
322
|
GIT_ERROR_CHECK_VERSION(backend, GIT_CONFIG_BACKEND_VERSION, "git_config_backend");
|
|
322
323
|
|
|
@@ -514,7 +515,8 @@ int git_config_backend_foreach_match(
|
|
|
514
515
|
git_regexp regex;
|
|
515
516
|
int error = 0;
|
|
516
517
|
|
|
517
|
-
|
|
518
|
+
GIT_ASSERT_ARG(backend);
|
|
519
|
+
GIT_ASSERT_ARG(cb);
|
|
518
520
|
|
|
519
521
|
if (regexp && git_regexp_compile(®ex, regexp, 0) < 0)
|
|
520
522
|
return -1;
|
|
@@ -886,7 +888,8 @@ int git_config_get_string_buf(
|
|
|
886
888
|
int ret;
|
|
887
889
|
const char *str;
|
|
888
890
|
|
|
889
|
-
git_buf_sanitize(out)
|
|
891
|
+
if ((ret = git_buf_sanitize(out)) < 0)
|
|
892
|
+
return ret;
|
|
890
893
|
|
|
891
894
|
ret = get_entry(&entry, cfg, name, true, GET_ALL_ERRORS);
|
|
892
895
|
str = !ret ? (entry->value ? entry->value : "") : NULL;
|
|
@@ -1000,7 +1003,7 @@ static int multivar_iter_next(git_config_entry **entry, git_config_iterator *_it
|
|
|
1000
1003
|
return error;
|
|
1001
1004
|
}
|
|
1002
1005
|
|
|
1003
|
-
void multivar_iter_free(git_config_iterator *_iter)
|
|
1006
|
+
static void multivar_iter_free(git_config_iterator *_iter)
|
|
1004
1007
|
{
|
|
1005
1008
|
multivar_iter *iter = (multivar_iter *) _iter;
|
|
1006
1009
|
|
|
@@ -1084,19 +1087,31 @@ void git_config_iterator_free(git_config_iterator *iter)
|
|
|
1084
1087
|
|
|
1085
1088
|
int git_config_find_global(git_buf *path)
|
|
1086
1089
|
{
|
|
1087
|
-
|
|
1090
|
+
int error;
|
|
1091
|
+
|
|
1092
|
+
if ((error = git_buf_sanitize(path)) < 0)
|
|
1093
|
+
return error;
|
|
1094
|
+
|
|
1088
1095
|
return git_sysdir_find_global_file(path, GIT_CONFIG_FILENAME_GLOBAL);
|
|
1089
1096
|
}
|
|
1090
1097
|
|
|
1091
1098
|
int git_config_find_xdg(git_buf *path)
|
|
1092
1099
|
{
|
|
1093
|
-
|
|
1100
|
+
int error;
|
|
1101
|
+
|
|
1102
|
+
if ((error = git_buf_sanitize(path)) < 0)
|
|
1103
|
+
return error;
|
|
1104
|
+
|
|
1094
1105
|
return git_sysdir_find_xdg_file(path, GIT_CONFIG_FILENAME_XDG);
|
|
1095
1106
|
}
|
|
1096
1107
|
|
|
1097
1108
|
int git_config_find_system(git_buf *path)
|
|
1098
1109
|
{
|
|
1099
|
-
|
|
1110
|
+
int error;
|
|
1111
|
+
|
|
1112
|
+
if ((error = git_buf_sanitize(path)) < 0)
|
|
1113
|
+
return error;
|
|
1114
|
+
|
|
1100
1115
|
return git_sysdir_find_system_file(path, GIT_CONFIG_FILENAME_SYSTEM);
|
|
1101
1116
|
}
|
|
1102
1117
|
|
|
@@ -1104,7 +1119,9 @@ int git_config_find_programdata(git_buf *path)
|
|
|
1104
1119
|
{
|
|
1105
1120
|
int ret;
|
|
1106
1121
|
|
|
1107
|
-
git_buf_sanitize(path)
|
|
1122
|
+
if ((ret = git_buf_sanitize(path)) < 0)
|
|
1123
|
+
return ret;
|
|
1124
|
+
|
|
1108
1125
|
ret = git_sysdir_find_programdata_file(path,
|
|
1109
1126
|
GIT_CONFIG_FILENAME_PROGRAMDATA);
|
|
1110
1127
|
if (ret != GIT_OK)
|
|
@@ -1182,7 +1199,7 @@ int git_config_lock(git_transaction **out, git_config *cfg)
|
|
|
1182
1199
|
git_config_backend *backend;
|
|
1183
1200
|
backend_internal *internal;
|
|
1184
1201
|
|
|
1185
|
-
|
|
1202
|
+
GIT_ASSERT_ARG(cfg);
|
|
1186
1203
|
|
|
1187
1204
|
internal = git_vector_get(&cfg->backends, 0);
|
|
1188
1205
|
if (!internal || !internal->backend) {
|
|
@@ -1202,7 +1219,7 @@ int git_config_unlock(git_config *cfg, int commit)
|
|
|
1202
1219
|
git_config_backend *backend;
|
|
1203
1220
|
backend_internal *internal;
|
|
1204
1221
|
|
|
1205
|
-
|
|
1222
|
+
GIT_ASSERT_ARG(cfg);
|
|
1206
1223
|
|
|
1207
1224
|
internal = git_vector_get(&cfg->backends, 0);
|
|
1208
1225
|
if (!internal || !internal->backend) {
|
|
@@ -1227,9 +1244,6 @@ int git_config_lookup_map_value(
|
|
|
1227
1244
|
{
|
|
1228
1245
|
size_t i;
|
|
1229
1246
|
|
|
1230
|
-
if (!value)
|
|
1231
|
-
goto fail_parse;
|
|
1232
|
-
|
|
1233
1247
|
for (i = 0; i < map_n; ++i) {
|
|
1234
1248
|
const git_configmap *m = maps + i;
|
|
1235
1249
|
|
|
@@ -1238,7 +1252,7 @@ int git_config_lookup_map_value(
|
|
|
1238
1252
|
case GIT_CONFIGMAP_TRUE: {
|
|
1239
1253
|
int bool_val;
|
|
1240
1254
|
|
|
1241
|
-
if (
|
|
1255
|
+
if (git_config_parse_bool(&bool_val, value) == 0 &&
|
|
1242
1256
|
bool_val == (int)m->type) {
|
|
1243
1257
|
*out = m->map_value;
|
|
1244
1258
|
return 0;
|
|
@@ -1252,7 +1266,7 @@ int git_config_lookup_map_value(
|
|
|
1252
1266
|
break;
|
|
1253
1267
|
|
|
1254
1268
|
case GIT_CONFIGMAP_STRING:
|
|
1255
|
-
if (strcasecmp(value, m->str_match) == 0) {
|
|
1269
|
+
if (value && strcasecmp(value, m->str_match) == 0) {
|
|
1256
1270
|
*out = m->map_value;
|
|
1257
1271
|
return 0;
|
|
1258
1272
|
}
|
|
@@ -1260,7 +1274,6 @@ int git_config_lookup_map_value(
|
|
|
1260
1274
|
}
|
|
1261
1275
|
}
|
|
1262
1276
|
|
|
1263
|
-
fail_parse:
|
|
1264
1277
|
git_error_set(GIT_ERROR_CONFIG, "failed to map '%s'", value);
|
|
1265
1278
|
return -1;
|
|
1266
1279
|
}
|
|
@@ -1364,9 +1377,13 @@ fail_parse:
|
|
|
1364
1377
|
|
|
1365
1378
|
int git_config_parse_path(git_buf *out, const char *value)
|
|
1366
1379
|
{
|
|
1367
|
-
|
|
1380
|
+
int error;
|
|
1368
1381
|
|
|
1369
|
-
|
|
1382
|
+
GIT_ASSERT_ARG(out);
|
|
1383
|
+
GIT_ASSERT_ARG(value);
|
|
1384
|
+
|
|
1385
|
+
if ((error = git_buf_sanitize(out)) < 0)
|
|
1386
|
+
return error;
|
|
1370
1387
|
|
|
1371
1388
|
if (value[0] == '~') {
|
|
1372
1389
|
if (value[1] != '\0' && value[1] != '/') {
|
|
@@ -1409,7 +1426,8 @@ int git_config__normalize_name(const char *in, char **out)
|
|
|
1409
1426
|
{
|
|
1410
1427
|
char *name, *fdot, *ldot;
|
|
1411
1428
|
|
|
1412
|
-
|
|
1429
|
+
GIT_ASSERT_ARG(in);
|
|
1430
|
+
GIT_ASSERT_ARG(out);
|
|
1413
1431
|
|
|
1414
1432
|
name = git__strdup(in);
|
|
1415
1433
|
GIT_ERROR_CHECK_ALLOC(name);
|
|
@@ -1478,7 +1496,7 @@ int git_config_rename_section(
|
|
|
1478
1496
|
int error = 0;
|
|
1479
1497
|
struct rename_data data;
|
|
1480
1498
|
|
|
1481
|
-
|
|
1499
|
+
git_buf_puts_escape_regex(&pattern, old_section_name);
|
|
1482
1500
|
|
|
1483
1501
|
if ((error = git_buf_puts(&pattern, "\\..+")) < 0)
|
|
1484
1502
|
goto cleanup;
|