rugged 1.3.1 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (656) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/ext/rugged/extconf.rb +6 -3
  4. data/ext/rugged/rugged.c +16 -0
  5. data/ext/rugged/rugged.h +4 -0
  6. data/ext/rugged/rugged_allocator.c +0 -54
  7. data/ext/rugged/rugged_blame.c +2 -0
  8. data/ext/rugged/rugged_blob.c +3 -0
  9. data/ext/rugged/rugged_commit.c +1 -0
  10. data/ext/rugged/rugged_config.c +9 -2
  11. data/ext/rugged/rugged_diff.c +1 -0
  12. data/ext/rugged/rugged_index.c +2 -0
  13. data/ext/rugged/rugged_patch.c +1 -0
  14. data/ext/rugged/rugged_rebase.c +1 -0
  15. data/ext/rugged/rugged_reference.c +1 -0
  16. data/ext/rugged/rugged_remote.c +28 -10
  17. data/ext/rugged/rugged_repo.c +7 -9
  18. data/ext/rugged/rugged_revwalk.c +5 -1
  19. data/ext/rugged/rugged_settings.c +5 -0
  20. data/ext/rugged/rugged_submodule.c +1 -0
  21. data/ext/rugged/rugged_tag.c +1 -0
  22. data/ext/rugged/rugged_tree.c +4 -0
  23. data/lib/rugged/index.rb +1 -1
  24. data/lib/rugged/tree.rb +5 -1
  25. data/lib/rugged/version.rb +1 -1
  26. data/vendor/libgit2/AUTHORS +1 -0
  27. data/vendor/libgit2/CMakeLists.txt +141 -289
  28. data/vendor/libgit2/COPYING +301 -20
  29. data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
  30. data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
  31. data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
  32. data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
  33. data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
  34. data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
  35. data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
  36. data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
  37. data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
  38. data/vendor/libgit2/cmake/FindHTTP_Parser.cmake +17 -17
  39. data/vendor/libgit2/cmake/FindIntlIconv.cmake +51 -0
  40. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  41. data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
  42. data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
  43. data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
  44. data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
  45. data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
  46. data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
  47. data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
  48. data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
  49. data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
  50. data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
  51. data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
  52. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
  53. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +34 -0
  54. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +129 -101
  55. data/vendor/libgit2/cmake/SelectHashes.cmake +113 -54
  56. data/vendor/libgit2/cmake/SelectRegex.cmake +56 -0
  57. data/vendor/libgit2/cmake/SelectSSH.cmake +46 -0
  58. data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
  59. data/vendor/libgit2/cmake/SelectZlib.cmake +38 -0
  60. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
  61. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  62. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  63. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  64. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  65. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  66. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  67. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
  68. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  69. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  70. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  71. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +7 -5
  72. data/vendor/libgit2/deps/ntlmclient/ntlm.c +25 -25
  73. data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
  74. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
  75. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  76. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  77. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  78. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  79. data/vendor/libgit2/deps/pcre/CMakeLists.txt +89 -88
  80. data/vendor/libgit2/deps/pcre/LICENCE +5 -5
  81. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  82. data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
  83. data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
  84. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
  85. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
  86. data/vendor/libgit2/deps/xdiff/git-xdiff.h +56 -0
  87. data/vendor/libgit2/{src → deps}/xdiff/xdiff.h +15 -15
  88. data/vendor/libgit2/{src → deps}/xdiff/xdiffi.c +152 -125
  89. data/vendor/libgit2/{src → deps}/xdiff/xdiffi.h +2 -4
  90. data/vendor/libgit2/{src → deps}/xdiff/xemit.c +26 -10
  91. data/vendor/libgit2/{src → deps}/xdiff/xhistogram.c +92 -94
  92. data/vendor/libgit2/{src → deps}/xdiff/xinclude.h +1 -12
  93. data/vendor/libgit2/{src → deps}/xdiff/xmacros.h +18 -1
  94. data/vendor/libgit2/{src → deps}/xdiff/xmerge.c +126 -137
  95. data/vendor/libgit2/{src → deps}/xdiff/xpatience.c +26 -46
  96. data/vendor/libgit2/{src → deps}/xdiff/xprepare.c +24 -46
  97. data/vendor/libgit2/{src → deps}/xdiff/xutils.c +36 -8
  98. data/vendor/libgit2/{src → deps}/xdiff/xutils.h +2 -1
  99. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  100. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  101. data/vendor/libgit2/deps/zlib/adler32.c +7 -22
  102. data/vendor/libgit2/deps/zlib/crc32.c +931 -317
  103. data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
  104. data/vendor/libgit2/deps/zlib/deflate.c +428 -453
  105. data/vendor/libgit2/deps/zlib/deflate.h +51 -23
  106. data/vendor/libgit2/deps/zlib/gzguts.h +15 -19
  107. data/vendor/libgit2/deps/zlib/infback.c +19 -31
  108. data/vendor/libgit2/deps/zlib/inffast.c +15 -18
  109. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  110. data/vendor/libgit2/deps/zlib/inflate.c +75 -110
  111. data/vendor/libgit2/deps/zlib/inflate.h +3 -2
  112. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  113. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  114. data/vendor/libgit2/deps/zlib/trees.c +294 -380
  115. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  116. data/vendor/libgit2/deps/zlib/zlib.h +310 -284
  117. data/vendor/libgit2/deps/zlib/zutil.c +20 -46
  118. data/vendor/libgit2/deps/zlib/zutil.h +24 -41
  119. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  120. data/vendor/libgit2/include/git2/apply.h +43 -8
  121. data/vendor/libgit2/include/git2/attr.h +28 -6
  122. data/vendor/libgit2/include/git2/blame.h +137 -29
  123. data/vendor/libgit2/include/git2/blob.h +85 -29
  124. data/vendor/libgit2/include/git2/branch.h +25 -16
  125. data/vendor/libgit2/include/git2/buffer.h +24 -82
  126. data/vendor/libgit2/include/git2/cert.h +4 -3
  127. data/vendor/libgit2/include/git2/checkout.h +88 -34
  128. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  129. data/vendor/libgit2/include/git2/clone.h +28 -12
  130. data/vendor/libgit2/include/git2/commit.h +134 -3
  131. data/vendor/libgit2/include/git2/common.h +172 -59
  132. data/vendor/libgit2/include/git2/config.h +118 -32
  133. data/vendor/libgit2/include/git2/credential.h +32 -3
  134. data/vendor/libgit2/include/git2/credential_helpers.h +2 -0
  135. data/vendor/libgit2/include/git2/deprecated.h +141 -3
  136. data/vendor/libgit2/include/git2/describe.h +20 -3
  137. data/vendor/libgit2/include/git2/diff.h +95 -19
  138. data/vendor/libgit2/include/git2/email.h +10 -30
  139. data/vendor/libgit2/include/git2/errors.h +51 -61
  140. data/vendor/libgit2/include/git2/experimental.h +20 -0
  141. data/vendor/libgit2/include/git2/filter.h +21 -9
  142. data/vendor/libgit2/include/git2/global.h +8 -1
  143. data/vendor/libgit2/include/git2/graph.h +4 -2
  144. data/vendor/libgit2/include/git2/ignore.h +11 -1
  145. data/vendor/libgit2/include/git2/index.h +111 -11
  146. data/vendor/libgit2/include/git2/indexer.h +67 -2
  147. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  148. data/vendor/libgit2/include/git2/merge.h +70 -5
  149. data/vendor/libgit2/include/git2/message.h +4 -2
  150. data/vendor/libgit2/include/git2/net.h +3 -1
  151. data/vendor/libgit2/include/git2/notes.h +9 -6
  152. data/vendor/libgit2/include/git2/object.h +57 -7
  153. data/vendor/libgit2/include/git2/odb.h +156 -33
  154. data/vendor/libgit2/include/git2/odb_backend.h +132 -16
  155. data/vendor/libgit2/include/git2/oid.h +116 -17
  156. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  157. data/vendor/libgit2/include/git2/pack.h +37 -9
  158. data/vendor/libgit2/include/git2/patch.h +10 -3
  159. data/vendor/libgit2/include/git2/pathspec.h +10 -1
  160. data/vendor/libgit2/include/git2/proxy.h +11 -1
  161. data/vendor/libgit2/include/git2/rebase.h +18 -7
  162. data/vendor/libgit2/include/git2/refdb.h +5 -2
  163. data/vendor/libgit2/include/git2/reflog.h +4 -3
  164. data/vendor/libgit2/include/git2/refs.h +11 -8
  165. data/vendor/libgit2/include/git2/refspec.h +14 -4
  166. data/vendor/libgit2/include/git2/remote.h +295 -54
  167. data/vendor/libgit2/include/git2/repository.h +95 -25
  168. data/vendor/libgit2/include/git2/reset.h +18 -5
  169. data/vendor/libgit2/include/git2/revert.h +9 -4
  170. data/vendor/libgit2/include/git2/revparse.h +4 -4
  171. data/vendor/libgit2/include/git2/revwalk.h +7 -3
  172. data/vendor/libgit2/include/git2/signature.h +47 -2
  173. data/vendor/libgit2/include/git2/stash.h +78 -10
  174. data/vendor/libgit2/include/git2/status.h +24 -11
  175. data/vendor/libgit2/include/git2/stdint.h +87 -85
  176. data/vendor/libgit2/include/git2/strarray.h +2 -16
  177. data/vendor/libgit2/include/git2/submodule.h +27 -11
  178. data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
  179. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  180. data/vendor/libgit2/include/git2/sys/commit_graph.h +110 -59
  181. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  182. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  183. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  184. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  185. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  186. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  187. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  188. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  189. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  190. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  191. data/vendor/libgit2/include/git2/sys/midx.h +47 -4
  192. data/vendor/libgit2/include/git2/sys/odb_backend.h +10 -9
  193. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  194. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  195. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  196. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  197. data/vendor/libgit2/include/git2/sys/remote.h +53 -0
  198. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  199. data/vendor/libgit2/include/git2/sys/stream.h +26 -3
  200. data/vendor/libgit2/include/git2/sys/transport.h +87 -41
  201. data/vendor/libgit2/include/git2/tag.h +4 -1
  202. data/vendor/libgit2/include/git2/trace.h +9 -3
  203. data/vendor/libgit2/include/git2/transaction.h +3 -2
  204. data/vendor/libgit2/include/git2/transport.h +11 -3
  205. data/vendor/libgit2/include/git2/tree.h +20 -8
  206. data/vendor/libgit2/include/git2/types.h +26 -10
  207. data/vendor/libgit2/include/git2/version.h +63 -6
  208. data/vendor/libgit2/include/git2/worktree.h +30 -8
  209. data/vendor/libgit2/include/git2.h +1 -0
  210. data/vendor/libgit2/src/CMakeLists.txt +203 -420
  211. data/vendor/libgit2/src/README.md +12 -0
  212. data/vendor/libgit2/src/cli/CMakeLists.txt +56 -0
  213. data/vendor/libgit2/src/cli/README.md +26 -0
  214. data/vendor/libgit2/src/{branch.h → cli/cmd.c} +10 -8
  215. data/vendor/libgit2/src/cli/cmd.h +37 -0
  216. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  217. data/vendor/libgit2/src/cli/cmd_cat_file.c +202 -0
  218. data/vendor/libgit2/src/cli/cmd_clone.c +190 -0
  219. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  220. data/vendor/libgit2/src/cli/cmd_hash_object.c +152 -0
  221. data/vendor/libgit2/src/cli/cmd_help.c +85 -0
  222. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  223. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  224. data/vendor/libgit2/src/cli/common.c +168 -0
  225. data/vendor/libgit2/src/cli/common.h +63 -0
  226. data/vendor/libgit2/src/cli/error.h +51 -0
  227. data/vendor/libgit2/src/cli/main.c +134 -0
  228. data/vendor/libgit2/src/cli/opt.c +695 -0
  229. data/vendor/libgit2/src/cli/opt.h +367 -0
  230. data/vendor/libgit2/src/cli/opt_usage.c +263 -0
  231. data/vendor/libgit2/src/cli/opt_usage.h +40 -0
  232. data/vendor/libgit2/src/cli/progress.c +395 -0
  233. data/vendor/libgit2/src/cli/progress.h +129 -0
  234. data/vendor/libgit2/src/cli/sighandler.h +20 -0
  235. data/vendor/libgit2/src/cli/unix/sighandler.c +37 -0
  236. data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
  237. data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
  238. data/vendor/libgit2/src/libgit2/CMakeLists.txt +140 -0
  239. data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +2 -2
  240. data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
  241. data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +32 -34
  242. data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
  243. data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +48 -31
  244. data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +25 -20
  245. data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +6 -4
  246. data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +87 -46
  247. data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +5 -9
  248. data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +152 -57
  249. data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +1 -0
  250. data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -2
  251. data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
  252. data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
  253. data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
  254. data/vendor/libgit2/src/libgit2/branch.h +31 -0
  255. data/vendor/libgit2/src/libgit2/buf.c +126 -0
  256. data/vendor/libgit2/src/libgit2/buf.h +50 -0
  257. data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +22 -17
  258. data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +7 -9
  259. data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +107 -91
  260. data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -2
  261. data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +14 -15
  262. data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +254 -203
  263. data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +4 -1
  264. data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +296 -77
  265. data/vendor/libgit2/src/libgit2/commit.h +87 -0
  266. data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +246 -135
  267. data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +33 -8
  268. data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +17 -7
  269. data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +1 -0
  270. data/vendor/libgit2/src/libgit2/common.h +55 -0
  271. data/vendor/libgit2/src/{config.c → libgit2/config.c} +490 -360
  272. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  273. data/vendor/libgit2/src/{config.h → libgit2/config.h} +24 -6
  274. data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +8 -10
  275. data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +4 -5
  276. data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +212 -183
  277. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  278. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  279. data/vendor/libgit2/src/libgit2/config_mem.c +374 -0
  280. data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +37 -32
  281. data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +24 -31
  282. data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
  283. data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +62 -51
  284. data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +44 -14
  285. data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +8 -10
  286. data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +46 -55
  287. data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +5 -5
  288. data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +45 -27
  289. data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +70 -20
  290. data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
  291. data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +22 -6
  292. data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +192 -105
  293. data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
  294. data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
  295. data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +49 -16
  296. data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
  297. data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +1 -1
  298. data/vendor/libgit2/src/{email.c → libgit2/email.c} +58 -40
  299. data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
  300. data/vendor/libgit2/src/{transports/ssh.h → libgit2/experimental.h.in} +3 -4
  301. data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +105 -30
  302. data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -3
  303. data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +30 -28
  304. data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +132 -58
  305. data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
  306. data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +3 -3
  307. data/vendor/libgit2/src/libgit2/grafts.c +270 -0
  308. data/vendor/libgit2/src/libgit2/grafts.h +35 -0
  309. data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +1 -1
  310. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  311. data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
  312. data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +44 -39
  313. data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
  314. data/vendor/libgit2/src/{index.c → libgit2/index.c} +460 -276
  315. data/vendor/libgit2/src/{index.h → libgit2/index.h} +21 -5
  316. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  317. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  318. data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +208 -124
  319. data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +102 -71
  320. data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +8 -5
  321. data/vendor/libgit2/src/libgit2/libgit2.c +268 -0
  322. data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +39 -37
  323. data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +83 -73
  324. data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
  325. data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +4 -4
  326. data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -5
  327. data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
  328. data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +174 -112
  329. data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +17 -6
  330. data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +53 -57
  331. data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +9 -2
  332. data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +29 -37
  333. data/vendor/libgit2/src/{object.c → libgit2/object.c} +166 -35
  334. data/vendor/libgit2/src/{object.h → libgit2/object.h} +17 -2
  335. data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +261 -88
  336. data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
  337. data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
  338. data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +67 -22
  339. data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +162 -89
  340. data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +171 -92
  341. data/vendor/libgit2/src/libgit2/oid.h +284 -0
  342. data/vendor/libgit2/src/libgit2/oidarray.c +89 -0
  343. data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +5 -1
  344. data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +126 -66
  345. data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +28 -12
  346. data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +146 -111
  347. data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +45 -25
  348. data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +8 -4
  349. data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +1 -1
  350. data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
  351. data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +8 -1
  352. data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +51 -16
  353. data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
  354. data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +42 -34
  355. data/vendor/libgit2/src/libgit2/path.c +375 -0
  356. data/vendor/libgit2/src/libgit2/path.h +68 -0
  357. data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +7 -7
  358. data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
  359. data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
  360. data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
  361. data/vendor/libgit2/src/{push.c → libgit2/push.c} +116 -60
  362. data/vendor/libgit2/src/{push.h → libgit2/push.h} +5 -16
  363. data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
  364. data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
  365. data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +147 -147
  366. data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +639 -254
  367. data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +8 -7
  368. data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +3 -2
  369. data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +67 -39
  370. data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +8 -3
  371. data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +60 -38
  372. data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +13 -2
  373. data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +821 -454
  374. data/vendor/libgit2/src/libgit2/remote.h +101 -0
  375. data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +1377 -594
  376. data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +43 -12
  377. data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
  378. data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +18 -22
  379. data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +76 -44
  380. data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +48 -19
  381. data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +3 -3
  382. data/vendor/libgit2/src/{libgit2.c → libgit2/settings.c} +162 -95
  383. data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +6 -2
  384. data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +144 -21
  385. data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -2
  386. data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +243 -68
  387. data/vendor/libgit2/src/{status.c → libgit2/status.c} +5 -2
  388. data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
  389. data/vendor/libgit2/src/libgit2/strarray.h +25 -0
  390. data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +62 -67
  391. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +41 -24
  392. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +2 -0
  393. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +11 -3
  394. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +6 -3
  395. data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
  396. data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
  397. data/vendor/libgit2/src/libgit2/streams/socket.c +428 -0
  398. data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +3 -1
  399. data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +79 -19
  400. data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +5 -0
  401. data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +279 -220
  402. data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +10 -11
  403. data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
  404. data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +55 -18
  405. data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +74 -43
  406. data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
  407. data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
  408. data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
  409. data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +7 -7
  410. data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +27 -21
  411. data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +4 -1
  412. data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +14 -11
  413. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
  414. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +3 -5
  415. data/vendor/libgit2/src/{transports/auth_negotiate.c → libgit2/transports/auth_gssapi.c} +44 -45
  416. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +1 -1
  417. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +1 -2
  418. data/vendor/libgit2/src/{transports/auth_ntlm.c → libgit2/transports/auth_ntlmclient.c} +22 -22
  419. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
  420. data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +1 -1
  421. data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +16 -19
  422. data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +49 -24
  423. data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -11
  424. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +188 -134
  425. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
  426. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  427. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  428. data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +159 -127
  429. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +142 -165
  430. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +56 -36
  431. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +307 -74
  432. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +297 -97
  433. data/vendor/libgit2/src/libgit2/transports/ssh.c +85 -0
  434. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  435. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  436. data/vendor/libgit2/src/{transports/ssh.c → libgit2/transports/ssh_libssh2.c} +414 -268
  437. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  438. data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +101 -75
  439. data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +30 -20
  440. data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +7 -5
  441. data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +128 -110
  442. data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +7 -6
  443. data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +160 -121
  444. data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
  445. data/vendor/libgit2/src/util/CMakeLists.txt +77 -0
  446. data/vendor/libgit2/src/{alloc.c → util/alloc.c} +69 -7
  447. data/vendor/libgit2/src/util/alloc.h +65 -0
  448. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  449. data/vendor/libgit2/src/util/allocators/debugalloc.h +17 -0
  450. data/vendor/libgit2/src/util/allocators/failalloc.c +32 -0
  451. data/vendor/libgit2/src/util/allocators/failalloc.h +17 -0
  452. data/vendor/libgit2/src/util/allocators/stdalloc.c +37 -0
  453. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
  454. data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +50 -0
  455. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
  456. data/vendor/libgit2/src/{array.h → util/array.h} +25 -19
  457. data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
  458. data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +5 -1
  459. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  460. data/vendor/libgit2/src/{date.c → util/date.c} +35 -33
  461. data/vendor/libgit2/src/util/date.h +45 -0
  462. data/vendor/libgit2/src/util/errors.c +401 -0
  463. data/vendor/libgit2/src/{errors.h → util/errors.h} +22 -19
  464. data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +35 -30
  465. data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +21 -8
  466. data/vendor/libgit2/src/{path.c → util/fs_path.c} +591 -615
  467. data/vendor/libgit2/src/{path.h → util/fs_path.h} +257 -181
  468. data/vendor/libgit2/src/{futils.c → util/futils.c} +144 -95
  469. data/vendor/libgit2/src/{futils.h → util/futils.h} +40 -18
  470. data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +33 -2
  471. data/vendor/libgit2/src/{common.h → util/git2_util.h} +26 -59
  472. data/vendor/libgit2/src/util/hash/builtin.c +53 -0
  473. data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
  474. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
  475. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
  476. data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
  477. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
  478. data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
  479. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
  480. data/vendor/libgit2/src/util/hash/openssl.c +347 -0
  481. data/vendor/libgit2/src/util/hash/openssl.h +61 -0
  482. data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
  483. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
  484. data/vendor/libgit2/src/util/hash/sha.h +73 -0
  485. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
  486. data/vendor/libgit2/src/util/hash/win32.c +549 -0
  487. data/vendor/libgit2/src/util/hash/win32.h +60 -0
  488. data/vendor/libgit2/src/util/hash.c +158 -0
  489. data/vendor/libgit2/src/util/hash.h +61 -0
  490. data/vendor/libgit2/src/util/hashmap.h +424 -0
  491. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  492. data/vendor/libgit2/src/{integer.h → util/integer.h} +3 -1
  493. data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
  494. data/vendor/libgit2/src/util/net.c +1160 -0
  495. data/vendor/libgit2/src/{net.h → util/net.h} +45 -4
  496. data/vendor/libgit2/src/{pool.c → util/pool.c} +1 -1
  497. data/vendor/libgit2/src/{pool.h → util/pool.h} +6 -1
  498. data/vendor/libgit2/src/{posix.c → util/posix.c} +57 -3
  499. data/vendor/libgit2/src/{posix.h → util/posix.h} +26 -1
  500. data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +3 -3
  501. data/vendor/libgit2/src/util/process.h +222 -0
  502. data/vendor/libgit2/src/util/rand.c +230 -0
  503. data/vendor/libgit2/src/util/rand.h +37 -0
  504. data/vendor/libgit2/src/{regexp.c → util/regexp.c} +5 -5
  505. data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
  506. data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
  507. data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
  508. data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +15 -14
  509. data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +5 -5
  510. data/vendor/libgit2/src/util/staticstr.h +66 -0
  511. data/vendor/libgit2/src/{buffer.c → util/str.c} +159 -153
  512. data/vendor/libgit2/src/util/str.h +357 -0
  513. data/vendor/libgit2/src/util/strlist.c +108 -0
  514. data/vendor/libgit2/src/util/strlist.h +36 -0
  515. data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
  516. data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
  517. data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
  518. data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
  519. data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -6
  520. data/vendor/libgit2/src/util/unix/process.c +629 -0
  521. data/vendor/libgit2/src/{unix → util/unix}/realpath.c +24 -8
  522. data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
  523. data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
  524. data/vendor/libgit2/src/{util.c → util/util.c} +24 -19
  525. data/vendor/libgit2/src/{util.h → util/util.h} +30 -81
  526. data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
  527. data/vendor/libgit2/src/{vector.c → util/vector.c} +3 -3
  528. data/vendor/libgit2/src/{vector.h → util/vector.h} +4 -4
  529. data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
  530. data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
  531. data/vendor/libgit2/src/{win32 → util/win32}/error.c +1 -1
  532. data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
  533. data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
  534. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +148 -17
  535. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
  536. data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
  537. data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +42 -35
  538. data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
  539. data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
  540. data/vendor/libgit2/src/util/win32/process.c +506 -0
  541. data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
  542. data/vendor/libgit2/src/util/win32/utf-conv.c +144 -0
  543. data/vendor/libgit2/src/util/win32/utf-conv.h +127 -0
  544. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
  545. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
  546. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
  547. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
  548. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +1 -1
  549. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
  550. data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
  551. data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
  552. metadata +431 -362
  553. data/vendor/libgit2/cmake/FindIconv.cmake +0 -45
  554. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  555. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  556. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  557. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  558. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  559. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  560. data/vendor/libgit2/src/alloc.h +0 -40
  561. data/vendor/libgit2/src/allocators/failalloc.c +0 -92
  562. data/vendor/libgit2/src/allocators/failalloc.h +0 -23
  563. data/vendor/libgit2/src/allocators/stdalloc.c +0 -150
  564. data/vendor/libgit2/src/allocators/win32_leakcheck.c +0 -118
  565. data/vendor/libgit2/src/buffer.h +0 -374
  566. data/vendor/libgit2/src/commit.h +0 -46
  567. data/vendor/libgit2/src/config_entries.c +0 -237
  568. data/vendor/libgit2/src/config_entries.h +0 -24
  569. data/vendor/libgit2/src/config_mem.c +0 -220
  570. data/vendor/libgit2/src/errors.c +0 -238
  571. data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
  572. data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
  573. data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
  574. data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
  575. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  576. data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
  577. data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
  578. data/vendor/libgit2/src/hash/sha1.h +0 -38
  579. data/vendor/libgit2/src/hash.c +0 -110
  580. data/vendor/libgit2/src/hash.h +0 -46
  581. data/vendor/libgit2/src/idxmap.c +0 -157
  582. data/vendor/libgit2/src/idxmap.h +0 -177
  583. data/vendor/libgit2/src/khash.h +0 -615
  584. data/vendor/libgit2/src/libgit2.h +0 -15
  585. data/vendor/libgit2/src/message.h +0 -17
  586. data/vendor/libgit2/src/net.c +0 -540
  587. data/vendor/libgit2/src/netops.c +0 -125
  588. data/vendor/libgit2/src/netops.h +0 -68
  589. data/vendor/libgit2/src/offmap.c +0 -101
  590. data/vendor/libgit2/src/offmap.h +0 -133
  591. data/vendor/libgit2/src/oid.h +0 -51
  592. data/vendor/libgit2/src/oidarray.c +0 -43
  593. data/vendor/libgit2/src/oidmap.c +0 -107
  594. data/vendor/libgit2/src/oidmap.h +0 -128
  595. data/vendor/libgit2/src/remote.h +0 -55
  596. data/vendor/libgit2/src/streams/socket.c +0 -239
  597. data/vendor/libgit2/src/strmap.c +0 -100
  598. data/vendor/libgit2/src/strmap.h +0 -131
  599. data/vendor/libgit2/src/sysdir.c +0 -347
  600. data/vendor/libgit2/src/threadstate.c +0 -84
  601. data/vendor/libgit2/src/threadstate.h +0 -24
  602. data/vendor/libgit2/src/win32/findfile.c +0 -230
  603. data/vendor/libgit2/src/win32/findfile.h +0 -19
  604. data/vendor/libgit2/src/win32/utf-conv.c +0 -146
  605. data/vendor/libgit2/src/win32/utf-conv.h +0 -60
  606. /data/vendor/libgit2/{src → deps}/xdiff/xemit.h +0 -0
  607. /data/vendor/libgit2/{src → deps}/xdiff/xprepare.h +0 -0
  608. /data/vendor/libgit2/{src → deps}/xdiff/xtypes.h +0 -0
  609. /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
  610. /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
  611. /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
  612. /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
  613. /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
  614. /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
  615. /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
  616. /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
  617. /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
  618. /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
  619. /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
  620. /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
  621. /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
  622. /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
  623. /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
  624. /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
  625. /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
  626. /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
  627. /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
  628. /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
  629. /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
  630. /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
  631. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
  632. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
  633. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
  634. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
  635. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
  636. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
  637. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
  638. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
  639. /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
  640. /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
  641. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
  642. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
  643. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
  644. /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
  645. /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
  646. /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
  647. /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
  648. /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
  649. /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
  650. /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
  651. /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
  652. /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
  653. /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
  654. /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
  655. /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
  656. /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
