rugged 0.27.7 → 0.27.10

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 (409) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rugged/version.rb +1 -1
  3. data/vendor/libgit2/AUTHORS +1 -0
  4. data/vendor/libgit2/CMakeLists.txt +99 -51
  5. data/vendor/libgit2/COPYING +28 -0
  6. data/vendor/libgit2/cmake/Modules/AddCFlagIfSupported.cmake +15 -1
  7. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +29 -0
  8. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +96 -0
  9. data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +9 -8
  10. data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
  11. data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
  12. data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +28 -0
  13. data/vendor/libgit2/cmake/Modules/FindIconv.cmake +11 -6
  14. data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +38 -0
  15. data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +37 -0
  16. data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
  17. data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +6 -0
  18. data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +110 -0
  19. data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +53 -0
  20. data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +124 -0
  21. data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +66 -0
  22. data/vendor/libgit2/deps/http-parser/http_parser.c +11 -6
  23. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +21 -0
  24. data/vendor/libgit2/deps/ntlmclient/compat.h +33 -0
  25. data/vendor/libgit2/deps/ntlmclient/crypt.h +64 -0
  26. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +120 -0
  27. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +18 -0
  28. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +145 -0
  29. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +18 -0
  30. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +130 -0
  31. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +21 -0
  32. data/vendor/libgit2/deps/ntlmclient/ntlm.c +1420 -0
  33. data/vendor/libgit2/deps/ntlmclient/ntlm.h +174 -0
  34. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +320 -0
  35. data/vendor/libgit2/deps/ntlmclient/unicode.h +36 -0
  36. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +445 -0
  37. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +201 -0
  38. data/vendor/libgit2/deps/ntlmclient/utf8.h +1257 -0
  39. data/vendor/libgit2/deps/ntlmclient/util.c +21 -0
  40. data/vendor/libgit2/deps/ntlmclient/util.h +14 -0
  41. data/vendor/libgit2/deps/pcre/CMakeLists.txt +140 -0
  42. data/vendor/libgit2/deps/pcre/COPYING +5 -0
  43. data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +22 -0
  44. data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +17 -0
  45. data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +58 -0
  46. data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +29 -0
  47. data/vendor/libgit2/deps/pcre/config.h.in +57 -0
  48. data/vendor/libgit2/deps/pcre/pcre.h +641 -0
  49. data/vendor/libgit2/deps/pcre/pcre_byte_order.c +319 -0
  50. data/vendor/libgit2/deps/pcre/pcre_chartables.c +198 -0
  51. data/vendor/libgit2/deps/pcre/pcre_compile.c +9800 -0
  52. data/vendor/libgit2/deps/pcre/pcre_config.c +190 -0
  53. data/vendor/libgit2/deps/pcre/pcre_dfa_exec.c +3676 -0
  54. data/vendor/libgit2/deps/pcre/pcre_exec.c +7173 -0
  55. data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +245 -0
  56. data/vendor/libgit2/deps/pcre/pcre_get.c +669 -0
  57. data/vendor/libgit2/deps/pcre/pcre_globals.c +86 -0
  58. data/vendor/libgit2/deps/pcre/pcre_internal.h +2787 -0
  59. data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +11913 -0
  60. data/vendor/libgit2/deps/pcre/pcre_maketables.c +156 -0
  61. data/vendor/libgit2/deps/pcre/pcre_newline.c +210 -0
  62. data/vendor/libgit2/deps/pcre/pcre_ord2utf8.c +94 -0
  63. data/vendor/libgit2/deps/pcre/pcre_printint.c +834 -0
  64. data/vendor/libgit2/deps/pcre/pcre_refcount.c +92 -0
  65. data/vendor/libgit2/deps/pcre/pcre_string_utils.c +211 -0
  66. data/vendor/libgit2/deps/pcre/pcre_study.c +1686 -0
  67. data/vendor/libgit2/deps/pcre/pcre_tables.c +727 -0
  68. data/vendor/libgit2/deps/pcre/pcre_ucd.c +3644 -0
  69. data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +301 -0
  70. data/vendor/libgit2/deps/pcre/pcre_version.c +98 -0
  71. data/vendor/libgit2/deps/pcre/pcre_xclass.c +268 -0
  72. data/vendor/libgit2/deps/pcre/pcreposix.c +421 -0
  73. data/vendor/libgit2/deps/pcre/pcreposix.h +117 -0
  74. data/vendor/libgit2/deps/pcre/ucp.h +224 -0
  75. data/vendor/libgit2/deps/winhttp/COPYING.GPL +993 -0
  76. data/vendor/libgit2/deps/winhttp/COPYING.LGPL +502 -0
  77. data/vendor/libgit2/deps/zlib/CMakeLists.txt +1 -0
  78. data/vendor/libgit2/deps/zlib/COPYING +27 -0
  79. data/vendor/libgit2/deps/zlib/adler32.c +0 -7
  80. data/vendor/libgit2/deps/zlib/crc32.c +0 -7
  81. data/vendor/libgit2/include/git2/annotated_commit.h +9 -0
  82. data/vendor/libgit2/include/git2/apply.h +149 -0
  83. data/vendor/libgit2/include/git2/attr.h +20 -13
  84. data/vendor/libgit2/include/git2/blame.h +4 -4
  85. data/vendor/libgit2/include/git2/blob.h +44 -12
  86. data/vendor/libgit2/include/git2/buffer.h +20 -26
  87. data/vendor/libgit2/include/git2/cert.h +135 -0
  88. data/vendor/libgit2/include/git2/checkout.h +53 -21
  89. data/vendor/libgit2/include/git2/cherrypick.h +3 -3
  90. data/vendor/libgit2/include/git2/clone.h +5 -5
  91. data/vendor/libgit2/include/git2/commit.h +25 -3
  92. data/vendor/libgit2/include/git2/common.h +35 -10
  93. data/vendor/libgit2/include/git2/config.h +29 -19
  94. data/vendor/libgit2/include/git2/cred.h +308 -0
  95. data/vendor/libgit2/include/git2/deprecated.h +493 -0
  96. data/vendor/libgit2/include/git2/describe.h +4 -4
  97. data/vendor/libgit2/include/git2/diff.h +177 -135
  98. data/vendor/libgit2/include/git2/errors.h +53 -46
  99. data/vendor/libgit2/include/git2/filter.h +8 -0
  100. data/vendor/libgit2/include/git2/index.h +74 -52
  101. data/vendor/libgit2/include/git2/indexer.h +76 -6
  102. data/vendor/libgit2/include/git2/merge.h +25 -10
  103. data/vendor/libgit2/include/git2/net.h +0 -5
  104. data/vendor/libgit2/include/git2/notes.h +1 -1
  105. data/vendor/libgit2/include/git2/object.h +17 -29
  106. data/vendor/libgit2/include/git2/odb.h +12 -11
  107. data/vendor/libgit2/include/git2/odb_backend.h +10 -9
  108. data/vendor/libgit2/include/git2/oid.h +2 -2
  109. data/vendor/libgit2/include/git2/pack.h +14 -3
  110. data/vendor/libgit2/include/git2/proxy.h +5 -3
  111. data/vendor/libgit2/include/git2/rebase.h +46 -2
  112. data/vendor/libgit2/include/git2/refs.h +34 -16
  113. data/vendor/libgit2/include/git2/remote.h +111 -14
  114. data/vendor/libgit2/include/git2/repository.h +69 -34
  115. data/vendor/libgit2/include/git2/revert.h +1 -1
  116. data/vendor/libgit2/include/git2/revwalk.h +7 -7
  117. data/vendor/libgit2/include/git2/signature.h +2 -2
  118. data/vendor/libgit2/include/git2/stash.h +5 -5
  119. data/vendor/libgit2/include/git2/status.h +26 -17
  120. data/vendor/libgit2/include/git2/submodule.h +23 -6
  121. data/vendor/libgit2/include/git2/sys/alloc.h +18 -18
  122. data/vendor/libgit2/include/git2/sys/commit.h +1 -1
  123. data/vendor/libgit2/include/git2/sys/config.h +13 -13
  124. data/vendor/libgit2/include/git2/sys/cred.h +90 -0
  125. data/vendor/libgit2/include/git2/sys/filter.h +6 -6
  126. data/vendor/libgit2/include/git2/sys/merge.h +3 -3
  127. data/vendor/libgit2/include/git2/sys/odb_backend.h +66 -22
  128. data/vendor/libgit2/include/git2/sys/path.h +14 -5
  129. data/vendor/libgit2/include/git2/sys/refdb_backend.h +76 -40
  130. data/vendor/libgit2/include/git2/sys/repository.h +5 -1
  131. data/vendor/libgit2/include/git2/sys/stream.h +92 -12
  132. data/vendor/libgit2/include/git2/sys/transport.h +129 -83
  133. data/vendor/libgit2/include/git2/tag.h +13 -4
  134. data/vendor/libgit2/include/git2/trace.h +2 -2
  135. data/vendor/libgit2/include/git2/transport.h +11 -311
  136. data/vendor/libgit2/include/git2/tree.h +4 -4
  137. data/vendor/libgit2/include/git2/types.h +25 -106
  138. data/vendor/libgit2/include/git2/version.h +3 -3
  139. data/vendor/libgit2/include/git2/worktree.h +5 -5
  140. data/vendor/libgit2/include/git2.h +4 -0
  141. data/vendor/libgit2/src/CMakeLists.txt +104 -235
  142. data/vendor/libgit2/src/alloc.c +14 -18
  143. data/vendor/libgit2/src/{stdalloc.c → allocators/stdalloc.c} +7 -8
  144. data/vendor/libgit2/src/{stdalloc.h → allocators/stdalloc.h} +4 -4
  145. data/vendor/libgit2/src/allocators/win32_crtdbg.c +118 -0
  146. data/vendor/libgit2/src/{transports/cred.h → allocators/win32_crtdbg.h} +5 -4
  147. data/vendor/libgit2/src/annotated_commit.c +18 -11
  148. data/vendor/libgit2/src/apply.c +535 -28
  149. data/vendor/libgit2/src/apply.h +3 -1
  150. data/vendor/libgit2/src/array.h +2 -2
  151. data/vendor/libgit2/src/attr.c +77 -71
  152. data/vendor/libgit2/src/attr_file.c +203 -117
  153. data/vendor/libgit2/src/attr_file.h +9 -9
  154. data/vendor/libgit2/src/attrcache.c +49 -51
  155. data/vendor/libgit2/src/attrcache.h +2 -1
  156. data/vendor/libgit2/src/blame.c +38 -18
  157. data/vendor/libgit2/src/blame.h +1 -1
  158. data/vendor/libgit2/src/blame_git.c +29 -15
  159. data/vendor/libgit2/src/blob.c +123 -37
  160. data/vendor/libgit2/src/blob.h +19 -2
  161. data/vendor/libgit2/src/branch.c +47 -23
  162. data/vendor/libgit2/src/buf_text.c +7 -6
  163. data/vendor/libgit2/src/buffer.c +60 -53
  164. data/vendor/libgit2/src/cache.c +38 -45
  165. data/vendor/libgit2/src/cache.h +3 -3
  166. data/vendor/libgit2/src/cc-compat.h +20 -3
  167. data/vendor/libgit2/src/checkout.c +77 -67
  168. data/vendor/libgit2/src/cherrypick.c +12 -6
  169. data/vendor/libgit2/src/clone.c +36 -14
  170. data/vendor/libgit2/src/clone.h +4 -0
  171. data/vendor/libgit2/src/commit.c +103 -48
  172. data/vendor/libgit2/src/commit.h +7 -0
  173. data/vendor/libgit2/src/commit_list.c +36 -78
  174. data/vendor/libgit2/src/commit_list.h +2 -2
  175. data/vendor/libgit2/src/common.h +24 -90
  176. data/vendor/libgit2/src/config.c +203 -176
  177. data/vendor/libgit2/src/config.h +8 -20
  178. data/vendor/libgit2/src/config_backend.h +96 -0
  179. data/vendor/libgit2/src/config_cache.c +41 -35
  180. data/vendor/libgit2/src/config_entries.c +229 -0
  181. data/vendor/libgit2/src/config_entries.h +24 -0
  182. data/vendor/libgit2/src/config_file.c +422 -680
  183. data/vendor/libgit2/src/config_mem.c +220 -0
  184. data/vendor/libgit2/src/config_parse.c +96 -68
  185. data/vendor/libgit2/src/config_parse.h +15 -14
  186. data/vendor/libgit2/src/config_snapshot.c +206 -0
  187. data/vendor/libgit2/src/crlf.c +219 -196
  188. data/vendor/libgit2/src/delta.c +25 -18
  189. data/vendor/libgit2/src/describe.c +42 -41
  190. data/vendor/libgit2/src/diff.c +52 -67
  191. data/vendor/libgit2/src/diff.h +2 -1
  192. data/vendor/libgit2/src/diff_driver.c +44 -46
  193. data/vendor/libgit2/src/diff_file.c +16 -14
  194. data/vendor/libgit2/src/diff_file.h +1 -1
  195. data/vendor/libgit2/src/diff_generate.c +158 -103
  196. data/vendor/libgit2/src/diff_generate.h +3 -3
  197. data/vendor/libgit2/src/diff_parse.c +4 -4
  198. data/vendor/libgit2/src/diff_print.c +34 -22
  199. data/vendor/libgit2/src/diff_stats.c +22 -7
  200. data/vendor/libgit2/src/diff_tform.c +18 -16
  201. data/vendor/libgit2/src/diff_xdiff.c +3 -3
  202. data/vendor/libgit2/src/errors.c +51 -39
  203. data/vendor/libgit2/src/errors.h +81 -0
  204. data/vendor/libgit2/src/features.h.in +9 -3
  205. data/vendor/libgit2/src/fetch.c +8 -3
  206. data/vendor/libgit2/src/fetchhead.c +12 -12
  207. data/vendor/libgit2/src/filebuf.c +28 -32
  208. data/vendor/libgit2/src/filebuf.h +2 -2
  209. data/vendor/libgit2/src/filter.c +47 -33
  210. data/vendor/libgit2/src/filter.h +0 -10
  211. data/vendor/libgit2/src/{fileops.c → futils.c} +70 -63
  212. data/vendor/libgit2/src/{fileops.h → futils.h} +6 -6
  213. data/vendor/libgit2/src/global.c +35 -55
  214. data/vendor/libgit2/src/global.h +0 -2
  215. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +48 -0
  216. data/vendor/libgit2/src/hash/sha1/collisiondetect.h +19 -0
  217. data/vendor/libgit2/src/hash/{hash_common_crypto.h → sha1/common_crypto.c} +17 -17
  218. data/vendor/libgit2/src/hash/sha1/common_crypto.h +19 -0
  219. data/vendor/libgit2/src/hash/{hash_generic.c → sha1/generic.c} +22 -10
  220. data/vendor/libgit2/src/hash/{hash_generic.h → sha1/generic.h} +4 -10
  221. data/vendor/libgit2/src/hash/{hash_mbedtls.c → sha1/mbedtls.c} +15 -7
  222. data/vendor/libgit2/src/hash/{hash_mbedtls.h → sha1/mbedtls.h} +6 -7
  223. data/vendor/libgit2/src/hash/sha1/openssl.c +59 -0
  224. data/vendor/libgit2/src/hash/sha1/openssl.h +19 -0
  225. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.c +14 -3
  226. data/vendor/libgit2/src/hash/{hash_win32.c → sha1/win32.c} +47 -37
  227. data/vendor/libgit2/src/hash/{hash_win32.h → sha1/win32.h} +6 -19
  228. data/vendor/libgit2/src/hash/sha1.h +38 -0
  229. data/vendor/libgit2/src/hash.c +61 -0
  230. data/vendor/libgit2/src/hash.h +20 -21
  231. data/vendor/libgit2/src/hashsig.c +5 -5
  232. data/vendor/libgit2/src/idxmap.c +107 -61
  233. data/vendor/libgit2/src/idxmap.h +153 -31
  234. data/vendor/libgit2/src/ignore.c +38 -42
  235. data/vendor/libgit2/src/index.c +264 -199
  236. data/vendor/libgit2/src/index.h +7 -1
  237. data/vendor/libgit2/src/indexer.c +338 -167
  238. data/vendor/libgit2/src/integer.h +71 -26
  239. data/vendor/libgit2/src/iterator.c +134 -62
  240. data/vendor/libgit2/src/iterator.h +15 -0
  241. data/vendor/libgit2/src/mailmap.c +8 -8
  242. data/vendor/libgit2/src/map.h +1 -1
  243. data/vendor/libgit2/src/merge.c +137 -93
  244. data/vendor/libgit2/src/merge_driver.c +11 -11
  245. data/vendor/libgit2/src/merge_file.c +2 -2
  246. data/vendor/libgit2/src/mwindow.c +24 -29
  247. data/vendor/libgit2/src/mwindow.h +4 -4
  248. data/vendor/libgit2/src/net.c +184 -0
  249. data/vendor/libgit2/src/net.h +36 -0
  250. data/vendor/libgit2/src/netops.c +55 -156
  251. data/vendor/libgit2/src/netops.h +3 -23
  252. data/vendor/libgit2/src/notes.c +14 -9
  253. data/vendor/libgit2/src/object.c +120 -69
  254. data/vendor/libgit2/src/object.h +22 -9
  255. data/vendor/libgit2/src/object_api.c +8 -8
  256. data/vendor/libgit2/src/odb.c +111 -88
  257. data/vendor/libgit2/src/odb.h +8 -7
  258. data/vendor/libgit2/src/odb_loose.c +58 -47
  259. data/vendor/libgit2/src/odb_mempack.c +21 -34
  260. data/vendor/libgit2/src/odb_pack.c +17 -13
  261. data/vendor/libgit2/src/offmap.c +53 -35
  262. data/vendor/libgit2/src/offmap.h +108 -21
  263. data/vendor/libgit2/src/oid.c +12 -7
  264. data/vendor/libgit2/src/oidmap.c +49 -47
  265. data/vendor/libgit2/src/oidmap.h +101 -24
  266. data/vendor/libgit2/src/pack-objects.c +87 -86
  267. data/vendor/libgit2/src/pack-objects.h +2 -8
  268. data/vendor/libgit2/src/pack.c +94 -96
  269. data/vendor/libgit2/src/pack.h +16 -18
  270. data/vendor/libgit2/src/parse.c +17 -4
  271. data/vendor/libgit2/src/parse.h +3 -3
  272. data/vendor/libgit2/src/patch.c +3 -3
  273. data/vendor/libgit2/src/patch_generate.c +18 -18
  274. data/vendor/libgit2/src/patch_parse.c +147 -79
  275. data/vendor/libgit2/src/path.c +207 -62
  276. data/vendor/libgit2/src/path.h +14 -0
  277. data/vendor/libgit2/src/pathspec.c +18 -18
  278. data/vendor/libgit2/src/pool.c +26 -22
  279. data/vendor/libgit2/src/pool.h +7 -7
  280. data/vendor/libgit2/src/posix.c +10 -10
  281. data/vendor/libgit2/src/posix.h +12 -1
  282. data/vendor/libgit2/src/proxy.c +8 -3
  283. data/vendor/libgit2/src/push.c +35 -29
  284. data/vendor/libgit2/src/push.h +2 -1
  285. data/vendor/libgit2/src/reader.c +265 -0
  286. data/vendor/libgit2/src/reader.h +107 -0
  287. data/vendor/libgit2/src/rebase.c +97 -38
  288. data/vendor/libgit2/src/refdb.c +15 -3
  289. data/vendor/libgit2/src/refdb_fs.c +318 -222
  290. data/vendor/libgit2/src/reflog.c +13 -15
  291. data/vendor/libgit2/src/refs.c +122 -89
  292. data/vendor/libgit2/src/refs.h +5 -3
  293. data/vendor/libgit2/src/refspec.c +27 -33
  294. data/vendor/libgit2/src/regexp.c +221 -0
  295. data/vendor/libgit2/src/regexp.h +97 -0
  296. data/vendor/libgit2/src/remote.c +229 -178
  297. data/vendor/libgit2/src/remote.h +11 -2
  298. data/vendor/libgit2/src/repository.c +227 -172
  299. data/vendor/libgit2/src/repository.h +52 -40
  300. data/vendor/libgit2/src/reset.c +7 -7
  301. data/vendor/libgit2/src/revert.c +11 -6
  302. data/vendor/libgit2/src/revparse.c +46 -46
  303. data/vendor/libgit2/src/revwalk.c +89 -54
  304. data/vendor/libgit2/src/revwalk.h +20 -0
  305. data/vendor/libgit2/src/settings.c +22 -9
  306. data/vendor/libgit2/src/signature.c +15 -13
  307. data/vendor/libgit2/src/sortedcache.c +22 -36
  308. data/vendor/libgit2/src/sortedcache.h +1 -1
  309. data/vendor/libgit2/src/stash.c +56 -76
  310. data/vendor/libgit2/src/status.c +27 -21
  311. data/vendor/libgit2/src/stream.h +17 -2
  312. data/vendor/libgit2/src/streams/mbedtls.c +100 -80
  313. data/vendor/libgit2/src/streams/mbedtls.h +5 -2
  314. data/vendor/libgit2/src/streams/openssl.c +93 -81
  315. data/vendor/libgit2/src/streams/openssl.h +5 -2
  316. data/vendor/libgit2/src/streams/registry.c +118 -0
  317. data/vendor/libgit2/src/streams/registry.h +19 -0
  318. data/vendor/libgit2/src/streams/socket.c +55 -30
  319. data/vendor/libgit2/src/streams/stransport.c +57 -32
  320. data/vendor/libgit2/src/streams/stransport.h +5 -0
  321. data/vendor/libgit2/src/streams/tls.c +48 -20
  322. data/vendor/libgit2/src/streams/tls.h +12 -4
  323. data/vendor/libgit2/src/strmap.c +47 -74
  324. data/vendor/libgit2/src/strmap.h +108 -33
  325. data/vendor/libgit2/src/submodule.c +190 -169
  326. data/vendor/libgit2/src/submodule.h +1 -1
  327. data/vendor/libgit2/src/sysdir.c +25 -15
  328. data/vendor/libgit2/src/tag.c +39 -26
  329. data/vendor/libgit2/src/tag.h +2 -1
  330. data/vendor/libgit2/src/trace.c +2 -2
  331. data/vendor/libgit2/src/trace.h +2 -2
  332. data/vendor/libgit2/src/trailer.c +46 -32
  333. data/vendor/libgit2/src/transaction.c +30 -29
  334. data/vendor/libgit2/src/transport.c +3 -3
  335. data/vendor/libgit2/src/transports/auth.c +14 -10
  336. data/vendor/libgit2/src/transports/auth.h +10 -3
  337. data/vendor/libgit2/src/transports/auth_negotiate.c +31 -16
  338. data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
  339. data/vendor/libgit2/src/transports/auth_ntlm.c +223 -0
  340. data/vendor/libgit2/src/transports/auth_ntlm.h +35 -0
  341. data/vendor/libgit2/src/transports/cred.c +24 -24
  342. data/vendor/libgit2/src/transports/git.c +25 -30
  343. data/vendor/libgit2/src/transports/http.c +871 -335
  344. data/vendor/libgit2/src/transports/http.h +2 -0
  345. data/vendor/libgit2/src/transports/local.c +28 -28
  346. data/vendor/libgit2/src/transports/smart.c +64 -46
  347. data/vendor/libgit2/src/transports/smart.h +5 -6
  348. data/vendor/libgit2/src/transports/smart_pkt.c +162 -151
  349. data/vendor/libgit2/src/transports/smart_protocol.c +64 -94
  350. data/vendor/libgit2/src/transports/ssh.c +76 -65
  351. data/vendor/libgit2/src/transports/winhttp.c +328 -319
  352. data/vendor/libgit2/src/tree-cache.c +21 -14
  353. data/vendor/libgit2/src/tree.c +119 -112
  354. data/vendor/libgit2/src/tree.h +1 -0
  355. data/vendor/libgit2/src/unix/map.c +3 -3
  356. data/vendor/libgit2/src/unix/posix.h +1 -11
  357. data/vendor/libgit2/src/userdiff.h +3 -1
  358. data/vendor/libgit2/src/util.c +154 -93
  359. data/vendor/libgit2/src/util.h +19 -23
  360. data/vendor/libgit2/src/vector.c +15 -10
  361. data/vendor/libgit2/src/wildmatch.c +320 -0
  362. data/vendor/libgit2/src/wildmatch.h +23 -0
  363. data/vendor/libgit2/src/win32/dir.c +3 -3
  364. data/vendor/libgit2/src/win32/findfile.c +1 -1
  365. data/vendor/libgit2/src/win32/map.c +9 -11
  366. data/vendor/libgit2/src/win32/msvc-compat.h +6 -0
  367. data/vendor/libgit2/src/win32/path_w32.c +113 -9
  368. data/vendor/libgit2/src/win32/path_w32.h +18 -29
  369. data/vendor/libgit2/src/win32/posix.h +1 -4
  370. data/vendor/libgit2/src/win32/posix_w32.c +69 -44
  371. data/vendor/libgit2/src/win32/precompiled.h +0 -2
  372. data/vendor/libgit2/src/win32/thread.c +5 -10
  373. data/vendor/libgit2/src/win32/w32_buffer.c +9 -5
  374. data/vendor/libgit2/src/win32/w32_common.h +39 -0
  375. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +2 -95
  376. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -2
  377. data/vendor/libgit2/src/win32/w32_stack.c +6 -11
  378. data/vendor/libgit2/src/win32/w32_stack.h +3 -3
  379. data/vendor/libgit2/src/win32/w32_util.c +27 -64
  380. data/vendor/libgit2/src/win32/w32_util.h +5 -49
  381. data/vendor/libgit2/src/worktree.c +44 -30
  382. data/vendor/libgit2/src/xdiff/xdiffi.c +5 -5
  383. data/vendor/libgit2/src/xdiff/xhistogram.c +1 -1
  384. data/vendor/libgit2/src/xdiff/xmerge.c +27 -15
  385. data/vendor/libgit2/src/xdiff/xpatience.c +3 -0
  386. data/vendor/libgit2/src/zstream.c +4 -4
  387. metadata +115 -38
  388. data/vendor/libgit2/deps/regex/CMakeLists.txt +0 -2
  389. data/vendor/libgit2/deps/regex/config.h +0 -7
  390. data/vendor/libgit2/deps/regex/regcomp.c +0 -3857
  391. data/vendor/libgit2/deps/regex/regex.c +0 -92
  392. data/vendor/libgit2/deps/regex/regex.h +0 -582
  393. data/vendor/libgit2/deps/regex/regex_internal.c +0 -1744
  394. data/vendor/libgit2/deps/regex/regex_internal.h +0 -819
  395. data/vendor/libgit2/deps/regex/regexec.c +0 -4369
  396. data/vendor/libgit2/include/git2/inttypes.h +0 -309
  397. data/vendor/libgit2/include/git2/sys/time.h +0 -31
  398. data/vendor/libgit2/libgit2.pc.in +0 -13
  399. data/vendor/libgit2/src/config_file.h +0 -73
  400. data/vendor/libgit2/src/fnmatch.c +0 -248
  401. data/vendor/libgit2/src/fnmatch.h +0 -48
  402. data/vendor/libgit2/src/hash/hash_collisiondetect.h +0 -47
  403. data/vendor/libgit2/src/hash/hash_openssl.h +0 -59
  404. data/vendor/libgit2/src/streams/curl.c +0 -385
  405. data/vendor/libgit2/src/streams/curl.h +0 -17
  406. /data/vendor/libgit2/deps/http-parser/{LICENSE-MIT → COPYING} +0 -0
  407. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.h +0 -0
  408. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.c +0 -0
  409. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.h +0 -0
