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
@@ -8,14 +8,15 @@
8
8
  #include "midx.h"
9
9
 
10
10
  #include "array.h"
11
- #include "buffer.h"
11
+ #include "buf.h"
12
12
  #include "filebuf.h"
13
13
  #include "futils.h"
14
14
  #include "hash.h"
15
15
  #include "odb.h"
16
16
  #include "pack.h"
17
- #include "path.h"
17
+ #include "fs_path.h"
18
18
  #include "repository.h"
19
+ #include "str.h"
19
20
 
20
21
  #define MIDX_SIGNATURE 0x4d494458 /* "MIDX" */
21
22
  #define MIDX_VERSION 1
@@ -113,23 +114,16 @@ static int midx_parse_oid_lookup(
113
114
  const unsigned char *data,
114
115
  struct git_midx_chunk *chunk_oid_lookup)
115
116
  {
116
- uint32_t i;
117
- git_oid *oid, *prev_oid, zero_oid = {{0}};
117
+ size_t oid_size = git_oid_size(idx->oid_type);
118
118
 
119
119
  if (chunk_oid_lookup->offset == 0)
120
120
  return midx_error("missing OID Lookup chunk");
121
121
  if (chunk_oid_lookup->length == 0)
122
122
  return midx_error("empty OID Lookup chunk");
123
- if (chunk_oid_lookup->length != idx->num_objects * GIT_OID_RAWSZ)
123
+ if (chunk_oid_lookup->length != idx->num_objects * oid_size)
124
124
  return midx_error("OID Lookup chunk has wrong length");
125
125
 
126
- idx->oid_lookup = oid = (git_oid *)(data + chunk_oid_lookup->offset);
127
- prev_oid = &zero_oid;
128
- for (i = 0; i < idx->num_objects; ++i, ++oid) {
129
- if (git_oid_cmp(prev_oid, oid) >= 0)
130
- return midx_error("OID Lookup index is non-monotonic");
131
- prev_oid = oid;
132
- }
126
+ idx->oid_lookup = (unsigned char *)(data + chunk_oid_lookup->offset);
133
127
 
134
128
  return 0;
135
129
  }