@@ -13,6 +13,7 @@
13
13
  #include "odb.h"
14
14
  #include "oid.h"
15
15
  #include "oidarray.h"
16
+ #include "hashmap_oid.h"
16
17
 
17
18
  /* Option to bypass checking existence of '.keep' files */
18
19
  bool git_disable_pack_keep_file_checks = false;
@@ -32,7 +33,7 @@ static int packfile_unpack_compressed(
32
33
  * Throws GIT_EAMBIGUOUSOIDPREFIX if short oid
33
34
  * is ambiguous within the pack.
34
35
  * This method assumes that len is between
35
- * GIT_OID_MINPREFIXLEN and GIT_OID_HEXSZ.
36
+ * GIT_OID_MINPREFIXLEN and the oid type's hexsize.
36
37
  */
37
38
  static int pack_entry_find_offset(
38
39
  off64_t *offset_out,
@@ -41,6 +42,12 @@ static int pack_entry_find_offset(
41
42
  const git_oid *short_oid,
42
43
  size_t len);
43
44
 
45
+ #define off64_hash(key) (uint32_t)((key)>>33^(key)^(key)<<11)
46
+ #define off64_equal(a, b) ((a) == (b))
47
+
48
+ GIT_HASHMAP_FUNCTIONS(git_pack_offsetmap, GIT_HASHMAP_INLINE, off64_t, git_pack_cache_entry *, off64_hash, off64_equal);
49
+ GIT_HASHMAP_OID_FUNCTIONS(git_pack_oidmap, , struct git_pack_entry *);
50
+
44
51
  static int packfile_error(const char *message)
45
52
  {
46
53
  git_error_set(GIT_ERROR_ODB, "invalid pack file - %s", message);
@@ -75,31 +82,21 @@ static void free_cache_object(void *o)
75
82
 
76
83
  static void cache_free(git_pack_cache *cache)
77
84
  {
85
+ git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
78
86
  git_pack_cache_entry *entry;
79
87
 
80
- if (cache->entries) {
81
- git_offmap_foreach_value(cache->entries, entry, {
82
- free_cache_object(entry);
83
- });
88
+ while (git_pack_offsetmap_iterate(&iter, NULL, &entry, &cache->entries) == 0)
89
+ free_cache_object(entry);
84
90
 
85
- git_offmap_free(cache->entries);
86
- cache->entries = NULL;
87
- }
91
+ git_pack_offsetmap_dispose(&cache->entries);
88
92
  }
89
93
 
90
94
  static int cache_init(git_pack_cache *cache)
91
95
  {
92
- if (git_offmap_new(&cache->entries) < 0)
93
- return -1;
94
-
95
96
  cache->memory_limit = GIT_PACK_CACHE_MEMORY_LIMIT;
96
97
 
97
98
  if (git_mutex_init(&cache->lock)) {
98
99
  git_error_set(GIT_ERROR_OS, "failed to initialize pack cache mutex");
99
-
100
- git__free(cache->entries);
101
- cache->entries = NULL;
102
-
103
100
  return -1;
104
101
  }
105
102
 
@@ -108,15 +105,16 @@ static int cache_init(git_pack_cache *cache)
108
105
 
109
106
  static git_pack_cache_entry *cache_get(git_pack_cache *cache, off64_t offset)
110
107
  {
111
- git_pack_cache_entry *entry;
108
+ git_pack_cache_entry *entry = NULL;
112
109
 
113
110
  if (git_mutex_lock(&cache->lock) < 0)
114
111
  return NULL;
115
112
 
116
- if ((entry = git_offmap_get(cache->entries, offset)) != NULL) {
113
+ if (git_pack_offsetmap_get(&entry, &cache->entries, offset) == 0) {
117
114
  git_atomic32_inc(&entry->refcount);
118
115
  entry->last_usage = cache->use_ctr++;
119
116
  }
117
+
120
118
  git_mutex_unlock(&cache->lock);
121
119
 
122
120
  return entry;
@@ -125,16 +123,17 @@ static git_pack_cache_entry *cache_get(git_pack_cache *cache, off64_t offset)
125
123
  /* Run with the cache lock held */
126
124
  static void free_lowest_entry(git_pack_cache *cache)
127
125
  {
128
- off64_t offset;
126
+ git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
129
127
  git_pack_cache_entry *entry;
128
+ off64_t offset;
130
129
 
131
- git_offmap_foreach(cache->entries, offset, entry, {
130
+ while (git_pack_offsetmap_iterate(&iter, &offset, &entry, &cache->entries) == 0) {
132
131
  if (entry && git_atomic32_get(&entry->refcount) == 0) {
133
132
  cache->memory_used -= entry->raw.len;
134
- git_offmap_delete(cache->entries, offset);
133
+ git_pack_offsetmap_remove(&cache->entries, offset);
135
134
  free_cache_object(entry);
136
135
  }
137
- });
136
+ }
138
137
  }
139
138
 
140
139
  static int cache_add(
@@ -157,12 +156,12 @@ static int cache_add(
157
156
  return -1;
158
157
  }
159
158
  /* Add it to the cache if nobody else has */
160
- exists = git_offmap_exists(cache->entries, offset);
159
+ exists = git_pack_offsetmap_contains(&cache->entries, offset);
161
160
  if (!exists) {
162
161
  while (cache->memory_used + base->len > cache->memory_limit)
163
162
  free_lowest_entry(cache);
164
163
 
165
- git_offmap_set(cache->entries, offset, entry);
164
+ git_pack_offsetmap_put(&cache->entries, offset, entry);
166
165
  cache->memory_used += entry->raw.len;
167
166
 
168
167
  *cached_out = entry;
@@ -186,9 +185,9 @@ static int cache_add(
186
185
 
187
186
  static void pack_index_free(struct git_pack_file *p)
188
187
  {
189
- if (p->oids) {
190
- git__free(p->oids);
191
- p->oids = NULL;
188
+ if (p->ids) {
189
+ git__free(p->ids);
190
+ p->ids = NULL;
192
191
  }
193
192
  if (p->index_map.data) {
194
193
  git_futils_mmap_free(&p->index_map);
@@ -200,11 +199,12 @@ static void pack_index_free(struct git_pack_file *p)
200
199
  static int pack_index_check_locked(const char *path, struct git_pack_file *p)
201
200
  {
202
201
  struct git_pack_idx_header *hdr;
203
- uint32_t version, nr, i, *index;
202
+ uint32_t version, nr = 0, i, *index;
204
203
  void *idx_map;
205
204
  size_t idx_size;
206
205
  struct stat st;
207
206
  int error;
207
+
208
208
  /* TODO: properly open the file without access time using O_NOATIME */
209
209
  git_file fd = git_futils_open_ro(path);
210
210
  if (fd < 0)
@@ -218,8 +218,7 @@ static int pack_index_check_locked(const char *path, struct git_pack_file *p)
218
218
 
219
219
  if (!S_ISREG(st.st_mode) ||
220
220
  !git__is_sizet(st.st_size) ||
221
- (idx_size = (size_t)st.st_size) < 4 * 256 + 20 + 20)
222
- {
221
+ (idx_size = (size_t)st.st_size) < (size_t)((4 * 256) + (p->oid_size * 2))) {
223
222
  p_close(fd);
224
223
  git_error_set(GIT_ERROR_ODB, "invalid pack index '%s'", path);
225
224
  return -1;
@@ -242,10 +241,10 @@ static int pack_index_check_locked(const char *path, struct git_pack_file *p)
242
241
  return packfile_error("unsupported index version");
243
242
  }
244
243
 
245
- } else
244
+ } else {
246
245
  version = 1;
246
+ }
247
247
 
248
- nr = 0;
249
248
  index = idx_map;
250
249
 
251
250
  if (version > 1)
@@ -264,11 +263,11 @@ static int pack_index_check_locked(const char *path, struct git_pack_file *p)
264
263
  /*
265
264
  * Total size:
266
265
  * - 256 index entries 4 bytes each
267
- * - 24-byte entries * nr (20-byte sha1 + 4-byte offset)
268
- * - 20-byte SHA1 of the packfile
269
- * - 20-byte SHA1 file checksum
266
+ * - 24/36-byte entries * nr (20/32 byte SHA + 4-byte offset)
267
+ * - 20/32-byte SHA of the packfile
268
+ * - 20/32-byte SHA file checksum
270
269
  */
271
- if (idx_size != 4*256 + nr * 24 + 20 + 20) {
270
+ if (idx_size != (4 * 256 + ((uint64_t) nr * (p->oid_size + 4)) + (p->oid_size * 2))) {
272
271
  git_futils_mmap_free(&p->index_map);
273
272
  return packfile_error("index is corrupted");
274
273
  }
@@ -277,17 +276,17 @@ static int pack_index_check_locked(const char *path, struct git_pack_file *p)
277
276
  * Minimum size:
278
277
  * - 8 bytes of header
279
278
  * - 256 index entries 4 bytes each
280
- * - 20-byte sha1 entry * nr
279
+ * - 20/32-byte SHA entry * nr
281
280
  * - 4-byte crc entry * nr
282
281
  * - 4-byte offset entry * nr
283
- * - 20-byte SHA1 of the packfile
284
- * - 20-byte SHA1 file checksum
282
+ * - 20/32-byte SHA of the packfile
283
+ * - 20/32-byte SHA file checksum
285
284
  * And after the 4-byte offset table might be a
286
285
  * variable sized table containing 8-byte entries
287
286
  * for offsets larger than 2^31.
288
287
  */
289
- unsigned long min_size = 8 + 4*256 + nr*(20 + 4 + 4) + 20 + 20;
290
- unsigned long max_size = min_size;
288
+ uint64_t min_size = 8 + (4 * 256) + ((uint64_t)nr * (p->oid_size + 4 + 4)) + (p->oid_size * 2);
289
+ uint64_t max_size = min_size;
291
290
 
292
291
  if (nr)
293
292
  max_size += (nr - 1)*8;
@@ -308,7 +307,7 @@ static int pack_index_open_locked(struct git_pack_file *p)
308
307
  {
309
308
  int error = 0;
310
309
  size_t name_len;
311
- git_buf idx_name = GIT_BUF_INIT;
310
+ git_str idx_name = GIT_STR_INIT;
312
311
 
313
312
  if (p->index_version > -1)
314
313
  goto cleanup;
@@ -317,12 +316,12 @@ static int pack_index_open_locked(struct git_pack_file *p)
317
316
  name_len = strlen(p->pack_name);
318
317
  GIT_ASSERT(name_len > strlen(".pack"));
319
318
 
320
- if ((error = git_buf_init(&idx_name, name_len)) < 0)
319
+ if ((error = git_str_init(&idx_name, name_len)) < 0)
321
320
  goto cleanup;
322
321
 
323
- git_buf_put(&idx_name, p->pack_name, name_len - strlen(".pack"));
324
- git_buf_puts(&idx_name, ".idx");
325
- if (git_buf_oom(&idx_name)) {
322
+ git_str_put(&idx_name, p->pack_name, name_len - strlen(".pack"));
323
+ git_str_puts(&idx_name, ".idx");
324
+ if (git_str_oom(&idx_name)) {
326
325
  error = -1;
327
326
  goto cleanup;
328
327
  }
@@ -331,7 +330,7 @@ static int pack_index_open_locked(struct git_pack_file *p)
331
330
  error = pack_index_check_locked(idx_name.ptr, p);
332
331
 
333
332
  cleanup:
334
- git_buf_dispose(&idx_name);
333
+ git_str_dispose(&idx_name);
335
334
 
336
335
  return error;
337
336
  }
@@ -365,12 +364,12 @@ static unsigned char *pack_window_open(
365
364
  * Don't allow a negative offset, as that means we've wrapped
366
365
  * around.
367
366
  */
368
- if (offset > (p->mwf.size - 20))
367
+ if (offset > (p->mwf.size - p->oid_size))
369
368
  goto cleanup;
370
369
  if (offset < 0)
371
370
  goto cleanup;
372
371
 
373
- pack_data = git_mwindow_open(&p->mwf, w_cursor, offset, 20, left);
372
+ pack_data = git_mwindow_open(&p->mwf, w_cursor, offset, p->oid_size, left);
374
373
 
375
374
  cleanup:
376
375
  git_mutex_unlock(&p->mwf.lock);
@@ -473,13 +472,13 @@ int git_packfile_unpack_header(
473
472
  return error;
474
473
  }
475
474
 
476
- /* pack_window_open() assures us we have [base, base + 20) available
477
- * as a range that we can look at at. (Its actually the hash
478
- * size that is assured.) With our object header encoding
479
- * the maximum deflated object size is 2^137, which is just
480
- * insane, so we know won't exceed what we have been given.
475
+ /* pack_window_open() assures us we have [base, base + oid_size)
476
+ * available as a range that we can look at at. (It's actually
477
+ * the hash size that is assured.) With our object header
478
+ * encoding the maximum deflated object size is 2^137, which is
479
+ * just insane, so we know won't exceed what we have been given.
481
480
  */
482
- base = git_mwindow_open(&p->mwf, w_curs, *curpos, 20, &left);
481
+ base = git_mwindow_open(&p->mwf, w_curs, *curpos, p->oid_size, &left);
483
482
  git_mutex_unlock(&p->lock);
484
483
  git_mutex_unlock(&p->mwf.lock);
485
484
  if (base == NULL)
@@ -977,11 +976,12 @@ int get_delta_base(
977
976
  /* Assumption: the only reason this would fail is because the file is too small */
978
977
  if (base_info == NULL)
979
978
  return GIT_EBUFS;
980
- /* pack_window_open() assured us we have [base_info, base_info + 20)
981
- * as a range that we can look at without walking off the
982
- * end of the mapped window. Its actually the hash size
983
- * that is assured. An OFS_DELTA longer than the hash size
984
- * is stupid, as then a REF_DELTA would be smaller to store.
979
+ /* pack_window_open() assured us we have
980
+ * [base_info, base_info + oid_size) as a range that we can look
981
+ * at without walking off the end of the mapped window. Its
982
+ * actually the hash size that is assured. An OFS_DELTA longer
983
+ * than the hash size is stupid, as then a REF_DELTA would be
984
+ * smaller to store.
985
985
  */
986
986
  if (type == GIT_OBJECT_OFS_DELTA) {
987
987
  unsigned used = 0;
@@ -1001,17 +1001,18 @@ int get_delta_base(
1001
1001
  base_offset = delta_obj_offset - unsigned_base_offset;
1002
1002
  *curpos += used;
1003
1003
  } else if (type == GIT_OBJECT_REF_DELTA) {
1004
+ git_oid base_oid;
1005
+ git_oid__fromraw(&base_oid, base_info, p->oid_type);
1006
+
1004
1007
  /* If we have the cooperative cache, search in it first */
1005
1008
  if (p->has_cache) {
1006
1009
  struct git_pack_entry *entry;
1007
- git_oid oid;
1008
1010
 
1009
- git_oid_fromraw(&oid, base_info);
1010
- if ((entry = git_oidmap_get(p->idx_cache, &oid)) != NULL) {
1011
+ if (git_pack_oidmap_get(&entry, &p->idx_cache, &base_oid) == 0) {
1011
1012
  if (entry->offset == 0)
1012
1013
  return packfile_error("delta offset is zero");
1013
1014
 
1014
- *curpos += 20;
1015
+ *curpos += p->oid_size;
1015
1016
  *delta_base_out = entry->offset;
1016
1017
  return 0;
1017
1018
  } else {
@@ -1024,9 +1025,9 @@ int get_delta_base(
1024
1025
  }
1025
1026
 
1026
1027
  /* The base entry _must_ be in the same pack */
1027
- if (pack_entry_find_offset(&base_offset, &unused, p, (git_oid *)base_info, GIT_OID_HEXSZ) < 0)
1028
+ if (pack_entry_find_offset(&base_offset, &unused, p, &base_oid, p->oid_hexsize) < 0)
1028
1029
  return packfile_error("base entry delta is not in the same pack");
1029
- *curpos += 20;
1030
+ *curpos += p->oid_size;
1030
1031
  } else
1031
1032
  return packfile_error("unknown object type");
1032
1033
 
@@ -1069,7 +1070,7 @@ void git_packfile_free(struct git_pack_file *p, bool unlink_packfile)
1069
1070
 
1070
1071
  pack_index_free(p);
1071
1072
 
1072
- git__free(p->bad_object_sha1);
1073
+ git__free(p->bad_object_ids);
1073
1074
 
1074
1075
  git_mutex_free(&p->bases.lock);
1075
1076
  git_mutex_free(&p->mwf.lock);
@@ -1082,8 +1083,8 @@ static int packfile_open_locked(struct git_pack_file *p)
1082
1083
  {
1083
1084
  struct stat st;
1084
1085
  struct git_pack_header hdr;
1085
- git_oid sha1;
1086
- unsigned char *idx_sha1;
1086
+ unsigned char checksum[GIT_OID_MAX_SIZE];
1087
+ unsigned char *idx_checksum;
1087
1088
 
1088
1089
  if (pack_index_open_locked(p) < 0)
1089
1090
  return git_odb__error_notfound("failed to open packfile", NULL, 0);
@@ -1130,12 +1131,13 @@ static int packfile_open_locked(struct git_pack_file *p)
1130
1131
 
1131
1132
  /* Verify the pack matches its index. */
1132
1133
  if (p->num_objects != ntohl(hdr.hdr_entries) ||
1133
- p_pread(p->mwf.fd, sha1.id, GIT_OID_RAWSZ, p->mwf.size - GIT_OID_RAWSZ) < 0)
1134
+ p_pread(p->mwf.fd, checksum, p->oid_size, p->mwf.size - p->oid_size) < 0)
1134
1135
  goto cleanup;
1135
1136
 
1136
- idx_sha1 = ((unsigned char *)p->index_map.data) + p->index_map.len - 40;
1137
+ idx_checksum = ((unsigned char *)p->index_map.data) +
1138
+ p->index_map.len - (p->oid_size * 2);
1137
1139
 
1138
- if (git_oid__cmp(&sha1, (git_oid *)idx_sha1) != 0)
1140
+ if (git_oid_raw_cmp(checksum, idx_checksum, p->oid_size) != 0)
1139
1141
  goto cleanup;
1140
1142
 
1141
1143
  if (git_mwindow_file_register(&p->mwf) < 0)
@@ -1156,21 +1158,24 @@ cleanup:
1156
1158
  int git_packfile__name(char **out, const char *path)
1157
1159
  {
1158
1160
  size_t path_len;
1159
- git_buf buf = GIT_BUF_INIT;
1161
+ git_str buf = GIT_STR_INIT;
1160
1162
 
1161
1163
  path_len = strlen(path);
1162
1164
 
1163
1165
  if (path_len < strlen(".idx"))
1164
1166
  return git_odb__error_notfound("invalid packfile path", NULL, 0);
1165
1167
 
1166
- if (git_buf_printf(&buf, "%.*s.pack", (int)(path_len - strlen(".idx")), path) < 0)
1168
+ if (git_str_printf(&buf, "%.*s.pack", (int)(path_len - strlen(".idx")), path) < 0)
1167
1169
  return -1;
1168
1170
 
1169
- *out = git_buf_detach(&buf);
1171
+ *out = git_str_detach(&buf);
1170
1172
  return 0;
1171
1173
  }
1172
1174
 
1173
- int git_packfile_alloc(struct git_pack_file **pack_out, const char *path)
1175
+ int git_packfile_alloc(
1176
+ struct git_pack_file **pack_out,
1177
+ const char *path,
1178
+ git_oid_t oid_type)
1174
1179
  {
1175
1180
  struct stat st;
1176
1181
  struct git_pack_file *p;
@@ -1198,7 +1203,7 @@ int git_packfile_alloc(struct git_pack_file **pack_out, const char *path)
1198
1203
 
1199
1204
  if (!git_disable_pack_keep_file_checks) {
1200
1205
  memcpy(p->pack_name + root_len, ".keep", sizeof(".keep"));
1201
- if (git_path_exists(p->pack_name) == true)
1206
+ if (git_fs_path_exists(p->pack_name) == true)
1202
1207
  p->pack_keep = 1;
1203
1208
  }
1204
1209
 
@@ -1218,6 +1223,9 @@ int git_packfile_alloc(struct git_pack_file **pack_out, const char *path)
1218
1223
  p->pack_local = 1;
1219
1224
  p->mtime = (git_time_t)st.st_mtime;
1220
1225
  p->index_version = -1;
1226
+ p->oid_type = oid_type ? oid_type : GIT_OID_DEFAULT;
1227
+ p->oid_size = (unsigned int)git_oid_size(p->oid_type);
1228
+ p->oid_hexsize = (unsigned int)git_oid_hexsize(p->oid_type);
1221
1229
 
1222
1230
  if (git_mutex_init(&p->lock) < 0) {
1223
1231
  git_error_set(GIT_ERROR_OS, "failed to initialize packfile mutex");
@@ -1259,20 +1267,20 @@ static off64_t nth_packed_object_offset_locked(struct git_pack_file *p, uint32_t
1259
1267
  end = index + p->index_map.len;
1260
1268
  index += 4 * 256;
1261
1269
  if (p->index_version == 1)
1262
- return ntohl(*((uint32_t *)(index + 24 * n)));
1270
+ return ntohl(*((uint32_t *)(index + (p->oid_size + 4) * (size_t) n)));
1263
1271
 
1264
- index += 8 + p->num_objects * (20 + 4);
1272
+ index += 8 + (size_t) p->num_objects * (p->oid_size + 4);
1265
1273
  off32 = ntohl(*((uint32_t *)(index + 4 * n)));
1266
1274
  if (!(off32 & 0x80000000))
1267
1275
  return off32;
1268
- index += p->num_objects * 4 + (off32 & 0x7fffffff) * 8;
1276
+ index += (size_t) p->num_objects * 4 + (off32 & 0x7fffffff) * 8;
1269
1277
 
1270
1278
  /* Make sure we're not being sent out of bounds */
1271
1279
  if (index >= end - 8)
1272
1280
  return -1;
1273
1281
 
1274
1282
  return (((uint64_t)ntohl(*((uint32_t *)(index + 0)))) << 32) |
1275
- ntohl(*((uint32_t *)(index + 4)));
1283
+ ntohl(*((uint32_t *)(index + 4)));
1276
1284
  }
1277
1285
 
1278
1286
  static int git__memcmp4(const void *a, const void *b) {
@@ -1311,7 +1319,7 @@ int git_pack_foreach_entry(
1311
1319
 
1312
1320
  index += 4 * 256;
1313
1321
 
1314
- if (p->oids == NULL) {
1322
+ if (p->ids == NULL) {
1315
1323
  git_vector offsets, oids;
1316
1324
 
1317
1325
  if ((error = git_vector_init(&oids, p->num_objects, NULL))) {
@@ -1325,25 +1333,32 @@ int git_pack_foreach_entry(
1325
1333
  }
1326
1334
 
1327
1335
  if (p->index_version > 1) {
1328
- const unsigned char *off = index + 24 * p->num_objects;
1336
+ const unsigned char *off = index +
1337
+ (p->oid_size + 4) * p->num_objects;
1338
+
1329
1339
  for (i = 0; i < p->num_objects; i++)
1330
1340
  git_vector_insert(&offsets, (void*)&off[4 * i]);
1341
+
1331
1342
  git_vector_sort(&offsets);
1332
1343
  git_vector_foreach(&offsets, i, current)
1333
1344
  git_vector_insert(&oids, (void*)&index[5 * (current - off)]);
1334
1345
  } else {
1335
1346
  for (i = 0; i < p->num_objects; i++)
1336
- git_vector_insert(&offsets, (void*)&index[24 * i]);
1347
+ git_vector_insert(&offsets, (void*)&index[(p->oid_size + 4) * i]);
1337
1348
  git_vector_sort(&offsets);
1338
1349
  git_vector_foreach(&offsets, i, current)
1339
1350
  git_vector_insert(&oids, (void*)&current[4]);
1340
1351
  }
1341
1352
 
1342
- git_vector_free(&offsets);
1343
- p->oids = (git_oid **)git_vector_detach(NULL, NULL, &oids);
1353
+ git_vector_dispose(&offsets);
1354
+ p->ids = (unsigned char **)git_vector_detach(NULL, NULL, &oids);
1344
1355
  }
1345
1356
 
1346
- /* We need to copy the OIDs to another array before we relinquish the lock to avoid races. */
1357
+ /*
1358
+ * We need to copy the OIDs to another array before we
1359
+ * relinquish the lock to avoid races. We can also take
1360
+ * this opportunity to put them into normal form.
1361
+ */
1347
1362
  git_array_init_to_size(oids, p->num_objects);
1348
1363
  if (!oids.ptr) {
1349
1364
  git_mutex_unlock(&p->lock);
@@ -1357,7 +1372,7 @@ int git_pack_foreach_entry(
1357
1372
  git_array_clear(oids);
1358
1373
  GIT_ERROR_CHECK_ALLOC(oid);
1359
1374
  }
1360
- git_oid_cpy(oid, p->oids[i]);
1375
+ git_oid__fromraw(oid, p->ids[i], p->oid_type);
1361
1376
  }
1362
1377
 
1363
1378
  git_mutex_unlock(&p->lock);
@@ -1380,7 +1395,7 @@ int git_pack_foreach_entry_offset(
1380
1395
  {
1381
1396
  const unsigned char *index;
1382
1397
  off64_t current_offset;
1383
- const git_oid *current_oid;
1398
+ git_oid current_oid;
1384
1399
  uint32_t i;
1385
1400
  int error = 0;
1386
1401
 
@@ -1407,10 +1422,13 @@ int git_pack_foreach_entry_offset(
1407
1422
 
1408
1423
  /* all offsets should have been validated by pack_index_check_locked */
1409
1424
  if (p->index_version > 1) {
1410
- const unsigned char *offsets = index + 24 * p->num_objects;
1425
+ const unsigned char *offsets = index +
1426
+ (p->oid_size + 4) * p->num_objects;
1411
1427
  const unsigned char *large_offset_ptr;
1412
- const unsigned char *large_offsets = index + 28 * p->num_objects;
1413
- const unsigned char *large_offsets_end = ((const unsigned char *)p->index_map.data) + p->index_map.len - 20;
1428
+ const unsigned char *large_offsets = index +
1429
+ (p->oid_size + 8) * p->num_objects;
1430
+ const unsigned char *large_offsets_end = ((const unsigned char *)p->index_map.data) + p->index_map.len - p->oid_size;
1431
+
1414
1432
  for (i = 0; i < p->num_objects; i++) {
1415
1433
  current_offset = ntohl(*(const uint32_t *)(offsets + 4 * i));
1416
1434
  if (current_offset & 0x80000000) {
@@ -1422,17 +1440,18 @@ int git_pack_foreach_entry_offset(
1422
1440
  current_offset = (((off64_t)ntohl(*((uint32_t *)(large_offset_ptr + 0)))) << 32) |
1423
1441
  ntohl(*((uint32_t *)(large_offset_ptr + 4)));
1424
1442
  }
1425
- current_oid = (const git_oid *)(index + 20 * i);
1426
- if ((error = cb(current_oid, current_offset, data)) != 0) {
1443
+
1444
+ git_oid__fromraw(&current_oid, (index + p->oid_size * i), p->oid_type);
1445
+ if ((error = cb(&current_oid, current_offset, data)) != 0) {
1427
1446
  error = git_error_set_after_callback(error);
1428
1447
  goto cleanup;
1429
1448
  }
1430
1449
  }
1431
1450
  } else {
1432
1451
  for (i = 0; i < p->num_objects; i++) {
1433
- current_offset = ntohl(*(const uint32_t *)(index + 24 * i));
1434
- current_oid = (const git_oid *)(index + 24 * i + 4);
1435
- if ((error = cb(current_oid, current_offset, data)) != 0) {
1452
+ current_offset = ntohl(*(const uint32_t *)(index + (p->oid_size + 4) * i));
1453
+ git_oid__fromraw(&current_oid, (index + (p->oid_size + 4) * i + 4), p->oid_type);
1454
+ if ((error = cb(&current_oid, current_offset, data)) != 0) {
1436
1455
  error = git_error_set_after_callback(error);
1437
1456
  goto cleanup;
1438
1457
  }
@@ -1444,14 +1463,20 @@ cleanup:
1444
1463
  return error;
1445
1464
  }
1446
1465
 
1447
- int git_pack__lookup_sha1(const void *oid_lookup_table, size_t stride, unsigned lo,
1448
- unsigned hi, const unsigned char *oid_prefix)
1466
+ int git_pack__lookup_id(
1467
+ const void *oid_lookup_table,
1468
+ size_t stride,
1469
+ unsigned lo,
1470
+ unsigned hi,
1471
+ const unsigned char *oid_prefix,
1472
+ const git_oid_t oid_type)
1449
1473
  {
1450
1474
  const unsigned char *base = oid_lookup_table;
1475
+ size_t oid_size = git_oid_size(oid_type);
1451
1476
 
1452
1477
  while (lo < hi) {
1453
1478
  unsigned mi = (lo + hi) / 2;
1454
- int cmp = git_oid__hashcmp(base + mi * stride, oid_prefix);
1479
+ int cmp = git_oid_raw_cmp(base + mi * stride, oid_prefix, oid_size);
1455
1480
 
1456
1481
  if (!cmp)
1457
1482
  return mi;
@@ -1473,6 +1498,7 @@ static int pack_entry_find_offset(
1473
1498
  size_t len)
1474
1499
  {
1475
1500
  const uint32_t *level1_ofs;
1501
+ size_t ofs_delta = 0;
1476
1502
  const unsigned char *index;
1477
1503
  unsigned hi, lo, stride;
1478
1504
  int pos, found = 0;
@@ -1498,17 +1524,23 @@ static int pack_entry_find_offset(
1498
1524
 
1499
1525
  if (p->index_version > 1) {
1500
1526
  level1_ofs += 2;
1527
+ ofs_delta = 2;
1501
1528
  index += 8;
1502
1529
  }
1503
1530
 
1531
+ if ((size_t)short_oid->id[0] + ofs_delta >= p->index_map.len) {
1532
+ git_error_set(GIT_ERROR_INTERNAL, "internal error: p->short_oid->[0] out of bounds");
1533
+ goto cleanup;
1534
+ }
1535
+
1504
1536
  index += 4 * 256;
1505
1537
  hi = ntohl(level1_ofs[(int)short_oid->id[0]]);
1506
1538
  lo = ((short_oid->id[0] == 0x0) ? 0 : ntohl(level1_ofs[(int)short_oid->id[0] - 1]));
1507
1539
 
1508
1540
  if (p->index_version > 1) {
1509
- stride = 20;
1541
+ stride = p->oid_size;
1510
1542
  } else {
1511
- stride = 24;
1543
+ stride = p->oid_size + 4;
1512
1544
  index += 4;
1513
1545
  }
1514
1546
 
@@ -1517,7 +1549,8 @@ static int pack_entry_find_offset(
1517
1549
  short_oid->id[0], short_oid->id[1], short_oid->id[2], lo, hi, p->num_objects);
1518
1550
  #endif
1519
1551
 
1520
- pos = git_pack__lookup_sha1(index, stride, lo, hi, short_oid->id);
1552
+ pos = git_pack__lookup_id(index, stride, lo, hi,
1553
+ short_oid->id, p->oid_type);
1521
1554
 
1522
1555
  if (pos >= 0) {
1523
1556
  /* An object matching exactly the oid was found */
@@ -1530,16 +1563,18 @@ static int pack_entry_find_offset(
1530
1563
  if (pos < (int)p->num_objects) {
1531
1564
  current = index + pos * stride;
1532
1565
 
1533
- if (!git_oid_ncmp(short_oid, (const git_oid *)current, len))
1566
+ if (!git_oid_raw_ncmp(short_oid->id, current, len))
1534
1567
  found = 1;
1535
1568
  }
1536
1569
  }
1537
1570
 
1538
- if (found && len != GIT_OID_HEXSZ && pos + 1 < (int)p->num_objects) {
1571
+ if (found &&
1572
+ len != p->oid_hexsize &&
1573
+ pos + 1 < (int)p->num_objects) {
1539
1574
  /* Check for ambiguousity */
1540
1575
  const unsigned char *next = current + stride;
1541
1576
 
1542
- if (!git_oid_ncmp(short_oid, (const git_oid *)next, len)) {
1577
+ if (!git_oid_raw_ncmp(short_oid->id, next, len)) {
1543
1578
  found = 2;
1544
1579
  }
1545
1580
  }
@@ -1560,13 +1595,13 @@ static int pack_entry_find_offset(
1560
1595
  }
1561
1596
 
1562
1597
  *offset_out = offset;
1563
- git_oid_fromraw(found_oid, current);
1598
+ git_oid__fromraw(found_oid, current, p->oid_type);
1564
1599
 
1565
1600
  #ifdef INDEX_DEBUG_LOOKUP
1566
1601
  {
1567
- unsigned char hex_sha1[GIT_OID_HEXSZ + 1];
1602
+ char hex_sha1[p->oid_hexsize + 1];
1568
1603
  git_oid_fmt(hex_sha1, found_oid);
1569
- hex_sha1[GIT_OID_HEXSZ] = '\0';
1604
+ hex_sha1[p->oid_hexsize] = '\0';
1570
1605
  printf("found lo=%d %s\n", lo, hex_sha1);
1571
1606
  }
1572
1607
  #endif
@@ -1588,10 +1623,10 @@ int git_pack_entry_find(
1588
1623
 
1589
1624
  GIT_ASSERT_ARG(p);
1590
1625
 
1591
- if (len == GIT_OID_HEXSZ && p->num_bad_objects) {
1626
+ if (len == p->oid_hexsize && p->num_bad_objects) {
1592
1627
  unsigned i;
1593
1628
  for (i = 0; i < p->num_bad_objects; i++)
1594
- if (git_oid__cmp(short_oid, &p->bad_object_sha1[i]) == 0)
1629
+ if (git_oid__cmp(short_oid, &p->bad_object_ids[i]) == 0)
1595
1630
  return packfile_error("bad object found in packfile");
1596
1631
  }
1597
1632
 
@@ -1624,6 +1659,6 @@ int git_pack_entry_find(
1624
1659
  e->offset = offset;
1625
1660
  e->p = p;
1626
1661
 
1627
- git_oid_cpy(&e->sha1, &found_oid);
1662
+ git_oid_cpy(&e->id, &found_oid);
1628
1663
  return 0;
1629
1664
  }