rugged 1.4.5 → 1.5.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/README.md +34 -2
- data/ext/rugged/extconf.rb +1 -0
- data/ext/rugged/rugged.c +16 -0
- data/ext/rugged/rugged.h +4 -0
- data/ext/rugged/rugged_remote.c +10 -10
- data/ext/rugged/rugged_repo.c +2 -7
- data/ext/rugged/rugged_settings.c +5 -0
- data/lib/rugged/tree.rb +4 -0
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +16 -3
- data/vendor/libgit2/COPYING +40 -0
- data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
- data/vendor/libgit2/cmake/FindPCRE.cmake +3 -4
- data/vendor/libgit2/cmake/FindPCRE2.cmake +1 -1
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +1 -1
- data/vendor/libgit2/cmake/SelectHashes.cmake +62 -14
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +3 -1
- data/vendor/libgit2/include/git2/branch.h +2 -2
- data/vendor/libgit2/include/git2/common.h +11 -0
- data/vendor/libgit2/include/git2/config.h +6 -6
- data/vendor/libgit2/include/git2/deprecated.h +2 -0
- data/vendor/libgit2/include/git2/errors.h +17 -3
- data/vendor/libgit2/include/git2/merge.h +1 -1
- data/vendor/libgit2/include/git2/status.h +5 -2
- data/vendor/libgit2/include/git2/sys/remote.h +15 -0
- data/vendor/libgit2/include/git2/sys/transport.h +9 -5
- data/vendor/libgit2/include/git2/version.h +27 -6
- data/vendor/libgit2/src/CMakeLists.txt +104 -214
- data/vendor/libgit2/src/README.md +12 -0
- data/vendor/libgit2/src/cli/CMakeLists.txt +53 -0
- data/vendor/libgit2/src/cli/README.md +26 -0
- data/vendor/libgit2/src/cli/cli.h +20 -0
- data/vendor/libgit2/src/cli/cmd.c +21 -0
- data/vendor/libgit2/src/cli/cmd.h +33 -0
- data/vendor/libgit2/src/cli/cmd_cat_file.c +204 -0
- data/vendor/libgit2/src/cli/cmd_clone.c +176 -0
- data/vendor/libgit2/src/cli/cmd_hash_object.c +135 -0
- data/vendor/libgit2/src/cli/cmd_help.c +86 -0
- data/vendor/libgit2/src/cli/error.h +51 -0
- data/vendor/libgit2/src/cli/main.c +106 -0
- data/vendor/libgit2/src/cli/opt.c +669 -0
- data/vendor/libgit2/src/cli/opt.h +349 -0
- data/vendor/libgit2/src/cli/opt_usage.c +194 -0
- data/vendor/libgit2/src/cli/opt_usage.h +35 -0
- data/vendor/libgit2/src/cli/progress.c +345 -0
- data/vendor/libgit2/src/cli/progress.h +117 -0
- data/vendor/libgit2/src/cli/sighandler.h +20 -0
- data/vendor/libgit2/src/cli/unix/sighandler.c +36 -0
- data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
- data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
- data/vendor/libgit2/src/features.h.in +9 -0
- data/vendor/libgit2/src/libgit2/CMakeLists.txt +131 -0
- data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +1 -1
- data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +14 -9
- data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +20 -17
- data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +1 -1
- data/vendor/libgit2/src/libgit2/common.h +55 -0
- data/vendor/libgit2/src/{config.c → libgit2/config.c} +2 -2
- data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +1 -1
- data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +1 -0
- data/vendor/libgit2/src/{errors.h → libgit2/errors.h} +1 -2
- data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +31 -1
- data/vendor/libgit2/src/{index.c → libgit2/index.c} +6 -6
- data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +2 -2
- data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +3 -3
- data/vendor/libgit2/src/{libgit2.c → libgit2/libgit2.c} +5 -0
- data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +20 -23
- data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +2 -1
- data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +9 -9
- data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +1 -1
- data/vendor/libgit2/src/{netops.c → libgit2/netops.c} +0 -1
- data/vendor/libgit2/src/{object.c → libgit2/object.c} +1 -0
- data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +2 -2
- data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +2 -21
- data/vendor/libgit2/src/{oid.h → libgit2/oid.h} +35 -2
- data/vendor/libgit2/src/{oidmap.c → libgit2/oidmap.c} +1 -1
- data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +24 -18
- data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +3 -2
- data/vendor/libgit2/src/{path.c → libgit2/path.c} +1 -0
- data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +11 -1
- data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +6 -2
- data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +1 -1
- data/vendor/libgit2/src/{remote.h → libgit2/remote.h} +1 -1
- data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +1 -0
- data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +15 -5
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +1 -1
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +12 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.c +91 -326
- data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +1 -1
- data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +16 -23
- data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +1 -1
- data/vendor/libgit2/src/util/CMakeLists.txt +74 -0
- data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.h +1 -1
- data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
- data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{array.h → util/array.h} +1 -1
- data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
- data/vendor/libgit2/src/{date.c → util/date.c} +4 -3
- data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +1 -1
- data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +1 -1
- data/vendor/libgit2/src/{fs_path.c → util/fs_path.c} +17 -11
- data/vendor/libgit2/src/{fs_path.h → util/fs_path.h} +1 -1
- data/vendor/libgit2/src/{futils.c → util/futils.c} +44 -2
- data/vendor/libgit2/src/{futils.h → util/futils.h} +2 -1
- data/vendor/libgit2/src/{common.h → util/git2_util.h} +13 -59
- data/vendor/libgit2/src/util/hash/builtin.c +53 -0
- data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +1 -1
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.c +55 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.c +46 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
- data/vendor/libgit2/src/util/hash/openssl.c +194 -0
- data/vendor/libgit2/src/util/hash/openssl.h +45 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha.h +355 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
- data/vendor/libgit2/src/util/hash/sha.h +70 -0
- data/vendor/libgit2/src/util/hash/win32.c +549 -0
- data/vendor/libgit2/src/util/hash/win32.h +60 -0
- data/vendor/libgit2/src/{hash.c → util/hash.c} +17 -1
- data/vendor/libgit2/src/{hash.h → util/hash.h} +5 -3
- data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
- data/vendor/libgit2/src/{net.c → util/net.c} +0 -1
- data/vendor/libgit2/src/{net.h → util/net.h} +1 -1
- data/vendor/libgit2/src/{pool.h → util/pool.h} +1 -1
- data/vendor/libgit2/src/{posix.h → util/posix.h} +1 -1
- data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +1 -1
- data/vendor/libgit2/src/{rand.c → util/rand.c} +7 -3
- data/vendor/libgit2/src/{rand.h → util/rand.h} +1 -1
- data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
- data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
- data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
- data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +1 -1
- data/vendor/libgit2/src/{str.h → util/str.h} +1 -1
- data/vendor/libgit2/src/{strmap.h → util/strmap.h} +1 -1
- data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
- data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
- data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -1
- data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -1
- data/vendor/libgit2/src/{unix → util/unix}/realpath.c +1 -1
- data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
- data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
- data/vendor/libgit2/src/{util.c → util/util.c} +1 -1
- data/vendor/libgit2/src/{util.h → util/util.h} +1 -1
- data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
- data/vendor/libgit2/src/{vector.h → util/vector.h} +1 -1
- data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/findfile.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +1 -1
- data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
- data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
- data/vendor/libgit2/src/{zstream.h → util/zstream.h} +1 -1
- metadata +390 -361
- data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
- data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
- data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
- data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
- data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
- data/vendor/libgit2/src/hash/sha1.h +0 -40
- /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
- /data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +0 -0
- /data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +0 -0
- /data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +0 -0
- /data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +0 -0
- /data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +0 -0
- /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
- /data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +0 -0
- /data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +0 -0
- /data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +0 -0
- /data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +0 -0
- /data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +0 -0
- /data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +0 -0
- /data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +0 -0
- /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
- /data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +0 -0
- /data/vendor/libgit2/src/{branch.h → libgit2/branch.h} +0 -0
- /data/vendor/libgit2/src/{buf.c → libgit2/buf.c} +0 -0
- /data/vendor/libgit2/src/{buf.h → libgit2/buf.h} +0 -0
- /data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +0 -0
- /data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +0 -0
- /data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +0 -0
- /data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -0
- /data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +0 -0
- /data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +0 -0
- /data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +0 -0
- /data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +0 -0
- /data/vendor/libgit2/src/{commit.h → libgit2/commit.h} +0 -0
- /data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +0 -0
- /data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +0 -0
- /data/vendor/libgit2/src/{config.h → libgit2/config.h} +0 -0
- /data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +0 -0
- /data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +0 -0
- /data/vendor/libgit2/src/{config_entries.c → libgit2/config_entries.c} +0 -0
- /data/vendor/libgit2/src/{config_entries.h → libgit2/config_entries.h} +0 -0
- /data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +0 -0
- /data/vendor/libgit2/src/{config_mem.c → libgit2/config_mem.c} +0 -0
- /data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +0 -0
- /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
- /data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +0 -0
- /data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +0 -0
- /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
- /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
- /data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +0 -0
- /data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +0 -0
- /data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +0 -0
- /data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +0 -0
- /data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +0 -0
- /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
- /data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +0 -0
- /data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +0 -0
- /data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +0 -0
- /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
- /data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +0 -0
- /data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +0 -0
- /data/vendor/libgit2/src/{diff_stats.h → libgit2/diff_stats.h} +0 -0
- /data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +0 -0
- /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
- /data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +0 -0
- /data/vendor/libgit2/src/{email.c → libgit2/email.c} +0 -0
- /data/vendor/libgit2/src/{email.h → libgit2/email.h} +0 -0
- /data/vendor/libgit2/src/{errors.c → libgit2/errors.c} +0 -0
- /data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +0 -0
- /data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +0 -0
- /data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +0 -0
- /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
- /data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +0 -0
- /data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +0 -0
- /data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +0 -0
- /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
- /data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +0 -0
- /data/vendor/libgit2/src/{idxmap.c → libgit2/idxmap.c} +0 -0
- /data/vendor/libgit2/src/{idxmap.h → libgit2/idxmap.h} +0 -0
- /data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +0 -0
- /data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +0 -0
- /data/vendor/libgit2/src/{index.h → libgit2/index.h} +0 -0
- /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
- /data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +0 -0
- /data/vendor/libgit2/src/{libgit2.h → libgit2/libgit2.h} +0 -0
- /data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +0 -0
- /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
- /data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +0 -0
- /data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +0 -0
- /data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +0 -0
- /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
- /data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +0 -0
- /data/vendor/libgit2/src/{message.c → libgit2/message.c} +0 -0
- /data/vendor/libgit2/src/{netops.h → libgit2/netops.h} +0 -0
- /data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +0 -0
- /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
- /data/vendor/libgit2/src/{object.h → libgit2/object.h} +0 -0
- /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
- /data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +0 -0
- /data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +0 -0
- /data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +0 -0
- /data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +0 -0
- /data/vendor/libgit2/src/{offmap.c → libgit2/offmap.c} +0 -0
- /data/vendor/libgit2/src/{offmap.h → libgit2/offmap.h} +0 -0
- /data/vendor/libgit2/src/{oidarray.c → libgit2/oidarray.c} +0 -0
- /data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +0 -0
- /data/vendor/libgit2/src/{oidmap.h → libgit2/oidmap.h} +0 -0
- /data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +0 -0
- /data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +0 -0
- /data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +0 -0
- /data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +0 -0
- /data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +0 -0
- /data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +0 -0
- /data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +0 -0
- /data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +0 -0
- /data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +0 -0
- /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
- /data/vendor/libgit2/src/{path.h → libgit2/path.h} +0 -0
- /data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +0 -0
- /data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +0 -0
- /data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +0 -0
- /data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +0 -0
- /data/vendor/libgit2/src/{push.c → libgit2/push.c} +0 -0
- /data/vendor/libgit2/src/{push.h → libgit2/push.h} +0 -0
- /data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +0 -0
- /data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +0 -0
- /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
- /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
- /data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +0 -0
- /data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +0 -0
- /data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +0 -0
- /data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +0 -0
- /data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +0 -0
- /data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +0 -0
- /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
- /data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +0 -0
- /data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +0 -0
- /data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +0 -0
- /data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +0 -0
- /data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +0 -0
- /data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +0 -0
- /data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +0 -0
- /data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +0 -0
- /data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +0 -0
- /data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +0 -0
- /data/vendor/libgit2/src/{status.c → libgit2/status.c} +0 -0
- /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
- /data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +0 -0
- /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/socket.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
- /data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +0 -0
- /data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +0 -0
- /data/vendor/libgit2/src/{sysdir.c → libgit2/sysdir.c} +0 -0
- /data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +0 -0
- /data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +0 -0
- /data/vendor/libgit2/src/{threadstate.c → libgit2/threadstate.c} +0 -0
- /data/vendor/libgit2/src/{threadstate.h → libgit2/threadstate.h} +0 -0
- /data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +0 -0
- /data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +0 -0
- /data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +0 -0
- /data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +0 -0
- /data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +0 -0
- /data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +0 -0
- /data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +0 -0
- /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
- /data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +0 -0
- /data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/git-xdiff.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiff.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.c +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.c +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xhistogram.c +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xinclude.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmacros.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmerge.c +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xpatience.c +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.c +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xtypes.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.c +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.h +0 -0
- /data/vendor/libgit2/src/{alloc.c → util/alloc.c} +0 -0
- /data/vendor/libgit2/src/{alloc.h → util/alloc.h} +0 -0
- /data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.c +0 -0
- /data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.c +0 -0
- /data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.c +0 -0
- /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
- /data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +0 -0
- /data/vendor/libgit2/src/{date.h → util/date.h} +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
- /data/vendor/libgit2/src/{integer.h → util/integer.h} +0 -0
- /data/vendor/libgit2/src/{khash.h → util/khash.h} +0 -0
- /data/vendor/libgit2/src/{pool.c → util/pool.c} +0 -0
- /data/vendor/libgit2/src/{posix.c → util/posix.c} +0 -0
- /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
- /data/vendor/libgit2/src/{regexp.c → util/regexp.c} +0 -0
- /data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +0 -0
- /data/vendor/libgit2/src/{str.c → util/str.c} +0 -0
- /data/vendor/libgit2/src/{strmap.c → util/strmap.c} +0 -0
- /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
- /data/vendor/libgit2/src/{thread.h → util/thread.h} +0 -0
- /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
- /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
- /data/vendor/libgit2/src/{vector.c → util/vector.c} +0 -0
- /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/error.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/findfile.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
- /data/vendor/libgit2/src/{zstream.c → util/zstream.c} +0 -0
@@ -101,7 +101,7 @@ static int write_file_stream(
|
|
101
101
|
git_oid *id, git_odb *odb, const char *path, git_object_size_t file_size)
|
102
102
|
{
|
103
103
|
int fd, error;
|
104
|
-
char buffer[
|
104
|
+
char buffer[GIT_BUFSIZE_FILEIO];
|
105
105
|
git_odb_stream *stream = NULL;
|
106
106
|
ssize_t read_len = -1;
|
107
107
|
git_object_size_t written = 0;
|
@@ -53,6 +53,17 @@ static int not_a_local_branch(const char *reference_name)
|
|
53
53
|
return -1;
|
54
54
|
}
|
55
55
|
|
56
|
+
static bool branch_name_is_valid(const char *branch_name)
|
57
|
+
{
|
58
|
+
/*
|
59
|
+
* Discourage branch name starting with dash,
|
60
|
+
* https://github.com/git/git/commit/6348624010888b
|
61
|
+
* and discourage HEAD as branch name,
|
62
|
+
* https://github.com/git/git/commit/a625b092cc5994
|
63
|
+
*/
|
64
|
+
return branch_name[0] != '-' && git__strcmp(branch_name, "HEAD");
|
65
|
+
}
|
66
|
+
|
56
67
|
static int create_branch(
|
57
68
|
git_reference **ref_out,
|
58
69
|
git_repository *repository,
|
@@ -73,8 +84,8 @@ static int create_branch(
|
|
73
84
|
GIT_ASSERT_ARG(ref_out);
|
74
85
|
GIT_ASSERT_ARG(git_commit_owner(commit) == repository);
|
75
86
|
|
76
|
-
if (!
|
77
|
-
git_error_set(GIT_ERROR_REFERENCE, "'
|
87
|
+
if (!branch_name_is_valid(branch_name)) {
|
88
|
+
git_error_set(GIT_ERROR_REFERENCE, "'%s' is not a valid branch name", branch_name);
|
78
89
|
error = -1;
|
79
90
|
goto cleanup;
|
80
91
|
}
|
@@ -797,13 +808,7 @@ int git_branch_name_is_valid(int *valid, const char *name)
|
|
797
808
|
|
798
809
|
*valid = 0;
|
799
810
|
|
800
|
-
|
801
|
-
* Discourage branch name starting with dash,
|
802
|
-
* https://github.com/git/git/commit/6348624010888b
|
803
|
-
* and discourage HEAD as branch name,
|
804
|
-
* https://github.com/git/git/commit/a625b092cc5994
|
805
|
-
*/
|
806
|
-
if (!name || name[0] == '-' || !git__strcmp(name, "HEAD"))
|
811
|
+
if (!name || !branch_name_is_valid(name))
|
807
812
|
goto done;
|
808
813
|
|
809
814
|
if ((error = git_str_puts(&ref_name, GIT_REFS_HEADS_DIR)) < 0 ||
|
@@ -138,7 +138,7 @@ static int commit_graph_parse_oid_lookup(
|
|
138
138
|
struct git_commit_graph_chunk *chunk_oid_lookup)
|
139
139
|
{
|
140
140
|
uint32_t i;
|
141
|
-
|
141
|
+
unsigned char *oid, *prev_oid, zero_oid[GIT_OID_RAWSZ] = {0};
|
142
142
|
|
143
143
|
if (chunk_oid_lookup->offset == 0)
|
144
144
|
return commit_graph_error("missing OID Lookup chunk");
|
@@ -147,10 +147,10 @@ static int commit_graph_parse_oid_lookup(
|
|
147
147
|
if (chunk_oid_lookup->length != file->num_commits * GIT_OID_RAWSZ)
|
148
148
|
return commit_graph_error("OID Lookup chunk has wrong length");
|
149
149
|
|
150
|
-
file->oid_lookup = oid = (
|
151
|
-
prev_oid =
|
152
|
-
for (i = 0; i < file->num_commits; ++i,
|
153
|
-
if (
|
150
|
+
file->oid_lookup = oid = (unsigned char *)(data + chunk_oid_lookup->offset);
|
151
|
+
prev_oid = zero_oid;
|
152
|
+
for (i = 0; i < file->num_commits; ++i, oid += GIT_OID_RAWSZ) {
|
153
|
+
if (git_oid_raw_cmp(prev_oid, oid) >= 0)
|
154
154
|
return commit_graph_error("OID Lookup index is non-monotonic");
|
155
155
|
prev_oid = oid;
|
156
156
|
}
|
@@ -437,7 +437,7 @@ static int git_commit_graph_entry_get_byindex(
|
|
437
437
|
}
|
438
438
|
|
439
439
|
commit_data = file->commit_data + pos * (GIT_OID_RAWSZ + 4 * sizeof(uint32_t));
|
440
|
-
|
440
|
+
git_oid_fromraw(&e->tree_oid, commit_data);
|
441
441
|
e->parent_indices[0] = ntohl(*((uint32_t *)(commit_data + GIT_OID_RAWSZ)));
|
442
442
|
e->parent_indices[1] = ntohl(
|
443
443
|
*((uint32_t *)(commit_data + GIT_OID_RAWSZ + sizeof(uint32_t))));
|
@@ -470,7 +470,8 @@ static int git_commit_graph_entry_get_byindex(
|
|
470
470
|
e->parent_count++;
|
471
471
|
}
|
472
472
|
}
|
473
|
-
|
473
|
+
|
474
|
+
git_oid_fromraw(&e->sha1, &file->oid_lookup[pos * GIT_OID_RAWSZ]);
|
474
475
|
return 0;
|
475
476
|
}
|
476
477
|
|
@@ -514,7 +515,7 @@ int git_commit_graph_entry_find(
|
|
514
515
|
{
|
515
516
|
int pos, found = 0;
|
516
517
|
uint32_t hi, lo;
|
517
|
-
const
|
518
|
+
const unsigned char *current = NULL;
|
518
519
|
|
519
520
|
GIT_ASSERT_ARG(e);
|
520
521
|
GIT_ASSERT_ARG(file);
|
@@ -528,26 +529,25 @@ int git_commit_graph_entry_find(
|
|
528
529
|
if (pos >= 0) {
|
529
530
|
/* An object matching exactly the oid was found */
|
530
531
|
found = 1;
|
531
|
-
current = file->oid_lookup + pos;
|
532
|
+
current = file->oid_lookup + (pos * GIT_OID_RAWSZ);
|
532
533
|
} else {
|
533
534
|
/* No object was found */
|
534
535
|
/* pos refers to the object with the "closest" oid to short_oid */
|
535
536
|
pos = -1 - pos;
|
536
537
|
if (pos < (int)file->num_commits) {
|
537
|
-
current = file->oid_lookup + pos;
|
538
|
+
current = file->oid_lookup + (pos * GIT_OID_RAWSZ);
|
538
539
|
|
539
|
-
if (!
|
540
|
+
if (!git_oid_raw_ncmp(short_oid->id, current, len))
|
540
541
|
found = 1;
|
541
542
|
}
|
542
543
|
}
|
543
544
|
|
544
545
|
if (found && len != GIT_OID_HEXSZ && pos + 1 < (int)file->num_commits) {
|
545
546
|
/* Check for ambiguousity */
|
546
|
-
const
|
547
|
+
const unsigned char *next = current + GIT_OID_RAWSZ;
|
547
548
|
|
548
|
-
if (!
|
549
|
+
if (!git_oid_raw_ncmp(short_oid->id, next, len))
|
549
550
|
found = 2;
|
550
|
-
}
|
551
551
|
}
|
552
552
|
|
553
553
|
if (!found)
|
@@ -1019,7 +1019,9 @@ static int commit_graph_write(
|
|
1019
1019
|
/* Fill the OID Lookup table. */
|
1020
1020
|
git_vector_foreach (&w->commits, i, packed_commit) {
|
1021
1021
|
error = git_str_put(&oid_lookup,
|
1022
|
-
(const char *)&packed_commit->sha1,
|
1022
|
+
(const char *)&packed_commit->sha1.id,
|
1023
|
+
GIT_OID_RAWSZ);
|
1024
|
+
|
1023
1025
|
if (error < 0)
|
1024
1026
|
goto cleanup;
|
1025
1027
|
}
|
@@ -1034,8 +1036,9 @@ static int commit_graph_write(
|
|
1034
1036
|
unsigned int parentcount = (unsigned int)git_array_size(packed_commit->parents);
|
1035
1037
|
|
1036
1038
|
error = git_str_put(&commit_data,
|
1037
|
-
|
1038
|
-
|
1039
|
+
(const char *)&packed_commit->tree_oid.id,
|
1040
|
+
GIT_OID_RAWSZ);
|
1041
|
+
|
1039
1042
|
if (error < 0)
|
1040
1043
|
goto cleanup;
|
1041
1044
|
|
@@ -0,0 +1,55 @@
|
|
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
|
+
#ifndef INCLUDE_common_h__
|
8
|
+
#define INCLUDE_common_h__
|
9
|
+
|
10
|
+
#include "git2_util.h"
|
11
|
+
#include "errors.h"
|
12
|
+
|
13
|
+
/*
|
14
|
+
* Include the declarations for deprecated functions; this ensures
|
15
|
+
* that they're decorated with the proper extern/visibility attributes.
|
16
|
+
*/
|
17
|
+
#include "git2/deprecated.h"
|
18
|
+
|
19
|
+
#include "posix.h"
|
20
|
+
|
21
|
+
/**
|
22
|
+
* Initialize a structure with a version.
|
23
|
+
*/
|
24
|
+
GIT_INLINE(void) git__init_structure(void *structure, size_t len, unsigned int version)
|
25
|
+
{
|
26
|
+
memset(structure, 0, len);
|
27
|
+
*((int*)structure) = version;
|
28
|
+
}
|
29
|
+
#define GIT_INIT_STRUCTURE(S,V) git__init_structure(S, sizeof(*S), V)
|
30
|
+
|
31
|
+
#define GIT_INIT_STRUCTURE_FROM_TEMPLATE(PTR,VERSION,TYPE,TPL) do { \
|
32
|
+
TYPE _tmpl = TPL; \
|
33
|
+
GIT_ERROR_CHECK_VERSION(&(VERSION), _tmpl.version, #TYPE); \
|
34
|
+
memcpy((PTR), &_tmpl, sizeof(_tmpl)); } while (0)
|
35
|
+
|
36
|
+
/**
|
37
|
+
* Check a versioned structure for validity
|
38
|
+
*/
|
39
|
+
GIT_INLINE(int) git_error__check_version(const void *structure, unsigned int expected_max, const char *name)
|
40
|
+
{
|
41
|
+
unsigned int actual;
|
42
|
+
|
43
|
+
if (!structure)
|
44
|
+
return 0;
|
45
|
+
|
46
|
+
actual = *(const unsigned int*)structure;
|
47
|
+
if (actual > 0 && actual <= expected_max)
|
48
|
+
return 0;
|
49
|
+
|
50
|
+
git_error_set(GIT_ERROR_INVALID, "invalid version %d on %s", actual, name);
|
51
|
+
return -1;
|
52
|
+
}
|
53
|
+
#define GIT_ERROR_CHECK_VERSION(S,V,N) if (git_error__check_version(S,V,N) < 0) return -1
|
54
|
+
|
55
|
+
#endif
|
@@ -1137,7 +1137,7 @@ int git_config__find_global(git_str *path)
|
|
1137
1137
|
|
1138
1138
|
int git_config_find_xdg(git_buf *path)
|
1139
1139
|
{
|
1140
|
-
GIT_BUF_WRAP_PRIVATE(path,
|
1140
|
+
GIT_BUF_WRAP_PRIVATE(path, git_sysdir_find_xdg_file, GIT_CONFIG_FILENAME_XDG);
|
1141
1141
|
}
|
1142
1142
|
|
1143
1143
|
int git_config__find_xdg(git_str *path)
|
@@ -1147,7 +1147,7 @@ int git_config__find_xdg(git_str *path)
|
|
1147
1147
|
|
1148
1148
|
int git_config_find_system(git_buf *path)
|
1149
1149
|
{
|
1150
|
-
GIT_BUF_WRAP_PRIVATE(path,
|
1150
|
+
GIT_BUF_WRAP_PRIVATE(path, git_sysdir_find_system_file, GIT_CONFIG_FILENAME_SYSTEM);
|
1151
1151
|
}
|
1152
1152
|
|
1153
1153
|
int git_config__find_system(git_str *path)
|
@@ -11,9 +11,8 @@
|
|
11
11
|
#include "common.h"
|
12
12
|
|
13
13
|
/*
|
14
|
-
*
|
14
|
+
* `vprintf`-style formatting for the error message for this thread.
|
15
15
|
*/
|
16
|
-
void git_error_set(int error_class, const char *fmt, ...) GIT_FORMAT_PRINTF(2, 3);
|
17
16
|
void git_error_vset(int error_class, const char *fmt, va_list ap);
|
18
17
|
|
19
18
|
/**
|
@@ -893,6 +893,17 @@ static int buffered_stream_write(
|
|
893
893
|
return git_str_put(&buffered_stream->input, buffer, len);
|
894
894
|
}
|
895
895
|
|
896
|
+
#ifndef GIT_DEPRECATE_HARD
|
897
|
+
# define BUF_TO_STRUCT(b, s) \
|
898
|
+
(b)->ptr = (s)->ptr; \
|
899
|
+
(b)->size = (s)->size; \
|
900
|
+
(b)->reserved = (s)->asize;
|
901
|
+
# define STRUCT_TO_BUF(s, b) \
|
902
|
+
(s)->ptr = (b)->ptr; \
|
903
|
+
(s)->size = (b)->size; \
|
904
|
+
(s)->asize = (b)->reserved;
|
905
|
+
#endif
|
906
|
+
|
896
907
|
static int buffered_stream_close(git_writestream *s)
|
897
908
|
{
|
898
909
|
struct buffered_stream *buffered_stream = (struct buffered_stream *)s;
|
@@ -902,6 +913,25 @@ static int buffered_stream_close(git_writestream *s)
|
|
902
913
|
|
903
914
|
GIT_ASSERT_ARG(buffered_stream);
|
904
915
|
|
916
|
+
#ifndef GIT_DEPRECATE_HARD
|
917
|
+
if (buffered_stream->write_fn == NULL) {
|
918
|
+
git_buf legacy_output = GIT_BUF_INIT,
|
919
|
+
legacy_input = GIT_BUF_INIT;
|
920
|
+
|
921
|
+
BUF_TO_STRUCT(&legacy_output, buffered_stream->output);
|
922
|
+
BUF_TO_STRUCT(&legacy_input, &buffered_stream->input);
|
923
|
+
|
924
|
+
error = buffered_stream->legacy_write_fn(
|
925
|
+
buffered_stream->filter,
|
926
|
+
buffered_stream->payload,
|
927
|
+
&legacy_output,
|
928
|
+
&legacy_input,
|
929
|
+
buffered_stream->source);
|
930
|
+
|
931
|
+
STRUCT_TO_BUF(buffered_stream->output, &legacy_output);
|
932
|
+
STRUCT_TO_BUF(&buffered_stream->input, &legacy_input);
|
933
|
+
} else
|
934
|
+
#endif
|
905
935
|
error = buffered_stream->write_fn(
|
906
936
|
buffered_stream->filter,
|
907
937
|
buffered_stream->payload,
|
@@ -1085,7 +1115,7 @@ int git_filter_list_stream_file(
|
|
1085
1115
|
const char *path,
|
1086
1116
|
git_writestream *target)
|
1087
1117
|
{
|
1088
|
-
char buf[
|
1118
|
+
char buf[GIT_BUFSIZE_FILTERIO];
|
1089
1119
|
git_str abspath = GIT_STR_INIT;
|
1090
1120
|
const char *base = repo ? git_repository_workdir(repo) : NULL;
|
1091
1121
|
git_vector filter_streams = GIT_VECTOR_INIT;
|
@@ -74,7 +74,7 @@ struct entry_short {
|
|
74
74
|
uint32_t uid;
|
75
75
|
uint32_t gid;
|
76
76
|
uint32_t file_size;
|
77
|
-
|
77
|
+
unsigned char oid[GIT_OID_RAWSZ];
|
78
78
|
uint16_t flags;
|
79
79
|
char path[1]; /* arbitrary length */
|
80
80
|
};
|
@@ -88,7 +88,7 @@ struct entry_long {
|
|
88
88
|
uint32_t uid;
|
89
89
|
uint32_t gid;
|
90
90
|
uint32_t file_size;
|
91
|
-
|
91
|
+
unsigned char oid[GIT_OID_RAWSZ];
|
92
92
|
uint16_t flags;
|
93
93
|
uint16_t flags_extended;
|
94
94
|
char path[1]; /* arbitrary length */
|
@@ -2480,9 +2480,11 @@ static int read_entry(
|
|
2480
2480
|
entry.uid = ntohl(source.uid);
|
2481
2481
|
entry.gid = ntohl(source.gid);
|
2482
2482
|
entry.file_size = ntohl(source.file_size);
|
2483
|
-
git_oid_cpy(&entry.id, &source.oid);
|
2484
2483
|
entry.flags = ntohs(source.flags);
|
2485
2484
|
|
2485
|
+
if (git_oid_fromraw(&entry.id, source.oid) < 0)
|
2486
|
+
return -1;
|
2487
|
+
|
2486
2488
|
if (entry.flags & GIT_INDEX_ENTRY_EXTENDED) {
|
2487
2489
|
uint16_t flags_raw;
|
2488
2490
|
size_t flags_offset;
|
@@ -2803,9 +2805,7 @@ static int write_disk_entry(git_filebuf *file, git_index_entry *entry, const cha
|
|
2803
2805
|
ondisk.uid = htonl(entry->uid);
|
2804
2806
|
ondisk.gid = htonl(entry->gid);
|
2805
2807
|
ondisk.file_size = htonl((uint32_t)entry->file_size);
|
2806
|
-
|
2807
|
-
git_oid_cpy(&ondisk.oid, &entry->id);
|
2808
|
-
|
2808
|
+
git_oid_raw_cpy(ondisk.oid, entry->id.id);
|
2809
2809
|
ondisk.flags = htons(entry->flags);
|
2810
2810
|
|
2811
2811
|
if (entry->flags & GIT_INDEX_ENTRY_EXTENDED) {
|
@@ -385,7 +385,7 @@ static int check_object_connectivity(git_indexer *idx, const git_rawobj *obj)
|
|
385
385
|
size_t i;
|
386
386
|
|
387
387
|
git_array_foreach(tree->entries, i, entry)
|
388
|
-
if (add_expected_oid(idx, entry->oid) < 0)
|
388
|
+
if (add_expected_oid(idx, &entry->oid) < 0)
|
389
389
|
goto out;
|
390
390
|
|
391
391
|
break;
|
@@ -1269,7 +1269,7 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
|
|
1269
1269
|
|
1270
1270
|
/* Write out the object names (SHA-1 hashes) */
|
1271
1271
|
git_vector_foreach(&idx->objects, i, entry) {
|
1272
|
-
git_filebuf_write(&index_file, &entry->oid,
|
1272
|
+
git_filebuf_write(&index_file, &entry->oid.id, GIT_OID_RAWSZ);
|
1273
1273
|
}
|
1274
1274
|
|
1275
1275
|
/* Write out the CRC32 values */
|
@@ -613,7 +613,7 @@ GIT_INLINE(int) tree_iterator_frame_push_neighbors(
|
|
613
613
|
break;
|
614
614
|
|
615
615
|
if ((error = git_tree_lookup(&tree,
|
616
|
-
iter->base.repo, entry->tree_entry->oid)) < 0)
|
616
|
+
iter->base.repo, &entry->tree_entry->oid)) < 0)
|
617
617
|
break;
|
618
618
|
|
619
619
|
if (git_vector_insert(&parent_frame->similar_trees, tree) < 0)
|
@@ -659,7 +659,7 @@ GIT_INLINE(int) tree_iterator_frame_push(
|
|
659
659
|
int error;
|
660
660
|
|
661
661
|
if ((error = git_tree_lookup(&tree,
|
662
|
-
iter->base.repo, entry->tree_entry->oid)) < 0 ||
|
662
|
+
iter->base.repo, &entry->tree_entry->oid)) < 0 ||
|
663
663
|
(error = tree_iterator_frame_init(iter, tree, entry)) < 0)
|
664
664
|
goto done;
|
665
665
|
|
@@ -740,7 +740,7 @@ static void tree_iterator_set_current(
|
|
740
740
|
|
741
741
|
iter->entry.mode = tree_entry->attr;
|
742
742
|
iter->entry.path = iter->entry_path.ptr;
|
743
|
-
git_oid_cpy(&iter->entry.id, tree_entry->oid);
|
743
|
+
git_oid_cpy(&iter->entry.id, &tree_entry->oid);
|
744
744
|
}
|
745
745
|
|
746
746
|
static int tree_iterator_advance(const git_index_entry **out, git_iterator *i)
|
@@ -115,7 +115,7 @@ static int midx_parse_oid_lookup(
|
|
115
115
|
struct git_midx_chunk *chunk_oid_lookup)
|
116
116
|
{
|
117
117
|
uint32_t i;
|
118
|
-
|
118
|
+
unsigned char *oid, *prev_oid, zero_oid[GIT_OID_RAWSZ] = {0};
|
119
119
|
|
120
120
|
if (chunk_oid_lookup->offset == 0)
|
121
121
|
return midx_error("missing OID Lookup chunk");
|
@@ -124,10 +124,10 @@ static int midx_parse_oid_lookup(
|
|
124
124
|
if (chunk_oid_lookup->length != idx->num_objects * GIT_OID_RAWSZ)
|
125
125
|
return midx_error("OID Lookup chunk has wrong length");
|
126
126
|
|
127
|
-
idx->oid_lookup = oid = (
|
128
|
-
prev_oid =
|
129
|
-
for (i = 0; i < idx->num_objects; ++i,
|
130
|
-
if (
|
127
|
+
idx->oid_lookup = oid = (unsigned char *)(data + chunk_oid_lookup->offset);
|
128
|
+
prev_oid = zero_oid;
|
129
|
+
for (i = 0; i < idx->num_objects; ++i, oid += GIT_OID_RAWSZ) {
|
130
|
+
if (git_oid_raw_cmp(prev_oid, oid) >= 0)
|
131
131
|
return midx_error("OID Lookup index is non-monotonic");
|
132
132
|
prev_oid = oid;
|
133
133
|
}
|
@@ -179,7 +179,6 @@ int git_midx_parse(
|
|
179
179
|
uint32_t i;
|
180
180
|
off64_t last_chunk_offset, chunk_offset, trailer_offset;
|
181
181
|
size_t checksum_size;
|
182
|
-
unsigned char checksum[GIT_HASH_SHA1_SIZE];
|
183
182
|
int error;
|
184
183
|
struct git_midx_chunk chunk_packfile_names = {0},
|
185
184
|
chunk_oid_fanout = {0},
|
@@ -217,11 +216,6 @@ int git_midx_parse(
|
|
217
216
|
return midx_error("wrong index size");
|
218
217
|
memcpy(idx->checksum, data + trailer_offset, checksum_size);
|
219
218
|
|
220
|
-
if (git_hash_buf(checksum, data, (size_t)trailer_offset, GIT_HASH_ALGORITHM_SHA1) < 0)
|
221
|
-
return midx_error("could not calculate signature");
|
222
|
-
if (memcmp(checksum, idx->checksum, checksum_size) != 0)
|
223
|
-
return midx_error("index signature mismatch");
|
224
|
-
|
225
219
|
chunk_hdr = data + sizeof(struct git_midx_header);
|
226
220
|
last_chunk = NULL;
|
227
221
|
for (i = 0; i < hdr->chunks; ++i, chunk_hdr += 12) {
|
@@ -389,7 +383,7 @@ int git_midx_entry_find(
|
|
389
383
|
int pos, found = 0;
|
390
384
|
size_t pack_index;
|
391
385
|
uint32_t hi, lo;
|
392
|
-
|
386
|
+
unsigned char *current = NULL;
|
393
387
|
const unsigned char *object_offset;
|
394
388
|
off64_t offset;
|
395
389
|
|
@@ -403,26 +397,25 @@ int git_midx_entry_find(
|
|
403
397
|
if (pos >= 0) {
|
404
398
|
/* An object matching exactly the oid was found */
|
405
399
|
found = 1;
|
406
|
-
current = idx->oid_lookup + pos;
|
400
|
+
current = idx->oid_lookup + (pos * GIT_OID_RAWSZ);
|
407
401
|
} else {
|
408
402
|
/* No object was found */
|
409
403
|
/* pos refers to the object with the "closest" oid to short_oid */
|
410
404
|
pos = -1 - pos;
|
411
405
|
if (pos < (int)idx->num_objects) {
|
412
|
-
current = idx->oid_lookup + pos;
|
406
|
+
current = idx->oid_lookup + (pos * GIT_OID_RAWSZ);
|
413
407
|
|
414
|
-
if (!
|
408
|
+
if (!git_oid_raw_ncmp(short_oid->id, current, len))
|
415
409
|
found = 1;
|
416
410
|
}
|
417
411
|
}
|
418
412
|
|
419
413
|
if (found && len != GIT_OID_HEXSZ && pos + 1 < (int)idx->num_objects) {
|
420
414
|
/* Check for ambiguousity */
|
421
|
-
const
|
415
|
+
const unsigned char *next = current + GIT_OID_RAWSZ;
|
422
416
|
|
423
|
-
if (!
|
417
|
+
if (!git_oid_raw_ncmp(short_oid->id, next, len))
|
424
418
|
found = 2;
|
425
|
-
}
|
426
419
|
}
|
427
420
|
|
428
421
|
if (!found)
|
@@ -432,8 +425,8 @@ int git_midx_entry_find(
|
|
432
425
|
|
433
426
|
object_offset = idx->object_offsets + pos * 8;
|
434
427
|
offset = ntohl(*((uint32_t *)(object_offset + 4)));
|
435
|
-
if (offset & 0x80000000) {
|
436
|
-
uint32_t object_large_offsets_pos = offset
|
428
|
+
if (idx->object_large_offsets && offset & 0x80000000) {
|
429
|
+
uint32_t object_large_offsets_pos = (uint32_t) (offset ^ 0x80000000);
|
437
430
|
const unsigned char *object_large_offsets_index = idx->object_large_offsets;
|
438
431
|
|
439
432
|
/* Make sure we're not being sent out of bounds */
|
@@ -450,7 +443,7 @@ int git_midx_entry_find(
|
|
450
443
|
return midx_error("invalid index into the packfile names table");
|
451
444
|
e->pack_index = pack_index;
|
452
445
|
e->offset = offset;
|
453
|
-
|
446
|
+
git_oid_fromraw(&e->sha1, current);
|
454
447
|
return 0;
|
455
448
|
}
|
456
449
|
|
@@ -459,13 +452,17 @@ int git_midx_foreach_entry(
|
|
459
452
|
git_odb_foreach_cb cb,
|
460
453
|
void *data)
|
461
454
|
{
|
455
|
+
git_oid oid;
|
462
456
|
size_t i;
|
463
457
|
int error;
|
464
458
|
|
465
459
|
GIT_ASSERT_ARG(idx);
|
466
460
|
|
467
461
|
for (i = 0; i < idx->num_objects; ++i) {
|
468
|
-
if ((error =
|
462
|
+
if ((error = git_oid_fromraw(&oid, &idx->oid_lookup[i * GIT_OID_RAWSZ])) < 0)
|
463
|
+
return error;
|
464
|
+
|
465
|
+
if ((error = cb(&oid, data)) != 0)
|
469
466
|
return git_error_set_after_callback(error);
|
470
467
|
}
|
471
468
|
|
@@ -751,7 +748,7 @@ static int midx_write(
|
|
751
748
|
|
752
749
|
/* Fill the OID Lookup table. */
|
753
750
|
git_vector_foreach (&object_entries, i, entry) {
|
754
|
-
error = git_str_put(&oid_lookup, (
|
751
|
+
error = git_str_put(&oid_lookup, (char *)&entry->sha1.id, GIT_OID_RAWSZ);
|
755
752
|
if (error < 0)
|
756
753
|
goto cleanup;
|
757
754
|
}
|
@@ -17,6 +17,7 @@
|
|
17
17
|
#include "map.h"
|
18
18
|
#include "mwindow.h"
|
19
19
|
#include "odb.h"
|
20
|
+
#include "oid.h"
|
20
21
|
|
21
22
|
/*
|
22
23
|
* A multi-pack-index file.
|
@@ -40,7 +41,7 @@ typedef struct git_midx_file {
|
|
40
41
|
uint32_t num_objects;
|
41
42
|
|
42
43
|
/* The OID Lookup table. */
|
43
|
-
|
44
|
+
unsigned char *oid_lookup;
|
44
45
|
|
45
46
|
/* The Object Offsets table. Each entry has two 4-byte fields with the pack index and the offset. */
|
46
47
|
const unsigned char *object_offsets;
|
@@ -186,13 +186,16 @@ int git_mwindow_free_all(git_mwindow_file *mwf)
|
|
186
186
|
}
|
187
187
|
|
188
188
|
/*
|
189
|
-
* Check if a window 'win' contains the address 'offset'
|
189
|
+
* Check if a window 'win' contains both the address 'offset' and 'extra'.
|
190
|
+
*
|
191
|
+
* 'extra' is the size of the hash we're using as we always want to make sure
|
192
|
+
* that it's contained.
|
190
193
|
*/
|
191
|
-
int git_mwindow_contains(git_mwindow *win, off64_t offset)
|
194
|
+
int git_mwindow_contains(git_mwindow *win, off64_t offset, off64_t extra)
|
192
195
|
{
|
193
196
|
off64_t win_off = win->offset;
|
194
197
|
return win_off <= offset
|
195
|
-
&& offset <= (off64_t)(win_off + win->window_map.len);
|
198
|
+
&& (offset + extra) <= (off64_t)(win_off + win->window_map.len);
|
196
199
|
}
|
197
200
|
|
198
201
|
#define GIT_MWINDOW__LRU -1
|
@@ -237,9 +240,7 @@ static bool git_mwindow_scan_recently_used(
|
|
237
240
|
* store it in the output parameter. If lru_window is NULL,
|
238
241
|
* it's the first loop, so store it as well.
|
239
242
|
*/
|
240
|
-
if (!lru_window ||
|
241
|
-
(comparison_sign == GIT_MWINDOW__LRU && lru_window->last_used > w->last_used) ||
|
242
|
-
(comparison_sign == GIT_MWINDOW__MRU && lru_window->last_used < w->last_used)) {
|
243
|
+
if (!lru_window || (comparison_sign * w->last_used) > lru_window->last_used) {
|
243
244
|
lru_window = w;
|
244
245
|
lru_last = w_last;
|
245
246
|
found = true;
|
@@ -406,14 +407,13 @@ unsigned char *git_mwindow_open(
|
|
406
407
|
return NULL;
|
407
408
|
}
|
408
409
|
|
409
|
-
if (!w || !(git_mwindow_contains(w, offset
|
410
|
+
if (!w || !(git_mwindow_contains(w, offset, extra))) {
|
410
411
|
if (w) {
|
411
412
|
w->inuse_cnt--;
|
412
413
|
}
|
413
414
|
|
414
415
|
for (w = mwf->windows; w; w = w->next) {
|
415
|
-
if (git_mwindow_contains(w, offset)
|
416
|
-
git_mwindow_contains(w, offset + extra))
|
416
|
+
if (git_mwindow_contains(w, offset, extra))
|
417
417
|
break;
|
418
418
|
}
|
419
419
|
|
@@ -38,7 +38,7 @@ typedef struct git_mwindow_ctl {
|
|
38
38
|
git_vector windowfiles;
|
39
39
|
} git_mwindow_ctl;
|
40
40
|
|
41
|
-
int git_mwindow_contains(git_mwindow *win, off64_t offset);
|
41
|
+
int git_mwindow_contains(git_mwindow *win, off64_t offset, off64_t extra);
|
42
42
|
int git_mwindow_free_all(git_mwindow_file *mwf); /* locks */
|
43
43
|
unsigned char *git_mwindow_open(git_mwindow_file *mwf, git_mwindow **cursor, off64_t offset, size_t extra, unsigned int *left);
|
44
44
|
int git_mwindow_file_register(git_mwindow_file *mwf);
|
@@ -198,7 +198,7 @@ void git_odb_object_free(git_odb_object *object)
|
|
198
198
|
int git_odb__hashfd(git_oid *out, git_file fd, size_t size, git_object_t type)
|
199
199
|
{
|
200
200
|
size_t hdr_len;
|
201
|
-
char hdr[64], buffer[
|
201
|
+
char hdr[64], buffer[GIT_BUFSIZE_FILEIO];
|
202
202
|
git_hash_ctx ctx;
|
203
203
|
ssize_t read_len = 0;
|
204
204
|
int error = 0;
|
@@ -1067,7 +1067,7 @@ int git_odb_expand_ids(
|
|
1067
1067
|
int git_odb_read_header(size_t *len_p, git_object_t *type_p, git_odb *db, const git_oid *id)
|
1068
1068
|
{
|
1069
1069
|
int error;
|
1070
|
-
git_odb_object *object;
|
1070
|
+
git_odb_object *object = NULL;
|
1071
1071
|
|
1072
1072
|
error = git_odb__read_header_or_object(&object, len_p, type_p, db, id);
|
1073
1073
|
|