@@ -18,7 +18,8 @@ char git_buf__initbuf[1];
18
18
  char git_buf__oom[1];
19
19
 
20
20
  #define ENSURE_SIZE(b, d) \
21
- if ((d) > (b)->asize && git_buf_grow((b), (d)) < 0)\
21
+ if ((b)->ptr == git_buf__oom || \
22
+ ((d) > (b)->asize && git_buf_grow((b), (d)) < 0))\
22
23
  return -1;
23
24
 
24
25
 
@@ -43,7 +44,7 @@ int git_buf_try_grow(
43
44
  return -1;
44
45
 
45
46
  if (buf->asize == 0 && buf->size != 0) {
46
- giterr_set(GITERR_INVALID, "cannot grow a borrowed buffer");
47
+ git_error_set(GIT_ERROR_INVALID, "cannot grow a borrowed buffer");
47
48
  return GIT_EINVALID;
48
49
  }
49
50
 
@@ -58,22 +59,28 @@ int git_buf_try_grow(
58
59
  new_ptr = NULL;
59
60
  } else {
60
61
  new_size = buf->asize;
62
+ /*
63
+ * Grow the allocated buffer by 1.5 to allow
64
+ * re-use of memory holes resulting from the
65
+ * realloc. If this is still too small, then just
66
+ * use the target size.
67
+ */
68
+ if ((new_size = (new_size << 1) - (new_size >> 1)) < target_size)
69
+ new_size = target_size;
61
70
  new_ptr = buf->ptr;
62
71
  }
63
72
 
64
- /* grow the buffer size by 1.5, until it's big enough
65
- * to fit our target size */
66
- while (new_size < target_size)
67
- new_size = (new_size << 1) - (new_size >> 1);
68
-
69
73
  /* round allocation up to multiple of 8 */
70
74
  new_size = (new_size + 7) & ~7;
71
75
 
72
76
  if (new_size < buf->size) {
73
- if (mark_oom)
77
+ if (mark_oom) {
78
+ if (buf->ptr && buf->ptr != git_buf__initbuf)
79
+ git__free(buf->ptr);
74
80
  buf->ptr = git_buf__oom;
81
+ }
75
82
 
76
- giterr_set_oom();
83
+ git_error_set_oom();
77
84
  return -1;
78
85
  }
79
86
 
@@ -161,7 +168,7 @@ int git_buf_set(git_buf *buf, const void *data, size_t len)
161
168
  git_buf_clear(buf);
162
169
  } else {
163
170
  if (data != buf->ptr) {
164
- GITERR_CHECK_ALLOC_ADD(&alloclen, len, 1);
171
+ GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, len, 1);
165
172
  ENSURE_SIZE(buf, alloclen);
166
173
  memmove(buf->ptr, data, len);
167
174
  }
