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
@@ -16,14 +16,14 @@
16
16
  #include "git2/commit.h"
17
17
  #include "git2/tree.h"
18
18
 
19
+ #include "checkout.h"
19
20
  #include "remote.h"
20
21
  #include "futils.h"
21
22
  #include "refs.h"
22
- #include "path.h"
23
+ #include "fs_path.h"
23
24
  #include "repository.h"
24
25
  #include "odb.h"
25
-
26
- static int clone_local_into(git_repository *repo, git_remote *remote, const git_fetch_options *fetch_opts, const git_checkout_options *co_opts, const char *branch, int link);
26
+ #include "net.h"
27
27
 
28
28
  static int create_branch(
29
29
  git_reference **branch,
@@ -34,7 +34,7 @@ static int create_branch(
34
34
  {
35
35
  git_commit *head_obj = NULL;
36
36
  git_reference *branch_ref = NULL;
37
- git_buf refname = GIT_BUF_INIT;
37
+ git_str refname = GIT_STR_INIT;
38
38
  int error;
39
39
 
40
40
  /* Find the target commit */
@@ -42,11 +42,11 @@ static int create_branch(
42
42
  return error;
43
43
 
44
44
  /* Create the new branch */
45
- if ((error = git_buf_printf(&refname, GIT_REFS_HEADS_DIR "%s", name)) < 0)
45
+ if ((error = git_str_printf(&refname, GIT_REFS_HEADS_DIR "%s", name)) < 0)
46
46
  return error;
47
47
 
48
- error = git_reference_create(&branch_ref, repo, git_buf_cstr(&refname), target, 0, log_message);
49
- git_buf_dispose(&refname);
48
+ error = git_reference_create(&branch_ref, repo, git_str_cstr(&refname), target, 0, log_message);
49
+ git_str_dispose(&refname);
50
50
  git_commit_free(head_obj);
51
51
 
52
52
  if (!error)
@@ -64,29 +64,29 @@ static int setup_tracking_config(
64
64
  const char *merge_target)
65
65
  {
66
66
  git_config *cfg;
67
- git_buf remote_key = GIT_BUF_INIT, merge_key = GIT_BUF_INIT;
67
+ git_str remote_key = GIT_STR_INIT, merge_key = GIT_STR_INIT;
68
68
  int error = -1;
69
69
 
70
70
  if (git_repository_config__weakptr(&cfg, repo) < 0)
71
71
  return -1;
72
72
 
73
- if (git_buf_printf(&remote_key, "branch.%s.remote", branch_name) < 0)
73
+ if (git_str_printf(&remote_key, "branch.%s.remote", branch_name) < 0)
74
74
  goto cleanup;
75
75
 
76
- if (git_buf_printf(&merge_key, "branch.%s.merge", branch_name) < 0)
76
+ if (git_str_printf(&merge_key, "branch.%s.merge", branch_name) < 0)
77
77
  goto cleanup;
78
78
 
79
- if (git_config_set_string(cfg, git_buf_cstr(&remote_key), remote_name) < 0)
79
+ if (git_config_set_string(cfg, git_str_cstr(&remote_key), remote_name) < 0)
80
80
  goto cleanup;
81
81
 
82
- if (git_config_set_string(cfg, git_buf_cstr(&merge_key), merge_target) < 0)
82
+ if (git_config_set_string(cfg, git_str_cstr(&merge_key), merge_target) < 0)
83
83
  goto cleanup;
84
84
 
85
85
  error = 0;
86
86
 
87
87
  cleanup:
88
- git_buf_dispose(&remote_key);
89
- git_buf_dispose(&merge_key);
88
+ git_str_dispose(&remote_key);
89
+ git_str_dispose(&merge_key);
90
90
  return error;
91
91
  }
92
92
 
@@ -139,7 +139,7 @@ static int update_head_to_new_branch(
139
139
 
140
140
  static int update_head_to_default(git_repository *repo)
141
141
  {
142
- git_buf initialbranch = GIT_BUF_INIT;
142
+ git_str initialbranch = GIT_STR_INIT;
143
143
  const char *branch_name;
144
144
  int error = 0;
145
145
 
@@ -158,24 +158,24 @@ static int update_head_to_default(git_repository *repo)
158
158
  initialbranch.ptr);
159
159
 
160
160
  done:
161
- git_buf_dispose(&initialbranch);
161
+ git_str_dispose(&initialbranch);
162
162
  return error;
163
163
  }
164
164
 
165
165
  static int update_remote_head(
166
166
  git_repository *repo,
167
167
  git_remote *remote,
168
- git_buf *target,
168
+ git_str *target,
169
169
  const char *reflog_message)
170
170
  {
171
171
  git_refspec *refspec;
172
172
  git_reference *remote_head = NULL;
173
- git_buf remote_head_name = GIT_BUF_INIT;
174
- git_buf remote_branch_name = GIT_BUF_INIT;
173
+ git_str remote_head_name = GIT_STR_INIT;
174
+ git_str remote_branch_name = GIT_STR_INIT;
175
175
  int error;
176
176
 
177
177
  /* Determine the remote tracking ref name from the local branch */
178
- refspec = git_remote__matching_refspec(remote, git_buf_cstr(target));
178
+ refspec = git_remote__matching_refspec(remote, git_str_cstr(target));
179
179
 
180
180
  if (refspec == NULL) {
181
181
  git_error_set(GIT_ERROR_NET, "the remote's default branch does not fit the refspec configuration");
@@ -183,13 +183,13 @@ static int update_remote_head(
183
183
  goto cleanup;
184
184
  }
185
185
 
186
- if ((error = git_refspec_transform(
186
+ if ((error = git_refspec__transform(
187
187
  &remote_branch_name,
188
188
  refspec,
189
- git_buf_cstr(target))) < 0)
189
+ git_str_cstr(target))) < 0)
190
190
  goto cleanup;
191
191
 
192
- if ((error = git_buf_printf(&remote_head_name,
192
+ if ((error = git_str_printf(&remote_head_name,
193
193
  "%s%s/%s",
194
194
  GIT_REFS_REMOTES_DIR,
195
195
  git_remote_name(remote),
@@ -199,15 +199,15 @@ static int update_remote_head(
199
199
  error = git_reference_symbolic_create(
200
200
  &remote_head,
201
201
  repo,
202
- git_buf_cstr(&remote_head_name),
203
- git_buf_cstr(&remote_branch_name),
202
+ git_str_cstr(&remote_head_name),
203
+ git_str_cstr(&remote_branch_name),
204
204
  true,
205
205
  reflog_message);
206
206
 
207
207
  cleanup:
208
208
  git_reference_free(remote_head);
209
- git_buf_dispose(&remote_branch_name);
210
- git_buf_dispose(&remote_head_name);
209
+ git_str_dispose(&remote_branch_name);
210
+ git_str_dispose(&remote_head_name);
211
211
  return error;
212
212
  }
213
213
 
@@ -220,7 +220,7 @@ static int update_head_to_remote(
220
220
  size_t refs_len;
221
221
  const git_remote_head *remote_head, **refs;
222
222
  const git_oid *remote_head_id;
223
- git_buf branch = GIT_BUF_INIT;
223
+ git_str branch = GIT_STR_INIT;
224
224
 
225
225
  if ((error = git_remote_ls(&refs, &refs_len, remote)) < 0)
226
226
  return error;
@@ -235,7 +235,7 @@ static int update_head_to_remote(
235
235
 
236
236
  remote_head_id = &remote_head->oid;
237
237
 
238
- error = git_remote_default_branch(&branch, remote);
238
+ error = git_remote__default_branch(&branch, remote);
239
239
  if (error == GIT_ENOTFOUND) {
240
240
  error = git_repository_set_head_detached(
241
241
  repo, remote_head_id);
@@ -248,11 +248,11 @@ static int update_head_to_remote(
248
248
  error = update_head_to_new_branch(
249
249
  repo,
250
250
  remote_head_id,
251
- git_buf_cstr(&branch),
251
+ git_str_cstr(&branch),
252
252
  reflog_message);
253
253
 
254
254
  cleanup:
255
- git_buf_dispose(&branch);
255
+ git_str_dispose(&branch);
256
256
 
257
257
  return error;
258
258
  }
@@ -264,36 +264,40 @@ static int update_head_to_branch(
264
264
  const char *reflog_message)
265
265
  {
266
266
  int retcode;
267
- git_buf remote_branch_name = GIT_BUF_INIT;
267
+ git_str remote_branch_name = GIT_STR_INIT;
268
268
  git_reference *remote_ref = NULL;
269
- git_buf default_branch = GIT_BUF_INIT;
269
+ git_str default_branch = GIT_STR_INIT;
270
270
 
271
271
  GIT_ASSERT_ARG(remote);
272
272
  GIT_ASSERT_ARG(branch);
273
273
 
274
- if ((retcode = git_buf_printf(&remote_branch_name, GIT_REFS_REMOTES_DIR "%s/%s",
274
+ if ((retcode = git_str_printf(&remote_branch_name, GIT_REFS_REMOTES_DIR "%s/%s",
275
275
  git_remote_name(remote), branch)) < 0 )
276
276
  goto cleanup;
277
277
 
278
- if ((retcode = git_reference_lookup(&remote_ref, repo, git_buf_cstr(&remote_branch_name))) < 0)
278
+ if ((retcode = git_reference_lookup(&remote_ref, repo, git_str_cstr(&remote_branch_name))) < 0)
279
279
  goto cleanup;
280
280
 
281
281
  if ((retcode = update_head_to_new_branch(repo, git_reference_target(remote_ref), branch,
282
282
  reflog_message)) < 0)
283
283
  goto cleanup;
284
284
 
285
- if ((retcode = git_remote_default_branch(&default_branch, remote)) < 0)
285
+ retcode = git_remote__default_branch(&default_branch, remote);
286
+
287
+ if (retcode == GIT_ENOTFOUND)
288
+ retcode = 0;
289
+ else if (retcode)
286
290
  goto cleanup;
287
291
 
288
- if (!git_remote__matching_refspec(remote, git_buf_cstr(&default_branch)))
292
+ if (!git_remote__matching_refspec(remote, git_str_cstr(&default_branch)))
289
293
  goto cleanup;
290
294
 
291
295
  retcode = update_remote_head(repo, remote, &default_branch, reflog_message);
292
296
 
293
297
  cleanup:
294
298
  git_reference_free(remote_ref);
295
- git_buf_dispose(&remote_branch_name);
296
- git_buf_dispose(&default_branch);
299
+ git_str_dispose(&remote_branch_name);
300
+ git_str_dispose(&default_branch);
297
301
  return retcode;
298
302
  }
299
303
 
@@ -332,8 +336,9 @@ static int create_and_configure_origin(
332
336
  git_remote_create_cb remote_create = options->remote_cb;
333
337
  void *payload = options->remote_cb_payload;
334
338
 
335
- /* If the path exists and is a dir, the url should be the absolute path */
336
- if (git_path_root(url) < 0 && git_path_exists(url) && git_path_isdir(url)) {
339
+ /* If the path is local and exists it should be the absolute path. */
340
+ if (!git_net_str_is_url(url) && git_fs_path_root(url) < 0 &&
341
+ git_fs_path_exists(url)) {
337
342
  if (p_realpath(url, buf) == NULL)
338
343
  return -1;
339
344
 
@@ -356,45 +361,64 @@ on_error:
356
361
  return error;
357
362
  }
358
363
 
359
- static bool should_checkout(
364
+ static int should_checkout(
365
+ bool *out,
360
366
  git_repository *repo,
361
367
  bool is_bare,
362
- const git_checkout_options *opts)
368
+ const git_clone_options *opts)
363
369
  {
364
- if (is_bare)
365
- return false;
370
+ int error;
366
371
 
367
- if (!opts)
368
- return false;
372
+ if (!opts || is_bare ||
373
+ opts->checkout_opts.checkout_strategy == GIT_CHECKOUT_NONE) {
374
+ *out = false;
375
+ return 0;
376
+ }
369
377
 
370
- if (opts->checkout_strategy == GIT_CHECKOUT_NONE)
371
- return false;
378
+ if ((error = git_repository_head_unborn(repo)) < 0)
379
+ return error;
372
380
 
373
- return !git_repository_head_unborn(repo);
381
+ *out = !error;
382
+ return 0;
374
383
  }
375
384
 
376
- static int checkout_branch(git_repository *repo, git_remote *remote, const git_checkout_options *co_opts, const char *branch, const char *reflog_message)
385
+ static int checkout_branch(
386
+ git_repository *repo,
387
+ git_remote *remote,
388
+ const git_clone_options *opts,
389
+ const char *reflog_message)
377
390
  {
391
+ bool checkout;
378
392
  int error;
379
393
 
380
- if (branch)
381
- error = update_head_to_branch(repo, remote, branch, reflog_message);
394
+ if (opts->checkout_branch)
395
+ error = update_head_to_branch(repo, remote, opts->checkout_branch, reflog_message);
382
396
  /* Point HEAD to the same ref as the remote's head */
383
397
  else
384
398
  error = update_head_to_remote(repo, remote, reflog_message);
385
399
 
386
- if (!error && should_checkout(repo, git_repository_is_bare(repo), co_opts))
387
- error = git_checkout_head(repo, co_opts);
400
+ if (error < 0)
401
+ return error;
402
+
403
+ if ((error = should_checkout(&checkout, repo, git_repository_is_bare(repo), opts)) < 0)
404
+ return error;
405
+
406
+ if (checkout)
407
+ error = git_checkout_head(repo, &opts->checkout_opts);
388
408
 
389
409
  return error;
390
410
  }
391
411
 
392
- static int clone_into(git_repository *repo, git_remote *_remote, const git_fetch_options *opts, const git_checkout_options *co_opts, const char *branch)
412
+ static int clone_into(
413
+ git_repository *repo,
414
+ git_remote *_remote,
415
+ const git_clone_options *opts)
393
416
  {
394
- int error;
395
- git_buf reflog_message = GIT_BUF_INIT;
396
- git_fetch_options fetch_opts;
417
+ git_str reflog_message = GIT_STR_INIT;
418
+ git_remote_connect_options connect_opts = GIT_REMOTE_CONNECT_OPTIONS_INIT;
397
419
  git_remote *remote;
420
+ git_oid_t oid_type;
421
+ int error;
398
422
 
399
423
  GIT_ASSERT_ARG(repo);
400
424
  GIT_ASSERT_ARG(_remote);
@@ -407,54 +431,173 @@ static int clone_into(git_repository *repo, git_remote *_remote, const git_fetch
407
431
  if ((error = git_remote_dup(&remote, _remote)) < 0)
408
432
  return error;
409
433
 
410
- memcpy(&fetch_opts, opts, sizeof(git_fetch_options));
411
- fetch_opts.update_fetchhead = 0;
412
- fetch_opts.download_tags = GIT_REMOTE_DOWNLOAD_TAGS_ALL;
413
- git_buf_printf(&reflog_message, "clone: from %s", git_remote_url(remote));
434
+ if ((error = git_remote_connect_options__from_fetch_opts(&connect_opts, remote, &opts->fetch_opts)) < 0)
435
+ goto cleanup;
436
+
437
+ git_str_printf(&reflog_message, "clone: from %s", git_remote_url(remote));
438
+
439
+ /*
440
+ * Connect to the server so that we can identify the remote
441
+ * object format.
442
+ */
414
443
 
415
- if ((error = git_remote_fetch(remote, NULL, &fetch_opts, git_buf_cstr(&reflog_message))) != 0)
444
+ if ((error = git_remote_connect_ext(remote, GIT_DIRECTION_FETCH,
445
+ &connect_opts)) < 0)
416
446
  goto cleanup;
417
447
 
418
- error = checkout_branch(repo, remote, co_opts, branch, git_buf_cstr(&reflog_message));
448
+ if ((error = git_remote_oid_type(&oid_type, remote)) < 0 ||
449
+ (error = git_repository__set_objectformat(repo, oid_type)) < 0)
450
+ goto cleanup;
451
+
452
+ if ((error = git_remote_fetch(remote, NULL, &opts->fetch_opts, git_str_cstr(&reflog_message))) != 0)
453
+ goto cleanup;
454
+
455
+ error = checkout_branch(repo, remote, opts, git_str_cstr(&reflog_message));
419
456
 
420
457
  cleanup:
421
458
  git_remote_free(remote);
422
- git_buf_dispose(&reflog_message);
459
+ git_remote_connect_options_dispose(&connect_opts);
460
+ git_str_dispose(&reflog_message);
461
+
462
+ return error;
463
+ }
464
+
465
+ static bool can_link(const char *src, const char *dst, int link)
466
+ {
467
+ #ifdef GIT_WIN32
468
+ GIT_UNUSED(src);
469
+ GIT_UNUSED(dst);
470
+ GIT_UNUSED(link);
471
+ return false;
472
+ #else
473
+
474
+ struct stat st_src, st_dst;
475
+
476
+ if (!link)
477
+ return false;
478
+
479
+ if (p_stat(src, &st_src) < 0)
480
+ return false;
481
+
482
+ if (p_stat(dst, &st_dst) < 0)
483
+ return false;
484
+
485
+ return st_src.st_dev == st_dst.st_dev;
486
+ #endif
487
+ }
488
+
489
+ static int clone_local_into(
490
+ git_repository *repo,
491
+ git_remote *remote,
492
+ const git_clone_options *opts)
493
+ {
494
+ int error, flags;
495
+ git_repository *src;
496
+ git_str src_odb = GIT_STR_INIT, dst_odb = GIT_STR_INIT, src_path = GIT_STR_INIT;
497
+ git_str reflog_message = GIT_STR_INIT;
498
+ bool link = (opts && opts->local != GIT_CLONE_LOCAL_NO_LINKS);
499
+
500
+ GIT_ASSERT_ARG(repo);
501
+ GIT_ASSERT_ARG(remote);
502
+
503
+ if (!git_repository_is_empty(repo)) {
504
+ git_error_set(GIT_ERROR_INVALID, "the repository is not empty");
505
+ return -1;
506
+ }
507
+
508
+ /*
509
+ * Let's figure out what path we should use for the source
510
+ * repo, if it's not rooted, the path should be relative to
511
+ * the repository's worktree/gitdir.
512
+ */
513
+ if ((error = git_fs_path_from_url_or_path(&src_path, git_remote_url(remote))) < 0)
514
+ return error;
515
+
516
+ /* Copy .git/objects/ from the source to the target */
517
+ if ((error = git_repository_open(&src, git_str_cstr(&src_path))) < 0) {
518
+ git_str_dispose(&src_path);
519
+ return error;
520
+ }
521
+
522
+ if (git_repository__item_path(&src_odb, src, GIT_REPOSITORY_ITEM_OBJECTS) < 0 ||
523
+ git_repository__item_path(&dst_odb, repo, GIT_REPOSITORY_ITEM_OBJECTS) < 0) {
524
+ error = -1;
525
+ goto cleanup;
526
+ }
527
+
528
+ flags = 0;
529
+ if (can_link(git_repository_path(src), git_repository_path(repo), link))
530
+ flags |= GIT_CPDIR_LINK_FILES;
531
+
532
+ error = git_futils_cp_r(git_str_cstr(&src_odb), git_str_cstr(&dst_odb),
533
+ flags, GIT_OBJECT_DIR_MODE);
534
+
535
+ /*
536
+ * can_link() doesn't catch all variations, so if we hit an
537
+ * error and did want to link, let's try again without trying
538
+ * to link.
539
+ */
540
+ if (error < 0 && link) {
541
+ flags &= ~GIT_CPDIR_LINK_FILES;
542
+ error = git_futils_cp_r(git_str_cstr(&src_odb), git_str_cstr(&dst_odb),
543
+ flags, GIT_OBJECT_DIR_MODE);
544
+ }
545
+
546
+ if (error < 0)
547
+ goto cleanup;
548
+
549
+ git_str_printf(&reflog_message, "clone: from %s", git_remote_url(remote));
550
+
551
+ if ((error = git_remote_fetch(remote, NULL, &opts->fetch_opts, git_str_cstr(&reflog_message))) != 0)
552
+ goto cleanup;
423
553
 
554
+ error = checkout_branch(repo, remote, opts, git_str_cstr(&reflog_message));
555
+
556
+ cleanup:
557
+ git_str_dispose(&reflog_message);
558
+ git_str_dispose(&src_path);
559
+ git_str_dispose(&src_odb);
560
+ git_str_dispose(&dst_odb);
561
+ git_repository_free(src);
424
562
  return error;
425
563
  }
426
564
 
427
- int git_clone__should_clone_local(const char *url_or_path, git_clone_local_t local)
565
+ int git_clone__should_clone_local(
566
+ bool *out,
567
+ const char *url_or_path,
568
+ git_clone_local_t local)
428
569
  {
429
- git_buf fromurl = GIT_BUF_INIT;
430
- const char *path = url_or_path;
431
- bool is_url, is_local;
570
+ git_str fromurl = GIT_STR_INIT;
571
+
572
+ *out = false;
432
573
 
433
574
  if (local == GIT_CLONE_NO_LOCAL)
434
575
  return 0;
435
576
 
436
- if ((is_url = git_path_is_local_file_url(url_or_path)) != 0) {
437
- if (git_path_fromurl(&fromurl, url_or_path) < 0) {
438
- is_local = -1;
439
- goto done;
440
- }
577
+ if (git_net_str_is_url(url_or_path)) {
578
+ /* If GIT_CLONE_LOCAL_AUTO is specified, any url should
579
+ * be treated as remote */
580
+ if (local == GIT_CLONE_LOCAL_AUTO ||
581
+ !git_fs_path_is_local_file_url(url_or_path))
582
+ return 0;
441
583
 
442
- path = fromurl.ptr;
443
- }
584
+ if (git_fs_path_fromurl(&fromurl, url_or_path) < 0)
585
+ return -1;
444
586
 
445
- is_local = (!is_url || local != GIT_CLONE_LOCAL_AUTO) &&
446
- git_path_isdir(path);
587
+ *out = git_fs_path_isdir(git_str_cstr(&fromurl));
588
+ git_str_dispose(&fromurl);
589
+ } else {
590
+ *out = git_fs_path_isdir(url_or_path);
591
+ }
447
592
 
448
- done:
449
- git_buf_dispose(&fromurl);
450
- return is_local;
593
+ return 0;
451
594
  }
452
595
 
453
- static int git__clone(
596
+ static int clone_repo(
454
597
  git_repository **out,
455
598
  const char *url,
456
599
  const char *local_path,
457
- const git_clone_options *_options,
600
+ const git_clone_options *given_opts,
458
601
  int use_existing)
459
602
  {
460
603
  int error = 0;
@@ -468,20 +611,26 @@ static int git__clone(
468
611
  GIT_ASSERT_ARG(url);
469
612
  GIT_ASSERT_ARG(local_path);
470
613
 
471
- if (_options)
472
- memcpy(&options, _options, sizeof(git_clone_options));
614
+ if (given_opts)
615
+ memcpy(&options, given_opts, sizeof(git_clone_options));
473
616
 
474
617
  GIT_ERROR_CHECK_VERSION(&options, GIT_CLONE_OPTIONS_VERSION, "git_clone_options");
475
618
 
619
+ /* enforce some behavior on fetch */
620
+ options.fetch_opts.update_fetchhead = 0;
621
+
622
+ if (!options.fetch_opts.depth)
623
+ options.fetch_opts.download_tags = GIT_REMOTE_DOWNLOAD_TAGS_ALL;
624
+
476
625
  /* Only clone to a new directory or an empty directory */
477
- if (git_path_exists(local_path) && !use_existing && !git_path_is_empty_dir(local_path)) {
626
+ if (git_fs_path_exists(local_path) && !use_existing && !git_fs_path_is_empty_dir(local_path)) {
478
627
  git_error_set(GIT_ERROR_INVALID,
479
628
  "'%s' exists and is not an empty directory", local_path);
480
629
  return GIT_EEXISTS;
481
630
  }
482
631
 
483
632
  /* Only remove the root directory on failure if we create it */
484
- if (git_path_exists(local_path))
633
+ if (git_fs_path_exists(local_path))
485
634
  rmdir_flags |= GIT_RMDIR_SKIP_ROOT;
486
635
 
487
636
  if (options.repository_cb)
@@ -493,33 +642,31 @@ static int git__clone(
493
642
  return error;
494
643
 
495
644
  if (!(error = create_and_configure_origin(&origin, repo, url, &options))) {
496
- int clone_local = git_clone__should_clone_local(url, options.local);
497
- int link = options.local != GIT_CLONE_LOCAL_NO_LINKS;
498
-
499
- if (clone_local == 1)
500
- error = clone_local_into(
501
- repo, origin, &options.fetch_opts, &options.checkout_opts,
502
- options.checkout_branch, link);
503
- else if (clone_local == 0)
504
- error = clone_into(
505
- repo, origin, &options.fetch_opts, &options.checkout_opts,
506
- options.checkout_branch);
645
+ bool clone_local;
646
+
647
+ if ((error = git_clone__should_clone_local(&clone_local, url, options.local)) < 0) {
648
+ git_remote_free(origin);
649
+ return error;
650
+ }
651
+
652
+ if (clone_local)
653
+ error = clone_local_into(repo, origin, &options);
507
654
  else
508
- error = -1;
655
+ error = clone_into(repo, origin, &options);
509
656
 
510
657
  git_remote_free(origin);
511
658
  }
512
659
 
513
660
  if (error != 0) {
514
- git_error_state last_error = {0};
515
- git_error_state_capture(&last_error, error);
661
+ git_error *last_error;
662
+ git_error_save(&last_error);
516
663
 
517
664
  git_repository_free(repo);
518
665
  repo = NULL;
519
666
 
520
667
  (void)git_futils_rmdir_r(local_path, NULL, rmdir_flags);
521
668
 
522
- git_error_state_restore(&last_error);
669
+ git_error_restore(last_error);
523
670
  }
524
671
 
525
672
  *out = repo;
@@ -530,18 +677,18 @@ int git_clone(
530
677
  git_repository **out,
531
678
  const char *url,
532
679
  const char *local_path,
533
- const git_clone_options *_options)
680
+ const git_clone_options *options)
534
681
  {
535
- return git__clone(out, url, local_path, _options, 0);
682
+ return clone_repo(out, url, local_path, options, 0);
536
683
  }
537
684
 
538
685
  int git_clone__submodule(
539
686
  git_repository **out,
540
687
  const char *url,
541
688
  const char *local_path,
542
- const git_clone_options *_options)
689
+ const git_clone_options *options)
543
690
  {
544
- return git__clone(out, url, local_path, _options, 1);
691
+ return clone_repo(out, url, local_path, options, 1);
545
692
  }
546
693
 
547
694
  int git_clone_options_init(git_clone_options *opts, unsigned int version)
@@ -557,99 +704,3 @@ int git_clone_init_options(git_clone_options *opts, unsigned int version)
557
704
  return git_clone_options_init(opts, version);
558
705
  }
559
706
  #endif
560
-
561
- static bool can_link(const char *src, const char *dst, int link)
562
- {
563
- #ifdef GIT_WIN32
564
- GIT_UNUSED(src);
565
- GIT_UNUSED(dst);
566
- GIT_UNUSED(link);
567
- return false;
568
- #else
569
-
570
- struct stat st_src, st_dst;
571
-
572
- if (!link)
573
- return false;
574
-
575
- if (p_stat(src, &st_src) < 0)
576
- return false;
577
-
578
- if (p_stat(dst, &st_dst) < 0)
579
- return false;
580
-
581
- return st_src.st_dev == st_dst.st_dev;
582
- #endif
583
- }
584
-
585
- static int clone_local_into(git_repository *repo, git_remote *remote, const git_fetch_options *fetch_opts, const git_checkout_options *co_opts, const char *branch, int link)
586
- {
587
- int error, flags;
588
- git_repository *src;
589
- git_buf src_odb = GIT_BUF_INIT, dst_odb = GIT_BUF_INIT, src_path = GIT_BUF_INIT;
590
- git_buf reflog_message = GIT_BUF_INIT;
591
-
592
- GIT_ASSERT_ARG(repo);
593
- GIT_ASSERT_ARG(remote);
594
-
595
- if (!git_repository_is_empty(repo)) {
596
- git_error_set(GIT_ERROR_INVALID, "the repository is not empty");
597
- return -1;
598
- }
599
-
600
- /*
601
- * Let's figure out what path we should use for the source
602
- * repo, if it's not rooted, the path should be relative to
603
- * the repository's worktree/gitdir.
604
- */
605
- if ((error = git_path_from_url_or_path(&src_path, git_remote_url(remote))) < 0)
606
- return error;
607
-
608
- /* Copy .git/objects/ from the source to the target */
609
- if ((error = git_repository_open(&src, git_buf_cstr(&src_path))) < 0) {
610
- git_buf_dispose(&src_path);
611
- return error;
612
- }
613
-
614
- if (git_repository_item_path(&src_odb, src, GIT_REPOSITORY_ITEM_OBJECTS) < 0
615
- || git_repository_item_path(&dst_odb, repo, GIT_REPOSITORY_ITEM_OBJECTS) < 0) {
616
- error = -1;
617
- goto cleanup;
618
- }
619
-
620
- flags = 0;
621
- if (can_link(git_repository_path(src), git_repository_path(repo), link))
622
- flags |= GIT_CPDIR_LINK_FILES;
623
-
624
- error = git_futils_cp_r(git_buf_cstr(&src_odb), git_buf_cstr(&dst_odb),
625
- flags, GIT_OBJECT_DIR_MODE);
626
-
627
- /*
628
- * can_link() doesn't catch all variations, so if we hit an
629
- * error and did want to link, let's try again without trying
630
- * to link.
631
- */
632
- if (error < 0 && link) {
633
- flags &= ~GIT_CPDIR_LINK_FILES;
634
- error = git_futils_cp_r(git_buf_cstr(&src_odb), git_buf_cstr(&dst_odb),
635
- flags, GIT_OBJECT_DIR_MODE);
636
- }
637
-
638
- if (error < 0)
639
- goto cleanup;
640
-
641
- git_buf_printf(&reflog_message, "clone: from %s", git_remote_url(remote));
642
-
643
- if ((error = git_remote_fetch(remote, NULL, fetch_opts, git_buf_cstr(&reflog_message))) != 0)
644
- goto cleanup;
645
-
646
- error = checkout_branch(repo, remote, co_opts, branch, git_buf_cstr(&reflog_message));
647
-
648
- cleanup:
649
- git_buf_dispose(&reflog_message);
650
- git_buf_dispose(&src_path);
651
- git_buf_dispose(&src_odb);
652
- git_buf_dispose(&dst_odb);
653
- git_repository_free(src);
654
- return error;
655
- }