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
@@ -16,6 +16,7 @@
16
16
  #include "filter.h"
17
17
  #include "repository.h"
18
18
  #include "blob.h"
19
+ #include "oid.h"
19
20
 
20
21
  #include "git2/odb_backend.h"
21
22
  #include "git2/oid.h"
@@ -58,10 +59,7 @@ static int error_null_oid(int error, const char *message);
58
59
 
59
60
  static git_object_t odb_hardcoded_type(const git_oid *id)
60
61
  {
61
- static git_oid empty_tree = {{ 0x4b, 0x82, 0x5d, 0xc6, 0x42, 0xcb, 0x6e, 0xb9, 0xa0, 0x60,
62
- 0xe5, 0x4b, 0xf8, 0xd6, 0x92, 0x88, 0xfb, 0xee, 0x49, 0x04 }};
63
-
64
- if (!git_oid_cmp(id, &empty_tree))
62
+ if (!git_oid_cmp(id, &git_oid__empty_tree_sha1))
65
63
  return GIT_OBJECT_TREE;
66
64
 
67
65
  return GIT_OBJECT_INVALID;
@@ -107,11 +105,12 @@ int git_odb__format_object_header(
107
105
  return 0;
108
106
  }
109
107
 
110
- int git_odb__hashobj(git_oid *id, git_rawobj *obj)
108
+ int git_odb__hashobj(git_oid *id, git_rawobj *obj, git_oid_t oid_type)
111
109
  {
112
- git_buf_vec vec[2];
110
+ git_str_vec vec[2];
113
111
  char header[64];
114
112
  size_t hdrlen;
113
+ git_hash_algorithm_t algorithm;
115
114
  int error;
116
115
 
117
116
  GIT_ASSERT_ARG(id);
@@ -122,6 +121,11 @@ int git_odb__hashobj(git_oid *id, git_rawobj *obj)
122
121
  return -1;
123
122
  }
124
123
 
124
+ if (!(algorithm = git_oid_algorithm(oid_type))) {
125
+ git_error_set(GIT_ERROR_INVALID, "unknown oid type");
126
+ return -1;
127
+ }
128
+
125
129
  if (!obj->data && obj->len != 0) {
126
130
  git_error_set(GIT_ERROR_INVALID, "invalid object");
127
131
  return -1;
@@ -136,7 +140,11 @@ int git_odb__hashobj(git_oid *id, git_rawobj *obj)
136
140
  vec[1].data = obj->data;
137
141
  vec[1].len = obj->len;
138
142
 
139
- return git_hash_vec(id, vec, 2);
143
+ #ifdef GIT_EXPERIMENTAL_SHA256
144
+ id->type = oid_type;
145
+ #endif
146
+
147
+ return git_hash_vec(id->id, vec, 2, algorithm);
140
148
  }
141
149
 
142
150
 
@@ -197,24 +205,35 @@ void git_odb_object_free(git_odb_object *object)
197
205
  git_cached_obj_decref(object);
198
206
  }
199
207
 
200
- int git_odb__hashfd(git_oid *out, git_file fd, size_t size, git_object_t type)
208
+ int git_odb__hashfd(
209
+ git_oid *out,
210
+ git_file fd,
211
+ size_t size,
212
+ git_object_t object_type,
213
+ git_oid_t oid_type)
201
214
  {
202
215
  size_t hdr_len;
203
- char hdr[64], buffer[FILEIO_BUFSIZE];
216
+ char hdr[64], buffer[GIT_BUFSIZE_FILEIO];
204
217
  git_hash_ctx ctx;
218
+ git_hash_algorithm_t algorithm;
205
219
  ssize_t read_len = 0;
206
220
  int error = 0;
207
221
 
208
- if (!git_object_typeisloose(type)) {
222
+ if (!git_object_typeisloose(object_type)) {
209
223
  git_error_set(GIT_ERROR_INVALID, "invalid object type for hash");
210
224
  return -1;
211
225
  }
212
226
 
213
- if ((error = git_hash_ctx_init(&ctx)) < 0)
227
+ if (!(algorithm = git_oid_algorithm(oid_type))) {
228
+ git_error_set(GIT_ERROR_INVALID, "unknown oid type");
229
+ return -1;
230
+ }
231
+
232
+ if ((error = git_hash_ctx_init(&ctx, algorithm)) < 0)
214
233
  return error;
215
234
 
216
235
  if ((error = git_odb__format_object_header(&hdr_len, hdr,
217
- sizeof(hdr), size, type)) < 0)
236
+ sizeof(hdr), size, object_type)) < 0)
218
237
  goto done;
219
238
 
220
239
  if ((error = git_hash_update(&ctx, hdr, hdr_len)) < 0)
@@ -237,7 +256,11 @@ int git_odb__hashfd(git_oid *out, git_file fd, size_t size, git_object_t type)
237
256
  goto done;
238
257
  }
