rugged 1.3.1 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (656) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/ext/rugged/extconf.rb +6 -3
  4. data/ext/rugged/rugged.c +16 -0
  5. data/ext/rugged/rugged.h +4 -0
  6. data/ext/rugged/rugged_allocator.c +0 -54
  7. data/ext/rugged/rugged_blame.c +2 -0
  8. data/ext/rugged/rugged_blob.c +3 -0
  9. data/ext/rugged/rugged_commit.c +1 -0
  10. data/ext/rugged/rugged_config.c +9 -2
  11. data/ext/rugged/rugged_diff.c +1 -0
  12. data/ext/rugged/rugged_index.c +2 -0
  13. data/ext/rugged/rugged_patch.c +1 -0
  14. data/ext/rugged/rugged_rebase.c +1 -0
  15. data/ext/rugged/rugged_reference.c +1 -0
  16. data/ext/rugged/rugged_remote.c +28 -10
  17. data/ext/rugged/rugged_repo.c +7 -9
  18. data/ext/rugged/rugged_revwalk.c +5 -1
  19. data/ext/rugged/rugged_settings.c +5 -0
  20. data/ext/rugged/rugged_submodule.c +1 -0
  21. data/ext/rugged/rugged_tag.c +1 -0
  22. data/ext/rugged/rugged_tree.c +4 -0
  23. data/lib/rugged/index.rb +1 -1
  24. data/lib/rugged/tree.rb +5 -1
  25. data/lib/rugged/version.rb +1 -1
  26. data/vendor/libgit2/AUTHORS +1 -0
  27. data/vendor/libgit2/CMakeLists.txt +141 -289
  28. data/vendor/libgit2/COPYING +301 -20
  29. data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
  30. data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
  31. data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
  32. data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
  33. data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
  34. data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
  35. data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
  36. data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
  37. data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
  38. data/vendor/libgit2/cmake/FindHTTP_Parser.cmake +17 -17
  39. data/vendor/libgit2/cmake/FindIntlIconv.cmake +51 -0
  40. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  41. data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
  42. data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
  43. data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
  44. data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
  45. data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
  46. data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
  47. data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
  48. data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
  49. data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
  50. data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
  51. data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
  52. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
  53. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +34 -0
  54. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +129 -101
  55. data/vendor/libgit2/cmake/SelectHashes.cmake +113 -54
  56. data/vendor/libgit2/cmake/SelectRegex.cmake +56 -0
  57. data/vendor/libgit2/cmake/SelectSSH.cmake +46 -0
  58. data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
  59. data/vendor/libgit2/cmake/SelectZlib.cmake +38 -0
  60. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
  61. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  62. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  63. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  64. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  65. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  66. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  67. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
  68. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  69. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  70. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  71. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +7 -5
  72. data/vendor/libgit2/deps/ntlmclient/ntlm.c +25 -25
  73. data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
  74. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
  75. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  76. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  77. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  78. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  79. data/vendor/libgit2/deps/pcre/CMakeLists.txt +89 -88
  80. data/vendor/libgit2/deps/pcre/LICENCE +5 -5
  81. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  82. data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
  83. data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
  84. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
  85. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
  86. data/vendor/libgit2/deps/xdiff/git-xdiff.h +56 -0
  87. data/vendor/libgit2/{src → deps}/xdiff/xdiff.h +15 -15
  88. data/vendor/libgit2/{src → deps}/xdiff/xdiffi.c +152 -125
  89. data/vendor/libgit2/{src → deps}/xdiff/xdiffi.h +2 -4
  90. data/vendor/libgit2/{src → deps}/xdiff/xemit.c +26 -10
  91. data/vendor/libgit2/{src → deps}/xdiff/xhistogram.c +92 -94
  92. data/vendor/libgit2/{src → deps}/xdiff/xinclude.h +1 -12
  93. data/vendor/libgit2/{src → deps}/xdiff/xmacros.h +18 -1
  94. data/vendor/libgit2/{src → deps}/xdiff/xmerge.c +126 -137
  95. data/vendor/libgit2/{src → deps}/xdiff/xpatience.c +26 -46
  96. data/vendor/libgit2/{src → deps}/xdiff/xprepare.c +24 -46
  97. data/vendor/libgit2/{src → deps}/xdiff/xutils.c +36 -8
  98. data/vendor/libgit2/{src → deps}/xdiff/xutils.h +2 -1
  99. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  100. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  101. data/vendor/libgit2/deps/zlib/adler32.c +7 -22
  102. data/vendor/libgit2/deps/zlib/crc32.c +931 -317
  103. data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
  104. data/vendor/libgit2/deps/zlib/deflate.c +428 -453
  105. data/vendor/libgit2/deps/zlib/deflate.h +51 -23
  106. data/vendor/libgit2/deps/zlib/gzguts.h +15 -19
  107. data/vendor/libgit2/deps/zlib/infback.c +19 -31
  108. data/vendor/libgit2/deps/zlib/inffast.c +15 -18
  109. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  110. data/vendor/libgit2/deps/zlib/inflate.c +75 -110
  111. data/vendor/libgit2/deps/zlib/inflate.h +3 -2
  112. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  113. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  114. data/vendor/libgit2/deps/zlib/trees.c +294 -380
  115. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  116. data/vendor/libgit2/deps/zlib/zlib.h +310 -284
  117. data/vendor/libgit2/deps/zlib/zutil.c +20 -46
  118. data/vendor/libgit2/deps/zlib/zutil.h +24 -41
  119. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  120. data/vendor/libgit2/include/git2/apply.h +43 -8
  121. data/vendor/libgit2/include/git2/attr.h +28 -6
  122. data/vendor/libgit2/include/git2/blame.h +137 -29
  123. data/vendor/libgit2/include/git2/blob.h +85 -29
  124. data/vendor/libgit2/include/git2/branch.h +25 -16
  125. data/vendor/libgit2/include/git2/buffer.h +24 -82
  126. data/vendor/libgit2/include/git2/cert.h +4 -3
  127. data/vendor/libgit2/include/git2/checkout.h +88 -34
  128. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  129. data/vendor/libgit2/include/git2/clone.h +28 -12
  130. data/vendor/libgit2/include/git2/commit.h +134 -3
  131. data/vendor/libgit2/include/git2/common.h +172 -59
  132. data/vendor/libgit2/include/git2/config.h +118 -32
  133. data/vendor/libgit2/include/git2/credential.h +32 -3
  134. data/vendor/libgit2/include/git2/credential_helpers.h +2 -0
  135. data/vendor/libgit2/include/git2/deprecated.h +141 -3
  136. data/vendor/libgit2/include/git2/describe.h +20 -3
  137. data/vendor/libgit2/include/git2/diff.h +95 -19
  138. data/vendor/libgit2/include/git2/email.h +10 -30
  139. data/vendor/libgit2/include/git2/errors.h +51 -61
  140. data/vendor/libgit2/include/git2/experimental.h +20 -0
  141. data/vendor/libgit2/include/git2/filter.h +21 -9
  142. data/vendor/libgit2/include/git2/global.h +8 -1
  143. data/vendor/libgit2/include/git2/graph.h +4 -2
  144. data/vendor/libgit2/include/git2/ignore.h +11 -1
  145. data/vendor/libgit2/include/git2/index.h +111 -11
  146. data/vendor/libgit2/include/git2/indexer.h +67 -2
  147. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  148. data/vendor/libgit2/include/git2/merge.h +70 -5
  149. data/vendor/libgit2/include/git2/message.h +4 -2
  150. data/vendor/libgit2/include/git2/net.h +3 -1
  151. data/vendor/libgit2/include/git2/notes.h +9 -6
  152. data/vendor/libgit2/include/git2/object.h +57 -7
  153. data/vendor/libgit2/include/git2/odb.h +156 -33
  154. data/vendor/libgit2/include/git2/odb_backend.h +132 -16
  155. data/vendor/libgit2/include/git2/oid.h +116 -17
  156. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  157. data/vendor/libgit2/include/git2/pack.h +37 -9
  158. data/vendor/libgit2/include/git2/patch.h +10 -3
  159. data/vendor/libgit2/include/git2/pathspec.h +10 -1
  160. data/vendor/libgit2/include/git2/proxy.h +11 -1
  161. data/vendor/libgit2/include/git2/rebase.h +18 -7
  162. data/vendor/libgit2/include/git2/refdb.h +5 -2
  163. data/vendor/libgit2/include/git2/reflog.h +4 -3
  164. data/vendor/libgit2/include/git2/refs.h +11 -8
  165. data/vendor/libgit2/include/git2/refspec.h +14 -4
  166. data/vendor/libgit2/include/git2/remote.h +295 -54
  167. data/vendor/libgit2/include/git2/repository.h +95 -25
  168. data/vendor/libgit2/include/git2/reset.h +18 -5
  169. data/vendor/libgit2/include/git2/revert.h +9 -4
  170. data/vendor/libgit2/include/git2/revparse.h +4 -4
  171. data/vendor/libgit2/include/git2/revwalk.h +7 -3
  172. data/vendor/libgit2/include/git2/signature.h +47 -2
  173. data/vendor/libgit2/include/git2/stash.h +78 -10
  174. data/vendor/libgit2/include/git2/status.h +24 -11
  175. data/vendor/libgit2/include/git2/stdint.h +87 -85
  176. data/vendor/libgit2/include/git2/strarray.h +2 -16
  177. data/vendor/libgit2/include/git2/submodule.h +27 -11
  178. data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
  179. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  180. data/vendor/libgit2/include/git2/sys/commit_graph.h +110 -59
  181. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  182. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  183. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  184. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  185. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  186. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  187. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  188. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  189. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  190. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  191. data/vendor/libgit2/include/git2/sys/midx.h +47 -4
  192. data/vendor/libgit2/include/git2/sys/odb_backend.h +10 -9
  193. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  194. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  195. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  196. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  197. data/vendor/libgit2/include/git2/sys/remote.h +53 -0
  198. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  199. data/vendor/libgit2/include/git2/sys/stream.h +26 -3
  200. data/vendor/libgit2/include/git2/sys/transport.h +87 -41
  201. data/vendor/libgit2/include/git2/tag.h +4 -1
  202. data/vendor/libgit2/include/git2/trace.h +9 -3
  203. data/vendor/libgit2/include/git2/transaction.h +3 -2
  204. data/vendor/libgit2/include/git2/transport.h +11 -3
  205. data/vendor/libgit2/include/git2/tree.h +20 -8
  206. data/vendor/libgit2/include/git2/types.h +26 -10
  207. data/vendor/libgit2/include/git2/version.h +63 -6
  208. data/vendor/libgit2/include/git2/worktree.h +30 -8
  209. data/vendor/libgit2/include/git2.h +1 -0
  210. data/vendor/libgit2/src/CMakeLists.txt +203 -420
  211. data/vendor/libgit2/src/README.md +12 -0
  212. data/vendor/libgit2/src/cli/CMakeLists.txt +56 -0
  213. data/vendor/libgit2/src/cli/README.md +26 -0
  214. data/vendor/libgit2/src/{branch.h → cli/cmd.c} +10 -8
  215. data/vendor/libgit2/src/cli/cmd.h +37 -0
  216. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  217. data/vendor/libgit2/src/cli/cmd_cat_file.c +202 -0
  218. data/vendor/libgit2/src/cli/cmd_clone.c +190 -0
  219. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  220. data/vendor/libgit2/src/cli/cmd_hash_object.c +152 -0
  221. data/vendor/libgit2/src/cli/cmd_help.c +85 -0
  222. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  223. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  224. data/vendor/libgit2/src/cli/common.c +168 -0
  225. data/vendor/libgit2/src/cli/common.h +63 -0
  226. data/vendor/libgit2/src/cli/error.h +51 -0
  227. data/vendor/libgit2/src/cli/main.c +134 -0
  228. data/vendor/libgit2/src/cli/opt.c +695 -0
  229. data/vendor/libgit2/src/cli/opt.h +367 -0
  230. data/vendor/libgit2/src/cli/opt_usage.c +263 -0
  231. data/vendor/libgit2/src/cli/opt_usage.h +40 -0
  232. data/vendor/libgit2/src/cli/progress.c +395 -0
  233. data/vendor/libgit2/src/cli/progress.h +129 -0
  234. data/vendor/libgit2/src/cli/sighandler.h +20 -0
  235. data/vendor/libgit2/src/cli/unix/sighandler.c +37 -0
  236. data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
  237. data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
  238. data/vendor/libgit2/src/libgit2/CMakeLists.txt +140 -0
  239. data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +2 -2
  240. data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
  241. data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +32 -34
  242. data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
  243. data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +48 -31
  244. data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +25 -20
  245. data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +6 -4
  246. data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +87 -46
  247. data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +5 -9
  248. data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +152 -57
  249. data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +1 -0
  250. data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -2
  251. data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
  252. data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
  253. data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
  254. data/vendor/libgit2/src/libgit2/branch.h +31 -0
  255. data/vendor/libgit2/src/libgit2/buf.c +126 -0
  256. data/vendor/libgit2/src/libgit2/buf.h +50 -0
  257. data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +22 -17
  258. data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +7 -9
  259. data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +107 -91
  260. data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -2
  261. data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +14 -15
  262. data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +254 -203
  263. data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +4 -1
  264. data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +296 -77
  265. data/vendor/libgit2/src/libgit2/commit.h +87 -0
  266. data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +246 -135
  267. data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +33 -8
  268. data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +17 -7
  269. data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +1 -0
  270. data/vendor/libgit2/src/libgit2/common.h +55 -0
  271. data/vendor/libgit2/src/{config.c → libgit2/config.c} +490 -360
  272. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  273. data/vendor/libgit2/src/{config.h → libgit2/config.h} +24 -6
  274. data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +8 -10
  275. data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +4 -5
  276. data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +212 -183
  277. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  278. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  279. data/vendor/libgit2/src/libgit2/config_mem.c +374 -0
  280. data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +37 -32
  281. data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +24 -31
  282. data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
  283. data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +62 -51
  284. data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +44 -14
  285. data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +8 -10
  286. data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +46 -55
  287. data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +5 -5
  288. data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +45 -27
  289. data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +70 -20
  290. data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
  291. data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +22 -6
  292. data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +192 -105
  293. data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
  294. data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
  295. data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +49 -16
  296. data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
  297. data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +1 -1
  298. data/vendor/libgit2/src/{email.c → libgit2/email.c} +58 -40
  299. data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
  300. data/vendor/libgit2/src/{transports/ssh.h → libgit2/experimental.h.in} +3 -4
  301. data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +105 -30
  302. data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -3
  303. data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +30 -28
  304. data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +132 -58
  305. data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
  306. data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +3 -3
  307. data/vendor/libgit2/src/libgit2/grafts.c +270 -0
  308. data/vendor/libgit2/src/libgit2/grafts.h +35 -0
  309. data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +1 -1
  310. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  311. data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
  312. data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +44 -39
  313. data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
  314. data/vendor/libgit2/src/{index.c → libgit2/index.c} +460 -276
  315. data/vendor/libgit2/src/{index.h → libgit2/index.h} +21 -5
  316. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  317. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  318. data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +208 -124
  319. data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +102 -71
  320. data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +8 -5
  321. data/vendor/libgit2/src/libgit2/libgit2.c +268 -0
  322. data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +39 -37
  323. data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +83 -73
  324. data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
  325. data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +4 -4
  326. data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -5
  327. data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
  328. data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +174 -112
  329. data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +17 -6
  330. data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +53 -57
  331. data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +9 -2
  332. data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +29 -37
  333. data/vendor/libgit2/src/{object.c → libgit2/object.c} +166 -35
  334. data/vendor/libgit2/src/{object.h → libgit2/object.h} +17 -2
  335. data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +261 -88
  336. data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
  337. data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
  338. data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +67 -22
  339. data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +162 -89
  340. data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +171 -92
  341. data/vendor/libgit2/src/libgit2/oid.h +284 -0
  342. data/vendor/libgit2/src/libgit2/oidarray.c +89 -0
  343. data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +5 -1
  344. data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +126 -66
  345. data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +28 -12
  346. data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +146 -111
  347. data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +45 -25
  348. data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +8 -4
  349. data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +1 -1
  350. data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
  351. data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +8 -1
  352. data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +51 -16
  353. data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
  354. data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +42 -34
  355. data/vendor/libgit2/src/libgit2/path.c +375 -0
  356. data/vendor/libgit2/src/libgit2/path.h +68 -0
  357. data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +7 -7
  358. data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
  359. data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
  360. data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
  361. data/vendor/libgit2/src/{push.c → libgit2/push.c} +116 -60
  362. data/vendor/libgit2/src/{push.h → libgit2/push.h} +5 -16
  363. data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
  364. data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
  365. data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +147 -147
  366. data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +639 -254
  367. data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +8 -7
  368. data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +3 -2
  369. data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +67 -39
  370. data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +8 -3
  371. data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +60 -38
  372. data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +13 -2
  373. data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +821 -454
  374. data/vendor/libgit2/src/libgit2/remote.h +101 -0
  375. data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +1377 -594
  376. data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +43 -12
  377. data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
  378. data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +18 -22
  379. data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +76 -44
  380. data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +48 -19
  381. data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +3 -3
  382. data/vendor/libgit2/src/{libgit2.c → libgit2/settings.c} +162 -95
  383. data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +6 -2
  384. data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +144 -21
  385. data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -2
  386. data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +243 -68
  387. data/vendor/libgit2/src/{status.c → libgit2/status.c} +5 -2
  388. data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
  389. data/vendor/libgit2/src/libgit2/strarray.h +25 -0
  390. data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +62 -67
  391. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +41 -24
  392. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +2 -0
  393. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +11 -3
  394. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +6 -3
  395. data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
  396. data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
  397. data/vendor/libgit2/src/libgit2/streams/socket.c +428 -0
  398. data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +3 -1
  399. data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +79 -19
  400. data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +5 -0
  401. data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +279 -220
  402. data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +10 -11
  403. data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
  404. data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +55 -18
  405. data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +74 -43
  406. data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
  407. data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
  408. data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
  409. data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +7 -7
  410. data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +27 -21
  411. data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +4 -1
  412. data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +14 -11
  413. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
  414. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +3 -5
  415. data/vendor/libgit2/src/{transports/auth_negotiate.c → libgit2/transports/auth_gssapi.c} +44 -45
  416. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +1 -1
  417. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +1 -2
  418. data/vendor/libgit2/src/{transports/auth_ntlm.c → libgit2/transports/auth_ntlmclient.c} +22 -22
  419. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
  420. data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +1 -1
  421. data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +16 -19
  422. data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +49 -24
  423. data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -11
  424. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +188 -134
  425. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
  426. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  427. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  428. data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +159 -127
  429. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +142 -165
  430. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +56 -36
  431. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +307 -74
  432. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +297 -97
  433. data/vendor/libgit2/src/libgit2/transports/ssh.c +85 -0
  434. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  435. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  436. data/vendor/libgit2/src/{transports/ssh.c → libgit2/transports/ssh_libssh2.c} +414 -268
  437. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  438. data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +101 -75
  439. data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +30 -20
  440. data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +7 -5
  441. data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +128 -110
  442. data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +7 -6
  443. data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +160 -121
  444. data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
  445. data/vendor/libgit2/src/util/CMakeLists.txt +77 -0
  446. data/vendor/libgit2/src/{alloc.c → util/alloc.c} +69 -7
  447. data/vendor/libgit2/src/util/alloc.h +65 -0
  448. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  449. data/vendor/libgit2/src/util/allocators/debugalloc.h +17 -0
  450. data/vendor/libgit2/src/util/allocators/failalloc.c +32 -0
  451. data/vendor/libgit2/src/util/allocators/failalloc.h +17 -0
  452. data/vendor/libgit2/src/util/allocators/stdalloc.c +37 -0
  453. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
  454. data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +50 -0
  455. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
  456. data/vendor/libgit2/src/{array.h → util/array.h} +25 -19
  457. data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
  458. data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +5 -1
  459. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  460. data/vendor/libgit2/src/{date.c → util/date.c} +35 -33
  461. data/vendor/libgit2/src/util/date.h +45 -0
  462. data/vendor/libgit2/src/util/errors.c +401 -0
  463. data/vendor/libgit2/src/{errors.h → util/errors.h} +22 -19
  464. data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +35 -30
  465. data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +21 -8
  466. data/vendor/libgit2/src/{path.c → util/fs_path.c} +591 -615
  467. data/vendor/libgit2/src/{path.h → util/fs_path.h} +257 -181
  468. data/vendor/libgit2/src/{futils.c → util/futils.c} +144 -95
  469. data/vendor/libgit2/src/{futils.h → util/futils.h} +40 -18
  470. data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +33 -2
  471. data/vendor/libgit2/src/{common.h → util/git2_util.h} +26 -59
  472. data/vendor/libgit2/src/util/hash/builtin.c +53 -0
  473. data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
  474. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
  475. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
  476. data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
  477. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
  478. data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
  479. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
  480. data/vendor/libgit2/src/util/hash/openssl.c +347 -0
  481. data/vendor/libgit2/src/util/hash/openssl.h +61 -0
  482. data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
  483. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
  484. data/vendor/libgit2/src/util/hash/sha.h +73 -0
  485. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
  486. data/vendor/libgit2/src/util/hash/win32.c +549 -0
  487. data/vendor/libgit2/src/util/hash/win32.h +60 -0
  488. data/vendor/libgit2/src/util/hash.c +158 -0
  489. data/vendor/libgit2/src/util/hash.h +61 -0
  490. data/vendor/libgit2/src/util/hashmap.h +424 -0
  491. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  492. data/vendor/libgit2/src/{integer.h → util/integer.h} +3 -1
  493. data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
  494. data/vendor/libgit2/src/util/net.c +1160 -0
  495. data/vendor/libgit2/src/{net.h → util/net.h} +45 -4
  496. data/vendor/libgit2/src/{pool.c → util/pool.c} +1 -1
  497. data/vendor/libgit2/src/{pool.h → util/pool.h} +6 -1
  498. data/vendor/libgit2/src/{posix.c → util/posix.c} +57 -3
  499. data/vendor/libgit2/src/{posix.h → util/posix.h} +26 -1
  500. data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +3 -3
  501. data/vendor/libgit2/src/util/process.h +222 -0
  502. data/vendor/libgit2/src/util/rand.c +230 -0
  503. data/vendor/libgit2/src/util/rand.h +37 -0
  504. data/vendor/libgit2/src/{regexp.c → util/regexp.c} +5 -5
  505. data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
  506. data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
  507. data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
  508. data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +15 -14
  509. data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +5 -5
  510. data/vendor/libgit2/src/util/staticstr.h +66 -0
  511. data/vendor/libgit2/src/{buffer.c → util/str.c} +159 -153
  512. data/vendor/libgit2/src/util/str.h +357 -0
  513. data/vendor/libgit2/src/util/strlist.c +108 -0
  514. data/vendor/libgit2/src/util/strlist.h +36 -0
  515. data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
  516. data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
  517. data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
  518. data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
  519. data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -6
  520. data/vendor/libgit2/src/util/unix/process.c +629 -0
  521. data/vendor/libgit2/src/{unix → util/unix}/realpath.c +24 -8
  522. data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
  523. data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
  524. data/vendor/libgit2/src/{util.c → util/util.c} +24 -19
  525. data/vendor/libgit2/src/{util.h → util/util.h} +30 -81
  526. data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
  527. data/vendor/libgit2/src/{vector.c → util/vector.c} +3 -3
  528. data/vendor/libgit2/src/{vector.h → util/vector.h} +4 -4
  529. data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
  530. data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
  531. data/vendor/libgit2/src/{win32 → util/win32}/error.c +1 -1
  532. data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
  533. data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
  534. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +148 -17
  535. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
  536. data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
  537. data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +42 -35
  538. data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
  539. data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
  540. data/vendor/libgit2/src/util/win32/process.c +506 -0
  541. data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
  542. data/vendor/libgit2/src/util/win32/utf-conv.c +144 -0
  543. data/vendor/libgit2/src/util/win32/utf-conv.h +127 -0
  544. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
  545. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
  546. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
  547. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
  548. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +1 -1
  549. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
  550. data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
  551. data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
  552. metadata +431 -362
  553. data/vendor/libgit2/cmake/FindIconv.cmake +0 -45
  554. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  555. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  556. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  557. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  558. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  559. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  560. data/vendor/libgit2/src/alloc.h +0 -40
  561. data/vendor/libgit2/src/allocators/failalloc.c +0 -92
  562. data/vendor/libgit2/src/allocators/failalloc.h +0 -23
  563. data/vendor/libgit2/src/allocators/stdalloc.c +0 -150
  564. data/vendor/libgit2/src/allocators/win32_leakcheck.c +0 -118
  565. data/vendor/libgit2/src/buffer.h +0 -374
  566. data/vendor/libgit2/src/commit.h +0 -46
  567. data/vendor/libgit2/src/config_entries.c +0 -237
  568. data/vendor/libgit2/src/config_entries.h +0 -24
  569. data/vendor/libgit2/src/config_mem.c +0 -220
  570. data/vendor/libgit2/src/errors.c +0 -238
  571. data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
  572. data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
  573. data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
  574. data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
  575. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  576. data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
  577. data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
  578. data/vendor/libgit2/src/hash/sha1.h +0 -38
  579. data/vendor/libgit2/src/hash.c +0 -110
  580. data/vendor/libgit2/src/hash.h +0 -46
  581. data/vendor/libgit2/src/idxmap.c +0 -157
  582. data/vendor/libgit2/src/idxmap.h +0 -177
  583. data/vendor/libgit2/src/khash.h +0 -615
  584. data/vendor/libgit2/src/libgit2.h +0 -15
  585. data/vendor/libgit2/src/message.h +0 -17
  586. data/vendor/libgit2/src/net.c +0 -540
  587. data/vendor/libgit2/src/netops.c +0 -125
  588. data/vendor/libgit2/src/netops.h +0 -68
  589. data/vendor/libgit2/src/offmap.c +0 -101
  590. data/vendor/libgit2/src/offmap.h +0 -133
  591. data/vendor/libgit2/src/oid.h +0 -51
  592. data/vendor/libgit2/src/oidarray.c +0 -43
  593. data/vendor/libgit2/src/oidmap.c +0 -107
  594. data/vendor/libgit2/src/oidmap.h +0 -128
  595. data/vendor/libgit2/src/remote.h +0 -55
  596. data/vendor/libgit2/src/streams/socket.c +0 -239
  597. data/vendor/libgit2/src/strmap.c +0 -100
  598. data/vendor/libgit2/src/strmap.h +0 -131
  599. data/vendor/libgit2/src/sysdir.c +0 -347
  600. data/vendor/libgit2/src/threadstate.c +0 -84
  601. data/vendor/libgit2/src/threadstate.h +0 -24
  602. data/vendor/libgit2/src/win32/findfile.c +0 -230
  603. data/vendor/libgit2/src/win32/findfile.h +0 -19
  604. data/vendor/libgit2/src/win32/utf-conv.c +0 -146
  605. data/vendor/libgit2/src/win32/utf-conv.h +0 -60
  606. /data/vendor/libgit2/{src → deps}/xdiff/xemit.h +0 -0
  607. /data/vendor/libgit2/{src → deps}/xdiff/xprepare.h +0 -0
  608. /data/vendor/libgit2/{src → deps}/xdiff/xtypes.h +0 -0
  609. /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
  610. /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
  611. /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
  612. /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
  613. /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
  614. /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
  615. /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
  616. /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
  617. /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
  618. /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
  619. /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
  620. /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
  621. /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
  622. /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
  623. /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
  624. /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
  625. /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
  626. /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
  627. /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
  628. /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
  629. /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
  630. /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
  631. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
  632. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
  633. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
  634. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
  635. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
  636. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
  637. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
  638. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
  639. /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
  640. /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
  641. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
  642. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
  643. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
  644. /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
  645. /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
  646. /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
  647. /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
  648. /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
  649. /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
  650. /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
  651. /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
  652. /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
  653. /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
  654. /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
  655. /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
  656. /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