@@ -192,7 +199,7 @@ int git_buf_sets(git_buf *buf, const char *string)
192
199
  int git_buf_putc(git_buf *buf, char c)
193
200
  {
194
201
  size_t new_size;
195
- GITERR_CHECK_ALLOC_ADD(&new_size, buf->size, 2);
202
+ GIT_ERROR_CHECK_ALLOC_ADD(&new_size, buf->size, 2);
196
203
  ENSURE_SIZE(buf, new_size);
197
204
  buf->ptr[buf->size++] = c;
198
205
  buf->ptr[buf->size] = '\0';
@@ -202,8 +209,8 @@ int git_buf_putc(git_buf *buf, char c)
202
209
  int git_buf_putcn(git_buf *buf, char c, size_t len)
203
210
  {
204
211
  size_t new_size;
205
- GITERR_CHECK_ALLOC_ADD(&new_size, buf->size, len);
206
- GITERR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
212
+ GIT_ERROR_CHECK_ALLOC_ADD(&new_size, buf->size, len);
213
+ GIT_ERROR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
207
214
  ENSURE_SIZE(buf, new_size);
208
215
  memset(buf->ptr + buf->size, c, len);
209
216
  buf->size += len;
@@ -218,8 +225,8 @@ int git_buf_put(git_buf *buf, const char *data, size_t len)
218
225
 
219
226
  assert(data);
220
227
 
221
- GITERR_CHECK_ALLOC_ADD(&new_size, buf->size, len);
222
- GITERR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
228
+ GIT_ERROR_CHECK_ALLOC_ADD(&new_size, buf->size, len);
229
+ GIT_ERROR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
223
230
  ENSURE_SIZE(buf, new_size);
224
231
  memmove(buf->ptr + buf->size, data, len);
225
232
  buf->size += len;
@@ -244,9 +251,9 @@ int git_buf_encode_base64(git_buf *buf, const char *data, size_t len)
244
251
  const uint8_t *read = (const uint8_t *)data;
245
252
  size_t blocks = (len / 3) + !!extra, alloclen;
246
253
 
247
- GITERR_CHECK_ALLOC_ADD(&blocks, blocks, 1);
248
- GITERR_CHECK_ALLOC_MULTIPLY(&alloclen, blocks, 4);
249
- GITERR_CHECK_ALLOC_ADD(&alloclen, alloclen, buf->size);
254
+ GIT_ERROR_CHECK_ALLOC_ADD(&blocks, blocks, 1);
255
+ GIT_ERROR_CHECK_ALLOC_MULTIPLY(&alloclen, blocks, 4);
256
+ GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, alloclen, buf->size);
250
257
 
251
258
  ENSURE_SIZE(buf, alloclen);
252
259
  write = (uint8_t *)&buf->ptr[buf->size];
@@ -306,13 +313,13 @@ int git_buf_decode_base64(git_buf *buf, const char *base64, size_t len)
306
313
  size_t orig_size = buf->size, new_size;
307
314
 
308
315
  if (len % 4) {
309
- giterr_set(GITERR_INVALID, "invalid base64 input");
316
+ git_error_set(GIT_ERROR_INVALID, "invalid base64 input");
310
317
  return -1;
311
318
  }
312
319
 
313
320
  assert(len % 4 == 0);
314
- GITERR_CHECK_ALLOC_ADD(&new_size, (len / 4 * 3), buf->size);
315
- GITERR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
321
+ GIT_ERROR_CHECK_ALLOC_ADD(&new_size, (len / 4 * 3), buf->size);
322
+ GIT_ERROR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
316
323
  ENSURE_SIZE(buf, new_size);
317
324
 
318
325
  for (i = 0; i < len; i += 4) {
@@ -323,7 +330,7 @@ int git_buf_decode_base64(git_buf *buf, const char *base64, size_t len)
323
330
  buf->size = orig_size;
324
331
  buf->ptr[buf->size] = '\0';
325
332
 
326
- giterr_set(GITERR_INVALID, "invalid base64 input");
333
+ git_error_set(GIT_ERROR_INVALID, "invalid base64 input");
327
334
  return -1;
328
335
  }
329
336
 
@@ -343,9 +350,9 @@ int git_buf_encode_base85(git_buf *buf, const char *data, size_t len)
343
350
  {
344
351
  size_t blocks = (len / 4) + !!(len % 4), alloclen;
345
352
 
346
- GITERR_CHECK_ALLOC_MULTIPLY(&alloclen, blocks, 5);
347
- GITERR_CHECK_ALLOC_ADD(&alloclen, alloclen, buf->size);
348
- GITERR_CHECK_ALLOC_ADD(&alloclen, alloclen, 1);
353
+ GIT_ERROR_CHECK_ALLOC_MULTIPLY(&alloclen, blocks, 5);
354
+ GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, alloclen, buf->size);
355
+ GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, alloclen, 1);
349
356
 
