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.
Files changed (547) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/ext/rugged/extconf.rb +7 -4
  4. data/ext/rugged/rugged.c +16 -0
  5. data/ext/rugged/rugged.h +4 -0
  6. data/ext/rugged/rugged_blame.c +2 -0
  7. data/ext/rugged/rugged_blob.c +3 -0
  8. data/ext/rugged/rugged_commit.c +1 -0
  9. data/ext/rugged/rugged_config.c +9 -2
  10. data/ext/rugged/rugged_diff.c +1 -0
  11. data/ext/rugged/rugged_index.c +2 -0
  12. data/ext/rugged/rugged_patch.c +1 -0
  13. data/ext/rugged/rugged_rebase.c +1 -0
  14. data/ext/rugged/rugged_reference.c +1 -0
  15. data/ext/rugged/rugged_remote.c +28 -10
  16. data/ext/rugged/rugged_repo.c +7 -9
  17. data/ext/rugged/rugged_revwalk.c +5 -1
  18. data/ext/rugged/rugged_settings.c +5 -0
  19. data/ext/rugged/rugged_submodule.c +1 -0
  20. data/ext/rugged/rugged_tag.c +1 -0
  21. data/ext/rugged/rugged_tree.c +4 -0
  22. data/lib/rugged/index.rb +1 -1
  23. data/lib/rugged/tree.rb +5 -1
  24. data/lib/rugged/version.rb +1 -1
  25. data/vendor/libgit2/CMakeLists.txt +132 -288
  26. data/vendor/libgit2/COPYING +106 -19
  27. data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
  28. data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
  29. data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
  30. data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
  31. data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
  32. data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
  33. data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
  34. data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
  35. data/vendor/libgit2/cmake/{FindHTTP_Parser.cmake → FindHTTPParser.cmake} +17 -17
  36. data/vendor/libgit2/cmake/FindIconv.cmake +27 -27
  37. data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
  38. data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
  39. data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
  40. data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
  41. data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
  42. data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
  43. data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
  44. data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
  45. data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
  46. data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
  47. data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
  48. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
  49. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +19 -0
  50. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +100 -100
  51. data/vendor/libgit2/cmake/SelectHashes.cmake +91 -53
  52. data/vendor/libgit2/cmake/SelectRegex.cmake +51 -0
  53. data/vendor/libgit2/cmake/SelectSSH.cmake +41 -0
  54. data/vendor/libgit2/cmake/SelectWinHTTP.cmake +17 -0
  55. data/vendor/libgit2/cmake/SelectZlib.cmake +34 -0
  56. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
  57. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
  58. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +3 -1
  59. data/vendor/libgit2/deps/ntlmclient/ntlm.c +4 -4
  60. data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
  61. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
  62. data/vendor/libgit2/deps/pcre/CMakeLists.txt +88 -88
  63. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
  64. data/vendor/libgit2/deps/zlib/adler32.c +7 -0
  65. data/vendor/libgit2/deps/zlib/crc32.c +975 -288
  66. data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
  67. data/vendor/libgit2/deps/zlib/deflate.c +83 -31
  68. data/vendor/libgit2/deps/zlib/deflate.h +12 -15
  69. data/vendor/libgit2/deps/zlib/gzguts.h +3 -2
  70. data/vendor/libgit2/deps/zlib/infback.c +2 -1
  71. data/vendor/libgit2/deps/zlib/inffast.c +14 -14
  72. data/vendor/libgit2/deps/zlib/inflate.c +39 -8
  73. data/vendor/libgit2/deps/zlib/inflate.h +3 -2
  74. data/vendor/libgit2/deps/zlib/inftrees.c +3 -3
  75. data/vendor/libgit2/deps/zlib/trees.c +27 -48
  76. data/vendor/libgit2/deps/zlib/zlib.h +126 -100
  77. data/vendor/libgit2/deps/zlib/zutil.c +2 -2
  78. data/vendor/libgit2/deps/zlib/zutil.h +12 -9
  79. data/vendor/libgit2/include/git2/apply.h +16 -2
  80. data/vendor/libgit2/include/git2/attr.h +11 -2
  81. data/vendor/libgit2/include/git2/blame.h +4 -1
  82. data/vendor/libgit2/include/git2/blob.h +14 -1
  83. data/vendor/libgit2/include/git2/branch.h +4 -2
  84. data/vendor/libgit2/include/git2/buffer.h +18 -78
  85. data/vendor/libgit2/include/git2/cert.h +2 -2
  86. data/vendor/libgit2/include/git2/checkout.h +5 -2
  87. data/vendor/libgit2/include/git2/clone.h +3 -3
  88. data/vendor/libgit2/include/git2/commit.h +2 -0
  89. data/vendor/libgit2/include/git2/common.h +28 -7
  90. data/vendor/libgit2/include/git2/config.h +25 -9
  91. data/vendor/libgit2/include/git2/credential.h +2 -1
  92. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  93. data/vendor/libgit2/include/git2/deprecated.h +9 -1
  94. data/vendor/libgit2/include/git2/describe.h +7 -2
  95. data/vendor/libgit2/include/git2/diff.h +18 -10
  96. data/vendor/libgit2/include/git2/email.h +1 -1
  97. data/vendor/libgit2/include/git2/errors.h +17 -3
  98. data/vendor/libgit2/include/git2/experimental.h +20 -0
  99. data/vendor/libgit2/include/git2/filter.h +7 -2
  100. data/vendor/libgit2/include/git2/graph.h +1 -0
  101. data/vendor/libgit2/include/git2/ignore.h +1 -1
  102. data/vendor/libgit2/include/git2/index.h +11 -5
  103. data/vendor/libgit2/include/git2/indexer.h +48 -0
  104. data/vendor/libgit2/include/git2/merge.h +24 -4
  105. data/vendor/libgit2/include/git2/message.h +2 -0
  106. data/vendor/libgit2/include/git2/object.h +49 -0
  107. data/vendor/libgit2/include/git2/odb.h +94 -13
  108. data/vendor/libgit2/include/git2/odb_backend.h +107 -19
  109. data/vendor/libgit2/include/git2/oid.h +115 -15
  110. data/vendor/libgit2/include/git2/pack.h +24 -8
  111. data/vendor/libgit2/include/git2/patch.h +8 -0
  112. data/vendor/libgit2/include/git2/pathspec.h +1 -1
  113. data/vendor/libgit2/include/git2/proxy.h +1 -1
  114. data/vendor/libgit2/include/git2/rebase.h +9 -1
  115. data/vendor/libgit2/include/git2/refdb.h +3 -0
  116. data/vendor/libgit2/include/git2/reflog.h +1 -1
  117. data/vendor/libgit2/include/git2/refs.h +2 -2
  118. data/vendor/libgit2/include/git2/remote.h +184 -37
  119. data/vendor/libgit2/include/git2/repository.h +34 -10
  120. data/vendor/libgit2/include/git2/reset.h +2 -2
  121. data/vendor/libgit2/include/git2/revparse.h +1 -1
  122. data/vendor/libgit2/include/git2/revwalk.h +4 -1
  123. data/vendor/libgit2/include/git2/signature.h +1 -1
  124. data/vendor/libgit2/include/git2/stash.h +61 -7
  125. data/vendor/libgit2/include/git2/status.h +14 -5
  126. data/vendor/libgit2/include/git2/strarray.h +0 -13
  127. data/vendor/libgit2/include/git2/submodule.h +7 -2
  128. data/vendor/libgit2/include/git2/sys/commit_graph.h +1 -1
  129. data/vendor/libgit2/include/git2/sys/odb_backend.h +3 -6
  130. data/vendor/libgit2/include/git2/sys/remote.h +46 -0
  131. data/vendor/libgit2/include/git2/sys/stream.h +1 -1
  132. data/vendor/libgit2/include/git2/sys/transport.h +46 -39
  133. data/vendor/libgit2/include/git2/tag.h +1 -0
  134. data/vendor/libgit2/include/git2/tree.h +4 -3
  135. data/vendor/libgit2/include/git2/types.h +7 -7
  136. data/vendor/libgit2/include/git2/version.h +27 -6
  137. data/vendor/libgit2/include/git2/worktree.h +12 -2
  138. data/vendor/libgit2/include/git2.h +1 -0
  139. data/vendor/libgit2/src/CMakeLists.txt +177 -419
  140. data/vendor/libgit2/src/README.md +12 -0
  141. data/vendor/libgit2/src/cli/CMakeLists.txt +57 -0
  142. data/vendor/libgit2/src/cli/README.md +26 -0
  143. data/vendor/libgit2/src/cli/cli.h +20 -0
  144. data/vendor/libgit2/src/cli/cmd.c +21 -0
  145. data/vendor/libgit2/src/cli/cmd.h +33 -0
  146. data/vendor/libgit2/src/cli/cmd_cat_file.c +204 -0
  147. data/vendor/libgit2/src/cli/cmd_clone.c +176 -0
  148. data/vendor/libgit2/src/cli/cmd_hash_object.c +154 -0
  149. data/vendor/libgit2/src/cli/cmd_help.c +86 -0
  150. data/vendor/libgit2/src/cli/error.h +51 -0
  151. data/vendor/libgit2/src/cli/main.c +106 -0
  152. data/vendor/libgit2/src/cli/opt.c +669 -0
  153. data/vendor/libgit2/src/cli/opt.h +349 -0
  154. data/vendor/libgit2/src/cli/opt_usage.c +194 -0
  155. data/vendor/libgit2/src/cli/opt_usage.h +35 -0
  156. data/vendor/libgit2/src/cli/progress.c +345 -0
  157. data/vendor/libgit2/src/cli/progress.h +117 -0
  158. data/vendor/libgit2/src/cli/sighandler.h +20 -0
  159. data/vendor/libgit2/src/cli/unix/sighandler.c +36 -0
  160. data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
  161. data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
  162. data/vendor/libgit2/src/libgit2/CMakeLists.txt +141 -0
  163. data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +1 -1
  164. data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
  165. data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +18 -18
  166. data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
  167. data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +18 -18
  168. data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +18 -18
  169. data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +4 -4
  170. data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +18 -13
  171. data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +2 -0
  172. data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -1
  173. data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
  174. data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
  175. data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
  176. data/vendor/libgit2/src/{branch.h → libgit2/branch.h} +15 -3
  177. data/vendor/libgit2/src/libgit2/buf.c +126 -0
  178. data/vendor/libgit2/src/libgit2/buf.h +50 -0
  179. data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +74 -68
  180. data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +13 -13
  181. data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +96 -67
  182. data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +178 -73
  183. data/vendor/libgit2/src/libgit2/commit.h +87 -0
  184. data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +122 -89
  185. data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +14 -4
  186. data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +7 -4
  187. data/vendor/libgit2/src/libgit2/common.h +55 -0
  188. data/vendor/libgit2/src/{config.c → libgit2/config.c} +101 -69
  189. data/vendor/libgit2/src/{config.h → libgit2/config.h} +15 -2
  190. data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +105 -93
  191. data/vendor/libgit2/src/{config_mem.c → libgit2/config_mem.c} +9 -9
  192. data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +27 -23
  193. data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
  194. data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +35 -27
  195. data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +30 -9
  196. data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +2 -4
  197. data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +34 -36
  198. data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +3 -3
  199. data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +44 -26
  200. data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +47 -18
  201. data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
  202. data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +112 -100
  203. data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
  204. data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
  205. data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +13 -8
  206. data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
  207. data/vendor/libgit2/src/{email.c → libgit2/email.c} +55 -39
  208. data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
  209. data/vendor/libgit2/src/{errors.c → libgit2/errors.c} +18 -18
  210. data/vendor/libgit2/src/{errors.h → libgit2/errors.h} +1 -2
  211. data/vendor/libgit2/src/libgit2/experimental.h.in +13 -0
  212. data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +72 -27
  213. data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -1
  214. data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +23 -23
  215. data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +127 -53
  216. data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
  217. data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
  218. data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +35 -34
  219. data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
  220. data/vendor/libgit2/src/{index.c → libgit2/index.c} +91 -90
  221. data/vendor/libgit2/src/{index.h → libgit2/index.h} +6 -3
  222. data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +173 -92
  223. data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +71 -61
  224. data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +5 -5
  225. data/vendor/libgit2/src/{libgit2.c → libgit2/libgit2.c} +46 -11
  226. data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +38 -36
  227. data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +30 -30
  228. data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
  229. data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +2 -2
  230. data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -3
  231. data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
  232. data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +112 -92
  233. data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +5 -4
  234. data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +15 -12
  235. data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +5 -2
  236. data/vendor/libgit2/src/{netops.c → libgit2/netops.c} +1 -2
  237. data/vendor/libgit2/src/{netops.h → libgit2/netops.h} +1 -1
  238. data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +25 -34
  239. data/vendor/libgit2/src/{object.c → libgit2/object.c} +135 -30
  240. data/vendor/libgit2/src/{object.h → libgit2/object.h} +12 -3
  241. data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +228 -81
  242. data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
  243. data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
  244. data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +18 -5
  245. data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +137 -85
  246. data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +136 -90
  247. data/vendor/libgit2/src/libgit2/oid.h +273 -0
  248. data/vendor/libgit2/src/{oidmap.c → libgit2/oidmap.c} +1 -1
  249. data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +56 -30
  250. data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +11 -6
  251. data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +114 -84
  252. data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +31 -16
  253. data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +4 -3
  254. data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
  255. data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +1 -0
  256. data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +27 -11
  257. data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
  258. data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +29 -29
  259. data/vendor/libgit2/src/libgit2/path.c +375 -0
  260. data/vendor/libgit2/src/libgit2/path.h +68 -0
  261. data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +6 -6
  262. data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
  263. data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
  264. data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
  265. data/vendor/libgit2/src/{push.c → libgit2/push.c} +43 -38
  266. data/vendor/libgit2/src/{push.h → libgit2/push.h} +4 -16
  267. data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
  268. data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
  269. data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +119 -107
  270. data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +506 -197
  271. data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +7 -5
  272. data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +1 -2
  273. data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +34 -32
  274. data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +2 -2
  275. data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +32 -37
  276. data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +5 -2
  277. data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +718 -420
  278. data/vendor/libgit2/src/libgit2/remote.h +100 -0
  279. data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +629 -386
  280. data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +20 -9
  281. data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
  282. data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +14 -14
  283. data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +71 -42
  284. data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +12 -8
  285. data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +12 -6
  286. data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -1
  287. data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +235 -61
  288. data/vendor/libgit2/src/{status.c → libgit2/status.c} +4 -1
  289. data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
  290. data/vendor/libgit2/src/libgit2/strarray.h +25 -0
  291. data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +8 -6
  292. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +1 -1
  293. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +7 -3
  294. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +3 -3
  295. data/vendor/libgit2/src/{streams → libgit2/streams}/socket.c +4 -1
  296. data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +177 -161
  297. data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +1 -1
  298. data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
  299. data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +53 -18
  300. data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +73 -42
  301. data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
  302. data/vendor/libgit2/src/{threadstate.c → libgit2/threadstate.c} +3 -3
  303. data/vendor/libgit2/src/{threadstate.h → libgit2/threadstate.h} +2 -2
  304. data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
  305. data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
  306. data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +1 -1
  307. data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +1 -1
  308. data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +10 -10
  309. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
  310. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +2 -3
  311. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.c +12 -13
  312. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.c +10 -10
  313. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +0 -1
  314. data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +9 -11
  315. data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +41 -20
  316. data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +2 -3
  317. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +75 -66
  318. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
  319. data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +138 -116
  320. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +92 -133
  321. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +35 -32
  322. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +177 -65
  323. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +97 -49
  324. data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.c +365 -198
  325. data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +58 -59
  326. data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +8 -8
  327. data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +2 -2
  328. data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +93 -83
  329. data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +4 -4
  330. data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +121 -94
  331. data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
  332. data/vendor/libgit2/src/libgit2/xdiff/git-xdiff.h +53 -0
  333. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiff.h +15 -15
  334. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.c +134 -108
  335. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.c +23 -7
  336. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xhistogram.c +87 -78
  337. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xinclude.h +1 -12
  338. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmerge.c +104 -117
  339. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xpatience.c +6 -17
  340. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.c +15 -20
  341. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.c +18 -7
  342. data/vendor/libgit2/src/util/CMakeLists.txt +80 -0
  343. data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.h +1 -1
  344. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
  345. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
  346. data/vendor/libgit2/src/{array.h → util/array.h} +1 -1
  347. data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
  348. data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +1 -1
  349. data/vendor/libgit2/src/{date.c → util/date.c} +14 -20
  350. data/vendor/libgit2/src/util/date.h +33 -0
  351. data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +29 -29
  352. data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +2 -2
  353. data/vendor/libgit2/src/{path.c → util/fs_path.c} +453 -647
  354. data/vendor/libgit2/src/{path.h → util/fs_path.h} +221 -188
  355. data/vendor/libgit2/src/{futils.c → util/futils.c} +135 -90
  356. data/vendor/libgit2/src/{futils.h → util/futils.h} +28 -15
  357. data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +15 -1
  358. data/vendor/libgit2/src/{common.h → util/git2_util.h} +20 -59
  359. data/vendor/libgit2/src/util/hash/builtin.c +53 -0
  360. data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
  361. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
  362. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
  363. data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
  364. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
  365. data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
  366. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
  367. data/vendor/libgit2/src/util/hash/openssl.c +195 -0
  368. data/vendor/libgit2/src/util/hash/openssl.h +45 -0
  369. data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
  370. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
  371. data/vendor/libgit2/src/util/hash/sha.h +70 -0
  372. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
  373. data/vendor/libgit2/src/util/hash/win32.c +549 -0
  374. data/vendor/libgit2/src/util/hash/win32.h +60 -0
  375. data/vendor/libgit2/src/util/hash.c +158 -0
  376. data/vendor/libgit2/src/util/hash.h +61 -0
  377. data/vendor/libgit2/src/{khash.h → util/khash.h} +1 -1
  378. data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
  379. data/vendor/libgit2/src/util/net.c +1003 -0
  380. data/vendor/libgit2/src/{net.h → util/net.h} +18 -4
  381. data/vendor/libgit2/src/{pool.h → util/pool.h} +1 -1
  382. data/vendor/libgit2/src/{posix.c → util/posix.c} +3 -3
  383. data/vendor/libgit2/src/{posix.h → util/posix.h} +4 -1
  384. data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +2 -2
  385. data/vendor/libgit2/src/util/rand.c +234 -0
  386. data/vendor/libgit2/src/util/rand.h +37 -0
  387. data/vendor/libgit2/src/{regexp.c → util/regexp.c} +4 -4
  388. data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
  389. data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
  390. data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
  391. data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +1 -1
  392. data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +2 -2
  393. data/vendor/libgit2/src/{buffer.c → util/str.c} +157 -151
  394. data/vendor/libgit2/src/util/str.h +357 -0
  395. data/vendor/libgit2/src/{strmap.h → util/strmap.h} +1 -1
  396. data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
  397. data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
  398. data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
  399. data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
  400. data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -4
  401. data/vendor/libgit2/src/{unix → util/unix}/realpath.c +1 -3
  402. data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
  403. data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
  404. data/vendor/libgit2/src/{util.c → util/util.c} +15 -15
  405. data/vendor/libgit2/src/{util.h → util/util.h} +4 -29
  406. data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
  407. data/vendor/libgit2/src/{vector.h → util/vector.h} +2 -2
  408. data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
  409. data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
  410. data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
  411. data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
  412. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +140 -9
  413. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
  414. data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
  415. data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +12 -28
  416. data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
  417. data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
  418. data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
  419. data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.h +1 -1
  420. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
  421. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
  422. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
  423. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
  424. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
  425. data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
  426. data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
  427. metadata +402 -356
  428. data/vendor/libgit2/src/buffer.h +0 -374
  429. data/vendor/libgit2/src/commit.h +0 -46
  430. data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
  431. data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
  432. data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
  433. data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
  434. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  435. data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
  436. data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
  437. data/vendor/libgit2/src/hash/sha1.h +0 -38
  438. data/vendor/libgit2/src/hash.c +0 -110
  439. data/vendor/libgit2/src/hash.h +0 -46
  440. data/vendor/libgit2/src/message.h +0 -17
  441. data/vendor/libgit2/src/net.c +0 -540
  442. data/vendor/libgit2/src/oid.h +0 -51
  443. data/vendor/libgit2/src/remote.h +0 -55
  444. data/vendor/libgit2/src/sysdir.c +0 -347
  445. data/vendor/libgit2/src/win32/findfile.c +0 -230
  446. data/vendor/libgit2/src/win32/findfile.h +0 -19
  447. /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
  448. /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
  449. /data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +0 -0
  450. /data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +0 -0
  451. /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
  452. /data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +0 -0
  453. /data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +0 -0
  454. /data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -0
  455. /data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +0 -0
  456. /data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +0 -0
  457. /data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +0 -0
  458. /data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +0 -0
  459. /data/vendor/libgit2/src/{config_entries.c → libgit2/config_entries.c} +0 -0
  460. /data/vendor/libgit2/src/{config_entries.h → libgit2/config_entries.h} +0 -0
  461. /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
  462. /data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +0 -0
  463. /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
  464. /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
  465. /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
  466. /data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +0 -0
  467. /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
  468. /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
  469. /data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +0 -0
  470. /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
  471. /data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +0 -0
  472. /data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +0 -0
  473. /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
  474. /data/vendor/libgit2/src/{idxmap.c → libgit2/idxmap.c} +0 -0
  475. /data/vendor/libgit2/src/{idxmap.h → libgit2/idxmap.h} +0 -0
  476. /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
  477. /data/vendor/libgit2/src/{libgit2.h → libgit2/libgit2.h} +0 -0
  478. /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
  479. /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
  480. /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
  481. /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
  482. /data/vendor/libgit2/src/{offmap.c → libgit2/offmap.c} +0 -0
  483. /data/vendor/libgit2/src/{offmap.h → libgit2/offmap.h} +0 -0
  484. /data/vendor/libgit2/src/{oidarray.c → libgit2/oidarray.c} +0 -0
  485. /data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +0 -0
  486. /data/vendor/libgit2/src/{oidmap.h → libgit2/oidmap.h} +0 -0
  487. /data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +0 -0
  488. /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
  489. /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
  490. /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
  491. /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
  492. /data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +0 -0
  493. /data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +0 -0
  494. /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
  495. /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
  496. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
  497. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +0 -0
  498. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
  499. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
  500. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
  501. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
  502. /data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +0 -0
  503. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +0 -0
  504. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
  505. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +0 -0
  506. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
  507. /data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +0 -0
  508. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +0 -0
  509. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +0 -0
  510. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
  511. /data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.h +0 -0
  512. /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
  513. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.h +0 -0
  514. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.h +0 -0
  515. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmacros.h +0 -0
  516. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.h +0 -0
  517. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xtypes.h +0 -0
  518. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.h +0 -0
  519. /data/vendor/libgit2/src/{alloc.c → util/alloc.c} +0 -0
  520. /data/vendor/libgit2/src/{alloc.h → util/alloc.h} +0 -0
  521. /data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.c +0 -0
  522. /data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.c +0 -0
  523. /data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.c +0 -0
  524. /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
  525. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
  526. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
  527. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
  528. /data/vendor/libgit2/src/{integer.h → util/integer.h} +0 -0
  529. /data/vendor/libgit2/src/{pool.c → util/pool.c} +0 -0
  530. /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
  531. /data/vendor/libgit2/src/{strmap.c → util/strmap.c} +0 -0
  532. /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
  533. /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
  534. /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
  535. /data/vendor/libgit2/src/{vector.c → util/vector.c} +0 -0
  536. /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
  537. /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
  538. /data/vendor/libgit2/src/{win32 → util/win32}/error.c +0 -0
  539. /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
  540. /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
  541. /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
  542. /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
  543. /data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.c +0 -0
  544. /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
  545. /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
  546. /data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +0 -0
  547. /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
