rugged 1.3.1 → 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 (656) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/ext/rugged/extconf.rb +6 -3
  4. data/ext/rugged/rugged.c +16 -0
  5. data/ext/rugged/rugged.h +4 -0
  6. data/ext/rugged/rugged_allocator.c +0 -54
  7. data/ext/rugged/rugged_blame.c +2 -0
  8. data/ext/rugged/rugged_blob.c +3 -0
  9. data/ext/rugged/rugged_commit.c +1 -0
  10. data/ext/rugged/rugged_config.c +9 -2
  11. data/ext/rugged/rugged_diff.c +1 -0
  12. data/ext/rugged/rugged_index.c +2 -0
  13. data/ext/rugged/rugged_patch.c +1 -0
  14. data/ext/rugged/rugged_rebase.c +1 -0
  15. data/ext/rugged/rugged_reference.c +1 -0
  16. data/ext/rugged/rugged_remote.c +28 -10
  17. data/ext/rugged/rugged_repo.c +7 -9
  18. data/ext/rugged/rugged_revwalk.c +5 -1
  19. data/ext/rugged/rugged_settings.c +5 -0
  20. data/ext/rugged/rugged_submodule.c +1 -0
  21. data/ext/rugged/rugged_tag.c +1 -0
  22. data/ext/rugged/rugged_tree.c +4 -0
  23. data/lib/rugged/index.rb +1 -1
  24. data/lib/rugged/tree.rb +5 -1
  25. data/lib/rugged/version.rb +1 -1
  26. data/vendor/libgit2/AUTHORS +1 -0
  27. data/vendor/libgit2/CMakeLists.txt +141 -289
  28. data/vendor/libgit2/COPYING +301 -20
  29. data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
  30. data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
  31. data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
  32. data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
  33. data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
  34. data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
  35. data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
  36. data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
  37. data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
  38. data/vendor/libgit2/cmake/FindHTTP_Parser.cmake +17 -17
  39. data/vendor/libgit2/cmake/FindIntlIconv.cmake +51 -0
  40. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  41. data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
  42. data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
  43. data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
  44. data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
  45. data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
  46. data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
  47. data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
  48. data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
  49. data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
  50. data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
  51. data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
  52. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
  53. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +34 -0
  54. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +129 -101
  55. data/vendor/libgit2/cmake/SelectHashes.cmake +113 -54
  56. data/vendor/libgit2/cmake/SelectRegex.cmake +56 -0
  57. data/vendor/libgit2/cmake/SelectSSH.cmake +46 -0
  58. data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
  59. data/vendor/libgit2/cmake/SelectZlib.cmake +38 -0
  60. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
  61. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  62. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  63. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  64. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  65. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  66. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  67. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
  68. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  69. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  70. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  71. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +7 -5
  72. data/vendor/libgit2/deps/ntlmclient/ntlm.c +25 -25
  73. data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
  74. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
  75. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  76. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  77. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  78. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  79. data/vendor/libgit2/deps/pcre/CMakeLists.txt +89 -88
  80. data/vendor/libgit2/deps/pcre/LICENCE +5 -5
  81. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  82. data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
  83. data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
  84. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
  85. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
  86. data/vendor/libgit2/deps/xdiff/git-xdiff.h +56 -0
  87. data/vendor/libgit2/{src → deps}/xdiff/xdiff.h +15 -15
  88. data/vendor/libgit2/{src → deps}/xdiff/xdiffi.c +152 -125
  89. data/vendor/libgit2/{src → deps}/xdiff/xdiffi.h +2 -4
  90. data/vendor/libgit2/{src → deps}/xdiff/xemit.c +26 -10
  91. data/vendor/libgit2/{src → deps}/xdiff/xhistogram.c +92 -94
  92. data/vendor/libgit2/{src → deps}/xdiff/xinclude.h +1 -12
  93. data/vendor/libgit2/{src → deps}/xdiff/xmacros.h +18 -1
  94. data/vendor/libgit2/{src → deps}/xdiff/xmerge.c +126 -137
  95. data/vendor/libgit2/{src → deps}/xdiff/xpatience.c +26 -46
  96. data/vendor/libgit2/{src → deps}/xdiff/xprepare.c +24 -46
  97. data/vendor/libgit2/{src → deps}/xdiff/xutils.c +36 -8
  98. data/vendor/libgit2/{src → deps}/xdiff/xutils.h +2 -1
  99. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  100. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  101. data/vendor/libgit2/deps/zlib/adler32.c +7 -22
  102. data/vendor/libgit2/deps/zlib/crc32.c +931 -317
  103. data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
  104. data/vendor/libgit2/deps/zlib/deflate.c +428 -453
  105. data/vendor/libgit2/deps/zlib/deflate.h +51 -23
  106. data/vendor/libgit2/deps/zlib/gzguts.h +15 -19
  107. data/vendor/libgit2/deps/zlib/infback.c +19 -31
  108. data/vendor/libgit2/deps/zlib/inffast.c +15 -18
  109. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  110. data/vendor/libgit2/deps/zlib/inflate.c +75 -110
  111. data/vendor/libgit2/deps/zlib/inflate.h +3 -2
  112. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  113. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  114. data/vendor/libgit2/deps/zlib/trees.c +294 -380
  115. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  116. data/vendor/libgit2/deps/zlib/zlib.h +310 -284
  117. data/vendor/libgit2/deps/zlib/zutil.c +20 -46
  118. data/vendor/libgit2/deps/zlib/zutil.h +24 -41
  119. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  120. data/vendor/libgit2/include/git2/apply.h +43 -8
  121. data/vendor/libgit2/include/git2/attr.h +28 -6
  122. data/vendor/libgit2/include/git2/blame.h +137 -29
  123. data/vendor/libgit2/include/git2/blob.h +85 -29
  124. data/vendor/libgit2/include/git2/branch.h +25 -16
  125. data/vendor/libgit2/include/git2/buffer.h +24 -82
  126. data/vendor/libgit2/include/git2/cert.h +4 -3
  127. data/vendor/libgit2/include/git2/checkout.h +88 -34
  128. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  129. data/vendor/libgit2/include/git2/clone.h +28 -12
  130. data/vendor/libgit2/include/git2/commit.h +134 -3
  131. data/vendor/libgit2/include/git2/common.h +172 -59
  132. data/vendor/libgit2/include/git2/config.h +118 -32
  133. data/vendor/libgit2/include/git2/credential.h +32 -3
  134. data/vendor/libgit2/include/git2/credential_helpers.h +2 -0
  135. data/vendor/libgit2/include/git2/deprecated.h +141 -3
  136. data/vendor/libgit2/include/git2/describe.h +20 -3
  137. data/vendor/libgit2/include/git2/diff.h +95 -19
  138. data/vendor/libgit2/include/git2/email.h +10 -30
  139. data/vendor/libgit2/include/git2/errors.h +51 -61
  140. data/vendor/libgit2/include/git2/experimental.h +20 -0
  141. data/vendor/libgit2/include/git2/filter.h +21 -9
  142. data/vendor/libgit2/include/git2/global.h +8 -1
  143. data/vendor/libgit2/include/git2/graph.h +4 -2
  144. data/vendor/libgit2/include/git2/ignore.h +11 -1
  145. data/vendor/libgit2/include/git2/index.h +111 -11
  146. data/vendor/libgit2/include/git2/indexer.h +67 -2
  147. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  148. data/vendor/libgit2/include/git2/merge.h +70 -5
  149. data/vendor/libgit2/include/git2/message.h +4 -2
  150. data/vendor/libgit2/include/git2/net.h +3 -1
  151. data/vendor/libgit2/include/git2/notes.h +9 -6
  152. data/vendor/libgit2/include/git2/object.h +57 -7
  153. data/vendor/libgit2/include/git2/odb.h +156 -33
  154. data/vendor/libgit2/include/git2/odb_backend.h +132 -16
  155. data/vendor/libgit2/include/git2/oid.h +116 -17
  156. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  157. data/vendor/libgit2/include/git2/pack.h +37 -9
  158. data/vendor/libgit2/include/git2/patch.h +10 -3
  159. data/vendor/libgit2/include/git2/pathspec.h +10 -1
  160. data/vendor/libgit2/include/git2/proxy.h +11 -1
  161. data/vendor/libgit2/include/git2/rebase.h +18 -7
  162. data/vendor/libgit2/include/git2/refdb.h +5 -2
  163. data/vendor/libgit2/include/git2/reflog.h +4 -3
  164. data/vendor/libgit2/include/git2/refs.h +11 -8
  165. data/vendor/libgit2/include/git2/refspec.h +14 -4
  166. data/vendor/libgit2/include/git2/remote.h +295 -54
  167. data/vendor/libgit2/include/git2/repository.h +95 -25
  168. data/vendor/libgit2/include/git2/reset.h +18 -5
  169. data/vendor/libgit2/include/git2/revert.h +9 -4
  170. data/vendor/libgit2/include/git2/revparse.h +4 -4
  171. data/vendor/libgit2/include/git2/revwalk.h +7 -3
  172. data/vendor/libgit2/include/git2/signature.h +47 -2
  173. data/vendor/libgit2/include/git2/stash.h +78 -10
  174. data/vendor/libgit2/include/git2/status.h +24 -11
  175. data/vendor/libgit2/include/git2/stdint.h +87 -85
  176. data/vendor/libgit2/include/git2/strarray.h +2 -16
  177. data/vendor/libgit2/include/git2/submodule.h +27 -11
  178. data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
  179. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  180. data/vendor/libgit2/include/git2/sys/commit_graph.h +110 -59
  181. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  182. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  183. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  184. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  185. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  186. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  187. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  188. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  189. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  190. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  191. data/vendor/libgit2/include/git2/sys/midx.h +47 -4
  192. data/vendor/libgit2/include/git2/sys/odb_backend.h +10 -9
  193. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  194. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  195. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  196. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  197. data/vendor/libgit2/include/git2/sys/remote.h +53 -0
  198. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  199. data/vendor/libgit2/include/git2/sys/stream.h +26 -3
  200. data/vendor/libgit2/include/git2/sys/transport.h +87 -41
  201. data/vendor/libgit2/include/git2/tag.h +4 -1
  202. data/vendor/libgit2/include/git2/trace.h +9 -3
  203. data/vendor/libgit2/include/git2/transaction.h +3 -2
  204. data/vendor/libgit2/include/git2/transport.h +11 -3
  205. data/vendor/libgit2/include/git2/tree.h +20 -8
  206. data/vendor/libgit2/include/git2/types.h +26 -10
  207. data/vendor/libgit2/include/git2/version.h +63 -6
  208. data/vendor/libgit2/include/git2/worktree.h +30 -8
  209. data/vendor/libgit2/include/git2.h +1 -0
  210. data/vendor/libgit2/src/CMakeLists.txt +203 -420
  211. data/vendor/libgit2/src/README.md +12 -0
  212. data/vendor/libgit2/src/cli/CMakeLists.txt +56 -0
  213. data/vendor/libgit2/src/cli/README.md +26 -0
  214. data/vendor/libgit2/src/{branch.h → cli/cmd.c} +10 -8
  215. data/vendor/libgit2/src/cli/cmd.h +37 -0
  216. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  217. data/vendor/libgit2/src/cli/cmd_cat_file.c +202 -0
  218. data/vendor/libgit2/src/cli/cmd_clone.c +190 -0
  219. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  220. data/vendor/libgit2/src/cli/cmd_hash_object.c +152 -0
  221. data/vendor/libgit2/src/cli/cmd_help.c +85 -0
  222. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  223. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  224. data/vendor/libgit2/src/cli/common.c +168 -0
  225. data/vendor/libgit2/src/cli/common.h +63 -0
  226. data/vendor/libgit2/src/cli/error.h +51 -0
  227. data/vendor/libgit2/src/cli/main.c +134 -0
  228. data/vendor/libgit2/src/cli/opt.c +695 -0
  229. data/vendor/libgit2/src/cli/opt.h +367 -0
  230. data/vendor/libgit2/src/cli/opt_usage.c +263 -0
  231. data/vendor/libgit2/src/cli/opt_usage.h +40 -0
  232. data/vendor/libgit2/src/cli/progress.c +395 -0
  233. data/vendor/libgit2/src/cli/progress.h +129 -0
  234. data/vendor/libgit2/src/cli/sighandler.h +20 -0
  235. data/vendor/libgit2/src/cli/unix/sighandler.c +37 -0
  236. data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
  237. data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
  238. data/vendor/libgit2/src/libgit2/CMakeLists.txt +140 -0
  239. data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +2 -2
  240. data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
  241. data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +32 -34
  242. data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
  243. data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +48 -31
  244. data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +25 -20
  245. data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +6 -4
  246. data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +87 -46
  247. data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +5 -9
  248. data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +152 -57
  249. data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +1 -0
  250. data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -2
  251. data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
  252. data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
  253. data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
  254. data/vendor/libgit2/src/libgit2/branch.h +31 -0
  255. data/vendor/libgit2/src/libgit2/buf.c +126 -0
  256. data/vendor/libgit2/src/libgit2/buf.h +50 -0
  257. data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +22 -17
  258. data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +7 -9
  259. data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +107 -91
  260. data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -2
  261. data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +14 -15
  262. data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +254 -203
  263. data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +4 -1
  264. data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +296 -77
  265. data/vendor/libgit2/src/libgit2/commit.h +87 -0
  266. data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +246 -135
  267. data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +33 -8
  268. data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +17 -7
  269. data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +1 -0
  270. data/vendor/libgit2/src/libgit2/common.h +55 -0
  271. data/vendor/libgit2/src/{config.c → libgit2/config.c} +490 -360
  272. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  273. data/vendor/libgit2/src/{config.h → libgit2/config.h} +24 -6
  274. data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +8 -10
  275. data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +4 -5
  276. data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +212 -183
  277. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  278. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  279. data/vendor/libgit2/src/libgit2/config_mem.c +374 -0
  280. data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +37 -32
  281. data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +24 -31
  282. data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
  283. data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +62 -51
  284. data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +44 -14
  285. data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +8 -10
  286. data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +46 -55
  287. data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +5 -5
  288. data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +45 -27
  289. data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +70 -20
  290. data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
  291. data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +22 -6
  292. data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +192 -105
  293. data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
  294. data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
  295. data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +49 -16
  296. data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
  297. data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +1 -1
  298. data/vendor/libgit2/src/{email.c → libgit2/email.c} +58 -40
  299. data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
  300. data/vendor/libgit2/src/{transports/ssh.h → libgit2/experimental.h.in} +3 -4
  301. data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +105 -30
  302. data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -3
  303. data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +30 -28
  304. data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +132 -58
  305. data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
  306. data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +3 -3
  307. data/vendor/libgit2/src/libgit2/grafts.c +270 -0
  308. data/vendor/libgit2/src/libgit2/grafts.h +35 -0
  309. data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +1 -1
  310. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  311. data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
  312. data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +44 -39
  313. data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
  314. data/vendor/libgit2/src/{index.c → libgit2/index.c} +460 -276
  315. data/vendor/libgit2/src/{index.h → libgit2/index.h} +21 -5
  316. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  317. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  318. data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +208 -124
  319. data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +102 -71
  320. data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +8 -5
  321. data/vendor/libgit2/src/libgit2/libgit2.c +268 -0
  322. data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +39 -37
  323. data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +83 -73
  324. data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
  325. data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +4 -4
  326. data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -5
  327. data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
  328. data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +174 -112
  329. data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +17 -6
  330. data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +53 -57
  331. data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +9 -2
  332. data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +29 -37
  333. data/vendor/libgit2/src/{object.c → libgit2/object.c} +166 -35
  334. data/vendor/libgit2/src/{object.h → libgit2/object.h} +17 -2
  335. data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +261 -88
  336. data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
  337. data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
  338. data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +67 -22
  339. data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +162 -89
  340. data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +171 -92
  341. data/vendor/libgit2/src/libgit2/oid.h +284 -0
  342. data/vendor/libgit2/src/libgit2/oidarray.c +89 -0
  343. data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +5 -1
  344. data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +126 -66
  345. data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +28 -12
  346. data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +146 -111
  347. data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +45 -25
  348. data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +8 -4
  349. data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +1 -1
  350. data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
  351. data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +8 -1
  352. data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +51 -16
  353. data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
  354. data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +42 -34
  355. data/vendor/libgit2/src/libgit2/path.c +375 -0
  356. data/vendor/libgit2/src/libgit2/path.h +68 -0
  357. data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +7 -7
  358. data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
  359. data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
  360. data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
  361. data/vendor/libgit2/src/{push.c → libgit2/push.c} +116 -60
  362. data/vendor/libgit2/src/{push.h → libgit2/push.h} +5 -16
  363. data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
  364. data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
  365. data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +147 -147
  366. data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +639 -254
  367. data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +8 -7
  368. data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +3 -2
  369. data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +67 -39
  370. data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +8 -3
  371. data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +60 -38
  372. data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +13 -2
  373. data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +821 -454
  374. data/vendor/libgit2/src/libgit2/remote.h +101 -0
  375. data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +1377 -594
  376. data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +43 -12
  377. data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
  378. data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +18 -22
  379. data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +76 -44
  380. data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +48 -19
  381. data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +3 -3
  382. data/vendor/libgit2/src/{libgit2.c → libgit2/settings.c} +162 -95
  383. data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +6 -2
  384. data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +144 -21
  385. data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -2
  386. data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +243 -68
  387. data/vendor/libgit2/src/{status.c → libgit2/status.c} +5 -2
  388. data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
  389. data/vendor/libgit2/src/libgit2/strarray.h +25 -0
  390. data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +62 -67
  391. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +41 -24
  392. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +2 -0
  393. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +11 -3
  394. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +6 -3
  395. data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
  396. data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
  397. data/vendor/libgit2/src/libgit2/streams/socket.c +428 -0
  398. data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +3 -1
  399. data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +79 -19
  400. data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +5 -0
  401. data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +279 -220
  402. data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +10 -11
  403. data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
  404. data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +55 -18
  405. data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +74 -43
  406. data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
  407. data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
  408. data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
  409. data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +7 -7
  410. data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +27 -21
  411. data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +4 -1
  412. data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +14 -11
  413. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
  414. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +3 -5
  415. data/vendor/libgit2/src/{transports/auth_negotiate.c → libgit2/transports/auth_gssapi.c} +44 -45
  416. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +1 -1
  417. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +1 -2
  418. data/vendor/libgit2/src/{transports/auth_ntlm.c → libgit2/transports/auth_ntlmclient.c} +22 -22
  419. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
  420. data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +1 -1
  421. data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +16 -19
  422. data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +49 -24
  423. data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -11
  424. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +188 -134
  425. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
  426. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  427. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  428. data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +159 -127
  429. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +142 -165
  430. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +56 -36
  431. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +307 -74
  432. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +297 -97
  433. data/vendor/libgit2/src/libgit2/transports/ssh.c +85 -0
  434. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  435. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  436. data/vendor/libgit2/src/{transports/ssh.c → libgit2/transports/ssh_libssh2.c} +414 -268
  437. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  438. data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +101 -75
  439. data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +30 -20
  440. data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +7 -5
  441. data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +128 -110
  442. data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +7 -6
  443. data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +160 -121
  444. data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
  445. data/vendor/libgit2/src/util/CMakeLists.txt +77 -0
  446. data/vendor/libgit2/src/{alloc.c → util/alloc.c} +69 -7
  447. data/vendor/libgit2/src/util/alloc.h +65 -0
  448. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  449. data/vendor/libgit2/src/util/allocators/debugalloc.h +17 -0
  450. data/vendor/libgit2/src/util/allocators/failalloc.c +32 -0
  451. data/vendor/libgit2/src/util/allocators/failalloc.h +17 -0
  452. data/vendor/libgit2/src/util/allocators/stdalloc.c +37 -0
  453. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
  454. data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +50 -0
  455. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
  456. data/vendor/libgit2/src/{array.h → util/array.h} +25 -19
  457. data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
  458. data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +5 -1
  459. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  460. data/vendor/libgit2/src/{date.c → util/date.c} +35 -33
  461. data/vendor/libgit2/src/util/date.h +45 -0
  462. data/vendor/libgit2/src/util/errors.c +401 -0
  463. data/vendor/libgit2/src/{errors.h → util/errors.h} +22 -19
  464. data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +35 -30
  465. data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +21 -8
  466. data/vendor/libgit2/src/{path.c → util/fs_path.c} +591 -615
  467. data/vendor/libgit2/src/{path.h → util/fs_path.h} +257 -181
  468. data/vendor/libgit2/src/{futils.c → util/futils.c} +144 -95
  469. data/vendor/libgit2/src/{futils.h → util/futils.h} +40 -18
  470. data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +33 -2
  471. data/vendor/libgit2/src/{common.h → util/git2_util.h} +26 -59
  472. data/vendor/libgit2/src/util/hash/builtin.c +53 -0
  473. data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
  474. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
  475. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
  476. data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
  477. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
  478. data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
  479. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
  480. data/vendor/libgit2/src/util/hash/openssl.c +347 -0
  481. data/vendor/libgit2/src/util/hash/openssl.h +61 -0
  482. data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
  483. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
  484. data/vendor/libgit2/src/util/hash/sha.h +73 -0
  485. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
  486. data/vendor/libgit2/src/util/hash/win32.c +549 -0
  487. data/vendor/libgit2/src/util/hash/win32.h +60 -0
  488. data/vendor/libgit2/src/util/hash.c +158 -0
  489. data/vendor/libgit2/src/util/hash.h +61 -0
  490. data/vendor/libgit2/src/util/hashmap.h +424 -0
  491. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  492. data/vendor/libgit2/src/{integer.h → util/integer.h} +3 -1
  493. data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
  494. data/vendor/libgit2/src/util/net.c +1160 -0
  495. data/vendor/libgit2/src/{net.h → util/net.h} +45 -4
  496. data/vendor/libgit2/src/{pool.c → util/pool.c} +1 -1
  497. data/vendor/libgit2/src/{pool.h → util/pool.h} +6 -1
  498. data/vendor/libgit2/src/{posix.c → util/posix.c} +57 -3
  499. data/vendor/libgit2/src/{posix.h → util/posix.h} +26 -1
  500. data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +3 -3
  501. data/vendor/libgit2/src/util/process.h +222 -0
  502. data/vendor/libgit2/src/util/rand.c +230 -0
  503. data/vendor/libgit2/src/util/rand.h +37 -0
  504. data/vendor/libgit2/src/{regexp.c → util/regexp.c} +5 -5
  505. data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
  506. data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
  507. data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
  508. data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +15 -14
  509. data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +5 -5
  510. data/vendor/libgit2/src/util/staticstr.h +66 -0
  511. data/vendor/libgit2/src/{buffer.c → util/str.c} +159 -153
  512. data/vendor/libgit2/src/util/str.h +357 -0
  513. data/vendor/libgit2/src/util/strlist.c +108 -0
  514. data/vendor/libgit2/src/util/strlist.h +36 -0
  515. data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
  516. data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
  517. data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
  518. data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
  519. data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -6
  520. data/vendor/libgit2/src/util/unix/process.c +629 -0
  521. data/vendor/libgit2/src/{unix → util/unix}/realpath.c +24 -8
  522. data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
  523. data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
  524. data/vendor/libgit2/src/{util.c → util/util.c} +24 -19
  525. data/vendor/libgit2/src/{util.h → util/util.h} +30 -81
  526. data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
  527. data/vendor/libgit2/src/{vector.c → util/vector.c} +3 -3
  528. data/vendor/libgit2/src/{vector.h → util/vector.h} +4 -4
  529. data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
  530. data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
  531. data/vendor/libgit2/src/{win32 → util/win32}/error.c +1 -1
  532. data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
  533. data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
  534. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +148 -17
  535. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
  536. data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
  537. data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +42 -35
  538. data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
  539. data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
  540. data/vendor/libgit2/src/util/win32/process.c +506 -0
  541. data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
  542. data/vendor/libgit2/src/util/win32/utf-conv.c +144 -0
  543. data/vendor/libgit2/src/util/win32/utf-conv.h +127 -0
  544. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
  545. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
  546. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
  547. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
  548. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +1 -1
  549. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
  550. data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
  551. data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
  552. metadata +431 -362
  553. data/vendor/libgit2/cmake/FindIconv.cmake +0 -45
  554. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  555. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  556. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  557. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  558. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  559. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  560. data/vendor/libgit2/src/alloc.h +0 -40
  561. data/vendor/libgit2/src/allocators/failalloc.c +0 -92
  562. data/vendor/libgit2/src/allocators/failalloc.h +0 -23
  563. data/vendor/libgit2/src/allocators/stdalloc.c +0 -150
  564. data/vendor/libgit2/src/allocators/win32_leakcheck.c +0 -118
  565. data/vendor/libgit2/src/buffer.h +0 -374
  566. data/vendor/libgit2/src/commit.h +0 -46
  567. data/vendor/libgit2/src/config_entries.c +0 -237
  568. data/vendor/libgit2/src/config_entries.h +0 -24
  569. data/vendor/libgit2/src/config_mem.c +0 -220
  570. data/vendor/libgit2/src/errors.c +0 -238
  571. data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
  572. data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
  573. data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
  574. data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
  575. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  576. data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
  577. data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
  578. data/vendor/libgit2/src/hash/sha1.h +0 -38
  579. data/vendor/libgit2/src/hash.c +0 -110
  580. data/vendor/libgit2/src/hash.h +0 -46
  581. data/vendor/libgit2/src/idxmap.c +0 -157
  582. data/vendor/libgit2/src/idxmap.h +0 -177
  583. data/vendor/libgit2/src/khash.h +0 -615
  584. data/vendor/libgit2/src/libgit2.h +0 -15
  585. data/vendor/libgit2/src/message.h +0 -17
  586. data/vendor/libgit2/src/net.c +0 -540
  587. data/vendor/libgit2/src/netops.c +0 -125
  588. data/vendor/libgit2/src/netops.h +0 -68
  589. data/vendor/libgit2/src/offmap.c +0 -101
  590. data/vendor/libgit2/src/offmap.h +0 -133
  591. data/vendor/libgit2/src/oid.h +0 -51
  592. data/vendor/libgit2/src/oidarray.c +0 -43
  593. data/vendor/libgit2/src/oidmap.c +0 -107
  594. data/vendor/libgit2/src/oidmap.h +0 -128
  595. data/vendor/libgit2/src/remote.h +0 -55
  596. data/vendor/libgit2/src/streams/socket.c +0 -239
  597. data/vendor/libgit2/src/strmap.c +0 -100
  598. data/vendor/libgit2/src/strmap.h +0 -131
  599. data/vendor/libgit2/src/sysdir.c +0 -347
  600. data/vendor/libgit2/src/threadstate.c +0 -84
  601. data/vendor/libgit2/src/threadstate.h +0 -24
  602. data/vendor/libgit2/src/win32/findfile.c +0 -230
  603. data/vendor/libgit2/src/win32/findfile.h +0 -19
  604. data/vendor/libgit2/src/win32/utf-conv.c +0 -146
  605. data/vendor/libgit2/src/win32/utf-conv.h +0 -60
  606. /data/vendor/libgit2/{src → deps}/xdiff/xemit.h +0 -0
  607. /data/vendor/libgit2/{src → deps}/xdiff/xprepare.h +0 -0
  608. /data/vendor/libgit2/{src → deps}/xdiff/xtypes.h +0 -0
  609. /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
  610. /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
  611. /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
  612. /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
  613. /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
  614. /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
  615. /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
  616. /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
  617. /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
  618. /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
  619. /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
  620. /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
  621. /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
  622. /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
  623. /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
  624. /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
  625. /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
  626. /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
  627. /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
  628. /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
  629. /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
  630. /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
  631. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
  632. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
  633. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
  634. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
  635. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
  636. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
  637. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
  638. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
  639. /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
  640. /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
  641. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
  642. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
  643. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
  644. /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
  645. /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
  646. /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
  647. /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
  648. /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
  649. /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
  650. /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
  651. /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
  652. /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
  653. /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
  654. /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
  655. /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
  656. /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