@@ -8,34 +8,47 @@
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"
14
15
 
15
- static int git_smart__recv_cb(gitno_buffer *buf)
16
+ int git_smart__recv(transport_smart *t)
16
17
  {
17
- transport_smart *t = (transport_smart *) buf->cb_data;
18
- size_t old_len, bytes_read;
19
- int error;
18
+ size_t bytes_read;
19
+ int ret;
20
20
 
21
+ GIT_ASSERT_ARG(t);
21
22
  GIT_ASSERT(t->current_stream);
22
23
 
23
- old_len = buf->offset;
24
+ if (git_staticstr_remain(&t->buffer) == 0) {
25
+ git_error_set(GIT_ERROR_NET, "out of buffer space");
26
+ return -1;
27
+ }
24
28
 
25
- if ((error = t->current_stream->read(t->current_stream, buf->data + buf->offset, buf->len - buf->offset, &bytes_read)) < 0)
26
- return error;
29
+ ret = t->current_stream->read(t->current_stream,
30
+ git_staticstr_offset(&t->buffer),
31
+ git_staticstr_remain(&t->buffer),
32
+ &bytes_read);
33
+
34
+ if (ret < 0)
35
+ return ret;
36
+
37
+ GIT_ASSERT(bytes_read <= INT_MAX);
38
+ GIT_ASSERT(bytes_read <= git_staticstr_remain(&t->buffer));
27
39
 
28
- buf->offset += bytes_read;
40
+ git_staticstr_increase(&t->buffer, bytes_read);
29
41
 
30
42
  if (t->packetsize_cb && !t->cancelled.val) {
31
- error = t->packetsize_cb(bytes_read, t->packetsize_payload);
32
- if (error) {
43
+ ret = t->packetsize_cb(bytes_read, t->packetsize_payload);
44
+
45
+ if (ret) {
33
46
  git_atomic32_set(&t->cancelled, 1);
34
47
  return GIT_EUSER;
35
48
  }
36
49
  }
37
50
 
38
- return (int)(buf->offset - old_len);
51
+ return (int)bytes_read;
39
52
  }
40
53
 
41
54
  GIT_INLINE(int) git_smart__reset_stream(transport_smart *t, bool close_subtransport)
@@ -53,104 +66,15 @@ GIT_INLINE(int) git_smart__reset_stream(transport_smart *t, bool close_subtransp
53
66
  return -1;
54
67
  }
55
68
 
56
- return 0;
57
- }
58
-
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);
69
+ git__free(t->caps.object_format);
70
+ t->caps.object_format = NULL;
67
71
 
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
+ git__free(t->caps.agent);
73
+ t->caps.agent = NULL;
72
74
 
