rugged 0.27.9 → 0.27.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (420) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rugged/version.rb +1 -1
  3. data/vendor/libgit2/AUTHORS +1 -0
  4. data/vendor/libgit2/CMakeLists.txt +98 -54
  5. data/vendor/libgit2/COPYING +28 -0
  6. data/vendor/libgit2/cmake/Modules/AddCFlagIfSupported.cmake +15 -1
  7. data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +9 -8
  8. data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
  9. data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
  10. data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +28 -0
  11. data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +38 -0
  12. data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +37 -0
  13. data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
  14. data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +6 -0
  15. data/vendor/libgit2/cmake/Modules/FindmbedTLS.cmake +93 -0
  16. data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +110 -0
  17. data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +53 -0
  18. data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +124 -0
  19. data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +66 -0
  20. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +2 -0
  21. data/vendor/libgit2/deps/http-parser/{LICENSE-MIT → COPYING} +0 -0
  22. data/vendor/libgit2/deps/http-parser/http_parser.c +11 -6
  23. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +21 -0
  24. data/vendor/libgit2/deps/ntlmclient/compat.h +33 -0
  25. data/vendor/libgit2/deps/ntlmclient/crypt.h +64 -0
  26. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +120 -0
  27. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +18 -0
  28. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +145 -0
  29. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +18 -0
  30. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +130 -0
  31. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +21 -0
  32. data/vendor/libgit2/deps/ntlmclient/ntlm.c +1420 -0
  33. data/vendor/libgit2/deps/ntlmclient/ntlm.h +174 -0
  34. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +320 -0
  35. data/vendor/libgit2/deps/ntlmclient/unicode.h +36 -0
  36. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +445 -0
  37. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +201 -0
  38. data/vendor/libgit2/deps/ntlmclient/utf8.h +1257 -0
  39. data/vendor/libgit2/deps/ntlmclient/util.c +21 -0
  40. data/vendor/libgit2/deps/ntlmclient/util.h +14 -0
  41. data/vendor/libgit2/deps/pcre/CMakeLists.txt +140 -0
  42. data/vendor/libgit2/deps/pcre/COPYING +5 -0
  43. data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +22 -0
  44. data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +17 -0
  45. data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +58 -0
  46. data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +29 -0
  47. data/vendor/libgit2/deps/pcre/config.h.in +57 -0
  48. data/vendor/libgit2/deps/pcre/pcre.h +641 -0
  49. data/vendor/libgit2/deps/pcre/pcre_byte_order.c +319 -0
  50. data/vendor/libgit2/deps/pcre/pcre_chartables.c +198 -0
  51. data/vendor/libgit2/deps/pcre/pcre_compile.c +9800 -0
  52. data/vendor/libgit2/deps/pcre/pcre_config.c +190 -0
  53. data/vendor/libgit2/deps/pcre/pcre_dfa_exec.c +3676 -0
  54. data/vendor/libgit2/deps/pcre/pcre_exec.c +7173 -0
  55. data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +245 -0
  56. data/vendor/libgit2/deps/pcre/pcre_get.c +669 -0
  57. data/vendor/libgit2/deps/pcre/pcre_globals.c +86 -0
  58. data/vendor/libgit2/deps/pcre/pcre_internal.h +2787 -0
  59. data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +11913 -0
  60. data/vendor/libgit2/deps/pcre/pcre_maketables.c +156 -0
  61. data/vendor/libgit2/deps/pcre/pcre_newline.c +210 -0
  62. data/vendor/libgit2/deps/pcre/pcre_ord2utf8.c +94 -0
  63. data/vendor/libgit2/deps/pcre/pcre_printint.c +834 -0
  64. data/vendor/libgit2/deps/pcre/pcre_refcount.c +92 -0
  65. data/vendor/libgit2/deps/pcre/pcre_string_utils.c +211 -0
  66. data/vendor/libgit2/deps/pcre/pcre_study.c +1686 -0
  67. data/vendor/libgit2/deps/pcre/pcre_tables.c +727 -0
  68. data/vendor/libgit2/deps/pcre/pcre_ucd.c +3644 -0
  69. data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +301 -0
  70. data/vendor/libgit2/deps/pcre/pcre_version.c +98 -0
  71. data/vendor/libgit2/deps/pcre/pcre_xclass.c +268 -0
  72. data/vendor/libgit2/deps/pcre/pcreposix.c +421 -0
  73. data/vendor/libgit2/deps/pcre/pcreposix.h +117 -0
  74. data/vendor/libgit2/deps/pcre/ucp.h +224 -0
  75. data/vendor/libgit2/deps/winhttp/COPYING.GPL +993 -0
  76. data/vendor/libgit2/deps/winhttp/COPYING.LGPL +502 -0
  77. data/vendor/libgit2/deps/zlib/CMakeLists.txt +1 -0
  78. data/vendor/libgit2/deps/zlib/COPYING +27 -0
  79. data/vendor/libgit2/deps/zlib/adler32.c +0 -7
  80. data/vendor/libgit2/deps/zlib/crc32.c +0 -7
  81. data/vendor/libgit2/include/git2.h +5 -0
  82. data/vendor/libgit2/include/git2/annotated_commit.h +9 -0
  83. data/vendor/libgit2/include/git2/apply.h +149 -0
  84. data/vendor/libgit2/include/git2/attr.h +38 -20
  85. data/vendor/libgit2/include/git2/blame.h +42 -25
  86. data/vendor/libgit2/include/git2/blob.h +45 -13
  87. data/vendor/libgit2/include/git2/branch.h +1 -1
  88. data/vendor/libgit2/include/git2/buffer.h +22 -16
  89. data/vendor/libgit2/include/git2/cert.h +135 -0
  90. data/vendor/libgit2/include/git2/checkout.h +65 -32
  91. data/vendor/libgit2/include/git2/cherrypick.h +9 -7
  92. data/vendor/libgit2/include/git2/clone.h +12 -10
  93. data/vendor/libgit2/include/git2/commit.h +53 -3
  94. data/vendor/libgit2/include/git2/common.h +60 -8
  95. data/vendor/libgit2/include/git2/config.h +30 -19
  96. data/vendor/libgit2/include/git2/cred.h +308 -0
  97. data/vendor/libgit2/include/git2/deprecated.h +493 -0
  98. data/vendor/libgit2/include/git2/describe.h +32 -9
  99. data/vendor/libgit2/include/git2/diff.h +208 -156
  100. data/vendor/libgit2/include/git2/errors.h +54 -46
  101. data/vendor/libgit2/include/git2/filter.h +8 -0
  102. data/vendor/libgit2/include/git2/ignore.h +2 -2
  103. data/vendor/libgit2/include/git2/index.h +74 -52
  104. data/vendor/libgit2/include/git2/indexer.h +76 -6
  105. data/vendor/libgit2/include/git2/mailmap.h +115 -0
  106. data/vendor/libgit2/include/git2/merge.h +35 -18
  107. data/vendor/libgit2/include/git2/net.h +0 -5
  108. data/vendor/libgit2/include/git2/notes.h +1 -1
  109. data/vendor/libgit2/include/git2/object.h +17 -29
  110. data/vendor/libgit2/include/git2/odb.h +12 -11
  111. data/vendor/libgit2/include/git2/odb_backend.h +10 -9
  112. data/vendor/libgit2/include/git2/oid.h +2 -2
  113. data/vendor/libgit2/include/git2/pack.h +14 -3
  114. data/vendor/libgit2/include/git2/proxy.h +14 -8
  115. data/vendor/libgit2/include/git2/rebase.h +53 -6
  116. data/vendor/libgit2/include/git2/refs.h +33 -15
  117. data/vendor/libgit2/include/git2/refspec.h +17 -0
  118. data/vendor/libgit2/include/git2/remote.h +123 -24
  119. data/vendor/libgit2/include/git2/repository.h +76 -39
  120. data/vendor/libgit2/include/git2/revert.h +6 -4
  121. data/vendor/libgit2/include/git2/revwalk.h +7 -7
  122. data/vendor/libgit2/include/git2/signature.h +2 -2
  123. data/vendor/libgit2/include/git2/stash.h +15 -12
  124. data/vendor/libgit2/include/git2/status.h +33 -20
  125. data/vendor/libgit2/include/git2/submodule.h +30 -12
  126. data/vendor/libgit2/include/git2/sys/alloc.h +101 -0
  127. data/vendor/libgit2/include/git2/sys/commit.h +1 -1
  128. data/vendor/libgit2/include/git2/sys/config.h +13 -13
  129. data/vendor/libgit2/include/git2/sys/cred.h +90 -0
  130. data/vendor/libgit2/include/git2/sys/filter.h +6 -6
  131. data/vendor/libgit2/include/git2/sys/index.h +3 -0
  132. data/vendor/libgit2/include/git2/sys/mempack.h +35 -35
  133. data/vendor/libgit2/include/git2/sys/merge.h +9 -4
  134. data/vendor/libgit2/include/git2/sys/odb_backend.h +66 -22
  135. data/vendor/libgit2/include/git2/sys/path.h +64 -0
  136. data/vendor/libgit2/include/git2/sys/refdb_backend.h +76 -40
  137. data/vendor/libgit2/include/git2/sys/repository.h +5 -1
  138. data/vendor/libgit2/include/git2/sys/stream.h +92 -12
  139. data/vendor/libgit2/include/git2/sys/transport.h +129 -83
  140. data/vendor/libgit2/include/git2/tag.h +13 -4
  141. data/vendor/libgit2/include/git2/trace.h +2 -2
  142. data/vendor/libgit2/include/git2/transaction.h +1 -0
  143. data/vendor/libgit2/include/git2/transport.h +11 -311
  144. data/vendor/libgit2/include/git2/tree.h +4 -4
  145. data/vendor/libgit2/include/git2/types.h +33 -111
  146. data/vendor/libgit2/include/git2/version.h +4 -4
  147. data/vendor/libgit2/include/git2/worktree.h +48 -13
  148. data/vendor/libgit2/src/CMakeLists.txt +96 -164
  149. data/vendor/libgit2/src/alloc.c +43 -0
  150. data/vendor/libgit2/src/alloc.h +40 -0
  151. data/vendor/libgit2/src/allocators/stdalloc.c +119 -0
  152. data/vendor/libgit2/src/{streams/curl.h → allocators/stdalloc.h} +5 -5
  153. data/vendor/libgit2/src/allocators/win32_crtdbg.c +118 -0
  154. data/vendor/libgit2/src/{transports/cred.h → allocators/win32_crtdbg.h} +5 -4
  155. data/vendor/libgit2/src/annotated_commit.c +15 -8
  156. data/vendor/libgit2/src/apply.c +537 -31
  157. data/vendor/libgit2/src/apply.h +3 -1
  158. data/vendor/libgit2/src/array.h +2 -2
  159. data/vendor/libgit2/src/attr.c +81 -75
  160. data/vendor/libgit2/src/attr_file.c +207 -121
  161. data/vendor/libgit2/src/attr_file.h +9 -9
  162. data/vendor/libgit2/src/attrcache.c +51 -53
  163. data/vendor/libgit2/src/attrcache.h +2 -1
  164. data/vendor/libgit2/src/blame.c +47 -20
  165. data/vendor/libgit2/src/blame.h +2 -1
  166. data/vendor/libgit2/src/blame_git.c +37 -20
  167. data/vendor/libgit2/src/blob.c +128 -42
  168. data/vendor/libgit2/src/blob.h +19 -2
  169. data/vendor/libgit2/src/branch.c +67 -43
  170. data/vendor/libgit2/src/buf_text.c +7 -6
  171. data/vendor/libgit2/src/buffer.c +69 -57
  172. data/vendor/libgit2/src/buffer.h +1 -1
  173. data/vendor/libgit2/src/cache.c +38 -45
  174. data/vendor/libgit2/src/cache.h +3 -3
  175. data/vendor/libgit2/src/cc-compat.h +20 -3
  176. data/vendor/libgit2/src/checkout.c +109 -90
  177. data/vendor/libgit2/src/cherrypick.c +15 -9
  178. data/vendor/libgit2/src/clone.c +49 -27
  179. data/vendor/libgit2/src/clone.h +4 -0
  180. data/vendor/libgit2/src/commit.c +117 -49
  181. data/vendor/libgit2/src/commit.h +7 -0
  182. data/vendor/libgit2/src/commit_list.c +30 -78
  183. data/vendor/libgit2/src/commit_list.h +2 -2
  184. data/vendor/libgit2/src/common.h +27 -91
  185. data/vendor/libgit2/src/config.c +194 -176
  186. data/vendor/libgit2/src/config.h +8 -20
  187. data/vendor/libgit2/src/config_backend.h +96 -0
  188. data/vendor/libgit2/src/config_cache.c +41 -35
  189. data/vendor/libgit2/src/config_entries.c +229 -0
  190. data/vendor/libgit2/src/config_entries.h +24 -0
  191. data/vendor/libgit2/src/config_file.c +439 -753
  192. data/vendor/libgit2/src/config_mem.c +220 -0
  193. data/vendor/libgit2/src/config_parse.c +114 -63
  194. data/vendor/libgit2/src/config_parse.h +17 -16
  195. data/vendor/libgit2/src/config_snapshot.c +206 -0
  196. data/vendor/libgit2/src/crlf.c +219 -190
  197. data/vendor/libgit2/src/delta.c +25 -18
  198. data/vendor/libgit2/src/describe.c +42 -41
  199. data/vendor/libgit2/src/diff.c +53 -68
  200. data/vendor/libgit2/src/diff.h +2 -1
  201. data/vendor/libgit2/src/diff_driver.c +47 -49
  202. data/vendor/libgit2/src/diff_file.c +19 -17
  203. data/vendor/libgit2/src/diff_file.h +1 -1
  204. data/vendor/libgit2/src/diff_generate.c +162 -106
  205. data/vendor/libgit2/src/diff_generate.h +3 -3
  206. data/vendor/libgit2/src/diff_parse.c +4 -4
  207. data/vendor/libgit2/src/diff_print.c +42 -30
  208. data/vendor/libgit2/src/diff_stats.c +22 -7
  209. data/vendor/libgit2/src/diff_tform.c +16 -16
  210. data/vendor/libgit2/src/diff_xdiff.c +15 -3
  211. data/vendor/libgit2/src/errors.c +51 -39
  212. data/vendor/libgit2/src/errors.h +81 -0
  213. data/vendor/libgit2/src/features.h.in +11 -3
  214. data/vendor/libgit2/src/fetch.c +10 -5
  215. data/vendor/libgit2/src/fetchhead.c +17 -17
  216. data/vendor/libgit2/src/filebuf.c +32 -36
  217. data/vendor/libgit2/src/filebuf.h +2 -2
  218. data/vendor/libgit2/src/filter.c +46 -38
  219. data/vendor/libgit2/src/filter.h +0 -10
  220. data/vendor/libgit2/src/{fileops.c → futils.c} +80 -73
  221. data/vendor/libgit2/src/{fileops.h → futils.h} +6 -6
  222. data/vendor/libgit2/src/global.c +48 -63
  223. data/vendor/libgit2/src/global.h +0 -2
  224. data/vendor/libgit2/src/hash.c +61 -0
  225. data/vendor/libgit2/src/hash.h +20 -19
  226. data/vendor/libgit2/src/hash/sha1.h +38 -0
  227. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +48 -0
  228. data/vendor/libgit2/src/hash/sha1/collisiondetect.h +19 -0
  229. data/vendor/libgit2/src/hash/{hash_common_crypto.h → sha1/common_crypto.c} +17 -17
  230. data/vendor/libgit2/src/hash/sha1/common_crypto.h +19 -0
  231. data/vendor/libgit2/src/hash/{hash_generic.c → sha1/generic.c} +22 -10
  232. data/vendor/libgit2/src/hash/{hash_generic.h → sha1/generic.h} +4 -10
  233. data/vendor/libgit2/src/hash/sha1/mbedtls.c +46 -0
  234. data/vendor/libgit2/src/hash/sha1/mbedtls.h +19 -0
  235. data/vendor/libgit2/src/hash/sha1/openssl.c +59 -0
  236. data/vendor/libgit2/src/hash/sha1/openssl.h +19 -0
  237. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.c +14 -3
  238. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.h +0 -0
  239. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.c +0 -0
  240. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.h +0 -0
  241. data/vendor/libgit2/src/hash/{hash_win32.c → sha1/win32.c} +47 -37
  242. data/vendor/libgit2/src/hash/{hash_win32.h → sha1/win32.h} +6 -19
  243. data/vendor/libgit2/src/hashsig.c +5 -5
  244. data/vendor/libgit2/src/idxmap.c +107 -61
  245. data/vendor/libgit2/src/idxmap.h +153 -31
  246. data/vendor/libgit2/src/ignore.c +43 -47
  247. data/vendor/libgit2/src/index.c +337 -232
  248. data/vendor/libgit2/src/index.h +17 -1
  249. data/vendor/libgit2/src/indexer.c +346 -175
  250. data/vendor/libgit2/src/integer.h +71 -26
  251. data/vendor/libgit2/src/iterator.c +142 -70
  252. data/vendor/libgit2/src/iterator.h +15 -0
  253. data/vendor/libgit2/src/khash.h +3 -1
  254. data/vendor/libgit2/src/mailmap.c +485 -0
  255. data/vendor/libgit2/src/mailmap.h +35 -0
  256. data/vendor/libgit2/src/map.h +1 -1
  257. data/vendor/libgit2/src/merge.c +144 -100
  258. data/vendor/libgit2/src/merge_driver.c +11 -11
  259. data/vendor/libgit2/src/merge_file.c +2 -2
  260. data/vendor/libgit2/src/mwindow.c +24 -29
  261. data/vendor/libgit2/src/mwindow.h +4 -4
  262. data/vendor/libgit2/src/net.c +184 -0
  263. data/vendor/libgit2/src/net.h +36 -0
  264. data/vendor/libgit2/src/netops.c +55 -156
  265. data/vendor/libgit2/src/netops.h +3 -23
  266. data/vendor/libgit2/src/notes.c +16 -11
  267. data/vendor/libgit2/src/object.c +120 -69
  268. data/vendor/libgit2/src/object.h +22 -9
  269. data/vendor/libgit2/src/object_api.c +8 -8
  270. data/vendor/libgit2/src/odb.c +116 -93
  271. data/vendor/libgit2/src/odb.h +8 -7
  272. data/vendor/libgit2/src/odb_loose.c +62 -55
  273. data/vendor/libgit2/src/odb_mempack.c +21 -34
  274. data/vendor/libgit2/src/odb_pack.c +18 -14
  275. data/vendor/libgit2/src/offmap.c +53 -35
  276. data/vendor/libgit2/src/offmap.h +108 -21
  277. data/vendor/libgit2/src/oid.c +12 -7
  278. data/vendor/libgit2/src/oidmap.c +49 -47
  279. data/vendor/libgit2/src/oidmap.h +101 -24
  280. data/vendor/libgit2/src/pack-objects.c +88 -87
  281. data/vendor/libgit2/src/pack-objects.h +2 -8
  282. data/vendor/libgit2/src/pack.c +99 -101
  283. data/vendor/libgit2/src/pack.h +17 -19
  284. data/vendor/libgit2/src/parse.c +10 -0
  285. data/vendor/libgit2/src/parse.h +3 -3
  286. data/vendor/libgit2/src/patch.c +4 -4
  287. data/vendor/libgit2/src/patch_generate.c +20 -20
  288. data/vendor/libgit2/src/patch_parse.c +151 -63
  289. data/vendor/libgit2/src/path.c +169 -125
  290. data/vendor/libgit2/src/path.h +3 -71
  291. data/vendor/libgit2/src/pathspec.c +19 -19
  292. data/vendor/libgit2/src/pool.c +26 -22
  293. data/vendor/libgit2/src/pool.h +7 -7
  294. data/vendor/libgit2/src/posix.c +10 -10
  295. data/vendor/libgit2/src/posix.h +12 -1
  296. data/vendor/libgit2/src/proxy.c +8 -3
  297. data/vendor/libgit2/src/push.c +37 -31
  298. data/vendor/libgit2/src/push.h +2 -1
  299. data/vendor/libgit2/src/reader.c +265 -0
  300. data/vendor/libgit2/src/reader.h +107 -0
  301. data/vendor/libgit2/src/rebase.c +115 -59
  302. data/vendor/libgit2/src/refdb.c +15 -3
  303. data/vendor/libgit2/src/refdb_fs.c +381 -254
  304. data/vendor/libgit2/src/reflog.c +13 -15
  305. data/vendor/libgit2/src/refs.c +118 -88
  306. data/vendor/libgit2/src/refs.h +5 -3
  307. data/vendor/libgit2/src/refspec.c +56 -37
  308. data/vendor/libgit2/src/refspec.h +1 -1
  309. data/vendor/libgit2/src/regexp.c +221 -0
  310. data/vendor/libgit2/src/regexp.h +97 -0
  311. data/vendor/libgit2/src/remote.c +266 -215
  312. data/vendor/libgit2/src/remote.h +11 -2
  313. data/vendor/libgit2/src/repository.c +280 -225
  314. data/vendor/libgit2/src/repository.h +52 -40
  315. data/vendor/libgit2/src/reset.c +8 -8
  316. data/vendor/libgit2/src/revert.c +14 -9
  317. data/vendor/libgit2/src/revparse.c +47 -48
  318. data/vendor/libgit2/src/revwalk.c +120 -57
  319. data/vendor/libgit2/src/revwalk.h +22 -1
  320. data/vendor/libgit2/src/settings.c +47 -10
  321. data/vendor/libgit2/src/signature.c +11 -11
  322. data/vendor/libgit2/src/sortedcache.c +22 -36
  323. data/vendor/libgit2/src/sortedcache.h +1 -1
  324. data/vendor/libgit2/src/stash.c +125 -99
  325. data/vendor/libgit2/src/status.c +28 -22
  326. data/vendor/libgit2/src/stream.h +17 -2
  327. data/vendor/libgit2/src/streams/mbedtls.c +483 -0
  328. data/vendor/libgit2/src/streams/mbedtls.h +23 -0
  329. data/vendor/libgit2/src/streams/openssl.c +224 -114
  330. data/vendor/libgit2/src/streams/openssl.h +4 -108
  331. data/vendor/libgit2/src/streams/registry.c +118 -0
  332. data/vendor/libgit2/src/streams/registry.h +19 -0
  333. data/vendor/libgit2/src/streams/socket.c +55 -30
  334. data/vendor/libgit2/src/streams/stransport.c +57 -32
  335. data/vendor/libgit2/src/streams/stransport.h +5 -0
  336. data/vendor/libgit2/src/streams/tls.c +50 -19
  337. data/vendor/libgit2/src/streams/tls.h +12 -4
  338. data/vendor/libgit2/src/strmap.c +47 -74
  339. data/vendor/libgit2/src/strmap.h +108 -33
  340. data/vendor/libgit2/src/submodule.c +272 -216
  341. data/vendor/libgit2/src/submodule.h +1 -1
  342. data/vendor/libgit2/src/sysdir.c +29 -19
  343. data/vendor/libgit2/src/tag.c +41 -28
  344. data/vendor/libgit2/src/tag.h +2 -1
  345. data/vendor/libgit2/src/trace.c +2 -2
  346. data/vendor/libgit2/src/trace.h +3 -3
  347. data/vendor/libgit2/src/trailer.c +52 -38
  348. data/vendor/libgit2/src/transaction.c +30 -29
  349. data/vendor/libgit2/src/transport.c +5 -5
  350. data/vendor/libgit2/src/transports/auth.c +15 -11
  351. data/vendor/libgit2/src/transports/auth.h +10 -3
  352. data/vendor/libgit2/src/transports/auth_negotiate.c +33 -18
  353. data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
  354. data/vendor/libgit2/src/transports/auth_ntlm.c +223 -0
  355. data/vendor/libgit2/src/transports/auth_ntlm.h +35 -0
  356. data/vendor/libgit2/src/transports/cred.c +24 -24
  357. data/vendor/libgit2/src/transports/git.c +26 -31
  358. data/vendor/libgit2/src/transports/http.c +881 -348
  359. data/vendor/libgit2/src/transports/http.h +2 -0
  360. data/vendor/libgit2/src/transports/local.c +35 -35
  361. data/vendor/libgit2/src/transports/smart.c +70 -47
  362. data/vendor/libgit2/src/transports/smart.h +3 -4
  363. data/vendor/libgit2/src/transports/smart_pkt.c +43 -40
  364. data/vendor/libgit2/src/transports/smart_protocol.c +96 -116
  365. data/vendor/libgit2/src/transports/ssh.c +77 -66
  366. data/vendor/libgit2/src/transports/winhttp.c +318 -314
  367. data/vendor/libgit2/src/tree-cache.c +19 -12
  368. data/vendor/libgit2/src/tree.c +103 -142
  369. data/vendor/libgit2/src/tree.h +1 -12
  370. data/vendor/libgit2/src/unix/map.c +3 -3
  371. data/vendor/libgit2/src/unix/posix.h +1 -11
  372. data/vendor/libgit2/src/userdiff.h +3 -1
  373. data/vendor/libgit2/src/util.c +70 -56
  374. data/vendor/libgit2/src/util.h +28 -156
  375. data/vendor/libgit2/src/vector.c +4 -4
  376. data/vendor/libgit2/src/wildmatch.c +320 -0
  377. data/vendor/libgit2/src/wildmatch.h +23 -0
  378. data/vendor/libgit2/src/win32/dir.c +3 -3
  379. data/vendor/libgit2/src/win32/findfile.c +3 -3
  380. data/vendor/libgit2/src/win32/map.c +9 -11
  381. data/vendor/libgit2/src/win32/msvc-compat.h +6 -0
  382. data/vendor/libgit2/src/win32/path_w32.c +113 -9
  383. data/vendor/libgit2/src/win32/path_w32.h +18 -29
  384. data/vendor/libgit2/src/win32/posix.h +1 -4
  385. data/vendor/libgit2/src/win32/posix_w32.c +70 -45
  386. data/vendor/libgit2/src/win32/precompiled.h +0 -2
  387. data/vendor/libgit2/src/win32/thread.c +5 -10
  388. data/vendor/libgit2/src/win32/w32_buffer.c +9 -5
  389. data/vendor/libgit2/src/win32/w32_common.h +39 -0
  390. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +3 -2
  391. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +26 -75
  392. data/vendor/libgit2/src/win32/w32_stack.c +6 -11
  393. data/vendor/libgit2/src/win32/w32_stack.h +3 -3
  394. data/vendor/libgit2/src/win32/w32_util.c +27 -64
  395. data/vendor/libgit2/src/win32/w32_util.h +5 -49
  396. data/vendor/libgit2/src/worktree.c +95 -60
  397. data/vendor/libgit2/src/worktree.h +2 -0
  398. data/vendor/libgit2/src/xdiff/xdiffi.c +7 -5
  399. data/vendor/libgit2/src/xdiff/xhistogram.c +1 -1
  400. data/vendor/libgit2/src/xdiff/xmerge.c +27 -15
  401. data/vendor/libgit2/src/xdiff/xpatience.c +3 -0
  402. data/vendor/libgit2/src/zstream.c +4 -4
  403. metadata +122 -33
  404. data/vendor/libgit2/deps/regex/CMakeLists.txt +0 -2
  405. data/vendor/libgit2/deps/regex/config.h +0 -7
  406. data/vendor/libgit2/deps/regex/regcomp.c +0 -3857
  407. data/vendor/libgit2/deps/regex/regex.c +0 -92
  408. data/vendor/libgit2/deps/regex/regex.h +0 -582
  409. data/vendor/libgit2/deps/regex/regex_internal.c +0 -1744
  410. data/vendor/libgit2/deps/regex/regex_internal.h +0 -819
  411. data/vendor/libgit2/deps/regex/regexec.c +0 -4369
  412. data/vendor/libgit2/include/git2/inttypes.h +0 -309
  413. data/vendor/libgit2/include/git2/sys/time.h +0 -31
  414. data/vendor/libgit2/libgit2.pc.in +0 -13
  415. data/vendor/libgit2/src/config_file.h +0 -73
  416. data/vendor/libgit2/src/fnmatch.c +0 -248
  417. data/vendor/libgit2/src/fnmatch.h +0 -48
  418. data/vendor/libgit2/src/hash/hash_collisiondetect.h +0 -47
  419. data/vendor/libgit2/src/hash/hash_openssl.h +0 -59
  420. data/vendor/libgit2/src/streams/curl.c +0 -385
