rugged 1.3.2.3 → 1.4.2

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 (329) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rugged/extconf.rb +1 -1
  3. data/ext/rugged/rugged_config.c +7 -2
  4. data/ext/rugged/rugged_remote.c +17 -0
  5. data/lib/rugged/version.rb +1 -1
  6. data/vendor/libgit2/CMakeLists.txt +103 -276
  7. data/vendor/libgit2/COPYING +36 -19
  8. data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
  9. data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
  10. data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
  11. data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
  12. data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
  13. data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
  14. data/vendor/libgit2/cmake/{FindHTTP_Parser.cmake → FindHTTPParser.cmake} +17 -17
  15. data/vendor/libgit2/cmake/FindIconv.cmake +27 -27
  16. data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
  17. data/vendor/libgit2/cmake/FindPCRE.cmake +13 -13
  18. data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
  19. data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
  20. data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
  21. data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
  22. data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
  23. data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
  24. data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
  25. data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
  26. data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
  27. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
  28. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +19 -0
  29. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +100 -100
  30. data/vendor/libgit2/cmake/SelectHashes.cmake +39 -49
  31. data/vendor/libgit2/cmake/SelectRegex.cmake +51 -0
  32. data/vendor/libgit2/cmake/SelectSSH.cmake +41 -0
  33. data/vendor/libgit2/cmake/SelectWinHTTP.cmake +17 -0
  34. data/vendor/libgit2/cmake/SelectZlib.cmake +34 -0
  35. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
  36. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +31 -31
  37. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +1 -1
  38. data/vendor/libgit2/deps/ntlmclient/ntlm.c +4 -4
  39. data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
  40. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
  41. data/vendor/libgit2/deps/pcre/CMakeLists.txt +88 -88
  42. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
  43. data/vendor/libgit2/deps/zlib/adler32.c +0 -7
  44. data/vendor/libgit2/deps/zlib/crc32.c +288 -975
  45. data/vendor/libgit2/deps/zlib/crc32.h +436 -9441
  46. data/vendor/libgit2/deps/zlib/deflate.c +31 -83
  47. data/vendor/libgit2/deps/zlib/deflate.h +15 -12
  48. data/vendor/libgit2/deps/zlib/gzguts.h +2 -3
  49. data/vendor/libgit2/deps/zlib/infback.c +1 -2
  50. data/vendor/libgit2/deps/zlib/inffast.c +14 -14
  51. data/vendor/libgit2/deps/zlib/inflate.c +8 -39
  52. data/vendor/libgit2/deps/zlib/inflate.h +2 -3
  53. data/vendor/libgit2/deps/zlib/inftrees.c +3 -3
  54. data/vendor/libgit2/deps/zlib/trees.c +48 -27
  55. data/vendor/libgit2/deps/zlib/zlib.h +100 -126
  56. data/vendor/libgit2/deps/zlib/zutil.c +2 -2
  57. data/vendor/libgit2/deps/zlib/zutil.h +9 -12
  58. data/vendor/libgit2/include/git2/apply.h +16 -2
  59. data/vendor/libgit2/include/git2/attr.h +11 -2
  60. data/vendor/libgit2/include/git2/blame.h +4 -1
  61. data/vendor/libgit2/include/git2/blob.h +14 -1
  62. data/vendor/libgit2/include/git2/branch.h +2 -0
  63. data/vendor/libgit2/include/git2/buffer.h +18 -78
  64. data/vendor/libgit2/include/git2/cert.h +2 -2
  65. data/vendor/libgit2/include/git2/checkout.h +5 -2
  66. data/vendor/libgit2/include/git2/clone.h +3 -3
  67. data/vendor/libgit2/include/git2/commit.h +2 -0
  68. data/vendor/libgit2/include/git2/common.h +5 -12
  69. data/vendor/libgit2/include/git2/config.h +19 -3
  70. data/vendor/libgit2/include/git2/credential.h +2 -1
  71. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  72. data/vendor/libgit2/include/git2/deprecated.h +1 -1
  73. data/vendor/libgit2/include/git2/describe.h +7 -2
  74. data/vendor/libgit2/include/git2/diff.h +17 -9
  75. data/vendor/libgit2/include/git2/email.h +1 -1
  76. data/vendor/libgit2/include/git2/errors.h +1 -2
  77. data/vendor/libgit2/include/git2/filter.h +7 -2
  78. data/vendor/libgit2/include/git2/graph.h +1 -0
  79. data/vendor/libgit2/include/git2/ignore.h +1 -1
  80. data/vendor/libgit2/include/git2/index.h +11 -5
  81. data/vendor/libgit2/include/git2/indexer.h +19 -0
  82. data/vendor/libgit2/include/git2/merge.h +23 -3
  83. data/vendor/libgit2/include/git2/message.h +2 -0
  84. data/vendor/libgit2/include/git2/object.h +23 -0
  85. data/vendor/libgit2/include/git2/odb.h +37 -7
  86. data/vendor/libgit2/include/git2/odb_backend.h +1 -1
  87. data/vendor/libgit2/include/git2/pack.h +24 -8
  88. data/vendor/libgit2/include/git2/patch.h +8 -0
  89. data/vendor/libgit2/include/git2/pathspec.h +1 -1
  90. data/vendor/libgit2/include/git2/proxy.h +1 -1
  91. data/vendor/libgit2/include/git2/rebase.h +9 -1
  92. data/vendor/libgit2/include/git2/refdb.h +3 -0
  93. data/vendor/libgit2/include/git2/reflog.h +1 -1
  94. data/vendor/libgit2/include/git2/refs.h +2 -2
  95. data/vendor/libgit2/include/git2/remote.h +184 -37
  96. data/vendor/libgit2/include/git2/repository.h +14 -9
  97. data/vendor/libgit2/include/git2/reset.h +2 -2
  98. data/vendor/libgit2/include/git2/revparse.h +1 -1
  99. data/vendor/libgit2/include/git2/revwalk.h +4 -1
  100. data/vendor/libgit2/include/git2/signature.h +1 -1
  101. data/vendor/libgit2/include/git2/stash.h +3 -3
  102. data/vendor/libgit2/include/git2/status.h +9 -3
  103. data/vendor/libgit2/include/git2/submodule.h +7 -2
  104. data/vendor/libgit2/include/git2/sys/commit_graph.h +1 -1
  105. data/vendor/libgit2/include/git2/sys/odb_backend.h +2 -5
  106. data/vendor/libgit2/include/git2/sys/remote.h +31 -0
  107. data/vendor/libgit2/include/git2/sys/stream.h +1 -1
  108. data/vendor/libgit2/include/git2/sys/transport.h +25 -34
  109. data/vendor/libgit2/include/git2/tag.h +1 -0
  110. data/vendor/libgit2/include/git2/tree.h +4 -3
  111. data/vendor/libgit2/include/git2/types.h +7 -7
  112. data/vendor/libgit2/include/git2/version.h +3 -3
  113. data/vendor/libgit2/include/git2/worktree.h +12 -2
  114. data/vendor/libgit2/src/CMakeLists.txt +189 -315
  115. data/vendor/libgit2/src/annotated_commit.h +1 -1
  116. data/vendor/libgit2/src/apply.c +18 -18
  117. data/vendor/libgit2/src/apply.h +2 -2
  118. data/vendor/libgit2/src/attr.c +18 -18
  119. data/vendor/libgit2/src/attr_file.c +17 -17
  120. data/vendor/libgit2/src/attr_file.h +4 -4
  121. data/vendor/libgit2/src/attrcache.c +17 -12
  122. data/vendor/libgit2/src/blame_git.c +1 -1
  123. data/vendor/libgit2/src/blob.c +33 -26
  124. data/vendor/libgit2/src/blob.h +1 -1
  125. data/vendor/libgit2/src/branch.c +150 -109
  126. data/vendor/libgit2/src/branch.h +15 -3
  127. data/vendor/libgit2/src/buf.c +126 -0
  128. data/vendor/libgit2/src/buf.h +50 -0
  129. data/vendor/libgit2/src/cc-compat.h +1 -1
  130. data/vendor/libgit2/src/checkout.c +74 -68
  131. data/vendor/libgit2/src/cherrypick.c +10 -10
  132. data/vendor/libgit2/src/clone.c +66 -66
  133. data/vendor/libgit2/src/commit.c +128 -58
  134. data/vendor/libgit2/src/commit.h +24 -1
  135. data/vendor/libgit2/src/commit_graph.c +68 -53
  136. data/vendor/libgit2/src/commit_graph.h +10 -3
  137. data/vendor/libgit2/src/commit_list.c +2 -3
  138. data/vendor/libgit2/src/common.h +10 -3
  139. data/vendor/libgit2/src/config.c +99 -77
  140. data/vendor/libgit2/src/config.h +15 -2
  141. data/vendor/libgit2/src/config_file.c +103 -91
  142. data/vendor/libgit2/src/config_mem.c +9 -9
  143. data/vendor/libgit2/src/config_parse.c +27 -23
  144. data/vendor/libgit2/src/crlf.c +24 -21
  145. data/vendor/libgit2/src/date.c +10 -17
  146. data/vendor/libgit2/src/date.h +33 -0
  147. data/vendor/libgit2/src/describe.c +27 -19
  148. data/vendor/libgit2/src/diff.c +25 -8
  149. data/vendor/libgit2/src/diff.h +2 -4
  150. data/vendor/libgit2/src/diff_driver.c +34 -36
  151. data/vendor/libgit2/src/diff_driver.h +3 -3
  152. data/vendor/libgit2/src/diff_file.c +29 -20
  153. data/vendor/libgit2/src/diff_generate.c +30 -6
  154. data/vendor/libgit2/src/diff_generate.h +5 -3
  155. data/vendor/libgit2/src/diff_print.c +102 -95
  156. data/vendor/libgit2/src/diff_stats.c +40 -29
  157. data/vendor/libgit2/src/{message.h → diff_stats.h} +7 -6
  158. data/vendor/libgit2/src/diff_tform.c +9 -8
  159. data/vendor/libgit2/src/diff_xdiff.c +3 -8
  160. data/vendor/libgit2/src/email.c +54 -38
  161. data/vendor/libgit2/src/email.h +1 -1
  162. data/vendor/libgit2/src/errors.c +18 -18
  163. data/vendor/libgit2/src/features.h.in +6 -1
  164. data/vendor/libgit2/src/fetch.c +69 -24
  165. data/vendor/libgit2/src/fetch.h +1 -1
  166. data/vendor/libgit2/src/fetchhead.c +19 -19
  167. data/vendor/libgit2/src/filebuf.c +28 -28
  168. data/vendor/libgit2/src/filebuf.h +1 -1
  169. data/vendor/libgit2/src/filter.c +96 -52
  170. data/vendor/libgit2/src/filter.h +26 -5
  171. data/vendor/libgit2/src/fs_path.c +1912 -0
  172. data/vendor/libgit2/src/fs_path.h +752 -0
  173. data/vendor/libgit2/src/futils.c +91 -85
  174. data/vendor/libgit2/src/futils.h +26 -14
  175. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +2 -2
  176. data/vendor/libgit2/src/hash/sha1/common_crypto.c +2 -2
  177. data/vendor/libgit2/src/hash/sha1/generic.c +2 -2
  178. data/vendor/libgit2/src/hash/sha1/mbedtls.c +2 -2
  179. data/vendor/libgit2/src/hash/sha1/openssl.c +2 -2
  180. data/vendor/libgit2/src/hash/sha1/sha1dc/sha1.c +1 -1
  181. data/vendor/libgit2/src/hash/sha1/win32.c +6 -6
  182. data/vendor/libgit2/src/hash/sha1.h +3 -1
  183. data/vendor/libgit2/src/hash.c +67 -35
  184. data/vendor/libgit2/src/hash.h +12 -12
  185. data/vendor/libgit2/src/ident.c +18 -18
  186. data/vendor/libgit2/src/ignore.c +35 -34
  187. data/vendor/libgit2/src/ignore.h +2 -2
  188. data/vendor/libgit2/src/index.c +79 -80
  189. data/vendor/libgit2/src/index.h +6 -3
  190. data/vendor/libgit2/src/indexer.c +75 -57
  191. data/vendor/libgit2/src/iterator.c +64 -56
  192. data/vendor/libgit2/src/iterator.h +5 -5
  193. data/vendor/libgit2/src/khash.h +1 -1
  194. data/vendor/libgit2/src/libgit2.c +22 -19
  195. data/vendor/libgit2/src/mailmap.c +38 -36
  196. data/vendor/libgit2/src/merge.c +27 -27
  197. data/vendor/libgit2/src/merge.h +1 -14
  198. data/vendor/libgit2/src/merge_driver.c +2 -2
  199. data/vendor/libgit2/src/merge_file.c +13 -3
  200. data/vendor/libgit2/src/message.c +21 -10
  201. data/vendor/libgit2/src/midx.c +83 -66
  202. data/vendor/libgit2/src/midx.h +3 -3
  203. data/vendor/libgit2/src/mwindow.c +1 -1
  204. data/vendor/libgit2/src/net.c +278 -68
  205. data/vendor/libgit2/src/net.h +10 -3
  206. data/vendor/libgit2/src/netops.c +1 -1
  207. data/vendor/libgit2/src/netops.h +1 -1
  208. data/vendor/libgit2/src/notes.c +20 -29
  209. data/vendor/libgit2/src/object.c +49 -9
  210. data/vendor/libgit2/src/object.h +1 -1
  211. data/vendor/libgit2/src/odb.c +35 -32
  212. data/vendor/libgit2/src/odb.h +1 -1
  213. data/vendor/libgit2/src/odb_loose.c +68 -68
  214. data/vendor/libgit2/src/odb_mempack.c +18 -5
  215. data/vendor/libgit2/src/odb_pack.c +43 -43
  216. data/vendor/libgit2/src/oid.c +11 -4
  217. data/vendor/libgit2/src/oid.h +15 -0
  218. data/vendor/libgit2/src/pack-objects.c +41 -26
  219. data/vendor/libgit2/src/pack-objects.h +11 -6
  220. data/vendor/libgit2/src/pack.c +10 -10
  221. data/vendor/libgit2/src/patch.c +3 -3
  222. data/vendor/libgit2/src/patch.h +1 -0
  223. data/vendor/libgit2/src/patch_generate.c +27 -11
  224. data/vendor/libgit2/src/patch_generate.h +5 -5
  225. data/vendor/libgit2/src/patch_parse.c +24 -24
  226. data/vendor/libgit2/src/path.c +76 -1951
  227. data/vendor/libgit2/src/path.h +34 -741
  228. data/vendor/libgit2/src/pathspec.c +6 -6
  229. data/vendor/libgit2/src/pathspec.h +2 -2
  230. data/vendor/libgit2/src/posix.c +3 -3
  231. data/vendor/libgit2/src/posix.h +1 -0
  232. data/vendor/libgit2/src/pqueue.h +1 -1
  233. data/vendor/libgit2/src/proxy.c +4 -1
  234. data/vendor/libgit2/src/proxy.h +1 -1
  235. data/vendor/libgit2/src/push.c +30 -35
  236. data/vendor/libgit2/src/push.h +4 -16
  237. data/vendor/libgit2/src/rand.c +226 -0
  238. data/vendor/libgit2/src/rand.h +37 -0
  239. data/vendor/libgit2/src/reader.c +8 -8
  240. data/vendor/libgit2/src/reader.h +2 -2
  241. data/vendor/libgit2/src/rebase.c +89 -88
  242. data/vendor/libgit2/src/refdb_fs.c +447 -173
  243. data/vendor/libgit2/src/refs.c +32 -32
  244. data/vendor/libgit2/src/refs.h +2 -2
  245. data/vendor/libgit2/src/refspec.c +32 -37
  246. data/vendor/libgit2/src/refspec.h +5 -2
  247. data/vendor/libgit2/src/regexp.c +1 -1
  248. data/vendor/libgit2/src/remote.c +713 -419
  249. data/vendor/libgit2/src/remote.h +15 -10
  250. data/vendor/libgit2/src/repository.c +350 -467
  251. data/vendor/libgit2/src/repository.h +11 -10
  252. data/vendor/libgit2/src/reset.c +8 -5
  253. data/vendor/libgit2/src/revert.c +10 -10
  254. data/vendor/libgit2/src/revparse.c +48 -35
  255. data/vendor/libgit2/src/revwalk.c +7 -7
  256. data/vendor/libgit2/src/signature.c +12 -6
  257. data/vendor/libgit2/src/signature.h +1 -1
  258. data/vendor/libgit2/src/sortedcache.c +1 -1
  259. data/vendor/libgit2/src/sortedcache.h +1 -1
  260. data/vendor/libgit2/src/stash.c +36 -37
  261. data/vendor/libgit2/src/status.c +4 -1
  262. data/vendor/libgit2/src/{buffer.c → str.c} +157 -151
  263. data/vendor/libgit2/src/str.h +357 -0
  264. data/vendor/libgit2/src/streams/mbedtls.c +8 -6
  265. data/vendor/libgit2/src/streams/openssl_dynamic.h +3 -3
  266. data/vendor/libgit2/src/submodule.c +171 -159
  267. data/vendor/libgit2/src/submodule.h +1 -1
  268. data/vendor/libgit2/src/sysdir.c +68 -52
  269. data/vendor/libgit2/src/sysdir.h +15 -10
  270. data/vendor/libgit2/src/tag.c +29 -27
  271. data/vendor/libgit2/src/thread.h +3 -3
  272. data/vendor/libgit2/src/threadstate.c +3 -3
  273. data/vendor/libgit2/src/threadstate.h +1 -1
  274. data/vendor/libgit2/src/trace.c +1 -14
  275. data/vendor/libgit2/src/trace.h +5 -22
  276. data/vendor/libgit2/src/trailer.c +1 -1
  277. data/vendor/libgit2/src/transaction.c +1 -1
  278. data/vendor/libgit2/src/transport.c +10 -10
  279. data/vendor/libgit2/src/transports/auth.c +7 -9
  280. data/vendor/libgit2/src/transports/auth.h +2 -3
  281. data/vendor/libgit2/src/transports/auth_negotiate.c +12 -13
  282. data/vendor/libgit2/src/transports/auth_ntlm.c +10 -10
  283. data/vendor/libgit2/src/transports/auth_ntlm.h +0 -1
  284. data/vendor/libgit2/src/transports/git.c +9 -11
  285. data/vendor/libgit2/src/transports/http.c +37 -17
  286. data/vendor/libgit2/src/transports/http.h +2 -3
  287. data/vendor/libgit2/src/transports/httpclient.c +65 -65
  288. data/vendor/libgit2/src/transports/local.c +124 -116
  289. data/vendor/libgit2/src/transports/smart.c +51 -139
  290. data/vendor/libgit2/src/transports/smart.h +25 -31
  291. data/vendor/libgit2/src/transports/smart_pkt.c +33 -33
  292. data/vendor/libgit2/src/transports/smart_protocol.c +57 -39
  293. data/vendor/libgit2/src/transports/ssh.c +47 -112
  294. data/vendor/libgit2/src/transports/winhttp.c +50 -56
  295. data/vendor/libgit2/src/tree-cache.c +5 -5
  296. data/vendor/libgit2/src/tree-cache.h +2 -2
  297. data/vendor/libgit2/src/tree.c +59 -48
  298. data/vendor/libgit2/src/tree.h +1 -1
  299. data/vendor/libgit2/src/unix/map.c +0 -2
  300. data/vendor/libgit2/src/unix/posix.h +1 -4
  301. data/vendor/libgit2/src/unix/realpath.c +0 -2
  302. data/vendor/libgit2/src/util.c +14 -14
  303. data/vendor/libgit2/src/util.h +2 -28
  304. data/vendor/libgit2/src/vector.h +1 -1
  305. data/vendor/libgit2/src/win32/findfile.c +172 -116
  306. data/vendor/libgit2/src/win32/findfile.h +7 -4
  307. data/vendor/libgit2/src/win32/path_w32.c +140 -9
  308. data/vendor/libgit2/src/win32/path_w32.h +2 -0
  309. data/vendor/libgit2/src/win32/posix.h +0 -1
  310. data/vendor/libgit2/src/win32/posix_w32.c +11 -27
  311. data/vendor/libgit2/src/win32/w32_buffer.c +2 -3
  312. data/vendor/libgit2/src/win32/w32_buffer.h +2 -3
  313. data/vendor/libgit2/src/win32/w32_leakcheck.c +1 -1
  314. data/vendor/libgit2/src/worktree.c +116 -94
  315. data/vendor/libgit2/src/worktree.h +1 -1
  316. data/vendor/libgit2/src/xdiff/git-xdiff.h +53 -0
  317. data/vendor/libgit2/src/xdiff/xdiff.h +15 -15
  318. data/vendor/libgit2/src/xdiff/xdiffi.c +134 -108
  319. data/vendor/libgit2/src/xdiff/xemit.c +23 -7
  320. data/vendor/libgit2/src/xdiff/xhistogram.c +87 -78
  321. data/vendor/libgit2/src/xdiff/xinclude.h +1 -12
  322. data/vendor/libgit2/src/xdiff/xmerge.c +104 -117
  323. data/vendor/libgit2/src/xdiff/xpatience.c +6 -17
  324. data/vendor/libgit2/src/xdiff/xprepare.c +15 -20
  325. data/vendor/libgit2/src/xdiff/xutils.c +18 -7
  326. data/vendor/libgit2/src/zstream.c +5 -5
  327. data/vendor/libgit2/src/zstream.h +4 -4
  328. metadata +25 -10
  329. data/vendor/libgit2/src/buffer.h +0 -374
