rugged 1.6.3 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (443) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rugged/rugged_allocator.c +0 -54
  3. data/lib/rugged/version.rb +1 -1
  4. data/vendor/libgit2/AUTHORS +1 -0
  5. data/vendor/libgit2/CMakeLists.txt +25 -17
  6. data/vendor/libgit2/COPYING +195 -1
  7. data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
  8. data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
  9. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  10. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +4 -4
  11. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
  12. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +34 -6
  13. data/vendor/libgit2/cmake/SelectHashes.cmake +32 -11
  14. data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
  15. data/vendor/libgit2/cmake/SelectSSH.cmake +22 -17
  16. data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
  17. data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
  18. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  19. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  20. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  21. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  22. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  23. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  24. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
  25. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  26. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  27. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  28. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
  29. data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
  30. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  31. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  32. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  33. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  34. data/vendor/libgit2/deps/pcre/CMakeLists.txt +1 -0
  35. data/vendor/libgit2/deps/pcre/LICENCE +5 -5
  36. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  37. data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
  38. data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
  39. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
  40. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/git-xdiff.h +4 -1
  41. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.c +19 -18
  42. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.h +2 -4
  43. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.c +3 -3
  44. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xhistogram.c +7 -18
  45. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmacros.h +18 -1
  46. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmerge.c +22 -20
  47. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xpatience.c +21 -30
  48. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.c +13 -30
  49. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.c +18 -1
  50. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.h +2 -1
  51. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  52. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  53. data/vendor/libgit2/deps/zlib/adler32.c +5 -27
  54. data/vendor/libgit2/deps/zlib/crc32.c +94 -167
  55. data/vendor/libgit2/deps/zlib/deflate.c +358 -435
  56. data/vendor/libgit2/deps/zlib/deflate.h +41 -10
  57. data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
  58. data/vendor/libgit2/deps/zlib/infback.c +17 -30
  59. data/vendor/libgit2/deps/zlib/inffast.c +1 -4
  60. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  61. data/vendor/libgit2/deps/zlib/inflate.c +36 -102
  62. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  63. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  64. data/vendor/libgit2/deps/zlib/trees.c +287 -352
  65. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  66. data/vendor/libgit2/deps/zlib/zlib.h +202 -202
  67. data/vendor/libgit2/deps/zlib/zutil.c +18 -44
  68. data/vendor/libgit2/deps/zlib/zutil.h +13 -33
  69. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  70. data/vendor/libgit2/include/git2/apply.h +27 -6
  71. data/vendor/libgit2/include/git2/attr.h +17 -4
  72. data/vendor/libgit2/include/git2/blame.h +133 -28
  73. data/vendor/libgit2/include/git2/blob.h +71 -28
  74. data/vendor/libgit2/include/git2/branch.h +22 -15
  75. data/vendor/libgit2/include/git2/buffer.h +6 -4
  76. data/vendor/libgit2/include/git2/cert.h +2 -1
  77. data/vendor/libgit2/include/git2/checkout.h +83 -32
  78. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  79. data/vendor/libgit2/include/git2/clone.h +25 -9
  80. data/vendor/libgit2/include/git2/commit.h +132 -3
  81. data/vendor/libgit2/include/git2/common.h +138 -56
  82. data/vendor/libgit2/include/git2/config.h +93 -23
  83. data/vendor/libgit2/include/git2/credential.h +30 -2
  84. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  85. data/vendor/libgit2/include/git2/deprecated.h +133 -3
  86. data/vendor/libgit2/include/git2/describe.h +13 -1
  87. data/vendor/libgit2/include/git2/diff.h +77 -9
  88. data/vendor/libgit2/include/git2/email.h +9 -29
  89. data/vendor/libgit2/include/git2/errors.h +49 -74
  90. data/vendor/libgit2/include/git2/filter.h +14 -7
  91. data/vendor/libgit2/include/git2/global.h +8 -1
  92. data/vendor/libgit2/include/git2/graph.h +3 -2
  93. data/vendor/libgit2/include/git2/ignore.h +10 -0
  94. data/vendor/libgit2/include/git2/index.h +100 -6
  95. data/vendor/libgit2/include/git2/indexer.h +21 -4
  96. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  97. data/vendor/libgit2/include/git2/merge.h +46 -1
  98. data/vendor/libgit2/include/git2/message.h +2 -2
  99. data/vendor/libgit2/include/git2/net.h +3 -1
  100. data/vendor/libgit2/include/git2/notes.h +9 -6
  101. data/vendor/libgit2/include/git2/object.h +9 -8
  102. data/vendor/libgit2/include/git2/odb.h +91 -49
  103. data/vendor/libgit2/include/git2/odb_backend.h +80 -52
  104. data/vendor/libgit2/include/git2/oid.h +24 -25
  105. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  106. data/vendor/libgit2/include/git2/pack.h +13 -1
  107. data/vendor/libgit2/include/git2/patch.h +2 -3
  108. data/vendor/libgit2/include/git2/pathspec.h +9 -0
  109. data/vendor/libgit2/include/git2/proxy.h +10 -0
  110. data/vendor/libgit2/include/git2/rebase.h +9 -6
  111. data/vendor/libgit2/include/git2/refdb.h +2 -2
  112. data/vendor/libgit2/include/git2/reflog.h +3 -2
  113. data/vendor/libgit2/include/git2/refs.h +9 -6
  114. data/vendor/libgit2/include/git2/refspec.h +14 -4
  115. data/vendor/libgit2/include/git2/remote.h +112 -18
  116. data/vendor/libgit2/include/git2/repository.h +61 -15
  117. data/vendor/libgit2/include/git2/reset.h +16 -3
  118. data/vendor/libgit2/include/git2/revert.h +9 -4
  119. data/vendor/libgit2/include/git2/revparse.h +3 -3
  120. data/vendor/libgit2/include/git2/revwalk.h +3 -2
  121. data/vendor/libgit2/include/git2/signature.h +46 -1
  122. data/vendor/libgit2/include/git2/stash.h +17 -3
  123. data/vendor/libgit2/include/git2/status.h +10 -6
  124. data/vendor/libgit2/include/git2/stdint.h +87 -85
  125. data/vendor/libgit2/include/git2/strarray.h +2 -3
  126. data/vendor/libgit2/include/git2/submodule.h +20 -9
  127. data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
  128. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  129. data/vendor/libgit2/include/git2/sys/commit_graph.h +109 -58
  130. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  131. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  132. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  133. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  134. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  135. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  136. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  137. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  138. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  139. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  140. data/vendor/libgit2/include/git2/sys/midx.h +47 -4
  141. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
  142. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  143. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  144. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  145. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  146. data/vendor/libgit2/include/git2/sys/remote.h +8 -1
  147. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  148. data/vendor/libgit2/include/git2/sys/stream.h +25 -2
  149. data/vendor/libgit2/include/git2/sys/transport.h +44 -5
  150. data/vendor/libgit2/include/git2/tag.h +3 -1
  151. data/vendor/libgit2/include/git2/trace.h +9 -3
  152. data/vendor/libgit2/include/git2/transaction.h +3 -2
  153. data/vendor/libgit2/include/git2/transport.h +11 -3
  154. data/vendor/libgit2/include/git2/tree.h +16 -5
  155. data/vendor/libgit2/include/git2/types.h +19 -3
  156. data/vendor/libgit2/include/git2/version.h +44 -8
  157. data/vendor/libgit2/include/git2/worktree.h +19 -7
  158. data/vendor/libgit2/src/CMakeLists.txt +40 -15
  159. data/vendor/libgit2/src/cli/CMakeLists.txt +2 -2
  160. data/vendor/libgit2/src/cli/cmd.c +1 -1
  161. data/vendor/libgit2/src/cli/cmd.h +4 -0
  162. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  163. data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
  164. data/vendor/libgit2/src/cli/cmd_clone.c +27 -13
  165. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  166. data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
  167. data/vendor/libgit2/src/cli/cmd_help.c +6 -7
  168. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  169. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  170. data/vendor/libgit2/src/cli/common.c +168 -0
  171. data/vendor/libgit2/src/cli/common.h +63 -0
  172. data/vendor/libgit2/src/cli/error.h +1 -1
  173. data/vendor/libgit2/src/cli/main.c +52 -24
  174. data/vendor/libgit2/src/cli/opt.c +29 -3
  175. data/vendor/libgit2/src/cli/opt.h +21 -3
  176. data/vendor/libgit2/src/cli/opt_usage.c +102 -33
  177. data/vendor/libgit2/src/cli/opt_usage.h +6 -1
  178. data/vendor/libgit2/src/cli/progress.c +60 -10
  179. data/vendor/libgit2/src/cli/progress.h +16 -4
  180. data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
  181. data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
  182. data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
  183. data/vendor/libgit2/src/libgit2/CMakeLists.txt +27 -27
  184. data/vendor/libgit2/src/libgit2/annotated_commit.c +2 -2
  185. data/vendor/libgit2/src/libgit2/annotated_commit.h +1 -1
  186. data/vendor/libgit2/src/libgit2/apply.c +14 -16
  187. data/vendor/libgit2/src/libgit2/attr.c +30 -13
  188. data/vendor/libgit2/src/libgit2/attr_file.c +7 -2
  189. data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
  190. data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
  191. data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
  192. data/vendor/libgit2/src/libgit2/blame.c +152 -59
  193. data/vendor/libgit2/src/libgit2/blame.h +1 -0
  194. data/vendor/libgit2/src/libgit2/blame_git.c +0 -1
  195. data/vendor/libgit2/src/libgit2/branch.c +2 -2
  196. data/vendor/libgit2/src/libgit2/cache.c +22 -17
  197. data/vendor/libgit2/src/libgit2/cache.h +7 -9
  198. data/vendor/libgit2/src/libgit2/checkout.c +34 -24
  199. data/vendor/libgit2/src/libgit2/checkout.h +0 -2
  200. data/vendor/libgit2/src/libgit2/cherrypick.c +4 -5
  201. data/vendor/libgit2/src/libgit2/clone.c +186 -164
  202. data/vendor/libgit2/src/libgit2/clone.h +4 -1
  203. data/vendor/libgit2/src/libgit2/commit.c +123 -9
  204. data/vendor/libgit2/src/libgit2/commit_graph.c +166 -88
  205. data/vendor/libgit2/src/libgit2/commit_graph.h +21 -6
  206. data/vendor/libgit2/src/libgit2/commit_list.c +12 -5
  207. data/vendor/libgit2/src/libgit2/commit_list.h +1 -0
  208. data/vendor/libgit2/src/libgit2/config.c +394 -300
  209. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  210. data/vendor/libgit2/src/libgit2/config.h +9 -4
  211. data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
  212. data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
  213. data/vendor/libgit2/src/libgit2/config_file.c +113 -96
  214. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  215. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  216. data/vendor/libgit2/src/libgit2/config_mem.c +194 -40
  217. data/vendor/libgit2/src/libgit2/config_parse.c +10 -9
  218. data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
  219. data/vendor/libgit2/src/libgit2/describe.c +34 -31
  220. data/vendor/libgit2/src/libgit2/diff.c +17 -8
  221. data/vendor/libgit2/src/libgit2/diff.h +6 -6
  222. data/vendor/libgit2/src/libgit2/diff_driver.c +12 -19
  223. data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
  224. data/vendor/libgit2/src/libgit2/diff_file.c +7 -7
  225. data/vendor/libgit2/src/libgit2/diff_generate.c +39 -18
  226. data/vendor/libgit2/src/libgit2/diff_parse.c +22 -6
  227. data/vendor/libgit2/src/libgit2/diff_print.c +88 -13
  228. data/vendor/libgit2/src/libgit2/diff_tform.c +40 -12
  229. data/vendor/libgit2/src/libgit2/diff_xdiff.h +1 -1
  230. data/vendor/libgit2/src/libgit2/email.c +5 -3
  231. data/vendor/libgit2/src/libgit2/fetch.c +39 -9
  232. data/vendor/libgit2/src/libgit2/fetch.h +0 -2
  233. data/vendor/libgit2/src/libgit2/fetchhead.c +11 -9
  234. data/vendor/libgit2/src/libgit2/filter.c +5 -5
  235. data/vendor/libgit2/src/libgit2/git2.rc +3 -3
  236. data/vendor/libgit2/src/libgit2/grafts.c +270 -0
  237. data/vendor/libgit2/src/libgit2/grafts.h +35 -0
  238. data/vendor/libgit2/src/libgit2/graph.c +1 -1
  239. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  240. data/vendor/libgit2/src/libgit2/ident.c +3 -3
  241. data/vendor/libgit2/src/libgit2/ignore.c +9 -5
  242. data/vendor/libgit2/src/libgit2/index.c +392 -208
  243. data/vendor/libgit2/src/libgit2/index.h +16 -3
  244. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  245. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  246. data/vendor/libgit2/src/libgit2/indexer.c +44 -41
  247. data/vendor/libgit2/src/libgit2/iterator.c +34 -13
  248. data/vendor/libgit2/src/libgit2/iterator.h +3 -0
  249. data/vendor/libgit2/src/libgit2/libgit2.c +155 -331
  250. data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
  251. data/vendor/libgit2/src/libgit2/merge.c +56 -46
  252. data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
  253. data/vendor/libgit2/src/libgit2/merge_file.c +0 -2
  254. data/vendor/libgit2/src/libgit2/midx.c +86 -44
  255. data/vendor/libgit2/src/libgit2/midx.h +13 -3
  256. data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
  257. data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
  258. data/vendor/libgit2/src/libgit2/notes.c +9 -8
  259. data/vendor/libgit2/src/libgit2/object.c +42 -16
  260. data/vendor/libgit2/src/libgit2/object.h +6 -0
  261. data/vendor/libgit2/src/libgit2/odb.c +16 -9
  262. data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
  263. data/vendor/libgit2/src/libgit2/odb_pack.c +28 -7
  264. data/vendor/libgit2/src/libgit2/oid.c +35 -2
  265. data/vendor/libgit2/src/libgit2/oid.h +11 -0
  266. data/vendor/libgit2/src/libgit2/oidarray.c +49 -3
  267. data/vendor/libgit2/src/libgit2/oidarray.h +5 -1
  268. data/vendor/libgit2/src/libgit2/pack-objects.c +77 -43
  269. data/vendor/libgit2/src/libgit2/pack-objects.h +17 -6
  270. data/vendor/libgit2/src/libgit2/pack.c +33 -27
  271. data/vendor/libgit2/src/libgit2/pack.h +15 -10
  272. data/vendor/libgit2/src/libgit2/parse.c +7 -4
  273. data/vendor/libgit2/src/libgit2/parse.h +1 -1
  274. data/vendor/libgit2/src/libgit2/patch.h +7 -1
  275. data/vendor/libgit2/src/libgit2/patch_generate.c +24 -5
  276. data/vendor/libgit2/src/libgit2/patch_parse.c +18 -10
  277. data/vendor/libgit2/src/libgit2/path.c +1 -1
  278. data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
  279. data/vendor/libgit2/src/libgit2/push.c +81 -30
  280. data/vendor/libgit2/src/libgit2/push.h +1 -0
  281. data/vendor/libgit2/src/libgit2/reader.c +1 -1
  282. data/vendor/libgit2/src/libgit2/rebase.c +72 -84
  283. data/vendor/libgit2/src/libgit2/refdb_fs.c +146 -70
  284. data/vendor/libgit2/src/libgit2/reflog.c +1 -2
  285. data/vendor/libgit2/src/libgit2/reflog.h +2 -0
  286. data/vendor/libgit2/src/libgit2/refs.c +34 -8
  287. data/vendor/libgit2/src/libgit2/refs.h +6 -1
  288. data/vendor/libgit2/src/libgit2/refspec.c +28 -1
  289. data/vendor/libgit2/src/libgit2/refspec.h +8 -0
  290. data/vendor/libgit2/src/libgit2/remote.c +136 -67
  291. data/vendor/libgit2/src/libgit2/remote.h +1 -0
  292. data/vendor/libgit2/src/libgit2/repository.c +789 -330
  293. data/vendor/libgit2/src/libgit2/repository.h +22 -3
  294. data/vendor/libgit2/src/libgit2/reset.c +2 -2
  295. data/vendor/libgit2/src/libgit2/revert.c +9 -13
  296. data/vendor/libgit2/src/libgit2/revparse.c +6 -3
  297. data/vendor/libgit2/src/libgit2/revwalk.c +36 -11
  298. data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
  299. data/vendor/libgit2/src/libgit2/settings.c +468 -0
  300. data/vendor/libgit2/src/libgit2/settings.h +6 -2
  301. data/vendor/libgit2/src/libgit2/signature.c +132 -15
  302. data/vendor/libgit2/src/libgit2/signature.h +0 -1
  303. data/vendor/libgit2/src/libgit2/stash.c +9 -8
  304. data/vendor/libgit2/src/libgit2/status.c +1 -1
  305. data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -61
  306. data/vendor/libgit2/src/libgit2/streams/openssl.c +40 -23
  307. data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
  308. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
  309. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
  310. data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
  311. data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
  312. data/vendor/libgit2/src/libgit2/streams/socket.c +237 -51
  313. data/vendor/libgit2/src/libgit2/streams/socket.h +3 -1
  314. data/vendor/libgit2/src/libgit2/streams/stransport.c +79 -19
  315. data/vendor/libgit2/src/libgit2/streams/tls.c +5 -0
  316. data/vendor/libgit2/src/libgit2/submodule.c +106 -63
  317. data/vendor/libgit2/src/libgit2/submodule.h +9 -10
  318. data/vendor/libgit2/src/libgit2/tag.c +1 -1
  319. data/vendor/libgit2/src/libgit2/trailer.c +6 -6
  320. data/vendor/libgit2/src/libgit2/transaction.c +26 -20
  321. data/vendor/libgit2/src/libgit2/transaction.h +4 -1
  322. data/vendor/libgit2/src/libgit2/transport.c +4 -1
  323. data/vendor/libgit2/src/libgit2/transports/auth.h +1 -2
  324. data/vendor/libgit2/src/libgit2/transports/{auth_negotiate.c → auth_gssapi.c} +32 -32
  325. data/vendor/libgit2/src/libgit2/transports/auth_negotiate.h +1 -1
  326. data/vendor/libgit2/src/libgit2/transports/auth_ntlm.h +1 -1
  327. data/vendor/libgit2/src/libgit2/transports/{auth_ntlm.c → auth_ntlmclient.c} +12 -12
  328. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
  329. data/vendor/libgit2/src/libgit2/transports/credential.c +1 -1
  330. data/vendor/libgit2/src/libgit2/transports/git.c +7 -8
  331. data/vendor/libgit2/src/libgit2/transports/http.c +8 -4
  332. data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
  333. data/vendor/libgit2/src/libgit2/transports/httpclient.c +117 -72
  334. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  335. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  336. data/vendor/libgit2/src/libgit2/transports/local.c +21 -11
  337. data/vendor/libgit2/src/libgit2/transports/smart.c +50 -32
  338. data/vendor/libgit2/src/libgit2/transports/smart.h +26 -9
  339. data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +139 -18
  340. data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +209 -57
  341. data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
  342. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  343. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  344. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1126 -0
  345. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  346. data/vendor/libgit2/src/libgit2/transports/winhttp.c +48 -21
  347. data/vendor/libgit2/src/libgit2/tree-cache.c +26 -16
  348. data/vendor/libgit2/src/libgit2/tree-cache.h +5 -3
  349. data/vendor/libgit2/src/libgit2/tree.c +35 -27
  350. data/vendor/libgit2/src/libgit2/tree.h +3 -2
  351. data/vendor/libgit2/src/libgit2/worktree.c +39 -27
  352. data/vendor/libgit2/src/util/CMakeLists.txt +4 -6
  353. data/vendor/libgit2/src/util/alloc.c +69 -7
  354. data/vendor/libgit2/src/util/alloc.h +34 -9
  355. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  356. data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
  357. data/vendor/libgit2/src/util/allocators/failalloc.c +0 -60
  358. data/vendor/libgit2/src/util/allocators/failalloc.h +0 -6
  359. data/vendor/libgit2/src/util/allocators/stdalloc.c +2 -115
  360. data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +0 -68
  361. data/vendor/libgit2/src/util/array.h +24 -18
  362. data/vendor/libgit2/src/util/cc-compat.h +4 -0
  363. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  364. data/vendor/libgit2/src/util/date.c +22 -14
  365. data/vendor/libgit2/src/util/date.h +12 -0
  366. data/vendor/libgit2/src/util/errors.c +401 -0
  367. data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
  368. data/vendor/libgit2/src/util/filebuf.c +6 -1
  369. data/vendor/libgit2/src/util/filebuf.h +19 -6
  370. data/vendor/libgit2/src/util/fs_path.c +16 -5
  371. data/vendor/libgit2/src/util/fs_path.h +23 -0
  372. data/vendor/libgit2/src/util/futils.c +14 -10
  373. data/vendor/libgit2/src/util/futils.h +13 -4
  374. data/vendor/libgit2/src/util/git2_features.h.in +21 -4
  375. data/vendor/libgit2/src/util/git2_util.h +6 -0
  376. data/vendor/libgit2/src/util/hash/openssl.c +152 -0
  377. data/vendor/libgit2/src/util/hash/openssl.h +17 -1
  378. data/vendor/libgit2/src/util/hash/sha.h +4 -1
  379. data/vendor/libgit2/src/util/hashmap.h +424 -0
  380. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  381. data/vendor/libgit2/src/util/integer.h +3 -1
  382. data/vendor/libgit2/src/util/net.c +318 -161
  383. data/vendor/libgit2/src/util/net.h +27 -0
  384. data/vendor/libgit2/src/util/pool.c +1 -1
  385. data/vendor/libgit2/src/util/pool.h +5 -0
  386. data/vendor/libgit2/src/util/posix.c +54 -0
  387. data/vendor/libgit2/src/util/posix.h +22 -0
  388. data/vendor/libgit2/src/util/pqueue.h +1 -1
  389. data/vendor/libgit2/src/util/process.h +222 -0
  390. data/vendor/libgit2/src/util/rand.c +6 -10
  391. data/vendor/libgit2/src/util/regexp.c +1 -1
  392. data/vendor/libgit2/src/util/sortedcache.c +14 -13
  393. data/vendor/libgit2/src/util/sortedcache.h +3 -3
  394. data/vendor/libgit2/src/util/staticstr.h +66 -0
  395. data/vendor/libgit2/src/util/str.c +2 -2
  396. data/vendor/libgit2/src/util/strlist.c +108 -0
  397. data/vendor/libgit2/src/util/strlist.h +36 -0
  398. data/vendor/libgit2/src/util/unix/posix.h +0 -2
  399. data/vendor/libgit2/src/util/unix/process.c +629 -0
  400. data/vendor/libgit2/src/util/unix/realpath.c +23 -5
  401. data/vendor/libgit2/src/util/util.c +17 -12
  402. data/vendor/libgit2/src/util/util.h +28 -54
  403. data/vendor/libgit2/src/util/vector.c +3 -3
  404. data/vendor/libgit2/src/util/vector.h +2 -2
  405. data/vendor/libgit2/src/util/win32/error.c +1 -1
  406. data/vendor/libgit2/src/util/win32/path_w32.c +8 -8
  407. data/vendor/libgit2/src/util/win32/posix_w32.c +30 -7
  408. data/vendor/libgit2/src/util/win32/process.c +506 -0
  409. data/vendor/libgit2/src/util/win32/utf-conv.c +73 -75
  410. data/vendor/libgit2/src/util/win32/utf-conv.h +81 -14
  411. data/vendor/libgit2/src/util/win32/w32_util.c +1 -1
  412. metadata +72 -49
  413. data/vendor/libgit2/cmake/SelectWinHTTP.cmake +0 -17
  414. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  415. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  416. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  417. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  418. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  419. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  420. data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
  421. data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
  422. data/vendor/libgit2/src/libgit2/errors.c +0 -238
  423. data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
  424. data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
  425. data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
  426. data/vendor/libgit2/src/libgit2/netops.c +0 -124
  427. data/vendor/libgit2/src/libgit2/netops.h +0 -68
  428. data/vendor/libgit2/src/libgit2/offmap.c +0 -101
  429. data/vendor/libgit2/src/libgit2/offmap.h +0 -133
  430. data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
  431. data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
  432. data/vendor/libgit2/src/libgit2/threadstate.c +0 -84
  433. data/vendor/libgit2/src/libgit2/threadstate.h +0 -24
  434. data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
  435. data/vendor/libgit2/src/util/khash.h +0 -615
  436. data/vendor/libgit2/src/util/strmap.c +0 -100
  437. data/vendor/libgit2/src/util/strmap.h +0 -131
  438. /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
  439. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiff.h +0 -0
  440. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.h +0 -0
  441. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xinclude.h +0 -0
  442. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.h +0 -0
  443. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xtypes.h +0 -0
