rugged 1.3.2 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (547) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/ext/rugged/extconf.rb +7 -4
  4. data/ext/rugged/rugged.c +16 -0
  5. data/ext/rugged/rugged.h +4 -0
  6. data/ext/rugged/rugged_blame.c +2 -0
  7. data/ext/rugged/rugged_blob.c +3 -0
  8. data/ext/rugged/rugged_commit.c +1 -0
  9. data/ext/rugged/rugged_config.c +9 -2
  10. data/ext/rugged/rugged_diff.c +1 -0
  11. data/ext/rugged/rugged_index.c +2 -0
  12. data/ext/rugged/rugged_patch.c +1 -0
  13. data/ext/rugged/rugged_rebase.c +1 -0
  14. data/ext/rugged/rugged_reference.c +1 -0
  15. data/ext/rugged/rugged_remote.c +28 -10
  16. data/ext/rugged/rugged_repo.c +7 -9
  17. data/ext/rugged/rugged_revwalk.c +5 -1
  18. data/ext/rugged/rugged_settings.c +5 -0
  19. data/ext/rugged/rugged_submodule.c +1 -0
  20. data/ext/rugged/rugged_tag.c +1 -0
  21. data/ext/rugged/rugged_tree.c +4 -0
  22. data/lib/rugged/index.rb +1 -1
  23. data/lib/rugged/tree.rb +5 -1
  24. data/lib/rugged/version.rb +1 -1
  25. data/vendor/libgit2/CMakeLists.txt +132 -288
  26. data/vendor/libgit2/COPYING +106 -19
  27. data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
  28. data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
  29. data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
  30. data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
  31. data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
  32. data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
  33. data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
  34. data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
  35. data/vendor/libgit2/cmake/{FindHTTP_Parser.cmake → FindHTTPParser.cmake} +17 -17
  36. data/vendor/libgit2/cmake/FindIconv.cmake +27 -27
  37. data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
  38. data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
  39. data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
  40. data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
  41. data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
  42. data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
  43. data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
  44. data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
  45. data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
  46. data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
  47. data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
  48. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
  49. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +19 -0
  50. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +100 -100
  51. data/vendor/libgit2/cmake/SelectHashes.cmake +91 -53
  52. data/vendor/libgit2/cmake/SelectRegex.cmake +51 -0
  53. data/vendor/libgit2/cmake/SelectSSH.cmake +41 -0
  54. data/vendor/libgit2/cmake/SelectWinHTTP.cmake +17 -0
  55. data/vendor/libgit2/cmake/SelectZlib.cmake +34 -0
  56. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
  57. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
  58. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +3 -1
  59. data/vendor/libgit2/deps/ntlmclient/ntlm.c +4 -4
  60. data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
  61. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
  62. data/vendor/libgit2/deps/pcre/CMakeLists.txt +88 -88
  63. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
  64. data/vendor/libgit2/deps/zlib/adler32.c +7 -0
  65. data/vendor/libgit2/deps/zlib/crc32.c +975 -288
  66. data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
  67. data/vendor/libgit2/deps/zlib/deflate.c +83 -31
  68. data/vendor/libgit2/deps/zlib/deflate.h +12 -15
  69. data/vendor/libgit2/deps/zlib/gzguts.h +3 -2
  70. data/vendor/libgit2/deps/zlib/infback.c +2 -1
  71. data/vendor/libgit2/deps/zlib/inffast.c +14 -14
  72. data/vendor/libgit2/deps/zlib/inflate.c +39 -8
  73. data/vendor/libgit2/deps/zlib/inflate.h +3 -2
  74. data/vendor/libgit2/deps/zlib/inftrees.c +3 -3
  75. data/vendor/libgit2/deps/zlib/trees.c +27 -48
  76. data/vendor/libgit2/deps/zlib/zlib.h +126 -100
  77. data/vendor/libgit2/deps/zlib/zutil.c +2 -2
  78. data/vendor/libgit2/deps/zlib/zutil.h +12 -9
  79. data/vendor/libgit2/include/git2/apply.h +16 -2
  80. data/vendor/libgit2/include/git2/attr.h +11 -2
  81. data/vendor/libgit2/include/git2/blame.h +4 -1
  82. data/vendor/libgit2/include/git2/blob.h +14 -1
  83. data/vendor/libgit2/include/git2/branch.h +4 -2
  84. data/vendor/libgit2/include/git2/buffer.h +18 -78
  85. data/vendor/libgit2/include/git2/cert.h +2 -2
  86. data/vendor/libgit2/include/git2/checkout.h +5 -2
  87. data/vendor/libgit2/include/git2/clone.h +3 -3
  88. data/vendor/libgit2/include/git2/commit.h +2 -0
  89. data/vendor/libgit2/include/git2/common.h +28 -7
  90. data/vendor/libgit2/include/git2/config.h +25 -9
  91. data/vendor/libgit2/include/git2/credential.h +2 -1
  92. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  93. data/vendor/libgit2/include/git2/deprecated.h +9 -1
  94. data/vendor/libgit2/include/git2/describe.h +7 -2
  95. data/vendor/libgit2/include/git2/diff.h +18 -10
  96. data/vendor/libgit2/include/git2/email.h +1 -1
  97. data/vendor/libgit2/include/git2/errors.h +17 -3
  98. data/vendor/libgit2/include/git2/experimental.h +20 -0
  99. data/vendor/libgit2/include/git2/filter.h +7 -2
  100. data/vendor/libgit2/include/git2/graph.h +1 -0
  101. data/vendor/libgit2/include/git2/ignore.h +1 -1
  102. data/vendor/libgit2/include/git2/index.h +11 -5
  103. data/vendor/libgit2/include/git2/indexer.h +48 -0
  104. data/vendor/libgit2/include/git2/merge.h +24 -4
  105. data/vendor/libgit2/include/git2/message.h +2 -0
  106. data/vendor/libgit2/include/git2/object.h +49 -0
  107. data/vendor/libgit2/include/git2/odb.h +94 -13
  108. data/vendor/libgit2/include/git2/odb_backend.h +107 -19
  109. data/vendor/libgit2/include/git2/oid.h +115 -15
  110. data/vendor/libgit2/include/git2/pack.h +24 -8
  111. data/vendor/libgit2/include/git2/patch.h +8 -0
  112. data/vendor/libgit2/include/git2/pathspec.h +1 -1
  113. data/vendor/libgit2/include/git2/proxy.h +1 -1
  114. data/vendor/libgit2/include/git2/rebase.h +9 -1
  115. data/vendor/libgit2/include/git2/refdb.h +3 -0
  116. data/vendor/libgit2/include/git2/reflog.h +1 -1
  117. data/vendor/libgit2/include/git2/refs.h +2 -2
  118. data/vendor/libgit2/include/git2/remote.h +184 -37
  119. data/vendor/libgit2/include/git2/repository.h +34 -10
  120. data/vendor/libgit2/include/git2/reset.h +2 -2
  121. data/vendor/libgit2/include/git2/revparse.h +1 -1
  122. data/vendor/libgit2/include/git2/revwalk.h +4 -1
  123. data/vendor/libgit2/include/git2/signature.h +1 -1
  124. data/vendor/libgit2/include/git2/stash.h +61 -7
  125. data/vendor/libgit2/include/git2/status.h +14 -5
  126. data/vendor/libgit2/include/git2/strarray.h +0 -13
  127. data/vendor/libgit2/include/git2/submodule.h +7 -2
  128. data/vendor/libgit2/include/git2/sys/commit_graph.h +1 -1
  129. data/vendor/libgit2/include/git2/sys/odb_backend.h +3 -6
  130. data/vendor/libgit2/include/git2/sys/remote.h +46 -0
  131. data/vendor/libgit2/include/git2/sys/stream.h +1 -1
  132. data/vendor/libgit2/include/git2/sys/transport.h +46 -39
  133. data/vendor/libgit2/include/git2/tag.h +1 -0
  134. data/vendor/libgit2/include/git2/tree.h +4 -3
  135. data/vendor/libgit2/include/git2/types.h +7 -7
  136. data/vendor/libgit2/include/git2/version.h +27 -6
  137. data/vendor/libgit2/include/git2/worktree.h +12 -2
  138. data/vendor/libgit2/include/git2.h +1 -0
  139. data/vendor/libgit2/src/CMakeLists.txt +177 -419
  140. data/vendor/libgit2/src/README.md +12 -0
  141. data/vendor/libgit2/src/cli/CMakeLists.txt +57 -0
  142. data/vendor/libgit2/src/cli/README.md +26 -0
  143. data/vendor/libgit2/src/cli/cli.h +20 -0
  144. data/vendor/libgit2/src/cli/cmd.c +21 -0
  145. data/vendor/libgit2/src/cli/cmd.h +33 -0
  146. data/vendor/libgit2/src/cli/cmd_cat_file.c +204 -0
  147. data/vendor/libgit2/src/cli/cmd_clone.c +176 -0
  148. data/vendor/libgit2/src/cli/cmd_hash_object.c +154 -0
  149. data/vendor/libgit2/src/cli/cmd_help.c +86 -0
  150. data/vendor/libgit2/src/cli/error.h +51 -0
  151. data/vendor/libgit2/src/cli/main.c +106 -0
  152. data/vendor/libgit2/src/cli/opt.c +669 -0
  153. data/vendor/libgit2/src/cli/opt.h +349 -0
  154. data/vendor/libgit2/src/cli/opt_usage.c +194 -0
  155. data/vendor/libgit2/src/cli/opt_usage.h +35 -0
  156. data/vendor/libgit2/src/cli/progress.c +345 -0
  157. data/vendor/libgit2/src/cli/progress.h +117 -0
  158. data/vendor/libgit2/src/cli/sighandler.h +20 -0
  159. data/vendor/libgit2/src/cli/unix/sighandler.c +36 -0
  160. data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
  161. data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
  162. data/vendor/libgit2/src/libgit2/CMakeLists.txt +141 -0
  163. data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +1 -1
  164. data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
  165. data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +18 -18
  166. data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
  167. data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +18 -18
  168. data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +18 -18
  169. data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +4 -4
  170. data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +18 -13
  171. data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +2 -0
  172. data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -1
  173. data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
  174. data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
  175. data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
  176. data/vendor/libgit2/src/{branch.h → libgit2/branch.h} +15 -3
  177. data/vendor/libgit2/src/libgit2/buf.c +126 -0
  178. data/vendor/libgit2/src/libgit2/buf.h +50 -0
  179. data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +74 -68
  180. data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +13 -13
  181. data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +96 -67
  182. data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +178 -73
  183. data/vendor/libgit2/src/libgit2/commit.h +87 -0
  184. data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +122 -89
  185. data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +14 -4
  186. data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +7 -4
  187. data/vendor/libgit2/src/libgit2/common.h +55 -0
  188. data/vendor/libgit2/src/{config.c → libgit2/config.c} +101 -69
  189. data/vendor/libgit2/src/{config.h → libgit2/config.h} +15 -2
  190. data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +105 -93
  191. data/vendor/libgit2/src/{config_mem.c → libgit2/config_mem.c} +9 -9
  192. data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +27 -23
  193. data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
  194. data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +35 -27
  195. data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +30 -9
  196. data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +2 -4
  197. data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +34 -36
  198. data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +3 -3
  199. data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +44 -26
  200. data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +47 -18
  201. data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
  202. data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +112 -100
  203. data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
  204. data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
  205. data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +13 -8
  206. data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
  207. data/vendor/libgit2/src/{email.c → libgit2/email.c} +55 -39
  208. data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
  209. data/vendor/libgit2/src/{errors.c → libgit2/errors.c} +18 -18
  210. data/vendor/libgit2/src/{errors.h → libgit2/errors.h} +1 -2
  211. data/vendor/libgit2/src/libgit2/experimental.h.in +13 -0
  212. data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +72 -27
  213. data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -1
  214. data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +23 -23
  215. data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +127 -53
  216. data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
  217. data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
  218. data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +35 -34
  219. data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
  220. data/vendor/libgit2/src/{index.c → libgit2/index.c} +91 -90
  221. data/vendor/libgit2/src/{index.h → libgit2/index.h} +6 -3
  222. data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +173 -92
  223. data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +71 -61
  224. data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +5 -5
  225. data/vendor/libgit2/src/{libgit2.c → libgit2/libgit2.c} +46 -11
  226. data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +38 -36
  227. data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +30 -30
  228. data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
  229. data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +2 -2
  230. data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -3
  231. data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
  232. data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +112 -92
  233. data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +5 -4
  234. data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +15 -12
  235. data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +5 -2
  236. data/vendor/libgit2/src/{netops.c → libgit2/netops.c} +1 -2
  237. data/vendor/libgit2/src/{netops.h → libgit2/netops.h} +1 -1
  238. data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +25 -34
  239. data/vendor/libgit2/src/{object.c → libgit2/object.c} +135 -30
  240. data/vendor/libgit2/src/{object.h → libgit2/object.h} +12 -3
  241. data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +228 -81
  242. data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
  243. data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
  244. data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +18 -5
  245. data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +137 -85
  246. data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +136 -90
  247. data/vendor/libgit2/src/libgit2/oid.h +273 -0
  248. data/vendor/libgit2/src/{oidmap.c → libgit2/oidmap.c} +1 -1
  249. data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +56 -30
  250. data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +11 -6
  251. data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +114 -84
  252. data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +31 -16
  253. data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +4 -3
  254. data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
  255. data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +1 -0
  256. data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +27 -11
  257. data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
  258. data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +29 -29
  259. data/vendor/libgit2/src/libgit2/path.c +375 -0
  260. data/vendor/libgit2/src/libgit2/path.h +68 -0
  261. data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +6 -6
  262. data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
  263. data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
  264. data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
  265. data/vendor/libgit2/src/{push.c → libgit2/push.c} +43 -38
  266. data/vendor/libgit2/src/{push.h → libgit2/push.h} +4 -16
  267. data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
  268. data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
  269. data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +119 -107
  270. data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +506 -197
  271. data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +7 -5
  272. data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +1 -2
  273. data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +34 -32
  274. data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +2 -2
  275. data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +32 -37
  276. data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +5 -2
  277. data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +718 -420
  278. data/vendor/libgit2/src/libgit2/remote.h +100 -0
  279. data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +629 -386
  280. data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +20 -9
  281. data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
  282. data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +14 -14
  283. data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +71 -42
  284. data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +12 -8
  285. data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +12 -6
  286. data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -1
  287. data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +235 -61
  288. data/vendor/libgit2/src/{status.c → libgit2/status.c} +4 -1
  289. data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
  290. data/vendor/libgit2/src/libgit2/strarray.h +25 -0
  291. data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +8 -6
  292. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +1 -1
  293. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +7 -3
  294. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +3 -3
  295. data/vendor/libgit2/src/{streams → libgit2/streams}/socket.c +4 -1
  296. data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +177 -161
  297. data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +1 -1
  298. data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
  299. data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +53 -18
  300. data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +73 -42
  301. data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
  302. data/vendor/libgit2/src/{threadstate.c → libgit2/threadstate.c} +3 -3
  303. data/vendor/libgit2/src/{threadstate.h → libgit2/threadstate.h} +2 -2
  304. data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
  305. data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
  306. data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +1 -1
  307. data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +1 -1
  308. data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +10 -10
  309. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
  310. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +2 -3
  311. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.c +12 -13
  312. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.c +10 -10
  313. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +0 -1
  314. data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +9 -11
  315. data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +41 -20
  316. data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +2 -3
  317. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +75 -66
  318. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
  319. data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +138 -116
  320. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +92 -133
  321. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +35 -32
  322. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +177 -65
  323. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +97 -49
  324. data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.c +365 -198
  325. data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +58 -59
  326. data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +8 -8
  327. data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +2 -2
  328. data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +93 -83
  329. data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +4 -4
  330. data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +121 -94
  331. data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
  332. data/vendor/libgit2/src/libgit2/xdiff/git-xdiff.h +53 -0
  333. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiff.h +15 -15
  334. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.c +134 -108
  335. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.c +23 -7
  336. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xhistogram.c +87 -78
  337. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xinclude.h +1 -12
  338. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmerge.c +104 -117
  339. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xpatience.c +6 -17
  340. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.c +15 -20
  341. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.c +18 -7
  342. data/vendor/libgit2/src/util/CMakeLists.txt +80 -0
  343. data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.h +1 -1
  344. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
  345. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
  346. data/vendor/libgit2/src/{array.h → util/array.h} +1 -1
  347. data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
  348. data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +1 -1
  349. data/vendor/libgit2/src/{date.c → util/date.c} +14 -20
  350. data/vendor/libgit2/src/util/date.h +33 -0
  351. data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +29 -29
  352. data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +2 -2
  353. data/vendor/libgit2/src/{path.c → util/fs_path.c} +453 -647
  354. data/vendor/libgit2/src/{path.h → util/fs_path.h} +221 -188
  355. data/vendor/libgit2/src/{futils.c → util/futils.c} +135 -90
  356. data/vendor/libgit2/src/{futils.h → util/futils.h} +28 -15
  357. data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +15 -1
  358. data/vendor/libgit2/src/{common.h → util/git2_util.h} +20 -59
  359. data/vendor/libgit2/src/util/hash/builtin.c +53 -0
  360. data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
  361. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
  362. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
  363. data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
  364. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
  365. data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
  366. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
  367. data/vendor/libgit2/src/util/hash/openssl.c +195 -0
  368. data/vendor/libgit2/src/util/hash/openssl.h +45 -0
  369. data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
  370. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
  371. data/vendor/libgit2/src/util/hash/sha.h +70 -0
  372. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
  373. data/vendor/libgit2/src/util/hash/win32.c +549 -0
  374. data/vendor/libgit2/src/util/hash/win32.h +60 -0
  375. data/vendor/libgit2/src/util/hash.c +158 -0
  376. data/vendor/libgit2/src/util/hash.h +61 -0
  377. data/vendor/libgit2/src/{khash.h → util/khash.h} +1 -1
  378. data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
  379. data/vendor/libgit2/src/util/net.c +1003 -0
  380. data/vendor/libgit2/src/{net.h → util/net.h} +18 -4
  381. data/vendor/libgit2/src/{pool.h → util/pool.h} +1 -1
  382. data/vendor/libgit2/src/{posix.c → util/posix.c} +3 -3
  383. data/vendor/libgit2/src/{posix.h → util/posix.h} +4 -1
  384. data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +2 -2
  385. data/vendor/libgit2/src/util/rand.c +234 -0
  386. data/vendor/libgit2/src/util/rand.h +37 -0
  387. data/vendor/libgit2/src/{regexp.c → util/regexp.c} +4 -4
  388. data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
  389. data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
  390. data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
  391. data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +1 -1
  392. data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +2 -2
  393. data/vendor/libgit2/src/{buffer.c → util/str.c} +157 -151
  394. data/vendor/libgit2/src/util/str.h +357 -0
  395. data/vendor/libgit2/src/{strmap.h → util/strmap.h} +1 -1
  396. data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
  397. data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
  398. data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
  399. data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
  400. data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -4
  401. data/vendor/libgit2/src/{unix → util/unix}/realpath.c +1 -3
  402. data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
  403. data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
  404. data/vendor/libgit2/src/{util.c → util/util.c} +15 -15
  405. data/vendor/libgit2/src/{util.h → util/util.h} +4 -29
  406. data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
  407. data/vendor/libgit2/src/{vector.h → util/vector.h} +2 -2
  408. data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
  409. data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
  410. data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
  411. data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
  412. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +140 -9
  413. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
  414. data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
  415. data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +12 -28
  416. data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
  417. data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
  418. data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
  419. data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.h +1 -1
  420. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
  421. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
  422. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
  423. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
  424. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
  425. data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
  426. data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
  427. metadata +402 -356
  428. data/vendor/libgit2/src/buffer.h +0 -374
  429. data/vendor/libgit2/src/commit.h +0 -46
  430. data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
  431. data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
  432. data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
  433. data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
  434. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  435. data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
  436. data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
  437. data/vendor/libgit2/src/hash/sha1.h +0 -38
  438. data/vendor/libgit2/src/hash.c +0 -110
  439. data/vendor/libgit2/src/hash.h +0 -46
  440. data/vendor/libgit2/src/message.h +0 -17
  441. data/vendor/libgit2/src/net.c +0 -540
  442. data/vendor/libgit2/src/oid.h +0 -51
  443. data/vendor/libgit2/src/remote.h +0 -55
  444. data/vendor/libgit2/src/sysdir.c +0 -347
  445. data/vendor/libgit2/src/win32/findfile.c +0 -230
  446. data/vendor/libgit2/src/win32/findfile.h +0 -19
  447. /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
  448. /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
  449. /data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +0 -0
  450. /data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +0 -0
  451. /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
  452. /data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +0 -0
  453. /data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +0 -0
  454. /data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -0
  455. /data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +0 -0
  456. /data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +0 -0
  457. /data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +0 -0
  458. /data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +0 -0
  459. /data/vendor/libgit2/src/{config_entries.c → libgit2/config_entries.c} +0 -0
  460. /data/vendor/libgit2/src/{config_entries.h → libgit2/config_entries.h} +0 -0
  461. /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
  462. /data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +0 -0
  463. /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
  464. /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
  465. /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
  466. /data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +0 -0
  467. /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
  468. /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
  469. /data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +0 -0
  470. /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
  471. /data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +0 -0
  472. /data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +0 -0
  473. /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
  474. /data/vendor/libgit2/src/{idxmap.c → libgit2/idxmap.c} +0 -0
  475. /data/vendor/libgit2/src/{idxmap.h → libgit2/idxmap.h} +0 -0
  476. /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
  477. /data/vendor/libgit2/src/{libgit2.h → libgit2/libgit2.h} +0 -0
  478. /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
  479. /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
  480. /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
  481. /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
  482. /data/vendor/libgit2/src/{offmap.c → libgit2/offmap.c} +0 -0
  483. /data/vendor/libgit2/src/{offmap.h → libgit2/offmap.h} +0 -0
  484. /data/vendor/libgit2/src/{oidarray.c → libgit2/oidarray.c} +0 -0
  485. /data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +0 -0
  486. /data/vendor/libgit2/src/{oidmap.h → libgit2/oidmap.h} +0 -0
  487. /data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +0 -0
  488. /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
  489. /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
  490. /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
  491. /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
  492. /data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +0 -0
  493. /data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +0 -0
  494. /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
  495. /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
  496. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
  497. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +0 -0
  498. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
  499. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
  500. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
  501. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
  502. /data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +0 -0
  503. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +0 -0
  504. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
  505. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +0 -0
  506. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
  507. /data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +0 -0
  508. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +0 -0
  509. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +0 -0
  510. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
  511. /data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.h +0 -0
  512. /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
  513. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.h +0 -0
  514. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.h +0 -0
  515. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmacros.h +0 -0
  516. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.h +0 -0
  517. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xtypes.h +0 -0
  518. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.h +0 -0
  519. /data/vendor/libgit2/src/{alloc.c → util/alloc.c} +0 -0
  520. /data/vendor/libgit2/src/{alloc.h → util/alloc.h} +0 -0
  521. /data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.c +0 -0
  522. /data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.c +0 -0
  523. /data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.c +0 -0
  524. /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
  525. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
  526. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
  527. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
  528. /data/vendor/libgit2/src/{integer.h → util/integer.h} +0 -0
  529. /data/vendor/libgit2/src/{pool.c → util/pool.c} +0 -0
  530. /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
  531. /data/vendor/libgit2/src/{strmap.c → util/strmap.c} +0 -0
  532. /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
  533. /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
  534. /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
  535. /data/vendor/libgit2/src/{vector.c → util/vector.c} +0 -0
  536. /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
  537. /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
  538. /data/vendor/libgit2/src/{win32 → util/win32}/error.c +0 -0
  539. /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
  540. /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
  541. /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
  542. /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
  543. /data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.c +0 -0
  544. /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
  545. /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
  546. /data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +0 -0
  547. /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