@@ -177,17 +171,20 @@ int git_midx_parse(
177
171
  struct git_midx_chunk *last_chunk;
178
172
  uint32_t i;
179
173
  off64_t last_chunk_offset, chunk_offset, trailer_offset;
180
- git_oid idx_checksum = {{0}};
174
+ size_t checksum_size, oid_size;
181
175
  int error;
182
176
  struct git_midx_chunk chunk_packfile_names = {0},
183
177
  chunk_oid_fanout = {0},
184
178
  chunk_oid_lookup = {0},
185
179
  chunk_object_offsets = {0},
186
- chunk_object_large_offsets = {0};
180
+ chunk_object_large_offsets = {0},
181
+ chunk_unknown = {0};
187
182
 
188
183
  GIT_ASSERT_ARG(idx);
189
184
 
190
- if (size < sizeof(struct git_midx_header) + GIT_OID_RAWSZ)
185
+ oid_size = git_oid_size(idx->oid_type);
186
+
187
+ if (size < sizeof(struct git_midx_header) + oid_size)
191
188
  return midx_error("multi-pack index is too short");
192
189
 
193
190
  hdr = ((struct git_midx_header *)data);
@@ -207,21 +204,24 @@ int git_midx_parse(
207
204
  last_chunk_offset =
208
205
  sizeof(struct git_midx_header) +
209
206
  (1 + hdr->chunks) * 12;
210
- trailer_offset = size - GIT_OID_RAWSZ;
207
+
208
+ checksum_size = oid_size;
209
+ trailer_offset = size - checksum_size;
210
+
211
211
  if (trailer_offset < last_chunk_offset)
212
212
  return midx_error("wrong index size");
213
- git_oid_cpy(&idx->checksum, (git_oid *)(data + trailer_offset));
214
-
215
- if (git_hash_buf(&idx_checksum, data, (size_t)trailer_offset) < 0)
216
- return midx_error("could not calculate signature");
217
- if (!git_oid_equal(&idx_checksum, &idx->checksum))
218
- return midx_error("index signature mismatch");
213
+ memcpy(idx->checksum, data + trailer_offset, checksum_size);
219
214
 
220
215
  chunk_hdr = data + sizeof(struct git_midx_header);
221
216
  last_chunk = NULL;
222
217
  for (i = 0; i < hdr->chunks; ++i, chunk_hdr += 12) {
223
- chunk_offset = ((off64_t)ntohl(*((uint32_t *)(chunk_hdr + 4)))) << 32 |
224
- ((off64_t)ntohl(*((uint32_t *)(chunk_hdr + 8))));
218
+ uint32_t chunk_id = ntohl(*((uint32_t *)(chunk_hdr + 0)));
219
+ uint64_t high_offset = ((uint64_t)ntohl(*((uint32_t *)(chunk_hdr + 4)))) & 0xffffffffu;
220
+ uint64_t low_offset = ((uint64_t)ntohl(*((uint32_t *)(chunk_hdr + 8)))) & 0xffffffffu;
221
+
222
+ if (high_offset >= INT32_MAX)
223
+ return midx_error("chunk offset out of range");
224
+ chunk_offset = (off64_t)(high_offset << 32 | low_offset);
225
225
  if (chunk_offset < last_chunk_offset)
226
226
  return midx_error("chunks are non-monotonic");
227
227
  if (chunk_offset >= trailer_offset)
@@ -230,7 +230,7 @@ int git_midx_parse(
230
230
  last_chunk->length = (size_t)(chunk_offset - last_chunk_offset);
231
231
  last_chunk_offset = chunk_offset;
232
232
 
233
- switch (ntohl(*((uint32_t *)(chunk_hdr + 0)))) {
233
+ switch (chunk_id) {
234
234
  case MIDX_PACKFILE_NAMES_ID:
235
235
  chunk_packfile_names.offset = last_chunk_offset;
236
236
  last_chunk = &chunk_packfile_names;
@@ -257,7 +257,9 @@ int git_midx_parse(
257
257
  break;
258
258
 
259
259
  default:
260
- return midx_error("unrecognized chunk ID");
260
+ chunk_unknown.offset = last_chunk_offset;
261
+ last_chunk = &chunk_unknown;
262
+ break;
261
263
  }
262
264
  }
263
265
  last_chunk->length = (size_t)(trailer_offset - last_chunk_offset);
@@ -283,8 +285,9 @@ int git_midx_parse(
283
285
  }
284
286
 
285
287
  int git_midx_open(
286
- git_midx_file **idx_out,
287
- const char *path)
288
+ git_midx_file **idx_out,
289
+ const char *path,
290
+ git_oid_t oid_type)
288
291
  {
289
292
  git_midx_file *idx;
290
293
  git_file fd = -1;
@@ -292,6 +295,8 @@ int git_midx_open(
292
295
  struct stat st;
293
296
  int error;
294
297
 
298
+ GIT_ASSERT_ARG(idx_out && path && oid_type);
299
+
295
300
  /* TODO: properly open the file without access time using O_NOATIME */
296
301
  fd = git_futils_open_ro(path);
297
302
  if (fd < 0)
@@ -313,7 +318,9 @@ int git_midx_open(
313
318
  idx = git__calloc(1, sizeof(git_midx_file));
314
319
  GIT_ERROR_CHECK_ALLOC(idx);
315
320
 
316
- error = git_buf_sets(&idx->filename, path);
321
+ idx->oid_type = oid_type;
322
+
323
+ error = git_str_sets(&idx->filename, path);
317
324
  if (error < 0)
318
325
  return error;
319
326
 
@@ -340,7 +347,8 @@ bool git_midx_needs_refresh(
340
347
  git_file fd = -1;
341
348
  struct stat st;
342
349
  ssize_t bytes_read;
343
- git_oid idx_checksum = {{0}};
350
+ unsigned char checksum[GIT_HASH_MAX_SIZE];
351
+ size_t checksum_size;
344
352
 
345
353
  /* TODO: properly open the file without access time using O_NOATIME */
346
354
  fd = git_futils_open_ro(path);
@@ -359,13 +367,14 @@ bool git_midx_needs_refresh(
359
367
  return true;
360
368
  }
361
369
 
362
- bytes_read = p_pread(fd, &idx_checksum, GIT_OID_RAWSZ, st.st_size - GIT_OID_RAWSZ);
370
+ checksum_size = git_oid_size(idx->oid_type);
371
+ bytes_read = p_pread(fd, checksum, checksum_size, st.st_size - checksum_size);
363
372
  p_close(fd);
364
373
 
365
- if (bytes_read != GIT_OID_RAWSZ)
374
+ if (bytes_read != (ssize_t)checksum_size)
366
375
  return true;
367
376
 
368
- return !git_oid_equal(&idx_checksum, &idx->checksum);
377
+ return (memcmp(checksum, idx->checksum, checksum_size) != 0);
369
378
  }
370
379
 
371
380
  int git_midx_entry_find(
@@ -375,42 +384,44 @@ int git_midx_entry_find(
375
384
  size_t len)
376
385
  {
377
386
  int pos, found = 0;
378
- size_t pack_index;
387
+ size_t pack_index, oid_size, oid_hexsize;
379
388
  uint32_t hi, lo;
380
- const git_oid *current = NULL;
389
+ unsigned char *current = NULL;
381
390
  const unsigned char *object_offset;
382
391
  off64_t offset;
383
392
 
384
393
  GIT_ASSERT_ARG(idx);
385
394
 
395
+ oid_size = git_oid_size(idx->oid_type);
396
+ oid_hexsize = git_oid_hexsize(idx->oid_type);
397
+
386
398
  hi = ntohl(idx->oid_fanout[(int)short_oid->id[0]]);
387
399
  lo = ((short_oid->id[0] == 0x0) ? 0 : ntohl(idx->oid_fanout[(int)short_oid->id[0] - 1]));
388
400
 
389
- pos = git_pack__lookup_sha1(idx->oid_lookup, GIT_OID_RAWSZ, lo, hi, short_oid->id);
401
+ pos = git_pack__lookup_id(idx->oid_lookup, oid_size, lo, hi, short_oid->id, idx->oid_type);
390
402
 
391
403
  if (pos >= 0) {
392
404
  /* An object matching exactly the oid was found */
393
405
  found = 1;
394
- current = idx->oid_lookup + pos;
406
+ current = idx->oid_lookup + (pos * oid_size);
395
407
  } else {
396
408
  /* No object was found */
397
409
  /* pos refers to the object with the "closest" oid to short_oid */
398
410
  pos = -1 - pos;
399
411
  if (pos < (int)idx->num_objects) {
400
- current = idx->oid_lookup + pos;
412
+ current = idx->oid_lookup + (pos * oid_size);
401
413
 
402
- if (!git_oid_ncmp(short_oid, current, len))
414
+ if (!git_oid_raw_ncmp(short_oid->id, current, len))
403
415
  found = 1;
404
416
  }
405
417
  }
406
418
 
407
- if (found && len != GIT_OID_HEXSZ && pos + 1 < (int)idx->num_objects) {
419
+ if (found && len != oid_hexsize && pos + 1 < (int)idx->num_objects) {
408
420
  /* Check for ambiguousity */
409
- const git_oid *next = current + 1;
421
+ const unsigned char *next = current + oid_size;
410
422
 
411
- if (!git_oid_ncmp(short_oid, next, len)) {
423
+ if (!git_oid_raw_ncmp(short_oid->id, next, len))
412
424
  found = 2;
413
- }
414
425
  }
415
426
 
416
427
  if (!found)
@@ -420,8 +431,8 @@ int git_midx_entry_find(
420
431
 
421
432
  object_offset = idx->object_offsets + pos * 8;
422
433
  offset = ntohl(*((uint32_t *)(object_offset + 4)));
423
- if (offset & 0x80000000) {
424
- uint32_t object_large_offsets_pos = offset & 0x7fffffff;
434
+ if (idx->object_large_offsets && offset & 0x80000000) {
435
+ uint32_t object_large_offsets_pos = (uint32_t) (offset ^ 0x80000000);
425
436
  const unsigned char *object_large_offsets_index = idx->object_large_offsets;
426
437
 
427
438
  /* Make sure we're not being sent out of bounds */
@@ -438,7 +449,7 @@ int git_midx_entry_find(
438
449
  return midx_error("invalid index into the packfile names table");
439
450
  e->pack_index = pack_index;
440
451
  e->offset = offset;
441
- git_oid_cpy(&e->sha1, current);
452
+ git_oid__fromraw(&e->sha1, current, idx->oid_type);
442
453
  return 0;
443
454
  }
444
455
 
@@ -447,13 +458,19 @@ int git_midx_foreach_entry(
447
458
  git_odb_foreach_cb cb,
448
459
  void *data)
449
460
  {
450
- size_t i;
461
+ git_oid oid;
462
+ size_t oid_size, i;
451
463
  int error;
452
464
 
453
465
  GIT_ASSERT_ARG(idx);
454
466
 
467
+ oid_size = git_oid_size(idx->oid_type);
468
+
455
469
  for (i = 0; i < idx->num_objects; ++i) {
456
- if ((error = cb(&idx->oid_lookup[i], data)) != 0)
470
+ if ((error = git_oid__fromraw(&oid, &idx->oid_lookup[i * oid_size], idx->oid_type)) < 0)
471
+ return error;
472
+
473
+ if ((error = cb(&oid, data)) != 0)
457
474
  return git_error_set_after_callback(error);
458
475
  }
459
476
 
@@ -467,7 +484,7 @@ int git_midx_close(git_midx_file *idx)
467
484
  if (idx->index_map.data)
468
485
  git_futils_mmap_free(&idx->index_map);
469
486
 
470
- git_vector_free(&idx->packfile_names);
487
+ git_vector_dispose(&idx->packfile_names);
471
488
 
472
489
  return 0;
473
490
  }
@@ -477,7 +494,7 @@ void git_midx_free(git_midx_file *idx)
477
494
  if (!idx)
478
495
  return;
479
496
 
480
- git_buf_dispose(&idx->filename);
497
+ git_str_dispose(&idx->filename);
481
498
  git_midx_close(idx);
482
499
  git__free(idx);
483
500
  }
@@ -491,24 +508,46 @@ static int packfile__cmp(const void *a_, const void *b_)
491
508
  }
492
509
 
493
510
  int git_midx_writer_new(
494
- git_midx_writer **out,
495
- const char *pack_dir)
511
+ git_midx_writer **out,
512
+ const char *pack_dir
513
+ #ifdef GIT_EXPERIMENTAL_SHA256
514
+ , git_midx_writer_options *opts
515
+ #endif
516
+ )
496
517
  {
497
- git_midx_writer *w = git__calloc(1, sizeof(git_midx_writer));
518
+ git_midx_writer *w;
519
+ git_oid_t oid_type;
520
+
521
+ GIT_ASSERT_ARG(out && pack_dir);
522
+
523
+ #ifdef GIT_EXPERIMENTAL_SHA256
524
+ GIT_ERROR_CHECK_VERSION(opts,
525
+ GIT_MIDX_WRITER_OPTIONS_VERSION,
526
+ "git_midx_writer_options");
527
+
528
+ oid_type = opts && opts->oid_type ? opts->oid_type : GIT_OID_DEFAULT;
529
+ GIT_ASSERT_ARG(git_oid_type_is_valid(oid_type));
530
+ #else
531
+ oid_type = GIT_OID_SHA1;
532
+ #endif
533
+
534
+ w = git__calloc(1, sizeof(git_midx_writer));
498
535
  GIT_ERROR_CHECK_ALLOC(w);
499
536
 
500
- if (git_buf_sets(&w->pack_dir, pack_dir) < 0) {
537
+ if (git_str_sets(&w->pack_dir, pack_dir) < 0) {
501
538
  git__free(w);
502
539
  return -1;
503
540
  }
504
- git_path_squash_slashes(&w->pack_dir);
541
+ git_fs_path_squash_slashes(&w->pack_dir);
505
542
 
506
543
  if (git_vector_init(&w->packs, 0, packfile__cmp) < 0) {
507
- git_buf_dispose(&w->pack_dir);
544
+ git_str_dispose(&w->pack_dir);
508
545
  git__free(w);
509
546
  return -1;
510
547
  }
511
548
 
549
+ w->oid_type = oid_type;
550
+
512
551
  *out = w;
513
552
  return 0;
514
553
  }
@@ -523,8 +562,8 @@ void git_midx_writer_free(git_midx_writer *w)
523
562
 
524
563
  git_vector_foreach (&w->packs, i, p)
525
564
  git_mwindow_put_pack(p);
526
- git_vector_free(&w->packs);
527
- git_buf_dispose(&w->pack_dir);
565
+ git_vector_dispose(&w->packs);
566
+ git_str_dispose(&w->pack_dir);
528
567
  git__free(w);
529
568
  }
530
569
 
@@ -532,16 +571,17 @@ int git_midx_writer_add(
532
571
  git_midx_writer *w,
533
572
  const char *idx_path)
534
573
  {
535
- git_buf idx_path_buf = GIT_BUF_INIT;
574
+ git_str idx_path_buf = GIT_STR_INIT;
536
575
  int error;
537
576
  struct git_pack_file *p;
538
577
 
539
- error = git_path_prettify(&idx_path_buf, idx_path, git_buf_cstr(&w->pack_dir));
578
+ error = git_fs_path_prettify(&idx_path_buf, idx_path, git_str_cstr(&w->pack_dir));
540
579
  if (error < 0)
541
580
  return error;
542
581
 
543
- error = git_mwindow_get_pack(&p, git_buf_cstr(&idx_path_buf));
544
- git_buf_dispose(&idx_path_buf);
582
+ /* TODO: SHA256 */
583
+ error = git_mwindow_get_pack(&p, git_str_cstr(&idx_path_buf), 0);
584
+ git_str_dispose(&idx_path_buf);
545
585
  if (error < 0)
546
586
  return error;
547
587
 
@@ -613,8 +653,8 @@ static int write_chunk_header(int chunk_id, off64_t offset, midx_write_cb write_
613
653
 
614
654
  static int midx_write_buf(const char *buf, size_t size, void *data)
615
655
  {
616
- git_buf *b = (git_buf *)data;
617
- return git_buf_put(b, buf, size);
656
+ git_str *b = (git_str *)data;
657
+ return git_str_put(b, buf, size);
618
658
  }
619
659
 
620
660
  struct midx_write_hash_context {
@@ -628,9 +668,11 @@ static int midx_write_hash(const char *buf, size_t size, void *data)
628
668
  struct midx_write_hash_context *ctx = (struct midx_write_hash_context *)data;
629
669
  int error;
630
670
 
631
- error = git_hash_update(ctx->ctx, buf, size);
632
- if (error < 0)
633
- return error;
671
+ if (ctx->ctx) {
672
+ error = git_hash_update(ctx->ctx, buf, size);
673
+ if (error < 0)
674
+ return error;
675
+ }
634
676
 
635
677
  return ctx->write_cb(buf, size, ctx->cb_data);
636
678
  }
@@ -648,15 +690,17 @@ static int midx_write(
648
690
  uint32_t object_large_offsets_count;
649
691
  uint32_t oid_fanout[256];
650
692
  off64_t offset;
651
- git_buf packfile_names = GIT_BUF_INIT,
652
- oid_lookup = GIT_BUF_INIT,
653
- object_offsets = GIT_BUF_INIT,
654
- object_large_offsets = GIT_BUF_INIT;
655
- git_oid idx_checksum = {{0}};
693
+ git_str packfile_names = GIT_STR_INIT,
694
+ oid_lookup = GIT_STR_INIT,
695
+ object_offsets = GIT_STR_INIT,
696
+ object_large_offsets = GIT_STR_INIT;
697
+ unsigned char checksum[GIT_HASH_MAX_SIZE];
698
+ size_t checksum_size, oid_size;
656
699
  git_midx_entry *entry;
657
700
  object_entry_array_t object_entries_array = GIT_ARRAY_INIT;
658
701
  git_vector object_entries = GIT_VECTOR_INIT;
659
702
  git_hash_ctx ctx;
703
+ git_hash_algorithm_t checksum_type;
660
704
  struct midx_write_hash_context hash_cb_data = {0};
661
705
 
662
706
  hdr.signature = htonl(MIDX_SIGNATURE);
@@ -668,42 +712,47 @@ static int midx_write(
668
712
  hash_cb_data.cb_data = cb_data;
669
713
  hash_cb_data.ctx = &ctx;
670
714
 
671
- error = git_hash_ctx_init(&ctx);
672
- if (error < 0)
715
+ oid_size = git_oid_size(w->oid_type);
716
+ checksum_type = git_oid_algorithm(w->oid_type);
717
+ checksum_size = git_hash_size(checksum_type);
718
+ GIT_ASSERT(oid_size && checksum_type && checksum_size);
719
+
720
+ if ((error = git_hash_ctx_init(&ctx, checksum_type)) < 0)
673
721
  return error;
722
+
674
723
  cb_data = &hash_cb_data;
675
724
  write_cb = midx_write_hash;
676
725
 
677
726
  git_vector_sort(&w->packs);
678
727
  git_vector_foreach (&w->packs, i, p) {
679
- git_buf relative_index = GIT_BUF_INIT;
728
+ git_str relative_index = GIT_STR_INIT;
680
729
  struct object_entry_cb_state state = {0};
681
730
  size_t path_len;
682
731
 
683
732
  state.pack_index = (uint32_t)i;
684
733
  state.object_entries_array = &object_entries_array;
685
734
 
686
- error = git_buf_sets(&relative_index, p->pack_name);
735
+ error = git_str_sets(&relative_index, p->pack_name);
687
736
  if (error < 0)
688
737
  goto cleanup;
689
- error = git_path_make_relative(&relative_index, git_buf_cstr(&w->pack_dir));
738
+ error = git_fs_path_make_relative(&relative_index, git_str_cstr(&w->pack_dir));
690
739
  if (error < 0) {
691
- git_buf_dispose(&relative_index);
740
+ git_str_dispose(&relative_index);
692
741
  goto cleanup;
693
742
  }
694
- path_len = git_buf_len(&relative_index);
695
- if (path_len <= strlen(".pack") || git__suffixcmp(git_buf_cstr(&relative_index), ".pack") != 0) {
696
- git_buf_dispose(&relative_index);
743
+ path_len = git_str_len(&relative_index);
744
+ if (path_len <= strlen(".pack") || git__suffixcmp(git_str_cstr(&relative_index), ".pack") != 0) {
745
+ git_str_dispose(&relative_index);
697
746
  git_error_set(GIT_ERROR_INVALID, "invalid packfile name: '%s'", p->pack_name);
698
747
  error = -1;
699
748
  goto cleanup;
700
749
  }
701
750
  path_len -= strlen(".pack");
702
751
 
703
- git_buf_put(&packfile_names, git_buf_cstr(&relative_index), path_len);
704
- git_buf_puts(&packfile_names, ".idx");
705
- git_buf_putc(&packfile_names, '\0');
706
- git_buf_dispose(&relative_index);
752
+ git_str_put(&packfile_names, git_str_cstr(&relative_index), path_len);
753
+ git_str_puts(&packfile_names, ".idx");
754
+ git_str_putc(&packfile_names, '\0');
755
+ git_str_dispose(&relative_index);
707
756
 
708
757
  error = git_pack_foreach_entry_offset(p, object_entry__cb, &state);
709
758
  if (error < 0)
@@ -723,8 +772,8 @@ static int midx_write(
723
772
  git_vector_uniq(&object_entries, NULL);
724
773
 
725
774
  /* Pad the packfile names so it is a multiple of four. */
726
- while (git_buf_len(&packfile_names) & 3)
727
- git_buf_putc(&packfile_names, '\0');
775
+ while (git_str_len(&packfile_names) & 3)
776
+ git_str_putc(&packfile_names, '\0');
728
777
 
729
778
  /* Fill the OID Fanout table. */
730
779
  oid_fanout_count = 0;
@@ -737,7 +786,9 @@ static int midx_write(
737
786
 
738
787
  /* Fill the OID Lookup table. */
739
788
  git_vector_foreach (&object_entries, i, entry) {
740
- error = git_buf_put(&oid_lookup, (const char *)&entry->sha1, sizeof(entry->sha1));
789
+ error = git_str_put(&oid_lookup,
790
+ (char *)&entry->sha1.id, oid_size);
791
+
741
792
  if (error < 0)
742
793
  goto cleanup;
743
794
  }
@@ -748,7 +799,7 @@ static int midx_write(
748
799
  uint32_t word;
749
800
 
750
801
  word = htonl((uint32_t)entry->pack_index);
751
- error = git_buf_put(&object_offsets, (const char *)&word, sizeof(word));
802
+ error = git_str_put(&object_offsets, (const char *)&word, sizeof(word));
752
803
  if (error < 0)
753
804
  goto cleanup;
754
805
  if (entry->offset >= 0x80000000l) {
@@ -759,7 +810,7 @@ static int midx_write(
759
810
  word = htonl((uint32_t)entry->offset & 0x7fffffffu);
760
811
  }
761
812
 
762
- error = git_buf_put(&object_offsets, (const char *)&word, sizeof(word));
813
+ error = git_str_put(&object_offsets, (const char *)&word, sizeof(word));
763
814
  if (error < 0)
764
815
  goto cleanup;
765
816
  }
@@ -767,7 +818,7 @@ static int midx_write(
767
818
  /* Write the header. */
768
819
  hdr.packfiles = htonl((uint32_t)git_vector_length(&w->packs));
769
820
  hdr.chunks = 4;
770
- if (git_buf_len(&object_large_offsets) > 0)
821
+ if (git_str_len(&object_large_offsets) > 0)
771
822
  hdr.chunks++;
772
823
  error = write_cb((const char *)&hdr, sizeof(hdr), cb_data);
773
824
  if (error < 0)
@@ -778,7 +829,7 @@ static int midx_write(
778
829
  error = write_chunk_header(MIDX_PACKFILE_NAMES_ID, offset, write_cb, cb_data);
779
830
  if (error < 0)
780
831
  goto cleanup;
781
- offset += git_buf_len(&packfile_names);
832
+ offset += git_str_len(&packfile_names);
782
833
  error = write_chunk_header(MIDX_OID_FANOUT_ID, offset, write_cb, cb_data);
783
834
  if (error < 0)
784
835
  goto cleanup;
@@ -786,53 +837,56 @@ static int midx_write(
786
837
  error = write_chunk_header(MIDX_OID_LOOKUP_ID, offset, write_cb, cb_data);
787
838
  if (error < 0)
788
839
  goto cleanup;
789
- offset += git_buf_len(&oid_lookup);
840
+ offset += git_str_len(&oid_lookup);
790
841
  error = write_chunk_header(MIDX_OBJECT_OFFSETS_ID, offset, write_cb, cb_data);
791
842
  if (error < 0)
792
843
  goto cleanup;
793
- offset += git_buf_len(&object_offsets);
794
- if (git_buf_len(&object_large_offsets) > 0) {
844
+ offset += git_str_len(&object_offsets);
845
+ if (git_str_len(&object_large_offsets) > 0) {
795
846
  error = write_chunk_header(MIDX_OBJECT_LARGE_OFFSETS_ID, offset, write_cb, cb_data);
796
847
  if (error < 0)
797
848
  goto cleanup;
798
- offset += git_buf_len(&object_large_offsets);
849
+ offset += git_str_len(&object_large_offsets);
799
850
  }
800
851
  error = write_chunk_header(0, offset, write_cb, cb_data);
801
852
  if (error < 0)
802
853
  goto cleanup;
803
854
 
804
855
  /* Write all the chunks. */
805
- error = write_cb(git_buf_cstr(&packfile_names), git_buf_len(&packfile_names), cb_data);
856
+ error = write_cb(git_str_cstr(&packfile_names), git_str_len(&packfile_names), cb_data);
806
857
  if (error < 0)
807
858
  goto cleanup;
808
859
  error = write_cb((const char *)oid_fanout, sizeof(oid_fanout), cb_data);
809
860
  if (error < 0)
810
861
  goto cleanup;
811
- error = write_cb(git_buf_cstr(&oid_lookup), git_buf_len(&oid_lookup), cb_data);
862
+ error = write_cb(git_str_cstr(&oid_lookup), git_str_len(&oid_lookup), cb_data);
812
863
  if (error < 0)
813
864
  goto cleanup;
814
- error = write_cb(git_buf_cstr(&object_offsets), git_buf_len(&object_offsets), cb_data);
865
+ error = write_cb(git_str_cstr(&object_offsets), git_str_len(&object_offsets), cb_data);
815
866
  if (error < 0)
816
867
  goto cleanup;
817
- error = write_cb(git_buf_cstr(&object_large_offsets), git_buf_len(&object_large_offsets), cb_data);
868
+ error = write_cb(git_str_cstr(&object_large_offsets), git_str_len(&object_large_offsets), cb_data);
818
869
  if (error < 0)
819
870
  goto cleanup;
820
871
 
821
872
  /* Finalize the checksum and write the trailer. */
822
- error = git_hash_final(&idx_checksum, &ctx);
873
+ error = git_hash_final(checksum, &ctx);
823
874
  if (error < 0)
824
875
  goto cleanup;
825
- error = write_cb((const char *)&idx_checksum, sizeof(idx_checksum), cb_data);
876
+
877
+ hash_cb_data.ctx = NULL;
878
+
879
+ error = write_cb((char *)checksum, checksum_size, cb_data);
826
880
  if (error < 0)
827
881
  goto cleanup;
828
882
 
829
883
  cleanup:
830
884
  git_array_clear(object_entries_array);
831
- git_vector_free(&object_entries);
832
- git_buf_dispose(&packfile_names);
833
- git_buf_dispose(&oid_lookup);
834
- git_buf_dispose(&object_offsets);
835
- git_buf_dispose(&object_large_offsets);
885
+ git_vector_dispose(&object_entries);
886
+ git_str_dispose(&packfile_names);
887
+ git_str_dispose(&oid_lookup);
888
+ git_str_dispose(&object_offsets);
889
+ git_str_dispose(&object_large_offsets);
836
890
  git_hash_ctx_cleanup(&ctx);
837
891
  return error;
838
892
  }
@@ -848,17 +902,17 @@ int git_midx_writer_commit(
848
902
  {
849
903
  int error;
850
904
  int filebuf_flags = GIT_FILEBUF_DO_NOT_BUFFER;
851
- git_buf midx_path = GIT_BUF_INIT;
905
+ git_str midx_path = GIT_STR_INIT;
852
906
  git_filebuf output = GIT_FILEBUF_INIT;
853
907
 
854
- error = git_buf_joinpath(&midx_path, git_buf_cstr(&w->pack_dir), "multi-pack-index");
908
+ error = git_str_joinpath(&midx_path, git_str_cstr(&w->pack_dir), "multi-pack-index");
855
909
  if (error < 0)
856
910
  return error;
857
911
 
858
912
  if (git_repository__fsync_gitdir)
859
913
  filebuf_flags |= GIT_FILEBUF_FSYNC;
860
- error = git_filebuf_open(&output, git_buf_cstr(&midx_path), filebuf_flags, 0644);
861
- git_buf_dispose(&midx_path);
914
+ error = git_filebuf_open(&output, git_str_cstr(&midx_path), filebuf_flags, 0644);
915
+ git_str_dispose(&midx_path);
862
916
  if (error < 0)
863
917
  return error;
864
918
 
@@ -875,5 +929,13 @@ int git_midx_writer_dump(
875
929
  git_buf *midx,
876
930
  git_midx_writer *w)
877
931
  {
878
- return midx_write(w, midx_write_buf, midx);
932
+ git_str str = GIT_STR_INIT;
933
+ int error;
934
+
935
+ if ((error = git_buf_tostr(&str, midx)) < 0 ||
936
+ (error = midx_write(w, midx_write_buf, &str)) == 0)
937
+ error = git_buf_fromstr(midx, &str);
938
+
939
+ git_str_dispose(&str);
940
+ return error;
879
941
  }