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,11 +8,11 @@
8
8
  #include "commit_graph.h"
9
9
 
10
10
  #include "array.h"
11
+ #include "buf.h"
11
12
  #include "filebuf.h"
12
13
  #include "futils.h"
13
14
  #include "hash.h"
14
15
  #include "oidarray.h"
15
- #include "oidmap.h"
16
16
  #include "pack.h"
17
17
  #include "repository.h"
18
18
  #include "revwalk.h"
@@ -24,6 +24,7 @@
24
24
  #define COMMIT_GRAPH_SIGNATURE 0x43475048 /* "CGPH" */
25
25
  #define COMMIT_GRAPH_VERSION 1
26
26
  #define COMMIT_GRAPH_OBJECT_ID_VERSION 1
27
+
27
28
  struct git_commit_graph_header {
28
29
  uint32_t signature;
29
30
  uint8_t version;
@@ -137,19 +138,22 @@ static int commit_graph_parse_oid_lookup(
137
138
  struct git_commit_graph_chunk *chunk_oid_lookup)
138
139
  {
139
140
  uint32_t i;
140
- git_oid *oid, *prev_oid, zero_oid = {{0}};
141
+ unsigned char *oid, *prev_oid, zero_oid[GIT_OID_MAX_SIZE] = {0};
142
+ size_t oid_size;
143
+
144
+ oid_size = git_oid_size(file->oid_type);
141
145
 
142
146
  if (chunk_oid_lookup->offset == 0)
143
147
  return commit_graph_error("missing OID Lookup chunk");
144
148
  if (chunk_oid_lookup->length == 0)
145
149
  return commit_graph_error("empty OID Lookup chunk");
146
- if (chunk_oid_lookup->length != file->num_commits * GIT_OID_RAWSZ)
150
+ if (chunk_oid_lookup->length != file->num_commits * oid_size)
147
151
  return commit_graph_error("OID Lookup chunk has wrong length");
148
152
 
149
- file->oid_lookup = oid = (git_oid *)(data + chunk_oid_lookup->offset);
150
- prev_oid = &zero_oid;
151
- for (i = 0; i < file->num_commits; ++i, ++oid) {
152
- if (git_oid_cmp(prev_oid, oid) >= 0)
153
+ file->oid_lookup = oid = (unsigned char *)(data + chunk_oid_lookup->offset);
154
+ prev_oid = zero_oid;
155
+ for (i = 0; i < file->num_commits; ++i, oid += oid_size) {
156
+ if (git_oid_raw_cmp(prev_oid, oid, oid_size) >= 0)
153
157
  return commit_graph_error("OID Lookup index is non-monotonic");
154
158
  prev_oid = oid;
155
159
  }
@@ -162,11 +166,13 @@ static int commit_graph_parse_commit_data(
162
166
  const unsigned char *data,
163
167
  struct git_commit_graph_chunk *chunk_commit_data)
164
168
  {
169
+ size_t oid_size = git_oid_size(file->oid_type);
170
+
165
171
  if (chunk_commit_data->offset == 0)
166
172
  return commit_graph_error("missing Commit Data chunk");
167
173
  if (chunk_commit_data->length == 0)
168
174
  return commit_graph_error("empty Commit Data chunk");
169
- if (chunk_commit_data->length != file->num_commits * (GIT_OID_RAWSZ + 16))
175
+ if (chunk_commit_data->length != file->num_commits * (oid_size + 16))
170
176
  return commit_graph_error("Commit Data chunk has wrong length");
171
177
 
172
178
  file->commit_data = data + chunk_commit_data->offset;
@@ -199,8 +205,8 @@ int git_commit_graph_file_parse(
199
205
  const unsigned char *chunk_hdr;
200
206
  struct git_commit_graph_chunk *last_chunk;
201
207
  uint32_t i;
202
- off64_t last_chunk_offset, chunk_offset, trailer_offset;
203
- git_oid cgraph_checksum = {{0}};
208
+ uint64_t last_chunk_offset, chunk_offset, trailer_offset;
209
+ size_t checksum_size;
204
210
  int error;
205
211
  struct git_commit_graph_chunk chunk_oid_fanout = {0}, chunk_oid_lookup = {0},
206
212
  chunk_commit_data = {0}, chunk_extra_edge_list = {0},
@@ -208,7 +214,9 @@ int git_commit_graph_file_parse(
208
214
 
209
215
  GIT_ASSERT_ARG(file);
210
216
 
211
- if (size < sizeof(struct git_commit_graph_header) + GIT_OID_RAWSZ)
217
+ checksum_size = git_oid_size(file->oid_type);
218
+
219
+ if (size < sizeof(struct git_commit_graph_header) + checksum_size)
212
220
  return commit_graph_error("commit-graph is too short");
213
221
 
214
222
  hdr = ((struct git_commit_graph_header *)data);
@@ -225,21 +233,17 @@ int git_commit_graph_file_parse(
225
233
  * headers, and a special zero chunk.
226
234
  */
227
235
  last_chunk_offset = sizeof(struct git_commit_graph_header) + (1 + hdr->chunks) * 12;
228
- trailer_offset = size - GIT_OID_RAWSZ;
236
+ trailer_offset = size - checksum_size;
237
+
229
238
  if (trailer_offset < last_chunk_offset)
230
239
  return commit_graph_error("wrong commit-graph size");
231
- git_oid_cpy(&file->checksum, (git_oid *)(data + trailer_offset));
232
-
233
- if (git_hash_buf(&cgraph_checksum, data, (size_t)trailer_offset) < 0)
234
- return commit_graph_error("could not calculate signature");
235
- if (!git_oid_equal(&cgraph_checksum, &file->checksum))
236
- return commit_graph_error("index signature mismatch");
240
+ memcpy(file->checksum, (data + trailer_offset), checksum_size);
237
241
 
238
242
  chunk_hdr = data + sizeof(struct git_commit_graph_header);
239
243
  last_chunk = NULL;
240
244
  for (i = 0; i < hdr->chunks; ++i, chunk_hdr += 12) {
241
- chunk_offset = ((off64_t)ntohl(*((uint32_t *)(chunk_hdr + 4)))) << 32
242
- | ((off64_t)ntohl(*((uint32_t *)(chunk_hdr + 8))));
245
+ chunk_offset = ((uint64_t)ntohl(*((uint32_t *)(chunk_hdr + 4)))) << 32
246
+ | ((uint64_t)ntohl(*((uint32_t *)(chunk_hdr + 8))));
243
247
  if (chunk_offset < last_chunk_offset)
244
248
  return commit_graph_error("chunks are non-monotonic");
245
249
  if (chunk_offset >= trailer_offset)
@@ -297,25 +301,35 @@ int git_commit_graph_file_parse(
297
301
  return 0;
298
302
  }
299
303
 
300
- int git_commit_graph_new(git_commit_graph **cgraph_out, const char *objects_dir, bool open_file)
304
+ int git_commit_graph_new(
305
+ git_commit_graph **cgraph_out,
306
+ const char *objects_dir,
307
+ bool open_file,
308
+ git_oid_t oid_type)
301
309
  {
302
310
  git_commit_graph *cgraph = NULL;
303
311
  int error = 0;
304
312
 
305
313
  GIT_ASSERT_ARG(cgraph_out);
306
314
  GIT_ASSERT_ARG(objects_dir);
315
+ GIT_ASSERT_ARG(oid_type);
307
316
 
308
317
  cgraph = git__calloc(1, sizeof(git_commit_graph));
309
318
  GIT_ERROR_CHECK_ALLOC(cgraph);
310
319
 
311
- error = git_buf_joinpath(&cgraph->filename, objects_dir, "info/commit-graph");
320
+ cgraph->oid_type = oid_type;
321
+
322
+ error = git_str_joinpath(&cgraph->filename, objects_dir, "info/commit-graph");
312
323
  if (error < 0)
313
324
  goto error;
314
325
 
315
326
  if (open_file) {
316
- error = git_commit_graph_file_open(&cgraph->file, git_buf_cstr(&cgraph->filename));
327
+ error = git_commit_graph_file_open(&cgraph->file,
328
+ git_str_cstr(&cgraph->filename), oid_type);
329
+
317
330
  if (error < 0)
318
331
  goto error;
332
+
319
333
  cgraph->checked = 1;
320
334
  }
321
335
 
@@ -327,12 +341,61 @@ error:
327
341
  return error;
328
342
  }
329
343
 
330
- int git_commit_graph_open(git_commit_graph **cgraph_out, const char *objects_dir)
344
+ int git_commit_graph_validate(git_commit_graph *cgraph) {
345
+ unsigned char checksum[GIT_HASH_MAX_SIZE];
346
+ git_hash_algorithm_t checksum_type;
347
+ size_t checksum_size, trailer_offset;
348
+
349
+ checksum_type = git_oid_algorithm(cgraph->oid_type);
350
+ checksum_size = git_hash_size(checksum_type);
351
+ trailer_offset = cgraph->file->graph_map.len - checksum_size;
352
+
353
+ if (cgraph->file->graph_map.len < checksum_size)
354
+ return commit_graph_error("map length too small");
355
+
356
+ if (git_hash_buf(checksum, cgraph->file->graph_map.data, trailer_offset, checksum_type) < 0)
357
+ return commit_graph_error("could not calculate signature");
358
+ if (memcmp(checksum, cgraph->file->checksum, checksum_size) != 0)
359
+ return commit_graph_error("index signature mismatch");
360
+
361
+ return 0;
362
+ }
363
+
364
+ int git_commit_graph_open(
365
+ git_commit_graph **cgraph_out,
366
+ const char *objects_dir
367
+ #ifdef GIT_EXPERIMENTAL_SHA256
368
+ , const git_commit_graph_open_options *opts
369
+ #endif
370
+ )
331
371
  {
332
- return git_commit_graph_new(cgraph_out, objects_dir, true);
372
+ git_oid_t oid_type;
373
+ int error;
374
+
375
+ #ifdef GIT_EXPERIMENTAL_SHA256
376
+ GIT_ERROR_CHECK_VERSION(opts,
377
+ GIT_COMMIT_GRAPH_OPEN_OPTIONS_VERSION,
378
+ "git_commit_graph_open_options");
379
+
380
+ oid_type = opts && opts->oid_type ? opts->oid_type : GIT_OID_DEFAULT;
381
+ GIT_ASSERT_ARG(git_oid_type_is_valid(oid_type));
382
+ #else
383
+ oid_type = GIT_OID_SHA1;
384
+ #endif
385
+
386
+ error = git_commit_graph_new(cgraph_out, objects_dir, true,
387
+ oid_type);
388
+
389
+ if (!error)
390
+ return git_commit_graph_validate(*cgraph_out);
391
+
392
+ return error;
333
393
  }
334
394
 
335
- int git_commit_graph_file_open(git_commit_graph_file **file_out, const char *path)
395
+ int git_commit_graph_file_open(
396
+ git_commit_graph_file **file_out,
397
+ const char *path,
398
+ git_oid_t oid_type)
336
399
  {
337
400
  git_commit_graph_file *file;
338
401
  git_file fd = -1;
@@ -361,6 +424,8 @@ int git_commit_graph_file_open(git_commit_graph_file **file_out, const char *pat
361
424
  file = git__calloc(1, sizeof(git_commit_graph_file));
362
425
  GIT_ERROR_CHECK_ALLOC(file);
363
426
 
427
+ file->oid_type = oid_type;
428
+
364
429
  error = git_futils_mmap_ro(&file->graph_map, fd, 0, cgraph_size);
365
430
  p_close(fd);
366
431
  if (error < 0) {
@@ -377,7 +442,9 @@ int git_commit_graph_file_open(git_commit_graph_file **file_out, const char *pat
377
442
  return 0;
378
443
  }
379
444
 
380
- int git_commit_graph_get_file(git_commit_graph_file **file_out, git_commit_graph *cgraph)
445
+ int git_commit_graph_get_file(
446
+ git_commit_graph_file **file_out,
447
+ git_commit_graph *cgraph)
381
448
  {
382
449
  if (!cgraph->checked) {
383
450
  int error = 0;
@@ -387,7 +454,8 @@ int git_commit_graph_get_file(git_commit_graph_file **file_out, git_commit_graph
387
454
  cgraph->checked = 1;
388
455
 
389
456
  /* Best effort */
390
- error = git_commit_graph_file_open(&result, git_buf_cstr(&cgraph->filename));
457
+ error = git_commit_graph_file_open(&result,
458
+ git_str_cstr(&cgraph->filename), cgraph->oid_type);
391
459
 
392
460
  if (error < 0)
393
461
  return error;
@@ -407,7 +475,7 @@ void git_commit_graph_refresh(git_commit_graph *cgraph)
407
475
  return;
408
476
 
409
477
  if (cgraph->file
410
- && git_commit_graph_file_needs_refresh(cgraph->file, git_buf_cstr(&cgraph->filename))) {
478
+ && git_commit_graph_file_needs_refresh(cgraph->file, git_str_cstr(&cgraph->filename))) {
411
479
  /* We just free the commit graph. The next time it is requested, it will be
412
480
  * re-loaded. */
413
481
  git_commit_graph_file_free(cgraph->file);
@@ -423,6 +491,7 @@ static int git_commit_graph_entry_get_byindex(
423
491
  size_t pos)
424
492
  {
425
493
  const unsigned char *commit_data;
494
+ size_t oid_size = git_oid_size(file->oid_type);
426
495
 
427
496
  GIT_ASSERT_ARG(e);
428
497
  GIT_ASSERT_ARG(file);
@@ -432,15 +501,15 @@ static int git_commit_graph_entry_get_byindex(
432
501
  return GIT_ENOTFOUND;
433
502
  }
434
503
 
435
- commit_data = file->commit_data + pos * (GIT_OID_RAWSZ + 4 * sizeof(uint32_t));
436
- git_oid_cpy(&e->tree_oid, (const git_oid *)commit_data);
437
- e->parent_indices[0] = ntohl(*((uint32_t *)(commit_data + GIT_OID_RAWSZ)));
504
+ commit_data = file->commit_data + pos * (oid_size + 4 * sizeof(uint32_t));
505
+ git_oid__fromraw(&e->tree_oid, commit_data, file->oid_type);
506
+ e->parent_indices[0] = ntohl(*((uint32_t *)(commit_data + oid_size)));
438
507
  e->parent_indices[1] = ntohl(
439
- *((uint32_t *)(commit_data + GIT_OID_RAWSZ + sizeof(uint32_t))));
508
+ *((uint32_t *)(commit_data + oid_size + sizeof(uint32_t))));
440
509
  e->parent_count = (e->parent_indices[0] != GIT_COMMIT_GRAPH_MISSING_PARENT)
441
510
  + (e->parent_indices[1] != GIT_COMMIT_GRAPH_MISSING_PARENT);
442
- e->generation = ntohl(*((uint32_t *)(commit_data + GIT_OID_RAWSZ + 2 * sizeof(uint32_t))));
443
- e->commit_time = ntohl(*((uint32_t *)(commit_data + GIT_OID_RAWSZ + 3 * sizeof(uint32_t))));
511
+ e->generation = ntohl(*((uint32_t *)(commit_data + oid_size + 2 * sizeof(uint32_t))));
512
+ e->commit_time = ntohl(*((uint32_t *)(commit_data + oid_size + 3 * sizeof(uint32_t))));
444
513
 
445
514
  e->commit_time |= (e->generation & UINT64_C(0x3)) << UINT64_C(32);
446
515
  e->generation >>= 2u;
@@ -466,7 +535,8 @@ static int git_commit_graph_entry_get_byindex(
466
535
  e->parent_count++;
467
536
  }
468
537
  }
469
- git_oid_cpy(&e->sha1, &file->oid_lookup[pos]);
538
+
539
+ git_oid__fromraw(&e->sha1, &file->oid_lookup[pos * oid_size], file->oid_type);
470
540
  return 0;
471
541
  }
472
542
 
@@ -475,7 +545,8 @@ bool git_commit_graph_file_needs_refresh(const git_commit_graph_file *file, cons
475
545
  git_file fd = -1;
476
546
  struct stat st;
477
547
  ssize_t bytes_read;
478
- git_oid cgraph_checksum = {{0}};
548
+ unsigned char checksum[GIT_HASH_MAX_SIZE];
549
+ size_t checksum_size = git_oid_size(file->oid_type);
479
550
 
480
551
  /* TODO: properly open the file without access time using O_NOATIME */
481
552
  fd = git_futils_open_ro(path);
@@ -493,12 +564,12 @@ bool git_commit_graph_file_needs_refresh(const git_commit_graph_file *file, cons
493
564
  return true;
494
565
  }
495
566
 
496
- bytes_read = p_pread(fd, cgraph_checksum.id, GIT_OID_RAWSZ, st.st_size - GIT_OID_RAWSZ);
567
+ bytes_read = p_pread(fd, checksum, checksum_size, st.st_size - checksum_size);
497
568
  p_close(fd);
498
- if (bytes_read != GIT_OID_RAWSZ)
569
+ if (bytes_read != (ssize_t)checksum_size)
499
570
  return true;
500
571
 
501
- return !git_oid_equal(&cgraph_checksum, &file->checksum);
572
+ return (memcmp(checksum, file->checksum, checksum_size) != 0);
502
573
  }
503
574
 
504
575
  int git_commit_graph_entry_find(
@@ -509,40 +580,44 @@ int git_commit_graph_entry_find(
509
580
  {
510
581
  int pos, found = 0;
511
582
  uint32_t hi, lo;
512
- const git_oid *current = NULL;
583
+ const unsigned char *current = NULL;
584
+ size_t oid_size, oid_hexsize;
513
585
 
514
586
  GIT_ASSERT_ARG(e);
515
587
  GIT_ASSERT_ARG(file);
516
588
  GIT_ASSERT_ARG(short_oid);
517
589
 
590
+ oid_size = git_oid_size(file->oid_type);
591
+ oid_hexsize = git_oid_hexsize(file->oid_type);
592
+
518
593
  hi = ntohl(file->oid_fanout[(int)short_oid->id[0]]);
519
594
  lo = ((short_oid->id[0] == 0x0) ? 0 : ntohl(file->oid_fanout[(int)short_oid->id[0] - 1]));
520
595
 
521
- pos = git_pack__lookup_sha1(file->oid_lookup, GIT_OID_RAWSZ, lo, hi, short_oid->id);
596
+ pos = git_pack__lookup_id(file->oid_lookup, oid_size, lo, hi,
597
+ short_oid->id, file->oid_type);
522
598
 
523
599
  if (pos >= 0) {
524
600
  /* An object matching exactly the oid was found */
525
601
  found = 1;
526
- current = file->oid_lookup + pos;
602
+ current = file->oid_lookup + (pos * oid_size);
527
603
  } else {
528
604
  /* No object was found */
529
605
  /* pos refers to the object with the "closest" oid to short_oid */
530
606
  pos = -1 - pos;
531
607
  if (pos < (int)file->num_commits) {
532
- current = file->oid_lookup + pos;
608
+ current = file->oid_lookup + (pos * oid_size);
533
609
 
534
- if (!git_oid_ncmp(short_oid, current, len))
610
+ if (!git_oid_raw_ncmp(short_oid->id, current, len))
535
611
  found = 1;
536
612
  }
537
613
  }
538
614
 
539
- if (found && len != GIT_OID_HEXSZ && pos + 1 < (int)file->num_commits) {
615
+ if (found && len != oid_hexsize && pos + 1 < (int)file->num_commits) {
540
616
  /* Check for ambiguousity */
541
- const git_oid *next = current + 1;
617
+ const unsigned char *next = current + oid_size;
542
618
 
543
- if (!git_oid_ncmp(short_oid, next, len)) {
619
+ if (!git_oid_raw_ncmp(short_oid->id, next, len))
544
620
  found = 2;
545
- }
546
621
  }
547
622
 
548
623
  if (!found)
@@ -597,7 +672,7 @@ void git_commit_graph_free(git_commit_graph *cgraph)
597
672
  if (!cgraph)
598
673
  return;
599
674
 
600
- git_buf_dispose(&cgraph->filename);
675
+ git_str_dispose(&cgraph->filename);
601
676
  git_commit_graph_file_free(cgraph->file);
602
677
  git__free(cgraph);
603
678
  }
@@ -618,18 +693,53 @@ static int packed_commit__cmp(const void *a_, const void *b_)
618
693
  return git_oid_cmp(&a->sha1, &b->sha1);
619
694
  }
620
695
 
621
- int git_commit_graph_writer_new(git_commit_graph_writer **out, const char *objects_info_dir)
696
+ int git_commit_graph_writer_options_init(
697
+ git_commit_graph_writer_options *opts,
698
+ unsigned int version)
622
699
  {
623
- git_commit_graph_writer *w = git__calloc(1, sizeof(git_commit_graph_writer));
700
+ GIT_INIT_STRUCTURE_FROM_TEMPLATE(
701
+ opts,
702
+ version,
703
+ git_commit_graph_writer_options,
704
+ GIT_COMMIT_GRAPH_WRITER_OPTIONS_INIT);
705
+ return 0;
706
+ }
707
+
708
+ int git_commit_graph_writer_new(
709
+ git_commit_graph_writer **out,
710
+ const char *objects_info_dir,
711
+ const git_commit_graph_writer_options *opts
712
+ )
713
+ {
714
+ git_commit_graph_writer *w;
715
+ git_oid_t oid_type;
716
+
717
+ #ifdef GIT_EXPERIMENTAL_SHA256
718
+ GIT_ERROR_CHECK_VERSION(opts,
719
+ GIT_COMMIT_GRAPH_WRITER_OPTIONS_VERSION,
720
+ "git_commit_graph_writer_options");
721
+
722
+ oid_type = opts && opts->oid_type ? opts->oid_type : GIT_OID_DEFAULT;
723
+ GIT_ASSERT_ARG(git_oid_type_is_valid(oid_type));
724
+ #else
725
+ GIT_UNUSED(opts);
726
+ oid_type = GIT_OID_SHA1;
727
+ #endif
728
+
729
+ GIT_ASSERT_ARG(out && objects_info_dir);
730
+
731
+ w = git__calloc(1, sizeof(git_commit_graph_writer));
624
732
  GIT_ERROR_CHECK_ALLOC(w);
625
733
 
626
- if (git_buf_sets(&w->objects_info_dir, objects_info_dir) < 0) {
734
+ w->oid_type = oid_type;
735
+
736
+ if (git_str_sets(&w->objects_info_dir, objects_info_dir) < 0) {
627
737
  git__free(w);
628
738
  return -1;
629
739
  }
630
740
 
631
741
  if (git_vector_init(&w->commits, 0, packed_commit__cmp) < 0) {
632
- git_buf_dispose(&w->objects_info_dir);
742
+ git_str_dispose(&w->objects_info_dir);
633
743
  git__free(w);
634
744
  return -1;
635
745
  }
@@ -648,8 +758,8 @@ void git_commit_graph_writer_free(git_commit_graph_writer *w)
648
758
 
649
759
  git_vector_foreach (&w->commits, i, packed_commit)
650
760
  packed_commit_free(packed_commit);
651
- git_vector_free(&w->commits);
652
- git_buf_dispose(&w->objects_info_dir);
761
+ git_vector_dispose(&w->commits);
762
+ git_str_dispose(&w->objects_info_dir);
653
763
  git__free(w);
654
764
  }
655
765
 
@@ -693,9 +803,9 @@ static int object_entry__cb(const git_oid *id, void *data)
693
803
  }
694
804
 
695
805
  int git_commit_graph_writer_add_index_file(
696
- git_commit_graph_writer *w,
697
- git_repository *repo,
698
- const char *idx_path)
806
+ git_commit_graph_writer *w,
807
+ git_repository *repo,
808
+ const char *idx_path)
699
809
  {
700
810
  int error;
701
811
  struct git_pack_file *p = NULL;
@@ -707,7 +817,8 @@ int git_commit_graph_writer_add_index_file(
707
817
  if (error < 0)
708
818
  goto cleanup;
709
819
 
710
- error = git_mwindow_get_pack(&p, idx_path);
820
+ /* TODO: SHA256 */
821
+ error = git_mwindow_get_pack(&p, idx_path, 0);
711
822
  if (error < 0)
712
823
  goto cleanup;
713
824
 
@@ -753,9 +864,11 @@ enum generation_number_commit_state {
753
864
  GENERATION_NUMBER_COMMIT_STATE_UNVISITED = 0,
754
865
  GENERATION_NUMBER_COMMIT_STATE_ADDED = 1,
755
866
  GENERATION_NUMBER_COMMIT_STATE_EXPANDED = 2,
756
- GENERATION_NUMBER_COMMIT_STATE_VISITED = 3,
867
+ GENERATION_NUMBER_COMMIT_STATE_VISITED = 3
757
868
  };
758
869
 
870
+ GIT_HASHMAP_OID_SETUP(git_commit_graph_oidmap, struct packed_commit *);
871
+
759
872
  static int compute_generation_numbers(git_vector *commits)
760
873
  {
761
874
  git_array_t(size_t) index_stack = GIT_ARRAY_INIT;
@@ -763,17 +876,14 @@ static int compute_generation_numbers(git_vector *commits)
763
876
  size_t *parent_idx;
764
877
  enum generation_number_commit_state *commit_states = NULL;
765
878
  struct packed_commit *child_packed_commit;
766
- git_oidmap *packed_commit_map = NULL;
879
+ git_commit_graph_oidmap packed_commit_map = GIT_HASHMAP_INIT;
767
880
  int error = 0;
768
881
 
769
882
  /* First populate the parent indices fields */
770
- error = git_oidmap_new(&packed_commit_map);
771
- if (error < 0)
772
- goto cleanup;
773
883
  git_vector_foreach (commits, i, child_packed_commit) {
774
884
  child_packed_commit->index = i;
775
- error = git_oidmap_set(
776
- packed_commit_map, &child_packed_commit->sha1, child_packed_commit);
885
+ error = git_commit_graph_oidmap_put(&packed_commit_map,
886
+ &child_packed_commit->sha1, child_packed_commit);
777
887
  if (error < 0)
778
888
  goto cleanup;
779
889
  }
@@ -791,8 +901,7 @@ static int compute_generation_numbers(git_vector *commits)
791
901
  goto cleanup;
792
902
  }
793
903
  git_array_foreach (child_packed_commit->parents, parent_i, parent_id) {
794
- parent_packed_commit = git_oidmap_get(packed_commit_map, parent_id);
795
- if (!parent_packed_commit) {
904
+ if (git_commit_graph_oidmap_get(&parent_packed_commit, &packed_commit_map, parent_id) != 0) {
796
905
  git_error_set(GIT_ERROR_ODB,
797
906
  "parent commit %s not found in commit graph",
798
907
  git_oid_tostr_s(parent_id));
@@ -892,7 +1001,7 @@ static int compute_generation_numbers(git_vector *commits)
892
1001
  }
893
1002
 
894
1003
  cleanup:
895
- git_oidmap_free(packed_commit_map);
1004
+ git_commit_graph_oidmap_dispose(&packed_commit_map);
896
1005
  git__free(commit_states);
897
1006
  git_array_clear(index_stack);
898
1007
 
@@ -931,8 +1040,8 @@ static int write_chunk_header(
931
1040
 
932
1041
  static int commit_graph_write_buf(const char *buf, size_t size, void *data)
933
1042
  {
934
- git_buf *b = (git_buf *)data;
935
- return git_buf_put(b, buf, size);
1043
+ git_str *b = (git_str *)data;
1044
+ return git_str_put(b, buf, size);
936
1045
  }
937
1046
 
938
1047
  struct commit_graph_write_hash_context {
@@ -946,9 +1055,12 @@ static int commit_graph_write_hash(const char *buf, size_t size, void *data)
946
1055
  struct commit_graph_write_hash_context *ctx = data;
947
1056
  int error;
948
1057
 
949
- error = git_hash_update(ctx->ctx, buf, size);
950
- if (error < 0)
951
- return error;
1058
+ if (ctx->ctx) {
1059
+ error = git_hash_update(ctx->ctx, buf, size);
1060
+
1061
+ if (error < 0)
1062
+ return error;
1063
+ }
952
1064
 
953
1065
  return ctx->write_cb(buf, size, ctx->cb_data);
954
1066
  }
@@ -959,9 +1071,9 @@ static void packed_commit_free_dup(void *packed_commit)
959
1071
  }
960
1072
 
961
1073
  static int commit_graph_write(
962
- git_commit_graph_writer *w,
963
- commit_graph_write_cb write_cb,
964
- void *cb_data)
1074
+ git_commit_graph_writer *w,
1075
+ commit_graph_write_cb write_cb,
1076
+ void *cb_data)
965
1077
  {
966
1078
  int error = 0;
967
1079
  size_t i;
@@ -971,9 +1083,11 @@ static int commit_graph_write(
971
1083
  uint32_t extra_edge_list_count;
972
1084
  uint32_t oid_fanout[256];
973
1085
  off64_t offset;
974
- git_buf oid_lookup = GIT_BUF_INIT, commit_data = GIT_BUF_INIT,
975
- extra_edge_list = GIT_BUF_INIT;
976
- git_oid cgraph_checksum = {{0}};
1086
+ git_str oid_lookup = GIT_STR_INIT, commit_data = GIT_STR_INIT,
1087
+ extra_edge_list = GIT_STR_INIT;
1088
+ unsigned char checksum[GIT_HASH_MAX_SIZE];
1089
+ git_hash_algorithm_t checksum_type;
1090
+ size_t checksum_size, oid_size;
977
1091
  git_hash_ctx ctx;
978
1092
  struct commit_graph_write_hash_context hash_cb_data = {0};
979
1093
 
@@ -986,7 +1100,11 @@ static int commit_graph_write(
986
1100
  hash_cb_data.cb_data = cb_data;
987
1101
  hash_cb_data.ctx = &ctx;
988
1102
 
989
- error = git_hash_ctx_init(&ctx);
1103
+ oid_size = git_oid_size(w->oid_type);
1104
+ checksum_type = git_oid_algorithm(w->oid_type);
1105
+ checksum_size = git_hash_size(checksum_type);
1106
+
1107
+ error = git_hash_ctx_init(&ctx, checksum_type);
990
1108
  if (error < 0)
991
1109
  return error;
992
1110
  cb_data = &hash_cb_data;
@@ -1011,8 +1129,10 @@ static int commit_graph_write(
1011
1129
 
1012
1130
  /* Fill the OID Lookup table. */
1013
1131
  git_vector_foreach (&w->commits, i, packed_commit) {
1014
- error = git_buf_put(&oid_lookup,
1015
- (const char *)&packed_commit->sha1, sizeof(git_oid));
1132
+ error = git_str_put(&oid_lookup,
1133
+ (const char *)&packed_commit->sha1.id,
1134
+ oid_size);
1135
+
1016
1136
  if (error < 0)
1017
1137
  goto cleanup;
1018
1138
  }
@@ -1026,9 +1146,10 @@ static int commit_graph_write(
1026
1146
  size_t *packed_index;
1027
1147
  unsigned int parentcount = (unsigned int)git_array_size(packed_commit->parents);
1028
1148
 
1029
- error = git_buf_put(&commit_data,
1030
- (const char *)&packed_commit->tree_oid,
1031
- sizeof(git_oid));
1149
+ error = git_str_put(&commit_data,
1150
+ (const char *)&packed_commit->tree_oid.id,
1151
+ oid_size);
1152
+
1032
1153
  if (error < 0)
1033
1154
  goto cleanup;
1034
1155
 
@@ -1038,7 +1159,7 @@ static int commit_graph_write(
1038
1159
  packed_index = git_array_get(packed_commit->parent_indices, 0);
1039
1160
  word = htonl((uint32_t)*packed_index);
1040
1161
  }
1041
- error = git_buf_put(&commit_data, (const char *)&word, sizeof(word));
1162
+ error = git_str_put(&commit_data, (const char *)&word, sizeof(word));
1042
1163
  if (error < 0)
1043
1164
  goto cleanup;
1044
1165
 
@@ -1050,7 +1171,7 @@ static int commit_graph_write(
1050
1171
  } else {
1051
1172
  word = htonl(0x80000000u | extra_edge_list_count);
1052
1173
  }
1053
- error = git_buf_put(&commit_data, (const char *)&word, sizeof(word));
1174
+ error = git_str_put(&commit_data, (const char *)&word, sizeof(word));
1054
1175
  if (error < 0)
1055
1176
  goto cleanup;
1056
1177
 
@@ -1061,7 +1182,7 @@ static int commit_graph_write(
1061
1182
  packed_commit->parent_indices, parent_i);
1062
1183
  word = htonl((uint32_t)(*packed_index | (parent_i + 1 == parentcount ? 0x80000000u : 0)));
1063
1184
 
1064
- error = git_buf_put(&extra_edge_list,
1185
+ error = git_str_put(&extra_edge_list,
1065
1186
  (const char *)&word,
1066
1187
  sizeof(word));
1067
1188
  if (error < 0)
@@ -1074,19 +1195,19 @@ static int commit_graph_write(
1074
1195
  commit_time = (uint64_t)packed_commit->commit_time;
1075
1196
  if (generation > GIT_COMMIT_GRAPH_GENERATION_NUMBER_MAX)
1076
1197
  generation = GIT_COMMIT_GRAPH_GENERATION_NUMBER_MAX;
1077
- word = ntohl((uint32_t)((generation << 2) | ((commit_time >> 32ull) & 0x3ull)));
1078
- error = git_buf_put(&commit_data, (const char *)&word, sizeof(word));
1198
+ word = ntohl((uint32_t)((generation << 2) | (((uint32_t)(commit_time >> 32)) & 0x3) ));
1199
+ error = git_str_put(&commit_data, (const char *)&word, sizeof(word));
1079
1200
  if (error < 0)
1080
1201
  goto cleanup;
1081
- word = ntohl((uint32_t)(commit_time & 0xffffffffull));
1082
- error = git_buf_put(&commit_data, (const char *)&word, sizeof(word));
1202
+ word = ntohl((uint32_t)(commit_time & 0xfffffffful));
1203
+ error = git_str_put(&commit_data, (const char *)&word, sizeof(word));
1083
1204
  if (error < 0)
1084
1205
  goto cleanup;
1085
1206
  }
1086
1207
 
1087
1208
  /* Write the header. */
1088
1209
  hdr.chunks = 3;
1089
- if (git_buf_len(&extra_edge_list) > 0)
1210
+ if (git_str_len(&extra_edge_list) > 0)
1090
1211
  hdr.chunks++;
1091
1212
  error = write_cb((const char *)&hdr, sizeof(hdr), cb_data);
1092
1213
  if (error < 0)
@@ -1101,17 +1222,17 @@ static int commit_graph_write(
1101
1222
  error = write_chunk_header(COMMIT_GRAPH_OID_LOOKUP_ID, offset, write_cb, cb_data);
1102
1223
  if (error < 0)
1103
1224
  goto cleanup;
1104
- offset += git_buf_len(&oid_lookup);
1225
+ offset += git_str_len(&oid_lookup);
1105
1226
  error = write_chunk_header(COMMIT_GRAPH_COMMIT_DATA_ID, offset, write_cb, cb_data);
1106
1227
  if (error < 0)
1107
1228
  goto cleanup;
1108
- offset += git_buf_len(&commit_data);
1109
- if (git_buf_len(&extra_edge_list) > 0) {
1229
+ offset += git_str_len(&commit_data);
1230
+ if (git_str_len(&extra_edge_list) > 0) {
1110
1231
  error = write_chunk_header(
1111
1232
  COMMIT_GRAPH_EXTRA_EDGE_LIST_ID, offset, write_cb, cb_data);
1112
1233
  if (error < 0)
1113
1234
  goto cleanup;
1114
- offset += git_buf_len(&extra_edge_list);
1235
+ offset += git_str_len(&extra_edge_list);
1115
1236
  }
1116
1237
  error = write_chunk_header(0, offset, write_cb, cb_data);
1117
1238
  if (error < 0)
@@ -1121,28 +1242,31 @@ static int commit_graph_write(
1121
1242
  error = write_cb((const char *)oid_fanout, sizeof(oid_fanout), cb_data);
1122
1243
  if (error < 0)
1123
1244
  goto cleanup;
1124
- error = write_cb(git_buf_cstr(&oid_lookup), git_buf_len(&oid_lookup), cb_data);
1245
+ error = write_cb(git_str_cstr(&oid_lookup), git_str_len(&oid_lookup), cb_data);
1125
1246
  if (error < 0)
1126
1247
  goto cleanup;
1127
- error = write_cb(git_buf_cstr(&commit_data), git_buf_len(&commit_data), cb_data);
1248
+ error = write_cb(git_str_cstr(&commit_data), git_str_len(&commit_data), cb_data);
1128
1249
  if (error < 0)
1129
1250
  goto cleanup;
1130
- error = write_cb(git_buf_cstr(&extra_edge_list), git_buf_len(&extra_edge_list), cb_data);
1251
+ error = write_cb(git_str_cstr(&extra_edge_list), git_str_len(&extra_edge_list), cb_data);
1131
1252
  if (error < 0)
1132
1253
  goto cleanup;
1133
1254
 
1134
1255
  /* Finalize the checksum and write the trailer. */
1135
- error = git_hash_final(&cgraph_checksum, &ctx);
1256
+ error = git_hash_final(checksum, &ctx);
1136
1257
  if (error < 0)
1137
1258
  goto cleanup;
1138
- error = write_cb((const char *)&cgraph_checksum, sizeof(cgraph_checksum), cb_data);
1259
+
1260
+ hash_cb_data.ctx = NULL;
1261
+
1262
+ error = write_cb((char *)checksum, checksum_size, cb_data);
1139
1263
  if (error < 0)
1140
1264
  goto cleanup;
1141
1265
 
1142
1266
  cleanup:
1143
- git_buf_dispose(&oid_lookup);
1144
- git_buf_dispose(&commit_data);
1145
- git_buf_dispose(&extra_edge_list);
1267
+ git_str_dispose(&oid_lookup);
1268
+ git_str_dispose(&commit_data);
1269
+ git_str_dispose(&extra_edge_list);
1146
1270
  git_hash_ctx_cleanup(&ctx);
1147
1271
  return error;
1148
1272
  }
@@ -1153,39 +1277,22 @@ static int commit_graph_write_filebuf(const char *buf, size_t size, void *data)
1153
1277
  return git_filebuf_write(f, buf, size);
1154
1278
  }
1155
1279
 
1156
- int git_commit_graph_writer_options_init(
1157
- git_commit_graph_writer_options *opts,
1158
- unsigned int version)
1159
- {
1160
- GIT_INIT_STRUCTURE_FROM_TEMPLATE(
1161
- opts,
1162
- version,
1163
- git_commit_graph_writer_options,
1164
- GIT_COMMIT_GRAPH_WRITER_OPTIONS_INIT);
1165
- return 0;
1166
- }
1167
-
1168
- int git_commit_graph_writer_commit(
1169
- git_commit_graph_writer *w,
1170
- git_commit_graph_writer_options *opts)
1280
+ int git_commit_graph_writer_commit(git_commit_graph_writer *w)
1171
1281
  {
1172
1282
  int error;
1173
1283
  int filebuf_flags = GIT_FILEBUF_DO_NOT_BUFFER;
1174
- git_buf commit_graph_path = GIT_BUF_INIT;
1284
+ git_str commit_graph_path = GIT_STR_INIT;
1175
1285
  git_filebuf output = GIT_FILEBUF_INIT;
1176
1286
 
1177
- /* TODO: support options and fill in defaults. */
1178
- GIT_UNUSED(opts);
1179
-
1180
- error = git_buf_joinpath(
1181
- &commit_graph_path, git_buf_cstr(&w->objects_info_dir), "commit-graph");
1287
+ error = git_str_joinpath(
1288
+ &commit_graph_path, git_str_cstr(&w->objects_info_dir), "commit-graph");
1182
1289
  if (error < 0)
1183
1290
  return error;
1184
1291
 
1185
1292
  if (git_repository__fsync_gitdir)
1186
1293
  filebuf_flags |= GIT_FILEBUF_FSYNC;
1187
- error = git_filebuf_open(&output, git_buf_cstr(&commit_graph_path), filebuf_flags, 0644);
1188
- git_buf_dispose(&commit_graph_path);
1294
+ error = git_filebuf_open(&output, git_str_cstr(&commit_graph_path), filebuf_flags, 0644);
1295
+ git_str_dispose(&commit_graph_path);
1189
1296
  if (error < 0)
1190
1297
  return error;
1191
1298
 
@@ -1199,11 +1306,15 @@ int git_commit_graph_writer_commit(
1199
1306
  }
1200
1307
 
1201
1308
  int git_commit_graph_writer_dump(
1202
- git_buf *cgraph,
1203
- git_commit_graph_writer *w,
1204
- git_commit_graph_writer_options *opts)
1309
+ git_buf *cgraph,
1310
+ git_commit_graph_writer *w)
1311
+ {
1312
+ GIT_BUF_WRAP_PRIVATE(cgraph, git_commit_graph__writer_dump, w);
1313
+ }
1314
+
1315
+ int git_commit_graph__writer_dump(
1316
+ git_str *cgraph,
1317
+ git_commit_graph_writer *w)
1205
1318
  {
1206
- /* TODO: support options. */
1207
- GIT_UNUSED(opts);
1208
1319
  return commit_graph_write(w, commit_graph_write_buf, cgraph);
1209
1320
  }