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
@@ -20,14 +20,16 @@
20
20
  #include "filebuf.h"
21
21
  #include "oid.h"
22
22
  #include "oidarray.h"
23
- #include "oidmap.h"
24
23
  #include "zstream.h"
25
24
  #include "object.h"
25
+ #include "hashmap_oid.h"
26
26
 
27
27
  size_t git_indexer__max_objects = UINT32_MAX;
28
28
 
29
29
  #define UINT31_MAX (0x7FFFFFFF)
30
30
 
31
+ GIT_HASHMAP_OID_SETUP(git_indexer_oidmap, git_oid *);
32
+
31
33
  struct entry {
32
34
  git_oid oid;
33
35
  uint32_t crc;
@@ -42,32 +44,34 @@ struct git_indexer {
42
44
  have_delta :1,
43
45
  do_fsync :1,
44
46
  do_verify :1;
47
+ git_oid_t oid_type;
45
48
  struct git_pack_header hdr;
46
49
  struct git_pack_file *pack;
47
50
  unsigned int mode;
48
51
  off64_t off;
49
52
  off64_t entry_start;
50
53
  git_object_t entry_type;
51
- git_buf entry_data;
54
+ git_str entry_data;
52
55
  git_packfile_stream stream;
53
56
  size_t nr_objects;
54
57
  git_vector objects;
55
58
  git_vector deltas;
56
59
  unsigned int fanout[256];
57
60
  git_hash_ctx hash_ctx;
58
- git_oid hash;
61
+ unsigned char checksum[GIT_HASH_MAX_SIZE];
62
+ char name[(GIT_HASH_MAX_SIZE * 2) + 1];
59
63
  git_indexer_progress_cb progress_cb;
60
64
  void *progress_payload;
61
65
  char objbuf[8*1024];
62
66
 
63
67
  /* OIDs referenced from pack objects. Used for verification. */
64
- git_oidmap *expected_oids;
68
+ git_indexer_oidmap expected_oids;
65
69
 
66
70
  /* Needed to look up objects which we want to inject to fix a thin pack */
67
71
  git_odb *odb;
68
72
 
69
73
  /* Fields for calculating the packfile trailer (hash of everything before it) */
70
- char inbuf[GIT_OID_RAWSZ];
74
+ char inbuf[GIT_HASH_MAX_SIZE];
71
75
  size_t inbuf_len;
72
76
  git_hash_ctx trailer;
73
77
  };
@@ -76,9 +80,16 @@ struct delta_info {
76
80
  off64_t delta_off;
77
81
  };
78
82
 
83
+ #ifndef GIT_DEPRECATE_HARD
79
84
  const git_oid *git_indexer_hash(const git_indexer *idx)
80
85
  {
81
- return &idx->hash;
86
+ return (git_oid *)idx->checksum;
87
+ }
88
+ #endif
89
+
90
+ const char *git_indexer_name(const git_indexer *idx)
91
+ {
92
+ return idx->name;
82
93
  }
83
94
 
84
95
  static int parse_header(struct git_pack_header *hdr, struct git_pack_file *pack)
@@ -128,33 +139,54 @@ int git_indexer_init_options(git_indexer_options *opts, unsigned int version)
128
139
  }
129
140
  #endif
130
141
 
