rugged 1.3.2 → 1.6.2
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 +7 -4
- data/ext/rugged/rugged.c +16 -0
- data/ext/rugged/rugged.h +4 -0
- data/ext/rugged/rugged_blame.c +2 -0
- data/ext/rugged/rugged_blob.c +3 -0
- data/ext/rugged/rugged_commit.c +1 -0
- data/ext/rugged/rugged_config.c +9 -2
- data/ext/rugged/rugged_diff.c +1 -0
- data/ext/rugged/rugged_index.c +2 -0
- data/ext/rugged/rugged_patch.c +1 -0
- data/ext/rugged/rugged_rebase.c +1 -0
- data/ext/rugged/rugged_reference.c +1 -0
- data/ext/rugged/rugged_remote.c +28 -10
- data/ext/rugged/rugged_repo.c +7 -9
- data/ext/rugged/rugged_revwalk.c +5 -1
- data/ext/rugged/rugged_settings.c +5 -0
- data/ext/rugged/rugged_submodule.c +1 -0
- data/ext/rugged/rugged_tag.c +1 -0
- data/ext/rugged/rugged_tree.c +4 -0
- data/lib/rugged/index.rb +1 -1
- data/lib/rugged/tree.rb +5 -1
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +132 -288
- data/vendor/libgit2/COPYING +106 -19
- data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
- data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
- data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
- data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
- data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
- data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
- data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
- data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
- data/vendor/libgit2/cmake/{FindHTTP_Parser.cmake → FindHTTPParser.cmake} +17 -17
- data/vendor/libgit2/cmake/FindIconv.cmake +27 -27
- data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
- data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
- data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
- data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
- data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
- data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
- data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
- data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
- data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
- data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
- data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
- data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
- data/vendor/libgit2/cmake/SelectHTTPParser.cmake +19 -0
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +100 -100
- data/vendor/libgit2/cmake/SelectHashes.cmake +91 -53
- data/vendor/libgit2/cmake/SelectRegex.cmake +51 -0
- data/vendor/libgit2/cmake/SelectSSH.cmake +41 -0
- data/vendor/libgit2/cmake/SelectWinHTTP.cmake +17 -0
- data/vendor/libgit2/cmake/SelectZlib.cmake +34 -0
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +3 -1
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +88 -88
- data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
- data/vendor/libgit2/deps/zlib/adler32.c +7 -0
- data/vendor/libgit2/deps/zlib/crc32.c +975 -288
- data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
- data/vendor/libgit2/deps/zlib/deflate.c +83 -31
- data/vendor/libgit2/deps/zlib/deflate.h +12 -15
- data/vendor/libgit2/deps/zlib/gzguts.h +3 -2
- data/vendor/libgit2/deps/zlib/infback.c +2 -1
- data/vendor/libgit2/deps/zlib/inffast.c +14 -14
- data/vendor/libgit2/deps/zlib/inflate.c +39 -8
- data/vendor/libgit2/deps/zlib/inflate.h +3 -2
- data/vendor/libgit2/deps/zlib/inftrees.c +3 -3
- data/vendor/libgit2/deps/zlib/trees.c +27 -48
- data/vendor/libgit2/deps/zlib/zlib.h +126 -100
- data/vendor/libgit2/deps/zlib/zutil.c +2 -2
- data/vendor/libgit2/deps/zlib/zutil.h +12 -9
- data/vendor/libgit2/include/git2/apply.h +16 -2
- data/vendor/libgit2/include/git2/attr.h +11 -2
- data/vendor/libgit2/include/git2/blame.h +4 -1
- data/vendor/libgit2/include/git2/blob.h +14 -1
- data/vendor/libgit2/include/git2/branch.h +4 -2
- data/vendor/libgit2/include/git2/buffer.h +18 -78
- data/vendor/libgit2/include/git2/cert.h +2 -2
- data/vendor/libgit2/include/git2/checkout.h +5 -2
- data/vendor/libgit2/include/git2/clone.h +3 -3
- data/vendor/libgit2/include/git2/commit.h +2 -0
- data/vendor/libgit2/include/git2/common.h +28 -7
- data/vendor/libgit2/include/git2/config.h +25 -9
- data/vendor/libgit2/include/git2/credential.h +2 -1
- data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
- data/vendor/libgit2/include/git2/deprecated.h +9 -1
- data/vendor/libgit2/include/git2/describe.h +7 -2
- data/vendor/libgit2/include/git2/diff.h +18 -10
- data/vendor/libgit2/include/git2/email.h +1 -1
- data/vendor/libgit2/include/git2/errors.h +17 -3
- data/vendor/libgit2/include/git2/experimental.h +20 -0
- data/vendor/libgit2/include/git2/filter.h +7 -2
- data/vendor/libgit2/include/git2/graph.h +1 -0
- data/vendor/libgit2/include/git2/ignore.h +1 -1
- data/vendor/libgit2/include/git2/index.h +11 -5
- data/vendor/libgit2/include/git2/indexer.h +48 -0
- data/vendor/libgit2/include/git2/merge.h +24 -4
- data/vendor/libgit2/include/git2/message.h +2 -0
- data/vendor/libgit2/include/git2/object.h +49 -0
- data/vendor/libgit2/include/git2/odb.h +94 -13
- data/vendor/libgit2/include/git2/odb_backend.h +107 -19
- data/vendor/libgit2/include/git2/oid.h +115 -15
- data/vendor/libgit2/include/git2/pack.h +24 -8
- data/vendor/libgit2/include/git2/patch.h +8 -0
- data/vendor/libgit2/include/git2/pathspec.h +1 -1
- data/vendor/libgit2/include/git2/proxy.h +1 -1
- data/vendor/libgit2/include/git2/rebase.h +9 -1
- data/vendor/libgit2/include/git2/refdb.h +3 -0
- data/vendor/libgit2/include/git2/reflog.h +1 -1
- data/vendor/libgit2/include/git2/refs.h +2 -2
- data/vendor/libgit2/include/git2/remote.h +184 -37
- data/vendor/libgit2/include/git2/repository.h +34 -10
- data/vendor/libgit2/include/git2/reset.h +2 -2
- data/vendor/libgit2/include/git2/revparse.h +1 -1
- data/vendor/libgit2/include/git2/revwalk.h +4 -1
- data/vendor/libgit2/include/git2/signature.h +1 -1
- data/vendor/libgit2/include/git2/stash.h +61 -7
- data/vendor/libgit2/include/git2/status.h +14 -5
- data/vendor/libgit2/include/git2/strarray.h +0 -13
- data/vendor/libgit2/include/git2/submodule.h +7 -2
- data/vendor/libgit2/include/git2/sys/commit_graph.h +1 -1
- data/vendor/libgit2/include/git2/sys/odb_backend.h +3 -6
- data/vendor/libgit2/include/git2/sys/remote.h +46 -0
- data/vendor/libgit2/include/git2/sys/stream.h +1 -1
- data/vendor/libgit2/include/git2/sys/transport.h +46 -39
- data/vendor/libgit2/include/git2/tag.h +1 -0
- data/vendor/libgit2/include/git2/tree.h +4 -3
- data/vendor/libgit2/include/git2/types.h +7 -7
- data/vendor/libgit2/include/git2/version.h +27 -6
- data/vendor/libgit2/include/git2/worktree.h +12 -2
- data/vendor/libgit2/include/git2.h +1 -0
- data/vendor/libgit2/src/CMakeLists.txt +177 -419
- data/vendor/libgit2/src/README.md +12 -0
- data/vendor/libgit2/src/cli/CMakeLists.txt +57 -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 +154 -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/libgit2/CMakeLists.txt +141 -0
- data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +1 -1
- data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
- data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +18 -18
- data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
- data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +18 -18
- data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +18 -18
- data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +4 -4
- data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +18 -13
- data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +2 -0
- data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -1
- data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
- data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
- data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
- data/vendor/libgit2/src/{branch.h → libgit2/branch.h} +15 -3
- data/vendor/libgit2/src/libgit2/buf.c +126 -0
- data/vendor/libgit2/src/libgit2/buf.h +50 -0
- data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +74 -68
- data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +13 -13
- data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +96 -67
- data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +178 -73
- data/vendor/libgit2/src/libgit2/commit.h +87 -0
- data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +122 -89
- data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +14 -4
- data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +7 -4
- data/vendor/libgit2/src/libgit2/common.h +55 -0
- data/vendor/libgit2/src/{config.c → libgit2/config.c} +101 -69
- data/vendor/libgit2/src/{config.h → libgit2/config.h} +15 -2
- data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +105 -93
- data/vendor/libgit2/src/{config_mem.c → libgit2/config_mem.c} +9 -9
- data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +27 -23
- data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
- data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +35 -27
- data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +30 -9
- data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +2 -4
- data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +34 -36
- data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +3 -3
- data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +44 -26
- data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +47 -18
- data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
- data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +112 -100
- data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
- data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
- data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +13 -8
- data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
- data/vendor/libgit2/src/{email.c → libgit2/email.c} +55 -39
- data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
- data/vendor/libgit2/src/{errors.c → libgit2/errors.c} +18 -18
- data/vendor/libgit2/src/{errors.h → libgit2/errors.h} +1 -2
- data/vendor/libgit2/src/libgit2/experimental.h.in +13 -0
- data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +72 -27
- data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -1
- data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +23 -23
- data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +127 -53
- data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
- data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
- data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +35 -34
- data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
- data/vendor/libgit2/src/{index.c → libgit2/index.c} +91 -90
- data/vendor/libgit2/src/{index.h → libgit2/index.h} +6 -3
- data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +173 -92
- data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +71 -61
- data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +5 -5
- data/vendor/libgit2/src/{libgit2.c → libgit2/libgit2.c} +46 -11
- data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +38 -36
- data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +30 -30
- data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
- data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +2 -2
- data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -3
- data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
- data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +112 -92
- data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +5 -4
- data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +15 -12
- data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +5 -2
- data/vendor/libgit2/src/{netops.c → libgit2/netops.c} +1 -2
- data/vendor/libgit2/src/{netops.h → libgit2/netops.h} +1 -1
- data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +25 -34
- data/vendor/libgit2/src/{object.c → libgit2/object.c} +135 -30
- data/vendor/libgit2/src/{object.h → libgit2/object.h} +12 -3
- data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +228 -81
- data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
- data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
- data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +18 -5
- data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +137 -85
- data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +136 -90
- data/vendor/libgit2/src/libgit2/oid.h +273 -0
- data/vendor/libgit2/src/{oidmap.c → libgit2/oidmap.c} +1 -1
- data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +56 -30
- data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +11 -6
- data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +114 -84
- data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +31 -16
- data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +4 -3
- data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
- data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +1 -0
- data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +27 -11
- data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
- data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +29 -29
- data/vendor/libgit2/src/libgit2/path.c +375 -0
- data/vendor/libgit2/src/libgit2/path.h +68 -0
- data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +6 -6
- data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
- data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
- data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
- data/vendor/libgit2/src/{push.c → libgit2/push.c} +43 -38
- data/vendor/libgit2/src/{push.h → libgit2/push.h} +4 -16
- data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
- data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
- data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +119 -107
- data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +506 -197
- data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +7 -5
- data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +1 -2
- data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +34 -32
- data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +2 -2
- data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +32 -37
- data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +5 -2
- data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +718 -420
- data/vendor/libgit2/src/libgit2/remote.h +100 -0
- data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +629 -386
- data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +20 -9
- data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
- data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +14 -14
- data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +71 -42
- data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +12 -8
- data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +12 -6
- data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -1
- data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +235 -61
- data/vendor/libgit2/src/{status.c → libgit2/status.c} +4 -1
- data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
- data/vendor/libgit2/src/libgit2/strarray.h +25 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +8 -6
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +1 -1
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +7 -3
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +3 -3
- data/vendor/libgit2/src/{streams → libgit2/streams}/socket.c +4 -1
- data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +177 -161
- data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +1 -1
- data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
- data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +53 -18
- data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +73 -42
- data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
- data/vendor/libgit2/src/{threadstate.c → libgit2/threadstate.c} +3 -3
- data/vendor/libgit2/src/{threadstate.h → libgit2/threadstate.h} +2 -2
- data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
- data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
- data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +1 -1
- data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +1 -1
- data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +10 -10
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +2 -3
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.c +12 -13
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.c +10 -10
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +0 -1
- data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +9 -11
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +41 -20
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +2 -3
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +75 -66
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +138 -116
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +92 -133
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +35 -32
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +177 -65
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +97 -49
- data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.c +365 -198
- data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +58 -59
- data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +8 -8
- data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +2 -2
- data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +93 -83
- data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +4 -4
- data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +121 -94
- data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
- data/vendor/libgit2/src/libgit2/xdiff/git-xdiff.h +53 -0
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiff.h +15 -15
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.c +134 -108
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.c +23 -7
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xhistogram.c +87 -78
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xinclude.h +1 -12
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmerge.c +104 -117
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xpatience.c +6 -17
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.c +15 -20
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.c +18 -7
- data/vendor/libgit2/src/util/CMakeLists.txt +80 -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/{cc-compat.h → util/cc-compat.h} +1 -1
- data/vendor/libgit2/src/{date.c → util/date.c} +14 -20
- data/vendor/libgit2/src/util/date.h +33 -0
- data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +29 -29
- data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +2 -2
- data/vendor/libgit2/src/{path.c → util/fs_path.c} +453 -647
- data/vendor/libgit2/src/{path.h → util/fs_path.h} +221 -188
- data/vendor/libgit2/src/{futils.c → util/futils.c} +135 -90
- data/vendor/libgit2/src/{futils.h → util/futils.h} +28 -15
- data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +15 -1
- data/vendor/libgit2/src/{common.h → util/git2_util.h} +20 -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 +3 -3
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
- data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
- data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
- data/vendor/libgit2/src/util/hash/openssl.c +195 -0
- data/vendor/libgit2/src/util/hash/openssl.h +45 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -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/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
- data/vendor/libgit2/src/util/hash/win32.c +549 -0
- data/vendor/libgit2/src/util/hash/win32.h +60 -0
- data/vendor/libgit2/src/util/hash.c +158 -0
- data/vendor/libgit2/src/util/hash.h +61 -0
- data/vendor/libgit2/src/{khash.h → util/khash.h} +1 -1
- data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
- data/vendor/libgit2/src/util/net.c +1003 -0
- data/vendor/libgit2/src/{net.h → util/net.h} +18 -4
- data/vendor/libgit2/src/{pool.h → util/pool.h} +1 -1
- data/vendor/libgit2/src/{posix.c → util/posix.c} +3 -3
- data/vendor/libgit2/src/{posix.h → util/posix.h} +4 -1
- data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +2 -2
- data/vendor/libgit2/src/util/rand.c +234 -0
- data/vendor/libgit2/src/util/rand.h +37 -0
- data/vendor/libgit2/src/{regexp.c → util/regexp.c} +4 -4
- 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.c → util/sortedcache.c} +1 -1
- data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +2 -2
- data/vendor/libgit2/src/{buffer.c → util/str.c} +157 -151
- data/vendor/libgit2/src/util/str.h +357 -0
- 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/{thread.h → util/thread.h} +23 -22
- data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
- data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
- data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -4
- data/vendor/libgit2/src/{unix → util/unix}/realpath.c +1 -3
- 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} +15 -15
- data/vendor/libgit2/src/{util.h → util/util.h} +4 -29
- data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
- data/vendor/libgit2/src/{vector.h → util/vector.h} +2 -2
- 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}/map.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +140 -9
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
- data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
- data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +12 -28
- 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.c +2 -3
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +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.c → util/zstream.c} +5 -5
- data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
- metadata +402 -356
- data/vendor/libgit2/src/buffer.h +0 -374
- data/vendor/libgit2/src/commit.h +0 -46
- data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
- 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/mbedtls.c +0 -46
- 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 -38
- data/vendor/libgit2/src/hash.c +0 -110
- data/vendor/libgit2/src/hash.h +0 -46
- data/vendor/libgit2/src/message.h +0 -17
- data/vendor/libgit2/src/net.c +0 -540
- data/vendor/libgit2/src/oid.h +0 -51
- data/vendor/libgit2/src/remote.h +0 -55
- data/vendor/libgit2/src/sysdir.c +0 -347
- data/vendor/libgit2/src/win32/findfile.c +0 -230
- data/vendor/libgit2/src/win32/findfile.h +0 -19
- /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
- /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
- /data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +0 -0
- /data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +0 -0
- /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.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.h → libgit2/checkout.h} +0 -0
- /data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +0 -0
- /data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.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_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/{delta.c → libgit2/delta.c} +0 -0
- /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
- /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.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_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/{fetchhead.h → libgit2/fetchhead.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/{idxmap.c → libgit2/idxmap.c} +0 -0
- /data/vendor/libgit2/src/{idxmap.h → libgit2/idxmap.h} +0 -0
- /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
- /data/vendor/libgit2/src/{libgit2.h → libgit2/libgit2.h} +0 -0
- /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
- /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
- /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
- /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.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/{parse.h → libgit2/parse.h} +0 -0
- /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.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/{repo_template.h → libgit2/repo_template.h} +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/{status.h → libgit2/status.h} +0 -0
- /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.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.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/{transaction.h → libgit2/transaction.h} +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.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}/ssh.h +0 -0
- /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmacros.h +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.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/{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/{pool.c → util/pool.c} +0 -0
- /data/vendor/libgit2/src/{pqueue.c → util/pqueue.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/{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}/mingw-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +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_common.h +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
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
#include "futils.h"
|
|
14
14
|
#include "tree-cache.h"
|
|
15
15
|
#include "index.h"
|
|
16
|
+
#include "path.h"
|
|
16
17
|
|
|
17
18
|
#define DEFAULT_TREE_SIZE 16
|
|
18
19
|
#define MAX_FILEMODE_BYTES 6
|
|
@@ -54,8 +55,8 @@ GIT_INLINE(git_filemode_t) normalize_filemode(git_filemode_t filemode)
|
|
|
54
55
|
static int valid_entry_name(git_repository *repo, const char *filename)
|
|
55
56
|
{
|
|
56
57
|
return *filename != '\0' &&
|
|
57
|
-
|
|
58
|
-
|
|
58
|
+
git_path_is_valid(repo, filename, 0,
|
|
59
|
+
GIT_FS_PATH_REJECT_TRAVERSAL | GIT_PATH_REJECT_DOT_GIT | GIT_FS_PATH_REJECT_SLASH);
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
static int entry_sort_cmp(const void *a, const void *b)
|
|
@@ -63,7 +64,7 @@ static int entry_sort_cmp(const void *a, const void *b)
|
|
|
63
64
|
const git_tree_entry *e1 = (const git_tree_entry *)a;
|
|
64
65
|
const git_tree_entry *e2 = (const git_tree_entry *)b;
|
|
65
66
|
|
|
66
|
-
return
|
|
67
|
+
return git_fs_path_cmp(
|
|
67
68
|
e1->filename, e1->filename_len, git_tree_entry__is_tree(e1),
|
|
68
69
|
e2->filename, e2->filename_len, git_tree_entry__is_tree(e2),
|
|
69
70
|
git__strncmp);
|
|
@@ -81,34 +82,33 @@ int git_tree_entry_cmp(const git_tree_entry *e1, const git_tree_entry *e2)
|
|
|
81
82
|
static git_tree_entry *alloc_entry(const char *filename, size_t filename_len, const git_oid *id)
|
|
82
83
|
{
|
|
83
84
|
git_tree_entry *entry = NULL;
|
|
85
|
+
char *filename_ptr;
|
|
84
86
|
size_t tree_len;
|
|
85
87
|
|
|
88
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
89
|
+
size_t oid_size = git_oid_size(id->type);
|
|
90
|
+
#else
|
|
91
|
+
size_t oid_size = GIT_OID_SHA1_SIZE;
|
|
92
|
+
#endif
|
|
93
|
+
|
|
86
94
|
TREE_ENTRY_CHECK_NAMELEN(filename_len);
|
|
87
95
|
|
|
88
96
|
if (GIT_ADD_SIZET_OVERFLOW(&tree_len, sizeof(git_tree_entry), filename_len) ||
|
|
89
97
|
GIT_ADD_SIZET_OVERFLOW(&tree_len, tree_len, 1) ||
|
|
90
|
-
GIT_ADD_SIZET_OVERFLOW(&tree_len, tree_len,
|
|
98
|
+
GIT_ADD_SIZET_OVERFLOW(&tree_len, tree_len, oid_size))
|
|
91
99
|
return NULL;
|
|
92
100
|
|
|
93
101
|
entry = git__calloc(1, tree_len);
|
|
94
102
|
if (!entry)
|
|
95
103
|
return NULL;
|
|
96
104
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
filename_ptr = ((char *) entry) + sizeof(git_tree_entry);
|
|
102
|
-
memcpy(filename_ptr, filename, filename_len);
|
|
103
|
-
entry->filename = filename_ptr;
|
|
104
|
-
|
|
105
|
-
id_ptr = filename_ptr + filename_len + 1;
|
|
106
|
-
git_oid_cpy(id_ptr, id);
|
|
107
|
-
entry->oid = id_ptr;
|
|
108
|
-
}
|
|
109
|
-
|
|
105
|
+
filename_ptr = ((char *) entry) + sizeof(git_tree_entry);
|
|
106
|
+
memcpy(filename_ptr, filename, filename_len);
|
|
107
|
+
entry->filename = filename_ptr;
|
|
110
108
|
entry->filename_len = (uint16_t)filename_len;
|
|
111
109
|
|
|
110
|
+
git_oid_cpy(&entry->oid, id);
|
|
111
|
+
|
|
112
112
|
return entry;
|
|
113
113
|
}
|
|
114
114
|
|
|
@@ -230,7 +230,7 @@ int git_tree_entry_dup(git_tree_entry **dest, const git_tree_entry *source)
|
|
|
230
230
|
|
|
231
231
|
GIT_ASSERT_ARG(source);
|
|
232
232
|
|
|
233
|
-
cpy = alloc_entry(source->filename, source->filename_len, source->oid);
|
|
233
|
+
cpy = alloc_entry(source->filename, source->filename_len, &source->oid);
|
|
234
234
|
if (cpy == NULL)
|
|
235
235
|
return -1;
|
|
236
236
|
|
|
@@ -268,7 +268,7 @@ const char *git_tree_entry_name(const git_tree_entry *entry)
|
|
|
268
268
|
const git_oid *git_tree_entry_id(const git_tree_entry *entry)
|
|
269
269
|
{
|
|
270
270
|
GIT_ASSERT_ARG_WITH_RETVAL(entry, NULL);
|
|
271
|
-
return entry->oid;
|
|
271
|
+
return &entry->oid;
|
|
272
272
|
}
|
|
273
273
|
|
|
274
274
|
git_object_t git_tree_entry_type(const git_tree_entry *entry)
|
|
@@ -291,7 +291,7 @@ int git_tree_entry_to_object(
|
|
|
291
291
|
GIT_ASSERT_ARG(entry);
|
|
292
292
|
GIT_ASSERT_ARG(object_out);
|
|
293
293
|
|
|
294
|
-
return git_object_lookup(object_out, repo, entry->oid, GIT_OBJECT_ANY);
|
|
294
|
+
return git_object_lookup(object_out, repo, &entry->oid, GIT_OBJECT_ANY);
|
|
295
295
|
}
|
|
296
296
|
|
|
297
297
|
static const git_tree_entry *entry_fromname(
|
|
@@ -330,7 +330,7 @@ const git_tree_entry *git_tree_entry_byid(
|
|
|
330
330
|
GIT_ASSERT_ARG_WITH_RETVAL(tree, NULL);
|
|
331
331
|
|
|
332
332
|
git_array_foreach(tree->entries, i, e) {
|
|
333
|
-
if (
|
|
333
|
+
if (git_oid_equal(&e->oid, id))
|
|
334
334
|
return e;
|
|
335
335
|
}
|
|
336
336
|
|
|
@@ -350,15 +350,26 @@ size_t git_treebuilder_entrycount(git_treebuilder *bld)
|
|
|
350
350
|
return git_strmap_size(bld->map);
|
|
351
351
|
}
|
|
352
352
|
|
|
353
|
-
|
|
353
|
+
GIT_INLINE(void) set_error(const char *str, const char *path)
|
|
354
354
|
{
|
|
355
355
|
if (path)
|
|
356
356
|
git_error_set(GIT_ERROR_TREE, "%s - %s", str, path);
|
|
357
357
|
else
|
|
358
358
|
git_error_set(GIT_ERROR_TREE, "%s", str);
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
static int tree_error(const char *str, const char *path)
|
|
362
|
+
{
|
|
363
|
+
set_error(str, path);
|
|
359
364
|
return -1;
|
|
360
365
|
}
|
|
361
366
|
|
|
367
|
+
static int tree_parse_error(const char *str, const char *path)
|
|
368
|
+
{
|
|
369
|
+
set_error(str, path);
|
|
370
|
+
return GIT_EINVALID;
|
|
371
|
+
}
|
|
372
|
+
|
|
362
373
|
static int parse_mode(uint16_t *mode_out, const char *buffer, size_t buffer_len, const char **buffer_out)
|
|
363
374
|
{
|
|
364
375
|
int32_t mode;
|
|
@@ -378,11 +389,12 @@ static int parse_mode(uint16_t *mode_out, const char *buffer, size_t buffer_len,
|
|
|
378
389
|
return 0;
|
|
379
390
|
}
|
|
380
391
|
|
|
381
|
-
int git_tree__parse_raw(void *_tree, const char *data, size_t size)
|
|
392
|
+
int git_tree__parse_raw(void *_tree, const char *data, size_t size, git_oid_t oid_type)
|
|
382
393
|
{
|
|
383
394
|
git_tree *tree = _tree;
|
|
384
395
|
const char *buffer;
|
|
385
396
|
const char *buffer_end;
|
|
397
|
+
const long oid_size = (long)git_oid_size(oid_type);
|
|
386
398
|
|
|
387
399
|
buffer = data;
|
|
388
400
|
buffer_end = buffer + size;
|
|
@@ -398,51 +410,48 @@ int git_tree__parse_raw(void *_tree, const char *data, size_t size)
|
|
|
398
410
|
uint16_t attr;
|
|
399
411
|
|
|
400
412
|
if (parse_mode(&attr, buffer, buffer_end - buffer, &buffer) < 0 || !buffer)
|
|
401
|
-
return
|
|
413
|
+
return tree_parse_error("failed to parse tree: can't parse filemode", NULL);
|
|
402
414
|
|
|
403
415
|
if (buffer >= buffer_end || (*buffer++) != ' ')
|
|
404
|
-
return
|
|
416
|
+
return tree_parse_error("failed to parse tree: missing space after filemode", NULL);
|
|
405
417
|
|
|
406
418
|
if ((nul = memchr(buffer, 0, buffer_end - buffer)) == NULL)
|
|
407
|
-
return
|
|
419
|
+
return tree_parse_error("failed to parse tree: object is corrupted", NULL);
|
|
408
420
|
|
|
409
421
|
if ((filename_len = nul - buffer) == 0 || filename_len > UINT16_MAX)
|
|
410
|
-
return
|
|
422
|
+
return tree_parse_error("failed to parse tree: can't parse filename", NULL);
|
|
411
423
|
|
|
412
|
-
if ((buffer_end - (nul + 1)) <
|
|
413
|
-
return
|
|
424
|
+
if ((buffer_end - (nul + 1)) < (long)oid_size)
|
|
425
|
+
return tree_parse_error("failed to parse tree: can't parse OID", NULL);
|
|
414
426
|
|
|
415
427
|
/* Allocate the entry */
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
GIT_ERROR_CHECK_ALLOC(entry);
|
|
419
|
-
|
|
420
|
-
entry->attr = attr;
|
|
421
|
-
entry->filename_len = (uint16_t)filename_len;
|
|
422
|
-
entry->filename = buffer;
|
|
423
|
-
entry->oid = (git_oid *) ((char *) buffer + filename_len + 1);
|
|
424
|
-
}
|
|
428
|
+
entry = git_array_alloc(tree->entries);
|
|
429
|
+
GIT_ERROR_CHECK_ALLOC(entry);
|
|
425
430
|
|
|
431
|
+
entry->attr = attr;
|
|
432
|
+
entry->filename_len = (uint16_t)filename_len;
|
|
433
|
+
entry->filename = buffer;
|
|
426
434
|
buffer += filename_len + 1;
|
|
427
|
-
|
|
435
|
+
|
|
436
|
+
git_oid__fromraw(&entry->oid, (unsigned char *)buffer, oid_type);
|
|
437
|
+
buffer += oid_size;
|
|
428
438
|
}
|
|
429
439
|
|
|
430
440
|
return 0;
|
|
431
441
|
}
|
|
432
442
|
|
|
433
|
-
int git_tree__parse(void *_tree, git_odb_object *odb_obj)
|
|
443
|
+
int git_tree__parse(void *_tree, git_odb_object *odb_obj, git_oid_t oid_type)
|
|
434
444
|
{
|
|
435
445
|
git_tree *tree = _tree;
|
|
446
|
+
const char *data = git_odb_object_data(odb_obj);
|
|
447
|
+
size_t size = git_odb_object_size(odb_obj);
|
|
448
|
+
int error;
|
|
436
449
|
|
|
437
|
-
if ((git_tree__parse_raw(tree,
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
return -1;
|
|
441
|
-
|
|
442
|
-
if (git_odb_object_dup(&tree->odb_obj, odb_obj) < 0)
|
|
443
|
-
return -1;
|
|
450
|
+
if ((error = git_tree__parse_raw(tree, data, size, oid_type)) < 0 ||
|
|
451
|
+
(error = git_odb_object_dup(&tree->odb_obj, odb_obj)) < 0)
|
|
452
|
+
return error;
|
|
444
453
|
|
|
445
|
-
return
|
|
454
|
+
return error;
|
|
446
455
|
}
|
|
447
456
|
|
|
448
457
|
static size_t find_next_dir(const char *dirname, git_index *index, size_t start)
|
|
@@ -495,22 +504,23 @@ static int check_entry(git_repository *repo, const char *filename, const git_oid
|
|
|
495
504
|
static int git_treebuilder__write_with_buffer(
|
|
496
505
|
git_oid *oid,
|
|
497
506
|
git_treebuilder *bld,
|
|
498
|
-
|
|
507
|
+
git_str *buf)
|
|
499
508
|
{
|
|
500
509
|
int error = 0;
|
|
501
510
|
size_t i, entrycount;
|
|
502
511
|
git_odb *odb;
|
|
503
512
|
git_tree_entry *entry;
|
|
504
513
|
git_vector entries = GIT_VECTOR_INIT;
|
|
514
|
+
size_t oid_size = git_oid_size(bld->repo->oid_type);
|
|
505
515
|
|
|
506
|
-
|
|
516
|
+
git_str_clear(buf);
|
|
507
517
|
|
|
508
518
|
entrycount = git_strmap_size(bld->map);
|
|
509
519
|
if ((error = git_vector_init(&entries, entrycount, entry_sort_cmp)) < 0)
|
|
510
520
|
goto out;
|
|
511
521
|
|
|
512
522
|
if (buf->asize == 0 &&
|
|
513
|
-
(error =
|
|
523
|
+
(error = git_str_grow(buf, entrycount * 72)) < 0)
|
|
514
524
|
goto out;
|
|
515
525
|
|
|
516
526
|
git_strmap_foreach_value(bld->map, entry, {
|
|
@@ -523,11 +533,11 @@ static int git_treebuilder__write_with_buffer(
|
|
|
523
533
|
for (i = 0; i < entries.length && !error; ++i) {
|
|
524
534
|
entry = git_vector_get(&entries, i);
|
|
525
535
|
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
536
|
+
git_str_printf(buf, "%o ", entry->attr);
|
|
537
|
+
git_str_put(buf, entry->filename, entry->filename_len + 1);
|
|
538
|
+
git_str_put(buf, (char *)entry->oid.id, oid_size);
|
|
529
539
|
|
|
530
|
-
if (
|
|
540
|
+
if (git_str_oom(buf)) {
|
|
531
541
|
error = -1;
|
|
532
542
|
goto out;
|
|
533
543
|
}
|
|
@@ -575,7 +585,7 @@ static int write_tree(
|
|
|
575
585
|
git_index *index,
|
|
576
586
|
const char *dirname,
|
|
577
587
|
size_t start,
|
|
578
|
-
|
|
588
|
+
git_str *shared_buf)
|
|
579
589
|
{
|
|
580
590
|
git_treebuilder *bld = NULL;
|
|
581
591
|
size_t i, entries = git_index_entrycount(index);
|
|
@@ -594,7 +604,7 @@ static int write_tree(
|
|
|
594
604
|
|
|
595
605
|
/*
|
|
596
606
|
* This loop is unfortunate, but necessary. The index doesn't have
|
|
597
|
-
* any
|
|
607
|
+
* any directories, so we need to handle that manually, and we
|
|
598
608
|
* need to keep track of the current position.
|
|
599
609
|
*/
|
|
600
610
|
for (i = start; i < entries; ++i) {
|
|
@@ -676,7 +686,7 @@ int git_tree__write_index(
|
|
|
676
686
|
{
|
|
677
687
|
int ret;
|
|
678
688
|
git_tree *tree;
|
|
679
|
-
|
|
689
|
+
git_str shared_buf = GIT_STR_INIT;
|
|
680
690
|
bool old_ignore_case = false;
|
|
681
691
|
|
|
682
692
|
GIT_ASSERT_ARG(oid);
|
|
@@ -705,7 +715,7 @@ int git_tree__write_index(
|
|
|
705
715
|
}
|
|
706
716
|
|
|
707
717
|
ret = write_tree(oid, repo, index, "", 0, &shared_buf);
|
|
708
|
-
|
|
718
|
+
git_str_dispose(&shared_buf);
|
|
709
719
|
|
|
710
720
|
if (old_ignore_case)
|
|
711
721
|
git_index__set_ignore_case(index, true);
|
|
@@ -754,7 +764,7 @@ int git_treebuilder_new(
|
|
|
754
764
|
git_array_foreach(source->entries, i, entry_src) {
|
|
755
765
|
if (append_entry(
|
|
756
766
|
bld, entry_src->filename,
|
|
757
|
-
entry_src->oid,
|
|
767
|
+
&entry_src->oid,
|
|
758
768
|
entry_src->attr,
|
|
759
769
|
false) < 0)
|
|
760
770
|
goto on_error;
|
|
@@ -787,7 +797,7 @@ int git_treebuilder_insert(
|
|
|
787
797
|
return error;
|
|
788
798
|
|
|
789
799
|
if ((entry = git_strmap_get(bld->map, filename)) != NULL) {
|
|
790
|
-
git_oid_cpy(
|
|
800
|
+
git_oid_cpy(&entry->oid, id);
|
|
791
801
|
} else {
|
|
792
802
|
entry = alloc_entry(filename, strlen(filename), id);
|
|
793
803
|
GIT_ERROR_CHECK_ALLOC(entry);
|
|
@@ -879,7 +889,7 @@ void git_treebuilder_free(git_treebuilder *bld)
|
|
|
879
889
|
if (bld == NULL)
|
|
880
890
|
return;
|
|
881
891
|
|
|
882
|
-
|
|
892
|
+
git_str_dispose(&bld->write_cache);
|
|
883
893
|
git_treebuilder_clear(bld);
|
|
884
894
|
git_strmap_free(bld->map);
|
|
885
895
|
git__free(bld);
|
|
@@ -943,7 +953,7 @@ int git_tree_entry_bypath(
|
|
|
943
953
|
return git_tree_entry_dup(entry_out, entry);
|
|
944
954
|
}
|
|
945
955
|
|
|
946
|
-
if (git_tree_lookup(&subtree, root->object.repo, entry->oid) < 0)
|
|
956
|
+
if (git_tree_lookup(&subtree, root->object.repo, &entry->oid) < 0)
|
|
947
957
|
return -1;
|
|
948
958
|
|
|
949
959
|
error = git_tree_entry_bypath(
|
|
@@ -959,7 +969,7 @@ int git_tree_entry_bypath(
|
|
|
959
969
|
static int tree_walk(
|
|
960
970
|
const git_tree *tree,
|
|
961
971
|
git_treewalk_cb callback,
|
|
962
|
-
|
|
972
|
+
git_str *path,
|
|
963
973
|
void *payload,
|
|
964
974
|
bool preorder)
|
|
965
975
|
{
|
|
@@ -982,17 +992,17 @@ static int tree_walk(
|
|
|
982
992
|
|
|
983
993
|
if (git_tree_entry__is_tree(entry)) {
|
|
984
994
|
git_tree *subtree;
|
|
985
|
-
size_t path_len =
|
|
995
|
+
size_t path_len = git_str_len(path);
|
|
986
996
|
|
|
987
|
-
error = git_tree_lookup(&subtree, tree->object.repo, entry->oid);
|
|
997
|
+
error = git_tree_lookup(&subtree, tree->object.repo, &entry->oid);
|
|
988
998
|
if (error < 0)
|
|
989
999
|
break;
|
|
990
1000
|
|
|
991
1001
|
/* append the next entry to the path */
|
|
992
|
-
|
|
993
|
-
|
|
1002
|
+
git_str_puts(path, entry->filename);
|
|
1003
|
+
git_str_putc(path, '/');
|
|
994
1004
|
|
|
995
|
-
if (
|
|
1005
|
+
if (git_str_oom(path))
|
|
996
1006
|
error = -1;
|
|
997
1007
|
else
|
|
998
1008
|
error = tree_walk(subtree, callback, path, payload, preorder);
|
|
@@ -1001,7 +1011,7 @@ static int tree_walk(
|
|
|
1001
1011
|
if (error != 0)
|
|
1002
1012
|
break;
|
|
1003
1013
|
|
|
1004
|
-
|
|
1014
|
+
git_str_truncate(path, path_len);
|
|
1005
1015
|
}
|
|
1006
1016
|
|
|
1007
1017
|
if (!preorder) {
|
|
@@ -1024,7 +1034,7 @@ int git_tree_walk(
|
|
|
1024
1034
|
void *payload)
|
|
1025
1035
|
{
|
|
1026
1036
|
int error = 0;
|
|
1027
|
-
|
|
1037
|
+
git_str root_path = GIT_STR_INIT;
|
|
1028
1038
|
|
|
1029
1039
|
if (mode != GIT_TREEWALK_POST && mode != GIT_TREEWALK_PRE) {
|
|
1030
1040
|
git_error_set(GIT_ERROR_INVALID, "invalid walking mode for tree walk");
|
|
@@ -1034,7 +1044,7 @@ int git_tree_walk(
|
|
|
1034
1044
|
error = tree_walk(
|
|
1035
1045
|
tree, callback, &root_path, payload, (mode == GIT_TREEWALK_PRE));
|
|
1036
1046
|
|
|
1037
|
-
|
|
1047
|
+
git_str_dispose(&root_path);
|
|
1038
1048
|
|
|
1039
1049
|
return error;
|
|
1040
1050
|
}
|
|
@@ -1080,19 +1090,19 @@ GIT_INLINE(size_t) count_slashes(const char *path)
|
|
|
1080
1090
|
return count;
|
|
1081
1091
|
}
|
|
1082
1092
|
|
|
1083
|
-
static bool next_component(
|
|
1093
|
+
static bool next_component(git_str *out, const char *in)
|
|
1084
1094
|
{
|
|
1085
1095
|
const char *slash = strchr(in, '/');
|
|
1086
1096
|
|
|
1087
|
-
|
|
1097
|
+
git_str_clear(out);
|
|
1088
1098
|
|
|
1089
1099
|
if (slash)
|
|
1090
|
-
|
|
1100
|
+
git_str_put(out, in, slash - in);
|
|
1091
1101
|
|
|
1092
1102
|
return !!slash;
|
|
1093
1103
|
}
|
|
1094
1104
|
|
|
1095
|
-
static int create_popped_tree(tree_stack_entry *current, tree_stack_entry *popped,
|
|
1105
|
+
static int create_popped_tree(tree_stack_entry *current, tree_stack_entry *popped, git_str *component)
|
|
1096
1106
|
{
|
|
1097
1107
|
int error;
|
|
1098
1108
|
git_oid new_tree;
|
|
@@ -1116,8 +1126,8 @@ static int create_popped_tree(tree_stack_entry *current, tree_stack_entry *poppe
|
|
|
1116
1126
|
}
|
|
1117
1127
|
|
|
1118
1128
|
/* We've written out the tree, now we have to put the new value into its parent */
|
|
1119
|
-
|
|
1120
|
-
|
|
1129
|
+
git_str_clear(component);
|
|
1130
|
+
git_str_puts(component, popped->name);
|
|
1121
1131
|
git__free(popped->name);
|
|
1122
1132
|
|
|
1123
1133
|
GIT_ERROR_CHECK_ALLOC(component->ptr);
|
|
@@ -1142,7 +1152,7 @@ int git_tree_create_updated(git_oid *out, git_repository *repo, git_tree *baseli
|
|
|
1142
1152
|
git_vector entries;
|
|
1143
1153
|
int error;
|
|
1144
1154
|
size_t i;
|
|
1145
|
-
|
|
1155
|
+
git_str component = GIT_STR_INIT;
|
|
1146
1156
|
|
|
1147
1157
|
if ((error = git_vector_init(&entries, nupdates, compare_entries)) < 0)
|
|
1148
1158
|
return error;
|
|
@@ -1171,7 +1181,7 @@ int git_tree_create_updated(git_oid *out, git_repository *repo, git_tree *baseli
|
|
|
1171
1181
|
|
|
1172
1182
|
/* Figure out how much we need to change from the previous tree */
|
|
1173
1183
|
if (last_update)
|
|
1174
|
-
common_prefix =
|
|
1184
|
+
common_prefix = git_fs_path_common_dirlen(last_update->path, update->path);
|
|
1175
1185
|
|
|
1176
1186
|
/*
|
|
1177
1187
|
* The entries are sorted, so when we find we're no
|
|
@@ -1233,7 +1243,7 @@ int git_tree_create_updated(git_oid *out, git_repository *repo, git_tree *baseli
|
|
|
1233
1243
|
{
|
|
1234
1244
|
/* Make sure we're replacing something of the same type */
|
|
1235
1245
|
tree_stack_entry *last = git_array_last(stack);
|
|
1236
|
-
char *basename =
|
|
1246
|
+
char *basename = git_fs_path_basename(update->path);
|
|
1237
1247
|
const git_tree_entry *e = git_treebuilder_get(last->bld, basename);
|
|
1238
1248
|
if (e && git_tree_entry_type(e) != git_object__type_from_filemode(update->filemode)) {
|
|
1239
1249
|
git__free(basename);
|
|
@@ -1252,7 +1262,7 @@ int git_tree_create_updated(git_oid *out, git_repository *repo, git_tree *baseli
|
|
|
1252
1262
|
case GIT_TREE_UPDATE_REMOVE:
|
|
1253
1263
|
{
|
|
1254
1264
|
tree_stack_entry *last = git_array_last(stack);
|
|
1255
|
-
char *basename =
|
|
1265
|
+
char *basename = git_fs_path_basename(update->path);
|
|
1256
1266
|
error = git_treebuilder_remove(last->bld, basename);
|
|
1257
1267
|
git__free(basename);
|
|
1258
1268
|
break;
|
|
@@ -1300,7 +1310,7 @@ cleanup:
|
|
|
1300
1310
|
}
|
|
1301
1311
|
}
|
|
1302
1312
|
|
|
1303
|
-
|
|
1313
|
+
git_str_dispose(&component);
|
|
1304
1314
|
git_array_clear(stack);
|
|
1305
1315
|
git_vector_free(&entries);
|
|
1306
1316
|
return error;
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
struct git_tree_entry {
|
|
20
20
|
uint16_t attr;
|
|
21
21
|
uint16_t filename_len;
|
|
22
|
-
|
|
22
|
+
git_oid oid;
|
|
23
23
|
const char *filename;
|
|
24
24
|
};
|
|
25
25
|
|
|
@@ -32,7 +32,7 @@ struct git_tree {
|
|
|
32
32
|
struct git_treebuilder {
|
|
33
33
|
git_repository *repo;
|
|
34
34
|
git_strmap *map;
|
|
35
|
-
|
|
35
|
+
git_str write_cache;
|
|
36
36
|
};
|
|
37
37
|
|
|
38
38
|
GIT_INLINE(bool) git_tree_entry__is_tree(const struct git_tree_entry *e)
|
|
@@ -41,8 +41,8 @@ GIT_INLINE(bool) git_tree_entry__is_tree(const struct git_tree_entry *e)
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
void git_tree__free(void *tree);
|
|
44
|
-
int git_tree__parse(void *tree, git_odb_object *obj);
|
|
45
|
-
int git_tree__parse_raw(void *_tree, const char *data, size_t size);
|
|
44
|
+
int git_tree__parse(void *tree, git_odb_object *obj, git_oid_t oid_type);
|
|
45
|
+
int git_tree__parse_raw(void *_tree, const char *data, size_t size, git_oid_t oid_type);
|
|
46
46
|
|
|
47
47
|
/**
|
|
48
48
|
* Write a tree to the given repository
|