rugged 1.0.0 → 1.2.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 (338) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -0
  3. data/README.md +3 -3
  4. data/ext/rugged/rugged.c +7 -4
  5. data/ext/rugged/rugged_commit.c +1 -1
  6. data/ext/rugged/rugged_config.c +1 -1
  7. data/ext/rugged/rugged_object.c +1 -1
  8. data/ext/rugged/rugged_remote.c +32 -2
  9. data/ext/rugged/rugged_repo.c +13 -3
  10. data/lib/rugged/commit.rb +17 -4
  11. data/lib/rugged/repository.rb +7 -8
  12. data/lib/rugged/submodule_collection.rb +4 -4
  13. data/lib/rugged/version.rb +1 -1
  14. data/vendor/libgit2/CMakeLists.txt +41 -74
  15. data/vendor/libgit2/COPYING +109 -1
  16. data/vendor/libgit2/cmake/{Modules/AddCFlagIfSupported.cmake → AddCFlagIfSupported.cmake} +0 -0
  17. data/vendor/libgit2/cmake/{Modules/EnableWarnings.cmake → EnableWarnings.cmake} +0 -0
  18. data/vendor/libgit2/cmake/{Modules/FindCoreFoundation.cmake → FindCoreFoundation.cmake} +0 -0
  19. data/vendor/libgit2/cmake/{Modules/FindGSSAPI.cmake → FindGSSAPI.cmake} +0 -0
  20. data/vendor/libgit2/cmake/{Modules/FindGSSFramework.cmake → FindGSSFramework.cmake} +0 -0
  21. data/vendor/libgit2/cmake/{Modules/FindHTTP_Parser.cmake → FindHTTP_Parser.cmake} +0 -0
  22. data/vendor/libgit2/cmake/{Modules/FindIconv.cmake → FindIconv.cmake} +0 -0
  23. data/vendor/libgit2/cmake/{Modules/FindPCRE.cmake → FindPCRE.cmake} +0 -0
  24. data/vendor/libgit2/cmake/{Modules/FindPCRE2.cmake → FindPCRE2.cmake} +0 -0
  25. data/vendor/libgit2/cmake/{Modules/FindPkgLibraries.cmake → FindPkgLibraries.cmake} +0 -0
  26. data/vendor/libgit2/cmake/{Modules/FindSecurity.cmake → FindSecurity.cmake} +0 -0
  27. data/vendor/libgit2/cmake/{Modules/FindStatNsec.cmake → FindStatNsec.cmake} +0 -0
  28. data/vendor/libgit2/cmake/Findfutimens.cmake +14 -0
  29. data/vendor/libgit2/cmake/{Modules/FindmbedTLS.cmake → FindmbedTLS.cmake} +0 -0
  30. data/vendor/libgit2/cmake/{Modules/IdeSplitSources.cmake → IdeSplitSources.cmake} +0 -0
  31. data/vendor/libgit2/cmake/{Modules/PkgBuildConfig.cmake → PkgBuildConfig.cmake} +0 -0
  32. data/vendor/libgit2/cmake/{Modules/SanitizeBool.cmake → SanitizeBool.cmake} +0 -0
  33. data/vendor/libgit2/cmake/{Modules/SelectGSSAPI.cmake → SelectGSSAPI.cmake} +18 -26
  34. data/vendor/libgit2/cmake/{Modules/SelectHTTPSBackend.cmake → SelectHTTPSBackend.cmake} +29 -32
  35. data/vendor/libgit2/cmake/{Modules/SelectHashes.cmake → SelectHashes.cmake} +21 -28
  36. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +101 -0
  37. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +4 -3
  38. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +24 -10
  39. data/vendor/libgit2/deps/ntlmclient/compat.h +0 -27
  40. data/vendor/libgit2/deps/ntlmclient/crypt.h +14 -9
  41. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +20 -20
  42. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +3 -3
  43. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +37 -36
  44. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +4 -3
  45. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +178 -51
  46. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +74 -5
  47. data/vendor/libgit2/deps/ntlmclient/ntlm.c +164 -135
  48. data/vendor/libgit2/deps/ntlmclient/ntlm.h +13 -9
  49. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +16 -3
  50. data/vendor/libgit2/deps/ntlmclient/unicode.h +10 -4
  51. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +16 -27
  52. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.h +20 -0
  53. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +28 -52
  54. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.h +22 -0
  55. data/vendor/libgit2/deps/ntlmclient/util.c +15 -1
  56. data/vendor/libgit2/deps/ntlmclient/util.h +2 -1
  57. data/vendor/libgit2/deps/pcre/LICENCE +93 -0
  58. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  59. data/vendor/libgit2/deps/pcre/pcre_compile.c +29 -17
  60. data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +4 -4
  61. data/vendor/libgit2/deps/pcre/pcreposix.c +2 -3
  62. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -5
  63. data/vendor/libgit2/deps/zlib/deflate.c +1 -0
  64. data/vendor/libgit2/include/git2/annotated_commit.h +1 -1
  65. data/vendor/libgit2/include/git2/apply.h +2 -0
  66. data/vendor/libgit2/include/git2/attr.h +89 -0
  67. data/vendor/libgit2/include/git2/blame.h +95 -42
  68. data/vendor/libgit2/include/git2/blob.h +31 -3
  69. data/vendor/libgit2/include/git2/branch.h +25 -0
  70. data/vendor/libgit2/include/git2/cert.h +42 -5
  71. data/vendor/libgit2/include/git2/checkout.h +28 -12
  72. data/vendor/libgit2/include/git2/commit.h +35 -19
  73. data/vendor/libgit2/include/git2/common.h +33 -6
  74. data/vendor/libgit2/include/git2/config.h +1 -1
  75. data/vendor/libgit2/include/git2/deprecated.h +248 -8
  76. data/vendor/libgit2/include/git2/diff.h +35 -20
  77. data/vendor/libgit2/include/git2/errors.h +8 -7
  78. data/vendor/libgit2/include/git2/filter.h +57 -17
  79. data/vendor/libgit2/include/git2/graph.h +20 -2
  80. data/vendor/libgit2/include/git2/index.h +4 -5
  81. data/vendor/libgit2/include/git2/indexer.h +2 -1
  82. data/vendor/libgit2/include/git2/odb.h +44 -20
  83. data/vendor/libgit2/include/git2/pack.h +1 -1
  84. data/vendor/libgit2/include/git2/patch.h +8 -0
  85. data/vendor/libgit2/include/git2/rebase.h +25 -1
  86. data/vendor/libgit2/include/git2/refs.h +9 -5
  87. data/vendor/libgit2/include/git2/remote.h +59 -6
  88. data/vendor/libgit2/include/git2/repository.h +95 -52
  89. data/vendor/libgit2/include/git2/revparse.h +5 -5
  90. data/vendor/libgit2/include/git2/status.h +115 -59
  91. data/vendor/libgit2/include/git2/strarray.h +6 -10
  92. data/vendor/libgit2/include/git2/submodule.h +9 -0
  93. data/vendor/libgit2/include/git2/sys/commit_graph.h +174 -0
  94. data/vendor/libgit2/include/git2/sys/filter.h +49 -28
  95. data/vendor/libgit2/include/git2/sys/midx.h +74 -0
  96. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -0
  97. data/vendor/libgit2/include/git2/sys/transport.h +1 -0
  98. data/vendor/libgit2/include/git2/tag.h +12 -0
  99. data/vendor/libgit2/include/git2/transport.h +1 -1
  100. data/vendor/libgit2/include/git2/tree.h +2 -14
  101. data/vendor/libgit2/include/git2/types.h +9 -0
  102. data/vendor/libgit2/include/git2/version.h +3 -3
  103. data/vendor/libgit2/include/git2/worktree.h +1 -0
  104. data/vendor/libgit2/src/CMakeLists.txt +77 -44
  105. data/vendor/libgit2/src/alloc.c +21 -8
  106. data/vendor/libgit2/src/allocators/failalloc.c +92 -0
  107. data/vendor/libgit2/src/allocators/failalloc.h +23 -0
  108. data/vendor/libgit2/src/allocators/stdalloc.c +41 -10
  109. data/vendor/libgit2/src/allocators/win32_leakcheck.c +118 -0
  110. data/vendor/libgit2/src/allocators/{win32_crtdbg.h → win32_leakcheck.h} +3 -3
  111. data/vendor/libgit2/src/annotated_commit.c +21 -9
  112. data/vendor/libgit2/src/apply.c +21 -8
  113. data/vendor/libgit2/src/array.h +11 -11
  114. data/vendor/libgit2/src/assert_safe.h +58 -0
  115. data/vendor/libgit2/src/attr.c +181 -74
  116. data/vendor/libgit2/src/attr_file.c +92 -42
  117. data/vendor/libgit2/src/attr_file.h +32 -11
  118. data/vendor/libgit2/src/attrcache.c +44 -40
  119. data/vendor/libgit2/src/attrcache.h +4 -5
  120. data/vendor/libgit2/src/blame.c +28 -15
  121. data/vendor/libgit2/src/blame_git.c +6 -3
  122. data/vendor/libgit2/src/blob.c +46 -24
  123. data/vendor/libgit2/src/branch.c +87 -37
  124. data/vendor/libgit2/src/buffer.c +339 -27
  125. data/vendor/libgit2/src/buffer.h +153 -2
  126. data/vendor/libgit2/src/cache.c +3 -24
  127. data/vendor/libgit2/src/cache.h +7 -7
  128. data/vendor/libgit2/src/cc-compat.h +10 -2
  129. data/vendor/libgit2/src/checkout.c +97 -98
  130. data/vendor/libgit2/src/cherrypick.c +8 -2
  131. data/vendor/libgit2/src/clone.c +104 -29
  132. data/vendor/libgit2/src/commit.c +41 -28
  133. data/vendor/libgit2/src/commit_graph.c +1209 -0
  134. data/vendor/libgit2/src/commit_graph.h +162 -0
  135. data/vendor/libgit2/src/commit_list.c +46 -0
  136. data/vendor/libgit2/src/commit_list.h +2 -0
  137. data/vendor/libgit2/src/common.h +26 -2
  138. data/vendor/libgit2/src/config.c +40 -22
  139. data/vendor/libgit2/src/config_cache.c +9 -4
  140. data/vendor/libgit2/src/config_entries.c +35 -27
  141. data/vendor/libgit2/src/config_file.c +25 -8
  142. data/vendor/libgit2/src/config_parse.c +5 -7
  143. data/vendor/libgit2/src/config_snapshot.c +2 -1
  144. data/vendor/libgit2/src/crlf.c +16 -6
  145. data/vendor/libgit2/src/date.c +4 -3
  146. data/vendor/libgit2/src/delta.c +1 -1
  147. data/vendor/libgit2/src/describe.c +11 -4
  148. data/vendor/libgit2/src/diff.c +23 -19
  149. data/vendor/libgit2/src/diff_driver.c +21 -17
  150. data/vendor/libgit2/src/diff_file.c +5 -7
  151. data/vendor/libgit2/src/diff_generate.c +56 -28
  152. data/vendor/libgit2/src/diff_parse.c +2 -3
  153. data/vendor/libgit2/src/diff_print.c +81 -65
  154. data/vendor/libgit2/src/diff_stats.c +19 -16
  155. data/vendor/libgit2/src/diff_tform.c +13 -13
  156. data/vendor/libgit2/src/diff_xdiff.c +4 -2
  157. data/vendor/libgit2/src/diff_xdiff.h +1 -1
  158. data/vendor/libgit2/src/errors.c +26 -19
  159. data/vendor/libgit2/src/features.h.in +5 -1
  160. data/vendor/libgit2/src/fetch.c +7 -2
  161. data/vendor/libgit2/src/fetchhead.c +8 -4
  162. data/vendor/libgit2/src/filebuf.c +9 -7
  163. data/vendor/libgit2/src/filter.c +209 -113
  164. data/vendor/libgit2/src/filter.h +24 -5
  165. data/vendor/libgit2/src/futils.c +8 -8
  166. data/vendor/libgit2/src/futils.h +4 -4
  167. data/vendor/libgit2/src/graph.c +64 -9
  168. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +3 -3
  169. data/vendor/libgit2/src/hash/sha1/common_crypto.c +3 -3
  170. data/vendor/libgit2/src/hash/sha1/generic.h +1 -1
  171. data/vendor/libgit2/src/hash/sha1/mbedtls.c +12 -12
  172. data/vendor/libgit2/src/hash/sha1/openssl.c +3 -3
  173. data/vendor/libgit2/src/hash/sha1/sha1dc/sha1.c +0 -2
  174. data/vendor/libgit2/src/hash/sha1/win32.c +15 -11
  175. data/vendor/libgit2/src/hash.c +16 -13
  176. data/vendor/libgit2/src/hash.h +1 -1
  177. data/vendor/libgit2/src/hashsig.c +23 -10
  178. data/vendor/libgit2/src/ident.c +13 -3
  179. data/vendor/libgit2/src/idxmap.c +0 -22
  180. data/vendor/libgit2/src/ignore.c +35 -19
  181. data/vendor/libgit2/src/index.c +126 -84
  182. data/vendor/libgit2/src/index.h +1 -1
  183. data/vendor/libgit2/src/indexer.c +60 -36
  184. data/vendor/libgit2/src/integer.h +79 -2
  185. data/vendor/libgit2/src/iterator.c +40 -28
  186. data/vendor/libgit2/src/iterator.h +1 -1
  187. data/vendor/libgit2/src/khash.h +2 -11
  188. data/vendor/libgit2/src/{settings.c → libgit2.c} +125 -49
  189. data/vendor/libgit2/src/libgit2.h +15 -0
  190. data/vendor/libgit2/src/mailmap.c +23 -10
  191. data/vendor/libgit2/src/map.h +3 -3
  192. data/vendor/libgit2/src/merge.c +108 -46
  193. data/vendor/libgit2/src/merge.h +2 -1
  194. data/vendor/libgit2/src/merge_driver.c +19 -13
  195. data/vendor/libgit2/src/merge_file.c +15 -9
  196. data/vendor/libgit2/src/message.c +3 -1
  197. data/vendor/libgit2/src/midx.c +879 -0
  198. data/vendor/libgit2/src/midx.h +110 -0
  199. data/vendor/libgit2/src/mwindow.c +214 -95
  200. data/vendor/libgit2/src/mwindow.h +3 -3
  201. data/vendor/libgit2/src/net.c +133 -4
  202. data/vendor/libgit2/src/net.h +16 -2
  203. data/vendor/libgit2/src/netops.c +6 -4
  204. data/vendor/libgit2/src/netops.h +2 -2
  205. data/vendor/libgit2/src/notes.c +10 -10
  206. data/vendor/libgit2/src/object.c +24 -15
  207. data/vendor/libgit2/src/odb.c +298 -57
  208. data/vendor/libgit2/src/odb.h +16 -2
  209. data/vendor/libgit2/src/odb_loose.c +31 -21
  210. data/vendor/libgit2/src/odb_mempack.c +3 -1
  211. data/vendor/libgit2/src/odb_pack.c +391 -114
  212. data/vendor/libgit2/src/oid.c +7 -4
  213. data/vendor/libgit2/src/pack-objects.c +83 -69
  214. data/vendor/libgit2/src/pack.c +383 -150
  215. data/vendor/libgit2/src/pack.h +44 -9
  216. data/vendor/libgit2/src/patch.c +14 -7
  217. data/vendor/libgit2/src/patch_generate.c +3 -5
  218. data/vendor/libgit2/src/patch_parse.c +6 -3
  219. data/vendor/libgit2/src/path.c +102 -57
  220. data/vendor/libgit2/src/path.h +79 -6
  221. data/vendor/libgit2/src/pathspec.c +12 -11
  222. data/vendor/libgit2/src/pool.c +34 -22
  223. data/vendor/libgit2/src/pool.h +9 -1
  224. data/vendor/libgit2/src/posix.c +43 -12
  225. data/vendor/libgit2/src/posix.h +9 -0
  226. data/vendor/libgit2/src/proxy.c +2 -0
  227. data/vendor/libgit2/src/push.c +2 -0
  228. data/vendor/libgit2/src/reader.c +10 -6
  229. data/vendor/libgit2/src/rebase.c +95 -49
  230. data/vendor/libgit2/src/refdb.c +165 -13
  231. data/vendor/libgit2/src/refdb.h +69 -0
  232. data/vendor/libgit2/src/refdb_fs.c +144 -152
  233. data/vendor/libgit2/src/reflog.c +21 -20
  234. data/vendor/libgit2/src/refs.c +151 -231
  235. data/vendor/libgit2/src/refs.h +2 -20
  236. data/vendor/libgit2/src/refspec.c +80 -44
  237. data/vendor/libgit2/src/regexp.c +2 -2
  238. data/vendor/libgit2/src/remote.c +312 -121
  239. data/vendor/libgit2/src/remote.h +2 -1
  240. data/vendor/libgit2/src/repository.c +351 -189
  241. data/vendor/libgit2/src/repository.h +23 -29
  242. data/vendor/libgit2/src/reset.c +7 -6
  243. data/vendor/libgit2/src/revert.c +8 -2
  244. data/vendor/libgit2/src/revparse.c +19 -13
  245. data/vendor/libgit2/src/revwalk.c +35 -20
  246. data/vendor/libgit2/src/runtime.c +162 -0
  247. data/vendor/libgit2/src/runtime.h +62 -0
  248. data/vendor/libgit2/src/{refdb_fs.h → settings.h} +3 -11
  249. data/vendor/libgit2/src/signature.c +6 -5
  250. data/vendor/libgit2/src/sortedcache.c +2 -3
  251. data/vendor/libgit2/src/sortedcache.h +10 -8
  252. data/vendor/libgit2/src/stash.c +7 -3
  253. data/vendor/libgit2/src/status.c +9 -4
  254. data/vendor/libgit2/src/strarray.c +64 -0
  255. data/vendor/libgit2/src/streams/mbedtls.c +14 -17
  256. data/vendor/libgit2/src/streams/mbedtls.h +1 -1
  257. data/vendor/libgit2/src/streams/openssl.c +113 -207
  258. data/vendor/libgit2/src/streams/openssl.h +9 -1
  259. data/vendor/libgit2/src/streams/openssl_dynamic.c +309 -0
  260. data/vendor/libgit2/src/streams/openssl_dynamic.h +348 -0
  261. data/vendor/libgit2/src/streams/openssl_legacy.c +203 -0
  262. data/vendor/libgit2/src/streams/openssl_legacy.h +63 -0
  263. data/vendor/libgit2/src/streams/registry.c +10 -9
  264. data/vendor/libgit2/src/streams/socket.c +6 -2
  265. data/vendor/libgit2/src/streams/stransport.c +6 -3
  266. data/vendor/libgit2/src/streams/tls.c +5 -3
  267. data/vendor/libgit2/src/submodule.c +134 -66
  268. data/vendor/libgit2/src/submodule.h +9 -9
  269. data/vendor/libgit2/src/sysdir.c +8 -26
  270. data/vendor/libgit2/src/sysdir.h +0 -11
  271. data/vendor/libgit2/src/tag.c +49 -11
  272. data/vendor/libgit2/src/thread.c +140 -0
  273. data/vendor/libgit2/src/thread.h +479 -0
  274. data/vendor/libgit2/src/threadstate.c +83 -0
  275. data/vendor/libgit2/src/threadstate.h +24 -0
  276. data/vendor/libgit2/src/trace.c +2 -2
  277. data/vendor/libgit2/src/trace.h +17 -13
  278. data/vendor/libgit2/src/transaction.c +21 -9
  279. data/vendor/libgit2/src/transport.c +3 -3
  280. data/vendor/libgit2/src/transports/auth.c +1 -1
  281. data/vendor/libgit2/src/transports/auth_negotiate.c +11 -4
  282. data/vendor/libgit2/src/transports/auth_ntlm.c +10 -6
  283. data/vendor/libgit2/src/transports/credential.c +17 -7
  284. data/vendor/libgit2/src/transports/credential_helpers.c +2 -0
  285. data/vendor/libgit2/src/transports/git.c +1 -3
  286. data/vendor/libgit2/src/transports/http.c +19 -17
  287. data/vendor/libgit2/src/transports/http.h +1 -0
  288. data/vendor/libgit2/src/transports/httpclient.c +84 -42
  289. data/vendor/libgit2/src/transports/httpclient.h +1 -1
  290. data/vendor/libgit2/src/transports/local.c +5 -5
  291. data/vendor/libgit2/src/transports/smart.c +14 -9
  292. data/vendor/libgit2/src/transports/smart.h +1 -1
  293. data/vendor/libgit2/src/transports/smart_protocol.c +11 -5
  294. data/vendor/libgit2/src/transports/ssh.c +51 -17
  295. data/vendor/libgit2/src/transports/winhttp.c +156 -88
  296. data/vendor/libgit2/src/tree.c +100 -77
  297. data/vendor/libgit2/src/tree.h +1 -0
  298. data/vendor/libgit2/src/tsort.c +0 -2
  299. data/vendor/libgit2/src/unix/map.c +3 -1
  300. data/vendor/libgit2/src/unix/posix.h +16 -1
  301. data/vendor/libgit2/src/unix/pthread.h +2 -1
  302. data/vendor/libgit2/src/utf8.c +150 -0
  303. data/vendor/libgit2/src/utf8.h +52 -0
  304. data/vendor/libgit2/src/util.c +74 -183
  305. data/vendor/libgit2/src/util.h +33 -39
  306. data/vendor/libgit2/src/vector.c +23 -19
  307. data/vendor/libgit2/src/vector.h +4 -2
  308. data/vendor/libgit2/src/win32/findfile.c +4 -2
  309. data/vendor/libgit2/src/win32/git2.rc +18 -3
  310. data/vendor/libgit2/src/win32/map.c +1 -1
  311. data/vendor/libgit2/src/win32/msvc-compat.h +9 -1
  312. data/vendor/libgit2/src/win32/path_w32.c +23 -25
  313. data/vendor/libgit2/src/win32/path_w32.h +0 -1
  314. data/vendor/libgit2/src/win32/posix_w32.c +77 -1
  315. data/vendor/libgit2/src/win32/precompiled.h +0 -1
  316. data/vendor/libgit2/src/win32/reparse.h +4 -4
  317. data/vendor/libgit2/src/win32/thread.c +24 -15
  318. data/vendor/libgit2/src/win32/thread.h +1 -1
  319. data/vendor/libgit2/src/win32/w32_buffer.c +3 -3
  320. data/vendor/libgit2/src/win32/w32_common.h +18 -9
  321. data/vendor/libgit2/src/win32/{w32_crtdbg_stacktrace.c → w32_leakcheck.c} +269 -33
  322. data/vendor/libgit2/src/win32/w32_leakcheck.h +222 -0
  323. data/vendor/libgit2/src/win32/w32_util.h +6 -6
  324. data/vendor/libgit2/src/worktree.c +37 -15
  325. data/vendor/libgit2/src/zstream.c +1 -1
  326. metadata +56 -38
  327. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +0 -29
  328. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +0 -96
  329. data/vendor/libgit2/src/allocators/win32_crtdbg.c +0 -118
  330. data/vendor/libgit2/src/buf_text.c +0 -316
  331. data/vendor/libgit2/src/buf_text.h +0 -122
  332. data/vendor/libgit2/src/global.c +0 -361
  333. data/vendor/libgit2/src/global.h +0 -41
  334. data/vendor/libgit2/src/thread-utils.c +0 -58
  335. data/vendor/libgit2/src/thread-utils.h +0 -246
  336. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -127
  337. data/vendor/libgit2/src/win32/w32_stack.c +0 -188
  338. data/vendor/libgit2/src/win32/w32_stack.h +0 -140
