rugged 1.3.2.3 → 1.4.2

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 (329) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rugged/extconf.rb +1 -1
  3. data/ext/rugged/rugged_config.c +7 -2
  4. data/ext/rugged/rugged_remote.c +17 -0
  5. data/lib/rugged/version.rb +1 -1
  6. data/vendor/libgit2/CMakeLists.txt +103 -276
  7. data/vendor/libgit2/COPYING +36 -19
  8. data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
  9. data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
  10. data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
  11. data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
  12. data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
  13. data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
  14. data/vendor/libgit2/cmake/{FindHTTP_Parser.cmake → FindHTTPParser.cmake} +17 -17
  15. data/vendor/libgit2/cmake/FindIconv.cmake +27 -27
  16. data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
  17. data/vendor/libgit2/cmake/FindPCRE.cmake +13 -13
  18. data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
  19. data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
  20. data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
  21. data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
  22. data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
  23. data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
  24. data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
  25. data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
  26. data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
  27. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
  28. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +19 -0
  29. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +100 -100
  30. data/vendor/libgit2/cmake/SelectHashes.cmake +39 -49
  31. data/vendor/libgit2/cmake/SelectRegex.cmake +51 -0
  32. data/vendor/libgit2/cmake/SelectSSH.cmake +41 -0
  33. data/vendor/libgit2/cmake/SelectWinHTTP.cmake +17 -0
  34. data/vendor/libgit2/cmake/SelectZlib.cmake +34 -0
  35. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
  36. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +31 -31
  37. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +1 -1
  38. data/vendor/libgit2/deps/ntlmclient/ntlm.c +4 -4
  39. data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
  40. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
  41. data/vendor/libgit2/deps/pcre/CMakeLists.txt +88 -88
  42. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
  43. data/vendor/libgit2/deps/zlib/adler32.c +0 -7
  44. data/vendor/libgit2/deps/zlib/crc32.c +288 -975
  45. data/vendor/libgit2/deps/zlib/crc32.h +436 -9441
  46. data/vendor/libgit2/deps/zlib/deflate.c +31 -83
  47. data/vendor/libgit2/deps/zlib/deflate.h +15 -12
  48. data/vendor/libgit2/deps/zlib/gzguts.h +2 -3
  49. data/vendor/libgit2/deps/zlib/infback.c +1 -2
  50. data/vendor/libgit2/deps/zlib/inffast.c +14 -14
  51. data/vendor/libgit2/deps/zlib/inflate.c +8 -39
  52. data/vendor/libgit2/deps/zlib/inflate.h +2 -3
  53. data/vendor/libgit2/deps/zlib/inftrees.c +3 -3
  54. data/vendor/libgit2/deps/zlib/trees.c +48 -27
  55. data/vendor/libgit2/deps/zlib/zlib.h +100 -126
  56. data/vendor/libgit2/deps/zlib/zutil.c +2 -2
  57. data/vendor/libgit2/deps/zlib/zutil.h +9 -12
  58. data/vendor/libgit2/include/git2/apply.h +16 -2
  59. data/vendor/libgit2/include/git2/attr.h +11 -2
  60. data/vendor/libgit2/include/git2/blame.h +4 -1
  61. data/vendor/libgit2/include/git2/blob.h +14 -1
  62. data/vendor/libgit2/include/git2/branch.h +2 -0
  63. data/vendor/libgit2/include/git2/buffer.h +18 -78
  64. data/vendor/libgit2/include/git2/cert.h +2 -2
  65. data/vendor/libgit2/include/git2/checkout.h +5 -2
  66. data/vendor/libgit2/include/git2/clone.h +3 -3
  67. data/vendor/libgit2/include/git2/commit.h +2 -0
  68. data/vendor/libgit2/include/git2/common.h +5 -12
  69. data/vendor/libgit2/include/git2/config.h +19 -3
  70. data/vendor/libgit2/include/git2/credential.h +2 -1
  71. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  72. data/vendor/libgit2/include/git2/deprecated.h +1 -1
  73. data/vendor/libgit2/include/git2/describe.h +7 -2
  74. data/vendor/libgit2/include/git2/diff.h +17 -9
  75. data/vendor/libgit2/include/git2/email.h +1 -1
  76. data/vendor/libgit2/include/git2/errors.h +1 -2
  77. data/vendor/libgit2/include/git2/filter.h +7 -2
  78. data/vendor/libgit2/include/git2/graph.h +1 -0
  79. data/vendor/libgit2/include/git2/ignore.h +1 -1
  80. data/vendor/libgit2/include/git2/index.h +11 -5
  81. data/vendor/libgit2/include/git2/indexer.h +19 -0
  82. data/vendor/libgit2/include/git2/merge.h +23 -3
  83. data/vendor/libgit2/include/git2/message.h +2 -0
  84. data/vendor/libgit2/include/git2/object.h +23 -0
  85. data/vendor/libgit2/include/git2/odb.h +37 -7
  86. data/vendor/libgit2/include/git2/odb_backend.h +1 -1
  87. data/vendor/libgit2/include/git2/pack.h +24 -8
  88. data/vendor/libgit2/include/git2/patch.h +8 -0
  89. data/vendor/libgit2/include/git2/pathspec.h +1 -1
  90. data/vendor/libgit2/include/git2/proxy.h +1 -1
  91. data/vendor/libgit2/include/git2/rebase.h +9 -1
  92. data/vendor/libgit2/include/git2/refdb.h +3 -0
  93. data/vendor/libgit2/include/git2/reflog.h +1 -1
  94. data/vendor/libgit2/include/git2/refs.h +2 -2
  95. data/vendor/libgit2/include/git2/remote.h +184 -37
  96. data/vendor/libgit2/include/git2/repository.h +14 -9
  97. data/vendor/libgit2/include/git2/reset.h +2 -2
  98. data/vendor/libgit2/include/git2/revparse.h +1 -1
  99. data/vendor/libgit2/include/git2/revwalk.h +4 -1
  100. data/vendor/libgit2/include/git2/signature.h +1 -1
  101. data/vendor/libgit2/include/git2/stash.h +3 -3
  102. data/vendor/libgit2/include/git2/status.h +9 -3
  103. data/vendor/libgit2/include/git2/submodule.h +7 -2
  104. data/vendor/libgit2/include/git2/sys/commit_graph.h +1 -1
  105. data/vendor/libgit2/include/git2/sys/odb_backend.h +2 -5
  106. data/vendor/libgit2/include/git2/sys/remote.h +31 -0
  107. data/vendor/libgit2/include/git2/sys/stream.h +1 -1
  108. data/vendor/libgit2/include/git2/sys/transport.h +25 -34
  109. data/vendor/libgit2/include/git2/tag.h +1 -0
  110. data/vendor/libgit2/include/git2/tree.h +4 -3
  111. data/vendor/libgit2/include/git2/types.h +7 -7
  112. data/vendor/libgit2/include/git2/version.h +3 -3
  113. data/vendor/libgit2/include/git2/worktree.h +12 -2
  114. data/vendor/libgit2/src/CMakeLists.txt +189 -315
  115. data/vendor/libgit2/src/annotated_commit.h +1 -1
  116. data/vendor/libgit2/src/apply.c +18 -18
  117. data/vendor/libgit2/src/apply.h +2 -2
  118. data/vendor/libgit2/src/attr.c +18 -18
  119. data/vendor/libgit2/src/attr_file.c +17 -17
  120. data/vendor/libgit2/src/attr_file.h +4 -4
  121. data/vendor/libgit2/src/attrcache.c +17 -12
  122. data/vendor/libgit2/src/blame_git.c +1 -1
  123. data/vendor/libgit2/src/blob.c +33 -26
  124. data/vendor/libgit2/src/blob.h +1 -1
  125. data/vendor/libgit2/src/branch.c +150 -109
  126. data/vendor/libgit2/src/branch.h +15 -3
  127. data/vendor/libgit2/src/buf.c +126 -0
  128. data/vendor/libgit2/src/buf.h +50 -0
  129. data/vendor/libgit2/src/cc-compat.h +1 -1
  130. data/vendor/libgit2/src/checkout.c +74 -68
  131. data/vendor/libgit2/src/cherrypick.c +10 -10
  132. data/vendor/libgit2/src/clone.c +66 -66
  133. data/vendor/libgit2/src/commit.c +128 -58
  134. data/vendor/libgit2/src/commit.h +24 -1
  135. data/vendor/libgit2/src/commit_graph.c +68 -53
  136. data/vendor/libgit2/src/commit_graph.h +10 -3
  137. data/vendor/libgit2/src/commit_list.c +2 -3
  138. data/vendor/libgit2/src/common.h +10 -3
  139. data/vendor/libgit2/src/config.c +99 -77
  140. data/vendor/libgit2/src/config.h +15 -2
  141. data/vendor/libgit2/src/config_file.c +103 -91
  142. data/vendor/libgit2/src/config_mem.c +9 -9
  143. data/vendor/libgit2/src/config_parse.c +27 -23
  144. data/vendor/libgit2/src/crlf.c +24 -21
  145. data/vendor/libgit2/src/date.c +10 -17
  146. data/vendor/libgit2/src/date.h +33 -0
  147. data/vendor/libgit2/src/describe.c +27 -19
  148. data/vendor/libgit2/src/diff.c +25 -8
  149. data/vendor/libgit2/src/diff.h +2 -4
  150. data/vendor/libgit2/src/diff_driver.c +34 -36
  151. data/vendor/libgit2/src/diff_driver.h +3 -3
  152. data/vendor/libgit2/src/diff_file.c +29 -20
  153. data/vendor/libgit2/src/diff_generate.c +30 -6
  154. data/vendor/libgit2/src/diff_generate.h +5 -3
  155. data/vendor/libgit2/src/diff_print.c +102 -95
  156. data/vendor/libgit2/src/diff_stats.c +40 -29
  157. data/vendor/libgit2/src/{message.h → diff_stats.h} +7 -6
  158. data/vendor/libgit2/src/diff_tform.c +9 -8
  159. data/vendor/libgit2/src/diff_xdiff.c +3 -8
  160. data/vendor/libgit2/src/email.c +54 -38
  161. data/vendor/libgit2/src/email.h +1 -1
  162. data/vendor/libgit2/src/errors.c +18 -18
  163. data/vendor/libgit2/src/features.h.in +6 -1
  164. data/vendor/libgit2/src/fetch.c +69 -24
  165. data/vendor/libgit2/src/fetch.h +1 -1
  166. data/vendor/libgit2/src/fetchhead.c +19 -19
  167. data/vendor/libgit2/src/filebuf.c +28 -28
  168. data/vendor/libgit2/src/filebuf.h +1 -1
  169. data/vendor/libgit2/src/filter.c +96 -52
  170. data/vendor/libgit2/src/filter.h +26 -5
  171. data/vendor/libgit2/src/fs_path.c +1912 -0
  172. data/vendor/libgit2/src/fs_path.h +752 -0
  173. data/vendor/libgit2/src/futils.c +91 -85
  174. data/vendor/libgit2/src/futils.h +26 -14
  175. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +2 -2
  176. data/vendor/libgit2/src/hash/sha1/common_crypto.c +2 -2
  177. data/vendor/libgit2/src/hash/sha1/generic.c +2 -2
  178. data/vendor/libgit2/src/hash/sha1/mbedtls.c +2 -2
  179. data/vendor/libgit2/src/hash/sha1/openssl.c +2 -2
  180. data/vendor/libgit2/src/hash/sha1/sha1dc/sha1.c +1 -1
  181. data/vendor/libgit2/src/hash/sha1/win32.c +6 -6
  182. data/vendor/libgit2/src/hash/sha1.h +3 -1
  183. data/vendor/libgit2/src/hash.c +67 -35
  184. data/vendor/libgit2/src/hash.h +12 -12
  185. data/vendor/libgit2/src/ident.c +18 -18
  186. data/vendor/libgit2/src/ignore.c +35 -34
  187. data/vendor/libgit2/src/ignore.h +2 -2
  188. data/vendor/libgit2/src/index.c +79 -80
  189. data/vendor/libgit2/src/index.h +6 -3
  190. data/vendor/libgit2/src/indexer.c +75 -57
  191. data/vendor/libgit2/src/iterator.c +64 -56
  192. data/vendor/libgit2/src/iterator.h +5 -5
  193. data/vendor/libgit2/src/khash.h +1 -1
  194. data/vendor/libgit2/src/libgit2.c +22 -19
  195. data/vendor/libgit2/src/mailmap.c +38 -36
  196. data/vendor/libgit2/src/merge.c +27 -27
  197. data/vendor/libgit2/src/merge.h +1 -14
  198. data/vendor/libgit2/src/merge_driver.c +2 -2
  199. data/vendor/libgit2/src/merge_file.c +13 -3
  200. data/vendor/libgit2/src/message.c +21 -10
  201. data/vendor/libgit2/src/midx.c +83 -66
  202. data/vendor/libgit2/src/midx.h +3 -3
  203. data/vendor/libgit2/src/mwindow.c +1 -1
  204. data/vendor/libgit2/src/net.c +278 -68
  205. data/vendor/libgit2/src/net.h +10 -3
  206. data/vendor/libgit2/src/netops.c +1 -1
  207. data/vendor/libgit2/src/netops.h +1 -1
  208. data/vendor/libgit2/src/notes.c +20 -29
  209. data/vendor/libgit2/src/object.c +49 -9
  210. data/vendor/libgit2/src/object.h +1 -1
  211. data/vendor/libgit2/src/odb.c +35 -32
  212. data/vendor/libgit2/src/odb.h +1 -1
  213. data/vendor/libgit2/src/odb_loose.c +68 -68
  214. data/vendor/libgit2/src/odb_mempack.c +18 -5
  215. data/vendor/libgit2/src/odb_pack.c +43 -43
  216. data/vendor/libgit2/src/oid.c +11 -4
  217. data/vendor/libgit2/src/oid.h +15 -0
  218. data/vendor/libgit2/src/pack-objects.c +41 -26
  219. data/vendor/libgit2/src/pack-objects.h +11 -6
  220. data/vendor/libgit2/src/pack.c +10 -10
  221. data/vendor/libgit2/src/patch.c +3 -3
  222. data/vendor/libgit2/src/patch.h +1 -0
  223. data/vendor/libgit2/src/patch_generate.c +27 -11
  224. data/vendor/libgit2/src/patch_generate.h +5 -5
  225. data/vendor/libgit2/src/patch_parse.c +24 -24
  226. data/vendor/libgit2/src/path.c +76 -1951
  227. data/vendor/libgit2/src/path.h +34 -741
  228. data/vendor/libgit2/src/pathspec.c +6 -6
  229. data/vendor/libgit2/src/pathspec.h +2 -2
  230. data/vendor/libgit2/src/posix.c +3 -3
  231. data/vendor/libgit2/src/posix.h +1 -0
  232. data/vendor/libgit2/src/pqueue.h +1 -1
  233. data/vendor/libgit2/src/proxy.c +4 -1
  234. data/vendor/libgit2/src/proxy.h +1 -1
  235. data/vendor/libgit2/src/push.c +30 -35
  236. data/vendor/libgit2/src/push.h +4 -16
  237. data/vendor/libgit2/src/rand.c +226 -0
  238. data/vendor/libgit2/src/rand.h +37 -0
  239. data/vendor/libgit2/src/reader.c +8 -8
  240. data/vendor/libgit2/src/reader.h +2 -2
  241. data/vendor/libgit2/src/rebase.c +89 -88
  242. data/vendor/libgit2/src/refdb_fs.c +447 -173
  243. data/vendor/libgit2/src/refs.c +32 -32
  244. data/vendor/libgit2/src/refs.h +2 -2
  245. data/vendor/libgit2/src/refspec.c +32 -37
  246. data/vendor/libgit2/src/refspec.h +5 -2
  247. data/vendor/libgit2/src/regexp.c +1 -1
  248. data/vendor/libgit2/src/remote.c +713 -419
  249. data/vendor/libgit2/src/remote.h +15 -10
  250. data/vendor/libgit2/src/repository.c +350 -467
  251. data/vendor/libgit2/src/repository.h +11 -10
  252. data/vendor/libgit2/src/reset.c +8 -5
  253. data/vendor/libgit2/src/revert.c +10 -10
  254. data/vendor/libgit2/src/revparse.c +48 -35
  255. data/vendor/libgit2/src/revwalk.c +7 -7
  256. data/vendor/libgit2/src/signature.c +12 -6
  257. data/vendor/libgit2/src/signature.h +1 -1
  258. data/vendor/libgit2/src/sortedcache.c +1 -1
  259. data/vendor/libgit2/src/sortedcache.h +1 -1
  260. data/vendor/libgit2/src/stash.c +36 -37
  261. data/vendor/libgit2/src/status.c +4 -1
  262. data/vendor/libgit2/src/{buffer.c → str.c} +157 -151
  263. data/vendor/libgit2/src/str.h +357 -0
  264. data/vendor/libgit2/src/streams/mbedtls.c +8 -6
  265. data/vendor/libgit2/src/streams/openssl_dynamic.h +3 -3
  266. data/vendor/libgit2/src/submodule.c +171 -159
  267. data/vendor/libgit2/src/submodule.h +1 -1
  268. data/vendor/libgit2/src/sysdir.c +68 -52
  269. data/vendor/libgit2/src/sysdir.h +15 -10
  270. data/vendor/libgit2/src/tag.c +29 -27
  271. data/vendor/libgit2/src/thread.h +3 -3
  272. data/vendor/libgit2/src/threadstate.c +3 -3
  273. data/vendor/libgit2/src/threadstate.h +1 -1
  274. data/vendor/libgit2/src/trace.c +1 -14
  275. data/vendor/libgit2/src/trace.h +5 -22
  276. data/vendor/libgit2/src/trailer.c +1 -1
  277. data/vendor/libgit2/src/transaction.c +1 -1
  278. data/vendor/libgit2/src/transport.c +10 -10
  279. data/vendor/libgit2/src/transports/auth.c +7 -9
  280. data/vendor/libgit2/src/transports/auth.h +2 -3
  281. data/vendor/libgit2/src/transports/auth_negotiate.c +12 -13
  282. data/vendor/libgit2/src/transports/auth_ntlm.c +10 -10
  283. data/vendor/libgit2/src/transports/auth_ntlm.h +0 -1
  284. data/vendor/libgit2/src/transports/git.c +9 -11
  285. data/vendor/libgit2/src/transports/http.c +37 -17
  286. data/vendor/libgit2/src/transports/http.h +2 -3
  287. data/vendor/libgit2/src/transports/httpclient.c +65 -65
  288. data/vendor/libgit2/src/transports/local.c +124 -116
  289. data/vendor/libgit2/src/transports/smart.c +51 -139
  290. data/vendor/libgit2/src/transports/smart.h +25 -31
  291. data/vendor/libgit2/src/transports/smart_pkt.c +33 -33
  292. data/vendor/libgit2/src/transports/smart_protocol.c +57 -39
  293. data/vendor/libgit2/src/transports/ssh.c +47 -112
  294. data/vendor/libgit2/src/transports/winhttp.c +50 -56
  295. data/vendor/libgit2/src/tree-cache.c +5 -5
  296. data/vendor/libgit2/src/tree-cache.h +2 -2
  297. data/vendor/libgit2/src/tree.c +59 -48
  298. data/vendor/libgit2/src/tree.h +1 -1
  299. data/vendor/libgit2/src/unix/map.c +0 -2
  300. data/vendor/libgit2/src/unix/posix.h +1 -4
  301. data/vendor/libgit2/src/unix/realpath.c +0 -2
  302. data/vendor/libgit2/src/util.c +14 -14
  303. data/vendor/libgit2/src/util.h +2 -28
  304. data/vendor/libgit2/src/vector.h +1 -1
  305. data/vendor/libgit2/src/win32/findfile.c +172 -116
  306. data/vendor/libgit2/src/win32/findfile.h +7 -4
  307. data/vendor/libgit2/src/win32/path_w32.c +140 -9
  308. data/vendor/libgit2/src/win32/path_w32.h +2 -0
  309. data/vendor/libgit2/src/win32/posix.h +0 -1
  310. data/vendor/libgit2/src/win32/posix_w32.c +11 -27
  311. data/vendor/libgit2/src/win32/w32_buffer.c +2 -3
  312. data/vendor/libgit2/src/win32/w32_buffer.h +2 -3
  313. data/vendor/libgit2/src/win32/w32_leakcheck.c +1 -1
  314. data/vendor/libgit2/src/worktree.c +116 -94
  315. data/vendor/libgit2/src/worktree.h +1 -1
  316. data/vendor/libgit2/src/xdiff/git-xdiff.h +53 -0
  317. data/vendor/libgit2/src/xdiff/xdiff.h +15 -15
  318. data/vendor/libgit2/src/xdiff/xdiffi.c +134 -108
  319. data/vendor/libgit2/src/xdiff/xemit.c +23 -7
  320. data/vendor/libgit2/src/xdiff/xhistogram.c +87 -78
  321. data/vendor/libgit2/src/xdiff/xinclude.h +1 -12
  322. data/vendor/libgit2/src/xdiff/xmerge.c +104 -117
  323. data/vendor/libgit2/src/xdiff/xpatience.c +6 -17
  324. data/vendor/libgit2/src/xdiff/xprepare.c +15 -20
  325. data/vendor/libgit2/src/xdiff/xutils.c +18 -7
  326. data/vendor/libgit2/src/zstream.c +5 -5
  327. data/vendor/libgit2/src/zstream.h +4 -4
  328. metadata +25 -10
  329. data/vendor/libgit2/src/buffer.h +0 -374