239
258
 
240
- error = git_hash_final(out, &ctx);
259
+ error = git_hash_final(out->id, &ctx);
260
+
261
+ #ifdef GIT_EXPERIMENTAL_SHA256
262
+ out->type = oid_type;
263
+ #endif
241
264
 
242
265
  done:
243
266
  git_hash_ctx_cleanup(&ctx);
@@ -245,39 +268,44 @@ done:
245
268
  }
246
269
 
247
270
  int git_odb__hashfd_filtered(
248
- git_oid *out, git_file fd, size_t size, git_object_t type, git_filter_list *fl)
271
+ git_oid *out,
272
+ git_file fd,
273
+ size_t size,
274
+ git_object_t object_type,
275
+ git_oid_t oid_type,
276
+ git_filter_list *fl)
249
277
  {
250
278
  int error;
251
- git_buf raw = GIT_BUF_INIT;
279
+ git_str raw = GIT_STR_INIT;
252
280
 
253
281
  if (!fl)
254
- return git_odb__hashfd(out, fd, size, type);
282
+ return git_odb__hashfd(out, fd, size, object_type, oid_type);
255
283
 
256
284
  /* size of data is used in header, so we have to read the whole file
257
285
  * into memory to apply filters before beginning to calculate the hash
258
286
  */
259
287
 
260
288
  if (!(error = git_futils_readbuffer_fd(&raw, fd, size))) {
261
- git_buf post = GIT_BUF_INIT;
289
+ git_str post = GIT_STR_INIT;
262
290
 
263
291
  error = git_filter_list__convert_buf(&post, fl, &raw);
264
292
 
265
293
  if (!error)
266
- error = git_odb_hash(out, post.ptr, post.size, type);
294
+ error = git_odb__hash(out, post.ptr, post.size, object_type, oid_type);
267
295
 
268
- git_buf_dispose(&post);
296
+ git_str_dispose(&post);
269
297
  }
270
298
 
271
299
  return error;
272
300
  }
273
301
 
274
- int git_odb__hashlink(git_oid *out, const char *path)
302
+ int git_odb__hashlink(git_oid *out, const char *path, git_oid_t oid_type)
275
303
  {
276
304
  struct stat st;
277
305
  int size;
278
306
  int result;
279
307
 
280
- if (git_path_lstat(path, &st) < 0)
308
+ if (git_fs_path_lstat(path, &st) < 0)
281
309
  return -1;
282
310
 
283
311
  if (!git__is_int(st.st_size) || (int)st.st_size < 0) {
@@ -305,20 +333,24 @@ int git_odb__hashlink(git_oid *out, const char *path)
305
333
  GIT_ASSERT(read_len <= size);
306
334
  link_data[read_len] = '\0';
307
335
 
308
- result = git_odb_hash(out, link_data, read_len, GIT_OBJECT_BLOB);
336
+ result = git_odb__hash(out, link_data, read_len, GIT_OBJECT_BLOB, oid_type);
309
337
  git__free(link_data);
310
338
  } else {
311
339
  int fd = git_futils_open_ro(path);
312
340
  if (fd < 0)
313
341
  return -1;
314
- result = git_odb__hashfd(out, fd, size, GIT_OBJECT_BLOB);
342
+ result = git_odb__hashfd(out, fd, size, GIT_OBJECT_BLOB, oid_type);
315
343
  p_close(fd);
316
344
  }
317
345
 
318
346
  return result;
319
347
  }
320
348
 
321
- int git_odb_hashfile(git_oid *out, const char *path, git_object_t type)
349
+ int git_odb__hashfile(
350
+ git_oid *out,
351
+ const char *path,
352
+ git_object_t object_type,
353
+ git_oid_t oid_type)
322
354
  {
323
355
  uint64_t size;
324
356
  int fd, error = 0;
@@ -335,14 +367,38 @@ int git_odb_hashfile(git_oid *out, const char *path, git_object_t type)
335
367
  goto done;
336
368
  }
337
369
 
338
- error = git_odb__hashfd(out, fd, (size_t)size, type);
370
+ error = git_odb__hashfd(out, fd, (size_t)size, object_type, oid_type);
339
371
 
340
372
  done:
341
373
  p_close(fd);
342
374
  return error;
343
375
  }
344
376
 