@@ -14,6 +14,9 @@
14
14
  #include "odb.h"
15
15
  #include "object.h"
16
16
  #include "git2/oid.h"
17
+ #include "hashmap_oid.h"
18
+
19
+ GIT_HASHMAP_OID_FUNCTIONS(git_cache_oidmap, GIT_HASHMAP_INLINE, git_cached_obj *);
17
20
 
18
21
  bool git_cache__enabled = true;
19
22
  ssize_t git_cache__max_storage = (256 * 1024 * 1024);
@@ -45,9 +48,6 @@ int git_cache_init(git_cache *cache)
45
48
  {
46
49
  memset(cache, 0, sizeof(*cache));
47
50
 
48
- if ((git_oidmap_new(&cache->map)) < 0)
49
- return -1;
50
-
51
51
  if (git_rwlock_init(&cache->lock)) {
52
52
  git_error_set(GIT_ERROR_OS, "failed to initialize cache rwlock");
53
53
  return -1;
@@ -60,15 +60,15 @@ int git_cache_init(git_cache *cache)
60
60
  static void clear_cache(git_cache *cache)
61
61
  {
62
62
  git_cached_obj *evict = NULL;
63
+ git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
63
64
 
64
65
  if (git_cache_size(cache) == 0)
65
66
  return;
66
67
 
67
- git_oidmap_foreach_value(cache->map, evict, {
68
+ while (git_cache_oidmap_iterate(&iter, NULL, &evict, &cache->map) == 0)
68
69
  git_cached_obj_decref(evict);
69
- });
70
70
 
71
- git_oidmap_clear(cache->map);
71
+ git_cache_oidmap_clear(&cache->map);
72
72
  git_atomic_ssize_add(&git_cache__current_storage, -cache->used_memory);
73
73
  cache->used_memory = 0;
74
74
  }
@@ -83,10 +83,15 @@ void git_cache_clear(git_cache *cache)
83
83
  git_rwlock_wrunlock(&cache->lock);
84
84
  }
85
85
 
86
+ size_t git_cache_size(git_cache *cache)
87
+ {
88
+ return git_cache_oidmap_size(&cache->map);
89
+ }
90
+
86
91
  void git_cache_dispose(git_cache *cache)
87
92
  {
88
93
  git_cache_clear(cache);
89
- git_oidmap_free(cache->map);
94
+ git_cache_oidmap_dispose(&cache->map);
90
95
  git_rwlock_free(&cache->lock);
91
96
  git__memzero(cache, sizeof(*cache));
92
97
  }
@@ -94,8 +99,9 @@ void git_cache_dispose(git_cache *cache)
94
99
  /* Called with lock */
95
100
  static void cache_evict_entries(git_cache *cache)
96
101
  {
97
- size_t evict_count = git_cache_size(cache) / 2048, i;
102
+ size_t evict_count = git_cache_size(cache) / 2048;
98
103
  ssize_t evicted_memory = 0;
104
+ git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
99
105
 
100
106
  if (evict_count < 8)
101
107
  evict_count = 8;
@@ -106,17 +112,16 @@ static void cache_evict_entries(git_cache *cache)
106
112
  return;
107
113
  }
108
114
 
109
- i = 0;
110
115
  while (evict_count > 0) {
111
- git_cached_obj *evict;
112
116
  const git_oid *key;
117
+ git_cached_obj *evict;
113
118
 
114
- if (git_oidmap_iterate((void **) &evict, cache->map, &i, &key) == GIT_ITEROVER)
119
+ if (git_cache_oidmap_iterate(&iter, &key, &evict, &cache->map) != 0)
115
120
  break;
116
121
 
117
122
  evict_count--;
118
123
  evicted_memory += evict->size;
119
- git_oidmap_delete(cache->map, key);
124
+ git_cache_oidmap_remove(&cache->map, key);
120
125
  git_cached_obj_decref(evict);
121
126
  }
122
127
 
@@ -132,12 +137,12 @@ static bool cache_should_store(git_object_t object_type, size_t object_size)
132
137
 
133
138
  static void *cache_get(git_cache *cache, const git_oid *oid, unsigned int flags)
134
139
  {
135
- git_cached_obj *entry;
140
+ git_cached_obj *entry = NULL;
136
141
 
137
142
  if (!git_cache__enabled || git_rwlock_rdlock(&cache->lock) < 0)
138
143
  return NULL;
139
144
 
140
- if ((entry = git_oidmap_get(cache->map, oid)) != NULL) {
145
+ if (git_cache_oidmap_get(&entry, &cache->map, oid) == 0) {
141
146
  if (flags && entry->flags != flags) {
142
147
  entry = NULL;
143
148
  } else {
@@ -172,8 +177,8 @@ static void *cache_store(git_cache *cache, git_cached_obj *entry)
172
177
  cache_evict_entries(cache);
173
178
 
174
179
  /* not found */
175
- if ((stored_entry = git_oidmap_get(cache->map, &entry->oid)) == NULL) {
176
- if (git_oidmap_set(cache->map, &entry->oid, entry) == 0) {
180
+ if (git_cache_oidmap_get(&stored_entry, &cache->map, &entry->oid) != 0) {
181
+ if (git_cache_oidmap_put(&cache->map, &entry->oid, entry) == 0) {
177
182
  git_cached_obj_incref(entry);
178
183
  cache->used_memory += entry->size;
179
184
  git_atomic_ssize_add(&git_cache__current_storage, (ssize_t)entry->size);
@@ -187,7 +192,7 @@ static void *cache_store(git_cache *cache, git_cached_obj *entry)
187
192
  entry = stored_entry;
188
193
  } else if (stored_entry->flags == GIT_CACHE_STORE_RAW &&
189
194
  entry->flags == GIT_CACHE_STORE_PARSED) {
190
- if (git_oidmap_set(cache->map, &entry->oid, entry) == 0) {
195
+ if (git_cache_oidmap_put(&cache->map, &entry->oid, entry) == 0) {
191
196
  git_cached_obj_decref(stored_entry);
192
197
  git_cached_obj_incref(entry);
193
198
  } else {
@@ -14,7 +14,7 @@
14
14
  #include "git2/odb.h"
15
15
 
16
16
  #include "thread.h"
17
- #include "oidmap.h"
17
+ #include "hashmap_oid.h"
18
18
 
19
19
  enum {
20
20
  GIT_CACHE_STORE_ANY = 0,
@@ -30,10 +30,12 @@ typedef struct {
30
30
  git_atomic32 refcount;
31
31
  } git_cached_obj;
32
32
 
33
+ GIT_HASHMAP_OID_STRUCT(git_cache_oidmap, git_cached_obj *);
34
+
33
35
  typedef struct {
34
- git_oidmap *map;
35
- git_rwlock lock;
36
- ssize_t used_memory;
36
+ git_cache_oidmap map;
37
+ git_rwlock lock;
38
+ ssize_t used_memory;
37
39
  } git_cache;
38
40
 
39
41
  extern bool git_cache__enabled;
@@ -45,6 +47,7 @@ int git_cache_set_max_object_size(git_object_t type, size_t size);
45
47
  int git_cache_init(git_cache *cache);
46
48
  void git_cache_dispose(git_cache *cache);
47
49
  void git_cache_clear(git_cache *cache);
50
+ size_t git_cache_size(git_cache *cache);
48
51
 
49
52
  void *git_cache_store_raw(git_cache *cache, git_odb_object *entry);
50
53
  void *git_cache_store_parsed(git_cache *cache, git_object *entry);
@@ -53,11 +56,6 @@ git_odb_object *git_cache_get_raw(git_cache *cache, const git_oid *oid);
53
56
  git_object *git_cache_get_parsed(git_cache *cache, const git_oid *oid);
54
57
  void *git_cache_get_any(git_cache *cache, const git_oid *oid);
55
58
 
56
- GIT_INLINE(size_t) git_cache_size(git_cache *cache)
57
- {
58
- return (size_t)git_oidmap_size(cache->map);
59
- }
60
-
61
59
  GIT_INLINE(void) git_cached_obj_incref(void *_obj)
62
60
  {
63
61
  git_cached_obj *obj = _obj;
@@ -30,8 +30,8 @@
30
30
  #include "fs_path.h"
31
31
  #include "attr.h"
32
32
  #include "pool.h"
33
- #include "strmap.h"
34
33
  #include "path.h"
34
+ #include "hashmap_str.h"
35
35
 
36
36
  /* See docs/checkout-internals.md for more information */
37
37
 
@@ -72,7 +72,7 @@ typedef struct {
72
72
  size_t total_steps;
73
73
  size_t completed_steps;
74
74
  git_checkout_perfdata perfdata;
75
- git_strmap *mkdir_map;
75
+ git_hashset_str mkdir_pathcache;
76
76
  git_attr_session attr_session;
77
77
  } checkout_data;
78
78
 
@@ -294,6 +294,9 @@ static int checkout_action_no_wd(
294
294
 
295
295
  *action = CHECKOUT_ACTION__NONE;
296
296
 
297
+ if ((data->strategy & GIT_CHECKOUT_NONE))
298
+ return 0;
299
+
297
300
  switch (delta->status) {
298
301
  case GIT_DELTA_UNMODIFIED: /* case 12 */
299
302
  error = checkout_notify(data, GIT_CHECKOUT_NOTIFY_DIRTY, delta, NULL);
@@ -302,17 +305,17 @@ static int checkout_action_no_wd(
302
305
  *action = CHECKOUT_ACTION_IF(RECREATE_MISSING, UPDATE_BLOB, NONE);
303
306
  break;
304
307
  case GIT_DELTA_ADDED: /* case 2 or 28 (and 5 but not really) */
305
- *action = CHECKOUT_ACTION_IF(SAFE, UPDATE_BLOB, NONE);
308
+ *action = CHECKOUT_ACTION__UPDATE_BLOB;
306
309
  break;
307
310
  case GIT_DELTA_MODIFIED: /* case 13 (and 35 but not really) */
308
311
  *action = CHECKOUT_ACTION_IF(RECREATE_MISSING, UPDATE_BLOB, CONFLICT);
309
312
  break;
310
313
  case GIT_DELTA_TYPECHANGE: /* case 21 (B->T) and 28 (T->B)*/
311
314
  if (delta->new_file.mode == GIT_FILEMODE_TREE)
312
- *action = CHECKOUT_ACTION_IF(SAFE, UPDATE_BLOB, NONE);
315
+ *action = CHECKOUT_ACTION__UPDATE_BLOB;
313
316
  break;
314
317
  case GIT_DELTA_DELETED: /* case 8 or 25 */
315
- *action = CHECKOUT_ACTION_IF(SAFE, REMOVE, NONE);
318
+ *action = CHECKOUT_ACTION__REMOVE;
316
319
  break;
317
320
  default: /* impossible */
318
321
  break;
@@ -494,6 +497,9 @@ static int checkout_action_with_wd(
494
497
  {
495
498
  *action = CHECKOUT_ACTION__NONE;
496
499
 
500
+ if ((data->strategy & GIT_CHECKOUT_NONE))
501
+ return 0;
502
+
497
503
  switch (delta->status) {
498
504
  case GIT_DELTA_UNMODIFIED: /* case 14/15 or 33 */
499
505
  if (checkout_is_workdir_modified(data, &delta->old_file, &delta->new_file, wd)) {
@@ -512,14 +518,14 @@ static int checkout_action_with_wd(
512
518
  if (checkout_is_workdir_modified(data, &delta->old_file, &delta->new_file, wd))
513
519
  *action = CHECKOUT_ACTION_IF(FORCE, REMOVE, CONFLICT);
514
520
  else
515
- *action = CHECKOUT_ACTION_IF(SAFE, REMOVE, NONE);
521
+ *action = CHECKOUT_ACTION__REMOVE;
516
522
  break;
517
523
  case GIT_DELTA_MODIFIED: /* case 16, 17, 18 (or 36 but not really) */
518
524
  if (wd->mode != GIT_FILEMODE_COMMIT &&
519
525
  checkout_is_workdir_modified(data, &delta->old_file, &delta->new_file, wd))
520
526
  *action = CHECKOUT_ACTION_IF(FORCE, UPDATE_BLOB, CONFLICT);
521
527
  else
522
- *action = CHECKOUT_ACTION_IF(SAFE, UPDATE_BLOB, NONE);
528
+ *action = CHECKOUT_ACTION__UPDATE_BLOB;
523
529
  break;
524
530
  case GIT_DELTA_TYPECHANGE: /* case 22, 23, 29, 30 */
525
531
  if (delta->old_file.mode == GIT_FILEMODE_TREE) {
@@ -527,13 +533,13 @@ static int checkout_action_with_wd(
527
533
  /* either deleting items in old tree will delete the wd dir,
528
534
  * or we'll get a conflict when we attempt blob update...
529
535
  */
530
- *action = CHECKOUT_ACTION_IF(SAFE, UPDATE_BLOB, NONE);
536
+ *action = CHECKOUT_ACTION__UPDATE_BLOB;
531
537
  else if (wd->mode == GIT_FILEMODE_COMMIT) {
532
538
  /* workdir is possibly a "phantom" submodule - treat as a
533
539
  * tree if the only submodule info came from the config
534
540
  */
535
541
  if (submodule_is_config_only(data, wd->path))
536
- *action = CHECKOUT_ACTION_IF(SAFE, UPDATE_BLOB, NONE);
542
+ *action = CHECKOUT_ACTION__UPDATE_BLOB;
537
543
  else
538
544
  *action = CHECKOUT_ACTION_IF(FORCE, REMOVE_AND_UPDATE, CONFLICT);
539
545
  } else
@@ -542,7 +548,7 @@ static int checkout_action_with_wd(
542
548
  else if (checkout_is_workdir_modified(data, &delta->old_file, &delta->new_file, wd))
543
549
  *action = CHECKOUT_ACTION_IF(FORCE, REMOVE_AND_UPDATE, CONFLICT);
544
550
  else
545
- *action = CHECKOUT_ACTION_IF(SAFE, REMOVE_AND_UPDATE, NONE);
551
+ *action = CHECKOUT_ACTION__REMOVE_AND_UPDATE;
546
552
 
547
553
  /* don't update if the typechange is to a tree */
548
554
  if (delta->new_file.mode == GIT_FILEMODE_TREE)
@@ -563,6 +569,9 @@ static int checkout_action_with_wd_blocker(
563
569
  {
564
570
  *action = CHECKOUT_ACTION__NONE;
565
571
 
572
+ if ((data->strategy & GIT_CHECKOUT_NONE))
573
+ return 0;
574
+
566
575
  switch (delta->status) {
567
576
  case GIT_DELTA_UNMODIFIED:
568
577
  /* should show delta as dirty / deleted */
@@ -597,6 +606,9 @@ static int checkout_action_with_wd_dir(
597
606
  {
598
607
  *action = CHECKOUT_ACTION__NONE;
599
608
 
609
+ if ((data->strategy & GIT_CHECKOUT_NONE))
610
+ return 0;
611
+
600
612
  switch (delta->status) {
601
613
  case GIT_DELTA_UNMODIFIED: /* case 19 or 24 (or 34 but not really) */
602
614
  GIT_ERROR_CHECK_ERROR(
@@ -627,7 +639,7 @@ static int checkout_action_with_wd_dir(
627
639
  * directory if is it left empty, so we can defer removing the
628
640
  * dir and it will succeed if no children are left.
629
641
  */
630
- *action = CHECKOUT_ACTION_IF(SAFE, UPDATE_BLOB, NONE);
642
+ *action = CHECKOUT_ACTION__UPDATE_BLOB;
631
643
  }
632
644
  else if (delta->new_file.mode != GIT_FILEMODE_TREE)
633
645
  /* For typechange to dir, dir is already created so no action */
@@ -1419,8 +1431,10 @@ static int checkout_mkdir(
1419
1431
  struct git_futils_mkdir_options mkdir_opts = {0};
1420
1432
  int error;
1421
1433
 
1422
- mkdir_opts.dir_map = data->mkdir_map;
1423
- mkdir_opts.pool = &data->pool;
1434
+ if (git_pool_is_initialized(&data->pool)) {
1435
+ mkdir_opts.cache_pool = &data->pool;
1436
+ mkdir_opts.cache_pathset = &data->mkdir_pathcache;
1437
+ }
1424
1438
 
1425
1439
  error = git_futils_mkdir_relative(
1426
1440
  path, base, mode, flags, &mkdir_opts);
@@ -2316,11 +2330,11 @@ static void checkout_data_clear(checkout_data *data)
2316
2330
  data->opts.baseline = NULL;
2317
2331
  }
2318
2332
 
2319
- git_vector_free(&data->removes);
2333
+ git_vector_dispose(&data->removes);
2320
2334
  git_pool_clear(&data->pool);
2321
2335
 
2322
- git_vector_free_deep(&data->remove_conflicts);
2323
- git_vector_free_deep(&data->update_conflicts);
2336
+ git_vector_dispose_deep(&data->remove_conflicts);
2337
+ git_vector_dispose_deep(&data->update_conflicts);
2324
2338
 
2325
2339
  git__free(data->pfx);
2326
2340
  data->pfx = NULL;
@@ -2331,8 +2345,7 @@ static void checkout_data_clear(checkout_data *data)
2331
2345
  git_index_free(data->index);
2332
2346
  data->index = NULL;
2333
2347
 
2334
- git_strmap_free(data->mkdir_map);
2335
- data->mkdir_map = NULL;
2348
+ git_hashset_str_dispose(&data->mkdir_pathcache);
2336
2349
 
2337
2350
  git_attr_session__free(&data->attr_session);
2338
2351
  }
@@ -2432,14 +2445,12 @@ static int checkout_data_init(
2432
2445
 
2433
2446
  /* if you are forcing, allow all safe updates, plus recreate missing */
2434
2447
  if ((data->opts.checkout_strategy & GIT_CHECKOUT_FORCE) != 0)
2435
- data->opts.checkout_strategy |= GIT_CHECKOUT_SAFE |
2436
- GIT_CHECKOUT_RECREATE_MISSING;
2448
+ data->opts.checkout_strategy |= GIT_CHECKOUT_RECREATE_MISSING;
2437
2449
 
2438
2450
  /* if the repository does not actually have an index file, then this
2439
2451
  * is an initial checkout (perhaps from clone), so we allow safe updates
2440
2452
  */
2441
- if (!data->index->on_disk &&
2442
- (data->opts.checkout_strategy & GIT_CHECKOUT_SAFE) != 0)
2453
+ if (!data->index->on_disk)
2443
2454
  data->opts.checkout_strategy |= GIT_CHECKOUT_RECREATE_MISSING;
2444
2455
 
2445
2456
  data->strategy = data->opts.checkout_strategy;
@@ -2513,8 +2524,7 @@ static int checkout_data_init(
2513
2524
  (error = git_vector_init(&data->remove_conflicts, 0, NULL)) < 0 ||
2514
2525
  (error = git_vector_init(&data->update_conflicts, 0, NULL)) < 0 ||
2515
2526
  (error = git_str_puts(&data->target_path, data->opts.target_directory)) < 0 ||
2516
- (error = git_fs_path_to_dir(&data->target_path)) < 0 ||
2517
- (error = git_strmap_new(&data->mkdir_map)) < 0)
2527
+ (error = git_fs_path_to_dir(&data->target_path)) < 0)
2518
2528
  goto cleanup;
2519
2529
 
2520
2530
  data->target_len = git_str_len(&data->target_path);
@@ -12,8 +12,6 @@
12
12
  #include "git2/checkout.h"
13
13
  #include "iterator.h"
14
14
 
15
- #define GIT_CHECKOUT__NOTIFY_CONFLICT_TREE (1u << 12)
16
-
17
15
  /**
18
16
  * Update the working directory to match the target iterator. The
19
17
  * expected baseline value can be passed in via the checkout options
@@ -73,8 +73,7 @@ static int cherrypick_normalize_opts(
73
73
  const char *their_label)
74
74
  {
75
75
  int error = 0;
76
- unsigned int default_checkout_strategy = GIT_CHECKOUT_SAFE |
77
- GIT_CHECKOUT_ALLOW_CONFLICTS;
76
+ unsigned int default_checkout_strategy = GIT_CHECKOUT_ALLOW_CONFLICTS;
78
77
 
79
78
  GIT_UNUSED(repo);
80
79
 
@@ -106,10 +105,10 @@ static int cherrypick_state_cleanup(git_repository *repo)
106
105
 
107
106
  static int cherrypick_seterr(git_commit *commit, const char *fmt)
108
107
  {
109
- char commit_oidstr[GIT_OID_SHA1_HEXSIZE + 1];
108
+ char commit_oidstr[GIT_OID_MAX_HEXSIZE + 1];
110
109
 
111
110
  git_error_set(GIT_ERROR_CHERRYPICK, fmt,
112
- git_oid_tostr(commit_oidstr, GIT_OID_SHA1_HEXSIZE + 1, git_commit_id(commit)));
111
+ git_oid_tostr(commit_oidstr, GIT_OID_MAX_HEXSIZE + 1, git_commit_id(commit)));
113
112
 
114
113
  return -1;
115
114
  }
@@ -173,7 +172,7 @@ int git_cherrypick(
173
172
  git_cherrypick_options opts;
174
173
  git_reference *our_ref = NULL;
175
174
  git_commit *our_commit = NULL;
176
- char commit_oidstr[GIT_OID_SHA1_HEXSIZE + 1];
175
+ char commit_oidstr[GIT_OID_MAX_HEXSIZE + 1];
177
176
  const char *commit_msg, *commit_summary;
178
177
  git_str their_label = GIT_STR_INIT;
179
178
  git_index *index = NULL;