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
@@ -9,6 +9,7 @@
9
9
 
10
10
  #include "tree.h"
11
11
  #include "index.h"
12
+ #include "path.h"
12
13
 
13
14
  #define GIT_ITERATOR_FIRST_ACCESS (1 << 15)
14
15
  #define GIT_ITERATOR_HONOR_IGNORES (1 << 16)
@@ -292,7 +293,7 @@ typedef enum {
292
293
  ITERATOR_PATHLIST_IS_FILE = 1,
293
294
  ITERATOR_PATHLIST_IS_DIR = 2,
294
295
  ITERATOR_PATHLIST_IS_PARENT = 3,
295
- ITERATOR_PATHLIST_FULL = 4,
296
+ ITERATOR_PATHLIST_FULL = 4
296
297
  } iterator_pathlist_search_t;
297
298
 
298
299
  static iterator_pathlist_search_t iterator_pathlist_search(
@@ -424,7 +425,7 @@ typedef struct {
424
425
  git_tree *tree;
425
426
 
426
427
  /* path to this particular frame (folder) */
427
- git_buf path;
428
+ git_str path;
428
429
 
429
430
  /* a sorted list of the entries for this frame (folder), these are
430
431
  * actually pointers to the iterator's entry pool.
@@ -441,7 +442,7 @@ typedef struct {
441
442
  * parent path.
442
443
  */
443
444
  git_vector similar_trees;
444
- git_array_t(git_buf) similar_paths;
445
+ git_array_t(git_str) similar_paths;
445
446
  } tree_iterator_frame;
446
447
 
447
448
  typedef struct {
@@ -450,7 +451,7 @@ typedef struct {
450
451
  git_array_t(tree_iterator_frame) frames;
451
452
 
452
453
  git_index_entry entry;
453
- git_buf entry_path;
454
+ git_str entry_path;
454
455
 
455
456
  /* a pool of entries to reduce the number of allocations */
456
457
  git_pool entry_pool;
@@ -472,7 +473,7 @@ GIT_INLINE(tree_iterator_frame *) tree_iterator_current_frame(
472
473
  GIT_INLINE(int) tree_entry_cmp(
473
474
  const git_tree_entry *a, const git_tree_entry *b, bool icase)
474
475
  {
475
- return git_path_cmp(
476
+ return git_fs_path_cmp(
476
477
  a->filename, a->filename_len, a->attr == GIT_FILEMODE_TREE,
477
478
  b->filename, b->filename_len, b->attr == GIT_FILEMODE_TREE,
478
479
  icase ? git__strncasecmp : git__strncmp);
@@ -508,20 +509,20 @@ static int tree_iterator_entry_sort_icase(const void *ptr_a, const void *ptr_b)
508
509
  }
509
510
 
510
511
  static int tree_iterator_compute_path(
511
- git_buf *out,
512
+ git_str *out,
512
513
  tree_iterator_entry *entry)
513
514
  {
514
- git_buf_clear(out);
515
+ git_str_clear(out);
515
516
 
516
517
  if (entry->parent_path)
517
- git_buf_joinpath(out, entry->parent_path, entry->tree_entry->filename);
518
+ git_str_joinpath(out, entry->parent_path, entry->tree_entry->filename);
518
519
  else
519
- git_buf_puts(out, entry->tree_entry->filename);
520
+ git_str_puts(out, entry->tree_entry->filename);
520
521
 
521
522
  if (git_tree_entry__is_tree(entry->tree_entry))
522
- git_buf_putc(out, '/');
523
+ git_str_putc(out, '/');
523
524
 
524
- if (git_buf_oom(out))
525
+ if (git_str_oom(out))
525
526
  return -1;
526
527
 
527
528
  return 0;
@@ -601,7 +602,7 @@ GIT_INLINE(int) tree_iterator_frame_push_neighbors(
601
602
  tree_iterator_entry *entry, *new_entry;
602
603
  git_tree *tree = NULL;
603
604
  git_tree_entry *tree_entry;
604
- git_buf *path;
605
+ git_str *path;
605
606
  size_t new_size, i;
606
607
  int error = 0;
607
608
 
@@ -612,7 +613,7 @@ GIT_INLINE(int) tree_iterator_frame_push_neighbors(
612
613
  break;
613
614
 
614
615
  if ((error = git_tree_lookup(&tree,
615
- iter->base.repo, entry->tree_entry->oid)) < 0)
616
+ iter->base.repo, &entry->tree_entry->oid)) < 0)
616
617
  break;
617
618
 
618
619
  if (git_vector_insert(&parent_frame->similar_trees, tree) < 0)
@@ -621,7 +622,7 @@ GIT_INLINE(int) tree_iterator_frame_push_neighbors(
621
622
  path = git_array_alloc(parent_frame->similar_paths);
622
623
  GIT_ERROR_CHECK_ALLOC(path);
623
624
 
624
- memset(path, 0, sizeof(git_buf));
625
+ memset(path, 0, sizeof(git_str));
625
626
 
626
627
  if ((error = tree_iterator_compute_path(path, entry)) < 0)
627
628
  break;
@@ -658,7 +659,7 @@ GIT_INLINE(int) tree_iterator_frame_push(
658
659
  int error;
659
660
 
660
661
  if ((error = git_tree_lookup(&tree,
661
- iter->base.repo, entry->tree_entry->oid)) < 0 ||
662
+ iter->base.repo, &entry->tree_entry->oid)) < 0 ||
662
663
  (error = tree_iterator_frame_init(iter, tree, entry)) < 0)
663
664
  goto done;
664
665
 
@@ -681,7 +682,7 @@ done:
681
682
  static int tree_iterator_frame_pop(tree_iterator *iter)
682
683
  {
683
684
  tree_iterator_frame *frame;
684
- git_buf *buf = NULL;
685
+ git_str *buf = NULL;
685
686
  git_tree *tree;
686
687
  size_t i;
687
688
 
@@ -694,7 +695,7 @@ static int tree_iterator_frame_pop(tree_iterator *iter)
694
695
 
695
696
  do {
696
697
  buf = git_array_pop(frame->similar_paths);
697
- git_buf_dispose(buf);
698
+ git_str_dispose(buf);
698
699
  } while (buf != NULL);
699
700
 
700
701
  git_array_clear(frame->similar_paths);
@@ -704,7 +705,7 @@ static int tree_iterator_frame_pop(tree_iterator *iter)
704
705
 
705
706
  git_vector_free(&frame->similar_trees);
706
707
 
707
- git_buf_dispose(&frame->path);
708
+ git_str_dispose(&frame->path);
708
709
 
709
710
  return 0;
710
711
  }
@@ -739,7 +740,7 @@ static void tree_iterator_set_current(
739
740
 
740
741
  iter->entry.mode = tree_entry->attr;
741
742
  iter->entry.path = iter->entry_path.ptr;
742
- git_oid_cpy(&iter->entry.id, tree_entry->oid);
743
+ git_oid_cpy(&iter->entry.id, &tree_entry->oid);
743
744
  }
744
745
 
745
746
  static int tree_iterator_advance(const git_index_entry **out, git_iterator *i)
@@ -892,7 +893,7 @@ static void tree_iterator_clear(tree_iterator *iter)
892
893
  git_array_clear(iter->frames);
893
894
 
894
895
  git_pool_clear(&iter->entry_pool);
895
- git_buf_clear(&iter->entry_path);
896
+ git_str_clear(&iter->entry_path);
896
897
 
897
898
  iterator_clear(&iter->base);
898
899
  }
@@ -925,7 +926,7 @@ static void tree_iterator_free(git_iterator *i)
925
926
  tree_iterator_clear(iter);
926
927
 
927
928
  git_tree_free(iter->root);
928
- git_buf_dispose(&iter->entry_path);
929
+ git_str_dispose(&iter->entry_path);
929
930
  }
930
931
 
931
932
  int git_iterator_for_tree(
@@ -1040,11 +1041,11 @@ typedef struct {
1040
1041
 
1041
1042
  /* info about the current entry */
1042
1043
  git_index_entry entry;
1043
- git_buf current_path;
1044
+ git_str current_path;
1044
1045
  int current_is_ignored;
1045
1046
 
1046
1047
  /* temporary buffer for advance_over */
1047
- git_buf tmp_buf;
1048
+ git_str tmp_buf;
1048
1049
  } filesystem_iterator;
1049
1050
 
1050
1051
 
@@ -1266,11 +1267,11 @@ static int filesystem_iterator_entry_hash(
1266
1267
  filesystem_iterator *iter,
1267
1268
  filesystem_iterator_entry *entry)
1268
1269
  {
1269
- git_buf fullpath = GIT_BUF_INIT;
1270
+ git_str fullpath = GIT_STR_INIT;
1270
1271
  int error;
1271
1272
 
1272
1273
  if (S_ISDIR(entry->st.st_mode)) {
1273
- memset(&entry->id, 0, GIT_OID_RAWSZ);
1274
+ memset(&entry->id, 0, GIT_OID_SHA1_SIZE);
1274
1275
  return 0;
1275
1276
  }
1276
1277
 
@@ -1278,11 +1279,11 @@ static int filesystem_iterator_entry_hash(
1278
1279
  return git_repository_hashfile(&entry->id,
1279
1280
  iter->base.repo, entry->path, GIT_OBJECT_BLOB, NULL);
1280
1281
 
1281
- if (!(error = git_buf_joinpath(&fullpath, iter->root, entry->path)) &&
1282
- !(error = git_path_validate_workdir_buf(iter->base.repo, &fullpath)))
1283
- error = git_odb_hashfile(&entry->id, fullpath.ptr, GIT_OBJECT_BLOB);
1282
+ if (!(error = git_str_joinpath(&fullpath, iter->root, entry->path)) &&
1283
+ !(error = git_path_validate_str_length(iter->base.repo, &fullpath)))
1284
+ error = git_odb__hashfile(&entry->id, fullpath.ptr, GIT_OBJECT_BLOB, GIT_OID_SHA1);
1284
1285
 
1285
- git_buf_dispose(&fullpath);
1286
+ git_str_dispose(&fullpath);
1286
1287
  return error;
1287
1288
  }
1288
1289
 
@@ -1336,8 +1337,8 @@ static int filesystem_iterator_frame_push(
1336
1337
  filesystem_iterator_entry *frame_entry)
1337
1338
  {
1338
1339
  filesystem_iterator_frame *new_frame = NULL;
1339
- git_path_diriter diriter = GIT_PATH_DIRITER_INIT;
1340
- git_buf root = GIT_BUF_INIT;
1340
+ git_fs_path_diriter diriter = GIT_FS_PATH_DIRITER_INIT;
1341
+ git_str root = GIT_STR_INIT;
1341
1342
  const char *path;
1342
1343
  filesystem_iterator_entry *entry;
1343
1344
  struct stat statbuf;
@@ -1356,12 +1357,12 @@ static int filesystem_iterator_frame_push(
1356
1357
  memset(new_frame, 0, sizeof(filesystem_iterator_frame));
1357
1358
 
1358
1359
  if (frame_entry)
1359
- git_buf_joinpath(&root, iter->root, frame_entry->path);
1360
+ git_str_joinpath(&root, iter->root, frame_entry->path);
1360
1361
  else
1361
- git_buf_puts(&root, iter->root);
1362
+ git_str_puts(&root, iter->root);
1362
1363
 
1363
- if (git_buf_oom(&root) ||
1364
- git_path_validate_workdir_buf(iter->base.repo, &root) < 0) {
1364
+ if (git_str_oom(&root) ||
1365
+ git_path_validate_str_length(iter->base.repo, &root) < 0) {
1365
1366
  error = -1;
1366
1367
  goto done;
1367
1368
  }
@@ -1369,7 +1370,7 @@ static int filesystem_iterator_frame_push(
1369
1370
  new_frame->path_len = frame_entry ? frame_entry->path_len : 0;
1370
1371
 
1371
1372
  /* Any error here is equivalent to the dir not existing, skip over it */
1372
- if ((error = git_path_diriter_init(
1373
+ if ((error = git_fs_path_diriter_init(
1373
1374
  &diriter, root.ptr, iter->dirload_flags)) < 0) {
1374
1375
  error = GIT_ENOTFOUND;
1375
1376
  goto done;
@@ -1387,12 +1388,18 @@ static int filesystem_iterator_frame_push(
1387
1388
  /* check if this directory is ignored */
1388
1389
  filesystem_iterator_frame_push_ignores(iter, frame_entry, new_frame);
1389
1390
 
1390
- while ((error = git_path_diriter_next(&diriter)) == 0) {
1391
+ while ((error = git_fs_path_diriter_next(&diriter)) == 0) {
1391
1392
  iterator_pathlist_search_t pathlist_match = ITERATOR_PATHLIST_FULL;
1393
+ git_str path_str = GIT_STR_INIT;
1392
1394
  bool dir_expected = false;
1393
1395
 
1394
- if ((error = git_path_diriter_fullpath(&path, &path_len, &diriter)) < 0 ||
1395
- (error = git_path_validate_workdir_with_len(iter->base.repo, path, path_len)) < 0)
1396
+ if ((error = git_fs_path_diriter_fullpath(&path, &path_len, &diriter)) < 0)
1397
+ goto done;
1398
+
1399
+ path_str.ptr = (char *)path;
1400
+ path_str.size = path_len;
1401
+
1402
+ if ((error = git_path_validate_str_length(iter->base.repo, &path_str)) < 0)
1396
1403
  goto done;
1397
1404
 
1398
1405
  GIT_ASSERT(path_len > iter->root_len);
@@ -1414,7 +1421,7 @@ static int filesystem_iterator_frame_push(
1414
1421
  * we have an index, we can just copy the data out of it.
1415
1422
  */
1416
1423
 
1417
- if ((error = git_path_diriter_stat(&statbuf, &diriter)) < 0) {
1424
+ if ((error = git_fs_path_diriter_stat(&statbuf, &diriter)) < 0) {
1418
1425
  /* file was removed between readdir and lstat */
1419
1426
  if (error == GIT_ENOTFOUND)
1420
1427
  continue;
@@ -1471,8 +1478,8 @@ done:
1471
1478
  if (error < 0)
1472
1479
  git_array_pop(iter->frames);
1473
1480
 
1474
- git_buf_dispose(&root);
1475
- git_path_diriter_free(&diriter);
1481
+ git_str_dispose(&root);
1482
+ git_fs_path_diriter_free(&diriter);
1476
1483
  return error;
1477
1484
  }
1478
1485
 
@@ -1522,6 +1529,8 @@ static void filesystem_iterator_set_current(
1522
1529
 
1523
1530
  if (iter->base.flags & GIT_ITERATOR_INCLUDE_HASH)
1524
1531
  git_oid_cpy(&iter->entry.id, &entry->id);
1532
+ else
1533
+ git_oid_clear(&iter->entry.id, GIT_OID_SHA1);
1525
1534
 
1526
1535
  iter->entry.path = entry->path;
1527
1536
 
@@ -1551,7 +1560,7 @@ static int filesystem_iterator_is_dir(
1551
1560
  const filesystem_iterator_entry *entry)
1552
1561
  {
1553
1562
  struct stat st;
1554
- git_buf fullpath = GIT_BUF_INIT;
1563
+ git_str fullpath = GIT_STR_INIT;
1555
1564
  int error = 0;
1556
1565
 
1557
1566
  if (S_ISDIR(entry->st.st_mode)) {
@@ -1564,15 +1573,15 @@ static int filesystem_iterator_is_dir(
1564
1573
  goto done;
1565
1574
  }
1566
1575
 
1567
- if ((error = git_buf_joinpath(&fullpath, iter->root, entry->path)) < 0 ||
1568
- (error = git_path_validate_workdir_buf(iter->base.repo, &fullpath)) < 0 ||
1576
+ if ((error = git_str_joinpath(&fullpath, iter->root, entry->path)) < 0 ||
1577
+ (error = git_path_validate_str_length(iter->base.repo, &fullpath)) < 0 ||
1569
1578
  (error = p_stat(fullpath.ptr, &st)) < 0)
1570
1579
  goto done;
1571
1580
 
1572
1581
  *is_dir = S_ISDIR(st.st_mode);
1573
1582
 
1574
1583
  done:
1575
- git_buf_dispose(&fullpath);
1584
+ git_str_dispose(&fullpath);
1576
1585
  return error;
1577
1586
  }
1578
1587
 
@@ -1673,7 +1682,7 @@ static int filesystem_iterator_advance_into(
1673
1682
  return filesystem_iterator_advance(out, i);
1674
1683
  }
1675
1684
 
1676
- int git_iterator_current_workdir_path(git_buf **out, git_iterator *i)
1685
+ int git_iterator_current_workdir_path(git_str **out, git_iterator *i)
1677
1686
  {
1678
1687
  filesystem_iterator *iter = GIT_CONTAINER_OF(i, filesystem_iterator, base);
1679
1688
  const git_index_entry *entry;
@@ -1684,10 +1693,10 @@ int git_iterator_current_workdir_path(git_buf **out, git_iterator *i)
1684
1693
  return 0;
1685
1694
  }
1686
1695
 
1687
- git_buf_truncate(&iter->current_path, iter->root_len);
1696
+ git_str_truncate(&iter->current_path, iter->root_len);
1688
1697
 
1689
1698
  if (git_iterator_current(&entry, i) < 0 ||
1690
- git_buf_puts(&iter->current_path, entry->path) < 0)
1699
+ git_str_puts(&iter->current_path, entry->path) < 0)
1691
1700
  return -1;
1692
1701
 
1693
1702
  *out = &iter->current_path;
@@ -1790,8 +1799,8 @@ static int filesystem_iterator_advance_over(
1790
1799
  return filesystem_iterator_advance(out, i);
1791
1800
  }
1792
1801
 
1793
- git_buf_clear(&iter->tmp_buf);
1794
- if ((error = git_buf_puts(&iter->tmp_buf, entry->path)) < 0)
1802
+ git_str_clear(&iter->tmp_buf);
1803
+ if ((error = git_str_puts(&iter->tmp_buf, entry->path)) < 0)
1795
1804
  return error;
1796
1805
 
1797
1806
  base = iter->tmp_buf.ptr;
@@ -1858,7 +1867,7 @@ static void filesystem_iterator_clear(filesystem_iterator *iter)
1858
1867
  git_array_clear(iter->frames);
1859
1868
  git_ignore__free(&iter->ignores);
1860
1869
 
1861
- git_buf_dispose(&iter->tmp_buf);
1870
+ git_str_dispose(&iter->tmp_buf);
1862
1871
 
1863
1872
  iterator_clear(&iter->base);
1864
1873
  }
@@ -1892,7 +1901,7 @@ static void filesystem_iterator_free(git_iterator *i)
1892
1901
  {
1893
1902
  filesystem_iterator *iter = GIT_CONTAINER_OF(i, filesystem_iterator, base);
1894
1903
  git__free(iter->root);
1895
- git_buf_dispose(&iter->current_path);
1904
+ git_str_dispose(&iter->current_path);
1896
1905
  git_tree_free(iter->tree);
1897
1906
  if (iter->index)
1898
1907
  git_index_snapshot_release(&iter->index_snapshot, iter->index);
@@ -1946,7 +1955,7 @@ static int iterator_for_filesystem(
1946
1955
  iter->root[root_len] = '\0';
1947
1956
  iter->root_len = root_len;
1948
1957
 
1949
- if ((error = git_buf_puts(&iter->current_path, iter->root)) < 0)
1958
+ if ((error = git_str_puts(&iter->current_path, iter->root)) < 0)
1950
1959
  goto on_error;
1951
1960
 
1952
1961
  if ((error = iterator_init_common(&iter->base, repo, index, options)) < 0)
@@ -1961,9 +1970,10 @@ static int iterator_for_filesystem(
1961
1970
 
1962
1971
  iter->index = index;
1963
1972
  iter->dirload_flags =
1964
- (iterator__ignore_case(&iter->base) ? GIT_PATH_DIR_IGNORE_CASE : 0) |
1973
+ (iterator__ignore_case(&iter->base) ?
1974
+ GIT_FS_PATH_DIR_IGNORE_CASE : 0) |
1965
1975
  (iterator__flag(&iter->base, PRECOMPOSE_UNICODE) ?
1966
- GIT_PATH_DIR_PRECOMPOSE_UNICODE : 0);
1976
+ GIT_FS_PATH_DIR_PRECOMPOSE_UNICODE : 0);
1967
1977
 
1968
1978
  if ((error = filesystem_iterator_init(iter)) < 0)
1969
1979
  goto on_error;
@@ -2024,7 +2034,7 @@ typedef struct {
2024
2034
 
2025
2035
  /* the pseudotree entry */
2026
2036
  git_index_entry tree_entry;
2027
- git_buf tree_buf;
2037
+ git_str tree_buf;
2028
2038
  bool skip_tree;
2029
2039
 
2030
2040
  const git_index_entry *entry;
@@ -2058,14 +2068,14 @@ static bool index_iterator_create_pseudotree(
2058
2068
  prev_path = iter->entry ? iter->entry->path : "";
2059
2069
 
2060
2070
  /* determine if the new path is in a different directory from the old */
2061
- common_len = git_path_common_dirlen(prev_path, path);
2071
+ common_len = git_fs_path_common_dirlen(prev_path, path);
2062
2072
  relative_path = path + common_len;
2063
2073
 
2064
2074
  if ((dirsep = strchr(relative_path, '/')) == NULL)
2065
2075
  return false;
2066
2076
 
2067
- git_buf_clear(&iter->tree_buf);
2068
- git_buf_put(&iter->tree_buf, path, (dirsep - path) + 1);
2077
+ git_str_clear(&iter->tree_buf);
2078
+ git_str_put(&iter->tree_buf, path, (dirsep - path) + 1);
2069
2079
 
2070
2080
  iter->tree_entry.mode = GIT_FILEMODE_TREE;
2071
2081
  iter->tree_entry.path = iter->tree_buf.ptr;
@@ -2230,7 +2240,7 @@ static void index_iterator_free(git_iterator *i)
2230
2240
  index_iterator *iter = GIT_CONTAINER_OF(i, index_iterator, base);
2231
2241
 
2232
2242
  git_index_snapshot_release(&iter->entries, iter->base.index);
2233
- git_buf_dispose(&iter->tree_buf);
2243
+ git_str_dispose(&iter->tree_buf);
2234
2244
  }
2235
2245
 
2236
2246
  int git_iterator_for_index(
@@ -11,7 +11,7 @@
11
11
 
12
12
  #include "git2/index.h"
13
13
  #include "vector.h"
14
- #include "buffer.h"
14
+ #include "str.h"
15
15
  #include "ignore.h"
16
16
 
17
17
  typedef struct git_iterator git_iterator;
@@ -21,7 +21,7 @@ typedef enum {
21
21
  GIT_ITERATOR_TREE = 1,
22
22
  GIT_ITERATOR_INDEX = 2,
23
23
  GIT_ITERATOR_WORKDIR = 3,
24
- GIT_ITERATOR_FS = 4,
24
+ GIT_ITERATOR_FS = 4
25
25
  } git_iterator_t;
26
26
 
27
27
  typedef enum {
@@ -42,7 +42,7 @@ typedef enum {
42
42
  /** descend into symlinked directories */
43
43
  GIT_ITERATOR_DESCEND_SYMLINKS = (1u << 7),
44
44
  /** hash files in workdir or filesystem iterators */
45
- GIT_ITERATOR_INCLUDE_HASH = (1u << 8),
45
+ GIT_ITERATOR_INCLUDE_HASH = (1u << 8)
46
46
  } git_iterator_flag_t;
47
47
 
48
48
  typedef enum {
@@ -278,11 +278,11 @@ extern bool git_iterator_current_tree_is_ignored(git_iterator *iter);
278
278
 
279
279
  /**
280
280
  * Get full path of the current item from a workdir iterator. This will
281
- * return NULL for a non-workdir iterator. The git_buf is still owned by
281
+ * return NULL for a non-workdir iterator. The git_str is still owned by
282
282
  * the iterator; this is exposed just for efficiency.
283
283
  */
284
284
  extern int git_iterator_current_workdir_path(
285
- git_buf **path, git_iterator *iter);
285
+ git_str **path, git_iterator *iter);
286
286
 
287
287
  /**
288
288
  * Retrieve the index stored in the iterator.
@@ -9,6 +9,7 @@
9
9
 
10
10
  #include <git2.h>
11
11
  #include "alloc.h"
12
+ #include "buf.h"
12
13
  #include "cache.h"
13
14
  #include "common.h"
14
15
  #include "filter.h"
@@ -19,6 +20,7 @@
19
20
  #include "mwindow.h"
20
21
  #include "object.h"
21
22
  #include "odb.h"
23
+ #include "rand.h"
22
24
  #include "refs.h"
23
25
  #include "runtime.h"
24
26
  #include "sysdir.h"
@@ -69,6 +71,7 @@ int git_libgit2_init(void)
69
71
  git_allocator_global_init,
70
72
  git_threadstate_global_init,
71
73
  git_threads_global_init,
74
+ git_rand_global_init,
72
75
  git_hash_global_init,
73
76
  git_sysdir_global_init,
74
77
  git_filter_global_init,
@@ -104,6 +107,11 @@ int git_libgit2_version(int *major, int *minor, int *rev)
104
107
  return 0;
105
108
  }
106
109
 
110
+ const char *git_libgit2_prerelease(void)
111
+ {
112
+ return LIBGIT2_VER_PRERELEASE;
113
+ }
114
+
107
115
  int git_libgit2_features(void)
108
116
  {
109
117
  return 0
@@ -192,15 +200,17 @@ int git_libgit2_opts(int key, ...)
192
200
  {
193
201
  int sysdir = va_arg(ap, int);
194
202
  git_buf *out = va_arg(ap, git_buf *);
195
- const git_buf *tmp;
203
+ git_str str = GIT_STR_INIT;
204
+ const git_str *tmp;
196
205
  int level;
197
206
 
198
- if ((error = config_level_to_sysdir(&level, sysdir)) < 0 ||
199
- (error = git_buf_sanitize(out)) < 0 ||
200
- (error = git_sysdir_get(&tmp, level)) < 0)
207
+ if ((error = git_buf_tostr(&str, out)) < 0 ||
208
+ (error = config_level_to_sysdir(&level, sysdir)) < 0 ||
209
+ (error = git_sysdir_get(&tmp, level)) < 0 ||
210
+ (error = git_str_put(&str, tmp->ptr, tmp->size)) < 0)
201
211
  break;
202
212
 
203
- error = git_buf_sets(out, tmp->ptr);
213
+ error = git_buf_fromstr(out, &str);
204
214
  }
205
215
  break;
206
216
 
@@ -237,13 +247,15 @@ int git_libgit2_opts(int key, ...)
237
247
  case GIT_OPT_GET_TEMPLATE_PATH:
238
248
  {
239
249
  git_buf *out = va_arg(ap, git_buf *);
240
- const git_buf *tmp;
250
+ git_str str = GIT_STR_INIT;
251
+ const git_str *tmp;
241
252
 
242
- if ((error = git_buf_sanitize(out)) < 0 ||
243
- (error = git_sysdir_get(&tmp, GIT_SYSDIR_TEMPLATE)) < 0)
253
+ if ((error = git_buf_tostr(&str, out)) < 0 ||
254
+ (error = git_sysdir_get(&tmp, GIT_SYSDIR_TEMPLATE)) < 0 ||
255
+ (error = git_str_put(&str, tmp->ptr, tmp->size)) < 0)
244
256
  break;
245
257
 
246
- error = git_buf_sets(out, tmp->ptr);
258
+ error = git_buf_fromstr(out, &str);
247
259
  }
248
260
  break;
249
261
 
@@ -306,9 +318,13 @@ int git_libgit2_opts(int key, ...)
306
318
  case GIT_OPT_GET_USER_AGENT:
307
319
  {
308
320
  git_buf *out = va_arg(ap, git_buf *);
309
- if ((error = git_buf_sanitize(out)) < 0)
321
+ git_str str = GIT_STR_INIT;
322
+
323
+ if ((error = git_buf_tostr(&str, out)) < 0 ||
324
+ (error = git_str_puts(&str, git__user_agent)) < 0)
310
325
  break;
311
- error = git_buf_sets(out, git__user_agent);
326
+
327
+ error = git_buf_fromstr(out, &str);
312
328
  }
313
329
  break;
314
330
 
@@ -398,6 +414,25 @@ int git_libgit2_opts(int key, ...)
398
414
  git_repository__validate_ownership = (va_arg(ap, int) != 0);
399
415
  break;
400
416
 
417
+ case GIT_OPT_GET_HOMEDIR:
418
+ {
419
+ git_buf *out = va_arg(ap, git_buf *);
420
+ git_str str = GIT_STR_INIT;
421
+ const git_str *tmp;
422
+
423
+ if ((error = git_buf_tostr(&str, out)) < 0 ||
424
+ (error = git_sysdir_get(&tmp, GIT_SYSDIR_HOME)) < 0 ||
425
+ (error = git_str_put(&str, tmp->ptr, tmp->size)) < 0)
426
+ break;
427
+
428
+ error = git_buf_fromstr(out, &str);
429
+ }
430
+ break;
431
+
432
+ case GIT_OPT_SET_HOMEDIR:
433
+ error = git_sysdir_set(GIT_SYSDIR_HOME, va_arg(ap, const char *));
434
+ break;
435
+
401
436
  default:
402
437
  git_error_set(GIT_ERROR_INVALID, "invalid option key");
403
438
  error = -1;