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
@@ -8,12 +8,12 @@
8
8
  #include "config_backend.h"
9
9
 
10
10
  #include "config.h"
11
- #include "config_entries.h"
11
+ #include "config_list.h"
12
12
 
13
13
  typedef struct {
14
14
  git_config_backend parent;
15
15
  git_mutex values_mutex;
16
- git_config_entries *entries;
16
+ git_config_list *config_list;
17
17
  git_config_backend *source;
18
18
  } config_snapshot_backend;
19
19
 
@@ -28,31 +28,27 @@ static int config_snapshot_iterator(
28
28
  struct git_config_backend *backend)
29
29
  {
30
30
  config_snapshot_backend *b = GIT_CONTAINER_OF(backend, config_snapshot_backend, parent);
31
- git_config_entries *entries = NULL;
31
+ git_config_list *config_list = NULL;
32
32
  int error;
33
33
 
34
- if ((error = git_config_entries_dup(&entries, b->entries)) < 0 ||
35
- (error = git_config_entries_iterator_new(iter, entries)) < 0)
34
+ if ((error = git_config_list_dup(&config_list, b->config_list)) < 0 ||
35
+ (error = git_config_list_iterator_new(iter, config_list)) < 0)
36
36
  goto out;
37
37
 
38
38
  out:
39
- /* Let iterator delete duplicated entries when it's done */
40
- git_config_entries_free(entries);
39
+ /* Let iterator delete duplicated config_list when it's done */
40
+ git_config_list_free(config_list);
41
41
  return error;
42
42
  }
43
43
 
