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
@@ -7,32 +7,34 @@
7
7
 
8
8
  #include "worktree.h"
9
9
 
10
+ #include "buf.h"
11
+ #include "repository.h"
12
+ #include "path.h"
13
+
10
14
  #include "git2/branch.h"
11
15
  #include "git2/commit.h"
12
16
  #include "git2/worktree.h"
13
17
 
14
- #include "repository.h"
15
-
16
18
  static bool is_worktree_dir(const char *dir)
17
19
  {
18
- git_buf buf = GIT_BUF_INIT;
20
+ git_str buf = GIT_STR_INIT;
19
21
  int error;
20
22
 
21
- if (git_buf_sets(&buf, dir) < 0)
23
+ if (git_str_sets(&buf, dir) < 0)
22
24
  return -1;
23
25
 
24
- error = git_path_contains_file(&buf, "commondir")
25
- && git_path_contains_file(&buf, "gitdir")
26
- && git_path_contains_file(&buf, "HEAD");
26
+ error = git_fs_path_contains_file(&buf, "commondir")
27
+ && git_fs_path_contains_file(&buf, "gitdir")
28
+ && git_fs_path_contains_file(&buf, "HEAD");
27
29
 
28
- git_buf_dispose(&buf);
30
+ git_str_dispose(&buf);
29
31
  return error;
30
32
  }
31
33
 
32
34
  int git_worktree_list(git_strarray *wts, git_repository *repo)
