rugged 1.6.3 → 1.9.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 (443) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rugged/rugged_allocator.c +0 -54
  3. data/lib/rugged/version.rb +1 -1
  4. data/vendor/libgit2/AUTHORS +1 -0
  5. data/vendor/libgit2/CMakeLists.txt +25 -17
  6. data/vendor/libgit2/COPYING +195 -1
  7. data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
  8. data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
  9. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  10. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +4 -4
  11. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
  12. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +34 -6
  13. data/vendor/libgit2/cmake/SelectHashes.cmake +32 -11
  14. data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
  15. data/vendor/libgit2/cmake/SelectSSH.cmake +22 -17
  16. data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
  17. data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
  18. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  19. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  20. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  21. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  22. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  23. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  24. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
  25. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  26. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  27. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  28. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
  29. data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
  30. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  31. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  32. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  33. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  34. data/vendor/libgit2/deps/pcre/CMakeLists.txt +1 -0
  35. data/vendor/libgit2/deps/pcre/LICENCE +5 -5
  36. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  37. data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
  38. data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
  39. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
  40. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/git-xdiff.h +4 -1
  41. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.c +19 -18
  42. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.h +2 -4
  43. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.c +3 -3
  44. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xhistogram.c +7 -18
  45. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmacros.h +18 -1
  46. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmerge.c +22 -20
  47. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xpatience.c +21 -30
  48. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.c +13 -30
  49. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.c +18 -1
  50. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.h +2 -1
  51. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  52. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  53. data/vendor/libgit2/deps/zlib/adler32.c +5 -27
  54. data/vendor/libgit2/deps/zlib/crc32.c +94 -167
  55. data/vendor/libgit2/deps/zlib/deflate.c +358 -435
  56. data/vendor/libgit2/deps/zlib/deflate.h +41 -10
  57. data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
  58. data/vendor/libgit2/deps/zlib/infback.c +17 -30
  59. data/vendor/libgit2/deps/zlib/inffast.c +1 -4
  60. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  61. data/vendor/libgit2/deps/zlib/inflate.c +36 -102
  62. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  63. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  64. data/vendor/libgit2/deps/zlib/trees.c +287 -352
  65. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  66. data/vendor/libgit2/deps/zlib/zlib.h +202 -202
  67. data/vendor/libgit2/deps/zlib/zutil.c +18 -44
  68. data/vendor/libgit2/deps/zlib/zutil.h +13 -33
  69. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  70. data/vendor/libgit2/include/git2/apply.h +27 -6
  71. data/vendor/libgit2/include/git2/attr.h +17 -4
  72. data/vendor/libgit2/include/git2/blame.h +133 -28
  73. data/vendor/libgit2/include/git2/blob.h +71 -28
  74. data/vendor/libgit2/include/git2/branch.h +22 -15
  75. data/vendor/libgit2/include/git2/buffer.h +6 -4
  76. data/vendor/libgit2/include/git2/cert.h +2 -1
  77. data/vendor/libgit2/include/git2/checkout.h +83 -32
  78. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  79. data/vendor/libgit2/include/git2/clone.h +25 -9
  80. data/vendor/libgit2/include/git2/commit.h +132 -3
  81. data/vendor/libgit2/include/git2/common.h +138 -56
  82. data/vendor/libgit2/include/git2/config.h +93 -23
  83. data/vendor/libgit2/include/git2/credential.h +30 -2
  84. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  85. data/vendor/libgit2/include/git2/deprecated.h +133 -3
  86. data/vendor/libgit2/include/git2/describe.h +13 -1
  87. data/vendor/libgit2/include/git2/diff.h +77 -9
  88. data/vendor/libgit2/include/git2/email.h +9 -29
  89. data/vendor/libgit2/include/git2/errors.h +49 -74
  90. data/vendor/libgit2/include/git2/filter.h +14 -7
  91. data/vendor/libgit2/include/git2/global.h +8 -1
  92. data/vendor/libgit2/include/git2/graph.h +3 -2
  93. data/vendor/libgit2/include/git2/ignore.h +10 -0
  94. data/vendor/libgit2/include/git2/index.h +100 -6
  95. data/vendor/libgit2/include/git2/indexer.h +21 -4
  96. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  97. data/vendor/libgit2/include/git2/merge.h +46 -1
  98. data/vendor/libgit2/include/git2/message.h +2 -2
  99. data/vendor/libgit2/include/git2/net.h +3 -1
  100. data/vendor/libgit2/include/git2/notes.h +9 -6
  101. data/vendor/libgit2/include/git2/object.h +9 -8
  102. data/vendor/libgit2/include/git2/odb.h +91 -49
  103. data/vendor/libgit2/include/git2/odb_backend.h +80 -52
  104. data/vendor/libgit2/include/git2/oid.h +24 -25
  105. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  106. data/vendor/libgit2/include/git2/pack.h +13 -1
  107. data/vendor/libgit2/include/git2/patch.h +2 -3
  108. data/vendor/libgit2/include/git2/pathspec.h +9 -0
  109. data/vendor/libgit2/include/git2/proxy.h +10 -0
  110. data/vendor/libgit2/include/git2/rebase.h +9 -6
  111. data/vendor/libgit2/include/git2/refdb.h +2 -2
  112. data/vendor/libgit2/include/git2/reflog.h +3 -2
  113. data/vendor/libgit2/include/git2/refs.h +9 -6
  114. data/vendor/libgit2/include/git2/refspec.h +14 -4
  115. data/vendor/libgit2/include/git2/remote.h +112 -18
  116. data/vendor/libgit2/include/git2/repository.h +61 -15
  117. data/vendor/libgit2/include/git2/reset.h +16 -3
  118. data/vendor/libgit2/include/git2/revert.h +9 -4
  119. data/vendor/libgit2/include/git2/revparse.h +3 -3
  120. data/vendor/libgit2/include/git2/revwalk.h +3 -2
  121. data/vendor/libgit2/include/git2/signature.h +46 -1
  122. data/vendor/libgit2/include/git2/stash.h +17 -3
  123. data/vendor/libgit2/include/git2/status.h +10 -6
  124. data/vendor/libgit2/include/git2/stdint.h +87 -85
  125. data/vendor/libgit2/include/git2/strarray.h +2 -3
  126. data/vendor/libgit2/include/git2/submodule.h +20 -9
  127. data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
  128. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  129. data/vendor/libgit2/include/git2/sys/commit_graph.h +109 -58
  130. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  131. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  132. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  133. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  134. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  135. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  136. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  137. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  138. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  139. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  140. data/vendor/libgit2/include/git2/sys/midx.h +47 -4
  141. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
  142. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  143. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  144. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  145. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  146. data/vendor/libgit2/include/git2/sys/remote.h +8 -1
  147. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  148. data/vendor/libgit2/include/git2/sys/stream.h +25 -2
  149. data/vendor/libgit2/include/git2/sys/transport.h +44 -5
  150. data/vendor/libgit2/include/git2/tag.h +3 -1
  151. data/vendor/libgit2/include/git2/trace.h +9 -3
  152. data/vendor/libgit2/include/git2/transaction.h +3 -2
  153. data/vendor/libgit2/include/git2/transport.h +11 -3
  154. data/vendor/libgit2/include/git2/tree.h +16 -5
  155. data/vendor/libgit2/include/git2/types.h +19 -3
  156. data/vendor/libgit2/include/git2/version.h +44 -8
  157. data/vendor/libgit2/include/git2/worktree.h +19 -7
  158. data/vendor/libgit2/src/CMakeLists.txt +40 -15
  159. data/vendor/libgit2/src/cli/CMakeLists.txt +2 -2
  160. data/vendor/libgit2/src/cli/cmd.c +1 -1
  161. data/vendor/libgit2/src/cli/cmd.h +4 -0
  162. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  163. data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
  164. data/vendor/libgit2/src/cli/cmd_clone.c +27 -13
  165. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  166. data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
  167. data/vendor/libgit2/src/cli/cmd_help.c +6 -7
  168. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  169. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  170. data/vendor/libgit2/src/cli/common.c +168 -0
  171. data/vendor/libgit2/src/cli/common.h +63 -0
  172. data/vendor/libgit2/src/cli/error.h +1 -1
  173. data/vendor/libgit2/src/cli/main.c +52 -24
  174. data/vendor/libgit2/src/cli/opt.c +29 -3
  175. data/vendor/libgit2/src/cli/opt.h +21 -3
  176. data/vendor/libgit2/src/cli/opt_usage.c +102 -33
  177. data/vendor/libgit2/src/cli/opt_usage.h +6 -1
  178. data/vendor/libgit2/src/cli/progress.c +60 -10
  179. data/vendor/libgit2/src/cli/progress.h +16 -4
  180. data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
  181. data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
  182. data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
  183. data/vendor/libgit2/src/libgit2/CMakeLists.txt +27 -27
  184. data/vendor/libgit2/src/libgit2/annotated_commit.c +2 -2
  185. data/vendor/libgit2/src/libgit2/annotated_commit.h +1 -1
  186. data/vendor/libgit2/src/libgit2/apply.c +14 -16
  187. data/vendor/libgit2/src/libgit2/attr.c +30 -13
  188. data/vendor/libgit2/src/libgit2/attr_file.c +7 -2
  189. data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
  190. data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
  191. data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
  192. data/vendor/libgit2/src/libgit2/blame.c +152 -59
  193. data/vendor/libgit2/src/libgit2/blame.h +1 -0
  194. data/vendor/libgit2/src/libgit2/blame_git.c +0 -1
  195. data/vendor/libgit2/src/libgit2/branch.c +2 -2
  196. data/vendor/libgit2/src/libgit2/cache.c +22 -17
  197. data/vendor/libgit2/src/libgit2/cache.h +7 -9
  198. data/vendor/libgit2/src/libgit2/checkout.c +34 -24
  199. data/vendor/libgit2/src/libgit2/checkout.h +0 -2
  200. data/vendor/libgit2/src/libgit2/cherrypick.c +4 -5
  201. data/vendor/libgit2/src/libgit2/clone.c +186 -164
  202. data/vendor/libgit2/src/libgit2/clone.h +4 -1
  203. data/vendor/libgit2/src/libgit2/commit.c +123 -9
  204. data/vendor/libgit2/src/libgit2/commit_graph.c +166 -88
  205. data/vendor/libgit2/src/libgit2/commit_graph.h +21 -6
  206. data/vendor/libgit2/src/libgit2/commit_list.c +12 -5
  207. data/vendor/libgit2/src/libgit2/commit_list.h +1 -0
  208. data/vendor/libgit2/src/libgit2/config.c +394 -300
  209. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  210. data/vendor/libgit2/src/libgit2/config.h +9 -4
  211. data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
  212. data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
  213. data/vendor/libgit2/src/libgit2/config_file.c +113 -96
  214. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  215. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  216. data/vendor/libgit2/src/libgit2/config_mem.c +194 -40
  217. data/vendor/libgit2/src/libgit2/config_parse.c +10 -9
  218. data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
  219. data/vendor/libgit2/src/libgit2/describe.c +34 -31
  220. data/vendor/libgit2/src/libgit2/diff.c +17 -8
  221. data/vendor/libgit2/src/libgit2/diff.h +6 -6
  222. data/vendor/libgit2/src/libgit2/diff_driver.c +12 -19
  223. data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
  224. data/vendor/libgit2/src/libgit2/diff_file.c +7 -7
  225. data/vendor/libgit2/src/libgit2/diff_generate.c +39 -18
  226. data/vendor/libgit2/src/libgit2/diff_parse.c +22 -6
  227. data/vendor/libgit2/src/libgit2/diff_print.c +88 -13
  228. data/vendor/libgit2/src/libgit2/diff_tform.c +40 -12
  229. data/vendor/libgit2/src/libgit2/diff_xdiff.h +1 -1
  230. data/vendor/libgit2/src/libgit2/email.c +5 -3
  231. data/vendor/libgit2/src/libgit2/fetch.c +39 -9
  232. data/vendor/libgit2/src/libgit2/fetch.h +0 -2
  233. data/vendor/libgit2/src/libgit2/fetchhead.c +11 -9
  234. data/vendor/libgit2/src/libgit2/filter.c +5 -5
  235. data/vendor/libgit2/src/libgit2/git2.rc +3 -3
  236. data/vendor/libgit2/src/libgit2/grafts.c +270 -0
  237. data/vendor/libgit2/src/libgit2/grafts.h +35 -0
  238. data/vendor/libgit2/src/libgit2/graph.c +1 -1
  239. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  240. data/vendor/libgit2/src/libgit2/ident.c +3 -3
  241. data/vendor/libgit2/src/libgit2/ignore.c +9 -5
  242. data/vendor/libgit2/src/libgit2/index.c +392 -208
  243. data/vendor/libgit2/src/libgit2/index.h +16 -3
  244. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  245. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  246. data/vendor/libgit2/src/libgit2/indexer.c +44 -41
  247. data/vendor/libgit2/src/libgit2/iterator.c +34 -13
  248. data/vendor/libgit2/src/libgit2/iterator.h +3 -0
  249. data/vendor/libgit2/src/libgit2/libgit2.c +155 -331
  250. data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
  251. data/vendor/libgit2/src/libgit2/merge.c +56 -46
  252. data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
  253. data/vendor/libgit2/src/libgit2/merge_file.c +0 -2
  254. data/vendor/libgit2/src/libgit2/midx.c +86 -44
  255. data/vendor/libgit2/src/libgit2/midx.h +13 -3
  256. data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
  257. data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
  258. data/vendor/libgit2/src/libgit2/notes.c +9 -8
  259. data/vendor/libgit2/src/libgit2/object.c +42 -16
  260. data/vendor/libgit2/src/libgit2/object.h +6 -0
  261. data/vendor/libgit2/src/libgit2/odb.c +16 -9
  262. data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
  263. data/vendor/libgit2/src/libgit2/odb_pack.c +28 -7
  264. data/vendor/libgit2/src/libgit2/oid.c +35 -2
  265. data/vendor/libgit2/src/libgit2/oid.h +11 -0
  266. data/vendor/libgit2/src/libgit2/oidarray.c +49 -3
  267. data/vendor/libgit2/src/libgit2/oidarray.h +5 -1
  268. data/vendor/libgit2/src/libgit2/pack-objects.c +77 -43
  269. data/vendor/libgit2/src/libgit2/pack-objects.h +17 -6
  270. data/vendor/libgit2/src/libgit2/pack.c +33 -27
  271. data/vendor/libgit2/src/libgit2/pack.h +15 -10
  272. data/vendor/libgit2/src/libgit2/parse.c +7 -4
  273. data/vendor/libgit2/src/libgit2/parse.h +1 -1
  274. data/vendor/libgit2/src/libgit2/patch.h +7 -1
  275. data/vendor/libgit2/src/libgit2/patch_generate.c +24 -5
  276. data/vendor/libgit2/src/libgit2/patch_parse.c +18 -10
  277. data/vendor/libgit2/src/libgit2/path.c +1 -1
  278. data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
  279. data/vendor/libgit2/src/libgit2/push.c +81 -30
  280. data/vendor/libgit2/src/libgit2/push.h +1 -0
  281. data/vendor/libgit2/src/libgit2/reader.c +1 -1
  282. data/vendor/libgit2/src/libgit2/rebase.c +72 -84
  283. data/vendor/libgit2/src/libgit2/refdb_fs.c +146 -70
  284. data/vendor/libgit2/src/libgit2/reflog.c +1 -2
  285. data/vendor/libgit2/src/libgit2/reflog.h +2 -0
  286. data/vendor/libgit2/src/libgit2/refs.c +34 -8
  287. data/vendor/libgit2/src/libgit2/refs.h +6 -1
  288. data/vendor/libgit2/src/libgit2/refspec.c +28 -1
  289. data/vendor/libgit2/src/libgit2/refspec.h +8 -0
  290. data/vendor/libgit2/src/libgit2/remote.c +136 -67
  291. data/vendor/libgit2/src/libgit2/remote.h +1 -0
  292. data/vendor/libgit2/src/libgit2/repository.c +789 -330
  293. data/vendor/libgit2/src/libgit2/repository.h +22 -3
  294. data/vendor/libgit2/src/libgit2/reset.c +2 -2
  295. data/vendor/libgit2/src/libgit2/revert.c +9 -13
  296. data/vendor/libgit2/src/libgit2/revparse.c +6 -3
  297. data/vendor/libgit2/src/libgit2/revwalk.c +36 -11
  298. data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
  299. data/vendor/libgit2/src/libgit2/settings.c +468 -0
  300. data/vendor/libgit2/src/libgit2/settings.h +6 -2
  301. data/vendor/libgit2/src/libgit2/signature.c +132 -15
  302. data/vendor/libgit2/src/libgit2/signature.h +0 -1
  303. data/vendor/libgit2/src/libgit2/stash.c +9 -8
  304. data/vendor/libgit2/src/libgit2/status.c +1 -1
  305. data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -61
  306. data/vendor/libgit2/src/libgit2/streams/openssl.c +40 -23
  307. data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
  308. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
  309. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
  310. data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
  311. data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
  312. data/vendor/libgit2/src/libgit2/streams/socket.c +237 -51
  313. data/vendor/libgit2/src/libgit2/streams/socket.h +3 -1
  314. data/vendor/libgit2/src/libgit2/streams/stransport.c +79 -19
  315. data/vendor/libgit2/src/libgit2/streams/tls.c +5 -0
  316. data/vendor/libgit2/src/libgit2/submodule.c +106 -63
  317. data/vendor/libgit2/src/libgit2/submodule.h +9 -10
  318. data/vendor/libgit2/src/libgit2/tag.c +1 -1
  319. data/vendor/libgit2/src/libgit2/trailer.c +6 -6
  320. data/vendor/libgit2/src/libgit2/transaction.c +26 -20
  321. data/vendor/libgit2/src/libgit2/transaction.h +4 -1
  322. data/vendor/libgit2/src/libgit2/transport.c +4 -1
  323. data/vendor/libgit2/src/libgit2/transports/auth.h +1 -2
  324. data/vendor/libgit2/src/libgit2/transports/{auth_negotiate.c → auth_gssapi.c} +32 -32
  325. data/vendor/libgit2/src/libgit2/transports/auth_negotiate.h +1 -1
  326. data/vendor/libgit2/src/libgit2/transports/auth_ntlm.h +1 -1
  327. data/vendor/libgit2/src/libgit2/transports/{auth_ntlm.c → auth_ntlmclient.c} +12 -12
  328. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
  329. data/vendor/libgit2/src/libgit2/transports/credential.c +1 -1
  330. data/vendor/libgit2/src/libgit2/transports/git.c +7 -8
  331. data/vendor/libgit2/src/libgit2/transports/http.c +8 -4
  332. data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
  333. data/vendor/libgit2/src/libgit2/transports/httpclient.c +117 -72
  334. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  335. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  336. data/vendor/libgit2/src/libgit2/transports/local.c +21 -11
  337. data/vendor/libgit2/src/libgit2/transports/smart.c +50 -32
  338. data/vendor/libgit2/src/libgit2/transports/smart.h +26 -9
  339. data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +139 -18
  340. data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +209 -57
  341. data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
  342. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  343. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  344. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1126 -0
  345. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  346. data/vendor/libgit2/src/libgit2/transports/winhttp.c +48 -21
  347. data/vendor/libgit2/src/libgit2/tree-cache.c +26 -16
  348. data/vendor/libgit2/src/libgit2/tree-cache.h +5 -3
  349. data/vendor/libgit2/src/libgit2/tree.c +35 -27
  350. data/vendor/libgit2/src/libgit2/tree.h +3 -2
  351. data/vendor/libgit2/src/libgit2/worktree.c +39 -27
  352. data/vendor/libgit2/src/util/CMakeLists.txt +4 -6
  353. data/vendor/libgit2/src/util/alloc.c +69 -7
  354. data/vendor/libgit2/src/util/alloc.h +34 -9
  355. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  356. data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
  357. data/vendor/libgit2/src/util/allocators/failalloc.c +0 -60
  358. data/vendor/libgit2/src/util/allocators/failalloc.h +0 -6
  359. data/vendor/libgit2/src/util/allocators/stdalloc.c +2 -115
  360. data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +0 -68
  361. data/vendor/libgit2/src/util/array.h +24 -18
  362. data/vendor/libgit2/src/util/cc-compat.h +4 -0
  363. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  364. data/vendor/libgit2/src/util/date.c +22 -14
  365. data/vendor/libgit2/src/util/date.h +12 -0
  366. data/vendor/libgit2/src/util/errors.c +401 -0
  367. data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
  368. data/vendor/libgit2/src/util/filebuf.c +6 -1
  369. data/vendor/libgit2/src/util/filebuf.h +19 -6
  370. data/vendor/libgit2/src/util/fs_path.c +16 -5
  371. data/vendor/libgit2/src/util/fs_path.h +23 -0
  372. data/vendor/libgit2/src/util/futils.c +14 -10
  373. data/vendor/libgit2/src/util/futils.h +13 -4
  374. data/vendor/libgit2/src/util/git2_features.h.in +21 -4
  375. data/vendor/libgit2/src/util/git2_util.h +6 -0
  376. data/vendor/libgit2/src/util/hash/openssl.c +152 -0
  377. data/vendor/libgit2/src/util/hash/openssl.h +17 -1
  378. data/vendor/libgit2/src/util/hash/sha.h +4 -1
  379. data/vendor/libgit2/src/util/hashmap.h +424 -0
  380. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  381. data/vendor/libgit2/src/util/integer.h +3 -1
  382. data/vendor/libgit2/src/util/net.c +318 -161
  383. data/vendor/libgit2/src/util/net.h +27 -0
  384. data/vendor/libgit2/src/util/pool.c +1 -1
  385. data/vendor/libgit2/src/util/pool.h +5 -0
  386. data/vendor/libgit2/src/util/posix.c +54 -0
  387. data/vendor/libgit2/src/util/posix.h +22 -0
  388. data/vendor/libgit2/src/util/pqueue.h +1 -1
  389. data/vendor/libgit2/src/util/process.h +222 -0
  390. data/vendor/libgit2/src/util/rand.c +6 -10
  391. data/vendor/libgit2/src/util/regexp.c +1 -1
  392. data/vendor/libgit2/src/util/sortedcache.c +14 -13
  393. data/vendor/libgit2/src/util/sortedcache.h +3 -3
  394. data/vendor/libgit2/src/util/staticstr.h +66 -0
  395. data/vendor/libgit2/src/util/str.c +2 -2
  396. data/vendor/libgit2/src/util/strlist.c +108 -0
  397. data/vendor/libgit2/src/util/strlist.h +36 -0
  398. data/vendor/libgit2/src/util/unix/posix.h +0 -2
  399. data/vendor/libgit2/src/util/unix/process.c +629 -0
  400. data/vendor/libgit2/src/util/unix/realpath.c +23 -5
  401. data/vendor/libgit2/src/util/util.c +17 -12
  402. data/vendor/libgit2/src/util/util.h +28 -54
  403. data/vendor/libgit2/src/util/vector.c +3 -3
  404. data/vendor/libgit2/src/util/vector.h +2 -2
  405. data/vendor/libgit2/src/util/win32/error.c +1 -1
  406. data/vendor/libgit2/src/util/win32/path_w32.c +8 -8
  407. data/vendor/libgit2/src/util/win32/posix_w32.c +30 -7
  408. data/vendor/libgit2/src/util/win32/process.c +506 -0
  409. data/vendor/libgit2/src/util/win32/utf-conv.c +73 -75
  410. data/vendor/libgit2/src/util/win32/utf-conv.h +81 -14
  411. data/vendor/libgit2/src/util/win32/w32_util.c +1 -1
  412. metadata +72 -49
  413. data/vendor/libgit2/cmake/SelectWinHTTP.cmake +0 -17
  414. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  415. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  416. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  417. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  418. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  419. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  420. data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
  421. data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
  422. data/vendor/libgit2/src/libgit2/errors.c +0 -238
  423. data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
  424. data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
  425. data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
  426. data/vendor/libgit2/src/libgit2/netops.c +0 -124
  427. data/vendor/libgit2/src/libgit2/netops.h +0 -68
  428. data/vendor/libgit2/src/libgit2/offmap.c +0 -101
  429. data/vendor/libgit2/src/libgit2/offmap.h +0 -133
  430. data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
  431. data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
  432. data/vendor/libgit2/src/libgit2/threadstate.c +0 -84
  433. data/vendor/libgit2/src/libgit2/threadstate.h +0 -24
  434. data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
  435. data/vendor/libgit2/src/util/khash.h +0 -615
  436. data/vendor/libgit2/src/util/strmap.c +0 -100
  437. data/vendor/libgit2/src/util/strmap.h +0 -131
  438. /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
  439. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiff.h +0 -0
  440. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.h +0 -0
  441. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xinclude.h +0 -0
  442. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.h +0 -0
  443. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xtypes.h +0 -0