@@ -7,7 +7,7 @@
7
7
 
8
8
  #include "common.h"
9
9
  #include "git2.h"
10
- #include "http_parser.h"
10
+
11
11
  #include "vector.h"
12
12
  #include "trace.h"
13
13
  #include "httpclient.h"
@@ -21,6 +21,7 @@
21
21
  #include "streams/socket.h"
22
22
  #include "streams/tls.h"
23
23
  #include "auth.h"
24
+ #include "httpparser.h"
24
25
 
25
26
  static git_http_auth_scheme auth_schemes[] = {
26
27
  { GIT_HTTP_AUTH_NEGOTIATE, "Negotiate", GIT_CREDENTIAL_DEFAULT, git_http_auth_negotiate },
@@ -84,8 +85,8 @@ typedef struct {
84
85
  git_http_response *response;
85
86
 
86
87
  /* Temporary buffers to avoid extra mallocs */
87
- git_buf parse_header_name;
88
- git_buf parse_header_value;
88
+ git_str parse_header_name;
89
+ git_str parse_header_value;
89
90
 
90
91
  /* Parser state */
91
92
  int error;
@@ -108,7 +109,7 @@ struct git_http_client {
108
109
  git_http_server_t current_server;
109
110
  http_client_state state;
110
111
 
111
- http_parser parser;
112
+ git_http_parser parser;
112
113
 
113
114
  git_http_server server;
114
115
  git_http_server proxy;
@@ -120,8 +121,8 @@ struct git_http_client {
120
121
  request_chunked : 1;
121
122
 
122
123
  /* Temporary buffers to avoid extra mallocs */
123
- git_buf request_msg;
124
- git_buf read_buf;
124
+ git_str request_msg;
125
+ git_str read_buf;
125
126
 
126
127
  /* A subset of information from the request */
127
128
  size_t request_body_len,
@@ -154,14 +155,14 @@ void git_http_response_dispose(git_http_response *response)
154
155
  memset(response, 0, sizeof(git_http_response));
155
156
  }
156
157
 
157
- static int on_header_complete(http_parser *parser)
158
+ static int on_header_complete(git_http_parser *parser)
158
159
  {
159
160
  http_parser_context *ctx = (http_parser_context *) parser->data;
160
161
  git_http_client *client = ctx->client;
161
162
  git_http_response *response = ctx->response;
162
163
 
163
- git_buf *name = &ctx->parse_header_name;
164
- git_buf *value = &ctx->parse_header_value;
164
+ git_str *name = &ctx->parse_header_name;
165
+ git_str *value = &ctx->parse_header_value;
165
166
 
166
167
  if (!strcasecmp("Content-Type", name->ptr)) {
167
168
  if (response->content_type) {
@@ -193,7 +194,7 @@ static int on_header_complete(http_parser *parser)
193
194
  } else if (!strcasecmp("Transfer-Encoding", name->ptr) &&
194
195
  !strcasecmp("chunked", value->ptr)) {
195
196
  ctx->response->chunked = 1;
196
- } else if (!strcasecmp("Proxy-Authenticate", git_buf_cstr(name))) {
197
+ } else if (!strcasecmp("Proxy-Authenticate", git_str_cstr(name))) {
197
198
  char *dup = git__strndup(value->ptr, value->size);
198
199
  GIT_ERROR_CHECK_ALLOC(dup);
199
200
 
@@ -219,7 +220,7 @@ static int on_header_complete(http_parser *parser)
219
220
  return 0;
220
221
  }
221
222
 
222
- static int on_header_field(http_parser *parser, const char *str, size_t len)
223
+ static int on_header_field(git_http_parser *parser, const char *str, size_t len)
223
224
  {
224
225
  http_parser_context *ctx = (http_parser_context *) parser->data;
225
226
 
@@ -232,15 +233,15 @@ static int on_header_field(http_parser *parser, const char *str, size_t len)
232
233
  if (on_header_complete(parser) < 0)
233
234
  return ctx->parse_status = PARSE_STATUS_ERROR;
234
235
 
235
- git_buf_clear(&ctx->parse_header_name);
236
- git_buf_clear(&ctx->parse_header_value);
236
+ git_str_clear(&ctx->parse_header_name);
237
+ git_str_clear(&ctx->parse_header_value);
237
238
  /* Fall through */
238
239
 
239
240
  case PARSE_HEADER_NONE:
240
241
  case PARSE_HEADER_NAME:
241
242
  ctx->parse_header_state = PARSE_HEADER_NAME;
242
243
 
243
- if (git_buf_put(&ctx->parse_header_name, str, len) < 0)
244
+ if (git_str_put(&ctx->parse_header_name, str, len) < 0)
244
245
  return ctx->parse_status = PARSE_STATUS_ERROR;
245
246
 
246
247
  break;
@@ -254,7 +255,7 @@ static int on_header_field(http_parser *parser, const char *str, size_t len)
254
255
  return 0;
255
256
  }
256
257
 
257
- static int on_header_value(http_parser *parser, const char *str, size_t len)
258
+ static int on_header_value(git_http_parser *parser, const char *str, size_t len)
258
259
  {
259
260
  http_parser_context *ctx = (http_parser_context *) parser->data;
260
261
 
@@ -263,7 +264,7 @@ static int on_header_value(http_parser *parser, const char *str, size_t len)
263
264
  case PARSE_HEADER_VALUE:
264
265
  ctx->parse_header_state = PARSE_HEADER_VALUE;
265
266
 
266
- if (git_buf_put(&ctx->parse_header_value, str, len) < 0)
267
+ if (git_str_put(&ctx->parse_header_value, str, len) < 0)
267
268
  return ctx->parse_status = PARSE_STATUS_ERROR;
268
269
 
269
270
  break;
@@ -342,7 +343,7 @@ static int resend_needed(git_http_client *client, git_http_response *response)
342
343
  return 0;
343
344
  }
344
345
 
345
- static int on_headers_complete(http_parser *parser)
346
+ static int on_headers_complete(git_http_parser *parser)
346
347
  {
347
348
  http_parser_context *ctx = (http_parser_context *) parser->data;
348
349
 
@@ -364,8 +365,8 @@ static int on_headers_complete(http_parser *parser)
364
365
  return ctx->parse_status = PARSE_STATUS_ERROR;
365
366
  }
366
367
 
367
- ctx->response->status = parser->status_code;
368
- ctx->client->keepalive = http_should_keep_alive(parser);
368
+ ctx->response->status = git_http_parser_status_code(parser);
369
+ ctx->client->keepalive = git_http_parser_keep_alive(parser);
369
370
 
370
371
  /* Prepare for authentication */
371
372
  collect_authinfo(&ctx->response->server_auth_schemetypes,
@@ -378,24 +379,21 @@ static int on_headers_complete(http_parser *parser)
378
379
  ctx->response->resend_credentials = resend_needed(ctx->client,
379
380
  ctx->response);
380
381
 
381
- /* Stop parsing. */
382
- http_parser_pause(parser, 1);
383
-
384
382
  if (ctx->response->content_type || ctx->response->chunked)
385
383
  ctx->client->state = READING_BODY;
386
384
  else
387
385
  ctx->client->state = DONE;
388
386
 
389
- return 0;
387
+ return git_http_parser_pause(parser);
390
388
  }
391
389
 
392
- static int on_body(http_parser *parser, const char *buf, size_t len)
390
+ static int on_body(git_http_parser *parser, const char *buf, size_t len)
393
391
  {
394
392
  http_parser_context *ctx = (http_parser_context *) parser->data;
395
393
  size_t max_len;
396
394
 
397
395
  /* Saw data when we expected not to (eg, in consume_response_body) */
398
- if (ctx->output_buf == NULL && ctx->output_size == 0) {
396
+ if (ctx->output_buf == NULL || ctx->output_size == 0) {
399
397
  ctx->parse_status = PARSE_STATUS_NO_OUTPUT;
400
398
  return 0;
401
399
  }
@@ -411,7 +409,7 @@ static int on_body(http_parser *parser, const char *buf, size_t len)
411
409
  return 0;
412
410
  }
413
411
 
414
- static int on_message_complete(http_parser *parser)
412
+ static int on_message_complete(git_http_parser *parser)
415
413
  {
416
414
  http_parser_context *ctx = (http_parser_context *) parser->data;
417
415
 
@@ -548,7 +546,7 @@ static void free_auth_context(git_http_server *server)
548
546
  }
549
547
 
550
548
  static int apply_credentials(
551
- git_buf *buf,
549
+ git_str *buf,
552
550
  git_http_server *server,
553
551
  const char *header_name,
554
552
  git_credential *credentials)
@@ -556,7 +554,7 @@ static int apply_credentials(
556
554
  git_http_auth_context *auth = server->auth_context;
557
555
  git_vector *challenges = &server->auth_challenges;
558
556
  const char *challenge;
559
- git_buf token = GIT_BUF_INIT;
557
+ git_str token = GIT_STR_INIT;
560
558
  int error = 0;
561
559
 
562
560
  /* We've started a new request without creds; free the context. */
@@ -602,15 +600,15 @@ static int apply_credentials(
602
600
  }
603
601
 
604
602
  if (token.size > 0)
605
- error = git_buf_printf(buf, "%s: %s\r\n", header_name, token.ptr);
603
+ error = git_str_printf(buf, "%s: %s\r\n", header_name, token.ptr);
606
604
 
607
605
  done:
608
- git_buf_dispose(&token);
606
+ git_str_dispose(&token);
609
607
  return error;
610
608
  }
611
609
 
612
610
  GIT_INLINE(int) apply_server_credentials(
613
- git_buf *buf,
611
+ git_str *buf,
614
612
  git_http_client *client,
615
613
  git_http_request *request)
616
614
  {
@@ -621,7 +619,7 @@ GIT_INLINE(int) apply_server_credentials(
621
619
  }
622
620
 
623
621
  GIT_INLINE(int) apply_proxy_credentials(
624
- git_buf *buf,
622
+ git_str *buf,
625
623
  git_http_client *client,
626
624
  git_http_request *request)
627
625
  {
@@ -631,54 +629,76 @@ GIT_INLINE(int) apply_proxy_credentials(
631
629
  request->proxy_credentials);
632
630
  }
633
631
 
634
- static int puts_host_and_port(git_buf *buf, git_net_url *url, bool force_port)
632
+ static int puts_host_and_port(git_str *buf, git_net_url *url, bool force_port)
635
633
  {
636
634
  bool ipv6 = git_net_url_is_ipv6(url);
637
635
 
638
636
  if (ipv6)
639
- git_buf_putc(buf, '[');
637
+ git_str_putc(buf, '[');
640
638
 
641
- git_buf_puts(buf, url->host);
639
+ git_str_puts(buf, url->host);
642
640
 
643
641
  if (ipv6)
644
- git_buf_putc(buf, ']');
642
+ git_str_putc(buf, ']');
645
643
 
646
644
  if (force_port || !git_net_url_is_default_port(url)) {
647
- git_buf_putc(buf, ':');
648
- git_buf_puts(buf, url->port);
645
+ git_str_putc(buf, ':');
646
+ git_str_puts(buf, url->port);
647
+ }
648
+
649
+ return git_str_oom(buf) ? -1 : 0;
650
+ }
651
+
652
+ static int append_user_agent(git_str *buf)
653
+ {
654
+ const char *product = git_settings__user_agent_product();
655
+ const char *comment = git_settings__user_agent();
656
+
657
+ GIT_ASSERT(product && comment);
658
+
659
+ if (!*product)
660
+ return 0;
661
+
662
+ git_str_puts(buf, "User-Agent: ");
663
+ git_str_puts(buf, product);
664
+
665
+ if (*comment) {
666
+ git_str_puts(buf, " (");
667
+ git_str_puts(buf, comment);
668
+ git_str_puts(buf, ")");
649
669
  }
650
670
 
651
- return git_buf_oom(buf) ? -1 : 0;
671
+ git_str_puts(buf, "\r\n");
672
+
673
+ return git_str_oom(buf) ? -1 : 0;
652
674
  }
653
675
 
654
676
  static int generate_connect_request(
655
677
  git_http_client *client,
656
678
  git_http_request *request)
657
679
  {
658
- git_buf *buf;
680
+ git_str *buf;
659
681
  int error;
660
682
 
661
- git_buf_clear(&client->request_msg);
683
+ git_str_clear(&client->request_msg);
662
684
  buf = &client->request_msg;
663
685
 
664
- git_buf_puts(buf, "CONNECT ");
686
+ git_str_puts(buf, "CONNECT ");
665
687
  puts_host_and_port(buf, &client->server.url, true);
666
- git_buf_puts(buf, " HTTP/1.1\r\n");
688
+ git_str_puts(buf, " HTTP/1.1\r\n");
667
689
 
668
- git_buf_puts(buf, "User-Agent: ");
669
- git_http__user_agent(buf);
670
- git_buf_puts(buf, "\r\n");
690
+ append_user_agent(buf);
671
691
 
672
- git_buf_puts(buf, "Host: ");
692
+ git_str_puts(buf, "Host: ");
673
693
  puts_host_and_port(buf, &client->server.url, true);
674
- git_buf_puts(buf, "\r\n");
694
+ git_str_puts(buf, "\r\n");
675
695
 
676
696
  if ((error = apply_proxy_credentials(buf, client, request) < 0))
677
697
  return -1;
678
698
 
679
- git_buf_puts(buf, "\r\n");
699
+ git_str_puts(buf, "\r\n");
680
700
 
681
- return git_buf_oom(buf) ? -1 : 0;
701
+ return git_str_oom(buf) ? -1 : 0;
682
702
  }
683
703
 
684
704
  static bool use_connect_proxy(git_http_client *client)
@@ -690,53 +710,51 @@ static int generate_request(
690
710
  git_http_client *client,
691
711
  git_http_request *request)
692
712
  {
693
- git_buf *buf;
713
+ git_str *buf;
694
714
  size_t i;
695
715
  int error;
696
716
 
697
717
  GIT_ASSERT_ARG(client);
698
718
  GIT_ASSERT_ARG(request);
699
719
 
700
- git_buf_clear(&client->request_msg);
720
+ git_str_clear(&client->request_msg);
701
721
  buf = &client->request_msg;
702
722
 
703
723
  /* GET|POST path HTTP/1.1 */
704
- git_buf_puts(buf, name_for_method(request->method));
705
- git_buf_putc(buf, ' ');
724
+ git_str_puts(buf, name_for_method(request->method));
725
+ git_str_putc(buf, ' ');
706
726
 
707
727
  if (request->proxy && strcmp(request->url->scheme, "https"))
708
728
  git_net_url_fmt(buf, request->url);
709
729
  else
710
730
  git_net_url_fmt_path(buf, request->url);
711
731
 
712
- git_buf_puts(buf, " HTTP/1.1\r\n");
732
+ git_str_puts(buf, " HTTP/1.1\r\n");
713
733
 
714
- git_buf_puts(buf, "User-Agent: ");
715
- git_http__user_agent(buf);
716
- git_buf_puts(buf, "\r\n");
734
+ append_user_agent(buf);
717
735
 
718
- git_buf_puts(buf, "Host: ");
736
+ git_str_puts(buf, "Host: ");
719
737
  puts_host_and_port(buf, request->url, false);
720
- git_buf_puts(buf, "\r\n");
738
+ git_str_puts(buf, "\r\n");
721
739
 
722
740
  if (request->accept)
723
- git_buf_printf(buf, "Accept: %s\r\n", request->accept);
741
+ git_str_printf(buf, "Accept: %s\r\n", request->accept);
724
742
  else
725
- git_buf_puts(buf, "Accept: */*\r\n");
743
+ git_str_puts(buf, "Accept: */*\r\n");
726
744
 
727
745
  if (request->content_type)
728
- git_buf_printf(buf, "Content-Type: %s\r\n",
746
+ git_str_printf(buf, "Content-Type: %s\r\n",
729
747
  request->content_type);
730
748
 
731
749
  if (request->chunked)
732
- git_buf_puts(buf, "Transfer-Encoding: chunked\r\n");
750
+ git_str_puts(buf, "Transfer-Encoding: chunked\r\n");
733
751
 
734
752
  if (request->content_length > 0)
735
- git_buf_printf(buf, "Content-Length: %"PRIuZ "\r\n",
753
+ git_str_printf(buf, "Content-Length: %"PRIuZ "\r\n",
736
754
  request->content_length);
737
755
 
738
756
  if (request->expect_continue)
739
- git_buf_printf(buf, "Expect: 100-continue\r\n");
757
+ git_str_printf(buf, "Expect: 100-continue\r\n");
740
758
 
741
759
  if ((error = apply_server_credentials(buf, client, request)) < 0 ||
742
760
  (!use_connect_proxy(client) &&
@@ -748,13 +766,13 @@ static int generate_request(
748
766
  const char *hdr = request->custom_headers->strings[i];
749
767
 
750
768
  if (hdr)
751
- git_buf_printf(buf, "%s\r\n", hdr);
769
+ git_str_printf(buf, "%s\r\n", hdr);
752
770
  }
753
771
  }
754
772
 
755
- git_buf_puts(buf, "\r\n");
773
+ git_str_puts(buf, "\r\n");
756
774
 
757
- if (git_buf_oom(buf))
775
+ if (git_str_oom(buf))
758
776
  return -1;
759
777
 
760
778
  return 0;
@@ -768,25 +786,37 @@ static int check_certificate(
768
786
  void *cert_cb_payload)
769
787
  {
770
788
  git_cert *cert;
771
- git_error_state last_error = {0};
789
+ git_error *last_error;
772
790
  int error;
773
791
 
774
792
  if ((error = git_stream_certificate(&cert, stream)) < 0)
775
793
  return error;
776
794
 
777
- git_error_state_capture(&last_error, GIT_ECERTIFICATE);
795
+ /*
796
+ * Allow callers to set an error - but save ours and clear
797
+ * it, so that we can detect if they set one and restore it
798
+ * if we need to.
799
+ */
800
+ git_error_save(&last_error);
801
+ git_error_clear();
778
802
 
779
803
  error = cert_cb(cert, is_valid, url->host, cert_cb_payload);
780
804
 
781
- if (error == GIT_PASSTHROUGH && !is_valid)
782
- return git_error_state_restore(&last_error);
783
- else if (error == GIT_PASSTHROUGH)
784
- error = 0;
785
- else if (error && !git_error_last())
786
- git_error_set(GIT_ERROR_HTTP,
787
- "user rejected certificate for %s", url->host);
805
+ if (error == GIT_PASSTHROUGH) {
806
+ error = is_valid ? 0 : -1;
807
+
808
+ if (error) {
809
+ git_error_restore(last_error);
810
+ last_error = NULL;
811
+ }
812
+ } else if (error) {
813
+ if (!git_error_exists())
814
+ git_error_set(GIT_ERROR_HTTP,
815
+ "user rejected certificate for %s",
816
+ url->host);
817
+ }
788
818
 
789
- git_error_state_free(&last_error);
819
+ git_error_free(last_error);
790
820
  return error;
791
821
  }
792
822
 
@@ -837,6 +867,11 @@ GIT_INLINE(int) server_setup_from_url(
837
867
  git_http_server *server,
838
868
  git_net_url *url)
839
869
  {
870
+ GIT_ASSERT_ARG(url);
871
+ GIT_ASSERT_ARG(url->scheme);
872
+ GIT_ASSERT_ARG(url->host);
873
+ GIT_ASSERT_ARG(url->port);
874
+
840
875
  if (!server->url.scheme || strcmp(server->url.scheme, url->scheme) ||
841
876
  !server->url.host || strcmp(server->url.host, url->host) ||
842
877
  !server->url.port || strcmp(server->url.port, url->port)) {
@@ -859,9 +894,29 @@ GIT_INLINE(int) server_setup_from_url(
859
894
  return 0;
860
895
  }
861
896
 
897
+ static bool parser_settings_initialized;
898
+ static git_http_parser_settings parser_settings;
899
+
900
+ GIT_INLINE(git_http_parser_settings *) http_client_parser_settings(void)
901
+ {
902
+ if (!parser_settings_initialized) {
903
+ parser_settings.on_header_field = on_header_field;
904
+ parser_settings.on_header_value = on_header_value;
905
+ parser_settings.on_headers_complete = on_headers_complete;
906
+ parser_settings.on_body = on_body;
907
+ parser_settings.on_message_complete = on_message_complete;
908
+
909
+ parser_settings_initialized = true;
910
+ }
911
+
912
+ return &parser_settings;
913
+ }
914
+
862
915
  static void reset_parser(git_http_client *client)
863
916
  {
864
- http_parser_init(&client->parser, HTTP_RESPONSE);
917
+ git_http_parser_init(&client->parser,
918
+ GIT_HTTP_PARSER_RESPONSE,
919
+ http_client_parser_settings());
865
920
  }
866
921
 
867
922
  static int setup_hosts(
@@ -1077,7 +1132,7 @@ GIT_INLINE(int) client_read(git_http_client *client)
1077
1132
  client->proxy.stream : client->server.stream;
1078
1133
 
1079
1134
  /*
1080
- * We use a git_buf for convenience, but statically allocate it and
1135
+ * We use a git_str for convenience, but statically allocate it and
1081
1136
  * don't resize. Limit our consumption to INT_MAX since calling
1082
1137
  * functions use an int return type to return number of bytes read.
1083
1138
  */
@@ -1104,27 +1159,9 @@ GIT_INLINE(int) client_read(git_http_client *client)
1104
1159
  return (int)read_len;
1105
1160
  }
1106
1161
 
1107
- static bool parser_settings_initialized;
1108
- static http_parser_settings parser_settings;
1109
-
1110
- GIT_INLINE(http_parser_settings *) http_client_parser_settings(void)
1111
- {
1112
- if (!parser_settings_initialized) {
1113
- parser_settings.on_header_field = on_header_field;
1114
- parser_settings.on_header_value = on_header_value;
1115
- parser_settings.on_headers_complete = on_headers_complete;
1116
- parser_settings.on_body = on_body;
1117
- parser_settings.on_message_complete = on_message_complete;
1118
-
1119
- parser_settings_initialized = true;
1120
- }
1121
-
1122
- return &parser_settings;
1123
- }
1124
-
1125
1162
  GIT_INLINE(int) client_read_and_parse(git_http_client *client)
1126
1163
  {
1127
- http_parser *parser = &client->parser;
1164
+ git_http_parser *parser = &client->parser;
1128
1165
  http_parser_context *ctx = (http_parser_context *) parser->data;
1129
1166
  unsigned char http_errno;
1130
1167
  int read_len;
@@ -1138,11 +1175,10 @@ GIT_INLINE(int) client_read_and_parse(git_http_client *client)
1138
1175
  if (!client->read_buf.size && (read_len = client_read(client)) < 0)
1139
1176
  return read_len;
1140
1177
 
1141
- parsed_len = http_parser_execute(parser,
1142
- http_client_parser_settings(),
1178
+ parsed_len = git_http_parser_execute(parser,
1143
1179
  client->read_buf.ptr,
1144
1180
  client->read_buf.size);
1145
- http_errno = client->parser.http_errno;
1181
+ http_errno = git_http_parser_errno(parser);
1146
1182
 
1147
1183
  if (parsed_len > INT_MAX) {
1148
1184
  git_error_set(GIT_ERROR_HTTP, "unexpectedly large parse");
@@ -1161,26 +1197,29 @@ GIT_INLINE(int) client_read_and_parse(git_http_client *client)
1161
1197
  * (This can happen in response to an expect/continue request,
1162
1198
  * where the server gives you a 100 and 200 simultaneously.)
1163
1199
  */
1164
- if (http_errno == HPE_PAUSED) {
1200
+ if (http_errno == GIT_HTTP_PARSER_PAUSED) {
1201
+ size_t additional_size;
1202
+
1203
+ git_http_parser_resume(parser);
1204
+
1165
1205
  /*
1166
- * http-parser has a "feature" where it will not deliver the
1167
- * final byte when paused in a callback. Consume that byte.
1168
- * https://github.com/nodejs/http-parser/issues/97
1206
+ * http-parser has a "feature" where it will not deliver
1207
+ * the final byte when paused in a callback. Consume
1208
+ * that byte.
1169
1209
  */
1170
- GIT_ASSERT(client->read_buf.size > parsed_len);
1171
-
1172
- http_parser_pause(parser, 0);
1210
+ if ((additional_size = git_http_parser_remain_after_pause(parser)) > 0) {
1211
+ GIT_ASSERT((client->read_buf.size - parsed_len) >= additional_size);
1173
1212
 
1174
- parsed_len += http_parser_execute(parser,
1175
- http_client_parser_settings(),
1176
- client->read_buf.ptr + parsed_len,
1177
- 1);
1213
+ parsed_len += git_http_parser_execute(parser,
1214
+ client->read_buf.ptr + parsed_len,
1215
+ additional_size);
1216
+ }
1178
1217
  }
1179
1218
 
1180
1219
  /* Most failures will be reported in http_errno */
1181
- else if (parser->http_errno != HPE_OK) {
1220
+ else if (git_http_parser_errno(parser) != GIT_HTTP_PARSER_OK) {
1182
1221
  git_error_set(GIT_ERROR_HTTP, "http parser error: %s",
1183
- http_errno_description(http_errno));
1222
+ git_http_parser_errmsg(parser, http_errno));
1184
1223
  return -1;
1185
1224
  }
1186
1225
 
@@ -1188,7 +1227,7 @@ GIT_INLINE(int) client_read_and_parse(git_http_client *client)
1188
1227
  else if (parsed_len != client->read_buf.size) {
1189
1228
  git_error_set(GIT_ERROR_HTTP,
1190
1229
  "http parser did not consume entire buffer: %s",
1191
- http_errno_description(http_errno));
1230
+ git_http_parser_errmsg(parser, http_errno));
1192
1231
  return -1;
1193
1232
  }
1194
1233
 
@@ -1198,7 +1237,7 @@ GIT_INLINE(int) client_read_and_parse(git_http_client *client)
1198
1237
  return -1;
1199
1238
  }
1200
1239
 
1201
- git_buf_consume_bytes(&client->read_buf, parsed_len);
1240
+ git_str_consume_bytes(&client->read_buf, parsed_len);
1202
1241
 
1203
1242
  return (int)parsed_len;
1204
1243
  }
@@ -1227,7 +1266,7 @@ static void complete_response_body(git_http_client *client)
1227
1266
 
1228
1267
  /* If there was an error, just close the connection. */
1229
1268
  if (client_read_and_parse(client) < 0 ||
1230
- parser_context.error != HPE_OK ||
1269
+ parser_context.error != GIT_HTTP_PARSER_OK ||
1231
1270
  (parser_context.parse_status != PARSE_STATUS_OK &&
1232
1271
  parser_context.parse_status != PARSE_STATUS_NO_OUTPUT)) {
1233
1272
  git_error_clear();
@@ -1235,7 +1274,8 @@ static void complete_response_body(git_http_client *client)
1235
1274
  }
1236
1275
 
1237
1276
  done:
1238
- git_buf_clear(&client->read_buf);
1277
+ client->parser.data = NULL;
1278
+ git_str_clear(&client->read_buf);
1239
1279
  }
1240
1280
 
1241
1281
  int git_http_client_send_request(
@@ -1257,12 +1297,12 @@ int git_http_client_send_request(
1257
1297
  return 0;
1258
1298
 
1259
1299
  if (git_trace_level() >= GIT_TRACE_DEBUG) {
1260
- git_buf url = GIT_BUF_INIT;
1300
+ git_str url = GIT_STR_INIT;
1261
1301
  git_net_url_fmt(&url, request->url);
1262
1302
  git_trace(GIT_TRACE_DEBUG, "Sending %s request to %s",
1263
1303
  name_for_method(request->method),
1264
1304
  url.ptr ? url.ptr : "<invalid>");
1265
- git_buf_dispose(&url);
1305
+ git_str_dispose(&url);
1266
1306
  }
1267
1307
 
1268
1308
  if ((error = http_client_connect(client, request)) < 0 ||
@@ -1314,7 +1354,7 @@ int git_http_client_send_body(
1314
1354
  size_t buffer_len)
1315
1355
  {
1316
1356
  git_http_server *server;
1317
- git_buf hdr = GIT_BUF_INIT;
1357
+ git_str hdr = GIT_STR_INIT;
1318
1358
  int error;
1319
1359
 
1320
1360
  GIT_ASSERT_ARG(client);
@@ -1341,7 +1381,7 @@ int git_http_client_send_body(
1341
1381
 
1342
1382
  client->request_body_remain -= buffer_len;
1343
1383
  } else {
1344
- if ((error = git_buf_printf(&hdr, "%" PRIxZ "\r\n", buffer_len)) < 0 ||
1384
+ if ((error = git_str_printf(&hdr, "%" PRIxZ "\r\n", buffer_len)) < 0 ||
1345
1385
  (error = stream_write(server, hdr.ptr, hdr.size)) < 0 ||
1346
1386
  (error = stream_write(server, buffer, buffer_len)) < 0 ||
1347
1387
  (error = stream_write(server, "\r\n", 2)) < 0)
@@ -1349,7 +1389,7 @@ int git_http_client_send_body(
1349
1389
  }
1350
1390
 
1351
1391
  done:
1352
- git_buf_dispose(&hdr);
1392
+ git_str_dispose(&hdr);
1353
1393
  return error;
1354
1394
  }
1355
1395
 
@@ -1402,9 +1442,9 @@ int git_http_client_read_response(
1402
1442
  git_http_response_dispose(response);
1403
1443
 
1404
1444
  if (client->current_server == PROXY) {
1405
- git_vector_free_deep(&client->proxy.auth_challenges);
1445
+ git_vector_dispose_deep(&client->proxy.auth_challenges);
1406
1446
  } else if(client->current_server == SERVER) {
1407
- git_vector_free_deep(&client->server.auth_challenges);
1447
+ git_vector_dispose_deep(&client->server.auth_challenges);
1408
1448
  }
1409
1449
 
1410
1450
  client->state = READING_RESPONSE;
@@ -1422,8 +1462,9 @@ int git_http_client_read_response(
1422
1462
  GIT_ASSERT(client->state == READING_BODY || client->state == DONE);
1423
1463
 
1424
1464
  done:
1425
- git_buf_dispose(&parser_context.parse_header_name);
1426
- git_buf_dispose(&parser_context.parse_header_value);
1465
+ git_str_dispose(&parser_context.parse_header_name);
1466
+ git_str_dispose(&parser_context.parse_header_value);
1467
+ client->parser.data = NULL;
1427
1468
 
1428
1469
  return error;
1429
1470
  }
@@ -1479,6 +1520,8 @@ done:
1479
1520
  if (error < 0)
1480
1521
  client->connected = 0;
1481
1522
 
1523
+ client->parser.data = NULL;
1524
+
1482
1525
  return error;
1483
1526
  }
1484
1527
 
@@ -1501,7 +1544,7 @@ int git_http_client_skip_body(git_http_client *client)
1501
1544
  do {
1502
1545
  error = client_read_and_parse(client);
1503
1546
 
1504
- if (parser_context.error != HPE_OK ||
1547
+ if (parser_context.error != GIT_HTTP_PARSER_OK ||
1505
1548
  (parser_context.parse_status != PARSE_STATUS_OK &&
1506
1549
  parser_context.parse_status != PARSE_STATUS_NO_OUTPUT)) {
1507
1550
  git_error_set(GIT_ERROR_HTTP,
@@ -1513,6 +1556,8 @@ int git_http_client_skip_body(git_http_client *client)
1513
1556
  if (error < 0)
1514
1557
  client->connected = 0;
1515
1558
 
1559
+ client->parser.data = NULL;
1560
+
1516
1561
  return error;
1517
1562
  }
1518
1563
 
@@ -1531,7 +1576,7 @@ int git_http_client_new(
1531
1576
  client = git__calloc(1, sizeof(git_http_client));
1532
1577
  GIT_ERROR_CHECK_ALLOC(client);
1533
1578
 
1534
- git_buf_init(&client->read_buf, GIT_READ_BUFFER_SIZE);
1579
+ git_str_init(&client->read_buf, GIT_READ_BUFFER_SIZE);
1535
1580
  GIT_ERROR_CHECK_ALLOC(client->read_buf.ptr);
1536
1581
 
1537
1582
  if (opts)
@@ -1541,6 +1586,15 @@ int git_http_client_new(
1541
1586
  return 0;
1542
1587
  }
1543
1588
 
1589
+ /* Update the options of an existing httpclient instance. */
1590
+ void git_http_client_set_options(
1591
+ git_http_client *client,
1592
+ git_http_client_options *opts)
1593
+ {
1594
+ if (opts)
1595
+ memcpy(&client->opts, opts, sizeof(git_http_client_options));
1596
+ }
1597
+
1544
1598
  GIT_INLINE(void) http_server_close(git_http_server *server)
1545
1599
  {
1546
1600
  if (server->stream) {
@@ -1551,7 +1605,7 @@ GIT_INLINE(void) http_server_close(git_http_server *server)
1551
1605
 
1552
1606
  git_net_url_dispose(&server->url);
1553
1607
 
1554
- git_vector_free_deep(&server->auth_challenges);
1608
+ git_vector_dispose_deep(&server->auth_challenges);
1555
1609
  free_auth_context(server);
1556
1610
  }
1557
1611
 
@@ -1560,7 +1614,7 @@ static void http_client_close(git_http_client *client)
1560
1614
  http_server_close(&client->server);
1561
1615
  http_server_close(&client->proxy);
1562
1616
 
1563
- git_buf_dispose(&client->request_msg);
1617
+ git_str_dispose(&client->request_msg);
1564
1618
 
1565
1619
  client->state = 0;
1566
1620
  client->request_count = 0;
@@ -1574,6 +1628,6 @@ void git_http_client_free(git_http_client *client)
1574
1628
  return;
1575
1629
 
1576
1630
  http_client_close(client);
1577
- git_buf_dispose(&client->read_buf);
1631
+ git_str_dispose(&client->read_buf);
1578
1632
  git__free(client);
1579
1633
  }