rugged 1.3.1 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (656) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/ext/rugged/extconf.rb +6 -3
  4. data/ext/rugged/rugged.c +16 -0
  5. data/ext/rugged/rugged.h +4 -0
  6. data/ext/rugged/rugged_allocator.c +0 -54
  7. data/ext/rugged/rugged_blame.c +2 -0
  8. data/ext/rugged/rugged_blob.c +3 -0
  9. data/ext/rugged/rugged_commit.c +1 -0
  10. data/ext/rugged/rugged_config.c +9 -2
  11. data/ext/rugged/rugged_diff.c +1 -0
  12. data/ext/rugged/rugged_index.c +2 -0
  13. data/ext/rugged/rugged_patch.c +1 -0
  14. data/ext/rugged/rugged_rebase.c +1 -0
  15. data/ext/rugged/rugged_reference.c +1 -0
  16. data/ext/rugged/rugged_remote.c +28 -10
  17. data/ext/rugged/rugged_repo.c +7 -9
  18. data/ext/rugged/rugged_revwalk.c +5 -1
  19. data/ext/rugged/rugged_settings.c +5 -0
  20. data/ext/rugged/rugged_submodule.c +1 -0
  21. data/ext/rugged/rugged_tag.c +1 -0
  22. data/ext/rugged/rugged_tree.c +4 -0
  23. data/lib/rugged/index.rb +1 -1
  24. data/lib/rugged/tree.rb +5 -1
  25. data/lib/rugged/version.rb +1 -1
  26. data/vendor/libgit2/AUTHORS +1 -0
  27. data/vendor/libgit2/CMakeLists.txt +141 -289
  28. data/vendor/libgit2/COPYING +301 -20
  29. data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
  30. data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
  31. data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
  32. data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
  33. data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
  34. data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
  35. data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
  36. data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
  37. data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
  38. data/vendor/libgit2/cmake/FindHTTP_Parser.cmake +17 -17
  39. data/vendor/libgit2/cmake/FindIntlIconv.cmake +51 -0
  40. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  41. data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
  42. data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
  43. data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
  44. data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
  45. data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
  46. data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
  47. data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
  48. data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
  49. data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
  50. data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
  51. data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
  52. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
  53. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +34 -0
  54. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +129 -101
  55. data/vendor/libgit2/cmake/SelectHashes.cmake +113 -54
  56. data/vendor/libgit2/cmake/SelectRegex.cmake +56 -0
  57. data/vendor/libgit2/cmake/SelectSSH.cmake +46 -0
  58. data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
  59. data/vendor/libgit2/cmake/SelectZlib.cmake +38 -0
  60. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
  61. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  62. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  63. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  64. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  65. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  66. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  67. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
  68. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  69. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  70. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  71. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +7 -5
  72. data/vendor/libgit2/deps/ntlmclient/ntlm.c +25 -25
  73. data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
  74. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
  75. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  76. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  77. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  78. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  79. data/vendor/libgit2/deps/pcre/CMakeLists.txt +89 -88
  80. data/vendor/libgit2/deps/pcre/LICENCE +5 -5
  81. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  82. data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
  83. data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
  84. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
  85. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
  86. data/vendor/libgit2/deps/xdiff/git-xdiff.h +56 -0
  87. data/vendor/libgit2/{src → deps}/xdiff/xdiff.h +15 -15
  88. data/vendor/libgit2/{src → deps}/xdiff/xdiffi.c +152 -125
  89. data/vendor/libgit2/{src → deps}/xdiff/xdiffi.h +2 -4
  90. data/vendor/libgit2/{src → deps}/xdiff/xemit.c +26 -10
  91. data/vendor/libgit2/{src → deps}/xdiff/xhistogram.c +92 -94
  92. data/vendor/libgit2/{src → deps}/xdiff/xinclude.h +1 -12
  93. data/vendor/libgit2/{src → deps}/xdiff/xmacros.h +18 -1
  94. data/vendor/libgit2/{src → deps}/xdiff/xmerge.c +126 -137
  95. data/vendor/libgit2/{src → deps}/xdiff/xpatience.c +26 -46
  96. data/vendor/libgit2/{src → deps}/xdiff/xprepare.c +24 -46
  97. data/vendor/libgit2/{src → deps}/xdiff/xutils.c +36 -8
  98. data/vendor/libgit2/{src → deps}/xdiff/xutils.h +2 -1
  99. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  100. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  101. data/vendor/libgit2/deps/zlib/adler32.c +7 -22
  102. data/vendor/libgit2/deps/zlib/crc32.c +931 -317
  103. data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
  104. data/vendor/libgit2/deps/zlib/deflate.c +428 -453
  105. data/vendor/libgit2/deps/zlib/deflate.h +51 -23
  106. data/vendor/libgit2/deps/zlib/gzguts.h +15 -19
  107. data/vendor/libgit2/deps/zlib/infback.c +19 -31
  108. data/vendor/libgit2/deps/zlib/inffast.c +15 -18
  109. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  110. data/vendor/libgit2/deps/zlib/inflate.c +75 -110
  111. data/vendor/libgit2/deps/zlib/inflate.h +3 -2
  112. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  113. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  114. data/vendor/libgit2/deps/zlib/trees.c +294 -380
  115. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  116. data/vendor/libgit2/deps/zlib/zlib.h +310 -284
  117. data/vendor/libgit2/deps/zlib/zutil.c +20 -46
  118. data/vendor/libgit2/deps/zlib/zutil.h +24 -41
  119. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  120. data/vendor/libgit2/include/git2/apply.h +43 -8
  121. data/vendor/libgit2/include/git2/attr.h +28 -6
  122. data/vendor/libgit2/include/git2/blame.h +137 -29
  123. data/vendor/libgit2/include/git2/blob.h +85 -29
  124. data/vendor/libgit2/include/git2/branch.h +25 -16
  125. data/vendor/libgit2/include/git2/buffer.h +24 -82
  126. data/vendor/libgit2/include/git2/cert.h +4 -3
  127. data/vendor/libgit2/include/git2/checkout.h +88 -34
  128. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  129. data/vendor/libgit2/include/git2/clone.h +28 -12
  130. data/vendor/libgit2/include/git2/commit.h +134 -3
  131. data/vendor/libgit2/include/git2/common.h +172 -59
  132. data/vendor/libgit2/include/git2/config.h +118 -32
  133. data/vendor/libgit2/include/git2/credential.h +32 -3
  134. data/vendor/libgit2/include/git2/credential_helpers.h +2 -0
  135. data/vendor/libgit2/include/git2/deprecated.h +141 -3
  136. data/vendor/libgit2/include/git2/describe.h +20 -3
  137. data/vendor/libgit2/include/git2/diff.h +95 -19
  138. data/vendor/libgit2/include/git2/email.h +10 -30
  139. data/vendor/libgit2/include/git2/errors.h +51 -61
  140. data/vendor/libgit2/include/git2/experimental.h +20 -0
  141. data/vendor/libgit2/include/git2/filter.h +21 -9
  142. data/vendor/libgit2/include/git2/global.h +8 -1
  143. data/vendor/libgit2/include/git2/graph.h +4 -2
  144. data/vendor/libgit2/include/git2/ignore.h +11 -1
  145. data/vendor/libgit2/include/git2/index.h +111 -11
  146. data/vendor/libgit2/include/git2/indexer.h +67 -2
  147. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  148. data/vendor/libgit2/include/git2/merge.h +70 -5
  149. data/vendor/libgit2/include/git2/message.h +4 -2
  150. data/vendor/libgit2/include/git2/net.h +3 -1
  151. data/vendor/libgit2/include/git2/notes.h +9 -6
  152. data/vendor/libgit2/include/git2/object.h +57 -7
  153. data/vendor/libgit2/include/git2/odb.h +156 -33
  154. data/vendor/libgit2/include/git2/odb_backend.h +132 -16
  155. data/vendor/libgit2/include/git2/oid.h +116 -17
  156. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  157. data/vendor/libgit2/include/git2/pack.h +37 -9
  158. data/vendor/libgit2/include/git2/patch.h +10 -3
  159. data/vendor/libgit2/include/git2/pathspec.h +10 -1
  160. data/vendor/libgit2/include/git2/proxy.h +11 -1
  161. data/vendor/libgit2/include/git2/rebase.h +18 -7
  162. data/vendor/libgit2/include/git2/refdb.h +5 -2
  163. data/vendor/libgit2/include/git2/reflog.h +4 -3
  164. data/vendor/libgit2/include/git2/refs.h +11 -8
  165. data/vendor/libgit2/include/git2/refspec.h +14 -4
  166. data/vendor/libgit2/include/git2/remote.h +295 -54
  167. data/vendor/libgit2/include/git2/repository.h +95 -25
  168. data/vendor/libgit2/include/git2/reset.h +18 -5
  169. data/vendor/libgit2/include/git2/revert.h +9 -4
  170. data/vendor/libgit2/include/git2/revparse.h +4 -4
  171. data/vendor/libgit2/include/git2/revwalk.h +7 -3
  172. data/vendor/libgit2/include/git2/signature.h +47 -2
  173. data/vendor/libgit2/include/git2/stash.h +78 -10
  174. data/vendor/libgit2/include/git2/status.h +24 -11
  175. data/vendor/libgit2/include/git2/stdint.h +87 -85
  176. data/vendor/libgit2/include/git2/strarray.h +2 -16
  177. data/vendor/libgit2/include/git2/submodule.h +27 -11
  178. data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
  179. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  180. data/vendor/libgit2/include/git2/sys/commit_graph.h +110 -59
  181. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  182. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  183. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  184. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  185. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  186. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  187. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  188. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  189. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  190. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  191. data/vendor/libgit2/include/git2/sys/midx.h +47 -4
  192. data/vendor/libgit2/include/git2/sys/odb_backend.h +10 -9
  193. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  194. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  195. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  196. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  197. data/vendor/libgit2/include/git2/sys/remote.h +53 -0
  198. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  199. data/vendor/libgit2/include/git2/sys/stream.h +26 -3
  200. data/vendor/libgit2/include/git2/sys/transport.h +87 -41
  201. data/vendor/libgit2/include/git2/tag.h +4 -1
  202. data/vendor/libgit2/include/git2/trace.h +9 -3
  203. data/vendor/libgit2/include/git2/transaction.h +3 -2
  204. data/vendor/libgit2/include/git2/transport.h +11 -3
  205. data/vendor/libgit2/include/git2/tree.h +20 -8
  206. data/vendor/libgit2/include/git2/types.h +26 -10
  207. data/vendor/libgit2/include/git2/version.h +63 -6
  208. data/vendor/libgit2/include/git2/worktree.h +30 -8
  209. data/vendor/libgit2/include/git2.h +1 -0
  210. data/vendor/libgit2/src/CMakeLists.txt +203 -420
  211. data/vendor/libgit2/src/README.md +12 -0
  212. data/vendor/libgit2/src/cli/CMakeLists.txt +56 -0
  213. data/vendor/libgit2/src/cli/README.md +26 -0
  214. data/vendor/libgit2/src/{branch.h → cli/cmd.c} +10 -8
  215. data/vendor/libgit2/src/cli/cmd.h +37 -0
  216. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  217. data/vendor/libgit2/src/cli/cmd_cat_file.c +202 -0
  218. data/vendor/libgit2/src/cli/cmd_clone.c +190 -0
  219. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  220. data/vendor/libgit2/src/cli/cmd_hash_object.c +152 -0
  221. data/vendor/libgit2/src/cli/cmd_help.c +85 -0
  222. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  223. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  224. data/vendor/libgit2/src/cli/common.c +168 -0
  225. data/vendor/libgit2/src/cli/common.h +63 -0
  226. data/vendor/libgit2/src/cli/error.h +51 -0
  227. data/vendor/libgit2/src/cli/main.c +134 -0
  228. data/vendor/libgit2/src/cli/opt.c +695 -0
  229. data/vendor/libgit2/src/cli/opt.h +367 -0
  230. data/vendor/libgit2/src/cli/opt_usage.c +263 -0
  231. data/vendor/libgit2/src/cli/opt_usage.h +40 -0
  232. data/vendor/libgit2/src/cli/progress.c +395 -0
  233. data/vendor/libgit2/src/cli/progress.h +129 -0
  234. data/vendor/libgit2/src/cli/sighandler.h +20 -0
  235. data/vendor/libgit2/src/cli/unix/sighandler.c +37 -0
  236. data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
  237. data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
  238. data/vendor/libgit2/src/libgit2/CMakeLists.txt +140 -0
  239. data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +2 -2
  240. data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
  241. data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +32 -34
  242. data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
  243. data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +48 -31
  244. data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +25 -20
  245. data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +6 -4
  246. data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +87 -46
  247. data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +5 -9
  248. data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +152 -57
  249. data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +1 -0
  250. data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -2
  251. data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
  252. data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
  253. data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
  254. data/vendor/libgit2/src/libgit2/branch.h +31 -0
  255. data/vendor/libgit2/src/libgit2/buf.c +126 -0
  256. data/vendor/libgit2/src/libgit2/buf.h +50 -0
  257. data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +22 -17
  258. data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +7 -9
  259. data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +107 -91
  260. data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -2
  261. data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +14 -15
  262. data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +254 -203
  263. data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +4 -1
  264. data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +296 -77
  265. data/vendor/libgit2/src/libgit2/commit.h +87 -0
  266. data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +246 -135
  267. data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +33 -8
  268. data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +17 -7
  269. data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +1 -0
  270. data/vendor/libgit2/src/libgit2/common.h +55 -0
  271. data/vendor/libgit2/src/{config.c → libgit2/config.c} +490 -360
  272. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  273. data/vendor/libgit2/src/{config.h → libgit2/config.h} +24 -6
  274. data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +8 -10
  275. data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +4 -5
  276. data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +212 -183
  277. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  278. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  279. data/vendor/libgit2/src/libgit2/config_mem.c +374 -0
  280. data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +37 -32
  281. data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +24 -31
  282. data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
  283. data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +62 -51
  284. data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +44 -14
  285. data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +8 -10
  286. data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +46 -55
  287. data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +5 -5
  288. data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +45 -27
  289. data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +70 -20
  290. data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
  291. data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +22 -6
  292. data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +192 -105
  293. data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
  294. data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
  295. data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +49 -16
  296. data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
  297. data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +1 -1
  298. data/vendor/libgit2/src/{email.c → libgit2/email.c} +58 -40
  299. data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
  300. data/vendor/libgit2/src/{transports/ssh.h → libgit2/experimental.h.in} +3 -4
  301. data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +105 -30
  302. data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -3
  303. data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +30 -28
  304. data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +132 -58
  305. data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
  306. data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +3 -3
  307. data/vendor/libgit2/src/libgit2/grafts.c +270 -0
  308. data/vendor/libgit2/src/libgit2/grafts.h +35 -0
  309. data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +1 -1
  310. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  311. data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
  312. data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +44 -39
  313. data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
  314. data/vendor/libgit2/src/{index.c → libgit2/index.c} +460 -276
  315. data/vendor/libgit2/src/{index.h → libgit2/index.h} +21 -5
  316. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  317. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  318. data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +208 -124
  319. data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +102 -71
  320. data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +8 -5
  321. data/vendor/libgit2/src/libgit2/libgit2.c +268 -0
  322. data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +39 -37
  323. data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +83 -73
  324. data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
  325. data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +4 -4
  326. data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -5
  327. data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
  328. data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +174 -112
  329. data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +17 -6
  330. data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +53 -57
  331. data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +9 -2
  332. data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +29 -37
  333. data/vendor/libgit2/src/{object.c → libgit2/object.c} +166 -35
  334. data/vendor/libgit2/src/{object.h → libgit2/object.h} +17 -2
  335. data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +261 -88
  336. data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
  337. data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
  338. data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +67 -22
  339. data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +162 -89
  340. data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +171 -92
  341. data/vendor/libgit2/src/libgit2/oid.h +284 -0
  342. data/vendor/libgit2/src/libgit2/oidarray.c +89 -0
  343. data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +5 -1
  344. data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +126 -66
  345. data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +28 -12
  346. data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +146 -111
  347. data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +45 -25
  348. data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +8 -4
  349. data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +1 -1
  350. data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
  351. data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +8 -1
  352. data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +51 -16
  353. data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
  354. data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +42 -34
  355. data/vendor/libgit2/src/libgit2/path.c +375 -0
  356. data/vendor/libgit2/src/libgit2/path.h +68 -0
  357. data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +7 -7
  358. data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
  359. data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
  360. data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
  361. data/vendor/libgit2/src/{push.c → libgit2/push.c} +116 -60
  362. data/vendor/libgit2/src/{push.h → libgit2/push.h} +5 -16
  363. data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
  364. data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
  365. data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +147 -147
  366. data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +639 -254
  367. data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +8 -7
  368. data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +3 -2
  369. data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +67 -39
  370. data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +8 -3
  371. data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +60 -38
  372. data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +13 -2
  373. data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +821 -454
  374. data/vendor/libgit2/src/libgit2/remote.h +101 -0
  375. data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +1377 -594
  376. data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +43 -12
  377. data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
  378. data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +18 -22
  379. data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +76 -44
  380. data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +48 -19
  381. data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +3 -3
  382. data/vendor/libgit2/src/{libgit2.c → libgit2/settings.c} +162 -95
  383. data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +6 -2
  384. data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +144 -21
  385. data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -2
  386. data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +243 -68
  387. data/vendor/libgit2/src/{status.c → libgit2/status.c} +5 -2
  388. data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
  389. data/vendor/libgit2/src/libgit2/strarray.h +25 -0
  390. data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +62 -67
  391. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +41 -24
  392. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +2 -0
  393. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +11 -3
  394. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +6 -3
  395. data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
  396. data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
  397. data/vendor/libgit2/src/libgit2/streams/socket.c +428 -0
  398. data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +3 -1
  399. data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +79 -19
  400. data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +5 -0
  401. data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +279 -220
  402. data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +10 -11
  403. data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
  404. data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +55 -18
  405. data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +74 -43
  406. data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
  407. data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
  408. data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
  409. data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +7 -7
  410. data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +27 -21
  411. data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +4 -1
  412. data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +14 -11
  413. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
  414. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +3 -5
  415. data/vendor/libgit2/src/{transports/auth_negotiate.c → libgit2/transports/auth_gssapi.c} +44 -45
  416. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +1 -1
  417. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +1 -2
  418. data/vendor/libgit2/src/{transports/auth_ntlm.c → libgit2/transports/auth_ntlmclient.c} +22 -22
  419. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
  420. data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +1 -1
  421. data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +16 -19
  422. data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +49 -24
  423. data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -11
  424. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +188 -134
  425. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
  426. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  427. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  428. data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +159 -127
  429. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +142 -165
  430. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +56 -36
  431. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +307 -74
  432. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +297 -97
  433. data/vendor/libgit2/src/libgit2/transports/ssh.c +85 -0
  434. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  435. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  436. data/vendor/libgit2/src/{transports/ssh.c → libgit2/transports/ssh_libssh2.c} +414 -268
  437. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  438. data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +101 -75
  439. data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +30 -20
  440. data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +7 -5
  441. data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +128 -110
  442. data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +7 -6
  443. data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +160 -121
  444. data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
  445. data/vendor/libgit2/src/util/CMakeLists.txt +77 -0
  446. data/vendor/libgit2/src/{alloc.c → util/alloc.c} +69 -7
  447. data/vendor/libgit2/src/util/alloc.h +65 -0
  448. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  449. data/vendor/libgit2/src/util/allocators/debugalloc.h +17 -0
  450. data/vendor/libgit2/src/util/allocators/failalloc.c +32 -0
  451. data/vendor/libgit2/src/util/allocators/failalloc.h +17 -0
  452. data/vendor/libgit2/src/util/allocators/stdalloc.c +37 -0
  453. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
  454. data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +50 -0
  455. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
  456. data/vendor/libgit2/src/{array.h → util/array.h} +25 -19
  457. data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
  458. data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +5 -1
  459. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  460. data/vendor/libgit2/src/{date.c → util/date.c} +35 -33
  461. data/vendor/libgit2/src/util/date.h +45 -0
  462. data/vendor/libgit2/src/util/errors.c +401 -0
  463. data/vendor/libgit2/src/{errors.h → util/errors.h} +22 -19
  464. data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +35 -30
  465. data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +21 -8
  466. data/vendor/libgit2/src/{path.c → util/fs_path.c} +591 -615
  467. data/vendor/libgit2/src/{path.h → util/fs_path.h} +257 -181
  468. data/vendor/libgit2/src/{futils.c → util/futils.c} +144 -95
  469. data/vendor/libgit2/src/{futils.h → util/futils.h} +40 -18
  470. data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +33 -2
  471. data/vendor/libgit2/src/{common.h → util/git2_util.h} +26 -59
  472. data/vendor/libgit2/src/util/hash/builtin.c +53 -0
  473. data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
  474. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
  475. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
  476. data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
  477. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
  478. data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
  479. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
  480. data/vendor/libgit2/src/util/hash/openssl.c +347 -0
  481. data/vendor/libgit2/src/util/hash/openssl.h +61 -0
  482. data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
  483. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
  484. data/vendor/libgit2/src/util/hash/sha.h +73 -0
  485. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
  486. data/vendor/libgit2/src/util/hash/win32.c +549 -0
  487. data/vendor/libgit2/src/util/hash/win32.h +60 -0
  488. data/vendor/libgit2/src/util/hash.c +158 -0
  489. data/vendor/libgit2/src/util/hash.h +61 -0
  490. data/vendor/libgit2/src/util/hashmap.h +424 -0
  491. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  492. data/vendor/libgit2/src/{integer.h → util/integer.h} +3 -1
  493. data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
  494. data/vendor/libgit2/src/util/net.c +1160 -0
  495. data/vendor/libgit2/src/{net.h → util/net.h} +45 -4
  496. data/vendor/libgit2/src/{pool.c → util/pool.c} +1 -1
  497. data/vendor/libgit2/src/{pool.h → util/pool.h} +6 -1
  498. data/vendor/libgit2/src/{posix.c → util/posix.c} +57 -3
  499. data/vendor/libgit2/src/{posix.h → util/posix.h} +26 -1
  500. data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +3 -3
  501. data/vendor/libgit2/src/util/process.h +222 -0
  502. data/vendor/libgit2/src/util/rand.c +230 -0
  503. data/vendor/libgit2/src/util/rand.h +37 -0
  504. data/vendor/libgit2/src/{regexp.c → util/regexp.c} +5 -5
  505. data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
  506. data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
  507. data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
  508. data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +15 -14
  509. data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +5 -5
  510. data/vendor/libgit2/src/util/staticstr.h +66 -0
  511. data/vendor/libgit2/src/{buffer.c → util/str.c} +159 -153
  512. data/vendor/libgit2/src/util/str.h +357 -0
  513. data/vendor/libgit2/src/util/strlist.c +108 -0
  514. data/vendor/libgit2/src/util/strlist.h +36 -0
  515. data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
  516. data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
  517. data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
  518. data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
  519. data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -6
  520. data/vendor/libgit2/src/util/unix/process.c +629 -0
  521. data/vendor/libgit2/src/{unix → util/unix}/realpath.c +24 -8
  522. data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
  523. data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
  524. data/vendor/libgit2/src/{util.c → util/util.c} +24 -19
  525. data/vendor/libgit2/src/{util.h → util/util.h} +30 -81
  526. data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
  527. data/vendor/libgit2/src/{vector.c → util/vector.c} +3 -3
  528. data/vendor/libgit2/src/{vector.h → util/vector.h} +4 -4
  529. data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
  530. data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
  531. data/vendor/libgit2/src/{win32 → util/win32}/error.c +1 -1
  532. data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
  533. data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
  534. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +148 -17
  535. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
  536. data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
  537. data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +42 -35
  538. data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
  539. data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
  540. data/vendor/libgit2/src/util/win32/process.c +506 -0
  541. data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
  542. data/vendor/libgit2/src/util/win32/utf-conv.c +144 -0
  543. data/vendor/libgit2/src/util/win32/utf-conv.h +127 -0
  544. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
  545. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
  546. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
  547. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
  548. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +1 -1
  549. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
  550. data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
  551. data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
  552. metadata +431 -362
  553. data/vendor/libgit2/cmake/FindIconv.cmake +0 -45
  554. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  555. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  556. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  557. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  558. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  559. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  560. data/vendor/libgit2/src/alloc.h +0 -40
  561. data/vendor/libgit2/src/allocators/failalloc.c +0 -92
  562. data/vendor/libgit2/src/allocators/failalloc.h +0 -23
  563. data/vendor/libgit2/src/allocators/stdalloc.c +0 -150
  564. data/vendor/libgit2/src/allocators/win32_leakcheck.c +0 -118
  565. data/vendor/libgit2/src/buffer.h +0 -374
  566. data/vendor/libgit2/src/commit.h +0 -46
  567. data/vendor/libgit2/src/config_entries.c +0 -237
  568. data/vendor/libgit2/src/config_entries.h +0 -24
  569. data/vendor/libgit2/src/config_mem.c +0 -220
  570. data/vendor/libgit2/src/errors.c +0 -238
  571. data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
  572. data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
  573. data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
  574. data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
  575. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  576. data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
  577. data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
  578. data/vendor/libgit2/src/hash/sha1.h +0 -38
  579. data/vendor/libgit2/src/hash.c +0 -110
  580. data/vendor/libgit2/src/hash.h +0 -46
  581. data/vendor/libgit2/src/idxmap.c +0 -157
  582. data/vendor/libgit2/src/idxmap.h +0 -177
  583. data/vendor/libgit2/src/khash.h +0 -615
  584. data/vendor/libgit2/src/libgit2.h +0 -15
  585. data/vendor/libgit2/src/message.h +0 -17
  586. data/vendor/libgit2/src/net.c +0 -540
  587. data/vendor/libgit2/src/netops.c +0 -125
  588. data/vendor/libgit2/src/netops.h +0 -68
  589. data/vendor/libgit2/src/offmap.c +0 -101
  590. data/vendor/libgit2/src/offmap.h +0 -133
  591. data/vendor/libgit2/src/oid.h +0 -51
  592. data/vendor/libgit2/src/oidarray.c +0 -43
  593. data/vendor/libgit2/src/oidmap.c +0 -107
  594. data/vendor/libgit2/src/oidmap.h +0 -128
  595. data/vendor/libgit2/src/remote.h +0 -55
  596. data/vendor/libgit2/src/streams/socket.c +0 -239
  597. data/vendor/libgit2/src/strmap.c +0 -100
  598. data/vendor/libgit2/src/strmap.h +0 -131
  599. data/vendor/libgit2/src/sysdir.c +0 -347
  600. data/vendor/libgit2/src/threadstate.c +0 -84
  601. data/vendor/libgit2/src/threadstate.h +0 -24
  602. data/vendor/libgit2/src/win32/findfile.c +0 -230
  603. data/vendor/libgit2/src/win32/findfile.h +0 -19
  604. data/vendor/libgit2/src/win32/utf-conv.c +0 -146
  605. data/vendor/libgit2/src/win32/utf-conv.h +0 -60
  606. /data/vendor/libgit2/{src → deps}/xdiff/xemit.h +0 -0
  607. /data/vendor/libgit2/{src → deps}/xdiff/xprepare.h +0 -0
  608. /data/vendor/libgit2/{src → deps}/xdiff/xtypes.h +0 -0
  609. /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
  610. /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
  611. /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
  612. /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
  613. /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
  614. /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
  615. /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
  616. /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
  617. /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
  618. /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
  619. /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
  620. /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
  621. /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
  622. /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
  623. /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
  624. /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
  625. /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
  626. /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
  627. /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
  628. /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
  629. /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
  630. /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
  631. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
  632. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
  633. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
  634. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
  635. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
  636. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
  637. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
  638. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
  639. /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
  640. /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
  641. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
  642. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
  643. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
  644. /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
  645. /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
  646. /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
  647. /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
  648. /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
  649. /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
  650. /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
  651. /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
  652. /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
  653. /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
  654. /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
  655. /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
  656. /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