@@ -11,7 +11,6 @@
11
11
  #include "futils.h"
12
12
  #include "map.h"
13
13
  #include "runtime.h"
14
- #include "strmap.h"
15
14
  #include "pack.h"
16
15
 
17
16
  #define DEFAULT_WINDOW_SIZE \
@@ -29,33 +28,27 @@ size_t git_mwindow__window_size = DEFAULT_WINDOW_SIZE;
29
28
  size_t git_mwindow__mapped_limit = DEFAULT_MAPPED_LIMIT;
30
29
  size_t git_mwindow__file_limit = DEFAULT_FILE_LIMIT;
31
30
 
32
- /* Mutex to control access to `git_mwindow__mem_ctl` and `git__pack_cache`. */
33
- git_mutex git__mwindow_mutex;
31
+ /* Mutex to control access to `git_mwindow__mem_ctl` and `git_mwindow__pack_cache`. */
32
+ git_mutex git_mwindow__mutex;
34
33
 
35
- /* Whenever you want to read or modify this, grab `git__mwindow_mutex` */
34
+ /* Whenever you want to read or modify this, grab `git_mwindow__mutex` */
36
35
  git_mwindow_ctl git_mwindow__mem_ctl;
37
36
 
38
37
  /* Global list of mwindow files, to open packs once across repos */
