rugged 1.3.2 → 1.6.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 (547) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/ext/rugged/extconf.rb +7 -4
  4. data/ext/rugged/rugged.c +16 -0
  5. data/ext/rugged/rugged.h +4 -0
  6. data/ext/rugged/rugged_blame.c +2 -0
  7. data/ext/rugged/rugged_blob.c +3 -0
  8. data/ext/rugged/rugged_commit.c +1 -0
  9. data/ext/rugged/rugged_config.c +9 -2
  10. data/ext/rugged/rugged_diff.c +1 -0
  11. data/ext/rugged/rugged_index.c +2 -0
  12. data/ext/rugged/rugged_patch.c +1 -0
  13. data/ext/rugged/rugged_rebase.c +1 -0
  14. data/ext/rugged/rugged_reference.c +1 -0
  15. data/ext/rugged/rugged_remote.c +28 -10
  16. data/ext/rugged/rugged_repo.c +7 -9
  17. data/ext/rugged/rugged_revwalk.c +5 -1
  18. data/ext/rugged/rugged_settings.c +5 -0
  19. data/ext/rugged/rugged_submodule.c +1 -0
  20. data/ext/rugged/rugged_tag.c +1 -0
  21. data/ext/rugged/rugged_tree.c +4 -0
  22. data/lib/rugged/index.rb +1 -1
  23. data/lib/rugged/tree.rb +5 -1
  24. data/lib/rugged/version.rb +1 -1
  25. data/vendor/libgit2/CMakeLists.txt +132 -288
  26. data/vendor/libgit2/COPYING +106 -19
  27. data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
  28. data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
  29. data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
  30. data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
  31. data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
  32. data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
  33. data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
  34. data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
  35. data/vendor/libgit2/cmake/{FindHTTP_Parser.cmake → FindHTTPParser.cmake} +17 -17
  36. data/vendor/libgit2/cmake/FindIconv.cmake +27 -27
  37. data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
  38. data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
  39. data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
  40. data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
  41. data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
  42. data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
  43. data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
  44. data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
  45. data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
  46. data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
  47. data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
  48. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
  49. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +19 -0
  50. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +100 -100
  51. data/vendor/libgit2/cmake/SelectHashes.cmake +91 -53
  52. data/vendor/libgit2/cmake/SelectRegex.cmake +51 -0
  53. data/vendor/libgit2/cmake/SelectSSH.cmake +41 -0
  54. data/vendor/libgit2/cmake/SelectWinHTTP.cmake +17 -0
  55. data/vendor/libgit2/cmake/SelectZlib.cmake +34 -0
  56. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
  57. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
  58. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +3 -1
  59. data/vendor/libgit2/deps/ntlmclient/ntlm.c +4 -4
  60. data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
  61. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
  62. data/vendor/libgit2/deps/pcre/CMakeLists.txt +88 -88
  63. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
  64. data/vendor/libgit2/deps/zlib/adler32.c +7 -0
  65. data/vendor/libgit2/deps/zlib/crc32.c +975 -288
  66. data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
  67. data/vendor/libgit2/deps/zlib/deflate.c +83 -31
  68. data/vendor/libgit2/deps/zlib/deflate.h +12 -15
  69. data/vendor/libgit2/deps/zlib/gzguts.h +3 -2
  70. data/vendor/libgit2/deps/zlib/infback.c +2 -1
  71. data/vendor/libgit2/deps/zlib/inffast.c +14 -14
  72. data/vendor/libgit2/deps/zlib/inflate.c +39 -8
  73. data/vendor/libgit2/deps/zlib/inflate.h +3 -2
  74. data/vendor/libgit2/deps/zlib/inftrees.c +3 -3
  75. data/vendor/libgit2/deps/zlib/trees.c +27 -48
  76. data/vendor/libgit2/deps/zlib/zlib.h +126 -100
  77. data/vendor/libgit2/deps/zlib/zutil.c +2 -2
  78. data/vendor/libgit2/deps/zlib/zutil.h +12 -9
  79. data/vendor/libgit2/include/git2/apply.h +16 -2
  80. data/vendor/libgit2/include/git2/attr.h +11 -2
  81. data/vendor/libgit2/include/git2/blame.h +4 -1
  82. data/vendor/libgit2/include/git2/blob.h +14 -1
  83. data/vendor/libgit2/include/git2/branch.h +4 -2
  84. data/vendor/libgit2/include/git2/buffer.h +18 -78
  85. data/vendor/libgit2/include/git2/cert.h +2 -2
  86. data/vendor/libgit2/include/git2/checkout.h +5 -2
  87. data/vendor/libgit2/include/git2/clone.h +3 -3
  88. data/vendor/libgit2/include/git2/commit.h +2 -0
  89. data/vendor/libgit2/include/git2/common.h +28 -7
  90. data/vendor/libgit2/include/git2/config.h +25 -9
  91. data/vendor/libgit2/include/git2/credential.h +2 -1
  92. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  93. data/vendor/libgit2/include/git2/deprecated.h +9 -1
  94. data/vendor/libgit2/include/git2/describe.h +7 -2
  95. data/vendor/libgit2/include/git2/diff.h +18 -10
  96. data/vendor/libgit2/include/git2/email.h +1 -1
  97. data/vendor/libgit2/include/git2/errors.h +17 -3
  98. data/vendor/libgit2/include/git2/experimental.h +20 -0
  99. data/vendor/libgit2/include/git2/filter.h +7 -2
  100. data/vendor/libgit2/include/git2/graph.h +1 -0
  101. data/vendor/libgit2/include/git2/ignore.h +1 -1
  102. data/vendor/libgit2/include/git2/index.h +11 -5
  103. data/vendor/libgit2/include/git2/indexer.h +48 -0
  104. data/vendor/libgit2/include/git2/merge.h +24 -4
  105. data/vendor/libgit2/include/git2/message.h +2 -0
  106. data/vendor/libgit2/include/git2/object.h +49 -0
  107. data/vendor/libgit2/include/git2/odb.h +94 -13
  108. data/vendor/libgit2/include/git2/odb_backend.h +107 -19
  109. data/vendor/libgit2/include/git2/oid.h +115 -15
  110. data/vendor/libgit2/include/git2/pack.h +24 -8
  111. data/vendor/libgit2/include/git2/patch.h +8 -0
  112. data/vendor/libgit2/include/git2/pathspec.h +1 -1
  113. data/vendor/libgit2/include/git2/proxy.h +1 -1
  114. data/vendor/libgit2/include/git2/rebase.h +9 -1
  115. data/vendor/libgit2/include/git2/refdb.h +3 -0
  116. data/vendor/libgit2/include/git2/reflog.h +1 -1
  117. data/vendor/libgit2/include/git2/refs.h +2 -2
  118. data/vendor/libgit2/include/git2/remote.h +184 -37
  119. data/vendor/libgit2/include/git2/repository.h +34 -10
  120. data/vendor/libgit2/include/git2/reset.h +2 -2
  121. data/vendor/libgit2/include/git2/revparse.h +1 -1
  122. data/vendor/libgit2/include/git2/revwalk.h +4 -1
  123. data/vendor/libgit2/include/git2/signature.h +1 -1
  124. data/vendor/libgit2/include/git2/stash.h +61 -7
  125. data/vendor/libgit2/include/git2/status.h +14 -5
  126. data/vendor/libgit2/include/git2/strarray.h +0 -13
  127. data/vendor/libgit2/include/git2/submodule.h +7 -2
  128. data/vendor/libgit2/include/git2/sys/commit_graph.h +1 -1
  129. data/vendor/libgit2/include/git2/sys/odb_backend.h +3 -6
  130. data/vendor/libgit2/include/git2/sys/remote.h +46 -0
  131. data/vendor/libgit2/include/git2/sys/stream.h +1 -1
  132. data/vendor/libgit2/include/git2/sys/transport.h +46 -39
  133. data/vendor/libgit2/include/git2/tag.h +1 -0
  134. data/vendor/libgit2/include/git2/tree.h +4 -3
  135. data/vendor/libgit2/include/git2/types.h +7 -7
  136. data/vendor/libgit2/include/git2/version.h +27 -6
  137. data/vendor/libgit2/include/git2/worktree.h +12 -2
  138. data/vendor/libgit2/include/git2.h +1 -0
  139. data/vendor/libgit2/src/CMakeLists.txt +177 -419
  140. data/vendor/libgit2/src/README.md +12 -0
  141. data/vendor/libgit2/src/cli/CMakeLists.txt +57 -0
  142. data/vendor/libgit2/src/cli/README.md +26 -0
  143. data/vendor/libgit2/src/cli/cli.h +20 -0
  144. data/vendor/libgit2/src/cli/cmd.c +21 -0
  145. data/vendor/libgit2/src/cli/cmd.h +33 -0
  146. data/vendor/libgit2/src/cli/cmd_cat_file.c +204 -0
  147. data/vendor/libgit2/src/cli/cmd_clone.c +176 -0
  148. data/vendor/libgit2/src/cli/cmd_hash_object.c +154 -0
  149. data/vendor/libgit2/src/cli/cmd_help.c +86 -0
  150. data/vendor/libgit2/src/cli/error.h +51 -0
  151. data/vendor/libgit2/src/cli/main.c +106 -0
  152. data/vendor/libgit2/src/cli/opt.c +669 -0
  153. data/vendor/libgit2/src/cli/opt.h +349 -0
  154. data/vendor/libgit2/src/cli/opt_usage.c +194 -0
  155. data/vendor/libgit2/src/cli/opt_usage.h +35 -0
  156. data/vendor/libgit2/src/cli/progress.c +345 -0
  157. data/vendor/libgit2/src/cli/progress.h +117 -0
  158. data/vendor/libgit2/src/cli/sighandler.h +20 -0
  159. data/vendor/libgit2/src/cli/unix/sighandler.c +36 -0
  160. data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
  161. data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
  162. data/vendor/libgit2/src/libgit2/CMakeLists.txt +141 -0
  163. data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +1 -1
  164. data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
  165. data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +18 -18
  166. data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
  167. data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +18 -18
  168. data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +18 -18
  169. data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +4 -4
  170. data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +18 -13
  171. data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +2 -0
  172. data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -1
  173. data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
  174. data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
  175. data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
  176. data/vendor/libgit2/src/{branch.h → libgit2/branch.h} +15 -3
  177. data/vendor/libgit2/src/libgit2/buf.c +126 -0
  178. data/vendor/libgit2/src/libgit2/buf.h +50 -0
  179. data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +74 -68
  180. data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +13 -13
  181. data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +96 -67
  182. data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +178 -73
  183. data/vendor/libgit2/src/libgit2/commit.h +87 -0
  184. data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +122 -89
  185. data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +14 -4
  186. data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +7 -4
  187. data/vendor/libgit2/src/libgit2/common.h +55 -0
  188. data/vendor/libgit2/src/{config.c → libgit2/config.c} +101 -69
  189. data/vendor/libgit2/src/{config.h → libgit2/config.h} +15 -2
  190. data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +105 -93
  191. data/vendor/libgit2/src/{config_mem.c → libgit2/config_mem.c} +9 -9
  192. data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +27 -23
  193. data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
  194. data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +35 -27
  195. data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +30 -9
  196. data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +2 -4
  197. data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +34 -36
  198. data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +3 -3
  199. data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +44 -26
  200. data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +47 -18
  201. data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
  202. data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +112 -100
  203. data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
  204. data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
  205. data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +13 -8
  206. data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
  207. data/vendor/libgit2/src/{email.c → libgit2/email.c} +55 -39
  208. data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
  209. data/vendor/libgit2/src/{errors.c → libgit2/errors.c} +18 -18
  210. data/vendor/libgit2/src/{errors.h → libgit2/errors.h} +1 -2
  211. data/vendor/libgit2/src/libgit2/experimental.h.in +13 -0
  212. data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +72 -27
  213. data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -1
  214. data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +23 -23
  215. data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +127 -53
  216. data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
  217. data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
  218. data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +35 -34
  219. data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
  220. data/vendor/libgit2/src/{index.c → libgit2/index.c} +91 -90
  221. data/vendor/libgit2/src/{index.h → libgit2/index.h} +6 -3
  222. data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +173 -92
  223. data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +71 -61
  224. data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +5 -5
  225. data/vendor/libgit2/src/{libgit2.c → libgit2/libgit2.c} +46 -11
  226. data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +38 -36
  227. data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +30 -30
  228. data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
  229. data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +2 -2
  230. data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -3
  231. data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
  232. data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +112 -92
  233. data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +5 -4
  234. data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +15 -12
  235. data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +5 -2
  236. data/vendor/libgit2/src/{netops.c → libgit2/netops.c} +1 -2
  237. data/vendor/libgit2/src/{netops.h → libgit2/netops.h} +1 -1
  238. data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +25 -34
  239. data/vendor/libgit2/src/{object.c → libgit2/object.c} +135 -30
  240. data/vendor/libgit2/src/{object.h → libgit2/object.h} +12 -3
  241. data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +228 -81
  242. data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
  243. data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
  244. data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +18 -5
  245. data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +137 -85
  246. data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +136 -90
  247. data/vendor/libgit2/src/libgit2/oid.h +273 -0
  248. data/vendor/libgit2/src/{oidmap.c → libgit2/oidmap.c} +1 -1
  249. data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +56 -30
  250. data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +11 -6
  251. data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +114 -84
  252. data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +31 -16
  253. data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +4 -3
  254. data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
  255. data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +1 -0
  256. data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +27 -11
  257. data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
  258. data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +29 -29
  259. data/vendor/libgit2/src/libgit2/path.c +375 -0
  260. data/vendor/libgit2/src/libgit2/path.h +68 -0
  261. data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +6 -6
  262. data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
  263. data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
  264. data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
  265. data/vendor/libgit2/src/{push.c → libgit2/push.c} +43 -38
  266. data/vendor/libgit2/src/{push.h → libgit2/push.h} +4 -16
  267. data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
  268. data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
  269. data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +119 -107
  270. data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +506 -197
  271. data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +7 -5
  272. data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +1 -2
  273. data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +34 -32
  274. data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +2 -2
  275. data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +32 -37
  276. data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +5 -2
  277. data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +718 -420
  278. data/vendor/libgit2/src/libgit2/remote.h +100 -0
  279. data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +629 -386
  280. data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +20 -9
  281. data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
  282. data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +14 -14
  283. data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +71 -42
  284. data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +12 -8
  285. data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +12 -6
  286. data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -1
  287. data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +235 -61
  288. data/vendor/libgit2/src/{status.c → libgit2/status.c} +4 -1
  289. data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
  290. data/vendor/libgit2/src/libgit2/strarray.h +25 -0
  291. data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +8 -6
  292. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +1 -1
  293. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +7 -3
  294. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +3 -3
  295. data/vendor/libgit2/src/{streams → libgit2/streams}/socket.c +4 -1
  296. data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +177 -161
  297. data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +1 -1
  298. data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
  299. data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +53 -18
  300. data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +73 -42
  301. data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
  302. data/vendor/libgit2/src/{threadstate.c → libgit2/threadstate.c} +3 -3
  303. data/vendor/libgit2/src/{threadstate.h → libgit2/threadstate.h} +2 -2
  304. data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
  305. data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
  306. data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +1 -1
  307. data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +1 -1
  308. data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +10 -10
  309. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
  310. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +2 -3
  311. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.c +12 -13
  312. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.c +10 -10
  313. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +0 -1
  314. data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +9 -11
  315. data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +41 -20
  316. data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +2 -3
  317. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +75 -66
  318. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
  319. data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +138 -116
  320. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +92 -133
  321. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +35 -32
  322. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +177 -65
  323. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +97 -49
  324. data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.c +365 -198
  325. data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +58 -59
  326. data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +8 -8
  327. data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +2 -2
  328. data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +93 -83
  329. data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +4 -4
  330. data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +121 -94
  331. data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
  332. data/vendor/libgit2/src/libgit2/xdiff/git-xdiff.h +53 -0
  333. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiff.h +15 -15
  334. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.c +134 -108
  335. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.c +23 -7
  336. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xhistogram.c +87 -78
  337. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xinclude.h +1 -12
  338. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmerge.c +104 -117
  339. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xpatience.c +6 -17
  340. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.c +15 -20
  341. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.c +18 -7
  342. data/vendor/libgit2/src/util/CMakeLists.txt +80 -0
  343. data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.h +1 -1
  344. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
  345. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
  346. data/vendor/libgit2/src/{array.h → util/array.h} +1 -1
  347. data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
  348. data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +1 -1
  349. data/vendor/libgit2/src/{date.c → util/date.c} +14 -20
  350. data/vendor/libgit2/src/util/date.h +33 -0
  351. data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +29 -29
  352. data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +2 -2
  353. data/vendor/libgit2/src/{path.c → util/fs_path.c} +453 -647
  354. data/vendor/libgit2/src/{path.h → util/fs_path.h} +221 -188
  355. data/vendor/libgit2/src/{futils.c → util/futils.c} +135 -90
  356. data/vendor/libgit2/src/{futils.h → util/futils.h} +28 -15
  357. data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +15 -1
  358. data/vendor/libgit2/src/{common.h → util/git2_util.h} +20 -59
  359. data/vendor/libgit2/src/util/hash/builtin.c +53 -0
  360. data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
  361. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
  362. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
  363. data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
  364. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
  365. data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
  366. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
  367. data/vendor/libgit2/src/util/hash/openssl.c +195 -0
  368. data/vendor/libgit2/src/util/hash/openssl.h +45 -0
  369. data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
  370. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
  371. data/vendor/libgit2/src/util/hash/sha.h +70 -0
  372. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
  373. data/vendor/libgit2/src/util/hash/win32.c +549 -0
  374. data/vendor/libgit2/src/util/hash/win32.h +60 -0
  375. data/vendor/libgit2/src/util/hash.c +158 -0
  376. data/vendor/libgit2/src/util/hash.h +61 -0
  377. data/vendor/libgit2/src/{khash.h → util/khash.h} +1 -1
  378. data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
  379. data/vendor/libgit2/src/util/net.c +1003 -0
  380. data/vendor/libgit2/src/{net.h → util/net.h} +18 -4
  381. data/vendor/libgit2/src/{pool.h → util/pool.h} +1 -1
  382. data/vendor/libgit2/src/{posix.c → util/posix.c} +3 -3
  383. data/vendor/libgit2/src/{posix.h → util/posix.h} +4 -1
  384. data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +2 -2
  385. data/vendor/libgit2/src/util/rand.c +234 -0
  386. data/vendor/libgit2/src/util/rand.h +37 -0
  387. data/vendor/libgit2/src/{regexp.c → util/regexp.c} +4 -4
  388. data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
  389. data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
  390. data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
  391. data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +1 -1
  392. data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +2 -2
  393. data/vendor/libgit2/src/{buffer.c → util/str.c} +157 -151
  394. data/vendor/libgit2/src/util/str.h +357 -0
  395. data/vendor/libgit2/src/{strmap.h → util/strmap.h} +1 -1
  396. data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
  397. data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
  398. data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
  399. data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
  400. data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -4
  401. data/vendor/libgit2/src/{unix → util/unix}/realpath.c +1 -3
  402. data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
  403. data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
  404. data/vendor/libgit2/src/{util.c → util/util.c} +15 -15
  405. data/vendor/libgit2/src/{util.h → util/util.h} +4 -29
  406. data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
  407. data/vendor/libgit2/src/{vector.h → util/vector.h} +2 -2
  408. data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
  409. data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
  410. data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
  411. data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
  412. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +140 -9
  413. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
  414. data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
  415. data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +12 -28
  416. data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
  417. data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
  418. data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
  419. data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.h +1 -1
  420. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
  421. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
  422. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
  423. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
  424. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
  425. data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
  426. data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
  427. metadata +402 -356
  428. data/vendor/libgit2/src/buffer.h +0 -374
  429. data/vendor/libgit2/src/commit.h +0 -46
  430. data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
  431. data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
  432. data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
  433. data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
  434. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  435. data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
  436. data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
  437. data/vendor/libgit2/src/hash/sha1.h +0 -38
  438. data/vendor/libgit2/src/hash.c +0 -110
  439. data/vendor/libgit2/src/hash.h +0 -46
  440. data/vendor/libgit2/src/message.h +0 -17
  441. data/vendor/libgit2/src/net.c +0 -540
  442. data/vendor/libgit2/src/oid.h +0 -51
  443. data/vendor/libgit2/src/remote.h +0 -55
  444. data/vendor/libgit2/src/sysdir.c +0 -347
  445. data/vendor/libgit2/src/win32/findfile.c +0 -230
  446. data/vendor/libgit2/src/win32/findfile.h +0 -19
  447. /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
  448. /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
  449. /data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +0 -0
  450. /data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +0 -0
  451. /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
  452. /data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +0 -0
  453. /data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +0 -0
  454. /data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -0
  455. /data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +0 -0
  456. /data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +0 -0
  457. /data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +0 -0
  458. /data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +0 -0
  459. /data/vendor/libgit2/src/{config_entries.c → libgit2/config_entries.c} +0 -0
  460. /data/vendor/libgit2/src/{config_entries.h → libgit2/config_entries.h} +0 -0
  461. /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
  462. /data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +0 -0
  463. /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
  464. /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
  465. /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
  466. /data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +0 -0
  467. /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
  468. /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
  469. /data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +0 -0
  470. /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
  471. /data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +0 -0
  472. /data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +0 -0
  473. /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
  474. /data/vendor/libgit2/src/{idxmap.c → libgit2/idxmap.c} +0 -0
  475. /data/vendor/libgit2/src/{idxmap.h → libgit2/idxmap.h} +0 -0
  476. /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
  477. /data/vendor/libgit2/src/{libgit2.h → libgit2/libgit2.h} +0 -0
  478. /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
  479. /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
  480. /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
  481. /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
  482. /data/vendor/libgit2/src/{offmap.c → libgit2/offmap.c} +0 -0
  483. /data/vendor/libgit2/src/{offmap.h → libgit2/offmap.h} +0 -0
  484. /data/vendor/libgit2/src/{oidarray.c → libgit2/oidarray.c} +0 -0
  485. /data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +0 -0
  486. /data/vendor/libgit2/src/{oidmap.h → libgit2/oidmap.h} +0 -0
  487. /data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +0 -0
  488. /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
  489. /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
  490. /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
  491. /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
  492. /data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +0 -0
  493. /data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +0 -0
  494. /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
  495. /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
  496. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
  497. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +0 -0
  498. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
  499. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
  500. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
  501. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
  502. /data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +0 -0
  503. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +0 -0
  504. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
  505. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +0 -0
  506. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
  507. /data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +0 -0
  508. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +0 -0
  509. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +0 -0
  510. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
  511. /data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.h +0 -0
  512. /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
  513. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.h +0 -0
  514. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.h +0 -0
  515. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmacros.h +0 -0
  516. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.h +0 -0
  517. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xtypes.h +0 -0
  518. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.h +0 -0
  519. /data/vendor/libgit2/src/{alloc.c → util/alloc.c} +0 -0
  520. /data/vendor/libgit2/src/{alloc.h → util/alloc.h} +0 -0
  521. /data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.c +0 -0
  522. /data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.c +0 -0
  523. /data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.c +0 -0
  524. /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
  525. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
  526. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
  527. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
  528. /data/vendor/libgit2/src/{integer.h → util/integer.h} +0 -0
  529. /data/vendor/libgit2/src/{pool.c → util/pool.c} +0 -0
  530. /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
  531. /data/vendor/libgit2/src/{strmap.c → util/strmap.c} +0 -0
  532. /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
  533. /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
  534. /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
  535. /data/vendor/libgit2/src/{vector.c → util/vector.c} +0 -0
  536. /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
  537. /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
  538. /data/vendor/libgit2/src/{win32 → util/win32}/error.c +0 -0
  539. /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
  540. /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
  541. /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
  542. /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
  543. /data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.c +0 -0
  544. /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
  545. /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
  546. /data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +0 -0
  547. /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