131
- int git_indexer_new(
132
- git_indexer **out,
133
- const char *prefix,
134
- unsigned int mode,
135
- git_odb *odb,
136
- git_indexer_options *in_opts)
142
+ GIT_INLINE(git_hash_algorithm_t) indexer_hash_algorithm(git_indexer *idx)
143
+ {
144
+ switch (idx->oid_type) {
145
+ case GIT_OID_SHA1:
146
+ return GIT_HASH_ALGORITHM_SHA1;
147
+ #ifdef GIT_EXPERIMENTAL_SHA256
148
+ case GIT_OID_SHA256:
149
+ return GIT_HASH_ALGORITHM_SHA256;
150
+ #endif
151
+ }
152
+
153
+ return GIT_HASH_ALGORITHM_NONE;
154
+ }
155
+
156
+ static int indexer_new(
157
+ git_indexer **out,
158
+ const char *prefix,
159
+ git_oid_t oid_type,
160
+ unsigned int mode,
161
+ git_odb *odb,
162
+ git_indexer_options *in_opts)
137
163
  {
138
164
  git_indexer_options opts = GIT_INDEXER_OPTIONS_INIT;
139
165
  git_indexer *idx;
140
- git_buf path = GIT_BUF_INIT, tmp_path = GIT_BUF_INIT;
166
+ git_str path = GIT_STR_INIT, tmp_path = GIT_STR_INIT;
141
167
  static const char suff[] = "/pack";
168
+ git_hash_algorithm_t checksum_type;
142
169
  int error, fd = -1;
143
170
 
144
171
  if (in_opts)
145
172
  memcpy(&opts, in_opts, sizeof(opts));
146
173
 
174
+ if (oid_type)
175
+ GIT_ASSERT_ARG(git_oid_type_is_valid(oid_type));
176
+
147
177
  idx = git__calloc(1, sizeof(git_indexer));
148
178
  GIT_ERROR_CHECK_ALLOC(idx);
179
+ idx->oid_type = oid_type ? oid_type : GIT_OID_DEFAULT;
149
180
  idx->odb = odb;
150
181
  idx->progress_cb = opts.progress_cb;
151
182
  idx->progress_payload = opts.progress_cb_payload;
152
183
  idx->mode = mode ? mode : GIT_PACK_FILE_MODE;
153
- git_buf_init(&idx->entry_data, 0);
184
+ git_str_init(&idx->entry_data, 0);
154
185
 
155
- if ((error = git_hash_ctx_init(&idx->hash_ctx)) < 0 ||
156
- (error = git_hash_ctx_init(&idx->trailer)) < 0 ||
157
- (error = git_oidmap_new(&idx->expected_oids)) < 0)
186
+ checksum_type = indexer_hash_algorithm(idx);
187
+
188
+ if ((error = git_hash_ctx_init(&idx->hash_ctx, checksum_type)) < 0 ||
189
+ (error = git_hash_ctx_init(&idx->trailer, checksum_type)) < 0)
158
190
  goto cleanup;
159
191
 
160
192
  idx->do_verify = opts.verify;
@@ -162,17 +194,17 @@ int git_indexer_new(
162
194
  if (git_repository__fsync_gitdir)
163
195
  idx->do_fsync = 1;
164
196
 
165
- error = git_buf_joinpath(&path, prefix, suff);
197
+ error = git_str_joinpath(&path, prefix, suff);
166
198
  if (error < 0)
167
199
  goto cleanup;
168
200
 
169
- fd = git_futils_mktmp(&tmp_path, git_buf_cstr(&path), idx->mode);
170
- git_buf_dispose(&path);
201
+ fd = git_futils_mktmp(&tmp_path, git_str_cstr(&path), idx->mode);
202
+ git_str_dispose(&path);
171
203
  if (fd < 0)
172
204
  goto cleanup;
173
205
 
174
- error = git_packfile_alloc(&idx->pack, git_buf_cstr(&tmp_path));
175
- git_buf_dispose(&tmp_path);
206
+ error = git_packfile_alloc(&idx->pack, git_str_cstr(&tmp_path), oid_type);
207
+ git_str_dispose(&tmp_path);
176
208
 
177
209
  if (error < 0)
178
210
  goto cleanup;
@@ -188,18 +220,44 @@ cleanup:
188
220
  if (fd != -1)
189
221
  p_close(fd);
190
222
 
191
- if (git_buf_len(&tmp_path) > 0)
192
- p_unlink(git_buf_cstr(&tmp_path));
223
+ if (git_str_len(&tmp_path) > 0)
224
+ p_unlink(git_str_cstr(&tmp_path));
193
225
 
194
226
  if (idx->pack != NULL)
195
227
  p_unlink(idx->pack->pack_name);
196
228
 
197
- git_buf_dispose(&path);
198
- git_buf_dispose(&tmp_path);
229
+ git_str_dispose(&path);
230
+ git_str_dispose(&tmp_path);
199
231
  git__free(idx);
200
232
  return -1;
201
233
  }
202
234
 
235
+ #ifdef GIT_EXPERIMENTAL_SHA256
236
+ int git_indexer_new(
237
+ git_indexer **out,
238
+ const char *prefix,
239
+ git_indexer_options *opts)
240
+ {
241
+ return indexer_new(
242
+ out,
243
+ prefix,
244
+ opts ? opts->oid_type : 0,
245
+ opts ? opts->mode : 0,
246
+ opts ? opts->odb : NULL,
247
+ opts);
248
+ }
249
+ #else
250
+ int git_indexer_new(
251
+ git_indexer **out,
252
+ const char *prefix,
253
+ unsigned int mode,
254
+ git_odb *odb,
255
+ git_indexer_options *opts)
256
+ {
257
+ return indexer_new(out, prefix, GIT_OID_SHA1, mode, odb, opts);
258
+ }
259
+ #endif
260
+
203
261
  void git_indexer__set_fsync(git_indexer *idx, int do_fsync)
204
262
  {
205
263
  idx->do_fsync = !!do_fsync;
@@ -245,7 +303,7 @@ static int hash_object_stream(git_indexer*idx, git_packfile_stream *stream)
245
303
  break;
246
304
 
247
305
  if (idx->do_verify)
248
- git_buf_put(&idx->entry_data, idx->objbuf, read);
306
+ git_str_put(&idx->entry_data, idx->objbuf, read);
249
307
 
250
308
  git_hash_update(&idx->hash_ctx, idx->objbuf, read);
251
309
  } while (read > 0);
@@ -264,7 +322,7 @@ static int advance_delta_offset(git_indexer *idx, git_object_t type)
264
322
  GIT_ASSERT_ARG(type == GIT_OBJECT_REF_DELTA || type == GIT_OBJECT_OFS_DELTA);
265
323
 
266
324
  if (type == GIT_OBJECT_REF_DELTA) {
267
- idx->off += GIT_OID_RAWSZ;
325
+ idx->off += git_oid_size(idx->oid_type);
268
326
  } else {
269
327
  off64_t base_off;
270
328
  int error = get_delta_base(&base_off, idx->pack, &w, &idx->off, type, idx->entry_start);
@@ -325,12 +383,12 @@ static int add_expected_oid(git_indexer *idx, const git_oid *oid)
325
383
  * not have to expect it.
326
384
  */
327
385
  if ((!idx->odb || !git_odb_exists(idx->odb, oid)) &&
328
- !git_oidmap_exists(idx->pack->idx_cache, oid) &&
329
- !git_oidmap_exists(idx->expected_oids, oid)) {
386
+ !git_pack_oidmap_contains(&idx->pack->idx_cache, oid) &&
387
+ !git_indexer_oidmap_contains(&idx->expected_oids, oid)) {
330
388
  git_oid *dup = git__malloc(sizeof(*oid));
331
389
  GIT_ERROR_CHECK_ALLOC(dup);
332
390
  git_oid_cpy(dup, oid);
333
- return git_oidmap_set(idx->expected_oids, dup, dup);
391
+ return git_indexer_oidmap_put(&idx->expected_oids, dup, dup);
334
392
  }
335
393
 
336
394
  return 0;
@@ -340,7 +398,7 @@ static int check_object_connectivity(git_indexer *idx, const git_rawobj *obj)
340
398
  {
341
399
  git_object *object;
342
400
  git_oid *expected;
343
- int error;
401
+ int error = 0;
344
402
 
345
403
  if (obj->type != GIT_OBJECT_BLOB &&
346
404
  obj->type != GIT_OBJECT_TREE &&
@@ -348,11 +406,17 @@ static int check_object_connectivity(git_indexer *idx, const git_rawobj *obj)
348
406
  obj->type != GIT_OBJECT_TAG)
349
407
  return 0;
350
408
 
351
- if ((error = git_object__from_raw(&object, obj->data, obj->len, obj->type)) < 0)
409
+ if (git_object__from_raw(&object, obj->data, obj->len, obj->type, idx->oid_type) < 0) {
410
+ /*
411
+ * parse_raw returns EINVALID on invalid data; downgrade
412
+ * that to a normal -1 error code.
413
+ */
414
+ error = -1;
352
415
  goto out;
416
+ }
353
417
 
354
- if ((expected = git_oidmap_get(idx->expected_oids, &object->cached.oid)) != NULL) {
355
- git_oidmap_delete(idx->expected_oids, &object->cached.oid);
418
+ if (git_indexer_oidmap_get(&expected, &idx->expected_oids, &object->cached.oid) == 0) {
419
+ git_indexer_oidmap_remove(&idx->expected_oids, &object->cached.oid);
356
420
  git__free(expected);
357
421
  }
358
422
 
@@ -371,7 +435,7 @@ static int check_object_connectivity(git_indexer *idx, const git_rawobj *obj)
371
435
  size_t i;
372
436
 
373
437
  git_array_foreach(tree->entries, i, entry)
374
- if (add_expected_oid(idx, entry->oid) < 0)
438
+ if (add_expected_oid(idx, &entry->oid) < 0)
375
439
  goto out;
376
440
 
377
441
  break;
@@ -426,10 +490,15 @@ static int store_object(git_indexer *idx)
426
490
  pentry = git__calloc(1, sizeof(struct git_pack_entry));
427
491
  GIT_ERROR_CHECK_ALLOC(pentry);
428
492
 
429
- if (git_hash_final(&oid, &idx->hash_ctx)) {
493
+ if (git_hash_final(oid.id, &idx->hash_ctx)) {
430
494
  git__free(pentry);
431
495
  goto on_error;
432
496
  }
497
+
498
+ #ifdef GIT_EXPERIMENTAL_SHA256
499
+ oid.type = idx->oid_type;
500
+ #endif
501
+
433
502
  entry_size = idx->off - entry_start;
434
503
  if (entry_start > UINT31_MAX) {
435
504
  entry->offset = UINT32_MAX;
@@ -449,16 +518,22 @@ static int store_object(git_indexer *idx)
449
518
  goto on_error;
450
519
  }
451
520
 
452
- git_oid_cpy(&pentry->sha1, &oid);
521
+ git_oid_cpy(&pentry->id, &oid);
453
522
  pentry->offset = entry_start;
454
523
 
455
- if (git_oidmap_exists(idx->pack->idx_cache, &pentry->sha1)) {
456
- git_error_set(GIT_ERROR_INDEXER, "duplicate object %s found in pack", git_oid_tostr_s(&pentry->sha1));
524
+ if (git_pack_oidmap_contains(&idx->pack->idx_cache, &pentry->id)) {
525
+ const char *idstr = git_oid_tostr_s(&pentry->id);
526
+
527
+ if (!idstr)
528
+ git_error_set(GIT_ERROR_INDEXER, "failed to parse object id");
529
+ else
530
+ git_error_set(GIT_ERROR_INDEXER, "duplicate object %s found in pack", idstr);
531
+
457
532
  git__free(pentry);
458
533
  goto on_error;
459
534
  }
460
535
 
461
- if ((error = git_oidmap_set(idx->pack->idx_cache, &pentry->sha1, pentry)) < 0) {
536
+ if ((error = git_pack_oidmap_put(&idx->pack->idx_cache, &pentry->id, pentry)) < 0) {
462
537
  git__free(pentry);
463
538
  git_error_set_oom();
464
539
  goto on_error;
@@ -487,7 +562,7 @@ on_error:
487
562
 
488
563
  GIT_INLINE(bool) has_entry(git_indexer *idx, git_oid *id)
489
564
  {
490
- return git_oidmap_exists(idx->pack->idx_cache, id);
565
+ return git_pack_oidmap_contains(&idx->pack->idx_cache, id);
491
566
  }
492
567
 
493
568
  static int save_entry(git_indexer *idx, struct entry *entry, struct git_pack_entry *pentry, off64_t entry_start)
@@ -503,8 +578,8 @@ static int save_entry(git_indexer *idx, struct entry *entry, struct git_pack_ent
503
578
 
504
579
  pentry->offset = entry_start;
505
580
 
506
- if (git_oidmap_exists(idx->pack->idx_cache, &pentry->sha1) ||
507
- git_oidmap_set(idx->pack->idx_cache, &pentry->sha1, pentry) < 0) {
581
+ if (git_pack_oidmap_contains(&idx->pack->idx_cache, &pentry->id) ||
582
+ git_pack_oidmap_put(&idx->pack->idx_cache, &pentry->id, pentry) < 0) {
508
583
  git_error_set(GIT_ERROR_INDEXER, "cannot insert object into pack");
509
584
  return -1;
510
585
  }
@@ -530,7 +605,7 @@ static int hash_and_save(git_indexer *idx, git_rawobj *obj, off64_t entry_start)
530
605
  entry = git__calloc(1, sizeof(*entry));
531
606
  GIT_ERROR_CHECK_ALLOC(entry);
532
607
 
533
- if (git_odb__hashobj(&oid, obj) < 0) {
608
+ if (git_odb__hashobj(&oid, obj, idx->oid_type) < 0) {
534
609
  git_error_set(GIT_ERROR_INDEXER, "failed to hash object");
535
610
  goto on_error;
536
611
  }
@@ -538,7 +613,7 @@ static int hash_and_save(git_indexer *idx, git_rawobj *obj, off64_t entry_start)
538
613
  pentry = git__calloc(1, sizeof(struct git_pack_entry));
539
614
  GIT_ERROR_CHECK_ALLOC(pentry);
540
615
 
541
- git_oid_cpy(&pentry->sha1, &oid);
616
+ git_oid_cpy(&pentry->id, &oid);
542
617
  git_oid_cpy(&entry->oid, &oid);
543
618
  entry->crc = crc32(0L, Z_NULL, 0);
544
619
 
@@ -564,34 +639,38 @@ static int do_progress_callback(git_indexer *idx, git_indexer_progress *stats)
564
639
  return 0;
565
640
  }
566
641
 
567
- /* Hash everything but the last 20B of input */
642
+ /* Hash everything but the checksum trailer */
568
643
  static void hash_partially(git_indexer *idx, const uint8_t *data, size_t size)
569
644
  {
570
645
  size_t to_expell, to_keep;
646
+ size_t oid_size = git_oid_size(idx->oid_type);
571
647
 
572
648
  if (size == 0)
573
649
  return;
574
650
 
575
- /* Easy case, dump the buffer and the data minus the last 20 bytes */
576
- if (size >= GIT_OID_RAWSZ) {
651
+ /*
652
+ * Easy case, dump the buffer and the data minus the trailing
653
+ * checksum (SHA1 or SHA256).
654
+ */
655
+ if (size >= oid_size) {
577
656
  git_hash_update(&idx->trailer, idx->inbuf, idx->inbuf_len);
578
- git_hash_update(&idx->trailer, data, size - GIT_OID_RAWSZ);
657
+ git_hash_update(&idx->trailer, data, size - oid_size);
579
658
 
580
- data += size - GIT_OID_RAWSZ;
581
- memcpy(idx->inbuf, data, GIT_OID_RAWSZ);
582
- idx->inbuf_len = GIT_OID_RAWSZ;
659
+ data += size - oid_size;
660
+ memcpy(idx->inbuf, data, oid_size);
661
+ idx->inbuf_len = oid_size;
583
662
  return;
584
663
  }
585
664
 
586
665
  /* We can just append */
587
- if (idx->inbuf_len + size <= GIT_OID_RAWSZ) {
666
+ if (idx->inbuf_len + size <= oid_size) {
588
667
  memcpy(idx->inbuf + idx->inbuf_len, data, size);
589
668
  idx->inbuf_len += size;
590
669
  return;
591
670
  }
592
671
 
593
672
  /* We need to partially drain the buffer and then append */
594
- to_keep = GIT_OID_RAWSZ - size;
673
+ to_keep = oid_size - size;
595
674
  to_expell = idx->inbuf_len - to_keep;
596
675
 
597
676
  git_hash_update(&idx->trailer, idx->inbuf, to_expell);
@@ -710,12 +789,14 @@ static int read_stream_object(git_indexer *idx, git_indexer_progress *stats)
710
789
  {
711
790
  git_packfile_stream *stream = &idx->stream;
712
791
  off64_t entry_start = idx->off;
713
- size_t entry_size;
792
+ size_t oid_size, entry_size;
714
793
  git_object_t type;
715
794
  git_mwindow *w = NULL;
716
795
  int error;
717
796
 
718
- if (idx->pack->mwf.size <= idx->off + 20)
797
+ oid_size = git_oid_size(idx->oid_type);
798
+
799
+ if (idx->pack->mwf.size <= idx->off + (long long)oid_size)
719
800
  return GIT_EBUFS;
720
801
 
721
802
  if (!idx->have_stream) {
@@ -730,7 +811,7 @@ static int read_stream_object(git_indexer *idx, git_indexer_progress *stats)
730
811
  git_mwindow_close(&w);
731
812
  idx->entry_start = entry_start;
732
813
  git_hash_init(&idx->hash_ctx);
733
- git_buf_clear(&idx->entry_data);
814
+ git_str_clear(&idx->entry_data);
734
815
 
735
816
  if (type == GIT_OBJECT_REF_DELTA || type == GIT_OBJECT_OFS_DELTA) {
736
817
  error = advance_delta_offset(idx, type);
@@ -833,9 +914,6 @@ int git_indexer_append(git_indexer *idx, const void *data, size_t size, git_inde
833
914
  return -1;
834
915
  }
835
916
 
836
- if (git_oidmap_new(&idx->pack->idx_cache) < 0)
837
- return -1;
838
-
839
917
  idx->pack->has_cache = 1;
840
918
  if (git_vector_init(&idx->objects, total_objects, objects_cmp) < 0)
841
919
  return -1;
@@ -876,7 +954,7 @@ on_error:
876
954
  return error;
877
955
  }
878
956
 
879
- static int index_path(git_buf *path, git_indexer *idx, const char *suffix)
957
+ static int index_path(git_str *path, git_indexer *idx, const char *suffix)
880
958
  {
881
959
  const char prefix[] = "pack-";
882
960
  size_t slash = (size_t)path->size;
@@ -885,17 +963,16 @@ static int index_path(git_buf *path, git_indexer *idx, const char *suffix)
885
963
  while (slash > 0 && path->ptr[slash - 1] != '/')
886
964
  slash--;
887
965
 
888
- if (git_buf_grow(path, slash + 1 + strlen(prefix) +
889
- GIT_OID_HEXSZ + strlen(suffix) + 1) < 0)
966
+ if (git_str_grow(path, slash + 1 + strlen(prefix) +
967
+ git_oid_hexsize(idx->oid_type) + strlen(suffix) + 1) < 0)
890
968
  return -1;
891
969
 
892
- git_buf_truncate(path, slash);
893
- git_buf_puts(path, prefix);
894
- git_oid_fmt(path->ptr + git_buf_len(path), &idx->hash);
895
- path->size += GIT_OID_HEXSZ;
896
- git_buf_puts(path, suffix);
970
+ git_str_truncate(path, slash);
971
+ git_str_puts(path, prefix);
972
+ git_str_puts(path, idx->name);
973
+ git_str_puts(path, suffix);
897
974
 
898
- return git_buf_oom(path) ? -1 : 0;
975
+ return git_str_oom(path) ? -1 : 0;
899
976
  }
900
977
 
901
978
  /**
@@ -904,7 +981,7 @@ static int index_path(git_buf *path, git_indexer *idx, const char *suffix)
904
981
  */
905
982
  static int seek_back_trailer(git_indexer *idx)
906
983
  {
907
- idx->pack->mwf.size -= GIT_OID_RAWSZ;
984
+ idx->pack->mwf.size -= git_oid_size(idx->oid_type);
908
985
  return git_mwindow_free_all(&idx->pack->mwf);
909
986
  }
910
987
 
@@ -913,14 +990,17 @@ static int inject_object(git_indexer *idx, git_oid *id)
913
990
  git_odb_object *obj = NULL;
914
991
  struct entry *entry = NULL;
915
992
  struct git_pack_entry *pentry = NULL;
916
- git_oid foo = {{0}};
993
+ unsigned char empty_checksum[GIT_HASH_MAX_SIZE] = {0};
917
994
  unsigned char hdr[64];
918
- git_buf buf = GIT_BUF_INIT;
995
+ git_str buf = GIT_STR_INIT;
919
996
  off64_t entry_start;
920
997
  const void *data;
921
998
  size_t len, hdr_len;
999
+ size_t checksum_size;
922
1000
  int error;
923
1001
 
1002
+ checksum_size = git_hash_size(indexer_hash_algorithm(idx));
1003
+
924
1004
  if ((error = seek_back_trailer(idx)) < 0)
925
1005
  goto cleanup;
926
1006
 
@@ -956,19 +1036,19 @@ static int inject_object(git_indexer *idx, git_oid *id)
956
1036
 
957
1037
  idx->pack->mwf.size += buf.size;
958
1038
  entry->crc = htonl(crc32(entry->crc, (unsigned char *)buf.ptr, (uInt)buf.size));
959
- git_buf_dispose(&buf);
1039
+ git_str_dispose(&buf);
960
1040
 
961
1041
  /* Write a fake trailer so the pack functions play ball */
962
1042
 
963
- if ((error = append_to_pack(idx, &foo, GIT_OID_RAWSZ)) < 0)
1043
+ if ((error = append_to_pack(idx, empty_checksum, checksum_size)) < 0)
964
1044
  goto cleanup;
965
1045
 
966
- idx->pack->mwf.size += GIT_OID_RAWSZ;
1046
+ idx->pack->mwf.size += git_oid_size(idx->oid_type);
967
1047
 
968
1048
  pentry = git__calloc(1, sizeof(struct git_pack_entry));
969
1049
  GIT_ERROR_CHECK_ALLOC(pentry);
970
1050
 
971
- git_oid_cpy(&pentry->sha1, id);
1051
+ git_oid_cpy(&pentry->id, id);
972
1052
  git_oid_cpy(&entry->oid, id);
973
1053
  idx->off = entry_start + hdr_len + len;
974
1054
 
@@ -1026,13 +1106,13 @@ static int fix_thin_pack(git_indexer *idx, git_indexer_progress *stats)
1026
1106
  }
1027
1107
 
1028
1108
  /* curpos now points to the base information, which is an OID */
1029
- base_info = git_mwindow_open(&idx->pack->mwf, &w, curpos, GIT_OID_RAWSZ, &left);
1109
+ base_info = git_mwindow_open(&idx->pack->mwf, &w, curpos, git_oid_size(idx->oid_type), &left);
1030
1110
  if (base_info == NULL) {
1031
1111
  git_error_set(GIT_ERROR_INDEXER, "failed to map delta information");
1032
1112
  return -1;
1033
1113
  }
1034
1114
 
1035
- git_oid_fromraw(&base, base_info);
1115
+ git_oid__fromraw(&base, base_info, idx->oid_type);
1036
1116
  git_mwindow_close(&w);
1037
1117
 
1038
1118
  if (has_entry(idx, &base))
@@ -1117,7 +1197,7 @@ static int update_header_and_rehash(git_indexer *idx, git_indexer_progress *stat
1117
1197
  git_hash_init(&idx->trailer);
1118
1198
 
1119
1199
 
1120
- /* Update the header to include the numer of local objects we injected */
1200
+ /* Update the header to include the number of local objects we injected */
1121
1201
  idx->hdr.hdr_entries = htonl(stats->total_objects + stats->local_objects);
1122
1202
  if (write_at(idx, &idx->hdr, 0, sizeof(struct git_pack_header)) < 0)
1123
1203
  return -1;
@@ -1152,39 +1232,46 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
1152
1232
  unsigned int i, long_offsets = 0, left;
1153
1233
  int error;
1154
1234
  struct git_pack_idx_header hdr;
1155
- git_buf filename = GIT_BUF_INIT;
1235
+ git_str filename = GIT_STR_INIT;
1156
1236
  struct entry *entry;
1157
- git_oid trailer_hash, file_hash;
1237
+ unsigned char checksum[GIT_HASH_MAX_SIZE];
1158
1238
  git_filebuf index_file = {0};
1159
1239
  void *packfile_trailer;
1240
+ size_t checksum_size;
1241
+ int filebuf_hash;
1242
+ bool mismatch;
1160
1243
 
1161
1244
  if (!idx->parsed_header) {
1162
1245
  git_error_set(GIT_ERROR_INDEXER, "incomplete pack header");
1163
1246
  return -1;
1164
1247
  }
1165
1248
 
1249
+ checksum_size = git_hash_size(indexer_hash_algorithm(idx));
1250
+ filebuf_hash = git_filebuf_hash_flags(indexer_hash_algorithm(idx));
1251
+ GIT_ASSERT(checksum_size);
1252
+
1166
1253
  /* Test for this before resolve_deltas(), as it plays with idx->off */
1167
- if (idx->off + 20 < idx->pack->mwf.size) {
1254
+ if (idx->off + (ssize_t)checksum_size < idx->pack->mwf.size) {
1168
1255
  git_error_set(GIT_ERROR_INDEXER, "unexpected data at the end of the pack");
1169
1256
  return -1;
1170
1257
  }
1171
- if (idx->off + 20 > idx->pack->mwf.size) {
1258
+ if (idx->off + (ssize_t)checksum_size > idx->pack->mwf.size) {
1172
1259
  git_error_set(GIT_ERROR_INDEXER, "missing trailer at the end of the pack");
1173
1260
  return -1;
1174
1261
  }
1175
1262
 
1176
- packfile_trailer = git_mwindow_open(&idx->pack->mwf, &w, idx->pack->mwf.size - GIT_OID_RAWSZ, GIT_OID_RAWSZ, &left);
1263
+ packfile_trailer = git_mwindow_open(&idx->pack->mwf, &w, idx->pack->mwf.size - checksum_size, checksum_size, &left);
1177
1264
  if (packfile_trailer == NULL) {
1178
1265
  git_mwindow_close(&w);
1179
1266
  goto on_error;
1180
1267
  }
1181
1268
 
1182
1269
  /* Compare the packfile trailer as it was sent to us and what we calculated */
1183
- git_oid_fromraw(&file_hash, packfile_trailer);
1270
+ git_hash_final(checksum, &idx->trailer);
1271
+ mismatch = !!memcmp(checksum, packfile_trailer, checksum_size);
1184
1272
  git_mwindow_close(&w);
1185
1273
 
1186
- git_hash_final(&trailer_hash, &idx->trailer);
1187
- if (git_oid_cmp(&file_hash, &trailer_hash)) {
1274
+ if (mismatch) {
1188
1275
  git_error_set(GIT_ERROR_INDEXER, "packfile trailer mismatch");
1189
1276
  return -1;
1190
1277
  }
@@ -1204,8 +1291,8 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
1204
1291
  if (update_header_and_rehash(idx, stats) < 0)
1205
1292
  return -1;
1206
1293
 
1207
- git_hash_final(&trailer_hash, &idx->trailer);
1208
- write_at(idx, &trailer_hash, idx->pack->mwf.size - GIT_OID_RAWSZ, GIT_OID_RAWSZ);
1294
+ git_hash_final(checksum, &idx->trailer);
1295
+ write_at(idx, checksum, idx->pack->mwf.size - checksum_size, checksum_size);
1209
1296
  }
1210
1297
 
1211
1298
  /*
@@ -1214,9 +1301,9 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
1214
1301
  * bail out due to an incomplete and thus corrupt
1215
1302
  * packfile.
1216
1303
  */
1217
- if (git_oidmap_size(idx->expected_oids) > 0) {
1304
+ if (git_indexer_oidmap_size(&idx->expected_oids) > 0) {
1218
1305
  git_error_set(GIT_ERROR_INDEXER, "packfile is missing %"PRIuZ" objects",
1219
- git_oidmap_size(idx->expected_oids));
1306
+ (size_t)git_indexer_oidmap_size(&idx->expected_oids));
1220
1307
  return -1;
1221
1308
  }
1222
1309
 
@@ -1224,17 +1311,18 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
1224
1311
 
1225
1312
  /* Use the trailer hash as the pack file name to ensure
1226
1313
  * files with different contents have different names */
1227
- git_oid_cpy(&idx->hash, &trailer_hash);
1314
+ memcpy(idx->checksum, checksum, checksum_size);
1315
+ if (git_hash_fmt(idx->name, checksum, checksum_size) < 0)
1316
+ return -1;
1228
1317
 
1229
- git_buf_sets(&filename, idx->pack->pack_name);
1230
- git_buf_shorten(&filename, strlen("pack"));
1231
- git_buf_puts(&filename, "idx");
1232
- if (git_buf_oom(&filename))
1318
+ git_str_sets(&filename, idx->pack->pack_name);
1319
+ git_str_shorten(&filename, strlen("pack"));
1320
+ git_str_puts(&filename, "idx");
1321
+ if (git_str_oom(&filename))
1233
1322
  return -1;
1234
1323
 
1235
1324
  if (git_filebuf_open(&index_file, filename.ptr,
1236
- GIT_FILEBUF_HASH_CONTENTS |
1237
- (idx->do_fsync ? GIT_FILEBUF_FSYNC : 0),
1325
+ filebuf_hash | (idx->do_fsync ? GIT_FILEBUF_FSYNC : 0),
1238
1326
  idx->mode) < 0)
1239
1327
  goto on_error;
1240
1328
 
@@ -1251,7 +1339,7 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
1251
1339
 
1252
1340
  /* Write out the object names (SHA-1 hashes) */
1253
1341
  git_vector_foreach(&idx->objects, i, entry) {
1254
- git_filebuf_write(&index_file, &entry->oid, sizeof(git_oid));
1342
+ git_filebuf_write(&index_file, &entry->oid.id, git_oid_size(idx->oid_type));
1255
1343
  }
1256
1344
 
1257
1345
  /* Write out the CRC32 values */
@@ -1285,14 +1373,14 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
1285
1373
  }
1286
1374
 
1287
1375
  /* Write out the packfile trailer to the index */
1288
- if (git_filebuf_write(&index_file, &trailer_hash, GIT_OID_RAWSZ) < 0)
1376
+ if (git_filebuf_write(&index_file, checksum, checksum_size) < 0)
1289
1377
  goto on_error;
1290
1378
 
1291
1379
  /* Write out the hash of the idx */
1292
- if (git_filebuf_hash(&trailer_hash, &index_file) < 0)
1380
+ if (git_filebuf_hash(checksum, &index_file) < 0)
1293
1381
  goto on_error;
1294
1382
 
1295
- git_filebuf_write(&index_file, &trailer_hash, sizeof(git_oid));
1383
+ git_filebuf_write(&index_file, checksum, checksum_size);
1296
1384
 
1297
1385
  /* Figure out what the final name should be */
1298
1386
  if (index_path(&filename, idx, ".idx") < 0)
@@ -1336,31 +1424,31 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
1336
1424
  goto on_error;
1337
1425
 
1338
1426
  /* And don't forget to rename the packfile to its new place. */
1339
- if (p_rename(idx->pack->pack_name, git_buf_cstr(&filename)) < 0)
1427
+ if (p_rename(idx->pack->pack_name, git_str_cstr(&filename)) < 0)
1340
1428
  goto on_error;
1341
1429
 
1342
1430
  /* And fsync the parent directory if we're asked to. */
1343
1431
  if (idx->do_fsync &&
1344
- git_futils_fsync_parent(git_buf_cstr(&filename)) < 0)
1432
+ git_futils_fsync_parent(git_str_cstr(&filename)) < 0)
1345
1433
  goto on_error;
1346
1434
 
1347
1435
  idx->pack_committed = 1;
1348
1436
 
1349
- git_buf_dispose(&filename);
1437
+ git_str_dispose(&filename);
1350
1438
  return 0;
1351
1439
 
1352
1440
  on_error:
1353
1441
  git_mwindow_free_all(&idx->pack->mwf);
1354
1442
  git_filebuf_cleanup(&index_file);
1355
- git_buf_dispose(&filename);
1443
+ git_str_dispose(&filename);
1356
1444
  return -1;
1357
1445
  }
1358
1446
 
1359
1447
  void git_indexer_free(git_indexer *idx)
1360
1448
  {
1361
- const git_oid *key;
1362
- git_oid *value;
1363
- size_t iter;
1449
+ struct git_pack_entry *pentry;
1450
+ git_oid *id;
1451
+ git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
1364
1452
 
1365
1453
  if (idx == NULL)
1366
1454
  return;
@@ -1368,28 +1456,24 @@ void git_indexer_free(git_indexer *idx)
1368
1456
  if (idx->have_stream)
1369
1457
  git_packfile_stream_dispose(&idx->stream);
1370
1458
 
1371
- git_vector_free_deep(&idx->objects);
1459
+ git_vector_dispose_deep(&idx->objects);
1372
1460
 
1373
- if (idx->pack->idx_cache) {
1374
- struct git_pack_entry *pentry;
1375
- git_oidmap_foreach_value(idx->pack->idx_cache, pentry, {
1376
- git__free(pentry);
1377
- });
1461
+ while (git_pack_oidmap_iterate(&iter, NULL, &pentry, &idx->pack->idx_cache) == 0)
1462
+ git__free(pentry);
1378
1463
 
1379
- git_oidmap_free(idx->pack->idx_cache);
1380
- }
1464
+ git_pack_oidmap_dispose(&idx->pack->idx_cache);
1381
1465
 
1382
- git_vector_free_deep(&idx->deltas);
1466
+ git_vector_dispose_deep(&idx->deltas);
1383
1467
 
1384
1468
  git_packfile_free(idx->pack, !idx->pack_committed);
1385
1469
 
1386
- iter = 0;
1387
- while (git_oidmap_iterate((void **) &value, idx->expected_oids, &iter, &key) == 0)
1388
- git__free(value);
1470
+ iter = GIT_HASHMAP_ITER_INIT;
1471
+ while (git_indexer_oidmap_iterate(&iter, NULL, &id, &idx->expected_oids) == 0)
1472
+ git__free(id);
1389
1473
 
1390
1474
  git_hash_ctx_cleanup(&idx->trailer);
1391
1475
  git_hash_ctx_cleanup(&idx->hash_ctx);
1392
- git_buf_dispose(&idx->entry_data);
1393
- git_oidmap_free(idx->expected_oids);
1476
+ git_str_dispose(&idx->entry_data);
1477
+ git_indexer_oidmap_dispose(&idx->expected_oids);
1394
1478
  git__free(idx);
1395
1479
  }