@@ -10,6 +10,8 @@
10
10
 
11
11
  #include "buffer.h"
12
12
 
13
+ #define GIT_HTTP_REPLAY_MAX 15
14
+
13
15
  GIT_INLINE(int) git_http__user_agent(git_buf *buf)
14
16
  {
15
17
  const char *ua = git_libgit2__user_agent();
@@ -83,7 +83,7 @@ static int add_ref(transport_local *t, const char *name)
83
83
  if (!strcmp(name, GIT_HEAD_FILE) && error == GIT_ENOTFOUND) {
84
84
  /* This is actually okay. Empty repos often have a HEAD that
85
85
  * points to a nonexistent "refs/heads/master". */
86
- giterr_clear();
86
+ git_error_clear();
87
87
  return 0;
88
88
  }
89
89
  return error;
@@ -93,16 +93,16 @@ static int add_ref(transport_local *t, const char *name)
93
93
  git_reference_free(resolved);
94
94
 
95
95
  head = git__calloc(1, sizeof(git_remote_head));
96
- GITERR_CHECK_ALLOC(head);
96
+ GIT_ERROR_CHECK_ALLOC(head);
97
97
 
98
98
  head->name = git__strdup(name);
99
- GITERR_CHECK_ALLOC(head->name);
99
+ GIT_ERROR_CHECK_ALLOC(head->name);
100
100
 
101
101
  git_oid_cpy(&head->oid, &obj_id);
102
102
 
103
- if (git_reference_type(ref) == GIT_REF_SYMBOLIC) {
103
+ if (git_reference_type(ref) == GIT_REFERENCE_SYMBOLIC) {
104
104
  head->symref_target = git__strdup(git_reference_symbolic_target(ref));
105
- GITERR_CHECK_ALLOC(head->symref_target);
105
+ GIT_ERROR_CHECK_ALLOC(head->symref_target);
106
106
  }
107
107
  git_reference_free(ref);
108
108
 
@@ -115,14 +115,14 @@ static int add_ref(transport_local *t, const char *name)
115
115
  if (git__prefixcmp(name, GIT_REFS_TAGS_DIR))
116
116
  return 0;
117
117
 
118
- if ((error = git_object_lookup(&obj, t->repo, &head->oid, GIT_OBJ_ANY)) < 0)
118
+ if ((error = git_object_lookup(&obj, t->repo, &head->oid, GIT_OBJECT_ANY)) < 0)
119
119
  return error;
120
120
 
121
121
  head = NULL;
122
122
 
123
123
  /* If it's not an annotated tag, or if we're mocking
124
124
  * git-receive-pack, just get out */
125
- if (git_object_type(obj) != GIT_OBJ_TAG ||
125
+ if (git_object_type(obj) != GIT_OBJECT_TAG ||
126
126
  t->direction != GIT_DIRECTION_FETCH) {
127
127
  git_object_free(obj);
128
128
  return 0;
@@ -130,7 +130,7 @@ static int add_ref(transport_local *t, const char *name)
130
130
 
131
131
  /* And if it's a tag, peel it, and add it to the list */
132
132
  head = git__calloc(1, sizeof(git_remote_head));
133
- GITERR_CHECK_ALLOC(head);
133
+ GIT_ERROR_CHECK_ALLOC(head);
134
134
 
135
135
  if (git_buf_join(&buf, 0, name, peeled) < 0) {
136
136
  free_head(head);
@@ -222,20 +222,20 @@ static int local_connect(
222
222
  free_heads(&t->refs);
223
223
 
224
224
  t->url = git__strdup(url);
225
- GITERR_CHECK_ALLOC(t->url);
225
+ GIT_ERROR_CHECK_ALLOC(t->url);
226
226
  t->direction = direction;
227
227
  t->flags = flags;
228
228
 
229
229
  /* 'url' may be a url or path; convert to a path */
230
230
  if ((error = git_path_from_url_or_path(&buf, url)) < 0) {
231
- git_buf_free(&buf);
231
+ git_buf_dispose(&buf);
232
232
  return error;
233
233
  }
234
234
  path = git_buf_cstr(&buf);
235
235
 
236
236
  error = git_repository_open(&repo, path);
237
237
 
238
- git_buf_free(&buf);
238
+ git_buf_dispose(&buf);
239
239
 
240
240
  if (error < 0)
241
241
  return -1;
@@ -255,7 +255,7 @@ static int local_ls(const git_remote_head ***out, size_t *size, git_transport *t
255
255
  transport_local *t = (transport_local *)transport;
256
256
 
257
257
  if (!t->have_refs) {
258
- giterr_set(GITERR_NET, "the transport has not yet loaded the refs");
258
+ git_error_set(GIT_ERROR_NET, "the transport has not yet loaded the refs");
259
259
  return -1;
260
260
  }
261
261
 
@@ -288,7 +288,7 @@ static int local_negotiate_fetch(
288
288
  else if (error != GIT_ENOTFOUND)
289
289
  return error;
290
290
  else
291
- giterr_clear();
291
+ git_error_clear();
292
292
  git_object_free(obj);
293
293
  }
294
294
 
@@ -309,7 +309,7 @@ static int local_push_update_remote_ref(
309
309
  if (lref[0] != '\0') {
310
310
  /* Create or update a ref */
311
311
  error = git_reference_create(NULL, remote_repo, rref, loid,
312
- !git_oid_iszero(roid), NULL);
312
+ !git_oid_is_zero(roid), NULL);
313
313
  } else {
314
314
  /* Delete a ref */
315
315
  if ((error = git_reference_lookup(&remote_ref, remote_repo, rref)) < 0) {
@@ -325,7 +325,7 @@ static int local_push_update_remote_ref(
325
325
  return error;
326
326
  }
327
327
 
328
- static int transfer_to_push_transfer(const git_transfer_progress *stats, void *payload)
328
+ static int transfer_to_push_transfer(const git_indexer_progress *stats, void *payload)
329
329
  {
330
330
  const git_remote_callbacks *cbs = payload;
331
331
 
@@ -354,14 +354,14 @@ static int local_push(
354
354
 
355
355
  /* 'push->remote->url' may be a url or path; convert to a path */
356
356
  if ((error = git_path_from_url_or_path(&buf, push->remote->url)) < 0) {
357
- git_buf_free(&buf);
357
+ git_buf_dispose(&buf);
358
358
  return error;
359
359
  }
360
360
  path = git_buf_cstr(&buf);
361
361
 
362
362
  error = git_repository_open(&remote_repo, path);
363
363
 
364
- git_buf_free(&buf);
364
+ git_buf_dispose(&buf);
365
365
 
366
366
  if (error < 0)
367
367
  return error;
@@ -374,7 +374,7 @@ static int local_push(
374
374
  but we forbid all pushes just in case */
375
375
  if (!remote_repo->is_bare) {
376
376
  error = GIT_EBAREREPO;
377
- giterr_set(GITERR_INVALID, "local push doesn't (yet) support pushing to non-bare repos.");
377
+ git_error_set(GIT_ERROR_INVALID, "local push doesn't (yet) support pushing to non-bare repos.");
378
378
  goto on_error;
379
379
  }
380
380
 
@@ -383,7 +383,7 @@ static int local_push(
383
383
  goto on_error;
384
384
 
385
385
  error = git_packbuilder_write(push->pb, odb_path.ptr, 0, transfer_to_push_transfer, (void *) cbs);
386
- git_buf_free(&odb_path);
386
+ git_buf_dispose(&odb_path);
387
387
 
388
388
  if (error < 0)
389
389
  goto on_error;
@@ -418,7 +418,7 @@ static int local_push(
418
418
  status->msg = git__strdup("Remote branch not found to delete");
419
419
  break;
420
420
  default:
421
- last = giterr_last();
421
+ last = git_error_last();
422
422
 
423
423
  if (last && last->message)
424
424
  status->msg = git__strdup(last->message);
@@ -460,8 +460,8 @@ on_error:
460
460
  }
461
461
 
462
462
  typedef struct foreach_data {
463
- git_transfer_progress *stats;
464
- git_transfer_progress_cb progress_cb;
463
+ git_indexer_progress *stats;
464
+ git_indexer_progress_cb progress_cb;
465
465
  void *progress_payload;
466
466
  git_odb_writepack *writepack;
467
467
  } foreach_data;
@@ -501,8 +501,8 @@ static int local_counting(int stage, unsigned int current, unsigned int total, v
501
501
  if (git_buf_oom(&progress_info))
502
502
  return -1;
503
503
 
504
- error = t->progress_cb(git_buf_cstr(&progress_info), git_buf_len(&progress_info), t->message_cb_payload);
505
- git_buf_free(&progress_info);
504
+ error = t->progress_cb(git_buf_cstr(&progress_info), (int)git_buf_len(&progress_info), t->message_cb_payload);
505
+ git_buf_dispose(&progress_info);
506
506
 
507
507
  return error;
508
508
  }
@@ -512,7 +512,7 @@ static int foreach_reference_cb(git_reference *reference, void *payload)
512
512
  git_revwalk *walk = (git_revwalk *)payload;
513
513
  int error;
514
514
 
515
- if (git_reference_type(reference) != GIT_REF_OID) {
515
+ if (git_reference_type(reference) != GIT_REFERENCE_DIRECT) {
516
516
  git_reference_free(reference);
517
517
  return 0;
518
518
  }
@@ -520,8 +520,8 @@ static int foreach_reference_cb(git_reference *reference, void *payload)
520
520
  error = git_revwalk_hide(walk, git_reference_target(reference));
521
521
  /* The reference is in the local repository, so the target may not
522
522
  * exist on the remote. It also may not be a commit. */
523
- if (error == GIT_ENOTFOUND || error == GITERR_INVALID) {
524
- giterr_clear();
523
+ if (error == GIT_ENOTFOUND || error == GIT_ERROR_INVALID) {
524
+ git_error_clear();
525
525
  error = 0;
526
526
  }
527
527
 
@@ -533,8 +533,8 @@ static int foreach_reference_cb(git_reference *reference, void *payload)
533
533
  static int local_download_pack(
534
534
  git_transport *transport,
535
535
  git_repository *repo,
536
- git_transfer_progress *stats,
537
- git_transfer_progress_cb progress_cb,
536
+ git_indexer_progress *stats,
537
+ git_indexer_progress_cb progress_cb,
538
538
  void *progress_payload)
539
539
  {
540
540
  transport_local *t = (transport_local*)transport;
@@ -563,10 +563,10 @@ static int local_download_pack(
563
563
 
564
564
  git_vector_foreach(&t->refs, i, rhead) {
565
565
  git_object *obj;
566
- if ((error = git_object_lookup(&obj, t->repo, &rhead->oid, GIT_OBJ_ANY)) < 0)
566
+ if ((error = git_object_lookup(&obj, t->repo, &rhead->oid, GIT_OBJECT_ANY)) < 0)
567
567
  goto cleanup;
568
568
 
569
- if (git_object_type(obj) == GIT_OBJ_COMMIT) {
569
+ if (git_object_type(obj) == GIT_OBJECT_COMMIT) {
570
570
  /* Revwalker includes only wanted commits */
571
571
  error = git_revwalk_push(walk, &rhead->oid);
572
572
  } else {
@@ -588,7 +588,7 @@ static int local_download_pack(
588
588
  goto cleanup;
589
589
 
590
590
  if (t->progress_cb &&
591
- (error = t->progress_cb(git_buf_cstr(&progress_info), git_buf_len(&progress_info), t->message_cb_payload)) < 0)
591
+ (error = t->progress_cb(git_buf_cstr(&progress_info), (int)git_buf_len(&progress_info), t->message_cb_payload)) < 0)
592
592
  goto cleanup;
593
593
 
594
594
  /* Walk the objects, building a packfile */
@@ -602,7 +602,7 @@ static int local_download_pack(
602
602
  goto cleanup;
603
603
 
604
604
  if (t->progress_cb &&
605
- (error = t->progress_cb(git_buf_cstr(&progress_info), git_buf_len(&progress_info), t->message_cb_payload)) < 0)
605
+ (error = t->progress_cb(git_buf_cstr(&progress_info), (int)git_buf_len(&progress_info), t->message_cb_payload)) < 0)
606
606
  goto cleanup;
607
607
 
608
608
  if ((error = git_odb_write_pack(&writepack, odb, progress_cb, progress_payload)) != 0)
@@ -627,7 +627,7 @@ static int local_download_pack(
627
627
 
628
628
  cleanup:
629
629
  if (writepack) writepack->free(writepack);
630
- git_buf_free(&progress_info);
630
+ git_buf_dispose(&progress_info);
631
631
  git_packbuilder_free(pack);
632
632
  git_revwalk_free(walk);
633
633
  return error;
@@ -718,7 +718,7 @@ int git_transport_local(git_transport **out, git_remote *owner, void *param)
718
718
  GIT_UNUSED(param);
719
719
 
720
720
  t = git__calloc(1, sizeof(transport_local));
721
- GITERR_CHECK_ALLOC(t);
721
+ GIT_ERROR_CHECK_ALLOC(t);
722
722
 
723
723
  t->parent.version = GIT_TRANSPORT_VERSION;
724
724
  t->parent.set_callbacks = local_set_callbacks;
@@ -63,7 +63,7 @@ static int git_smart__set_callbacks(
63
63
  git_transport_certificate_check_cb certificate_check_cb,
64
64
  void *message_cb_payload)
65
65
  {
66
- transport_smart *t = (transport_smart *)transport;
66
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
67
67
 
68
68
  t->progress_cb = progress_cb;
69
69
  t->error_cb = error_cb;
@@ -73,7 +73,7 @@ static int git_smart__set_callbacks(
73
73
  return 0;
74
74
  }
75
75
 
76
- static int http_header_name_length(const char *http_header)
76
+ static size_t http_header_name_length(const char *http_header)
77
77
  {
78
78
  const char *colon = strchr(http_header, ':');
79
79
  if (!colon)
@@ -84,9 +84,9 @@ static int http_header_name_length(const char *http_header)
84
84
  static bool is_malformed_http_header(const char *http_header)
85
85
  {
86
86
  const char *c;
87
- int name_len;
87
+ size_t name_len;
88
88
 
89
- // Disallow \r and \n
89
+ /* Disallow \r and \n */
90
90
  c = strchr(http_header, '\r');
91
91
  if (c)
92
92
  return true;
@@ -94,7 +94,7 @@ static bool is_malformed_http_header(const char *http_header)
94
94
  if (c)
95
95
  return true;
96
96
 
97
- // Require a header name followed by :
97
+ /* Require a header name followed by : */
98
98
  name_len = http_header_name_length(http_header);
99
99
  if (name_len < 1)
100
100
  return true;
@@ -114,9 +114,9 @@ static char *forbidden_custom_headers[] = {
114
114
  static bool is_forbidden_custom_header(const char *custom_header)
115
115
  {
116
116
  unsigned long i;
117
- int name_len = http_header_name_length(custom_header);
117
+ size_t name_len = http_header_name_length(custom_header);
118
118
 
119
- // Disallow headers that we set
119
+ /* Disallow headers that we set */
120
120
  for (i = 0; i < ARRAY_SIZE(forbidden_custom_headers); i++)
121
121
  if (strncmp(forbidden_custom_headers[i], custom_header, name_len) == 0)
122
122
  return true;
@@ -128,7 +128,7 @@ static int git_smart__set_custom_headers(
128
128
  git_transport *transport,
129
129
  const git_strarray *custom_headers)
130
130
  {
131
- transport_smart *t = (transport_smart *)transport;
131
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
132
132
  size_t i;
133
133
 
134
134
  if (t->custom_headers.count)
@@ -139,11 +139,11 @@ static int git_smart__set_custom_headers(
139
139
 
140
140
  for (i = 0; i < custom_headers->count; i++) {
141
141
  if (is_malformed_http_header(custom_headers->strings[i])) {
142
- giterr_set(GITERR_INVALID, "custom HTTP header '%s' is malformed", custom_headers->strings[i]);
142
+ git_error_set(GIT_ERROR_INVALID, "custom HTTP header '%s' is malformed", custom_headers->strings[i]);
143
143
  return -1;
144
144
  }
145
145
  if (is_forbidden_custom_header(custom_headers->strings[i])) {
146
- giterr_set(GITERR_INVALID, "custom HTTP header '%s' is already set by libgit2", custom_headers->strings[i]);
146
+ git_error_set(GIT_ERROR_INVALID, "custom HTTP header '%s' is already set by libgit2", custom_headers->strings[i]);
147
147
  return -1;
148
148
  }
149
149
  }
@@ -171,11 +171,13 @@ int git_smart__update_heads(transport_smart *t, git_vector *symrefs)
171
171
  git_vector_foreach(symrefs, j, spec) {
172
172
  git_buf_clear(&buf);
173
173
  if (git_refspec_src_matches(spec, ref->head.name) &&
174
- !(error = git_refspec_transform(&buf, spec, ref->head.name)))
174
+ !(error = git_refspec_transform(&buf, spec, ref->head.name))) {
175
+ git__free(ref->head.symref_target);
175
176
  ref->head.symref_target = git_buf_detach(&buf);
177
+ }
176
178
  }
177
179
 
178
- git_buf_free(&buf);
180
+ git_buf_dispose(&buf);
179
181
 
180
182
  if (error < 0)
181
183
  return error;
@@ -194,7 +196,7 @@ static void free_symrefs(git_vector *symrefs)
194
196
  size_t i;
195
197
 
196
198
  git_vector_foreach(symrefs, i, spec) {
197
- git_refspec__free(spec);
199
+ git_refspec__dispose(spec);
198
200
  git__free(spec);
199
201
  }
200
202
 
@@ -210,7 +212,7 @@ static int git_smart__connect(
210
212
  int direction,
211
213
  int flags)
212
214
  {
213
- transport_smart *t = (transport_smart *)transport;
215
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
214
216
  git_smart_subtransport_stream *stream;
215
217
  int error;
216
218
  git_pkt *pkt;
@@ -222,7 +224,7 @@ static int git_smart__connect(
222
224
  return -1;
223
225
 
224
226
  t->url = git__strdup(url);
225
- GITERR_CHECK_ALLOC(t->url);
227
+ GIT_ERROR_CHECK_ALLOC(t->url);
226
228
 
227
229
  if (git_proxy_options_dup(&t->proxy, proxy) < 0)
228
230
  return -1;
@@ -237,7 +239,7 @@ static int git_smart__connect(
237
239
  else if (GIT_DIRECTION_PUSH == t->direction)
238
240
  service = GIT_SERVICE_RECEIVEPACK_LS;
239
241
  else {
240
- giterr_set(GITERR_NET, "invalid direction");
242
+ git_error_set(GIT_ERROR_NET, "invalid direction");
241
243
  return -1;
242
244
  }
243
245
 
@@ -258,7 +260,7 @@ static int git_smart__connect(
258
260
  pkt = (git_pkt *)git_vector_get(&t->refs, 0);
259
261
 
260
262
  if (!pkt || GIT_PKT_COMMENT != pkt->type) {
261
- giterr_set(GITERR_NET, "invalid response");
263
+ git_error_set(GIT_ERROR_NET, "invalid response");
262
264
  return -1;
263
265
  } else {
264
266
  /* Remove the comment pkt from the list */
@@ -270,42 +272,53 @@ static int git_smart__connect(
270
272
  /* We now have loaded the refs. */
271
273
  t->have_refs = 1;
272
274
 
273
- first = (git_pkt_ref *)git_vector_get(&t->refs, 0);
275
+ pkt = (git_pkt *)git_vector_get(&t->refs, 0);
276
+ if (pkt && GIT_PKT_REF != pkt->type) {
277
+ git_error_set(GIT_ERROR_NET, "invalid response");
278
+ return -1;
279
+ }
280
+ first = (git_pkt_ref *)pkt;
274
281
 
275
282
  if ((error = git_vector_init(&symrefs, 1, NULL)) < 0)
276
283
  return error;
277
284
 
278
285
  /* Detect capabilities */
279
- if (git_smart__detect_caps(first, &t->caps, &symrefs) < 0)
280
- return -1;
286
+ if ((error = git_smart__detect_caps(first, &t->caps, &symrefs)) == 0) {
287
+ /* If the only ref in the list is capabilities^{} with OID_ZERO, remove it */
288
+ if (1 == t->refs.length && !strcmp(first->head.name, "capabilities^{}") &&
289
+ git_oid_is_zero(&first->head.oid)) {
290
+ git_vector_clear(&t->refs);
291
+ git_pkt_free((git_pkt *)first);
292
+ }
281
293
 
282
- /* If the only ref in the list is capabilities^{} with OID_ZERO, remove it */
283
- if (1 == t->refs.length && !strcmp(first->head.name, "capabilities^{}") &&
284
- git_oid_iszero(&first->head.oid)) {
285
- git_vector_clear(&t->refs);
286
- git_pkt_free((git_pkt *)first);
294
+ /* Keep a list of heads for _ls */
295
+ git_smart__update_heads(t, &symrefs);
296
+ } else if (error == GIT_ENOTFOUND) {
297
+ /* There was no ref packet received, or the cap list was empty */
298
+ error = 0;
299
+ } else {
300
+ git_error_set(GIT_ERROR_NET, "invalid response");
301
+ goto cleanup;
287
302
  }
288
303
 
289
- /* Keep a list of heads for _ls */
290
- git_smart__update_heads(t, &symrefs);
291
-
292
- free_symrefs(&symrefs);
293
-
294
- if (t->rpc && git_smart__reset_stream(t, false) < 0)
295
- return -1;
304
+ if (t->rpc && (error = git_smart__reset_stream(t, false)) < 0)
305
+ goto cleanup;
296
306
 
297
307
  /* We're now logically connected. */
298
308
  t->connected = 1;
299
309
 
300
- return 0;
310
+ cleanup:
311
+ free_symrefs(&symrefs);
312
+
313
+ return error;
301
314
  }
302
315
 
303
316
  static int git_smart__ls(const git_remote_head ***out, size_t *size, git_transport *transport)
304
317
  {
305
- transport_smart *t = (transport_smart *)transport;
318
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
306
319
 
307
320
  if (!t->have_refs) {
308
- giterr_set(GITERR_NET, "the transport has not yet loaded the refs");
321
+ git_error_set(GIT_ERROR_NET, "the transport has not yet loaded the refs");
309
322
  return -1;
310
323
  }
311
324
 
@@ -317,7 +330,7 @@ static int git_smart__ls(const git_remote_head ***out, size_t *size, git_transpo
317
330
 
318
331
  int git_smart__negotiation_step(git_transport *transport, void *data, size_t len)
319
332
  {
320
- transport_smart *t = (transport_smart *)transport;
333
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
321
334
  git_smart_subtransport_stream *stream;
322
335
  int error;
323
336
 
@@ -325,7 +338,7 @@ int git_smart__negotiation_step(git_transport *transport, void *data, size_t len
325
338
  return -1;
326
339
 
327
340
  if (GIT_DIRECTION_FETCH != t->direction) {
328
- giterr_set(GITERR_NET, "this operation is only valid for fetch");
341
+ git_error_set(GIT_ERROR_NET, "this operation is only valid for fetch");
329
342
  return -1;
330
343
  }
331
344
 
@@ -354,7 +367,7 @@ int git_smart__get_push_stream(transport_smart *t, git_smart_subtransport_stream
354
367
  return -1;
355
368
 
356
369
  if (GIT_DIRECTION_PUSH != t->direction) {
357
- giterr_set(GITERR_NET, "this operation is only valid for push");
370
+ git_error_set(GIT_ERROR_NET, "this operation is only valid for push");
358
371
  return -1;
359
372
  }
360
373
 
@@ -374,21 +387,21 @@ int git_smart__get_push_stream(transport_smart *t, git_smart_subtransport_stream
374
387
 
375
388
  static void git_smart__cancel(git_transport *transport)
376
389
  {
377
- transport_smart *t = (transport_smart *)transport;
390
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
378
391
 
379
392
  git_atomic_set(&t->cancelled, 1);
380
393
  }
381
394
 
382
395
  static int git_smart__is_connected(git_transport *transport)
383
396
  {
384
- transport_smart *t = (transport_smart *)transport;
397
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
385
398
 
386
399
  return t->connected;
387
400
  }
388
401
 
389
402
  static int git_smart__read_flags(git_transport *transport, int *flags)
390
403
  {
391
- transport_smart *t = (transport_smart *)transport;
404
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
392
405
 
393
406
  *flags = t->flags;
394
407
 
@@ -397,7 +410,7 @@ static int git_smart__read_flags(git_transport *transport, int *flags)
397
410
 
398
411
  static int git_smart__close(git_transport *transport)
399
412
  {
400
- transport_smart *t = (transport_smart *)transport;
413
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
401
414
  git_vector *common = &t->common;
402
415
  unsigned int i;
403
416
  git_pkt *p;
@@ -434,7 +447,7 @@ static int git_smart__close(git_transport *transport)
434
447
 
435
448
  static void git_smart__free(git_transport *transport)
436
449
  {
437
- transport_smart *t = (transport_smart *)transport;
450
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
438
451
  git_vector *refs = &t->refs;
439
452
  unsigned int i;
440
453
  git_pkt *p;
@@ -466,21 +479,31 @@ static int ref_name_cmp(const void *a, const void *b)
466
479
 
467
480
  int git_transport_smart_certificate_check(git_transport *transport, git_cert *cert, int valid, const char *hostname)
468
481
  {
469
- transport_smart *t = (transport_smart *)transport;
482
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
483
+
484
+ assert(transport && cert && hostname);
485
+
486
+ if (!t->certificate_check_cb)
487
+ return GIT_PASSTHROUGH;
470
488
 
471
489
  return t->certificate_check_cb(cert, valid, hostname, t->message_cb_payload);
472
490
  }
473
491
 
474
492
  int git_transport_smart_credentials(git_cred **out, git_transport *transport, const char *user, int methods)
475
493
  {
476
- transport_smart *t = (transport_smart *)transport;
494
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
495
+
496
+ assert(out && transport);
497
+
498
+ if (!t->cred_acquire_cb)
499
+ return GIT_PASSTHROUGH;
477
500
 
478
501
  return t->cred_acquire_cb(out, t->url, user, methods, t->cred_acquire_payload);
479
502
  }
480
503
 
481
504
  int git_transport_smart_proxy_options(git_proxy_options *out, git_transport *transport)
482
505
  {
483
- transport_smart *t = (transport_smart *) transport;
506
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
484
507
  return git_proxy_options_dup(out, &t->proxy);
485
508
  }
486
509
 
@@ -493,7 +516,7 @@ int git_transport_smart(git_transport **out, git_remote *owner, void *param)
493
516
  return -1;
494
517
 
495
518
  t = git__calloc(1, sizeof(transport_smart));
496
- GITERR_CHECK_ALLOC(t);
519
+ GIT_ERROR_CHECK_ALLOC(t);
497
520
 
498
521
  t->parent.version = GIT_TRANSPORT_VERSION;
499
522
  t->parent.set_callbacks = git_smart__set_callbacks;