rugged 1.7.2 → 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 (361) 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 +23 -10
  5. data/vendor/libgit2/COPYING +195 -1
  6. data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
  7. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  8. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +1 -1
  9. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
  10. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +17 -8
  11. data/vendor/libgit2/cmake/SelectHashes.cmake +28 -11
  12. data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
  13. data/vendor/libgit2/cmake/SelectSSH.cmake +22 -17
  14. data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
  15. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  16. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  17. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  18. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  19. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  20. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  21. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
  22. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  23. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  24. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  25. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
  26. data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
  27. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  28. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  29. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  30. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  31. data/vendor/libgit2/deps/pcre/CMakeLists.txt +1 -0
  32. data/vendor/libgit2/deps/xdiff/xmerge.c +2 -2
  33. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  34. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  35. data/vendor/libgit2/deps/zlib/adler32.c +5 -27
  36. data/vendor/libgit2/deps/zlib/crc32.c +94 -167
  37. data/vendor/libgit2/deps/zlib/deflate.c +358 -435
  38. data/vendor/libgit2/deps/zlib/deflate.h +41 -10
  39. data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
  40. data/vendor/libgit2/deps/zlib/infback.c +17 -30
  41. data/vendor/libgit2/deps/zlib/inffast.c +1 -4
  42. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  43. data/vendor/libgit2/deps/zlib/inflate.c +36 -102
  44. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  45. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  46. data/vendor/libgit2/deps/zlib/trees.c +287 -352
  47. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  48. data/vendor/libgit2/deps/zlib/zlib.h +202 -202
  49. data/vendor/libgit2/deps/zlib/zutil.c +18 -44
  50. data/vendor/libgit2/deps/zlib/zutil.h +13 -33
  51. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  52. data/vendor/libgit2/include/git2/apply.h +27 -6
  53. data/vendor/libgit2/include/git2/attr.h +17 -4
  54. data/vendor/libgit2/include/git2/blame.h +133 -28
  55. data/vendor/libgit2/include/git2/blob.h +71 -28
  56. data/vendor/libgit2/include/git2/branch.h +22 -15
  57. data/vendor/libgit2/include/git2/buffer.h +6 -4
  58. data/vendor/libgit2/include/git2/cert.h +2 -1
  59. data/vendor/libgit2/include/git2/checkout.h +83 -32
  60. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  61. data/vendor/libgit2/include/git2/clone.h +25 -9
  62. data/vendor/libgit2/include/git2/commit.h +132 -3
  63. data/vendor/libgit2/include/git2/common.h +120 -63
  64. data/vendor/libgit2/include/git2/config.h +93 -23
  65. data/vendor/libgit2/include/git2/credential.h +30 -2
  66. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  67. data/vendor/libgit2/include/git2/deprecated.h +133 -3
  68. data/vendor/libgit2/include/git2/describe.h +13 -1
  69. data/vendor/libgit2/include/git2/diff.h +38 -8
  70. data/vendor/libgit2/include/git2/email.h +9 -29
  71. data/vendor/libgit2/include/git2/errors.h +46 -73
  72. data/vendor/libgit2/include/git2/filter.h +14 -7
  73. data/vendor/libgit2/include/git2/global.h +8 -1
  74. data/vendor/libgit2/include/git2/graph.h +3 -2
  75. data/vendor/libgit2/include/git2/ignore.h +10 -0
  76. data/vendor/libgit2/include/git2/index.h +99 -14
  77. data/vendor/libgit2/include/git2/indexer.h +21 -4
  78. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  79. data/vendor/libgit2/include/git2/merge.h +46 -1
  80. data/vendor/libgit2/include/git2/message.h +2 -2
  81. data/vendor/libgit2/include/git2/net.h +3 -1
  82. data/vendor/libgit2/include/git2/notes.h +9 -6
  83. data/vendor/libgit2/include/git2/object.h +9 -8
  84. data/vendor/libgit2/include/git2/odb.h +91 -49
  85. data/vendor/libgit2/include/git2/odb_backend.h +80 -52
  86. data/vendor/libgit2/include/git2/oid.h +23 -24
  87. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  88. data/vendor/libgit2/include/git2/pack.h +13 -1
  89. data/vendor/libgit2/include/git2/patch.h +2 -3
  90. data/vendor/libgit2/include/git2/pathspec.h +9 -0
  91. data/vendor/libgit2/include/git2/proxy.h +10 -0
  92. data/vendor/libgit2/include/git2/rebase.h +9 -6
  93. data/vendor/libgit2/include/git2/refdb.h +2 -2
  94. data/vendor/libgit2/include/git2/reflog.h +3 -2
  95. data/vendor/libgit2/include/git2/refs.h +9 -6
  96. data/vendor/libgit2/include/git2/refspec.h +14 -4
  97. data/vendor/libgit2/include/git2/remote.h +94 -18
  98. data/vendor/libgit2/include/git2/repository.h +57 -21
  99. data/vendor/libgit2/include/git2/reset.h +16 -3
  100. data/vendor/libgit2/include/git2/revert.h +9 -4
  101. data/vendor/libgit2/include/git2/revparse.h +3 -3
  102. data/vendor/libgit2/include/git2/revwalk.h +3 -2
  103. data/vendor/libgit2/include/git2/signature.h +46 -1
  104. data/vendor/libgit2/include/git2/stash.h +17 -3
  105. data/vendor/libgit2/include/git2/status.h +10 -6
  106. data/vendor/libgit2/include/git2/stdint.h +87 -85
  107. data/vendor/libgit2/include/git2/strarray.h +2 -3
  108. data/vendor/libgit2/include/git2/submodule.h +20 -9
  109. data/vendor/libgit2/include/git2/sys/alloc.h +12 -0
  110. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  111. data/vendor/libgit2/include/git2/sys/commit_graph.h +103 -62
  112. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  113. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  114. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  115. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  116. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  117. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  118. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  119. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  120. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  121. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  122. data/vendor/libgit2/include/git2/sys/midx.h +43 -4
  123. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
  124. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  125. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  126. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  127. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  128. data/vendor/libgit2/include/git2/sys/remote.h +8 -1
  129. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  130. data/vendor/libgit2/include/git2/sys/stream.h +11 -2
  131. data/vendor/libgit2/include/git2/sys/transport.h +24 -3
  132. data/vendor/libgit2/include/git2/tag.h +3 -1
  133. data/vendor/libgit2/include/git2/trace.h +9 -3
  134. data/vendor/libgit2/include/git2/transaction.h +3 -2
  135. data/vendor/libgit2/include/git2/transport.h +11 -3
  136. data/vendor/libgit2/include/git2/tree.h +16 -5
  137. data/vendor/libgit2/include/git2/types.h +19 -3
  138. data/vendor/libgit2/include/git2/version.h +44 -8
  139. data/vendor/libgit2/include/git2/worktree.h +16 -6
  140. data/vendor/libgit2/src/CMakeLists.txt +6 -4
  141. data/vendor/libgit2/src/cli/CMakeLists.txt +2 -2
  142. data/vendor/libgit2/src/cli/cmd.c +1 -1
  143. data/vendor/libgit2/src/cli/cmd.h +4 -0
  144. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  145. data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
  146. data/vendor/libgit2/src/cli/cmd_clone.c +5 -7
  147. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  148. data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
  149. data/vendor/libgit2/src/cli/cmd_help.c +6 -7
  150. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  151. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  152. data/vendor/libgit2/src/cli/common.c +168 -0
  153. data/vendor/libgit2/src/cli/common.h +63 -0
  154. data/vendor/libgit2/src/cli/error.h +1 -1
  155. data/vendor/libgit2/src/cli/main.c +52 -24
  156. data/vendor/libgit2/src/cli/opt.c +29 -3
  157. data/vendor/libgit2/src/cli/opt.h +21 -3
  158. data/vendor/libgit2/src/cli/opt_usage.c +102 -33
  159. data/vendor/libgit2/src/cli/opt_usage.h +6 -1
  160. data/vendor/libgit2/src/cli/progress.c +51 -2
  161. data/vendor/libgit2/src/cli/progress.h +12 -0
  162. data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
  163. data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
  164. data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
  165. data/vendor/libgit2/src/libgit2/CMakeLists.txt +26 -8
  166. data/vendor/libgit2/src/libgit2/apply.c +10 -13
  167. data/vendor/libgit2/src/libgit2/attr.c +30 -13
  168. data/vendor/libgit2/src/libgit2/attr_file.c +7 -2
  169. data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
  170. data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
  171. data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
  172. data/vendor/libgit2/src/libgit2/blame.c +130 -44
  173. data/vendor/libgit2/src/libgit2/blame.h +1 -0
  174. data/vendor/libgit2/src/libgit2/cache.c +22 -17
  175. data/vendor/libgit2/src/libgit2/cache.h +7 -9
  176. data/vendor/libgit2/src/libgit2/checkout.c +34 -24
  177. data/vendor/libgit2/src/libgit2/checkout.h +0 -2
  178. data/vendor/libgit2/src/libgit2/cherrypick.c +1 -2
  179. data/vendor/libgit2/src/libgit2/clone.c +186 -166
  180. data/vendor/libgit2/src/libgit2/clone.h +4 -1
  181. data/vendor/libgit2/src/libgit2/commit.c +92 -0
  182. data/vendor/libgit2/src/libgit2/commit_graph.c +67 -56
  183. data/vendor/libgit2/src/libgit2/commit_graph.h +1 -2
  184. data/vendor/libgit2/src/libgit2/config.c +389 -298
  185. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  186. data/vendor/libgit2/src/libgit2/config.h +9 -4
  187. data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
  188. data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
  189. data/vendor/libgit2/src/libgit2/config_file.c +99 -88
  190. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  191. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  192. data/vendor/libgit2/src/libgit2/config_mem.c +194 -40
  193. data/vendor/libgit2/src/libgit2/config_parse.c +10 -9
  194. data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
  195. data/vendor/libgit2/src/libgit2/describe.c +24 -24
  196. data/vendor/libgit2/src/libgit2/diff.c +1 -1
  197. data/vendor/libgit2/src/libgit2/diff_driver.c +12 -19
  198. data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
  199. data/vendor/libgit2/src/libgit2/diff_generate.c +3 -3
  200. data/vendor/libgit2/src/libgit2/diff_parse.c +2 -2
  201. data/vendor/libgit2/src/libgit2/diff_print.c +65 -9
  202. data/vendor/libgit2/src/libgit2/diff_tform.c +36 -8
  203. data/vendor/libgit2/src/libgit2/email.c +1 -0
  204. data/vendor/libgit2/src/libgit2/fetch.c +5 -3
  205. data/vendor/libgit2/src/libgit2/filter.c +5 -5
  206. data/vendor/libgit2/src/libgit2/git2.rc +3 -3
  207. data/vendor/libgit2/src/libgit2/grafts.c +18 -20
  208. data/vendor/libgit2/src/libgit2/grafts.h +0 -1
  209. data/vendor/libgit2/src/libgit2/graph.c +1 -1
  210. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  211. data/vendor/libgit2/src/libgit2/ignore.c +9 -5
  212. data/vendor/libgit2/src/libgit2/index.c +68 -90
  213. data/vendor/libgit2/src/libgit2/index.h +2 -2
  214. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  215. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  216. data/vendor/libgit2/src/libgit2/indexer.c +34 -38
  217. data/vendor/libgit2/src/libgit2/iterator.c +14 -8
  218. data/vendor/libgit2/src/libgit2/libgit2.c +153 -368
  219. data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
  220. data/vendor/libgit2/src/libgit2/merge.c +42 -37
  221. data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
  222. data/vendor/libgit2/src/libgit2/midx.c +28 -15
  223. data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
  224. data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
  225. data/vendor/libgit2/src/libgit2/object.c +6 -5
  226. data/vendor/libgit2/src/libgit2/odb.c +5 -4
  227. data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
  228. data/vendor/libgit2/src/libgit2/odb_pack.c +13 -5
  229. data/vendor/libgit2/src/libgit2/oid.c +32 -5
  230. data/vendor/libgit2/src/libgit2/oid.h +11 -0
  231. data/vendor/libgit2/src/libgit2/pack-objects.c +58 -31
  232. data/vendor/libgit2/src/libgit2/pack-objects.h +12 -4
  233. data/vendor/libgit2/src/libgit2/pack.c +30 -24
  234. data/vendor/libgit2/src/libgit2/pack.h +15 -10
  235. data/vendor/libgit2/src/libgit2/patch_parse.c +2 -2
  236. data/vendor/libgit2/src/libgit2/path.c +1 -1
  237. data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
  238. data/vendor/libgit2/src/libgit2/push.c +79 -28
  239. data/vendor/libgit2/src/libgit2/push.h +1 -0
  240. data/vendor/libgit2/src/libgit2/refdb_fs.c +128 -61
  241. data/vendor/libgit2/src/libgit2/reflog.c +1 -2
  242. data/vendor/libgit2/src/libgit2/reflog.h +2 -0
  243. data/vendor/libgit2/src/libgit2/refs.c +26 -7
  244. data/vendor/libgit2/src/libgit2/refs.h +6 -1
  245. data/vendor/libgit2/src/libgit2/refspec.c +28 -1
  246. data/vendor/libgit2/src/libgit2/refspec.h +8 -0
  247. data/vendor/libgit2/src/libgit2/remote.c +121 -61
  248. data/vendor/libgit2/src/libgit2/repository.c +231 -51
  249. data/vendor/libgit2/src/libgit2/repository.h +10 -6
  250. data/vendor/libgit2/src/libgit2/revert.c +1 -2
  251. data/vendor/libgit2/src/libgit2/revparse.c +2 -2
  252. data/vendor/libgit2/src/libgit2/revwalk.c +13 -10
  253. data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
  254. data/vendor/libgit2/src/libgit2/settings.c +468 -0
  255. data/vendor/libgit2/src/libgit2/settings.h +6 -2
  256. data/vendor/libgit2/src/libgit2/signature.c +132 -15
  257. data/vendor/libgit2/src/libgit2/signature.h +0 -1
  258. data/vendor/libgit2/src/libgit2/status.c +1 -1
  259. data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -60
  260. data/vendor/libgit2/src/libgit2/streams/openssl.c +32 -7
  261. data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
  262. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
  263. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
  264. data/vendor/libgit2/src/libgit2/streams/stransport.c +39 -7
  265. data/vendor/libgit2/src/libgit2/submodule.c +106 -63
  266. data/vendor/libgit2/src/libgit2/submodule.h +6 -7
  267. data/vendor/libgit2/src/libgit2/tag.c +1 -1
  268. data/vendor/libgit2/src/libgit2/trailer.c +6 -6
  269. data/vendor/libgit2/src/libgit2/transaction.c +26 -20
  270. data/vendor/libgit2/src/libgit2/transaction.h +4 -1
  271. data/vendor/libgit2/src/libgit2/transport.c +4 -1
  272. data/vendor/libgit2/src/libgit2/transports/credential.c +1 -1
  273. data/vendor/libgit2/src/libgit2/transports/http.c +1 -2
  274. data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
  275. data/vendor/libgit2/src/libgit2/transports/httpclient.c +112 -72
  276. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  277. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  278. data/vendor/libgit2/src/libgit2/transports/local.c +8 -7
  279. data/vendor/libgit2/src/libgit2/transports/smart.c +20 -8
  280. data/vendor/libgit2/src/libgit2/transports/smart.h +4 -2
  281. data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +2 -2
  282. data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +55 -10
  283. data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
  284. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  285. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  286. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1126 -0
  287. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  288. data/vendor/libgit2/src/libgit2/transports/winhttp.c +35 -7
  289. data/vendor/libgit2/src/libgit2/tree.c +34 -26
  290. data/vendor/libgit2/src/libgit2/tree.h +3 -2
  291. data/vendor/libgit2/src/libgit2/worktree.c +14 -17
  292. data/vendor/libgit2/src/util/CMakeLists.txt +4 -6
  293. data/vendor/libgit2/src/util/alloc.c +4 -1
  294. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  295. data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
  296. data/vendor/libgit2/src/util/allocators/stdalloc.c +0 -10
  297. data/vendor/libgit2/src/util/array.h +18 -17
  298. data/vendor/libgit2/src/util/cc-compat.h +2 -0
  299. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  300. data/vendor/libgit2/src/util/date.c +22 -14
  301. data/vendor/libgit2/src/util/date.h +12 -0
  302. data/vendor/libgit2/src/util/errors.c +401 -0
  303. data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
  304. data/vendor/libgit2/src/util/fs_path.c +15 -4
  305. data/vendor/libgit2/src/util/fs_path.h +23 -0
  306. data/vendor/libgit2/src/util/futils.c +6 -5
  307. data/vendor/libgit2/src/util/futils.h +13 -4
  308. data/vendor/libgit2/src/util/git2_features.h.in +12 -1
  309. data/vendor/libgit2/src/util/git2_util.h +6 -0
  310. data/vendor/libgit2/src/util/hash/openssl.c +152 -0
  311. data/vendor/libgit2/src/util/hash/openssl.h +17 -1
  312. data/vendor/libgit2/src/util/hash/sha.h +4 -1
  313. data/vendor/libgit2/src/util/hashmap.h +424 -0
  314. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  315. data/vendor/libgit2/src/util/integer.h +3 -1
  316. data/vendor/libgit2/src/util/net.c +13 -7
  317. data/vendor/libgit2/src/util/net.h +2 -0
  318. data/vendor/libgit2/src/util/pool.c +1 -1
  319. data/vendor/libgit2/src/util/pool.h +5 -0
  320. data/vendor/libgit2/src/util/pqueue.h +1 -1
  321. data/vendor/libgit2/src/util/process.h +222 -0
  322. data/vendor/libgit2/src/util/rand.c +1 -7
  323. data/vendor/libgit2/src/util/regexp.c +1 -1
  324. data/vendor/libgit2/src/util/sortedcache.c +14 -13
  325. data/vendor/libgit2/src/util/sortedcache.h +3 -3
  326. data/vendor/libgit2/src/util/str.c +2 -2
  327. data/vendor/libgit2/src/util/strlist.c +108 -0
  328. data/vendor/libgit2/src/util/strlist.h +36 -0
  329. data/vendor/libgit2/src/util/unix/posix.h +0 -2
  330. data/vendor/libgit2/src/util/unix/process.c +629 -0
  331. data/vendor/libgit2/src/util/unix/realpath.c +23 -5
  332. data/vendor/libgit2/src/util/util.c +2 -2
  333. data/vendor/libgit2/src/util/util.h +4 -38
  334. data/vendor/libgit2/src/util/vector.c +3 -3
  335. data/vendor/libgit2/src/util/vector.h +2 -2
  336. data/vendor/libgit2/src/util/win32/posix_w32.c +29 -6
  337. data/vendor/libgit2/src/util/win32/process.c +506 -0
  338. metadata +45 -28
  339. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  340. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  341. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  342. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  343. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  344. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  345. data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
  346. data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
  347. data/vendor/libgit2/src/libgit2/errors.c +0 -293
  348. data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
  349. data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
  350. data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
  351. data/vendor/libgit2/src/libgit2/offmap.c +0 -101
  352. data/vendor/libgit2/src/libgit2/offmap.h +0 -133
  353. data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
  354. data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
  355. data/vendor/libgit2/src/libgit2/threadstate.c +0 -97
  356. data/vendor/libgit2/src/libgit2/threadstate.h +0 -22
  357. data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
  358. data/vendor/libgit2/src/util/khash.h +0 -615
  359. data/vendor/libgit2/src/util/strmap.c +0 -100
  360. data/vendor/libgit2/src/util/strmap.h +0 -131
  361. /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
