rugged 1.3.2 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (547) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/ext/rugged/extconf.rb +7 -4
  4. data/ext/rugged/rugged.c +16 -0
  5. data/ext/rugged/rugged.h +4 -0
  6. data/ext/rugged/rugged_blame.c +2 -0
  7. data/ext/rugged/rugged_blob.c +3 -0
  8. data/ext/rugged/rugged_commit.c +1 -0
  9. data/ext/rugged/rugged_config.c +9 -2
  10. data/ext/rugged/rugged_diff.c +1 -0
  11. data/ext/rugged/rugged_index.c +2 -0
  12. data/ext/rugged/rugged_patch.c +1 -0
  13. data/ext/rugged/rugged_rebase.c +1 -0
  14. data/ext/rugged/rugged_reference.c +1 -0
  15. data/ext/rugged/rugged_remote.c +28 -10
  16. data/ext/rugged/rugged_repo.c +7 -9
  17. data/ext/rugged/rugged_revwalk.c +5 -1
  18. data/ext/rugged/rugged_settings.c +5 -0
  19. data/ext/rugged/rugged_submodule.c +1 -0
  20. data/ext/rugged/rugged_tag.c +1 -0
  21. data/ext/rugged/rugged_tree.c +4 -0
  22. data/lib/rugged/index.rb +1 -1
  23. data/lib/rugged/tree.rb +5 -1
  24. data/lib/rugged/version.rb +1 -1
  25. data/vendor/libgit2/CMakeLists.txt +132 -288
  26. data/vendor/libgit2/COPYING +106 -19
  27. data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
  28. data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
  29. data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
  30. data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
  31. data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
  32. data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
  33. data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
  34. data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
  35. data/vendor/libgit2/cmake/{FindHTTP_Parser.cmake → FindHTTPParser.cmake} +17 -17
  36. data/vendor/libgit2/cmake/FindIconv.cmake +27 -27
  37. data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
  38. data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
  39. data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
  40. data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
  41. data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
  42. data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
  43. data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
  44. data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
  45. data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
  46. data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
  47. data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
  48. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
  49. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +19 -0
  50. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +100 -100
  51. data/vendor/libgit2/cmake/SelectHashes.cmake +91 -53
  52. data/vendor/libgit2/cmake/SelectRegex.cmake +51 -0
  53. data/vendor/libgit2/cmake/SelectSSH.cmake +41 -0
  54. data/vendor/libgit2/cmake/SelectWinHTTP.cmake +17 -0
  55. data/vendor/libgit2/cmake/SelectZlib.cmake +34 -0
  56. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
  57. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
  58. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +3 -1
  59. data/vendor/libgit2/deps/ntlmclient/ntlm.c +4 -4
  60. data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
  61. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
  62. data/vendor/libgit2/deps/pcre/CMakeLists.txt +88 -88
  63. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
  64. data/vendor/libgit2/deps/zlib/adler32.c +7 -0
  65. data/vendor/libgit2/deps/zlib/crc32.c +975 -288
  66. data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
  67. data/vendor/libgit2/deps/zlib/deflate.c +83 -31
  68. data/vendor/libgit2/deps/zlib/deflate.h +12 -15
  69. data/vendor/libgit2/deps/zlib/gzguts.h +3 -2
  70. data/vendor/libgit2/deps/zlib/infback.c +2 -1
  71. data/vendor/libgit2/deps/zlib/inffast.c +14 -14
  72. data/vendor/libgit2/deps/zlib/inflate.c +39 -8
  73. data/vendor/libgit2/deps/zlib/inflate.h +3 -2
  74. data/vendor/libgit2/deps/zlib/inftrees.c +3 -3
  75. data/vendor/libgit2/deps/zlib/trees.c +27 -48
  76. data/vendor/libgit2/deps/zlib/zlib.h +126 -100
  77. data/vendor/libgit2/deps/zlib/zutil.c +2 -2
  78. data/vendor/libgit2/deps/zlib/zutil.h +12 -9
  79. data/vendor/libgit2/include/git2/apply.h +16 -2
  80. data/vendor/libgit2/include/git2/attr.h +11 -2
  81. data/vendor/libgit2/include/git2/blame.h +4 -1
  82. data/vendor/libgit2/include/git2/blob.h +14 -1
  83. data/vendor/libgit2/include/git2/branch.h +4 -2
  84. data/vendor/libgit2/include/git2/buffer.h +18 -78
  85. data/vendor/libgit2/include/git2/cert.h +2 -2
  86. data/vendor/libgit2/include/git2/checkout.h +5 -2
  87. data/vendor/libgit2/include/git2/clone.h +3 -3
  88. data/vendor/libgit2/include/git2/commit.h +2 -0
  89. data/vendor/libgit2/include/git2/common.h +28 -7
  90. data/vendor/libgit2/include/git2/config.h +25 -9
  91. data/vendor/libgit2/include/git2/credential.h +2 -1
  92. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  93. data/vendor/libgit2/include/git2/deprecated.h +9 -1
  94. data/vendor/libgit2/include/git2/describe.h +7 -2
  95. data/vendor/libgit2/include/git2/diff.h +18 -10
  96. data/vendor/libgit2/include/git2/email.h +1 -1
  97. data/vendor/libgit2/include/git2/errors.h +17 -3
  98. data/vendor/libgit2/include/git2/experimental.h +20 -0
  99. data/vendor/libgit2/include/git2/filter.h +7 -2
  100. data/vendor/libgit2/include/git2/graph.h +1 -0
  101. data/vendor/libgit2/include/git2/ignore.h +1 -1
  102. data/vendor/libgit2/include/git2/index.h +11 -5
  103. data/vendor/libgit2/include/git2/indexer.h +48 -0
  104. data/vendor/libgit2/include/git2/merge.h +24 -4
  105. data/vendor/libgit2/include/git2/message.h +2 -0
  106. data/vendor/libgit2/include/git2/object.h +49 -0
  107. data/vendor/libgit2/include/git2/odb.h +94 -13
  108. data/vendor/libgit2/include/git2/odb_backend.h +107 -19
  109. data/vendor/libgit2/include/git2/oid.h +115 -15
  110. data/vendor/libgit2/include/git2/pack.h +24 -8
  111. data/vendor/libgit2/include/git2/patch.h +8 -0
  112. data/vendor/libgit2/include/git2/pathspec.h +1 -1
  113. data/vendor/libgit2/include/git2/proxy.h +1 -1
  114. data/vendor/libgit2/include/git2/rebase.h +9 -1
  115. data/vendor/libgit2/include/git2/refdb.h +3 -0
  116. data/vendor/libgit2/include/git2/reflog.h +1 -1
  117. data/vendor/libgit2/include/git2/refs.h +2 -2
  118. data/vendor/libgit2/include/git2/remote.h +184 -37
  119. data/vendor/libgit2/include/git2/repository.h +34 -10
  120. data/vendor/libgit2/include/git2/reset.h +2 -2
  121. data/vendor/libgit2/include/git2/revparse.h +1 -1
  122. data/vendor/libgit2/include/git2/revwalk.h +4 -1
  123. data/vendor/libgit2/include/git2/signature.h +1 -1
  124. data/vendor/libgit2/include/git2/stash.h +61 -7
  125. data/vendor/libgit2/include/git2/status.h +14 -5
  126. data/vendor/libgit2/include/git2/strarray.h +0 -13
  127. data/vendor/libgit2/include/git2/submodule.h +7 -2
  128. data/vendor/libgit2/include/git2/sys/commit_graph.h +1 -1
  129. data/vendor/libgit2/include/git2/sys/odb_backend.h +3 -6
  130. data/vendor/libgit2/include/git2/sys/remote.h +46 -0
  131. data/vendor/libgit2/include/git2/sys/stream.h +1 -1
  132. data/vendor/libgit2/include/git2/sys/transport.h +46 -39
  133. data/vendor/libgit2/include/git2/tag.h +1 -0
  134. data/vendor/libgit2/include/git2/tree.h +4 -3
  135. data/vendor/libgit2/include/git2/types.h +7 -7
  136. data/vendor/libgit2/include/git2/version.h +27 -6
  137. data/vendor/libgit2/include/git2/worktree.h +12 -2
  138. data/vendor/libgit2/include/git2.h +1 -0
  139. data/vendor/libgit2/src/CMakeLists.txt +177 -419
  140. data/vendor/libgit2/src/README.md +12 -0
  141. data/vendor/libgit2/src/cli/CMakeLists.txt +57 -0
  142. data/vendor/libgit2/src/cli/README.md +26 -0
  143. data/vendor/libgit2/src/cli/cli.h +20 -0
  144. data/vendor/libgit2/src/cli/cmd.c +21 -0
  145. data/vendor/libgit2/src/cli/cmd.h +33 -0
  146. data/vendor/libgit2/src/cli/cmd_cat_file.c +204 -0
  147. data/vendor/libgit2/src/cli/cmd_clone.c +176 -0
  148. data/vendor/libgit2/src/cli/cmd_hash_object.c +154 -0
  149. data/vendor/libgit2/src/cli/cmd_help.c +86 -0
  150. data/vendor/libgit2/src/cli/error.h +51 -0
  151. data/vendor/libgit2/src/cli/main.c +106 -0
  152. data/vendor/libgit2/src/cli/opt.c +669 -0
  153. data/vendor/libgit2/src/cli/opt.h +349 -0
  154. data/vendor/libgit2/src/cli/opt_usage.c +194 -0
  155. data/vendor/libgit2/src/cli/opt_usage.h +35 -0
  156. data/vendor/libgit2/src/cli/progress.c +345 -0
  157. data/vendor/libgit2/src/cli/progress.h +117 -0
  158. data/vendor/libgit2/src/cli/sighandler.h +20 -0
  159. data/vendor/libgit2/src/cli/unix/sighandler.c +36 -0
  160. data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
  161. data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
  162. data/vendor/libgit2/src/libgit2/CMakeLists.txt +141 -0
  163. data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +1 -1
  164. data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
  165. data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +18 -18
  166. data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
  167. data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +18 -18
  168. data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +18 -18
  169. data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +4 -4
  170. data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +18 -13
  171. data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +2 -0
  172. data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -1
  173. data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
  174. data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
  175. data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
  176. data/vendor/libgit2/src/{branch.h → libgit2/branch.h} +15 -3
  177. data/vendor/libgit2/src/libgit2/buf.c +126 -0
  178. data/vendor/libgit2/src/libgit2/buf.h +50 -0
  179. data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +74 -68
  180. data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +13 -13
  181. data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +96 -67
  182. data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +178 -73
  183. data/vendor/libgit2/src/libgit2/commit.h +87 -0
  184. data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +122 -89
  185. data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +14 -4
  186. data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +7 -4
  187. data/vendor/libgit2/src/libgit2/common.h +55 -0
  188. data/vendor/libgit2/src/{config.c → libgit2/config.c} +101 -69
  189. data/vendor/libgit2/src/{config.h → libgit2/config.h} +15 -2
  190. data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +105 -93
  191. data/vendor/libgit2/src/{config_mem.c → libgit2/config_mem.c} +9 -9
  192. data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +27 -23
  193. data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
  194. data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +35 -27
  195. data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +30 -9
  196. data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +2 -4
  197. data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +34 -36
  198. data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +3 -3
  199. data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +44 -26
  200. data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +47 -18
  201. data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
  202. data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +112 -100
  203. data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
  204. data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
  205. data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +13 -8
  206. data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
  207. data/vendor/libgit2/src/{email.c → libgit2/email.c} +55 -39
  208. data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
  209. data/vendor/libgit2/src/{errors.c → libgit2/errors.c} +18 -18
  210. data/vendor/libgit2/src/{errors.h → libgit2/errors.h} +1 -2
  211. data/vendor/libgit2/src/libgit2/experimental.h.in +13 -0
  212. data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +72 -27
  213. data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -1
  214. data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +23 -23
  215. data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +127 -53
  216. data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
  217. data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
  218. data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +35 -34
  219. data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
  220. data/vendor/libgit2/src/{index.c → libgit2/index.c} +91 -90
  221. data/vendor/libgit2/src/{index.h → libgit2/index.h} +6 -3
  222. data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +173 -92
  223. data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +71 -61
  224. data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +5 -5
  225. data/vendor/libgit2/src/{libgit2.c → libgit2/libgit2.c} +46 -11
  226. data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +38 -36
  227. data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +30 -30
  228. data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
  229. data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +2 -2
  230. data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -3
  231. data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
  232. data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +112 -92
  233. data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +5 -4
  234. data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +15 -12
  235. data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +5 -2
  236. data/vendor/libgit2/src/{netops.c → libgit2/netops.c} +1 -2
  237. data/vendor/libgit2/src/{netops.h → libgit2/netops.h} +1 -1
  238. data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +25 -34
  239. data/vendor/libgit2/src/{object.c → libgit2/object.c} +135 -30
  240. data/vendor/libgit2/src/{object.h → libgit2/object.h} +12 -3
  241. data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +228 -81
  242. data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
  243. data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
  244. data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +18 -5
  245. data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +137 -85
  246. data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +136 -90
  247. data/vendor/libgit2/src/libgit2/oid.h +273 -0
  248. data/vendor/libgit2/src/{oidmap.c → libgit2/oidmap.c} +1 -1
  249. data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +56 -30
  250. data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +11 -6
  251. data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +114 -84
  252. data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +31 -16
  253. data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +4 -3
  254. data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
  255. data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +1 -0
  256. data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +27 -11
  257. data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
  258. data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +29 -29
  259. data/vendor/libgit2/src/libgit2/path.c +375 -0
  260. data/vendor/libgit2/src/libgit2/path.h +68 -0
  261. data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +6 -6
  262. data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
  263. data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
  264. data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
  265. data/vendor/libgit2/src/{push.c → libgit2/push.c} +43 -38
  266. data/vendor/libgit2/src/{push.h → libgit2/push.h} +4 -16
  267. data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
  268. data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
  269. data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +119 -107
  270. data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +506 -197
  271. data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +7 -5
  272. data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +1 -2
  273. data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +34 -32
  274. data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +2 -2
  275. data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +32 -37
  276. data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +5 -2
  277. data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +718 -420
  278. data/vendor/libgit2/src/libgit2/remote.h +100 -0
  279. data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +629 -386
  280. data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +20 -9
  281. data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
  282. data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +14 -14
  283. data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +71 -42
  284. data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +12 -8
  285. data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +12 -6
  286. data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -1
  287. data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +235 -61
  288. data/vendor/libgit2/src/{status.c → libgit2/status.c} +4 -1
  289. data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
  290. data/vendor/libgit2/src/libgit2/strarray.h +25 -0
  291. data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +8 -6
  292. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +1 -1
  293. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +7 -3
  294. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +3 -3
  295. data/vendor/libgit2/src/{streams → libgit2/streams}/socket.c +4 -1
  296. data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +177 -161
  297. data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +1 -1
  298. data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
  299. data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +53 -18
  300. data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +73 -42
  301. data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
  302. data/vendor/libgit2/src/{threadstate.c → libgit2/threadstate.c} +3 -3
  303. data/vendor/libgit2/src/{threadstate.h → libgit2/threadstate.h} +2 -2
  304. data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
  305. data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
  306. data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +1 -1
  307. data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +1 -1
  308. data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +10 -10
  309. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
  310. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +2 -3
  311. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.c +12 -13
  312. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.c +10 -10
  313. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +0 -1
  314. data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +9 -11
  315. data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +41 -20
  316. data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +2 -3
  317. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +75 -66
  318. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
  319. data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +138 -116
  320. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +92 -133
  321. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +35 -32
  322. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +177 -65
  323. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +97 -49
  324. data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.c +365 -198
  325. data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +58 -59
  326. data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +8 -8
  327. data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +2 -2
  328. data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +93 -83
  329. data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +4 -4
  330. data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +121 -94
  331. data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
  332. data/vendor/libgit2/src/libgit2/xdiff/git-xdiff.h +53 -0
  333. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiff.h +15 -15
  334. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.c +134 -108
  335. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.c +23 -7
  336. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xhistogram.c +87 -78
  337. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xinclude.h +1 -12
  338. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmerge.c +104 -117
  339. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xpatience.c +6 -17
  340. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.c +15 -20
  341. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.c +18 -7
  342. data/vendor/libgit2/src/util/CMakeLists.txt +80 -0
  343. data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.h +1 -1
  344. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
  345. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
  346. data/vendor/libgit2/src/{array.h → util/array.h} +1 -1
  347. data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
  348. data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +1 -1
  349. data/vendor/libgit2/src/{date.c → util/date.c} +14 -20
  350. data/vendor/libgit2/src/util/date.h +33 -0
  351. data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +29 -29
  352. data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +2 -2
  353. data/vendor/libgit2/src/{path.c → util/fs_path.c} +453 -647
  354. data/vendor/libgit2/src/{path.h → util/fs_path.h} +221 -188
  355. data/vendor/libgit2/src/{futils.c → util/futils.c} +135 -90
  356. data/vendor/libgit2/src/{futils.h → util/futils.h} +28 -15
  357. data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +15 -1
  358. data/vendor/libgit2/src/{common.h → util/git2_util.h} +20 -59
  359. data/vendor/libgit2/src/util/hash/builtin.c +53 -0
  360. data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
  361. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
  362. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
  363. data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
  364. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
  365. data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
  366. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
  367. data/vendor/libgit2/src/util/hash/openssl.c +195 -0
  368. data/vendor/libgit2/src/util/hash/openssl.h +45 -0
  369. data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
  370. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
  371. data/vendor/libgit2/src/util/hash/sha.h +70 -0
  372. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
  373. data/vendor/libgit2/src/util/hash/win32.c +549 -0
  374. data/vendor/libgit2/src/util/hash/win32.h +60 -0
  375. data/vendor/libgit2/src/util/hash.c +158 -0
  376. data/vendor/libgit2/src/util/hash.h +61 -0
  377. data/vendor/libgit2/src/{khash.h → util/khash.h} +1 -1
  378. data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
  379. data/vendor/libgit2/src/util/net.c +1003 -0
  380. data/vendor/libgit2/src/{net.h → util/net.h} +18 -4
  381. data/vendor/libgit2/src/{pool.h → util/pool.h} +1 -1
  382. data/vendor/libgit2/src/{posix.c → util/posix.c} +3 -3
  383. data/vendor/libgit2/src/{posix.h → util/posix.h} +4 -1
  384. data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +2 -2
  385. data/vendor/libgit2/src/util/rand.c +234 -0
  386. data/vendor/libgit2/src/util/rand.h +37 -0
  387. data/vendor/libgit2/src/{regexp.c → util/regexp.c} +4 -4
  388. data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
  389. data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
  390. data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
  391. data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +1 -1
  392. data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +2 -2
  393. data/vendor/libgit2/src/{buffer.c → util/str.c} +157 -151
  394. data/vendor/libgit2/src/util/str.h +357 -0
  395. data/vendor/libgit2/src/{strmap.h → util/strmap.h} +1 -1
  396. data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
  397. data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
  398. data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
  399. data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
  400. data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -4
  401. data/vendor/libgit2/src/{unix → util/unix}/realpath.c +1 -3
  402. data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
  403. data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
  404. data/vendor/libgit2/src/{util.c → util/util.c} +15 -15
  405. data/vendor/libgit2/src/{util.h → util/util.h} +4 -29
  406. data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
  407. data/vendor/libgit2/src/{vector.h → util/vector.h} +2 -2
  408. data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
  409. data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
  410. data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
  411. data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
  412. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +140 -9
  413. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
  414. data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
  415. data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +12 -28
  416. data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
  417. data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
  418. data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
  419. data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.h +1 -1
  420. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
  421. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
  422. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
  423. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
  424. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
  425. data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
  426. data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
  427. metadata +402 -356
  428. data/vendor/libgit2/src/buffer.h +0 -374
  429. data/vendor/libgit2/src/commit.h +0 -46
  430. data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
  431. data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
  432. data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
  433. data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
  434. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  435. data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
  436. data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
  437. data/vendor/libgit2/src/hash/sha1.h +0 -38
  438. data/vendor/libgit2/src/hash.c +0 -110
  439. data/vendor/libgit2/src/hash.h +0 -46
  440. data/vendor/libgit2/src/message.h +0 -17
  441. data/vendor/libgit2/src/net.c +0 -540
  442. data/vendor/libgit2/src/oid.h +0 -51
  443. data/vendor/libgit2/src/remote.h +0 -55
  444. data/vendor/libgit2/src/sysdir.c +0 -347
  445. data/vendor/libgit2/src/win32/findfile.c +0 -230
  446. data/vendor/libgit2/src/win32/findfile.h +0 -19
  447. /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
  448. /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
  449. /data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +0 -0
  450. /data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +0 -0
  451. /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
  452. /data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +0 -0
  453. /data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +0 -0
  454. /data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -0
  455. /data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +0 -0
  456. /data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +0 -0
  457. /data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +0 -0
  458. /data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +0 -0
  459. /data/vendor/libgit2/src/{config_entries.c → libgit2/config_entries.c} +0 -0
  460. /data/vendor/libgit2/src/{config_entries.h → libgit2/config_entries.h} +0 -0
  461. /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
  462. /data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +0 -0
  463. /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
  464. /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
  465. /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
  466. /data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +0 -0
  467. /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
  468. /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
  469. /data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +0 -0
  470. /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
  471. /data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +0 -0
  472. /data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +0 -0
  473. /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
  474. /data/vendor/libgit2/src/{idxmap.c → libgit2/idxmap.c} +0 -0
  475. /data/vendor/libgit2/src/{idxmap.h → libgit2/idxmap.h} +0 -0
  476. /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
  477. /data/vendor/libgit2/src/{libgit2.h → libgit2/libgit2.h} +0 -0
  478. /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
  479. /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
  480. /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
  481. /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
  482. /data/vendor/libgit2/src/{offmap.c → libgit2/offmap.c} +0 -0
  483. /data/vendor/libgit2/src/{offmap.h → libgit2/offmap.h} +0 -0
  484. /data/vendor/libgit2/src/{oidarray.c → libgit2/oidarray.c} +0 -0
  485. /data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +0 -0
  486. /data/vendor/libgit2/src/{oidmap.h → libgit2/oidmap.h} +0 -0
  487. /data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +0 -0
  488. /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
  489. /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
  490. /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
  491. /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
  492. /data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +0 -0
  493. /data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +0 -0
  494. /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
  495. /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
  496. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
  497. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +0 -0
  498. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
  499. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
  500. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
  501. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
  502. /data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +0 -0
  503. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +0 -0
  504. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
  505. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +0 -0
  506. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
  507. /data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +0 -0
  508. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +0 -0
  509. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +0 -0
  510. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
  511. /data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.h +0 -0
  512. /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
  513. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.h +0 -0
  514. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.h +0 -0
  515. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmacros.h +0 -0
  516. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.h +0 -0
  517. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xtypes.h +0 -0
  518. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.h +0 -0
  519. /data/vendor/libgit2/src/{alloc.c → util/alloc.c} +0 -0
  520. /data/vendor/libgit2/src/{alloc.h → util/alloc.h} +0 -0
  521. /data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.c +0 -0
  522. /data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.c +0 -0
  523. /data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.c +0 -0
  524. /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
  525. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
  526. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
  527. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
  528. /data/vendor/libgit2/src/{integer.h → util/integer.h} +0 -0
  529. /data/vendor/libgit2/src/{pool.c → util/pool.c} +0 -0
  530. /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
  531. /data/vendor/libgit2/src/{strmap.c → util/strmap.c} +0 -0
  532. /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
  533. /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
  534. /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
  535. /data/vendor/libgit2/src/{vector.c → util/vector.c} +0 -0
  536. /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
  537. /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
  538. /data/vendor/libgit2/src/{win32 → util/win32}/error.c +0 -0
  539. /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
  540. /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
  541. /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
  542. /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
  543. /data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.c +0 -0
  544. /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
  545. /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
  546. /data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +0 -0
  547. /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
