rugged 0.27.7 → 0.27.10

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 (409) 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 +99 -51
  5. data/vendor/libgit2/COPYING +28 -0
  6. data/vendor/libgit2/cmake/Modules/AddCFlagIfSupported.cmake +15 -1
  7. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +29 -0
  8. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +96 -0
  9. data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +9 -8
  10. data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
  11. data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
  12. data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +28 -0
  13. data/vendor/libgit2/cmake/Modules/FindIconv.cmake +11 -6
  14. data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +38 -0
  15. data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +37 -0
  16. data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
  17. data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +6 -0
  18. data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +110 -0
  19. data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +53 -0
  20. data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +124 -0
  21. data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +66 -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/annotated_commit.h +9 -0
  82. data/vendor/libgit2/include/git2/apply.h +149 -0
  83. data/vendor/libgit2/include/git2/attr.h +20 -13
  84. data/vendor/libgit2/include/git2/blame.h +4 -4
  85. data/vendor/libgit2/include/git2/blob.h +44 -12
  86. data/vendor/libgit2/include/git2/buffer.h +20 -26
  87. data/vendor/libgit2/include/git2/cert.h +135 -0
  88. data/vendor/libgit2/include/git2/checkout.h +53 -21
  89. data/vendor/libgit2/include/git2/cherrypick.h +3 -3
  90. data/vendor/libgit2/include/git2/clone.h +5 -5
  91. data/vendor/libgit2/include/git2/commit.h +25 -3
  92. data/vendor/libgit2/include/git2/common.h +35 -10
  93. data/vendor/libgit2/include/git2/config.h +29 -19
  94. data/vendor/libgit2/include/git2/cred.h +308 -0
  95. data/vendor/libgit2/include/git2/deprecated.h +493 -0
  96. data/vendor/libgit2/include/git2/describe.h +4 -4
  97. data/vendor/libgit2/include/git2/diff.h +177 -135
  98. data/vendor/libgit2/include/git2/errors.h +53 -46
  99. data/vendor/libgit2/include/git2/filter.h +8 -0
  100. data/vendor/libgit2/include/git2/index.h +74 -52
  101. data/vendor/libgit2/include/git2/indexer.h +76 -6
  102. data/vendor/libgit2/include/git2/merge.h +25 -10
  103. data/vendor/libgit2/include/git2/net.h +0 -5
  104. data/vendor/libgit2/include/git2/notes.h +1 -1
  105. data/vendor/libgit2/include/git2/object.h +17 -29
  106. data/vendor/libgit2/include/git2/odb.h +12 -11
  107. data/vendor/libgit2/include/git2/odb_backend.h +10 -9
  108. data/vendor/libgit2/include/git2/oid.h +2 -2
  109. data/vendor/libgit2/include/git2/pack.h +14 -3
  110. data/vendor/libgit2/include/git2/proxy.h +5 -3
  111. data/vendor/libgit2/include/git2/rebase.h +46 -2
  112. data/vendor/libgit2/include/git2/refs.h +34 -16
  113. data/vendor/libgit2/include/git2/remote.h +111 -14
  114. data/vendor/libgit2/include/git2/repository.h +69 -34
  115. data/vendor/libgit2/include/git2/revert.h +1 -1
  116. data/vendor/libgit2/include/git2/revwalk.h +7 -7
  117. data/vendor/libgit2/include/git2/signature.h +2 -2
  118. data/vendor/libgit2/include/git2/stash.h +5 -5
  119. data/vendor/libgit2/include/git2/status.h +26 -17
  120. data/vendor/libgit2/include/git2/submodule.h +23 -6
  121. data/vendor/libgit2/include/git2/sys/alloc.h +18 -18
  122. data/vendor/libgit2/include/git2/sys/commit.h +1 -1
  123. data/vendor/libgit2/include/git2/sys/config.h +13 -13
  124. data/vendor/libgit2/include/git2/sys/cred.h +90 -0
  125. data/vendor/libgit2/include/git2/sys/filter.h +6 -6
  126. data/vendor/libgit2/include/git2/sys/merge.h +3 -3
  127. data/vendor/libgit2/include/git2/sys/odb_backend.h +66 -22
  128. data/vendor/libgit2/include/git2/sys/path.h +14 -5
  129. data/vendor/libgit2/include/git2/sys/refdb_backend.h +76 -40
  130. data/vendor/libgit2/include/git2/sys/repository.h +5 -1
  131. data/vendor/libgit2/include/git2/sys/stream.h +92 -12
  132. data/vendor/libgit2/include/git2/sys/transport.h +129 -83
  133. data/vendor/libgit2/include/git2/tag.h +13 -4
  134. data/vendor/libgit2/include/git2/trace.h +2 -2
  135. data/vendor/libgit2/include/git2/transport.h +11 -311
  136. data/vendor/libgit2/include/git2/tree.h +4 -4
  137. data/vendor/libgit2/include/git2/types.h +25 -106
  138. data/vendor/libgit2/include/git2/version.h +3 -3
  139. data/vendor/libgit2/include/git2/worktree.h +5 -5
  140. data/vendor/libgit2/include/git2.h +4 -0
  141. data/vendor/libgit2/src/CMakeLists.txt +104 -235
  142. data/vendor/libgit2/src/alloc.c +14 -18
  143. data/vendor/libgit2/src/{stdalloc.c → allocators/stdalloc.c} +7 -8
  144. data/vendor/libgit2/src/{stdalloc.h → allocators/stdalloc.h} +4 -4
  145. data/vendor/libgit2/src/allocators/win32_crtdbg.c +118 -0
  146. data/vendor/libgit2/src/{transports/cred.h → allocators/win32_crtdbg.h} +5 -4
  147. data/vendor/libgit2/src/annotated_commit.c +18 -11
  148. data/vendor/libgit2/src/apply.c +535 -28
  149. data/vendor/libgit2/src/apply.h +3 -1
  150. data/vendor/libgit2/src/array.h +2 -2
  151. data/vendor/libgit2/src/attr.c +77 -71
  152. data/vendor/libgit2/src/attr_file.c +203 -117
  153. data/vendor/libgit2/src/attr_file.h +9 -9
  154. data/vendor/libgit2/src/attrcache.c +49 -51
  155. data/vendor/libgit2/src/attrcache.h +2 -1
  156. data/vendor/libgit2/src/blame.c +38 -18
  157. data/vendor/libgit2/src/blame.h +1 -1
  158. data/vendor/libgit2/src/blame_git.c +29 -15
  159. data/vendor/libgit2/src/blob.c +123 -37
  160. data/vendor/libgit2/src/blob.h +19 -2
  161. data/vendor/libgit2/src/branch.c +47 -23
  162. data/vendor/libgit2/src/buf_text.c +7 -6
  163. data/vendor/libgit2/src/buffer.c +60 -53
  164. data/vendor/libgit2/src/cache.c +38 -45
  165. data/vendor/libgit2/src/cache.h +3 -3
  166. data/vendor/libgit2/src/cc-compat.h +20 -3
  167. data/vendor/libgit2/src/checkout.c +77 -67
  168. data/vendor/libgit2/src/cherrypick.c +12 -6
  169. data/vendor/libgit2/src/clone.c +36 -14
  170. data/vendor/libgit2/src/clone.h +4 -0
  171. data/vendor/libgit2/src/commit.c +103 -48
  172. data/vendor/libgit2/src/commit.h +7 -0
  173. data/vendor/libgit2/src/commit_list.c +36 -78
  174. data/vendor/libgit2/src/commit_list.h +2 -2
  175. data/vendor/libgit2/src/common.h +24 -90
  176. data/vendor/libgit2/src/config.c +203 -176
  177. data/vendor/libgit2/src/config.h +8 -20
  178. data/vendor/libgit2/src/config_backend.h +96 -0
  179. data/vendor/libgit2/src/config_cache.c +41 -35
  180. data/vendor/libgit2/src/config_entries.c +229 -0
  181. data/vendor/libgit2/src/config_entries.h +24 -0
  182. data/vendor/libgit2/src/config_file.c +422 -680
  183. data/vendor/libgit2/src/config_mem.c +220 -0
  184. data/vendor/libgit2/src/config_parse.c +96 -68
  185. data/vendor/libgit2/src/config_parse.h +15 -14
  186. data/vendor/libgit2/src/config_snapshot.c +206 -0
  187. data/vendor/libgit2/src/crlf.c +219 -196
  188. data/vendor/libgit2/src/delta.c +25 -18
  189. data/vendor/libgit2/src/describe.c +42 -41
  190. data/vendor/libgit2/src/diff.c +52 -67
  191. data/vendor/libgit2/src/diff.h +2 -1
  192. data/vendor/libgit2/src/diff_driver.c +44 -46
  193. data/vendor/libgit2/src/diff_file.c +16 -14
  194. data/vendor/libgit2/src/diff_file.h +1 -1
  195. data/vendor/libgit2/src/diff_generate.c +158 -103
  196. data/vendor/libgit2/src/diff_generate.h +3 -3
  197. data/vendor/libgit2/src/diff_parse.c +4 -4
  198. data/vendor/libgit2/src/diff_print.c +34 -22
  199. data/vendor/libgit2/src/diff_stats.c +22 -7
  200. data/vendor/libgit2/src/diff_tform.c +18 -16
  201. data/vendor/libgit2/src/diff_xdiff.c +3 -3
  202. data/vendor/libgit2/src/errors.c +51 -39
  203. data/vendor/libgit2/src/errors.h +81 -0
  204. data/vendor/libgit2/src/features.h.in +9 -3
  205. data/vendor/libgit2/src/fetch.c +8 -3
  206. data/vendor/libgit2/src/fetchhead.c +12 -12
  207. data/vendor/libgit2/src/filebuf.c +28 -32
  208. data/vendor/libgit2/src/filebuf.h +2 -2
  209. data/vendor/libgit2/src/filter.c +47 -33
  210. data/vendor/libgit2/src/filter.h +0 -10
  211. data/vendor/libgit2/src/{fileops.c → futils.c} +70 -63
  212. data/vendor/libgit2/src/{fileops.h → futils.h} +6 -6
  213. data/vendor/libgit2/src/global.c +35 -55
  214. data/vendor/libgit2/src/global.h +0 -2
  215. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +48 -0
  216. data/vendor/libgit2/src/hash/sha1/collisiondetect.h +19 -0
  217. data/vendor/libgit2/src/hash/{hash_common_crypto.h → sha1/common_crypto.c} +17 -17
  218. data/vendor/libgit2/src/hash/sha1/common_crypto.h +19 -0
  219. data/vendor/libgit2/src/hash/{hash_generic.c → sha1/generic.c} +22 -10
  220. data/vendor/libgit2/src/hash/{hash_generic.h → sha1/generic.h} +4 -10
  221. data/vendor/libgit2/src/hash/{hash_mbedtls.c → sha1/mbedtls.c} +15 -7
  222. data/vendor/libgit2/src/hash/{hash_mbedtls.h → sha1/mbedtls.h} +6 -7
  223. data/vendor/libgit2/src/hash/sha1/openssl.c +59 -0
  224. data/vendor/libgit2/src/hash/sha1/openssl.h +19 -0
  225. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.c +14 -3
  226. data/vendor/libgit2/src/hash/{hash_win32.c → sha1/win32.c} +47 -37
  227. data/vendor/libgit2/src/hash/{hash_win32.h → sha1/win32.h} +6 -19
  228. data/vendor/libgit2/src/hash/sha1.h +38 -0
  229. data/vendor/libgit2/src/hash.c +61 -0
  230. data/vendor/libgit2/src/hash.h +20 -21
  231. data/vendor/libgit2/src/hashsig.c +5 -5
  232. data/vendor/libgit2/src/idxmap.c +107 -61
  233. data/vendor/libgit2/src/idxmap.h +153 -31
  234. data/vendor/libgit2/src/ignore.c +38 -42
  235. data/vendor/libgit2/src/index.c +264 -199
  236. data/vendor/libgit2/src/index.h +7 -1
  237. data/vendor/libgit2/src/indexer.c +338 -167
  238. data/vendor/libgit2/src/integer.h +71 -26
  239. data/vendor/libgit2/src/iterator.c +134 -62
  240. data/vendor/libgit2/src/iterator.h +15 -0
  241. data/vendor/libgit2/src/mailmap.c +8 -8
  242. data/vendor/libgit2/src/map.h +1 -1
  243. data/vendor/libgit2/src/merge.c +137 -93
  244. data/vendor/libgit2/src/merge_driver.c +11 -11
  245. data/vendor/libgit2/src/merge_file.c +2 -2
  246. data/vendor/libgit2/src/mwindow.c +24 -29
  247. data/vendor/libgit2/src/mwindow.h +4 -4
  248. data/vendor/libgit2/src/net.c +184 -0
  249. data/vendor/libgit2/src/net.h +36 -0
  250. data/vendor/libgit2/src/netops.c +55 -156
  251. data/vendor/libgit2/src/netops.h +3 -23
  252. data/vendor/libgit2/src/notes.c +14 -9
  253. data/vendor/libgit2/src/object.c +120 -69
  254. data/vendor/libgit2/src/object.h +22 -9
  255. data/vendor/libgit2/src/object_api.c +8 -8
  256. data/vendor/libgit2/src/odb.c +111 -88
  257. data/vendor/libgit2/src/odb.h +8 -7
  258. data/vendor/libgit2/src/odb_loose.c +58 -47
  259. data/vendor/libgit2/src/odb_mempack.c +21 -34
  260. data/vendor/libgit2/src/odb_pack.c +17 -13
  261. data/vendor/libgit2/src/offmap.c +53 -35
  262. data/vendor/libgit2/src/offmap.h +108 -21
  263. data/vendor/libgit2/src/oid.c +12 -7
  264. data/vendor/libgit2/src/oidmap.c +49 -47
  265. data/vendor/libgit2/src/oidmap.h +101 -24
  266. data/vendor/libgit2/src/pack-objects.c +87 -86
  267. data/vendor/libgit2/src/pack-objects.h +2 -8
  268. data/vendor/libgit2/src/pack.c +94 -96
  269. data/vendor/libgit2/src/pack.h +16 -18
  270. data/vendor/libgit2/src/parse.c +17 -4
  271. data/vendor/libgit2/src/parse.h +3 -3
  272. data/vendor/libgit2/src/patch.c +3 -3
  273. data/vendor/libgit2/src/patch_generate.c +18 -18
  274. data/vendor/libgit2/src/patch_parse.c +147 -79
  275. data/vendor/libgit2/src/path.c +207 -62
  276. data/vendor/libgit2/src/path.h +14 -0
  277. data/vendor/libgit2/src/pathspec.c +18 -18
  278. data/vendor/libgit2/src/pool.c +26 -22
  279. data/vendor/libgit2/src/pool.h +7 -7
  280. data/vendor/libgit2/src/posix.c +10 -10
  281. data/vendor/libgit2/src/posix.h +12 -1
  282. data/vendor/libgit2/src/proxy.c +8 -3
  283. data/vendor/libgit2/src/push.c +35 -29
  284. data/vendor/libgit2/src/push.h +2 -1
  285. data/vendor/libgit2/src/reader.c +265 -0
  286. data/vendor/libgit2/src/reader.h +107 -0
  287. data/vendor/libgit2/src/rebase.c +97 -38
  288. data/vendor/libgit2/src/refdb.c +15 -3
  289. data/vendor/libgit2/src/refdb_fs.c +318 -222
  290. data/vendor/libgit2/src/reflog.c +13 -15
  291. data/vendor/libgit2/src/refs.c +122 -89
  292. data/vendor/libgit2/src/refs.h +5 -3
  293. data/vendor/libgit2/src/refspec.c +27 -33
  294. data/vendor/libgit2/src/regexp.c +221 -0
  295. data/vendor/libgit2/src/regexp.h +97 -0
  296. data/vendor/libgit2/src/remote.c +229 -178
  297. data/vendor/libgit2/src/remote.h +11 -2
  298. data/vendor/libgit2/src/repository.c +227 -172
  299. data/vendor/libgit2/src/repository.h +52 -40
  300. data/vendor/libgit2/src/reset.c +7 -7
  301. data/vendor/libgit2/src/revert.c +11 -6
  302. data/vendor/libgit2/src/revparse.c +46 -46
  303. data/vendor/libgit2/src/revwalk.c +89 -54
  304. data/vendor/libgit2/src/revwalk.h +20 -0
  305. data/vendor/libgit2/src/settings.c +22 -9
  306. data/vendor/libgit2/src/signature.c +15 -13
  307. data/vendor/libgit2/src/sortedcache.c +22 -36
  308. data/vendor/libgit2/src/sortedcache.h +1 -1
  309. data/vendor/libgit2/src/stash.c +56 -76
  310. data/vendor/libgit2/src/status.c +27 -21
  311. data/vendor/libgit2/src/stream.h +17 -2
  312. data/vendor/libgit2/src/streams/mbedtls.c +100 -80
  313. data/vendor/libgit2/src/streams/mbedtls.h +5 -2
  314. data/vendor/libgit2/src/streams/openssl.c +93 -81
  315. data/vendor/libgit2/src/streams/openssl.h +5 -2
  316. data/vendor/libgit2/src/streams/registry.c +118 -0
  317. data/vendor/libgit2/src/streams/registry.h +19 -0
  318. data/vendor/libgit2/src/streams/socket.c +55 -30
  319. data/vendor/libgit2/src/streams/stransport.c +57 -32
  320. data/vendor/libgit2/src/streams/stransport.h +5 -0
  321. data/vendor/libgit2/src/streams/tls.c +48 -20
  322. data/vendor/libgit2/src/streams/tls.h +12 -4
  323. data/vendor/libgit2/src/strmap.c +47 -74
  324. data/vendor/libgit2/src/strmap.h +108 -33
  325. data/vendor/libgit2/src/submodule.c +190 -169
  326. data/vendor/libgit2/src/submodule.h +1 -1
  327. data/vendor/libgit2/src/sysdir.c +25 -15
  328. data/vendor/libgit2/src/tag.c +39 -26
  329. data/vendor/libgit2/src/tag.h +2 -1
  330. data/vendor/libgit2/src/trace.c +2 -2
  331. data/vendor/libgit2/src/trace.h +2 -2
  332. data/vendor/libgit2/src/trailer.c +46 -32
  333. data/vendor/libgit2/src/transaction.c +30 -29
  334. data/vendor/libgit2/src/transport.c +3 -3
  335. data/vendor/libgit2/src/transports/auth.c +14 -10
  336. data/vendor/libgit2/src/transports/auth.h +10 -3
  337. data/vendor/libgit2/src/transports/auth_negotiate.c +31 -16
  338. data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
  339. data/vendor/libgit2/src/transports/auth_ntlm.c +223 -0
  340. data/vendor/libgit2/src/transports/auth_ntlm.h +35 -0
  341. data/vendor/libgit2/src/transports/cred.c +24 -24
  342. data/vendor/libgit2/src/transports/git.c +25 -30
  343. data/vendor/libgit2/src/transports/http.c +871 -335
  344. data/vendor/libgit2/src/transports/http.h +2 -0
  345. data/vendor/libgit2/src/transports/local.c +28 -28
  346. data/vendor/libgit2/src/transports/smart.c +64 -46
  347. data/vendor/libgit2/src/transports/smart.h +5 -6
  348. data/vendor/libgit2/src/transports/smart_pkt.c +162 -151
  349. data/vendor/libgit2/src/transports/smart_protocol.c +64 -94
  350. data/vendor/libgit2/src/transports/ssh.c +76 -65
  351. data/vendor/libgit2/src/transports/winhttp.c +328 -319
  352. data/vendor/libgit2/src/tree-cache.c +21 -14
  353. data/vendor/libgit2/src/tree.c +119 -112
  354. data/vendor/libgit2/src/tree.h +1 -0
  355. data/vendor/libgit2/src/unix/map.c +3 -3
  356. data/vendor/libgit2/src/unix/posix.h +1 -11
  357. data/vendor/libgit2/src/userdiff.h +3 -1
  358. data/vendor/libgit2/src/util.c +154 -93
  359. data/vendor/libgit2/src/util.h +19 -23
  360. data/vendor/libgit2/src/vector.c +15 -10
  361. data/vendor/libgit2/src/wildmatch.c +320 -0
  362. data/vendor/libgit2/src/wildmatch.h +23 -0
  363. data/vendor/libgit2/src/win32/dir.c +3 -3
  364. data/vendor/libgit2/src/win32/findfile.c +1 -1
  365. data/vendor/libgit2/src/win32/map.c +9 -11
  366. data/vendor/libgit2/src/win32/msvc-compat.h +6 -0
  367. data/vendor/libgit2/src/win32/path_w32.c +113 -9
  368. data/vendor/libgit2/src/win32/path_w32.h +18 -29
  369. data/vendor/libgit2/src/win32/posix.h +1 -4
  370. data/vendor/libgit2/src/win32/posix_w32.c +69 -44
  371. data/vendor/libgit2/src/win32/precompiled.h +0 -2
  372. data/vendor/libgit2/src/win32/thread.c +5 -10
  373. data/vendor/libgit2/src/win32/w32_buffer.c +9 -5
  374. data/vendor/libgit2/src/win32/w32_common.h +39 -0
  375. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +2 -95
  376. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -2
  377. data/vendor/libgit2/src/win32/w32_stack.c +6 -11
  378. data/vendor/libgit2/src/win32/w32_stack.h +3 -3
  379. data/vendor/libgit2/src/win32/w32_util.c +27 -64
  380. data/vendor/libgit2/src/win32/w32_util.h +5 -49
  381. data/vendor/libgit2/src/worktree.c +44 -30
  382. data/vendor/libgit2/src/xdiff/xdiffi.c +5 -5
  383. data/vendor/libgit2/src/xdiff/xhistogram.c +1 -1
  384. data/vendor/libgit2/src/xdiff/xmerge.c +27 -15
  385. data/vendor/libgit2/src/xdiff/xpatience.c +3 -0
  386. data/vendor/libgit2/src/zstream.c +4 -4
  387. metadata +115 -38
  388. data/vendor/libgit2/deps/regex/CMakeLists.txt +0 -2
  389. data/vendor/libgit2/deps/regex/config.h +0 -7
  390. data/vendor/libgit2/deps/regex/regcomp.c +0 -3857
  391. data/vendor/libgit2/deps/regex/regex.c +0 -92
  392. data/vendor/libgit2/deps/regex/regex.h +0 -582
  393. data/vendor/libgit2/deps/regex/regex_internal.c +0 -1744
  394. data/vendor/libgit2/deps/regex/regex_internal.h +0 -819
  395. data/vendor/libgit2/deps/regex/regexec.c +0 -4369
  396. data/vendor/libgit2/include/git2/inttypes.h +0 -309
  397. data/vendor/libgit2/include/git2/sys/time.h +0 -31
  398. data/vendor/libgit2/libgit2.pc.in +0 -13
  399. data/vendor/libgit2/src/config_file.h +0 -73
  400. data/vendor/libgit2/src/fnmatch.c +0 -248
  401. data/vendor/libgit2/src/fnmatch.h +0 -48
  402. data/vendor/libgit2/src/hash/hash_collisiondetect.h +0 -47
  403. data/vendor/libgit2/src/hash/hash_openssl.h +0 -59
  404. data/vendor/libgit2/src/streams/curl.c +0 -385
  405. data/vendor/libgit2/src/streams/curl.h +0 -17
  406. /data/vendor/libgit2/deps/http-parser/{LICENSE-MIT → COPYING} +0 -0
  407. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.h +0 -0
  408. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.c +0 -0
  409. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.h +0 -0