@@ -32,7 +32,6 @@
32
32
  #include "commit.h"
33
33
  #include "oidarray.h"
34
34
  #include "merge_driver.h"
35
- #include "oidmap.h"
36
35
  #include "array.h"
37
36
 
38
37
  #include "git2/types.h"
@@ -124,11 +123,11 @@ static int merge_bases_many(git_commit_list **out, git_revwalk **walk_out, git_r
124
123
  *out = result;
125
124
  *walk_out = walk;
126
125
 
127
- git_vector_free(&list);
126
+ git_vector_dispose(&list);
128
127
  return 0;
129
128
 
130
129
  on_error:
131
- git_vector_free(&list);
130
+ git_vector_dispose(&list);
132
131
  git_revwalk_free(walk);
133
132
  return error;
134
133
  }
@@ -511,7 +510,7 @@ static int remove_redundant(git_revwalk *walk, git_vector *commits, uint32_t min
511
510
  done:
512
511
  git__free(redundant);
513
512
  git__free(filled_index);
514
- git_vector_free(&work);
513
+ git_vector_dispose(&work);
515
514
  return error;
516
515
  }
517
516
 
@@ -570,7 +569,7 @@ int git_merge__bases_many(
570
569
  if ((error = clear_commit_marks(one, ALL_FLAGS)) < 0 ||
571
570
  (error = clear_commit_marks_many(twos, ALL_FLAGS)) < 0 ||
572
571
  (error = remove_redundant(walk, &redundant, minimum_generation)) < 0) {
573
- git_vector_free(&redundant);
572
+ git_vector_dispose(&redundant);
574
573
  return error;
575
574
  }
576
575
 
@@ -579,7 +578,7 @@ int git_merge__bases_many(
579
578
  git_commit_list_insert_by_date(two, &result);
580
579
  }
581
580
 
582
- git_vector_free(&redundant);
581
+ git_vector_dispose(&redundant);
583
582
  }