39
- git_strmap *git__pack_cache = NULL;
38
+ GIT_HASHMAP_STR_FUNCTIONS(git_mwindow_packmap, , struct git_pack_file *);
39
+ git_mwindow_packmap git_mwindow__pack_cache;
40
40
 
41
41
  static void git_mwindow_global_shutdown(void)
42
42
  {
43
- git_strmap *tmp = git__pack_cache;
44
-
45
- git_mutex_free(&git__mwindow_mutex);
46
-
47
- git__pack_cache = NULL;
48
- git_strmap_free(tmp);
43
+ git_mutex_free(&git_mwindow__mutex);
44
+ git_mwindow_packmap_dispose(&git_mwindow__pack_cache);
49
45
  }
50
46
 
51
47
  int git_mwindow_global_init(void)
52
48
  {
53
49
  int error;
54
50
 
55
- GIT_ASSERT(!git__pack_cache);
56
-
57
- if ((error = git_mutex_init(&git__mwindow_mutex)) < 0 ||
58
- (error = git_strmap_new(&git__pack_cache)) < 0)
51
+ if ((error = git_mutex_init(&git_mwindow__mutex)) < 0)
59
52
  return error;
60
53
 
61
54
  return git_runtime_shutdown_register(git_mwindow_global_shutdown);
@@ -73,31 +66,34 @@ int git_mwindow_get_pack(
73
66
  if ((error = git_packfile__name(&packname, path)) < 0)
74
67
  return error;
75
68
 
76
- if (git_mutex_lock(&git__mwindow_mutex) < 0) {
69
+ if (git_mutex_lock(&git_mwindow__mutex) < 0) {
77
70
  git_error_set(GIT_ERROR_OS, "failed to lock mwindow mutex");
78
71
  return -1;
79
72
  }
80
73
 
81
- pack = git_strmap_get(git__pack_cache, packname);
74
+ error = git_mwindow_packmap_get(&pack, &git_mwindow__pack_cache, packname);
82
75
  git__free(packname);
83
76
 
84
- if (pack != NULL) {
77
+ if (error == 0) {
85
78
  git_atomic32_inc(&pack->refcount);
86
- git_mutex_unlock(&git__mwindow_mutex);
79
+ git_mutex_unlock(&git_mwindow__mutex);
87
80
  *out = pack;
88
81
  return 0;
82
+ } else if (error != GIT_ENOTFOUND) {
83
+ return error;
89
84
  }
90
85
 
91
86
  /* If we didn't find it, we need to create it */
92
87
  if ((error = git_packfile_alloc(&pack, path, oid_type)) < 0) {
93
- git_mutex_unlock(&git__mwindow_mutex);
88
+ git_mutex_unlock(&git_mwindow__mutex);
94
89
  return error;
95
90
  }
96
91
 
97
92
  git_atomic32_inc(&pack->refcount);
98
93
 
99
- error = git_strmap_set(git__pack_cache, pack->pack_name, pack);
100
- git_mutex_unlock(&git__mwindow_mutex);
94
+ error = git_mwindow_packmap_put(&git_mwindow__pack_cache, pack->pack_name, pack);
95
+ git_mutex_unlock(&git_mwindow__mutex);
96
+
101
97
  if (error < 0) {
102
98
  git_packfile_free(pack, false);
103
99
  return error;
@@ -112,21 +108,18 @@ int git_mwindow_put_pack(struct git_pack_file *pack)
112
108
  int count, error;
113
109
  struct git_pack_file *pack_to_delete = NULL;
114
110
 
115
- if ((error = git_mutex_lock(&git__mwindow_mutex)) < 0)
111
+ if ((error = git_mutex_lock(&git_mwindow__mutex)) < 0)
116
112
  return error;
117
113
 
118
- /* put before get would be a corrupted state */
119
- GIT_ASSERT(git__pack_cache);
120
-
121
114
  /* if we cannot find it, the state is corrupted */
122
- GIT_ASSERT(git_strmap_exists(git__pack_cache, pack->pack_name));
115
+ GIT_ASSERT(git_mwindow_packmap_contains(&git_mwindow__pack_cache, pack->pack_name));
123
116
 
124
117
  count = git_atomic32_dec(&pack->refcount);
125
118
  if (count == 0) {
126
- git_strmap_delete(git__pack_cache, pack->pack_name);
119
+ git_mwindow_packmap_remove(&git_mwindow__pack_cache, pack->pack_name);
127
120
  pack_to_delete = pack;
128
121
  }
129
- git_mutex_unlock(&git__mwindow_mutex);
122
+ git_mutex_unlock(&git_mwindow__mutex);
130
123
  git_packfile_free(pack_to_delete, false);
131
124
 
132
125
  return 0;
@@ -134,7 +127,7 @@ int git_mwindow_put_pack(struct git_pack_file *pack)
134
127
 
135
128
  /*
136
129
  * Free all the windows in a sequence, typically because we're done
137
- * with the file. Needs to hold the git__mwindow_mutex.
130
+ * with the file. Needs to hold the git_mwindow__mutex.
138
131
  */
139
132
  static int git_mwindow_free_all_locked(git_mwindow_file *mwf)
140
133
  {
@@ -152,7 +145,7 @@ static int git_mwindow_free_all_locked(git_mwindow_file *mwf)
152
145
  }
153
146
 
154
147
  if (ctl->windowfiles.length == 0) {
155
- git_vector_free(&ctl->windowfiles);
148
+ git_vector_dispose(&ctl->windowfiles);
156
149
  ctl->windowfiles.contents = NULL;
157
150
  }
158
151
 
@@ -176,14 +169,14 @@ int git_mwindow_free_all(git_mwindow_file *mwf)
176
169
  {
177
170
  int error;
178
171
 
179
- if (git_mutex_lock(&git__mwindow_mutex)) {
172
+ if (git_mutex_lock(&git_mwindow__mutex)) {
180
173
  git_error_set(GIT_ERROR_THREAD, "unable to lock mwindow mutex");
181
174
  return -1;
182
175
  }
183
176
 
184
177
  error = git_mwindow_free_all_locked(mwf);
185
178
 
186
- git_mutex_unlock(&git__mwindow_mutex);
179
+ git_mutex_unlock(&git_mwindow__mutex);
187
180
 
188
181
  return error;
189
182
  }
@@ -405,7 +398,7 @@ unsigned char *git_mwindow_open(
405
398
  git_mwindow_ctl *ctl = &git_mwindow__mem_ctl;
406
399
  git_mwindow *w = *cursor;
407
400
 
408
- if (git_mutex_lock(&git__mwindow_mutex)) {
401
+ if (git_mutex_lock(&git_mwindow__mutex)) {
409
402
  git_error_set(GIT_ERROR_THREAD, "unable to lock mwindow mutex");
410
403
  return NULL;
411
404
  }
@@ -427,7 +420,7 @@ unsigned char *git_mwindow_open(
427
420
  if (!w) {
428
421
  w = new_window_locked(mwf->fd, mwf->size, offset);
429
422
  if (w == NULL) {
430
- git_mutex_unlock(&git__mwindow_mutex);
423
+ git_mutex_unlock(&git_mwindow__mutex);
431
424
  return NULL;
432
425
  }
433
426
  w->next = mwf->windows;
@@ -447,7 +440,7 @@ unsigned char *git_mwindow_open(
447
440
  if (left)
448
441
  *left = (unsigned int)(w->window_map.len - offset);
449
442
 
450
- git_mutex_unlock(&git__mwindow_mutex);
443
+ git_mutex_unlock(&git_mwindow__mutex);
451
444
  return (unsigned char *) w->window_map.data + offset;
452
445
  }
453
446
 
@@ -459,14 +452,14 @@ int git_mwindow_file_register(git_mwindow_file *mwf)
459
452
  size_t i;
460
453
  git_mwindow_file *closed_file = NULL;
461
454
 
462
- if (git_mutex_lock(&git__mwindow_mutex)) {
455
+ if (git_mutex_lock(&git_mwindow__mutex)) {
463
456
  git_error_set(GIT_ERROR_THREAD, "unable to lock mwindow mutex");
464
457
  return -1;
465
458
  }
466
459
 
467
460
  if (ctl->windowfiles.length == 0 &&
468
461
  (error = git_vector_init(&ctl->windowfiles, 8, NULL)) < 0) {
469
- git_mutex_unlock(&git__mwindow_mutex);
462
+ git_mutex_unlock(&git_mwindow__mutex);
470
463
  goto cleanup;
471
464
  }
472
465
 
@@ -486,7 +479,7 @@ int git_mwindow_file_register(git_mwindow_file *mwf)
486
479
  }
487
480
 
488
481
  error = git_vector_insert(&ctl->windowfiles, mwf);
489
- git_mutex_unlock(&git__mwindow_mutex);
482
+ git_mutex_unlock(&git_mwindow__mutex);
490
483
  if (error < 0)
491
484
  goto cleanup;
492
485
 
@@ -505,7 +498,7 @@ int git_mwindow_file_register(git_mwindow_file *mwf)
505
498
  }
506
499
 
507
500
  cleanup:
508
- git_vector_free(&closed_files);
501
+ git_vector_dispose(&closed_files);
509
502
  return error;
510
503
  }
511
504
 
@@ -515,30 +508,30 @@ void git_mwindow_file_deregister(git_mwindow_file *mwf)
515
508
  git_mwindow_file *cur;
516
509
  size_t i;
517
510
 
518
- if (git_mutex_lock(&git__mwindow_mutex))
511
+ if (git_mutex_lock(&git_mwindow__mutex))
519
512
  return;
520
513
 
521
514
  git_vector_foreach(&ctl->windowfiles, i, cur) {
522
515
  if (cur == mwf) {
523
516
  git_vector_remove(&ctl->windowfiles, i);
524
- git_mutex_unlock(&git__mwindow_mutex);
517
+ git_mutex_unlock(&git_mwindow__mutex);
525
518
  return;
526
519
  }
527
520
  }
528
- git_mutex_unlock(&git__mwindow_mutex);
521
+ git_mutex_unlock(&git_mwindow__mutex);
529
522
  }
530
523
 
531
524
  void git_mwindow_close(git_mwindow **window)
532
525
  {
533
526
  git_mwindow *w = *window;
534
527
  if (w) {
535
- if (git_mutex_lock(&git__mwindow_mutex)) {
528
+ if (git_mutex_lock(&git_mwindow__mutex)) {
536
529
  git_error_set(GIT_ERROR_THREAD, "unable to lock mwindow mutex");
537
530
  return;
538
531
  }
539
532
 
540
533
  w->inuse_cnt--;
541
- git_mutex_unlock(&git__mwindow_mutex);
534
+ git_mutex_unlock(&git_mwindow__mutex);
542
535
  *window = NULL;
543
536
  }
544
537
  }
@@ -12,6 +12,10 @@
12
12
 
13
13
  #include "map.h"
14
14
  #include "vector.h"
15
+ #include "hashmap_str.h"
16
+
17
+ GIT_HASHMAP_STR_STRUCT(git_mwindow_packmap, struct git_pack_file *);
18
+ GIT_HASHMAP_STR_PROTOTYPES(git_mwindow_packmap, struct git_pack_file *);
15
19
 
16
20
  typedef struct git_mwindow {
17
21
  struct git_mwindow *next;
@@ -460,7 +460,7 @@ int git_note_commit_read(
460
460
  {
461
461
  int error;
462
462
  git_tree *tree = NULL;
463
- char target[GIT_OID_SHA1_HEXSIZE + 1];
463
+ char target[GIT_OID_MAX_HEXSIZE + 1];
464
464
 
465
465
  git_oid_tostr(target, sizeof(target), oid);
466
466
 
@@ -507,7 +507,7 @@ int git_note_commit_create(
507
507
  {
508
508
  int error;
509
509
  git_tree *tree = NULL;
510
- char target[GIT_OID_SHA1_HEXSIZE + 1];
510
+ char target[GIT_OID_MAX_HEXSIZE + 1];
511
511
 
512
512
  git_oid_tostr(target, sizeof(target), oid);
513
513
 
@@ -578,7 +578,7 @@ int git_note_commit_remove(
578
578
  {
579
579
  int error;
580
580
  git_tree *tree = NULL;
581
- char target[GIT_OID_SHA1_HEXSIZE + 1];
581
+ char target[GIT_OID_MAX_HEXSIZE + 1];
582
582
 
583
583
  git_oid_tostr(target, sizeof(target), oid);
584
584
 
@@ -665,8 +665,9 @@ void git_note_free(git_note *note)
665
665
  }
666
666
 
667
667
  static int process_entry_path(
668
- const char *entry_path,
669
- git_oid *annotated_object_id)
668
+ git_oid *annotated_object_id,
669
+ git_note_iterator *it,
670
+ const char *entry_path)
670
671
  {
671
672
  int error = 0;
672
673
  size_t i = 0, j = 0, len;
@@ -698,12 +699,12 @@ static int process_entry_path(
698
699
  buf.ptr[j] = '\0';
699
700
  buf.size = j;
700
701
 
701
- if (j != GIT_OID_SHA1_HEXSIZE) {
702
+ if (j != git_oid_hexsize(it->repo->oid_type)) {
702
703
  /* This is not a note entry */
703
704
  goto cleanup;
704
705
  }
705
706
 
706
- error = git_oid__fromstr(annotated_object_id, buf.ptr, GIT_OID_SHA1);
707
+ error = git_oid__fromstr(annotated_object_id, buf.ptr, it->repo->oid_type);
707
708
 
708
709
  cleanup:
709
710
  git_str_dispose(&buf);
@@ -799,7 +800,7 @@ int git_note_next(
799
800
 
800
801
  git_oid_cpy(note_id, &item->id);
801
802
 
802
- if ((error = process_entry_path(item->path, annotated_id)) < 0)
803
+ if ((error = process_entry_path(annotated_id, it, item->path)) < 0)
803
804
  return error;
804
805
 
805
806
  if ((error = git_iterator_advance(NULL, it)) < 0 && error != GIT_ITEROVER)
@@ -108,15 +108,13 @@ int git_object__from_raw(
108
108
  return 0;
109
109
  }
110
110
 
111
- int git_object__from_odb_object(
111
+ int git_object__init_from_odb_object(
112
112
  git_object **object_out,
113
113
  git_repository *repo,
114
114
  git_odb_object *odb_obj,
115
115
  git_object_t type)
116
116
  {
117
- int error;
118
117
  size_t object_size;
119
- git_object_def *def;
120
118
  git_object *object = NULL;
121
119
 
122
120
  GIT_ASSERT_ARG(object_out);
@@ -143,6 +141,23 @@ int git_object__from_odb_object(
143
141
  object->cached.size = odb_obj->cached.size;
144
142
  object->repo = repo;
145
143
 
144
+ *object_out = object;
145
+ return 0;
146
+ }
147
+
148
+ int git_object__from_odb_object(
149
+ git_object **object_out,
150
+ git_repository *repo,
151
+ git_odb_object *odb_obj,
152
+ git_object_t type)
153
+ {
154
+ int error;
155
+ git_object_def *def;
156
+ git_object *object = NULL;
157
+
158
+ if ((error = git_object__init_from_odb_object(&object, repo, odb_obj, type)) < 0)
159
+ return error;
160
+
146
161
  /* Parse raw object data */
147
162
  def = &git_objects_table[odb_obj->cached.type];
148
163
  GIT_ASSERT(def->free && def->parse);
@@ -181,6 +196,7 @@ int git_object_lookup_prefix(
181
196
  git_object *object = NULL;
182
197
  git_odb *odb = NULL;
183
198
  git_odb_object *odb_obj = NULL;
199
+ size_t oid_hexsize;
184
200
  int error = 0;
185
201
 
186
202
  GIT_ASSERT_ARG(repo);
@@ -196,10 +212,12 @@ int git_object_lookup_prefix(
196
212
  if (error < 0)
197
213
  return error;
198
214
 
199
- if (len > GIT_OID_SHA1_HEXSIZE)
200
- len = GIT_OID_SHA1_HEXSIZE;
215
+ oid_hexsize = git_oid_hexsize(repo->oid_type);
216
+
217
+ if (len > oid_hexsize)
218
+ len = oid_hexsize;
201
219
 
202
- if (len == GIT_OID_SHA1_HEXSIZE) {
220
+ if (len == oid_hexsize) {
203
221
  git_cached_obj *cached = NULL;
204
222
 
205
223
  /* We want to match the full id : we can first look up in the cache,
@@ -233,8 +251,9 @@ int git_object_lookup_prefix(
233
251
  error = git_odb_read(&odb_obj, odb, id);
234
252
  }
235
253
  } else {
236
- git_oid short_oid = GIT_OID_SHA1_ZERO;
254
+ git_oid short_oid;
237
255
 
256
+ git_oid_clear(&short_oid, repo->oid_type);
238
257
  git_oid__cpy_prefix(&short_oid, id, len);
239
258
 
240
259
  /* If len < GIT_OID_SHA1_HEXSIZE (a strict short oid was given), we have
@@ -262,7 +281,8 @@ int git_object_lookup_prefix(
262
281
  }
263
282
 
264
283
  int git_object_lookup(git_object **object_out, git_repository *repo, const git_oid *id, git_object_t type) {
265
- return git_object_lookup_prefix(object_out, repo, id, GIT_OID_SHA1_HEXSIZE, type);
284
+ return git_object_lookup_prefix(object_out,
285
+ repo, id, git_oid_hexsize(repo->oid_type), type);
266
286
  }
267
287
 
268
288
  void git_object_free(git_object *object)
@@ -503,31 +523,37 @@ cleanup:
503
523
  static int git_object__short_id(git_str *out, const git_object *obj)
504
524
  {
505
525
  git_repository *repo;
506
- int len = GIT_ABBREV_DEFAULT, error;
507
- git_oid id = GIT_OID_SHA1_ZERO;
526
+ git_oid id;
508
527
  git_odb *odb;
528
+ size_t oid_hexsize;
529
+ int len, error;
509
530
 
510
531
  GIT_ASSERT_ARG(out);
511
532
  GIT_ASSERT_ARG(obj);
512
533
 
513
534
  repo = git_object_owner(obj);
514
535
 
515
- if ((error = git_repository__configmap_lookup(&len, repo, GIT_CONFIGMAP_ABBREV)) < 0)
536
+ git_oid_clear(&id, repo->oid_type);
537
+ oid_hexsize = git_oid_hexsize(repo->oid_type);
538
+
539
+ if ((error = git_repository__abbrev_length(&len, repo)) < 0)
516
540
  return error;
517
541
 
542
+ if ((size_t)len == oid_hexsize) {
543
+ if ((error = git_oid_cpy(&id, &obj->cached.oid)) < 0) {
544
+ return error;
545
+ }
546
+ }
547
+
518
548
  if ((error = git_repository_odb(&odb, repo)) < 0)
519
549
  return error;
520
550
 
521
- while (len < GIT_OID_SHA1_HEXSIZE) {
551
+ while ((size_t)len < oid_hexsize) {
522
552
  /* set up short oid */
523
553
  memcpy(&id.id, &obj->cached.oid.id, (len + 1) / 2);
524
554
  if (len & 1)
525
555
  id.id[len / 2] &= 0xf0;
526
556
 
527
- #ifdef GIT_EXPERIMENTAL_SHA256
528
- id.type = GIT_OID_SHA1;
529
- #endif
530
-
531
557
  error = git_odb_exists_prefix(NULL, odb, &id, len);
532
558
  if (error != GIT_EAMBIGUOUS)
533
559
  break;
@@ -36,6 +36,12 @@ int git_object__from_raw(
36
36
  git_object_t object_type,
37
37
  git_oid_t oid_type);
38
38
 
39
+ int git_object__init_from_odb_object(
40
+ git_object **object_out,
41
+ git_repository *repo,
42
+ git_odb_object *odb_obj,
43
+ git_object_t type);
44
+
39
45
  int git_object__from_odb_object(
40
46
  git_object **object_out,
41
47
  git_repository *repo,
@@ -748,7 +748,8 @@ int git_odb__add_default_backends(
748
748
  git_error_set(GIT_ERROR_ODB, "failed to acquire the odb lock");
749
749
  return -1;
750
750
  }
751
- if (!db->cgraph && git_commit_graph_new(&db->cgraph, objects_dir, false) < 0) {
751
+ if (!db->cgraph &&
752
+ git_commit_graph_new(&db->cgraph, objects_dir, false, db->options.oid_type) < 0) {
752
753
  git_mutex_unlock(&db->lock);
753
754
  return -1;
754
755
  }
@@ -914,7 +915,7 @@ static void odb_free(git_odb *db)
914
915
  git_mutex_unlock(&db->lock);
915
916
 
916
917
  git_commit_graph_free(db->cgraph);
917
- git_vector_free(&db->backends);
918
+ git_vector_dispose(&db->backends);
918
919
  git_cache_dispose(&db->own_cache);
919
920
  git_mutex_free(&db->lock);
920
921
 
@@ -1493,11 +1494,16 @@ static int read_prefix_1(git_odb_object **out, git_odb *db,
1493
1494
 
1494
1495
  if (found && git_oid__cmp(&full_oid, &found_full_oid)) {
1495
1496
  git_str buf = GIT_STR_INIT;
1497
+ const char *idstr;
1496
1498
 
1497
- git_str_printf(&buf, "multiple matches for prefix: %s",
1498
- git_oid_tostr_s(&full_oid));
1499
- git_str_printf(&buf, " %s",
1500
- git_oid_tostr_s(&found_full_oid));
1499
+ if ((idstr = git_oid_tostr_s(&full_oid)) == NULL) {
1500
+ git_str_puts(&buf, "failed to parse object id");
1501
+ } else {
1502
+ git_str_printf(&buf, "multiple matches for prefix: %s", idstr);
1503
+
1504
+ if ((idstr = git_oid_tostr_s(&found_full_oid)) != NULL)
1505
+ git_str_printf(&buf, " %s", idstr);
1506
+ }
1501
1507
 
1502
1508
  error = git_odb__error_ambiguous(buf.ptr);
1503
1509
  git_str_dispose(&buf);
@@ -1603,7 +1609,7 @@ int git_odb_foreach(git_odb *db, git_odb_foreach_cb cb, void *payload)
1603
1609
  }
1604
1610
 
1605
1611
  cleanup:
1606
- git_vector_free(&backends);
1612
+ git_vector_dispose(&backends);
1607
1613
 
1608
1614
  return error;
1609
1615
  }
@@ -1790,7 +1796,8 @@ void git_odb_stream_free(git_odb_stream *stream)
1790
1796
  if (stream == NULL)
1791
1797
  return;
1792
1798
 
1793
- git_hash_ctx_cleanup(stream->hash_ctx);
1799
+ if (stream->hash_ctx)
1800
+ git_hash_ctx_cleanup(stream->hash_ctx);
1794
1801
  git__free(stream->hash_ctx);
1795
1802
  stream->free(stream);
1796
1803
  }
@@ -1916,7 +1923,7 @@ void git_odb_backend_data_free(git_odb_backend *backend, void *data)
1916
1923
  git__free(data);
1917
1924
  }
1918
1925
 
1919
- int git_odb_refresh(struct git_odb *db)
1926
+ int git_odb_refresh(git_odb *db)
1920
1927
  {
1921
1928
  size_t i;
1922
1929
  int error;
@@ -12,7 +12,6 @@
12
12
  #include "hash.h"
13
13
  #include "odb.h"
14
14
  #include "array.h"
15
- #include "oidmap.h"
16
15
  #include "pack-objects.h"
17
16
 
18
17
  #include "git2/odb_backend.h"
@@ -29,9 +28,11 @@ struct memobject {
29
28
  char data[GIT_FLEX_ARRAY];
30
29
  };
31
30
 
31
+ GIT_HASHMAP_OID_SETUP(git_odb_mempack_oidmap, struct memobject *);
32
+
32
33
  struct memory_packer_db {
33
34
  git_odb_backend parent;
34
- git_oidmap *objects;
35
+ git_odb_mempack_oidmap objects;
35
36
  git_array_t(struct memobject *) commits;
36
37
  };
37
38
 
@@ -41,7 +42,7 @@ static int impl__write(git_odb_backend *_backend, const git_oid *oid, const void
41
42
  struct memobject *obj = NULL;
42
43
  size_t alloc_len;
43
44
 
44
- if (git_oidmap_exists(db->objects, oid))
45
+ if (git_odb_mempack_oidmap_contains(&db->objects, oid))
45
46
  return 0;
46
47
 
47
48
  GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, sizeof(struct memobject), len);
@@ -53,7 +54,7 @@ static int impl__write(git_odb_backend *_backend, const git_oid *oid, const void
53
54
  obj->len = len;
54
55
  obj->type = type;
55
56
 
56
- if (git_oidmap_set(db->objects, &obj->oid, obj) < 0)
57
+ if (git_odb_mempack_oidmap_put(&db->objects, &obj->oid, obj) < 0)
57
58
  return -1;
58
59
 
59
60
  if (type == GIT_OBJECT_COMMIT) {
@@ -69,16 +70,17 @@ static int impl__exists(git_odb_backend *backend, const git_oid *oid)
69
70
  {
70
71
  struct memory_packer_db *db = (struct memory_packer_db *)backend;
71
72
 
72
- return git_oidmap_exists(db->objects, oid);
73
+ return git_odb_mempack_oidmap_contains(&db->objects, oid);
73
74
  }
74
75
 
75
76
  static int impl__read(void **buffer_p, size_t *len_p, git_object_t *type_p, git_odb_backend *backend, const git_oid *oid)
76
77
  {
77
78
  struct memory_packer_db *db = (struct memory_packer_db *)backend;
78
79
  struct memobject *obj;
80
+ int error;
79
81
 
80
- if ((obj = git_oidmap_get(db->objects, oid)) == NULL)
81
- return GIT_ENOTFOUND;
82
+ if ((error = git_odb_mempack_oidmap_get(&obj, &db->objects, oid)) != 0)
83
+ return error;
82
84
 
83
85
  *len_p = obj->len;
84
86
  *type_p = obj->type;
@@ -93,9 +95,10 @@ static int impl__read_header(size_t *len_p, git_object_t *type_p, git_odb_backen
93
95
  {
94
96
  struct memory_packer_db *db = (struct memory_packer_db *)backend;
95
97
  struct memobject *obj;
98
+ int error;
96
99
 
97
- if ((obj = git_oidmap_get(db->objects, oid)) == NULL)
98
- return GIT_ENOTFOUND;
100
+ if ((error = git_odb_mempack_oidmap_get(&obj, &db->objects, oid)) != 0)
101
+ return error;
99
102
 
100
103
  *len_p = obj->len;
101
104
  *type_p = obj->type;
@@ -132,6 +135,29 @@ cleanup:
132
135
  return err;
133
136
  }
134
137
 
138
+ int git_mempack_write_thin_pack(git_odb_backend *backend, git_packbuilder *pb)
139
+ {
140
+ struct memory_packer_db *db = (struct memory_packer_db *)backend;
141
+ const git_oid *oid;
142
+ git_hashmap_iter_t iter = GIT_HASHMAP_INIT;
143
+ int err;
144
+
145
+ while (true) {
146
+ err = git_odb_mempack_oidmap_iterate(&iter, &oid, NULL, &db->objects);
147
+
148
+ if (err == GIT_ITEROVER)
149
+ break;
150
+ else if (err != 0)
151
+ return err;
152
+
153
+ err = git_packbuilder_insert(pb, oid, NULL);
154
+ if (err != 0)
155
+ return err;
156
+ }
157
+
158
+ return 0;
159
+ }
160
+
135
161
  int git_mempack_dump(
136
162
  git_buf *pack,
137
163
  git_repository *repo,
@@ -144,14 +170,13 @@ int git_mempack_reset(git_odb_backend *_backend)
144
170
  {
145
171
  struct memory_packer_db *db = (struct memory_packer_db *)_backend;
146
172
  struct memobject *object = NULL;
173
+ git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
147
174
 
148
- git_oidmap_foreach_value(db->objects, object, {
175
+ while (git_odb_mempack_oidmap_iterate(&iter, NULL, &object, &db->objects) == 0)
149
176
  git__free(object);
150
- });
151
177
 
152
178
  git_array_clear(db->commits);
153
-
154
- git_oidmap_clear(db->objects);
179
+ git_odb_mempack_oidmap_clear(&db->objects);
155
180
 
156
181
  return 0;
157
182
  }
@@ -161,7 +186,7 @@ static void impl__free(git_odb_backend *_backend)
161
186
  struct memory_packer_db *db = (struct memory_packer_db *)_backend;
162
187
 
163
188
  git_mempack_reset(_backend);
164
- git_oidmap_free(db->objects);
189
+ git_odb_mempack_oidmap_dispose(&db->objects);
165
190
  git__free(db);
166
191
  }
167
192
 
@@ -174,9 +199,6 @@ int git_mempack_new(git_odb_backend **out)
174
199
  db = git__calloc(1, sizeof(struct memory_packer_db));
175
200
  GIT_ERROR_CHECK_ALLOC(db);
176
201
 
177
- if (git_oidmap_new(&db->objects) < 0)
178
- return -1;
179
-
180
202
  db->parent.version = GIT_ODB_BACKEND_VERSION;
181
203
  db->parent.read = &impl__read;
182
204
  db->parent.write = &impl__write;
@@ -187,3 +209,13 @@ int git_mempack_new(git_odb_backend **out)
187
209
  *out = (git_odb_backend *)db;
188
210
  return 0;
189
211
  }
212
+
213
+ int git_mempack_object_count(size_t *out, git_odb_backend *_backend)
214
+ {
215
+ struct memory_packer_db *db = (struct memory_packer_db *)_backend;
216
+
217
+ GIT_ASSERT_ARG(_backend);
218
+
219
+ *out = (size_t)git_odb_mempack_oidmap_size(&db->objects);
220
+ return 0;
221
+ }