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
@@ -16,6 +16,7 @@
16
16
 
17
17
  #include "git2/email.h"
18
18
  #include "git2/patch.h"
19
+ #include "git2/sys/email.h"
19
20
  #include "git2/version.h"
20
21
 
21
22
  /*
@@ -60,9 +60,11 @@ static int mark_local(git_remote *remote)
60
60
 
61
61
  git_vector_foreach(&remote->refs, i, head) {
62
62
  /* If we have the object, mark it so we don't ask for it.
63
- However if we are unshallowing, we need to ask for it
64
- even though the head exists locally. */
65
- if (remote->nego.depth != INT_MAX && git_odb_exists(odb, &head->oid))
63
+ However if we are unshallowing or changing history
64
+ depth, we need to ask for it even though the head
65
+ exists locally. */
66
+ if (remote->nego.depth == GIT_FETCH_DEPTH_FULL &&
67
+ git_odb_exists(odb, &head->oid))
66
68
  head->local = 1;
67
69
  else
68
70
  remote->need_pack = 1;
@@ -239,7 +239,7 @@ static void git_filter_global_shutdown(void)
239
239
  git__free(fdef);
240
240
  }
241
241
 
242
- git_vector_free(&filter_registry.filters);
242
+ git_vector_dispose(&filter_registry.filters);
243
243
 
244
244
  git_rwlock_wrunlock(&filter_registry.lock);
245
245
  git_rwlock_free(&filter_registry.lock);
@@ -908,7 +908,7 @@ static int buffered_stream_close(git_writestream *s)
908
908
  {
909
909
  struct buffered_stream *buffered_stream = (struct buffered_stream *)s;
910
910
  git_str *writebuf;
911
- git_error_state error_state = {0};
911
+ git_error *last_error;
912
912
  int error;
913
913
 
914
914
  GIT_ASSERT_ARG(buffered_stream);
@@ -946,9 +946,9 @@ static int buffered_stream_close(git_writestream *s)
946
946
  } else {
947
947
  /* close stream before erroring out taking care
948
948
  * to preserve the original error */
949
- git_error_state_capture(&error_state, error);
949
+ git_error_save(&last_error);
950
950
  buffered_stream->target->close(buffered_stream->target);
951
- git_error_state_restore(&error_state);
951
+ git_error_restore(last_error);
952
952
  return error;
953
953
  }
954
954
 
@@ -1106,7 +1106,7 @@ static void filter_streams_free(git_vector *streams)
1106
1106
 
1107
1107
  git_vector_foreach(streams, i, stream)
1108
1108
  stream->free(stream);
1109
- git_vector_free(streams);
1109
+ git_vector_dispose(streams);
1110
1110
  }
1111
1111
 