@@ -20,6 +20,7 @@
20
20
  #include "idxmap.h"
21
21
  #include "diff.h"
22
22
  #include "varint.h"
23
+ #include "path.h"
23
24
 
24
25
  #include "git2/odb.h"
25
26
  #include "git2/oid.h"
@@ -33,7 +34,6 @@ static int index_apply_to_wd_diff(git_index *index, int action, const git_strarr
33
34
 
34
35
  #define minimal_entry_size (offsetof(struct entry_short, path))
35
36
 
36
- static const size_t INDEX_FOOTER_SIZE = GIT_OID_RAWSZ;
37
37
  static const size_t INDEX_HEADER_SIZE = 12;
38
38
 
39
39
  static const unsigned int INDEX_VERSION_NUMBER_DEFAULT = 2;
@@ -74,7 +74,7 @@ struct entry_short {
74
74
  uint32_t uid;
75
75
  uint32_t gid;
76
76
  uint32_t file_size;
77
- git_oid oid;
77
+ unsigned char oid[GIT_OID_SHA1_SIZE];
78
78
  uint16_t flags;
79
79
  char path[1]; /* arbitrary length */
80
80
  };
@@ -88,7 +88,7 @@ struct entry_long {
88
88
  uint32_t uid;
89
89
  uint32_t gid;
90
90
  uint32_t file_size;
91
- git_oid oid;
91
+ unsigned char oid[GIT_OID_SHA1_SIZE];
92
92
  uint16_t flags;
93
93
  uint16_t flags_extended;
94
94
  char path[1]; /* arbitrary length */
@@ -120,7 +120,7 @@ static int read_header(struct index_header *dest, const void *buffer);
120
120
 
121
121
  static int parse_index(git_index *index, const char *buffer, size_t buffer_size);
122
122
  static bool is_index_extended(git_index *index);
123
- static int write_index(git_oid *checksum, git_index *index, git_filebuf *file);
123
+ static int write_index(unsigned char checksum[GIT_HASH_SHA1_SIZE], size_t *checksum_size, git_index *index, git_filebuf *file);
124
124
 
125
125
  static void index_entry_free(git_index_entry *entry);
126
126
  static void index_entry_reuc_free(git_index_reuc_entry *reuc);
@@ -420,7 +420,7 @@ int git_index_open(git_index **index_out, const char *index_path)
420
420
  goto fail;
421
421
 
422
422
  /* Check if index file is stored on disk already */
423
- if (git_path_exists(index->index_file_path) == true)
423
+ if (git_fs_path_exists(index->index_file_path) == true)
424
424
  index->on_disk = 1;
425
425
  }
426
426
 
@@ -606,10 +606,12 @@ int git_index_caps(const git_index *index)
606
606
  (index->no_symlinks ? GIT_INDEX_CAPABILITY_NO_SYMLINKS : 0));
