rugged 1.3.1 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (656) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/ext/rugged/extconf.rb +6 -3
  4. data/ext/rugged/rugged.c +16 -0
  5. data/ext/rugged/rugged.h +4 -0
  6. data/ext/rugged/rugged_allocator.c +0 -54
  7. data/ext/rugged/rugged_blame.c +2 -0
  8. data/ext/rugged/rugged_blob.c +3 -0
  9. data/ext/rugged/rugged_commit.c +1 -0
  10. data/ext/rugged/rugged_config.c +9 -2
  11. data/ext/rugged/rugged_diff.c +1 -0
  12. data/ext/rugged/rugged_index.c +2 -0
  13. data/ext/rugged/rugged_patch.c +1 -0
  14. data/ext/rugged/rugged_rebase.c +1 -0
  15. data/ext/rugged/rugged_reference.c +1 -0
  16. data/ext/rugged/rugged_remote.c +28 -10
  17. data/ext/rugged/rugged_repo.c +7 -9
  18. data/ext/rugged/rugged_revwalk.c +5 -1
  19. data/ext/rugged/rugged_settings.c +5 -0
  20. data/ext/rugged/rugged_submodule.c +1 -0
  21. data/ext/rugged/rugged_tag.c +1 -0
  22. data/ext/rugged/rugged_tree.c +4 -0
  23. data/lib/rugged/index.rb +1 -1
  24. data/lib/rugged/tree.rb +5 -1
  25. data/lib/rugged/version.rb +1 -1
  26. data/vendor/libgit2/AUTHORS +1 -0
  27. data/vendor/libgit2/CMakeLists.txt +141 -289
  28. data/vendor/libgit2/COPYING +301 -20
  29. data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
  30. data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
  31. data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
  32. data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
  33. data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
  34. data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
  35. data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
  36. data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
  37. data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
  38. data/vendor/libgit2/cmake/FindHTTP_Parser.cmake +17 -17
  39. data/vendor/libgit2/cmake/FindIntlIconv.cmake +51 -0
  40. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  41. data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
  42. data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
  43. data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
  44. data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
  45. data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
  46. data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
  47. data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
  48. data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
  49. data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
  50. data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
  51. data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
  52. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
  53. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +34 -0
  54. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +129 -101
  55. data/vendor/libgit2/cmake/SelectHashes.cmake +113 -54
  56. data/vendor/libgit2/cmake/SelectRegex.cmake +56 -0
  57. data/vendor/libgit2/cmake/SelectSSH.cmake +46 -0
  58. data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
  59. data/vendor/libgit2/cmake/SelectZlib.cmake +38 -0
  60. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
  61. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  62. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  63. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  64. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  65. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  66. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  67. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
  68. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  69. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  70. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  71. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +7 -5
  72. data/vendor/libgit2/deps/ntlmclient/ntlm.c +25 -25
  73. data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
  74. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
  75. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  76. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  77. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  78. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  79. data/vendor/libgit2/deps/pcre/CMakeLists.txt +89 -88
  80. data/vendor/libgit2/deps/pcre/LICENCE +5 -5
  81. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  82. data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
  83. data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
  84. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
  85. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
  86. data/vendor/libgit2/deps/xdiff/git-xdiff.h +56 -0
  87. data/vendor/libgit2/{src → deps}/xdiff/xdiff.h +15 -15
  88. data/vendor/libgit2/{src → deps}/xdiff/xdiffi.c +152 -125
  89. data/vendor/libgit2/{src → deps}/xdiff/xdiffi.h +2 -4
  90. data/vendor/libgit2/{src → deps}/xdiff/xemit.c +26 -10
  91. data/vendor/libgit2/{src → deps}/xdiff/xhistogram.c +92 -94
  92. data/vendor/libgit2/{src → deps}/xdiff/xinclude.h +1 -12
  93. data/vendor/libgit2/{src → deps}/xdiff/xmacros.h +18 -1
  94. data/vendor/libgit2/{src → deps}/xdiff/xmerge.c +126 -137
  95. data/vendor/libgit2/{src → deps}/xdiff/xpatience.c +26 -46
  96. data/vendor/libgit2/{src → deps}/xdiff/xprepare.c +24 -46
  97. data/vendor/libgit2/{src → deps}/xdiff/xutils.c +36 -8
  98. data/vendor/libgit2/{src → deps}/xdiff/xutils.h +2 -1
  99. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  100. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  101. data/vendor/libgit2/deps/zlib/adler32.c +7 -22
  102. data/vendor/libgit2/deps/zlib/crc32.c +931 -317
  103. data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
  104. data/vendor/libgit2/deps/zlib/deflate.c +428 -453
  105. data/vendor/libgit2/deps/zlib/deflate.h +51 -23
  106. data/vendor/libgit2/deps/zlib/gzguts.h +15 -19
  107. data/vendor/libgit2/deps/zlib/infback.c +19 -31
  108. data/vendor/libgit2/deps/zlib/inffast.c +15 -18
  109. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  110. data/vendor/libgit2/deps/zlib/inflate.c +75 -110
  111. data/vendor/libgit2/deps/zlib/inflate.h +3 -2
  112. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  113. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  114. data/vendor/libgit2/deps/zlib/trees.c +294 -380
  115. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  116. data/vendor/libgit2/deps/zlib/zlib.h +310 -284
  117. data/vendor/libgit2/deps/zlib/zutil.c +20 -46
  118. data/vendor/libgit2/deps/zlib/zutil.h +24 -41
  119. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  120. data/vendor/libgit2/include/git2/apply.h +43 -8
  121. data/vendor/libgit2/include/git2/attr.h +28 -6
  122. data/vendor/libgit2/include/git2/blame.h +137 -29
  123. data/vendor/libgit2/include/git2/blob.h +85 -29
  124. data/vendor/libgit2/include/git2/branch.h +25 -16
  125. data/vendor/libgit2/include/git2/buffer.h +24 -82
  126. data/vendor/libgit2/include/git2/cert.h +4 -3
  127. data/vendor/libgit2/include/git2/checkout.h +88 -34
  128. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  129. data/vendor/libgit2/include/git2/clone.h +28 -12
  130. data/vendor/libgit2/include/git2/commit.h +134 -3
  131. data/vendor/libgit2/include/git2/common.h +172 -59
  132. data/vendor/libgit2/include/git2/config.h +118 -32
  133. data/vendor/libgit2/include/git2/credential.h +32 -3
  134. data/vendor/libgit2/include/git2/credential_helpers.h +2 -0
  135. data/vendor/libgit2/include/git2/deprecated.h +141 -3
  136. data/vendor/libgit2/include/git2/describe.h +20 -3
  137. data/vendor/libgit2/include/git2/diff.h +95 -19
  138. data/vendor/libgit2/include/git2/email.h +10 -30
  139. data/vendor/libgit2/include/git2/errors.h +51 -61
  140. data/vendor/libgit2/include/git2/experimental.h +20 -0
  141. data/vendor/libgit2/include/git2/filter.h +21 -9
  142. data/vendor/libgit2/include/git2/global.h +8 -1
  143. data/vendor/libgit2/include/git2/graph.h +4 -2
  144. data/vendor/libgit2/include/git2/ignore.h +11 -1
  145. data/vendor/libgit2/include/git2/index.h +111 -11
  146. data/vendor/libgit2/include/git2/indexer.h +67 -2
  147. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  148. data/vendor/libgit2/include/git2/merge.h +70 -5
  149. data/vendor/libgit2/include/git2/message.h +4 -2
  150. data/vendor/libgit2/include/git2/net.h +3 -1
  151. data/vendor/libgit2/include/git2/notes.h +9 -6
  152. data/vendor/libgit2/include/git2/object.h +57 -7
  153. data/vendor/libgit2/include/git2/odb.h +156 -33
  154. data/vendor/libgit2/include/git2/odb_backend.h +132 -16
  155. data/vendor/libgit2/include/git2/oid.h +116 -17
  156. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  157. data/vendor/libgit2/include/git2/pack.h +37 -9
  158. data/vendor/libgit2/include/git2/patch.h +10 -3
  159. data/vendor/libgit2/include/git2/pathspec.h +10 -1
  160. data/vendor/libgit2/include/git2/proxy.h +11 -1
  161. data/vendor/libgit2/include/git2/rebase.h +18 -7
  162. data/vendor/libgit2/include/git2/refdb.h +5 -2
  163. data/vendor/libgit2/include/git2/reflog.h +4 -3
  164. data/vendor/libgit2/include/git2/refs.h +11 -8
  165. data/vendor/libgit2/include/git2/refspec.h +14 -4
  166. data/vendor/libgit2/include/git2/remote.h +295 -54
  167. data/vendor/libgit2/include/git2/repository.h +95 -25
  168. data/vendor/libgit2/include/git2/reset.h +18 -5
  169. data/vendor/libgit2/include/git2/revert.h +9 -4
  170. data/vendor/libgit2/include/git2/revparse.h +4 -4
  171. data/vendor/libgit2/include/git2/revwalk.h +7 -3
  172. data/vendor/libgit2/include/git2/signature.h +47 -2
  173. data/vendor/libgit2/include/git2/stash.h +78 -10
  174. data/vendor/libgit2/include/git2/status.h +24 -11
  175. data/vendor/libgit2/include/git2/stdint.h +87 -85
  176. data/vendor/libgit2/include/git2/strarray.h +2 -16
  177. data/vendor/libgit2/include/git2/submodule.h +27 -11
  178. data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
  179. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  180. data/vendor/libgit2/include/git2/sys/commit_graph.h +110 -59
  181. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  182. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  183. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  184. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  185. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  186. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  187. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  188. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  189. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  190. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  191. data/vendor/libgit2/include/git2/sys/midx.h +47 -4
  192. data/vendor/libgit2/include/git2/sys/odb_backend.h +10 -9
  193. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  194. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  195. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  196. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  197. data/vendor/libgit2/include/git2/sys/remote.h +53 -0
  198. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  199. data/vendor/libgit2/include/git2/sys/stream.h +26 -3
  200. data/vendor/libgit2/include/git2/sys/transport.h +87 -41
  201. data/vendor/libgit2/include/git2/tag.h +4 -1
  202. data/vendor/libgit2/include/git2/trace.h +9 -3
  203. data/vendor/libgit2/include/git2/transaction.h +3 -2
  204. data/vendor/libgit2/include/git2/transport.h +11 -3
  205. data/vendor/libgit2/include/git2/tree.h +20 -8
  206. data/vendor/libgit2/include/git2/types.h +26 -10
  207. data/vendor/libgit2/include/git2/version.h +63 -6
  208. data/vendor/libgit2/include/git2/worktree.h +30 -8
  209. data/vendor/libgit2/include/git2.h +1 -0
  210. data/vendor/libgit2/src/CMakeLists.txt +203 -420
  211. data/vendor/libgit2/src/README.md +12 -0
  212. data/vendor/libgit2/src/cli/CMakeLists.txt +56 -0
  213. data/vendor/libgit2/src/cli/README.md +26 -0
  214. data/vendor/libgit2/src/{branch.h → cli/cmd.c} +10 -8
  215. data/vendor/libgit2/src/cli/cmd.h +37 -0
  216. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  217. data/vendor/libgit2/src/cli/cmd_cat_file.c +202 -0
  218. data/vendor/libgit2/src/cli/cmd_clone.c +190 -0
  219. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  220. data/vendor/libgit2/src/cli/cmd_hash_object.c +152 -0
  221. data/vendor/libgit2/src/cli/cmd_help.c +85 -0
  222. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  223. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  224. data/vendor/libgit2/src/cli/common.c +168 -0
  225. data/vendor/libgit2/src/cli/common.h +63 -0
  226. data/vendor/libgit2/src/cli/error.h +51 -0
  227. data/vendor/libgit2/src/cli/main.c +134 -0
  228. data/vendor/libgit2/src/cli/opt.c +695 -0
  229. data/vendor/libgit2/src/cli/opt.h +367 -0
  230. data/vendor/libgit2/src/cli/opt_usage.c +263 -0
  231. data/vendor/libgit2/src/cli/opt_usage.h +40 -0
  232. data/vendor/libgit2/src/cli/progress.c +395 -0
  233. data/vendor/libgit2/src/cli/progress.h +129 -0
  234. data/vendor/libgit2/src/cli/sighandler.h +20 -0
  235. data/vendor/libgit2/src/cli/unix/sighandler.c +37 -0
  236. data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
  237. data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
  238. data/vendor/libgit2/src/libgit2/CMakeLists.txt +140 -0
  239. data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +2 -2
  240. data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
  241. data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +32 -34
  242. data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
  243. data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +48 -31
  244. data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +25 -20
  245. data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +6 -4
  246. data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +87 -46
  247. data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +5 -9
  248. data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +152 -57
  249. data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +1 -0
  250. data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -2
  251. data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
  252. data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
  253. data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
  254. data/vendor/libgit2/src/libgit2/branch.h +31 -0
  255. data/vendor/libgit2/src/libgit2/buf.c +126 -0
  256. data/vendor/libgit2/src/libgit2/buf.h +50 -0
  257. data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +22 -17
  258. data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +7 -9
  259. data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +107 -91
  260. data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -2
  261. data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +14 -15
  262. data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +254 -203
  263. data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +4 -1
  264. data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +296 -77
  265. data/vendor/libgit2/src/libgit2/commit.h +87 -0
  266. data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +246 -135
  267. data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +33 -8
  268. data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +17 -7
  269. data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +1 -0
  270. data/vendor/libgit2/src/libgit2/common.h +55 -0
  271. data/vendor/libgit2/src/{config.c → libgit2/config.c} +490 -360
  272. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  273. data/vendor/libgit2/src/{config.h → libgit2/config.h} +24 -6
  274. data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +8 -10
  275. data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +4 -5
  276. data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +212 -183
  277. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  278. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  279. data/vendor/libgit2/src/libgit2/config_mem.c +374 -0
  280. data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +37 -32
  281. data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +24 -31
  282. data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
  283. data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +62 -51
  284. data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +44 -14
  285. data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +8 -10
  286. data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +46 -55
  287. data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +5 -5
  288. data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +45 -27
  289. data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +70 -20
  290. data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
  291. data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +22 -6
  292. data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +192 -105
  293. data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
  294. data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
  295. data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +49 -16
  296. data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
  297. data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +1 -1
  298. data/vendor/libgit2/src/{email.c → libgit2/email.c} +58 -40
  299. data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
  300. data/vendor/libgit2/src/{transports/ssh.h → libgit2/experimental.h.in} +3 -4
  301. data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +105 -30
  302. data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -3
  303. data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +30 -28
  304. data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +132 -58
  305. data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
  306. data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +3 -3
  307. data/vendor/libgit2/src/libgit2/grafts.c +270 -0
  308. data/vendor/libgit2/src/libgit2/grafts.h +35 -0
  309. data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +1 -1
  310. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  311. data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
  312. data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +44 -39
  313. data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
  314. data/vendor/libgit2/src/{index.c → libgit2/index.c} +460 -276
  315. data/vendor/libgit2/src/{index.h → libgit2/index.h} +21 -5
  316. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  317. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  318. data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +208 -124
  319. data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +102 -71
  320. data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +8 -5
  321. data/vendor/libgit2/src/libgit2/libgit2.c +268 -0
  322. data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +39 -37
  323. data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +83 -73
  324. data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
  325. data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +4 -4
  326. data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -5
  327. data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
  328. data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +174 -112
  329. data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +17 -6
  330. data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +53 -57
  331. data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +9 -2
  332. data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +29 -37
  333. data/vendor/libgit2/src/{object.c → libgit2/object.c} +166 -35
  334. data/vendor/libgit2/src/{object.h → libgit2/object.h} +17 -2
  335. data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +261 -88
  336. data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
  337. data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
  338. data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +67 -22
  339. data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +162 -89
  340. data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +171 -92
  341. data/vendor/libgit2/src/libgit2/oid.h +284 -0
  342. data/vendor/libgit2/src/libgit2/oidarray.c +89 -0
  343. data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +5 -1
  344. data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +126 -66
  345. data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +28 -12
  346. data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +146 -111
  347. data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +45 -25
  348. data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +8 -4
  349. data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +1 -1
  350. data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
  351. data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +8 -1
  352. data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +51 -16
  353. data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
  354. data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +42 -34
  355. data/vendor/libgit2/src/libgit2/path.c +375 -0
  356. data/vendor/libgit2/src/libgit2/path.h +68 -0
  357. data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +7 -7
  358. data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
  359. data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
  360. data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
  361. data/vendor/libgit2/src/{push.c → libgit2/push.c} +116 -60
  362. data/vendor/libgit2/src/{push.h → libgit2/push.h} +5 -16
  363. data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
  364. data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
  365. data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +147 -147
  366. data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +639 -254
  367. data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +8 -7
  368. data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +3 -2
  369. data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +67 -39
  370. data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +8 -3
  371. data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +60 -38
  372. data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +13 -2
  373. data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +821 -454
  374. data/vendor/libgit2/src/libgit2/remote.h +101 -0
  375. data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +1377 -594
  376. data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +43 -12
  377. data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
  378. data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +18 -22
  379. data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +76 -44
  380. data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +48 -19
  381. data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +3 -3
  382. data/vendor/libgit2/src/{libgit2.c → libgit2/settings.c} +162 -95
  383. data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +6 -2
  384. data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +144 -21
  385. data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -2
  386. data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +243 -68
  387. data/vendor/libgit2/src/{status.c → libgit2/status.c} +5 -2
  388. data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
  389. data/vendor/libgit2/src/libgit2/strarray.h +25 -0
  390. data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +62 -67
  391. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +41 -24
  392. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +2 -0
  393. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +11 -3
  394. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +6 -3
  395. data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
  396. data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
  397. data/vendor/libgit2/src/libgit2/streams/socket.c +428 -0
  398. data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +3 -1
  399. data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +79 -19
  400. data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +5 -0
  401. data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +279 -220
  402. data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +10 -11
  403. data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
  404. data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +55 -18
  405. data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +74 -43
  406. data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
  407. data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
  408. data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
  409. data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +7 -7
  410. data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +27 -21
  411. data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +4 -1
  412. data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +14 -11
  413. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
  414. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +3 -5
  415. data/vendor/libgit2/src/{transports/auth_negotiate.c → libgit2/transports/auth_gssapi.c} +44 -45
  416. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +1 -1
  417. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +1 -2
  418. data/vendor/libgit2/src/{transports/auth_ntlm.c → libgit2/transports/auth_ntlmclient.c} +22 -22
  419. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
  420. data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +1 -1
  421. data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +16 -19
  422. data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +49 -24
  423. data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -11
  424. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +188 -134
  425. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
  426. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  427. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  428. data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +159 -127
  429. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +142 -165
  430. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +56 -36
  431. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +307 -74
  432. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +297 -97
  433. data/vendor/libgit2/src/libgit2/transports/ssh.c +85 -0
  434. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  435. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  436. data/vendor/libgit2/src/{transports/ssh.c → libgit2/transports/ssh_libssh2.c} +414 -268
  437. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  438. data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +101 -75
  439. data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +30 -20
  440. data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +7 -5
  441. data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +128 -110
  442. data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +7 -6
  443. data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +160 -121
  444. data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
  445. data/vendor/libgit2/src/util/CMakeLists.txt +77 -0
  446. data/vendor/libgit2/src/{alloc.c → util/alloc.c} +69 -7
  447. data/vendor/libgit2/src/util/alloc.h +65 -0
  448. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  449. data/vendor/libgit2/src/util/allocators/debugalloc.h +17 -0
  450. data/vendor/libgit2/src/util/allocators/failalloc.c +32 -0
  451. data/vendor/libgit2/src/util/allocators/failalloc.h +17 -0
  452. data/vendor/libgit2/src/util/allocators/stdalloc.c +37 -0
  453. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
  454. data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +50 -0
  455. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
  456. data/vendor/libgit2/src/{array.h → util/array.h} +25 -19
  457. data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
  458. data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +5 -1
  459. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  460. data/vendor/libgit2/src/{date.c → util/date.c} +35 -33
  461. data/vendor/libgit2/src/util/date.h +45 -0
  462. data/vendor/libgit2/src/util/errors.c +401 -0
  463. data/vendor/libgit2/src/{errors.h → util/errors.h} +22 -19
  464. data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +35 -30
  465. data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +21 -8
  466. data/vendor/libgit2/src/{path.c → util/fs_path.c} +591 -615
  467. data/vendor/libgit2/src/{path.h → util/fs_path.h} +257 -181
  468. data/vendor/libgit2/src/{futils.c → util/futils.c} +144 -95
  469. data/vendor/libgit2/src/{futils.h → util/futils.h} +40 -18
  470. data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +33 -2
  471. data/vendor/libgit2/src/{common.h → util/git2_util.h} +26 -59
  472. data/vendor/libgit2/src/util/hash/builtin.c +53 -0
  473. data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
  474. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
  475. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
  476. data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
  477. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
  478. data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
  479. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
  480. data/vendor/libgit2/src/util/hash/openssl.c +347 -0
  481. data/vendor/libgit2/src/util/hash/openssl.h +61 -0
  482. data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
  483. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
  484. data/vendor/libgit2/src/util/hash/sha.h +73 -0
  485. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
  486. data/vendor/libgit2/src/util/hash/win32.c +549 -0
  487. data/vendor/libgit2/src/util/hash/win32.h +60 -0
  488. data/vendor/libgit2/src/util/hash.c +158 -0
  489. data/vendor/libgit2/src/util/hash.h +61 -0
  490. data/vendor/libgit2/src/util/hashmap.h +424 -0
  491. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  492. data/vendor/libgit2/src/{integer.h → util/integer.h} +3 -1
  493. data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
  494. data/vendor/libgit2/src/util/net.c +1160 -0
  495. data/vendor/libgit2/src/{net.h → util/net.h} +45 -4
  496. data/vendor/libgit2/src/{pool.c → util/pool.c} +1 -1
  497. data/vendor/libgit2/src/{pool.h → util/pool.h} +6 -1
  498. data/vendor/libgit2/src/{posix.c → util/posix.c} +57 -3
  499. data/vendor/libgit2/src/{posix.h → util/posix.h} +26 -1
  500. data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +3 -3
  501. data/vendor/libgit2/src/util/process.h +222 -0
  502. data/vendor/libgit2/src/util/rand.c +230 -0
  503. data/vendor/libgit2/src/util/rand.h +37 -0
  504. data/vendor/libgit2/src/{regexp.c → util/regexp.c} +5 -5
  505. data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
  506. data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
  507. data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
  508. data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +15 -14
  509. data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +5 -5
  510. data/vendor/libgit2/src/util/staticstr.h +66 -0
  511. data/vendor/libgit2/src/{buffer.c → util/str.c} +159 -153
  512. data/vendor/libgit2/src/util/str.h +357 -0
  513. data/vendor/libgit2/src/util/strlist.c +108 -0
  514. data/vendor/libgit2/src/util/strlist.h +36 -0
  515. data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
  516. data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
  517. data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
  518. data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
  519. data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -6
  520. data/vendor/libgit2/src/util/unix/process.c +629 -0
  521. data/vendor/libgit2/src/{unix → util/unix}/realpath.c +24 -8
  522. data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
  523. data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
  524. data/vendor/libgit2/src/{util.c → util/util.c} +24 -19
  525. data/vendor/libgit2/src/{util.h → util/util.h} +30 -81
  526. data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
  527. data/vendor/libgit2/src/{vector.c → util/vector.c} +3 -3
  528. data/vendor/libgit2/src/{vector.h → util/vector.h} +4 -4
  529. data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
  530. data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
  531. data/vendor/libgit2/src/{win32 → util/win32}/error.c +1 -1
  532. data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
  533. data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
  534. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +148 -17
  535. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
  536. data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
  537. data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +42 -35
  538. data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
  539. data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
  540. data/vendor/libgit2/src/util/win32/process.c +506 -0
  541. data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
  542. data/vendor/libgit2/src/util/win32/utf-conv.c +144 -0
  543. data/vendor/libgit2/src/util/win32/utf-conv.h +127 -0
  544. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
  545. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
  546. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
  547. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
  548. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +1 -1
  549. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
  550. data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
  551. data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
  552. metadata +431 -362
  553. data/vendor/libgit2/cmake/FindIconv.cmake +0 -45
  554. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  555. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  556. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  557. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  558. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  559. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  560. data/vendor/libgit2/src/alloc.h +0 -40
  561. data/vendor/libgit2/src/allocators/failalloc.c +0 -92
  562. data/vendor/libgit2/src/allocators/failalloc.h +0 -23
  563. data/vendor/libgit2/src/allocators/stdalloc.c +0 -150
  564. data/vendor/libgit2/src/allocators/win32_leakcheck.c +0 -118
  565. data/vendor/libgit2/src/buffer.h +0 -374
  566. data/vendor/libgit2/src/commit.h +0 -46
  567. data/vendor/libgit2/src/config_entries.c +0 -237
  568. data/vendor/libgit2/src/config_entries.h +0 -24
  569. data/vendor/libgit2/src/config_mem.c +0 -220
  570. data/vendor/libgit2/src/errors.c +0 -238
  571. data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
  572. data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
  573. data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
  574. data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
  575. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  576. data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
  577. data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
  578. data/vendor/libgit2/src/hash/sha1.h +0 -38
  579. data/vendor/libgit2/src/hash.c +0 -110
  580. data/vendor/libgit2/src/hash.h +0 -46
  581. data/vendor/libgit2/src/idxmap.c +0 -157
  582. data/vendor/libgit2/src/idxmap.h +0 -177
  583. data/vendor/libgit2/src/khash.h +0 -615
  584. data/vendor/libgit2/src/libgit2.h +0 -15
  585. data/vendor/libgit2/src/message.h +0 -17
  586. data/vendor/libgit2/src/net.c +0 -540
  587. data/vendor/libgit2/src/netops.c +0 -125
  588. data/vendor/libgit2/src/netops.h +0 -68
  589. data/vendor/libgit2/src/offmap.c +0 -101
  590. data/vendor/libgit2/src/offmap.h +0 -133
  591. data/vendor/libgit2/src/oid.h +0 -51
  592. data/vendor/libgit2/src/oidarray.c +0 -43
  593. data/vendor/libgit2/src/oidmap.c +0 -107
  594. data/vendor/libgit2/src/oidmap.h +0 -128
  595. data/vendor/libgit2/src/remote.h +0 -55
  596. data/vendor/libgit2/src/streams/socket.c +0 -239
  597. data/vendor/libgit2/src/strmap.c +0 -100
  598. data/vendor/libgit2/src/strmap.h +0 -131
  599. data/vendor/libgit2/src/sysdir.c +0 -347
  600. data/vendor/libgit2/src/threadstate.c +0 -84
  601. data/vendor/libgit2/src/threadstate.h +0 -24
  602. data/vendor/libgit2/src/win32/findfile.c +0 -230
  603. data/vendor/libgit2/src/win32/findfile.h +0 -19
  604. data/vendor/libgit2/src/win32/utf-conv.c +0 -146
  605. data/vendor/libgit2/src/win32/utf-conv.h +0 -60
  606. /data/vendor/libgit2/{src → deps}/xdiff/xemit.h +0 -0
  607. /data/vendor/libgit2/{src → deps}/xdiff/xprepare.h +0 -0
  608. /data/vendor/libgit2/{src → deps}/xdiff/xtypes.h +0 -0
  609. /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
  610. /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
  611. /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
  612. /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
  613. /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
  614. /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
  615. /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
  616. /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
  617. /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
  618. /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
  619. /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
  620. /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
  621. /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
  622. /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
  623. /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
  624. /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
  625. /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
  626. /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
  627. /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
  628. /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
  629. /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
  630. /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
  631. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
  632. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
  633. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
  634. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
  635. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
  636. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
  637. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
  638. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
  639. /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
  640. /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
  641. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
  642. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
  643. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
  644. /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
  645. /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
  646. /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
  647. /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
  648. /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
  649. /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
  650. /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
  651. /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
  652. /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
  653. /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
  654. /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
  655. /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
  656. /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