44
- /* release the map containing the entry as an equivalent to freeing it */
45
- static void config_snapshot_entry_free(git_config_entry *entry)
46
- {
47
- git_config_entries *entries = (git_config_entries *) entry->payload;
48
- git_config_entries_free(entries);
49
- }
50
-
51
- static int config_snapshot_get(git_config_backend *cfg, const char *key, git_config_entry **out)
44
+ static int config_snapshot_get(
45
+ git_config_backend *cfg,
46
+ const char *key,
47
+ git_config_backend_entry **out)
52
48
  {
53
49
  config_snapshot_backend *b = GIT_CONTAINER_OF(cfg, config_snapshot_backend, parent);
54
- git_config_entries *entries = NULL;
55
- git_config_entry *entry;
50
+ git_config_list *config_list = NULL;
51
+ git_config_list_entry *entry;
56
52
  int error = 0;
57
53
 
58
54
  if (git_mutex_lock(&b->values_mutex) < 0) {
@@ -60,19 +56,16 @@ static int config_snapshot_get(git_config_backend *cfg, const char *key, git_con
60
56
  return -1;
61
57
  }
62
58
 
63
- entries = b->entries;
64
- git_config_entries_incref(entries);
59
+ config_list = b->config_list;
60
+ git_config_list_incref(config_list);
65
61
  git_mutex_unlock(&b->values_mutex);
66
62
 
67
- if ((error = (git_config_entries_get(&entry, entries, key))) < 0) {
68
- git_config_entries_free(entries);
63
+ if ((error = (git_config_list_get(&entry, config_list, key))) < 0) {
64
+ git_config_list_free(config_list);
69
65
  return error;
70
66
  }
71
67
 
72
- entry->free = config_snapshot_entry_free;
73
- entry->payload = entries;
74
- *out = entry;
75
-
68
+ *out = &entry->base;
76
69
  return 0;
77
70
  }
78
71
 
@@ -135,7 +128,7 @@ static void config_snapshot_free(git_config_backend *_backend)
135
128
  if (backend == NULL)
136
129
  return;
137
130
 
138
- git_config_entries_free(backend->entries);
131
+ git_config_list_free(backend->config_list);
139
132
  git_mutex_free(&backend->values_mutex);
140
133
  git__free(backend);
141
134
  }
@@ -143,7 +136,7 @@ static void config_snapshot_free(git_config_backend *_backend)
143
136
  static int config_snapshot_open(git_config_backend *cfg, git_config_level_t level, const git_repository *repo)
144
137
  {
145
138
  config_snapshot_backend *b = GIT_CONTAINER_OF(cfg, config_snapshot_backend, parent);
146
- git_config_entries *entries = NULL;
139
+ git_config_list *config_list = NULL;
147
140
  git_config_iterator *it = NULL;
148
141
  git_config_entry *entry;
149
142
  int error;
@@ -152,12 +145,12 @@ static int config_snapshot_open(git_config_backend *cfg, git_config_level_t leve
152
145
  GIT_UNUSED(level);
153
146
  GIT_UNUSED(repo);
154
147
 
155
- if ((error = git_config_entries_new(&entries)) < 0 ||
148
+ if ((error = git_config_list_new(&config_list)) < 0 ||
156
149
  (error = b->source->iterator(&it, b->source)) < 0)
157
150
  goto out;
158
151
 
159
152
  while ((error = git_config_next(&entry, it)) == 0)
160
- if ((error = git_config_entries_dup_entry(entries, entry)) < 0)
153
+ if ((error = git_config_list_dup_entry(config_list, entry)) < 0)
161
154
  goto out;
162
155
 
163
156
  if (error < 0) {
@@ -166,12 +159,12 @@ static int config_snapshot_open(git_config_backend *cfg, git_config_level_t leve
166
159
  error = 0;
167
160
  }
168
161
 
169
- b->entries = entries;
162
+ b->config_list = config_list;
170
163
 
171
164
  out:
172
165
  git_config_iterator_free(it);
173
166
  if (error)
174
- git_config_entries_free(entries);
167
+ git_config_list_free(config_list);
175
168
  return error;
176
169
  }
177
170
 
@@ -14,7 +14,6 @@
14
14
  #include "buf.h"
15
15
  #include "commit.h"
16
16
  #include "commit_list.h"
17
- #include "oidmap.h"
18
17
  #include "refs.h"
19
18
  #include "repository.h"
20
19
  #include "revwalk.h"
@@ -22,6 +21,7 @@
22
21
  #include "tag.h"
23
22
  #include "vector.h"
24
23
  #include "wildmatch.h"
24
+ #include "hashmap_oid.h"
25
25
 
26
26
  /* Ported from https://github.com/git/git/blob/89dde7882f71f846ccd0359756d27bebc31108de/builtin/describe.c */
27
27
 
@@ -32,20 +32,22 @@ struct commit_name {
32
32
  git_oid sha1;
33
33
  char *path;
34
34
 
35
- /* Khash workaround. They original key has to still be reachable */
35
+ /* The original key for the hashmap */
36
36
  git_oid peeled;
37
37
  };
38
38
 
39
- static void *oidmap_value_bykey(git_oidmap *map, const git_oid *key)
40
- {
41
- return git_oidmap_get(map, key);
42
- }
39
+ GIT_HASHMAP_OID_SETUP(git_describe_oidmap, struct commit_name *);
43
40
 
44
41
  static struct commit_name *find_commit_name(
45
- git_oidmap *names,
42
+ git_describe_oidmap *names,
46
43
  const git_oid *peeled)
47
44
  {
48
- return (struct commit_name *)(oidmap_value_bykey(names, peeled));
45
+ struct commit_name *result;
46
+
47
+ if (git_describe_oidmap_get(&result, names, peeled) == 0)
48
+ return result;
49
+
50
+ return NULL;
49
51
  }
50
52
 
51
53
  static int replace_name(
@@ -92,7 +94,7 @@ static int replace_name(
92
94
 
93
95
  static int add_to_known_names(
94
96
  git_repository *repo,
95
- git_oidmap *names,
97
+ git_describe_oidmap *names,
96
98
  const char *path,
97
99
  const git_oid *peeled,
98
100
  unsigned int prio,
@@ -121,7 +123,7 @@ static int add_to_known_names(
121
123
  e->path = git__strdup(path);
122
124
  git_oid_cpy(&e->peeled, peeled);
123
125
 
124
- if (!found && git_oidmap_set(names, &e->peeled, e) < 0)
126
+ if (!found && git_describe_oidmap_put(names, &e->peeled, e) < 0)
125
127
  return -1;
126
128
  }
127
129
  else
@@ -174,7 +176,7 @@ struct get_name_data
174
176
  {
175
177
  git_describe_options *opts;
176
178
  git_repository *repo;
177
- git_oidmap *names;
179
+ git_describe_oidmap names;
178
180
  git_describe_result *result;
179
181
  };
180
182
 
@@ -240,7 +242,7 @@ static int get_name(const char *refname, void *payload)
240
242
  else
241
243
  prio = 0;
242
244
 
243
- add_to_known_names(data->repo, data->names,
245
+ add_to_known_names(data->repo, &data->names,
244
246
  all ? refname + strlen(GIT_REFS_DIR) : refname + strlen(GIT_REFS_TAGS_DIR),
245
247
  &peeled, prio, &sha1);
246
248
  return 0;
@@ -363,12 +365,15 @@ static int find_unique_abbrev_size(
363
365
  size_t size = abbreviated_size;
364
366
  git_odb *odb;
365
367
  git_oid dummy;
368
+ size_t hexsize;
366
369
  int error;
367
370
 
368
371
  if ((error = git_repository_odb__weakptr(&odb, repo)) < 0)
369
372
  return error;
370
373
 
371
- while (size < GIT_OID_SHA1_HEXSIZE) {
374
+ hexsize = git_oid_hexsize(repo->oid_type);
375
+
376
+ while (size < hexsize) {
372
377
  if ((error = git_odb_exists_prefix(&dummy, odb, oid_in, size)) == 0) {
373
378
  *out = (int) size;
374
379
  return 0;
@@ -383,7 +388,7 @@ static int find_unique_abbrev_size(
383
388
  }
384
389
 
385
390
  /* If we didn't find any shorter prefix, we have to do the whole thing */
386
- *out = GIT_OID_SHA1_HEXSIZE;
391
+ *out = (int)hexsize;
387
392
 
388
393
  return 0;
389
394
  }
@@ -397,7 +402,7 @@ static int show_suffix(
397
402
  {
398
403
  int error, size = 0;
399
404
 
400
- char hex_oid[GIT_OID_SHA1_HEXSIZE];
405
+ char hex_oid[GIT_OID_MAX_HEXSIZE];
401
406
 
402
407
  if ((error = find_unique_abbrev_size(&size, repo, id, abbrev_size)) < 0)
403
408
  return error;
@@ -414,7 +419,7 @@ static int show_suffix(
414
419
  #define MAX_CANDIDATES_TAGS FLAG_BITS - 1
415
420
 
416
421
  static int describe_not_found(const git_oid *oid, const char *message_format) {
417
- char oid_str[GIT_OID_SHA1_HEXSIZE + 1];
422
+ char oid_str[GIT_OID_MAX_HEXSIZE + 1];
418
423
  git_oid_tostr(oid_str, sizeof(oid_str), oid);
419
424
 
420
425
  git_error_set(GIT_ERROR_DESCRIBE, message_format, oid_str);
@@ -448,7 +453,7 @@ static int describe(
448
453
 
449
454
  git_oid_cpy(&data->result->commit_id, git_commit_id(commit));
450
455
 
451
- n = find_commit_name(data->names, git_commit_id(commit));
456
+ n = find_commit_name(&data->names, git_commit_id(commit));
452
457
  if (n && (tags || all || n->prio == 2)) {
453
458
  /*
454
459
  * Exact match to an existing ref.
@@ -489,7 +494,7 @@ static int describe(
489
494
  git_commit_list_node *c = (git_commit_list_node *)git_pqueue_pop(&list);
490
495
  seen_commits++;
491
496
 
492
- n = find_commit_name(data->names, &c->oid);
497
+ n = find_commit_name(&data->names, &c->oid);
493
498
 
494
499
  if (n) {
495
500
  if (!tags && !all && n->prio < 2) {
@@ -525,7 +530,7 @@ static int describe(
525
530
  if (annotated_cnt && (git_pqueue_size(&list) == 0)) {
526
531
  /*
527
532
  if (debug) {
528
- char oid_str[GIT_OID_SHA1_HEXSIZE + 1];
533
+ char oid_str[GIT_OID_MAX_HEXSIZE + 1];
529
534
  git_oid_tostr(oid_str, sizeof(oid_str), &c->oid);
530
535
 
531
536
  fprintf(stderr, "finished search at %s\n", oid_str);
@@ -592,7 +597,7 @@ static int describe(
592
597
  "head", "lightweight", "annotated",
593
598
  };
594
599
 
595
- char oid_str[GIT_OID_SHA1_HEXSIZE + 1];
600
+ char oid_str[GIT_OID_MAX_HEXSIZE + 1];
596
601
 
597
602
  if (debug) {
598
603
  for (cur_match = 0; cur_match < match_cnt; cur_match++) {
@@ -624,7 +629,7 @@ cleanup:
624
629
  git__free(match);
625
630
  }
626
631
  }
627
- git_vector_free(&all_matches);
632
+ git_vector_dispose(&all_matches);
628
633
  git_pqueue_free(&list);
629
634
  git_revwalk_free(walk);
630
635
  return error;
@@ -650,11 +655,12 @@ int git_describe_commit(
650
655
  git_object *committish,
651
656
  git_describe_options *opts)
652
657
  {
653
- struct get_name_data data;
658
+ struct get_name_data data = {0};
654
659
  struct commit_name *name;
655
660
  git_commit *commit;
656
- int error = -1;
657
661
  git_describe_options normalized;
662
+ git_hashmap_iter_t iter = GIT_HASHMAP_INIT;
663
+ int error = -1;
658
664
 
659
665
  GIT_ASSERT_ARG(result);
660
666
  GIT_ASSERT_ARG(committish);
@@ -674,9 +680,6 @@ int git_describe_commit(
674
680
  "git_describe_options");
675
681
  data.opts = &normalized;
676
682
 
677
- if ((error = git_oidmap_new(&data.names)) < 0)
678
- return error;
679
-
680
683
  /** TODO: contains to be implemented */
681
684
 
682
685
  if ((error = git_object_peel((git_object **)(&commit), committish, GIT_OBJECT_COMMIT)) < 0)
@@ -687,7 +690,7 @@ int git_describe_commit(
687
690
  get_name, &data)) < 0)
688
691
  goto cleanup;
689
692
 
690
- if (git_oidmap_size(data.names) == 0 && !normalized.show_commit_oid_as_fallback) {
693
+ if (git_describe_oidmap_size(&data.names) == 0 && !normalized.show_commit_oid_as_fallback) {
691
694
  git_error_set(GIT_ERROR_DESCRIBE, "cannot describe - "
692
695
  "no reference found, cannot describe anything.");
693
696
  error = -1;
@@ -700,13 +703,13 @@ int git_describe_commit(
700
703
  cleanup:
701
704
  git_commit_free(commit);
702
705
 
703
- git_oidmap_foreach_value(data.names, name, {
706
+ while (git_describe_oidmap_iterate(&iter, NULL, &name, &data.names) == 0) {
704
707
  git_tag_free(name->tag);
705
708
  git__free(name->path);
706
709
  git__free(name);
707
- });
710
+ }
708
711
 
709
- git_oidmap_free(data.names);
712
+ git_describe_oidmap_dispose(&data.names);
710
713
 
711
714
  if (error < 0)
712
715
  git_describe_result_free(data.result);
@@ -816,7 +819,7 @@ static int git_describe__format(
816
819
 
817
820
  /* If we didn't find *any* tags, we fall back to the commit's id */
818
821
  if (result->fallback_to_id) {
819
- char hex_oid[GIT_OID_SHA1_HEXSIZE + 1] = {0};
822
+ char hex_oid[GIT_OID_MAX_HEXSIZE + 1] = {0};
820
823
  int size = 0;
821
824
 
822
825
  if ((error = find_unique_abbrev_size(
@@ -16,11 +16,13 @@
16
16
  #include "diff_generate.h"
17
17
 
18
18
  #include "git2/version.h"
19
- #include "git2/email.h"
19
+ #include "git2/sys/email.h"
20
20
 
21
21
  struct patch_id_args {
22
+ git_diff *diff;
22
23
  git_hash_ctx ctx;
23
24
  git_oid result;
25
+ git_oid_t oid_type;
24
26
  int first_file;
25
27
  };
26
28
 
@@ -280,17 +282,19 @@ int git_diff_find_options_init(
280
282
  return 0;
281
283
  }
282
284
 
283
- static int flush_hunk(git_oid *result, git_hash_ctx *ctx)
285
+ static int flush_hunk(git_oid *result, struct patch_id_args *args)
284
286
  {
287
+ git_hash_ctx *ctx = &args->ctx;
285
288
  git_oid hash;
286
289
  unsigned short carry = 0;
287
- int error, i;
290
+ size_t i;
291
+ int error;
288
292
 
289
293
  if ((error = git_hash_final(hash.id, ctx)) < 0 ||
290
294
  (error = git_hash_init(ctx)) < 0)
291
295
  return error;
292
296
 
293
- for (i = 0; i < GIT_OID_SHA1_SIZE; i++) {
297
+ for (i = 0; i < git_oid_size(args->oid_type); i++) {
294
298
  carry += result->id[i] + hash.id[i];
295
299
  result->id[i] = (unsigned char)carry;
296
300
  carry >>= 8;
@@ -338,7 +342,7 @@ static int diff_patchid_print_callback_to_buf(
338
342
 
339
343
  if (line->origin == GIT_DIFF_LINE_FILE_HDR &&
340
344
  !args->first_file &&
341
- (error = flush_hunk(&args->result, &args->ctx) < 0))
345
+ (error = flush_hunk(&args->result, args) < 0))
342
346
  goto out;
343
347
 
344
348
  if ((error = git_hash_update(&args->ctx, buf.ptr, buf.size)) < 0)
@@ -362,14 +366,19 @@ int git_diff_patchid_options_init(git_diff_patchid_options *opts, unsigned int v
362
366
  int git_diff_patchid(git_oid *out, git_diff *diff, git_diff_patchid_options *opts)
363
367
  {
364
368
  struct patch_id_args args;
369
+ git_hash_algorithm_t algorithm;
365
370
  int error;
366
371
 
367
372
  GIT_ERROR_CHECK_VERSION(
368
373
  opts, GIT_DIFF_PATCHID_OPTIONS_VERSION, "git_diff_patchid_options");
369
374
 
375
+ algorithm = git_oid_algorithm(diff->opts.oid_type);
376
+
370
377
  memset(&args, 0, sizeof(args));
378
+ args.diff = diff;
371
379
  args.first_file = 1;
372
- if ((error = git_hash_ctx_init(&args.ctx, GIT_HASH_ALGORITHM_SHA1)) < 0)
380
+ args.oid_type = diff->opts.oid_type;
381
+ if ((error = git_hash_ctx_init(&args.ctx, algorithm)) < 0)
373
382
  goto out;
374
383
 
375
384
  if ((error = git_diff_print(diff,
@@ -378,11 +387,11 @@ int git_diff_patchid(git_oid *out, git_diff *diff, git_diff_patchid_options *opt
378
387
  &args)) < 0)
379
388
  goto out;
380
389
 
381
- if ((error = (flush_hunk(&args.result, &args.ctx))) < 0)
390
+ if ((error = (flush_hunk(&args.result, &args))) < 0)
382
391
  goto out;
383
392
 
384
393
  #ifdef GIT_EXPERIMENTAL_SHA256
385
- args.result.type = GIT_OID_SHA1;
394
+ args.result.type = diff->opts.oid_type;
386
395
  #endif
387
396
 
388
397
  git_oid_cpy(out, &args.result);
@@ -30,15 +30,15 @@ typedef enum {
30
30
  } git_diff_origin_t;
31
31
 
32
32
  struct git_diff {
33
- git_refcount rc;
33
+ git_refcount rc;
34
34
  git_repository *repo;
35
- git_attr_session attrsession;
35
+ git_attr_session attrsession;
36
36
  git_diff_origin_t type;
37
- git_diff_options opts;
38
- git_vector deltas; /* vector of git_diff_delta */
37
+ git_diff_options opts;
38
+ git_vector deltas; /* vector of git_diff_delta */
39
39
  git_pool pool;
40
- git_iterator_t old_src;
41
- git_iterator_t new_src;
40
+ git_iterator_t old_src;
41
+ git_iterator_t new_src;
42
42
  git_diff_perfdata perf;
43
43
 
44
44
  int (*strcomp)(const char *, const char *);
@@ -11,11 +11,11 @@
11
11
 
12
12
  #include "common.h"
13
13
  #include "diff.h"
14
- #include "strmap.h"
15
14
  #include "map.h"
16
15
  #include "config.h"
17
16
  #include "regexp.h"
18
17
  #include "repository.h"
18
+ #include "userdiff.h"
19
19
 
20
20
  typedef enum {
21
21
  DIFF_DRIVER_AUTO = 0,
@@ -43,10 +43,10 @@ struct git_diff_driver {
43
43
  char name[GIT_FLEX_ARRAY];
44
44
  };
45
45
 
46
- #include "userdiff.h"
46
+ GIT_HASHMAP_STR_SETUP(git_diff_driver_map, git_diff_driver *);
47
47
 
48
48
  struct git_diff_driver_registry {
49
- git_strmap *drivers;
49
+ git_diff_driver_map map;
50
50
  };
51
51
 
52
52
  #define FORCE_DIFFABLE (GIT_DIFF_FORCE_TEXT | GIT_DIFF_FORCE_BINARY)
@@ -57,28 +57,21 @@ static git_diff_driver diff_driver_text = { DIFF_DRIVER_TEXT, GIT_DIFF_FORCE
57
57
 
58
58
  git_diff_driver_registry *git_diff_driver_registry_new(void)
59
59
  {
60
- git_diff_driver_registry *reg =
61
- git__calloc(1, sizeof(git_diff_driver_registry));
62
- if (!reg)
63
- return NULL;
64
-
65
- if (git_strmap_new(&reg->drivers) < 0) {
66
- git_diff_driver_registry_free(reg);
67
- return NULL;
68
- }
69
-
70
- return reg;
60
+ return git__calloc(1, sizeof(git_diff_driver_registry));
71
61
  }
72
62
 
73
63
  void git_diff_driver_registry_free(git_diff_driver_registry *reg)
74
64
  {
75
65
  git_diff_driver *drv;
66
+ git_hashmap_iter_t iter = 0;
76
67
 
77
68
  if (!reg)
78
69
  return;
79
70
 
80
- git_strmap_foreach_value(reg->drivers, drv, git_diff_driver_free(drv));
81
- git_strmap_free(reg->drivers);
71
+ while (git_diff_driver_map_iterate(&iter, NULL, &drv, &reg->map) == 0)
72
+ git_diff_driver_free(drv);
73
+
74
+ git_diff_driver_map_dispose(&reg->map);
82
75
  git__free(reg);
83
76
  }
84
77
 
@@ -215,7 +208,7 @@ static int git_diff_driver_builtin(
215
208
  (error = git_regexp_compile(&drv->word_pattern, ddef->words, ddef->flags)) < 0)
216
209
  goto done;
217
210
 
218
- if ((error = git_strmap_set(reg->drivers, drv->name, drv)) < 0)
211
+ if ((error = git_diff_driver_map_put(&reg->map, drv->name, drv)) < 0)
219
212
  goto done;
220
213
 
221
214
  done:
@@ -242,7 +235,7 @@ static int git_diff_driver_load(
242
235
  if ((reg = git_repository_driver_registry(repo)) == NULL)
243
236
  return -1;
244
237
 
245
- if ((drv = git_strmap_get(reg->drivers, driver_name)) != NULL) {
238
+ if (git_diff_driver_map_get(&drv, &reg->map, driver_name) == 0) {
246
239
  *out = drv;
247
240
  return 0;
248
241
  }
@@ -331,7 +324,7 @@ static int git_diff_driver_load(
331
324
  goto done;
332
325
 
333
326
  /* store driver in registry */
334
- if ((error = git_strmap_set(reg->drivers, drv->name, drv)) < 0)
327
+ if ((error = git_diff_driver_map_put(&reg->map, drv->name, drv)) < 0)
335
328
  goto done;
336
329
 
337
330
  *out = drv;
@@ -11,14 +11,14 @@
11
11
 
12
12
  #include "attr_file.h"
13
13
  #include "str.h"
14
+ #include "hashmap.h"
14
15
 
16
+ typedef struct git_diff_driver git_diff_driver;
15
17
  typedef struct git_diff_driver_registry git_diff_driver_registry;
16
18
 
17
19
  git_diff_driver_registry *git_diff_driver_registry_new(void);
18
20
  void git_diff_driver_registry_free(git_diff_driver_registry *);
19
21
 
20
- typedef struct git_diff_driver git_diff_driver;
21
-
22
22
  int git_diff_driver_lookup(git_diff_driver **, git_repository *,
23
23
  git_attr_session *attrsession, const char *);
24
24
  void git_diff_driver_free(git_diff_driver *);
@@ -112,7 +112,7 @@ int git_diff_file_content__init_from_diff(
112
112
  case GIT_DELTA_DELETED:
113
113
  has_data = use_old; break;
114
114
  case GIT_DELTA_UNTRACKED:
115
- has_data = !use_old &&
115
+ has_data = (use_old == (diff->opts.flags & GIT_DIFF_REVERSE)) &&
116
116
  (diff->opts.flags & GIT_DIFF_SHOW_UNTRACKED_CONTENT) != 0;
117
117
  break;
118
118
  case GIT_DELTA_UNREADABLE:
@@ -144,7 +144,7 @@ int git_diff_file_content__init_from_src(
144
144
 
145
145
  if (!src->blob && !src->buf) {
146
146
  fc->flags |= GIT_DIFF_FLAG__NO_DATA;
147
- git_oid_clear(&fc->file->id, GIT_OID_SHA1);
147
+ git_oid_clear(&fc->file->id, opts->oid_type);
148
148
  } else {
149
149
  fc->flags |= GIT_DIFF_FLAG__LOADED;
150
150
  fc->file->flags |= GIT_DIFF_FLAG_VALID_ID;
@@ -154,7 +154,7 @@ int git_diff_file_content__init_from_src(
154
154
  git_blob_dup((git_blob **)&fc->blob, (git_blob *) src->blob);
155
155
  fc->file->size = git_blob_rawsize(src->blob);
156
156
  git_oid_cpy(&fc->file->id, git_blob_id(src->blob));
157
- fc->file->id_abbrev = GIT_OID_SHA1_HEXSIZE;
157
+ fc->file->id_abbrev = (uint16_t)git_oid_hexsize(repo->oid_type);
158
158
 
159
159
  fc->map.len = (size_t)fc->file->size;
160
160
  fc->map.data = (char *)git_blob_rawcontent(src->blob);
@@ -162,10 +162,10 @@ int git_diff_file_content__init_from_src(
162
162
  fc->flags |= GIT_DIFF_FLAG__FREE_BLOB;
163
163
  } else {
164
164
  int error;
165
- if ((error = git_odb__hash(&fc->file->id, src->buf, src->buflen, GIT_OBJECT_BLOB, GIT_OID_SHA1)) < 0)
165
+ if ((error = git_odb__hash(&fc->file->id, src->buf, src->buflen, GIT_OBJECT_BLOB, opts->oid_type)) < 0)
166
166
  return error;
167
167
  fc->file->size = src->buflen;
168
- fc->file->id_abbrev = GIT_OID_SHA1_HEXSIZE;
168
+ fc->file->id_abbrev = (uint16_t)git_oid_hexsize(opts->oid_type);
169
169
 
170
170
  fc->map.len = src->buflen;
171
171
  fc->map.data = (char *)src->buf;
@@ -178,7 +178,7 @@ int git_diff_file_content__init_from_src(
178
178
  static int diff_file_content_commit_to_str(
179
179
  git_diff_file_content *fc, bool check_status)
180
180
  {
181
- char oid[GIT_OID_SHA1_HEXSIZE+1];
181
+ char oid[GIT_OID_MAX_HEXSIZE+1];
182
182
  git_str content = GIT_STR_INIT;
183
183
  const char *status = "";
184
184
 
@@ -420,7 +420,7 @@ static int diff_file_content_load_workdir(
420
420
  if (!error && (fc->file->flags & GIT_DIFF_FLAG_VALID_ID) == 0) {
421
421
  error = git_odb__hash(
422
422
  &fc->file->id, fc->map.data, fc->map.len,
423
- GIT_OBJECT_BLOB, GIT_OID_SHA1);
423
+ GIT_OBJECT_BLOB, diff_opts->oid_type);
424
424
  fc->file->flags |= GIT_DIFF_FLAG_VALID_ID;
425
425
  }
426
426