350
357
  ENSURE_SIZE(buf, alloclen);
351
358
 
@@ -408,12 +415,12 @@ int git_buf_decode_base85(
408
415
 
409
416
  if (base85_len % 5 ||
410
417
  output_len > base85_len * 4 / 5) {
411
- giterr_set(GITERR_INVALID, "invalid base85 input");
418
+ git_error_set(GIT_ERROR_INVALID, "invalid base85 input");
412
419
  return -1;
413
420
  }
414
421
 
415
- GITERR_CHECK_ALLOC_ADD(&new_size, output_len, buf->size);
416
- GITERR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
422
+ GIT_ERROR_CHECK_ALLOC_ADD(&new_size, output_len, buf->size);
423
+ GIT_ERROR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
417
424
  ENSURE_SIZE(buf, new_size);
418
425
 
419
426
  while (output_len) {
@@ -440,7 +447,7 @@ int git_buf_decode_base85(
440
447
 
441
448
  acc += de;
442
449
 
443
- cnt = (output_len < 4) ? output_len : 4;
450
+ cnt = (output_len < 4) ? (int)output_len : 4;
444
451
  output_len -= cnt;
445
452
  do {
446
453
  acc = (acc << 8) | (acc >> 24);
@@ -456,7 +463,7 @@ on_error:
456
463
  buf->size = orig_size;
457
464
  buf->ptr[buf->size] = '\0';
458
465
 
459
- giterr_set(GITERR_INVALID, "invalid base85 input");
466
+ git_error_set(GIT_ERROR_INVALID, "invalid base85 input");
460
467
  return -1;
461
468
  }
462
469
 
@@ -469,8 +476,8 @@ int git_buf_decode_percent(
469
476
  {
470
477
  size_t str_pos, new_size;
471
478
 
472
- GITERR_CHECK_ALLOC_ADD(&new_size, buf->size, str_len);
473
- GITERR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
479
+ GIT_ERROR_CHECK_ALLOC_ADD(&new_size, buf->size, str_len);
480
+ GIT_ERROR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
474
481
  ENSURE_SIZE(buf, new_size);
475
482
 
476
483
  for (str_pos = 0; str_pos < str_len; buf->size++, str_pos++) {
@@ -495,8 +502,8 @@ int git_buf_vprintf(git_buf *buf, const char *format, va_list ap)
495
502
  size_t expected_size, new_size;
496
503
  int len;
497
504
 
498
- GITERR_CHECK_ALLOC_MULTIPLY(&expected_size, strlen(format), 2);
499
- GITERR_CHECK_ALLOC_ADD(&expected_size, expected_size, buf->size);
505
+ GIT_ERROR_CHECK_ALLOC_MULTIPLY(&expected_size, strlen(format), 2);
506
+ GIT_ERROR_CHECK_ALLOC_ADD(&expected_size, expected_size, buf->size);
500
507
  ENSURE_SIZE(buf, expected_size);
501
508
 
502
509
  while (1) {
@@ -522,8 +529,8 @@ int git_buf_vprintf(git_buf *buf, const char *format, va_list ap)
522
529
  break;
523
530
  }
524
531
 
525
- GITERR_CHECK_ALLOC_ADD(&new_size, buf->size, len);
526
- GITERR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
532
+ GIT_ERROR_CHECK_ALLOC_ADD(&new_size, buf->size, len);
533
+ GIT_ERROR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
527
534
  ENSURE_SIZE(buf, new_size);
528
535
  }
529
536
 
@@ -667,10 +674,10 @@ int git_buf_join_n(git_buf *buf, char separator, int nbuf, ...)
667
674
 
668
675
  segment_len = strlen(segment);
669
676
 
670
- GITERR_CHECK_ALLOC_ADD(&total_size, total_size, segment_len);
677
+ GIT_ERROR_CHECK_ALLOC_ADD(&total_size, total_size, segment_len);
671
678
 
672
679
  if (segment_len == 0 || segment[segment_len - 1] != separator)
673
- GITERR_CHECK_ALLOC_ADD(&total_size, total_size, 1);
680
+ GIT_ERROR_CHECK_ALLOC_ADD(&total_size, total_size, 1);
674
681
  }
675
682
  va_end(ap);
676
683
 
@@ -678,7 +685,7 @@ int git_buf_join_n(git_buf *buf, char separator, int nbuf, ...)
678
685
  if (total_size == 0)
679
686
  return 0;
680
687
 
681
- GITERR_CHECK_ALLOC_ADD(&total_size, total_size, 1);
688
+ GIT_ERROR_CHECK_ALLOC_ADD(&total_size, total_size, 1);
682
689
  if (git_buf_grow_by(buf, total_size) < 0)
683
690
  return -1;
684
691
 
@@ -758,9 +765,9 @@ int git_buf_join(
758
765
  if (str_a >= buf->ptr && str_a < buf->ptr + buf->size)
759
766
  offset_a = str_a - buf->ptr;
760
767
 
761
- GITERR_CHECK_ALLOC_ADD(&alloc_len, strlen_a, strlen_b);
762
- GITERR_CHECK_ALLOC_ADD(&alloc_len, alloc_len, need_sep);
763
- GITERR_CHECK_ALLOC_ADD(&alloc_len, alloc_len, 1);
768
+ GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, strlen_a, strlen_b);
769
+ GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, alloc_len, need_sep);
770
+ GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, alloc_len, 1);
764
771
  ENSURE_SIZE(buf, alloc_len);
765
772
 
766
773
  /* fix up internal pointers */
@@ -810,11 +817,11 @@ int git_buf_join3(
810
817
  sep_b = (str_b[len_b - 1] != separator);
811
818
  }
812
819
 
813
- GITERR_CHECK_ALLOC_ADD(&len_total, len_a, sep_a);
814
- GITERR_CHECK_ALLOC_ADD(&len_total, len_total, len_b);
815
- GITERR_CHECK_ALLOC_ADD(&len_total, len_total, sep_b);
816
- GITERR_CHECK_ALLOC_ADD(&len_total, len_total, len_c);
817
- GITERR_CHECK_ALLOC_ADD(&len_total, len_total, 1);
820
+ GIT_ERROR_CHECK_ALLOC_ADD(&len_total, len_a, sep_a);
821
+ GIT_ERROR_CHECK_ALLOC_ADD(&len_total, len_total, len_b);
822
+ GIT_ERROR_CHECK_ALLOC_ADD(&len_total, len_total, sep_b);
823
+ GIT_ERROR_CHECK_ALLOC_ADD(&len_total, len_total, len_c);
824
+ GIT_ERROR_CHECK_ALLOC_ADD(&len_total, len_total, 1);
818
825
  ENSURE_SIZE(buf, len_total);
819
826
 
820
827
  tgt = buf->ptr;
@@ -877,8 +884,8 @@ int git_buf_splice(
877
884
  /* Ported from git.git
878
885
  * https://github.com/git/git/blob/16eed7c/strbuf.c#L159-176
879
886
  */
880
- GITERR_CHECK_ALLOC_ADD(&new_size, (buf->size - nb_to_remove), nb_to_insert);
881
- GITERR_CHECK_ALLOC_ADD(&alloc_size, new_size, 1);
887
+ GIT_ERROR_CHECK_ALLOC_ADD(&new_size, (buf->size - nb_to_remove), nb_to_insert);
888
+ GIT_ERROR_CHECK_ALLOC_ADD(&alloc_size, new_size, 1);
882
889
  ENSURE_SIZE(buf, alloc_size);
883
890
 
884
891
  memmove(splice_loc + nb_to_insert,
@@ -995,14 +1002,14 @@ int git_buf_unquote(git_buf *buf)
995
1002
  /* \xyz digits convert to the char*/
996
1003
  case '0': case '1': case '2': case '3':
997
1004
  if (j == buf->size-3) {
998
- giterr_set(GITERR_INVALID,
1005
+ git_error_set(GIT_ERROR_INVALID,
999
1006
  "truncated quoted character \\%c", ch);
1000
1007
  return -1;
1001
1008
  }
1002
1009
 
1003
1010
  if (buf->ptr[j+1] < '0' || buf->ptr[j+1] > '7' ||
1004
1011
  buf->ptr[j+2] < '0' || buf->ptr[j+2] > '7') {
1005
- giterr_set(GITERR_INVALID,
1012
+ git_error_set(GIT_ERROR_INVALID,
1006
1013
  "truncated quoted character \\%c%c%c",
1007
1014
  buf->ptr[j], buf->ptr[j+1], buf->ptr[j+2]);
1008
1015
  return -1;
@@ -1015,7 +1022,7 @@ int git_buf_unquote(git_buf *buf)
1015
1022
  break;
1016
1023
 
1017
1024
  default:
1018
- giterr_set(GITERR_INVALID, "invalid quoted character \\%c", ch);
1025
+ git_error_set(GIT_ERROR_INVALID, "invalid quoted character \\%c", ch);
1019
1026
  return -1;
1020
1027
  }
1021
1028
  }
@@ -1029,6 +1036,6 @@ int git_buf_unquote(git_buf *buf)
1029
1036
  return 0;
1030
1037
 
1031
1038
  invalid:
1032
- giterr_set(GITERR_INVALID, "invalid quoted line");
1039
+ git_error_set(GIT_ERROR_INVALID, "invalid quoted line");
1033
1040
  return -1;
1034
1041
  }
@@ -20,20 +20,20 @@ ssize_t git_cache__max_storage = (256 * 1024 * 1024);
20
20
  git_atomic_ssize git_cache__current_storage = {0};
21
21
 
22
22
  static size_t git_cache__max_object_size[8] = {
23
- 0, /* GIT_OBJ__EXT1 */
24
- 4096, /* GIT_OBJ_COMMIT */
25
- 4096, /* GIT_OBJ_TREE */
26
- 0, /* GIT_OBJ_BLOB */
27
- 4096, /* GIT_OBJ_TAG */
28
- 0, /* GIT_OBJ__EXT2 */
29
- 0, /* GIT_OBJ_OFS_DELTA */
30
- 0 /* GIT_OBJ_REF_DELTA */
23
+ 0, /* GIT_OBJECT__EXT1 */
24
+ 4096, /* GIT_OBJECT_COMMIT */
25
+ 4096, /* GIT_OBJECT_TREE */
26
+ 0, /* GIT_OBJECT_BLOB */
27
+ 4096, /* GIT_OBJECT_TAG */
28
+ 0, /* GIT_OBJECT__EXT2 */
29
+ 0, /* GIT_OBJECT_OFS_DELTA */
30
+ 0 /* GIT_OBJECT_REF_DELTA */
31
31
  };
32
32
 
33
- int git_cache_set_max_object_size(git_otype type, size_t size)
33
+ int git_cache_set_max_object_size(git_object_t type, size_t size)
34
34
  {
35
35
  if (type < 0 || (size_t)type >= ARRAY_SIZE(git_cache__max_object_size)) {
36
- giterr_set(GITERR_INVALID, "type out of range");
36
+ git_error_set(GIT_ERROR_INVALID, "type out of range");
37
37
  return -1;
38
38
  }
39
39
 
@@ -65,12 +65,15 @@ void git_cache_dump_stats(git_cache *cache)
65
65
  int git_cache_init(git_cache *cache)
66
66
  {
67
67
  memset(cache, 0, sizeof(*cache));
68
- cache->map = git_oidmap_alloc();
69
- GITERR_CHECK_ALLOC(cache->map);
68
+
69
+ if ((git_oidmap_new(&cache->map)) < 0)
70
+ return -1;
71
+
70
72
  if (git_rwlock_init(&cache->lock)) {
71
- giterr_set(GITERR_OS, "failed to initialize cache rwlock");
73
+ git_error_set(GIT_ERROR_OS, "failed to initialize cache rwlock");
72
74
  return -1;
73
75
  }
76
+
74
77
  return 0;
75
78
  }
76
79
 
@@ -101,7 +104,7 @@ void git_cache_clear(git_cache *cache)
101
104
  git_rwlock_wrunlock(&cache->lock);
102
105
  }
103
106
 
104
- void git_cache_free(git_cache *cache)
107
+ void git_cache_dispose(git_cache *cache)
105
108
  {
106
109
  git_cache_clear(cache);
107
110
  git_oidmap_free(cache->map);
@@ -112,35 +115,37 @@ void git_cache_free(git_cache *cache)
112
115
  /* Called with lock */
113
116
  static void cache_evict_entries(git_cache *cache)
114
117
  {
115
- uint32_t seed = rand();
116
- size_t evict_count = 8;
118
+ size_t evict_count = git_cache_size(cache) / 2048, i;
117
119
  ssize_t evicted_memory = 0;
118
120
 
121
+ if (evict_count < 8)
122
+ evict_count = 8;
123
+
119
124
  /* do not infinite loop if there's not enough entries to evict */
120
125
  if (evict_count > git_cache_size(cache)) {
121
126
  clear_cache(cache);
122
127
  return;
123
128
  }
124
129
 
130
+ i = 0;
125
131
  while (evict_count > 0) {
126
- khiter_t pos = seed++ % git_oidmap_end(cache->map);
127
-
128
- if (git_oidmap_has_data(cache->map, pos)) {
129
- git_cached_obj *evict = git_oidmap_value_at(cache->map, pos);
132
+ git_cached_obj *evict;
133
+ const git_oid *key;
130
134
 
131
- evict_count--;
132
- evicted_memory += evict->size;
133
- git_cached_obj_decref(evict);
135
+ if (git_oidmap_iterate((void **) &evict, cache->map, &i, &key) == GIT_ITEROVER)
136
+ break;
134
137
 
135
- git_oidmap_delete_at(cache->map, pos);
136
- }
138
+ evict_count--;
139
+ evicted_memory += evict->size;
140
+ git_oidmap_delete(cache->map, key);
141
+ git_cached_obj_decref(evict);
137
142
  }
138
143
 
139
144
  cache->used_memory -= evicted_memory;
140
145
  git_atomic_ssize_add(&git_cache__current_storage, -evicted_memory);
141
146
  }
142
147
 
143
- static bool cache_should_store(git_otype object_type, size_t object_size)
148
+ static bool cache_should_store(git_object_t object_type, size_t object_size)
144
149
  {
145
150
  size_t max_size = git_cache__max_object_size[object_type];
146
151
  return git_cache__enabled && object_size < max_size;
@@ -148,16 +153,12 @@ static bool cache_should_store(git_otype object_type, size_t object_size)
148
153
 
149
154
  static void *cache_get(git_cache *cache, const git_oid *oid, unsigned int flags)
150
155
  {
151
- khiter_t pos;
152
- git_cached_obj *entry = NULL;
156
+ git_cached_obj *entry;
153
157
 
154
158
  if (!git_cache__enabled || git_rwlock_rdlock(&cache->lock) < 0)
155
159
  return NULL;
156
160
 
157
- pos = git_oidmap_lookup_index(cache->map, oid);
158
- if (git_oidmap_valid_index(cache->map, pos)) {
159
- entry = git_oidmap_value_at(cache->map, pos);
160
-
161
+ if ((entry = git_oidmap_get(cache->map, oid)) != NULL) {
161
162
  if (flags && entry->flags != flags) {
162
163
  entry = NULL;
163
164
  } else {
@@ -172,7 +173,7 @@ static void *cache_get(git_cache *cache, const git_oid *oid, unsigned int flags)
172
173
 
173
174
  static void *cache_store(git_cache *cache, git_cached_obj *entry)
174
175
  {
175
- khiter_t pos;
176
+ git_cached_obj *stored_entry;
176
177
 
177
178
  git_cached_obj_incref(entry);
178
179
 
@@ -191,14 +192,9 @@ static void *cache_store(git_cache *cache, git_cached_obj *entry)
191
192
  if (git_cache__current_storage.val > git_cache__max_storage)
192
193
  cache_evict_entries(cache);
193
194
 
194
- pos = git_oidmap_lookup_index(cache->map, &entry->oid);
195
-
196
195
  /* not found */
197
- if (!git_oidmap_valid_index(cache->map, pos)) {
198
- int rval;
199
-
200
- git_oidmap_insert(cache->map, &entry->oid, entry, &rval);
201
- if (rval >= 0) {
196
+ if ((stored_entry = git_oidmap_get(cache->map, &entry->oid)) == NULL) {
197
+ if (git_oidmap_set(cache->map, &entry->oid, entry) == 0) {
202
198
  git_cached_obj_incref(entry);
203
199
  cache->used_memory += entry->size;
204
200
  git_atomic_ssize_add(&git_cache__current_storage, (ssize_t)entry->size);
@@ -206,19 +202,16 @@ static void *cache_store(git_cache *cache, git_cached_obj *entry)
206
202
  }
207
203
  /* found */
208
204
  else {
209
- git_cached_obj *stored_entry = git_oidmap_value_at(cache->map, pos);
210
-
211
205
  if (stored_entry->flags == entry->flags) {
212
206
  git_cached_obj_decref(entry);
213
207
  git_cached_obj_incref(stored_entry);
214
208
  entry = stored_entry;
215
209
  } else if (stored_entry->flags == GIT_CACHE_STORE_RAW &&
216
- entry->flags == GIT_CACHE_STORE_PARSED) {
210
+ entry->flags == GIT_CACHE_STORE_PARSED) {
217
211
  git_cached_obj_decref(stored_entry);
218
212
  git_cached_obj_incref(entry);
219
213
 
220
- git_oidmap_set_key_at(cache->map, pos, &entry->oid);
221
- git_oidmap_set_value_at(cache->map, pos, entry);
214
+ git_oidmap_set(cache->map, &entry->oid, entry);
222
215
  } else {
223
216
  /* NO OP */
224
217
  }
@@ -24,7 +24,7 @@ enum {
24
24
 
25
25
  typedef struct {
26
26
  git_oid oid;
27
- int16_t type; /* git_otype value */
27
+ int16_t type; /* git_object_t value */
28
28
  uint16_t flags; /* GIT_CACHE_STORE value */
29
29
  size_t size;
30
30
  git_atomic refcount;
@@ -40,10 +40,10 @@ extern bool git_cache__enabled;
40
40
  extern ssize_t git_cache__max_storage;
41
41
  extern git_atomic_ssize git_cache__current_storage;
42
42
 
43
- int git_cache_set_max_object_size(git_otype type, size_t size);
43
+ int git_cache_set_max_object_size(git_object_t type, size_t size);
44
44
 
45
45
  int git_cache_init(git_cache *cache);
46
- void git_cache_free(git_cache *cache);
46
+ void git_cache_dispose(git_cache *cache);
47
47
  void git_cache_clear(git_cache *cache);
48
48
 
49
49
  void *git_cache_store_raw(git_cache *cache, git_odb_object *entry);
@@ -47,12 +47,29 @@
47
47
 
48
48
  /* Define the printf format specifer to use for size_t output */
49
49
  #if defined(_MSC_VER) || defined(__MINGW32__)
50
- # define PRIuZ "Iu"
51
- # define PRIxZ "Ix"
52
- # define PRIdZ "Id"
50
+
51
+ /* Visual Studio 2012 and prior lack PRId64 entirely */
52
+ # ifndef PRId64
53
+ # define PRId64 "I64d"
54
+ # endif
55
+
56
+ /* The first block is needed to avoid warnings on MingW amd64 */
57
+ # if (SIZE_MAX == ULLONG_MAX)
58
+ # define PRIuZ "I64u"
59
+ # define PRIxZ "I64x"
60
+ # define PRIXZ "I64X"
61
+ # define PRIdZ "I64d"
62
+ # else
63
+ # define PRIuZ "Iu"
64
+ # define PRIxZ "Ix"
65
+ # define PRIXZ "IX"
66
+ # define PRIdZ "Id"
67
+ # endif
68
+
53
69
  #else
54
70
  # define PRIuZ "zu"
55
71
  # define PRIxZ "zx"
72
+ # define PRIXZ "zX"
56
73
  # define PRIdZ "zd"
57
74
  #endif
58
75