@@ -7,11 +7,8 @@
7
7
 
8
8
  #include "submodule.h"
9
9
 
10
- #include "git2/config.h"
11
- #include "git2/sys/config.h"
12
- #include "git2/types.h"
13
- #include "git2/index.h"
14
- #include "buffer.h"
10
+ #include "buf.h"
11
+ #include "branch.h"
15
12
  #include "vector.h"
16
13
  #include "posix.h"
17
14
  #include "config_backend.h"
@@ -19,10 +16,17 @@
19
16
  #include "repository.h"
20
17
  #include "tree.h"
21
18
  #include "iterator.h"
22
- #include "path.h"
19
+ #include "fs_path.h"
20
+ #include "str.h"
23
21
  #include "index.h"
24
22
  #include "worktree.h"
25
23
  #include "clone.h"
24
+ #include "path.h"
25
+
26
+ #include "git2/config.h"
27
+ #include "git2/sys/config.h"
28
+ #include "git2/types.h"
29
+ #include "git2/index.h"
26
30
 
27
31
  #define GIT_MODULES_FILE ".gitmodules"
28
32
 
@@ -57,14 +61,14 @@ enum {
57
61
  };
58
62
  enum {
59
63
  GITMODULES_EXISTING = 0,
60
- GITMODULES_CREATE = 1,
64
+ GITMODULES_CREATE = 1
61
65
  };