@@ -54,6 +54,7 @@ int git_credential_userpass(
54
54
 
55
55
  /* Deprecated credential functions */
56
56
 
57
+ #ifndef GIT_DEPRECATE_HARD
57
58
  int git_cred_userpass(
58
59
  git_credential **out,
59
60
  const char *url,
@@ -64,3 +65,4 @@ int git_cred_userpass(
64
65
  return git_credential_userpass(out, url, user_from_url,
65
66
  allowed_types, payload);
66
67
  }
68
+ #endif
@@ -327,7 +327,7 @@ static int _git_close(git_smart_subtransport *subtransport)
327
327
  {
328
328
  git_subtransport *t = (git_subtransport *) subtransport;
329
329
 
330
- assert(!t->current_stream);
330
+ GIT_ASSERT(!t->current_stream);
331
331
 
332
332
  GIT_UNUSED(t);
333
333
 
@@ -338,8 +338,6 @@ static void _git_free(git_smart_subtransport *subtransport)
338
338
  {
339
339
  git_subtransport *t = (git_subtransport *) subtransport;
340
340
 
341
- assert(!t->current_stream);
342
-
343
341
  git__free(t);
344
342
  }
345
343
 
@@ -14,7 +14,6 @@
14
14
  #include "buffer.h"
15
15
  #include "net.h"
16
16
  #include "netops.h"
17
- #include "global.h"
18
17
  #include "remote.h"
19
18
  #include "git2/sys/credential.h"
20
19
  #include "smart.h"
@@ -105,6 +104,11 @@ static int apply_url_credentials(
105
104
  const char *username,
106
105
  const char *password)
107
106
  {
107
+ GIT_ASSERT_ARG(username);
108
+
109
+ if (!password)
110
+ password = "";
111
+
108
112
  if (allowed_types & GIT_CREDENTIAL_USERPASS_PLAINTEXT)
109
113
  return git_credential_userpass_plaintext_new(cred, username, password);
110
114
 
@@ -139,8 +143,7 @@ static int handle_auth(
139
143
  /* Start with URL-specified credentials, if there were any. */
140
144
  if ((allowed_credtypes & GIT_CREDENTIAL_USERPASS_PLAINTEXT) &&
141
145
  !server->url_cred_presented &&
142
- server->url.username &&
143
- server->url.password) {
146
+ server->url.username) {
144
147
  error = apply_url_credentials(&server->cred, allowed_credtypes, server->url.username, server->url.password);
145
148
  server->url_cred_presented = 1;
146
149
 
@@ -159,7 +162,7 @@ static int handle_auth(
159
162
 
160
163
  if (error > 0) {
161
164
  git_error_set(GIT_ERROR_HTTP, "%s authentication required but no callback set", server_type);
162
- error = -1;
165
+ error = GIT_EAUTH;
163
166
  }
164
167
 
165
168
  if (!error)
@@ -176,7 +179,7 @@ GIT_INLINE(int) handle_remote_auth(
176
179
 
177
180
  if (response->server_auth_credtypes == 0) {
178
181
  git_error_set(GIT_ERROR_HTTP, "server requires authentication that we do not support");
179
- return -1;
182
+ return GIT_EAUTH;
180
183
  }
181
184
 
182
185
  /* Otherwise, prompt for credentials. */
@@ -198,7 +201,7 @@ GIT_INLINE(int) handle_proxy_auth(
198
201
 
199
202
  if (response->proxy_auth_credtypes == 0) {
200
203
  git_error_set(GIT_ERROR_HTTP, "proxy requires authentication that we do not support");
201
- return -1;
204
+ return GIT_EAUTH;
202
205
  }
203
206
 
204
207
  /* Otherwise, prompt for credentials. */
@@ -256,7 +259,7 @@ static int handle_response(
256
259
  } else if (response->status == GIT_HTTP_STATUS_UNAUTHORIZED ||
257
260
  response->status == GIT_HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED) {
258
261
  git_error_set(GIT_ERROR_HTTP, "unexpected authentication failure");
259
- return -1;
262
+ return GIT_EAUTH;
260
263
  }
261
264
 
262
265
  if (response->status != GIT_HTTP_STATUS_OK) {
@@ -287,7 +290,6 @@ static int lookup_proxy(
287
290
  {
288
291
  const char *proxy;
289
292
  git_remote *remote;
290
- bool use_ssl;
291
293
  char *config = NULL;
292
294
  int error = 0;
293
295
 
@@ -301,9 +303,8 @@ static int lookup_proxy(
301
303
 
302
304
  case GIT_PROXY_AUTO:
303
305
  remote = transport->owner->owner;
304
- use_ssl = !strcmp(transport->server.url.scheme, "https");
305
306
 
306
- error = git_remote__get_http_proxy(remote, use_ssl, &config);
307
+ error = git_remote__http_proxy(&config, remote, &transport->server.url);
307
308
 
308
309
  if (error || !config)
309
310
  goto done;
@@ -413,11 +414,11 @@ static int http_stream_read(
413
414
 
414
415
  if (stream->state == HTTP_STATE_SENDING_REQUEST) {
415
416
  git_error_set(GIT_ERROR_HTTP, "too many redirects or authentication replays");
416
- error = -1;
417
+ error = GIT_ERROR; /* not GIT_EAUTH, because the exact cause is unclear */
417
418
  goto done;
418
419
  }
419
420
 
420
- assert (stream->state == HTTP_STATE_RECEIVING_RESPONSE);
421
+ GIT_ASSERT(stream->state == HTTP_STATE_RECEIVING_RESPONSE);
421
422
 
422
423
  error = git_http_client_read_body(transport->http_client, buffer, buffer_size);
423
424
 
@@ -551,11 +552,11 @@ static int http_stream_write(
551
552
  if (stream->state == HTTP_STATE_NONE) {
552
553
  git_error_set(GIT_ERROR_HTTP,
553
554
  "too many redirects or authentication replays");
554
- error = -1;
555
+ error = GIT_ERROR; /* not GIT_EAUTH because the exact cause is unclear */
555
556
  goto done;
556
557
  }
557
558
 
558
- assert(stream->state == HTTP_STATE_SENDING_REQUEST);
559
+ GIT_ASSERT(stream->state == HTTP_STATE_SENDING_REQUEST);
559
560
 
560
561
  error = git_http_client_send_body(transport->http_client, buffer, len);
561
562
 
@@ -589,7 +590,7 @@ static int http_stream_read_response(
589
590
  (error = handle_response(&complete, stream, &response, false)) < 0)
590
591
  goto done;
591
592
 
592
- assert(complete);
593
+ GIT_ASSERT(complete);
593
594
  stream->state = HTTP_STATE_RECEIVING_RESPONSE;
594
595
  }
595
596
 
@@ -638,7 +639,8 @@ static int http_action(
638
639
  const http_service *service;
639
640
  int error;
640
641
 
641
- assert(out && t);
642
+ GIT_ASSERT_ARG(out);
643
+ GIT_ASSERT_ARG(t);
642
644
 
643
645
  *out = NULL;
644
646
 
@@ -721,7 +723,7 @@ int git_smart_subtransport_http(git_smart_subtransport **out, git_transport *own
721
723
 
722
724
  GIT_UNUSED(param);
723
725
 
724
- assert(out);
726
+ GIT_ASSERT_ARG(out);
725
727
 
726
728
  transport = git__calloc(sizeof(http_subtransport), 1);
727
729
  GIT_ERROR_CHECK_ALLOC(transport);
@@ -9,6 +9,7 @@
9
9
  #define INCLUDE_transports_http_h__
10
10
 
11
11
  #include "buffer.h"
12
+ #include "settings.h"
12
13
  #include "httpclient.h"
13
14
 
14
15
  #define GIT_HTTP_REPLAY_MAX 15
@@ -10,7 +10,6 @@
10
10
  #include "http_parser.h"
11
11
  #include "vector.h"
12
12
  #include "trace.h"
13
- #include "global.h"
14
13
  #include "httpclient.h"
15
14
  #include "http.h"
16
15
  #include "auth.h"
@@ -146,7 +145,8 @@ bool git_http_response_is_redirect(git_http_response *response)
146
145
 
147
146
  void git_http_response_dispose(git_http_response *response)
148
147
  {
149
- assert(response);
148
+ if (!response)
149
+ return;
150
150
 
151
151
  git__free(response->content_type);
152
152
  git__free(response->location);
@@ -400,7 +400,7 @@ static int on_body(http_parser *parser, const char *buf, size_t len)
400
400
  return 0;
401
401
  }
402
402
 
403
- assert(ctx->output_size >= ctx->output_written);
403
+ GIT_ASSERT(ctx->output_size >= ctx->output_written);
404
404
 
405
405
  max_len = min(ctx->output_size - ctx->output_written, len);
406
406
  max_len = min(max_len, INT_MAX);
@@ -445,7 +445,7 @@ GIT_INLINE(int) client_write_request(git_http_client *client)
445
445
  0);
446
446
  }
447
447
 
448
- const char *name_for_method(git_http_method method)
448
+ static const char *name_for_method(git_http_method method)
449
449
  {
450
450
  switch (method) {
451
451
  case GIT_HTTP_METHOD_GET:
@@ -597,7 +597,7 @@ static int apply_credentials(
597
597
  free_auth_context(server);
598
598
  } else if (!token.size) {
599
599
  git_error_set(GIT_ERROR_HTTP, "failed to respond to authentication challenge");
600
- error = -1;
600
+ error = GIT_EAUTH;
601
601
  goto done;
602
602
  }
603
603
 
@@ -631,6 +631,26 @@ GIT_INLINE(int) apply_proxy_credentials(
631
631
  request->proxy_credentials);
632
632
  }
633
633
 
634
+ static int puts_host_and_port(git_buf *buf, git_net_url *url, bool force_port)
635
+ {
636
+ bool ipv6 = git_net_url_is_ipv6(url);
637
+
638
+ if (ipv6)
639
+ git_buf_putc(buf, '[');
640
+
641
+ git_buf_puts(buf, url->host);
642
+
643
+ if (ipv6)
644
+ git_buf_putc(buf, ']');
645
+
646
+ if (force_port || !git_net_url_is_default_port(url)) {
647
+ git_buf_putc(buf, ':');
648
+ git_buf_puts(buf, url->port);
649
+ }
650
+
651
+ return git_buf_oom(buf) ? -1 : 0;
652
+ }
653
+
634
654
  static int generate_connect_request(
635
655
  git_http_client *client,
636
656
  git_http_request *request)
@@ -641,14 +661,17 @@ static int generate_connect_request(
641
661
  git_buf_clear(&client->request_msg);
642
662
  buf = &client->request_msg;
643
663
 
644
- git_buf_printf(buf, "CONNECT %s:%s HTTP/1.1\r\n",
645
- client->server.url.host, client->server.url.port);
664
+ git_buf_puts(buf, "CONNECT ");
665
+ puts_host_and_port(buf, &client->server.url, true);
666
+ git_buf_puts(buf, " HTTP/1.1\r\n");
646
667
 
647
668
  git_buf_puts(buf, "User-Agent: ");
648
669
  git_http__user_agent(buf);
649
670
  git_buf_puts(buf, "\r\n");
650
671
 
651
- git_buf_printf(buf, "Host: %s\r\n", client->proxy.url.host);
672
+ git_buf_puts(buf, "Host: ");
673
+ puts_host_and_port(buf, &client->server.url, true);
674
+ git_buf_puts(buf, "\r\n");
652
675
 
653
676
  if ((error = apply_proxy_credentials(buf, client, request) < 0))
654
677
  return -1;
@@ -658,6 +681,11 @@ static int generate_connect_request(
658
681
  return git_buf_oom(buf) ? -1 : 0;
659
682
  }
660
683
 
684
+ static bool use_connect_proxy(git_http_client *client)
685
+ {
686
+ return client->proxy.url.host && !strcmp(client->server.url.scheme, "https");
687
+ }
688
+
661
689
  static int generate_request(
662
690
  git_http_client *client,
663
691
  git_http_request *request)
@@ -666,7 +694,8 @@ static int generate_request(
666
694
  size_t i;
667
695
  int error;
668
696
 
669
- assert(client && request);
697
+ GIT_ASSERT_ARG(client);
698
+ GIT_ASSERT_ARG(request);
670
699
 
671
700
  git_buf_clear(&client->request_msg);
672
701
  buf = &client->request_msg;
@@ -686,11 +715,8 @@ static int generate_request(
686
715
  git_http__user_agent(buf);
687
716
  git_buf_puts(buf, "\r\n");
688
717
 
689
- git_buf_printf(buf, "Host: %s", request->url->host);
690
-
691
- if (!git_net_url_is_default_port(request->url))
692
- git_buf_printf(buf, ":%s", request->url->port);
693
-
718
+ git_buf_puts(buf, "Host: ");
719
+ puts_host_and_port(buf, request->url, false);
694
720
  git_buf_puts(buf, "\r\n");
695
721
 
696
722
  if (request->accept)
@@ -713,7 +739,8 @@ static int generate_request(
713
739
  git_buf_printf(buf, "Expect: 100-continue\r\n");
714
740
 
715
741
  if ((error = apply_server_credentials(buf, client, request)) < 0 ||
716
- (error = apply_proxy_credentials(buf, client, request)) < 0)
742
+ (!use_connect_proxy(client) &&
743
+ (error = apply_proxy_credentials(buf, client, request)) < 0))
717
744
  return error;
718
745
 
719
746
  if (request->custom_headers) {
@@ -843,7 +870,10 @@ static int setup_hosts(
843
870
  {
844
871
  int ret, diff = 0;
845
872
 
846
- assert(client && request && request->url);
873
+ GIT_ASSERT_ARG(client);
874
+ GIT_ASSERT_ARG(request);
875
+
876
+ GIT_ASSERT(request->url);
847
877
 
848
878
  if ((ret = server_setup_from_url(&client->server, request->url)) < 0)
849
879
  return ret;
@@ -898,7 +928,7 @@ static int proxy_connect(
898
928
  int error;
899
929
 
900
930
  if (!client->proxy_connected || !client->keepalive) {
901
- git_trace(GIT_TRACE_DEBUG, "Connecting to proxy %s:%s",
931
+ git_trace(GIT_TRACE_DEBUG, "Connecting to proxy %s port %s",
902
932
  client->proxy.url.host, client->proxy.url.port);
903
933
 
904
934
  if ((error = server_create_stream(&client->proxy)) < 0 ||
@@ -923,7 +953,7 @@ static int proxy_connect(
923
953
  (error = git_http_client_skip_body(client)) < 0)
924
954
  goto done;
925
955
 
926
- assert(client->state == DONE);
956
+ GIT_ASSERT(client->state == DONE);
927
957
 
928
958
  if (response.status == GIT_HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED) {
929
959
  save_early_response(client, &response);
@@ -1003,8 +1033,7 @@ static int http_client_connect(
1003
1033
  reset_parser(client);
1004
1034
 
1005
1035
  /* Reconnect to the proxy if necessary. */
1006
- use_proxy = client->proxy.url.host &&
1007
- !strcmp(client->server.url.scheme, "https");
1036
+ use_proxy = use_connect_proxy(client);
1008
1037
 
1009
1038
  if (use_proxy) {
1010
1039
  if (!client->proxy_connected || !client->keepalive ||
@@ -1019,7 +1048,7 @@ static int http_client_connect(
1019
1048
  goto on_error;
1020
1049
  }
1021
1050
 
1022
- git_trace(GIT_TRACE_DEBUG, "Connecting to remote %s:%s",
1051
+ git_trace(GIT_TRACE_DEBUG, "Connecting to remote %s port %s",
1023
1052
  client->server.url.host, client->server.url.port);
1024
1053
 
1025
1054
  if ((error = server_connect(client)) < 0)
@@ -1038,6 +1067,7 @@ on_error:
1038
1067
 
1039
1068
  GIT_INLINE(int) client_read(git_http_client *client)
1040
1069
  {
1070
+ http_parser_context *parser_context = client->parser.data;
1041
1071
  git_stream *stream;
1042
1072
  char *buf = client->read_buf.ptr + client->read_buf.size;
1043
1073
  size_t max_len;
@@ -1054,6 +1084,9 @@ GIT_INLINE(int) client_read(git_http_client *client)
1054
1084
  max_len = client->read_buf.asize - client->read_buf.size;
1055
1085
  max_len = min(max_len, INT_MAX);
1056
1086
 
1087
+ if (parser_context->output_size)
1088
+ max_len = min(max_len, parser_context->output_size);
1089
+
1057
1090
  if (max_len == 0) {
1058
1091
  git_error_set(GIT_ERROR_HTTP, "no room in output buffer");
1059
1092
  return -1;
@@ -1116,11 +1149,6 @@ GIT_INLINE(int) client_read_and_parse(git_http_client *client)
1116
1149
  return -1;
1117
1150
  }
1118
1151
 
1119
- if (parser->upgrade) {
1120
- git_error_set(GIT_ERROR_HTTP, "server requested upgrade");
1121
- return -1;
1122
- }
1123
-
1124
1152
  if (ctx->parse_status == PARSE_STATUS_ERROR) {
1125
1153
  client->connected = 0;
1126
1154
  return ctx->error ? ctx->error : -1;
@@ -1139,7 +1167,7 @@ GIT_INLINE(int) client_read_and_parse(git_http_client *client)
1139
1167
  * final byte when paused in a callback. Consume that byte.
1140
1168
  * https://github.com/nodejs/http-parser/issues/97
1141
1169
  */
1142
- assert(client->read_buf.size > parsed_len);
1170
+ GIT_ASSERT(client->read_buf.size > parsed_len);
1143
1171
 
1144
1172
  http_parser_pause(parser, 0);
1145
1173
 
@@ -1191,7 +1219,7 @@ static void complete_response_body(git_http_client *client)
1191
1219
  /* If we're not keeping alive, don't bother. */
1192
1220
  if (!client->keepalive) {
1193
1221
  client->connected = 0;
1194
- return;
1222
+ goto done;
1195
1223
  }
1196
1224
 
1197
1225
  parser_context.client = client;
@@ -1205,6 +1233,9 @@ static void complete_response_body(git_http_client *client)
1205
1233
  git_error_clear();
1206
1234
  client->connected = 0;
1207
1235
  }
1236
+
1237
+ done:
1238
+ git_buf_clear(&client->read_buf);
1208
1239
  }
1209
1240
 
1210
1241
  int git_http_client_send_request(
@@ -1214,7 +1245,8 @@ int git_http_client_send_request(
1214
1245
  git_http_response response = {0};
1215
1246
  int error = -1;
1216
1247
 
1217
- assert(client && request);
1248
+ GIT_ASSERT_ARG(client);
1249
+ GIT_ASSERT_ARG(request);
1218
1250
 
1219
1251
  /* If the client did not finish reading, clean up the stream. */
1220
1252
  if (client->state == READING_BODY)
@@ -1285,7 +1317,7 @@ int git_http_client_send_body(
1285
1317
  git_buf hdr = GIT_BUF_INIT;
1286
1318
  int error;
1287
1319
 
1288
- assert(client);
1320
+ GIT_ASSERT_ARG(client);
1289
1321
 
1290
1322
  /* If we're waiting for proxy auth, don't sending more requests. */
1291
1323
  if (client->state == HAS_EARLY_RESPONSE)
@@ -1302,7 +1334,7 @@ int git_http_client_send_body(
1302
1334
  server = &client->server;
1303
1335
 
1304
1336
  if (client->request_body_len) {
1305
- assert(buffer_len <= client->request_body_remain);
1337
+ GIT_ASSERT(buffer_len <= client->request_body_remain);
1306
1338
 
1307
1339
  if ((error = stream_write(server, buffer, buffer_len)) < 0)
1308
1340
  goto done;
@@ -1325,7 +1357,8 @@ static int complete_request(git_http_client *client)
1325
1357
  {
1326
1358
  int error = 0;
1327
1359
 
1328
- assert(client && client->state == SENDING_BODY);
1360
+ GIT_ASSERT_ARG(client);
1361
+ GIT_ASSERT(client->state == SENDING_BODY);
1329
1362
 
1330
1363
  if (client->request_body_len && client->request_body_remain) {
1331
1364
  git_error_set(GIT_ERROR_HTTP, "truncated write");
@@ -1345,7 +1378,8 @@ int git_http_client_read_response(
1345
1378
  http_parser_context parser_context = {0};
1346
1379
  int error;
1347
1380
 
1348
- assert(response && client);
1381
+ GIT_ASSERT_ARG(response);
1382
+ GIT_ASSERT_ARG(client);
1349
1383
 
1350
1384
  if (client->state == SENDING_BODY) {
1351
1385
  if ((error = complete_request(client)) < 0)
@@ -1367,8 +1401,11 @@ int git_http_client_read_response(
1367
1401
 
1368
1402
  git_http_response_dispose(response);
1369
1403
 
1370
- git_vector_free_deep(&client->server.auth_challenges);
1371
- git_vector_free_deep(&client->proxy.auth_challenges);
1404
+ if (client->current_server == PROXY) {
1405
+ git_vector_free_deep(&client->proxy.auth_challenges);
1406
+ } else if(client->current_server == SERVER) {
1407
+ git_vector_free_deep(&client->server.auth_challenges);
1408
+ }
1372
1409
 
1373
1410
  client->state = READING_RESPONSE;
1374
1411
  client->keepalive = 0;
@@ -1382,7 +1419,7 @@ int git_http_client_read_response(
1382
1419
  goto done;
1383
1420
  }
1384
1421
 
1385
- assert(client->state == READING_BODY || client->state == DONE);
1422
+ GIT_ASSERT(client->state == READING_BODY || client->state == DONE);
1386
1423
 
1387
1424
  done:
1388
1425
  git_buf_dispose(&parser_context.parse_header_name);
@@ -1419,18 +1456,23 @@ int git_http_client_read_body(
1419
1456
  client->parser.data = &parser_context;
1420
1457
 
1421
1458
  /*
1422
- * Clients expect to get a non-zero amount of data from us.
1423
- * With a sufficiently small buffer, one might only read a chunk
1424
- * length. Loop until we actually have data to return.
1459
+ * Clients expect to get a non-zero amount of data from us,
1460
+ * so we either block until we have data to return, until we
1461
+ * hit EOF or there's an error. Do this in a loop, since we
1462
+ * may end up reading only some stream metadata (like chunk
1463
+ * information).
1425
1464
  */
1426
1465
  while (!parser_context.output_written) {
1427
1466
  error = client_read_and_parse(client);
1428
1467
 
1429
1468
  if (error <= 0)
1430
1469
  goto done;
1470
+
1471
+ if (client->state == DONE)
1472
+ break;
1431
1473
  }
1432
1474
 
1433
- assert(parser_context.output_written <= INT_MAX);
1475
+ GIT_ASSERT(parser_context.output_written <= INT_MAX);
1434
1476
  error = (int)parser_context.output_written;
1435
1477
 
1436
1478
  done:
@@ -1466,7 +1508,7 @@ int git_http_client_skip_body(git_http_client *client)
1466
1508
  "unexpected data handled in callback");
1467
1509
  error = -1;
1468
1510
  }
1469
- } while (!error);
1511
+ } while (error >= 0 && client->state != DONE);
1470
1512
 
1471
1513
  if (error < 0)
1472
1514
  client->connected = 0;
@@ -1484,7 +1526,7 @@ int git_http_client_new(
1484
1526
  {
1485
1527
  git_http_client *client;
1486
1528
 
1487
- assert(out);
1529
+ GIT_ASSERT_ARG(out);
1488
1530
 
1489
1531
  client = git__calloc(1, sizeof(git_http_client));
1490
1532
  GIT_ERROR_CHECK_ALLOC(client);