584
583
 
585
584
  *out = result;
@@ -1144,24 +1143,28 @@ typedef struct {
1144
1143
  size_t first_entry;
1145
1144
  } deletes_by_oid_queue;
1146
1145
 
1147
- static void deletes_by_oid_free(git_oidmap *map) {
1146
+ GIT_HASHMAP_OID_SETUP(git_merge_deletes_oidmap, deletes_by_oid_queue *);
1147
+
1148
+ static void deletes_by_oid_dispose(git_merge_deletes_oidmap *map)
1149
+ {
1150
+ git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
1148
1151
  deletes_by_oid_queue *queue;
1149
1152
 
1150
1153
  if (!map)
1151
1154
  return;
1152
1155
 
1153
- git_oidmap_foreach_value(map, queue, {
1156
+ while (git_merge_deletes_oidmap_iterate(&iter, NULL, &queue, map) == 0)
1154
1157
  git_array_clear(queue->arr);
1155
- });
1156
- git_oidmap_free(map);
1158
+
1159
+ git_merge_deletes_oidmap_dispose(map);
1157
1160
  }
1158
1161
 
1159
- static int deletes_by_oid_enqueue(git_oidmap *map, git_pool *pool, const git_oid *id, size_t idx)
1162
+ static int deletes_by_oid_enqueue(git_merge_deletes_oidmap *map, git_pool *pool, const git_oid *id, size_t idx)
1160
1163
  {
1161
1164
  deletes_by_oid_queue *queue;
1162
1165
  size_t *array_entry;
1163
1166
 
1164
- if ((queue = git_oidmap_get(map, id)) == NULL) {
1167
+ if (git_merge_deletes_oidmap_get(&queue, map, id) != 0) {
1165
1168
  queue = git_pool_malloc(pool, sizeof(deletes_by_oid_queue));
1166
1169
  GIT_ERROR_CHECK_ALLOC(queue);
1167
1170
 
@@ -1169,7 +1172,7 @@ static int deletes_by_oid_enqueue(git_oidmap *map, git_pool *pool, const git_oid
1169
1172
  queue->next_pos = 0;
1170
1173
  queue->first_entry = idx;
1171
1174
 
1172
- if (git_oidmap_set(map, id, queue) < 0)
1175
+ if (git_merge_deletes_oidmap_put(map, id, queue) < 0)
1173
1176
  return -1;
1174
1177
  } else {
1175
1178
  array_entry = git_array_alloc(queue->arr);
@@ -1180,13 +1183,14 @@ static int deletes_by_oid_enqueue(git_oidmap *map, git_pool *pool, const git_oid
1180
1183
  return 0;
1181
1184
  }
1182
1185
 
1183
- static int deletes_by_oid_dequeue(size_t *idx, git_oidmap *map, const git_oid *id)
1186
+ static int deletes_by_oid_dequeue(size_t *idx, git_merge_deletes_oidmap *map, const git_oid *id)
1184
1187
  {
1185
1188
  deletes_by_oid_queue *queue;
1186
1189
  size_t *array_entry;
1190
+ int error;
1187
1191
 
1188
- if ((queue = git_oidmap_get(map, id)) == NULL)
1189
- return GIT_ENOTFOUND;
1192
+ if ((error = git_merge_deletes_oidmap_get(&queue, map, id)) != 0)
1193
+ return error;
1190
1194
 
1191
1195
  if (queue->next_pos == 0) {
1192
1196
  *idx = queue->first_entry;
@@ -1209,15 +1213,10 @@ static int merge_diff_mark_similarity_exact(
1209
1213
  {
1210
1214
  size_t i, j;
1211
1215
  git_merge_diff *conflict_src, *conflict_tgt;
1212
- git_oidmap *ours_deletes_by_oid = NULL, *theirs_deletes_by_oid = NULL;
1216
+ git_merge_deletes_oidmap ours_deletes_by_oid = GIT_HASHMAP_INIT,
1217
+ theirs_deletes_by_oid = GIT_HASHMAP_INIT;
1213
1218
  int error = 0;
1214
1219
 
1215
- if (git_oidmap_new(&ours_deletes_by_oid) < 0 ||
1216
- git_oidmap_new(&theirs_deletes_by_oid) < 0) {
1217
- error = -1;
1218
- goto done;
1219
- }
1220
-
1221
1220
  /* Build a map of object ids to conflicts */
1222
1221
  git_vector_foreach(&diff_list->conflicts, i, conflict_src) {
1223
1222
  /* Items can be the source of a rename iff they have an item in the
@@ -1225,14 +1224,21 @@ static int merge_diff_mark_similarity_exact(
1225
1224
  if (!GIT_MERGE_INDEX_ENTRY_EXISTS(conflict_src->ancestor_entry))
1226
1225
  continue;
1227
1226
 
1227
+ /*
1228
+ * Ignore empty files because it has always the same blob sha1
1229
+ * and will lead to incorrect matches between all entries.
1230
+ */
1231
+ if (git_oid_equal(&conflict_src->ancestor_entry.id, &git_oid__empty_blob_sha1))
1232
+ continue;
1233
+
1228
1234
  if (!GIT_MERGE_INDEX_ENTRY_EXISTS(conflict_src->our_entry)) {
1229
- error = deletes_by_oid_enqueue(ours_deletes_by_oid, &diff_list->pool, &conflict_src->ancestor_entry.id, i);
1235
+ error = deletes_by_oid_enqueue(&ours_deletes_by_oid, &diff_list->pool, &conflict_src->ancestor_entry.id, i);
1230
1236
  if (error < 0)
1231
1237
  goto done;
1232
1238
  }
1233
1239
 
1234
1240
  if (!GIT_MERGE_INDEX_ENTRY_EXISTS(conflict_src->their_entry)) {
1235
- error = deletes_by_oid_enqueue(theirs_deletes_by_oid, &diff_list->pool, &conflict_src->ancestor_entry.id, i);
1241
+ error = deletes_by_oid_enqueue(&theirs_deletes_by_oid, &diff_list->pool, &conflict_src->ancestor_entry.id, i);
1236
1242
  if (error < 0)
1237
1243
  goto done;
1238
1244
  }
@@ -1243,7 +1249,7 @@ static int merge_diff_mark_similarity_exact(
1243
1249
  continue;
1244
1250
 
1245
1251
  if (GIT_MERGE_INDEX_ENTRY_EXISTS(conflict_tgt->our_entry)) {
1246
- if (deletes_by_oid_dequeue(&i, ours_deletes_by_oid, &conflict_tgt->our_entry.id) == 0) {
1252
+ if (deletes_by_oid_dequeue(&i, &ours_deletes_by_oid, &conflict_tgt->our_entry.id) == 0) {
1247
1253
  similarity_ours[i].similarity = 100;
1248
1254
  similarity_ours[i].other_idx = j;
1249
1255
 
@@ -1253,7 +1259,7 @@ static int merge_diff_mark_similarity_exact(
1253
1259
  }
1254
1260
 
1255
1261
  if (GIT_MERGE_INDEX_ENTRY_EXISTS(conflict_tgt->their_entry)) {
1256
- if (deletes_by_oid_dequeue(&i, theirs_deletes_by_oid, &conflict_tgt->their_entry.id) == 0) {
1262
+ if (deletes_by_oid_dequeue(&i, &theirs_deletes_by_oid, &conflict_tgt->their_entry.id) == 0) {
1257
1263
  similarity_theirs[i].similarity = 100;
1258
1264
  similarity_theirs[i].other_idx = j;
1259
1265
 
@@ -1264,8 +1270,8 @@ static int merge_diff_mark_similarity_exact(
1264
1270
  }
1265
1271
 
1266
1272
  done:
1267
- deletes_by_oid_free(ours_deletes_by_oid);
1268
- deletes_by_oid_free(theirs_deletes_by_oid);
1273
+ deletes_by_oid_dispose(&ours_deletes_by_oid);
1274
+ deletes_by_oid_dispose(&theirs_deletes_by_oid);
1269
1275
 
1270
1276
  return error;
1271
1277
  }
@@ -1859,9 +1865,9 @@ void git_merge_diff_list__free(git_merge_diff_list *diff_list)
1859
1865
  if (!diff_list)
1860
1866
  return;
1861
1867
 
1862
- git_vector_free(&diff_list->staged);
1863
- git_vector_free(&diff_list->conflicts);
1864
- git_vector_free(&diff_list->resolved);
1868
+ git_vector_dispose(&diff_list->staged);
1869
+ git_vector_dispose(&diff_list->conflicts);
1870
+ git_vector_dispose(&diff_list->resolved);
1865
1871
  git_pool_clear(&diff_list->pool);
1866
1872
  git__free(diff_list);
1867
1873
  }
@@ -2829,7 +2835,7 @@ cleanup:
2829
2835
 
2830
2836
  git_str_dispose(&file_path);
2831
2837
 
2832
- git_vector_free(&matching);
2838
+ git_vector_dispose(&matching);
2833
2839
  git__free(entries);
2834
2840
 
2835
2841
  return error;
@@ -3008,7 +3014,7 @@ done:
3008
3014
  git_iterator_free(iter_new);
3009
3015
  git_diff_free(staged_diff_list);
3010
3016
  git_diff_free(index_diff_list);
3011
- git_vector_free(&staged_paths);
3017
+ git_vector_dispose(&staged_paths);
3012
3018
 
3013
3019
  return error;
3014
3020
  }
@@ -3105,7 +3111,7 @@ int git_merge__check_result(git_repository *repo, git_index *index_new)
3105
3111
  }
3106
3112
 
3107
3113
  done:
3108
- git_vector_free(&paths);
3114
+ git_vector_dispose(&paths);
3109
3115
  git_tree_free(head_tree);
3110
3116
  git_iterator_free(iter_head);
3111
3117
  git_iterator_free(iter_new);
@@ -3346,8 +3352,7 @@ int git_merge(
3346
3352
  goto done;
3347
3353
 
3348
3354
  checkout_strategy = given_checkout_opts ?
3349
- given_checkout_opts->checkout_strategy :
3350
- GIT_CHECKOUT_SAFE;
3355
+ given_checkout_opts->checkout_strategy : 0;
3351
3356
 
3352
3357
  if ((error = git_indexwriter_init_for_operation(&indexwriter, repo,
3353
3358
  &checkout_strategy)) < 0)
@@ -218,7 +218,7 @@ int git_merge_driver_global_init(void)
218
218
 
219
219
  done:
220
220
  if (error < 0)
221
- git_vector_free_deep(&merge_driver_registry.drivers);
221
+ git_vector_dispose_deep(&merge_driver_registry.drivers);
222
222
 
223
223
  return error;
224
224
  }
@@ -238,7 +238,7 @@ static void git_merge_driver_global_shutdown(void)
238
238
  git__free(entry);
239
239
  }
240
240
 
241
- git_vector_free(&merge_driver_registry.drivers);
241
+ git_vector_dispose(&merge_driver_registry.drivers);
242
242
 
243
243
  git_rwlock_wrunlock(&merge_driver_registry.lock);
244
244
  git_rwlock_free(&merge_driver_registry.lock);
@@ -484,7 +484,7 @@ int git_midx_close(git_midx_file *idx)
484
484
  if (idx->index_map.data)
485
485
  git_futils_mmap_free(&idx->index_map);
486
486
 
487
- git_vector_free(&idx->packfile_names);
487
+ git_vector_dispose(&idx->packfile_names);
488
488
 
489
489
  return 0;
490
490
  }
@@ -508,20 +508,28 @@ static int packfile__cmp(const void *a_, const void *b_)
508
508
  }
509
509
 
510
510
  int git_midx_writer_new(
511
- git_midx_writer **out,
512
- const char *pack_dir
511
+ git_midx_writer **out,
512
+ const char *pack_dir
513
513
  #ifdef GIT_EXPERIMENTAL_SHA256
514
- , git_oid_t oid_type
514
+ , git_midx_writer_options *opts
515
515
  #endif
516
516
  )
517
517
  {
518
518
  git_midx_writer *w;
519
+ git_oid_t oid_type;
519
520
 
520
- #ifndef GIT_EXPERIMENTAL_SHA256
521
- git_oid_t oid_type = GIT_OID_SHA1;
522
- #endif
521
+ GIT_ASSERT_ARG(out && pack_dir);
523
522
 
524
- GIT_ASSERT_ARG(out && pack_dir && oid_type);
523
+ #ifdef GIT_EXPERIMENTAL_SHA256
524
+ GIT_ERROR_CHECK_VERSION(opts,
525
+ GIT_MIDX_WRITER_OPTIONS_VERSION,
526
+ "git_midx_writer_options");
527
+
528
+ oid_type = opts && opts->oid_type ? opts->oid_type : GIT_OID_DEFAULT;
529
+ GIT_ASSERT_ARG(git_oid_type_is_valid(oid_type));
530
+ #else
531
+ oid_type = GIT_OID_SHA1;
532
+ #endif
525
533
 
526
534
  w = git__calloc(1, sizeof(git_midx_writer));
527
535
  GIT_ERROR_CHECK_ALLOC(w);
@@ -554,7 +562,7 @@ void git_midx_writer_free(git_midx_writer *w)
554
562
 
555
563
  git_vector_foreach (&w->packs, i, p)
556
564
  git_mwindow_put_pack(p);
557
- git_vector_free(&w->packs);
565
+ git_vector_dispose(&w->packs);
558
566
  git_str_dispose(&w->pack_dir);
559
567
  git__free(w);
560
568
  }
@@ -660,9 +668,11 @@ static int midx_write_hash(const char *buf, size_t size, void *data)
660
668
  struct midx_write_hash_context *ctx = (struct midx_write_hash_context *)data;
661
669
  int error;
662
670
 
663
- error = git_hash_update(ctx->ctx, buf, size);
664
- if (error < 0)
665
- return error;
671
+ if (ctx->ctx) {
672
+ error = git_hash_update(ctx->ctx, buf, size);
673
+ if (error < 0)
674
+ return error;
675
+ }
666
676
 
667
677
  return ctx->write_cb(buf, size, ctx->cb_data);
668
678
  }
@@ -703,9 +713,9 @@ static int midx_write(
703
713
  hash_cb_data.ctx = &ctx;
704
714
 
705
715
  oid_size = git_oid_size(w->oid_type);
706
-
707
- GIT_ASSERT((checksum_type = git_oid_algorithm(w->oid_type)));
716
+ checksum_type = git_oid_algorithm(w->oid_type);
708
717
  checksum_size = git_hash_size(checksum_type);
718
+ GIT_ASSERT(oid_size && checksum_type && checksum_size);
709
719
 
710
720
  if ((error = git_hash_ctx_init(&ctx, checksum_type)) < 0)
711
721
  return error;
@@ -863,13 +873,16 @@ static int midx_write(
863
873
  error = git_hash_final(checksum, &ctx);
864
874
  if (error < 0)
865
875
  goto cleanup;
876
+
877
+ hash_cb_data.ctx = NULL;
878
+
866
879
  error = write_cb((char *)checksum, checksum_size, cb_data);
867
880
  if (error < 0)
868
881
  goto cleanup;
869
882
 
870
883
  cleanup:
871
884
  git_array_clear(object_entries_array);
872
- git_vector_free(&object_entries);
885
+ git_vector_dispose(&object_entries);
873
886
  git_str_dispose(&packfile_names);
874
887
  git_str_dispose(&oid_lookup);
875
888
  git_str_dispose(&object_offsets);
@@ -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;
@@ -526,7 +526,7 @@ static int git_object__short_id(git_str *out, const git_object *obj)
526
526
  git_oid id;
527
527
  git_odb *odb;
528
528
  size_t oid_hexsize;
529
- int len = GIT_ABBREV_DEFAULT, error;
529
+ int len, error;
530
530
 
531
531
  GIT_ASSERT_ARG(out);
532
532
  GIT_ASSERT_ARG(obj);
@@ -536,12 +536,13 @@ static int git_object__short_id(git_str *out, const git_object *obj)
536
536
  git_oid_clear(&id, repo->oid_type);
537
537
  oid_hexsize = git_oid_hexsize(repo->oid_type);
538
538
 
539
- if ((error = git_repository__configmap_lookup(&len, repo, GIT_CONFIGMAP_ABBREV)) < 0)
539
+ if ((error = git_repository__abbrev_length(&len, repo)) < 0)
540
540
  return error;
541
541
 
542
- if (len < 0 || (size_t)len > oid_hexsize) {
543
- git_error_set(GIT_ERROR_CONFIG, "invalid oid abbreviation setting: '%d'", len);
544
- return -1;
542
+ if ((size_t)len == oid_hexsize) {
543
+ if ((error = git_oid_cpy(&id, &obj->cached.oid)) < 0) {
544
+ return error;
545
+ }
545
546
  }
546
547
 
547
548
  if ((error = git_repository_odb(&odb, repo)) < 0)
@@ -915,7 +915,7 @@ static void odb_free(git_odb *db)
915
915
  git_mutex_unlock(&db->lock);
916
916
 
917
917
  git_commit_graph_free(db->cgraph);
918
- git_vector_free(&db->backends);
918
+ git_vector_dispose(&db->backends);
919
919
  git_cache_dispose(&db->own_cache);
920
920
  git_mutex_free(&db->lock);
921
921
 
@@ -1609,7 +1609,7 @@ int git_odb_foreach(git_odb *db, git_odb_foreach_cb cb, void *payload)
1609
1609
  }
1610
1610
 
1611
1611
  cleanup:
1612
- git_vector_free(&backends);
1612
+ git_vector_dispose(&backends);
1613
1613
 
1614
1614
  return error;
1615
1615
  }
@@ -1796,7 +1796,8 @@ void git_odb_stream_free(git_odb_stream *stream)
1796
1796
  if (stream == NULL)
1797
1797
  return;
1798
1798
 
1799
- git_hash_ctx_cleanup(stream->hash_ctx);
1799
+ if (stream->hash_ctx)
1800
+ git_hash_ctx_cleanup(stream->hash_ctx);
1800
1801
  git__free(stream->hash_ctx);
1801
1802
  stream->free(stream);
1802
1803
  }
@@ -1922,7 +1923,7 @@ void git_odb_backend_data_free(git_odb_backend *backend, void *data)
1922
1923
  git__free(data);
1923
1924
  }
1924
1925
 
1925
- int git_odb_refresh(struct git_odb *db)
1926
+ int git_odb_refresh(git_odb *db)
1926
1927
  {
1927
1928
  size_t i;
1928
1929
  int error;