62
66
 
63
67
  static int submodule_alloc(git_submodule **out, git_repository *repo, const char *name);
64
68
  static git_config_backend *open_gitmodules(git_repository *repo, int gitmod);
65
69
  static int gitmodules_snapshot(git_config **snap, git_repository *repo);
66
- static int get_url_base(git_buf *url, git_repository *repo);
67
- static int lookup_head_remote_key(git_buf *remote_key, git_repository *repo);
70
+ static int get_url_base(git_str *url, git_repository *repo);
71
+ static int lookup_head_remote_key(git_str *remote_key, git_repository *repo);
68
72
  static int lookup_default_remote(git_remote **remote, git_repository *repo);
69
73
  static int submodule_load_each(const git_config_entry *entry, void *payload);
70
74
  static int submodule_read_config(git_submodule *sm, git_config *cfg);
@@ -79,11 +83,11 @@ static int submodule_cmp(const void *a, const void *b)
79
83
  return strcmp(((git_submodule *)a)->name, ((git_submodule *)b)->name);
80
84
  }
81
85
 
82
- static int submodule_config_key_trunc_puts(git_buf *key, const char *suffix)
86
+ static int submodule_config_key_trunc_puts(git_str *key, const char *suffix)
83
87
  {
84
- ssize_t idx = git_buf_rfind(key, '.');
85
- git_buf_truncate(key, (size_t)(idx + 1));
86
- return git_buf_puts(key, suffix);
88
+ ssize_t idx = git_str_rfind(key, '.');
89
+ git_str_truncate(key, (size_t)(idx + 1));
90
+ return git_str_puts(key, suffix);
87
91
  }
88
92
 
89
93
  /*
@@ -128,7 +132,7 @@ static int is_path_occupied(bool *occupied, git_repository *repo, const char *pa
128
132
  {
129
133
  int error = 0;
130
134
  git_index *index;
131
- git_buf dir = GIT_BUF_INIT;
135
+ git_str dir = GIT_STR_INIT;
132
136
  *occupied = false;
133
137
 
134
138
  if ((error = git_repository_index__weakptr(&index, repo)) < 0)
@@ -143,10 +147,10 @@ static int is_path_occupied(bool *occupied, git_repository *repo, const char *pa
143
147
  goto out;
144
148
  }
145
149
 
146
- if ((error = git_buf_sets(&dir, path)) < 0)
150
+ if ((error = git_str_sets(&dir, path)) < 0)
147
151
  goto out;
148
152
 
149
- if ((error = git_path_to_dir(&dir)) < 0)
153
+ if ((error = git_fs_path_to_dir(&dir)) < 0)
150
154
  goto out;
151
155
 
152
156
  if ((error = git_index_find_prefix(NULL, index, dir.ptr)) != GIT_ENOTFOUND) {
@@ -161,26 +165,31 @@ static int is_path_occupied(bool *occupied, git_repository *repo, const char *pa
161
165
  error = 0;
162
166
 
163
167
  out:
164
- git_buf_dispose(&dir);
168
+ git_str_dispose(&dir);
165
169
  return error;
166
170
  }
167
171
 
172
+ GIT_HASHMAP_STR_SETUP(git_submodule_namemap, char *);
173
+
168
174
  /**
169
175
  * Release the name map returned by 'load_submodule_names'.
170
176
  */
171
- static void free_submodule_names(git_strmap *names)
177
+ static void free_submodule_names(git_submodule_namemap *names)
172
178
  {
179
+ git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
173
180
  const char *key;
174
181
  char *value;
175
182
 
176
183
  if (names == NULL)
177
184
  return;
178
185
 
179
- git_strmap_foreach(names, key, value, {
180
- git__free((char *) key);
186
+ while (git_submodule_namemap_iterate(&iter, &key, &value, names) == 0) {
187
+ git__free((char *)key);
181
188
  git__free(value);
182
- });
183
- git_strmap_free(names);
189
+ }
190
+
191
+ git_submodule_namemap_dispose(names);
192
+ git__free(names);
184
193
 
185
194
  return;
186
195
  }
@@ -190,19 +199,22 @@ static void free_submodule_names(git_strmap *names)
190
199
  * TODO: for some use-cases, this might need case-folding on a
191
200
  * case-insensitive filesystem
192
201
  */
