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
@@ -13,6 +13,7 @@
13
13
  #include "futils.h"
14
14
  #include "tree-cache.h"
15
15
  #include "index.h"
16
+ #include "path.h"
16
17
 
17
18
  #define DEFAULT_TREE_SIZE 16
18
19
  #define MAX_FILEMODE_BYTES 6
@@ -20,6 +21,8 @@
20
21
  #define TREE_ENTRY_CHECK_NAMELEN(n) \
21
22
  if (n > UINT16_MAX) { git_error_set(GIT_ERROR_INVALID, "tree entry path too long"); }
22
23
 
24
+ GIT_HASHMAP_STR_FUNCTIONS(git_treebuilder_entrymap, GIT_HASHMAP_INLINE, git_tree_entry *);
25
+
23
26
  static bool valid_filemode(const int filemode)
24
27
  {
25
28
  return (filemode == GIT_FILEMODE_TREE
@@ -54,8 +57,8 @@ GIT_INLINE(git_filemode_t) normalize_filemode(git_filemode_t filemode)
54
57
  static int valid_entry_name(git_repository *repo, const char *filename)
55
58
  {
56
59
  return *filename != '\0' &&
57
- git_path_validate(repo, filename, 0,
58
- GIT_PATH_REJECT_TRAVERSAL | GIT_PATH_REJECT_DOT_GIT | GIT_PATH_REJECT_SLASH);
60
+ git_path_is_valid(repo, filename, 0,
61
+ GIT_FS_PATH_REJECT_TRAVERSAL | GIT_PATH_REJECT_DOT_GIT | GIT_FS_PATH_REJECT_SLASH);
59
62
  }
60
63
 
61
64
  static int entry_sort_cmp(const void *a, const void *b)
@@ -63,7 +66,7 @@ static int entry_sort_cmp(const void *a, const void *b)
63
66
  const git_tree_entry *e1 = (const git_tree_entry *)a;
64
67
  const git_tree_entry *e2 = (const git_tree_entry *)b;
65
68
 
66
- return git_path_cmp(
69
+ return git_fs_path_cmp(
67
70
  e1->filename, e1->filename_len, git_tree_entry__is_tree(e1),
68
71
  e2->filename, e2->filename_len, git_tree_entry__is_tree(e2),
69
72
  git__strncmp);
@@ -81,34 +84,33 @@ int git_tree_entry_cmp(const git_tree_entry *e1, const git_tree_entry *e2)
81
84
  static git_tree_entry *alloc_entry(const char *filename, size_t filename_len, const git_oid *id)
82
85
  {
83
86
  git_tree_entry *entry = NULL;
87
+ char *filename_ptr;
84
88
  size_t tree_len;
85
89
 
90
+ #ifdef GIT_EXPERIMENTAL_SHA256
91
+ size_t oid_size = git_oid_size(id->type);
92
+ #else
93
+ size_t oid_size = GIT_OID_SHA1_SIZE;
94
+ #endif
95
+
86
96
  TREE_ENTRY_CHECK_NAMELEN(filename_len);
87
97
 
88
98
  if (GIT_ADD_SIZET_OVERFLOW(&tree_len, sizeof(git_tree_entry), filename_len) ||
89
99
  GIT_ADD_SIZET_OVERFLOW(&tree_len, tree_len, 1) ||
90
- GIT_ADD_SIZET_OVERFLOW(&tree_len, tree_len, GIT_OID_RAWSZ))
100
+ GIT_ADD_SIZET_OVERFLOW(&tree_len, tree_len, oid_size))
91
101
  return NULL;
92
102
 
93
103
  entry = git__calloc(1, tree_len);
94
104
  if (!entry)
95
105
  return NULL;
96
106
 
97
- {
98
- char *filename_ptr;
99
- void *id_ptr;
100
-
101
- filename_ptr = ((char *) entry) + sizeof(git_tree_entry);
102
- memcpy(filename_ptr, filename, filename_len);
103
- entry->filename = filename_ptr;
104
-
105
- id_ptr = filename_ptr + filename_len + 1;
106
- git_oid_cpy(id_ptr, id);
107
- entry->oid = id_ptr;
108
- }
109
-
107
+ filename_ptr = ((char *) entry) + sizeof(git_tree_entry);
108
+ memcpy(filename_ptr, filename, filename_len);
109
+ entry->filename = filename_ptr;
110
110
  entry->filename_len = (uint16_t)filename_len;
111
111
 
112
+ git_oid_cpy(&entry->oid, id);
113
+
112
114
  return entry;
113
115
  }
114
116
 
@@ -230,7 +232,7 @@ int git_tree_entry_dup(git_tree_entry **dest, const git_tree_entry *source)
230
232
 
231
233
  GIT_ASSERT_ARG(source);
232
234
 
233
- cpy = alloc_entry(source->filename, source->filename_len, source->oid);
235
+ cpy = alloc_entry(source->filename, source->filename_len, &source->oid);
234
236
  if (cpy == NULL)
235
237
  return -1;
236
238
 
@@ -268,7 +270,7 @@ const char *git_tree_entry_name(const git_tree_entry *entry)
268
270
  const git_oid *git_tree_entry_id(const git_tree_entry *entry)
269
271
  {
270
272
  GIT_ASSERT_ARG_WITH_RETVAL(entry, NULL);
271
- return entry->oid;
273
+ return &entry->oid;
272
274
  }
273
275
 
274
276
  git_object_t git_tree_entry_type(const git_tree_entry *entry)
@@ -291,7 +293,7 @@ int git_tree_entry_to_object(
291
293
  GIT_ASSERT_ARG(entry);
292
294
  GIT_ASSERT_ARG(object_out);
293
295
 
294
- return git_object_lookup(object_out, repo, entry->oid, GIT_OBJECT_ANY);
296
+ return git_object_lookup(object_out, repo, &entry->oid, GIT_OBJECT_ANY);
295
297
  }
296
298
 
297
299
  static const git_tree_entry *entry_fromname(
@@ -330,7 +332,7 @@ const git_tree_entry *git_tree_entry_byid(
330
332
  GIT_ASSERT_ARG_WITH_RETVAL(tree, NULL);
331
333
 
332
334
  git_array_foreach(tree->entries, i, e) {
333
- if (memcmp(&e->oid->id, &id->id, sizeof(id->id)) == 0)
335
+ if (git_oid_equal(&e->oid, id))
334
336
  return e;
335
337
  }
336
338
 
@@ -347,18 +349,29 @@ size_t git_treebuilder_entrycount(git_treebuilder *bld)
347
349
  {
348
350
  GIT_ASSERT_ARG_WITH_RETVAL(bld, 0);
349
351
 
350
- return git_strmap_size(bld->map);
352
+ return git_treebuilder_entrymap_size(&bld->map);
351
353
  }
352
354
 
353
- static int tree_error(const char *str, const char *path)
355
+ GIT_INLINE(void) set_error(const char *str, const char *path)
354
356
  {
355
357
  if (path)
356
358
  git_error_set(GIT_ERROR_TREE, "%s - %s", str, path);
357
359
  else
358
360
  git_error_set(GIT_ERROR_TREE, "%s", str);
361
+ }
362
+
363
+ static int tree_error(const char *str, const char *path)
364
+ {
365
+ set_error(str, path);
359
366
  return -1;
360
367
  }
361
368
 
369
+ static int tree_parse_error(const char *str, const char *path)
370
+ {
371
+ set_error(str, path);
372
+ return GIT_EINVALID;
373
+ }
374
+
362
375
  static int parse_mode(uint16_t *mode_out, const char *buffer, size_t buffer_len, const char **buffer_out)
363
376
  {
364
377
  int32_t mode;
@@ -370,7 +383,7 @@ static int parse_mode(uint16_t *mode_out, const char *buffer, size_t buffer_len,
370
383
  if ((error = git__strntol32(&mode, buffer, buffer_len, buffer_out, 8)) < 0)
371
384
  return error;
372
385
 
373
- if (mode < 0 || mode > UINT16_MAX)
386
+ if (mode < 0 || (uint32_t)mode > UINT16_MAX)
374
387
  return -1;
375
388
 
376
389
  *mode_out = mode;
@@ -378,11 +391,12 @@ static int parse_mode(uint16_t *mode_out, const char *buffer, size_t buffer_len,
378
391
  return 0;
379
392
  }
380
393
 
381
- int git_tree__parse_raw(void *_tree, const char *data, size_t size)
394
+ int git_tree__parse_raw(void *_tree, const char *data, size_t size, git_oid_t oid_type)
382
395
  {
383
396
  git_tree *tree = _tree;
384
397
  const char *buffer;
385
398
  const char *buffer_end;
399
+ const long oid_size = (long)git_oid_size(oid_type);
386
400
 
387
401
  buffer = data;
388
402
  buffer_end = buffer + size;
@@ -398,51 +412,48 @@ int git_tree__parse_raw(void *_tree, const char *data, size_t size)
398
412
  uint16_t attr;
399
413
 
400
414
  if (parse_mode(&attr, buffer, buffer_end - buffer, &buffer) < 0 || !buffer)
401
- return tree_error("failed to parse tree: can't parse filemode", NULL);
415
+ return tree_parse_error("failed to parse tree: can't parse filemode", NULL);
402
416
 
403
417
  if (buffer >= buffer_end || (*buffer++) != ' ')
404
- return tree_error("failed to parse tree: missing space after filemode", NULL);
418
+ return tree_parse_error("failed to parse tree: missing space after filemode", NULL);
405
419
 
406
420
  if ((nul = memchr(buffer, 0, buffer_end - buffer)) == NULL)
407
- return tree_error("failed to parse tree: object is corrupted", NULL);
421
+ return tree_parse_error("failed to parse tree: object is corrupted", NULL);
408
422
 
409
423
  if ((filename_len = nul - buffer) == 0 || filename_len > UINT16_MAX)
410
- return tree_error("failed to parse tree: can't parse filename", NULL);
424
+ return tree_parse_error("failed to parse tree: can't parse filename", NULL);
411
425
 
412
- if ((buffer_end - (nul + 1)) < GIT_OID_RAWSZ)
413
- return tree_error("failed to parse tree: can't parse OID", NULL);
426
+ if ((buffer_end - (nul + 1)) < (long)oid_size)
427
+ return tree_parse_error("failed to parse tree: can't parse OID", NULL);
414
428
 
415
429
  /* Allocate the entry */
416
- {
417
- entry = git_array_alloc(tree->entries);
418
- GIT_ERROR_CHECK_ALLOC(entry);
419
-
420
- entry->attr = attr;
421
- entry->filename_len = (uint16_t)filename_len;
422
- entry->filename = buffer;
423
- entry->oid = (git_oid *) ((char *) buffer + filename_len + 1);
424
- }
430
+ entry = git_array_alloc(tree->entries);
431
+ GIT_ERROR_CHECK_ALLOC(entry);
425
432
 
433
+ entry->attr = attr;
434
+ entry->filename_len = (uint16_t)filename_len;
435
+ entry->filename = buffer;
426
436
  buffer += filename_len + 1;
427
- buffer += GIT_OID_RAWSZ;
437
+
438
+ git_oid__fromraw(&entry->oid, (unsigned char *)buffer, oid_type);
439
+ buffer += oid_size;
428
440
  }
429
441
 
430
442
  return 0;
431
443
  }
432
444
 
433
- int git_tree__parse(void *_tree, git_odb_object *odb_obj)
445
+ int git_tree__parse(void *_tree, git_odb_object *odb_obj, git_oid_t oid_type)
434
446
  {
435
447
  git_tree *tree = _tree;
448
+ const char *data = git_odb_object_data(odb_obj);
449
+ size_t size = git_odb_object_size(odb_obj);
450
+ int error;
436
451
 
437
- if ((git_tree__parse_raw(tree,
438
- git_odb_object_data(odb_obj),
439
- git_odb_object_size(odb_obj))) < 0)
440
- return -1;
441
-
442
- if (git_odb_object_dup(&tree->odb_obj, odb_obj) < 0)
443
- return -1;
452
+ if ((error = git_tree__parse_raw(tree, data, size, oid_type)) < 0 ||
453
+ (error = git_odb_object_dup(&tree->odb_obj, odb_obj)) < 0)
454
+ return error;
444
455
 
445
- return 0;
456
+ return error;
446
457
  }
447
458
 
448
459
  static size_t find_next_dir(const char *dirname, git_index *index, size_t start)
@@ -495,39 +506,42 @@ static int check_entry(git_repository *repo, const char *filename, const git_oid
495
506
  static int git_treebuilder__write_with_buffer(
496
507
  git_oid *oid,
497
508
  git_treebuilder *bld,
498
- git_buf *buf)
509
+ git_str *buf)
499
510
  {
500
511
  int error = 0;
501
512
  size_t i, entrycount;
502
513
  git_odb *odb;
503
514
  git_tree_entry *entry;
504
515
  git_vector entries = GIT_VECTOR_INIT;
516
+ size_t oid_size = git_oid_size(bld->repo->oid_type);
517
+ git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
505
518
 
506
- git_buf_clear(buf);
519
+ git_str_clear(buf);
520
+
521
+ entrycount = git_treebuilder_entrymap_size(&bld->map);
507
522
 
508
- entrycount = git_strmap_size(bld->map);
509
523
  if ((error = git_vector_init(&entries, entrycount, entry_sort_cmp)) < 0)
510
524
  goto out;
511
525
 
512
526
  if (buf->asize == 0 &&
513
- (error = git_buf_grow(buf, entrycount * 72)) < 0)
527
+ (error = git_str_grow(buf, entrycount * 72)) < 0)
514
528
  goto out;
515
529
 
516
- git_strmap_foreach_value(bld->map, entry, {
530
+ while (git_treebuilder_entrymap_iterate(&iter, NULL, &entry, &bld->map) == 0) {
517
531
  if ((error = git_vector_insert(&entries, entry)) < 0)
518
532
  goto out;
519
- });
533
+ }
520
534
 
521
535
  git_vector_sort(&entries);
522
536
 
523
537
  for (i = 0; i < entries.length && !error; ++i) {
524
538
  entry = git_vector_get(&entries, i);
525
539
 
526
- git_buf_printf(buf, "%o ", entry->attr);
527
- git_buf_put(buf, entry->filename, entry->filename_len + 1);
528
- git_buf_put(buf, (char *)entry->oid->id, GIT_OID_RAWSZ);
540
+ git_str_printf(buf, "%o ", entry->attr);
541
+ git_str_put(buf, entry->filename, entry->filename_len + 1);
542
+ git_str_put(buf, (char *)entry->oid.id, oid_size);
529
543
 
530
- if (git_buf_oom(buf)) {
544
+ if (git_str_oom(buf)) {
531
545
  error = -1;
532
546
  goto out;
533
547
  }
@@ -537,7 +551,7 @@ static int git_treebuilder__write_with_buffer(
537
551
  error = git_odb_write(oid, odb, buf->ptr, buf->size, GIT_OBJECT_TREE);
538
552
 
539
553
  out:
540
- git_vector_free(&entries);
554
+ git_vector_dispose(&entries);
541
555
 
542
556
  return error;
543
557
  }
@@ -560,7 +574,7 @@ static int append_entry(
560
574
 
561
575
  entry->attr = (uint16_t)filemode;
562
576
 
563
- if ((error = git_strmap_set(bld->map, entry->filename, entry)) < 0) {
577
+ if ((error = git_treebuilder_entrymap_put(&bld->map, entry->filename, entry)) < 0) {
564
578
  git_tree_entry_free(entry);
565
579
  git_error_set(GIT_ERROR_TREE, "failed to append entry %s to the tree builder", filename);
566
580
  return -1;
@@ -575,7 +589,7 @@ static int write_tree(
575
589
  git_index *index,
576
590
  const char *dirname,
577
591
  size_t start,
578
- git_buf *shared_buf)
592
+ git_str *shared_buf)
579
593
  {
580
594
  git_treebuilder *bld = NULL;
581
595
  size_t i, entries = git_index_entrycount(index);
@@ -594,7 +608,7 @@ static int write_tree(
594
608
 
595
609
  /*
596
610
  * This loop is unfortunate, but necessary. The index doesn't have
597
- * any directores, so we need to handle that manually, and we
611
+ * any directories, so we need to handle that manually, and we
598
612
  * need to keep track of the current position.
599
613
  */
600
614
  for (i = start; i < entries; ++i) {
@@ -676,7 +690,7 @@ int git_tree__write_index(
676
690
  {
677
691
  int ret;
678
692
  git_tree *tree;
679
- git_buf shared_buf = GIT_BUF_INIT;
693
+ git_str shared_buf = GIT_STR_INIT;
680
694
  bool old_ignore_case = false;
681
695
 
682
696
  GIT_ASSERT_ARG(oid);
@@ -705,7 +719,7 @@ int git_tree__write_index(
705
719
  }
706
720
 
707
721
  ret = write_tree(oid, repo, index, "", 0, &shared_buf);
708
- git_buf_dispose(&shared_buf);
722
+ git_str_dispose(&shared_buf);
709
723
 
710
724
  if (old_ignore_case)
711
725
  git_index__set_ignore_case(index, true);
@@ -721,7 +735,7 @@ int git_tree__write_index(
721
735
  return ret;
722
736
 
723
737
  /* Read the tree cache into the index */
724
- ret = git_tree_cache_read_tree(&index->tree, tree, &index->tree_pool);
738
+ ret = git_tree_cache_read_tree(&index->tree, tree, index->oid_type, &index->tree_pool);
725
739
  git_tree_free(tree);
726
740
 
727
741
  return ret;
@@ -743,18 +757,13 @@ int git_treebuilder_new(
743
757
 
744
758
  bld->repo = repo;
745
759
 
746
- if (git_strmap_new(&bld->map) < 0) {
747
- git__free(bld);
748
- return -1;
749
- }
750
-
751
760
  if (source != NULL) {
752
761
  git_tree_entry *entry_src;
753
762
 
754
763
  git_array_foreach(source->entries, i, entry_src) {
755
764
  if (append_entry(
756
765
  bld, entry_src->filename,
757
- entry_src->oid,
766
+ &entry_src->oid,
758
767
  entry_src->attr,
759
768
  false) < 0)
760
769
  goto on_error;
@@ -786,13 +795,13 @@ int git_treebuilder_insert(
786
795
  if ((error = check_entry(bld->repo, filename, id, filemode)) < 0)
787
796
  return error;
788
797
 
789
- if ((entry = git_strmap_get(bld->map, filename)) != NULL) {
790
- git_oid_cpy((git_oid *) entry->oid, id);
798
+ if (git_treebuilder_entrymap_get(&entry, &bld->map, filename) == 0) {
799
+ git_oid_cpy(&entry->oid, id);
791
800
  } else {
792
801
  entry = alloc_entry(filename, strlen(filename), id);
793
802
  GIT_ERROR_CHECK_ALLOC(entry);
794
803
 
795
- if ((error = git_strmap_set(bld->map, entry->filename, entry)) < 0) {
804
+ if (git_treebuilder_entrymap_put(&bld->map, entry->filename, entry) < 0) {
796
805
  git_tree_entry_free(entry);
797
806
  git_error_set(GIT_ERROR_TREE, "failed to insert %s", filename);
798
807
  return -1;
@@ -809,10 +818,15 @@ int git_treebuilder_insert(
809
818
 
810
819
  static git_tree_entry *treebuilder_get(git_treebuilder *bld, const char *filename)
811
820
  {
821
+ git_tree_entry *entry;
822
+
812
823
  GIT_ASSERT_ARG_WITH_RETVAL(bld, NULL);
813
824
  GIT_ASSERT_ARG_WITH_RETVAL(filename, NULL);
814
825
 
815
- return git_strmap_get(bld->map, filename);
826
+ if (git_treebuilder_entrymap_get(&entry, &bld->map, filename) != 0)
827
+ return NULL;
828
+
829
+ return entry;
816
830
  }
817
831
 
818
832
  const git_tree_entry *git_treebuilder_get(git_treebuilder *bld, const char *filename)
@@ -827,7 +841,7 @@ int git_treebuilder_remove(git_treebuilder *bld, const char *filename)
827
841
  if (entry == NULL)
828
842
  return tree_error("failed to remove entry: file isn't in the tree", filename);
829
843
 
830
- git_strmap_delete(bld->map, filename);
844
+ git_treebuilder_entrymap_remove(&bld->map, filename);
831
845
  git_tree_entry_free(entry);
832
846
 
833
847
  return 0;
@@ -848,16 +862,17 @@ int git_treebuilder_filter(
848
862
  {
849
863
  const char *filename;
850
864
  git_tree_entry *entry;
865
+ git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
851
866
 
852
867
  GIT_ASSERT_ARG(bld);
853
868
  GIT_ASSERT_ARG(filter);
854
869
 
855
- git_strmap_foreach(bld->map, filename, entry, {
856
- if (filter(entry, payload)) {
857
- git_strmap_delete(bld->map, filename);
858
- git_tree_entry_free(entry);
859
- }
860
- });
870
+ while (git_treebuilder_entrymap_iterate(&iter, &filename, &entry, &bld->map) == 0) {
871
+ if (filter(entry, payload)) {
872
+ git_treebuilder_entrymap_remove(&bld->map, filename);
873
+ git_tree_entry_free(entry);
874
+ }
875
+ }
861
876
 
862
877
  return 0;
863
878
  }
@@ -865,11 +880,14 @@ int git_treebuilder_filter(
865
880
  int git_treebuilder_clear(git_treebuilder *bld)
866
881
  {
867
882
  git_tree_entry *e;
883
+ git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
868
884
 
869
885
  GIT_ASSERT_ARG(bld);
870
886
 
871
- git_strmap_foreach_value(bld->map, e, git_tree_entry_free(e));
872
- git_strmap_clear(bld->map);
887
+ while (git_treebuilder_entrymap_iterate(&iter, NULL, &e, &bld->map) == 0)
888
+ git_tree_entry_free(e);
889
+
890
+ git_treebuilder_entrymap_clear(&bld->map);
873
891
 
874
892
  return 0;
875
893
  }
@@ -879,9 +897,9 @@ void git_treebuilder_free(git_treebuilder *bld)
879
897
  if (bld == NULL)
880
898
  return;
881
899
 
882
- git_buf_dispose(&bld->write_cache);
900
+ git_str_dispose(&bld->write_cache);
883
901
  git_treebuilder_clear(bld);
884
- git_strmap_free(bld->map);
902
+ git_treebuilder_entrymap_dispose(&bld->map);
885
903
  git__free(bld);
886
904
  }
887
905
 
@@ -943,7 +961,7 @@ int git_tree_entry_bypath(
943
961
  return git_tree_entry_dup(entry_out, entry);
944
962
  }
945
963
 
946
- if (git_tree_lookup(&subtree, root->object.repo, entry->oid) < 0)
964
+ if (git_tree_lookup(&subtree, root->object.repo, &entry->oid) < 0)
947
965
  return -1;
948
966
 
949
967
  error = git_tree_entry_bypath(
@@ -959,7 +977,7 @@ int git_tree_entry_bypath(
959
977
  static int tree_walk(
960
978
  const git_tree *tree,
961
979
  git_treewalk_cb callback,
962
- git_buf *path,
980
+ git_str *path,
963
981
  void *payload,
964
982
  bool preorder)
965
983
  {
@@ -982,17 +1000,17 @@ static int tree_walk(
982
1000
 
983
1001
  if (git_tree_entry__is_tree(entry)) {
984
1002
  git_tree *subtree;
985
- size_t path_len = git_buf_len(path);
1003
+ size_t path_len = git_str_len(path);
986
1004
 
987
- error = git_tree_lookup(&subtree, tree->object.repo, entry->oid);
1005
+ error = git_tree_lookup(&subtree, tree->object.repo, &entry->oid);
988
1006
  if (error < 0)
989
1007
  break;
990
1008
 
991
1009
  /* append the next entry to the path */
992
- git_buf_puts(path, entry->filename);
993
- git_buf_putc(path, '/');
1010
+ git_str_puts(path, entry->filename);
1011
+ git_str_putc(path, '/');
994
1012
 
995
- if (git_buf_oom(path))
1013
+ if (git_str_oom(path))
996
1014
  error = -1;
997
1015
  else
998
1016
  error = tree_walk(subtree, callback, path, payload, preorder);
@@ -1001,7 +1019,7 @@ static int tree_walk(
1001
1019
  if (error != 0)
1002
1020
  break;
1003
1021
 
1004
- git_buf_truncate(path, path_len);
1022
+ git_str_truncate(path, path_len);
1005
1023
  }
1006
1024
 
1007
1025
  if (!preorder) {
@@ -1024,7 +1042,7 @@ int git_tree_walk(
1024
1042
  void *payload)
1025
1043
  {
1026
1044
  int error = 0;
1027
- git_buf root_path = GIT_BUF_INIT;
1045
+ git_str root_path = GIT_STR_INIT;
1028
1046
 
1029
1047
  if (mode != GIT_TREEWALK_POST && mode != GIT_TREEWALK_PRE) {
1030
1048
  git_error_set(GIT_ERROR_INVALID, "invalid walking mode for tree walk");
@@ -1034,7 +1052,7 @@ int git_tree_walk(
1034
1052
  error = tree_walk(
1035
1053
  tree, callback, &root_path, payload, (mode == GIT_TREEWALK_PRE));
1036
1054
 
1037
- git_buf_dispose(&root_path);
1055
+ git_str_dispose(&root_path);
1038
1056
 
1039
1057
  return error;
1040
1058
  }
@@ -1080,19 +1098,19 @@ GIT_INLINE(size_t) count_slashes(const char *path)
1080
1098
  return count;
1081
1099
  }
1082
1100
 
1083
- static bool next_component(git_buf *out, const char *in)
1101
+ static bool next_component(git_str *out, const char *in)
1084
1102
  {
1085
1103
  const char *slash = strchr(in, '/');
1086
1104
 
1087
- git_buf_clear(out);
1105
+ git_str_clear(out);
1088
1106
 
1089
1107
  if (slash)
1090
- git_buf_put(out, in, slash - in);
1108
+ git_str_put(out, in, slash - in);
1091
1109
 
1092
1110
  return !!slash;
1093
1111
  }
1094
1112
 
1095
- static int create_popped_tree(tree_stack_entry *current, tree_stack_entry *popped, git_buf *component)
1113
+ static int create_popped_tree(tree_stack_entry *current, tree_stack_entry *popped, git_str *component)
1096
1114
  {
1097
1115
  int error;
1098
1116
  git_oid new_tree;
@@ -1116,8 +1134,8 @@ static int create_popped_tree(tree_stack_entry *current, tree_stack_entry *poppe
1116
1134
  }
1117
1135
 
1118
1136
  /* We've written out the tree, now we have to put the new value into its parent */
1119
- git_buf_clear(component);
1120
- git_buf_puts(component, popped->name);
1137
+ git_str_clear(component);
1138
+ git_str_puts(component, popped->name);
1121
1139
  git__free(popped->name);
1122
1140
 
1123
1141
  GIT_ERROR_CHECK_ALLOC(component->ptr);
@@ -1142,7 +1160,7 @@ int git_tree_create_updated(git_oid *out, git_repository *repo, git_tree *baseli
1142
1160
  git_vector entries;
1143
1161
  int error;
1144
1162
  size_t i;
1145
- git_buf component = GIT_BUF_INIT;
1163
+ git_str component = GIT_STR_INIT;
1146
1164
 
1147
1165
  if ((error = git_vector_init(&entries, nupdates, compare_entries)) < 0)
1148
1166
  return error;
@@ -1171,7 +1189,7 @@ int git_tree_create_updated(git_oid *out, git_repository *repo, git_tree *baseli
1171
1189
 
1172
1190
  /* Figure out how much we need to change from the previous tree */
1173
1191
  if (last_update)
1174
- common_prefix = git_path_common_dirlen(last_update->path, update->path);
1192
+ common_prefix = git_fs_path_common_dirlen(last_update->path, update->path);
1175
1193
 
1176
1194
  /*
1177
1195
  * The entries are sorted, so when we find we're no
@@ -1233,7 +1251,7 @@ int git_tree_create_updated(git_oid *out, git_repository *repo, git_tree *baseli
1233
1251
  {
1234
1252
  /* Make sure we're replacing something of the same type */
1235
1253
  tree_stack_entry *last = git_array_last(stack);
1236
- char *basename = git_path_basename(update->path);
1254
+ char *basename = git_fs_path_basename(update->path);
1237
1255
  const git_tree_entry *e = git_treebuilder_get(last->bld, basename);
1238
1256
  if (e && git_tree_entry_type(e) != git_object__type_from_filemode(update->filemode)) {
1239
1257
  git__free(basename);
@@ -1252,7 +1270,7 @@ int git_tree_create_updated(git_oid *out, git_repository *repo, git_tree *baseli
1252
1270
  case GIT_TREE_UPDATE_REMOVE:
1253
1271
  {
1254
1272
  tree_stack_entry *last = git_array_last(stack);
1255
- char *basename = git_path_basename(update->path);
1273
+ char *basename = git_fs_path_basename(update->path);
1256
1274
  error = git_treebuilder_remove(last->bld, basename);
1257
1275
  git__free(basename);
1258
1276
  break;
@@ -1300,9 +1318,9 @@ cleanup:
1300
1318
  }
1301
1319
  }
1302
1320
 
1303
- git_buf_dispose(&component);
1321
+ git_str_dispose(&component);
1304
1322
  git_array_clear(stack);
1305
- git_vector_free(&entries);
1323
+ git_vector_dispose(&entries);
1306
1324
  return error;
1307
1325
  }
1308
1326
 
@@ -13,13 +13,12 @@
13
13
  #include "repository.h"
14
14
  #include "odb.h"
15
15
  #include "vector.h"
16
- #include "strmap.h"
17
16
  #include "pool.h"
18
17
 
19
18
  struct git_tree_entry {
20
19
  uint16_t attr;
21
20
  uint16_t filename_len;
22
- const git_oid *oid;
21
+ git_oid oid;
23
22
  const char *filename;
24
23
  };
25
24
 
@@ -29,10 +28,12 @@ struct git_tree {
29
28
  git_array_t(git_tree_entry) entries;
30
29
  };
31
30
 
31
+ GIT_HASHMAP_STR_STRUCT(git_treebuilder_entrymap, git_tree_entry *);
32
+
32
33
  struct git_treebuilder {
33
34
  git_repository *repo;
34
- git_strmap *map;
35
- git_buf write_cache;
35
+ git_treebuilder_entrymap map;
36
+ git_str write_cache;
36
37
  };
37
38
 
38
39
  GIT_INLINE(bool) git_tree_entry__is_tree(const struct git_tree_entry *e)
@@ -41,8 +42,8 @@ GIT_INLINE(bool) git_tree_entry__is_tree(const struct git_tree_entry *e)
41
42
  }
42
43
 
43
44
  void git_tree__free(void *tree);
44
- int git_tree__parse(void *tree, git_odb_object *obj);
45
- int git_tree__parse_raw(void *_tree, const char *data, size_t size);
45
+ int git_tree__parse(void *tree, git_odb_object *obj, git_oid_t oid_type);
46
+ int git_tree__parse_raw(void *_tree, const char *data, size_t size, git_oid_t oid_type);
46
47
 
47
48
  /**
48
49
  * Write a tree to the given repository