- git_path_validate(repo, filename, 0,
58
- GIT_PATH_REJECT_TRAVERSAL | GIT_PATH_REJECT_DOT_GIT | GIT_PATH_REJECT_SLASH);
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 git_path_cmp(
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, GIT_OID_RAWSZ))
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
- char *filename_ptr;
99
- void *id_ptr;
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 (memcmp(&e->oid->id, &id->id, sizeof(id->id)) == 0)
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
- static int tree_error(const char *str, const char *path)
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 tree_error("failed to parse tree: can't parse filemode", NULL);
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 tree_error("failed to parse tree: missing space after filemode", NULL);
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 tree_error("failed to parse tree: object is corrupted", NULL);
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 tree_error("failed to parse tree: can't parse filename", NULL);
422
+ return tree_parse_error("failed to parse tree: can't parse filename", NULL);
411
423
 
412
- if ((buffer_end - (nul + 1)) < GIT_OID_RAWSZ)
413
- return tree_error("failed to parse tree: can't parse OID", NULL);
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
- entry = git_array_alloc(tree->entries);
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
- buffer += GIT_OID_RAWSZ;
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
- git_odb_object_data(odb_obj),
439
- git_odb_object_size(odb_obj))) < 0)
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 0;
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
- git_buf *buf)
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
- git_buf_clear(buf);
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 = git_buf_grow(buf, entrycount * 72)) < 0)
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
- git_buf_printf(buf, "%o ", entry->attr);
527
- git_buf_put(buf, entry->filename, entry->filename_len + 1);
528
- git_buf_put(buf, (char *)entry->oid->id, GIT_OID_RAWSZ);
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 (git_buf_oom(buf)) {
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
- git_buf *shared_buf)
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 directores, so we need to handle that manually, and we
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
- git_buf shared_buf = GIT_BUF_INIT;
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
- git_buf_dispose(&shared_buf);
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((git_oid *) entry->oid, id);
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
- git_buf_dispose(&bld->write_cache);
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
- git_buf *path,
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 = git_buf_len(path);
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
- git_buf_puts(path, entry->filename);
993
- git_buf_putc(path, '/');
1002
+ git_str_puts(path, entry->filename);
1003
+ git_str_putc(path, '/');
994
1004
 
995
- if (git_buf_oom(path))
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
- git_buf_truncate(path, path_len);
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
- git_buf root_path = GIT_BUF_INIT;
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
- git_buf_dispose(&root_path);
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(git_buf *out, const char *in)
1093
+ static bool next_component(git_str *out, const char *in)
1084
1094
  {
1085
1095
  const char *slash = strchr(in, '/');
1086
1096
 
1087
- git_buf_clear(out);
1097
+ git_str_clear(out);
1088
1098
 
1089
1099
  if (slash)
1090
- git_buf_put(out, in, slash - in);
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, git_buf *component)
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
- git_buf_clear(component);
1120
- git_buf_puts(component, popped->name);
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
- git_buf component = GIT_BUF_INIT;
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 = git_path_common_dirlen(last_update->path, update->path);
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 = git_path_basename(update->path);
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 = git_path_basename(update->path);
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
- git_buf_dispose(&component);
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
- const git_oid *oid;
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
- git_buf write_cache;
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