@@ -8,6 +8,7 @@
8
8
  #include "smart.h"
9
9
 
10
10
  #include "git2.h"
11
+ #include "git2/sys/remote.h"
11
12
  #include "refs.h"
12
13
  #include "refspec.h"
13
14
  #include "proxy.h"
@@ -56,101 +57,6 @@ GIT_INLINE(int) git_smart__reset_stream(transport_smart *t, bool close_subtransp
56
57
  return 0;
57
58
  }
58
59
 
59
- static int git_smart__set_callbacks(
60
- git_transport *transport,
61
- git_transport_message_cb progress_cb,
62
- git_transport_message_cb error_cb,
63
- git_transport_certificate_check_cb certificate_check_cb,
64
- void *message_cb_payload)
65
- {
66
- transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
67
-
68
- t->progress_cb = progress_cb;
69
- t->error_cb = error_cb;
70
- t->certificate_check_cb = certificate_check_cb;
71
- t->message_cb_payload = message_cb_payload;
72
-
73
- return 0;
74
- }
75
-
76
- static size_t http_header_name_length(const char *http_header)
77
- {
78
- const char *colon = strchr(http_header, ':');
79
- if (!colon)
80
- return 0;
81
- return colon - http_header;
82
- }
83
-
84
- static bool is_malformed_http_header(const char *http_header)
85
- {
86
- const char *c;
87
- size_t name_len;
88
-
89
- /* Disallow \r and \n */
90
- c = strchr(http_header, '\r');
91
- if (c)
92
- return true;
93
- c = strchr(http_header, '\n');
94
- if (c)
95
- return true;
96
-
97
- /* Require a header name followed by : */
98
- name_len = http_header_name_length(http_header);
99
- if (name_len < 1)
100
- return true;
101
-
102
- return false;
103
- }
104
-
105
- static char *forbidden_custom_headers[] = {
106
- "User-Agent",
107
- "Host",
108
- "Accept",
109
- "Content-Type",
110
- "Transfer-Encoding",
111
- "Content-Length",
112
- };
113
-
114
- static bool is_forbidden_custom_header(const char *custom_header)
115
- {
116
- unsigned long i;
117
- size_t name_len = http_header_name_length(custom_header);
118
-
119
- /* Disallow headers that we set */
120
- for (i = 0; i < ARRAY_SIZE(forbidden_custom_headers); i++)
121
- if (strncmp(forbidden_custom_headers[i], custom_header, name_len) == 0)
122
- return true;
123
-
124
- return false;
125
- }
126
-
127
- static int git_smart__set_custom_headers(
128
- git_transport *transport,
129
- const git_strarray *custom_headers)
130
- {
131
- transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
132
- size_t i;
133
-
134
- if (t->custom_headers.count)
135
- git_strarray_dispose(&t->custom_headers);
136
-
137
- if (!custom_headers)
138
- return 0;
139
-
140
- for (i = 0; i < custom_headers->count; i++) {
141
- if (is_malformed_http_header(custom_headers->strings[i])) {
142
- git_error_set(GIT_ERROR_INVALID, "custom HTTP header '%s' is malformed", custom_headers->strings[i]);
143
- return -1;
144
- }
145
- if (is_forbidden_custom_header(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
- return -1;
148
- }
149
- }
150
-
151
- return git_strarray_copy(&t->custom_headers, custom_headers);
152
- }
153
-
154
60
  int git_smart__update_heads(transport_smart *t, git_vector *symrefs)
155
61
  {
156
62
  size_t i;
@@ -164,20 +70,20 @@ int git_smart__update_heads(transport_smart *t, git_vector *symrefs)
164
70
 
165
71
  if (symrefs) {
166
72
  git_refspec *spec;
167
- git_buf buf = GIT_BUF_INIT;
73
+ git_str buf = GIT_STR_INIT;
168
74
  size_t j;
169
75
  int error = 0;
170
76
 
171
77
  git_vector_foreach(symrefs, j, spec) {
172
- git_buf_clear(&buf);
78
+ git_str_clear(&buf);
173
79
  if (git_refspec_src_matches(spec, ref->head.name) &&
174
- !(error = git_refspec_transform(&buf, spec, ref->head.name))) {
80
+ !(error = git_refspec__transform(&buf, spec, ref->head.name))) {
175
81
  git__free(ref->head.symref_target);
176
- ref->head.symref_target = git_buf_detach(&buf);
82
+ ref->head.symref_target = git_str_detach(&buf);
177
83
  }
178
84
  }
179
85
 
180
- git_buf_dispose(&buf);
86
+ git_str_dispose(&buf);
181
87
 
182
88
  if (error < 0)
183
89
  return error;
@@ -206,11 +112,8 @@ static void free_symrefs(git_vector *symrefs)
206
112
  static int git_smart__connect(
207
113
  git_transport *transport,
208
114
  const char *url,
209
- git_credential_acquire_cb cred_acquire_cb,
210
- void *cred_acquire_payload,
211
- const git_proxy_options *proxy,
212
115
  int direction,
213
- int flags)
116
+ const git_remote_connect_options *connect_opts)
214
117
  {
215
118
  transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
216
119
  git_smart_subtransport_stream *stream;
@@ -223,24 +126,19 @@ static int git_smart__connect(
223
126
  if (git_smart__reset_stream(t, true) < 0)
224
127
  return -1;
225
128
 
129
+ if (git_remote_connect_options_normalize(&t->connect_opts, t->owner->repo, connect_opts) < 0)
130
+ return -1;
131
+
226
132
  t->url = git__strdup(url);
227
133
  GIT_ERROR_CHECK_ALLOC(t->url);
228
134
 
229
- git_proxy_options_clear(&t->proxy);
230
-
231
- if (git_proxy_options_dup(&t->proxy, proxy) < 0)
232
- return -1;
233
-
234
135
  t->direction = direction;
235
- t->flags = flags;
236
- t->cred_acquire_cb = cred_acquire_cb;
237
- t->cred_acquire_payload = cred_acquire_payload;
238
136
 
239
- if (GIT_DIRECTION_FETCH == t->direction)
137
+ if (GIT_DIRECTION_FETCH == t->direction) {
240
138
  service = GIT_SERVICE_UPLOADPACK_LS;
241
- else if (GIT_DIRECTION_PUSH == t->direction)
139
+ } else if (GIT_DIRECTION_PUSH == t->direction) {
242
140
  service = GIT_SERVICE_RECEIVEPACK_LS;
243
- else {
141
+ } else {
244
142
  git_error_set(GIT_ERROR_NET, "invalid direction");
245
143
  return -1;
246
144
  }
@@ -315,6 +213,35 @@ cleanup:
315
213
  return error;
316
214
  }
317
215
 
216
+ static int git_smart__set_connect_opts(
217
+ git_transport *transport,
218
+ const git_remote_connect_options *opts)
219
+ {
220
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
221
+
222
+ if (!t->connected) {
223
+ git_error_set(GIT_ERROR_NET, "cannot reconfigure a transport that is not connected");
224
+ return -1;
225
+ }
226
+
227
+ return git_remote_connect_options_normalize(&t->connect_opts, t->owner->repo, opts);
228
+ }
229
+
230
+ static int git_smart__capabilities(unsigned int *capabilities, git_transport *transport)
231
+ {
232
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
233
+
234
+ *capabilities = 0;
235
+
236
+ if (t->caps.want_tip_sha1)
237
+ *capabilities |= GIT_REMOTE_CAPABILITY_TIP_OID;
238
+
239
+ if (t->caps.want_reachable_sha1)
240
+ *capabilities |= GIT_REMOTE_CAPABILITY_REACHABLE_OID;
241
+
242
+ return 0;
243
+ }
244
+
318
245
  static int git_smart__ls(const git_remote_head ***out, size_t *size, git_transport *transport)
319
246
  {
320
247
  transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
@@ -401,15 +328,6 @@ static int git_smart__is_connected(git_transport *transport)
401
328
  return t->connected;
402
329
  }
403
330
 
404
- static int git_smart__read_flags(git_transport *transport, int *flags)
405
- {
406
- transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
407
-
408
- *flags = t->flags;
409
-
410
- return 0;
411
- }
412
-
413
331
  static int git_smart__close(git_transport *transport)
414
332
  {
415
333
  transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
@@ -465,9 +383,8 @@ static void git_smart__free(git_transport *transport)
465
383
  git_pkt_free(p);
466
384
 
467
385
  git_vector_free(refs);
468
- git__free((char *)t->proxy.url);
469
386
 
470
- git_strarray_dispose(&t->custom_headers);
387
+ git_remote_connect_options_dispose(&t->connect_opts);
471
388
 
472
389
  git__free(t);
473
390
  }
@@ -482,34 +399,30 @@ static int ref_name_cmp(const void *a, const void *b)
482
399
  int git_transport_smart_certificate_check(git_transport *transport, git_cert *cert, int valid, const char *hostname)
483
400
  {
484
401
  transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
402
+ git_remote_connect_options *connect_opts = &t->connect_opts;
485
403
 
486
404
  GIT_ASSERT_ARG(transport);
487
405
  GIT_ASSERT_ARG(cert);
488
406
  GIT_ASSERT_ARG(hostname);
489
407
 
490
- if (!t->certificate_check_cb)
408
+ if (!connect_opts->callbacks.certificate_check)
491
409
  return GIT_PASSTHROUGH;
492
410
 
493
- return t->certificate_check_cb(cert, valid, hostname, t->message_cb_payload);
411
+ return connect_opts->callbacks.certificate_check(cert, valid, hostname, connect_opts->callbacks.payload);
494
412
  }
495
413
 
496
414
  int git_transport_smart_credentials(git_credential **out, git_transport *transport, const char *user, int methods)
497
415
  {
498
416
  transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
417
+ git_remote_connect_options *connect_opts = &t->connect_opts;
499
418
 
500
419
  GIT_ASSERT_ARG(out);
501
420
  GIT_ASSERT_ARG(transport);
502
421
 
503
- if (!t->cred_acquire_cb)
422
+ if (!connect_opts->callbacks.credentials)
504
423
  return GIT_PASSTHROUGH;
505
424
 
506
- return t->cred_acquire_cb(out, t->url, user, methods, t->cred_acquire_payload);
507
- }
508
-
509
- int git_transport_smart_proxy_options(git_proxy_options *out, git_transport *transport)
510
- {
511
- transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
512
- return git_proxy_options_dup(out, &t->proxy);
425
+ return connect_opts->callbacks.credentials(out, t->url, user, methods, connect_opts->callbacks.payload);
513
426
  }
514
427
 
515
428
  int git_transport_smart(git_transport **out, git_remote *owner, void *param)
@@ -524,9 +437,9 @@ int git_transport_smart(git_transport **out, git_remote *owner, void *param)
524
437
  GIT_ERROR_CHECK_ALLOC(t);
525
438
 
526
439
  t->parent.version = GIT_TRANSPORT_VERSION;
527
- t->parent.set_callbacks = git_smart__set_callbacks;
528
- t->parent.set_custom_headers = git_smart__set_custom_headers;
529
440
  t->parent.connect = git_smart__connect;
441
+ t->parent.set_connect_opts = git_smart__set_connect_opts;
442
+ t->parent.capabilities = git_smart__capabilities;
530
443
  t->parent.close = git_smart__close;
531
444
  t->parent.free = git_smart__free;
532
445
  t->parent.negotiate_fetch = git_smart__negotiate_fetch;
@@ -534,7 +447,6 @@ int git_transport_smart(git_transport **out, git_remote *owner, void *param)
534
447
  t->parent.push = git_smart__push;
535
448
  t->parent.ls = git_smart__ls;
536
449
  t->parent.is_connected = git_smart__is_connected;
537
- t->parent.read_flags = git_smart__read_flags;
538
450
  t->parent.cancel = git_smart__cancel;
539
451
 
540
452
  t->owner = owner;
@@ -12,8 +12,8 @@
12
12
  #include "git2.h"
13
13
  #include "vector.h"
14
14
  #include "netops.h"
15
- #include "buffer.h"
16
15
  #include "push.h"
16
+ #include "str.h"
17
17
  #include "git2/sys/transport.h"
18
18
 
19
19
  #define GIT_SIDE_BAND_DATA 1
@@ -30,6 +30,8 @@
30
30
  #define GIT_CAP_REPORT_STATUS "report-status"
31
31
  #define GIT_CAP_THIN_PACK "thin-pack"
32
32
  #define GIT_CAP_SYMREF "symref"
33
+ #define GIT_CAP_WANT_TIP_SHA1 "allow-tip-sha1-in-want"
34
+ #define GIT_CAP_WANT_REACHABLE_SHA1 "allow-reachable-sha1-in-want"
33
35
 
34
36
  extern bool git_smart__ofs_delta_enabled;
35
37
 
@@ -46,7 +48,7 @@ typedef enum {
46
48
  GIT_PKT_PROGRESS,
47
49
  GIT_PKT_OK,
48
50
  GIT_PKT_NG,
49
- GIT_PKT_UNPACK,
51
+ GIT_PKT_UNPACK
50
52
  } git_pkt_type;
51
53
 
52
54
  /* Used for multi_ack and multi_ack_detailed */
@@ -119,16 +121,18 @@ typedef struct {
119
121
  } git_pkt_unpack;
120
122
 
121
123
  typedef struct transport_smart_caps {
122
- int common:1,
123
- ofs_delta:1,
124
- multi_ack: 1,
125
- multi_ack_detailed: 1,
126
- side_band:1,
127
- side_band_64k:1,
128
- include_tag:1,
129
- delete_refs:1,
130
- report_status:1,
131
- thin_pack:1;
124
+ unsigned int common:1,
125
+ ofs_delta:1,
126
+ multi_ack:1,
127
+ multi_ack_detailed:1,
128
+ side_band:1,
129
+ side_band_64k:1,
130
+ include_tag:1,
131
+ delete_refs:1,
132
+ report_status:1,
133
+ thin_pack:1,
134
+ want_tip_sha1:1,
135
+ want_reachable_sha1:1;
132
136
  } transport_smart_caps;
133
137
 
134
138
  typedef int (*packetsize_cb)(size_t received, void *payload);
@@ -137,16 +141,8 @@ typedef struct {
137
141
  git_transport parent;
138
142
  git_remote *owner;
139
143
  char *url;
140
- git_credential_acquire_cb cred_acquire_cb;
141
- void *cred_acquire_payload;
142
- git_proxy_options proxy;
144
+ git_remote_connect_options connect_opts;
143
145
  int direction;
144
- int flags;
145
- git_transport_message_cb progress_cb;
146
- git_transport_message_cb error_cb;
147
- git_transport_certificate_check_cb certificate_check_cb;
148
- void *message_cb_payload;
149
- git_strarray custom_headers;
150
146
  git_smart_subtransport *wrapped;
151
147
  git_smart_subtransport_stream *current_stream;
152
148
  transport_smart_caps caps;
@@ -157,8 +153,8 @@ typedef struct {
157
153
  packetsize_cb packetsize_cb;
158
154
  void *packetsize_payload;
159
155
  unsigned rpc : 1,
160
- have_refs : 1,
161
- connected : 1;
156
+ have_refs : 1,
157
+ connected : 1;
162
158
  gitno_buffer buffer;
163
159
  char buffer_data[65536];
164
160
  } transport_smart;
@@ -166,7 +162,7 @@ typedef struct {
166
162
  /* smart_protocol.c */
167
163
  int git_smart__store_refs(transport_smart *t, int flushes);
168
164
  int git_smart__detect_caps(git_pkt_ref *pkt, transport_smart_caps *caps, git_vector *symrefs);
169
- int git_smart__push(git_transport *transport, git_push *push, const git_remote_callbacks *cbs);
165
+ int git_smart__push(git_transport *transport, git_push *push);
170
166
 
171
167
  int git_smart__negotiate_fetch(
172
168
  git_transport *transport,
@@ -177,9 +173,7 @@ int git_smart__negotiate_fetch(
177
173
  int git_smart__download_pack(
178
174
  git_transport *transport,
179
175
  git_repository *repo,
180
- git_indexer_progress *stats,
181
- git_indexer_progress_cb progress_cb,
182
- void *progress_payload);
176
+ git_indexer_progress *stats);
183
177
 
184
178
  /* smart.c */
185
179
  int git_smart__negotiation_step(git_transport *transport, void *data, size_t len);
@@ -189,11 +183,11 @@ int git_smart__update_heads(transport_smart *t, git_vector *symrefs);
189
183
 
190
184
  /* smart_pkt.c */
191
185
  int git_pkt_parse_line(git_pkt **head, const char **endptr, const char *line, size_t linelen);
192
- int git_pkt_buffer_flush(git_buf *buf);
186
+ int git_pkt_buffer_flush(git_str *buf);
193
187
  int git_pkt_send_flush(GIT_SOCKET s);
194
- int git_pkt_buffer_done(git_buf *buf);
195
- int git_pkt_buffer_wants(const git_remote_head * const *refs, size_t count, transport_smart_caps *caps, git_buf *buf);
196
- int git_pkt_buffer_have(git_oid *oid, git_buf *buf);
188
+ int git_pkt_buffer_done(git_str *buf);
189
+ int git_pkt_buffer_wants(const git_remote_head * const *refs, size_t count, transport_smart_caps *caps, git_str *buf);
190
+ int git_pkt_buffer_have(git_oid *oid, git_str *buf);
197
191
  void git_pkt_free(git_pkt *pkt);
198
192
 
199
193
  #endif
@@ -7,16 +7,16 @@
7
7
 
8
8
  #include "common.h"
9
9
 
10
- #include "git2/types.h"
11
- #include "git2/errors.h"
12
- #include "git2/refs.h"
13
- #include "git2/revwalk.h"
14
-
15
10
  #include "smart.h"
16
11
  #include "util.h"
17
12
  #include "netops.h"
18
13
  #include "posix.h"
19
- #include "buffer.h"
14
+ #include "str.h"
15
+
16
+ #include "git2/types.h"
17
+ #include "git2/errors.h"
18
+ #include "git2/refs.h"
19
+ #include "git2/revwalk.h"
20
20
 
21
21
  #include <ctype.h>
22
22
 
@@ -522,43 +522,43 @@ void git_pkt_free(git_pkt *pkt)
522
522
  git__free(pkt);
523
523
  }
524
524
 
525
- int git_pkt_buffer_flush(git_buf *buf)
525
+ int git_pkt_buffer_flush(git_str *buf)
526
526
  {
527
- return git_buf_put(buf, pkt_flush_str, strlen(pkt_flush_str));
527
+ return git_str_put(buf, pkt_flush_str, strlen(pkt_flush_str));
528
528
  }
529
529
 
530
- static int buffer_want_with_caps(const git_remote_head *head, transport_smart_caps *caps, git_buf *buf)
530
+ static int buffer_want_with_caps(const git_remote_head *head, transport_smart_caps *caps, git_str *buf)
531
531
  {
532
- git_buf str = GIT_BUF_INIT;
532
+ git_str str = GIT_STR_INIT;
533
533
  char oid[GIT_OID_HEXSZ +1] = {0};
534
534
  size_t len;
535
535
 
536
536
  /* Prefer multi_ack_detailed */
537
537
  if (caps->multi_ack_detailed)
538
- git_buf_puts(&str, GIT_CAP_MULTI_ACK_DETAILED " ");
538
+ git_str_puts(&str, GIT_CAP_MULTI_ACK_DETAILED " ");
539
539
  else if (caps->multi_ack)
540
- git_buf_puts(&str, GIT_CAP_MULTI_ACK " ");
540
+ git_str_puts(&str, GIT_CAP_MULTI_ACK " ");
541
541
 
542
542
  /* Prefer side-band-64k if the server supports both */
543
543
  if (caps->side_band_64k)
544
- git_buf_printf(&str, "%s ", GIT_CAP_SIDE_BAND_64K);
544
+ git_str_printf(&str, "%s ", GIT_CAP_SIDE_BAND_64K);
545
545
  else if (caps->side_band)
546
- git_buf_printf(&str, "%s ", GIT_CAP_SIDE_BAND);
546
+ git_str_printf(&str, "%s ", GIT_CAP_SIDE_BAND);
547
547
 
548
548
  if (caps->include_tag)
549
- git_buf_puts(&str, GIT_CAP_INCLUDE_TAG " ");
549
+ git_str_puts(&str, GIT_CAP_INCLUDE_TAG " ");
550
550
 
551
551
  if (caps->thin_pack)
552
- git_buf_puts(&str, GIT_CAP_THIN_PACK " ");
552
+ git_str_puts(&str, GIT_CAP_THIN_PACK " ");
553
553
 
554
554
  if (caps->ofs_delta)
555
- git_buf_puts(&str, GIT_CAP_OFS_DELTA " ");
555
+ git_str_puts(&str, GIT_CAP_OFS_DELTA " ");
556
556
 
557
- if (git_buf_oom(&str))
557
+ if (git_str_oom(&str))
558
558
  return -1;
559
559
 
560
560
  len = strlen("XXXXwant ") + GIT_OID_HEXSZ + 1 /* NUL */ +
561
- git_buf_len(&str) + 1 /* LF */;
561
+ git_str_len(&str) + 1 /* LF */;
562
562
 
563
563
  if (len > 0xffff) {
564
564
  git_error_set(GIT_ERROR_NET,
@@ -566,13 +566,13 @@ static int buffer_want_with_caps(const git_remote_head *head, transport_smart_ca
566
566
  return -1;
567
567
  }
568
568
 
569
- git_buf_grow_by(buf, len);
569
+ git_str_grow_by(buf, len);
570
570
  git_oid_fmt(oid, &head->oid);
571
- git_buf_printf(buf,
572
- "%04xwant %s %s\n", (unsigned int)len, oid, git_buf_cstr(&str));
573
- git_buf_dispose(&str);
571
+ git_str_printf(buf,
572
+ "%04xwant %s %s\n", (unsigned int)len, oid, git_str_cstr(&str));
573
+ git_str_dispose(&str);
574
574
 
575
- GIT_ERROR_CHECK_ALLOC_BUF(buf);
575
+ GIT_ERROR_CHECK_ALLOC_STR(buf);
576
576
 
577
577
  return 0;
578
578
  }
@@ -586,7 +586,7 @@ int git_pkt_buffer_wants(
586
586
  const git_remote_head * const *refs,
587
587
  size_t count,
588
588
  transport_smart_caps *caps,
589
- git_buf *buf)
589
+ git_str *buf)
590
590
  {
591
591
  size_t i = 0;
592
592
  const git_remote_head *head;
@@ -612,26 +612,26 @@ int git_pkt_buffer_wants(
612
612
  continue;
613
613
 
614
614
  git_oid_fmt(oid, &head->oid);
615
- git_buf_put(buf, pkt_want_prefix, strlen(pkt_want_prefix));
616
- git_buf_put(buf, oid, GIT_OID_HEXSZ);
617
- git_buf_putc(buf, '\n');
618
- if (git_buf_oom(buf))
615
+ git_str_put(buf, pkt_want_prefix, strlen(pkt_want_prefix));
616
+ git_str_put(buf, oid, GIT_OID_HEXSZ);
617
+ git_str_putc(buf, '\n');
618
+ if (git_str_oom(buf))
619
619
  return -1;
620
620
  }
621
621
 
622
622
  return git_pkt_buffer_flush(buf);
623
623
  }
624
624
 
625
- int git_pkt_buffer_have(git_oid *oid, git_buf *buf)
625
+ int git_pkt_buffer_have(git_oid *oid, git_str *buf)
626
626
  {
627
627
  char oidhex[GIT_OID_HEXSZ + 1];
628
628
 
629
629
  memset(oidhex, 0x0, sizeof(oidhex));
630
630
  git_oid_fmt(oidhex, oid);
631
- return git_buf_printf(buf, "%s%s\n", pkt_have_prefix, oidhex);
631
+ return git_str_printf(buf, "%s%s\n", pkt_have_prefix, oidhex);
632
632
  }
633
633
 
634
- int git_pkt_buffer_done(git_buf *buf)
634
+ int git_pkt_buffer_done(git_str *buf)
635
635
  {
636
- return git_buf_puts(buf, pkt_done_str);
636
+ return git_str_puts(buf, pkt_done_str);
637
637
  }