33
35
  {
34
36
  git_vector worktrees = GIT_VECTOR_INIT;
35
- git_buf path = GIT_BUF_INIT;
37
+ git_str path = GIT_STR_INIT;
36
38
  char *worktree;
37
39
  size_t i, len;
38
40
  int error;
@@ -43,18 +45,18 @@ int git_worktree_list(git_strarray *wts, git_repository *repo)
43
45
  wts->count = 0;
44
46
  wts->strings = NULL;
45
47
 
46
- if ((error = git_buf_joinpath(&path, repo->commondir, "worktrees/")) < 0)
48
+ if ((error = git_str_joinpath(&path, repo->commondir, "worktrees/")) < 0)
47
49
  goto exit;
48
- if (!git_path_exists(path.ptr) || git_path_is_empty_dir(path.ptr))
50
+ if (!git_fs_path_exists(path.ptr) || git_fs_path_is_empty_dir(path.ptr))
49
51
  goto exit;
50
- if ((error = git_path_dirload(&worktrees, path.ptr, path.size, 0x0)) < 0)
52
+ if ((error = git_fs_path_dirload(&worktrees, path.ptr, path.size, 0x0)) < 0)
51
53
  goto exit;
52
54
 
53
55
  len = path.size;
54
56
 
55
57
  git_vector_foreach(&worktrees, i, worktree) {
56
- git_buf_truncate(&path, len);
57
- git_buf_puts(&path, worktree);
58
+ git_str_truncate(&path, len);
59
+ git_str_puts(&path, worktree);
58
60
 
59
61
  if (!is_worktree_dir(path.ptr)) {
60
62
  git_vector_remove(&worktrees, i);
@@ -65,68 +67,68 @@ int git_worktree_list(git_strarray *wts, git_repository *repo)
65
67
  wts->strings = (char **)git_vector_detach(&wts->count, NULL, &worktrees);
66
68
 
67
69
  exit:
68
- git_buf_dispose(&path);
70
+ git_str_dispose(&path);
69
71
 
70
72
  return error;
71
73
  }
72
74
 
73
75
  char *git_worktree__read_link(const char *base, const char *file)
74
76
  {
75
- git_buf path = GIT_BUF_INIT, buf = GIT_BUF_INIT;
77
+ git_str path = GIT_STR_INIT, buf = GIT_STR_INIT;
76
78
 
77
79
  GIT_ASSERT_ARG_WITH_RETVAL(base, NULL);
78
80
  GIT_ASSERT_ARG_WITH_RETVAL(file, NULL);
79
81
 
80
- if (git_buf_joinpath(&path, base, file) < 0)
82
+ if (git_str_joinpath(&path, base, file) < 0)
81
83
  goto err;
82
84
  if (git_futils_readbuffer(&buf, path.ptr) < 0)
83
85
  goto err;
84
- git_buf_dispose(&path);
86
+ git_str_dispose(&path);
85
87
 
86
- git_buf_rtrim(&buf);
88
+ git_str_rtrim(&buf);
87
89
 
88
- if (!git_path_is_relative(buf.ptr))
89
- return git_buf_detach(&buf);
90
+ if (!git_fs_path_is_relative(buf.ptr))
91
+ return git_str_detach(&buf);
90
92
 
91
- if (git_buf_sets(&path, base) < 0)
93
+ if (git_str_sets(&path, base) < 0)
92
94
  goto err;
93
- if (git_path_apply_relative(&path, buf.ptr) < 0)
95
+ if (git_fs_path_apply_relative(&path, buf.ptr) < 0)
94
96
  goto err;
95
- git_buf_dispose(&buf);
97
+ git_str_dispose(&buf);
96
98
 
97
- return git_buf_detach(&path);
99
+ return git_str_detach(&path);
98
100
 
99
101
  err:
100
- git_buf_dispose(&buf);
101
- git_buf_dispose(&path);
102
+ git_str_dispose(&buf);
103
+ git_str_dispose(&path);
102
104
 
103
105
  return NULL;
104
106
  }
105
107
 
106
- static int write_wtfile(const char *base, const char *file, const git_buf *buf)
108
+ static int write_wtfile(const char *base, const char *file, const git_str *buf)
107
109
  {
108
- git_buf path = GIT_BUF_INIT;
110
+ git_str path = GIT_STR_INIT;
109
111
  int err;
110
112
 
111
113
  GIT_ASSERT_ARG(base);
112
114
  GIT_ASSERT_ARG(file);
113
115
  GIT_ASSERT_ARG(buf);
114
116
 
115
- if ((err = git_buf_joinpath(&path, base, file)) < 0)
117
+ if ((err = git_str_joinpath(&path, base, file)) < 0)
116
118
  goto out;
117
119
 
118
120
  if ((err = git_futils_writebuffer(buf, path.ptr, O_CREAT|O_EXCL|O_WRONLY, 0644)) < 0)
119
121
  goto out;
120
122
 
121
123
  out:
122
- git_buf_dispose(&path);
124
+ git_str_dispose(&path);
123
125
 
124
126
  return err;
125
127
  }
126
128
 
127
129
  static int open_worktree_dir(git_worktree **out, const char *parent, const char *dir, const char *name)
128
130
  {
129
- git_buf gitdir = GIT_BUF_INIT;
131
+ git_str gitdir = GIT_STR_INIT;
130
132
  git_worktree *wt = NULL;
131
133
  int error = 0;
132
134
 
@@ -135,7 +137,7 @@ static int open_worktree_dir(git_worktree **out, const char *parent, const char
135
137
  goto out;
136
138
  }
137
139
 
138
- if ((error = git_path_validate_workdir(NULL, dir)) < 0)
140
+ if ((error = git_path_validate_length(NULL, dir)) < 0)
139
141
  goto out;
140
142
 
141
143
  if ((wt = git__calloc(1, sizeof(*wt))) == NULL) {
@@ -147,14 +149,14 @@ static int open_worktree_dir(git_worktree **out, const char *parent, const char
147
149
  (wt->commondir_path = git_worktree__read_link(dir, "commondir")) == NULL ||
148
150
  (wt->gitlink_path = git_worktree__read_link(dir, "gitdir")) == NULL ||
149
151
  (parent && (wt->parent_path = git__strdup(parent)) == NULL) ||
150
- (wt->worktree_path = git_path_dirname(wt->gitlink_path)) == NULL) {
152
+ (wt->worktree_path = git_fs_path_dirname(wt->gitlink_path)) == NULL) {
151
153
  error = -1;
152
154
  goto out;
153
155
  }
154
156
 
155
- if ((error = git_path_prettify_dir(&gitdir, dir, NULL)) < 0)
157
+ if ((error = git_fs_path_prettify_dir(&gitdir, dir, NULL)) < 0)
156
158
  goto out;
157
- wt->gitdir_path = git_buf_detach(&gitdir);
159
+ wt->gitdir_path = git_str_detach(&gitdir);
158
160
 
159
161
  if ((error = git_worktree_is_locked(NULL, wt)) < 0)
160
162
  goto out;
@@ -166,14 +168,14 @@ static int open_worktree_dir(git_worktree **out, const char *parent, const char
166
168
  out:
167
169
  if (error)
168
170
  git_worktree_free(wt);
169
- git_buf_dispose(&gitdir);
171
+ git_str_dispose(&gitdir);
170
172
 
171
173
  return error;
172
174
  }
173
175
 
174
176
  int git_worktree_lookup(git_worktree **out, git_repository *repo, const char *name)
175
177
  {
176
- git_buf path = GIT_BUF_INIT;
178
+ git_str path = GIT_STR_INIT;
177
179
  git_worktree *wt = NULL;
178
180
  int error;
179
181
 
@@ -182,14 +184,19 @@ int git_worktree_lookup(git_worktree **out, git_repository *repo, const char *na
182
184
 
183
185
  *out = NULL;
184
186
 
185
- if ((error = git_buf_join3(&path, '/', repo->commondir, "worktrees", name)) < 0)
187
+ if ((error = git_str_join3(&path, '/', repo->commondir, "worktrees", name)) < 0)
186
188
  goto out;
187
189
 
190
+ if (!git_fs_path_isdir(path.ptr)) {
191
+ error = GIT_ENOTFOUND;
192
+ goto out;
193
+ }
194
+
188
195
  if ((error = (open_worktree_dir(out, git_repository_workdir(repo), path.ptr, name))) < 0)
189
196
  goto out;
190
197
 
191
198
  out:
192
- git_buf_dispose(&path);
199
+ git_str_dispose(&path);
193
200
 
194
201
  if (error)
195
202
  git_worktree_free(wt);
@@ -199,7 +206,7 @@ out:
199
206
 
200
207
  int git_worktree_open_from_repository(git_worktree **out, git_repository *repo)
201
208
  {
202
- git_buf parent = GIT_BUF_INIT;
209
+ git_str parent = GIT_STR_INIT;
203
210
  const char *gitdir, *commondir;
204
211
  char *name = NULL;
205
212
  int error = 0;
@@ -213,18 +220,18 @@ int git_worktree_open_from_repository(git_worktree **out, git_repository *repo)
213
220
  gitdir = git_repository_path(repo);
214
221
  commondir = git_repository_commondir(repo);
215
222
 
216
- if ((error = git_path_prettify_dir(&parent, "..", commondir)) < 0)
223
+ if ((error = git_fs_path_prettify_dir(&parent, "..", commondir)) < 0)
217
224
  goto out;
218
225
 
219
226
  /* The name is defined by the last component in '.git/worktree/%s' */
220
- name = git_path_basename(gitdir);
227
+ name = git_fs_path_basename(gitdir);
221
228
 
222
229
  if ((error = open_worktree_dir(out, parent.ptr, gitdir, name)) < 0)
223
230
  goto out;
224
231
 
225
232
  out:
226
233
  git__free(name);
227
- git_buf_dispose(&parent);
234
+ git_str_dispose(&parent);
228
235
 
229
236
  return error;
230
237
  }
@@ -254,21 +261,21 @@ int git_worktree_validate(const git_worktree *wt)
254
261
  return GIT_ERROR;
255
262
  }
256
263
 
257
- if (wt->parent_path && !git_path_exists(wt->parent_path)) {
264
+ if (wt->parent_path && !git_fs_path_exists(wt->parent_path)) {
258
265
  git_error_set(GIT_ERROR_WORKTREE,
259
266
  "worktree parent directory ('%s') does not exist ",
260
267
  wt->parent_path);
261
268
  return GIT_ERROR;
262
269
  }
263
270
 
264
- if (!git_path_exists(wt->commondir_path)) {
271
+ if (!git_fs_path_exists(wt->commondir_path)) {
265
272
  git_error_set(GIT_ERROR_WORKTREE,
266
273
  "worktree common directory ('%s') does not exist ",
267
274
  wt->commondir_path);
268
275
  return GIT_ERROR;
269
276
  }
270
277
 
271
- if (!git_path_exists(wt->worktree_path)) {
278
+ if (!git_fs_path_exists(wt->worktree_path)) {
272
279
  git_error_set(GIT_ERROR_WORKTREE,
273
280
  "worktree directory '%s' does not exist",
274
281
  wt->worktree_path);
@@ -298,20 +305,17 @@ int git_worktree_add(git_worktree **out, git_repository *repo,
298
305
  const char *name, const char *worktree,
299
306
  const git_worktree_add_options *opts)
300
307
  {
301
- git_buf gitdir = GIT_BUF_INIT, wddir = GIT_BUF_INIT, buf = GIT_BUF_INIT;
308
+ git_str gitdir = GIT_STR_INIT, wddir = GIT_STR_INIT, buf = GIT_STR_INIT;
302
309
  git_reference *ref = NULL, *head = NULL;
303
310
  git_commit *commit = NULL;
304
311
  git_repository *wt = NULL;
305
- git_checkout_options coopts = GIT_CHECKOUT_OPTIONS_INIT;
312
+ git_checkout_options coopts;
306
313
  git_worktree_add_options wtopts = GIT_WORKTREE_ADD_OPTIONS_INIT;
307
314
  int err;
308
315
 
309
316
  GIT_ERROR_CHECK_VERSION(
310
317
  opts, GIT_WORKTREE_ADD_OPTIONS_VERSION, "git_worktree_add_options");
311
318
 
312
- if (opts)
313
- memcpy(&wtopts, opts, sizeof(wtopts));
314
-
315
319
  GIT_ASSERT_ARG(out);
316
320
  GIT_ASSERT_ARG(repo);
317
321
  GIT_ASSERT_ARG(name);
@@ -319,6 +323,11 @@ int git_worktree_add(git_worktree **out, git_repository *repo,
319
323
 
320
324
  *out = NULL;
321
325
 
326
+ if (opts)
327
+ memcpy(&wtopts, opts, sizeof(wtopts));
328
+
329
+ memcpy(&coopts, &wtopts.checkout_options, sizeof(coopts));
330
+
322
331
  if (wtopts.ref) {
323
332
  if (!git_reference_is_branch(wtopts.ref)) {
324
333
  git_error_set(GIT_ERROR_WORKTREE, "reference is not a branch");
@@ -326,36 +335,46 @@ int git_worktree_add(git_worktree **out, git_repository *repo,
326
335
  goto out;
327
336
  }
328
337
 
329
- if (git_branch_is_checked_out(wtopts.ref)) {
330
- git_error_set(GIT_ERROR_WORKTREE, "reference is already checked out");
331
- err = -1;
338
+ if ((err = git_reference_dup(&ref, wtopts.ref)) < 0)
332
339
  goto out;
333
- }
340
+ } else if (wtopts.checkout_existing && git_branch_lookup(&ref, repo, name, GIT_BRANCH_LOCAL) == 0) {
341
+ /* Do nothing */
342
+ } else if ((err = git_repository_head(&head, repo)) < 0 ||
343
+ (err = git_commit_lookup(&commit, repo, &head->target.oid)) < 0 ||
344
+ (err = git_branch_create(&ref, repo, name, commit, false)) < 0) {
345
+ goto out;
346
+ }
347
+
348
+ if (git_branch_is_checked_out(ref)) {
349
+ git_error_set(GIT_ERROR_WORKTREE, "reference %s is already checked out",
350
+ git_reference_name(ref));
351
+ err = -1;
352
+ goto out;
334
353
  }
335
354
 
336
355
  /* Create gitdir directory ".git/worktrees/<name>" */
337
- if ((err = git_buf_joinpath(&gitdir, repo->commondir, "worktrees")) < 0)
356
+ if ((err = git_str_joinpath(&gitdir, repo->commondir, "worktrees")) < 0)
338
357
  goto out;
339
- if (!git_path_exists(gitdir.ptr))
358
+ if (!git_fs_path_exists(gitdir.ptr))
340
359
  if ((err = git_futils_mkdir(gitdir.ptr, 0755, GIT_MKDIR_EXCL)) < 0)
341
360
  goto out;
342
- if ((err = git_buf_joinpath(&gitdir, gitdir.ptr, name)) < 0)
361
+ if ((err = git_str_joinpath(&gitdir, gitdir.ptr, name)) < 0)
343
362
  goto out;
344
363
  if ((err = git_futils_mkdir(gitdir.ptr, 0755, GIT_MKDIR_EXCL)) < 0)
345
364
  goto out;
346
- if ((err = git_path_prettify_dir(&gitdir, gitdir.ptr, NULL)) < 0)
365
+ if ((err = git_fs_path_prettify_dir(&gitdir, gitdir.ptr, NULL)) < 0)
347
366
  goto out;
348
367
 
349
368
  /* Create worktree work dir */
350
369
  if ((err = git_futils_mkdir(worktree, 0755, GIT_MKDIR_EXCL)) < 0)
351
370
  goto out;
352
- if ((err = git_path_prettify_dir(&wddir, worktree, NULL)) < 0)
371
+ if ((err = git_fs_path_prettify_dir(&wddir, worktree, NULL)) < 0)
353
372
  goto out;
354
373
 
355
374
  if (wtopts.lock) {
356
375
  int fd;
357
376
 
358
- if ((err = git_buf_joinpath(&buf, gitdir.ptr, "locked")) < 0)
377
+ if ((err = git_str_joinpath(&buf, gitdir.ptr, "locked")) < 0)
359
378
  goto out;
360
379
 
361
380
  if ((fd = p_creat(buf.ptr, 0644)) < 0) {
@@ -364,38 +383,25 @@ int git_worktree_add(git_worktree **out, git_repository *repo,
364
383
  }
365
384
 
366
385
  p_close(fd);
367
- git_buf_clear(&buf);
386
+ git_str_clear(&buf);
368
387
  }
369
388
 
370
389
  /* Create worktree .git file */
371
- if ((err = git_buf_printf(&buf, "gitdir: %s\n", gitdir.ptr)) < 0)
390
+ if ((err = git_str_printf(&buf, "gitdir: %s\n", gitdir.ptr)) < 0)
372
391
  goto out;
373
392
  if ((err = write_wtfile(wddir.ptr, ".git", &buf)) < 0)
374
393
  goto out;
375
394
 
376
395
  /* Create gitdir files */
377
- if ((err = git_path_prettify_dir(&buf, repo->commondir, NULL) < 0)
378
- || (err = git_buf_putc(&buf, '\n')) < 0
396
+ if ((err = git_fs_path_prettify_dir(&buf, repo->commondir, NULL) < 0)
397
+ || (err = git_str_putc(&buf, '\n')) < 0
379
398
  || (err = write_wtfile(gitdir.ptr, "commondir", &buf)) < 0)
380
399
  goto out;
381
- if ((err = git_buf_joinpath(&buf, wddir.ptr, ".git")) < 0
382
- || (err = git_buf_putc(&buf, '\n')) < 0
400
+ if ((err = git_str_joinpath(&buf, wddir.ptr, ".git")) < 0
401
+ || (err = git_str_putc(&buf, '\n')) < 0
383
402
  || (err = write_wtfile(gitdir.ptr, "gitdir", &buf)) < 0)
384
403
  goto out;
385
404
 
386
- /* Set up worktree reference */
387
- if (wtopts.ref) {
388
- if ((err = git_reference_dup(&ref, wtopts.ref)) < 0)
389
- goto out;
390
- } else {
391
- if ((err = git_repository_head(&head, repo)) < 0)
392
- goto out;
393
- if ((err = git_commit_lookup(&commit, repo, &head->target.oid)) < 0)
394
- goto out;
395
- if ((err = git_branch_create(&ref, repo, name, commit, false)) < 0)
396
- goto out;
397
- }
398
-
399
405
  /* Set worktree's HEAD */
400
406
  if ((err = git_repository_create_head(gitdir.ptr, git_reference_name(ref))) < 0)
401
407
  goto out;
@@ -403,7 +409,6 @@ int git_worktree_add(git_worktree **out, git_repository *repo,
403
409
  goto out;
404
410
 
405
411
  /* Checkout worktree's HEAD */
406
- coopts.checkout_strategy = GIT_CHECKOUT_FORCE;
407
412
  if ((err = git_checkout_head(wt, &coopts)) < 0)
408
413
  goto out;
409
414
 
@@ -412,9 +417,9 @@ int git_worktree_add(git_worktree **out, git_repository *repo,
412
417
  goto out;
413
418
 
414
419
  out:
415
- git_buf_dispose(&gitdir);
416
- git_buf_dispose(&wddir);
417
- git_buf_dispose(&buf);
420
+ git_str_dispose(&gitdir);
421
+ git_str_dispose(&wddir);
422
+ git_str_dispose(&buf);
418
423
  git_reference_free(ref);
419
424
  git_reference_free(head);
420
425
  git_commit_free(commit);
@@ -425,7 +430,7 @@ out:
425
430
 
426
431
  int git_worktree_lock(git_worktree *wt, const char *reason)
427
432
  {
428
- git_buf buf = GIT_BUF_INIT, path = GIT_BUF_INIT;
433
+ git_str buf = GIT_STR_INIT, path = GIT_STR_INIT;
429
434
  int error;
430
435
 
431
436
  GIT_ASSERT_ARG(wt);
@@ -437,11 +442,11 @@ int git_worktree_lock(git_worktree *wt, const char *reason)
437
442
  goto out;
438
443
  }
439
444
 
440
- if ((error = git_buf_joinpath(&path, wt->gitdir_path, "locked")) < 0)
445
+ if ((error = git_str_joinpath(&path, wt->gitdir_path, "locked")) < 0)
441
446
  goto out;
442
447
 
443
448
  if (reason)
444
- git_buf_attach_notowned(&buf, reason, strlen(reason));
449
+ git_str_attach_notowned(&buf, reason, strlen(reason));
445
450
 
446
451
  if ((error = git_futils_writebuffer(&buf, path.ptr, O_CREAT|O_EXCL|O_WRONLY, 0644)) < 0)
447
452
  goto out;
@@ -449,14 +454,14 @@ int git_worktree_lock(git_worktree *wt, const char *reason)
449
454
  wt->locked = 1;
450
455
 
451
456
  out:
452
- git_buf_dispose(&path);
457
+ git_str_dispose(&path);
453
458
 
454
459
  return error;
455
460
  }
456
461
 
457
462
  int git_worktree_unlock(git_worktree *wt)
458
463
  {
459
- git_buf path = GIT_BUF_INIT;
464
+ git_str path = GIT_STR_INIT;
460
465
  int error;
461
466
 
462
467
  GIT_ASSERT_ARG(wt);
@@ -466,42 +471,61 @@ int git_worktree_unlock(git_worktree *wt)
466
471
  if (!error)
467
472
  return 1;
468
473
 
469
- if (git_buf_joinpath(&path, wt->gitdir_path, "locked") < 0)
474
+ if (git_str_joinpath(&path, wt->gitdir_path, "locked") < 0)
470
475
  return -1;
471
476
 
472
477
  if (p_unlink(path.ptr) != 0) {
473
- git_buf_dispose(&path);
478
+ git_str_dispose(&path);
474
479
  return -1;
475
480
  }
476
481
 
477
482
  wt->locked = 0;
478
483
 
479
- git_buf_dispose(&path);
484
+ git_str_dispose(&path);
480
485
 
481
486
  return 0;
482
487
  }
483
488
 
484
- int git_worktree_is_locked(git_buf *reason, const git_worktree *wt)
489
+ static int git_worktree__is_locked(git_str *reason, const git_worktree *wt)
485
490
  {
486
- git_buf path = GIT_BUF_INIT;
491
+ git_str path = GIT_STR_INIT;
487
492
  int error, locked;
488
493
 
489
494
  GIT_ASSERT_ARG(wt);
490
495
 
491
496
  if (reason)
492
- git_buf_clear(reason);
497
+ git_str_clear(reason);
493
498
 
494
- if ((error = git_buf_joinpath(&path, wt->gitdir_path, "locked")) < 0)
499
+ if ((error = git_str_joinpath(&path, wt->gitdir_path, "locked")) < 0)
495
500
  goto out;
496
- locked = git_path_exists(path.ptr);
501
+ locked = git_fs_path_exists(path.ptr);
497
502
  if (locked && reason &&
498
503
  (error = git_futils_readbuffer(reason, path.ptr)) < 0)
499
504
  goto out;
500
505
 
501
506
  error = locked;
502
507
  out:
503
- git_buf_dispose(&path);
508
+ git_str_dispose(&path);
509
+
510
+ return error;
511
+ }
512
+
513
+ int git_worktree_is_locked(git_buf *reason, const git_worktree *wt)
514
+ {
515
+ git_str str = GIT_STR_INIT;
516
+ int error = 0;
517
+
518
+ if (reason && (error = git_buf_tostr(&str, reason)) < 0)
519
+ return error;
520
+
521
+ error = git_worktree__is_locked(reason ? &str : NULL, wt);
522
+
523
+ if (error >= 0 && reason) {
524
+ if (git_buf_fromstr(reason, &str) < 0)
525
+ error = -1;
526
+ }
504
527
 
528
+ git_str_dispose(&str);
505
529
  return error;
506
530
  }
507
531
 
@@ -538,6 +562,8 @@ int git_worktree_is_prunable(git_worktree *wt,
538
562
  git_worktree_prune_options *opts)
539
563
  {
540
564
  git_worktree_prune_options popts = GIT_WORKTREE_PRUNE_OPTIONS_INIT;
565
+ git_str path = GIT_STR_INIT;
566
+ int ret = 0;
541
567
 
542
568
  GIT_ERROR_CHECK_VERSION(
543
569
  opts, GIT_WORKTREE_PRUNE_OPTIONS_VERSION,
@@ -547,35 +573,48 @@ int git_worktree_is_prunable(git_worktree *wt,
547
573
  memcpy(&popts, opts, sizeof(popts));
548
574
 
549
575
  if ((popts.flags & GIT_WORKTREE_PRUNE_LOCKED) == 0) {
550
- git_buf reason = GIT_BUF_INIT;
551
- int error;
552
-
553
- if ((error = git_worktree_is_locked(&reason, wt)) < 0)
554
- return error;
555
-
556
- if (error) {
557
- if (!reason.size)
558
- git_buf_attach_notowned(&reason, "no reason given", 15);
559
- git_error_set(GIT_ERROR_WORKTREE, "not pruning locked working tree: '%s'", reason.ptr);
560
- git_buf_dispose(&reason);
561
- return 0;
576
+ git_str reason = GIT_STR_INIT;
577
+
578
+ if ((ret = git_worktree__is_locked(&reason, wt)) < 0)
579
+ goto out;
580
+
581
+ if (ret) {
582
+ git_error_set(GIT_ERROR_WORKTREE,
583
+ "not pruning locked working tree: '%s'",
584
+ reason.size ? reason.ptr : "is locked");
585
+
586
+ git_str_dispose(&reason);
587
+ ret = 0;
588
+ goto out;
562
589
  }
563
590
  }
564
591
 
565
592
  if ((popts.flags & GIT_WORKTREE_PRUNE_VALID) == 0 &&
566
593
  git_worktree_validate(wt) == 0) {
567
594
  git_error_set(GIT_ERROR_WORKTREE, "not pruning valid working tree");
568
- return 0;
595
+ goto out;
569
596
  }
570
597
 
571
- return 1;
598
+ if ((ret = git_str_printf(&path, "%s/worktrees/%s", wt->commondir_path, wt->name) < 0))
599
+ goto out;
600
+
601
+ if (!git_fs_path_exists(path.ptr)) {
602
+ git_error_set(GIT_ERROR_WORKTREE, "worktree gitdir ('%s') does not exist", path.ptr);
603
+ goto out;
604
+ }
605
+
606
+ ret = 1;
607
+
608
+ out:
609
+ git_str_dispose(&path);
610
+ return ret;
572
611
  }
573
612
 
574
613
  int git_worktree_prune(git_worktree *wt,
575
614
  git_worktree_prune_options *opts)
576
615
  {
577
616
  git_worktree_prune_options popts = GIT_WORKTREE_PRUNE_OPTIONS_INIT;
578
- git_buf path = GIT_BUF_INIT;
617
+ git_str path = GIT_STR_INIT;
579
618
  char *wtpath;
580
619
  int err;
581
620
 
@@ -592,9 +631,9 @@ int git_worktree_prune(git_worktree *wt,
592
631
  }
593
632
 
594
633
  /* Delete gitdir in parent repository */
595
- if ((err = git_buf_join3(&path, '/', wt->commondir_path, "worktrees", wt->name)) < 0)
634
+ if ((err = git_str_join3(&path, '/', wt->commondir_path, "worktrees", wt->name)) < 0)
596
635
  goto out;
597
- if (!git_path_exists(path.ptr))
636
+ if (!git_fs_path_exists(path.ptr))
598
637
  {
599
638
  git_error_set(GIT_ERROR_WORKTREE, "worktree gitdir '%s' does not exist", path.ptr);
600
639
  err = -1;
@@ -606,15 +645,15 @@ int git_worktree_prune(git_worktree *wt,
606
645
  /* Skip deletion of the actual working tree if it does
607
646
  * not exist or deletion was not requested */
608
647
  if ((popts.flags & GIT_WORKTREE_PRUNE_WORKING_TREE) == 0 ||
609
- !git_path_exists(wt->gitlink_path))
648
+ !git_fs_path_exists(wt->gitlink_path))
610
649
  {
611
650
  goto out;
612
651
  }
613
652
 
614
- if ((wtpath = git_path_dirname(wt->gitlink_path)) == NULL)
653
+ if ((wtpath = git_fs_path_dirname(wt->gitlink_path)) == NULL)
615
654
  goto out;
616
- git_buf_attach(&path, wtpath, 0);
617
- if (!git_path_exists(path.ptr))
655
+ git_str_attach(&path, wtpath, 0);
656
+ if (!git_fs_path_exists(path.ptr))
618
657
  {
619
658
  git_error_set(GIT_ERROR_WORKTREE, "working tree '%s' does not exist", path.ptr);
620
659
  err = -1;
@@ -624,7 +663,7 @@ int git_worktree_prune(git_worktree *wt,
624
663
  goto out;
625
664
 
626
665
  out:
627
- git_buf_dispose(&path);
666
+ git_str_dispose(&path);
628
667
 
629
668
  return err;
630
669
  }
@@ -31,7 +31,7 @@ struct git_worktree {
31
31
  /* Path to the parent's working directory */
32
32
  char *parent_path;
33
33
 
34
- int locked:1;
34
+ unsigned int locked:1;
35
35
  };
36
36
 
37
37
  char *git_worktree__read_link(const char *base, const char *file);