rugged 0.17.0b2 → 0.17.0.b6
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +10 -11
- data/ext/rugged/extconf.rb +5 -13
- data/ext/rugged/rugged_commit.c +2 -5
- data/ext/rugged/rugged_reference.c +29 -28
- data/ext/rugged/rugged_remote.c +1 -1
- data/ext/rugged/rugged_repo.c +4 -1
- data/ext/rugged/rugged_tree.c +20 -19
- data/lib/rugged/commit.rb +5 -1
- data/lib/rugged/repository.rb +6 -4
- data/lib/rugged/version.rb +1 -1
- data/test/config_test.rb +1 -1
- data/test/index_test.rb +4 -2
- data/test/object_test.rb +3 -3
- data/test/reference_test.rb +66 -1
- data/test/repo_test.rb +4 -4
- data/test/tree_test.rb +1 -1
- data/test/walker_test.rb +1 -1
- data/vendor/libgit2/Makefile.embed +42 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/http-parser/http_parser.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/http-parser/http_parser.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/regex/config.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/regex/regcomp.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/regex/regex.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/regex/regex.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/regex/regex_internal.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/regex/regex_internal.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/regex/regexec.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/adler32.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/crc32.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/crc32.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/deflate.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/deflate.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/inffast.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/inffast.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/inffixed.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/inflate.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/inflate.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/inftrees.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/inftrees.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/trees.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/trees.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/zconf.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/zlib.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/zutil.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/zutil.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2.h +6 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/attr.h +35 -20
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/blob.h +1 -1
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/branch.h +62 -24
- data/vendor/libgit2/include/git2/checkout.h +66 -0
- data/vendor/libgit2/include/git2/clone.h +59 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/commit.h +22 -3
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/common.h +27 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/config.h +22 -4
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/diff.h +20 -1
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/errors.h +2 -37
- data/vendor/libgit2/include/git2/ignore.h +74 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/index.h +37 -5
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/indexer.h +2 -2
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/inttypes.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/merge.h +10 -0
- data/vendor/libgit2/include/git2/message.h +43 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/net.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/notes.h +24 -20
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/object.h +18 -1
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/odb.h +16 -1
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/odb_backend.h +8 -1
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/oid.h +26 -2
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/reflog.h +39 -9
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/refs.h +55 -3
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/refspec.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/remote.h +68 -2
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/repository.h +39 -1
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/reset.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/revparse.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/revwalk.h +2 -2
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/signature.h +3 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/status.h +5 -2
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/stdint.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/submodule.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/tag.h +3 -3
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/threads.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/tree.h +77 -20
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/types.h +14 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/version.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/windows.h +0 -0
- data/vendor/libgit2/src/amiga/map.c +51 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/attr.c +39 -6
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/attr.h +1 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/attr_file.c +2 -16
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/attr_file.h +4 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/blob.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/blob.h +0 -0
- data/vendor/libgit2/src/branch.c +294 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/bswap.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/buffer.c +40 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/buffer.h +22 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/cache.c +1 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/cache.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/cc-compat.h +0 -0
- data/vendor/libgit2/src/checkout.c +230 -0
- data/vendor/libgit2/src/clone.c +254 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/commit.c +42 -16
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/commit.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/common.h +3 -9
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/compat/fnmatch.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/compat/fnmatch.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/config.c +15 -5
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/config.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/config_cache.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/config_file.c +86 -19
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/config_file.h +16 -1
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/crlf.c +92 -4
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/date.c +20 -20
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/delta-apply.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/delta-apply.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/diff.c +45 -18
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/diff.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/diff_output.c +63 -46
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/errors.c +0 -0
- data/vendor/libgit2/src/fetch.c +380 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/fetch.h +1 -2
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/filebuf.c +7 -2
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/filebuf.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/fileops.c +16 -1
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/fileops.h +10 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/filter.c +38 -2
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/filter.h +15 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/global.c +5 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/global.h +2 -6
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/hash.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/hash.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/ignore.c +50 -1
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/ignore.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/index.c +95 -28
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/index.h +5 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/indexer.c +27 -25
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/iterator.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/iterator.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/khash.h +6 -4
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/map.h +4 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/message.c +27 -2
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/message.h +2 -1
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/mwindow.c +54 -10
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/mwindow.h +1 -1
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/netops.c +48 -38
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/netops.h +7 -4
- data/vendor/libgit2/src/notes.c +610 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/notes.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/object.c +73 -2
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/odb.c +20 -1
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/odb.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/odb_loose.c +89 -3
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/odb_pack.c +61 -3
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/oid.c +1 -6
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/oidmap.h +1 -6
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/pack.c +49 -4
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/pack.h +5 -1
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/path.c +144 -21
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/path.h +46 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/pkt.c +30 -8
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/pkt.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/pool.c +7 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/pool.h +7 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/posix.c +92 -1
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/posix.h +36 -1
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/ppc/sha1.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/ppc/sha1.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/pqueue.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/pqueue.h +0 -0
- data/vendor/libgit2/src/protocol.c +88 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/protocol.h +3 -9
- data/vendor/libgit2/src/reflog.c +489 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/reflog.h +3 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/refs.c +95 -52
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/refs.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/refspec.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/refspec.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/remote.c +130 -8
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/remote.h +6 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/repository.c +167 -42
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/repository.h +7 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/reset.c +1 -1
- data/vendor/libgit2/src/revparse.c +830 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/revwalk.c +83 -15
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/sha1.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/sha1.h +5 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/sha1_lookup.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/sha1_lookup.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/signature.c +19 -5
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/signature.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/status.c +24 -18
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/strmap.h +1 -1
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/submodule.c +3 -3
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/tag.c +2 -9
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/tag.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/thread-utils.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/thread-utils.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/transport.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/transport.h +13 -9
- data/vendor/libgit2/src/transports/git.c +245 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/transports/http.c +93 -336
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/transports/local.c +35 -32
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/tree-cache.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/tree-cache.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/tree.c +214 -124
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/tree.h +7 -3
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/tsort.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/unix/map.c +2 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/unix/posix.h +2 -1
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/util.c +30 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/util.h +13 -6
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/vector.c +1 -1
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/vector.h +5 -5
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/win32/dir.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/win32/dir.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/win32/map.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/win32/mingw-compat.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/win32/msvc-compat.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/win32/posix.h +1 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/win32/posix_w32.c +17 -1
- data/vendor/libgit2/src/win32/precompiled.c +1 -0
- data/vendor/libgit2/src/win32/precompiled.h +19 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/win32/pthread.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/win32/pthread.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/win32/utf-conv.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/win32/utf-conv.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xdiff.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xdiffi.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xdiffi.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xemit.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xemit.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xhistogram.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xinclude.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xmacros.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xmerge.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xpatience.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xprepare.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xprepare.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xtypes.h +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xutils.c +0 -0
- data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xutils.h +0 -0
- metadata +265 -348
- data/ext/rugged/vendor/libgit2-dist.tar.gz +0 -0
- data/ext/rugged/vendor/libgit2-dist/examples/diff.c +0 -238
- data/ext/rugged/vendor/libgit2-dist/examples/general.c +0 -451
- data/ext/rugged/vendor/libgit2-dist/examples/network/common.h +0 -14
- data/ext/rugged/vendor/libgit2-dist/examples/network/fetch.c +0 -113
- data/ext/rugged/vendor/libgit2-dist/examples/network/git2.c +0 -62
- data/ext/rugged/vendor/libgit2-dist/examples/network/index-pack.c +0 -102
- data/ext/rugged/vendor/libgit2-dist/examples/network/ls-remote.c +0 -76
- data/ext/rugged/vendor/libgit2-dist/examples/showindex.c +0 -43
- data/ext/rugged/vendor/libgit2-dist/src/branch.c +0 -208
- data/ext/rugged/vendor/libgit2-dist/src/branch.h +0 -17
- data/ext/rugged/vendor/libgit2-dist/src/fetch.c +0 -200
- data/ext/rugged/vendor/libgit2-dist/src/notes.c +0 -548
- data/ext/rugged/vendor/libgit2-dist/src/protocol.c +0 -58
- data/ext/rugged/vendor/libgit2-dist/src/reflog.c +0 -340
- data/ext/rugged/vendor/libgit2-dist/src/revparse.c +0 -748
- data/ext/rugged/vendor/libgit2-dist/src/transports/git.c +0 -477
- data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/attr_expect.h +0 -43
- data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/file.c +0 -226
- data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/flags.c +0 -108
- data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/lookup.c +0 -262
- data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/repo.c +0 -273
- data/ext/rugged/vendor/libgit2-dist/tests-clar/buf/basic.c +0 -29
- data/ext/rugged/vendor/libgit2-dist/tests-clar/clar_helpers.c +0 -181
- data/ext/rugged/vendor/libgit2-dist/tests-clar/clar_libgit2.h +0 -55
- data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/commit.c +0 -44
- data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/parse.c +0 -350
- data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/signature.c +0 -65
- data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/write.c +0 -140
- data/ext/rugged/vendor/libgit2-dist/tests-clar/config/add.c +0 -37
- data/ext/rugged/vendor/libgit2-dist/tests-clar/config/multivar.c +0 -151
- data/ext/rugged/vendor/libgit2-dist/tests-clar/config/new.c +0 -36
- data/ext/rugged/vendor/libgit2-dist/tests-clar/config/read.c +0 -221
- data/ext/rugged/vendor/libgit2-dist/tests-clar/config/stress.c +0 -61
- data/ext/rugged/vendor/libgit2-dist/tests-clar/config/write.c +0 -92
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/buffer.c +0 -613
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/dirent.c +0 -235
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/env.c +0 -115
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/errors.c +0 -60
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/filebuf.c +0 -92
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/hex.c +0 -22
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/oid.c +0 -18
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/path.c +0 -420
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/pool.c +0 -85
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/rmdir.c +0 -68
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/string.c +0 -28
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/strmap.c +0 -102
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/strtol.c +0 -37
- data/ext/rugged/vendor/libgit2-dist/tests-clar/core/vector.c +0 -191
- data/ext/rugged/vendor/libgit2-dist/tests-clar/date/date.c +0 -15
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/blob.c +0 -254
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/diff_helpers.c +0 -104
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/diff_helpers.h +0 -47
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/index.c +0 -92
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/iterator.c +0 -572
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/patch.c +0 -99
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/tree.c +0 -210
- data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/workdir.c +0 -543
- data/ext/rugged/vendor/libgit2-dist/tests-clar/index/read_tree.c +0 -46
- data/ext/rugged/vendor/libgit2-dist/tests-clar/index/rename.c +0 -50
- data/ext/rugged/vendor/libgit2-dist/tests-clar/index/tests.c +0 -246
- data/ext/rugged/vendor/libgit2-dist/tests-clar/network/createremotethenload.c +0 -33
- data/ext/rugged/vendor/libgit2-dist/tests-clar/network/remotelocal.c +0 -137
- data/ext/rugged/vendor/libgit2-dist/tests-clar/network/remotes.c +0 -183
- data/ext/rugged/vendor/libgit2-dist/tests-clar/notes/notes.c +0 -133
- data/ext/rugged/vendor/libgit2-dist/tests-clar/notes/notesref.c +0 -57
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/blob/filter.c +0 -125
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/blob/fromchunks.c +0 -87
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/blob/write.c +0 -69
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/commit/commitstagedfile.c +0 -126
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/lookup.c +0 -63
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/message.c +0 -171
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/chars.c +0 -41
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/compare.c +0 -124
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/convert.c +0 -75
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/data.h +0 -323
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/fromstr.c +0 -30
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/hash.c +0 -166
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/short.c +0 -94
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/size.c +0 -13
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/type2string.c +0 -54
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/write.c +0 -455
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tag/peel.c +0 -56
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tag/read.c +0 -130
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tag/write.c +0 -192
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tree/frompath.c +0 -81
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tree/read.c +0 -75
- data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tree/write.c +0 -84
- data/ext/rugged/vendor/libgit2-dist/tests-clar/odb/loose.c +0 -84
- data/ext/rugged/vendor/libgit2-dist/tests-clar/odb/loose_data.h +0 -522
- data/ext/rugged/vendor/libgit2-dist/tests-clar/odb/mixed.c +0 -24
- data/ext/rugged/vendor/libgit2-dist/tests-clar/odb/pack_data.h +0 -151
- data/ext/rugged/vendor/libgit2-dist/tests-clar/odb/packed.c +0 -78
- data/ext/rugged/vendor/libgit2-dist/tests-clar/odb/sorting.c +0 -71
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/create.c +0 -113
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/delete.c +0 -91
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/listall.c +0 -78
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/move.c +0 -72
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/crashes.c +0 -17
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/create.c +0 -149
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/delete.c +0 -85
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/list.c +0 -53
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/listall.c +0 -36
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/lookup.c +0 -42
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/normalize.c +0 -200
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/overwrite.c +0 -136
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/pack.c +0 -67
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/read.c +0 -194
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/reflog.c +0 -123
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/rename.c +0 -339
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/revparse.c +0 -174
- data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/unicode.c +0 -42
- data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/discover.c +0 -142
- data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/getters.c +0 -86
- data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/init.c +0 -249
- data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/open.c +0 -282
- data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/setters.c +0 -80
- data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/mixed.c +0 -47
- data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/reset_helpers.c +0 -10
- data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/reset_helpers.h +0 -6
- data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/soft.c +0 -102
- data/ext/rugged/vendor/libgit2-dist/tests-clar/revwalk/basic.c +0 -181
- data/ext/rugged/vendor/libgit2-dist/tests-clar/revwalk/mergebase.c +0 -148
- data/ext/rugged/vendor/libgit2-dist/tests-clar/status/ignore.c +0 -147
- data/ext/rugged/vendor/libgit2-dist/tests-clar/status/single.c +0 -29
- data/ext/rugged/vendor/libgit2-dist/tests-clar/status/status_data.h +0 -202
- data/ext/rugged/vendor/libgit2-dist/tests-clar/status/status_helpers.c +0 -49
- data/ext/rugged/vendor/libgit2-dist/tests-clar/status/status_helpers.h +0 -33
- data/ext/rugged/vendor/libgit2-dist/tests-clar/status/submodules.c +0 -112
- data/ext/rugged/vendor/libgit2-dist/tests-clar/status/worktree.c +0 -649
- data/ext/rugged/vendor/libgit2-dist/tests-clar/threads/basic.c +0 -20
@@ -142,7 +142,7 @@ int git_indexer_stream_new(git_indexer_stream **out, const char *prefix)
|
|
142
142
|
{
|
143
143
|
git_indexer_stream *idx;
|
144
144
|
git_buf path = GIT_BUF_INIT;
|
145
|
-
static const char suff[] = "/
|
145
|
+
static const char suff[] = "/pack";
|
146
146
|
int error;
|
147
147
|
|
148
148
|
idx = git__calloc(1, sizeof(git_indexer_stream));
|
@@ -169,29 +169,14 @@ cleanup:
|
|
169
169
|
}
|
170
170
|
|
171
171
|
/* Try to store the delta so we can try to resolve it later */
|
172
|
-
static int store_delta(git_indexer_stream *idx)
|
172
|
+
static int store_delta(git_indexer_stream *idx, git_off_t entry_start, size_t entry_size, git_otype type)
|
173
173
|
{
|
174
|
-
git_otype type;
|
175
174
|
git_mwindow *w = NULL;
|
176
|
-
git_mwindow_file *mwf = &idx->pack->mwf;
|
177
|
-
git_off_t entry_start = idx->off;
|
178
175
|
struct delta_info *delta;
|
179
|
-
size_t entry_size;
|
180
176
|
git_rawobj obj;
|
181
177
|
int error;
|
182
178
|
|
183
|
-
|
184
|
-
* ref-delta objects can refer to object that we haven't
|
185
|
-
* found yet, so give it another opportunity
|
186
|
-
*/
|
187
|
-
if (git_packfile_unpack_header(&entry_size, &type, mwf, &w, &idx->off) < 0)
|
188
|
-
return -1;
|
189
|
-
|
190
|
-
git_mwindow_close(&w);
|
191
|
-
|
192
|
-
/* If it's not a delta, mark it as failure, we can't do anything with it */
|
193
|
-
if (type != GIT_OBJ_REF_DELTA && type != GIT_OBJ_OFS_DELTA)
|
194
|
-
return -1;
|
179
|
+
assert(type == GIT_OBJ_REF_DELTA || type == GIT_OBJ_OFS_DELTA);
|
195
180
|
|
196
181
|
if (type == GIT_OBJ_REF_DELTA) {
|
197
182
|
idx->off += GIT_OID_RAWSZ;
|
@@ -313,8 +298,6 @@ int git_indexer_stream_add(git_indexer_stream *idx, const void *data, size_t siz
|
|
313
298
|
mwf = &idx->pack->mwf;
|
314
299
|
if (git_mwindow_file_register(&idx->pack->mwf) < 0)
|
315
300
|
return -1;
|
316
|
-
|
317
|
-
return 0;
|
318
301
|
}
|
319
302
|
|
320
303
|
if (!idx->parsed_header) {
|
@@ -352,27 +335,44 @@ int git_indexer_stream_add(git_indexer_stream *idx, const void *data, size_t siz
|
|
352
335
|
while (processed < idx->nr_objects) {
|
353
336
|
git_rawobj obj;
|
354
337
|
git_off_t entry_start = idx->off;
|
338
|
+
size_t entry_size;
|
339
|
+
git_otype type;
|
340
|
+
git_mwindow *w = NULL;
|
355
341
|
|
356
342
|
if (idx->pack->mwf.size <= idx->off + 20)
|
357
343
|
return 0;
|
358
344
|
|
359
|
-
error =
|
345
|
+
error = git_packfile_unpack_header(&entry_size, &type, mwf, &w, &idx->off);
|
360
346
|
if (error == GIT_EBUFS) {
|
361
347
|
idx->off = entry_start;
|
362
348
|
return 0;
|
363
349
|
}
|
350
|
+
if (error < 0)
|
351
|
+
return -1;
|
364
352
|
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
353
|
+
git_mwindow_close(&w);
|
354
|
+
|
355
|
+
if (type == GIT_OBJ_REF_DELTA || type == GIT_OBJ_OFS_DELTA) {
|
356
|
+
error = store_delta(idx, entry_start, entry_size, type);
|
357
|
+
if (error == GIT_EBUFS) {
|
358
|
+
idx->off = entry_start;
|
369
359
|
return 0;
|
360
|
+
}
|
370
361
|
if (error < 0)
|
371
362
|
return error;
|
372
363
|
|
373
364
|
continue;
|
374
365
|
}
|
375
366
|
|
367
|
+
idx->off = entry_start;
|
368
|
+
error = git_packfile_unpack(&obj, idx->pack, &idx->off);
|
369
|
+
if (error == GIT_EBUFS) {
|
370
|
+
idx->off = entry_start;
|
371
|
+
return 0;
|
372
|
+
}
|
373
|
+
if (error < 0)
|
374
|
+
return -1;
|
375
|
+
|
376
376
|
if (hash_and_save(idx, &obj, entry_start) < 0)
|
377
377
|
goto on_error;
|
378
378
|
|
@@ -775,6 +775,7 @@ int git_indexer_write(git_indexer *idx)
|
|
775
775
|
|
776
776
|
cleanup:
|
777
777
|
git_mwindow_free_all(&idx->pack->mwf);
|
778
|
+
git_mwindow_file_deregister(&idx->pack->mwf);
|
778
779
|
if (error < 0)
|
779
780
|
git_filebuf_cleanup(&idx->file);
|
780
781
|
git_buf_free(&filename);
|
@@ -888,6 +889,7 @@ void git_indexer_free(git_indexer *idx)
|
|
888
889
|
return;
|
889
890
|
|
890
891
|
p_close(idx->pack->mwf.fd);
|
892
|
+
git_mwindow_file_deregister(&idx->pack->mwf);
|
891
893
|
git_vector_foreach(&idx->objects, i, e)
|
892
894
|
git__free(e);
|
893
895
|
git_vector_free(&idx->objects);
|
File without changes
|
File without changes
|
@@ -131,7 +131,9 @@ typedef unsigned long long khint64_t;
|
|
131
131
|
#endif
|
132
132
|
|
133
133
|
#ifdef _MSC_VER
|
134
|
-
#define
|
134
|
+
#define kh_inline __inline
|
135
|
+
#else
|
136
|
+
#define kh_inline inline
|
135
137
|
#endif
|
136
138
|
|
137
139
|
typedef khint32_t khint_t;
|
@@ -345,7 +347,7 @@ static const double __ac_HASH_UPPER = 0.77;
|
|
345
347
|
__KHASH_IMPL(name, SCOPE, khkey_t, khval_t, kh_is_map, __hash_func, __hash_equal)
|
346
348
|
|
347
349
|
#define KHASH_INIT(name, khkey_t, khval_t, kh_is_map, __hash_func, __hash_equal) \
|
348
|
-
KHASH_INIT2(name, static
|
350
|
+
KHASH_INIT2(name, static kh_inline, khkey_t, khval_t, kh_is_map, __hash_func, __hash_equal)
|
349
351
|
|
350
352
|
/* --- BEGIN OF HASH FUNCTIONS --- */
|
351
353
|
|
@@ -374,7 +376,7 @@ static const double __ac_HASH_UPPER = 0.77;
|
|
374
376
|
@param s Pointer to a null terminated string
|
375
377
|
@return The hash value
|
376
378
|
*/
|
377
|
-
static
|
379
|
+
static kh_inline khint_t __ac_X31_hash_string(const char *s)
|
378
380
|
{
|
379
381
|
khint_t h = (khint_t)*s;
|
380
382
|
if (h) for (++s ; *s; ++s) h = (h << 5) - h + (khint_t)*s;
|
@@ -391,7 +393,7 @@ static inline khint_t __ac_X31_hash_string(const char *s)
|
|
391
393
|
*/
|
392
394
|
#define kh_str_hash_equal(a, b) (strcmp(a, b) == 0)
|
393
395
|
|
394
|
-
static
|
396
|
+
static kh_inline khint_t __ac_Wang_hash(khint_t key)
|
395
397
|
{
|
396
398
|
key += ~(key << 15);
|
397
399
|
key ^= (key >> 10);
|
@@ -6,7 +6,6 @@
|
|
6
6
|
*/
|
7
7
|
|
8
8
|
#include "message.h"
|
9
|
-
#include <ctype.h>
|
10
9
|
|
11
10
|
static size_t line_length_without_trailing_spaces(const char *line, size_t len)
|
12
11
|
{
|
@@ -22,7 +21,7 @@ static size_t line_length_without_trailing_spaces(const char *line, size_t len)
|
|
22
21
|
|
23
22
|
/* Greatly inspired from git.git "stripspace" */
|
24
23
|
/* see https://github.com/git/git/blob/497215d8811ac7b8955693ceaad0899ecd894ed2/builtin/stripspace.c#L4-67 */
|
25
|
-
int
|
24
|
+
int git_message__prettify(git_buf *message_out, const char *message, int strip_comments)
|
26
25
|
{
|
27
26
|
const size_t message_len = strlen(message);
|
28
27
|
|
@@ -59,3 +58,29 @@ int git_message_prettify(git_buf *message_out, const char *message, int strip_co
|
|
59
58
|
|
60
59
|
return git_buf_oom(message_out) ? -1 : 0;
|
61
60
|
}
|
61
|
+
|
62
|
+
int git_message_prettify(char *message_out, size_t buffer_size, const char *message, int strip_comments)
|
63
|
+
{
|
64
|
+
git_buf buf = GIT_BUF_INIT;
|
65
|
+
ssize_t out_size = -1;
|
66
|
+
|
67
|
+
if (message_out && buffer_size)
|
68
|
+
*message_out = '\0';
|
69
|
+
|
70
|
+
if (git_message__prettify(&buf, message, strip_comments) < 0)
|
71
|
+
goto done;
|
72
|
+
|
73
|
+
if (message_out && buf.size + 1 > buffer_size) { /* +1 for NUL byte */
|
74
|
+
giterr_set(GITERR_INVALID, "Buffer too short to hold the cleaned message");
|
75
|
+
goto done;
|
76
|
+
}
|
77
|
+
|
78
|
+
if (message_out)
|
79
|
+
git_buf_copy_cstr(message_out, buffer_size, &buf);
|
80
|
+
|
81
|
+
out_size = buf.size + 1;
|
82
|
+
|
83
|
+
done:
|
84
|
+
git_buf_free(&buf);
|
85
|
+
return out_size;
|
86
|
+
}
|
@@ -7,8 +7,9 @@
|
|
7
7
|
#ifndef INCLUDE_message_h__
|
8
8
|
#define INCLUDE_message_h__
|
9
9
|
|
10
|
+
#include "git2/message.h"
|
10
11
|
#include "buffer.h"
|
11
12
|
|
12
|
-
int
|
13
|
+
int git_message__prettify(git_buf *message_out, const char *message, int strip_comments);
|
13
14
|
|
14
15
|
#endif /* INCLUDE_message_h__ */
|
@@ -32,14 +32,20 @@ static struct {
|
|
32
32
|
DEFAULT_MAPPED_LIMIT,
|
33
33
|
};
|
34
34
|
|
35
|
+
/* Whenever you want to read or modify this, grab git__mwindow_mutex */
|
36
|
+
static git_mwindow_ctl mem_ctl;
|
37
|
+
|
35
38
|
/*
|
36
39
|
* Free all the windows in a sequence, typically because we're done
|
37
40
|
* with the file
|
38
41
|
*/
|
39
42
|
void git_mwindow_free_all(git_mwindow_file *mwf)
|
40
43
|
{
|
41
|
-
git_mwindow_ctl *ctl = &
|
44
|
+
git_mwindow_ctl *ctl = &mem_ctl;
|
42
45
|
unsigned int i;
|
46
|
+
|
47
|
+
git_mutex_lock(&git__mwindow_mutex);
|
48
|
+
|
43
49
|
/*
|
44
50
|
* Remove these windows from the global list
|
45
51
|
*/
|
@@ -67,6 +73,8 @@ void git_mwindow_free_all(git_mwindow_file *mwf)
|
|
67
73
|
mwf->windows = w->next;
|
68
74
|
git__free(w);
|
69
75
|
}
|
76
|
+
|
77
|
+
git_mutex_unlock(&git__mwindow_mutex);
|
70
78
|
}
|
71
79
|
|
72
80
|
/*
|
@@ -82,7 +90,7 @@ int git_mwindow_contains(git_mwindow *win, git_off_t offset)
|
|
82
90
|
/*
|
83
91
|
* Find the least-recently-used window in a file
|
84
92
|
*/
|
85
|
-
void git_mwindow_scan_lru(
|
93
|
+
static void git_mwindow_scan_lru(
|
86
94
|
git_mwindow_file *mwf,
|
87
95
|
git_mwindow **lru_w,
|
88
96
|
git_mwindow **lru_l)
|
@@ -107,11 +115,12 @@ void git_mwindow_scan_lru(
|
|
107
115
|
|
108
116
|
/*
|
109
117
|
* Close the least recently used window. You should check to see if
|
110
|
-
* the file descriptors need closing from time to time.
|
118
|
+
* the file descriptors need closing from time to time. Called under
|
119
|
+
* lock from new_window.
|
111
120
|
*/
|
112
121
|
static int git_mwindow_close_lru(git_mwindow_file *mwf)
|
113
122
|
{
|
114
|
-
git_mwindow_ctl *ctl = &
|
123
|
+
git_mwindow_ctl *ctl = &mem_ctl;
|
115
124
|
unsigned int i;
|
116
125
|
git_mwindow *lru_w = NULL, *lru_l = NULL, **list = &mwf->windows;
|
117
126
|
|
@@ -146,18 +155,20 @@ static int git_mwindow_close_lru(git_mwindow_file *mwf)
|
|
146
155
|
return 0;
|
147
156
|
}
|
148
157
|
|
158
|
+
/* This gets called under lock from git_mwindow_open */
|
149
159
|
static git_mwindow *new_window(
|
150
160
|
git_mwindow_file *mwf,
|
151
161
|
git_file fd,
|
152
162
|
git_off_t size,
|
153
163
|
git_off_t offset)
|
154
164
|
{
|
155
|
-
git_mwindow_ctl *ctl = &
|
165
|
+
git_mwindow_ctl *ctl = &mem_ctl;
|
156
166
|
size_t walign = _mw_options.window_size / 2;
|
157
167
|
git_off_t len;
|
158
168
|
git_mwindow *w;
|
159
169
|
|
160
170
|
w = git__malloc(sizeof(*w));
|
171
|
+
|
161
172
|
if (w == NULL)
|
162
173
|
return NULL;
|
163
174
|
|
@@ -207,9 +218,10 @@ unsigned char *git_mwindow_open(
|
|
207
218
|
size_t extra,
|
208
219
|
unsigned int *left)
|
209
220
|
{
|
210
|
-
git_mwindow_ctl *ctl = &
|
221
|
+
git_mwindow_ctl *ctl = &mem_ctl;
|
211
222
|
git_mwindow *w = *cursor;
|
212
223
|
|
224
|
+
git_mutex_lock(&git__mwindow_mutex);
|
213
225
|
if (!w || !(git_mwindow_contains(w, offset) && git_mwindow_contains(w, offset + extra))) {
|
214
226
|
if (w) {
|
215
227
|
w->inuse_cnt--;
|
@@ -227,8 +239,10 @@ unsigned char *git_mwindow_open(
|
|
227
239
|
*/
|
228
240
|
if (!w) {
|
229
241
|
w = new_window(mwf, mwf->fd, mwf->size, offset);
|
230
|
-
if (w == NULL)
|
242
|
+
if (w == NULL) {
|
243
|
+
git_mutex_unlock(&git__mwindow_mutex);
|
231
244
|
return NULL;
|
245
|
+
}
|
232
246
|
w->next = mwf->windows;
|
233
247
|
mwf->windows = w;
|
234
248
|
}
|
@@ -246,25 +260,55 @@ unsigned char *git_mwindow_open(
|
|
246
260
|
if (left)
|
247
261
|
*left = (unsigned int)(w->window_map.len - offset);
|
248
262
|
|
263
|
+
git_mutex_unlock(&git__mwindow_mutex);
|
249
264
|
return (unsigned char *) w->window_map.data + offset;
|
250
265
|
}
|
251
266
|
|
252
267
|
int git_mwindow_file_register(git_mwindow_file *mwf)
|
253
268
|
{
|
254
|
-
git_mwindow_ctl *ctl = &
|
269
|
+
git_mwindow_ctl *ctl = &mem_ctl;
|
270
|
+
int ret;
|
255
271
|
|
272
|
+
git_mutex_lock(&git__mwindow_mutex);
|
256
273
|
if (ctl->windowfiles.length == 0 &&
|
257
|
-
|
274
|
+
git_vector_init(&ctl->windowfiles, 8, NULL) < 0) {
|
275
|
+
git_mutex_unlock(&git__mwindow_mutex);
|
258
276
|
return -1;
|
277
|
+
}
|
278
|
+
|
279
|
+
ret = git_vector_insert(&ctl->windowfiles, mwf);
|
280
|
+
git_mutex_unlock(&git__mwindow_mutex);
|
281
|
+
|
282
|
+
return ret;
|
283
|
+
}
|
284
|
+
|
285
|
+
int git_mwindow_file_deregister(git_mwindow_file *mwf)
|
286
|
+
{
|
287
|
+
git_mwindow_ctl *ctl = &mem_ctl;
|
288
|
+
git_mwindow_file *cur;
|
289
|
+
unsigned int i;
|
290
|
+
|
291
|
+
git_mutex_lock(&git__mwindow_mutex);
|
292
|
+
git_vector_foreach(&ctl->windowfiles, i, cur) {
|
293
|
+
if (cur == mwf) {
|
294
|
+
git_vector_remove(&ctl->windowfiles, i);
|
295
|
+
git_mutex_unlock(&git__mwindow_mutex);
|
296
|
+
return 0;
|
297
|
+
}
|
298
|
+
}
|
299
|
+
git_mutex_unlock(&git__mwindow_mutex);
|
259
300
|
|
260
|
-
|
301
|
+
giterr_set(GITERR_ODB, "Failed to find the memory window file to deregister");
|
302
|
+
return -1;
|
261
303
|
}
|
262
304
|
|
263
305
|
void git_mwindow_close(git_mwindow **window)
|
264
306
|
{
|
265
307
|
git_mwindow *w = *window;
|
266
308
|
if (w) {
|
309
|
+
git_mutex_lock(&git__mwindow_mutex);
|
267
310
|
w->inuse_cnt--;
|
311
|
+
git_mutex_unlock(&git__mwindow_mutex);
|
268
312
|
*window = NULL;
|
269
313
|
}
|
270
314
|
}
|
@@ -38,8 +38,8 @@ typedef struct git_mwindow_ctl {
|
|
38
38
|
int git_mwindow_contains(git_mwindow *win, git_off_t offset);
|
39
39
|
void git_mwindow_free_all(git_mwindow_file *mwf);
|
40
40
|
unsigned char *git_mwindow_open(git_mwindow_file *mwf, git_mwindow **cursor, git_off_t offset, size_t extra, unsigned int *left);
|
41
|
-
void git_mwindow_scan_lru(git_mwindow_file *mwf, git_mwindow **lru_w, git_mwindow **lru_l);
|
42
41
|
int git_mwindow_file_register(git_mwindow_file *mwf);
|
42
|
+
int git_mwindow_file_deregister(git_mwindow_file *mwf);
|
43
43
|
void git_mwindow_close(git_mwindow **w_cursor);
|
44
44
|
|
45
45
|
#endif
|
@@ -12,7 +12,6 @@
|
|
12
12
|
# include <netdb.h>
|
13
13
|
# include <arpa/inet.h>
|
14
14
|
#else
|
15
|
-
# include <winsock2.h>
|
16
15
|
# include <ws2tcpip.h>
|
17
16
|
# ifdef _MSC_VER
|
18
17
|
# pragma comment(lib, "ws2_32.lib")
|
@@ -62,63 +61,72 @@ static int ssl_set_error(gitno_ssl *ssl, int error)
|
|
62
61
|
}
|
63
62
|
#endif
|
64
63
|
|
65
|
-
|
64
|
+
int gitno_recv(gitno_buffer *buf)
|
66
65
|
{
|
67
|
-
|
68
|
-
memset(data, 0x0, len);
|
69
|
-
buf->data = data;
|
70
|
-
buf->len = len;
|
71
|
-
buf->offset = 0;
|
72
|
-
buf->fd = t->socket;
|
73
|
-
#ifdef GIT_SSL
|
74
|
-
if (t->encrypt)
|
75
|
-
buf->ssl = &t->ssl;
|
76
|
-
#endif
|
66
|
+
return buf->recv(buf);
|
77
67
|
}
|
78
68
|
|
79
69
|
#ifdef GIT_SSL
|
80
|
-
static int
|
70
|
+
static int gitno__recv_ssl(gitno_buffer *buf)
|
81
71
|
{
|
82
72
|
int ret;
|
83
73
|
|
84
74
|
do {
|
85
|
-
ret = SSL_read(ssl->ssl, data, len);
|
86
|
-
} while (SSL_get_error(ssl->ssl, ret) == SSL_ERROR_WANT_READ);
|
75
|
+
ret = SSL_read(buf->ssl->ssl, buf->data + buf->offset, buf->len - buf->offset);
|
76
|
+
} while (SSL_get_error(buf->ssl->ssl, ret) == SSL_ERROR_WANT_READ);
|
87
77
|
|
88
|
-
if (ret < 0)
|
89
|
-
|
78
|
+
if (ret < 0) {
|
79
|
+
net_set_error("Error receiving socket data");
|
80
|
+
return -1;
|
81
|
+
}
|
90
82
|
|
83
|
+
buf->offset += ret;
|
91
84
|
return ret;
|
92
85
|
}
|
93
86
|
#endif
|
94
87
|
|
95
|
-
int
|
88
|
+
int gitno__recv(gitno_buffer *buf)
|
96
89
|
{
|
97
90
|
int ret;
|
98
91
|
|
99
|
-
#ifdef GIT_SSL
|
100
|
-
if (buf->ssl != NULL) {
|
101
|
-
if ((ret = ssl_recv(buf->ssl, buf->data + buf->offset, buf->len - buf->offset)) < 0)
|
102
|
-
return -1;
|
103
|
-
} else {
|
104
|
-
ret = p_recv(buf->fd, buf->data + buf->offset, buf->len - buf->offset, 0);
|
105
|
-
if (ret < 0) {
|
106
|
-
net_set_error("Error receiving socket data");
|
107
|
-
return -1;
|
108
|
-
}
|
109
|
-
}
|
110
|
-
#else
|
111
92
|
ret = p_recv(buf->fd, buf->data + buf->offset, buf->len - buf->offset, 0);
|
112
93
|
if (ret < 0) {
|
113
94
|
net_set_error("Error receiving socket data");
|
114
95
|
return -1;
|
115
96
|
}
|
116
|
-
#endif
|
117
97
|
|
118
98
|
buf->offset += ret;
|
119
99
|
return ret;
|
120
100
|
}
|
121
101
|
|
102
|
+
void gitno_buffer_setup_callback(
|
103
|
+
git_transport *t,
|
104
|
+
gitno_buffer *buf,
|
105
|
+
char *data,
|
106
|
+
size_t len,
|
107
|
+
int (*recv)(gitno_buffer *buf), void *cb_data)
|
108
|
+
{
|
109
|
+
memset(buf, 0x0, sizeof(gitno_buffer));
|
110
|
+
memset(data, 0x0, len);
|
111
|
+
buf->data = data;
|
112
|
+
buf->len = len;
|
113
|
+
buf->offset = 0;
|
114
|
+
buf->fd = t->socket;
|
115
|
+
buf->recv = recv;
|
116
|
+
buf->cb_data = cb_data;
|
117
|
+
}
|
118
|
+
|
119
|
+
void gitno_buffer_setup(git_transport *t, gitno_buffer *buf, char *data, size_t len)
|
120
|
+
{
|
121
|
+
#ifdef GIT_SSL
|
122
|
+
if (t->use_ssl) {
|
123
|
+
gitno_buffer_setup_callback(t, buf, data, len, gitno__recv_ssl, NULL);
|
124
|
+
buf->ssl = &t->ssl;
|
125
|
+
} else
|
126
|
+
#endif
|
127
|
+
gitno_buffer_setup_callback(t, buf, data, len, gitno__recv, NULL);
|
128
|
+
}
|
129
|
+
|
122
130
|
/* Consume up to ptr and move the rest of the buffer to the beginning */
|
123
131
|
void gitno_consume(gitno_buffer *buf, const char *ptr)
|
124
132
|
{
|
@@ -148,7 +156,7 @@ int gitno_ssl_teardown(git_transport *t)
|
|
148
156
|
int ret;
|
149
157
|
#endif
|
150
158
|
|
151
|
-
if (!t->
|
159
|
+
if (!t->use_ssl)
|
152
160
|
return 0;
|
153
161
|
|
154
162
|
#ifdef GIT_SSL
|
@@ -382,16 +390,18 @@ int gitno_connect(git_transport *t, const char *host, const char *port)
|
|
382
390
|
GIT_SOCKET s = INVALID_SOCKET;
|
383
391
|
|
384
392
|
memset(&hints, 0x0, sizeof(struct addrinfo));
|
385
|
-
hints.ai_family = AF_UNSPEC;
|
386
393
|
hints.ai_socktype = SOCK_STREAM;
|
394
|
+
hints.ai_family = AF_UNSPEC;
|
387
395
|
|
388
|
-
if ((ret =
|
389
|
-
giterr_set(GITERR_NET,
|
396
|
+
if ((ret = p_getaddrinfo(host, port, &hints, &info)) < 0) {
|
397
|
+
giterr_set(GITERR_NET,
|
398
|
+
"Failed to resolve address for %s: %s", host, p_gai_strerror(ret));
|
390
399
|
return -1;
|
391
400
|
}
|
392
401
|
|
393
402
|
for (p = info; p != NULL; p = p->ai_next) {
|
394
403
|
s = socket(p->ai_family, p->ai_socktype, p->ai_protocol);
|
404
|
+
|
395
405
|
if (s == INVALID_SOCKET) {
|
396
406
|
net_set_error("error creating socket");
|
397
407
|
break;
|
@@ -412,9 +422,9 @@ int gitno_connect(git_transport *t, const char *host, const char *port)
|
|
412
422
|
}
|
413
423
|
|
414
424
|
t->socket = s;
|
415
|
-
|
425
|
+
p_freeaddrinfo(info);
|
416
426
|
|
417
|
-
if (t->
|
427
|
+
if (t->use_ssl && ssl_setup(t, host) < 0)
|
418
428
|
return -1;
|
419
429
|
|
420
430
|
return 0;
|
@@ -444,7 +454,7 @@ int gitno_send(git_transport *t, const char *msg, size_t len, int flags)
|
|
444
454
|
size_t off = 0;
|
445
455
|
|
446
456
|
#ifdef GIT_SSL
|
447
|
-
if (t->
|
457
|
+
if (t->use_ssl)
|
448
458
|
return send_ssl(&t->ssl, msg, len);
|
449
459
|
#endif
|
450
460
|
|