@@ -48,14 +48,15 @@ struct git_indexer {
48
48
  off64_t off;
49
49
  off64_t entry_start;
50
50
  git_object_t entry_type;
51
- git_buf entry_data;
51
+ git_str entry_data;
52
52
  git_packfile_stream stream;
53
53
  size_t nr_objects;
54
54
  git_vector objects;
55
55
  git_vector deltas;
56
56
  unsigned int fanout[256];
57
57
  git_hash_ctx hash_ctx;
58
- git_oid hash;
58
+ unsigned char checksum[GIT_HASH_SHA1_SIZE];
59
+ char name[(GIT_HASH_SHA1_SIZE * 2) + 1];
59
60
  git_indexer_progress_cb progress_cb;
60
61
  void *progress_payload;
61
62
  char objbuf[8*1024];
@@ -76,9 +77,16 @@ struct delta_info {
76
77
  off64_t delta_off;
77
78
  };
78
79
 
80
+ #ifndef GIT_DEPRECATE_HARD
79
81
  const git_oid *git_indexer_hash(const git_indexer *idx)
80
82
  {
81
- return &idx->hash;
83
+ return (git_oid *)idx->checksum;
84
+ }
85
+ #endif
86
+
87
+ const char *git_indexer_name(const git_indexer *idx)
88
+ {
89
+ return idx->name;
82
90
  }
83
91
 
84
92
  static int parse_header(struct git_pack_header *hdr, struct git_pack_file *pack)
@@ -137,7 +145,7 @@ int git_indexer_new(
137
145
  {
138
146
  git_indexer_options opts = GIT_INDEXER_OPTIONS_INIT;
139
147
  git_indexer *idx;
140
- git_buf path = GIT_BUF_INIT, tmp_path = GIT_BUF_INIT;
148
+ git_str path = GIT_STR_INIT, tmp_path = GIT_STR_INIT;
141
149
  static const char suff[] = "/pack";
142
150
  int error, fd = -1;
143
151
 
@@ -150,10 +158,10 @@ int git_indexer_new(
150
158
  idx->progress_cb = opts.progress_cb;
151
159
  idx->progress_payload = opts.progress_cb_payload;
152
160
  idx->mode = mode ? mode : GIT_PACK_FILE_MODE;
153
- git_buf_init(&idx->entry_data, 0);
161
+ git_str_init(&idx->entry_data, 0);
154
162
 
155
- if ((error = git_hash_ctx_init(&idx->hash_ctx)) < 0 ||
156
- (error = git_hash_ctx_init(&idx->trailer)) < 0 ||
163
+ if ((error = git_hash_ctx_init(&idx->hash_ctx, GIT_HASH_ALGORITHM_SHA1)) < 0 ||
164
+ (error = git_hash_ctx_init(&idx->trailer, GIT_HASH_ALGORITHM_SHA1)) < 0 ||
157
165
  (error = git_oidmap_new(&idx->expected_oids)) < 0)
158
166
  goto cleanup;
159
167
 
@@ -162,17 +170,17 @@ int git_indexer_new(
162
170
  if (git_repository__fsync_gitdir)
163
171
  idx->do_fsync = 1;
164
172
 
165
- error = git_buf_joinpath(&path, prefix, suff);
173
+ error = git_str_joinpath(&path, prefix, suff);
166
174
  if (error < 0)
167
175
  goto cleanup;
168
176
 
169
- fd = git_futils_mktmp(&tmp_path, git_buf_cstr(&path), idx->mode);
170
- git_buf_dispose(&path);
177
+ fd = git_futils_mktmp(&tmp_path, git_str_cstr(&path), idx->mode);
178
+ git_str_dispose(&path);
171
179
  if (fd < 0)
172
180
  goto cleanup;
173
181
 
174
- error = git_packfile_alloc(&idx->pack, git_buf_cstr(&tmp_path));
175
- git_buf_dispose(&tmp_path);
182
+ error = git_packfile_alloc(&idx->pack, git_str_cstr(&tmp_path));
183
+ git_str_dispose(&tmp_path);
176
184
 
177
185
  if (error < 0)
178
186
  goto cleanup;
@@ -188,14 +196,14 @@ cleanup:
188
196
  if (fd != -1)
189
197
  p_close(fd);
190
198
 
191
- if (git_buf_len(&tmp_path) > 0)
192
- p_unlink(git_buf_cstr(&tmp_path));
199
+ if (git_str_len(&tmp_path) > 0)
200
+ p_unlink(git_str_cstr(&tmp_path));
193
201
 
194
202
  if (idx->pack != NULL)
195
203
  p_unlink(idx->pack->pack_name);
196
204
 
197
- git_buf_dispose(&path);
198
- git_buf_dispose(&tmp_path);
205
+ git_str_dispose(&path);
206
+ git_str_dispose(&tmp_path);
199
207
  git__free(idx);
200
208
  return -1;
201
209
  }
@@ -245,7 +253,7 @@ static int hash_object_stream(git_indexer*idx, git_packfile_stream *stream)
245
253
  break;
246
254
 
247
255
  if (idx->do_verify)
248
- git_buf_put(&idx->entry_data, idx->objbuf, read);
256
+ git_str_put(&idx->entry_data, idx->objbuf, read);
249
257
 
250
258
  git_hash_update(&idx->hash_ctx, idx->objbuf, read);
251
259
  } while (read > 0);
@@ -340,7 +348,7 @@ static int check_object_connectivity(git_indexer *idx, const git_rawobj *obj)
340
348
  {
341
349
  git_object *object;
342
350
  git_oid *expected;
343
- int error;
351
+ int error = 0;
344
352
 
345
353
  if (obj->type != GIT_OBJECT_BLOB &&
346
354
  obj->type != GIT_OBJECT_TREE &&
@@ -348,8 +356,14 @@ static int check_object_connectivity(git_indexer *idx, const git_rawobj *obj)
348
356
  obj->type != GIT_OBJECT_TAG)
349
357
  return 0;
350
358
 
351
- if ((error = git_object__from_raw(&object, obj->data, obj->len, obj->type)) < 0)
359
+ if (git_object__from_raw(&object, obj->data, obj->len, obj->type) < 0) {
360
+ /*
361
+ * parse_raw returns EINVALID on invalid data; downgrade
362
+ * that to a normal -1 error code.
363
+ */
364
+ error = -1;
352
365
  goto out;
366
+ }
353
367
 
354
368
  if ((expected = git_oidmap_get(idx->expected_oids, &object->cached.oid)) != NULL) {
355
369
  git_oidmap_delete(idx->expected_oids, &object->cached.oid);
@@ -426,7 +440,7 @@ static int store_object(git_indexer *idx)
426
440
  pentry = git__calloc(1, sizeof(struct git_pack_entry));
427
441
  GIT_ERROR_CHECK_ALLOC(pentry);
428
442
 
429
- if (git_hash_final(&oid, &idx->hash_ctx)) {
443
+ if (git_hash_final(oid.id, &idx->hash_ctx)) {
430
444
  git__free(pentry);
431
445
  goto on_error;
432
446
  }
@@ -730,7 +744,7 @@ static int read_stream_object(git_indexer *idx, git_indexer_progress *stats)
730
744
  git_mwindow_close(&w);
731
745
  idx->entry_start = entry_start;
732
746
  git_hash_init(&idx->hash_ctx);
733
- git_buf_clear(&idx->entry_data);
747
+ git_str_clear(&idx->entry_data);
734
748
 
735
749
  if (type == GIT_OBJECT_REF_DELTA || type == GIT_OBJECT_OFS_DELTA) {
736
750
  error = advance_delta_offset(idx, type);
@@ -876,7 +890,7 @@ on_error:
876
890
  return error;
877
891
  }
878
892
 
879
- static int index_path(git_buf *path, git_indexer *idx, const char *suffix)
893
+ static int index_path(git_str *path, git_indexer *idx, const char *suffix)
880
894
  {
881
895
  const char prefix[] = "pack-";
882
896
  size_t slash = (size_t)path->size;
@@ -885,17 +899,16 @@ static int index_path(git_buf *path, git_indexer *idx, const char *suffix)
885
899
  while (slash > 0 && path->ptr[slash - 1] != '/')
886
900
  slash--;
887
901
 
888
- if (git_buf_grow(path, slash + 1 + strlen(prefix) +
902
+ if (git_str_grow(path, slash + 1 + strlen(prefix) +
889
903
  GIT_OID_HEXSZ + strlen(suffix) + 1) < 0)
890
904
  return -1;
891
905
 
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);
906
+ git_str_truncate(path, slash);
907
+ git_str_puts(path, prefix);
908
+ git_str_puts(path, idx->name);
909
+ git_str_puts(path, suffix);
897
910
 
898
- return git_buf_oom(path) ? -1 : 0;
911
+ return git_str_oom(path) ? -1 : 0;
899
912
  }
900
913
 
901
914
  /**
@@ -913,12 +926,13 @@ static int inject_object(git_indexer *idx, git_oid *id)
913
926
  git_odb_object *obj = NULL;
914
927
  struct entry *entry = NULL;
915
928
  struct git_pack_entry *pentry = NULL;
916
- git_oid foo = {{0}};
929
+ unsigned char empty_checksum[GIT_HASH_SHA1_SIZE] = {0};
917
930
  unsigned char hdr[64];
918
- git_buf buf = GIT_BUF_INIT;
931
+ git_str buf = GIT_STR_INIT;
919
932
  off64_t entry_start;
920
933
  const void *data;
921
934
  size_t len, hdr_len;
935
+ size_t checksum_size = GIT_HASH_SHA1_SIZE;
922
936
  int error;
923
937
 
924
938
  if ((error = seek_back_trailer(idx)) < 0)
@@ -956,11 +970,11 @@ static int inject_object(git_indexer *idx, git_oid *id)
956
970
 
957
971
  idx->pack->mwf.size += buf.size;
958
972
  entry->crc = htonl(crc32(entry->crc, (unsigned char *)buf.ptr, (uInt)buf.size));
959
- git_buf_dispose(&buf);
973
+ git_str_dispose(&buf);
960
974
 
961
975
  /* Write a fake trailer so the pack functions play ball */
962
976
 
963
- if ((error = append_to_pack(idx, &foo, GIT_OID_RAWSZ)) < 0)
977
+ if ((error = append_to_pack(idx, empty_checksum, checksum_size)) < 0)
964
978
  goto cleanup;
965
979
 
966
980
  idx->pack->mwf.size += GIT_OID_RAWSZ;
@@ -1117,7 +1131,7 @@ static int update_header_and_rehash(git_indexer *idx, git_indexer_progress *stat
1117
1131
  git_hash_init(&idx->trailer);
1118
1132
 
1119
1133
 
1120
- /* Update the header to include the numer of local objects we injected */
1134
+ /* Update the header to include the number of local objects we injected */
1121
1135
  idx->hdr.hdr_entries = htonl(stats->total_objects + stats->local_objects);
1122
1136
  if (write_at(idx, &idx->hdr, 0, sizeof(struct git_pack_header)) < 0)
1123
1137
  return -1;
@@ -1152,11 +1166,13 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
1152
1166
  unsigned int i, long_offsets = 0, left;
1153
1167
  int error;
1154
1168
  struct git_pack_idx_header hdr;
1155
- git_buf filename = GIT_BUF_INIT;
1169
+ git_str filename = GIT_STR_INIT;
1156
1170
  struct entry *entry;
1157
- git_oid trailer_hash, file_hash;
1171
+ unsigned char checksum[GIT_HASH_SHA1_SIZE];
1158
1172
  git_filebuf index_file = {0};
1159
1173
  void *packfile_trailer;
1174
+ size_t checksum_size = GIT_HASH_SHA1_SIZE;
1175
+ bool mismatch;
1160
1176
 
1161
1177
  if (!idx->parsed_header) {
1162
1178
  git_error_set(GIT_ERROR_INDEXER, "incomplete pack header");
@@ -1164,27 +1180,27 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
1164
1180
  }
1165
1181
 
1166
1182
  /* Test for this before resolve_deltas(), as it plays with idx->off */
1167
- if (idx->off + 20 < idx->pack->mwf.size) {
1183
+ if (idx->off + (ssize_t)checksum_size < idx->pack->mwf.size) {
1168
1184
  git_error_set(GIT_ERROR_INDEXER, "unexpected data at the end of the pack");
1169
1185
  return -1;
1170
1186
  }
1171
- if (idx->off + 20 > idx->pack->mwf.size) {
1187
+ if (idx->off + (ssize_t)checksum_size > idx->pack->mwf.size) {
1172
1188
  git_error_set(GIT_ERROR_INDEXER, "missing trailer at the end of the pack");
1173
1189
  return -1;
1174
1190
  }
1175
1191
 
1176
- packfile_trailer = git_mwindow_open(&idx->pack->mwf, &w, idx->pack->mwf.size - GIT_OID_RAWSZ, GIT_OID_RAWSZ, &left);
1192
+ packfile_trailer = git_mwindow_open(&idx->pack->mwf, &w, idx->pack->mwf.size - checksum_size, checksum_size, &left);
1177
1193
  if (packfile_trailer == NULL) {
1178
1194
  git_mwindow_close(&w);
1179
1195
  goto on_error;
1180
1196
  }
1181
1197
 
1182
1198
  /* Compare the packfile trailer as it was sent to us and what we calculated */
1183
- git_oid_fromraw(&file_hash, packfile_trailer);
1199
+ git_hash_final(checksum, &idx->trailer);
1200
+ mismatch = !!memcmp(checksum, packfile_trailer, checksum_size);
1184
1201
  git_mwindow_close(&w);
1185
1202
 
1186
- git_hash_final(&trailer_hash, &idx->trailer);
1187
- if (git_oid_cmp(&file_hash, &trailer_hash)) {
1203
+ if (mismatch) {
1188
1204
  git_error_set(GIT_ERROR_INDEXER, "packfile trailer mismatch");
1189
1205
  return -1;
1190
1206
  }
@@ -1204,8 +1220,8 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
1204
1220
  if (update_header_and_rehash(idx, stats) < 0)
1205
1221
  return -1;
1206
1222
 
1207
- git_hash_final(&trailer_hash, &idx->trailer);
1208
- write_at(idx, &trailer_hash, idx->pack->mwf.size - GIT_OID_RAWSZ, GIT_OID_RAWSZ);
1223
+ git_hash_final(checksum, &idx->trailer);
1224
+ write_at(idx, checksum, idx->pack->mwf.size - checksum_size, checksum_size);
1209
1225
  }
1210
1226
 
1211
1227
  /*
@@ -1224,12 +1240,14 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
1224
1240
 
1225
1241
  /* Use the trailer hash as the pack file name to ensure
1226
1242
  * files with different contents have different names */
1227
- git_oid_cpy(&idx->hash, &trailer_hash);
1243
+ memcpy(idx->checksum, checksum, checksum_size);
1244
+ if (git_hash_fmt(idx->name, checksum, checksum_size) < 0)
1245
+ return -1;
1228
1246
 
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))
1247
+ git_str_sets(&filename, idx->pack->pack_name);
1248
+ git_str_shorten(&filename, strlen("pack"));
1249
+ git_str_puts(&filename, "idx");
1250
+ if (git_str_oom(&filename))
1233
1251
  return -1;
1234
1252
 
1235
1253
  if (git_filebuf_open(&index_file, filename.ptr,
@@ -1285,14 +1303,14 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
1285
1303
  }
1286
1304
 
1287
1305
  /* Write out the packfile trailer to the index */
1288
- if (git_filebuf_write(&index_file, &trailer_hash, GIT_OID_RAWSZ) < 0)
1306
+ if (git_filebuf_write(&index_file, checksum, checksum_size) < 0)
1289
1307
  goto on_error;
1290
1308
 
1291
1309
  /* Write out the hash of the idx */
1292
- if (git_filebuf_hash(&trailer_hash, &index_file) < 0)
1310
+ if (git_filebuf_hash(checksum, &index_file) < 0)
1293
1311
  goto on_error;
1294
1312
 
1295
- git_filebuf_write(&index_file, &trailer_hash, sizeof(git_oid));
1313
+ git_filebuf_write(&index_file, checksum, checksum_size);
1296
1314
 
1297
1315
  /* Figure out what the final name should be */
1298
1316
  if (index_path(&filename, idx, ".idx") < 0)
@@ -1336,23 +1354,23 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
1336
1354
  goto on_error;
1337
1355
 
1338
1356
  /* 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)
1357
+ if (p_rename(idx->pack->pack_name, git_str_cstr(&filename)) < 0)
1340
1358
  goto on_error;
1341
1359
 
1342
1360
  /* And fsync the parent directory if we're asked to. */
1343
1361
  if (idx->do_fsync &&
1344
- git_futils_fsync_parent(git_buf_cstr(&filename)) < 0)
1362
+ git_futils_fsync_parent(git_str_cstr(&filename)) < 0)
1345
1363
  goto on_error;
1346
1364
 
1347
1365
  idx->pack_committed = 1;
1348
1366
 
1349
- git_buf_dispose(&filename);
1367
+ git_str_dispose(&filename);
1350
1368
  return 0;
1351
1369
 
1352
1370
  on_error:
1353
1371
  git_mwindow_free_all(&idx->pack->mwf);
1354
1372
  git_filebuf_cleanup(&index_file);
1355
- git_buf_dispose(&filename);
1373
+ git_str_dispose(&filename);
1356
1374
  return -1;
1357
1375
  }
1358
1376
 
@@ -1389,7 +1407,7 @@ void git_indexer_free(git_indexer *idx)
1389
1407
 
1390
1408
  git_hash_ctx_cleanup(&idx->trailer);
1391
1409
  git_hash_ctx_cleanup(&idx->hash_ctx);
1392
- git_buf_dispose(&idx->entry_data);
1410
+ git_str_dispose(&idx->entry_data);
1393
1411
  git_oidmap_free(idx->expected_oids);
1394
1412
  git__free(idx);
1395
1413
  }