rugged 1.4.2 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (439) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/ext/rugged/extconf.rb +1 -0
  4. data/ext/rugged/rugged.c +16 -0
  5. data/ext/rugged/rugged.h +4 -0
  6. data/ext/rugged/rugged_remote.c +10 -10
  7. data/ext/rugged/rugged_repo.c +2 -7
  8. data/ext/rugged/rugged_settings.c +5 -0
  9. data/lib/rugged/tree.rb +4 -0
  10. data/lib/rugged/version.rb +1 -1
  11. data/vendor/libgit2/CMakeLists.txt +16 -3
  12. data/vendor/libgit2/COPYING +40 -0
  13. data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
  14. data/vendor/libgit2/cmake/FindPCRE.cmake +3 -4
  15. data/vendor/libgit2/cmake/FindPCRE2.cmake +1 -1
  16. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +1 -1
  17. data/vendor/libgit2/cmake/SelectHashes.cmake +62 -14
  18. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +3 -1
  19. data/vendor/libgit2/deps/zlib/adler32.c +7 -0
  20. data/vendor/libgit2/deps/zlib/crc32.c +975 -288
  21. data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
  22. data/vendor/libgit2/deps/zlib/deflate.c +83 -31
  23. data/vendor/libgit2/deps/zlib/deflate.h +12 -15
  24. data/vendor/libgit2/deps/zlib/gzguts.h +3 -2
  25. data/vendor/libgit2/deps/zlib/infback.c +2 -1
  26. data/vendor/libgit2/deps/zlib/inffast.c +14 -14
  27. data/vendor/libgit2/deps/zlib/inflate.c +39 -8
  28. data/vendor/libgit2/deps/zlib/inflate.h +3 -2
  29. data/vendor/libgit2/deps/zlib/inftrees.c +3 -3
  30. data/vendor/libgit2/deps/zlib/trees.c +27 -48
  31. data/vendor/libgit2/deps/zlib/zlib.h +126 -100
  32. data/vendor/libgit2/deps/zlib/zutil.c +2 -2
  33. data/vendor/libgit2/deps/zlib/zutil.h +12 -9
  34. data/vendor/libgit2/include/git2/branch.h +2 -2
  35. data/vendor/libgit2/include/git2/common.h +22 -1
  36. data/vendor/libgit2/include/git2/config.h +6 -6
  37. data/vendor/libgit2/include/git2/deprecated.h +2 -0
  38. data/vendor/libgit2/include/git2/errors.h +19 -4
  39. data/vendor/libgit2/include/git2/merge.h +1 -1
  40. data/vendor/libgit2/include/git2/status.h +5 -2
  41. data/vendor/libgit2/include/git2/sys/remote.h +15 -0
  42. data/vendor/libgit2/include/git2/sys/transport.h +9 -5
  43. data/vendor/libgit2/include/git2/version.h +27 -6
  44. data/vendor/libgit2/src/CMakeLists.txt +104 -214
  45. data/vendor/libgit2/src/README.md +12 -0
  46. data/vendor/libgit2/src/cli/CMakeLists.txt +53 -0
  47. data/vendor/libgit2/src/cli/README.md +26 -0
  48. data/vendor/libgit2/src/cli/cli.h +20 -0
  49. data/vendor/libgit2/src/cli/cmd.c +21 -0
  50. data/vendor/libgit2/src/cli/cmd.h +33 -0
  51. data/vendor/libgit2/src/cli/cmd_cat_file.c +204 -0
  52. data/vendor/libgit2/src/cli/cmd_clone.c +176 -0
  53. data/vendor/libgit2/src/cli/cmd_hash_object.c +135 -0
  54. data/vendor/libgit2/src/cli/cmd_help.c +86 -0
  55. data/vendor/libgit2/src/cli/error.h +51 -0
  56. data/vendor/libgit2/src/cli/main.c +106 -0
  57. data/vendor/libgit2/src/cli/opt.c +669 -0
  58. data/vendor/libgit2/src/cli/opt.h +349 -0
  59. data/vendor/libgit2/src/cli/opt_usage.c +194 -0
  60. data/vendor/libgit2/src/cli/opt_usage.h +35 -0
  61. data/vendor/libgit2/src/cli/progress.c +345 -0
  62. data/vendor/libgit2/src/cli/progress.h +117 -0
  63. data/vendor/libgit2/src/cli/sighandler.h +20 -0
  64. data/vendor/libgit2/src/cli/unix/sighandler.c +36 -0
  65. data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
  66. data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
  67. data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
  68. data/vendor/libgit2/src/features.h.in +9 -0
  69. data/vendor/libgit2/src/libgit2/CMakeLists.txt +131 -0
  70. data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +0 -0
  71. data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +0 -0
  72. data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +0 -0
  73. data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +0 -0
  74. data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +0 -0
  75. data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
  76. data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +0 -0
  77. data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +0 -0
  78. data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +0 -0
  79. data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +0 -0
  80. data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +0 -0
  81. data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +0 -0
  82. data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +0 -0
  83. data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
  84. data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +1 -1
  85. data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +0 -0
  86. data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +14 -9
  87. data/vendor/libgit2/src/{branch.h → libgit2/branch.h} +0 -0
  88. data/vendor/libgit2/src/{buf.c → libgit2/buf.c} +0 -0
  89. data/vendor/libgit2/src/{buf.h → libgit2/buf.h} +0 -0
  90. data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +0 -0
  91. data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +0 -0
  92. data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +0 -0
  93. data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -0
  94. data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +0 -0
  95. data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +0 -0
  96. data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +0 -0
  97. data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +0 -0
  98. data/vendor/libgit2/src/{commit.h → libgit2/commit.h} +0 -0
  99. data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +20 -17
  100. data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +1 -1
  101. data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +0 -0
  102. data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +0 -0
  103. data/vendor/libgit2/src/libgit2/common.h +55 -0
  104. data/vendor/libgit2/src/{config.c → libgit2/config.c} +14 -7
  105. data/vendor/libgit2/src/{config.h → libgit2/config.h} +0 -0
  106. data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +0 -0
  107. data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +0 -0
  108. data/vendor/libgit2/src/{config_entries.c → libgit2/config_entries.c} +0 -0
  109. data/vendor/libgit2/src/{config_entries.h → libgit2/config_entries.h} +0 -0
  110. data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +0 -0
  111. data/vendor/libgit2/src/{config_mem.c → libgit2/config_mem.c} +0 -0
  112. data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +0 -0
  113. data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
  114. data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +0 -0
  115. data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +0 -0
  116. data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
  117. data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
  118. data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +0 -0
  119. data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +0 -0
  120. data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +0 -0
  121. data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +0 -0
  122. data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +0 -0
  123. data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +0 -0
  124. data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
  125. data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +0 -0
  126. data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +0 -0
  127. data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +0 -0
  128. data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
  129. data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +5 -0
  130. data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +0 -0
  131. data/vendor/libgit2/src/{diff_stats.h → libgit2/diff_stats.h} +0 -0
  132. data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +0 -0
  133. data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
  134. data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +1 -0
  135. data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +0 -0
  136. data/vendor/libgit2/src/{email.c → libgit2/email.c} +0 -0
  137. data/vendor/libgit2/src/{email.h → libgit2/email.h} +0 -0
  138. data/vendor/libgit2/src/{errors.c → libgit2/errors.c} +0 -0
  139. data/vendor/libgit2/src/{errors.h → libgit2/errors.h} +1 -2
  140. data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +5 -2
  141. data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +0 -0
  142. data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +0 -0
  143. data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
  144. data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +31 -1
  145. data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +0 -0
  146. data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +0 -0
  147. data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +0 -0
  148. data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
  149. data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +0 -0
  150. data/vendor/libgit2/src/{idxmap.c → libgit2/idxmap.c} +0 -0
  151. data/vendor/libgit2/src/{idxmap.h → libgit2/idxmap.h} +0 -0
  152. data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +0 -0
  153. data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +0 -0
  154. data/vendor/libgit2/src/{index.c → libgit2/index.c} +6 -6
  155. data/vendor/libgit2/src/{index.h → libgit2/index.h} +0 -0
  156. data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +2 -2
  157. data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
  158. data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +3 -3
  159. data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +0 -0
  160. data/vendor/libgit2/src/{libgit2.c → libgit2/libgit2.c} +13 -0
  161. data/vendor/libgit2/src/{libgit2.h → libgit2/libgit2.h} +0 -0
  162. data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +0 -0
  163. data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
  164. data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +0 -0
  165. data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +0 -0
  166. data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +0 -0
  167. data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
  168. data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +0 -0
  169. data/vendor/libgit2/src/{message.c → libgit2/message.c} +0 -0
  170. data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +28 -26
  171. data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +2 -1
  172. data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +9 -9
  173. data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +1 -1
  174. data/vendor/libgit2/src/{netops.c → libgit2/netops.c} +0 -1
  175. data/vendor/libgit2/src/{netops.h → libgit2/netops.h} +0 -0
  176. data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +0 -0
  177. data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
  178. data/vendor/libgit2/src/{object.c → libgit2/object.c} +1 -0
  179. data/vendor/libgit2/src/{object.h → libgit2/object.h} +0 -0
  180. data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
  181. data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +2 -2
  182. data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +0 -0
  183. data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +0 -0
  184. data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +0 -0
  185. data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +0 -0
  186. data/vendor/libgit2/src/{offmap.c → libgit2/offmap.c} +0 -0
  187. data/vendor/libgit2/src/{offmap.h → libgit2/offmap.h} +0 -0
  188. data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +2 -21
  189. data/vendor/libgit2/src/{oid.h → libgit2/oid.h} +35 -2
  190. data/vendor/libgit2/src/{oidarray.c → libgit2/oidarray.c} +0 -0
  191. data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +0 -0
  192. data/vendor/libgit2/src/{oidmap.c → libgit2/oidmap.c} +1 -1
  193. data/vendor/libgit2/src/{oidmap.h → libgit2/oidmap.h} +0 -0
  194. data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +0 -0
  195. data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +0 -0
  196. data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +24 -18
  197. data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +3 -2
  198. data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +0 -0
  199. data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +0 -0
  200. data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +0 -0
  201. data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +0 -0
  202. data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +0 -0
  203. data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +0 -0
  204. data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +0 -0
  205. data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
  206. data/vendor/libgit2/src/{path.c → libgit2/path.c} +1 -0
  207. data/vendor/libgit2/src/{path.h → libgit2/path.h} +0 -0
  208. data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +0 -0
  209. data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +0 -0
  210. data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +0 -0
  211. data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +0 -0
  212. data/vendor/libgit2/src/{push.c → libgit2/push.c} +0 -0
  213. data/vendor/libgit2/src/{push.h → libgit2/push.h} +0 -0
  214. data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +0 -0
  215. data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +0 -0
  216. data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +11 -1
  217. data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
  218. data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
  219. data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +6 -2
  220. data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +0 -0
  221. data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +0 -0
  222. data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +0 -0
  223. data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +0 -0
  224. data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +0 -0
  225. data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +0 -0
  226. data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +6 -3
  227. data/vendor/libgit2/src/{remote.h → libgit2/remote.h} +1 -1
  228. data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
  229. data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +155 -22
  230. data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +1 -0
  231. data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +0 -0
  232. data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +0 -0
  233. data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +0 -0
  234. data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +0 -0
  235. data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +0 -0
  236. data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +0 -0
  237. data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +0 -0
  238. data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +0 -0
  239. data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +0 -0
  240. data/vendor/libgit2/src/{status.c → libgit2/status.c} +0 -0
  241. data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
  242. data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +0 -0
  243. data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
  244. data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +0 -0
  245. data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
  246. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +0 -0
  247. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +0 -0
  248. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +0 -0
  249. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +0 -0
  250. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
  251. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
  252. data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
  253. data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
  254. data/vendor/libgit2/src/{streams → libgit2/streams}/socket.c +0 -0
  255. data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +0 -0
  256. data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +0 -0
  257. data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
  258. data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +0 -0
  259. data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
  260. data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +0 -0
  261. data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +0 -0
  262. data/vendor/libgit2/src/{sysdir.c → libgit2/sysdir.c} +0 -0
  263. data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +0 -0
  264. data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +15 -5
  265. data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +0 -0
  266. data/vendor/libgit2/src/{threadstate.c → libgit2/threadstate.c} +0 -0
  267. data/vendor/libgit2/src/{threadstate.h → libgit2/threadstate.h} +0 -0
  268. data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +0 -0
  269. data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +0 -0
  270. data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +0 -0
  271. data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +0 -0
  272. data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +0 -0
  273. data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +0 -0
  274. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +0 -0
  275. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +0 -0
  276. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.c +0 -0
  277. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +0 -0
  278. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.c +0 -0
  279. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +0 -0
  280. data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +0 -0
  281. data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
  282. data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +0 -0
  283. data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +0 -0
  284. data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -0
  285. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +1 -1
  286. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +0 -0
  287. data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +0 -0
  288. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +12 -0
  289. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +0 -0
  290. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +0 -0
  291. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +0 -0
  292. data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.c +0 -0
  293. data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.h +0 -0
  294. data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +0 -0
  295. data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +1 -1
  296. data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +0 -0
  297. data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +16 -23
  298. data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +1 -1
  299. data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
  300. data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +0 -0
  301. data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +0 -0
  302. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/git-xdiff.h +0 -0
  303. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiff.h +0 -0
  304. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.c +0 -0
  305. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.h +0 -0
  306. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.c +0 -0
  307. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.h +0 -0
  308. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xhistogram.c +0 -0
  309. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xinclude.h +0 -0
  310. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmacros.h +0 -0
  311. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmerge.c +0 -0
  312. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xpatience.c +0 -0
  313. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.c +0 -0
  314. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.h +0 -0
  315. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xtypes.h +0 -0
  316. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.c +0 -0
  317. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.h +0 -0
  318. data/vendor/libgit2/src/util/CMakeLists.txt +74 -0
  319. data/vendor/libgit2/src/{alloc.c → util/alloc.c} +0 -0
  320. data/vendor/libgit2/src/{alloc.h → util/alloc.h} +0 -0
  321. data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.c +0 -0
  322. data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.h +1 -1
  323. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.c +0 -0
  324. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
  325. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.c +0 -0
  326. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
  327. data/vendor/libgit2/src/{array.h → util/array.h} +1 -1
  328. data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
  329. data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
  330. data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +0 -0
  331. data/vendor/libgit2/src/{date.c → util/date.c} +4 -3
  332. data/vendor/libgit2/src/{date.h → util/date.h} +0 -0
  333. data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +1 -1
  334. data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +1 -1
  335. data/vendor/libgit2/src/{fs_path.c → util/fs_path.c} +219 -65
  336. data/vendor/libgit2/src/{fs_path.h → util/fs_path.h} +47 -9
  337. data/vendor/libgit2/src/{futils.c → util/futils.c} +44 -2
  338. data/vendor/libgit2/src/{futils.h → util/futils.h} +2 -1
  339. data/vendor/libgit2/src/{common.h → util/git2_util.h} +13 -59
  340. data/vendor/libgit2/src/util/hash/builtin.c +53 -0
  341. data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
  342. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +1 -1
  343. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
  344. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.c +55 -0
  345. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
  346. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.c +46 -0
  347. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
  348. data/vendor/libgit2/src/util/hash/openssl.c +194 -0
  349. data/vendor/libgit2/src/util/hash/openssl.h +45 -0
  350. data/vendor/libgit2/src/util/hash/rfc6234/sha.h +355 -0
  351. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
  352. data/vendor/libgit2/src/util/hash/sha.h +70 -0
  353. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +0 -0
  354. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
  355. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
  356. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
  357. data/vendor/libgit2/src/util/hash/win32.c +549 -0
  358. data/vendor/libgit2/src/util/hash/win32.h +60 -0
  359. data/vendor/libgit2/src/{hash.c → util/hash.c} +17 -1
  360. data/vendor/libgit2/src/{hash.h → util/hash.h} +5 -3
  361. data/vendor/libgit2/src/{integer.h → util/integer.h} +0 -0
  362. data/vendor/libgit2/src/{khash.h → util/khash.h} +0 -0
  363. data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
  364. data/vendor/libgit2/src/{net.c → util/net.c} +0 -1
  365. data/vendor/libgit2/src/{net.h → util/net.h} +1 -1
  366. data/vendor/libgit2/src/{pool.c → util/pool.c} +0 -0
  367. data/vendor/libgit2/src/{pool.h → util/pool.h} +1 -1
  368. data/vendor/libgit2/src/{posix.c → util/posix.c} +0 -0
  369. data/vendor/libgit2/src/{posix.h → util/posix.h} +1 -1
  370. data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
  371. data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +1 -1
  372. data/vendor/libgit2/src/{rand.c → util/rand.c} +7 -3
  373. data/vendor/libgit2/src/{rand.h → util/rand.h} +1 -1
  374. data/vendor/libgit2/src/{regexp.c → util/regexp.c} +0 -0
  375. data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
  376. data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
  377. data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
  378. data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +0 -0
  379. data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +1 -1
  380. data/vendor/libgit2/src/{str.c → util/str.c} +0 -0
  381. data/vendor/libgit2/src/{str.h → util/str.h} +1 -1
  382. data/vendor/libgit2/src/{strmap.c → util/strmap.c} +0 -0
  383. data/vendor/libgit2/src/{strmap.h → util/strmap.h} +1 -1
  384. data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
  385. data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
  386. data/vendor/libgit2/src/{thread.h → util/thread.h} +0 -0
  387. data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
  388. data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -1
  389. data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -1
  390. data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
  391. data/vendor/libgit2/src/{unix → util/unix}/realpath.c +1 -1
  392. data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
  393. data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
  394. data/vendor/libgit2/src/{util.c → util/util.c} +1 -1
  395. data/vendor/libgit2/src/{util.h → util/util.h} +1 -1
  396. data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
  397. data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
  398. data/vendor/libgit2/src/{vector.c → util/vector.c} +0 -0
  399. data/vendor/libgit2/src/{vector.h → util/vector.h} +1 -1
  400. data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
  401. data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
  402. data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
  403. data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
  404. data/vendor/libgit2/src/{win32 → util/win32}/error.c +0 -0
  405. data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
  406. data/vendor/libgit2/src/{win32 → util/win32}/findfile.c +0 -0
  407. data/vendor/libgit2/src/{win32 → util/win32}/findfile.h +1 -1
  408. data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
  409. data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
  410. data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
  411. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +0 -0
  412. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +1 -1
  413. data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -1
  414. data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +1 -1
  415. data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
  416. data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
  417. data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
  418. data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
  419. data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
  420. data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.c +0 -0
  421. data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.h +1 -1
  422. data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
  423. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +0 -0
  424. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +1 -1
  425. data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
  426. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +0 -0
  427. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
  428. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +0 -0
  429. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
  430. data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
  431. data/vendor/libgit2/src/{zstream.c → util/zstream.c} +0 -0
  432. data/vendor/libgit2/src/{zstream.h → util/zstream.h} +1 -1
  433. metadata +394 -365
  434. data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
  435. data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
  436. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  437. data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
  438. data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
  439. data/vendor/libgit2/src/hash/sha1.h +0 -40