607
607
  }
608
608
 
609
+ #ifndef GIT_DEPRECATE_HARD
609
610
  const git_oid *git_index_checksum(git_index *index)
610
611
  {
611
- return &index->checksum;
612
+ return (git_oid *)index->checksum;
612
613
  }
614
+ #endif
613
615
 
614
616
  /**
615
617
  * Returns 1 for changed, 0 for not changed and <0 for errors
@@ -618,37 +620,38 @@ static int compare_checksum(git_index *index)
618
620
  {
619
621
  int fd;
620
622
  ssize_t bytes_read;
621
- git_oid checksum = {{ 0 }};
623
+ unsigned char checksum[GIT_HASH_SHA1_SIZE];
624
+ size_t checksum_size = GIT_HASH_SHA1_SIZE;
622
625
 
623
626
  if ((fd = p_open(index->index_file_path, O_RDONLY)) < 0)
624
627
  return fd;
625
628
 
626
- if (p_lseek(fd, -20, SEEK_END) < 0) {
629
+ if (p_lseek(fd, (0 - (ssize_t)checksum_size), SEEK_END) < 0) {
627
630
  p_close(fd);
628
631
  git_error_set(GIT_ERROR_OS, "failed to seek to end of file");
629
632
  return -1;
630
633
  }
631
634
 
632
- bytes_read = p_read(fd, &checksum, GIT_OID_RAWSZ);
635
+ bytes_read = p_read(fd, checksum, checksum_size);
633
636
  p_close(fd);
634
637
 
635
- if (bytes_read < 0)
638
+ if (bytes_read < (ssize_t)checksum_size)
636
639
  return -1;
637
640
 
638
- return !!git_oid_cmp(&checksum, &index->checksum);
641
+ return !!memcmp(checksum, index->checksum, checksum_size);
639
642
  }
640
643
 
641
644
  int git_index_read(git_index *index, int force)
642
645
  {
643
646
  int error = 0, updated;
644
- git_buf buffer = GIT_BUF_INIT;
647
+ git_str buffer = GIT_STR_INIT;
645
648
  git_futils_filestamp stamp = index->stamp;
646
649
 
647
650
  if (!index->index_file_path)
648
651
  return create_index_error(-1,
649
652
  "failed to read index: The index is in-memory only");
650
653
 
651
- index->on_disk = git_path_exists(index->index_file_path);
654
+ index->on_disk = git_fs_path_exists(index->index_file_path);
652
655
 
653
656
  if (!index->on_disk) {
654
657
  if (force && (error = git_index_clear(index)) < 0)
@@ -687,7 +690,7 @@ int git_index_read(git_index *index, int force)
687
690
  index->dirty = 0;
688
691
  }
689
692
 
690
- git_buf_dispose(&buffer);
693
+ git_str_dispose(&buffer);
691
694
  return error;
692
695
  }
693
696
 
@@ -702,16 +705,6 @@ int git_index_read_safely(git_index *index)
702
705
  return git_index_read(index, false);
703
706
  }
704
707
 
705
- int git_index__changed_relative_to(
706
- git_index *index, const git_oid *checksum)
707
- {
708
- /* attempt to update index (ignoring errors) */
709
- if (git_index_read(index, false) < 0)
710
- git_error_clear();
711
-
712
- return !!git_oid_cmp(&index->checksum, checksum);
713
- }
714
-
715
708
  static bool is_racy_entry(git_index *index, const git_index_entry *entry)