@@ -0,0 +1,126 @@
1
+ /*
2
+ * Copyright (C) the libgit2 contributors. All rights reserved.
3
+ *
4
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
5
+ * a Linking Exception. For full terms see the included COPYING file.
6
+ */
7
+
8
+ #include "buf.h"
9
+ #include "common.h"
10
+
11
+ int git_buf_sanitize(git_buf *buf)
12
+ {
13
+ GIT_ASSERT_ARG(buf);
14
+
15
+ if (buf->reserved > 0)
16
+ buf->ptr[0] = '\0';
17
+ else
18
+ buf->ptr = git_str__initstr;
19
+
20
+ buf->size = 0;
21
+ return 0;
22
+ }
23
+
24
+ int git_buf_tostr(git_str *out, git_buf *buf)
25
+ {
26
+ GIT_ASSERT_ARG(out);
27
+ GIT_ASSERT_ARG(buf);
28
+
29
+ if (git_buf_sanitize(buf) < 0)
30
+ return -1;
31
+
32
+ out->ptr = buf->ptr;
33
+ out->asize = buf->reserved;
34
+ out->size = buf->size;
35
+
36
+ buf->ptr = git_str__initstr;
37
+ buf->reserved = 0;
38
+ buf->size = 0;
39
+
40
+ return 0;
41
+ }
42
+
43
+ int git_buf_fromstr(git_buf *out, git_str *str)
44
+ {
45
+ GIT_ASSERT_ARG(out);
46
+ GIT_ASSERT_ARG(str);
47
+
48
+ out->ptr = str->ptr;
49
+ out->reserved = str->asize;
50
+ out->size = str->size;
51
+
52
+ str->ptr = git_str__initstr;
53
+ str->asize = 0;
54
+ str->size = 0;
55
+
56
+ return 0;
57
+ }
58
+
59
+ void git_buf_dispose(git_buf *buf)
60
+ {
61
+ if (!buf)
62
+ return;
63
+
64
+ if (buf->ptr != git_str__initstr)
65
+ git__free(buf->ptr);
66
+
67
+ buf->ptr = git_str__initstr;
68
+ buf->reserved = 0;
69
+ buf->size = 0;
70
+ }
71
+
72
+ #ifndef GIT_DEPRECATE_HARD
73
+ int git_buf_grow(git_buf *buffer, size_t target_size)
74
+ {
75
+ char *newptr;
76
+
77
+ if (buffer->reserved >= target_size)
78
+ return 0;
79
+
80
+ if (buffer->ptr == git_str__initstr)
81
+ newptr = git__malloc(target_size);
82
+ else
83
+ newptr = git__realloc(buffer->ptr, target_size);
84
+
85
+ if (!newptr)
86
+ return -1;
87
+
88
+ buffer->ptr = newptr;
89
+ buffer->reserved = target_size;
90
+ return 0;
91
+ }
92
+
93
+ int git_buf_set(git_buf *buffer, const void *data, size_t datalen)
94
+ {
95
+ size_t alloclen;
96
+
97
+ GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, datalen, 1);
98
+
99
+ if (git_buf_grow(buffer, alloclen) < 0)
100
+ return -1;
101
+
102
+ memmove(buffer->ptr, data, datalen);
103
+ buffer->size = datalen;
104
+ buffer->ptr[buffer->size] = '\0';
105
+
106
+ return 0;
107
+ }
108
+
109
+ int git_buf_is_binary(const git_buf *buf)
110
+ {
111
+ git_str str = GIT_STR_INIT_CONST(buf->ptr, buf->size);
112
+ return git_str_is_binary(&str);
113
+ }
114
+
115
+ int git_buf_contains_nul(const git_buf *buf)
116
+ {
117
+ git_str str = GIT_STR_INIT_CONST(buf->ptr, buf->size);
118
+ return git_str_contains_nul(&str);
119
+ }
120
+
121
+ void git_buf_free(git_buf *buffer)
122
+ {
123
+ git_buf_dispose(buffer);
124
+ }
125
+
126
+ #endif
@@ -0,0 +1,50 @@
1
+ /*
2
+ * Copyright (C) the libgit2 contributors. All rights reserved.
3
+ *
4
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
5
+ * a Linking Exception. For full terms see the included COPYING file.
6
+ */
7
+ #ifndef INCLUDE_buf_h__
8
+ #define INCLUDE_buf_h__
9
+
10
+ #include "git2/buffer.h"
11
+ #include "common.h"
12
+
13
+ /*
14
+ * Adapts a private API that takes a `git_str` into a public API that
15
+ * takes a `git_buf`.
16
+ */
17
+
18
+ #define GIT_BUF_WRAP_PRIVATE(buf, fn, ...) \
19
+ { \
20
+ git_str str = GIT_STR_INIT; \
21
+ int error; \
22
+ if ((error = git_buf_tostr(&str, buf)) == 0 && \
23
+ (error = fn(&str, __VA_ARGS__)) == 0) \
24
+ error = git_buf_fromstr(buf, &str); \
25
+ git_str_dispose(&str); \
26
+ return error; \
27
+ }
28
+
29
+ /**
30
+ * "Sanitizes" a buffer from user input. This simply ensures that the
31
+ * `git_buf` has nice defaults if the user didn't set the members to
32
+ * anything, so that if we return early we don't leave it populated
33
+ * with nonsense.
34
+ */
35
+ extern int git_buf_sanitize(git_buf *from_user);
36
+
37
+ /**
38
+ * Populate a `git_str` from a `git_buf` for passing to libgit2 internal
39
+ * functions. Sanitizes the given `git_buf` before proceeding. The
40
+ * `git_buf` will no longer point to this memory.
41
+ */
42
+ extern int git_buf_tostr(git_str *out, git_buf *buf);
43
+
44
+ /**
45
+ * Populate a `git_buf` from a `git_str` for returning to a user.
46
+ * The `git_str` will no longer point to this memory.
47
+ */
48
+ extern int git_buf_fromstr(git_buf *out, git_str *str);
49
+
50
+ #endif
@@ -27,10 +27,11 @@
27
27
  #include "diff_generate.h"