@@ -893,6 +893,17 @@ static int buffered_stream_write(
893
893
  return git_str_put(&buffered_stream->input, buffer, len);
894
894
  }
895
895
 
896
+ #ifndef GIT_DEPRECATE_HARD
897
+ # define BUF_TO_STRUCT(b, s) \
898
+ (b)->ptr = (s)->ptr; \
899
+ (b)->size = (s)->size; \
900
+ (b)->reserved = (s)->asize;
901
+ # define STRUCT_TO_BUF(s, b) \
902
+ (s)->ptr = (b)->ptr; \
903
+ (s)->size = (b)->size; \
904
+ (s)->asize = (b)->reserved;
905
+ #endif
906
+
896
907
  static int buffered_stream_close(git_writestream *s)
897
908
  {
898
909
  struct buffered_stream *buffered_stream = (struct buffered_stream *)s;
@@ -902,6 +913,25 @@ static int buffered_stream_close(git_writestream *s)
902
913
 
903
914
  GIT_ASSERT_ARG(buffered_stream);
904
915
 
916
+ #ifndef GIT_DEPRECATE_HARD
917
+ if (buffered_stream->write_fn == NULL) {
918
+ git_buf legacy_output = GIT_BUF_INIT,
919
+ legacy_input = GIT_BUF_INIT;
920
+
921
+ BUF_TO_STRUCT(&legacy_output, buffered_stream->output);
922
+ BUF_TO_STRUCT(&legacy_input, &buffered_stream->input);
923
+
924
+ error = buffered_stream->legacy_write_fn(
925
+ buffered_stream->filter,
926
+ buffered_stream->payload,
927
+ &legacy_output,
928
+ &legacy_input,
929
+ buffered_stream->source);
930
+
931
+ STRUCT_TO_BUF(buffered_stream->output, &legacy_output);
932
+ STRUCT_TO_BUF(&buffered_stream->input, &legacy_input);
933
+ } else
934
+ #endif
905
935
  error = buffered_stream->write_fn(
906
936
  buffered_stream->filter,
907
937
  buffered_stream->payload,
@@ -1085,7 +1115,7 @@ int git_filter_list_stream_file(
1085
1115
  const char *path,
1086
1116
  git_writestream *target)
1087
1117
  {
1088
- char buf[FILTERIO_BUFSIZE];
1118
+ char buf[GIT_BUFSIZE_FILTERIO];
1089
1119
  git_str abspath = GIT_STR_INIT;
1090
1120
  const char *base = repo ? git_repository_workdir(repo) : NULL;
1091
1121
  git_vector filter_streams = GIT_VECTOR_INIT;
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -74,7 +74,7 @@ struct entry_short {
74
74
  uint32_t uid;
75
75
  uint32_t gid;
76
76
  uint32_t file_size;
77
- git_oid oid;
77
+ unsigned char oid[GIT_OID_RAWSZ];
78
78
  uint16_t flags;
79
79
  char path[1]; /* arbitrary length */
80
80
  };
@@ -88,7 +88,7 @@ struct entry_long {
88
88
  uint32_t uid;
89
89
  uint32_t gid;
90
90
  uint32_t file_size;
91
- git_oid oid;
91
+ unsigned char oid[GIT_OID_RAWSZ];
92
92
  uint16_t flags;
93
93
  uint16_t flags_extended;
94
94
  char path[1]; /* arbitrary length */
@@ -2480,9 +2480,11 @@ static int read_entry(
2480
2480
  entry.uid = ntohl(source.uid);
2481
2481
  entry.gid = ntohl(source.gid);
2482
2482
  entry.file_size = ntohl(source.file_size);
2483
- git_oid_cpy(&entry.id, &source.oid);
2484
2483
  entry.flags = ntohs(source.flags);
2485
2484
 
2485
+ if (git_oid_fromraw(&entry.id, source.oid) < 0)
2486
+ return -1;
2487
+
2486
2488
  if (entry.flags & GIT_INDEX_ENTRY_EXTENDED) {
2487
2489
  uint16_t flags_raw;
2488
2490
  size_t flags_offset;
@@ -2803,9 +2805,7 @@ static int write_disk_entry(git_filebuf *file, git_index_entry *entry, const cha
2803
2805
  ondisk.uid = htonl(entry->uid);
2804
2806
  ondisk.gid = htonl(entry->gid);
2805
2807
  ondisk.file_size = htonl((uint32_t)entry->file_size);
2806
-
2807
- git_oid_cpy(&ondisk.oid, &entry->id);
2808
-
2808
+ git_oid_raw_cpy(ondisk.oid, entry->id.id);
2809
2809
  ondisk.flags = htons(entry->flags);
2810
2810
 
2811
2811
  if (entry->flags & GIT_INDEX_ENTRY_EXTENDED) {
File without changes
@@ -385,7 +385,7 @@ static int check_object_connectivity(git_indexer *idx, const git_rawobj *obj)
385
385
  size_t i;
386
386
 
387
387
  git_array_foreach(tree->entries, i, entry)
388
- if (add_expected_oid(idx, entry->oid) < 0)
388
+ if (add_expected_oid(idx, &entry->oid) < 0)
389
389
  goto out;
390
390
 
391
391
  break;
@@ -1269,7 +1269,7 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
1269
1269
 
1270
1270
  /* Write out the object names (SHA-1 hashes) */
1271
1271
  git_vector_foreach(&idx->objects, i, entry) {
1272
- git_filebuf_write(&index_file, &entry->oid, sizeof(git_oid));
1272
+ git_filebuf_write(&index_file, &entry->oid.id, GIT_OID_RAWSZ);
1273
1273
  }
1274
1274
 
1275
1275
  /* Write out the CRC32 values */
File without changes
@@ -613,7 +613,7 @@ GIT_INLINE(int) tree_iterator_frame_push_neighbors(
613
613
  break;
614
614
 
615
615
  if ((error = git_tree_lookup(&tree,
616
- iter->base.repo, entry->tree_entry->oid)) < 0)
616
+ iter->base.repo, &entry->tree_entry->oid)) < 0)
617
617
  break;
618
618
 
619
619
  if (git_vector_insert(&parent_frame->similar_trees, tree) < 0)
@@ -659,7 +659,7 @@ GIT_INLINE(int) tree_iterator_frame_push(
659
659
  int error;
660
660
 
661
661
  if ((error = git_tree_lookup(&tree,
662
- iter->base.repo, entry->tree_entry->oid)) < 0 ||
662
+ iter->base.repo, &entry->tree_entry->oid)) < 0 ||
663
663
  (error = tree_iterator_frame_init(iter, tree, entry)) < 0)
664
664
  goto done;
665
665
 
@@ -740,7 +740,7 @@ static void tree_iterator_set_current(
740
740
 
741
741
  iter->entry.mode = tree_entry->attr;
742
742
  iter->entry.path = iter->entry_path.ptr;
743
- git_oid_cpy(&iter->entry.id, tree_entry->oid);
743
+ git_oid_cpy(&iter->entry.id, &tree_entry->oid);
744
744
  }
745
745
 
746
746
  static int tree_iterator_advance(const git_index_entry **out, git_iterator *i)
@@ -107,6 +107,11 @@ int git_libgit2_version(int *major, int *minor, int *rev)
107
107
  return 0;
108
108
  }
109
109
 
110
+ const char *git_libgit2_prerelease(void)
111
+ {
112
+ return LIBGIT2_VER_PRERELEASE;
113
+ }
114
+
110
115
  int git_libgit2_features(void)
111
116
  {
112
117
  return 0
@@ -401,6 +406,14 @@ int git_libgit2_opts(int key, ...)
401
406
  }
402
407
  break;
403
408
 
409
+ case GIT_OPT_GET_OWNER_VALIDATION:
410
+ *(va_arg(ap, int *)) = git_repository__validate_ownership;
411
+ break;
412
+
413
+ case GIT_OPT_SET_OWNER_VALIDATION:
414
+ git_repository__validate_ownership = (va_arg(ap, int) != 0);
415
+ break;
416
+
404
417
  default:
405
418
  git_error_set(GIT_ERROR_INVALID, "invalid option key");
406
419
  error = -1;
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -115,7 +115,7 @@ static int midx_parse_oid_lookup(
115
115
  struct git_midx_chunk *chunk_oid_lookup)
116
116
  {
117
117
  uint32_t i;
118
- git_oid *oid, *prev_oid, zero_oid = {{0}};
118
+ unsigned char *oid, *prev_oid, zero_oid[GIT_OID_RAWSZ] = {0};
119
119
 
120
120
  if (chunk_oid_lookup->offset == 0)
121
121
  return midx_error("missing OID Lookup chunk");
@@ -124,10 +124,10 @@ static int midx_parse_oid_lookup(
124
124
  if (chunk_oid_lookup->length != idx->num_objects * GIT_OID_RAWSZ)
125
125
  return midx_error("OID Lookup chunk has wrong length");
126
126
 
127
- idx->oid_lookup = oid = (git_oid *)(data + chunk_oid_lookup->offset);
128
- prev_oid = &zero_oid;
129
- for (i = 0; i < idx->num_objects; ++i, ++oid) {
130
- if (git_oid_cmp(prev_oid, oid) >= 0)
127
+ idx->oid_lookup = oid = (unsigned char *)(data + chunk_oid_lookup->offset);
128
+ prev_oid = zero_oid;
129
+ for (i = 0; i < idx->num_objects; ++i, oid += GIT_OID_RAWSZ) {
130
+ if (git_oid_raw_cmp(prev_oid, oid) >= 0)
131
131
  return midx_error("OID Lookup index is non-monotonic");
132
132
  prev_oid = oid;
133
133
  }
@@ -179,7 +179,6 @@ int git_midx_parse(
179
179
  uint32_t i;
180
180
  off64_t last_chunk_offset, chunk_offset, trailer_offset;
181
181
  size_t checksum_size;
182
- unsigned char checksum[GIT_HASH_SHA1_SIZE];
183
182
  int error;
184
183
  struct git_midx_chunk chunk_packfile_names = {0},
185
184
  chunk_oid_fanout = {0},
@@ -217,16 +216,16 @@ int git_midx_parse(
217
216
  return midx_error("wrong index size");
218
217
  memcpy(idx->checksum, data + trailer_offset, checksum_size);
219
218
 
220
- if (git_hash_buf(checksum, data, (size_t)trailer_offset, GIT_HASH_ALGORITHM_SHA1) < 0)
221
- return midx_error("could not calculate signature");
222
- if (memcmp(checksum, idx->checksum, checksum_size) != 0)
223
- return midx_error("index signature mismatch");
224
-
225
219
  chunk_hdr = data + sizeof(struct git_midx_header);
226
220
  last_chunk = NULL;
227
221
  for (i = 0; i < hdr->chunks; ++i, chunk_hdr += 12) {
228
- chunk_offset = ((off64_t)ntohl(*((uint32_t *)(chunk_hdr + 4)))) << 32 |
229
- ((off64_t)ntohl(*((uint32_t *)(chunk_hdr + 8))));
222
+ uint32_t chunk_id = ntohl(*((uint32_t *)(chunk_hdr + 0)));
223
+ uint64_t high_offset = ((uint64_t)ntohl(*((uint32_t *)(chunk_hdr + 4)))) & 0xffffffffu;
224
+ uint64_t low_offset = ((uint64_t)ntohl(*((uint32_t *)(chunk_hdr + 8)))) & 0xffffffffu;
225
+
226
+ if (high_offset >= INT32_MAX)
227
+ return midx_error("chunk offset out of range");
228
+ chunk_offset = (off64_t)(high_offset << 32 | low_offset);
230
229
  if (chunk_offset < last_chunk_offset)
231
230
  return midx_error("chunks are non-monotonic");
232
231
  if (chunk_offset >= trailer_offset)
@@ -235,7 +234,7 @@ int git_midx_parse(
235
234
  last_chunk->length = (size_t)(chunk_offset - last_chunk_offset);
236
235
  last_chunk_offset = chunk_offset;
237
236
 
238
- switch (ntohl(*((uint32_t *)(chunk_hdr + 0)))) {
237
+ switch (chunk_id) {
239
238
  case MIDX_PACKFILE_NAMES_ID:
240
239
  chunk_packfile_names.offset = last_chunk_offset;
241
240
  last_chunk = &chunk_packfile_names;
@@ -384,7 +383,7 @@ int git_midx_entry_find(
384
383
  int pos, found = 0;
385
384
  size_t pack_index;
386
385
  uint32_t hi, lo;
387
- const git_oid *current = NULL;
386
+ unsigned char *current = NULL;
388
387
  const unsigned char *object_offset;
389
388
  off64_t offset;
390
389
 
@@ -398,26 +397,25 @@ int git_midx_entry_find(
398
397
  if (pos >= 0) {
399
398
  /* An object matching exactly the oid was found */
400
399
  found = 1;
401
- current = idx->oid_lookup + pos;
400
+ current = idx->oid_lookup + (pos * GIT_OID_RAWSZ);
402
401
  } else {
403
402
  /* No object was found */
404
403
  /* pos refers to the object with the "closest" oid to short_oid */
405
404
  pos = -1 - pos;
406
405
  if (pos < (int)idx->num_objects) {
407
- current = idx->oid_lookup + pos;
406
+ current = idx->oid_lookup + (pos * GIT_OID_RAWSZ);
408
407
 
409
- if (!git_oid_ncmp(short_oid, current, len))
408
+ if (!git_oid_raw_ncmp(short_oid->id, current, len))
410
409
  found = 1;
411
410
  }
412
411
  }
413
412
 
414
413
  if (found && len != GIT_OID_HEXSZ && pos + 1 < (int)idx->num_objects) {
415
414
  /* Check for ambiguousity */
416
- const git_oid *next = current + 1;
415
+ const unsigned char *next = current + GIT_OID_RAWSZ;
417
416
 
418
- if (!git_oid_ncmp(short_oid, next, len)) {
417
+ if (!git_oid_raw_ncmp(short_oid->id, next, len))
419
418
  found = 2;
420
- }
421
419
  }
422
420
 
423
421
  if (!found)
@@ -427,8 +425,8 @@ int git_midx_entry_find(
427
425
 
428
426
  object_offset = idx->object_offsets + pos * 8;
429
427
  offset = ntohl(*((uint32_t *)(object_offset + 4)));
430
- if (offset & 0x80000000) {
431
- uint32_t object_large_offsets_pos = offset & 0x7fffffff;
428
+ if (idx->object_large_offsets && offset & 0x80000000) {
429
+ uint32_t object_large_offsets_pos = (uint32_t) (offset ^ 0x80000000);
432
430
  const unsigned char *object_large_offsets_index = idx->object_large_offsets;
433
431
 
434
432
  /* Make sure we're not being sent out of bounds */
@@ -445,7 +443,7 @@ int git_midx_entry_find(
445
443
  return midx_error("invalid index into the packfile names table");
446
444
  e->pack_index = pack_index;
447
445
  e->offset = offset;
448
- git_oid_cpy(&e->sha1, current);
446
+ git_oid_fromraw(&e->sha1, current);
449
447
  return 0;
450
448
  }
451
449
 
@@ -454,13 +452,17 @@ int git_midx_foreach_entry(
454
452
  git_odb_foreach_cb cb,
455
453
  void *data)
456
454
  {
455
+ git_oid oid;
457
456
  size_t i;
458
457
  int error;
459
458
 
460
459
  GIT_ASSERT_ARG(idx);
461
460
 
462
461
  for (i = 0; i < idx->num_objects; ++i) {
463
- if ((error = cb(&idx->oid_lookup[i], data)) != 0)
462
+ if ((error = git_oid_fromraw(&oid, &idx->oid_lookup[i * GIT_OID_RAWSZ])) < 0)
463
+ return error;
464
+
465
+ if ((error = cb(&oid, data)) != 0)
464
466
  return git_error_set_after_callback(error);
465
467
  }
466
468
 
@@ -746,7 +748,7 @@ static int midx_write(
746
748
 
747
749
  /* Fill the OID Lookup table. */
748
750
  git_vector_foreach (&object_entries, i, entry) {
749
- error = git_str_put(&oid_lookup, (const char *)&entry->sha1, sizeof(entry->sha1));
751
+ error = git_str_put(&oid_lookup, (char *)&entry->sha1.id, GIT_OID_RAWSZ);
750
752
  if (error < 0)
751
753
  goto cleanup;
752
754
  }
@@ -17,6 +17,7 @@
17
17
  #include "map.h"
18
18
  #include "mwindow.h"
19
19
  #include "odb.h"
20
+ #include "oid.h"
20
21
 
21
22
  /*
22
23
  * A multi-pack-index file.
@@ -40,7 +41,7 @@ typedef struct git_midx_file {
40
41
  uint32_t num_objects;
41
42
 
42
43
  /* The OID Lookup table. */
43
- git_oid *oid_lookup;
44
+ unsigned char *oid_lookup;
44
45
 
45
46
  /* The Object Offsets table. Each entry has two 4-byte fields with the pack index and the offset. */
46
47
  const unsigned char *object_offsets;
@@ -186,13 +186,16 @@ int git_mwindow_free_all(git_mwindow_file *mwf)
186
186
  }
187
187
 
188
188
  /*
189
- * Check if a window 'win' contains the address 'offset'
189
+ * Check if a window 'win' contains both the address 'offset' and 'extra'.
190
+ *
191
+ * 'extra' is the size of the hash we're using as we always want to make sure
192
+ * that it's contained.
190
193
  */
191
- int git_mwindow_contains(git_mwindow *win, off64_t offset)
194
+ int git_mwindow_contains(git_mwindow *win, off64_t offset, off64_t extra)
192
195
  {
193
196
  off64_t win_off = win->offset;
194
197
  return win_off <= offset
195
- && offset <= (off64_t)(win_off + win->window_map.len);
198
+ && (offset + extra) <= (off64_t)(win_off + win->window_map.len);
196
199
  }
197
200
 
198
201
  #define GIT_MWINDOW__LRU -1
@@ -237,9 +240,7 @@ static bool git_mwindow_scan_recently_used(
237
240
  * store it in the output parameter. If lru_window is NULL,
238
241
  * it's the first loop, so store it as well.
239
242
  */
240
- if (!lru_window ||
241
- (comparison_sign == GIT_MWINDOW__LRU && lru_window->last_used > w->last_used) ||
242
- (comparison_sign == GIT_MWINDOW__MRU && lru_window->last_used < w->last_used)) {
243
+ if (!lru_window || (comparison_sign * w->last_used) > lru_window->last_used) {
243
244
  lru_window = w;
244
245
  lru_last = w_last;
245
246
  found = true;
@@ -406,14 +407,13 @@ unsigned char *git_mwindow_open(
406
407
  return NULL;
407
408
  }
408
409
 
409
- if (!w || !(git_mwindow_contains(w, offset) && git_mwindow_contains(w, offset + extra))) {
410
+ if (!w || !(git_mwindow_contains(w, offset, extra))) {
410
411
  if (w) {
411
412
  w->inuse_cnt--;
412
413
  }
413
414
 
414
415
  for (w = mwf->windows; w; w = w->next) {
415
- if (git_mwindow_contains(w, offset) &&
416
- git_mwindow_contains(w, offset + extra))
416
+ if (git_mwindow_contains(w, offset, extra))
417
417
  break;
418
418
  }
419
419
 
@@ -38,7 +38,7 @@ typedef struct git_mwindow_ctl {
38
38
  git_vector windowfiles;
39
39
  } git_mwindow_ctl;
40
40
 
41
- int git_mwindow_contains(git_mwindow *win, off64_t offset);
41
+ int git_mwindow_contains(git_mwindow *win, off64_t offset, off64_t extra);
42
42
  int git_mwindow_free_all(git_mwindow_file *mwf); /* locks */
43
43
  unsigned char *git_mwindow_open(git_mwindow_file *mwf, git_mwindow **cursor, off64_t offset, size_t extra, unsigned int *left);
44
44
  int git_mwindow_file_register(git_mwindow_file *mwf);
@@ -12,7 +12,6 @@
12
12
 
13
13
  #include "posix.h"
14
14
  #include "str.h"
15
- #include "http_parser.h"
16
15
  #include "runtime.h"
17
16
 
18
17
  int gitno_recv(gitno_buffer *buf)
File without changes
File without changes
File without changes
@@ -250,6 +250,7 @@ int git_object_lookup_prefix(
250
250
  if (error < 0)
251
251
  return error;
252
252
 
253
+ GIT_ASSERT(odb_obj);
253
254
  error = git_object__from_odb_object(object_out, repo, odb_obj, type);
254
255
 
255
256
  git_odb_object_free(odb_obj);
File without changes
@@ -198,7 +198,7 @@ void git_odb_object_free(git_odb_object *object)
198
198
  int git_odb__hashfd(git_oid *out, git_file fd, size_t size, git_object_t type)
199
199
  {
200
200
  size_t hdr_len;
201
- char hdr[64], buffer[FILEIO_BUFSIZE];
201
+ char hdr[64], buffer[GIT_BUFSIZE_FILEIO];
202
202
  git_hash_ctx ctx;
203
203
  ssize_t read_len = 0;
204
204
  int error = 0;
@@ -1067,7 +1067,7 @@ int git_odb_expand_ids(
1067
1067
  int git_odb_read_header(size_t *len_p, git_object_t *type_p, git_odb *db, const git_oid *id)
1068
1068
  {
1069
1069
  int error;
1070
- git_odb_object *object;
1070
+ git_odb_object *object = NULL;
1071
1071
 
1072
1072
  error = git_odb__read_header_or_object(&object, len_p, type_p, db, id);
1073
1073
 
File without changes
File without changes
File without changes
@@ -187,8 +187,7 @@ int git_oid_fromraw(git_oid *out, const unsigned char *raw)
187
187
 
188
188
  int git_oid_cpy(git_oid *out, const git_oid *src)
189
189
  {
190
- memcpy(out->id, src->id, sizeof(out->id));
191
- return 0;
190
+ return git_oid_raw_cpy(out->id, src->id);
192
191
  }
193
192
 
194
193
  int git_oid_cmp(const git_oid *a, const git_oid *b)
@@ -203,25 +202,7 @@ int git_oid_equal(const git_oid *a, const git_oid *b)
203
202
 
204
203
  int git_oid_ncmp(const git_oid *oid_a, const git_oid *oid_b, size_t len)
205
204
  {
206
- const unsigned char *a = oid_a->id;
207
- const unsigned char *b = oid_b->id;
208
-
209
- if (len > GIT_OID_HEXSZ)
210
- len = GIT_OID_HEXSZ;
211
-
212
- while (len > 1) {
213
- if (*a != *b)
214
- return 1;
215
- a++;
216
- b++;
217
- len -= 2;
218
- };
219
-
220
- if (len)
221
- if ((*a ^ *b) & 0xf0)
222
- return 1;
223
-
224
- return 0;
205
+ return git_oid_raw_ncmp(oid_a->id, oid_b->id, len);
225
206
  }
226
207
 
227
208
  int git_oid_strcmp(const git_oid *oid_a, const char *str)
@@ -25,11 +25,44 @@ extern const git_oid git_oid__empty_tree_sha1;
25
25
  */
26
26
  char *git_oid_allocfmt(const git_oid *id);
27
27
 
28
- GIT_INLINE(int) git_oid__hashcmp(const unsigned char *sha1, const unsigned char *sha2)
28
+ GIT_INLINE(int) git_oid_raw_ncmp(
29
+ const unsigned char *sha1,
30
+ const unsigned char *sha2,
31
+ size_t len)
32
+ {
33
+ if (len > GIT_OID_HEXSZ)
34
+ len = GIT_OID_HEXSZ;
35
+
36
+ while (len > 1) {
37
+ if (*sha1 != *sha2)
38
+ return 1;
39
+ sha1++;
40
+ sha2++;
41
+ len -= 2;
42
+ };
43
+
44
+ if (len)
45
+ if ((*sha1 ^ *sha2) & 0xf0)
46
+ return 1;
47
+
48
+ return 0;
49
+ }
50
+
51
+ GIT_INLINE(int) git_oid_raw_cmp(
52
+ const unsigned char *sha1,
53
+ const unsigned char *sha2)
29
54
  {
30
55
  return memcmp(sha1, sha2, GIT_OID_RAWSZ);
31
56
  }
32
57
 
58
+ GIT_INLINE(int) git_oid_raw_cpy(
59
+ unsigned char *dst,
60
+ const unsigned char *src)
61
+ {
62
+ memcpy(dst, src, GIT_OID_RAWSZ);
63
+ return 0;
64
+ }
65
+
33
66
  /*
34
67
  * Compare two oid structures.
35
68
  *
@@ -39,7 +72,7 @@ GIT_INLINE(int) git_oid__hashcmp(const unsigned char *sha1, const unsigned char
39
72
  */
40
73
  GIT_INLINE(int) git_oid__cmp(const git_oid *a, const git_oid *b)
41
74
  {
42
- return git_oid__hashcmp(a->id, b->id);
75
+ return git_oid_raw_cmp(a->id, b->id);
43
76
  }
44
77
 
45
78
  GIT_INLINE(void) git_oid__cpy_prefix(
@@ -19,7 +19,7 @@ __KHASH_TYPE(oid, const git_oid *, void *)
19
19
  GIT_INLINE(khint_t) git_oidmap_hash(const git_oid *oid)
20
20
  {
21
21
  khint_t h;
22
- memcpy(&h, oid, sizeof(khint_t));
22
+ memcpy(&h, oid->id, sizeof(khint_t));
23
23
  return h;
24
24
  }
25
25
 
File without changes