345
- int git_odb_hash(git_oid *id, const void *data, size_t len, git_object_t type)
377
+ #ifdef GIT_EXPERIMENTAL_SHA256
378
+ int git_odb_hashfile(
379
+ git_oid *out,
380
+ const char *path,
381
+ git_object_t object_type,
382
+ git_oid_t oid_type)
383
+ {
384
+ return git_odb__hashfile(out, path, object_type, oid_type);
385
+ }
386
+ #else
387
+ int git_odb_hashfile(
388
+ git_oid *out,
389
+ const char *path,
390
+ git_object_t object_type)
391
+ {
392
+ return git_odb__hashfile(out, path, object_type, GIT_OID_SHA1);
393
+ }
394
+ #endif
395
+
396
+ int git_odb__hash(
397
+ git_oid *id,
398
+ const void *data,
399
+ size_t len,
400
+ git_object_t object_type,
401
+ git_oid_t oid_type)
346
402
  {
347
403
  git_rawobj raw;
348
404
 
@@ -350,11 +406,32 @@ int git_odb_hash(git_oid *id, const void *data, size_t len, git_object_t type)
350
406
 
351
407
  raw.data = (void *)data;
352
408
  raw.len = len;
353
- raw.type = type;
409
+ raw.type = object_type;
354
410
 
355
- return git_odb__hashobj(id, &raw);
411
+ return git_odb__hashobj(id, &raw, oid_type);
356
412
  }
357
413
 
414
+ #ifdef GIT_EXPERIMENTAL_SHA256
415
+ int git_odb_hash(
416
+ git_oid *out,
417
+ const void *data,
418
+ size_t len,
419
+ git_object_t object_type,
420
+ git_oid_t oid_type)
421
+ {
422
+ return git_odb__hash(out, data, len, object_type, oid_type);
423
+ }
424
+ #else
425
+ int git_odb_hash(
426
+ git_oid *out,
427
+ const void *data,
428
+ size_t len,
429
+ git_object_t type)
430
+ {
431
+ return git_odb__hash(out, data, len, type, GIT_OID_SHA1);
432
+ }
433
+ #endif
434
+
358
435
  /**
359
436
  * FAKE WSTREAM
360
437
  */
@@ -444,11 +521,28 @@ static int backend_sort_cmp(const void *a, const void *b)
444
521
  return (backend_b->priority - backend_a->priority);
445
522
  }
446
523
 
