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
@@ -21,7 +21,7 @@ typedef enum {
21
21
  DIFF_DRIVER_AUTO = 0,
22
22
  DIFF_DRIVER_BINARY = 1,
23
23
  DIFF_DRIVER_TEXT = 2,
24
- DIFF_DRIVER_PATTERNLIST = 3,
24
+ DIFF_DRIVER_PATTERNLIST = 3
25
25
  } git_diff_driver_t;
26
26
 
27
27
  typedef struct {
@@ -51,11 +51,9 @@ struct git_diff_driver_registry {
51
51
 
52
52
  #define FORCE_DIFFABLE (GIT_DIFF_FORCE_TEXT | GIT_DIFF_FORCE_BINARY)
53
53
 
54
- static git_diff_driver global_drivers[3] = {
55
- { DIFF_DRIVER_AUTO, 0, 0, },
56
- { DIFF_DRIVER_BINARY, GIT_DIFF_FORCE_BINARY, 0 },
57
- { DIFF_DRIVER_TEXT, GIT_DIFF_FORCE_TEXT, 0 },
58
- };
54
+ static git_diff_driver diff_driver_auto = { DIFF_DRIVER_AUTO, 0, 0 };
55
+ static git_diff_driver diff_driver_binary = { DIFF_DRIVER_BINARY, GIT_DIFF_FORCE_BINARY, 0 };
56
+ static git_diff_driver diff_driver_text = { DIFF_DRIVER_TEXT, GIT_DIFF_FORCE_TEXT, 0 };
59
57
 
60
58
  git_diff_driver_registry *git_diff_driver_registry_new(void)
61
59
  {
@@ -90,7 +88,7 @@ static int diff_driver_add_patterns(
90
88
  int error = 0;
91
89
  const char *scan, *end;
92
90
  git_diff_driver_pattern *pat = NULL;
93
- git_buf buf = GIT_BUF_INIT;
91
+ git_str buf = GIT_STR_INIT;
94
92
 
95
93
  for (scan = regex_str; scan; scan = end) {
96
94
  /* get pattern to fill in */
@@ -105,10 +103,10 @@ static int diff_driver_add_patterns(
105
103
  }
106
104
 
107
105
  if ((end = strchr(scan, '\n')) != NULL) {
108
- error = git_buf_set(&buf, scan, end - scan);
106
+ error = git_str_set(&buf, scan, end - scan);
109
107
  end++;
110
108
  } else {
111
- error = git_buf_sets(&buf, scan);
109
+ error = git_str_sets(&buf, scan);
112
110
  }
113
111
  if (error < 0)
114
112
  break;
@@ -122,7 +120,7 @@ static int diff_driver_add_patterns(
122
120
 
123
121
  if (error && pat != NULL)
124
122
  (void)git_array_pop(drv->fn_patterns); /* release last item */
125
- git_buf_dispose(&buf);
123
+ git_str_dispose(&buf);
126
124
 
127
125
  /* We want to ignore bad patterns, so return success regardless */
128
126
  return 0;
@@ -237,7 +235,7 @@ static int git_diff_driver_load(
237
235
  git_diff_driver *drv;
238
236
  size_t namelen;
239
237
  git_config *cfg = NULL;
240
- git_buf name = GIT_BUF_INIT;
238
+ git_str name = GIT_STR_INIT;
241
239
  git_config_entry *ce = NULL;
242
240
  bool found_driver = false;
243
241
 
@@ -260,13 +258,13 @@ static int git_diff_driver_load(
260
258
  goto done;
261
259
  }
262
260
 
263
- if ((error = git_buf_printf(&name, "diff.%s.binary", driver_name)) < 0)
261
+ if ((error = git_str_printf(&name, "diff.%s.binary", driver_name)) < 0)
264
262
  goto done;
265
263
 
266
264
  switch (git_config__get_bool_force(cfg, name.ptr, -1)) {
267
265
  case true:
268
266
  /* if diff.<driver>.binary is true, just return the binary driver */
269
- *out = &global_drivers[DIFF_DRIVER_BINARY];
267
+ *out = &diff_driver_binary;
270
268
  goto done;
271
269
  case false:
272
270
  /* if diff.<driver>.binary is false, force binary checks off */
@@ -281,8 +279,8 @@ static int git_diff_driver_load(
281
279
 
282
280
  /* TODO: warn if diff.<name>.command or diff.<name>.textconv are set */
283
281
 
284
- git_buf_truncate(&name, namelen + strlen("diff.."));
285
- if ((error = git_buf_PUTS(&name, "xfuncname")) < 0)
282
+ git_str_truncate(&name, namelen + strlen("diff.."));
283
+ if ((error = git_str_PUTS(&name, "xfuncname")) < 0)
286
284
  goto done;
287
285
 
288
286
  if ((error = git_config_get_multivar_foreach(
@@ -292,8 +290,8 @@ static int git_diff_driver_load(
292
290
  git_error_clear(); /* no diff.<driver>.xfuncname, so just continue */
293
291
  }
294
292
 
295
- git_buf_truncate(&name, namelen + strlen("diff.."));
296
- if ((error = git_buf_PUTS(&name, "funcname")) < 0)
293
+ git_str_truncate(&name, namelen + strlen("diff.."));
294
+ if ((error = git_str_PUTS(&name, "funcname")) < 0)
297
295
  goto done;
298
296
 
299
297
  if ((error = git_config_get_multivar_foreach(
@@ -309,8 +307,8 @@ static int git_diff_driver_load(
309
307
  found_driver = true;
310
308
  }
311
309
 
312
- git_buf_truncate(&name, namelen + strlen("diff.."));
313
- if ((error = git_buf_PUTS(&name, "wordregex")) < 0)
310
+ git_str_truncate(&name, namelen + strlen("diff.."));
311
+ if ((error = git_str_PUTS(&name, "wordregex")) < 0)
314
312
  goto done;
315
313
 
316
314
  if ((error = git_config__lookup_entry(&ce, cfg, name.ptr, false)) < 0)
@@ -340,7 +338,7 @@ static int git_diff_driver_load(
340
338
 
341
339
  done:
342
340
  git_config_entry_free(ce);
343
- git_buf_dispose(&name);
341
+ git_str_dispose(&name);
344
342
  git_config_free(cfg);
345
343
 
346
344
  if (!*out) {
@@ -374,9 +372,9 @@ int git_diff_driver_lookup(
374
372
  else if (GIT_ATTR_IS_UNSPECIFIED(values[0]))
375
373
  /* just use the auto value */;
376
374
  else if (GIT_ATTR_IS_FALSE(values[0]))
377
- *out = &global_drivers[DIFF_DRIVER_BINARY];
375
+ *out = &diff_driver_binary;
378
376
  else if (GIT_ATTR_IS_TRUE(values[0]))
379
- *out = &global_drivers[DIFF_DRIVER_TEXT];
377
+ *out = &diff_driver_text;
380
378
 
381
379
  /* otherwise look for driver information in config and build driver */
382
380
  else if ((error = git_diff_driver_load(out, repo, values[0])) < 0) {
@@ -387,7 +385,7 @@ int git_diff_driver_lookup(
387
385
  }
388
386
 
389
387
  if (!*out)
390
- *out = &global_drivers[DIFF_DRIVER_AUTO];
388
+ *out = &diff_driver_auto;
391
389
 
392
390
  return error;
393
391
  }
@@ -420,11 +418,11 @@ void git_diff_driver_update_options(
420
418
  int git_diff_driver_content_is_binary(
421
419
  git_diff_driver *driver, const char *content, size_t content_len)
422
420
  {
423
- git_buf search = GIT_BUF_INIT;
421
+ git_str search = GIT_STR_INIT;
424
422
 
425
423
  GIT_UNUSED(driver);
426
424
 
427
- git_buf_attach_notowned(&search, content,
425
+ git_str_attach_notowned(&search, content,
428
426
  min(content_len, GIT_FILTER_BYTES_TO_CHECK_NUL));
429
427
 
430
428
  /* TODO: provide encoding / binary detection callbacks that can
@@ -432,15 +430,15 @@ int git_diff_driver_content_is_binary(
432
430
  * let's just use the simple NUL-byte detection that core git uses.
433
431
  */
434
432
 
435
- /* previously was: if (git_buf_is_binary(&search)) */
436
- if (git_buf_contains_nul(&search))
433
+ /* previously was: if (git_str_is_binary(&search)) */
434
+ if (git_str_contains_nul(&search))
437
435
  return 1;
438
436
 
439
437
  return 0;
440
438
  }
441
439
 
442
440
  static int diff_context_line__simple(
443
- git_diff_driver *driver, git_buf *line)
441
+ git_diff_driver *driver, git_str *line)
444
442
  {
445
443
  char firstch = line->ptr[0];
446
444
  GIT_UNUSED(driver);
@@ -448,7 +446,7 @@ static int diff_context_line__simple(
448
446
  }
449
447
 
450
448
  static int diff_context_line__pattern_match(
451
- git_diff_driver *driver, git_buf *line)
449
+ git_diff_driver *driver, git_str *line)
452
450
  {
453
451
  size_t i, maxi = git_array_size(driver->fn_patterns);
454
452
  git_regmatch pmatch[2];
@@ -462,9 +460,9 @@ static int diff_context_line__pattern_match(
462
460
 
463
461
  /* use pmatch data to trim line data */
464
462
  i = (pmatch[1].start >= 0) ? 1 : 0;
465
- git_buf_consume(line, git_buf_cstr(line) + pmatch[i].start);
466
- git_buf_truncate(line, pmatch[i].end - pmatch[i].start);
467
- git_buf_rtrim(line);
463
+ git_str_consume(line, git_str_cstr(line) + pmatch[i].start);
464
+ git_str_truncate(line, pmatch[i].end - pmatch[i].start);
465
+ git_str_rtrim(line);
468
466
 
469
467
  return true;
470
468
  }
@@ -482,9 +480,9 @@ static long diff_context_find(
482
480
  {
483
481
  git_diff_find_context_payload *ctxt = payload;
484
482
 
485
- if (git_buf_set(&ctxt->line, line, (size_t)line_len) < 0)
483
+ if (git_str_set(&ctxt->line, line, (size_t)line_len) < 0)
486
484
  return -1;
487
- git_buf_rtrim(&ctxt->line);
485
+ git_str_rtrim(&ctxt->line);
488
486
 
489
487
  if (!ctxt->line.size)
490
488
  return -1;
@@ -511,14 +509,14 @@ void git_diff_find_context_init(
511
509
  payload_out->driver = driver;
512
510
  payload_out->match_line = (driver->type == DIFF_DRIVER_PATTERNLIST) ?
513
511
  diff_context_line__pattern_match : diff_context_line__simple;
514
- git_buf_init(&payload_out->line, 0);
512
+ git_str_init(&payload_out->line, 0);
515
513
  }
516
514
  }
517
515
 
518
516
  void git_diff_find_context_clear(git_diff_find_context_payload *payload)
519
517
  {
520
518
  if (payload) {
521
- git_buf_dispose(&payload->line);
519
+ git_str_dispose(&payload->line);
522
520
  payload->driver = NULL;
523
521
  }
524
522
  }
@@ -10,7 +10,7 @@
10
10
  #include "common.h"
11
11
 
12
12
  #include "attr_file.h"
13
- #include "buffer.h"
13
+ #include "str.h"
14
14
 
15
15
  typedef struct git_diff_driver_registry git_diff_driver_registry;
16
16
 
@@ -34,12 +34,12 @@ typedef long (*git_diff_find_context_fn)(
34
34
  const char *, long, char *, long, void *);
35
35
 
36
36
  typedef int (*git_diff_find_context_line)(
37
- git_diff_driver *, git_buf *);
37
+ git_diff_driver *, git_str *);
38
38
 
39
39
  typedef struct {
40
40
  git_diff_driver *driver;
41
41
  git_diff_find_context_line match_line;
42
- git_buf line;
42
+ git_str line;
43
43
  } git_diff_find_context_payload;
44
44
 
45
45
  void git_diff_find_context_init(
@@ -144,6 +144,7 @@ int git_diff_file_content__init_from_src(
144
144
 
145
145
  if (!src->blob && !src->buf) {
146
146
  fc->flags |= GIT_DIFF_FLAG__NO_DATA;
147
+ git_oid_clear(&fc->file->id, GIT_OID_SHA1);
147
148
  } else {
148
149
  fc->flags |= GIT_DIFF_FLAG__LOADED;
149
150
  fc->file->flags |= GIT_DIFF_FLAG_VALID_ID;
@@ -153,7 +154,7 @@ int git_diff_file_content__init_from_src(
153
154
  git_blob_dup((git_blob **)&fc->blob, (git_blob *) src->blob);
154
155
  fc->file->size = git_blob_rawsize(src->blob);
155
156
  git_oid_cpy(&fc->file->id, git_blob_id(src->blob));
156
- fc->file->id_abbrev = GIT_OID_HEXSZ;
157
+ fc->file->id_abbrev = GIT_OID_SHA1_HEXSIZE;
157
158
 
158
159
  fc->map.len = (size_t)fc->file->size;
159
160
  fc->map.data = (char *)git_blob_rawcontent(src->blob);
@@ -161,10 +162,10 @@ int git_diff_file_content__init_from_src(
161
162
  fc->flags |= GIT_DIFF_FLAG__FREE_BLOB;
162
163
  } else {
163
164
  int error;
164
- if ((error = git_odb_hash(&fc->file->id, src->buf, src->buflen, GIT_OBJECT_BLOB)) < 0)
165
+ if ((error = git_odb__hash(&fc->file->id, src->buf, src->buflen, GIT_OBJECT_BLOB, GIT_OID_SHA1)) < 0)
165
166
  return error;
166
167
  fc->file->size = src->buflen;
167
- fc->file->id_abbrev = GIT_OID_HEXSZ;
168
+ fc->file->id_abbrev = GIT_OID_SHA1_HEXSIZE;
168
169
 
169
170
  fc->map.len = src->buflen;
170
171
  fc->map.data = (char *)src->buf;
@@ -177,8 +178,8 @@ int git_diff_file_content__init_from_src(
177
178
  static int diff_file_content_commit_to_str(
178
179
  git_diff_file_content *fc, bool check_status)
179
180
  {
180
- char oid[GIT_OID_HEXSZ+1];
181
- git_buf content = GIT_BUF_INIT;
181
+ char oid[GIT_OID_SHA1_HEXSIZE+1];
182
+ git_str content = GIT_STR_INIT;
182
183
  const char *status = "";
183
184
 
184
185
  if (check_status) {
@@ -217,11 +218,11 @@ static int diff_file_content_commit_to_str(
217
218
  }
218
219
 
219
220
  git_oid_tostr(oid, sizeof(oid), &fc->file->id);
220
- if (git_buf_printf(&content, "Subproject commit %s%s\n", oid, status) < 0)
221
+ if (git_str_printf(&content, "Subproject commit %s%s\n", oid, status) < 0)
221
222
  return -1;
222
223
 
223
- fc->map.len = git_buf_len(&content);
224
- fc->map.data = git_buf_detach(&content);
224
+ fc->map.len = git_str_len(&content);
225
+ fc->map.data = git_str_detach(&content);
225
226
  fc->flags |= GIT_DIFF_FLAG__FREE_DATA;
226
227
 
227
228
  return 0;
@@ -270,24 +271,24 @@ static int diff_file_content_load_blob(
270
271
  }
271
272
 
272
273
  static int diff_file_content_load_workdir_symlink_fake(
273
- git_diff_file_content *fc, git_buf *path)
274
+ git_diff_file_content *fc, git_str *path)
274
275
  {
275
- git_buf target = GIT_BUF_INIT;
276
+ git_str target = GIT_STR_INIT;
276
277
  int error;
277
278
 
278
279
  if ((error = git_futils_readbuffer(&target, path->ptr)) < 0)
279
280
  return error;
280
281
 
281
- fc->map.len = git_buf_len(&target);
282
- fc->map.data = git_buf_detach(&target);
282
+ fc->map.len = git_str_len(&target);
283
+ fc->map.data = git_str_detach(&target);
283
284
  fc->flags |= GIT_DIFF_FLAG__FREE_DATA;
284
285
 
285
- git_buf_dispose(&target);
286
+ git_str_dispose(&target);
286
287
  return error;
287
288
  }
288
289
 
289
290
  static int diff_file_content_load_workdir_symlink(
290
- git_diff_file_content *fc, git_buf *path)
291
+ git_diff_file_content *fc, git_str *path)
291
292
  {
292
293
  ssize_t alloc_len, read_len;
293
294
  int symlink_supported, error;
@@ -309,7 +310,7 @@ static int diff_file_content_load_workdir_symlink(
309
310
 
310
311
  fc->flags |= GIT_DIFF_FLAG__FREE_DATA;
311
312
 
312
- read_len = p_readlink(git_buf_cstr(path), fc->map.data, alloc_len);
313
+ read_len = p_readlink(git_str_cstr(path), fc->map.data, alloc_len);
313
314
  if (read_len < 0) {
314
315
  git_error_set(GIT_ERROR_OS, "failed to read symlink '%s'", fc->file->path);
315
316
  return -1;
@@ -321,23 +322,39 @@ static int diff_file_content_load_workdir_symlink(
321
322
 
322
323
  static int diff_file_content_load_workdir_file(
323
324
  git_diff_file_content *fc,
324
- git_buf *path,
325
+ git_str *path,
325
326
  git_diff_options *diff_opts)
326
327
  {
327
328
  int error = 0;
328
329
  git_filter_list *fl = NULL;
329
- git_file fd = git_futils_open_ro(git_buf_cstr(path));
330
- git_buf raw = GIT_BUF_INIT;
330
+ git_file fd = git_futils_open_ro(git_str_cstr(path));
331
+ git_str raw = GIT_STR_INIT;
332
+ git_object_size_t new_file_size = 0;
331
333
 
332
334
  if (fd < 0)
333
335
  return fd;
334
336
 
335
- if (!fc->file->size)
336
- error = git_futils_filesize(&fc->file->size, fd);
337
+ error = git_futils_filesize(&new_file_size, fd);
337
338
 
338
- if (error < 0 || !fc->file->size)
339
+ if (error < 0)
339
340
  goto cleanup;
340
341
 
342
+ if (!(fc->file->flags & GIT_DIFF_FLAG_VALID_SIZE)) {
343
+ fc->file->size = new_file_size;
344
+ fc->file->flags |= GIT_DIFF_FLAG_VALID_SIZE;
345
+ } else if (fc->file->size != new_file_size) {
346
+ git_error_set(GIT_ERROR_FILESYSTEM, "file changed before we could read it");
347
+ error = -1;
348
+ goto cleanup;
349
+ }
350
+
351
+ /* if file is empty, don't attempt to mmap or readbuffer */
352
+ if (fc->file->size == 0) {
353
+ fc->map.len = 0;
354
+ fc->map.data = git_str__initstr;
355
+ goto cleanup;
356
+ }
357
+
341
358
  if ((diff_opts->flags & GIT_DIFF_SHOW_BINARY) == 0 &&
342
359
  diff_file_content_binary_by_size(fc))
343
360
  goto cleanup;
@@ -360,7 +377,7 @@ static int diff_file_content_load_workdir_file(
360
377
  }
361
378
 
362
379
  if (!(error = git_futils_readbuffer_fd(&raw, fd, (size_t)fc->file->size))) {
363
- git_buf out = GIT_BUF_INIT;
380
+ git_str out = GIT_STR_INIT;
364
381
 
365
382
  error = git_filter_list__convert_buf(&out, fl, &raw);
366
383
 
@@ -383,7 +400,7 @@ static int diff_file_content_load_workdir(
383
400
  git_diff_options *diff_opts)
384
401
  {
385
402
  int error = 0;
386
- git_buf path = GIT_BUF_INIT;
403
+ git_str path = GIT_STR_INIT;
387
404
 
388
405
  if (fc->file->mode == GIT_FILEMODE_COMMIT)
389
406
  return diff_file_content_commit_to_str(fc, true);
@@ -401,12 +418,13 @@ static int diff_file_content_load_workdir(
401
418
 
402
419
  /* once data is loaded, update OID if we didn't have it previously */
403
420
  if (!error && (fc->file->flags & GIT_DIFF_FLAG_VALID_ID) == 0) {
404
- error = git_odb_hash(
405
- &fc->file->id, fc->map.data, fc->map.len, GIT_OBJECT_BLOB);
421
+ error = git_odb__hash(
422
+ &fc->file->id, fc->map.data, fc->map.len,
423
+ GIT_OBJECT_BLOB, GIT_OID_SHA1);
406
424
  fc->file->flags |= GIT_DIFF_FLAG_VALID_ID;
407
425
  }
408
426
 
409
- git_buf_dispose(&path);
427
+ git_str_dispose(&path);
410
428
  return error;
411
429
  }
412
430
 
@@ -61,6 +61,9 @@ static git_diff_delta *diff_delta__alloc(
61
61
  }
62
62
  delta->status = status;
63
63
 
64
+ git_oid_clear(&delta->old_file.id, GIT_OID_SHA1);
65
+ git_oid_clear(&delta->new_file.id, GIT_OID_SHA1);
66
+
64
67
  return delta;
65
68
  }
66
69
 
@@ -117,6 +120,26 @@ static bool diff_pathspec_match(
117
120
  matched_pathspec, NULL);
118
121
  }
119
122
 
123
+ static void diff_delta__flag_known_size(git_diff_file *file)
124
+ {
125
+ /*
126
+ * If we don't know the ID, that can only come from the workdir
127
+ * iterator, which means we *do* know the file size. This is a
128
+ * leaky abstraction, but alas. Otherwise, we test against the
129
+ * empty blob id.
130
+ */
131
+ if (file->size ||
132
+ !(file->flags & GIT_DIFF_FLAG_VALID_ID) ||
133
+ git_oid_equal(&file->id, &git_oid__empty_blob_sha1))
134
+ file->flags |= GIT_DIFF_FLAG_VALID_SIZE;
135
+ }
136
+
137
+ static void diff_delta__flag_known_sizes(git_diff_delta *delta)
138
+ {
139
+ diff_delta__flag_known_size(&delta->old_file);
140
+ diff_delta__flag_known_size(&delta->new_file);
141
+ }
142
+
120
143
  static int diff_delta__from_one(
121
144
  git_diff_generated *diff,
122
145
  git_delta_t status,
@@ -168,13 +191,15 @@ static int diff_delta__from_one(
168
191
  delta->old_file.size = entry->file_size;
169
192
  delta->old_file.flags |= GIT_DIFF_FLAG_EXISTS;
170
193
  git_oid_cpy(&delta->old_file.id, &entry->id);
171
- delta->old_file.id_abbrev = GIT_OID_HEXSZ;
194
+ git_oid_clear(&delta->new_file.id, GIT_OID_SHA1);
195
+ delta->old_file.id_abbrev = GIT_OID_SHA1_HEXSIZE;
172
196
  } else /* ADDED, IGNORED, UNTRACKED */ {
173
197
  delta->new_file.mode = entry->mode;
174
198
  delta->new_file.size = entry->file_size;
175
199
  delta->new_file.flags |= GIT_DIFF_FLAG_EXISTS;
200
+ git_oid_clear(&delta->old_file.id, GIT_OID_SHA1);
176
201
  git_oid_cpy(&delta->new_file.id, &entry->id);
177
- delta->new_file.id_abbrev = GIT_OID_HEXSZ;
202
+ delta->new_file.id_abbrev = GIT_OID_SHA1_HEXSIZE;
178
203
  }
179
204
 
180
205
  delta->old_file.flags |= GIT_DIFF_FLAG_VALID_ID;
@@ -182,6 +207,8 @@ static int diff_delta__from_one(
182
207
  if (has_old || !git_oid_is_zero(&delta->new_file.id))
183
208
  delta->new_file.flags |= GIT_DIFF_FLAG_VALID_ID;
184
209
 
210
+ diff_delta__flag_known_sizes(delta);
211
+
185
212
  return diff_insert_delta(diff, delta, matched_pathspec);
186
213
  }
187
214
 
@@ -227,14 +254,14 @@ static int diff_delta__from_two(
227
254
  delta->old_file.size = old_entry->file_size;
228
255
  delta->old_file.mode = old_mode;
229
256
  git_oid_cpy(&delta->old_file.id, old_id);
230
- delta->old_file.id_abbrev = GIT_OID_HEXSZ;
257
+ delta->old_file.id_abbrev = GIT_OID_SHA1_HEXSIZE;
231
258
  delta->old_file.flags |= GIT_DIFF_FLAG_VALID_ID |
232
259
  GIT_DIFF_FLAG_EXISTS;
233
260
  }
234
261
 
235
262
  if (!git_index_entry_is_conflict(new_entry)) {
236
263
  git_oid_cpy(&delta->new_file.id, new_id);
237
- delta->new_file.id_abbrev = GIT_OID_HEXSZ;
264
+ delta->new_file.id_abbrev = GIT_OID_SHA1_HEXSIZE;
238
265
  delta->new_file.size = new_entry->file_size;
239
266
  delta->new_file.mode = new_mode;
240
267
  delta->old_file.flags |= GIT_DIFF_FLAG_EXISTS;
@@ -244,6 +271,8 @@ static int diff_delta__from_two(
244
271
  delta->new_file.flags |= GIT_DIFF_FLAG_VALID_ID;
245
272
  }
246
273
 
274
+ diff_delta__flag_known_sizes(delta);
275
+
247
276
  return diff_insert_delta(diff, delta, matched_pathspec);
248
277
  }
249
278
 
@@ -574,6 +603,7 @@ int git_diff__oid_for_file(
574
603
  entry.mode = mode;
575
604
  entry.file_size = (uint32_t)size;
576
605
  entry.path = (char *)path;
606
+ git_oid_clear(&entry.id, GIT_OID_SHA1);
577
607
 
578
608
  return git_diff__oid_for_entry(out, diff, &entry, mode, NULL);
579
609
  }
@@ -586,7 +616,7 @@ int git_diff__oid_for_entry(
586
616
  const git_oid *update_match)
587
617
  {
588
618
  git_diff_generated *diff;
589
- git_buf full_path = GIT_BUF_INIT;
619
+ git_str full_path = GIT_STR_INIT;
590
620
  git_index_entry entry = *src;
591
621
  git_filter_list *fl = NULL;
592
622
  int error = 0;
@@ -594,7 +624,7 @@ int git_diff__oid_for_entry(
594
624
  GIT_ASSERT(d->type == GIT_DIFF_TYPE_GENERATED);
595
625
  diff = (git_diff_generated *)d;
596
626
 
597
- memset(out, 0, sizeof(*out));
627
+ git_oid_clear(out, GIT_OID_SHA1);
598
628
 
599
629
  if (git_repository_workdir_path(&full_path, diff->base.repo, entry.path) < 0)
600
630
  return -1;
@@ -605,8 +635,8 @@ int git_diff__oid_for_entry(
605
635
  diff->base.perf.stat_calls++;
606
636
 
607
637
  if (p_stat(full_path.ptr, &st) < 0) {
608
- error = git_path_set_error(errno, entry.path, "stat");
609
- git_buf_dispose(&full_path);
638
+ error = git_fs_path_set_error(errno, entry.path, "stat");
639
+ git_str_dispose(&full_path);
610
640
  return error;
611
641
  }
612
642
 
@@ -630,7 +660,7 @@ int git_diff__oid_for_entry(
630
660
  git_error_clear();
631
661
  }
632
662
  } else if (S_ISLNK(mode)) {
633
- error = git_odb__hashlink(out, full_path.ptr);
663
+ error = git_odb__hashlink(out, full_path.ptr, GIT_OID_SHA1);
634
664
  diff->base.perf.oid_calculations++;
635
665
  } else if (!git__is_sizet(entry.file_size)) {
636
666
  git_error_set(GIT_ERROR_NOMEMORY, "file size overflow (for 32-bits) on '%s'",
@@ -645,7 +675,8 @@ int git_diff__oid_for_entry(
645
675
  error = fd;
646
676
  else {
647
677
  error = git_odb__hashfd_filtered(
648
- out, fd, (size_t)entry.file_size, GIT_OBJECT_BLOB, fl);
678
+ out, fd, (size_t)entry.file_size,
679
+ GIT_OBJECT_BLOB, GIT_OID_SHA1, fl);
649
680
  p_close(fd);
650
681
  diff->base.perf.oid_calculations++;
651
682
  }
@@ -669,7 +700,7 @@ int git_diff__oid_for_entry(
669
700
  }
670
701
  }
671
702
 
672
- git_buf_dispose(&full_path);
703
+ git_str_dispose(&full_path);
673
704
  return error;
674
705
  }
675
706
 
@@ -754,7 +785,7 @@ static int maybe_modified(
754
785
  git_diff_generated *diff,
755
786
  diff_in_progress *info)
756
787
  {
757
- git_oid noid;
788
+ git_oid noid = GIT_OID_SHA1_ZERO;
758
789
  git_delta_t status = GIT_DELTA_MODIFIED;
759
790
  const git_index_entry *oitem = info->oitem;
760
791
  const git_index_entry *nitem = info->nitem;
@@ -768,8 +799,6 @@ static int maybe_modified(
768
799
  if (!diff_pathspec_match(&matched_pathspec, diff, oitem))
769
800
  return 0;
770
801
 
771
- memset(&noid, 0, sizeof(noid));
772
-
773
802
  /* on platforms with no symlinks, preserve mode of existing symlinks */
774
803
  if (S_ISLNK(omode) && S_ISREG(nmode) && new_is_workdir &&
775
804
  !(diff->diffcaps & GIT_DIFFCAPS_HAS_SYMLINKS))
@@ -1023,10 +1052,10 @@ static int handle_unmatched_new_item(
1023
1052
 
1024
1053
  /* do not advance into directories that contain a .git file */
1025
1054
  if (recurse_into_dir && !contains_oitem) {
1026
- git_buf *full = NULL;
1055
+ git_str *full = NULL;
1027
1056
  if (git_iterator_current_workdir_path(&full, info->new_iter) < 0)
1028
1057
  return -1;
1029
- if (full && git_path_contains(full, DOT_GIT)) {
1058
+ if (full && git_fs_path_contains(full, DOT_GIT)) {
1030
1059
  /* TODO: warning if not a valid git repository */
1031
1060
  recurse_into_dir = false;
1032
1061
  }
@@ -1671,11 +1700,11 @@ int git_diff__commit(
1671
1700
  *out = NULL;
1672
1701
 
1673
1702
  if ((parents = git_commit_parentcount(commit)) > 1) {
1674
- char commit_oidstr[GIT_OID_HEXSZ + 1];
1703
+ char commit_oidstr[GIT_OID_SHA1_HEXSIZE + 1];
1675
1704
 
1676
1705
  error = -1;
1677
1706
  git_error_set(GIT_ERROR_INVALID, "commit %s is a merge commit",
1678
- git_oid_tostr(commit_oidstr, GIT_OID_HEXSZ + 1, git_commit_id(commit)));
1707
+ git_oid_tostr(commit_oidstr, GIT_OID_SHA1_HEXSIZE + 1, git_commit_id(commit)));
1679
1708
  goto on_error;
1680
1709
  }
1681
1710
 
@@ -18,7 +18,7 @@ enum {
18
18
  GIT_DIFFCAPS_IGNORE_STAT = (1 << 1), /* use stat? */
19
19
  GIT_DIFFCAPS_TRUST_MODE_BITS = (1 << 2), /* use st_mode? */
20
20
  GIT_DIFFCAPS_TRUST_CTIME = (1 << 3), /* use st_ctime? */
21
- GIT_DIFFCAPS_USE_DEV = (1 << 4), /* use st_dev? */
21
+ GIT_DIFFCAPS_USE_DEV = (1 << 4) /* use st_dev? */
22
22
  };
23
23
 
24
24
  #define DIFF_FLAGS_KNOWN_BINARY (GIT_DIFF_FLAG_BINARY|GIT_DIFF_FLAG_NOT_BINARY)
@@ -36,7 +36,7 @@ enum {
36
36
  GIT_DIFF_FLAG__TO_SPLIT = (1 << 17), /* split entry during rename det. */
37
37
  GIT_DIFF_FLAG__IS_RENAME_TARGET = (1 << 18),
38
38
  GIT_DIFF_FLAG__IS_RENAME_SOURCE = (1 << 19),
39
- GIT_DIFF_FLAG__HAS_SELF_SIMILARITY = (1 << 20),
39
+ GIT_DIFF_FLAG__HAS_SELF_SIMILARITY = (1 << 20)
40
40
  };
41
41
 
42
42
  #define GIT_DIFF_FLAG__CLEAR_INTERNAL(F) (F) = ((F) & 0x00FFFF)
@@ -119,8 +119,10 @@ GIT_INLINE(int) git_diff_file__resolve_zero_size(
119
119
 
120
120
  git_odb_free(odb);
121
121
 
122
- if (!error)
122
+ if (!error) {
123
123
  file->size = (git_object_size_t)len;
124
+ file->flags |= GIT_DIFF_FLAG_VALID_SIZE;
125
+ }
124
126
 
125
127
  return error;
126
128
  }