rugged 1.3.1 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (656) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/ext/rugged/extconf.rb +6 -3
  4. data/ext/rugged/rugged.c +16 -0
  5. data/ext/rugged/rugged.h +4 -0
  6. data/ext/rugged/rugged_allocator.c +0 -54
  7. data/ext/rugged/rugged_blame.c +2 -0
  8. data/ext/rugged/rugged_blob.c +3 -0
  9. data/ext/rugged/rugged_commit.c +1 -0
  10. data/ext/rugged/rugged_config.c +9 -2
  11. data/ext/rugged/rugged_diff.c +1 -0
  12. data/ext/rugged/rugged_index.c +2 -0
  13. data/ext/rugged/rugged_patch.c +1 -0
  14. data/ext/rugged/rugged_rebase.c +1 -0
  15. data/ext/rugged/rugged_reference.c +1 -0
  16. data/ext/rugged/rugged_remote.c +28 -10
  17. data/ext/rugged/rugged_repo.c +7 -9
  18. data/ext/rugged/rugged_revwalk.c +5 -1
  19. data/ext/rugged/rugged_settings.c +5 -0
  20. data/ext/rugged/rugged_submodule.c +1 -0
  21. data/ext/rugged/rugged_tag.c +1 -0
  22. data/ext/rugged/rugged_tree.c +4 -0
  23. data/lib/rugged/index.rb +1 -1
  24. data/lib/rugged/tree.rb +5 -1
  25. data/lib/rugged/version.rb +1 -1
  26. data/vendor/libgit2/AUTHORS +1 -0
  27. data/vendor/libgit2/CMakeLists.txt +141 -289
  28. data/vendor/libgit2/COPYING +301 -20
  29. data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
  30. data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
  31. data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
  32. data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
  33. data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
  34. data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
  35. data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
  36. data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
  37. data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
  38. data/vendor/libgit2/cmake/FindHTTP_Parser.cmake +17 -17
  39. data/vendor/libgit2/cmake/FindIntlIconv.cmake +51 -0
  40. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  41. data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
  42. data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
  43. data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
  44. data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
  45. data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
  46. data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
  47. data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
  48. data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
  49. data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
  50. data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
  51. data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
  52. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
  53. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +34 -0
  54. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +129 -101
  55. data/vendor/libgit2/cmake/SelectHashes.cmake +113 -54
  56. data/vendor/libgit2/cmake/SelectRegex.cmake +56 -0
  57. data/vendor/libgit2/cmake/SelectSSH.cmake +46 -0
  58. data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
  59. data/vendor/libgit2/cmake/SelectZlib.cmake +38 -0
  60. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
  61. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  62. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  63. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  64. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  65. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  66. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  67. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
  68. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  69. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  70. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  71. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +7 -5
  72. data/vendor/libgit2/deps/ntlmclient/ntlm.c +25 -25
  73. data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
  74. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
  75. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  76. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  77. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  78. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  79. data/vendor/libgit2/deps/pcre/CMakeLists.txt +89 -88
  80. data/vendor/libgit2/deps/pcre/LICENCE +5 -5
  81. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  82. data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
  83. data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
  84. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
  85. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
  86. data/vendor/libgit2/deps/xdiff/git-xdiff.h +56 -0
  87. data/vendor/libgit2/{src → deps}/xdiff/xdiff.h +15 -15
  88. data/vendor/libgit2/{src → deps}/xdiff/xdiffi.c +152 -125
  89. data/vendor/libgit2/{src → deps}/xdiff/xdiffi.h +2 -4
  90. data/vendor/libgit2/{src → deps}/xdiff/xemit.c +26 -10
  91. data/vendor/libgit2/{src → deps}/xdiff/xhistogram.c +92 -94
  92. data/vendor/libgit2/{src → deps}/xdiff/xinclude.h +1 -12
  93. data/vendor/libgit2/{src → deps}/xdiff/xmacros.h +18 -1
  94. data/vendor/libgit2/{src → deps}/xdiff/xmerge.c +126 -137
  95. data/vendor/libgit2/{src → deps}/xdiff/xpatience.c +26 -46
  96. data/vendor/libgit2/{src → deps}/xdiff/xprepare.c +24 -46
  97. data/vendor/libgit2/{src → deps}/xdiff/xutils.c +36 -8
  98. data/vendor/libgit2/{src → deps}/xdiff/xutils.h +2 -1
  99. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  100. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  101. data/vendor/libgit2/deps/zlib/adler32.c +7 -22
  102. data/vendor/libgit2/deps/zlib/crc32.c +931 -317
  103. data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
  104. data/vendor/libgit2/deps/zlib/deflate.c +428 -453
  105. data/vendor/libgit2/deps/zlib/deflate.h +51 -23
  106. data/vendor/libgit2/deps/zlib/gzguts.h +15 -19
  107. data/vendor/libgit2/deps/zlib/infback.c +19 -31
  108. data/vendor/libgit2/deps/zlib/inffast.c +15 -18
  109. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  110. data/vendor/libgit2/deps/zlib/inflate.c +75 -110
  111. data/vendor/libgit2/deps/zlib/inflate.h +3 -2
  112. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  113. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  114. data/vendor/libgit2/deps/zlib/trees.c +294 -380
  115. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  116. data/vendor/libgit2/deps/zlib/zlib.h +310 -284
  117. data/vendor/libgit2/deps/zlib/zutil.c +20 -46
  118. data/vendor/libgit2/deps/zlib/zutil.h +24 -41
  119. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  120. data/vendor/libgit2/include/git2/apply.h +43 -8
  121. data/vendor/libgit2/include/git2/attr.h +28 -6
  122. data/vendor/libgit2/include/git2/blame.h +137 -29
  123. data/vendor/libgit2/include/git2/blob.h +85 -29
  124. data/vendor/libgit2/include/git2/branch.h +25 -16
  125. data/vendor/libgit2/include/git2/buffer.h +24 -82
  126. data/vendor/libgit2/include/git2/cert.h +4 -3
  127. data/vendor/libgit2/include/git2/checkout.h +88 -34
  128. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  129. data/vendor/libgit2/include/git2/clone.h +28 -12
  130. data/vendor/libgit2/include/git2/commit.h +134 -3
  131. data/vendor/libgit2/include/git2/common.h +172 -59
  132. data/vendor/libgit2/include/git2/config.h +118 -32
  133. data/vendor/libgit2/include/git2/credential.h +32 -3
  134. data/vendor/libgit2/include/git2/credential_helpers.h +2 -0
  135. data/vendor/libgit2/include/git2/deprecated.h +141 -3
  136. data/vendor/libgit2/include/git2/describe.h +20 -3
  137. data/vendor/libgit2/include/git2/diff.h +95 -19
  138. data/vendor/libgit2/include/git2/email.h +10 -30
  139. data/vendor/libgit2/include/git2/errors.h +51 -61
  140. data/vendor/libgit2/include/git2/experimental.h +20 -0
  141. data/vendor/libgit2/include/git2/filter.h +21 -9
  142. data/vendor/libgit2/include/git2/global.h +8 -1
  143. data/vendor/libgit2/include/git2/graph.h +4 -2
  144. data/vendor/libgit2/include/git2/ignore.h +11 -1
  145. data/vendor/libgit2/include/git2/index.h +111 -11
  146. data/vendor/libgit2/include/git2/indexer.h +67 -2
  147. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  148. data/vendor/libgit2/include/git2/merge.h +70 -5
  149. data/vendor/libgit2/include/git2/message.h +4 -2
  150. data/vendor/libgit2/include/git2/net.h +3 -1
  151. data/vendor/libgit2/include/git2/notes.h +9 -6
  152. data/vendor/libgit2/include/git2/object.h +57 -7
  153. data/vendor/libgit2/include/git2/odb.h +156 -33
  154. data/vendor/libgit2/include/git2/odb_backend.h +132 -16
  155. data/vendor/libgit2/include/git2/oid.h +116 -17
  156. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  157. data/vendor/libgit2/include/git2/pack.h +37 -9
  158. data/vendor/libgit2/include/git2/patch.h +10 -3
  159. data/vendor/libgit2/include/git2/pathspec.h +10 -1
  160. data/vendor/libgit2/include/git2/proxy.h +11 -1
  161. data/vendor/libgit2/include/git2/rebase.h +18 -7
  162. data/vendor/libgit2/include/git2/refdb.h +5 -2
  163. data/vendor/libgit2/include/git2/reflog.h +4 -3
  164. data/vendor/libgit2/include/git2/refs.h +11 -8
  165. data/vendor/libgit2/include/git2/refspec.h +14 -4
  166. data/vendor/libgit2/include/git2/remote.h +295 -54
  167. data/vendor/libgit2/include/git2/repository.h +95 -25
  168. data/vendor/libgit2/include/git2/reset.h +18 -5
  169. data/vendor/libgit2/include/git2/revert.h +9 -4
  170. data/vendor/libgit2/include/git2/revparse.h +4 -4
  171. data/vendor/libgit2/include/git2/revwalk.h +7 -3
  172. data/vendor/libgit2/include/git2/signature.h +47 -2
  173. data/vendor/libgit2/include/git2/stash.h +78 -10
  174. data/vendor/libgit2/include/git2/status.h +24 -11
  175. data/vendor/libgit2/include/git2/stdint.h +87 -85
  176. data/vendor/libgit2/include/git2/strarray.h +2 -16
  177. data/vendor/libgit2/include/git2/submodule.h +27 -11
  178. data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
  179. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  180. data/vendor/libgit2/include/git2/sys/commit_graph.h +110 -59
  181. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  182. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  183. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  184. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  185. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  186. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  187. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  188. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  189. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  190. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  191. data/vendor/libgit2/include/git2/sys/midx.h +47 -4
  192. data/vendor/libgit2/include/git2/sys/odb_backend.h +10 -9
  193. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  194. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  195. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  196. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  197. data/vendor/libgit2/include/git2/sys/remote.h +53 -0
  198. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  199. data/vendor/libgit2/include/git2/sys/stream.h +26 -3
  200. data/vendor/libgit2/include/git2/sys/transport.h +87 -41
  201. data/vendor/libgit2/include/git2/tag.h +4 -1
  202. data/vendor/libgit2/include/git2/trace.h +9 -3
  203. data/vendor/libgit2/include/git2/transaction.h +3 -2
  204. data/vendor/libgit2/include/git2/transport.h +11 -3
  205. data/vendor/libgit2/include/git2/tree.h +20 -8
  206. data/vendor/libgit2/include/git2/types.h +26 -10
  207. data/vendor/libgit2/include/git2/version.h +63 -6
  208. data/vendor/libgit2/include/git2/worktree.h +30 -8
  209. data/vendor/libgit2/include/git2.h +1 -0
  210. data/vendor/libgit2/src/CMakeLists.txt +203 -420
  211. data/vendor/libgit2/src/README.md +12 -0
  212. data/vendor/libgit2/src/cli/CMakeLists.txt +56 -0
  213. data/vendor/libgit2/src/cli/README.md +26 -0
  214. data/vendor/libgit2/src/{branch.h → cli/cmd.c} +10 -8
  215. data/vendor/libgit2/src/cli/cmd.h +37 -0
  216. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  217. data/vendor/libgit2/src/cli/cmd_cat_file.c +202 -0
  218. data/vendor/libgit2/src/cli/cmd_clone.c +190 -0
  219. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  220. data/vendor/libgit2/src/cli/cmd_hash_object.c +152 -0
  221. data/vendor/libgit2/src/cli/cmd_help.c +85 -0
  222. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  223. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  224. data/vendor/libgit2/src/cli/common.c +168 -0
  225. data/vendor/libgit2/src/cli/common.h +63 -0
  226. data/vendor/libgit2/src/cli/error.h +51 -0
  227. data/vendor/libgit2/src/cli/main.c +134 -0
  228. data/vendor/libgit2/src/cli/opt.c +695 -0
  229. data/vendor/libgit2/src/cli/opt.h +367 -0
  230. data/vendor/libgit2/src/cli/opt_usage.c +263 -0
  231. data/vendor/libgit2/src/cli/opt_usage.h +40 -0
  232. data/vendor/libgit2/src/cli/progress.c +395 -0
  233. data/vendor/libgit2/src/cli/progress.h +129 -0
  234. data/vendor/libgit2/src/cli/sighandler.h +20 -0
  235. data/vendor/libgit2/src/cli/unix/sighandler.c +37 -0
  236. data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
  237. data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
  238. data/vendor/libgit2/src/libgit2/CMakeLists.txt +140 -0
  239. data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +2 -2
  240. data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
  241. data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +32 -34
  242. data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
  243. data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +48 -31
  244. data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +25 -20
  245. data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +6 -4
  246. data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +87 -46
  247. data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +5 -9
  248. data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +152 -57
  249. data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +1 -0
  250. data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -2
  251. data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
  252. data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
  253. data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
  254. data/vendor/libgit2/src/libgit2/branch.h +31 -0
  255. data/vendor/libgit2/src/libgit2/buf.c +126 -0
  256. data/vendor/libgit2/src/libgit2/buf.h +50 -0
  257. data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +22 -17
  258. data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +7 -9
  259. data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +107 -91
  260. data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -2
  261. data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +14 -15
  262. data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +254 -203
  263. data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +4 -1
  264. data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +296 -77
  265. data/vendor/libgit2/src/libgit2/commit.h +87 -0
  266. data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +246 -135
  267. data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +33 -8
  268. data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +17 -7
  269. data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +1 -0
  270. data/vendor/libgit2/src/libgit2/common.h +55 -0
  271. data/vendor/libgit2/src/{config.c → libgit2/config.c} +490 -360
  272. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  273. data/vendor/libgit2/src/{config.h → libgit2/config.h} +24 -6
  274. data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +8 -10
  275. data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +4 -5
  276. data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +212 -183
  277. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  278. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  279. data/vendor/libgit2/src/libgit2/config_mem.c +374 -0
  280. data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +37 -32
  281. data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +24 -31
  282. data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
  283. data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +62 -51
  284. data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +44 -14
  285. data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +8 -10
  286. data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +46 -55
  287. data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +5 -5
  288. data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +45 -27
  289. data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +70 -20
  290. data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
  291. data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +22 -6
  292. data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +192 -105
  293. data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
  294. data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
  295. data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +49 -16
  296. data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
  297. data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +1 -1
  298. data/vendor/libgit2/src/{email.c → libgit2/email.c} +58 -40
  299. data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
  300. data/vendor/libgit2/src/{transports/ssh.h → libgit2/experimental.h.in} +3 -4
  301. data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +105 -30
  302. data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -3
  303. data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +30 -28
  304. data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +132 -58
  305. data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
  306. data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +3 -3
  307. data/vendor/libgit2/src/libgit2/grafts.c +270 -0
  308. data/vendor/libgit2/src/libgit2/grafts.h +35 -0
  309. data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +1 -1
  310. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  311. data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
  312. data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +44 -39
  313. data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
  314. data/vendor/libgit2/src/{index.c → libgit2/index.c} +460 -276
  315. data/vendor/libgit2/src/{index.h → libgit2/index.h} +21 -5
  316. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  317. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  318. data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +208 -124
  319. data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +102 -71
  320. data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +8 -5
  321. data/vendor/libgit2/src/libgit2/libgit2.c +268 -0
  322. data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +39 -37
  323. data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +83 -73
  324. data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
  325. data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +4 -4
  326. data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -5
  327. data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
  328. data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +174 -112
  329. data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +17 -6
  330. data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +53 -57
  331. data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +9 -2
  332. data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +29 -37
  333. data/vendor/libgit2/src/{object.c → libgit2/object.c} +166 -35
  334. data/vendor/libgit2/src/{object.h → libgit2/object.h} +17 -2
  335. data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +261 -88
  336. data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
  337. data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
  338. data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +67 -22
  339. data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +162 -89
  340. data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +171 -92
  341. data/vendor/libgit2/src/libgit2/oid.h +284 -0
  342. data/vendor/libgit2/src/libgit2/oidarray.c +89 -0
  343. data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +5 -1
  344. data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +126 -66
  345. data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +28 -12
  346. data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +146 -111
  347. data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +45 -25
  348. data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +8 -4
  349. data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +1 -1
  350. data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
  351. data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +8 -1
  352. data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +51 -16
  353. data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
  354. data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +42 -34
  355. data/vendor/libgit2/src/libgit2/path.c +375 -0
  356. data/vendor/libgit2/src/libgit2/path.h +68 -0
  357. data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +7 -7
  358. data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
  359. data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
  360. data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
  361. data/vendor/libgit2/src/{push.c → libgit2/push.c} +116 -60
  362. data/vendor/libgit2/src/{push.h → libgit2/push.h} +5 -16
  363. data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
  364. data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
  365. data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +147 -147
  366. data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +639 -254
  367. data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +8 -7
  368. data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +3 -2
  369. data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +67 -39
  370. data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +8 -3
  371. data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +60 -38
  372. data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +13 -2
  373. data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +821 -454
  374. data/vendor/libgit2/src/libgit2/remote.h +101 -0
  375. data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +1377 -594
  376. data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +43 -12
  377. data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
  378. data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +18 -22
  379. data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +76 -44
  380. data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +48 -19
  381. data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +3 -3
  382. data/vendor/libgit2/src/{libgit2.c → libgit2/settings.c} +162 -95
  383. data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +6 -2
  384. data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +144 -21
  385. data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -2
  386. data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +243 -68
  387. data/vendor/libgit2/src/{status.c → libgit2/status.c} +5 -2
  388. data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
  389. data/vendor/libgit2/src/libgit2/strarray.h +25 -0
  390. data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +62 -67
  391. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +41 -24
  392. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +2 -0
  393. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +11 -3
  394. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +6 -3
  395. data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
  396. data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
  397. data/vendor/libgit2/src/libgit2/streams/socket.c +428 -0
  398. data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +3 -1
  399. data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +79 -19
  400. data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +5 -0
  401. data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +279 -220
  402. data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +10 -11
  403. data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
  404. data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +55 -18
  405. data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +74 -43
  406. data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
  407. data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
  408. data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
  409. data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +7 -7
  410. data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +27 -21
  411. data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +4 -1
  412. data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +14 -11
  413. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
  414. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +3 -5
  415. data/vendor/libgit2/src/{transports/auth_negotiate.c → libgit2/transports/auth_gssapi.c} +44 -45
  416. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +1 -1
  417. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +1 -2
  418. data/vendor/libgit2/src/{transports/auth_ntlm.c → libgit2/transports/auth_ntlmclient.c} +22 -22
  419. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
  420. data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +1 -1
  421. data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +16 -19
  422. data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +49 -24
  423. data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -11
  424. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +188 -134
  425. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
  426. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  427. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  428. data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +159 -127
  429. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +142 -165
  430. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +56 -36
  431. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +307 -74
  432. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +297 -97
  433. data/vendor/libgit2/src/libgit2/transports/ssh.c +85 -0
  434. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  435. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  436. data/vendor/libgit2/src/{transports/ssh.c → libgit2/transports/ssh_libssh2.c} +414 -268
  437. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  438. data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +101 -75
  439. data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +30 -20
  440. data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +7 -5
  441. data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +128 -110
  442. data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +7 -6
  443. data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +160 -121
  444. data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
  445. data/vendor/libgit2/src/util/CMakeLists.txt +77 -0
  446. data/vendor/libgit2/src/{alloc.c → util/alloc.c} +69 -7
  447. data/vendor/libgit2/src/util/alloc.h +65 -0
  448. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  449. data/vendor/libgit2/src/util/allocators/debugalloc.h +17 -0
  450. data/vendor/libgit2/src/util/allocators/failalloc.c +32 -0
  451. data/vendor/libgit2/src/util/allocators/failalloc.h +17 -0
  452. data/vendor/libgit2/src/util/allocators/stdalloc.c +37 -0
  453. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
  454. data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +50 -0
  455. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
  456. data/vendor/libgit2/src/{array.h → util/array.h} +25 -19
  457. data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
  458. data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +5 -1
  459. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  460. data/vendor/libgit2/src/{date.c → util/date.c} +35 -33
  461. data/vendor/libgit2/src/util/date.h +45 -0
  462. data/vendor/libgit2/src/util/errors.c +401 -0
  463. data/vendor/libgit2/src/{errors.h → util/errors.h} +22 -19
  464. data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +35 -30
  465. data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +21 -8
  466. data/vendor/libgit2/src/{path.c → util/fs_path.c} +591 -615
  467. data/vendor/libgit2/src/{path.h → util/fs_path.h} +257 -181
  468. data/vendor/libgit2/src/{futils.c → util/futils.c} +144 -95
  469. data/vendor/libgit2/src/{futils.h → util/futils.h} +40 -18
  470. data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +33 -2
  471. data/vendor/libgit2/src/{common.h → util/git2_util.h} +26 -59
  472. data/vendor/libgit2/src/util/hash/builtin.c +53 -0
  473. data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
  474. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
  475. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
  476. data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
  477. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
  478. data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
  479. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
  480. data/vendor/libgit2/src/util/hash/openssl.c +347 -0
  481. data/vendor/libgit2/src/util/hash/openssl.h +61 -0
  482. data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
  483. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
  484. data/vendor/libgit2/src/util/hash/sha.h +73 -0
  485. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
  486. data/vendor/libgit2/src/util/hash/win32.c +549 -0
  487. data/vendor/libgit2/src/util/hash/win32.h +60 -0
  488. data/vendor/libgit2/src/util/hash.c +158 -0
  489. data/vendor/libgit2/src/util/hash.h +61 -0
  490. data/vendor/libgit2/src/util/hashmap.h +424 -0
  491. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  492. data/vendor/libgit2/src/{integer.h → util/integer.h} +3 -1
  493. data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
  494. data/vendor/libgit2/src/util/net.c +1160 -0
  495. data/vendor/libgit2/src/{net.h → util/net.h} +45 -4
  496. data/vendor/libgit2/src/{pool.c → util/pool.c} +1 -1
  497. data/vendor/libgit2/src/{pool.h → util/pool.h} +6 -1
  498. data/vendor/libgit2/src/{posix.c → util/posix.c} +57 -3
  499. data/vendor/libgit2/src/{posix.h → util/posix.h} +26 -1
  500. data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +3 -3
  501. data/vendor/libgit2/src/util/process.h +222 -0
  502. data/vendor/libgit2/src/util/rand.c +230 -0
  503. data/vendor/libgit2/src/util/rand.h +37 -0
  504. data/vendor/libgit2/src/{regexp.c → util/regexp.c} +5 -5
  505. data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
  506. data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
  507. data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
  508. data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +15 -14
  509. data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +5 -5
  510. data/vendor/libgit2/src/util/staticstr.h +66 -0
  511. data/vendor/libgit2/src/{buffer.c → util/str.c} +159 -153
  512. data/vendor/libgit2/src/util/str.h +357 -0
  513. data/vendor/libgit2/src/util/strlist.c +108 -0
  514. data/vendor/libgit2/src/util/strlist.h +36 -0
  515. data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
  516. data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
  517. data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
  518. data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
  519. data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -6
  520. data/vendor/libgit2/src/util/unix/process.c +629 -0
  521. data/vendor/libgit2/src/{unix → util/unix}/realpath.c +24 -8
  522. data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
  523. data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
  524. data/vendor/libgit2/src/{util.c → util/util.c} +24 -19
  525. data/vendor/libgit2/src/{util.h → util/util.h} +30 -81
  526. data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
  527. data/vendor/libgit2/src/{vector.c → util/vector.c} +3 -3
  528. data/vendor/libgit2/src/{vector.h → util/vector.h} +4 -4
  529. data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
  530. data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
  531. data/vendor/libgit2/src/{win32 → util/win32}/error.c +1 -1
  532. data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
  533. data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
  534. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +148 -17
  535. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
  536. data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
  537. data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +42 -35
  538. data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
  539. data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
  540. data/vendor/libgit2/src/util/win32/process.c +506 -0
  541. data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
  542. data/vendor/libgit2/src/util/win32/utf-conv.c +144 -0
  543. data/vendor/libgit2/src/util/win32/utf-conv.h +127 -0
  544. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
  545. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
  546. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
  547. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
  548. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +1 -1
  549. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
  550. data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
  551. data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
  552. metadata +431 -362
  553. data/vendor/libgit2/cmake/FindIconv.cmake +0 -45
  554. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  555. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  556. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  557. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  558. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  559. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  560. data/vendor/libgit2/src/alloc.h +0 -40
  561. data/vendor/libgit2/src/allocators/failalloc.c +0 -92
  562. data/vendor/libgit2/src/allocators/failalloc.h +0 -23
  563. data/vendor/libgit2/src/allocators/stdalloc.c +0 -150
  564. data/vendor/libgit2/src/allocators/win32_leakcheck.c +0 -118
  565. data/vendor/libgit2/src/buffer.h +0 -374
  566. data/vendor/libgit2/src/commit.h +0 -46
  567. data/vendor/libgit2/src/config_entries.c +0 -237
  568. data/vendor/libgit2/src/config_entries.h +0 -24
  569. data/vendor/libgit2/src/config_mem.c +0 -220
  570. data/vendor/libgit2/src/errors.c +0 -238
  571. data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
  572. data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
  573. data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
  574. data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
  575. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  576. data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
  577. data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
  578. data/vendor/libgit2/src/hash/sha1.h +0 -38
  579. data/vendor/libgit2/src/hash.c +0 -110
  580. data/vendor/libgit2/src/hash.h +0 -46
  581. data/vendor/libgit2/src/idxmap.c +0 -157
  582. data/vendor/libgit2/src/idxmap.h +0 -177
  583. data/vendor/libgit2/src/khash.h +0 -615
  584. data/vendor/libgit2/src/libgit2.h +0 -15
  585. data/vendor/libgit2/src/message.h +0 -17
  586. data/vendor/libgit2/src/net.c +0 -540
  587. data/vendor/libgit2/src/netops.c +0 -125
  588. data/vendor/libgit2/src/netops.h +0 -68
  589. data/vendor/libgit2/src/offmap.c +0 -101
  590. data/vendor/libgit2/src/offmap.h +0 -133
  591. data/vendor/libgit2/src/oid.h +0 -51
  592. data/vendor/libgit2/src/oidarray.c +0 -43
  593. data/vendor/libgit2/src/oidmap.c +0 -107
  594. data/vendor/libgit2/src/oidmap.h +0 -128
  595. data/vendor/libgit2/src/remote.h +0 -55
  596. data/vendor/libgit2/src/streams/socket.c +0 -239
  597. data/vendor/libgit2/src/strmap.c +0 -100
  598. data/vendor/libgit2/src/strmap.h +0 -131
  599. data/vendor/libgit2/src/sysdir.c +0 -347
  600. data/vendor/libgit2/src/threadstate.c +0 -84
  601. data/vendor/libgit2/src/threadstate.h +0 -24
  602. data/vendor/libgit2/src/win32/findfile.c +0 -230
  603. data/vendor/libgit2/src/win32/findfile.h +0 -19
  604. data/vendor/libgit2/src/win32/utf-conv.c +0 -146
  605. data/vendor/libgit2/src/win32/utf-conv.h +0 -60
  606. /data/vendor/libgit2/{src → deps}/xdiff/xemit.h +0 -0
  607. /data/vendor/libgit2/{src → deps}/xdiff/xprepare.h +0 -0
  608. /data/vendor/libgit2/{src → deps}/xdiff/xtypes.h +0 -0
  609. /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
  610. /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
  611. /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
  612. /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
  613. /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
  614. /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
  615. /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
  616. /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
  617. /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
  618. /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
  619. /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
  620. /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
  621. /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
  622. /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
  623. /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
  624. /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
  625. /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
  626. /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
  627. /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
  628. /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
  629. /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
  630. /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
  631. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
  632. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
  633. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
  634. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
  635. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
  636. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
  637. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
  638. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
  639. /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
  640. /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
  641. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
  642. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
  643. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
  644. /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
  645. /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
  646. /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
  647. /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
  648. /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
  649. /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
  650. /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
  651. /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
  652. /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
  653. /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
  654. /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
  655. /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
  656. /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