73
75
  return 0;
74
76
  }
75
77
 
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
78
  int git_smart__update_heads(transport_smart *t, git_vector *symrefs)
155
79
  {
156
80
  size_t i;
@@ -164,20 +88,20 @@ int git_smart__update_heads(transport_smart *t, git_vector *symrefs)
164
88
 
165
89
  if (symrefs) {
166
90
  git_refspec *spec;
167
- git_buf buf = GIT_BUF_INIT;
91
+ git_str buf = GIT_STR_INIT;
168
92
  size_t j;
169
93
  int error = 0;
170
94
 
171
95
  git_vector_foreach(symrefs, j, spec) {
172
- git_buf_clear(&buf);
96
+ git_str_clear(&buf);
173
97
  if (git_refspec_src_matches(spec, ref->head.name) &&
174
- !(error = git_refspec_transform(&buf, spec, ref->head.name))) {
98
+ !(error = git_refspec__transform(&buf, spec, ref->head.name))) {
175
99
  git__free(ref->head.symref_target);
176
- ref->head.symref_target = git_buf_detach(&buf);
100
+ ref->head.symref_target = git_str_detach(&buf);
177
101
  }
178
102
  }
179
103
 
180
- git_buf_dispose(&buf);
104
+ git_str_dispose(&buf);
181
105
 
182
106
  if (error < 0)
183
107
  return error;
@@ -200,17 +124,14 @@ static void free_symrefs(git_vector *symrefs)
200
124
  git__free(spec);
201
125
  }
202
126
 
203
- git_vector_free(symrefs);
127
+ git_vector_dispose(symrefs);
204
128
  }