1112
1112
  int git_filter_list_stream_file(
@@ -10,7 +10,7 @@
10
10
  #endif
11
11
 
12
12
  #ifndef LIBGIT2_COMMENTS
13
- # define LIBGIT2_COMMENTS "For more information visit http://libgit2.github.com/"
13
+ # define LIBGIT2_COMMENTS "For more information visit https://libgit2.org/"
14
14
  #endif
15
15
 
16
16
  #ifdef __GNUC__
@@ -25,8 +25,8 @@ VS_VERSION_INFO VERSIONINFO
25
25
  #else
26
26
  VS_VERSION_INFO VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE
27
27
  #endif
28
- FILEVERSION LIBGIT2_VER_MAJOR,LIBGIT2_VER_MINOR,LIBGIT2_VER_REVISION,LIBGIT2_VER_PATCH
29
- PRODUCTVERSION LIBGIT2_VER_MAJOR,LIBGIT2_VER_MINOR,LIBGIT2_VER_REVISION,LIBGIT2_VER_PATCH
28
+ FILEVERSION LIBGIT2_VERSION_MAJOR,LIBGIT2_VERSION_MINOR,LIBGIT2_VERSION_REVISION,LIBGIT2_VERSION_PATCH
29
+ PRODUCTVERSION LIBGIT2_VERSION_MAJOR,LIBGIT2_VERSION_MINOR,LIBGIT2_VERSION_REVISION,LIBGIT2_VERSION_PATCH
30
30
  FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
31
31
  #ifdef _DEBUG
32
32
  FILEFLAGS VS_FF_DEBUG
@@ -11,10 +11,13 @@
11
11
  #include "oid.h"
12
12
  #include "oidarray.h"
13
13
  #include "parse.h"
14
+ #include "hashmap_oid.h"
15
+
16
+ GIT_HASHMAP_OID_SETUP(git_grafts_oidmap, git_commit_graft *);
14
17
 
15
18
  struct git_grafts {
16
19
  /* Map of `git_commit_graft`s */
17
- git_oidmap *commits;
20
+ git_grafts_oidmap commits;
18
21
 
19
22
  /* Type of object IDs */
20
23
  git_oid_t oid_type;
@@ -33,11 +36,6 @@ int git_grafts_new(git_grafts **out, git_oid_t oid_type)
33
36
  grafts = git__calloc(1, sizeof(*grafts));
34
37
  GIT_ERROR_CHECK_ALLOC(grafts);
35
38
 
36
- if ((git_oidmap_new(&grafts->commits)) < 0) {
37
- git__free(grafts);
38
- return -1;
39
- }
40
-
41
39
  grafts->oid_type = oid_type;
42
40
 
43
41
  *out = grafts;
@@ -88,23 +86,24 @@ void git_grafts_free(git_grafts *grafts)
88
86
  return;
89
87
  git__free(grafts->path);
90
88
  git_grafts_clear(grafts);
91
- git_oidmap_free(grafts->commits);
89
+ git_grafts_oidmap_dispose(&grafts->commits);
92
90
  git__free(grafts);
93
91
  }
94
92
 
95
93
  void git_grafts_clear(git_grafts *grafts)
96
94
  {
95
+ git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
97
96
  git_commit_graft *graft;
98
97
 
99
98
  if (!grafts)
100
99
  return;
101
100
 
102
- git_oidmap_foreach_value(grafts->commits, graft, {
101
+ while (git_grafts_oidmap_iterate(&iter, NULL, &graft, &grafts->commits) == 0) {
103
102
  git__free(graft->parents.ptr);
104
103
  git__free(graft);
105
- });
104
+ }
106
105
 
107
- git_oidmap_clear(grafts->commits);
106
+ git_grafts_oidmap_clear(&grafts->commits);
108
107
  }
109
108
 
110
109
  int git_grafts_refresh(git_grafts *grafts)
@@ -205,7 +204,7 @@ int git_grafts_add(git_grafts *grafts, const git_oid *oid, git_array_oid_t paren
205
204
  if ((error = git_grafts_remove(grafts, &graft->oid)) < 0 && error != GIT_ENOTFOUND)
206
205
  goto cleanup;
207
206
 
208
- if ((error = git_oidmap_set(grafts->commits, &graft->oid, graft)) < 0)
207
+ if ((error = git_grafts_oidmap_put(&grafts->commits, &graft->oid, graft)) < 0)
209
208
  goto cleanup;
210
209
 
211
210
  return 0;
@@ -223,10 +222,10 @@ int git_grafts_remove(git_grafts *grafts, const git_oid *oid)
223
222
 
224
223
  GIT_ASSERT_ARG(grafts && oid);
225
224
 
226
- if ((graft = git_oidmap_get(grafts->commits, oid)) == NULL)
225
+ if (git_grafts_oidmap_get(&graft, &grafts->commits, oid) != 0)
227
226
  return GIT_ENOTFOUND;
228
227
 
229
- if ((error = git_oidmap_delete(grafts->commits, oid)) < 0)
228
+ if ((error = git_grafts_oidmap_remove(&grafts->commits, oid)) < 0)
230
229
  return error;
231
230
 
232
231
  git__free(graft->parents.ptr);
@@ -238,23 +237,22 @@ int git_grafts_remove(git_grafts *grafts, const git_oid *oid)
238
237
  int git_grafts_get(git_commit_graft **out, git_grafts *grafts, const git_oid *oid)
239
238
  {
240
239
  GIT_ASSERT_ARG(out && grafts && oid);
241
- if ((*out = git_oidmap_get(grafts->commits, oid)) == NULL)
242
- return GIT_ENOTFOUND;
243
- return 0;
240
+ return git_grafts_oidmap_get(out, &grafts->commits, oid);
244
241
  }
245
242
 
246
243
  int git_grafts_oids(git_oid **out, size_t *out_len, git_grafts *grafts)
247
244
  {
245
+ git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
248
246
  git_array_oid_t array = GIT_ARRAY_INIT;
249
247
  const git_oid *oid;
250
- size_t existing, i = 0;
248
+ size_t existing;
251
249
 
252
250
  GIT_ASSERT_ARG(out && grafts);
253
251
 
254
- if ((existing = git_oidmap_size(grafts->commits)) > 0)
252
+ if ((existing = git_grafts_oidmap_size(&grafts->commits)) > 0)
255
253
  git_array_init_to_size(array, existing);
256
254
 
257
- while (git_oidmap_iterate(NULL, grafts->commits, &i, &oid) == 0) {
255
+ while (git_grafts_oidmap_iterate(&iter, &oid, NULL, &grafts->commits) == 0) {
258
256
  git_oid *cpy = git_array_alloc(array);
259
257
  GIT_ERROR_CHECK_ALLOC(cpy);
260
258
  git_oid_cpy(cpy, oid);
@@ -268,5 +266,5 @@ int git_grafts_oids(git_oid **out, size_t *out_len, git_grafts *grafts)
268
266
 
269
267
  size_t git_grafts_size(git_grafts *grafts)
270
268
  {
271
- return git_oidmap_size(grafts->commits);
269
+ return git_grafts_oidmap_size(&grafts->commits);
272
270
  }
@@ -9,7 +9,6 @@
9
9
 
10
10
  #include "common.h"
11
11
  #include "oidarray.h"
12
- #include "oidmap.h"
13
12
 
14
13
  /** graft commit */
15
14
  typedef struct {
@@ -243,7 +243,7 @@ int git_graph_reachable_from_any(
243
243
 
244
244
  done:
245
245
  git_commit_list_free(&result);
246
- git_vector_free(&list);
246
+ git_vector_dispose(&list);
247
247
  git_revwalk_free(walk);
248
248
  return error;
249
249
  }
@@ -0,0 +1,30 @@
1
+ /*
2
+ * Copyright (C) the libgit2 contributors. All rights reserved.
3
+ *
4
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
5
+ * a Linking Exception. For full terms see the included COPYING file.
6
+ */
7
+ #ifndef INCLUDE_hashmap_oid_h__
8
+ #define INCLUDE_hashmap_oid_h__
9
+
10
+ #include "hashmap.h"
11
+
12
+ GIT_INLINE(uint32_t) git_hashmap_oid_hashcode(const git_oid *oid)
13
+ {
14
+ uint32_t hash;
15
+ memcpy(&hash, oid->id, sizeof(uint32_t));
16
+ return hash;
17
+ }
18
+
19
+ #define GIT_HASHMAP_OID_STRUCT(name, val_t) \
20
+ GIT_HASHMAP_STRUCT(name, const git_oid *, val_t)
21
+ #define GIT_HASHMAP_OID_PROTOTYPES(name, val_t) \
22
+ GIT_HASHMAP_PROTOTYPES(name, const git_oid *, val_t)
23
+ #define GIT_HASHMAP_OID_FUNCTIONS(name, scope, val_t) \
24
+ GIT_HASHMAP_FUNCTIONS(name, scope, const git_oid *, val_t, git_hashmap_oid_hashcode, git_oid_equal)
25
+
26
+ #define GIT_HASHMAP_OID_SETUP(name, val_t) \
27
+ GIT_HASHMAP_OID_STRUCT(name, val_t) \
28
+ GIT_HASHMAP_OID_FUNCTIONS(name, GIT_HASHMAP_INLINE, val_t)
29
+
30
+ #endif
@@ -296,6 +296,8 @@ int git_ignore__for_path(
296
296
  {
297
297
  int error = 0;
298
298
  const char *workdir = git_repository_workdir(repo);
299
+ git_attr_cache *attrcache;
300
+ const char *excludes_file = NULL;
299
301
  git_str infopath = GIT_STR_INIT;
300
302
 
301
303
  GIT_ASSERT_ARG(repo);
@@ -358,10 +360,12 @@ int git_ignore__for_path(
358
360
  }
359
361
 
360
362
  /* load core.excludesfile */
361
- if (git_repository_attr_cache(repo)->cfg_excl_file != NULL)
363
+ attrcache = git_repository_attr_cache(repo);
364
+ excludes_file = git_attr_cache_excludesfile(attrcache);
365
+
366
+ if (excludes_file != NULL)
362
367
  error = push_ignore_file(
363
- ignores, &ignores->ign_global, NULL,
364
- git_repository_attr_cache(repo)->cfg_excl_file);
368
+ ignores, &ignores->ign_global, NULL, excludes_file);
365
369
 
366
370
  cleanup:
367
371
  git_str_dispose(&infopath);
@@ -428,13 +432,13 @@ void git_ignore__free(git_ignores *ignores)
428
432
  git_attr_file__free(file);
429
433
  ignores->ign_path.contents[i] = NULL;
430
434
  }
431
- git_vector_free(&ignores->ign_path);
435
+ git_vector_dispose(&ignores->ign_path);
432
436
 
433
437
  git_vector_foreach(&ignores->ign_global, i, file) {
434
438
  git_attr_file__free(file);
435
439
  ignores->ign_global.contents[i] = NULL;
436
440
  }
437
- git_vector_free(&ignores->ign_global);
441
+ git_vector_dispose(&ignores->ign_global);
438
442
 
439
443
  git_str_dispose(&ignores->dir);
440
444
  }
@@ -17,10 +17,10 @@
17
17
  #include "pathspec.h"
18
18
  #include "ignore.h"
19
19
  #include "blob.h"
20
- #include "idxmap.h"
21
20
  #include "diff.h"
22
21
  #include "varint.h"
23
22
  #include "path.h"
23
+ #include "index_map.h"
24
24
 
25
25
  #include "git2/odb.h"
26
26
  #include "git2/oid.h"
@@ -133,30 +133,6 @@ static int write_index(unsigned char checksum[GIT_HASH_MAX_SIZE], size_t *checks
133
133
  static void index_entry_free(git_index_entry *entry);
134
134
  static void index_entry_reuc_free(git_index_reuc_entry *reuc);
135
135
 
136
- GIT_INLINE(int) index_map_set(git_idxmap *map, git_index_entry *e, bool ignore_case)
137
- {
138
- if (ignore_case)
139
- return git_idxmap_icase_set((git_idxmap_icase *) map, e, e);
140
- else
141
- return git_idxmap_set(map, e, e);
142
- }
143
-
144
- GIT_INLINE(int) index_map_delete(git_idxmap *map, git_index_entry *e, bool ignore_case)
145
- {
146
- if (ignore_case)
147
- return git_idxmap_icase_delete((git_idxmap_icase *) map, e);
148
- else
149
- return git_idxmap_delete(map, e);
150
- }
151
-
152
- GIT_INLINE(int) index_map_resize(git_idxmap *map, size_t count, bool ignore_case)
153
- {
154
- if (ignore_case)
155
- return git_idxmap_icase_resize((git_idxmap_icase *) map, count);
156
- else
157
- return git_idxmap_resize(map, count);
158
- }
159
-
160
136
  int git_index_entry_srch(const void *key, const void *array_member)
161
137
  {
162
138
  const struct entry_srch_key *srch_key = key;
@@ -388,6 +364,7 @@ GIT_INLINE(int) index_find(
388
364
  void git_index__set_ignore_case(git_index *index, bool ignore_case)
389
365
  {
390
366
  index->ignore_case = ignore_case;
367
+ index->entries_map.ignore_case = ignore_case;
391
368
 
392
369
  if (ignore_case) {
393
370
  index->entries_cmp_path = git__strcasecmp_cb;
@@ -422,6 +399,7 @@ int git_index__open(
422
399
  index = git__calloc(1, sizeof(git_index));
423
400
  GIT_ERROR_CHECK_ALLOC(index);
424
401
 
402
+ GIT_ASSERT_ARG(git_oid_type_is_valid(oid_type));
425
403
  index->oid_type = oid_type;
426
404
 
427
405
  if (git_pool_init(&index->tree_pool, 1) < 0)
@@ -438,7 +416,6 @@ int git_index__open(
438
416
  }
439
417
 
440
418
  if (git_vector_init(&index->entries, 32, git_index_entry_cmp) < 0 ||
441
- git_idxmap_new(&index->entries_map) < 0 ||
442
419
  git_vector_init(&index->names, 8, conflict_name_cmp) < 0 ||
443
420
  git_vector_init(&index->reuc, 8, reuc_cmp) < 0 ||
444
421
  git_vector_init(&index->deleted, 8, git_index_entry_cmp) < 0)
@@ -465,9 +442,13 @@ fail:
465
442
  }
466
443
 
467
444
  #ifdef GIT_EXPERIMENTAL_SHA256
468
- int git_index_open(git_index **index_out, const char *index_path, git_oid_t oid_type)
445
+ int git_index_open(
446
+ git_index **index_out,
447
+ const char *index_path,
448
+ const git_index_options *opts)
469
449
  {
470
- return git_index__open(index_out, index_path, oid_type);
450
+ return git_index__open(index_out, index_path,
451
+ opts && opts->oid_type ? opts->oid_type : GIT_OID_DEFAULT);
471
452
  }
472
453
  #else
473
454
  int git_index_open(git_index **index_out, const char *index_path)
@@ -482,9 +463,10 @@ int git_index__new(git_index **out, git_oid_t oid_type)
482
463
  }
483
464
 
484
465
  #ifdef GIT_EXPERIMENTAL_SHA256
485
- int git_index_new(git_index **out, git_oid_t oid_type)
466
+ int git_index_new(git_index **out, const git_index_options *opts)
486
467
  {
487
- return git_index__new(out, oid_type);
468
+ return git_index__new(out,
469
+ opts && opts->oid_type ? opts->oid_type : GIT_OID_DEFAULT);
488
470
  }
489
471
  #else
490
472
  int git_index_new(git_index **out)
@@ -502,11 +484,11 @@ static void index_free(git_index *index)
502
484
  return;
503
485
 
504
486
  git_index_clear(index);
505
- git_idxmap_free(index->entries_map);
506
- git_vector_free(&index->entries);
507
- git_vector_free(&index->names);
508
- git_vector_free(&index->reuc);
509
- git_vector_free(&index->deleted);
487
+ git_index_entrymap_dispose(&index->entries_map);
488
+ git_vector_dispose(&index->entries);
489
+ git_vector_dispose(&index->names);
490
+ git_vector_dispose(&index->reuc);
491
+ git_vector_dispose(&index->deleted);
510
492
 
511
493
  git__free(index->index_file_path);
512
494
 
@@ -547,7 +529,7 @@ static int index_remove_entry(git_index *index, size_t pos)
547
529
 
548
530
  if (entry != NULL) {
549
531
  git_tree_cache_invalidate_path(index->tree, entry->path);
550
- index_map_delete(index->entries_map, entry, index->ignore_case);
532
+ git_index_entrymap_remove(&index->entries_map, entry);
551
533
  }
552
534
 
553
535
  error = git_vector_remove(&index->entries, pos);
@@ -575,7 +557,8 @@ int git_index_clear(git_index *index)
575
557
  index->tree = NULL;
576
558
  git_pool_clear(&index->tree_pool);
577
559
 
578
- git_idxmap_clear(index->entries_map);
560
+ git_index_entrymap_clear(&index->entries_map);
561
+
579
562
  while (!error && index->entries.length > 0)
580
563
  error = index_remove_entry(index, index->entries.length - 1);
581
564
 
@@ -786,8 +769,10 @@ static int truncate_racily_clean(git_index *index)
786
769
  diff_opts.pathspec.count = paths.length;
787
770
  diff_opts.pathspec.strings = (char **)paths.contents;
788
771
 
789
- if ((error = git_diff_index_to_workdir(&diff, INDEX_OWNER(index), index, &diff_opts)) < 0)
772
+ if ((error = git_diff_index_to_workdir(&diff, INDEX_OWNER(index), index, &diff_opts)) < 0) {
773
+ git_vector_dispose(&paths);
790
774
  return error;
775
+ }
791
776
 
792
777
  git_vector_foreach(&diff->deltas, i, delta) {
793
778
  entry = (git_index_entry *)git_index_get_bypath(index, delta->old_file.path, 0);
@@ -803,7 +788,7 @@ static int truncate_racily_clean(git_index *index)
803
788
 
804
789
  done:
805
790
  git_diff_free(diff);
806
- git_vector_free(&paths);
791
+ git_vector_dispose(&paths);
807
792
  return 0;
808
793
  }
809
794
 
@@ -904,14 +889,9 @@ const git_index_entry *git_index_get_bypath(
904
889
  key.path = path;
905
890
  GIT_INDEX_ENTRY_STAGE_SET(&key, stage);
906
891
 
907
- if (index->ignore_case)
908
- value = git_idxmap_icase_get((git_idxmap_icase *) index->entries_map, &key);
909
- else
910
- value = git_idxmap_get(index->entries_map, &key);
911
-
912
- if (!value) {
913
- git_error_set(GIT_ERROR_INDEX, "index does not contain '%s'", path);
914
- return NULL;
892
+ if (git_index_entrymap_get(&value, &index->entries_map, &key) != 0) {
893
+ git_error_set(GIT_ERROR_INDEX, "index does not contain '%s'", path);
894
+ return NULL;
915
895
  }
916
896
 
917
897
  return value;
@@ -1453,7 +1433,7 @@ static int index_insert(
1453
1433
  * check for dups, this is actually cheaper in the long run.)
1454
1434
  */
1455
1435
  if ((error = git_vector_insert_sorted(&index->entries, entry, index_no_dups)) < 0 ||
1456
- (error = index_map_set(index->entries_map, entry, index->ignore_case)) < 0)
1436
+ (error = git_index_entrymap_put(&index->entries_map, entry)) < 0)
1457
1437
  goto out;
1458
1438
  }
1459
1439
 
@@ -1612,15 +1592,17 @@ int git_index_add_bypath(git_index *index, const char *path)
1612
1592
 
1613
1593
  if (ret == GIT_EDIRECTORY) {
1614
1594
  git_submodule *sm;
1615
- git_error_state err;
1595
+ git_error *last_error;
1616
1596
 
1617
- git_error_state_capture(&err, ret);
1597
+ git_error_save(&last_error);
1618
1598
 
1619
1599
  ret = git_submodule_lookup(&sm, INDEX_OWNER(index), path);
1620
- if (ret == GIT_ENOTFOUND)
1621
- return git_error_state_restore(&err);
1600
+ if (ret == GIT_ENOTFOUND) {
1601
+ git_error_restore(last_error);
1602
+ return GIT_EDIRECTORY;
1603
+ }
1622
1604
 
1623
- git_error_state_free(&err);
1605
+ git_error_free(last_error);
1624
1606
 
1625
1607
  /*
1626
1608
  * EEXISTS means that there is a repository at that path, but it's not known
@@ -1680,8 +1662,7 @@ int git_index__fill(git_index *index, const git_vector *source_entries)
1680
1662
  return 0;
1681
1663
 
1682
1664
  if (git_vector_size_hint(&index->entries, source_entries->length) < 0 ||
1683
- index_map_resize(index->entries_map, (size_t)(source_entries->length * 1.3),
1684
- index->ignore_case) < 0)
1665
+ git_index_entrymap_resize(&index->entries_map, (size_t)(source_entries->length * 1.3)) < 0)
1685
1666
  return -1;
1686
1667
 
1687
1668
  git_vector_foreach(source_entries, i, source_entry) {
@@ -1694,10 +1675,8 @@ int git_index__fill(git_index *index, const git_vector *source_entries)
1694
1675
  entry->flags_extended |= GIT_INDEX_ENTRY_UPTODATE;
1695
1676
  entry->mode = git_index__create_mode(entry->mode);
1696
1677
 
1697
- if ((error = git_vector_insert(&index->entries, entry)) < 0)
1698
- break;
1699
-
1700
- if ((error = index_map_set(index->entries_map, entry, index->ignore_case)) < 0)
1678
+ if ((error = git_vector_insert(&index->entries, entry)) < 0 ||
1679
+ (error = git_index_entrymap_put(&index->entries_map, entry)) < 0)
1701
1680
  break;
1702
1681
 
1703
1682
  index->dirty = 1;
@@ -1740,7 +1719,7 @@ int git_index_remove(git_index *index, const char *path, int stage)
1740
1719
  remove_key.path = path;
1741
1720
  GIT_INDEX_ENTRY_STAGE_SET(&remove_key, stage);
1742
1721
 
1743
- index_map_delete(index->entries_map, &remove_key, index->ignore_case);
1722
+ git_index_entrymap_remove(&index->entries_map, &remove_key);
1744
1723
 
1745
1724
  if (index_find(&position, index, path, 0, stage) < 0) {
1746
1725
  git_error_set(
@@ -2758,6 +2737,7 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
2758
2737
  unsigned int i;
2759
2738
  struct index_header header = { 0 };
2760
2739
  unsigned char checksum[GIT_HASH_MAX_SIZE];
2740
+ unsigned char zero_checksum[GIT_HASH_MAX_SIZE] = { 0 };
2761
2741
  size_t checksum_size = git_hash_size(git_oid_algorithm(index->oid_type));
2762
2742
  const char *last = NULL;
2763
2743
  const char *empty = "";
@@ -2792,7 +2772,7 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
2792
2772
 
2793
2773
  GIT_ASSERT(!index->entries.length);
2794
2774
 
2795
- if ((error = index_map_resize(index->entries_map, header.entry_count, index->ignore_case)) < 0)
2775
+ if ((error = git_index_entrymap_resize(&index->entries_map, header.entry_count)) < 0)
2796
2776
  return error;
2797
2777
 
2798
2778
  /* Parse all the entries */
@@ -2810,7 +2790,7 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
2810
2790
  goto done;
2811
2791
  }
2812
2792
 
2813
- if ((error = index_map_set(index->entries_map, entry, index->ignore_case)) < 0) {
2793
+ if ((error = git_index_entrymap_put(&index->entries_map, entry)) < 0) {
2814
2794
  index_entry_free(entry);
2815
2795
  goto done;
2816
2796
  }
@@ -2847,8 +2827,11 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
2847
2827
  /*
2848
2828
  * SHA-1 or SHA-256 (depending on the repository's object format)
2849
2829
  * over the content of the index file before this checksum.
2830
+ * Note: checksum may be 0 if the index was written by a client
2831
+ * where index.skipHash was set to true.
2850
2832
  */
2851
- if (memcmp(checksum, buffer, checksum_size) != 0) {
2833
+ if (memcmp(zero_checksum, buffer, checksum_size) != 0 &&
2834
+ memcmp(checksum, buffer, checksum_size) != 0) {
2852
2835
  error = index_error_invalid(
2853
2836
  "calculated checksum does not match expected");
2854
2837
  goto done;
@@ -3083,7 +3066,7 @@ static int write_entries(git_index *index, git_filebuf *file)
3083
3066
  }
3084
3067
 
3085
3068
  done:
3086
- git_vector_free(&case_sorted);
3069
+ git_vector_dispose(&case_sorted);
3087
3070
  return error;
3088
3071
  }
3089
3072
 
@@ -3359,14 +3342,11 @@ int git_index_read_tree(git_index *index, const git_tree *tree)
3359
3342
  {
3360
3343
  int error = 0;
3361
3344
  git_vector entries = GIT_VECTOR_INIT;
3362
- git_idxmap *entries_map;
3345
+ git_index_entrymap entries_map = GIT_INDEX_ENTRYMAP_INIT;
3363
3346
  read_tree_data data;
3364
3347
  size_t i;
3365
3348
  git_index_entry *e;
3366
3349
 
3367
- if (git_idxmap_new(&entries_map) < 0)
3368
- return -1;
3369
-
3370
3350
  git_vector_set_cmp(&entries, index->entries._cmp); /* match sort */
3371
3351
 
3372
3352
  data.index = index;
@@ -3382,11 +3362,11 @@ int git_index_read_tree(git_index *index, const git_tree *tree)
3382
3362
  if ((error = git_tree_walk(tree, GIT_TREEWALK_POST, read_tree_cb, &data)) < 0)
3383
3363
  goto cleanup;
3384
3364
 
3385
- if ((error = index_map_resize(entries_map, entries.length, index->ignore_case)) < 0)
3365
+ if ((error = git_index_entrymap_resize(&entries_map, entries.length)) < 0)
3386
3366
  goto cleanup;
3387
3367
 
3388
3368
  git_vector_foreach(&entries, i, e) {
3389
- if ((error = index_map_set(entries_map, e, index->ignore_case)) < 0) {
3369
+ if ((error = git_index_entrymap_put(&entries_map, e)) < 0) {
3390
3370
  git_error_set(GIT_ERROR_INDEX, "failed to insert entry into map");
3391
3371
  return error;
3392
3372
  }
@@ -3396,18 +3376,18 @@ int git_index_read_tree(git_index *index, const git_tree *tree)
3396
3376
 
3397
3377
  git_vector_sort(&entries);
3398
3378
 
3399
- if ((error = git_index_clear(index)) < 0) {
3400
- /* well, this isn't good */;
3401
- } else {
3402
- git_vector_swap(&entries, &index->entries);
3403
- entries_map = git_atomic_swap(index->entries_map, entries_map);
3404
- }
3379
+ if ((error = git_index_clear(index)) < 0)
3380
+ goto cleanup;
3381
+
3382
+ git_vector_swap(&entries, &index->entries);
3383
+ git_index_entrymap_swap(&entries_map, &index->entries_map);
3405
3384
 
3406
3385
  index->dirty = 1;
3407
3386
 
3408
3387
  cleanup:
3409
- git_vector_free(&entries);
3410
- git_idxmap_free(entries_map);
3388
+ git_vector_dispose(&entries);
3389
+ git_index_entrymap_dispose(&entries_map);
3390
+
3411
3391
  if (error < 0)
3412
3392
  return error;
3413
3393
 
@@ -3423,7 +3403,7 @@ static int git_index_read_iterator(
3423
3403
  {
3424
3404
  git_vector new_entries = GIT_VECTOR_INIT,
3425
3405
  remove_entries = GIT_VECTOR_INIT;
3426
- git_idxmap *new_entries_map = NULL;
3406
+ git_index_entrymap new_entries_map = GIT_INDEX_ENTRYMAP_INIT;
3427
3407
  git_iterator *index_iterator = NULL;
3428
3408
  git_iterator_options opts = GIT_ITERATOR_OPTIONS_INIT;
3429
3409
  const git_index_entry *old_entry, *new_entry;
@@ -3434,12 +3414,11 @@ static int git_index_read_iterator(
3434
3414
  GIT_ASSERT((new_iterator->flags & GIT_ITERATOR_DONT_IGNORE_CASE));
3435
3415
 
3436
3416
  if ((error = git_vector_init(&new_entries, new_length_hint, index->entries._cmp)) < 0 ||
3437
- (error = git_vector_init(&remove_entries, index->entries.length, NULL)) < 0 ||
3438
- (error = git_idxmap_new(&new_entries_map)) < 0)
3417
+ (error = git_vector_init(&remove_entries, index->entries.length, NULL)) < 0)
3439
3418
  goto done;
3440
3419
 
3441
- if (new_length_hint && (error = index_map_resize(new_entries_map, new_length_hint,
3442
- index->ignore_case)) < 0)
3420
+ if (new_length_hint &&
3421
+ (error = git_index_entrymap_resize(&new_entries_map, new_length_hint)) < 0)
3443
3422
  goto done;
3444
3423
 
3445
3424
  opts.flags = GIT_ITERATOR_DONT_IGNORE_CASE |
@@ -3504,8 +3483,7 @@ static int git_index_read_iterator(
3504
3483
 
3505
3484
  if (add_entry) {
3506
3485
  if ((error = git_vector_insert(&new_entries, add_entry)) == 0)
3507
- error = index_map_set(new_entries_map, add_entry,
3508
- index->ignore_case);
3486
+ error = git_index_entrymap_put(&new_entries_map, add_entry);
3509
3487
  }
3510
3488
 
3511
3489
  if (remove_entry && error >= 0)
@@ -3534,7 +3512,7 @@ static int git_index_read_iterator(
3534
3512
  goto done;
3535
3513
 
3536
3514
  git_vector_swap(&new_entries, &index->entries);
3537
- new_entries_map = git_atomic_swap(index->entries_map, new_entries_map);
3515
+ git_index_entrymap_swap(&index->entries_map, &new_entries_map);
3538
3516
 
3539
3517
  git_vector_foreach(&remove_entries, i, entry) {
3540
3518
  if (index->tree)
@@ -3549,9 +3527,9 @@ static int git_index_read_iterator(
3549
3527
  error = 0;
3550
3528
 
3551
3529
  done:
3552
- git_idxmap_free(new_entries_map);
3553
- git_vector_free(&new_entries);
3554
- git_vector_free(&remove_entries);
3530
+ git_index_entrymap_dispose(&new_entries_map);
3531
+ git_vector_dispose(&new_entries);
3532
+ git_vector_dispose(&remove_entries);
3555
3533
  git_iterator_free(index_iterator);
3556
3534
  return error;
3557
3535
  }
@@ -3852,7 +3830,7 @@ int git_index_snapshot_new(git_vector *snap, git_index *index)
3852
3830
 
3853
3831
  void git_index_snapshot_release(git_vector *snap, git_index *index)
3854
3832
  {
3855
- git_vector_free(snap);
3833
+ git_vector_dispose(snap);
3856
3834
 
3857
3835
  git_atomic32_dec(&index->readers);
3858
3836