@@ -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,7 +165,7 @@ 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
 
@@ -195,7 +199,7 @@ static int load_submodule_names(git_strmap **out, git_repository *repo, git_conf
195
199
  const char *key = "submodule\\..*\\.path";
196
200
  git_config_iterator *iter = NULL;
197
201
  git_config_entry *entry;
198
- git_buf buf = GIT_BUF_INIT;
202
+ git_str buf = GIT_STR_INIT;
199
203
  git_strmap *names;
200
204
  int isvalid, error;
201
205
 
@@ -219,8 +223,8 @@ static int load_submodule_names(git_strmap **out, git_repository *repo, git_conf
219
223
  goto out;
220
224
  }
221
225
 
222
- git_buf_clear(&buf);
223
- git_buf_put(&buf, fdot + 1, ldot - fdot - 1);
226
+ git_str_clear(&buf);
227
+ git_str_put(&buf, fdot + 1, ldot - fdot - 1);
224
228
  isvalid = git_submodule_name_is_valid(repo, buf.ptr, 0);
225
229
  if (isvalid < 0) {
226
230
  error = isvalid;
@@ -229,7 +233,7 @@ static int load_submodule_names(git_strmap **out, git_repository *repo, git_conf
229
233
  if (!isvalid)
230
234
  continue;
231
235
 
232
- if ((error = git_strmap_set(names, git__strdup(entry->value), git_buf_detach(&buf))) < 0) {
236
+ if ((error = git_strmap_set(names, git__strdup(entry->value), git_str_detach(&buf))) < 0) {
233
237
  git_error_set(GIT_ERROR_NOMEMORY, "error inserting submodule into hash table");
234
238
  error = -1;
235
239
  goto out;
@@ -243,7 +247,7 @@ static int load_submodule_names(git_strmap **out, git_repository *repo, git_conf
243
247
 
244
248
  out:
245
249
  free_submodule_names(names);
246
- git_buf_dispose(&buf);
250
+ git_str_dispose(&buf);
247
251
  git_config_iterator_free(iter);
248
252
  return error;
249
253
  }
@@ -329,10 +333,10 @@ int git_submodule__lookup_with_cache(
329
333
  if (location == 0 || location == GIT_SUBMODULE_STATUS_IN_WD) {
330
334
  git_config_backend *mods;
331
335
  const char *pattern = "submodule\\..*\\.path";
332
- git_buf path = GIT_BUF_INIT;
336
+ git_str path = GIT_STR_INIT;
333
337
  fbp_data data = { NULL, NULL };
334
338
 
335
- git_buf_puts(&path, name);
339
+ git_str_puts(&path, name);
336
340
  while (path.ptr[path.size-1] == '/') {
337
341
  path.ptr[--path.size] = '\0';
338
342
  }
@@ -347,14 +351,14 @@ int git_submodule__lookup_with_cache(
347
351
 
348
352
  if (error < 0) {
349
353
  git_submodule_free(sm);
350
- git_buf_dispose(&path);
354
+ git_str_dispose(&path);
351
355
  return error;
352
356
  }
353
357
 
354
358
  if (data.name) {
355
359
  git__free(sm->name);
356
360
  sm->name = data.name;
357
- sm->path = git_buf_detach(&path);
361
+ sm->path = git_str_detach(&path);
358
362
 
359
363
  /* Try to load again with the right name */
360
364
  if ((error = git_submodule_reload(sm, false)) < 0) {
@@ -363,7 +367,7 @@ int git_submodule__lookup_with_cache(
363
367
  }
364
368
  }
365
369
 
366
- git_buf_dispose(&path);
370
+ git_str_dispose(&path);
367
371
  }
368
372
 
369
373
  if ((error = git_submodule_location(&location, sm)) < 0) {
@@ -378,17 +382,17 @@ int git_submodule__lookup_with_cache(
378
382
 
379
383
  /* If it's not configured, we still check if there's a repo at the path */
380
384
  if (git_repository_workdir(repo)) {
381
- git_buf path = GIT_BUF_INIT;
382
- if (git_buf_join3(&path, '/',
385
+ git_str path = GIT_STR_INIT;
386
+ if (git_str_join3(&path, '/',
383
387
  git_repository_workdir(repo),
384
388
  name, DOT_GIT) < 0 ||
385
- git_path_validate_workdir_buf(NULL, &path) < 0)
389
+ git_path_validate_str_length(NULL, &path) < 0)
386
390
  return -1;
387
391
 
388
- if (git_path_exists(path.ptr))
392
+ if (git_fs_path_exists(path.ptr))
389
393
  error = GIT_EEXISTS;
390
394
 
391
- git_buf_dispose(&path);
395
+ git_str_dispose(&path);
392
396
  }
393
397
 
394
398
  submodule_set_lookup_error(error, name);
@@ -405,22 +409,22 @@ int git_submodule__lookup_with_cache(
405
409
 
406
410
  int git_submodule_name_is_valid(git_repository *repo, const char *name, int flags)
407
411
  {
408
- git_buf buf = GIT_BUF_INIT;
412
+ git_str buf = GIT_STR_INIT;
409
413
  int error, isvalid;
410
414
 
411
415
  if (flags == 0)
412
- flags = GIT_PATH_REJECT_FILESYSTEM_DEFAULTS;
416
+ flags = GIT_FS_PATH_REJECT_FILESYSTEM_DEFAULTS;
413
417
 
414
418
  /* Avoid allocating a new string if we can avoid it */
415
419
  if (strchr(name, '\\') != NULL) {
416
- if ((error = git_path_normalize_slashes(&buf, name)) < 0)
420
+ if ((error = git_fs_path_normalize_slashes(&buf, name)) < 0)
417
421
  return error;
418
422
  } else {
419
- git_buf_attach_notowned(&buf, name, strlen(name));
423
+ git_str_attach_notowned(&buf, name, strlen(name));
420
424
  }
421
425
 
422
- isvalid = git_path_validate(repo, buf.ptr, 0, flags);
423
- git_buf_dispose(&buf);
426
+ isvalid = git_path_is_valid(repo, buf.ptr, 0, flags);
427
+ git_str_dispose(&buf);
424
428
 
425
429
  return isvalid;
426
430
  }
@@ -554,7 +558,7 @@ int git_submodule__map(git_repository *repo, git_strmap *map)
554
558
  int error = 0;
555
559
  git_index *idx = NULL;
556
560
  git_tree *head = NULL;
557
- git_buf path = GIT_BUF_INIT;
561
+ git_str path = GIT_STR_INIT;
558
562
  git_submodule *sm;
559
563
  git_config *mods = NULL;
560
564
  bool has_workdir;
@@ -613,7 +617,7 @@ cleanup:
613
617
  /* TODO: if we got an error, mark submodule config as invalid? */
614
618
  git_index_free(idx);
615
619
  git_tree_free(head);
616
- git_buf_dispose(&path);
620
+ git_str_dispose(&path);
617
621
  return error;
618
622
  }
619
623
 
@@ -682,7 +686,7 @@ static int submodule_repo_init(
682
686
  bool use_gitlink)
683
687
  {
684
688
  int error = 0;
685
- git_buf workdir = GIT_BUF_INIT, repodir = GIT_BUF_INIT;
689
+ git_str workdir = GIT_STR_INIT, repodir = GIT_STR_INIT;
686
690
  git_repository_init_options initopt = GIT_REPOSITORY_INIT_OPTIONS_INIT;
687
691
  git_repository *subrepo = NULL;
688
692
 
@@ -701,10 +705,10 @@ static int submodule_repo_init(
701
705
  * Old style: sub-repo goes directly into repo/<name>/.git/
702
706
  */
703
707
  if (use_gitlink) {
704
- error = git_repository_item_path(&repodir, parent_repo, GIT_REPOSITORY_ITEM_MODULES);
708
+ error = git_repository__item_path(&repodir, parent_repo, GIT_REPOSITORY_ITEM_MODULES);
705
709
  if (error < 0)
706
710
  goto cleanup;
707
- error = git_buf_joinpath(&repodir, repodir.ptr, path);
711
+ error = git_str_joinpath(&repodir, repodir.ptr, path);
708
712
  if (error < 0)
709
713
  goto cleanup;
710
714
 
@@ -718,14 +722,57 @@ static int submodule_repo_init(
718
722
  error = git_repository_init_ext(&subrepo, workdir.ptr, &initopt);
719
723
 
720
724
  cleanup:
721
- git_buf_dispose(&workdir);
722
- git_buf_dispose(&repodir);
725
+ git_str_dispose(&workdir);
726
+ git_str_dispose(&repodir);
723
727
 
724
728
  *out = subrepo;
725
729
 
726
730
  return error;
727
731
  }
728
732
 
733
+ static int git_submodule__resolve_url(
734
+ git_str *out,
735
+ git_repository *repo,
736
+ const char *url)
737
+ {
738
+ int error = 0;
739
+ git_str normalized = GIT_STR_INIT;
740
+
741
+ GIT_ASSERT_ARG(out);
742
+ GIT_ASSERT_ARG(repo);
743
+ GIT_ASSERT_ARG(url);
744
+
745
+ /* We do this in all platforms in case someone on Windows created the .gitmodules */
746
+ if (strchr(url, '\\')) {
747
+ if ((error = git_fs_path_normalize_slashes(&normalized, url)) < 0)
748
+ return error;
749
+
750
+ url = normalized.ptr;
751
+ }
752
+
753
+
754
+ if (git_fs_path_is_relative(url)) {
755
+ if (!(error = get_url_base(out, repo)))
756
+ error = git_fs_path_apply_relative(out, url);
757
+ } else if (strchr(url, ':') != NULL || url[0] == '/') {
758
+ error = git_str_sets(out, url);
759
+ } else {
760
+ git_error_set(GIT_ERROR_SUBMODULE, "invalid format for submodule URL");
761
+ error = -1;
762
+ }
763
+
764
+ git_str_dispose(&normalized);
765
+ return error;
766
+ }
767
+
768
+ int git_submodule_resolve_url(
769
+ git_buf *out,
770
+ git_repository *repo,
771
+ const char *url)
772
+ {
773
+ GIT_BUF_WRAP_PRIVATE(out, git_submodule__resolve_url, repo, url);
774
+ }
775
+
729
776
  int git_submodule_add_setup(
730
777
  git_submodule **out,
731
778
  git_repository *repo,
@@ -736,7 +783,7 @@ int git_submodule_add_setup(
736
783
  int error = 0;
737
784
  git_config_backend *mods = NULL;
738
785
  git_submodule *sm = NULL;
739
- git_buf name = GIT_BUF_INIT, real_url = GIT_BUF_INIT;
786
+ git_str name = GIT_STR_INIT, real_url = GIT_STR_INIT;
740
787
  git_repository *subrepo = NULL;
741
788
  bool path_occupied;
742
789
 
@@ -759,7 +806,7 @@ int git_submodule_add_setup(
759
806
  if (git__prefixcmp(path, git_repository_workdir(repo)) == 0)
760
807
  path += strlen(git_repository_workdir(repo));
761
808
 
762
- if (git_path_root(path) >= 0) {
809
+ if (git_fs_path_root(path) >= 0) {
763
810
  git_error_set(GIT_ERROR_SUBMODULE, "submodule path must be a relative path");
764
811
  error = -1;
765
812
  goto cleanup;
@@ -781,7 +828,7 @@ int git_submodule_add_setup(
781
828
  return -1;
782
829
  }
783
830
 
784
- if ((error = git_buf_printf(&name, "submodule.%s.path", path)) < 0 ||
831
+ if ((error = git_str_printf(&name, "submodule.%s.path", path)) < 0 ||
785
832
  (error = git_config_backend_set_string(mods, name.ptr, path)) < 0)
786
833
  goto cleanup;
787
834
 
@@ -789,7 +836,7 @@ int git_submodule_add_setup(
789
836
  (error = git_config_backend_set_string(mods, name.ptr, url)) < 0)
790
837
  goto cleanup;
791
838
 
792
- git_buf_clear(&name);
839
+ git_str_clear(&name);
793
840
 
794
841
  /* init submodule repository and add origin remote as needed */
795
842
 
@@ -800,11 +847,11 @@ int git_submodule_add_setup(
800
847
  /* if the repo does not already exist, then init a new repo and add it.
801
848
  * Otherwise, just add the existing repo.
802
849
  */
803
- if (!(git_path_exists(name.ptr) &&
804
- git_path_contains(&name, DOT_GIT))) {
850
+ if (!(git_fs_path_exists(name.ptr) &&
851
+ git_fs_path_contains(&name, DOT_GIT))) {
805
852
 
806
853
  /* resolve the actual URL to use */
807
- if ((error = git_submodule_resolve_url(&real_url, repo, url)) < 0)
854
+ if ((error = git_submodule__resolve_url(&real_url, repo, url)) < 0)
808
855
  goto cleanup;
809
856
 
810
857
  if ((error = submodule_repo_init(&subrepo, repo, path, real_url.ptr, use_gitlink)) < 0)
@@ -826,8 +873,8 @@ cleanup:
826
873
 
827
874
  git_config_backend_free(mods);
828
875
  git_repository_free(subrepo);
829
- git_buf_dispose(&real_url);
830
- git_buf_dispose(&name);
876
+ git_str_dispose(&real_url);
877
+ git_str_dispose(&name);
831
878
 
832
879
  return error;
833
880
  }
@@ -841,13 +888,13 @@ int git_submodule_repo_init(
841
888
  git_repository *sub_repo = NULL;
842
889
  const char *configured_url;
843
890
  git_config *cfg = NULL;
844
- git_buf buf = GIT_BUF_INIT;
891
+ git_str buf = GIT_STR_INIT;
845
892
 
846
893
  GIT_ASSERT_ARG(out);
847
894
  GIT_ASSERT_ARG(sm);
848
895
 
849
896
  /* get the configured remote url of the submodule */
850
- if ((error = git_buf_printf(&buf, "submodule.%s.url", sm->name)) < 0 ||
897
+ if ((error = git_str_printf(&buf, "submodule.%s.url", sm->name)) < 0 ||
851
898
  (error = git_repository_config_snapshot(&cfg, sm->repo)) < 0 ||
852
899
  (error = git_config_get_string(&configured_url, cfg, buf.ptr)) < 0 ||
853
900
  (error = submodule_repo_init(&sub_repo, sm->repo, sm->path, configured_url, use_gitlink)) < 0)
@@ -857,7 +904,7 @@ int git_submodule_repo_init(
857
904
 
858
905
  done:
859
906
  git_config_free(cfg);
860
- git_buf_dispose(&buf);
907
+ git_str_dispose(&buf);
861
908
  return error;
862
909
  }
863
910
 
@@ -881,7 +928,7 @@ int git_submodule_clone(git_repository **out, git_submodule *submodule, const gi
881
928
  {
882
929
  int error;
883
930
  git_repository *clone;
884
- git_buf rel_path = GIT_BUF_INIT;
931
+ git_str rel_path = GIT_STR_INIT;
885
932
  git_submodule_update_options sub_opts = GIT_SUBMODULE_UPDATE_OPTIONS_INIT;
886
933
  git_clone_options opts = GIT_CLONE_OPTIONS_INIT;
887
934
 
@@ -903,7 +950,7 @@ int git_submodule_clone(git_repository **out, git_submodule *submodule, const gi
903
950
  if (error < 0)
904
951
  goto cleanup;
905
952
 
906
- error = git_clone__submodule(&clone, git_submodule_url(submodule), git_buf_cstr(&rel_path), &opts);
953
+ error = git_clone__submodule(&clone, git_submodule_url(submodule), git_str_cstr(&rel_path), &opts);
907
954
  if (error < 0)
908
955
  goto cleanup;
909
956
 
@@ -913,7 +960,7 @@ int git_submodule_clone(git_repository **out, git_submodule *submodule, const gi
913
960
  *out = clone;
914
961
 
915
962
  cleanup:
916
- git_buf_dispose(&rel_path);
963
+ git_str_dispose(&rel_path);
917
964
 
918
965
  return error;
919
966
  }
@@ -937,7 +984,7 @@ int git_submodule_add_to_index(git_submodule *sm, int write_index)
937
984
  int error;
938
985
  git_repository *sm_repo = NULL;
939
986
  git_index *index;
940
- git_buf path = GIT_BUF_INIT;
987
+ git_str path = GIT_STR_INIT;
941
988
  git_commit *head;
942
989
  git_index_entry entry;
943
990
  struct stat st;
@@ -997,7 +1044,7 @@ int git_submodule_add_to_index(git_submodule *sm, int write_index)
997
1044
 
998
1045
  cleanup:
999
1046
  git_repository_free(sm_repo);
1000
- git_buf_dispose(&path);
1047
+ git_str_dispose(&path);
1001
1048
  return error;
1002
1049
  }
1003
1050
 
@@ -1034,44 +1081,9 @@ const char *git_submodule_url(git_submodule *submodule)
1034
1081
  return submodule->url;
1035
1082
  }
1036
1083
 
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
1084
  static int write_var(git_repository *repo, const char *name, const char *var, const char *val)
1073
1085
  {
1074
- git_buf key = GIT_BUF_INIT;
1086
+ git_str key = GIT_STR_INIT;
1075
1087
  git_config_backend *mods;
1076
1088
  int error;
1077
1089
 
@@ -1079,7 +1091,7 @@ static int write_var(git_repository *repo, const char *name, const char *var, co
1079
1091
  if (!mods)
1080
1092
  return -1;
1081
1093
 
1082
- if ((error = git_buf_printf(&key, "submodule.%s.%s", name, var)) < 0)
1094
+ if ((error = git_str_printf(&key, "submodule.%s.%s", name, var)) < 0)
1083
1095
  goto cleanup;
1084
1096
 
1085
1097
  if (val)
@@ -1087,7 +1099,7 @@ static int write_var(git_repository *repo, const char *name, const char *var, co
1087
1099
  else
1088
1100
  error = git_config_backend_delete(mods, key.ptr);
1089
1101
 
1090
- git_buf_dispose(&key);
1102
+ git_str_dispose(&key);
1091
1103
 
1092
1104
  cleanup:
1093
1105
  git_config_backend_free(mods);
@@ -1227,7 +1239,7 @@ static int submodule_repo_create(
1227
1239
  const char *path)
1228
1240
  {
1229
1241
  int error = 0;
1230
- git_buf workdir = GIT_BUF_INIT, repodir = GIT_BUF_INIT;
1242
+ git_str workdir = GIT_STR_INIT, repodir = GIT_STR_INIT;
1231
1243
  git_repository_init_options initopt = GIT_REPOSITORY_INIT_OPTIONS_INIT;
1232
1244
  git_repository *subrepo = NULL;
1233
1245
 
@@ -1249,18 +1261,18 @@ static int submodule_repo_create(
1249
1261
  * <repo-dir>/modules/<name>/ with a gitlink in the
1250
1262
  * sub-repo workdir directory to that repository.
1251
1263
  */
1252
- error = git_repository_item_path(&repodir, parent_repo, GIT_REPOSITORY_ITEM_MODULES);
1264
+ error = git_repository__item_path(&repodir, parent_repo, GIT_REPOSITORY_ITEM_MODULES);
1253
1265
  if (error < 0)
1254
1266
  goto cleanup;
1255
- error = git_buf_joinpath(&repodir, repodir.ptr, path);
1267
+ error = git_str_joinpath(&repodir, repodir.ptr, path);
1256
1268
  if (error < 0)
1257
1269
  goto cleanup;
1258
1270
 
1259
1271
  error = git_repository_init_ext(&subrepo, repodir.ptr, &initopt);
1260
1272
 
1261
1273
  cleanup:
1262
- git_buf_dispose(&workdir);
1263
- git_buf_dispose(&repodir);
1274
+ git_str_dispose(&workdir);
1275
+ git_str_dispose(&repodir);
1264
1276
 
1265
1277
  *out = subrepo;
1266
1278
 
@@ -1309,7 +1321,7 @@ int git_submodule_update(git_submodule *sm, int init, git_submodule_update_optio
1309
1321
  git_repository *sub_repo = NULL;
1310
1322
  git_remote *remote = NULL;
1311
1323
  git_object *target_commit = NULL;
1312
- git_buf buf = GIT_BUF_INIT;
1324
+ git_str buf = GIT_STR_INIT;
1313
1325
  git_submodule_update_options update_options = GIT_SUBMODULE_UPDATE_OPTIONS_INIT;
1314
1326
  git_clone_options clone_options = GIT_CLONE_OPTIONS_INIT;
1315
1327
 
@@ -1326,7 +1338,11 @@ int git_submodule_update(git_submodule *sm, int init, git_submodule_update_optio
1326
1338
  /* Get the status of the submodule to determine if it is already initialized */
1327
1339
  if ((error = git_submodule_status(&submodule_status, sm->repo, sm->name, GIT_SUBMODULE_IGNORE_UNSPECIFIED)) < 0)
1328
1340
  goto done;
1329
-
1341
+
1342
+ /* If the submodule is configured but hasn't been added, skip it */
1343
+ if (submodule_status == GIT_SUBMODULE_STATUS_IN_CONFIG)
1344
+ goto done;
1345
+
1330
1346
  /*
1331
1347
  * If submodule work dir is not already initialized, check to see
1332
1348
  * what we need to do (initialize, clone, return error...)
@@ -1337,10 +1353,10 @@ int git_submodule_update(git_submodule *sm, int init, git_submodule_update_optio
1337
1353
  * info has been copied into .git/config
1338
1354
  */
1339
1355
  if ((error = git_repository_config_snapshot(&config, sm->repo)) < 0 ||
1340
- (error = git_buf_printf(&buf, "submodule.%s.url", git_submodule_name(sm))) < 0)
1356
+ (error = git_str_printf(&buf, "submodule.%s.url", git_submodule_name(sm))) < 0)
1341
1357
  goto done;
1342
1358
 
1343
- if ((error = git_config_get_string(&submodule_url, config, git_buf_cstr(&buf))) < 0) {
1359
+ if ((error = git_config_get_string(&submodule_url, config, git_str_cstr(&buf))) < 0) {
1344
1360
  /*
1345
1361
  * If the error is not "not found" or if it is "not found" and we are not
1346
1362
  * initializing the submodule, then return error.
@@ -1362,7 +1378,7 @@ int git_submodule_update(git_submodule *sm, int init, git_submodule_update_optio
1362
1378
  config = NULL;
1363
1379
 
1364
1380
  if ((error = git_repository_config_snapshot(&config, sm->repo)) < 0 ||
1365
- (error = git_config_get_string(&submodule_url, config, git_buf_cstr(&buf))) < 0)
1381
+ (error = git_config_get_string(&submodule_url, config, git_str_cstr(&buf))) < 0)
1366
1382
  goto done;
1367
1383
  }
1368
1384
 
@@ -1377,7 +1393,7 @@ int git_submodule_update(git_submodule *sm, int init, git_submodule_update_optio
1377
1393
  */
1378
1394
  clone_options.checkout_opts.checkout_strategy = GIT_CHECKOUT_NONE;
1379
1395
 
1380
- if ((error = git_clone(&sub_repo, submodule_url, sm->path, &clone_options)) < 0 ||
1396
+ if ((error = git_clone__submodule(&sub_repo, submodule_url, sm->path, &clone_options)) < 0 ||
1381
1397
  (error = git_repository_set_head_detached(sub_repo, git_submodule_index_id(sm))) < 0 ||
1382
1398
  (error = git_checkout_head(sub_repo, &update_options.checkout_opts)) != 0)
1383
1399
  goto done;
@@ -1420,7 +1436,7 @@ int git_submodule_update(git_submodule *sm, int init, git_submodule_update_optio
1420
1436
  }
1421
1437
 
1422
1438
  done:
1423
- git_buf_dispose(&buf);
1439
+ git_str_dispose(&buf);
1424
1440
  git_config_free(config);
1425
1441
  git_object_free(target_commit);
1426
1442
  git_remote_free(remote);
@@ -1433,7 +1449,7 @@ int git_submodule_init(git_submodule *sm, int overwrite)
1433
1449
  {
1434
1450
  int error;
1435
1451
  const char *val;
1436
- git_buf key = GIT_BUF_INIT, effective_submodule_url = GIT_BUF_INIT;
1452
+ git_str key = GIT_STR_INIT, effective_submodule_url = GIT_STR_INIT;
1437
1453
  git_config *cfg = NULL;
1438
1454
 
1439
1455
  if (!sm->url) {
@@ -1447,8 +1463,8 @@ int git_submodule_init(git_submodule *sm, int overwrite)
1447
1463
 
1448
1464
  /* write "submodule.NAME.url" */
1449
1465
 
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 ||
1466
+ if ((error = git_submodule__resolve_url(&effective_submodule_url, sm->repo, sm->url)) < 0 ||
1467
+ (error = git_str_printf(&key, "submodule.%s.url", sm->name)) < 0 ||
1452
1468
  (error = git_config__update_entry(
1453
1469
  cfg, key.ptr, effective_submodule_url.ptr, overwrite != 0, false)) < 0)
1454
1470
  goto cleanup;
@@ -1458,7 +1474,7 @@ int git_submodule_init(git_submodule *sm, int overwrite)
1458
1474
  val = (sm->update == GIT_SUBMODULE_UPDATE_CHECKOUT) ?
1459
1475
  NULL : submodule_update_to_str(sm->update);
1460
1476
 
1461
- if ((error = git_buf_printf(&key, "submodule.%s.update", sm->name)) < 0 ||
1477
+ if ((error = git_str_printf(&key, "submodule.%s.update", sm->name)) < 0 ||
1462
1478
  (error = git_config__update_entry(
1463
1479
  cfg, key.ptr, val, overwrite != 0, false)) < 0)
1464
1480
  goto cleanup;
@@ -1467,15 +1483,15 @@ int git_submodule_init(git_submodule *sm, int overwrite)
1467
1483
 
1468
1484
  cleanup:
1469
1485
  git_config_free(cfg);
1470
- git_buf_dispose(&key);
1471
- git_buf_dispose(&effective_submodule_url);
1486
+ git_str_dispose(&key);
1487
+ git_str_dispose(&effective_submodule_url);
1472
1488
 
1473
1489
  return error;
1474
1490
  }
1475
1491
 
1476
1492
  int git_submodule_sync(git_submodule *sm)
1477
1493
  {
1478
- git_buf key = GIT_BUF_INIT, url = GIT_BUF_INIT, remote_name = GIT_BUF_INIT;
1494
+ git_str key = GIT_STR_INIT, url = GIT_STR_INIT, remote_name = GIT_STR_INIT;
1479
1495
  git_repository *smrepo = NULL;
1480
1496
  git_config *cfg = NULL;
1481
1497
  int error = 0;
@@ -1487,8 +1503,8 @@ int git_submodule_sync(git_submodule *sm)
1487
1503
 
1488
1504
  /* copy URL over to config only if it already exists */
1489
1505
  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 ||
1506
+ (error = git_str_printf(&key, "submodule.%s.url", sm->name)) < 0 ||
1507
+ (error = git_submodule__resolve_url(&url, sm->repo, sm->url)) < 0 ||
1492
1508
  (error = git_config__update_entry(cfg, key.ptr, url.ptr, true, true)) < 0)
1493
1509
  goto out;
1494
1510
 
@@ -1501,9 +1517,9 @@ int git_submodule_sync(git_submodule *sm)
1501
1517
  goto out;
1502
1518
 
1503
1519
  if (lookup_head_remote_key(&remote_name, smrepo) == 0) {
1504
- if ((error = git_buf_join3(&key, '.', "remote", remote_name.ptr, "url")) < 0)
1520
+ if ((error = git_str_join3(&key, '.', "remote", remote_name.ptr, "url")) < 0)
1505
1521
  goto out;
1506
- } else if ((error = git_buf_sets(&key, "remote.origin.url")) < 0) {
1522
+ } else if ((error = git_str_sets(&key, "remote.origin.url")) < 0) {
1507
1523
  goto out;
1508
1524
  }
1509
1525
 
@@ -1512,9 +1528,9 @@ int git_submodule_sync(git_submodule *sm)
1512
1528
 
1513
1529
  out:
1514
1530
  git_repository_free(smrepo);
1515
- git_buf_dispose(&remote_name);
1516
- git_buf_dispose(&key);
1517
- git_buf_dispose(&url);
1531
+ git_str_dispose(&remote_name);
1532
+ git_str_dispose(&key);
1533
+ git_str_dispose(&url);
1518
1534
  return error;
1519
1535
  }
1520
1536
 
@@ -1522,7 +1538,7 @@ static int git_submodule__open(
1522
1538
  git_repository **subrepo, git_submodule *sm, bool bare)
1523
1539
  {
1524
1540
  int error;
1525
- git_buf path = GIT_BUF_INIT;
1541
+ git_str path = GIT_STR_INIT;
1526
1542
  unsigned int flags = GIT_REPOSITORY_OPEN_NO_SEARCH;
1527
1543
  const char *wd;
1528
1544
 
@@ -1535,7 +1551,7 @@ static int git_submodule__open(
1535
1551
 
1536
1552
  wd = git_repository_workdir(sm->repo);
1537
1553
 
1538
- if (git_buf_join3(&path, '/', wd, sm->path, DOT_GIT) < 0)
1554
+ if (git_str_join3(&path, '/', wd, sm->path, DOT_GIT) < 0)
1539
1555
  return -1;
1540
1556
 
1541
1557
  sm->flags = sm->flags &
@@ -1557,17 +1573,17 @@ static int git_submodule__open(
1557
1573
  sm->flags |= GIT_SUBMODULE_STATUS__WD_OID_VALID;
1558
1574
  else
1559
1575
  git_error_clear();
1560
- } else if (git_path_exists(path.ptr)) {
1576
+ } else if (git_fs_path_exists(path.ptr)) {
1561
1577
  sm->flags |= GIT_SUBMODULE_STATUS__WD_SCANNED |
1562
1578
  GIT_SUBMODULE_STATUS_IN_WD;
1563
1579
  } else {
1564
- git_buf_rtruncate_at_char(&path, '/'); /* remove "/.git" */
1580
+ git_str_rtruncate_at_char(&path, '/'); /* remove "/.git" */
1565
1581
 
1566
- if (git_path_isdir(path.ptr))
1582
+ if (git_fs_path_isdir(path.ptr))
1567
1583
  sm->flags |= GIT_SUBMODULE_STATUS__WD_SCANNED;
1568
1584
  }
1569
1585
 
1570
- git_buf_dispose(&path);
1586
+ git_str_dispose(&path);
1571
1587
 
1572
1588
  return error;
1573
1589
  }
@@ -1921,13 +1937,13 @@ static int submodule_parse_recurse(git_submodule_recurse_t *out, const char *val
1921
1937
  return 0;
1922
1938
  }
1923
1939
 
1924
- static int get_value(const char **out, git_config *cfg, git_buf *buf, const char *name, const char *field)
1940
+ static int get_value(const char **out, git_config *cfg, git_str *buf, const char *name, const char *field)
1925
1941
  {
1926
1942
  int error;
1927
1943
 
1928
- git_buf_clear(buf);
1944
+ git_str_clear(buf);
1929
1945
 
1930
- if ((error = git_buf_printf(buf, "submodule.%s.%s", name, field)) < 0 ||
1946
+ if ((error = git_str_printf(buf, "submodule.%s.%s", name, field)) < 0 ||
1931
1947
  (error = git_config_get_string(out, cfg, buf->ptr)) < 0)
1932
1948
  return error;
1933
1949
 
@@ -1944,7 +1960,7 @@ static bool looks_like_command_line_option(const char *s)
1944
1960
 
1945
1961
  static int submodule_read_config(git_submodule *sm, git_config *cfg)
1946
1962
  {
1947
- git_buf key = GIT_BUF_INIT;
1963
+ git_str key = GIT_STR_INIT;
1948
1964
  const char *value;
1949
1965
  int error, in_config = 0;
1950
1966
 
@@ -2025,7 +2041,7 @@ static int submodule_read_config(git_submodule *sm, git_config *cfg)
2025
2041
  error = 0;
2026
2042
 
2027
2043
  cleanup:
2028
- git_buf_dispose(&key);
2044
+ git_str_dispose(&key);
2029
2045
  return error;
2030
2046
  }
2031
2047
 
@@ -2034,7 +2050,7 @@ static int submodule_load_each(const git_config_entry *entry, void *payload)
2034
2050
  lfc_data *data = payload;
2035
2051
  const char *namestart, *property;
2036
2052
  git_strmap *map = data->map;
2037
- git_buf name = GIT_BUF_INIT;
2053
+ git_str name = GIT_STR_INIT;
2038
2054
  git_submodule *sm;
2039
2055
  int error, isvalid;
2040
2056
 
@@ -2049,7 +2065,7 @@ static int submodule_load_each(const git_config_entry *entry, void *payload)
2049
2065
 
2050
2066
  property++;
2051
2067
 
2052
- if ((error = git_buf_set(&name, namestart, property - namestart -1)) < 0)
2068
+ if ((error = git_str_set(&name, namestart, property - namestart -1)) < 0)
2053
2069
  return error;
2054
2070
 
2055
2071
  isvalid = git_submodule_name_is_valid(data->repo, name.ptr, 0);
@@ -2083,24 +2099,24 @@ static int submodule_load_each(const git_config_entry *entry, void *payload)
2083
2099
  error = 0;
2084
2100
 
2085
2101
  done:
2086
- git_buf_dispose(&name);
2102
+ git_str_dispose(&name);
2087
2103
  return error;
2088
2104
  }
2089
2105
 
2090
2106
  static int submodule_load_from_wd_lite(git_submodule *sm)
2091
2107
  {
2092
- git_buf path = GIT_BUF_INIT;
2108
+ git_str path = GIT_STR_INIT;
2093
2109
 
2094
2110
  if (git_repository_workdir_path(&path, sm->repo, sm->path) < 0)
2095
2111
  return -1;
2096
2112
 
2097
- if (git_path_isdir(path.ptr))
2113
+ if (git_fs_path_isdir(path.ptr))
2098
2114
  sm->flags |= GIT_SUBMODULE_STATUS__WD_SCANNED;
2099
2115
 
2100
- if (git_path_contains(&path, DOT_GIT))
2116
+ if (git_fs_path_contains(&path, DOT_GIT))
2101
2117
  sm->flags |= GIT_SUBMODULE_STATUS_IN_WD;
2102
2118
 
2103
- git_buf_dispose(&path);
2119
+ git_str_dispose(&path);
2104
2120
  return 0;
2105
2121
  }
2106
2122
 
@@ -2112,7 +2128,7 @@ static int submodule_load_from_wd_lite(git_submodule *sm)
2112
2128
  static int gitmodules_snapshot(git_config **snap, git_repository *repo)
2113
2129
  {
2114
2130
  git_config *mods = NULL;
2115
- git_buf path = GIT_BUF_INIT;
2131
+ git_str path = GIT_STR_INIT;
2116
2132
  int error;
2117
2133
 
2118
2134
  if (git_repository_workdir(repo) == NULL)
@@ -2123,7 +2139,7 @@ static int gitmodules_snapshot(git_config **snap, git_repository *repo)
2123
2139
 
2124
2140
  if ((error = git_config_open_ondisk(&mods, path.ptr)) < 0)
2125
2141
  goto cleanup;
2126
- git_buf_dispose(&path);
2142
+ git_str_dispose(&path);
2127
2143
 
2128
2144
  if ((error = git_config_snapshot(snap, mods)) < 0)
2129
2145
  goto cleanup;
@@ -2133,7 +2149,7 @@ static int gitmodules_snapshot(git_config **snap, git_repository *repo)
2133
2149
  cleanup:
2134
2150
  if (mods)
2135
2151
  git_config_free(mods);
2136
- git_buf_dispose(&path);
2152
+ git_str_dispose(&path);
2137
2153
 
2138
2154
  return error;
2139
2155
  }
@@ -2142,14 +2158,14 @@ static git_config_backend *open_gitmodules(
2142
2158
  git_repository *repo,
2143
2159
  int okay_to_create)
2144
2160
  {
2145
- git_buf path = GIT_BUF_INIT;
2161
+ git_str path = GIT_STR_INIT;
2146
2162
  git_config_backend *mods = NULL;
2147
2163
 
2148
2164
  if (git_repository_workdir(repo) != NULL) {
2149
2165
  if (git_repository_workdir_path(&path, repo, GIT_MODULES_FILE) != 0)
2150
2166
  return NULL;
2151
2167
 
2152
- if (okay_to_create || git_path_isfile(path.ptr)) {
2168
+ if (okay_to_create || git_fs_path_isfile(path.ptr)) {
2153
2169
  /* git_config_backend_from_file should only fail if OOM */
2154
2170
  if (git_config_backend_from_file(&mods, path.ptr) < 0)
2155
2171
  mods = NULL;
@@ -2161,17 +2177,17 @@ static git_config_backend *open_gitmodules(
2161
2177
  }
2162
2178
  }
2163
2179
 
2164
- git_buf_dispose(&path);
2180
+ git_str_dispose(&path);
2165
2181
 
2166
2182
  return mods;
2167
2183
  }
2168
2184
 
2169
2185
  /* 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)
2186
+ static int lookup_head_remote_key(git_str *remote_name, git_repository *repo)
2171
2187
  {
2172
2188
  int error;
2173
2189
  git_reference *head = NULL;
2174
- git_buf upstream_name = GIT_BUF_INIT;
2190
+ git_str upstream_name = GIT_STR_INIT;
2175
2191
 
2176
2192
  /* lookup and dereference HEAD */
2177
2193
  if ((error = git_repository_head(&head, repo)) < 0)
@@ -2190,18 +2206,18 @@ static int lookup_head_remote_key(git_buf *remote_name, git_repository *repo)
2190
2206
  }
2191
2207
 
2192
2208
  /* lookup remote tracking branch of HEAD */
2193
- if ((error = git_branch_upstream_name(
2209
+ if ((error = git_branch__upstream_name(
2194
2210
  &upstream_name,
2195
2211
  repo,
2196
2212
  git_reference_name(head))) < 0)
2197
2213
  goto done;
2198
2214
 
2199
2215
  /* lookup remote of remote tracking branch */
2200
- if ((error = git_branch_remote_name(remote_name, repo, upstream_name.ptr)) < 0)
2216
+ if ((error = git_branch__remote_name(remote_name, repo, upstream_name.ptr)) < 0)
2201
2217
  goto done;
2202
2218
 
2203
2219
  done:
2204
- git_buf_dispose(&upstream_name);
2220
+ git_str_dispose(&upstream_name);
2205
2221
  git_reference_free(head);
2206
2222
 
2207
2223
  return error;
@@ -2211,13 +2227,13 @@ done:
2211
2227
  static int lookup_head_remote(git_remote **remote, git_repository *repo)
2212
2228
  {
2213
2229
  int error;
2214
- git_buf remote_name = GIT_BUF_INIT;
2230
+ git_str remote_name = GIT_STR_INIT;
2215
2231
 
2216
2232
  /* lookup remote of remote tracking branch name */
2217
2233
  if (!(error = lookup_head_remote_key(&remote_name, repo)))
2218
2234
  error = git_remote_lookup(remote, repo, remote_name.ptr);
2219
2235
 
2220
- git_buf_dispose(&remote_name);
2236
+ git_str_dispose(&remote_name);
2221
2237
 
2222
2238
  return error;
2223
2239
  }
@@ -2240,14 +2256,14 @@ static int lookup_default_remote(git_remote **remote, git_repository *repo)
2240
2256
  return error;
2241
2257
  }
2242
2258
 
2243
- static int get_url_base(git_buf *url, git_repository *repo)
2259
+ static int get_url_base(git_str *url, git_repository *repo)
2244
2260
  {
2245
2261
  int error;
2246
2262
  git_worktree *wt = NULL;
2247
2263
  git_remote *remote = NULL;
2248
2264
 
2249
2265
  if ((error = lookup_default_remote(&remote, repo)) == 0) {
2250
- error = git_buf_sets(url, git_remote_url(remote));
2266
+ error = git_str_sets(url, git_remote_url(remote));
2251
2267
  goto out;
2252
2268
  } else if (error != GIT_ENOTFOUND)
2253
2269
  goto out;
@@ -2258,9 +2274,9 @@ static int get_url_base(git_buf *url, git_repository *repo)
2258
2274
  if (git_repository_is_worktree(repo)) {
2259
2275
  if ((error = git_worktree_open_from_repository(&wt, repo)) < 0)
2260
2276
  goto out;
2261
- error = git_buf_sets(url, wt->parent_path);
2277
+ error = git_str_sets(url, wt->parent_path);
2262
2278
  } else {
2263
- error = git_buf_sets(url, git_repository_workdir(repo));
2279
+ error = git_str_sets(url, git_repository_workdir(repo));
2264
2280
  }
2265
2281
 
2266
2282
  out: