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
|
@@ -31,19 +31,18 @@ extern int git_attr_cache__get(
|
|
|
31
31
|
git_attr_file **file,
|
|
32
32
|
git_repository *repo,
|
|
33
33
|
git_attr_session *attr_session,
|
|
34
|
-
git_attr_file_source source,
|
|
35
|
-
const char *base,
|
|
36
|
-
const char *filename,
|
|
34
|
+
git_attr_file_source *source,
|
|
37
35
|
git_attr_file_parser parser,
|
|
38
36
|
bool allow_macros);
|
|
39
37
|
|
|
40
38
|
extern bool git_attr_cache__is_cached(
|
|
41
39
|
git_repository *repo,
|
|
42
|
-
|
|
43
|
-
const char *
|
|
40
|
+
git_attr_file_source_t source_type,
|
|
41
|
+
const char *filename);
|
|
44
42
|
|
|
45
43
|
extern int git_attr_cache__alloc_file_entry(
|
|
46
44
|
git_attr_file_entry **out,
|
|
45
|
+
git_repository *repo,
|
|
47
46
|
const char *base,
|
|
48
47
|
const char *path,
|
|
49
48
|
git_pool *pool);
|
data/vendor/libgit2/src/blame.c
CHANGED
|
@@ -76,6 +76,14 @@ static git_blame_hunk* new_hunk(
|
|
|
76
76
|
return hunk;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
+
static void free_hunk(git_blame_hunk *hunk)
|
|
80
|
+
{
|
|
81
|
+
git__free((void*)hunk->orig_path);
|
|
82
|
+
git_signature_free(hunk->final_signature);
|
|
83
|
+
git_signature_free(hunk->orig_signature);
|
|
84
|
+
git__free(hunk);
|
|
85
|
+
}
|
|
86
|
+
|
|
79
87
|
static git_blame_hunk* dup_hunk(git_blame_hunk *hunk)
|
|
80
88
|
{
|
|
81
89
|
git_blame_hunk *newhunk = new_hunk(
|
|
@@ -90,17 +98,14 @@ static git_blame_hunk* dup_hunk(git_blame_hunk *hunk)
|
|
|
90
98
|
git_oid_cpy(&newhunk->orig_commit_id, &hunk->orig_commit_id);
|
|
91
99
|
git_oid_cpy(&newhunk->final_commit_id, &hunk->final_commit_id);
|
|
92
100
|
newhunk->boundary = hunk->boundary;
|
|
93
|
-
git_signature_dup(&newhunk->final_signature, hunk->final_signature);
|
|
94
|
-
git_signature_dup(&newhunk->orig_signature, hunk->orig_signature);
|
|
95
|
-
return newhunk;
|
|
96
|
-
}
|
|
97
101
|
|
|
98
|
-
|
|
99
|
-
{
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
102
|
+
if (git_signature_dup(&newhunk->final_signature, hunk->final_signature) < 0 ||
|
|
103
|
+
git_signature_dup(&newhunk->orig_signature, hunk->orig_signature) < 0) {
|
|
104
|
+
free_hunk(newhunk);
|
|
105
|
+
return NULL;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return newhunk;
|
|
104
109
|
}
|
|
105
110
|
|
|
106
111
|
/* Starting with the hunk that includes start_line, shift all following hunks'
|
|
@@ -171,20 +176,21 @@ void git_blame_free(git_blame *blame)
|
|
|
171
176
|
|
|
172
177
|
uint32_t git_blame_get_hunk_count(git_blame *blame)
|
|
173
178
|
{
|
|
174
|
-
|
|
179
|
+
GIT_ASSERT_ARG(blame);
|
|
175
180
|
return (uint32_t)blame->hunks.length;
|
|
176
181
|
}
|
|
177
182
|
|
|
178
183
|
const git_blame_hunk *git_blame_get_hunk_byindex(git_blame *blame, uint32_t index)
|
|
179
184
|
{
|
|
180
|
-
|
|
185
|
+
GIT_ASSERT_ARG_WITH_RETVAL(blame, NULL);
|
|
181
186
|
return (git_blame_hunk*)git_vector_get(&blame->hunks, index);
|
|
182
187
|
}
|
|
183
188
|
|
|
184
189
|
const git_blame_hunk *git_blame_get_hunk_byline(git_blame *blame, size_t lineno)
|
|
185
190
|
{
|
|
186
191
|
size_t i, new_lineno = lineno;
|
|
187
|
-
|
|
192
|
+
|
|
193
|
+
GIT_ASSERT_ARG_WITH_RETVAL(blame, NULL);
|
|
188
194
|
|
|
189
195
|
if (!git_vector_bsearch2(&i, &blame->hunks, hunk_byfinalline_search_cmp, &new_lineno)) {
|
|
190
196
|
return git_blame_get_hunk_byindex(blame, (uint32_t)i);
|
|
@@ -388,7 +394,10 @@ int git_blame_file(
|
|
|
388
394
|
git_blame_options normOptions = GIT_BLAME_OPTIONS_INIT;
|
|
389
395
|
git_blame *blame = NULL;
|
|
390
396
|
|
|
391
|
-
|
|
397
|
+
GIT_ASSERT_ARG(out);
|
|
398
|
+
GIT_ASSERT_ARG(repo);
|
|
399
|
+
GIT_ASSERT_ARG(path);
|
|
400
|
+
|
|
392
401
|
if ((error = normalize_options(&normOptions, options, repo)) < 0)
|
|
393
402
|
goto on_error;
|
|
394
403
|
|
|
@@ -509,7 +518,9 @@ int git_blame_buffer(
|
|
|
509
518
|
|
|
510
519
|
diffopts.context_lines = 0;
|
|
511
520
|
|
|
512
|
-
|
|
521
|
+
GIT_ASSERT_ARG(out);
|
|
522
|
+
GIT_ASSERT_ARG(reference);
|
|
523
|
+
GIT_ASSERT_ARG(buffer && buffer_len);
|
|
513
524
|
|
|
514
525
|
blame = git_blame__alloc(reference->repository, reference->options, reference->path);
|
|
515
526
|
GIT_ERROR_CHECK_ALLOC(blame);
|
|
@@ -538,7 +549,9 @@ int git_blame_options_init(git_blame_options *opts, unsigned int version)
|
|
|
538
549
|
return 0;
|
|
539
550
|
}
|
|
540
551
|
|
|
552
|
+
#ifndef GIT_DEPRECATE_HARD
|
|
541
553
|
int git_blame_init_options(git_blame_options *opts, unsigned int version)
|
|
542
554
|
{
|
|
543
555
|
return git_blame_options_init(opts, version);
|
|
544
556
|
}
|
|
557
|
+
#endif
|
|
@@ -365,11 +365,14 @@ static void trim_common_tail(mmfile_t *a, mmfile_t *b, long ctx)
|
|
|
365
365
|
b->size -= trimmed - recovered;
|
|
366
366
|
}
|
|
367
367
|
|
|
368
|
-
static int diff_hunks(mmfile_t file_a, mmfile_t file_b, void *cb_data)
|
|
368
|
+
static int diff_hunks(mmfile_t file_a, mmfile_t file_b, void *cb_data, git_blame_options *options)
|
|
369
369
|
{
|
|
370
|
-
xpparam_t xpp = {0};
|
|
371
370
|
xdemitconf_t xecfg = {0};
|
|
372
371
|
xdemitcb_t ecb = {0};
|
|
372
|
+
xpparam_t xpp = {0};
|
|
373
|
+
|
|
374
|
+
if (options->flags & GIT_BLAME_IGNORE_WHITESPACE)
|
|
375
|
+
xpp.flags |= XDF_IGNORE_WHITESPACE;
|
|
373
376
|
|
|
374
377
|
xecfg.hunk_func = my_emit;
|
|
375
378
|
ecb.priv = cb_data;
|
|
@@ -409,7 +412,7 @@ static int pass_blame_to_parent(
|
|
|
409
412
|
fill_origin_blob(parent, &file_p);
|
|
410
413
|
fill_origin_blob(target, &file_o);
|
|
411
414
|
|
|
412
|
-
if (diff_hunks(file_p, file_o, &d) < 0)
|
|
415
|
+
if (diff_hunks(file_p, file_o, &d, &blame->options) < 0)
|
|
413
416
|
return -1;
|
|
414
417
|
|
|
415
418
|
/* The reset (i.e. anything after tlno) are the same as the parent */
|
data/vendor/libgit2/src/blob.c
CHANGED
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
|
|
15
15
|
#include "filebuf.h"
|
|
16
16
|
#include "filter.h"
|
|
17
|
-
#include "buf_text.h"
|
|
18
17
|
|
|
19
18
|
const void *git_blob_rawcontent(const git_blob *blob)
|
|
20
19
|
{
|
|
21
|
-
|
|
20
|
+
GIT_ASSERT_ARG_WITH_RETVAL(blob, NULL);
|
|
21
|
+
|
|
22
22
|
if (blob->raw)
|
|
23
23
|
return blob->data.raw.data;
|
|
24
24
|
else
|
|
@@ -27,7 +27,8 @@ const void *git_blob_rawcontent(const git_blob *blob)
|
|
|
27
27
|
|
|
28
28
|
git_object_size_t git_blob_rawsize(const git_blob *blob)
|
|
29
29
|
{
|
|
30
|
-
|
|
30
|
+
GIT_ASSERT_ARG(blob);
|
|
31
|
+
|
|
31
32
|
if (blob->raw)
|
|
32
33
|
return blob->data.raw.size;
|
|
33
34
|
else
|
|
@@ -53,7 +54,9 @@ void git_blob__free(void *_blob)
|
|
|
53
54
|
int git_blob__parse_raw(void *_blob, const char *data, size_t size)
|
|
54
55
|
{
|
|
55
56
|
git_blob *blob = (git_blob *) _blob;
|
|
56
|
-
|
|
57
|
+
|
|
58
|
+
GIT_ASSERT_ARG(blob);
|
|
59
|
+
|
|
57
60
|
blob->raw = 1;
|
|
58
61
|
blob->data.raw.data = data;
|
|
59
62
|
blob->data.raw.size = size;
|
|
@@ -63,7 +66,9 @@ int git_blob__parse_raw(void *_blob, const char *data, size_t size)
|
|
|
63
66
|
int git_blob__parse(void *_blob, git_odb_object *odb_obj)
|
|
64
67
|
{
|
|
65
68
|
git_blob *blob = (git_blob *) _blob;
|
|
66
|
-
|
|
69
|
+
|
|
70
|
+
GIT_ASSERT_ARG(blob);
|
|
71
|
+
|
|
67
72
|
git_cached_obj_incref((git_cached_obj *)odb_obj);
|
|
68
73
|
blob->raw = 0;
|
|
69
74
|
blob->data.odb = odb_obj;
|
|
@@ -77,7 +82,8 @@ int git_blob_create_from_buffer(
|
|
|
77
82
|
git_odb *odb;
|
|
78
83
|
git_odb_stream *stream;
|
|
79
84
|
|
|
80
|
-
|
|
85
|
+
GIT_ASSERT_ARG(id);
|
|
86
|
+
GIT_ASSERT_ARG(repo);
|
|
81
87
|
|
|
82
88
|
if ((error = git_repository_odb__weakptr(&odb, repo)) < 0 ||
|
|
83
89
|
(error = git_odb_open_wstream(&stream, odb, len, GIT_OBJECT_BLOB)) < 0)
|
|
@@ -188,14 +194,10 @@ int git_blob__create_from_paths(
|
|
|
188
194
|
mode_t mode;
|
|
189
195
|
git_buf path = GIT_BUF_INIT;
|
|
190
196
|
|
|
191
|
-
|
|
197
|
+
GIT_ASSERT_ARG(hint_path || !try_load_filters);
|
|
192
198
|
|
|
193
199
|
if (!content_path) {
|
|
194
|
-
if (
|
|
195
|
-
return GIT_EBAREREPO;
|
|
196
|
-
|
|
197
|
-
if (git_buf_joinpath(
|
|
198
|
-
&path, git_repository_workdir(repo), hint_path) < 0)
|
|
200
|
+
if (git_repository_workdir_path(&path, repo, hint_path) < 0)
|
|
199
201
|
return -1;
|
|
200
202
|
|
|
201
203
|
content_path = path.ptr;
|
|
@@ -331,7 +333,8 @@ int git_blob_create_from_stream(git_writestream **out, git_repository *repo, con
|
|
|
331
333
|
git_buf path = GIT_BUF_INIT;
|
|
332
334
|
blob_writestream *stream;
|
|
333
335
|
|
|
334
|
-
|
|
336
|
+
GIT_ASSERT_ARG(out);
|
|
337
|
+
GIT_ASSERT_ARG(repo);
|
|
335
338
|
|
|
336
339
|
stream = git__calloc(1, sizeof(blob_writestream));
|
|
337
340
|
GIT_ERROR_CHECK_ALLOC(stream);
|
|
@@ -391,13 +394,22 @@ int git_blob_is_binary(const git_blob *blob)
|
|
|
391
394
|
git_buf content = GIT_BUF_INIT;
|
|
392
395
|
git_object_size_t size;
|
|
393
396
|
|
|
394
|
-
|
|
397
|
+
GIT_ASSERT_ARG(blob);
|
|
395
398
|
|
|
396
399
|
size = git_blob_rawsize(blob);
|
|
397
400
|
|
|
398
401
|
git_buf_attach_notowned(&content, git_blob_rawcontent(blob),
|
|
399
402
|
(size_t)min(size, GIT_FILTER_BYTES_TO_CHECK_NUL));
|
|
400
|
-
return
|
|
403
|
+
return git_buf_is_binary(&content);
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
int git_blob_filter_options_init(
|
|
407
|
+
git_blob_filter_options *opts,
|
|
408
|
+
unsigned int version)
|
|
409
|
+
{
|
|
410
|
+
GIT_INIT_STRUCTURE_FROM_TEMPLATE(opts, version,
|
|
411
|
+
git_blob_filter_options, GIT_BLOB_FILTER_OPTIONS_INIT);
|
|
412
|
+
return 0;
|
|
401
413
|
}
|
|
402
414
|
|
|
403
415
|
int git_blob_filter(
|
|
@@ -409,15 +421,18 @@ int git_blob_filter(
|
|
|
409
421
|
int error = 0;
|
|
410
422
|
git_filter_list *fl = NULL;
|
|
411
423
|
git_blob_filter_options opts = GIT_BLOB_FILTER_OPTIONS_INIT;
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
assert(blob && path && out);
|
|
424
|
+
git_filter_options filter_opts = GIT_FILTER_OPTIONS_INIT;
|
|
415
425
|
|
|
416
|
-
|
|
426
|
+
GIT_ASSERT_ARG(blob);
|
|
427
|
+
GIT_ASSERT_ARG(path);
|
|
428
|
+
GIT_ASSERT_ARG(out);
|
|
417
429
|
|
|
418
430
|
GIT_ERROR_CHECK_VERSION(
|
|
419
431
|
given_opts, GIT_BLOB_FILTER_OPTIONS_VERSION, "git_blob_filter_options");
|
|
420
432
|
|
|
433
|
+
if (git_buf_sanitize(out) < 0)
|
|
434
|
+
return -1;
|
|
435
|
+
|
|
421
436
|
if (given_opts != NULL)
|
|
422
437
|
memcpy(&opts, given_opts, sizeof(git_blob_filter_options));
|
|
423
438
|
|
|
@@ -426,14 +441,19 @@ int git_blob_filter(
|
|
|
426
441
|
return 0;
|
|
427
442
|
|
|
428
443
|
if ((opts.flags & GIT_BLOB_FILTER_NO_SYSTEM_ATTRIBUTES) != 0)
|
|
429
|
-
flags |= GIT_FILTER_NO_SYSTEM_ATTRIBUTES;
|
|
444
|
+
filter_opts.flags |= GIT_FILTER_NO_SYSTEM_ATTRIBUTES;
|
|
430
445
|
|
|
431
|
-
if ((opts.flags &
|
|
432
|
-
flags |= GIT_FILTER_ATTRIBUTES_FROM_HEAD;
|
|
446
|
+
if ((opts.flags & GIT_BLOB_FILTER_ATTRIBUTES_FROM_HEAD) != 0)
|
|
447
|
+
filter_opts.flags |= GIT_FILTER_ATTRIBUTES_FROM_HEAD;
|
|
448
|
+
|
|
449
|
+
if ((opts.flags & GIT_BLOB_FILTER_ATTRIBUTES_FROM_COMMIT) != 0) {
|
|
450
|
+
filter_opts.flags |= GIT_FILTER_ATTRIBUTES_FROM_COMMIT;
|
|
451
|
+
filter_opts.commit_id = opts.commit_id;
|
|
452
|
+
}
|
|
433
453
|
|
|
434
|
-
if (!(error =
|
|
454
|
+
if (!(error = git_filter_list_load_ext(
|
|
435
455
|
&fl, git_blob_owner(blob), blob, path,
|
|
436
|
-
GIT_FILTER_TO_WORKTREE,
|
|
456
|
+
GIT_FILTER_TO_WORKTREE, &filter_opts))) {
|
|
437
457
|
|
|
438
458
|
error = git_filter_list_apply_to_blob(out, fl, blob);
|
|
439
459
|
|
|
@@ -445,6 +465,7 @@ int git_blob_filter(
|
|
|
445
465
|
|
|
446
466
|
/* Deprecated functions */
|
|
447
467
|
|
|
468
|
+
#ifndef GIT_DEPRECATE_HARD
|
|
448
469
|
int git_blob_create_frombuffer(
|
|
449
470
|
git_oid *id, git_repository *repo, const void *buffer, size_t len)
|
|
450
471
|
{
|
|
@@ -491,3 +512,4 @@ int git_blob_filtered_content(
|
|
|
491
512
|
|
|
492
513
|
return git_blob_filter(out, blob, path, &opts);
|
|
493
514
|
}
|
|
515
|
+
#endif
|
data/vendor/libgit2/src/branch.c
CHANGED
|
@@ -67,8 +67,10 @@ static int create_branch(
|
|
|
67
67
|
int error = -1;
|
|
68
68
|
int bare = git_repository_is_bare(repository);
|
|
69
69
|
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
GIT_ASSERT_ARG(branch_name);
|
|
71
|
+
GIT_ASSERT_ARG(commit);
|
|
72
|
+
GIT_ASSERT_ARG(ref_out);
|
|
73
|
+
GIT_ASSERT_ARG(git_commit_owner(commit) == repository);
|
|
72
74
|
|
|
73
75
|
if (!git__strcmp(branch_name, "HEAD")) {
|
|
74
76
|
git_error_set(GIT_ERROR_REFERENCE, "'HEAD' is not a valid branch name");
|
|
@@ -134,39 +136,39 @@ int git_branch_create_from_annotated(
|
|
|
134
136
|
repository, branch_name, commit->commit, commit->description, force);
|
|
135
137
|
}
|
|
136
138
|
|
|
137
|
-
static int
|
|
139
|
+
static int branch_is_checked_out(git_repository *worktree, void *payload)
|
|
138
140
|
{
|
|
139
141
|
git_reference *branch = (git_reference *) payload;
|
|
140
142
|
git_reference *head = NULL;
|
|
141
|
-
int
|
|
143
|
+
int error;
|
|
142
144
|
|
|
143
|
-
if (
|
|
144
|
-
|
|
145
|
-
goto done;
|
|
145
|
+
if (git_repository_is_bare(worktree))
|
|
146
|
+
return 0;
|
|
146
147
|
|
|
147
|
-
|
|
148
|
+
if ((error = git_reference_lookup(&head, worktree, GIT_HEAD_FILE)) < 0) {
|
|
149
|
+
if (error == GIT_ENOTFOUND)
|
|
150
|
+
error = 0;
|
|
151
|
+
goto out;
|
|
152
|
+
}
|
|
148
153
|
|
|
149
|
-
|
|
154
|
+
if (git_reference_type(head) != GIT_REFERENCE_SYMBOLIC)
|
|
155
|
+
goto out;
|
|
156
|
+
|
|
157
|
+
error = !git__strcmp(head->target.symbolic, branch->name);
|
|
158
|
+
|
|
159
|
+
out:
|
|
150
160
|
git_reference_free(head);
|
|
151
|
-
return
|
|
161
|
+
return error;
|
|
152
162
|
}
|
|
153
163
|
|
|
154
164
|
int git_branch_is_checked_out(const git_reference *branch)
|
|
155
165
|
{
|
|
156
|
-
|
|
157
|
-
int flags = 0;
|
|
158
|
-
|
|
159
|
-
assert(branch);
|
|
166
|
+
GIT_ASSERT_ARG(branch);
|
|
160
167
|
|
|
161
168
|
if (!git_reference_is_branch(branch))
|
|
162
169
|
return 0;
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
if (git_repository_is_bare(repo))
|
|
167
|
-
flags |= GIT_REPOSITORY_FOREACH_HEAD_SKIP_REPO;
|
|
168
|
-
|
|
169
|
-
return git_repository_foreach_head(repo, branch_equals, flags, (void *) branch) == 1;
|
|
170
|
+
return git_repository_foreach_worktree(git_reference_owner(branch),
|
|
171
|
+
branch_is_checked_out, (void *)branch) == 1;
|
|
170
172
|
}
|
|
171
173
|
|
|
172
174
|
int git_branch_delete(git_reference *branch)
|
|
@@ -175,7 +177,7 @@ int git_branch_delete(git_reference *branch)
|
|
|
175
177
|
git_buf config_section = GIT_BUF_INIT;
|
|
176
178
|
int error = -1;
|
|
177
179
|
|
|
178
|
-
|
|
180
|
+
GIT_ASSERT_ARG(branch);
|
|
179
181
|
|
|
180
182
|
if (!git_reference_is_branch(branch) && !git_reference_is_remote(branch)) {
|
|
181
183
|
git_error_set(GIT_ERROR_INVALID, "reference '%s' is not a valid branch.",
|
|
@@ -290,7 +292,8 @@ int git_branch_move(
|
|
|
290
292
|
log_message = GIT_BUF_INIT;
|
|
291
293
|
int error;
|
|
292
294
|
|
|
293
|
-
|
|
295
|
+
GIT_ASSERT_ARG(branch);
|
|
296
|
+
GIT_ASSERT_ARG(new_branch_name);
|
|
294
297
|
|
|
295
298
|
if (!git_reference_is_branch(branch))
|
|
296
299
|
return not_a_local_branch(git_reference_name(branch));
|
|
@@ -335,7 +338,10 @@ int git_branch_lookup(
|
|
|
335
338
|
git_branch_t branch_type)
|
|
336
339
|
{
|
|
337
340
|
int error = -1;
|
|
338
|
-
|
|
341
|
+
|
|
342
|
+
GIT_ASSERT_ARG(ref_out);
|
|
343
|
+
GIT_ASSERT_ARG(repo);
|
|
344
|
+
GIT_ASSERT_ARG(branch_name);
|
|
339
345
|
|
|
340
346
|
switch (branch_type) {
|
|
341
347
|
case GIT_BRANCH_LOCAL:
|
|
@@ -348,7 +354,7 @@ int git_branch_lookup(
|
|
|
348
354
|
error = retrieve_branch_reference(ref_out, repo, branch_name, true);
|
|
349
355
|
break;
|
|
350
356
|
default:
|
|
351
|
-
|
|
357
|
+
GIT_ASSERT(false);
|
|
352
358
|
}
|
|
353
359
|
return error;
|
|
354
360
|
}
|
|
@@ -359,7 +365,8 @@ int git_branch_name(
|
|
|
359
365
|
{
|
|
360
366
|
const char *branch_name;
|
|
361
367
|
|
|
362
|
-
|
|
368
|
+
GIT_ASSERT_ARG(out);
|
|
369
|
+
GIT_ASSERT_ARG(ref);
|
|
363
370
|
|
|
364
371
|
branch_name = ref->name;
|
|
365
372
|
|
|
@@ -407,9 +414,11 @@ int git_branch_upstream_name(
|
|
|
407
414
|
const git_refspec *refspec;
|
|
408
415
|
git_config *config;
|
|
409
416
|
|
|
410
|
-
|
|
417
|
+
GIT_ASSERT_ARG(out);
|
|
418
|
+
GIT_ASSERT_ARG(refname);
|
|
411
419
|
|
|
412
|
-
git_buf_sanitize(out)
|
|
420
|
+
if ((error = git_buf_sanitize(out)) < 0)
|
|
421
|
+
return error;
|
|
413
422
|
|
|
414
423
|
if (!git_reference__is_branch(refname))
|
|
415
424
|
return not_a_local_branch(refname);
|
|
@@ -459,7 +468,7 @@ cleanup:
|
|
|
459
468
|
return error;
|
|
460
469
|
}
|
|
461
470
|
|
|
462
|
-
int
|
|
471
|
+
static int git_branch_upstream_with_format(git_buf *buf, git_repository *repo, const char *refname, const char *format, const char *format_name)
|
|
463
472
|
{
|
|
464
473
|
int error;
|
|
465
474
|
git_config *cfg;
|
|
@@ -470,13 +479,12 @@ int git_branch_upstream_remote(git_buf *buf, git_repository *repo, const char *r
|
|
|
470
479
|
if ((error = git_repository_config__weakptr(&cfg, repo)) < 0)
|
|
471
480
|
return error;
|
|
472
481
|
|
|
473
|
-
git_buf_sanitize(buf)
|
|
474
|
-
|
|
475
|
-
if ((error = retrieve_upstream_configuration(buf, cfg, refname, "branch.%s.remote")) < 0)
|
|
482
|
+
if ((error = git_buf_sanitize(buf)) < 0 ||
|
|
483
|
+
(error = retrieve_upstream_configuration(buf, cfg, refname, format)) < 0)
|
|
476
484
|
return error;
|
|
477
485
|
|
|
478
486
|
if (git_buf_len(buf) == 0) {
|
|
479
|
-
git_error_set(GIT_ERROR_REFERENCE, "branch '%s' does not have an upstream
|
|
487
|
+
git_error_set(GIT_ERROR_REFERENCE, "branch '%s' does not have an upstream %s", refname, format_name);
|
|
480
488
|
error = GIT_ENOTFOUND;
|
|
481
489
|
git_buf_clear(buf);
|
|
482
490
|
}
|
|
@@ -484,6 +492,16 @@ int git_branch_upstream_remote(git_buf *buf, git_repository *repo, const char *r
|
|
|
484
492
|
return error;
|
|
485
493
|
}
|
|
486
494
|
|
|
495
|
+
int git_branch_upstream_remote(git_buf *buf, git_repository *repo, const char *refname)
|
|
496
|
+
{
|
|
497
|
+
return git_branch_upstream_with_format(buf, repo, refname, "branch.%s.remote", "remote");
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
int git_branch_upstream_merge(git_buf *buf, git_repository *repo, const char *refname)
|
|
501
|
+
{
|
|
502
|
+
return git_branch_upstream_with_format(buf, repo, refname, "branch.%s.merge", "merge");
|
|
503
|
+
}
|
|
504
|
+
|
|
487
505
|
int git_branch_remote_name(git_buf *buf, git_repository *repo, const char *refname)
|
|
488
506
|
{
|
|
489
507
|
git_strarray remote_list = {0};
|
|
@@ -493,9 +511,12 @@ int git_branch_remote_name(git_buf *buf, git_repository *repo, const char *refna
|
|
|
493
511
|
int error = 0;
|
|
494
512
|
char *remote_name = NULL;
|
|
495
513
|
|
|
496
|
-
|
|
514
|
+
GIT_ASSERT_ARG(buf);
|
|
515
|
+
GIT_ASSERT_ARG(repo);
|
|
516
|
+
GIT_ASSERT_ARG(refname);
|
|
497
517
|
|
|
498
|
-
git_buf_sanitize(buf)
|
|
518
|
+
if ((error = git_buf_sanitize(buf)) < 0)
|
|
519
|
+
return error;
|
|
499
520
|
|
|
500
521
|
/* Verify that this is a remote branch */
|
|
501
522
|
if (!git_reference__is_remote(refname)) {
|
|
@@ -548,7 +569,7 @@ cleanup:
|
|
|
548
569
|
if (error < 0)
|
|
549
570
|
git_buf_dispose(buf);
|
|
550
571
|
|
|
551
|
-
|
|
572
|
+
git_strarray_dispose(&remote_list);
|
|
552
573
|
return error;
|
|
553
574
|
}
|
|
554
575
|
|
|
@@ -704,7 +725,7 @@ int git_branch_is_head(
|
|
|
704
725
|
bool is_same = false;
|
|
705
726
|
int error;
|
|
706
727
|
|
|
707
|
-
|
|
728
|
+
GIT_ASSERT_ARG(branch);
|
|
708
729
|
|
|
709
730
|
if (!git_reference_is_branch(branch))
|
|
710
731
|
return false;
|
|
@@ -725,3 +746,32 @@ int git_branch_is_head(
|
|
|
725
746
|
|
|
726
747
|
return is_same;
|
|
727
748
|
}
|
|
749
|
+
|
|
750
|
+
int git_branch_name_is_valid(int *valid, const char *name)
|
|
751
|
+
{
|
|
752
|
+
git_buf ref_name = GIT_BUF_INIT;
|
|
753
|
+
int error = 0;
|
|
754
|
+
|
|
755
|
+
GIT_ASSERT(valid);
|
|
756
|
+
|
|
757
|
+
*valid = 0;
|
|
758
|
+
|
|
759
|
+
/*
|
|
760
|
+
* Discourage branch name starting with dash,
|
|
761
|
+
* https://github.com/git/git/commit/6348624010888b
|
|
762
|
+
* and discourage HEAD as branch name,
|
|
763
|
+
* https://github.com/git/git/commit/a625b092cc5994
|
|
764
|
+
*/
|
|
765
|
+
if (!name || name[0] == '-' || !git__strcmp(name, "HEAD"))
|
|
766
|
+
goto done;
|
|
767
|
+
|
|
768
|
+
if ((error = git_buf_puts(&ref_name, GIT_REFS_HEADS_DIR)) < 0 ||
|
|
769
|
+
(error = git_buf_puts(&ref_name, name)) < 0)
|
|
770
|
+
goto done;
|
|
771
|
+
|
|
772
|
+
error = git_reference_name_is_valid(valid, ref_name.ptr);
|
|
773
|
+
|
|
774
|
+
done:
|
|
775
|
+
git_buf_dispose(&ref_name);
|
|
776
|
+
return error;
|
|
777
|
+
}
|