205
129
 
206
130
  static int git_smart__connect(
207
131
  git_transport *transport,
208
132
  const char *url,
209
- git_credential_acquire_cb cred_acquire_cb,
210
- void *cred_acquire_payload,
211
- const git_proxy_options *proxy,
212
133
  int direction,
213
- int flags)
134
+ const git_remote_connect_options *connect_opts)
214
135
  {
215
136
  transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
216
137
  git_smart_subtransport_stream *stream;
@@ -223,24 +144,19 @@ static int git_smart__connect(
223
144
  if (git_smart__reset_stream(t, true) < 0)
224
145
  return -1;
225
146
 
147
+ if (git_remote_connect_options_normalize(&t->connect_opts, t->owner->repo, connect_opts) < 0)
148
+ return -1;
149
+
226
150
  t->url = git__strdup(url);
227
151
  GIT_ERROR_CHECK_ALLOC(t->url);
228
152
 
229
- git_proxy_options_clear(&t->proxy);
230
-
231
- if (git_proxy_options_dup(&t->proxy, proxy) < 0)
232
- return -1;
233
-
234
153
  t->direction = direction;
235
- t->flags = flags;
236
- t->cred_acquire_cb = cred_acquire_cb;
237
- t->cred_acquire_payload = cred_acquire_payload;
238
154
 
239
- if (GIT_DIRECTION_FETCH == t->direction)
155
+ if (GIT_DIRECTION_FETCH == t->direction) {
240
156
  service = GIT_SERVICE_UPLOADPACK_LS;
241
- else if (GIT_DIRECTION_PUSH == t->direction)
157
+ } else if (GIT_DIRECTION_PUSH == t->direction) {
242
158
  service = GIT_SERVICE_RECEIVEPACK_LS;
243
- else {
159
+ } else {
244
160
  git_error_set(GIT_ERROR_NET, "invalid direction");
245
161
  return -1;
246
162
  }
@@ -251,8 +167,6 @@ static int git_smart__connect(
251
167
  /* Save off the current stream (i.e. socket) that we are working with */
252
168
  t->current_stream = stream;
253
169
 
254
- gitno_buffer_setup_callback(&t->buffer, t->buffer_data, sizeof(t->buffer_data), git_smart__recv_cb, t);
255
-
256
170
  /* 2 flushes for RPC; 1 for stateful */
257
171
  if ((error = git_smart__store_refs(t, t->rpc ? 2 : 1)) < 0)
258
172
  return error;
@@ -315,6 +229,62 @@ cleanup:
315
229
  return error;
316
230
  }
317
231
 
232
+ static int git_smart__set_connect_opts(
233
+ git_transport *transport,
234
+ const git_remote_connect_options *opts)
235
+ {
236
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
237
+
238
+ if (!t->connected) {
239
+ git_error_set(GIT_ERROR_NET, "cannot reconfigure a transport that is not connected");
240
+ return -1;
241
+ }
242
+
243
+ return git_remote_connect_options_normalize(&t->connect_opts, t->owner->repo, opts);
244
+ }
245
+
246
+ static int git_smart__capabilities(unsigned int *capabilities, git_transport *transport)
247
+ {
248
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
249
+
250
+ *capabilities = 0;
251
+
252
+ if (t->caps.push_options)
253
+ *capabilities |= GIT_REMOTE_CAPABILITY_PUSH_OPTIONS;
254
+
255
+ if (t->caps.want_tip_sha1)
256
+ *capabilities |= GIT_REMOTE_CAPABILITY_TIP_OID;
257
+
258
+ if (t->caps.want_reachable_sha1)
259
+ *capabilities |= GIT_REMOTE_CAPABILITY_REACHABLE_OID;
260
+
261
+ return 0;
262
+ }
263
+
264
+ #ifdef GIT_EXPERIMENTAL_SHA256
265
+ static int git_smart__oid_type(git_oid_t *out, git_transport *transport)
266
+ {
267
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
268
+
269
+ *out = 0;
270
+
271
+ if (t->caps.object_format == NULL) {
272
+ *out = GIT_OID_DEFAULT;
273
+ } else {
274
+ *out = git_oid_type_fromstr(t->caps.object_format);
275
+
276
+ if (!*out) {
277
+ git_error_set(GIT_ERROR_INVALID,
278
+ "unknown object format '%s'",
279
+ t->caps.object_format);
280
+ return -1;
281
+ }
282
+ }
283
+
284
+ return 0;
285
+ }
286
+ #endif
287
+
318
288
  static int git_smart__ls(const git_remote_head ***out, size_t *size, git_transport *transport)
319
289
  {
320
290
  transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
@@ -356,8 +326,6 @@ int git_smart__negotiation_step(git_transport *transport, void *data, size_t len
356
326
  if ((error = stream->write(stream, (const char *)data, len)) < 0)
357
327
  return error;
358
328
 
359
- gitno_buffer_setup_callback(&t->buffer, t->buffer_data, sizeof(t->buffer_data), git_smart__recv_cb, t);
360
-
361
329
  return 0;
362
330
  }
363
331
 
@@ -382,8 +350,6 @@ int git_smart__get_push_stream(transport_smart *t, git_smart_subtransport_stream
382
350
  /* Save off the current stream (i.e. socket) that we are working with */
383
351
  t->current_stream = *stream;
384
352
 
385
- gitno_buffer_setup_callback(&t->buffer, t->buffer_data, sizeof(t->buffer_data), git_smart__recv_cb, t);
386
-
387
353
  return 0;
388
354
  }
389
355
 
@@ -401,32 +367,33 @@ static int git_smart__is_connected(git_transport *transport)
401
367
  return t->connected;
402
368
  }
403
369
 
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
370
  static int git_smart__close(git_transport *transport)
414
371
  {
415
372
  transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
416
373
  git_vector *common = &t->common;
417
374
  unsigned int i;
418
375
  git_pkt *p;
376
+ git_smart_service_t service;
419
377
  int ret;
420
378
  git_smart_subtransport_stream *stream;
421
379
  const char flush[] = "0000";
422
380
 
381
+ if (t->direction == GIT_DIRECTION_FETCH) {
382
+ service = GIT_SERVICE_UPLOADPACK;
383
+ } else if (t->direction == GIT_DIRECTION_PUSH) {
384
+ service = GIT_SERVICE_RECEIVEPACK;
385
+ } else {
386
+ git_error_set(GIT_ERROR_NET, "invalid direction");
387
+ return -1;
388
+ }
389
+
423
390
  /*
424
391
  * If we're still connected at this point and not using RPC,
425
392
  * we should say goodbye by sending a flush, or git-daemon
426
393
  * will complain that we disconnected unexpectedly.
427
394
  */
428
395
  if (t->connected && !t->rpc &&
429
- !t->wrapped->action(&stream, t->wrapped, t->url, GIT_SERVICE_UPLOADPACK)) {
396
+ !t->wrapped->action(&stream, t->wrapped, t->url, service)) {
430
397
  t->current_stream->write(t->current_stream, flush, 4);
431
398
  }
432
399
 
@@ -435,7 +402,7 @@ static int git_smart__close(git_transport *transport)
435
402
  git_vector_foreach(common, i, p)
436
403
  git_pkt_free(p);
437
404
 
438
- git_vector_free(common);
405
+ git_vector_dispose(common);
439
406
 
440
407
  if (t->url) {
441
408
  git__free(t->url);
@@ -460,15 +427,18 @@ static void git_smart__free(git_transport *transport)
460
427
  /* Free the subtransport */
461
428
  t->wrapped->free(t->wrapped);
462
429
 
463
- git_vector_free(&t->heads);
430
+ git_vector_dispose(&t->heads);
464
431
  git_vector_foreach(refs, i, p)
465
432
  git_pkt_free(p);
466
433
 
467
- git_vector_free(refs);
468
- git__free((char *)t->proxy.url);
434
+ git_vector_dispose(refs);
435
+
436
+ git_remote_connect_options_dispose(&t->connect_opts);
469
437
 
470
- git_strarray_dispose(&t->custom_headers);
438
+ git_array_dispose(t->shallow_roots);
471
439
 
440
+ git__free(t->caps.object_format);
441
+ git__free(t->caps.agent);
472
442
  git__free(t);
473
443
  }
474
444
 
@@ -482,34 +452,42 @@ static int ref_name_cmp(const void *a, const void *b)
482
452
  int git_transport_smart_certificate_check(git_transport *transport, git_cert *cert, int valid, const char *hostname)
483
453
  {
484
454
  transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
455
+ git_remote_connect_options *connect_opts = &t->connect_opts;
485
456
 
486
457
  GIT_ASSERT_ARG(transport);
487
458
  GIT_ASSERT_ARG(cert);
488
459
  GIT_ASSERT_ARG(hostname);
489
460
 
490
- if (!t->certificate_check_cb)
461
+ if (!connect_opts->callbacks.certificate_check)
491
462
  return GIT_PASSTHROUGH;
492
463
 
493
- return t->certificate_check_cb(cert, valid, hostname, t->message_cb_payload);
464
+ return connect_opts->callbacks.certificate_check(cert, valid, hostname, connect_opts->callbacks.payload);
494
465
  }
495
466
 
496
467
  int git_transport_smart_credentials(git_credential **out, git_transport *transport, const char *user, int methods)
497
468
  {
498
469
  transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
470
+ git_remote_connect_options *connect_opts = &t->connect_opts;
499
471
 
500
472
  GIT_ASSERT_ARG(out);
501
473
  GIT_ASSERT_ARG(transport);
502
474
 
503
- if (!t->cred_acquire_cb)
475
+ if (!connect_opts->callbacks.credentials)
504
476
  return GIT_PASSTHROUGH;
505
477
 
506
- return t->cred_acquire_cb(out, t->url, user, methods, t->cred_acquire_payload);
478
+ return connect_opts->callbacks.credentials(out, t->url, user, methods, connect_opts->callbacks.payload);
507
479
  }
508
480
 
509
- int git_transport_smart_proxy_options(git_proxy_options *out, git_transport *transport)
481
+ int git_transport_remote_connect_options(
482
+ git_remote_connect_options *out,
483
+ git_transport *transport)
510
484
  {
511
485
  transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
512
- return git_proxy_options_dup(out, &t->proxy);
486
+
487
+ GIT_ASSERT_ARG(out);
488
+ GIT_ASSERT_ARG(transport);
489
+
490
+ return git_remote_connect_options_dup(out, &t->connect_opts);
513
491
  }
514
492
 
515
493
  int git_transport_smart(git_transport **out, git_remote *owner, void *param)
@@ -524,36 +502,35 @@ int git_transport_smart(git_transport **out, git_remote *owner, void *param)
524
502
  GIT_ERROR_CHECK_ALLOC(t);
525
503
 
526
504
  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
505
  t->parent.connect = git_smart__connect;
506
+ t->parent.set_connect_opts = git_smart__set_connect_opts;
507
+ t->parent.capabilities = git_smart__capabilities;
508
+ #ifdef GIT_EXPERIMENTAL_SHA256
509
+ t->parent.oid_type = git_smart__oid_type;
510
+ #endif
530
511
  t->parent.close = git_smart__close;
531
512
  t->parent.free = git_smart__free;
532
513
  t->parent.negotiate_fetch = git_smart__negotiate_fetch;
514
+ t->parent.shallow_roots = git_smart__shallow_roots;
533
515
  t->parent.download_pack = git_smart__download_pack;
534
516
  t->parent.push = git_smart__push;
535
517
  t->parent.ls = git_smart__ls;
536
518
  t->parent.is_connected = git_smart__is_connected;
537
- t->parent.read_flags = git_smart__read_flags;
538
519
  t->parent.cancel = git_smart__cancel;
539
520
 
540
521
  t->owner = owner;
541
522
  t->rpc = definition->rpc;
542
523
 
543
- if (git_vector_init(&t->refs, 16, ref_name_cmp) < 0) {
524
+ if (git_vector_init(&t->refs, 16, ref_name_cmp) < 0 ||
525
+ git_vector_init(&t->heads, 16, ref_name_cmp) < 0 ||
526
+ definition->callback(&t->wrapped, &t->parent, definition->param) < 0) {
527
+ git_vector_dispose(&t->refs);
528
+ git_vector_dispose(&t->heads);
544
529
  git__free(t);
545
530
  return -1;
546
531
  }
547
532
 
548
- if (git_vector_init(&t->heads, 16, ref_name_cmp) < 0) {
549
- git__free(t);
550
- return -1;
551
- }
552
-
553
- if (definition->callback(&t->wrapped, &t->parent, definition->param) < 0) {
554
- git__free(t);
555
- return -1;
556
- }
533
+ git_staticstr_init(&t->buffer, GIT_SMART_BUFFER_SIZE);
557
534
 
558
535
  *out = (git_transport *) t;
559
536
  return 0;
@@ -11,11 +11,14 @@
11
11
 
12
12
  #include "git2.h"
13
13
  #include "vector.h"
14
- #include "netops.h"
15
- #include "buffer.h"
16
14
  #include "push.h"
15
+ #include "str.h"
16
+ #include "oidarray.h"
17
+ #include "staticstr.h"
17
18
  #include "git2/sys/transport.h"
18
19
 
20
+ #define GIT_SMART_BUFFER_SIZE 65536
21
+
19
22
  #define GIT_SIDE_BAND_DATA 1
20
23
  #define GIT_SIDE_BAND_PROGRESS 2
21
24
  #define GIT_SIDE_BAND_ERROR 3
@@ -30,6 +33,12 @@
30
33
  #define GIT_CAP_REPORT_STATUS "report-status"
31
34
  #define GIT_CAP_THIN_PACK "thin-pack"
32
35
  #define GIT_CAP_SYMREF "symref"
36
+ #define GIT_CAP_WANT_TIP_SHA1 "allow-tip-sha1-in-want"
37
+ #define GIT_CAP_WANT_REACHABLE_SHA1 "allow-reachable-sha1-in-want"
38
+ #define GIT_CAP_SHALLOW "shallow"
39
+ #define GIT_CAP_OBJECT_FORMAT "object-format="
40
+ #define GIT_CAP_AGENT "agent="
41
+ #define GIT_CAP_PUSH_OPTIONS "push-options"
33
42
 
34
43
  extern bool git_smart__ofs_delta_enabled;
35
44
 
@@ -47,6 +56,8 @@ typedef enum {
47
56
  GIT_PKT_OK,
48
57
  GIT_PKT_NG,
49
58
  GIT_PKT_UNPACK,
59
+ GIT_PKT_SHALLOW,
60
+ GIT_PKT_UNSHALLOW
50
61
  } git_pkt_type;
51
62
 
52
63
  /* Used for multi_ack and multi_ack_detailed */
@@ -118,17 +129,28 @@ typedef struct {
118
129
  int unpack_ok;
119
130
  } git_pkt_unpack;
120
131
 
132
+ typedef struct {
133
+ git_pkt_type type;
134
+ git_oid oid;
135
+ } git_pkt_shallow;
136
+
121
137
  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;
138
+ unsigned int common:1,
139
+ ofs_delta:1,
140
+ multi_ack:1,
141
+ multi_ack_detailed:1,
142
+ side_band:1,
143
+ side_band_64k:1,
144
+ include_tag:1,
145
+ delete_refs:1,
146
+ report_status:1,
147
+ thin_pack:1,
148
+ want_tip_sha1:1,
149
+ want_reachable_sha1:1,
150
+ shallow:1,
151
+ push_options:1;
152
+ char *object_format;
153
+ char *agent;
132
154
  } transport_smart_caps;
133
155
 
134
156
  typedef int (*packetsize_cb)(size_t received, void *payload);
@@ -137,63 +159,61 @@ typedef struct {
137
159
  git_transport parent;
138
160
  git_remote *owner;
139
161
  char *url;
140
- git_credential_acquire_cb cred_acquire_cb;
141
- void *cred_acquire_payload;
142
- git_proxy_options proxy;
162
+ git_remote_connect_options connect_opts;
143
163
  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
164
  git_smart_subtransport *wrapped;
151
165
  git_smart_subtransport_stream *current_stream;
152
166
  transport_smart_caps caps;
153
167
  git_vector refs;
154
168
  git_vector heads;
155
169
  git_vector common;
170
+ git_array_oid_t shallow_roots;
156
171
  git_atomic32 cancelled;
157
172
  packetsize_cb packetsize_cb;
158
173
  void *packetsize_payload;
159
174
  unsigned rpc : 1,
160
- have_refs : 1,
161
- connected : 1;
162
- gitno_buffer buffer;
163
- char buffer_data[65536];
175
+ have_refs : 1,
176
+ connected : 1;
177
+ git_staticstr_with_size(GIT_SMART_BUFFER_SIZE) buffer;
164
178
  } transport_smart;
165
179
 
166
180
  /* smart_protocol.c */
167
181
  int git_smart__store_refs(transport_smart *t, int flushes);
168
182
  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);
183
+ int git_smart__push(git_transport *transport, git_push *push);
170
184
 
171
185
  int git_smart__negotiate_fetch(
172
186
  git_transport *transport,
173
187
  git_repository *repo,
174
- const git_remote_head * const *refs,
175
- size_t count);
188
+ const git_fetch_negotiation *wants);
189
+
190
+ int git_smart__shallow_roots(git_oidarray *out, git_transport *transport);
176
191
 
177
192
  int git_smart__download_pack(
178
193
  git_transport *transport,
179
194
  git_repository *repo,
180
- git_indexer_progress *stats,
181
- git_indexer_progress_cb progress_cb,
182
- void *progress_payload);
195
+ git_indexer_progress *stats);
183
196
 
184
197
  /* smart.c */
198
+ int git_smart__recv(transport_smart *t);
199
+
185
200
  int git_smart__negotiation_step(git_transport *transport, void *data, size_t len);
186
201
  int git_smart__get_push_stream(transport_smart *t, git_smart_subtransport_stream **out);
187
202
 
188
203
  int git_smart__update_heads(transport_smart *t, git_vector *symrefs);
189
204
 
190
205
  /* smart_pkt.c */
191
- 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);
206
+ typedef struct {
207
+ git_oid_t oid_type;
208
+ unsigned int seen_capabilities: 1;
209
+ } git_pkt_parse_data;
210
+
211
+ int git_pkt_parse_line(git_pkt **head, const char **endptr, const char *line, size_t linelen, git_pkt_parse_data *data);
212
+ int git_pkt_buffer_flush(git_str *buf);
193
213
  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);
214
+ int git_pkt_buffer_done(git_str *buf);
215
+ int git_pkt_buffer_wants(const git_fetch_negotiation *wants, transport_smart_caps *caps, git_str *buf);
216
+ int git_pkt_buffer_have(git_oid *oid, git_str *buf);
197
217
  void git_pkt_free(git_pkt *pkt);
198
218
 
199
219
  #endif