@@ -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,7 +222,7 @@ 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
 
@@ -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
 
@@ -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
 
@@ -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,7 +501,7 @@ 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);
504
+ error = t->progress_cb(git_buf_cstr(&progress_info), (int)git_buf_len(&progress_info), t->message_cb_payload);
505
505
  git_buf_dispose(&progress_info);
506
506
 
507
507
  return error;
@@ -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)
@@ -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;
@@ -45,9 +45,13 @@ GIT_INLINE(int) git_smart__reset_stream(transport_smart *t, bool close_subtransp
45
45
  t->current_stream = NULL;
46
46
  }
47
47
 
48
- if (close_subtransport &&
49
- t->wrapped->close(t->wrapped) < 0)
50
- return -1;
48
+ if (close_subtransport) {
49
+ git__free(t->url);
50
+ t->url = NULL;
51
+
52
+ if (t->wrapped->close(t->wrapped) < 0)
53
+ return -1;
54
+ }
51
55
 
52
56
  return 0;
53
57
  }
@@ -59,7 +63,7 @@ static int git_smart__set_callbacks(
59
63
  git_transport_certificate_check_cb certificate_check_cb,
60
64
  void *message_cb_payload)
61
65
  {
62
- transport_smart *t = (transport_smart *)transport;
66
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
63
67
 
64
68
  t->progress_cb = progress_cb;
65
69
  t->error_cb = error_cb;
@@ -69,7 +73,7 @@ static int git_smart__set_callbacks(
69
73
  return 0;
70
74
  }
71
75
 
72
- static int http_header_name_length(const char *http_header)
76
+ static size_t http_header_name_length(const char *http_header)
73
77
  {
74
78
  const char *colon = strchr(http_header, ':');
75
79
  if (!colon)
@@ -80,7 +84,7 @@ static int http_header_name_length(const char *http_header)
80
84
  static bool is_malformed_http_header(const char *http_header)
81
85
  {
82
86
  const char *c;
83
- int name_len;
87
+ size_t name_len;
84
88
 
85
89
  /* Disallow \r and \n */
86
90
  c = strchr(http_header, '\r');
@@ -110,7 +114,7 @@ static char *forbidden_custom_headers[] = {
110
114
  static bool is_forbidden_custom_header(const char *custom_header)
111
115
  {
112
116
  unsigned long i;
113
- int name_len = http_header_name_length(custom_header);
117
+ size_t name_len = http_header_name_length(custom_header);
114
118
 
115
119
  /* Disallow headers that we set */
116
120
  for (i = 0; i < ARRAY_SIZE(forbidden_custom_headers); i++)
@@ -124,7 +128,7 @@ static int git_smart__set_custom_headers(
124
128
  git_transport *transport,
125
129
  const git_strarray *custom_headers)
126
130
  {
127
- transport_smart *t = (transport_smart *)transport;
131
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
128
132
  size_t i;
129
133
 
130
134
  if (t->custom_headers.count)
@@ -135,11 +139,11 @@ static int git_smart__set_custom_headers(
135
139
 
136
140
  for (i = 0; i < custom_headers->count; i++) {
137
141
  if (is_malformed_http_header(custom_headers->strings[i])) {
138
- 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]);
139
143
  return -1;
140
144
  }
141
145
  if (is_forbidden_custom_header(custom_headers->strings[i])) {
142
- 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]);
143
147
  return -1;
144
148
  }
145
149
  }
@@ -208,7 +212,7 @@ static int git_smart__connect(
208
212
  int direction,
209
213
  int flags)
210
214
  {
211
- transport_smart *t = (transport_smart *)transport;
215
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
212
216
  git_smart_subtransport_stream *stream;
213
217
  int error;
214
218
  git_pkt *pkt;
@@ -220,7 +224,7 @@ static int git_smart__connect(
220
224
  return -1;
221
225
 
222
226
  t->url = git__strdup(url);
223
- GITERR_CHECK_ALLOC(t->url);
227
+ GIT_ERROR_CHECK_ALLOC(t->url);
224
228
 
225
229
  if (git_proxy_options_dup(&t->proxy, proxy) < 0)
226
230
  return -1;
@@ -235,7 +239,7 @@ static int git_smart__connect(
235
239
  else if (GIT_DIRECTION_PUSH == t->direction)
236
240
  service = GIT_SERVICE_RECEIVEPACK_LS;
237
241
  else {
238
- giterr_set(GITERR_NET, "invalid direction");
242
+ git_error_set(GIT_ERROR_NET, "invalid direction");
239
243
  return -1;
240
244
  }
241
245
 
@@ -256,7 +260,7 @@ static int git_smart__connect(
256
260
  pkt = (git_pkt *)git_vector_get(&t->refs, 0);
257
261
 
258
262
  if (!pkt || GIT_PKT_COMMENT != pkt->type) {
259
- giterr_set(GITERR_NET, "invalid response");
263
+ git_error_set(GIT_ERROR_NET, "invalid response");
260
264
  return -1;
261
265
  } else {
262
266
  /* Remove the comment pkt from the list */
@@ -270,7 +274,7 @@ static int git_smart__connect(
270
274
 
271
275
  pkt = (git_pkt *)git_vector_get(&t->refs, 0);
272
276
  if (pkt && GIT_PKT_REF != pkt->type) {
273
- giterr_set(GITERR_NET, "invalid response");
277
+ git_error_set(GIT_ERROR_NET, "invalid response");
274
278
  return -1;
275
279
  }
276
280
  first = (git_pkt_ref *)pkt;
@@ -279,38 +283,42 @@ static int git_smart__connect(
279
283
  return error;
280
284
 
281
285
  /* Detect capabilities */
282
- if (git_smart__detect_caps(first, &t->caps, &symrefs) < 0) {
283
- free_symrefs(&symrefs);
284
- return -1;
285
- }
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
+ }
286
293
 
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_iszero(&first->head.oid)) {
290
- git_vector_clear(&t->refs);
291
- 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;
292
302
  }
293
303
 
294
- /* Keep a list of heads for _ls */
295
- git_smart__update_heads(t, &symrefs);
296
-
297
- free_symrefs(&symrefs);
298
-
299
- if (t->rpc && git_smart__reset_stream(t, false) < 0)
300
- return -1;
304
+ if (t->rpc && (error = git_smart__reset_stream(t, false)) < 0)
305
+ goto cleanup;
301
306
 
302
307
  /* We're now logically connected. */
303
308
  t->connected = 1;
304
309
 
305
- return 0;
310
+ cleanup:
311
+ free_symrefs(&symrefs);
312
+
313
+ return error;
306
314
  }
307
315
 
308
316
  static int git_smart__ls(const git_remote_head ***out, size_t *size, git_transport *transport)
309
317
  {
310
- transport_smart *t = (transport_smart *)transport;
318
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
311
319
 
312
320
  if (!t->have_refs) {
313
- 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");
314
322
  return -1;
315
323
  }
316
324
 
@@ -322,7 +330,7 @@ static int git_smart__ls(const git_remote_head ***out, size_t *size, git_transpo
322
330
 
323
331
  int git_smart__negotiation_step(git_transport *transport, void *data, size_t len)
324
332
  {
325
- transport_smart *t = (transport_smart *)transport;
333
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
326
334
  git_smart_subtransport_stream *stream;
327
335
  int error;
328
336
 
@@ -330,7 +338,7 @@ int git_smart__negotiation_step(git_transport *transport, void *data, size_t len
330
338
  return -1;
331
339
 
332
340
  if (GIT_DIRECTION_FETCH != t->direction) {
333
- 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");
334
342
  return -1;
335
343
  }
336
344
 
@@ -359,7 +367,7 @@ int git_smart__get_push_stream(transport_smart *t, git_smart_subtransport_stream
359
367
  return -1;
360
368
 
361
369
  if (GIT_DIRECTION_PUSH != t->direction) {
362
- 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");
363
371
  return -1;
364
372
  }
365
373
 
@@ -379,21 +387,21 @@ int git_smart__get_push_stream(transport_smart *t, git_smart_subtransport_stream
379
387
 
380
388
  static void git_smart__cancel(git_transport *transport)
381
389
  {
382
- transport_smart *t = (transport_smart *)transport;
390
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
383
391
 
384
392
  git_atomic_set(&t->cancelled, 1);
385
393
  }
386
394
 
387
395
  static int git_smart__is_connected(git_transport *transport)
388
396
  {
389
- transport_smart *t = (transport_smart *)transport;
397
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
390
398
 
391
399
  return t->connected;
392
400
  }
393
401
 
394
402
  static int git_smart__read_flags(git_transport *transport, int *flags)
395
403
  {
396
- transport_smart *t = (transport_smart *)transport;
404
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
397
405
 
398
406
  *flags = t->flags;
399
407
 
@@ -402,7 +410,7 @@ static int git_smart__read_flags(git_transport *transport, int *flags)
402
410
 
403
411
  static int git_smart__close(git_transport *transport)
404
412
  {
405
- transport_smart *t = (transport_smart *)transport;
413
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
406
414
  git_vector *common = &t->common;
407
415
  unsigned int i;
408
416
  git_pkt *p;
@@ -439,7 +447,7 @@ static int git_smart__close(git_transport *transport)
439
447
 
440
448
  static void git_smart__free(git_transport *transport)
441
449
  {
442
- transport_smart *t = (transport_smart *)transport;
450
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
443
451
  git_vector *refs = &t->refs;
444
452
  unsigned int i;
445
453
  git_pkt *p;
@@ -471,21 +479,31 @@ static int ref_name_cmp(const void *a, const void *b)
471
479
 
472
480
  int git_transport_smart_certificate_check(git_transport *transport, git_cert *cert, int valid, const char *hostname)
473
481
  {
474
- 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;
475
488
 
476
489
  return t->certificate_check_cb(cert, valid, hostname, t->message_cb_payload);
477
490
  }
478
491
 
479
492
  int git_transport_smart_credentials(git_cred **out, git_transport *transport, const char *user, int methods)
480
493
  {
481
- 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;
482
500
 
483
501
  return t->cred_acquire_cb(out, t->url, user, methods, t->cred_acquire_payload);
484
502
  }
485
503
 
486
504
  int git_transport_smart_proxy_options(git_proxy_options *out, git_transport *transport)
487
505
  {
488
- transport_smart *t = (transport_smart *) transport;
506
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
489
507
  return git_proxy_options_dup(out, &t->proxy);
490
508
  }
491
509
 
@@ -498,7 +516,7 @@ int git_transport_smart(git_transport **out, git_remote *owner, void *param)
498
516
  return -1;
499
517
 
500
518
  t = git__calloc(1, sizeof(transport_smart));
501
- GITERR_CHECK_ALLOC(t);
519
+ GIT_ERROR_CHECK_ALLOC(t);
502
520
 
503
521
  t->parent.version = GIT_TRANSPORT_VERSION;
504
522
  t->parent.set_callbacks = git_smart__set_callbacks;
@@ -40,7 +40,6 @@ typedef enum {
40
40
  GIT_PKT_HAVE,
41
41
  GIT_PKT_ACK,
42
42
  GIT_PKT_NAK,
43
- GIT_PKT_PACK,
44
43
  GIT_PKT_COMMENT,
45
44
  GIT_PKT_ERR,
46
45
  GIT_PKT_DATA,
@@ -91,7 +90,7 @@ typedef struct {
91
90
 
92
91
  typedef struct {
93
92
  git_pkt_type type;
94
- int len;
93
+ size_t len;
95
94
  char data[GIT_FLEX_ARRAY];
96
95
  } git_pkt_data;
97
96
 
@@ -99,7 +98,7 @@ typedef git_pkt_data git_pkt_progress;
99
98
 
100
99
  typedef struct {
101
100
  git_pkt_type type;
102
- int len;
101
+ size_t len;
103
102
  char error[GIT_FLEX_ARRAY];
104
103
  } git_pkt_err;
105
104
 
@@ -178,8 +177,8 @@ int git_smart__negotiate_fetch(
178
177
  int git_smart__download_pack(
179
178
  git_transport *transport,
180
179
  git_repository *repo,
181
- git_transfer_progress *stats,
182
- git_transfer_progress_cb progress_cb,
180
+ git_indexer_progress *stats,
181
+ git_indexer_progress_cb progress_cb,
183
182
  void *progress_payload);
184
183
 
185
184
  /* smart.c */
@@ -189,7 +188,7 @@ int git_smart__get_push_stream(transport_smart *t, git_smart_subtransport_stream
189
188
  int git_smart__update_heads(transport_smart *t, git_vector *symrefs);
190
189
 
191
190
  /* smart_pkt.c */
192
- int git_pkt_parse_line(git_pkt **head, const char *line, const char **out, size_t len);
191
+ int git_pkt_parse_line(git_pkt **head, const char **endptr, const char *line, size_t linelen);
193
192
  int git_pkt_buffer_flush(git_buf *buf);
194
193
  int git_pkt_send_flush(GIT_SOCKET s);
195
194
  int git_pkt_buffer_done(git_buf *buf);