28
28
  #include "pathspec.h"
29
29
  #include "diff_xdiff.h"
30
- #include "path.h"
30
+ #include "fs_path.h"
31
31
  #include "attr.h"
32
32
  #include "pool.h"
33
33
  #include "strmap.h"
34
+ #include "path.h"
34
35
 
35
36
  /* See docs/checkout-internals.md for more information */
36
37
 
@@ -44,7 +45,7 @@ enum {
44
45
  CHECKOUT_ACTION__UPDATE_CONFLICT = 32,
45
46
  CHECKOUT_ACTION__MAX = 32,
46
47
  CHECKOUT_ACTION__REMOVE_AND_UPDATE =
47
- (CHECKOUT_ACTION__UPDATE_BLOB | CHECKOUT_ACTION__REMOVE),
48
+ (CHECKOUT_ACTION__UPDATE_BLOB | CHECKOUT_ACTION__REMOVE)
48
49
  };
49
50
 
50
51
  typedef struct {
@@ -61,9 +62,9 @@ typedef struct {
61
62
  git_vector update_conflicts;
62
63
  git_vector *update_reuc;
63
64
  git_vector *update_names;
64
- git_buf target_path;
65
+ git_str target_path;
65
66
  size_t target_len;
66
- git_buf tmp;
67
+ git_str tmp;
67
68
  unsigned int strategy;
68
69
  int can_symlink;
69
70
  int respect_filemode;
@@ -80,11 +81,11 @@ typedef struct {
80
81
  const git_index_entry *ours;
81
82
  const git_index_entry *theirs;
82
83
 
83
- int name_collision:1,
84
- directoryfile:1,
85
- one_to_two:1,
86
- binary:1,
87
- submodule:1;
84
+ unsigned int name_collision:1,
85
+ directoryfile:1,
86
+ one_to_two:1,
87
+ binary:1,
88
+ submodule:1;
88
89
  } checkout_conflictdata;
89
90
 
90
91
  static int checkout_notify(
@@ -321,14 +322,14 @@ static int checkout_action_no_wd(
321
322
  }
322
323
 
323
324
  static int checkout_target_fullpath(
324
- git_buf **out, checkout_data *data, const char *path)
325
+ git_str **out, checkout_data *data, const char *path)
325
326
  {
326
- git_buf_truncate(&data->target_path, data->target_len);
327
+ git_str_truncate(&data->target_path, data->target_len);
327
328
 
328
- if (path && git_buf_puts(&data->target_path, path) < 0)
329
+ if (path && git_str_puts(&data->target_path, path) < 0)
329
330
  return -1;
330
331
 
331
- if (git_path_validate_workdir_buf(data->repo, &data->target_path) < 0)
332
+ if (git_path_validate_str_length(data->repo, &data->target_path) < 0)
332
333
  return -1;
333
334
 
334
335
  *out = &data->target_path;
@@ -339,7 +340,7 @@ static int checkout_target_fullpath(
339
340
  static bool wd_item_is_removable(
340
341
  checkout_data *data, const git_index_entry *wd)
341
342
  {
342
- git_buf *full;
343
+ git_str *full;
343
344
 
344
345
  if (wd->mode != GIT_FILEMODE_TREE)
345
346
  return true;
@@ -347,7 +348,7 @@ static bool wd_item_is_removable(
347
348
  if (checkout_target_fullpath(&full, data, wd->path) < 0)
348
349
  return false;
349
350
 
350
- return !full || !git_path_contains(full, DOT_GIT);
351
+ return !full || !git_fs_path_contains(full, DOT_GIT);
351
352
  }
352
353
 
353
354
  static int checkout_queue_remove(checkout_data *data, const char *path)
@@ -423,7 +424,7 @@ static int checkout_action_wd_only(
423
424
 
424
425
  /* copy the entry for issuing notification callback later */
425
426
  git_index_entry saved_wd = *wd;
426
- git_buf_sets(&data->tmp, wd->path);
427
+ git_str_sets(&data->tmp, wd->path);
427
428
  saved_wd.path = data->tmp.ptr;
428
429
 
429
430
  error = git_iterator_advance_over(
@@ -476,12 +477,12 @@ static bool submodule_is_config_only(
476
477
 
477
478
  static bool checkout_is_empty_dir(checkout_data *data, const char *path)
478
479
  {
479
- git_buf *fullpath;
480
+ git_str *fullpath;
480
481
 
481
482
  if (checkout_target_fullpath(&fullpath, data, path) < 0)
482
483
  return false;
483
484
 
484
- return git_path_is_empty_dir(fullpath->ptr);
485
+ return git_fs_path_is_empty_dir(fullpath->ptr);
485
486
  }
486
487
 
487
488
  static int checkout_action_with_wd(
@@ -962,7 +963,7 @@ static int checkout_conflicts_load(checkout_data *data, git_iterator *workdir, g
962
963
  {
963
964
  git_index *index;
964
965
 
965
- /* Only write conficts from sources that have them: indexes. */
966
+ /* Only write conflicts from sources that have them: indexes. */
966
967
  if ((index = git_iterator_index(data->target)) == NULL)
967
968
  return 0;
968
969
 
@@ -1201,12 +1202,12 @@ static int checkout_conflicts_mark_directoryfile(
1201
1202
  goto done;
1202
1203
  }
1203
1204
 
1204
- prefixed = git_path_equal_or_prefixed(path, entry->path, NULL);
1205
+ prefixed = git_fs_path_equal_or_prefixed(path, entry->path, NULL);
1205
1206
 
1206
- if (prefixed == GIT_PATH_EQUAL)
1207
+ if (prefixed == GIT_FS_PATH_EQUAL)
1207
1208
  continue;
1208
1209
 
1209
- if (prefixed == GIT_PATH_PREFIX)
1210
+ if (prefixed == GIT_FS_PATH_PREFIX)
1210
1211
  conflict->directoryfile = 1;
1211
1212
 
1212
1213
  break;
@@ -1280,14 +1281,14 @@ static int checkout_verify_paths(
1280
1281
  unsigned int flags = GIT_PATH_REJECT_WORKDIR_DEFAULTS;
1281
1282
 
1282
1283
  if (action & CHECKOUT_ACTION__REMOVE) {
1283
- if (!git_path_validate(repo, delta->old_file.path, delta->old_file.mode, flags)) {
1284
+ if (!git_path_is_valid(repo, delta->old_file.path, delta->old_file.mode, flags)) {
1284
1285
  git_error_set(GIT_ERROR_CHECKOUT, "cannot remove invalid path '%s'", delta->old_file.path);
1285
1286
  return -1;
1286
1287
  }
1287
1288
  }
1288
1289
 
1289
1290
  if (action & ~CHECKOUT_ACTION__REMOVE) {
1290
- if (!git_path_validate(repo, delta->new_file.path, delta->new_file.mode, flags)) {
1291
+ if (!git_path_is_valid(repo, delta->new_file.path, delta->new_file.mode, flags)) {
1291
1292
  git_error_set(GIT_ERROR_CHECKOUT, "cannot checkout to invalid path '%s'", delta->new_file.path);
1292
1293
  return -1;
1293
1294
  }
@@ -1584,7 +1585,7 @@ static int blob_content_to_link(
1584
1585
  git_blob *blob,
1585
1586
  const char *path)
1586
1587
  {
1587
- git_buf linktarget = GIT_BUF_INIT;
1588
+ git_str linktarget = GIT_STR_INIT;
1588
1589
  int error;
1589
1590
 
1590
1591
  if ((error = mkpath2file(data, path, data->opts.dir_mode)) < 0)
@@ -1594,10 +1595,10 @@ static int blob_content_to_link(
1594
1595
  return error;
1595
1596
 
1596
1597
  if (data->can_symlink) {
1597
- if ((error = p_symlink(git_buf_cstr(&linktarget), path)) < 0)
1598
+ if ((error = p_symlink(git_str_cstr(&linktarget), path)) < 0)
1598
1599
  git_error_set(GIT_ERROR_OS, "could not create symlink %s", path);
1599
1600
  } else {
1600
- error = git_futils_fake_symlink(git_buf_cstr(&linktarget), path);
1601
+ error = git_futils_fake_symlink(git_str_cstr(&linktarget), path);
1601
1602
  }
1602
1603
 
1603
1604
  if (!error) {
@@ -1609,7 +1610,7 @@ static int blob_content_to_link(
1609
1610
  st->st_mode = GIT_FILEMODE_LINK;
1610
1611
  }
1611
1612
 
1612
- git_buf_dispose(&linktarget);
1613
+ git_str_dispose(&linktarget);
1613
1614
 
1614
1615
  return error;
1615
1616
  }
@@ -1636,7 +1637,7 @@ static int checkout_submodule_update_index(
1636
1637
  checkout_data *data,
1637
1638
  const git_diff_file *file)
1638
1639
  {
1639
- git_buf *fullpath;
1640
+ git_str *fullpath;
1640
1641
  struct stat st;
1641
1642
 
1642
1643
  /* update the index unless prevented */
@@ -1772,7 +1773,7 @@ static int checkout_blob(
1772
1773
  checkout_data *data,
1773
1774
  const git_diff_file *file)
1774
1775
  {
1775
- git_buf *fullpath;
1776
+ git_str *fullpath;
1776
1777
  struct stat st;
1777
1778
  int error = 0;
1778
1779
 
@@ -1809,7 +1810,7 @@ static int checkout_remove_the_old(
1809
1810
  git_diff_delta *delta;
1810
1811
  const char *str;
1811
1812
  size_t i;
1812
- git_buf *fullpath;
1813
+ git_str *fullpath;
1813
1814
  uint32_t flg = GIT_RMDIR_EMPTY_PARENTS |
1814
1815
  GIT_RMDIR_REMOVE_FILES | GIT_RMDIR_REMOVE_BLOCKERS;
1815
1816
 
@@ -1927,40 +1928,40 @@ static int checkout_lookup_head_tree(git_tree **out, git_repository *repo)
1927
1928
 
1928
1929
 
1929
1930
  static int conflict_entry_name(
1930
- git_buf *out,
1931
+ git_str *out,
1931
1932
  const char *side_name,
1932
1933
  const char *filename)
1933
1934
  {
1934
- if (git_buf_puts(out, side_name) < 0 ||
1935
- git_buf_putc(out, ':') < 0 ||
1936
- git_buf_puts(out, filename) < 0)
1935
+ if (git_str_puts(out, side_name) < 0 ||
1936
+ git_str_putc(out, ':') < 0 ||
1937
+ git_str_puts(out, filename) < 0)
1937
1938
  return -1;
1938
1939
 
1939
1940
  return 0;
1940
1941
  }
1941
1942
 
1942
- static int checkout_path_suffixed(git_buf *path, const char *suffix)
1943
+ static int checkout_path_suffixed(git_str *path, const char *suffix)
1943
1944
  {
1944
1945
  size_t path_len;
1945
1946
  int i = 0, error = 0;
1946
1947
 
1947
- if ((error = git_buf_putc(path, '~')) < 0 || (error = git_buf_puts(path, suffix)) < 0)
1948
+ if ((error = git_str_putc(path, '~')) < 0 || (error = git_str_puts(path, suffix)) < 0)
1948
1949
  return -1;
1949
1950
 
1950
- path_len = git_buf_len(path);
1951
+ path_len = git_str_len(path);
1951
1952
 
1952
- while (git_path_exists(git_buf_cstr(path)) && i < INT_MAX) {
1953
- git_buf_truncate(path, path_len);
1953
+ while (git_fs_path_exists(git_str_cstr(path)) && i < INT_MAX) {
1954
+ git_str_truncate(path, path_len);
1954
1955
 
1955
- if ((error = git_buf_putc(path, '_')) < 0 ||
1956
- (error = git_buf_printf(path, "%d", i)) < 0)
1956
+ if ((error = git_str_putc(path, '_')) < 0 ||
1957
+ (error = git_str_printf(path, "%d", i)) < 0)
1957
1958
  return error;
1958
1959
 
1959
1960
  i++;
1960
1961
  }
1961
1962
 
1962
1963
  if (i == INT_MAX) {
1963
- git_buf_truncate(path, path_len);
1964
+ git_str_truncate(path, path_len);
1964
1965
 
1965
1966
  git_error_set(GIT_ERROR_CHECKOUT, "could not write '%s': working directory file exists", path->ptr);
1966
1967
  return GIT_EEXISTS;
@@ -1974,8 +1975,8 @@ static int checkout_write_entry(
1974
1975
  checkout_conflictdata *conflict,
1975
1976
  const git_index_entry *side)
1976
1977
  {
1977
- const char *hint_path, *suffix;
1978
- git_buf *fullpath;
1978
+ const char *hint_path = NULL, *suffix;
1979
+ git_str *fullpath;
1979
1980
  struct stat st;
1980
1981
  int error;
1981
1982
 
@@ -2025,7 +2026,7 @@ static int checkout_write_entries(
2025
2026
  }
2026
2027
 
2027
2028
  static int checkout_merge_path(
2028
- git_buf *out,
2029
+ git_str *out,
2029
2030
  checkout_data *data,
2030
2031
  checkout_conflictdata *conflict,
2031
2032
  git_merge_file_result *result)
@@ -2033,8 +2034,8 @@ static int checkout_merge_path(
2033
2034
  const char *our_label_raw, *their_label_raw, *suffix;
2034
2035
  int error = 0;
2035
2036
 
2036
- if ((error = git_buf_joinpath(out, data->opts.target_directory, result->path)) < 0 ||
2037
- (error = git_path_validate_workdir_buf(data->repo, out)) < 0)
2037
+ if ((error = git_str_joinpath(out, data->opts.target_directory, result->path)) < 0 ||
2038
+ (error = git_path_validate_str_length(data->repo, out)) < 0)
2038
2039
  return error;
2039
2040
 
2040
2041
  /* Most conflicts simply use the filename in the index */
@@ -2056,9 +2057,9 @@ static int checkout_write_merge(
2056
2057
  checkout_data *data,
2057
2058
  checkout_conflictdata *conflict)
2058
2059
  {
2059
- git_buf our_label = GIT_BUF_INIT, their_label = GIT_BUF_INIT,
2060
- path_suffixed = GIT_BUF_INIT, path_workdir = GIT_BUF_INIT,
2061
- in_data = GIT_BUF_INIT, out_data = GIT_BUF_INIT;
2060
+ git_str our_label = GIT_STR_INIT, their_label = GIT_STR_INIT,
2061
+ path_suffixed = GIT_STR_INIT, path_workdir = GIT_STR_INIT,
2062
+ in_data = GIT_STR_INIT, out_data = GIT_STR_INIT;
2062
2063
  git_merge_file_options opts = GIT_MERGE_FILE_OPTIONS_INIT;
2063
2064
  git_merge_file_result result = {0};
2064
2065
  git_filebuf output = GIT_FILEBUF_INIT;
@@ -2069,6 +2070,9 @@ static int checkout_write_merge(
2069
2070
  if (data->opts.checkout_strategy & GIT_CHECKOUT_CONFLICT_STYLE_DIFF3)
2070
2071
  opts.flags |= GIT_MERGE_FILE_STYLE_DIFF3;
2071
2072
 
2073
+ if (data->opts.checkout_strategy & GIT_CHECKOUT_CONFLICT_STYLE_ZDIFF3)
2074
+ opts.flags |= GIT_MERGE_FILE_STYLE_ZDIFF3;
2075
+
2072
2076
  opts.ancestor_label = data->opts.ancestor_label ?
2073
2077
  data->opts.ancestor_label : "ancestor";
2074
2078
  opts.our_label = data->opts.our_label ?
@@ -2088,8 +2092,8 @@ static int checkout_write_merge(
2088
2092
  &their_label, opts.their_label, conflict->theirs->path)) < 0)
2089
2093
  goto done;
2090
2094
 
2091
- opts.our_label = git_buf_cstr(&our_label);
2092
- opts.their_label = git_buf_cstr(&their_label);
2095
+ opts.our_label = git_str_cstr(&our_label);
2096
+ opts.their_label = git_str_cstr(&their_label);
2093
2097
  }
2094
2098
 
2095
2099
  if ((error = git_merge_file_from_index(&result, data->repo,
@@ -2106,7 +2110,7 @@ static int checkout_write_merge(
2106
2110
  goto done;
2107
2111
 
2108
2112
  if ((data->strategy & GIT_CHECKOUT_UPDATE_ONLY) != 0 &&
2109
- (error = checkout_safe_for_update_only(data, git_buf_cstr(&path_workdir), result.mode)) <= 0)
2113
+ (error = checkout_safe_for_update_only(data, git_str_cstr(&path_workdir), result.mode)) <= 0)
2110
2114
  goto done;
2111
2115
 
2112
2116
  if (!data->opts.disable_filters) {
@@ -2127,7 +2131,7 @@ static int checkout_write_merge(
2127
2131
  }
2128
2132
 
2129
2133
  if ((error = mkpath2file(data, path_workdir.ptr, data->opts.dir_mode)) < 0 ||
2130
- (error = git_filebuf_open(&output, git_buf_cstr(&path_workdir), GIT_FILEBUF_DO_NOT_BUFFER, result.mode)) < 0 ||
2134
+ (error = git_filebuf_open(&output, git_str_cstr(&path_workdir), GIT_FILEBUF_DO_NOT_BUFFER, result.mode)) < 0 ||
2131
2135
  (error = git_filebuf_write(&output, out_data.ptr, out_data.size)) < 0 ||
2132
2136
  (error = git_filebuf_commit(&output)) < 0)
2133
2137
  goto done;
@@ -2135,13 +2139,13 @@ static int checkout_write_merge(
2135
2139
  done:
2136
2140
  git_filter_list_free(fl);
2137
2141
 
2138
- git_buf_dispose(&out_data);
2139
- git_buf_dispose(&our_label);
2140
- git_buf_dispose(&their_label);
2142
+ git_str_dispose(&out_data);
2143
+ git_str_dispose(&our_label);
2144
+ git_str_dispose(&their_label);
2141
2145
 
2142
2146
  git_merge_file_result_free(&result);
2143
- git_buf_dispose(&path_workdir);
2144
- git_buf_dispose(&path_suffixed);
2147
+ git_str_dispose(&path_workdir);
2148
+ git_str_dispose(&path_suffixed);
2145
2149
 
2146
2150
  return error;
2147
2151
  }
@@ -2321,8 +2325,8 @@ static void checkout_data_clear(checkout_data *data)
2321
2325
  git__free(data->pfx);
2322
2326
  data->pfx = NULL;
2323
2327
 
2324
- git_buf_dispose(&data->target_path);
2325
- git_buf_dispose(&data->tmp);
2328
+ git_str_dispose(&data->target_path);
2329
+ git_str_dispose(&data->tmp);
2326
2330
 
2327
2331
  git_index_free(data->index);
2328
2332
  data->index = NULL;
@@ -2337,10 +2341,10 @@ static int validate_target_directory(checkout_data *data)
2337
2341
  {
2338
2342
  int error;
2339
2343
 
2340
- if ((error = git_path_validate_workdir(data->repo, data->opts.target_directory)) < 0)
2344
+ if ((error = git_path_validate_length(data->repo, data->opts.target_directory)) < 0)
2341
2345
  return error;
2342
2346
 
2343
- if (git_path_isdir(data->opts.target_directory))
2347
+ if (git_fs_path_isdir(data->opts.target_directory))
2344
2348
  return 0;
2345
2349
 
2346
2350
  error = checkout_mkdir(data, data->opts.target_directory, NULL,
@@ -2492,6 +2496,8 @@ static int checkout_data_init(
2492
2496
  data->opts.checkout_strategy |= GIT_CHECKOUT_CONFLICT_STYLE_MERGE;
2493
2497
  else if (strcmp(conflict_style->value, "diff3") == 0)
2494
2498
  data->opts.checkout_strategy |= GIT_CHECKOUT_CONFLICT_STYLE_DIFF3;
2499
+ else if (strcmp(conflict_style->value, "zdiff3") == 0)
2500
+ data->opts.checkout_strategy |= GIT_CHECKOUT_CONFLICT_STYLE_ZDIFF3;
2495
2501
  else {
2496
2502
  git_error_set(GIT_ERROR_CHECKOUT, "unknown style '%s' given for 'merge.conflictstyle'",
2497
2503
  conflict_style->value);
@@ -2506,12 +2512,12 @@ static int checkout_data_init(
2506
2512
  (error = git_vector_init(&data->removes, 0, git__strcmp_cb)) < 0 ||
2507
2513
  (error = git_vector_init(&data->remove_conflicts, 0, NULL)) < 0 ||
2508
2514
  (error = git_vector_init(&data->update_conflicts, 0, NULL)) < 0 ||
2509
- (error = git_buf_puts(&data->target_path, data->opts.target_directory)) < 0 ||
2510
- (error = git_path_to_dir(&data->target_path)) < 0 ||
2515
+ (error = git_str_puts(&data->target_path, data->opts.target_directory)) < 0 ||
2516
+ (error = git_fs_path_to_dir(&data->target_path)) < 0 ||
2511
2517
  (error = git_strmap_new(&data->mkdir_map)) < 0)
2512
2518
  goto cleanup;
2513
2519
 
2514
- data->target_len = git_buf_len(&data->target_path);
2520
+ data->target_len = git_str_len(&data->target_path);
2515
2521
 
2516
2522
  git_attr_session__init(&data->attr_session, data->repo);
2517
2523
 
@@ -2623,7 +2629,7 @@ int git_checkout_iterator(
2623
2629
 
2624
2630
  if (data.strategy & GIT_CHECKOUT_DRY_RUN)
2625
2631
  goto cleanup;
2626
-
2632
+
2627
2633
  data.total_steps = counts[CHECKOUT_ACTION__REMOVE] +
2628
2634
  counts[CHECKOUT_ACTION__REMOVE_CONFLICT] +
2629
2635
  counts[CHECKOUT_ACTION__UPDATE_BLOB] +
@@ -26,10 +26,10 @@ static int write_cherrypick_head(
26
26
  const char *commit_oidstr)
27
27
  {
28
28
  git_filebuf file = GIT_FILEBUF_INIT;
29
- git_buf file_path = GIT_BUF_INIT;
29
+ git_str file_path = GIT_STR_INIT;
30
30
  int error = 0;
31
31
 
32
- if ((error = git_buf_joinpath(&file_path, repo->gitdir, GIT_CHERRYPICK_HEAD_FILE)) >= 0 &&
32
+ if ((error = git_str_joinpath(&file_path, repo->gitdir, GIT_CHERRYPICK_HEAD_FILE)) >= 0 &&
33
33
  (error = git_filebuf_open(&file, file_path.ptr, GIT_FILEBUF_CREATE_LEADING_DIRS, GIT_CHERRYPICK_FILE_MODE)) >= 0 &&
34
34
  (error = git_filebuf_printf(&file, "%s\n", commit_oidstr)) >= 0)
35
35
  error = git_filebuf_commit(&file);
@@ -37,7 +37,7 @@ static int write_cherrypick_head(
37
37
  if (error < 0)
38
38
  git_filebuf_cleanup(&file);
39
39
 
40
- git_buf_dispose(&file_path);
40
+ git_str_dispose(&file_path);
41
41
 
42
42
  return error;
43
43
  }
@@ -47,10 +47,10 @@ static int write_merge_msg(
47
47
  const char *commit_msg)
48
48
  {
49
49
  git_filebuf file = GIT_FILEBUF_INIT;
50
- git_buf file_path = GIT_BUF_INIT;
50
+ git_str file_path = GIT_STR_INIT;
51
51
  int error = 0;
52
52
 
53
- if ((error = git_buf_joinpath(&file_path, repo->gitdir, GIT_MERGE_MSG_FILE)) < 0 ||
53
+ if ((error = git_str_joinpath(&file_path, repo->gitdir, GIT_MERGE_MSG_FILE)) < 0 ||
54
54
  (error = git_filebuf_open(&file, file_path.ptr, GIT_FILEBUF_CREATE_LEADING_DIRS, GIT_CHERRYPICK_FILE_MODE)) < 0 ||
55
55
  (error = git_filebuf_printf(&file, "%s", commit_msg)) < 0)
56
56
  goto cleanup;
@@ -61,7 +61,7 @@ cleanup:
61
61
  if (error < 0)
62
62
  git_filebuf_cleanup(&file);
63
63
 
64
- git_buf_dispose(&file_path);
64
+ git_str_dispose(&file_path);
65
65
 
66
66
  return error;
67
67
  }
@@ -106,10 +106,10 @@ static int cherrypick_state_cleanup(git_repository *repo)
106
106
 
107
107
  static int cherrypick_seterr(git_commit *commit, const char *fmt)
108
108
  {
109
- char commit_oidstr[GIT_OID_HEXSZ + 1];
109
+ char commit_oidstr[GIT_OID_SHA1_HEXSIZE + 1];
110
110
 
111
111
  git_error_set(GIT_ERROR_CHERRYPICK, fmt,
112
- git_oid_tostr(commit_oidstr, GIT_OID_HEXSZ + 1, git_commit_id(commit)));
112
+ git_oid_tostr(commit_oidstr, GIT_OID_SHA1_HEXSIZE + 1, git_commit_id(commit)));
113
113
 
114
114
  return -1;
115
115
  }
@@ -173,9 +173,9 @@ int git_cherrypick(
173
173
  git_cherrypick_options opts;
174
174
  git_reference *our_ref = NULL;
175
175
  git_commit *our_commit = NULL;
176
- char commit_oidstr[GIT_OID_HEXSZ + 1];
176
+ char commit_oidstr[GIT_OID_SHA1_HEXSIZE + 1];
177
177
  const char *commit_msg, *commit_summary;
178
- git_buf their_label = GIT_BUF_INIT;
178
+ git_str their_label = GIT_STR_INIT;
179
179
  git_index *index = NULL;
180
180
  git_indexwriter indexwriter = GIT_INDEXWRITER_INIT;
181
181
  int error = 0;
@@ -197,8 +197,8 @@ int git_cherrypick(
197
197
  git_oid_nfmt(commit_oidstr, sizeof(commit_oidstr), git_commit_id(commit));
198
198
 
199
199
  if ((error = write_merge_msg(repo, commit_msg)) < 0 ||
200
- (error = git_buf_printf(&their_label, "%.7s... %s", commit_oidstr, commit_summary)) < 0 ||
201
- (error = cherrypick_normalize_opts(repo, &opts, given_opts, git_buf_cstr(&their_label))) < 0 ||
200
+ (error = git_str_printf(&their_label, "%.7s... %s", commit_oidstr, commit_summary)) < 0 ||
201
+ (error = cherrypick_normalize_opts(repo, &opts, given_opts, git_str_cstr(&their_label))) < 0 ||
202
202
  (error = git_indexwriter_init_for_operation(&indexwriter, repo, &opts.checkout_opts.checkout_strategy)) < 0 ||
203
203
  (error = write_cherrypick_head(repo, commit_oidstr)) < 0 ||
204
204
  (error = git_repository_head(&our_ref, repo)) < 0 ||
@@ -220,7 +220,7 @@ done:
220
220
  git_index_free(index);
221
221
  git_commit_free(our_commit);
222
222
  git_reference_free(our_ref);
223
- git_buf_dispose(&their_label);
223
+ git_str_dispose(&their_label);
224
224
 
225
225
  return error;
226
226
  }