@@ -7,6 +7,7 @@
7
7
 
8
8
  #include "common.h"
9
9
 
10
+ #include "buf.h"
10
11
  #include "diff.h"
11
12
  #include "diff_file.h"
12
13
  #include "patch_generate.h"
@@ -14,6 +15,7 @@
14
15
  #include "zstream.h"
15
16
  #include "blob.h"
16
17
  #include "delta.h"
18
+ #include "repository.h"
17
19
  #include "git2/sys/diff.h"
18
20
 
19
21
  typedef struct {
@@ -21,20 +23,22 @@ typedef struct {
21
23
  git_diff_line_cb print_cb;
22
24
  void *payload;
23
25
 
24
- git_buf *buf;
26
+ git_str *buf;
25
27
  git_diff_line line;
26
28
 
27
29
  const char *old_prefix;
28
30
  const char *new_prefix;
29
31
  uint32_t flags;
30
32
  int id_strlen;
33
+ unsigned int sent_file_header;
34
+ git_oid_t oid_type;
31
35
 
32
36
  int (*strcomp)(const char *, const char *);
33
37
  } diff_print_info;
34
38
 
35
39
  static int diff_print_info_init__common(
36
40
  diff_print_info *pi,
37
- git_buf *out,
41
+ git_str *out,
38
42
  git_repository *repo,
39
43
  git_diff_format_t format,
40
44
  git_diff_line_cb cb,
@@ -45,16 +49,15 @@ static int diff_print_info_init__common(
45
49
  pi->payload = payload;
46
50
  pi->buf = out;
47
51
 
52
+ GIT_ASSERT(pi->oid_type);
53
+
48
54
  if (!pi->id_strlen) {
49
55
  if (!repo)
50
56
  pi->id_strlen = GIT_ABBREV_DEFAULT;
51
- else if (git_repository__configmap_lookup(&pi->id_strlen, repo, GIT_CONFIGMAP_ABBREV) < 0)
57
+ else if (git_repository__abbrev_length(&pi->id_strlen, repo) < 0)
52
58
  return -1;
53
59
  }
54
60
 
55
- if (pi->id_strlen > GIT_OID_HEXSZ)
56
- pi->id_strlen = GIT_OID_HEXSZ;
57
-
58
61
  memset(&pi->line, 0, sizeof(pi->line));
59
62
  pi->line.old_lineno = -1;
60
63
  pi->line.new_lineno = -1;
@@ -65,7 +68,7 @@ static int diff_print_info_init__common(
65
68
 
66
69
  static int diff_print_info_init_fromdiff(
67
70
  diff_print_info *pi,
68
- git_buf *out,
71
+ git_str *out,
69
72
  git_diff *diff,
70
73
  git_diff_format_t format,
71
74
  git_diff_line_cb cb,
@@ -77,6 +80,7 @@ static int diff_print_info_init_fromdiff(
77
80
 
78
81
  if (diff) {
79
82
  pi->flags = diff->opts.flags;
83
+ pi->oid_type = diff->opts.oid_type;
80
84
  pi->id_strlen = diff->opts.id_abbrev;
81
85
  pi->old_prefix = diff->opts.old_prefix;
82
86
  pi->new_prefix = diff->opts.new_prefix;
@@ -89,7 +93,7 @@ static int diff_print_info_init_fromdiff(
89
93
 
90
94
  static int diff_print_info_init_frompatch(
91
95
  diff_print_info *pi,
92
- git_buf *out,
96
+ git_str *out,
93
97
  git_patch *patch,
94
98
  git_diff_format_t format,
95
99
  git_diff_line_cb cb,
@@ -100,6 +104,7 @@ static int diff_print_info_init_frompatch(
100
104
  memset(pi, 0, sizeof(diff_print_info));
101
105
 
102
106
  pi->flags = patch->diff_opts.flags;
107
+ pi->oid_type = patch->diff_opts.oid_type;
103
108
  pi->id_strlen = patch->diff_opts.id_abbrev;
104
109
  pi->old_prefix = patch->diff_opts.old_prefix;
105
110
  pi->new_prefix = patch->diff_opts.new_prefix;
@@ -142,7 +147,7 @@ static int diff_print_one_name_only(
142
147
  const git_diff_delta *delta, float progress, void *data)
143
148
  {
144
149
  diff_print_info *pi = data;
145
- git_buf *out = pi->buf;
150
+ git_str *out = pi->buf;
146
151
 
147
152
  GIT_UNUSED(progress);
148
153
 
@@ -150,15 +155,15 @@ static int diff_print_one_name_only(
150
155
  delta->status == GIT_DELTA_UNMODIFIED)
151
156
  return 0;
152
157
 
153
- git_buf_clear(out);
154
- git_buf_puts(out, delta->new_file.path);
155
- git_buf_putc(out, '\n');
156
- if (git_buf_oom(out))
158
+ git_str_clear(out);
159
+ git_str_puts(out, delta->new_file.path);
160
+ git_str_putc(out, '\n');
161
+ if (git_str_oom(out))
157
162
  return -1;
158
163
 
159
164
  pi->line.origin = GIT_DIFF_LINE_FILE_HDR;
160
- pi->line.content = git_buf_cstr(out);
161
- pi->line.content_len = git_buf_len(out);
165
+ pi->line.content = git_str_cstr(out);
166
+ pi->line.content_len = git_str_len(out);
162
167
 
163
168
  return pi->print_cb(delta, NULL, &pi->line, pi->payload);
164
169
  }
@@ -167,7 +172,7 @@ static int diff_print_one_name_status(
167
172
  const git_diff_delta *delta, float progress, void *data)
168
173
  {
169
174
  diff_print_info *pi = data;
170
- git_buf *out = pi->buf;
175
+ git_str *out = pi->buf;
171
176
  char old_suffix, new_suffix, code = git_diff_status_char(delta->status);
172
177
  int(*strcomp)(const char *, const char *) = pi->strcomp ?
173
178
  pi->strcomp : git__strcmp;
@@ -180,26 +185,26 @@ static int diff_print_one_name_status(
180
185
  old_suffix = diff_pick_suffix(delta->old_file.mode);
181
186
  new_suffix = diff_pick_suffix(delta->new_file.mode);
182
187
 
183
- git_buf_clear(out);
188
+ git_str_clear(out);
184
189
 
185
190
  if (delta->old_file.path != delta->new_file.path &&
186
191
  strcomp(delta->old_file.path,delta->new_file.path) != 0)
187
- git_buf_printf(out, "%c\t%s%c %s%c\n", code,
192
+ git_str_printf(out, "%c\t%s%c %s%c\n", code,
188
193
  delta->old_file.path, old_suffix, delta->new_file.path, new_suffix);
189
194
  else if (delta->old_file.mode != delta->new_file.mode &&
190
195
  delta->old_file.mode != 0 && delta->new_file.mode != 0)
191
- git_buf_printf(out, "%c\t%s%c %s%c\n", code,
196
+ git_str_printf(out, "%c\t%s%c %s%c\n", code,
192
197
  delta->old_file.path, old_suffix, delta->new_file.path, new_suffix);
193
198
  else if (old_suffix != ' ')
194
- git_buf_printf(out, "%c\t%s%c\n", code, delta->old_file.path, old_suffix);
199
+ git_str_printf(out, "%c\t%s%c\n", code, delta->old_file.path, old_suffix);
195
200
  else
196
- git_buf_printf(out, "%c\t%s\n", code, delta->old_file.path);
197
- if (git_buf_oom(out))
201
+ git_str_printf(out, "%c\t%s\n", code, delta->old_file.path);
202
+ if (git_str_oom(out))
198
203
  return -1;
199
204
 
200
205
  pi->line.origin = GIT_DIFF_LINE_FILE_HDR;
201
- pi->line.content = git_buf_cstr(out);
202
- pi->line.content_len = git_buf_len(out);
206
+ pi->line.content = git_str_cstr(out);
207
+ pi->line.content_len = git_str_len(out);
203
208
 
204
209
  return pi->print_cb(delta, NULL, &pi->line, pi->payload);
205
210
  }
@@ -208,17 +213,20 @@ static int diff_print_one_raw(
208
213
  const git_diff_delta *delta, float progress, void *data)
209
214
  {
210
215
  diff_print_info *pi = data;
211
- git_buf *out = pi->buf;
216
+ git_str *out = pi->buf;
212
217
  int id_abbrev;
213
218
  char code = git_diff_status_char(delta->status);
214
- char start_oid[GIT_OID_HEXSZ+1], end_oid[GIT_OID_HEXSZ+1];
219
+ char start_oid[GIT_OID_MAX_HEXSIZE + 1],
220
+ end_oid[GIT_OID_MAX_HEXSIZE + 1];
221
+ size_t oid_hexsize;
222
+ bool id_is_abbrev;
215
223
 
216
224
  GIT_UNUSED(progress);
217
225
 
218
226
  if ((pi->flags & GIT_DIFF_SHOW_UNMODIFIED) == 0 && code == ' ')
219
227
  return 0;
220
228
 
221
- git_buf_clear(out);
229
+ git_str_clear(out);
222
230
 
223
231
  id_abbrev = delta->old_file.mode ? delta->old_file.id_abbrev :
224
232
  delta->new_file.id_abbrev;
@@ -230,49 +238,59 @@ static int diff_print_one_raw(
230
238
  return -1;
231
239
  }
232
240
 
241
+ #ifdef GIT_EXPERIMENTAL_SHA256
242
+ GIT_ASSERT(delta->old_file.id.type == delta->new_file.id.type);
243
+ oid_hexsize = git_oid_hexsize(delta->old_file.id.type);
244
+ #else
245
+ oid_hexsize = GIT_OID_SHA1_HEXSIZE;
246
+ #endif
247
+
248
+ id_is_abbrev = (pi->id_strlen > 0 &&
249
+ (size_t)pi->id_strlen <= oid_hexsize);
250
+
233
251
  git_oid_tostr(start_oid, pi->id_strlen + 1, &delta->old_file.id);
234
252
  git_oid_tostr(end_oid, pi->id_strlen + 1, &delta->new_file.id);
235
253
 
236
- git_buf_printf(
237
- out, (pi->id_strlen <= GIT_OID_HEXSZ) ?
238
- ":%06o %06o %s... %s... %c" : ":%06o %06o %s %s %c",
254
+ git_str_printf(out,
255
+ id_is_abbrev ? ":%06o %06o %s... %s... %c" : ":%06o %06o %s %s %c",
239
256
  delta->old_file.mode, delta->new_file.mode, start_oid, end_oid, code);
240
257
 
241
258
  if (delta->similarity > 0)
242
- git_buf_printf(out, "%03u", delta->similarity);
259
+ git_str_printf(out, "%03u", delta->similarity);
243
260
 
244
261
  if (delta->old_file.path != delta->new_file.path)
245
- git_buf_printf(
262
+ git_str_printf(
246
263
  out, "\t%s %s\n", delta->old_file.path, delta->new_file.path);
247
264
  else
248
- git_buf_printf(
265
+ git_str_printf(
249
266
  out, "\t%s\n", delta->old_file.path ?
250
267
  delta->old_file.path : delta->new_file.path);
251
268
 
252
- if (git_buf_oom(out))
269
+ if (git_str_oom(out))
253
270
  return -1;
254
271
 
255
272
  pi->line.origin = GIT_DIFF_LINE_FILE_HDR;
256
- pi->line.content = git_buf_cstr(out);
257
- pi->line.content_len = git_buf_len(out);
273
+ pi->line.content = git_str_cstr(out);
274
+ pi->line.content_len = git_str_len(out);
258
275
 
259
276
  return pi->print_cb(delta, NULL, &pi->line, pi->payload);
260
277
  }
261
278
 
262
279
  static int diff_print_modes(
263
- git_buf *out, const git_diff_delta *delta)
280
+ git_str *out, const git_diff_delta *delta)
264
281
  {
265
- git_buf_printf(out, "old mode %o\n", delta->old_file.mode);
266
- git_buf_printf(out, "new mode %o\n", delta->new_file.mode);
282
+ git_str_printf(out, "old mode %o\n", delta->old_file.mode);
283
+ git_str_printf(out, "new mode %o\n", delta->new_file.mode);
267
284
 
268
- return git_buf_oom(out) ? -1 : 0;
285
+ return git_str_oom(out) ? -1 : 0;
269
286
  }
270
287
 
271
288
  static int diff_print_oid_range(
272
- git_buf *out, const git_diff_delta *delta, int id_strlen,
289
+ git_str *out, const git_diff_delta *delta, int id_strlen,
273
290
  bool print_index)
274
291
  {
275
- char start_oid[GIT_OID_HEXSZ+1], end_oid[GIT_OID_HEXSZ+1];
292
+ char start_oid[GIT_OID_MAX_HEXSIZE + 1],
293
+ end_oid[GIT_OID_MAX_HEXSIZE + 1];
276
294
 
277
295
  if (delta->old_file.mode &&
278
296
  id_strlen > delta->old_file.id_abbrev) {
@@ -295,34 +313,39 @@ static int diff_print_oid_range(
295
313
 
296
314
  if (delta->old_file.mode == delta->new_file.mode) {
297
315
  if (print_index)
298
- git_buf_printf(out, "index %s..%s %o\n",
316
+ git_str_printf(out, "index %s..%s %o\n",
299
317
  start_oid, end_oid, delta->old_file.mode);
300
318
  } else {
301
319
  if (delta->old_file.mode == 0)
302
- git_buf_printf(out, "new file mode %o\n", delta->new_file.mode);
320
+ git_str_printf(out, "new file mode %o\n", delta->new_file.mode);
303
321
  else if (delta->new_file.mode == 0)
304
- git_buf_printf(out, "deleted file mode %o\n", delta->old_file.mode);
322
+ git_str_printf(out, "deleted file mode %o\n", delta->old_file.mode);
305
323
  else
306
324
  diff_print_modes(out, delta);
307
325
 
308
326
  if (print_index)
309
- git_buf_printf(out, "index %s..%s\n", start_oid, end_oid);
327
+ git_str_printf(out, "index %s..%s\n", start_oid, end_oid);
310
328
  }
311
329
 
312
- return git_buf_oom(out) ? -1 : 0;
330
+ return git_str_oom(out) ? -1 : 0;
313
331
  }
314
332
 
315
333
  static int diff_delta_format_path(
316
- git_buf *out, const char *prefix, const char *filename)
334
+ git_str *out, const char *prefix, const char *filename)
317
335
  {
318
- if (git_buf_joinpath(out, prefix, filename) < 0)
336
+ if (!filename) {
337
+ /* don't prefix "/dev/null" */
338
+ return git_str_puts(out, "/dev/null");
339
+ }
340
+
341
+ if (git_str_joinpath(out, prefix, filename) < 0)
319
342
  return -1;
320
343
 
321
- return git_buf_quote(out);
344
+ return git_str_quote(out);
322
345
  }
323
346
 
324
347
  static int diff_delta_format_with_paths(
325
- git_buf *out,
348
+ git_str *out,
326
349
  const git_diff_delta *delta,
327
350
  const char *template,
328
351
  const char *oldpath,
@@ -334,14 +357,14 @@ static int diff_delta_format_with_paths(
334
357
  if (git_oid_is_zero(&delta->new_file.id))
335
358
  newpath = "/dev/null";
336
359
 
337
- return git_buf_printf(out, template, oldpath, newpath);
360
+ return git_str_printf(out, template, oldpath, newpath);
338
361
  }
339
362
 
340
363
  static int diff_delta_format_similarity_header(
341
- git_buf *out,
364
+ git_str *out,
342
365
  const git_diff_delta *delta)
343
366
  {
344
- git_buf old_path = GIT_BUF_INIT, new_path = GIT_BUF_INIT;
367
+ git_str old_path = GIT_STR_INIT, new_path = GIT_STR_INIT;
345
368
  const char *type;
346
369
  int error = 0;
347
370
 
@@ -357,13 +380,13 @@ static int diff_delta_format_similarity_header(
357
380
  else
358
381
  type = "copy";
359
382
 
360
- if ((error = git_buf_puts(&old_path, delta->old_file.path)) < 0 ||
361
- (error = git_buf_puts(&new_path, delta->new_file.path)) < 0 ||
362
- (error = git_buf_quote(&old_path)) < 0 ||
363
- (error = git_buf_quote(&new_path)) < 0)
383
+ if ((error = git_str_puts(&old_path, delta->old_file.path)) < 0 ||
384
+ (error = git_str_puts(&new_path, delta->new_file.path)) < 0 ||
385
+ (error = git_str_quote(&old_path)) < 0 ||
386
+ (error = git_str_quote(&new_path)) < 0)
364
387
  goto done;
365
388
 
366
- git_buf_printf(out,
389
+ git_str_printf(out,
367
390
  "similarity index %d%%\n"
368
391
  "%s from %s\n"
369
392
  "%s to %s\n",
@@ -371,12 +394,12 @@ static int diff_delta_format_similarity_header(
371
394
  type, old_path.ptr,
372
395
  type, new_path.ptr);
373
396
 
374
- if (git_buf_oom(out))
397
+ if (git_str_oom(out))
375
398
  error = -1;
376
399
 
377
400
  done:
378
- git_buf_dispose(&old_path);
379
- git_buf_dispose(&new_path);
401
+ git_str_dispose(&old_path);
402
+ git_str_dispose(&new_path);
380
403
 
381
404
  return error;
382
405
  }
@@ -398,14 +421,14 @@ static bool delta_is_unchanged(const git_diff_delta *delta)
398
421
  }
399
422
 
400
423
  int git_diff_delta__format_file_header(
401
- git_buf *out,
424
+ git_str *out,
402
425
  const git_diff_delta *delta,
403
426
  const char *oldpfx,
404
427
  const char *newpfx,
405
428
  int id_strlen,
406
429
  bool print_index)
407
430
  {
408
- git_buf old_path = GIT_BUF_INIT, new_path = GIT_BUF_INIT;
431
+ git_str old_path = GIT_STR_INIT, new_path = GIT_STR_INIT;
409
432
  bool unchanged = delta_is_unchanged(delta);
410
433
  int error = 0;
411
434
 
@@ -422,9 +445,9 @@ int git_diff_delta__format_file_header(
422
445
  &new_path, newpfx, delta->new_file.path)) < 0)
423
446
  goto done;
424
447
 
425
- git_buf_clear(out);
448
+ git_str_clear(out);
426
449
 
427
- git_buf_printf(out, "diff --git %s %s\n",
450
+ git_str_printf(out, "diff --git %s %s\n",
428
451
  old_path.ptr, new_path.ptr);
429
452
 
430
453
  if (unchanged && delta->old_file.mode != delta->new_file.mode)
@@ -446,12 +469,12 @@ int git_diff_delta__format_file_header(
446
469
  "--- %s\n+++ %s\n", old_path.ptr, new_path.ptr);
447
470
  }
448
471
 
449
- if (git_buf_oom(out))
472
+ if (git_str_oom(out))
450
473
  error = -1;
451
474
 
452
475
  done:
453
- git_buf_dispose(&old_path);
454
- git_buf_dispose(&new_path);
476
+ git_str_dispose(&old_path);
477
+ git_str_dispose(&new_path);
455
478
 
456
479
  return error;
457
480
  }
@@ -467,7 +490,7 @@ static int format_binary(
467
490
  "delta" : "literal";
468
491
  const char *scan, *end;
469
492
 
470
- git_buf_printf(pi->buf, "%s %" PRIuZ "\n", typename, inflatedlen);
493
+ git_str_printf(pi->buf, "%s %" PRIuZ "\n", typename, inflatedlen);
471
494
  pi->line.num_lines++;
472
495
 
473
496
  for (scan = data, end = data + datalen; scan < end; ) {
@@ -476,22 +499,22 @@ static int format_binary(
476
499
  chunk_len = 52;
477
500
 
478
501
  if (chunk_len <= 26)
479
- git_buf_putc(pi->buf, (char)chunk_len + 'A' - 1);
502
+ git_str_putc(pi->buf, (char)chunk_len + 'A' - 1);
480
503
  else
481
- git_buf_putc(pi->buf, (char)chunk_len - 26 + 'a' - 1);
504
+ git_str_putc(pi->buf, (char)chunk_len - 26 + 'a' - 1);
482
505
 
483
- git_buf_encode_base85(pi->buf, scan, chunk_len);
484
- git_buf_putc(pi->buf, '\n');
506
+ git_str_encode_base85(pi->buf, scan, chunk_len);
507
+ git_str_putc(pi->buf, '\n');
485
508
 
486
- if (git_buf_oom(pi->buf))
509
+ if (git_str_oom(pi->buf))
487
510
  return -1;
488
511
 
489
512
  scan += chunk_len;
490
513
  pi->line.num_lines++;
491
514
  }
492
- git_buf_putc(pi->buf, '\n');
515
+ git_str_putc(pi->buf, '\n');
493
516
 
494
- if (git_buf_oom(pi->buf))
517
+ if (git_str_oom(pi->buf))
495
518
  return -1;
496
519
 
497
520
  return 0;
@@ -501,7 +524,7 @@ static int diff_print_patch_file_binary_noshow(
501
524
  diff_print_info *pi, git_diff_delta *delta,
502
525
  const char *old_pfx, const char *new_pfx)
503
526
  {
504
- git_buf old_path = GIT_BUF_INIT, new_path = GIT_BUF_INIT;
527
+ git_str old_path = GIT_STR_INIT, new_path = GIT_STR_INIT;
505
528
  int error;
506
529
 
507
530
  if ((error = diff_delta_format_path(&old_path, old_pfx, delta->old_file.path)) < 0 ||
@@ -513,8 +536,8 @@ static int diff_print_patch_file_binary_noshow(
513
536
  pi->line.num_lines = 1;
514
537
 
515
538
  done:
516
- git_buf_dispose(&old_path);
517
- git_buf_dispose(&new_path);
539
+ git_str_dispose(&old_path);
540
+ git_str_dispose(&new_path);
518
541
  return error;
519
542
  }
520
543
 
@@ -534,7 +557,7 @@ static int diff_print_patch_file_binary(
534
557
  pi, delta, old_pfx, new_pfx);
535
558
 
536
559
  pre_binary_size = pi->buf->size;
537
- git_buf_printf(pi->buf, "GIT binary patch\n");
560
+ git_str_printf(pi->buf, "GIT binary patch\n");
538
561
  pi->line.num_lines++;
539
562
 
540
563
  if ((error = format_binary(pi, binary->new_file.type, binary->new_file.data,
@@ -543,7 +566,7 @@ static int diff_print_patch_file_binary(
543
566
  binary->old_file.datalen, binary->old_file.inflatedlen)) < 0) {
544
567
  if (error == GIT_EBUFS) {
545
568
  git_error_clear();
546
- git_buf_truncate(pi->buf, pre_binary_size);
569
+ git_str_truncate(pi->buf, pre_binary_size);
547
570
 
548
571
  return diff_print_patch_file_binary_noshow(
549
572
  pi, delta, old_pfx, new_pfx);
@@ -554,6 +577,30 @@ static int diff_print_patch_file_binary(
554
577
  return error;
555
578
  }
556
579
 
580
+ GIT_INLINE(int) should_force_header(const git_diff_delta *delta)
581
+ {
582
+ if (delta->old_file.mode != delta->new_file.mode)
583
+ return 1;
584
+
585
+ if (delta->status == GIT_DELTA_RENAMED || delta->status == GIT_DELTA_COPIED)
586
+ return 1;
587
+
588
+ return 0;
589
+ }
590
+
591
+ GIT_INLINE(int) flush_file_header(const git_diff_delta *delta, diff_print_info *pi)
592
+ {
593
+ if (pi->sent_file_header)
594
+ return 0;
595
+
596
+ pi->line.origin = GIT_DIFF_LINE_FILE_HDR;
597
+ pi->line.content = git_str_cstr(pi->buf);
598
+ pi->line.content_len = git_str_len(pi->buf);
599
+ pi->sent_file_header = 1;
600
+
601
+ return pi->print_cb(delta, NULL, &pi->line, pi->payload);
602
+ }
603
+
557
604
  static int diff_print_patch_file(
558
605
  const git_diff_delta *delta, float progress, void *data)
559
606
  {
@@ -584,15 +631,22 @@ static int diff_print_patch_file(
584
631
  (pi->flags & GIT_DIFF_SHOW_UNTRACKED_CONTENT) == 0))
585
632
  return 0;
586
633
 
634
+ pi->sent_file_header = 0;
635
+
587
636
  if ((error = git_diff_delta__format_file_header(pi->buf, delta, oldpfx, newpfx,
588
637
  id_strlen, print_index)) < 0)
589
638
  return error;
590
639
 
591
- pi->line.origin = GIT_DIFF_LINE_FILE_HDR;
592
- pi->line.content = git_buf_cstr(pi->buf);
593
- pi->line.content_len = git_buf_len(pi->buf);
640
+ /*
641
+ * pi->buf now contains the file header data. Go ahead and send it
642
+ * if there's useful data in there, like similarity. Otherwise, we
643
+ * should queue it to send when we see the first hunk. This prevents
644
+ * us from sending a header when all hunks were ignored.
645
+ */
646
+ if (should_force_header(delta) && (error = flush_file_header(delta, pi)) < 0)
647
+ return error;
594
648
 
595
- return pi->print_cb(delta, NULL, &pi->line, pi->payload);
649
+ return 0;
596
650
  }
597
651
 
598
652
  static int diff_print_patch_binary(
@@ -607,15 +661,25 @@ static int diff_print_patch_binary(
607
661
  pi->new_prefix ? pi->new_prefix : DIFF_NEW_PREFIX_DEFAULT;
608
662
  int error;
609
663
 
610
- git_buf_clear(pi->buf);
664
+ if ((error = flush_file_header(delta, pi)) < 0)
665
+ return error;
666
+
667
+ /*
668
+ * If the caller only wants the header, we just needed to make sure to
669
+ * call flush_file_header
670
+ */
671
+ if (pi->format == GIT_DIFF_FORMAT_PATCH_HEADER)
672
+ return 0;
673
+
674
+ git_str_clear(pi->buf);
611
675
 
612
676
  if ((error = diff_print_patch_file_binary(
613
677
  pi, (git_diff_delta *)delta, old_pfx, new_pfx, binary)) < 0)
614
678
  return error;
615
679
 
616
680
  pi->line.origin = GIT_DIFF_LINE_BINARY;
617
- pi->line.content = git_buf_cstr(pi->buf);
618
- pi->line.content_len = git_buf_len(pi->buf);
681
+ pi->line.content = git_str_cstr(pi->buf);
682
+ pi->line.content_len = git_str_len(pi->buf);
619
683
 
620
684
  return pi->print_cb(delta, NULL, &pi->line, pi->payload);
621
685
  }
@@ -626,10 +690,21 @@ static int diff_print_patch_hunk(
626
690
  void *data)
627
691
  {
628
692
  diff_print_info *pi = data;
693
+ int error;
629
694
 
630
695
  if (S_ISDIR(d->new_file.mode))
631
696
  return 0;
632
697
 
698
+ if ((error = flush_file_header(d, pi)) < 0)
699
+ return error;
700
+
701
+ /*
702
+ * If the caller only wants the header, we just needed to make sure to
703
+ * call flush_file_header
704
+ */
705
+ if (pi->format == GIT_DIFF_FORMAT_PATCH_HEADER)
706
+ return 0;
707
+
633
708
  pi->line.origin = GIT_DIFF_LINE_HUNK_HDR;
634
709
  pi->line.content = h->header;
635
710
  pi->line.content_len = h->header_len;
@@ -644,10 +719,14 @@ static int diff_print_patch_line(
644
719
  void *data)
645
720
  {
646
721
  diff_print_info *pi = data;
722
+ int error;
647
723
 
648
724
  if (S_ISDIR(delta->new_file.mode))
649
725
  return 0;
650
726
 
727
+ if ((error = flush_file_header(delta, pi)) < 0)
728
+ return error;
729
+
651
730
  return pi->print_cb(delta, hunk, line, pi->payload);
652
731
  }
653
732
 
@@ -659,7 +738,7 @@ int git_diff_print(
659
738
  void *payload)
660
739
  {
661
740
  int error;
662
- git_buf buf = GIT_BUF_INIT;
741
+ git_str buf = GIT_STR_INIT;
663
742
  diff_print_info pi;
664
743
  git_diff_file_cb print_file = NULL;
665
744
  git_diff_binary_cb print_binary = NULL;
@@ -680,6 +759,8 @@ int git_diff_print(
680
759
  break;
681
760
  case GIT_DIFF_FORMAT_PATCH_HEADER:
682
761
  print_file = diff_print_patch_file;
762
+ print_binary = diff_print_patch_binary;
763
+ print_hunk = diff_print_patch_hunk;
683
764
  break;
684
765
  case GIT_DIFF_FORMAT_RAW:
685
766
  print_file = diff_print_one_raw;
@@ -704,7 +785,7 @@ int git_diff_print(
704
785
  }
705
786
 
706
787
  out:
707
- git_buf_dispose(&buf);
788
+ git_str_dispose(&buf);
708
789
  return error;
709
790
  }
710
791
 
@@ -714,7 +795,7 @@ int git_diff_print_callback__to_buf(
714
795
  const git_diff_line *line,
715
796
  void *payload)
716
797
  {
717
- git_buf *output = payload;
798
+ git_str *output = payload;
718
799
  GIT_UNUSED(delta); GIT_UNUSED(hunk);
719
800
 
720
801
  if (!output) {
@@ -725,9 +806,9 @@ int git_diff_print_callback__to_buf(
725
806
  if (line->origin == GIT_DIFF_LINE_ADDITION ||
726
807
  line->origin == GIT_DIFF_LINE_DELETION ||
727
808
  line->origin == GIT_DIFF_LINE_CONTEXT)
728
- git_buf_putc(output, line->origin);
809
+ git_str_putc(output, line->origin);
729
810
 
730
- return git_buf_put(output, line->content, line->content_len);
811
+ return git_str_put(output, line->content, line->content_len);
731
812
  }
732
813
 
733
814
  int git_diff_print_callback__to_file_handle(
@@ -761,18 +842,24 @@ int git_diff_print_callback__to_file_handle(
761
842
  return 0;
762
843
  }
763
844
 
764
- /* print a git_diff to a git_buf */
845
+ /* print a git_diff to a git_str */
765
846
  int git_diff_to_buf(git_buf *out, git_diff *diff, git_diff_format_t format)
766
847
  {
848
+ git_str str = GIT_STR_INIT;
767
849
  int error;
768
850
 
769
851
  GIT_ASSERT_ARG(out);
770
852
  GIT_ASSERT_ARG(diff);
771
853
 
772
- if ((error = git_buf_sanitize(out)) < 0)
773
- return error;
854
+ if ((error = git_buf_tostr(&str, out)) < 0 ||
855
+ (error = git_diff_print(diff, format, git_diff_print_callback__to_buf, &str)) < 0)
856
+ goto done;
857
+
858
+ error = git_buf_fromstr(out, &str);
774
859
 
775
- return git_diff_print(diff, format, git_diff_print_callback__to_buf, out);
860
+ done:
861
+ git_str_dispose(&str);
862
+ return error;
776
863
  }
777
864
 
778
865
  /* print a git_patch to an output callback */
@@ -781,7 +868,7 @@ int git_patch_print(
781
868
  git_diff_line_cb print_cb,
782
869
  void *payload)
783
870
  {
784
- git_buf temp = GIT_BUF_INIT;
871
+ git_str temp = GIT_STR_INIT;
785
872
  diff_print_info pi;
786
873
  int error;
787
874
 
@@ -799,20 +886,20 @@ int git_patch_print(
799
886
  }
800
887
 
801
888
  out:
802
- git_buf_dispose(&temp);
889
+ git_str_dispose(&temp);
803
890
  return error;
804
891
  }
805
892
 
806
- /* print a git_patch to a git_buf */
893
+ /* print a git_patch to a git_str */
807
894
  int git_patch_to_buf(git_buf *out, git_patch *patch)
808
895
  {
809
- int error;
896
+ GIT_BUF_WRAP_PRIVATE(out, git_patch__to_buf, patch);
897
+ }
810
898
 
899
+ int git_patch__to_buf(git_str *out, git_patch *patch)
900
+ {
811
901
  GIT_ASSERT_ARG(out);
812
902
  GIT_ASSERT_ARG(patch);
813
903
 
814
- if ((error = git_buf_sanitize(out)) < 0)
815
- return error;
816
-
817
904
  return git_patch_print(patch, git_diff_print_callback__to_buf, out);
818
905
  }