447
- int git_odb_new(git_odb **out)
524
+ static void normalize_options(
525
+ git_odb_options *opts,
526
+ const git_odb_options *given_opts)
527
+ {
528
+ git_odb_options init = GIT_ODB_OPTIONS_INIT;
529
+
530
+ if (given_opts)
531
+ memcpy(opts, given_opts, sizeof(git_odb_options));
532
+ else
533
+ memcpy(opts, &init, sizeof(git_odb_options));
534
+
535
+ if (!opts->oid_type)
536
+ opts->oid_type = GIT_OID_DEFAULT;
537
+ }
538
+
539
+ int git_odb__new(git_odb **out, const git_odb_options *opts)
448
540
  {
449
541
  git_odb *db = git__calloc(1, sizeof(*db));
450
542
  GIT_ERROR_CHECK_ALLOC(db);
451
543
 
544
+ normalize_options(&db->options, opts);
545
+
452
546
  if (git_mutex_init(&db->lock) < 0) {
453
547
  git__free(db);
454
548
  return -1;
@@ -470,6 +564,18 @@ int git_odb_new(git_odb **out)
470
564
  return 0;
471
565
  }
472
566
 
567
+ #ifdef GIT_EXPERIMENTAL_SHA256
568
+ int git_odb_new(git_odb **out, const git_odb_options *opts)
569
+ {
570
+ return git_odb__new(out, opts);
571
+ }
572
+ #else
573
+ int git_odb_new(git_odb **out)
574
+ {
575
+ return git_odb__new(out, NULL);
576
+ }
577
+ #endif
578
+
473
579
  static int add_backend_internal(
474
580
  git_odb *odb, git_odb_backend *backend,
475
581
  int priority, bool is_alternate, ino_t disk_inode)
@@ -577,6 +683,8 @@ int git_odb__add_default_backends(
577
683
  struct stat st;
578
684
  ino_t inode;
579
685
  git_odb_backend *loose, *packed;
686
+ git_odb_backend_loose_options loose_opts = GIT_ODB_BACKEND_LOOSE_OPTIONS_INIT;
687
+ git_odb_backend_pack_options pack_opts = GIT_ODB_BACKEND_PACK_OPTIONS_INIT;
580
688
 
581
689
  /* TODO: inodes are not really relevant on Win32, so we need to find
582
690
  * a cross-platform workaround for this */
@@ -611,21 +719,37 @@ int git_odb__add_default_backends(
611
719
  git_mutex_unlock(&db->lock);
612
720
  #endif
613
721
 
722
+ if (db->do_fsync)
723
+ loose_opts.flags |= GIT_ODB_BACKEND_LOOSE_FSYNC;
724
+
725
+ loose_opts.oid_type = db->options.oid_type;
726
+ pack_opts.oid_type = db->options.oid_type;
727
+
614
728
  /* add the loose object backend */
615
- if (git_odb_backend_loose(&loose, objects_dir, -1, db->do_fsync, 0, 0) < 0 ||
729
+ if (git_odb__backend_loose(&loose, objects_dir, &loose_opts) < 0 ||
616
730
  add_backend_internal(db, loose, git_odb__loose_priority, as_alternates, inode) < 0)
617
731
  return -1;
618
732
 
619
733
  /* add the packed file backend */
620
- if (git_odb_backend_pack(&packed, objects_dir) < 0 ||
621
- add_backend_internal(db, packed, git_odb__packed_priority, as_alternates, inode) < 0)
734
+ #ifdef GIT_EXPERIMENTAL_SHA256
735
+ if (git_odb_backend_pack(&packed, objects_dir, &pack_opts) < 0)
736
+ return -1;
737
+ #else
738
+ GIT_UNUSED(pack_opts);
739
+
740
+ if (git_odb_backend_pack(&packed, objects_dir) < 0)
741
+ return -1;
742
+ #endif
743
+
744
+ if (add_backend_internal(db, packed, git_odb__packed_priority, as_alternates, inode) < 0)
622
745
  return -1;
623
746
 
624
747
  if (git_mutex_lock(&db->lock) < 0) {
625
748
  git_error_set(GIT_ERROR_ODB, "failed to acquire the odb lock");
626
749
  return -1;
627
750
  }
628
- if (!db->cgraph && git_commit_graph_new(&db->cgraph, objects_dir, false) < 0) {
751
+ if (!db->cgraph &&
752
+ git_commit_graph_new(&db->cgraph, objects_dir, false, db->options.oid_type) < 0) {
629
753
  git_mutex_unlock(&db->lock);
630
754
  return -1;
631
755
  }
@@ -636,8 +760,8 @@ int git_odb__add_default_backends(
636
760
 
637
761
  static int load_alternates(git_odb *odb, const char *objects_dir, int alternate_depth)
638
762
  {
639
- git_buf alternates_path = GIT_BUF_INIT;
640
- git_buf alternates_buf = GIT_BUF_INIT;
763
+ git_str alternates_path = GIT_STR_INIT;
764
+ git_str alternates_buf = GIT_STR_INIT;
641
765
  char *buffer;
642
766
  const char *alternate;
643
767
  int result = 0;
@@ -646,16 +770,16 @@ static int load_alternates(git_odb *odb, const char *objects_dir, int alternate_
646
770
  if (alternate_depth > GIT_ALTERNATES_MAX_DEPTH)
647
771
  return 0;
648
772
 
649
- if (git_buf_joinpath(&alternates_path, objects_dir, GIT_ALTERNATES_FILE) < 0)
773
+ if (git_str_joinpath(&alternates_path, objects_dir, GIT_ALTERNATES_FILE) < 0)
650
774
  return -1;
651
775
 
652
- if (git_path_exists(alternates_path.ptr) == false) {
653
- git_buf_dispose(&alternates_path);
776
+ if (git_fs_path_exists(alternates_path.ptr) == false) {
777
+ git_str_dispose(&alternates_path);
654
778
  return 0;
655
779
  }
656
780
 
657
781
  if (git_futils_readbuffer(&alternates_buf, alternates_path.ptr) < 0) {
658
- git_buf_dispose(&alternates_path);
782
+ git_str_dispose(&alternates_path);
659
783
  return -1;
660
784
  }
661
785
 
@@ -672,17 +796,17 @@ static int load_alternates(git_odb *odb, const char *objects_dir, int alternate_
672
796
  * the current repository.
673
797
  */
674
798
  if (*alternate == '.' && !alternate_depth) {
675
- if ((result = git_buf_joinpath(&alternates_path, objects_dir, alternate)) < 0)
799
+ if ((result = git_str_joinpath(&alternates_path, objects_dir, alternate)) < 0)
676
800
  break;
677
- alternate = git_buf_cstr(&alternates_path);
801
+ alternate = git_str_cstr(&alternates_path);
678
802
  }
679
803
 
680
804
  if ((result = git_odb__add_default_backends(odb, alternate, true, alternate_depth + 1)) < 0)
681
805
  break;
682
806
  }
683
807
 
684
- git_buf_dispose(&alternates_path);
685
- git_buf_dispose(&alternates_buf);
808
+ git_str_dispose(&alternates_path);
809
+ git_str_dispose(&alternates_buf);
686
810
 
687
811
  return result;
688
812
  }
@@ -709,7 +833,10 @@ int git_odb_set_commit_graph(git_odb *odb, git_commit_graph *cgraph)
709
833
  return error;
710
834
  }
711
835
 
712
- int git_odb_open(git_odb **out, const char *objects_dir)
836
+ int git_odb__open(
837
+ git_odb **out,
838
+ const char *objects_dir,
839
+ const git_odb_options *opts)
713
840
  {
714
841
  git_odb *db;
715
842
 
@@ -718,7 +845,7 @@ int git_odb_open(git_odb **out, const char *objects_dir)
718
845
 
719
846
  *out = NULL;
720
847
 
721
- if (git_odb_new(&db) < 0)
848
+ if (git_odb__new(&db, opts) < 0)
722
849
  return -1;
723
850
 
724
851
  if (git_odb__add_default_backends(db, objects_dir, 0, 0) < 0) {
@@ -730,6 +857,25 @@ int git_odb_open(git_odb **out, const char *objects_dir)
730
857
  return 0;
731
858
  }
732
859
 
860
+ #ifdef GIT_EXPERIMENTAL_SHA256
861
+
862
+ int git_odb_open(
863
+ git_odb **out,
864
+ const char *objects_dir,
865
+ const git_odb_options *opts)
866
+ {
867
+ return git_odb__open(out, objects_dir, opts);
868
+ }
869
+
870
+ #else
871
+
872
+ int git_odb_open(git_odb **out, const char *objects_dir)
873
+ {
874
+ return git_odb__open(out, objects_dir, NULL);
875
+ }
876
+
877
+ #endif
878
+
733
879
  int git_odb__set_caps(git_odb *odb, int caps)
734
880
  {
735
881
  if (caps == GIT_ODB_CAP_FROM_OWNER) {
@@ -769,7 +915,7 @@ static void odb_free(git_odb *db)
769
915
  git_mutex_unlock(&db->lock);
770
916
 
771
917
  git_commit_graph_free(db->cgraph);
772
- git_vector_free(&db->backends);
918
+ git_vector_dispose(&db->backends);
773
919
  git_cache_dispose(&db->own_cache);
774
920
  git_mutex_free(&db->lock);
775
921
 
@@ -882,6 +1028,11 @@ int git_odb__freshen(git_odb *db, const git_oid *id)
882
1028
  }
883
1029
 
884
1030
  int git_odb_exists(git_odb *db, const git_oid *id)
1031
+ {
1032
+ return git_odb_exists_ext(db, id, 0);
1033
+ }
1034
+
1035
+ int git_odb_exists_ext(git_odb *db, const git_oid *id, unsigned int flags)
885
1036
  {
886
1037
  git_odb_object *object;
887
1038
 
@@ -899,7 +1050,7 @@ int git_odb_exists(git_odb *db, const git_oid *id)
899
1050
  if (odb_exists_1(db, id, false))
900
1051
  return 1;
901
1052
 
902
- if (!git_odb_refresh(db))
1053
+ if (!(flags & GIT_ODB_LOOKUP_NO_REFRESH) && !git_odb_refresh(db))
903
1054
  return odb_exists_1(db, id, true);
904
1055
 
905
1056
  /* Failed to refresh, hence not found */
@@ -911,7 +1062,7 @@ static int odb_exists_prefix_1(git_oid *out, git_odb *db,
911
1062
  {
912
1063
  size_t i;
913
1064
  int error = GIT_ENOTFOUND, num_found = 0;
914
- git_oid last_found = {{0}}, found;
1065
+ git_oid last_found = GIT_OID_NONE, found;
915
1066
 
916
1067
  if ((error = git_mutex_lock(&db->lock)) < 0) {
917
1068
  git_error_set(GIT_ERROR_ODB, "failed to acquire the odb lock");
@@ -962,7 +1113,7 @@ int git_odb_exists_prefix(
962
1113
  git_oid *out, git_odb *db, const git_oid *short_id, size_t len)
963
1114
  {
964
1115
  int error;
965
- git_oid key = {{0}};
1116
+ git_oid key = GIT_OID_NONE;
966
1117
 
967
1118
  GIT_ASSERT_ARG(db);
968
1119
  GIT_ASSERT_ARG(short_id);
@@ -970,7 +1121,7 @@ int git_odb_exists_prefix(
970
1121
  if (len < GIT_OID_MINPREFIXLEN)
971
1122
  return git_odb__error_ambiguous("prefix length too short");
972
1123
 
973
- if (len >= GIT_OID_HEXSZ) {
1124
+ if (len >= git_oid_hexsize(db->options.oid_type)) {
974
1125
  if (git_odb_exists(db, short_id)) {
975
1126
  if (out)
976
1127
  git_oid_cpy(out, short_id);
@@ -999,11 +1150,13 @@ int git_odb_expand_ids(
999
1150
  git_odb_expand_id *ids,
1000
1151
  size_t count)
1001
1152
  {
1002
- size_t i;
1153
+ size_t hex_size, i;
1003
1154
 
1004
1155
  GIT_ASSERT_ARG(db);
1005
1156
  GIT_ASSERT_ARG(ids);
1006
1157
 
1158
+ hex_size = git_oid_hexsize(db->options.oid_type);
1159
+
1007
1160
  for (i = 0; i < count; i++) {
1008
1161
  git_odb_expand_id *query = &ids[i];
1009
1162
  int error = GIT_EAMBIGUOUS;
@@ -1012,13 +1165,13 @@ int git_odb_expand_ids(
1012
1165
  query->type = GIT_OBJECT_ANY;
1013
1166
 
1014
1167
  /* if we have a short OID, expand it first */
1015
- if (query->length >= GIT_OID_MINPREFIXLEN && query->length < GIT_OID_HEXSZ) {
1168
+ if (query->length >= GIT_OID_MINPREFIXLEN && query->length < hex_size) {
1016
1169
  git_oid actual_id;
1017
1170
 
1018
1171
  error = odb_exists_prefix_1(&actual_id, db, &query->id, query->length, false);
1019
1172
  if (!error) {
1020
1173
  git_oid_cpy(&query->id, &actual_id);
1021
- query->length = GIT_OID_HEXSZ;
1174
+ query->length = (unsigned short)hex_size;
1022
1175
  }
1023
1176
  }
1024
1177
 
@@ -1026,7 +1179,7 @@ int git_odb_expand_ids(
1026
1179
  * now we ought to have a 40-char OID, either because we've expanded it
1027
1180
  * or because the user passed a full OID. Ensure its type is right.
1028
1181
  */
1029
- if (query->length >= GIT_OID_HEXSZ) {
1182
+ if (query->length >= hex_size) {
1030
1183
  git_object_t actual_type;
1031
1184
 
1032
1185
  error = odb_otype_fast(&actual_type, db, &query->id);
@@ -1046,7 +1199,7 @@ int git_odb_expand_ids(
1046
1199
  /* the object is missing or ambiguous */
1047
1200
  case GIT_ENOTFOUND:
1048
1201
  case GIT_EAMBIGUOUS:
1049
- memset(&query->id, 0, sizeof(git_oid));
1202
+ git_oid_clear(&query->id, db->options.oid_type);
1050
1203
  query->length = 0;
1051
1204
  query->type = 0;
1052
1205
  break;
@@ -1064,7 +1217,7 @@ int git_odb_expand_ids(
1064
1217
  int git_odb_read_header(size_t *len_p, git_object_t *type_p, git_odb *db, const git_oid *id)
1065
1218
  {
1066
1219
  int error;
1067
- git_odb_object *object;
1220
+ git_odb_object *object = NULL;
1068
1221
 
1069
1222
  error = git_odb__read_header_or_object(&object, len_p, type_p, db, id);
1070
1223
 
@@ -1154,7 +1307,7 @@ int git_odb__read_header_or_object(
1154
1307
  error = odb_read_header_1(len_p, type_p, db, id, true);
1155
1308
 
1156
1309
  if (error == GIT_ENOTFOUND)
1157
- return git_odb__error_notfound("cannot read header for", id, GIT_OID_HEXSZ);
1310
+ return git_odb__error_notfound("cannot read header for", id, git_oid_hexsize(db->options.oid_type));
1158
1311
 
1159
1312
  /* we found the header; return early */
1160
1313
  if (!error)
@@ -1176,8 +1329,11 @@ int git_odb__read_header_or_object(
1176
1329
  return error;
1177
1330
  }
1178
1331
 
1179
- static int odb_read_1(git_odb_object **out, git_odb *db, const git_oid *id,
1180
- bool only_refreshed)
1332
+ static int odb_read_1(
1333
+ git_odb_object **out,
1334
+ git_odb *db,
1335
+ const git_oid *id,
1336
+ bool only_refreshed)
1181
1337
  {
1182
1338
  size_t i;
1183
1339
  git_rawobj raw;
@@ -1221,7 +1377,7 @@ static int odb_read_1(git_odb_object **out, git_odb *db, const git_oid *id,
1221
1377
  return GIT_ENOTFOUND;
1222
1378
 
1223
1379
  if (git_odb__strict_hash_verification) {
1224
- if ((error = git_odb_hash(&hashed, raw.data, raw.len, raw.type)) < 0)
1380
+ if ((error = git_odb__hash(&hashed, raw.data, raw.len, raw.type, db->options.oid_type)) < 0)
1225
1381
  goto out;
1226
1382
 
1227
1383
  if (!git_oid_equal(id, &hashed)) {
@@ -1265,7 +1421,7 @@ int git_odb_read(git_odb_object **out, git_odb *db, const git_oid *id)
1265
1421
  error = odb_read_1(out, db, id, true);
1266
1422
 
1267
1423
  if (error == GIT_ENOTFOUND)
1268
- return git_odb__error_notfound("no match for id", id, GIT_OID_HEXSZ);
1424
+ return git_odb__error_notfound("no match for id", id, git_oid_hexsize(git_oid_type(id)));
1269
1425
 
1270
1426
  return error;
1271
1427
  }
@@ -1302,7 +1458,7 @@ static int read_prefix_1(git_odb_object **out, git_odb *db,
1302
1458
  {
1303
1459
  size_t i;
1304
1460
  int error = 0;
1305
- git_oid found_full_oid = {{0}};
1461
+ git_oid found_full_oid = GIT_OID_NONE;
1306
1462
  git_rawobj raw = {0};
1307
1463
  void *data = NULL;
1308
1464
  bool found = false;
@@ -1337,15 +1493,20 @@ static int read_prefix_1(git_odb_object **out, git_odb *db,
1337
1493
  data = raw.data;
1338
1494
 
1339
1495
  if (found && git_oid__cmp(&full_oid, &found_full_oid)) {
1340
- git_buf buf = GIT_BUF_INIT;
1496
+ git_str buf = GIT_STR_INIT;
1497
+ const char *idstr;
1498
+
1499
+ if ((idstr = git_oid_tostr_s(&full_oid)) == NULL) {
1500
+ git_str_puts(&buf, "failed to parse object id");
1501
+ } else {
1502
+ git_str_printf(&buf, "multiple matches for prefix: %s", idstr);
1341
1503
 
1342
- git_buf_printf(&buf, "multiple matches for prefix: %s",
1343
- git_oid_tostr_s(&full_oid));
1344
- git_buf_printf(&buf, " %s",
1345
- git_oid_tostr_s(&found_full_oid));
1504
+ if ((idstr = git_oid_tostr_s(&found_full_oid)) != NULL)
1505
+ git_str_printf(&buf, " %s", idstr);
1506
+ }
1346
1507
 
1347
1508
  error = git_odb__error_ambiguous(buf.ptr);
1348
- git_buf_dispose(&buf);
1509
+ git_str_dispose(&buf);
1349
1510
  git_mutex_unlock(&db->lock);
1350
1511
  goto out;
1351
1512
  }
@@ -1362,7 +1523,7 @@ static int read_prefix_1(git_odb_object **out, git_odb *db,
1362
1523
  if (git_odb__strict_hash_verification) {
1363
1524
  git_oid hash;
1364
1525
 
1365
- if ((error = git_odb_hash(&hash, raw.data, raw.len, raw.type)) < 0)
1526
+ if ((error = git_odb__hash(&hash, raw.data, raw.len, raw.type, db->options.oid_type)) < 0)
1366
1527
  goto out;
1367
1528
 
1368
1529
  if (!git_oid_equal(&found_full_oid, &hash)) {
@@ -1388,19 +1549,22 @@ out:
1388
1549
  int git_odb_read_prefix(
1389
1550
  git_odb_object **out, git_odb *db, const git_oid *short_id, size_t len)
1390
1551
  {
1391
- git_oid key = {{0}};
1552
+ git_oid key = GIT_OID_NONE;
1553
+ size_t hex_size;
1392
1554
  int error;
1393
1555
 
1394
1556
  GIT_ASSERT_ARG(out);
1395
1557
  GIT_ASSERT_ARG(db);
1396
1558
 
1559
+ hex_size = git_oid_hexsize(db->options.oid_type);
1560
+
1397
1561
  if (len < GIT_OID_MINPREFIXLEN)
1398
1562
  return git_odb__error_ambiguous("prefix length too short");
1399
1563
 
1400
- if (len > GIT_OID_HEXSZ)
1401
- len = GIT_OID_HEXSZ;
1564
+ if (len > hex_size)
1565
+ len = hex_size;
1402
1566
 
1403
- if (len == GIT_OID_HEXSZ) {
1567
+ if (len == hex_size) {
1404
1568
  *out = git_cache_get_raw(odb_cache(db), short_id);
1405
1569
  if (*out != NULL)
1406
1570
  return 0;
@@ -1445,7 +1609,7 @@ int git_odb_foreach(git_odb *db, git_odb_foreach_cb cb, void *payload)
1445
1609
  }
1446
1610
 
1447
1611
  cleanup:
1448
- git_vector_free(&backends);
1612
+ git_vector_dispose(&backends);
1449
1613
 
1450
1614
  return error;
1451
1615
  }
@@ -1460,7 +1624,7 @@ int git_odb_write(
1460
1624
  GIT_ASSERT_ARG(oid);
1461
1625
  GIT_ASSERT_ARG(db);
1462
1626
 
1463
- if ((error = git_odb_hash(oid, data, len, type)) < 0)
1627
+ if ((error = git_odb__hash(oid, data, len, type, db->options.oid_type)) < 0)
1464
1628
  return error;
1465
1629
 
1466
1630
  if (git_oid_is_zero(oid))
@@ -1496,10 +1660,10 @@ int git_odb_write(
1496
1660
  if ((error = git_odb_open_wstream(&stream, db, len, type)) != 0)
1497
1661
  return error;
1498
1662
 
1499
- stream->write(stream, data, len);
1500
- error = stream->finalize_write(stream, oid);
1501
- git_odb_stream_free(stream);
1663
+ if ((error = stream->write(stream, data, len)) == 0)
1664
+ error = stream->finalize_write(stream, oid);
1502
1665
 
1666
+ git_odb_stream_free(stream);
1503
1667
  return error;
1504
1668
  }
1505
1669
 
@@ -1561,10 +1725,13 @@ int git_odb_open_wstream(
1561
1725
  ctx = git__malloc(sizeof(git_hash_ctx));
1562
1726
  GIT_ERROR_CHECK_ALLOC(ctx);
1563
1727
 
1564
- if ((error = git_hash_ctx_init(ctx)) < 0 ||
1565
- (error = hash_header(ctx, size, type)) < 0)
1728
+ if ((error = git_hash_ctx_init(ctx, git_oid_algorithm(db->options.oid_type))) < 0 ||
1729
+ (error = hash_header(ctx, size, type)) < 0)
1566
1730
  goto done;
1567
1731
 
1732
+ #ifdef GIT_EXPERIMENTAL_SHA256
1733
+ (*stream)->oid_type = db->options.oid_type;
1734
+ #endif
1568
1735
  (*stream)->hash_ctx = ctx;
1569
1736
  (*stream)->declared_size = size;
1570
1737
  (*stream)->received_bytes = 0;
@@ -1607,7 +1774,11 @@ int git_odb_stream_finalize_write(git_oid *out, git_odb_stream *stream)
1607
1774
  return git_odb_stream__invalid_length(stream,
1608
1775
  "stream_finalize_write()");
1609
1776
 
1610
- git_hash_final(out, stream->hash_ctx);
1777
+ git_hash_final(out->id, stream->hash_ctx);
1778
+
1779
+ #ifdef GIT_EXPERIMENTAL_SHA256
1780
+ out->type = stream->oid_type;
1781
+ #endif
1611
1782
 
1612
1783
  if (git_odb__freshen(stream->backend->odb, out))
1613
1784
  return 0;
@@ -1625,7 +1796,8 @@ void git_odb_stream_free(git_odb_stream *stream)
1625
1796
  if (stream == NULL)
1626
1797
  return;
1627
1798
 
1628
- git_hash_ctx_cleanup(stream->hash_ctx);
1799
+ if (stream->hash_ctx)
1800
+ git_hash_ctx_cleanup(stream->hash_ctx);
1629
1801
  git__free(stream->hash_ctx);
1630
1802
  stream->free(stream);
1631
1803
  }
@@ -1751,7 +1923,7 @@ void git_odb_backend_data_free(git_odb_backend *backend, void *data)
1751
1923
  git__free(data);
1752
1924
  }
1753
1925
 
1754
- int git_odb_refresh(struct git_odb *db)
1926
+ int git_odb_refresh(git_odb *db)
1755
1927
  {
1756
1928
  size_t i;
1757
1929
  int error;
@@ -1783,10 +1955,11 @@ int git_odb_refresh(struct git_odb *db)
1783
1955
 
1784
1956
  int git_odb__error_mismatch(const git_oid *expected, const git_oid *actual)
1785
1957
  {
1786
- char expected_oid[GIT_OID_HEXSZ + 1], actual_oid[GIT_OID_HEXSZ + 1];
1958
+ char expected_oid[GIT_OID_MAX_HEXSIZE + 1],
1959
+ actual_oid[GIT_OID_MAX_HEXSIZE + 1];
1787
1960
 
1788
- git_oid_tostr(expected_oid, sizeof(expected_oid), expected);
1789
- git_oid_tostr(actual_oid, sizeof(actual_oid), actual);
1961
+ git_oid_tostr(expected_oid, git_oid_hexsize(git_oid_type(expected)) + 1, expected);
1962
+ git_oid_tostr(actual_oid, git_oid_hexsize(git_oid_type(actual)) + 1, actual);
1790
1963
 
1791
1964
  git_error_set(GIT_ERROR_ODB, "object hash mismatch - expected %s but got %s",
1792
1965
  expected_oid, actual_oid);
@@ -1798,7 +1971,7 @@ int git_odb__error_notfound(
1798
1971
  const char *message, const git_oid *oid, size_t oid_len)
1799
1972
  {
1800
1973
  if (oid != NULL) {
1801
- char oid_str[GIT_OID_HEXSZ + 1];
1974
+ char oid_str[GIT_OID_MAX_HEXSIZE + 1];
1802
1975
  git_oid_tostr(oid_str, oid_len+1, oid);
1803
1976
  git_error_set(GIT_ERROR_ODB, "object not found - %s (%.*s)",
1804
1977
  message, (int) oid_len, oid_str);
@@ -1816,7 +1989,7 @@ static int error_null_oid(int error, const char *message)
1816
1989
 
1817
1990
  int git_odb__error_ambiguous(const char *message)
1818
1991
  {
1819
- git_error_set(GIT_ERROR_ODB, "ambiguous SHA1 prefix - %s", message);
1992
+ git_error_set(GIT_ERROR_ODB, "ambiguous OID prefix - %s", message);
1820
1993
  return GIT_EAMBIGUOUS;
1821
1994
  }
1822
1995