716
709
  {
717
710
  /* Git special-cases submodules in the check */
@@ -944,7 +937,7 @@ static int index_entry_create(
944
937
  if (st)
945
938
  mode = st->st_mode;
946
939
 
947
- if (!git_path_validate(repo, path, mode, path_valid_flags)) {
940
+ if (!git_path_is_valid(repo, path, mode, path_valid_flags)) {
948
941
  git_error_set(GIT_ERROR_INDEX, "invalid path: '%s'", path);
949
942
  return -1;
950
943
  }
@@ -969,7 +962,7 @@ static int index_entry_init(
969
962
  {
970
963
  int error = 0;
971
964
  git_index_entry *entry = NULL;
972
- git_buf path = GIT_BUF_INIT;
965
+ git_str path = GIT_STR_INIT;
973
966
  struct stat st;
974
967
  git_oid oid;
975
968
  git_repository *repo;
@@ -991,8 +984,8 @@ static int index_entry_init(
991
984
  if (git_repository_workdir_path(&path, repo, rel_path) < 0)
992
985
  return -1;
993
986
 
994
- error = git_path_lstat(path.ptr, &st);
995
- git_buf_dispose(&path);
987
+ error = git_fs_path_lstat(path.ptr, &st);
988
+ git_str_dispose(&path);
996
989
 
997
990
  if (error < 0)
998
991
  return error;
@@ -1525,7 +1518,7 @@ int git_index_add_from_buffer(
1525
1518
  static int add_repo_as_submodule(git_index_entry **out, git_index *index, const char *path)
1526
1519
  {
1527
1520
  git_repository *sub;
1528
- git_buf abspath = GIT_BUF_INIT;
1521
+ git_str abspath = GIT_STR_INIT;
1529
1522
  git_repository *repo = INDEX_OWNER(index);
1530
1523
  git_reference *head;
1531
1524
  git_index_entry *entry;
@@ -1556,7 +1549,7 @@ static int add_repo_as_submodule(git_index_entry **out, git_index *index, const
1556
1549
 
1557
1550
  git_reference_free(head);
1558
1551
  git_repository_free(sub);
1559
- git_buf_dispose(&abspath);
1552
+ git_str_dispose(&abspath);
1560
1553
 
1561
1554
  *out = entry;
1562
1555
  return 0;
@@ -1722,13 +1715,13 @@ int git_index_remove(git_index *index, const char *path, int stage)
1722
1715
 
1723
1716
  int git_index_remove_directory(git_index *index, const char *dir, int stage)
1724
1717
  {
1725
- git_buf pfx = GIT_BUF_INIT;
1718
+ git_str pfx = GIT_STR_INIT;
1726
1719
  int error = 0;
1727
1720
  size_t pos;
1728
1721
  git_index_entry *entry;
1729
1722
 
1730
- if (!(error = git_buf_sets(&pfx, dir)) &&
1731
- !(error = git_path_to_dir(&pfx)))
1723
+ if (!(error = git_str_sets(&pfx, dir)) &&
1724
+ !(error = git_fs_path_to_dir(&pfx)))
1732
1725
  index_find(&pos, index, pfx.ptr, pfx.size, GIT_INDEX_STAGE_ANY);
1733
1726
 
1734
1727
  while (!error) {
@@ -1746,7 +1739,7 @@ int git_index_remove_directory(git_index *index, const char *dir, int stage)
1746
1739
  /* removed entry at 'pos' so we don't need to increment */
1747
1740
  }
1748
1741
 
1749
- git_buf_dispose(&pfx);
1742
+ git_str_dispose(&pfx);
1750
1743
 
1751
1744
  return error;
1752
1745
  }
@@ -2361,14 +2354,16 @@ static int read_reuc(git_index *index, const char *buffer, size_t size)
2361
2354
  for (i = 0; i < 3; i++) {
2362
2355
  if (!lost->mode[i])
2363
2356
  continue;
2364
- if (size < 20) {
2357
+ if (size < GIT_OID_SHA1_SIZE) {
2365
2358
  index_entry_reuc_free(lost);
2366
2359
  return index_error_invalid("reading reuc entry oid");
2367
2360
  }
2368
2361
 
2369
- git_oid_fromraw(&lost->oid[i], (const unsigned char *) buffer);
2370
- size -= 20;
2371
- buffer += 20;
2362
+ if (git_oid__fromraw(&lost->oid[i], (const unsigned char *) buffer, GIT_OID_SHA1) < 0)
2363
+ return -1;
2364
+
2365
+ size -= GIT_OID_SHA1_SIZE;
2366
+ buffer += GIT_OID_SHA1_SIZE;
2372
2367
  }
2373
2368
 
2374
2369
  /* entry was read successfully - insert into reuc vector */
@@ -2469,8 +2464,9 @@ static int read_entry(
2469
2464
  git_index_entry entry = {{0}};
2470
2465
  bool compressed = index->version >= INDEX_VERSION_NUMBER_COMP;
2471
2466
  char *tmp_path = NULL;
2467
+ size_t checksum_size = GIT_HASH_SHA1_SIZE;
2472
2468
 
2473
- if (INDEX_FOOTER_SIZE + minimal_entry_size > buffer_size)
2469
+ if (checksum_size + minimal_entry_size > buffer_size)
2474
2470
  return -1;
2475
2471
 
2476
2472
  /* buffer is not guaranteed to be aligned */
@@ -2486,9 +2482,11 @@ static int read_entry(
2486
2482
  entry.uid = ntohl(source.uid);
2487
2483
  entry.gid = ntohl(source.gid);
2488
2484
  entry.file_size = ntohl(source.file_size);
2489
- git_oid_cpy(&entry.id, &source.oid);
2490
2485
  entry.flags = ntohs(source.flags);
2491
2486
 
2487
+ if (git_oid__fromraw(&entry.id, source.oid, GIT_OID_SHA1) < 0)
2488
+ return -1;
2489
+
2492
2490
  if (entry.flags & GIT_INDEX_ENTRY_EXTENDED) {
2493
2491
  uint16_t flags_raw;
2494
2492
  size_t flags_offset;
@@ -2551,7 +2549,7 @@ static int read_entry(
2551
2549
  if (entry_size == 0)
2552
2550
  return -1;
2553
2551
 
2554
- if (INDEX_FOOTER_SIZE + entry_size > buffer_size)
2552
+ if (checksum_size + entry_size > buffer_size)
2555
2553
  return -1;
2556
2554
 
2557
2555
  if (index_entry_dup(out, index, &entry) < 0) {
@@ -2585,6 +2583,7 @@ static int read_extension(size_t *read_len, git_index *index, const char *buffer
2585
2583
  {
2586
2584
  struct index_extension dest;
2587
2585
  size_t total_size;
2586
+ size_t checksum_size = GIT_HASH_SHA1_SIZE;
2588
2587
 
2589
2588
  /* buffer is not guaranteed to be aligned */
2590
2589
  memcpy(&dest, buffer, sizeof(struct index_extension));
@@ -2594,7 +2593,7 @@ static int read_extension(size_t *read_len, git_index *index, const char *buffer
2594
2593
 
2595
2594
  if (dest.extension_size > total_size ||
2596
2595
  buffer_size < total_size ||
2597
- buffer_size - total_size < INDEX_FOOTER_SIZE) {
2596
+ buffer_size - total_size < checksum_size) {
2598
2597
  index_error_invalid("extension is truncated");
2599
2598
  return -1;
2600
2599
  }
@@ -2631,7 +2630,8 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
2631
2630
  int error = 0;
2632
2631
  unsigned int i;
2633
2632
  struct index_header header = { 0 };
2634
- git_oid checksum_calculated, checksum_expected;
2633
+ unsigned char checksum[GIT_HASH_SHA1_SIZE];
2634
+ size_t checksum_size = GIT_HASH_SHA1_SIZE;
2635
2635
  const char *last = NULL;
2636
2636
  const char *empty = "";
2637
2637
 
@@ -2643,12 +2643,12 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
2643
2643
  buffer_size -= _increase;\
2644
2644
  }
2645
2645
 
2646
- if (buffer_size < INDEX_HEADER_SIZE + INDEX_FOOTER_SIZE)
2646
+ if (buffer_size < INDEX_HEADER_SIZE + checksum_size)
2647
2647
  return index_error_invalid("insufficient buffer space");
2648
2648
 
2649
2649
  /* Precalculate the SHA1 of the files's contents -- we'll match it to
2650
2650
  * the provided SHA1 in the footer */
2651
- git_hash_buf(&checksum_calculated, buffer, buffer_size - INDEX_FOOTER_SIZE);
2651
+ git_hash_buf(checksum, buffer, buffer_size - checksum_size, GIT_HASH_ALGORITHM_SHA1);
2652
2652
 
2653
2653
  /* Parse header */
2654
2654
  if ((error = read_header(&header, buffer)) < 0)
@@ -2666,7 +2666,7 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
2666
2666
  return error;
2667
2667
 
2668
2668
  /* Parse all the entries */
2669
- for (i = 0; i < header.entry_count && buffer_size > INDEX_FOOTER_SIZE; ++i) {
2669
+ for (i = 0; i < header.entry_count && buffer_size > checksum_size; ++i) {
2670
2670
  git_index_entry *entry = NULL;
2671
2671
  size_t entry_size;
2672
2672
 
@@ -2698,7 +2698,7 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
2698
2698
  }
2699
2699
 
2700
2700
  /* There's still space for some extensions! */
2701
- while (buffer_size > INDEX_FOOTER_SIZE) {
2701
+ while (buffer_size > checksum_size) {
2702
2702
  size_t extension_size;
2703
2703
 
2704
2704
  if ((error = read_extension(&extension_size, index, buffer, buffer_size)) < 0) {
@@ -2708,22 +2708,20 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
2708
2708
  seek_forward(extension_size);
2709
2709
  }
2710
2710
 
2711
- if (buffer_size != INDEX_FOOTER_SIZE) {
2711
+ if (buffer_size != checksum_size) {
2712
2712
  error = index_error_invalid(
2713
2713
  "buffer size does not match index footer size");
2714
2714
  goto done;
2715
2715
  }
2716
2716
 
2717
2717
  /* 160-bit SHA-1 over the content of the index file before this checksum. */
2718
- git_oid_fromraw(&checksum_expected, (const unsigned char *)buffer);
2719
-
2720
- if (git_oid__cmp(&checksum_calculated, &checksum_expected) != 0) {
2718
+ if (memcmp(checksum, buffer, checksum_size) != 0) {
2721
2719
  error = index_error_invalid(
2722
2720
  "calculated checksum does not match expected");
2723
2721
  goto done;
2724
2722
  }
2725
2723
 
2726
- git_oid_cpy(&index->checksum, &checksum_calculated);
2724
+ memcpy(index->checksum, checksum, checksum_size);
2727
2725
 
2728
2726
  #undef seek_forward
2729
2727
 
@@ -2809,9 +2807,7 @@ static int write_disk_entry(git_filebuf *file, git_index_entry *entry, const cha
2809
2807
  ondisk.uid = htonl(entry->uid);
2810
2808
  ondisk.gid = htonl(entry->gid);
2811
2809
  ondisk.file_size = htonl((uint32_t)entry->file_size);
2812
-
2813
- git_oid_cpy(&ondisk.oid, &entry->id);
2814
-
2810
+ git_oid_raw_cpy(ondisk.oid, entry->id.id, GIT_OID_SHA1_SIZE);
2815
2811
  ondisk.flags = htons(entry->flags);
2816
2812
 
2817
2813
  if (entry->flags & GIT_INDEX_ENTRY_EXTENDED) {
@@ -2892,7 +2888,7 @@ done:
2892
2888
  return error;
2893
2889
  }
2894
2890
 
2895
- static int write_extension(git_filebuf *file, struct index_extension *header, git_buf *data)
2891
+ static int write_extension(git_filebuf *file, struct index_extension *header, git_str *data)
2896
2892
  {
2897
2893
  struct index_extension ondisk;
2898
2894
 
@@ -2904,30 +2900,30 @@ static int write_extension(git_filebuf *file, struct index_extension *header, gi
2904
2900
  return git_filebuf_write(file, data->ptr, data->size);
2905
2901
  }
2906
2902
 
2907
- static int create_name_extension_data(git_buf *name_buf, git_index_name_entry *conflict_name)
2903
+ static int create_name_extension_data(git_str *name_buf, git_index_name_entry *conflict_name)
2908
2904
  {
2909
2905
  int error = 0;
2910
2906
 
2911
2907
  if (conflict_name->ancestor == NULL)
2912
- error = git_buf_put(name_buf, "\0", 1);
2908
+ error = git_str_put(name_buf, "\0", 1);
2913
2909
  else
2914
- error = git_buf_put(name_buf, conflict_name->ancestor, strlen(conflict_name->ancestor) + 1);
2910
+ error = git_str_put(name_buf, conflict_name->ancestor, strlen(conflict_name->ancestor) + 1);
2915
2911
 
2916
2912
  if (error != 0)
2917
2913
  goto on_error;
2918
2914
 
2919
2915
  if (conflict_name->ours == NULL)
2920
- error = git_buf_put(name_buf, "\0", 1);
2916
+ error = git_str_put(name_buf, "\0", 1);
2921
2917
  else
2922
- error = git_buf_put(name_buf, conflict_name->ours, strlen(conflict_name->ours) + 1);
2918
+ error = git_str_put(name_buf, conflict_name->ours, strlen(conflict_name->ours) + 1);
2923
2919
 
2924
2920
  if (error != 0)
2925
2921
  goto on_error;
2926
2922
 
2927
2923
  if (conflict_name->theirs == NULL)
2928
- error = git_buf_put(name_buf, "\0", 1);
2924
+ error = git_str_put(name_buf, "\0", 1);
2929
2925
  else
2930
- error = git_buf_put(name_buf, conflict_name->theirs, strlen(conflict_name->theirs) + 1);
2926
+ error = git_str_put(name_buf, conflict_name->theirs, strlen(conflict_name->theirs) + 1);
2931
2927
 
2932
2928
  on_error:
2933
2929
  return error;
@@ -2935,7 +2931,7 @@ on_error:
2935
2931
 
2936
2932
  static int write_name_extension(git_index *index, git_filebuf *file)
2937
2933
  {
2938
- git_buf name_buf = GIT_BUF_INIT;
2934
+ git_str name_buf = GIT_STR_INIT;
2939
2935
  git_vector *out = &index->names;
2940
2936
  git_index_name_entry *conflict_name;
2941
2937
  struct index_extension extension;
@@ -2953,28 +2949,28 @@ static int write_name_extension(git_index *index, git_filebuf *file)
2953
2949
 
2954
2950
  error = write_extension(file, &extension, &name_buf);
2955
2951
 
2956
- git_buf_dispose(&name_buf);
2952
+ git_str_dispose(&name_buf);
2957
2953
 
2958
2954
  done:
2959
2955
  return error;
2960
2956
  }
2961
2957
 
2962
- static int create_reuc_extension_data(git_buf *reuc_buf, git_index_reuc_entry *reuc)
2958
+ static int create_reuc_extension_data(git_str *reuc_buf, git_index_reuc_entry *reuc)
2963
2959
  {
2964
2960
  int i;
2965
2961
  int error = 0;
2966
2962
 
2967
- if ((error = git_buf_put(reuc_buf, reuc->path, strlen(reuc->path) + 1)) < 0)
2963
+ if ((error = git_str_put(reuc_buf, reuc->path, strlen(reuc->path) + 1)) < 0)
2968
2964
  return error;
2969
2965
 
2970
2966
  for (i = 0; i < 3; i++) {
2971
- if ((error = git_buf_printf(reuc_buf, "%o", reuc->mode[i])) < 0 ||
2972
- (error = git_buf_put(reuc_buf, "\0", 1)) < 0)
2967
+ if ((error = git_str_printf(reuc_buf, "%o", reuc->mode[i])) < 0 ||
2968
+ (error = git_str_put(reuc_buf, "\0", 1)) < 0)
2973
2969
  return error;
2974
2970
  }
2975
2971
 
2976
2972
  for (i = 0; i < 3; i++) {
2977
- if (reuc->mode[i] && (error = git_buf_put(reuc_buf, (char *)&reuc->oid[i].id, GIT_OID_RAWSZ)) < 0)
2973
+ if (reuc->mode[i] && (error = git_str_put(reuc_buf, (char *)&reuc->oid[i].id, GIT_OID_SHA1_SIZE)) < 0)
2978
2974
  return error;
2979
2975
  }
2980
2976
 
@@ -2983,7 +2979,7 @@ static int create_reuc_extension_data(git_buf *reuc_buf, git_index_reuc_entry *r
2983
2979
 
2984
2980
  static int write_reuc_extension(git_index *index, git_filebuf *file)
2985
2981
  {
2986
- git_buf reuc_buf = GIT_BUF_INIT;
2982
+ git_str reuc_buf = GIT_STR_INIT;
2987
2983
  git_vector *out = &index->reuc;
2988
2984
  git_index_reuc_entry *reuc;
2989
2985
  struct index_extension extension;
@@ -3001,7 +2997,7 @@ static int write_reuc_extension(git_index *index, git_filebuf *file)
3001
2997
 
3002
2998
  error = write_extension(file, &extension, &reuc_buf);
3003
2999
 
3004
- git_buf_dispose(&reuc_buf);
3000
+ git_str_dispose(&reuc_buf);
3005
3001
 
3006
3002
  done:
3007
3003
  return error;
@@ -3010,7 +3006,7 @@ done:
3010
3006
  static int write_tree_extension(git_index *index, git_filebuf *file)
3011
3007
  {
3012
3008
  struct index_extension extension;
3013
- git_buf buf = GIT_BUF_INIT;
3009
+ git_str buf = GIT_STR_INIT;
3014
3010
  int error;
3015
3011
 
3016
3012
  if (index->tree == NULL)
@@ -3025,7 +3021,7 @@ static int write_tree_extension(git_index *index, git_filebuf *file)
3025
3021
 
3026
3022
  error = write_extension(file, &extension, &buf);
3027
3023
 
3028
- git_buf_dispose(&buf);
3024
+ git_str_dispose(&buf);
3029
3025
 
3030
3026
  return error;
3031
3027
  }
@@ -3039,9 +3035,12 @@ static void clear_uptodate(git_index *index)
3039
3035
  entry->flags_extended &= ~GIT_INDEX_ENTRY_UPTODATE;
3040
3036
  }
3041
3037
 
3042
- static int write_index(git_oid *checksum, git_index *index, git_filebuf *file)
3038
+ static int write_index(
3039
+ unsigned char checksum[GIT_HASH_SHA1_SIZE],
3040
+ size_t *checksum_size,
3041
+ git_index *index,
3042
+ git_filebuf *file)
3043
3043
  {
3044
- git_oid hash_final;
3045
3044
  struct index_header header;
3046
3045
  bool is_extended;
3047
3046
  uint32_t index_version_number;
@@ -3049,6 +3048,8 @@ static int write_index(git_oid *checksum, git_index *index, git_filebuf *file)
3049
3048
  GIT_ASSERT_ARG(index);
3050
3049
  GIT_ASSERT_ARG(file);
3051
3050
 
3051
+ *checksum_size = GIT_HASH_SHA1_SIZE;
3052
+
3052
3053
  if (index->version <= INDEX_VERSION_NUMBER_EXT) {
3053
3054
  is_extended = is_index_extended(index);
3054
3055
  index_version_number = is_extended ? INDEX_VERSION_NUMBER_EXT : INDEX_VERSION_NUMBER_LB;
@@ -3079,11 +3080,10 @@ static int write_index(git_oid *checksum, git_index *index, git_filebuf *file)
3079
3080
  return -1;
3080
3081
 
3081
3082
  /* get out the hash for all the contents we've appended to the file */
3082
- git_filebuf_hash(&hash_final, file);
3083
- git_oid_cpy(checksum, &hash_final);
3083
+ git_filebuf_hash(checksum, file);
3084
3084
 
3085
3085
  /* write it at the end of the file */
3086
- if (git_filebuf_write(file, hash_final.id, GIT_OID_RAWSZ) < 0)
3086
+ if (git_filebuf_write(file, checksum, *checksum_size) < 0)
3087
3087
  return -1;
3088
3088
 
3089
3089
  /* file entries are no longer up to date */
@@ -3115,13 +3115,13 @@ static int read_tree_cb(
3115
3115
  {
3116
3116
  read_tree_data *data = payload;
3117
3117
  git_index_entry *entry = NULL, *old_entry;
3118
- git_buf path = GIT_BUF_INIT;
3118
+ git_str path = GIT_STR_INIT;
3119
3119
  size_t pos;
3120
3120
 
3121
3121
  if (git_tree_entry__is_tree(tentry))
3122
3122
  return 0;
3123
3123
 
3124
- if (git_buf_joinpath(&path, root, tentry->filename) < 0)
3124
+ if (git_str_joinpath(&path, root, tentry->filename) < 0)
3125
3125
  return -1;
3126
3126
 
3127
3127
  if (index_entry_create(&entry, INDEX_OWNER(data->index), path.ptr, NULL, false) < 0)
@@ -3143,7 +3143,7 @@ static int read_tree_cb(
3143
3143
  }
3144
3144
 
3145
3145
  index_entry_adjust_namemask(entry, path.size);
3146
- git_buf_dispose(&path);
3146
+ git_str_dispose(&path);
3147
3147
 
3148
3148
  if (git_vector_insert(data->new_entries, entry) < 0) {
3149
3149
  index_entry_free(entry);
@@ -3385,7 +3385,7 @@ enum {
3385
3385
  INDEX_ACTION_NONE = 0,
3386
3386
  INDEX_ACTION_UPDATE = 1,
3387
3387
  INDEX_ACTION_REMOVE = 2,
3388
- INDEX_ACTION_ADDALL = 3,
3388
+ INDEX_ACTION_ADDALL = 3
3389
3389
  };
3390
3390
 
3391
3391
  int git_index_add_all(
@@ -3498,7 +3498,7 @@ static int index_apply_to_wd_diff(git_index *index, int action, const git_strarr
3498
3498
  }
3499
3499
 
3500
3500
  /*
3501
- * We do the matching ourselves intead of passing the list to
3501
+ * We do the matching ourselves instead of passing the list to
3502
3502
  * diff because we want to tell the callback which one
3503
3503
  * matched, which we do not know if we ask diff to filter for us.
3504
3504
  */
@@ -3540,7 +3540,7 @@ static int index_apply_to_all(
3540
3540
  size_t i;
3541
3541
  git_pathspec ps;
3542
3542
  const char *match;
3543
- git_buf path = GIT_BUF_INIT;
3543
+ git_str path = GIT_STR_INIT;
3544
3544
 
3545
3545
  GIT_ASSERT_ARG(index);
3546
3546
 
@@ -3569,7 +3569,7 @@ static int index_apply_to_all(
3569
3569
  }
3570
3570
 
3571
3571
  /* index manipulation may alter entry, so don't depend on it */
3572
- if ((error = git_buf_sets(&path, entry->path)) < 0)
3572
+ if ((error = git_str_sets(&path, entry->path)) < 0)
3573
3573
  break;
3574
3574
 
3575
3575
  switch (action) {
@@ -3598,7 +3598,7 @@ static int index_apply_to_all(
3598
3598
  }
3599
3599
  }
3600
3600
 
3601
- git_buf_dispose(&path);
3601
+ git_str_dispose(&path);
3602
3602
  git_pathspec__clear(&ps);
3603
3603
 
3604
3604
  return error;
@@ -3713,8 +3713,9 @@ int git_indexwriter_init_for_operation(
3713
3713
 
3714
3714
  int git_indexwriter_commit(git_indexwriter *writer)
3715
3715
  {
3716
+ unsigned char checksum[GIT_HASH_SHA1_SIZE];
3717
+ size_t checksum_size;
3716
3718
  int error;
3717
- git_oid checksum = {{ 0 }};
3718
3719
 
3719
3720
  if (!writer->should_write)
3720
3721
  return 0;
@@ -3722,7 +3723,7 @@ int git_indexwriter_commit(git_indexwriter *writer)
3722
3723
  git_vector_sort(&writer->index->entries);
3723
3724
  git_vector_sort(&writer->index->reuc);
3724
3725
 
3725
- if ((error = write_index(&checksum, writer->index, &writer->file)) < 0) {
3726
+ if ((error = write_index(checksum, &checksum_size, writer->index, &writer->file)) < 0) {
3726
3727
  git_indexwriter_cleanup(writer);
3727
3728
  return error;
3728
3729
  }
@@ -3738,7 +3739,7 @@ int git_indexwriter_commit(git_indexwriter *writer)
3738
3739
 
3739
3740
  writer->index->dirty = 0;
3740
3741
  writer->index->on_disk = 1;
3741
- git_oid_cpy(&writer->index->checksum, &checksum);
3742
+ memcpy(writer->index->checksum, checksum, checksum_size);
3742
3743
 
3743
3744
  git_index_free(writer->index);
3744
3745
  writer->index = NULL;
@@ -27,7 +27,7 @@ struct git_index {
27
27
 
28
28
  char *index_file_path;
29
29
  git_futils_filestamp stamp;
30
- git_oid checksum; /* checksum at the end of the file */
30
+ unsigned char checksum[GIT_HASH_SHA1_SIZE];
31
31
 
32
32
  git_vector entries;
33
33
  git_idxmap *entries_map;
@@ -133,10 +133,13 @@ extern unsigned int git_index__create_mode(unsigned int mode);
133
133
 
134
134
  GIT_INLINE(const git_futils_filestamp *) git_index__filestamp(git_index *index)
135
135
  {
136
- return &index->stamp;
136
+ return &index->stamp;
137
137
  }
138
138
 
139
- extern int git_index__changed_relative_to(git_index *index, const git_oid *checksum);
139
+ GIT_INLINE(unsigned char *) git_index__checksum(git_index *index)
140
+ {
141
+ return index->checksum;
142
+ }
140
143
 
141
144
  /* Copy the current entries vector *and* increment the index refcount.
142
145
  * Call `git_index__release_snapshot` when done.