193
- static int load_submodule_names(git_strmap **out, git_repository *repo, git_config *cfg)
202
+ static int load_submodule_names(git_submodule_namemap **out, git_repository *repo, git_config *cfg)
194
203
  {
195
- const char *key = "submodule\\..*\\.path";
204
+ const char *key = "^submodule\\..*\\.path$";
205
+ char *value;
196
206
  git_config_iterator *iter = NULL;
197
207
  git_config_entry *entry;
198
- git_buf buf = GIT_BUF_INIT;
199
- git_strmap *names;
208
+ git_str buf = GIT_STR_INIT;
209
+ git_submodule_namemap *names;
200
210
  int isvalid, error;
201
211
 
202
212
  *out = NULL;
203
213
 
204
- if ((error = git_strmap_new(&names)) < 0)
214
+ if ((names = git__calloc(1, sizeof(git_submodule_namemap))) == NULL) {
215
+ error = -1;
205
216
  goto out;
217
+ }
206
218
 
207
219
  if ((error = git_config_iterator_glob_new(&iter, cfg, key)) < 0)
208
220
  goto out;
@@ -212,15 +224,15 @@ static int load_submodule_names(git_strmap **out, git_repository *repo, git_conf
212
224
  fdot = strchr(entry->name, '.');
213
225
  ldot = strrchr(entry->name, '.');
214
226
 
215
- if (git_strmap_exists(names, entry->value)) {
227
+ if (git_submodule_namemap_contains(names, entry->value)) {
216
228
  git_error_set(GIT_ERROR_SUBMODULE,
217
229
  "duplicated submodule path '%s'", entry->value);
218
230
  error = -1;
219
231
  goto out;
220
232
  }
221
233
 
222
- git_buf_clear(&buf);
223
- git_buf_put(&buf, fdot + 1, ldot - fdot - 1);
234
+ git_str_clear(&buf);
235
+ git_str_put(&buf, fdot + 1, ldot - fdot - 1);
224
236
  isvalid = git_submodule_name_is_valid(repo, buf.ptr, 0);
225
237
  if (isvalid < 0) {
226
238
  error = isvalid;
@@ -229,7 +241,12 @@ static int load_submodule_names(git_strmap **out, git_repository *repo, git_conf
229
241
  if (!isvalid)
230
242
  continue;
231
243
 
232
- if ((error = git_strmap_set(names, git__strdup(entry->value), git_buf_detach(&buf))) < 0) {
244
+ if ((value = git__strdup(entry->value)) == NULL) {
245
+ error = -1;
246
+ goto out;
247
+ }
248
+
249
+ if ((error = git_submodule_namemap_put(names, value, git_str_detach(&buf))) < 0) {
233
250
  git_error_set(GIT_ERROR_NOMEMORY, "error inserting submodule into hash table");
234
251
  error = -1;
235
252
  goto out;
@@ -243,36 +260,48 @@ static int load_submodule_names(git_strmap **out, git_repository *repo, git_conf
243
260
 
244
261
  out:
245
262
  free_submodule_names(names);
246
- git_buf_dispose(&buf);
263
+ git_str_dispose(&buf);
247
264
  git_config_iterator_free(iter);
248
265
  return error;
249
266
  }
250
267
 
251
- int git_submodule_cache_init(git_strmap **out, git_repository *repo)
268
+ GIT_HASHMAP_STR_FUNCTIONS(git_submodule_cache, GIT_HASHMAP_INLINE, git_submodule *);
269
+
270
+ int git_submodule__map(git_submodule_cache *cache, git_repository *repo);
271
+
272
+ int git_submodule_cache_init(git_submodule_cache **out, git_repository *repo)
252
273
  {
274
+ git_submodule_cache *cache = NULL;
253
275
  int error = 0;
254
- git_strmap *cache = NULL;
276
+
255
277
  GIT_ASSERT_ARG(out);
256
278
  GIT_ASSERT_ARG(repo);
257
- if ((error = git_strmap_new(&cache)) < 0)
258
- return error;
259
- if ((error = git_submodule__map(repo, cache)) < 0) {
279
+
280
+ if ((cache = git__calloc(1, sizeof(git_submodule_cache))) == NULL)
281
+ return -1;
282
+
283
+ if ((error = git_submodule__map(cache, repo)) < 0) {
260
284
  git_submodule_cache_free(cache);
261
285
  return error;
262
286
  }
287
+
263
288
  *out = cache;
264
289
  return error;
265
290
  }
266
291
 
267
- int git_submodule_cache_free(git_strmap *cache)
292
+ int git_submodule_cache_free(git_submodule_cache *cache)
268
293
  {
269
294
  git_submodule *sm = NULL;
295
+ git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
296
+
270
297
  if (cache == NULL)
271
298
  return 0;
272
- git_strmap_foreach_value(cache, sm, {
299
+
300
+ while (git_submodule_cache_iterate(&iter, NULL, &sm, cache) == 0)
273
301
  git_submodule_free(sm);
274
- });
275
- git_strmap_free(cache);
302
+
303
+ git_submodule_cache_dispose(cache);
304
+ git__free(cache);
276
305
  return 0;
277
306
  }
278
307
 
@@ -288,7 +317,7 @@ int git_submodule__lookup_with_cache(
288
317
  git_submodule **out, /* NULL if user only wants to test existence */
289
318
  git_repository *repo,
290
319
  const char *name, /* trailing slash is allowed */
291
- git_strmap *cache)
320
+ git_submodule_cache *cache)
292
321
  {
293
322
  int error;
294
323
  unsigned int location;
@@ -303,7 +332,7 @@ int git_submodule__lookup_with_cache(
303
332
  }
304
333
 
305
334
  if (cache != NULL) {
306
- if ((sm = git_strmap_get(cache, name)) != NULL) {
335
+ if (git_submodule_cache_get(&sm, cache, name) == 0) {
307
336
  if (out) {
308
337
  *out = sm;
309
338
  GIT_REFCOUNT_INC(*out);
@@ -328,11 +357,11 @@ int git_submodule__lookup_with_cache(
328
357
  /* If it's not configured or we're looking by path */
329
358
  if (location == 0 || location == GIT_SUBMODULE_STATUS_IN_WD) {
330
359
  git_config_backend *mods;
331
- const char *pattern = "submodule\\..*\\.path";
332
- git_buf path = GIT_BUF_INIT;
360
+ const char *pattern = "^submodule\\..*\\.path$";
361
+ git_str path = GIT_STR_INIT;
333
362
  fbp_data data = { NULL, NULL };
334
363
 
335
- git_buf_puts(&path, name);
364
+ git_str_puts(&path, name);
336
365
  while (path.ptr[path.size-1] == '/') {
337
366
  path.ptr[--path.size] = '\0';
338
367
  }
@@ -347,14 +376,14 @@ int git_submodule__lookup_with_cache(
347
376
 
348
377
  if (error < 0) {
349
378
  git_submodule_free(sm);
350
- git_buf_dispose(&path);
379
+ git_str_dispose(&path);
351
380
  return error;
352
381
  }
353
382
 
354
383
  if (data.name) {
355
384
  git__free(sm->name);
356
385
  sm->name = data.name;
357
- sm->path = git_buf_detach(&path);
386
+ sm->path = git_str_detach(&path);
358
387
 
359
388
  /* Try to load again with the right name */
360
389
  if ((error = git_submodule_reload(sm, false)) < 0) {
@@ -363,7 +392,7 @@ int git_submodule__lookup_with_cache(
363
392
  }
364
393
  }
365
394
 
366
- git_buf_dispose(&path);
395
+ git_str_dispose(&path);
367
396
  }
368
397
 
369
398
  if ((error = git_submodule_location(&location, sm)) < 0) {
@@ -378,17 +407,17 @@ int git_submodule__lookup_with_cache(
378
407
 
379
408
  /* If it's not configured, we still check if there's a repo at the path */
380
409
  if (git_repository_workdir(repo)) {
381
- git_buf path = GIT_BUF_INIT;
382
- if (git_buf_join3(&path, '/',
410
+ git_str path = GIT_STR_INIT;
411
+ if (git_str_join3(&path, '/',
383
412
  git_repository_workdir(repo),
384
413
  name, DOT_GIT) < 0 ||
385
- git_path_validate_workdir_buf(NULL, &path) < 0)
414
+ git_path_validate_str_length(NULL, &path) < 0)
386
415
  return -1;
387
416
 
388
- if (git_path_exists(path.ptr))
417
+ if (git_fs_path_exists(path.ptr))
389
418
  error = GIT_EEXISTS;
390
419
 
391
- git_buf_dispose(&path);
420
+ git_str_dispose(&path);
392
421
  }
393
422
 
394
423
  submodule_set_lookup_error(error, name);
@@ -405,22 +434,22 @@ int git_submodule__lookup_with_cache(
405
434
 
406
435
  int git_submodule_name_is_valid(git_repository *repo, const char *name, int flags)
407
436
  {
408
- git_buf buf = GIT_BUF_INIT;
437
+ git_str buf = GIT_STR_INIT;
409
438
  int error, isvalid;
410
439
 
411
440
  if (flags == 0)
412
- flags = GIT_PATH_REJECT_FILESYSTEM_DEFAULTS;
441
+ flags = GIT_FS_PATH_REJECT_FILESYSTEM_DEFAULTS;
413
442
 
414
443
  /* Avoid allocating a new string if we can avoid it */
415
444
  if (strchr(name, '\\') != NULL) {
416
- if ((error = git_path_normalize_slashes(&buf, name)) < 0)
445
+ if ((error = git_fs_path_normalize_slashes(&buf, name)) < 0)
417
446
  return error;
418
447
  } else {
419
- git_buf_attach_notowned(&buf, name, strlen(name));
448
+ git_str_attach_notowned(&buf, name, strlen(name));
420
449
  }
421
450
 
422
- isvalid = git_path_validate(repo, buf.ptr, 0, flags);
423
- git_buf_dispose(&buf);
451
+ isvalid = git_path_is_valid(repo, buf.ptr, 0, flags);
452
+ git_str_dispose(&buf);
424
453
 
425
454
  return isvalid;
426
455
  }
@@ -430,19 +459,23 @@ static void submodule_free_dup(void *sm)
430
459
  git_submodule_free(sm);
431
460
  }
432
461
 
433
- static int submodule_get_or_create(git_submodule **out, git_repository *repo, git_strmap *map, const char *name)
462
+ static int submodule_get_or_create(
463
+ git_submodule **out,
464
+ git_repository *repo,
465
+ git_submodule_cache *cache,
466
+ const char *name)
434
467
  {
435
468
  git_submodule *sm = NULL;
436
469
  int error;
437
470
 
438
- if ((sm = git_strmap_get(map, name)) != NULL)
471
+ if (git_submodule_cache_get(&sm, cache, name) == 0)
439
472
  goto done;
440
473
 
441
474
  /* if the submodule doesn't exist yet in the map, create it */
442
475
  if ((error = submodule_alloc(&sm, repo, name)) < 0)
443
476
  return error;
444
477
 
445
- if ((error = git_strmap_set(map, sm->name, sm)) < 0) {
478
+ if ((error = git_submodule_cache_put(cache, sm->name, sm)) < 0) {
446
479
  git_submodule_free(sm);
447
480
  return error;
448
481
  }
@@ -453,12 +486,15 @@ done:
453
486
  return 0;
454
487
  }
455
488
 
456
- static int submodules_from_index(git_strmap *map, git_index *idx, git_config *cfg)
489
+ static int submodules_from_index(
490
+ git_submodule_cache *cache,
491
+ git_index *idx,
492
+ git_config *cfg)
457
493
  {
458
494
  int error;
459
495
  git_iterator *i = NULL;
460
496
  const git_index_entry *entry;
461
- git_strmap *names;
497
+ git_submodule_namemap *names;
462
498
 
463
499
  if ((error = load_submodule_names(&names, git_index_owner(idx), cfg)))
464
500
  goto done;
@@ -469,7 +505,7 @@ static int submodules_from_index(git_strmap *map, git_index *idx, git_config *cf
469
505
  while (!(error = git_iterator_advance(&entry, i))) {
470
506
  git_submodule *sm;
471
507
 
472
- if ((sm = git_strmap_get(map, entry->path)) != NULL) {
508
+ if (git_submodule_cache_get(&sm, cache, entry->path) == 0) {
473
509
  if (S_ISGITLINK(entry->mode))
474
510
  submodule_update_from_index_entry(sm, entry);
475
511
  else
@@ -477,10 +513,10 @@ static int submodules_from_index(git_strmap *map, git_index *idx, git_config *cf
477
513
  } else if (S_ISGITLINK(entry->mode)) {
478
514
  const char *name;
479
515
 
480
- if ((name = git_strmap_get(names, entry->path)) == NULL)
516
+ if (git_submodule_namemap_get((char **)&name, names, entry->path) != 0)
481
517
  name = entry->path;
482
518
 
483
- if (!submodule_get_or_create(&sm, git_index_owner(idx), map, name)) {
519
+ if (!submodule_get_or_create(&sm, git_index_owner(idx), cache, name)) {
484
520
  submodule_update_from_index_entry(sm, entry);
485
521
  git_submodule_free(sm);
486
522
  }
@@ -497,12 +533,15 @@ done:
497
533
  return error;
498
534
  }
499
535
 
500
- static int submodules_from_head(git_strmap *map, git_tree *head, git_config *cfg)
536
+ static int submodules_from_head(
537
+ git_submodule_cache *cache,
538
+ git_tree *head,
539
+ git_config *cfg)
501
540
  {
502
541
  int error;
503
542
  git_iterator *i = NULL;
504
543
  const git_index_entry *entry;
505
- git_strmap *names;
544
+ git_submodule_namemap *names;
506
545
 
507
546
  if ((error = load_submodule_names(&names, git_tree_owner(head), cfg)))
508
547
  goto done;
@@ -513,7 +552,7 @@ static int submodules_from_head(git_strmap *map, git_tree *head, git_config *cfg
513
552
  while (!(error = git_iterator_advance(&entry, i))) {
514
553
  git_submodule *sm;
515
554
 
516
- if ((sm = git_strmap_get(map, entry->path)) != NULL) {
555
+ if (git_submodule_cache_get(&sm, cache, entry->path) == 0) {
517
556
  if (S_ISGITLINK(entry->mode))
518
557
  submodule_update_from_head_data(sm, entry->mode, &entry->id);
519
558
  else
@@ -521,10 +560,10 @@ static int submodules_from_head(git_strmap *map, git_tree *head, git_config *cfg
521
560
  } else if (S_ISGITLINK(entry->mode)) {
522
561
  const char *name;
523
562
 
524
- if ((name = git_strmap_get(names, entry->path)) == NULL)
563
+ if (git_submodule_namemap_get((char **)&name, names, entry->path) != 0)
525
564
  name = entry->path;
526
565
 
527
- if (!submodule_get_or_create(&sm, git_tree_owner(head), map, name)) {
566
+ if (!submodule_get_or_create(&sm, git_tree_owner(head), cache, name)) {
528
567
  submodule_update_from_head_data(
529
568
  sm, entry->mode, &entry->id);
530
569
  git_submodule_free(sm);
@@ -545,22 +584,22 @@ done:
545
584
  /* If have_sm is true, sm is populated, otherwise map an repo are. */
546
585
  typedef struct {
547
586
  git_config *mods;
548
- git_strmap *map;
587
+ git_submodule_cache *cache;
549
588
  git_repository *repo;
550
589
  } lfc_data;
551
590
 
552
- int git_submodule__map(git_repository *repo, git_strmap *map)
591
+ int git_submodule__map(git_submodule_cache *cache, git_repository *repo)
553
592
  {
554
593
  int error = 0;
555
594
  git_index *idx = NULL;
556
595
  git_tree *head = NULL;
557
- git_buf path = GIT_BUF_INIT;
596
+ git_str path = GIT_STR_INIT;
558
597
  git_submodule *sm;
559
598
  git_config *mods = NULL;
560
599
  bool has_workdir;
561
600
 
601
+ GIT_ASSERT_ARG(cache);
562
602
  GIT_ASSERT_ARG(repo);
563
- GIT_ASSERT_ARG(map);
564
603
 
565
604
  /* get sources that we will need to check */
566
605
  if (git_repository_index(&idx, repo) < 0)
@@ -577,7 +616,7 @@ int git_submodule__map(git_repository *repo, git_strmap *map)
577
616
  /* add submodule information from .gitmodules */
578
617
  if (has_workdir) {
579
618
  lfc_data data = { 0 };
580
- data.map = map;
619
+ data.cache = cache;
581
620
  data.repo = repo;
582
621
 
583
622
  if ((error = gitmodules_snapshot(&mods, repo)) < 0) {
@@ -593,19 +632,22 @@ int git_submodule__map(git_repository *repo, git_strmap *map)
593
632
  }
594
633
  /* add back submodule information from index */
595
634
  if (mods && idx) {
596
- if ((error = submodules_from_index(map, idx, mods)) < 0)
635
+ if ((error = submodules_from_index(cache, idx, mods)) < 0)
597
636
  goto cleanup;
598
637
  }
599
638
  /* add submodule information from HEAD */
600
639
  if (mods && head) {
601
- if ((error = submodules_from_head(map, head, mods)) < 0)
640
+ if ((error = submodules_from_head(cache, head, mods)) < 0)
602
641
  goto cleanup;
603
642
  }
604
643
  /* shallow scan submodules in work tree as needed */
605
644
  if (has_workdir) {
606
- git_strmap_foreach_value(map, sm, {
607
- submodule_load_from_wd_lite(sm);
608
- });
645
+ git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
646
+
647
+ while (git_submodule_cache_iterate(&iter, NULL, &sm, cache) == 0) {
648
+ if ((error = submodule_load_from_wd_lite(sm)) < 0)
649
+ goto cleanup;
650
+ }
609
651
  }
610
652
 
611
653
  cleanup:
@@ -613,7 +655,7 @@ cleanup:
613
655
  /* TODO: if we got an error, mark submodule config as invalid? */
614
656
  git_index_free(idx);
615
657
  git_tree_free(head);
616
- git_buf_dispose(&path);
658
+ git_str_dispose(&path);
617
659
  return error;
618
660
  }
619
661
 
@@ -623,8 +665,9 @@ int git_submodule_foreach(
623
665
  void *payload)
624
666
  {
625
667
  git_vector snapshot = GIT_VECTOR_INIT;
626
- git_strmap *submodules;
668
+ git_submodule_cache *submodules;
627
669
  git_submodule *sm;
670
+ git_hashmap_iter_t iter;
628
671
  int error;
629
672
  size_t i;
630
673
 
@@ -633,20 +676,22 @@ int git_submodule_foreach(
633
676
  return -1;
634
677
  }
635
678
 
636
- if ((error = git_strmap_new(&submodules)) < 0)
637
- return error;
679
+ if ((submodules = git__calloc(1, sizeof(git_submodule_cache))) == NULL)
680
+ return -1;
638
681
 
639
- if ((error = git_submodule__map(repo, submodules)) < 0)
682
+ if ((error = git_submodule__map(submodules, repo)) < 0)
640
683
  goto done;
641
684
 
642
- if (!(error = git_vector_init(
643
- &snapshot, git_strmap_size(submodules), submodule_cmp))) {
644
-
645
- git_strmap_foreach_value(submodules, sm, {
685
+ if (!(error = git_vector_init(&snapshot,
686
+ git_submodule_cache_size(submodules),
687
+ submodule_cmp))) {
688
+ for (iter = GIT_HASHMAP_ITER_INIT;
689
+ git_submodule_cache_iterate(&iter, NULL, &sm, submodules) == 0; ) {
646
690
  if ((error = git_vector_insert(&snapshot, sm)) < 0)
647
691
  break;
692
+
648
693
  GIT_REFCOUNT_INC(sm);
649
- });
694
+ }
650
695
  }
651
696
 
652
697
  if (error < 0)
@@ -664,12 +709,14 @@ int git_submodule_foreach(
664
709
  done:
665
710
  git_vector_foreach(&snapshot, i, sm)
666
711
  git_submodule_free(sm);
667
- git_vector_free(&snapshot);
712
+ git_vector_dispose(&snapshot);
668
713
 
669
- git_strmap_foreach_value(submodules, sm, {
714
+ for (iter = GIT_HASHMAP_ITER_INIT;
715
+ git_submodule_cache_iterate(&iter, NULL, &sm, submodules) == 0; )
670
716
  git_submodule_free(sm);
671
- });
672
- git_strmap_free(submodules);
717
+
718
+ git_submodule_cache_dispose(submodules);
719
+ git__free(submodules);
673
720
 
674
721
  return error;
675
722
  }
@@ -682,7 +729,7 @@ static int submodule_repo_init(
682
729
  bool use_gitlink)
683
730
  {
684
731
  int error = 0;
685
- git_buf workdir = GIT_BUF_INIT, repodir = GIT_BUF_INIT;
732
+ git_str workdir = GIT_STR_INIT, repodir = GIT_STR_INIT;
686
733
  git_repository_init_options initopt = GIT_REPOSITORY_INIT_OPTIONS_INIT;
687
734
  git_repository *subrepo = NULL;
688
735
 
@@ -701,10 +748,10 @@ static int submodule_repo_init(
701
748
  * Old style: sub-repo goes directly into repo/<name>/.git/
702
749
  */
703
750
  if (use_gitlink) {
704
- error = git_repository_item_path(&repodir, parent_repo, GIT_REPOSITORY_ITEM_MODULES);
751
+ error = git_repository__item_path(&repodir, parent_repo, GIT_REPOSITORY_ITEM_MODULES);
705
752
  if (error < 0)
706
753
  goto cleanup;
707
- error = git_buf_joinpath(&repodir, repodir.ptr, path);
754
+ error = git_str_joinpath(&repodir, repodir.ptr, path);
708
755
  if (error < 0)
709
756
  goto cleanup;
710
757
 
@@ -718,14 +765,57 @@ static int submodule_repo_init(
718
765
  error = git_repository_init_ext(&subrepo, workdir.ptr, &initopt);
719
766
 
720
767
  cleanup:
721
- git_buf_dispose(&workdir);
722
- git_buf_dispose(&repodir);
768
+ git_str_dispose(&workdir);
769
+ git_str_dispose(&repodir);
723
770
 
724
771
  *out = subrepo;
725
772
 
726
773
  return error;
727
774
  }
728
775
 
776
+ static int git_submodule__resolve_url(
777
+ git_str *out,
778
+ git_repository *repo,
779
+ const char *url)
780
+ {
781
+ int error = 0;
782
+ git_str normalized = GIT_STR_INIT;
783
+
784
+ GIT_ASSERT_ARG(out);
785
+ GIT_ASSERT_ARG(repo);
786
+ GIT_ASSERT_ARG(url);
787
+
788
+ /* We do this in all platforms in case someone on Windows created the .gitmodules */
789
+ if (strchr(url, '\\')) {
790
+ if ((error = git_fs_path_normalize_slashes(&normalized, url)) < 0)
791
+ return error;
792
+
793
+ url = normalized.ptr;
794
+ }
795
+
796
+
797
+ if (git_fs_path_is_relative(url)) {
798
+ if (!(error = get_url_base(out, repo)))
799
+ error = git_fs_path_apply_relative(out, url);
800
+ } else if (strchr(url, ':') != NULL || url[0] == '/') {
801
+ error = git_str_sets(out, url);
802
+ } else {
803
+ git_error_set(GIT_ERROR_SUBMODULE, "invalid format for submodule URL");
804
+ error = -1;
805
+ }
806
+
807
+ git_str_dispose(&normalized);
808
+ return error;
809
+ }
810
+
811
+ int git_submodule_resolve_url(
812
+ git_buf *out,
813
+ git_repository *repo,
814
+ const char *url)
815
+ {
816
+ GIT_BUF_WRAP_PRIVATE(out, git_submodule__resolve_url, repo, url);
817
+ }
818
+
729
819
  int git_submodule_add_setup(
730
820
  git_submodule **out,
731
821
  git_repository *repo,
@@ -736,7 +826,7 @@ int git_submodule_add_setup(
736
826
  int error = 0;
737
827
  git_config_backend *mods = NULL;
738
828
  git_submodule *sm = NULL;
739
- git_buf name = GIT_BUF_INIT, real_url = GIT_BUF_INIT;
829
+ git_str name = GIT_STR_INIT, real_url = GIT_STR_INIT;
740
830
  git_repository *subrepo = NULL;
741
831
  bool path_occupied;
742
832
 
@@ -759,7 +849,7 @@ int git_submodule_add_setup(
759
849
  if (git__prefixcmp(path, git_repository_workdir(repo)) == 0)
760
850
  path += strlen(git_repository_workdir(repo));
761
851
 
762
- if (git_path_root(path) >= 0) {
852
+ if (git_fs_path_root(path) >= 0) {
763
853
  git_error_set(GIT_ERROR_SUBMODULE, "submodule path must be a relative path");
764
854
  error = -1;
765
855
  goto cleanup;
@@ -781,7 +871,7 @@ int git_submodule_add_setup(
781
871
  return -1;
782
872
  }
783
873
 
784
- if ((error = git_buf_printf(&name, "submodule.%s.path", path)) < 0 ||
874
+ if ((error = git_str_printf(&name, "submodule.%s.path", path)) < 0 ||
785
875
  (error = git_config_backend_set_string(mods, name.ptr, path)) < 0)
786
876
  goto cleanup;
787
877
 
@@ -789,7 +879,7 @@ int git_submodule_add_setup(
789
879
  (error = git_config_backend_set_string(mods, name.ptr, url)) < 0)
790
880
  goto cleanup;
791
881
 
792
- git_buf_clear(&name);
882
+ git_str_clear(&name);
793
883
 
794
884
  /* init submodule repository and add origin remote as needed */
795
885
 
@@ -800,11 +890,11 @@ int git_submodule_add_setup(
800
890
  /* if the repo does not already exist, then init a new repo and add it.
801
891
  * Otherwise, just add the existing repo.
802
892
  */
803
- if (!(git_path_exists(name.ptr) &&
804
- git_path_contains(&name, DOT_GIT))) {
893
+ if (!(git_fs_path_exists(name.ptr) &&
894
+ git_fs_path_contains(&name, DOT_GIT))) {
805
895
 
806
896
  /* resolve the actual URL to use */
807
- if ((error = git_submodule_resolve_url(&real_url, repo, url)) < 0)
897
+ if ((error = git_submodule__resolve_url(&real_url, repo, url)) < 0)
808
898
  goto cleanup;
809
899
 
810
900
  if ((error = submodule_repo_init(&subrepo, repo, path, real_url.ptr, use_gitlink)) < 0)
@@ -826,8 +916,8 @@ cleanup:
826
916
 
827
917
  git_config_backend_free(mods);
828
918
  git_repository_free(subrepo);
829
- git_buf_dispose(&real_url);
830
- git_buf_dispose(&name);
919
+ git_str_dispose(&real_url);
920
+ git_str_dispose(&name);
831
921
 
832
922
  return error;
833
923
  }
@@ -841,13 +931,13 @@ int git_submodule_repo_init(
841
931
  git_repository *sub_repo = NULL;
842
932
  const char *configured_url;
843
933
  git_config *cfg = NULL;
844
- git_buf buf = GIT_BUF_INIT;
934
+ git_str buf = GIT_STR_INIT;
845
935
 
846
936
  GIT_ASSERT_ARG(out);
847
937
  GIT_ASSERT_ARG(sm);
848
938
 
849
939
  /* get the configured remote url of the submodule */
850
- if ((error = git_buf_printf(&buf, "submodule.%s.url", sm->name)) < 0 ||
940
+ if ((error = git_str_printf(&buf, "submodule.%s.url", sm->name)) < 0 ||
851
941
  (error = git_repository_config_snapshot(&cfg, sm->repo)) < 0 ||
852
942
  (error = git_config_get_string(&configured_url, cfg, buf.ptr)) < 0 ||
853
943
  (error = submodule_repo_init(&sub_repo, sm->repo, sm->path, configured_url, use_gitlink)) < 0)
@@ -857,7 +947,7 @@ int git_submodule_repo_init(
857
947
 
858
948
  done:
859
949
  git_config_free(cfg);
860
- git_buf_dispose(&buf);
950
+ git_str_dispose(&buf);
861
951
  return error;
862
952
  }
863
953
 
@@ -881,7 +971,7 @@ int git_submodule_clone(git_repository **out, git_submodule *submodule, const gi
881
971
  {
882
972
  int error;
883
973
  git_repository *clone;
884
- git_buf rel_path = GIT_BUF_INIT;
974
+ git_str rel_path = GIT_STR_INIT;
885
975
  git_submodule_update_options sub_opts = GIT_SUBMODULE_UPDATE_OPTIONS_INIT;
886
976
  git_clone_options opts = GIT_CLONE_OPTIONS_INIT;
887
977
 
@@ -903,7 +993,7 @@ int git_submodule_clone(git_repository **out, git_submodule *submodule, const gi
903
993
  if (error < 0)
904
994
  goto cleanup;
905
995
 
906
- error = git_clone__submodule(&clone, git_submodule_url(submodule), git_buf_cstr(&rel_path), &opts);
996
+ error = git_clone__submodule(&clone, git_submodule_url(submodule), git_str_cstr(&rel_path), &opts);
907
997
  if (error < 0)
908
998
  goto cleanup;
909
999
 
@@ -913,7 +1003,7 @@ int git_submodule_clone(git_repository **out, git_submodule *submodule, const gi
913
1003
  *out = clone;
914
1004
 
915
1005
  cleanup:
916
- git_buf_dispose(&rel_path);
1006
+ git_str_dispose(&rel_path);
917
1007
 
918
1008
  return error;
919
1009
  }
@@ -937,7 +1027,7 @@ int git_submodule_add_to_index(git_submodule *sm, int write_index)
937
1027
  int error;
938
1028
  git_repository *sm_repo = NULL;
939
1029
  git_index *index;
940
- git_buf path = GIT_BUF_INIT;
1030
+ git_str path = GIT_STR_INIT;
941
1031
  git_commit *head;
942
1032
  git_index_entry entry;
943
1033
  struct stat st;
@@ -997,7 +1087,7 @@ int git_submodule_add_to_index(git_submodule *sm, int write_index)
997
1087
 
998
1088
  cleanup:
999
1089
  git_repository_free(sm_repo);
1000
- git_buf_dispose(&path);
1090
+ git_str_dispose(&path);
1001
1091
  return error;
1002
1092
  }
1003
1093
 
@@ -1034,44 +1124,9 @@ const char *git_submodule_url(git_submodule *submodule)
1034
1124
  return submodule->url;
1035
1125
  }
1036
1126
 
1037
- int git_submodule_resolve_url(git_buf *out, git_repository *repo, const char *url)
1038
- {
1039
- int error = 0;
1040
- git_buf normalized = GIT_BUF_INIT;
1041
-
1042
- GIT_ASSERT_ARG(out);
1043
- GIT_ASSERT_ARG(repo);
1044
- GIT_ASSERT_ARG(url);
1045
-
1046
- if ((error = git_buf_sanitize(out)) < 0)
1047
- return error;
1048
-
1049
- /* We do this in all platforms in case someone on Windows created the .gitmodules */
1050
- if (strchr(url, '\\')) {
1051
- if ((error = git_path_normalize_slashes(&normalized, url)) < 0)
1052
- return error;
1053
-
1054
- url = normalized.ptr;
1055
- }
1056
-
1057
-
1058
- if (git_path_is_relative(url)) {
1059
- if (!(error = get_url_base(out, repo)))
1060
- error = git_path_apply_relative(out, url);
1061
- } else if (strchr(url, ':') != NULL || url[0] == '/') {
1062
- error = git_buf_sets(out, url);
1063
- } else {
1064
- git_error_set(GIT_ERROR_SUBMODULE, "invalid format for submodule URL");
1065
- error = -1;
1066
- }
1067
-
1068
- git_buf_dispose(&normalized);
1069
- return error;
1070
- }
1071
-
1072
1127
  static int write_var(git_repository *repo, const char *name, const char *var, const char *val)
1073
1128
  {
1074
- git_buf key = GIT_BUF_INIT;
1129
+ git_str key = GIT_STR_INIT;
1075
1130
  git_config_backend *mods;
1076
1131
  int error;
1077
1132
 
@@ -1079,7 +1134,7 @@ static int write_var(git_repository *repo, const char *name, const char *var, co
1079
1134
  if (!mods)
1080
1135
  return -1;
1081
1136
 
1082
- if ((error = git_buf_printf(&key, "submodule.%s.%s", name, var)) < 0)
1137
+ if ((error = git_str_printf(&key, "submodule.%s.%s", name, var)) < 0)
1083
1138
  goto cleanup;
1084
1139
 
1085
1140
  if (val)
@@ -1087,7 +1142,7 @@ static int write_var(git_repository *repo, const char *name, const char *var, co
1087
1142
  else
1088
1143
  error = git_config_backend_delete(mods, key.ptr);
1089
1144
 
1090
- git_buf_dispose(&key);
1145
+ git_str_dispose(&key);
1091
1146
 
1092
1147
  cleanup:
1093
1148
  git_config_backend_free(mods);
@@ -1227,7 +1282,7 @@ static int submodule_repo_create(
1227
1282
  const char *path)
1228
1283
  {
1229
1284
  int error = 0;
1230
- git_buf workdir = GIT_BUF_INIT, repodir = GIT_BUF_INIT;
1285
+ git_str workdir = GIT_STR_INIT, repodir = GIT_STR_INIT;
1231
1286
  git_repository_init_options initopt = GIT_REPOSITORY_INIT_OPTIONS_INIT;
1232
1287
  git_repository *subrepo = NULL;
1233
1288
 
@@ -1249,18 +1304,18 @@ static int submodule_repo_create(
1249
1304
  * <repo-dir>/modules/<name>/ with a gitlink in the
1250
1305
  * sub-repo workdir directory to that repository.
1251
1306
  */
1252
- error = git_repository_item_path(&repodir, parent_repo, GIT_REPOSITORY_ITEM_MODULES);
1307
+ error = git_repository__item_path(&repodir, parent_repo, GIT_REPOSITORY_ITEM_MODULES);
1253
1308
  if (error < 0)
1254
1309
  goto cleanup;
1255
- error = git_buf_joinpath(&repodir, repodir.ptr, path);
1310
+ error = git_str_joinpath(&repodir, repodir.ptr, path);
1256
1311
  if (error < 0)
1257
1312
  goto cleanup;
1258
1313
 
1259
1314
  error = git_repository_init_ext(&subrepo, repodir.ptr, &initopt);
1260
1315
 
1261
1316
  cleanup:
1262
- git_buf_dispose(&workdir);
1263
- git_buf_dispose(&repodir);
1317
+ git_str_dispose(&workdir);
1318
+ git_str_dispose(&repodir);
1264
1319
 
1265
1320
  *out = subrepo;
1266
1321
 
@@ -1309,7 +1364,7 @@ int git_submodule_update(git_submodule *sm, int init, git_submodule_update_optio
1309
1364
  git_repository *sub_repo = NULL;
1310
1365
  git_remote *remote = NULL;
1311
1366
  git_object *target_commit = NULL;
1312
- git_buf buf = GIT_BUF_INIT;
1367
+ git_str buf = GIT_STR_INIT;
1313
1368
  git_submodule_update_options update_options = GIT_SUBMODULE_UPDATE_OPTIONS_INIT;
1314
1369
  git_clone_options clone_options = GIT_CLONE_OPTIONS_INIT;
1315
1370
 
@@ -1327,6 +1382,10 @@ int git_submodule_update(git_submodule *sm, int init, git_submodule_update_optio
1327
1382
  if ((error = git_submodule_status(&submodule_status, sm->repo, sm->name, GIT_SUBMODULE_IGNORE_UNSPECIFIED)) < 0)
1328
1383
  goto done;
1329
1384
 
1385
+ /* If the submodule is configured but hasn't been added, skip it */
1386
+ if (submodule_status == GIT_SUBMODULE_STATUS_IN_CONFIG)
1387
+ goto done;
1388
+
1330
1389
  /*
1331
1390
  * If submodule work dir is not already initialized, check to see
1332
1391
  * what we need to do (initialize, clone, return error...)
@@ -1337,10 +1396,10 @@ int git_submodule_update(git_submodule *sm, int init, git_submodule_update_optio
1337
1396
  * info has been copied into .git/config
1338
1397
  */
1339
1398
  if ((error = git_repository_config_snapshot(&config, sm->repo)) < 0 ||
1340
- (error = git_buf_printf(&buf, "submodule.%s.url", git_submodule_name(sm))) < 0)
1399
+ (error = git_str_printf(&buf, "submodule.%s.url", git_submodule_name(sm))) < 0)
1341
1400
  goto done;
1342
1401
 
1343
- if ((error = git_config_get_string(&submodule_url, config, git_buf_cstr(&buf))) < 0) {
1402
+ if ((error = git_config_get_string(&submodule_url, config, git_str_cstr(&buf))) < 0) {
1344
1403
  /*
1345
1404
  * If the error is not "not found" or if it is "not found" and we are not
1346
1405
  * initializing the submodule, then return error.
@@ -1362,7 +1421,7 @@ int git_submodule_update(git_submodule *sm, int init, git_submodule_update_optio
1362
1421
  config = NULL;
1363
1422
 
1364
1423
  if ((error = git_repository_config_snapshot(&config, sm->repo)) < 0 ||
1365
- (error = git_config_get_string(&submodule_url, config, git_buf_cstr(&buf))) < 0)
1424
+ (error = git_config_get_string(&submodule_url, config, git_str_cstr(&buf))) < 0)
1366
1425
  goto done;
1367
1426
  }
1368
1427
 
@@ -1377,7 +1436,7 @@ int git_submodule_update(git_submodule *sm, int init, git_submodule_update_optio
1377
1436
  */
1378
1437
  clone_options.checkout_opts.checkout_strategy = GIT_CHECKOUT_NONE;
1379
1438
 
1380
- if ((error = git_clone(&sub_repo, submodule_url, sm->path, &clone_options)) < 0 ||
1439
+ if ((error = git_clone__submodule(&sub_repo, submodule_url, sm->path, &clone_options)) < 0 ||
1381
1440
  (error = git_repository_set_head_detached(sub_repo, git_submodule_index_id(sm))) < 0 ||
1382
1441
  (error = git_checkout_head(sub_repo, &update_options.checkout_opts)) != 0)
1383
1442
  goto done;
@@ -1420,7 +1479,7 @@ int git_submodule_update(git_submodule *sm, int init, git_submodule_update_optio
1420
1479
  }
1421
1480
 
1422
1481
  done:
1423
- git_buf_dispose(&buf);
1482
+ git_str_dispose(&buf);
1424
1483
  git_config_free(config);
1425
1484
  git_object_free(target_commit);
1426
1485
  git_remote_free(remote);
@@ -1433,7 +1492,7 @@ int git_submodule_init(git_submodule *sm, int overwrite)
1433
1492
  {
1434
1493
  int error;
1435
1494
  const char *val;
1436
- git_buf key = GIT_BUF_INIT, effective_submodule_url = GIT_BUF_INIT;
1495
+ git_str key = GIT_STR_INIT, effective_submodule_url = GIT_STR_INIT;
1437
1496
  git_config *cfg = NULL;
1438
1497
 
1439
1498
  if (!sm->url) {
@@ -1447,8 +1506,8 @@ int git_submodule_init(git_submodule *sm, int overwrite)
1447
1506
 
1448
1507
  /* write "submodule.NAME.url" */
1449
1508
 
1450
- if ((error = git_submodule_resolve_url(&effective_submodule_url, sm->repo, sm->url)) < 0 ||
1451
- (error = git_buf_printf(&key, "submodule.%s.url", sm->name)) < 0 ||
1509
+ if ((error = git_submodule__resolve_url(&effective_submodule_url, sm->repo, sm->url)) < 0 ||
1510
+ (error = git_str_printf(&key, "submodule.%s.url", sm->name)) < 0 ||
1452
1511
  (error = git_config__update_entry(
1453
1512
  cfg, key.ptr, effective_submodule_url.ptr, overwrite != 0, false)) < 0)
1454
1513
  goto cleanup;
@@ -1458,7 +1517,7 @@ int git_submodule_init(git_submodule *sm, int overwrite)
1458
1517
  val = (sm->update == GIT_SUBMODULE_UPDATE_CHECKOUT) ?
1459
1518
  NULL : submodule_update_to_str(sm->update);
1460
1519
 
1461
- if ((error = git_buf_printf(&key, "submodule.%s.update", sm->name)) < 0 ||
1520
+ if ((error = git_str_printf(&key, "submodule.%s.update", sm->name)) < 0 ||
1462
1521
  (error = git_config__update_entry(
1463
1522
  cfg, key.ptr, val, overwrite != 0, false)) < 0)
1464
1523
  goto cleanup;
@@ -1467,15 +1526,15 @@ int git_submodule_init(git_submodule *sm, int overwrite)
1467
1526
 
1468
1527
  cleanup:
1469
1528
  git_config_free(cfg);
1470
- git_buf_dispose(&key);
1471
- git_buf_dispose(&effective_submodule_url);
1529
+ git_str_dispose(&key);
1530
+ git_str_dispose(&effective_submodule_url);
1472
1531
 
1473
1532
  return error;
1474
1533
  }
1475
1534
 
1476
1535
  int git_submodule_sync(git_submodule *sm)
1477
1536
  {
1478
- git_buf key = GIT_BUF_INIT, url = GIT_BUF_INIT, remote_name = GIT_BUF_INIT;
1537
+ git_str key = GIT_STR_INIT, url = GIT_STR_INIT, remote_name = GIT_STR_INIT;
1479
1538
  git_repository *smrepo = NULL;
1480
1539
  git_config *cfg = NULL;
1481
1540
  int error = 0;
@@ -1487,8 +1546,8 @@ int git_submodule_sync(git_submodule *sm)
1487
1546
 
1488
1547
  /* copy URL over to config only if it already exists */
1489
1548
  if ((error = git_repository_config__weakptr(&cfg, sm->repo)) < 0 ||
1490
- (error = git_buf_printf(&key, "submodule.%s.url", sm->name)) < 0 ||
1491
- (error = git_submodule_resolve_url(&url, sm->repo, sm->url)) < 0 ||
1549
+ (error = git_str_printf(&key, "submodule.%s.url", sm->name)) < 0 ||
1550
+ (error = git_submodule__resolve_url(&url, sm->repo, sm->url)) < 0 ||
1492
1551
  (error = git_config__update_entry(cfg, key.ptr, url.ptr, true, true)) < 0)
1493
1552
  goto out;
1494
1553
 
@@ -1501,9 +1560,9 @@ int git_submodule_sync(git_submodule *sm)
1501
1560
  goto out;
1502
1561
 
1503
1562
  if (lookup_head_remote_key(&remote_name, smrepo) == 0) {
1504
- if ((error = git_buf_join3(&key, '.', "remote", remote_name.ptr, "url")) < 0)
1563
+ if ((error = git_str_join3(&key, '.', "remote", remote_name.ptr, "url")) < 0)
1505
1564
  goto out;
1506
- } else if ((error = git_buf_sets(&key, "remote.origin.url")) < 0) {
1565
+ } else if ((error = git_str_sets(&key, "remote.origin.url")) < 0) {
1507
1566
  goto out;
1508
1567
  }
1509
1568
 
@@ -1512,9 +1571,9 @@ int git_submodule_sync(git_submodule *sm)
1512
1571
 
1513
1572
  out:
1514
1573
  git_repository_free(smrepo);
1515
- git_buf_dispose(&remote_name);
1516
- git_buf_dispose(&key);
1517
- git_buf_dispose(&url);
1574
+ git_str_dispose(&remote_name);
1575
+ git_str_dispose(&key);
1576
+ git_str_dispose(&url);
1518
1577
  return error;
1519
1578
  }
1520
1579
 
@@ -1522,7 +1581,7 @@ static int git_submodule__open(
1522
1581
  git_repository **subrepo, git_submodule *sm, bool bare)
1523
1582
  {
1524
1583
  int error;
1525
- git_buf path = GIT_BUF_INIT;
1584
+ git_str path = GIT_STR_INIT;
1526
1585
  unsigned int flags = GIT_REPOSITORY_OPEN_NO_SEARCH;
1527
1586
  const char *wd;
1528
1587
 
@@ -1535,7 +1594,7 @@ static int git_submodule__open(
1535
1594
 
1536
1595
  wd = git_repository_workdir(sm->repo);
1537
1596
 
1538
- if (git_buf_join3(&path, '/', wd, sm->path, DOT_GIT) < 0)
1597
+ if (git_str_join3(&path, '/', wd, sm->path, DOT_GIT) < 0)
1539
1598
  return -1;
1540
1599
 
1541
1600
  sm->flags = sm->flags &
@@ -1557,17 +1616,17 @@ static int git_submodule__open(
1557
1616
  sm->flags |= GIT_SUBMODULE_STATUS__WD_OID_VALID;
1558
1617
  else
1559
1618
  git_error_clear();
1560
- } else if (git_path_exists(path.ptr)) {
1619
+ } else if (git_fs_path_exists(path.ptr)) {
1561
1620
  sm->flags |= GIT_SUBMODULE_STATUS__WD_SCANNED |
1562
1621
  GIT_SUBMODULE_STATUS_IN_WD;
1563
1622
  } else {
1564
- git_buf_rtruncate_at_char(&path, '/'); /* remove "/.git" */
1623
+ git_str_rtruncate_at_char(&path, '/'); /* remove "/.git" */
1565
1624
 
1566
- if (git_path_isdir(path.ptr))
1625
+ if (git_fs_path_isdir(path.ptr))
1567
1626
  sm->flags |= GIT_SUBMODULE_STATUS__WD_SCANNED;
1568
1627
  }
1569
1628
 
1570
- git_buf_dispose(&path);
1629
+ git_str_dispose(&path);
1571
1630
 
1572
1631
  return error;
1573
1632
  }
@@ -1921,13 +1980,13 @@ static int submodule_parse_recurse(git_submodule_recurse_t *out, const char *val
1921
1980
  return 0;
1922
1981
  }
1923
1982
 
1924
- static int get_value(const char **out, git_config *cfg, git_buf *buf, const char *name, const char *field)
1983
+ static int get_value(const char **out, git_config *cfg, git_str *buf, const char *name, const char *field)
1925
1984
  {
1926
1985
  int error;
1927
1986
 
1928
- git_buf_clear(buf);
1987
+ git_str_clear(buf);
1929
1988
 
1930
- if ((error = git_buf_printf(buf, "submodule.%s.%s", name, field)) < 0 ||
1989
+ if ((error = git_str_printf(buf, "submodule.%s.%s", name, field)) < 0 ||
1931
1990
  (error = git_config_get_string(out, cfg, buf->ptr)) < 0)
1932
1991
  return error;
1933
1992
 
@@ -1944,7 +2003,7 @@ static bool looks_like_command_line_option(const char *s)
1944
2003
 
1945
2004
  static int submodule_read_config(git_submodule *sm, git_config *cfg)
1946
2005
  {
1947
- git_buf key = GIT_BUF_INIT;
2006
+ git_str key = GIT_STR_INIT;
1948
2007
  const char *value;
1949
2008
  int error, in_config = 0;
1950
2009
 
@@ -2025,7 +2084,7 @@ static int submodule_read_config(git_submodule *sm, git_config *cfg)
2025
2084
  error = 0;
2026
2085
 
2027
2086
  cleanup:
2028
- git_buf_dispose(&key);
2087
+ git_str_dispose(&key);
2029
2088
  return error;
2030
2089
  }
2031
2090
 
@@ -2033,8 +2092,8 @@ static int submodule_load_each(const git_config_entry *entry, void *payload)
2033
2092
  {
2034
2093
  lfc_data *data = payload;
2035
2094
  const char *namestart, *property;
2036
- git_strmap *map = data->map;
2037
- git_buf name = GIT_BUF_INIT;
2095
+ git_submodule_cache *cache = data->cache;
2096
+ git_str name = GIT_STR_INIT;
2038
2097
  git_submodule *sm;
2039
2098
  int error, isvalid;
2040
2099
 
@@ -2049,7 +2108,7 @@ static int submodule_load_each(const git_config_entry *entry, void *payload)
2049
2108
 
2050
2109
  property++;
2051
2110
 
2052
- if ((error = git_buf_set(&name, namestart, property - namestart -1)) < 0)
2111
+ if ((error = git_str_set(&name, namestart, property - namestart -1)) < 0)
2053
2112
  return error;
2054
2113
 
2055
2114
  isvalid = git_submodule_name_is_valid(data->repo, name.ptr, 0);
@@ -2064,7 +2123,7 @@ static int submodule_load_each(const git_config_entry *entry, void *payload)
2064
2123
  * a new submodule, load the config and insert it. If it's
2065
2124
  * already inserted, we've already loaded it, so we skip.
2066
2125
  */
2067
- if (git_strmap_exists(map, name.ptr)) {
2126
+ if (git_submodule_cache_contains(cache, name.ptr)) {
2068
2127
  error = 0;
2069
2128
  goto done;
2070
2129
  }
@@ -2077,30 +2136,30 @@ static int submodule_load_each(const git_config_entry *entry, void *payload)
2077
2136
  goto done;
2078
2137
  }
2079
2138
 
2080
- if ((error = git_strmap_set(map, sm->name, sm)) < 0)
2139
+ if ((error = git_submodule_cache_put(cache, sm->name, sm)) < 0)
2081
2140
  goto done;
2082
2141
 
2083
2142
  error = 0;
2084
2143
 
2085
2144
  done:
2086
- git_buf_dispose(&name);
2145
+ git_str_dispose(&name);
2087
2146
  return error;
2088
2147
  }
2089
2148
 
2090
2149
  static int submodule_load_from_wd_lite(git_submodule *sm)
2091
2150
  {
2092
- git_buf path = GIT_BUF_INIT;
2151
+ git_str path = GIT_STR_INIT;
2093
2152
 
2094
2153
  if (git_repository_workdir_path(&path, sm->repo, sm->path) < 0)
2095
2154
  return -1;
2096
2155
 
2097
- if (git_path_isdir(path.ptr))
2156
+ if (git_fs_path_isdir(path.ptr))
2098
2157
  sm->flags |= GIT_SUBMODULE_STATUS__WD_SCANNED;
2099
2158
 
2100
- if (git_path_contains(&path, DOT_GIT))
2159
+ if (git_fs_path_contains(&path, DOT_GIT))
2101
2160
  sm->flags |= GIT_SUBMODULE_STATUS_IN_WD;
2102
2161
 
2103
- git_buf_dispose(&path);
2162
+ git_str_dispose(&path);
2104
2163
  return 0;
2105
2164
  }
2106
2165
 
@@ -2112,7 +2171,7 @@ static int submodule_load_from_wd_lite(git_submodule *sm)
2112
2171
  static int gitmodules_snapshot(git_config **snap, git_repository *repo)
2113
2172
  {
2114
2173
  git_config *mods = NULL;
2115
- git_buf path = GIT_BUF_INIT;
2174
+ git_str path = GIT_STR_INIT;
2116
2175
  int error;
2117
2176
 
2118
2177
  if (git_repository_workdir(repo) == NULL)
@@ -2123,7 +2182,7 @@ static int gitmodules_snapshot(git_config **snap, git_repository *repo)
2123
2182
 
2124
2183
  if ((error = git_config_open_ondisk(&mods, path.ptr)) < 0)
2125
2184
  goto cleanup;
2126
- git_buf_dispose(&path);
2185
+ git_str_dispose(&path);
2127
2186
 
2128
2187
  if ((error = git_config_snapshot(snap, mods)) < 0)
2129
2188
  goto cleanup;
@@ -2133,7 +2192,7 @@ static int gitmodules_snapshot(git_config **snap, git_repository *repo)
2133
2192
  cleanup:
2134
2193
  if (mods)
2135
2194
  git_config_free(mods);
2136
- git_buf_dispose(&path);
2195
+ git_str_dispose(&path);
2137
2196
 
2138
2197
  return error;
2139
2198
  }
@@ -2142,14 +2201,14 @@ static git_config_backend *open_gitmodules(
2142
2201
  git_repository *repo,
2143
2202
  int okay_to_create)
2144
2203
  {
2145
- git_buf path = GIT_BUF_INIT;
2204
+ git_str path = GIT_STR_INIT;
2146
2205
  git_config_backend *mods = NULL;
2147
2206
 
2148
2207
  if (git_repository_workdir(repo) != NULL) {
2149
2208
  if (git_repository_workdir_path(&path, repo, GIT_MODULES_FILE) != 0)
2150
2209
  return NULL;
2151
2210
 
2152
- if (okay_to_create || git_path_isfile(path.ptr)) {
2211
+ if (okay_to_create || git_fs_path_isfile(path.ptr)) {
2153
2212
  /* git_config_backend_from_file should only fail if OOM */
2154
2213
  if (git_config_backend_from_file(&mods, path.ptr) < 0)
2155
2214
  mods = NULL;
@@ -2161,17 +2220,17 @@ static git_config_backend *open_gitmodules(
2161
2220
  }
2162
2221
  }
2163
2222
 
2164
- git_buf_dispose(&path);
2223
+ git_str_dispose(&path);
2165
2224
 
2166
2225
  return mods;
2167
2226
  }
2168
2227
 
2169
2228
  /* Lookup name of remote of the local tracking branch HEAD points to */
2170
- static int lookup_head_remote_key(git_buf *remote_name, git_repository *repo)
2229
+ static int lookup_head_remote_key(git_str *remote_name, git_repository *repo)
2171
2230
  {
2172
2231
  int error;
2173
2232
  git_reference *head = NULL;
2174
- git_buf upstream_name = GIT_BUF_INIT;
2233
+ git_str upstream_name = GIT_STR_INIT;
2175
2234
 
2176
2235
  /* lookup and dereference HEAD */
2177
2236
  if ((error = git_repository_head(&head, repo)) < 0)
@@ -2190,18 +2249,18 @@ static int lookup_head_remote_key(git_buf *remote_name, git_repository *repo)
2190
2249
  }
2191
2250
 
2192
2251
  /* lookup remote tracking branch of HEAD */
2193
- if ((error = git_branch_upstream_name(
2252
+ if ((error = git_branch__upstream_name(
2194
2253
  &upstream_name,
2195
2254
  repo,
2196
2255
  git_reference_name(head))) < 0)
2197
2256
  goto done;
2198
2257
 
2199
2258
  /* lookup remote of remote tracking branch */
2200
- if ((error = git_branch_remote_name(remote_name, repo, upstream_name.ptr)) < 0)
2259
+ if ((error = git_branch__remote_name(remote_name, repo, upstream_name.ptr)) < 0)
2201
2260
  goto done;
2202
2261
 
2203
2262
  done:
2204
- git_buf_dispose(&upstream_name);
2263
+ git_str_dispose(&upstream_name);
2205
2264
  git_reference_free(head);
2206
2265
 
2207
2266
  return error;
@@ -2211,13 +2270,13 @@ done:
2211
2270
  static int lookup_head_remote(git_remote **remote, git_repository *repo)
2212
2271
  {
2213
2272
  int error;
2214
- git_buf remote_name = GIT_BUF_INIT;
2273
+ git_str remote_name = GIT_STR_INIT;
2215
2274
 
2216
2275
  /* lookup remote of remote tracking branch name */
2217
2276
  if (!(error = lookup_head_remote_key(&remote_name, repo)))
2218
2277
  error = git_remote_lookup(remote, repo, remote_name.ptr);
2219
2278
 
2220
- git_buf_dispose(&remote_name);
2279
+ git_str_dispose(&remote_name);
2221
2280
 
2222
2281
  return error;
2223
2282
  }
@@ -2240,14 +2299,14 @@ static int lookup_default_remote(git_remote **remote, git_repository *repo)
2240
2299
  return error;
2241
2300
  }
2242
2301
 
2243
- static int get_url_base(git_buf *url, git_repository *repo)
2302
+ static int get_url_base(git_str *url, git_repository *repo)
2244
2303
  {
2245
2304
  int error;
2246
2305
  git_worktree *wt = NULL;
2247
2306
  git_remote *remote = NULL;
2248
2307
 
2249
2308
  if ((error = lookup_default_remote(&remote, repo)) == 0) {
2250
- error = git_buf_sets(url, git_remote_url(remote));
2309
+ error = git_str_sets(url, git_remote_url(remote));
2251
2310
  goto out;
2252
2311
  } else if (error != GIT_ENOTFOUND)
2253
2312
  goto out;
@@ -2258,9 +2317,9 @@ static int get_url_base(git_buf *url, git_repository *repo)
2258
2317
  if (git_repository_is_worktree(repo)) {
2259
2318
  if ((error = git_worktree_open_from_repository(&wt, repo)) < 0)
2260
2319
  goto out;
2261
- error = git_buf_sets(url, wt->parent_path);
2320
+ error = git_str_sets(url, wt->parent_path);
2262
2321
  } else {
2263
- error = git_buf_sets(url, git_repository_workdir(repo));
2322
+ error = git_str_sets(url, git_repository_workdir(repo));
2264
2323
  }
2265
2324
 
2266
2325
  out: