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
@@ -27,11 +27,11 @@ bool git_smart__ofs_delta_enabled = true;
27
27
 
28
28
  int git_smart__store_refs(transport_smart *t, int flushes)
29
29
  {
30
- gitno_buffer *buf = &t->buffer;
31
30
  git_vector *refs = &t->refs;
32
31
  int error, flush = 0, recvd;
33
32
  const char *line_end = NULL;
34
33
  git_pkt *pkt = NULL;
34
+ git_pkt_parse_data pkt_parse_data = { 0 };
35
35
  size_t i;
36
36
 
37
37
  /* Clear existing refs in case git_remote_connect() is called again
@@ -44,8 +44,10 @@ int git_smart__store_refs(transport_smart *t, int flushes)
44
44
  pkt = NULL;
45
45
 
46
46
  do {
47
- if (buf->offset > 0)
48
- error = git_pkt_parse_line(&pkt, &line_end, buf->data, buf->offset);
47
+ if (t->buffer.len > 0)
48
+ error = git_pkt_parse_line(&pkt, &line_end,
49
+ t->buffer.data, t->buffer.len,
50
+ &pkt_parse_data);
49
51
  else
50
52
  error = GIT_EBUFS;
51
53
 
@@ -53,19 +55,18 @@ int git_smart__store_refs(transport_smart *t, int flushes)
53
55
  return error;
54
56
 
55
57
  if (error == GIT_EBUFS) {
56
- if ((recvd = gitno_recv(buf)) < 0)
58
+ if ((recvd = git_smart__recv(t)) < 0)
57
59
  return recvd;
58
60
 
59
61
  if (recvd == 0) {
60
- git_error_set(GIT_ERROR_NET, "early EOF");
62
+ git_error_set(GIT_ERROR_NET, "could not read refs from remote repository");
61
63
  return GIT_EEOF;
62
64
  }
63
65
 
64
66
  continue;
65
67
  }
66
68
 
67
- if (gitno_consume(buf, line_end) < 0)
68
- return -1;
69
+ git_staticstr_consume(&t->buffer, line_end);
69
70
 
70
71
  if (pkt->type == GIT_PKT_ERR) {
71
72
  git_error_set(GIT_ERROR_NET, "remote error: %s", ((git_pkt_err *)pkt)->error);
@@ -89,7 +90,7 @@ static int append_symref(const char **out, git_vector *symrefs, const char *ptr)
89
90
  {
90
91
  int error;
91
92
  const char *end;
92
- git_buf buf = GIT_BUF_INIT;
93
+ git_str buf = GIT_STR_INIT;
93
94
  git_refspec *mapping = NULL;
94
95
 
95
96
  ptr += strlen(GIT_CAP_SYMREF);
@@ -101,15 +102,15 @@ static int append_symref(const char **out, git_vector *symrefs, const char *ptr)
101
102
  !(end = strchr(ptr, '\0')))
102
103
  goto on_invalid;
103
104
 
104
- if ((error = git_buf_put(&buf, ptr, end - ptr)) < 0)
105
+ if ((error = git_str_put(&buf, ptr, end - ptr)) < 0)
105
106
  return error;
106
107
 
107
108
  /* symref mapping has refspec format */
108
109
  mapping = git__calloc(1, sizeof(git_refspec));
109
110
  GIT_ERROR_CHECK_ALLOC(mapping);
110
111
 
111
- error = git_refspec__parse(mapping, git_buf_cstr(&buf), true);
112
- git_buf_dispose(&buf);
112
+ error = git_refspec__parse(mapping, git_str_cstr(&buf), true);
113
+ git_str_dispose(&buf);
113
114
 
114
115
  /* if the error isn't OOM, then it's a parse error; let's use a nicer message */
115
116
  if (error < 0) {
@@ -133,11 +134,14 @@ on_invalid:
133
134
  return -1;
134
135
  }
135
136
 
136
- int git_smart__detect_caps(git_pkt_ref *pkt, transport_smart_caps *caps, git_vector *symrefs)
137
+ int git_smart__detect_caps(
138
+ git_pkt_ref *pkt,
139
+ transport_smart_caps *caps,
140
+ git_vector *symrefs)
137
141
  {
138
- const char *ptr;
142
+ const char *ptr, *start;
139
143
 
140
- /* No refs or capabilites, odd but not a problem */
144
+ /* No refs or capabilities, odd but not a problem */
141
145
  if (pkt == NULL || pkt->capabilities == NULL)
142
146
  return GIT_ENOTFOUND;
143
147
 
@@ -190,6 +194,12 @@ int git_smart__detect_caps(git_pkt_ref *pkt, transport_smart_caps *caps, git_vec
190
194
  continue;
191
195
  }
192
196
 
197
+ if (!git__prefixcmp(ptr, GIT_CAP_PUSH_OPTIONS)) {
198
+ caps->common = caps->push_options = 1;
199
+ ptr += strlen(GIT_CAP_PUSH_OPTIONS);
200
+ continue;
201
+ }
202
+
193
203
  if (!git__prefixcmp(ptr, GIT_CAP_THIN_PACK)) {
194
204
  caps->common = caps->thin_pack = 1;
195
205
  ptr += strlen(GIT_CAP_THIN_PACK);
@@ -205,6 +215,46 @@ int git_smart__detect_caps(git_pkt_ref *pkt, transport_smart_caps *caps, git_vec
205
215
  continue;
206
216
  }
207
217
 
218
+ if (!git__prefixcmp(ptr, GIT_CAP_WANT_TIP_SHA1)) {
219
+ caps->common = caps->want_tip_sha1 = 1;
220
+ ptr += strlen(GIT_CAP_WANT_TIP_SHA1);
221
+ continue;
222
+ }
223
+
224
+ if (!git__prefixcmp(ptr, GIT_CAP_WANT_REACHABLE_SHA1)) {
225
+ caps->common = caps->want_reachable_sha1 = 1;
226
+ ptr += strlen(GIT_CAP_WANT_REACHABLE_SHA1);
227
+ continue;
228
+ }
229
+
230
+ if (!git__prefixcmp(ptr, GIT_CAP_OBJECT_FORMAT)) {
231
+ ptr += strlen(GIT_CAP_OBJECT_FORMAT);
232
+
233
+ start = ptr;
234
+ ptr = strchr(ptr, ' ');
235
+
236
+ if ((caps->object_format = git__strndup(start, (ptr - start))) == NULL)
237
+ return -1;
238
+ continue;
239
+ }
240
+
241
+ if (!git__prefixcmp(ptr, GIT_CAP_AGENT)) {
242
+ ptr += strlen(GIT_CAP_AGENT);
243
+
244
+ start = ptr;
245
+ ptr = strchr(ptr, ' ');
246
+
247
+ if ((caps->agent = git__strndup(start, (ptr - start))) == NULL)
248
+ return -1;
249
+ continue;
250
+ }
251
+
252
+ if (!git__prefixcmp(ptr, GIT_CAP_SHALLOW)) {
253
+ caps->common = caps->shallow = 1;
254
+ ptr += strlen(GIT_CAP_SHALLOW);
255
+ continue;
256
+ }
257
+
208
258
  /* We don't know this capability, so skip it */
209
259
  ptr = strchr(ptr, ' ');
210
260
  }
@@ -212,15 +262,23 @@ int git_smart__detect_caps(git_pkt_ref *pkt, transport_smart_caps *caps, git_vec
212
262
  return 0;
213
263
  }
214
264
 
215
- static int recv_pkt(git_pkt **out_pkt, git_pkt_type *out_type, gitno_buffer *buf)
265
+ static int recv_pkt(
266
+ git_pkt **out_pkt,
267
+ git_pkt_type *out_type,
268
+ transport_smart *t)
216
269
  {
217
- const char *ptr = buf->data, *line_end = ptr;
270
+ const char *ptr = t->buffer.data, *line_end = ptr;
218
271
  git_pkt *pkt = NULL;
272
+ git_pkt_parse_data pkt_parse_data = { 0 };
219
273
  int error = 0, ret;
220
274
 
275
+ pkt_parse_data.oid_type = t->owner->repo->oid_type;
276
+ pkt_parse_data.seen_capabilities = 1;
277
+
221
278
  do {
222
- if (buf->offset > 0)
223
- error = git_pkt_parse_line(&pkt, &line_end, ptr, buf->offset);
279
+ if (t->buffer.len > 0)
280
+ error = git_pkt_parse_line(&pkt, &line_end, ptr,
281
+ t->buffer.len, &pkt_parse_data);
224
282
  else
225
283
  error = GIT_EBUFS;
226
284
 
@@ -230,16 +288,15 @@ static int recv_pkt(git_pkt **out_pkt, git_pkt_type *out_type, gitno_buffer *buf
230
288
  if (error < 0 && error != GIT_EBUFS)
231
289
  return error;
232
290
 
233
- if ((ret = gitno_recv(buf)) < 0) {
291
+ if ((ret = git_smart__recv(t)) < 0) {
234
292
  return ret;
235
293
  } else if (ret == 0) {
236
- git_error_set(GIT_ERROR_NET, "early EOF");
294
+ git_error_set(GIT_ERROR_NET, "could not read from remote repository");
237
295
  return GIT_EEOF;
238
296
  }
239
297
  } while (error);
240
298
 
241
- if (gitno_consume(buf, line_end) < 0)
242
- return -1;
299
+ git_staticstr_consume(&t->buffer, line_end);
243
300
 
244
301
  if (out_type != NULL)
245
302
  *out_type = pkt->type;
@@ -254,13 +311,19 @@ static int recv_pkt(git_pkt **out_pkt, git_pkt_type *out_type, gitno_buffer *buf
254
311
  static int store_common(transport_smart *t)
255
312
  {
256
313
  git_pkt *pkt = NULL;
257
- gitno_buffer *buf = &t->buffer;
258
314
  int error;
259
315
 
260
316
  do {
261
- if ((error = recv_pkt(&pkt, NULL, buf)) < 0)
317
+ if ((error = recv_pkt(&pkt, NULL, t)) < 0)
262
318
  return error;
263
319
 
320
+ if (t->rpc && (pkt->type == GIT_PKT_SHALLOW ||
321
+ pkt->type == GIT_PKT_UNSHALLOW ||
322
+ pkt->type == GIT_PKT_FLUSH)) {
323
+ git__free(pkt);
324
+ continue;
325
+ }
326
+
264
327
  if (pkt->type != GIT_PKT_ACK) {
265
328
  git__free(pkt);
266
329
  return 0;
@@ -275,7 +338,7 @@ static int store_common(transport_smart *t)
275
338
  return 0;
276
339
  }
277
340
 
278
- static int wait_while_ack(gitno_buffer *buf)
341
+ static int wait_while_ack(transport_smart *t)
279
342
  {
280
343
  int error;
281
344
  git_pkt *pkt = NULL;
@@ -284,7 +347,7 @@ static int wait_while_ack(gitno_buffer *buf)
284
347
  while (1) {
285
348
  git_pkt_free(pkt);
286
349
 
287
- if ((error = recv_pkt(&pkt, NULL, buf)) < 0)
350
+ if ((error = recv_pkt(&pkt, NULL, t)) < 0)
288
351
  return error;
289
352
 
290
353
  if (pkt->type == GIT_PKT_NAK)
@@ -305,19 +368,64 @@ static int wait_while_ack(gitno_buffer *buf)
305
368
  return 0;
306
369
  }
307
370
 
308
- int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, const git_remote_head * const *wants, size_t count)
371
+ static int cap_not_sup_err(const char *cap_name)
372
+ {
373
+ git_error_set(GIT_ERROR_NET, "server doesn't support %s", cap_name);
374
+ return GIT_EINVALID;
375
+ }
376
+
377
+ /* Disables server capabilities we're not interested in */
378
+ static int setup_caps(
379
+ transport_smart_caps *caps,
380
+ const git_fetch_negotiation *wants)
381
+ {
382
+ if (wants->depth > 0) {
383
+ if (!caps->shallow)
384
+ return cap_not_sup_err(GIT_CAP_SHALLOW);
385
+ } else {
386
+ caps->shallow = 0;
387
+ }
388
+
389
+ return 0;
390
+ }
391
+
392
+ static int setup_shallow_roots(
393
+ git_array_oid_t *out,
394
+ const git_fetch_negotiation *wants)
395
+ {
396
+ git_array_clear(*out);
397
+
398
+ if (wants->shallow_roots_len > 0) {
399
+ git_array_init_to_size(*out, wants->shallow_roots_len);
400
+ GIT_ERROR_CHECK_ALLOC(out->ptr);
401
+
402
+ memcpy(out->ptr, wants->shallow_roots,
403
+ sizeof(git_oid) * wants->shallow_roots_len);
404
+ out->size = wants->shallow_roots_len;
405
+ }
406
+
407
+ return 0;
408
+ }
409
+
410
+ int git_smart__negotiate_fetch(
411
+ git_transport *transport,
412
+ git_repository *repo,
413
+ const git_fetch_negotiation *wants)
309
414
  {
310
415
  transport_smart *t = (transport_smart *)transport;
311
416
  git_revwalk__push_options opts = GIT_REVWALK__PUSH_OPTIONS_INIT;
312
- gitno_buffer *buf = &t->buffer;
313
- git_buf data = GIT_BUF_INIT;
417
+ git_str data = GIT_STR_INIT;
314
418
  git_revwalk *walk = NULL;
315
419
  int error = -1;
316
420
  git_pkt_type pkt_type;
317
421
  unsigned int i;
318
422
  git_oid oid;
319
423
 
320
- if ((error = git_pkt_buffer_wants(wants, count, &t->caps, &data)) < 0)
424
+ if ((error = setup_caps(&t->caps, wants)) < 0 ||
425
+ (error = setup_shallow_roots(&t->shallow_roots, wants)) < 0)
426
+ return error;
427
+
428
+ if ((error = git_pkt_buffer_wants(wants, &t->caps, &data)) < 0)
321
429
  return error;
322
430
 
323
431
  if ((error = git_revwalk_new(&walk, repo)) < 0)
@@ -327,6 +435,40 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
327
435
  if ((error = git_revwalk__push_glob(walk, "refs/*", &opts)) < 0)
328
436
  goto on_error;
329
437
 
438
+ if (wants->depth > 0) {
439
+ git_pkt_shallow *pkt;
440
+
441
+ if ((error = git_smart__negotiation_step(&t->parent, data.ptr, data.size)) < 0)
442
+ goto on_error;
443
+
444
+ if (!t->rpc)
445
+ git_str_clear(&data);
446
+
447
+ while ((error = recv_pkt((git_pkt **)&pkt, NULL, t)) == 0) {
448
+ bool complete = false;
449
+
450
+ if (pkt->type == GIT_PKT_SHALLOW) {
451
+ error = git_oidarray__add(&t->shallow_roots, &pkt->oid);
452
+ } else if (pkt->type == GIT_PKT_UNSHALLOW) {
453
+ git_oidarray__remove(&t->shallow_roots, &pkt->oid);
454
+ } else if (pkt->type == GIT_PKT_FLUSH) {
455
+ /* Server is done, stop processing shallow oids */
456
+ complete = true;
457
+ } else {
458
+ git_error_set(GIT_ERROR_NET, "unexpected packet type");
459
+ error = -1;
460
+ }
461
+
462
+ git_pkt_free((git_pkt *) pkt);
463
+
464
+ if (complete || error < 0)
465
+ break;
466
+ }
467
+
468
+ if (error < 0)
469
+ goto on_error;
470
+ }
471
+
330
472
  /*
331
473
  * Our support for ACK extensions is simply to parse them. On
332
474
  * the first ACK we will accept that as enough common
@@ -354,7 +496,7 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
354
496
  }
355
497
 
356
498
  git_pkt_buffer_flush(&data);
357
- if (git_buf_oom(&data)) {
499
+ if (git_str_oom(&data)) {
358
500
  error = -1;
359
501
  goto on_error;
360
502
  }
@@ -362,12 +504,12 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
362
504
  if ((error = git_smart__negotiation_step(&t->parent, data.ptr, data.size)) < 0)
363
505
  goto on_error;
364
506
 
365
- git_buf_clear(&data);
507
+ git_str_clear(&data);
366
508
  if (t->caps.multi_ack || t->caps.multi_ack_detailed) {
367
509
  if ((error = store_common(t)) < 0)
368
510
  goto on_error;
369
511
  } else {
370
- if ((error = recv_pkt(NULL, &pkt_type, buf)) < 0)
512
+ if ((error = recv_pkt(NULL, &pkt_type, t)) < 0)
371
513
  goto on_error;
372
514
 
373
515
  if (pkt_type == GIT_PKT_ACK) {
@@ -389,7 +531,7 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
389
531
  git_pkt_ack *pkt;
390
532
  unsigned int j;
391
533
 
392
- if ((error = git_pkt_buffer_wants(wants, count, &t->caps, &data)) < 0)
534
+ if ((error = git_pkt_buffer_wants(wants, &t->caps, &data)) < 0)
393
535
  goto on_error;
394
536
 
395
537
  git_vector_foreach(&t->common, j, pkt) {
@@ -397,7 +539,7 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
397
539
  goto on_error;
398
540
  }
399
541
 
400
- if (git_buf_oom(&data)) {
542
+ if (git_str_oom(&data)) {
401
543
  error = -1;
402
544
  goto on_error;
403
545
  }
@@ -409,7 +551,7 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
409
551
  git_pkt_ack *pkt;
410
552
  unsigned int j;
411
553
 
412
- if ((error = git_pkt_buffer_wants(wants, count, &t->caps, &data)) < 0)
554
+ if ((error = git_pkt_buffer_wants(wants, &t->caps, &data)) < 0)
413
555
  goto on_error;
414
556
 
415
557
  git_vector_foreach(&t->common, j, pkt) {
@@ -417,7 +559,7 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
417
559
  goto on_error;
418
560
  }
419
561
 
420
- if (git_buf_oom(&data)) {
562
+ if (git_str_oom(&data)) {
421
563
  error = -1;
422
564
  goto on_error;
423
565
  }
@@ -427,19 +569,20 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
427
569
  goto on_error;
428
570
 
429
571
  if (t->cancelled.val) {
430
- git_error_set(GIT_ERROR_NET, "The fetch was cancelled by the user");
572
+ git_error_set(GIT_ERROR_NET, "the fetch was cancelled");
431
573
  error = GIT_EUSER;
432
574
  goto on_error;
433
575
  }
576
+
434
577
  if ((error = git_smart__negotiation_step(&t->parent, data.ptr, data.size)) < 0)
435
578
  goto on_error;
436
579
 
437
- git_buf_dispose(&data);
580
+ git_str_dispose(&data);
438
581
  git_revwalk_free(walk);
439
582
 
440
583
  /* Now let's eat up whatever the server gives us */
441
584
  if (!t->caps.multi_ack && !t->caps.multi_ack_detailed) {
442
- if ((error = recv_pkt(NULL, &pkt_type, buf)) < 0)
585
+ if ((error = recv_pkt(NULL, &pkt_type, t)) < 0)
443
586
  return error;
444
587
 
445
588
  if (pkt_type != GIT_PKT_ACK && pkt_type != GIT_PKT_NAK) {
@@ -447,18 +590,40 @@ int git_smart__negotiate_fetch(git_transport *transport, git_repository *repo, c
447
590
  return -1;
448
591
  }
449
592
  } else {
450
- error = wait_while_ack(buf);
593
+ error = wait_while_ack(t);
451
594
  }
452
595
 
453
596
  return error;
454
597
 
455
598
  on_error:
456
599
  git_revwalk_free(walk);
457
- git_buf_dispose(&data);
600
+ git_str_dispose(&data);
458
601
  return error;
459
602
  }
460
603
 
461
- static int no_sideband(transport_smart *t, struct git_odb_writepack *writepack, gitno_buffer *buf, git_indexer_progress *stats)
604
+ int git_smart__shallow_roots(git_oidarray *out, git_transport *transport)
605
+ {
606
+ transport_smart *t = (transport_smart *)transport;
607
+ size_t len;
608
+
609
+ GIT_ERROR_CHECK_ALLOC_MULTIPLY(&len, t->shallow_roots.size, sizeof(git_oid));
610
+
611
+ out->count = t->shallow_roots.size;
612
+
613
+ if (len) {
614
+ out->ids = git__malloc(len);
615
+ memcpy(out->ids, t->shallow_roots.ptr, len);
616
+ } else {
617
+ out->ids = NULL;
618
+ }
619
+
620
+ return 0;
621
+ }
622
+
623
+ static int no_sideband(
624
+ transport_smart *t,
625
+ struct git_odb_writepack *writepack,
626
+ git_indexer_progress *stats)
462
627
  {
463
628
  int recvd;
464
629
 
@@ -468,12 +633,12 @@ static int no_sideband(transport_smart *t, struct git_odb_writepack *writepack,
468
633
  return GIT_EUSER;
469
634
  }
470
635
 
471
- if (writepack->append(writepack, buf->data, buf->offset, stats) < 0)
636
+ if (writepack->append(writepack, t->buffer.data, t->buffer.len, stats) < 0)
472
637
  return -1;
473
638
 
474
- gitno_consume_n(buf, buf->offset);
639
+ git_staticstr_clear(&t->buffer);
475
640
 
476
- if ((recvd = gitno_recv(buf)) < 0)
641
+ if ((recvd = git_smart__recv(t)) < 0)
477
642
  return recvd;
478
643
  } while(recvd > 0);
479
644
 
@@ -512,17 +677,17 @@ static int network_packetsize(size_t received, void *payload)
512
677
  int git_smart__download_pack(
513
678
  git_transport *transport,
514
679
  git_repository *repo,
515
- git_indexer_progress *stats,
516
- git_indexer_progress_cb progress_cb,
517
- void *progress_payload)
680
+ git_indexer_progress *stats)
518
681
  {
519
682
  transport_smart *t = (transport_smart *)transport;
520
- gitno_buffer *buf = &t->buffer;
521
683
  git_odb *odb;
522
684
  struct git_odb_writepack *writepack = NULL;
523
685
  int error = 0;
524
686
  struct network_packetsize_payload npp = {0};
525
687
 
688
+ git_indexer_progress_cb progress_cb = t->connect_opts.callbacks.transfer_progress;
689
+ void *progress_payload = t->connect_opts.callbacks.payload;
690
+
526
691
  memset(stats, 0, sizeof(git_indexer_progress));
527
692
 
528
693
  if (progress_cb) {
@@ -533,9 +698,10 @@ int git_smart__download_pack(
533
698
  t->packetsize_payload = &npp;
534
699
 
535
700
  /* We might have something in the buffer already from negotiate_fetch */
536
- if (t->buffer.offset > 0 && !t->cancelled.val)
537
- if (t->packetsize_cb(t->buffer.offset, t->packetsize_payload))
701
+ if (t->buffer.len > 0 && !t->cancelled.val) {
702
+ if (t->packetsize_cb(t->buffer.len, t->packetsize_payload))
538
703
  git_atomic32_set(&t->cancelled, 1);
704
+ }
539
705
  }
540
706
 
541
707
  if ((error = git_repository_odb__weakptr(&odb, repo)) < 0 ||
@@ -548,7 +714,7 @@ int git_smart__download_pack(
548
714
  * check which one belongs there.
549
715
  */
550
716
  if (!t->caps.side_band && !t->caps.side_band_64k) {
551
- error = no_sideband(t, writepack, buf, stats);
717
+ error = no_sideband(t, writepack, stats);
552
718
  goto done;
553
719
  }
554
720
 
@@ -562,13 +728,13 @@ int git_smart__download_pack(
562
728
  goto done;
563
729
  }
564
730
 
565
- if ((error = recv_pkt(&pkt, NULL, buf)) >= 0) {
731
+ if ((error = recv_pkt(&pkt, NULL, t)) >= 0) {
566
732
  /* Check cancellation after network call */
567
733
  if (t->cancelled.val) {
568
734
  git_error_clear();
569
735
  error = GIT_EUSER;
570
736
  } else if (pkt->type == GIT_PKT_PROGRESS) {
571
- if (t->progress_cb) {
737
+ if (t->connect_opts.callbacks.sideband_progress) {
572
738
  git_pkt_progress *p = (git_pkt_progress *) pkt;
573
739
 
574
740
  if (p->len > INT_MAX) {
@@ -577,7 +743,7 @@ int git_smart__download_pack(
577
743
  goto done;
578
744
  }
579
745
 
580
- error = t->progress_cb(p->data, (int)p->len, t->message_cb_payload);
746
+ error = t->connect_opts.callbacks.sideband_progress(p->data, (int)p->len, t->connect_opts.callbacks.payload);
581
747
  }
582
748
  } else if (pkt->type == GIT_PKT_DATA) {
583
749
  git_pkt_data *p = (git_pkt_data *) pkt;
@@ -626,45 +792,73 @@ done:
626
792
  return error;
627
793
  }
628
794
 
629
- static int gen_pktline(git_buf *buf, git_push *push)
795
+ static int gen_pktline(git_str *buf, git_push *push)
630
796
  {
631
797
  push_spec *spec;
798
+ char *option;
632
799
  size_t i, len;
633
- char old_id[GIT_OID_HEXSZ+1], new_id[GIT_OID_HEXSZ+1];
634
-
635
- old_id[GIT_OID_HEXSZ] = '\0'; new_id[GIT_OID_HEXSZ] = '\0';
800
+ char old_id[GIT_OID_MAX_HEXSIZE + 1], new_id[GIT_OID_MAX_HEXSIZE + 1];
801
+ size_t old_id_len, new_id_len;
636
802
 
637
803
  git_vector_foreach(&push->specs, i, spec) {
638
- len = 2*GIT_OID_HEXSZ + 7 + strlen(spec->refspec.dst);
804
+ len = strlen(spec->refspec.dst) + 7;
639
805
 
640
806
  if (i == 0) {
641
- ++len; /* '\0' */
807
+ /* Need a leading \0 */
808
+ ++len;
809
+
642
810
  if (push->report_status)
643
811
  len += strlen(GIT_CAP_REPORT_STATUS) + 1;
812
+
813
+ if (git_vector_length(&push->remote_push_options) > 0)
814
+ len += strlen(GIT_CAP_PUSH_OPTIONS) + 1;
815
+
644
816
  len += strlen(GIT_CAP_SIDE_BAND_64K) + 1;
645
817
  }
646
818
 
819
+ old_id_len = git_oid_hexsize(git_oid_type(&spec->roid));
820
+ new_id_len = git_oid_hexsize(git_oid_type(&spec->loid));
821
+
822
+ len += (old_id_len + new_id_len);
823
+
647
824
  git_oid_fmt(old_id, &spec->roid);
825
+ old_id[old_id_len] = '\0';
826
+
648
827
  git_oid_fmt(new_id, &spec->loid);
828
+ new_id[new_id_len] = '\0';
649
829
 
650
- git_buf_printf(buf, "%04"PRIxZ"%s %s %s", len, old_id, new_id, spec->refspec.dst);
830
+ git_str_printf(buf, "%04"PRIxZ"%.*s %.*s %s", len,
831
+ (int)old_id_len, old_id, (int)new_id_len, new_id,
832
+ spec->refspec.dst);
651
833
 
652
834
  if (i == 0) {
653
- git_buf_putc(buf, '\0');
835
+ git_str_putc(buf, '\0');
836
+
654
837
  /* Core git always starts their capabilities string with a space */
655
838
  if (push->report_status) {
656
- git_buf_putc(buf, ' ');
657
- git_buf_printf(buf, GIT_CAP_REPORT_STATUS);
839
+ git_str_putc(buf, ' ');
840
+ git_str_printf(buf, GIT_CAP_REPORT_STATUS);
841
+ }
842
+ if (git_vector_length(&push->remote_push_options) > 0) {
843
+ git_str_putc(buf, ' ');
844
+ git_str_printf(buf, GIT_CAP_PUSH_OPTIONS);
658
845
  }
659
- git_buf_putc(buf, ' ');
660
- git_buf_printf(buf, GIT_CAP_SIDE_BAND_64K);
846
+ git_str_putc(buf, ' ');
847
+ git_str_printf(buf, GIT_CAP_SIDE_BAND_64K);
661
848
  }
662
849
 
663
- git_buf_putc(buf, '\n');
850
+ git_str_putc(buf, '\n');
851
+ }
852
+
853
+ if (git_vector_length(&push->remote_push_options) > 0) {
854
+ git_str_printf(buf, "0000");
855
+ git_vector_foreach(&push->remote_push_options, i, option) {
856
+ git_str_printf(buf, "%04"PRIxZ"%s", strlen(option) + 4 , option);
857
+ }
664
858
  }
665
859
 
666
- git_buf_puts(buf, "0000");
667
- return git_buf_oom(buf) ? -1 : 0;
860
+ git_str_puts(buf, "0000");
861
+ return git_str_oom(buf) ? -1 : 0;
668
862
  }
669
863
 
670
864
  static int add_push_report_pkt(git_push *push, git_pkt *pkt)
@@ -707,9 +901,10 @@ static int add_push_report_pkt(git_push *push, git_pkt *pkt)
707
901
  return 0;
708
902
  }
709
903
 
710
- static int add_push_report_sideband_pkt(git_push *push, git_pkt_data *data_pkt, git_buf *data_pkt_buf)
904
+ static int add_push_report_sideband_pkt(git_push *push, git_pkt_data *data_pkt, git_str *data_pkt_buf)
711
905
  {
712
906
  git_pkt *pkt;
907
+ git_pkt_parse_data pkt_parse_data = { 0 };
713
908
  const char *line, *line_end = NULL;
714
909
  size_t line_len;
715
910
  int error;
@@ -718,7 +913,7 @@ static int add_push_report_sideband_pkt(git_push *push, git_pkt_data *data_pkt,
718
913
  if (reading_from_buf) {
719
914
  /* We had an existing partial packet, so add the new
720
915
  * packet to the buffer and parse the whole thing */
721
- git_buf_put(data_pkt_buf, data_pkt->data, data_pkt->len);
916
+ git_str_put(data_pkt_buf, data_pkt->data, data_pkt->len);
722
917
  line = data_pkt_buf->ptr;
723
918
  line_len = data_pkt_buf->size;
724
919
  }
@@ -728,13 +923,13 @@ static int add_push_report_sideband_pkt(git_push *push, git_pkt_data *data_pkt,
728
923
  }
729
924
 
730
925
  while (line_len > 0) {
731
- error = git_pkt_parse_line(&pkt, &line_end, line, line_len);
926
+ error = git_pkt_parse_line(&pkt, &line_end, line, line_len, &pkt_parse_data);
732
927
 
733
928
  if (error == GIT_EBUFS) {
734
929
  /* Buffer the data when the inner packet is split
735
930
  * across multiple sideband packets */
736
931
  if (!reading_from_buf)
737
- git_buf_put(data_pkt_buf, line, line_len);
932
+ git_str_put(data_pkt_buf, line, line_len);
738
933
  error = 0;
739
934
  goto done;
740
935
  }
@@ -757,22 +952,24 @@ static int add_push_report_sideband_pkt(git_push *push, git_pkt_data *data_pkt,
757
952
 
758
953
  done:
759
954
  if (reading_from_buf)
760
- git_buf_consume(data_pkt_buf, line_end);
955
+ git_str_consume(data_pkt_buf, line_end);
761
956
  return error;
762
957
  }
763
958
 
764
959
  static int parse_report(transport_smart *transport, git_push *push)
765
960
  {
766
961
  git_pkt *pkt = NULL;
962
+ git_pkt_parse_data pkt_parse_data = { 0 };
767
963
  const char *line_end = NULL;
768
- gitno_buffer *buf = &transport->buffer;
769
964
  int error, recvd;
770
- git_buf data_pkt_buf = GIT_BUF_INIT;
965
+ git_str data_pkt_buf = GIT_STR_INIT;
771
966
 
772
967
  for (;;) {
773
- if (buf->offset > 0)
968
+ if (transport->buffer.len > 0)
774
969
  error = git_pkt_parse_line(&pkt, &line_end,
775
- buf->data, buf->offset);
970
+ transport->buffer.data,
971
+ transport->buffer.len,
972
+ &pkt_parse_data);
776
973
  else
777
974
  error = GIT_EBUFS;
778
975
 
@@ -782,22 +979,20 @@ static int parse_report(transport_smart *transport, git_push *push)
782
979
  }
783
980
 
784
981
  if (error == GIT_EBUFS) {
785
- if ((recvd = gitno_recv(buf)) < 0) {
982
+ if ((recvd = git_smart__recv(transport)) < 0) {
786
983
  error = recvd;
787
984
  goto done;
788
985
  }
789
986
 
790
987
  if (recvd == 0) {
791
- git_error_set(GIT_ERROR_NET, "early EOF");
988
+ git_error_set(GIT_ERROR_NET, "could not read report from remote repository");
792
989
  error = GIT_EEOF;
793
990
  goto done;
794
991
  }
795
992
  continue;
796
993
  }
797
994
 
798
- if (gitno_consume(buf, line_end) < 0)
799
- return -1;
800
-
995
+ git_staticstr_consume(&transport->buffer, line_end);
801
996
  error = 0;
802
997
 
803
998
  switch (pkt->type) {
@@ -811,7 +1006,7 @@ static int parse_report(transport_smart *transport, git_push *push)
811
1006
  error = -1;
812
1007
  break;
813
1008
  case GIT_PKT_PROGRESS:
814
- if (transport->progress_cb) {
1009
+ if (transport->connect_opts.callbacks.sideband_progress) {
815
1010
  git_pkt_progress *p = (git_pkt_progress *) pkt;
816
1011
 
817
1012
  if (p->len > INT_MAX) {
@@ -820,7 +1015,7 @@ static int parse_report(transport_smart *transport, git_push *push)
820
1015
  goto done;
821
1016
  }
822
1017
 
823
- error = transport->progress_cb(p->data, (int)p->len, transport->message_cb_payload);
1018
+ error = transport->connect_opts.callbacks.sideband_progress(p->data, (int)p->len, transport->connect_opts.callbacks.payload);
824
1019
  }
825
1020
  break;
826
1021
  default:
@@ -847,7 +1042,7 @@ static int parse_report(transport_smart *transport, git_push *push)
847
1042
  }
848
1043
  }
849
1044
  done:
850
- git_buf_dispose(&data_pkt_buf);
1045
+ git_str_dispose(&data_pkt_buf);
851
1046
  return error;
852
1047
  }
853
1048
 
@@ -962,7 +1157,7 @@ struct push_packbuilder_payload
962
1157
  git_push_transfer_progress_cb cb;
963
1158
  void *cb_payload;
964
1159
  size_t last_bytes;
965
- double last_progress_report_time;
1160
+ uint64_t last_progress_report_time;
966
1161
  };
967
1162
 
968
1163
  static int stream_thunk(void *buf, size_t size, void *data)
@@ -974,11 +1169,11 @@ static int stream_thunk(void *buf, size_t size, void *data)
974
1169
  return error;
975
1170
 
976
1171
  if (payload->cb) {
977
- double current_time = git__timer();
978
- double elapsed = current_time - payload->last_progress_report_time;
1172
+ uint64_t current_time = git_time_monotonic();
1173
+ uint64_t elapsed = current_time - payload->last_progress_report_time;
979
1174
  payload->last_bytes += size;
980
1175
 
981
- if (elapsed < 0 || elapsed >= MIN_PROGRESS_UPDATE_INTERVAL) {
1176
+ if (elapsed >= MIN_PROGRESS_UPDATE_INTERVAL) {
982
1177
  payload->last_progress_report_time = current_time;
983
1178
  error = payload->cb(payload->pb->nr_written, payload->pb->nr_objects, payload->last_bytes, payload->cb_payload);
984
1179
  }
@@ -987,11 +1182,12 @@ static int stream_thunk(void *buf, size_t size, void *data)
987
1182
  return error;
988
1183
  }
989
1184
 
990
- int git_smart__push(git_transport *transport, git_push *push, const git_remote_callbacks *cbs)
1185
+ int git_smart__push(git_transport *transport, git_push *push)
991
1186
  {
992
1187
  transport_smart *t = (transport_smart *)transport;
1188
+ git_remote_callbacks *cbs = &t->connect_opts.callbacks;
993
1189
  struct push_packbuilder_payload packbuilder_payload = {0};
994
- git_buf pktline = GIT_BUF_INIT;
1190
+ git_str pktline = GIT_STR_INIT;
995
1191
  int error = 0, need_pack = 0;
996
1192
  push_spec *spec;
997
1193
  unsigned int i;
@@ -1006,7 +1202,7 @@ int git_smart__push(git_transport *transport, git_push *push, const git_remote_c
1006
1202
  #ifdef PUSH_DEBUG
1007
1203
  {
1008
1204
  git_remote_head *head;
1009
- char hex[GIT_OID_HEXSZ+1]; hex[GIT_OID_HEXSZ] = '\0';
1205
+ char hex[GIT_OID_MAX_HEXSIZE+1], hex[GIT_OID_MAX_HEXSIZE] = '\0';
1010
1206
 
1011
1207
  git_vector_foreach(&push->remote->refs, i, head) {
1012
1208
  git_oid_fmt(hex, &head->oid);
@@ -1034,9 +1230,13 @@ int git_smart__push(git_transport *transport, git_push *push, const git_remote_c
1034
1230
  }
1035
1231
  }
1036
1232
 
1233
+ /* prepare pack before sending pack header to avoid timeouts */
1234
+ if (need_pack && ((error = git_packbuilder__prepare(push->pb))) < 0)
1235
+ goto done;
1236
+
1037
1237
  if ((error = git_smart__get_push_stream(t, &packbuilder_payload.stream)) < 0 ||
1038
1238
  (error = gen_pktline(&pktline, push)) < 0 ||
1039
- (error = packbuilder_payload.stream->write(packbuilder_payload.stream, git_buf_cstr(&pktline), git_buf_len(&pktline))) < 0)
1239
+ (error = packbuilder_payload.stream->write(packbuilder_payload.stream, git_str_cstr(&pktline), git_str_len(&pktline))) < 0)
1040
1240
  goto done;
1041
1241
 
1042
1242
  if (need_pack &&
@@ -1071,6 +1271,6 @@ int git_smart__push(git_transport *transport, git_push *push, const git_remote_c
1071
1271
  }
1072
1272
 
1073
1273
  done:
1074
- git_buf_dispose(&pktline);
1274
+ git_str_dispose(&pktline);
1075
1275
  return error;
1076
1276
  }