@@ -11,21 +11,24 @@
11
11
  #include "git2/sys/config.h"
12
12
 
13
13
  #include "array.h"
14
- #include "buffer.h"
14
+ #include "str.h"
15
15
  #include "config_backend.h"
16
- #include "config_entries.h"
16
+ #include "config_list.h"
17
17
  #include "config_parse.h"
18
18
  #include "filebuf.h"
19
19
  #include "regexp.h"
20
20
  #include "sysdir.h"
21
21
  #include "wildmatch.h"
22
+ #include "hash.h"
22
23
 
23
24
  /* Max depth for [include] directives */
24
25
  #define MAX_INCLUDE_DEPTH 10
25
26
 
27
+ #define CONFIG_FILE_TYPE "file"
28
+
26
29
  typedef struct config_file {
27
30
  git_futils_filestamp stamp;
28
- git_oid checksum;
31
+ unsigned char checksum[GIT_HASH_SHA256_SIZE];
29
32
  char *path;
30
33
  git_array_t(struct config_file) includes;
31
34
  } config_file;
@@ -33,7 +36,7 @@ typedef struct config_file {
33
36
  typedef struct {
34
37
  git_config_backend parent;
35
38
  git_mutex values_mutex;
36
- git_config_entries *entries;
39
+ git_config_list *config_list;
37
40
  const git_repository *repo;
38
41
  git_config_level_t level;
39
42
 
@@ -41,7 +44,7 @@ typedef struct {
41
44
 
42
45
  bool locked;
43
46
  git_filebuf locked_buf;
44
- git_buf locked_content;
47
+ git_str locked_content;
45
48
 
46
49
  config_file file;
47
50
  } config_file_backend;
@@ -49,13 +52,13 @@ typedef struct {
49
52
  typedef struct {
50
53
  const git_repository *repo;
51
54
  config_file *file;
52
- git_config_entries *entries;
55
+ git_config_list *config_list;
53
56
  git_config_level_t level;
54
57
  unsigned int depth;
55
58
  } config_file_parse_data;
56
59
 
57
- static int config_file_read(git_config_entries *entries, const git_repository *repo, config_file *file, git_config_level_t level, int depth);
58
- static int config_file_read_buffer(git_config_entries *entries, const git_repository *repo, config_file *file, git_config_level_t level, int depth, const char *buf, size_t buflen);
60
+ static int config_file_read(git_config_list *config_list, const git_repository *repo, config_file *file, git_config_level_t level, int depth);
61
+ static int config_file_read_buffer(git_config_list *config_list, const git_repository *repo, config_file *file, git_config_level_t level, int depth, const char *buf, size_t buflen);
59
62
  static int config_file_write(config_file_backend *cfg, const char *orig_key, const char *key, const git_regexp *preg, const char *value);
60
63
  static char *escape_value(const char *ptr);
61
64
 
@@ -64,7 +67,7 @@ static char *escape_value(const char *ptr);
64
67
  * refcount. This is its own function to make sure we use the mutex to
65
68
  * avoid the map pointer from changing under us.
66
69
  */
67
- static int config_file_entries_take(git_config_entries **out, config_file_backend *b)
70
+ static int config_file_take_list(git_config_list **out, config_file_backend *b)
68
71
  {
69
72
  int error;
70
73
 
@@ -73,8 +76,8 @@ static int config_file_entries_take(git_config_entries **out, config_file_backen
73
76
  return error;
74
77
  }
75
78
 
76
- git_config_entries_incref(b->entries);
77
- *out = b->entries;
79
+ git_config_list_incref(b->config_list);
80
+ *out = b->config_list;
78
81
 
79
82
  git_mutex_unlock(&b->values_mutex);
80
83
 
@@ -105,10 +108,10 @@ static int config_file_open(git_config_backend *cfg, git_config_level_t level, c
105
108
  b->level = level;
106
109
  b->repo = repo;
107
110
 
108
- if ((res = git_config_entries_new(&b->entries)) < 0)
111
+ if ((res = git_config_list_new(&b->config_list)) < 0)
109
112
  return res;
110
113
 
111
- if (!git_path_exists(b->file.path))
114
+ if (!git_fs_path_exists(b->file.path))
112
115
  return 0;
113
116
 
114
117
  /*
@@ -120,9 +123,9 @@ static int config_file_open(git_config_backend *cfg, git_config_level_t level, c
120
123
  if (p_access(b->file.path, R_OK) < 0)
121
124
  return GIT_ENOTFOUND;
122
125
 
123
- if (res < 0 || (res = config_file_read(b->entries, repo, &b->file, level, 0)) < 0) {
124
- git_config_entries_free(b->entries);
125
- b->entries = NULL;
126
+ if (res < 0 || (res = config_file_read(b->config_list, repo, &b->file, level, 0)) < 0) {
127
+ git_config_list_free(b->config_list);
128
+ b->config_list = NULL;
126
129
  }
127
130
 
128
131
  return res;
@@ -131,8 +134,8 @@ static int config_file_open(git_config_backend *cfg, git_config_level_t level, c
131
134
  static int config_file_is_modified(int *modified, config_file *file)
132
135
  {
133
136
  config_file *include;
134
- git_buf buf = GIT_BUF_INIT;
135
- git_oid hash;
137
+ git_str buf = GIT_STR_INIT;
138
+ unsigned char checksum[GIT_HASH_SHA256_SIZE];
136
139
  uint32_t i;
137
140
  int error = 0;
138
141
 
@@ -144,10 +147,10 @@ static int config_file_is_modified(int *modified, config_file *file)
144
147
  if ((error = git_futils_readbuffer(&buf, file->path)) < 0)
145
148
  goto out;
146
149
 
147
- if ((error = git_hash_buf(&hash, buf.ptr, buf.size)) < 0)
150
+ if ((error = git_hash_buf(checksum, buf.ptr, buf.size, GIT_HASH_ALGORITHM_SHA256)) < 0)
148
151
  goto out;
149
152
 
150
- if (!git_oid_equal(&hash, &file->checksum)) {
153
+ if (memcmp(checksum, file->checksum, GIT_HASH_SHA256_SIZE) != 0) {
151
154
  *modified = 1;
152
155
  goto out;
153
156
  }
@@ -159,7 +162,7 @@ check_includes:
159
162
  }
160
163
 
161
164
  out:
162
- git_buf_dispose(&buf);
165
+ git_str_dispose(&buf);
163
166
 
164
167
  return error;
165
168
  }
@@ -174,10 +177,10 @@ static void config_file_clear_includes(config_file_backend *cfg)
174
177
  git_array_clear(cfg->file.includes);
175
178
  }
176
179
 
177
- static int config_file_set_entries(git_config_backend *cfg, git_config_entries *entries)
180
+ static int config_file_set_entries(git_config_backend *cfg, git_config_list *config_list)
178
181
  {
179
182
  config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
180
- git_config_entries *old = NULL;
183
+ git_config_list *old = NULL;
181
184
  int error;
182
185
 
183
186
  if (b->parent.readonly) {
@@ -190,40 +193,40 @@ static int config_file_set_entries(git_config_backend *cfg, git_config_entries *
190
193
  goto out;
191
194
  }
192
195
 
193
- old = b->entries;
194
- b->entries = entries;
196
+ old = b->config_list;
197
+ b->config_list = config_list;
195
198
 
196
199
  git_mutex_unlock(&b->values_mutex);
197
200
 
198
201
  out:
199
- git_config_entries_free(old);
202
+ git_config_list_free(old);
200
203
  return error;
201
204
  }
202
205
 
203
206
  static int config_file_refresh_from_buffer(git_config_backend *cfg, const char *buf, size_t buflen)
204
207
  {
205
208
  config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
206
- git_config_entries *entries = NULL;
209
+ git_config_list *config_list = NULL;
207
210
  int error;
208
211
 
209
212
  config_file_clear_includes(b);
210
213
 
211
- if ((error = git_config_entries_new(&entries)) < 0 ||
212
- (error = config_file_read_buffer(entries, b->repo, &b->file,
214
+ if ((error = git_config_list_new(&config_list)) < 0 ||
215
+ (error = config_file_read_buffer(config_list, b->repo, &b->file,
213
216
  b->level, 0, buf, buflen)) < 0 ||
214
- (error = config_file_set_entries(cfg, entries)) < 0)
217
+ (error = config_file_set_entries(cfg, config_list)) < 0)
215
218
  goto out;
216
219
 
217
- entries = NULL;
220
+ config_list = NULL;
218
221
  out:
219
- git_config_entries_free(entries);
222
+ git_config_list_free(config_list);
220
223
  return error;
221
224
  }
222
225
 
223
226
  static int config_file_refresh(git_config_backend *cfg)
224
227
  {
225
228
  config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
226
- git_config_entries *entries = NULL;
229
+ git_config_list *config_list = NULL;
227
230
  int error, modified;
228
231
 
229
232
  if (cfg->readonly)
@@ -237,14 +240,14 @@ static int config_file_refresh(git_config_backend *cfg)
237
240
 
238
241
  config_file_clear_includes(b);
239
242
 
240
- if ((error = git_config_entries_new(&entries)) < 0 ||
241
- (error = config_file_read(entries, b->repo, &b->file, b->level, 0)) < 0 ||
242
- (error = config_file_set_entries(cfg, entries)) < 0)
243
+ if ((error = git_config_list_new(&config_list)) < 0 ||
244
+ (error = config_file_read(config_list, b->repo, &b->file, b->level, 0)) < 0 ||
245
+ (error = config_file_set_entries(cfg, config_list)) < 0)
243
246
  goto out;
244
247
 
245
- entries = NULL;
248
+ config_list = NULL;
246
249
  out:
247
- git_config_entries_free(entries);
250
+ git_config_list_free(config_list);
248
251
 
249
252
  return (error == GIT_ENOTFOUND) ? 0 : error;
250
253
  }
@@ -257,7 +260,7 @@ static void config_file_free(git_config_backend *_backend)
257
260
  return;
258
261
 
259
262
  config_file_clear(&backend->file);
260
- git_config_entries_free(backend->entries);
263
+ git_config_list_free(backend->config_list);
261
264
  git_mutex_free(&backend->values_mutex);
262
265
  git__free(backend);
263
266
  }
@@ -267,19 +270,19 @@ static int config_file_iterator(
267
270
  struct git_config_backend *backend)
268
271
  {
269
272
  config_file_backend *b = GIT_CONTAINER_OF(backend, config_file_backend, parent);
270
- git_config_entries *dupped = NULL, *entries = NULL;
273
+ git_config_list *dupped = NULL, *config_list = NULL;
271
274
  int error;
272
275
 
273
276
  if ((error = config_file_refresh(backend)) < 0 ||
274
- (error = config_file_entries_take(&entries, b)) < 0 ||
275
- (error = git_config_entries_dup(&dupped, entries)) < 0 ||
276
- (error = git_config_entries_iterator_new(iter, dupped)) < 0)
277
+ (error = config_file_take_list(&config_list, b)) < 0 ||
278
+ (error = git_config_list_dup(&dupped, config_list)) < 0 ||
279
+ (error = git_config_list_iterator_new(iter, dupped)) < 0)
277
280
  goto out;
278
281
 
279
282
  out:
280
- /* Let iterator delete duplicated entries when it's done */
281
- git_config_entries_free(entries);
282
- git_config_entries_free(dupped);
283
+ /* Let iterator delete duplicated config_list when it's done */
284
+ git_config_list_free(config_list);
285
+ git_config_list_free(dupped);
283
286
  return error;
284
287
  }
285
288
 
@@ -291,24 +294,24 @@ static int config_file_snapshot(git_config_backend **out, git_config_backend *ba
291
294
  static int config_file_set(git_config_backend *cfg, const char *name, const char *value)
292
295
  {
293
296
  config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
294
- git_config_entries *entries;
295
- git_config_entry *existing;
297
+ git_config_list *config_list;
298
+ git_config_list_entry *existing;
296
299
  char *key, *esc_value = NULL;
297
300
  int error;
298
301
 
299
302
  if ((error = git_config__normalize_name(name, &key)) < 0)
300
303
  return error;
301
304
 
302
- if ((error = config_file_entries_take(&entries, b)) < 0)
305
+ if ((error = config_file_take_list(&config_list, b)) < 0)
303
306
  return error;
304
307
 
305
308
  /* Check whether we'd be modifying an included or multivar key */
306
- if ((error = git_config_entries_get_unique(&existing, entries, key)) < 0) {
309
+ if ((error = git_config_list_get_unique(&existing, config_list, key)) < 0) {
307
310
  if (error != GIT_ENOTFOUND)
308
311
  goto out;
309
312
  error = 0;
310
- } else if ((!existing->value && !value) ||
311
- (existing->value && value && !strcmp(existing->value, value))) {
313
+ } else if ((!existing->base.entry.value && !value) ||
314
+ (existing->base.entry.value && value && !strcmp(existing->base.entry.value, value))) {
312
315
  /* don't update if old and new values already match */
313
316
  error = 0;
314
317
  goto out;
@@ -324,43 +327,37 @@ static int config_file_set(git_config_backend *cfg, const char *name, const char
324
327
  goto out;
325
328
 
326
329
  out:
327
- git_config_entries_free(entries);
330
+ git_config_list_free(config_list);
328
331
  git__free(esc_value);
329
332
  git__free(key);
330
333
  return error;
331
334
  }
332
335
 
333
- /* release the map containing the entry as an equivalent to freeing it */
334
- static void config_file_entry_free(git_config_entry *entry)
335
- {
336
- git_config_entries *entries = (git_config_entries *) entry->payload;
337
- git_config_entries_free(entries);
338
- }
339
-
340
336
  /*
341
337
  * Internal function that actually gets the value in string form
342
338
  */
343
- static int config_file_get(git_config_backend *cfg, const char *key, git_config_entry **out)
339
+ static int config_file_get(
340
+ git_config_backend *cfg,
341
+ const char *key,
342
+ git_config_backend_entry **out)
344
343
  {
345
344
  config_file_backend *h = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
346
- git_config_entries *entries = NULL;
347
- git_config_entry *entry;
345
+ git_config_list *config_list = NULL;
346
+ git_config_list_entry *entry;
348
347
  int error = 0;
349
348
 
350
349
  if (!h->parent.readonly && ((error = config_file_refresh(cfg)) < 0))
351
350
  return error;
352
351
 
353
- if ((error = config_file_entries_take(&entries, h)) < 0)
352
+ if ((error = config_file_take_list(&config_list, h)) < 0)
354
353
  return error;
355
354
 
356
- if ((error = (git_config_entries_get(&entry, entries, key))) < 0) {
357
- git_config_entries_free(entries);
355
+ if ((error = (git_config_list_get(&entry, config_list, key))) < 0) {
356
+ git_config_list_free(config_list);
358
357
  return error;
359
358
  }
360
359
 
361
- entry->free = config_file_entry_free;
362
- entry->payload = entries;
363
- *out = entry;
360
+ *out = &entry->base;
364
361
 
365
362
  return 0;
366
363
  }
@@ -395,29 +392,29 @@ out:
395
392
  static int config_file_delete(git_config_backend *cfg, const char *name)
396
393
  {
397
394
  config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
398
- git_config_entries *entries = NULL;
399
- git_config_entry *entry;
395
+ git_config_list *config_list = NULL;
396
+ git_config_list_entry *entry;
400
397
  char *key = NULL;
401
398
  int error;
402
399
 
403
400
  if ((error = git_config__normalize_name(name, &key)) < 0)
404
401
  goto out;
405
402
 
406
- if ((error = config_file_entries_take(&entries, b)) < 0)
403
+ if ((error = config_file_take_list(&config_list, b)) < 0)
407
404
  goto out;
408
405
 
409
406
  /* Check whether we'd be modifying an included or multivar key */
410
- if ((error = git_config_entries_get_unique(&entry, entries, key)) < 0) {
407
+ if ((error = git_config_list_get_unique(&entry, config_list, key)) < 0) {
411
408
  if (error == GIT_ENOTFOUND)
412
409
  git_error_set(GIT_ERROR_CONFIG, "could not find key '%s' to delete", name);
413
410
  goto out;
414
411
  }
415
412
 
416
- if ((error = config_file_write(b, name, entry->name, NULL, NULL)) < 0)
413
+ if ((error = config_file_write(b, name, entry->base.entry.name, NULL, NULL)) < 0)
417
414
  goto out;
418
415
 
419
416
  out:
420
- git_config_entries_free(entries);
417
+ git_config_list_free(config_list);
421
418
  git__free(key);
422
419
  return error;
423
420
  }
@@ -425,8 +422,8 @@ out:
425
422
  static int config_file_delete_multivar(git_config_backend *cfg, const char *name, const char *regexp)
426
423
  {
427
424
  config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
428
- git_config_entries *entries = NULL;
429
- git_config_entry *entry = NULL;
425
+ git_config_list *config_list = NULL;
426
+ git_config_list_entry *entry = NULL;
430
427
  git_regexp preg = GIT_REGEX_INIT;
431
428
  char *key = NULL;
432
429
  int result;
@@ -434,10 +431,10 @@ static int config_file_delete_multivar(git_config_backend *cfg, const char *name
434
431
  if ((result = git_config__normalize_name(name, &key)) < 0)
435
432
  goto out;
436
433
 
437
- if ((result = config_file_entries_take(&entries, b)) < 0)
434
+ if ((result = config_file_take_list(&config_list, b)) < 0)
438
435
  goto out;
439
436
 
440
- if ((result = git_config_entries_get(&entry, entries, key)) < 0) {
437
+ if ((result = git_config_list_get(&entry, config_list, key)) < 0) {
441
438
  if (result == GIT_ENOTFOUND)
442
439
  git_error_set(GIT_ERROR_CONFIG, "could not find key '%s' to delete", name);
443
440
  goto out;
@@ -450,7 +447,7 @@ static int config_file_delete_multivar(git_config_backend *cfg, const char *name
450
447
  goto out;
451
448
 
452
449
  out:
453
- git_config_entries_free(entries);
450
+ git_config_list_free(config_list);
454
451
  git__free(key);
455
452
  git_regexp_dispose(&preg);
456
453
  return result;
@@ -486,7 +483,7 @@ static int config_file_unlock(git_config_backend *_cfg, int success)
486
483
  }
487
484
 
488
485
  git_filebuf_cleanup(&cfg->locked_buf);
489
- git_buf_dispose(&cfg->locked_content);
486
+ git_str_dispose(&cfg->locked_content);
490
487
  cfg->locked = false;
491
488
 
492
489
  return error;
@@ -523,19 +520,19 @@ int git_config_backend_from_file(git_config_backend **out, const char *path)
523
520
  return 0;
524
521
  }
525
522
 
526
- static int included_path(git_buf *out, const char *dir, const char *path)
523
+ static int included_path(git_str *out, const char *dir, const char *path)
527
524
  {
528
525
  /* From the user's home */
529
526
  if (path[0] == '~' && path[1] == '/')
530
- return git_sysdir_expand_global_file(out, &path[1]);
527
+ return git_sysdir_expand_homedir_file(out, &path[1]);
531
528
 
532
- return git_path_join_unrooted(out, path, dir, NULL);
529
+ return git_fs_path_join_unrooted(out, path, dir, NULL);
533
530
  }
534
531
 
535
532
  /* Escape the values to write them to the file */
536
533
  static char *escape_value(const char *ptr)
537
534
  {
538
- git_buf buf;
535
+ git_str buf;
539
536
  size_t len;
540
537
  const char *esc;
541
538
 
@@ -545,39 +542,39 @@ static char *escape_value(const char *ptr)
545
542
  if (!len)
546
543
  return git__calloc(1, sizeof(char));
547
544
 
548
- if (git_buf_init(&buf, len) < 0)
545
+ if (git_str_init(&buf, len) < 0)
549
546
  return NULL;
550
547
 
551
548
  while (*ptr != '\0') {
552
549
  if ((esc = strchr(git_config_escaped, *ptr)) != NULL) {
553
- git_buf_putc(&buf, '\\');
554
- git_buf_putc(&buf, git_config_escapes[esc - git_config_escaped]);
550
+ git_str_putc(&buf, '\\');
551
+ git_str_putc(&buf, git_config_escapes[esc - git_config_escaped]);
555
552
  } else {
556
- git_buf_putc(&buf, *ptr);
553
+ git_str_putc(&buf, *ptr);
557
554
  }
558
555
  ptr++;
559
556
  }
560
557
 
561
- if (git_buf_oom(&buf))
558
+ if (git_str_oom(&buf))
562
559
  return NULL;
563
560
 
564
- return git_buf_detach(&buf);
561
+ return git_str_detach(&buf);
565
562
  }
566
563
 
567
564
  static int parse_include(config_file_parse_data *parse_data, const char *file)
568
565
  {
569
566
  config_file *include;
570
- git_buf path = GIT_BUF_INIT;
567
+ git_str path = GIT_STR_INIT;
571
568
  char *dir;
572
569
  int result;
573
570
 
574
571
  if (!file)
575
572
  return 0;
576
573
 
577
- if ((result = git_path_dirname_r(&path, parse_data->file->path)) < 0)
574
+ if ((result = git_fs_path_dirname_r(&path, parse_data->file->path)) < 0)
578
575
  return result;
579
576
 
580
- dir = git_buf_detach(&path);
577
+ dir = git_str_detach(&path);
581
578
  result = included_path(&path, dir, file);
582
579
  git__free(dir);
583
580
 
@@ -588,9 +585,9 @@ static int parse_include(config_file_parse_data *parse_data, const char *file)
588
585
  GIT_ERROR_CHECK_ALLOC(include);
589
586
  memset(include, 0, sizeof(*include));
590
587
  git_array_init(include->includes);
591
- include->path = git_buf_detach(&path);
588
+ include->path = git_str_detach(&path);
592
589
 
593
- result = config_file_read(parse_data->entries, parse_data->repo, include,
590
+ result = config_file_read(parse_data->config_list, parse_data->repo, include,
594
591
  parse_data->level, parse_data->depth+1);
595
592
 
596
593
  if (result == GIT_ENOTFOUND) {
@@ -608,38 +605,38 @@ static int do_match_gitdir(
608
605
  const char *condition,
609
606
  bool case_insensitive)
610
607
  {
611
- git_buf pattern = GIT_BUF_INIT, gitdir = GIT_BUF_INIT;
608
+ git_str pattern = GIT_STR_INIT, gitdir = GIT_STR_INIT;
612
609
  int error;
613
610
 
614
- if (condition[0] == '.' && git_path_is_dirsep(condition[1])) {
615
- git_path_dirname_r(&pattern, cfg_file);
616
- git_buf_joinpath(&pattern, pattern.ptr, condition + 2);
617
- } else if (condition[0] == '~' && git_path_is_dirsep(condition[1]))
618
- git_sysdir_expand_global_file(&pattern, condition + 1);
619
- else if (!git_path_is_absolute(condition))
620
- git_buf_joinpath(&pattern, "**", condition);
611
+ if (condition[0] == '.' && git_fs_path_is_dirsep(condition[1])) {
612
+ git_fs_path_dirname_r(&pattern, cfg_file);
613
+ git_str_joinpath(&pattern, pattern.ptr, condition + 2);
614
+ } else if (condition[0] == '~' && git_fs_path_is_dirsep(condition[1]))
615
+ git_sysdir_expand_homedir_file(&pattern, condition + 1);
616
+ else if (!git_fs_path_is_absolute(condition))
617
+ git_str_joinpath(&pattern, "**", condition);
621
618
  else
622
- git_buf_sets(&pattern, condition);
619
+ git_str_sets(&pattern, condition);
623
620
 
624
- if (git_path_is_dirsep(condition[strlen(condition) - 1]))
625
- git_buf_puts(&pattern, "**");
621
+ if (git_fs_path_is_dirsep(condition[strlen(condition) - 1]))
622
+ git_str_puts(&pattern, "**");
626
623
 
627
- if (git_buf_oom(&pattern)) {
624
+ if (git_str_oom(&pattern)) {
628
625
  error = -1;
629
626
  goto out;
630
627
  }
631
628
 
632
- if ((error = git_repository_item_path(&gitdir, repo, GIT_REPOSITORY_ITEM_GITDIR)) < 0)
629
+ if ((error = git_repository__item_path(&gitdir, repo, GIT_REPOSITORY_ITEM_GITDIR)) < 0)
633
630
  goto out;
634
631
 
635
- if (git_path_is_dirsep(gitdir.ptr[gitdir.size - 1]))
636
- git_buf_truncate(&gitdir, gitdir.size - 1);
632
+ if (git_fs_path_is_dirsep(gitdir.ptr[gitdir.size - 1]))
633
+ git_str_truncate(&gitdir, gitdir.size - 1);
637
634
 
638
635
  *matches = wildmatch(pattern.ptr, gitdir.ptr,
639
636
  WM_PATHNAME | (case_insensitive ? WM_CASEFOLD : 0)) == WM_MATCH;
640
637
  out:
641
- git_buf_dispose(&pattern);
642
- git_buf_dispose(&gitdir);
638
+ git_str_dispose(&pattern);
639
+ git_str_dispose(&gitdir);
643
640
  return error;
644
641
  }
645
642
 
@@ -667,7 +664,7 @@ static int conditional_match_onbranch(
667
664
  const char *cfg_file,
668
665
  const char *condition)
669
666
  {
670
- git_buf reference = GIT_BUF_INIT, buf = GIT_BUF_INIT;
667
+ git_str reference = GIT_STR_INIT, buf = GIT_STR_INIT;
671
668
  int error;
672
669
 
673
670
  GIT_UNUSED(cfg_file);
@@ -680,33 +677,33 @@ static int conditional_match_onbranch(
680
677
  * an endless recursion.
681
678
  */
682
679
 
683
- if ((error = git_buf_joinpath(&buf, git_repository_path(repo), GIT_HEAD_FILE)) < 0 ||
680
+ if ((error = git_str_joinpath(&buf, git_repository_path(repo), GIT_HEAD_FILE)) < 0 ||
684
681
  (error = git_futils_readbuffer(&reference, buf.ptr)) < 0)
685
682
  goto out;
686
- git_buf_rtrim(&reference);
683
+ git_str_rtrim(&reference);
687
684
 
688
685
  if (git__strncmp(reference.ptr, GIT_SYMREF, strlen(GIT_SYMREF)))
689
686
  goto out;
690
- git_buf_consume(&reference, reference.ptr + strlen(GIT_SYMREF));
687
+ git_str_consume(&reference, reference.ptr + strlen(GIT_SYMREF));
691
688
 
692
689
  if (git__strncmp(reference.ptr, GIT_REFS_HEADS_DIR, strlen(GIT_REFS_HEADS_DIR)))
693
690
  goto out;
694
- git_buf_consume(&reference, reference.ptr + strlen(GIT_REFS_HEADS_DIR));
691
+ git_str_consume(&reference, reference.ptr + strlen(GIT_REFS_HEADS_DIR));
695
692
 
696
693
  /*
697
694
  * If the condition ends with a '/', then we should treat it as if
698
695
  * it had '**' appended.
699
696
  */
700
- if ((error = git_buf_sets(&buf, condition)) < 0)
697
+ if ((error = git_str_sets(&buf, condition)) < 0)
701
698
  goto out;
702
- if (git_path_is_dirsep(condition[strlen(condition) - 1]) &&
703
- (error = git_buf_puts(&buf, "**")) < 0)
699
+ if (git_fs_path_is_dirsep(condition[strlen(condition) - 1]) &&
700
+ (error = git_str_puts(&buf, "**")) < 0)
704
701
  goto out;
705
702
 
706
703
  *matches = wildmatch(buf.ptr, reference.ptr, WM_PATHNAME) == WM_MATCH;
707
704
  out:
708
- git_buf_dispose(&reference);
709
- git_buf_dispose(&buf);
705
+ git_str_dispose(&reference);
706
+ git_str_dispose(&buf);
710
707
 
711
708
  return error;
712
709
 
@@ -724,14 +721,25 @@ static const struct {
724
721
  static int parse_conditional_include(config_file_parse_data *parse_data, const char *section, const char *file)
725
722
  {
726
723
  char *condition;
727
- size_t i;
724
+ size_t section_len, i;
728
725
  int error = 0, matches;
729
726
 
730
727
  if (!parse_data->repo || !file)
731
728
  return 0;
732
729
 
733
- condition = git__substrdup(section + strlen("includeIf."),
734
- strlen(section) - strlen("includeIf.") - strlen(".path"));
730
+ section_len = strlen(section);
731
+
732
+ /*
733
+ * We checked that the string starts with `includeIf.` and ends
734
+ * in `.path` to get here. Make sure it consists of more.
735
+ */
736
+ if (section_len < CONST_STRLEN("includeIf.") + CONST_STRLEN(".path"))
737
+ return 0;
738
+
739
+ condition = git__substrdup(section + CONST_STRLEN("includeIf."),
740
+ section_len - CONST_STRLEN("includeIf.") - CONST_STRLEN(".path"));
741
+
742
+ GIT_ERROR_CHECK_ALLOC(condition);
735
743
 
736
744
  for (i = 0; i < ARRAY_SIZE(conditions); i++) {
737
745
  if (git__prefixcmp(condition, conditions[i].prefix))
@@ -763,8 +771,8 @@ static int read_on_variable(
763
771
  void *data)
764
772
  {
765
773
  config_file_parse_data *parse_data = (config_file_parse_data *)data;
766
- git_buf buf = GIT_BUF_INIT;
767
- git_config_entry *entry;
774
+ git_str buf = GIT_STR_INIT;
775
+ git_config_list_entry *entry;
768
776
  const char *c;
769
777
  int result = 0;
770
778
 
@@ -777,40 +785,55 @@ static int read_on_variable(
777
785
  * here. Git appears to warn in most cases if it sees
778
786
  * un-namespaced config options.
779
787
  */
780
- git_buf_puts(&buf, current_section);
781
- git_buf_putc(&buf, '.');
788
+ git_str_puts(&buf, current_section);
789
+ git_str_putc(&buf, '.');
782
790
  }
783
791
 
784
792
  for (c = var_name; *c; c++)
785
- git_buf_putc(&buf, git__tolower(*c));
793
+ git_str_putc(&buf, git__tolower(*c));
786
794
 
787
- if (git_buf_oom(&buf))
795
+ if (git_str_oom(&buf))
788
796
  return -1;
789
797
 
790
- entry = git__calloc(1, sizeof(git_config_entry));
798
+ entry = git__calloc(1, sizeof(git_config_list_entry));
791
799
  GIT_ERROR_CHECK_ALLOC(entry);
792
- entry->name = git_buf_detach(&buf);
793
- entry->value = var_value ? git__strdup(var_value) : NULL;
794
- entry->level = parse_data->level;
795
- entry->include_depth = parse_data->depth;
796
800
 
797
- if ((result = git_config_entries_append(parse_data->entries, entry)) < 0)
801
+ entry->base.entry.name = git_str_detach(&buf);
802
+ GIT_ERROR_CHECK_ALLOC(entry->base.entry.name);
803
+
804
+ if (var_value) {
805
+ entry->base.entry.value = git__strdup(var_value);
806
+ GIT_ERROR_CHECK_ALLOC(entry->base.entry.value);
807
+ }
808
+
809
+ entry->base.entry.backend_type = git_config_list_add_string(parse_data->config_list, CONFIG_FILE_TYPE);
810
+ GIT_ERROR_CHECK_ALLOC(entry->base.entry.backend_type);
811
+
812
+ entry->base.entry.origin_path = git_config_list_add_string(parse_data->config_list, parse_data->file->path);
813
+ GIT_ERROR_CHECK_ALLOC(entry->base.entry.origin_path);
814
+
815
+ entry->base.entry.level = parse_data->level;
816
+ entry->base.entry.include_depth = parse_data->depth;
817
+ entry->base.free = git_config_list_entry_free;
818
+ entry->config_list = parse_data->config_list;
819
+
820
+ if ((result = git_config_list_append(parse_data->config_list, entry)) < 0)
798
821
  return result;
799
822
 
800
823
  result = 0;
801
824
 
802
825
  /* Add or append the new config option */
803
- if (!git__strcmp(entry->name, "include.path"))
804
- result = parse_include(parse_data, entry->value);
805
- else if (!git__prefixcmp(entry->name, "includeif.") &&
806
- !git__suffixcmp(entry->name, ".path"))
807
- result = parse_conditional_include(parse_data, entry->name, entry->value);
826
+ if (!git__strcmp(entry->base.entry.name, "include.path"))
827
+ result = parse_include(parse_data, entry->base.entry.value);
828
+ else if (!git__prefixcmp(entry->base.entry.name, "includeif.") &&
829
+ !git__suffixcmp(entry->base.entry.name, ".path"))
830
+ result = parse_conditional_include(parse_data, entry->base.entry.name, entry->base.entry.value);
808
831
 
809
832
  return result;
810
833
  }
811
834
 
812
835
  static int config_file_read_buffer(
813
- git_config_entries *entries,
836
+ git_config_list *config_list,
814
837
  const git_repository *repo,
815
838
  config_file *file,
816
839
  git_config_level_t level,
@@ -839,7 +862,7 @@ static int config_file_read_buffer(
839
862
 
840
863
  parse_data.repo = repo;
841
864
  parse_data.file = file;
842
- parse_data.entries = entries;
865
+ parse_data.config_list = config_list;
843
866
  parse_data.level = level;
844
867
  parse_data.depth = depth;
845
868
 
@@ -850,18 +873,18 @@ out:
850
873
  }
851
874
 
852
875
  static int config_file_read(
853
- git_config_entries *entries,
876
+ git_config_list *config_list,
854
877
  const git_repository *repo,
855
878
  config_file *file,
856
879
  git_config_level_t level,
857
880
  int depth)
858
881
  {
859
- git_buf contents = GIT_BUF_INIT;
882
+ git_str contents = GIT_STR_INIT;
860
883
  struct stat st;
861
884
  int error;
862
885
 
863
886
  if (p_stat(file->path, &st) < 0) {
864
- error = git_path_set_error(errno, file->path, "stat");
887
+ error = git_fs_path_set_error(errno, file->path, "stat");
865
888
  goto out;
866
889
  }
867
890
 
@@ -869,44 +892,44 @@ static int config_file_read(
869
892
  goto out;
870
893
 
871
894
  git_futils_filestamp_set_from_stat(&file->stamp, &st);
872
- if ((error = git_hash_buf(&file->checksum, contents.ptr, contents.size)) < 0)
895
+ if ((error = git_hash_buf(file->checksum, contents.ptr, contents.size, GIT_HASH_ALGORITHM_SHA256)) < 0)
873
896
  goto out;
874
897
 
875
- if ((error = config_file_read_buffer(entries, repo, file, level, depth,
898
+ if ((error = config_file_read_buffer(config_list, repo, file, level, depth,
876
899
  contents.ptr, contents.size)) < 0)
877
900
  goto out;
878
901
 
879
902
  out:
880
- git_buf_dispose(&contents);
903
+ git_str_dispose(&contents);
881
904
  return error;
882
905
  }
883
906
 
884
- static int write_section(git_buf *fbuf, const char *key)
907
+ static int write_section(git_str *fbuf, const char *key)
885
908
  {
886
909
  int result;
887
910
  const char *dot;
888
- git_buf buf = GIT_BUF_INIT;
911
+ git_str buf = GIT_STR_INIT;
889
912
 
890
913
  /* All of this just for [section "subsection"] */
891
914
  dot = strchr(key, '.');
892
- git_buf_putc(&buf, '[');
915
+ git_str_putc(&buf, '[');
893
916
  if (dot == NULL) {
894
- git_buf_puts(&buf, key);
917
+ git_str_puts(&buf, key);
895
918
  } else {
896
919
  char *escaped;
897
- git_buf_put(&buf, key, dot - key);
920
+ git_str_put(&buf, key, dot - key);
898
921
  escaped = escape_value(dot + 1);
899
922
  GIT_ERROR_CHECK_ALLOC(escaped);
900
- git_buf_printf(&buf, " \"%s\"", escaped);
923
+ git_str_printf(&buf, " \"%s\"", escaped);
901
924
  git__free(escaped);
902
925
  }
903
- git_buf_puts(&buf, "]\n");
926
+ git_str_puts(&buf, "]\n");
904
927
 
905
- if (git_buf_oom(&buf))
928
+ if (git_str_oom(&buf))
906
929
  return -1;
907
930
 
908
- result = git_buf_put(fbuf, git_buf_cstr(&buf), buf.size);
909
- git_buf_dispose(&buf);
931
+ result = git_str_put(fbuf, git_str_cstr(&buf), buf.size);
932
+ git_str_dispose(&buf);
910
933
 
911
934
  return result;
912
935
  }
@@ -930,8 +953,8 @@ static const char *quotes_for_value(const char *value)
930
953
  }
931
954
 
932
955
  struct write_data {
933
- git_buf *buf;
934
- git_buf buffered_comment;
956
+ git_str *buf;
957
+ git_str buffered_comment;
935
958
  unsigned int in_section : 1,
936
959
  preg_replaced : 1;
937
960
  const char *orig_section;
@@ -942,12 +965,12 @@ struct write_data {
942
965
  const char *value;
943
966
  };
944
967
 
945
- static int write_line_to(git_buf *buf, const char *line, size_t line_len)
968
+ static int write_line_to(git_str *buf, const char *line, size_t line_len)
946
969
  {
947
- int result = git_buf_put(buf, line, line_len);
970
+ int result = git_str_put(buf, line, line_len);
948
971
 
949
972
  if (!result && line_len && line[line_len-1] != '\n')
950
- result = git_buf_printf(buf, "\n");
973
+ result = git_str_printf(buf, "\n");
951
974
 
952
975
  return result;
953
976
  }
@@ -963,7 +986,7 @@ static int write_value(struct write_data *write_data)
963
986
  int result;
964
987
 
965
988
  q = quotes_for_value(write_data->value);
966
- result = git_buf_printf(write_data->buf,
989
+ result = git_str_printf(write_data->buf,
967
990
  "\t%s = %s%s%s\n", write_data->orig_name, q, write_data->value, q);
968
991
 
969
992
  /* If we are updating a single name/value, we're done. Setting `value`
@@ -1002,8 +1025,8 @@ static int write_on_section(
1002
1025
  * If there were comments just before this section, dump them as well.
1003
1026
  */
1004
1027
  if (!result) {
1005
- result = git_buf_put(write_data->buf, write_data->buffered_comment.ptr, write_data->buffered_comment.size);
1006
- git_buf_clear(&write_data->buffered_comment);
1028
+ result = git_str_put(write_data->buf, write_data->buffered_comment.ptr, write_data->buffered_comment.size);
1029
+ git_str_clear(&write_data->buffered_comment);
1007
1030
  }
1008
1031
 
1009
1032
  if (!result)
@@ -1031,10 +1054,10 @@ static int write_on_variable(
1031
1054
  /*
1032
1055
  * If there were comments just before this variable, let's dump them as well.
1033
1056
  */
1034
- if ((error = git_buf_put(write_data->buf, write_data->buffered_comment.ptr, write_data->buffered_comment.size)) < 0)
1057
+ if ((error = git_str_put(write_data->buf, write_data->buffered_comment.ptr, write_data->buffered_comment.size)) < 0)
1035
1058
  return error;
1036
1059
 
1037
- git_buf_clear(&write_data->buffered_comment);
1060
+ git_str_clear(&write_data->buffered_comment);
1038
1061
 
1039
1062
  /* See if we are to update this name/value pair; first examine name */
1040
1063
  if (write_data->in_section &&
@@ -1081,7 +1104,7 @@ static int write_on_eof(
1081
1104
  /*
1082
1105
  * If we've buffered comments when reaching EOF, make sure to dump them.
1083
1106
  */
1084
- if ((result = git_buf_put(write_data->buf, write_data->buffered_comment.ptr, write_data->buffered_comment.size)) < 0)
1107
+ if ((result = git_str_put(write_data->buf, write_data->buffered_comment.ptr, write_data->buffered_comment.size)) < 0)
1085
1108
  return result;
1086
1109
 
1087
1110
  /* If we are at the EOF and have not written our value (again, for a
@@ -1104,11 +1127,16 @@ static int write_on_eof(
1104
1127
  /*
1105
1128
  * This is pretty much the parsing, except we write out anything we don't have
1106
1129
  */
1107
- static int config_file_write(config_file_backend *cfg, const char *orig_key, const char *key, const git_regexp *preg, const char *value)
1130
+ static int config_file_write(
1131
+ config_file_backend *cfg,
1132
+ const char *orig_key,
1133
+ const char *key,
1134
+ const git_regexp *preg,
1135
+ const char *value)
1108
1136
 
1109
1137
  {
1110
1138
  char *orig_section = NULL, *section = NULL, *orig_name, *name, *ldot;
1111
- git_buf buf = GIT_BUF_INIT, contents = GIT_BUF_INIT;
1139
+ git_str buf = GIT_STR_INIT, contents = GIT_STR_INIT;
1112
1140
  git_config_parser parser = GIT_CONFIG_PARSER_INIT;
1113
1141
  git_filebuf file = GIT_FILEBUF_INIT;
1114
1142
  struct write_data write_data;
@@ -1117,10 +1145,11 @@ static int config_file_write(config_file_backend *cfg, const char *orig_key, con
1117
1145
  memset(&write_data, 0, sizeof(write_data));
1118
1146
 
1119
1147
  if (cfg->locked) {
1120
- error = git_buf_puts(&contents, git_buf_cstr(&cfg->locked_content) == NULL ? "" : git_buf_cstr(&cfg->locked_content));
1148
+ error = git_str_puts(&contents, git_str_cstr(&cfg->locked_content) == NULL ? "" : git_str_cstr(&cfg->locked_content));
1121
1149
  } else {
1122
- if ((error = git_filebuf_open(&file, cfg->file.path, GIT_FILEBUF_HASH_CONTENTS,
1123
- GIT_CONFIG_FILE_MODE)) < 0)
1150
+ if ((error = git_filebuf_open(&file, cfg->file.path,
1151
+ GIT_FILEBUF_HASH_SHA256,
1152
+ GIT_CONFIG_FILE_MODE)) < 0)
1124
1153
  goto done;
1125
1154
 
1126
1155
  /* We need to read in our own config file */
@@ -1157,10 +1186,10 @@ static int config_file_write(config_file_backend *cfg, const char *orig_key, con
1157
1186
  if (cfg->locked) {
1158
1187
  size_t len = buf.asize;
1159
1188
  /* Update our copy with the modified contents */
1160
- git_buf_dispose(&cfg->locked_content);
1161
- git_buf_attach(&cfg->locked_content, git_buf_detach(&buf), len);
1189
+ git_str_dispose(&cfg->locked_content);
1190
+ git_str_attach(&cfg->locked_content, git_str_detach(&buf), len);
1162
1191
  } else {
1163
- git_filebuf_write(&file, git_buf_cstr(&buf), git_buf_len(&buf));
1192
+ git_filebuf_write(&file, git_str_cstr(&buf), git_str_len(&buf));
1164
1193
 
1165
1194
  if ((error = git_filebuf_commit(&file)) < 0)
1166
1195
  goto done;
@@ -1172,9 +1201,9 @@ static int config_file_write(config_file_backend *cfg, const char *orig_key, con
1172
1201
  done:
1173
1202
  git__free(section);
1174
1203
  git__free(orig_section);
1175
- git_buf_dispose(&write_data.buffered_comment);
1176
- git_buf_dispose(&buf);
1177
- git_buf_dispose(&contents);
1204
+ git_str_dispose(&write_data.buffered_comment);
1205
+ git_str_dispose(&buf);
1206
+ git_str_dispose(&contents);
1178
1207
  git_filebuf_cleanup(&file);
1179
1208
  git_config_parser_dispose(&parser);
1180
1209