rugged 0.27.7 → 0.27.10

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 (409) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rugged/version.rb +1 -1
  3. data/vendor/libgit2/AUTHORS +1 -0
  4. data/vendor/libgit2/CMakeLists.txt +99 -51
  5. data/vendor/libgit2/COPYING +28 -0
  6. data/vendor/libgit2/cmake/Modules/AddCFlagIfSupported.cmake +15 -1
  7. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +29 -0
  8. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +96 -0
  9. data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +9 -8
  10. data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
  11. data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
  12. data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +28 -0
  13. data/vendor/libgit2/cmake/Modules/FindIconv.cmake +11 -6
  14. data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +38 -0
  15. data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +37 -0
  16. data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
  17. data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +6 -0
  18. data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +110 -0
  19. data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +53 -0
  20. data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +124 -0
  21. data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +66 -0
  22. data/vendor/libgit2/deps/http-parser/http_parser.c +11 -6
  23. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +21 -0
  24. data/vendor/libgit2/deps/ntlmclient/compat.h +33 -0
  25. data/vendor/libgit2/deps/ntlmclient/crypt.h +64 -0
  26. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +120 -0
  27. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +18 -0
  28. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +145 -0
  29. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +18 -0
  30. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +130 -0
  31. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +21 -0
  32. data/vendor/libgit2/deps/ntlmclient/ntlm.c +1420 -0
  33. data/vendor/libgit2/deps/ntlmclient/ntlm.h +174 -0
  34. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +320 -0
  35. data/vendor/libgit2/deps/ntlmclient/unicode.h +36 -0
  36. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +445 -0
  37. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +201 -0
  38. data/vendor/libgit2/deps/ntlmclient/utf8.h +1257 -0
  39. data/vendor/libgit2/deps/ntlmclient/util.c +21 -0
  40. data/vendor/libgit2/deps/ntlmclient/util.h +14 -0
  41. data/vendor/libgit2/deps/pcre/CMakeLists.txt +140 -0
  42. data/vendor/libgit2/deps/pcre/COPYING +5 -0
  43. data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +22 -0
  44. data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +17 -0
  45. data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +58 -0
  46. data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +29 -0
  47. data/vendor/libgit2/deps/pcre/config.h.in +57 -0
  48. data/vendor/libgit2/deps/pcre/pcre.h +641 -0
  49. data/vendor/libgit2/deps/pcre/pcre_byte_order.c +319 -0
  50. data/vendor/libgit2/deps/pcre/pcre_chartables.c +198 -0
  51. data/vendor/libgit2/deps/pcre/pcre_compile.c +9800 -0
  52. data/vendor/libgit2/deps/pcre/pcre_config.c +190 -0
  53. data/vendor/libgit2/deps/pcre/pcre_dfa_exec.c +3676 -0
  54. data/vendor/libgit2/deps/pcre/pcre_exec.c +7173 -0
  55. data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +245 -0
  56. data/vendor/libgit2/deps/pcre/pcre_get.c +669 -0
  57. data/vendor/libgit2/deps/pcre/pcre_globals.c +86 -0
  58. data/vendor/libgit2/deps/pcre/pcre_internal.h +2787 -0
  59. data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +11913 -0
  60. data/vendor/libgit2/deps/pcre/pcre_maketables.c +156 -0
  61. data/vendor/libgit2/deps/pcre/pcre_newline.c +210 -0
  62. data/vendor/libgit2/deps/pcre/pcre_ord2utf8.c +94 -0
  63. data/vendor/libgit2/deps/pcre/pcre_printint.c +834 -0
  64. data/vendor/libgit2/deps/pcre/pcre_refcount.c +92 -0
  65. data/vendor/libgit2/deps/pcre/pcre_string_utils.c +211 -0
  66. data/vendor/libgit2/deps/pcre/pcre_study.c +1686 -0
  67. data/vendor/libgit2/deps/pcre/pcre_tables.c +727 -0
  68. data/vendor/libgit2/deps/pcre/pcre_ucd.c +3644 -0
  69. data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +301 -0
  70. data/vendor/libgit2/deps/pcre/pcre_version.c +98 -0
  71. data/vendor/libgit2/deps/pcre/pcre_xclass.c +268 -0
  72. data/vendor/libgit2/deps/pcre/pcreposix.c +421 -0
  73. data/vendor/libgit2/deps/pcre/pcreposix.h +117 -0
  74. data/vendor/libgit2/deps/pcre/ucp.h +224 -0
  75. data/vendor/libgit2/deps/winhttp/COPYING.GPL +993 -0
  76. data/vendor/libgit2/deps/winhttp/COPYING.LGPL +502 -0
  77. data/vendor/libgit2/deps/zlib/CMakeLists.txt +1 -0
  78. data/vendor/libgit2/deps/zlib/COPYING +27 -0
  79. data/vendor/libgit2/deps/zlib/adler32.c +0 -7
  80. data/vendor/libgit2/deps/zlib/crc32.c +0 -7
  81. data/vendor/libgit2/include/git2/annotated_commit.h +9 -0
  82. data/vendor/libgit2/include/git2/apply.h +149 -0
  83. data/vendor/libgit2/include/git2/attr.h +20 -13
  84. data/vendor/libgit2/include/git2/blame.h +4 -4
  85. data/vendor/libgit2/include/git2/blob.h +44 -12
  86. data/vendor/libgit2/include/git2/buffer.h +20 -26
  87. data/vendor/libgit2/include/git2/cert.h +135 -0
  88. data/vendor/libgit2/include/git2/checkout.h +53 -21
  89. data/vendor/libgit2/include/git2/cherrypick.h +3 -3
  90. data/vendor/libgit2/include/git2/clone.h +5 -5
  91. data/vendor/libgit2/include/git2/commit.h +25 -3
  92. data/vendor/libgit2/include/git2/common.h +35 -10
  93. data/vendor/libgit2/include/git2/config.h +29 -19
  94. data/vendor/libgit2/include/git2/cred.h +308 -0
  95. data/vendor/libgit2/include/git2/deprecated.h +493 -0
  96. data/vendor/libgit2/include/git2/describe.h +4 -4
  97. data/vendor/libgit2/include/git2/diff.h +177 -135
  98. data/vendor/libgit2/include/git2/errors.h +53 -46
  99. data/vendor/libgit2/include/git2/filter.h +8 -0
  100. data/vendor/libgit2/include/git2/index.h +74 -52
  101. data/vendor/libgit2/include/git2/indexer.h +76 -6
  102. data/vendor/libgit2/include/git2/merge.h +25 -10
  103. data/vendor/libgit2/include/git2/net.h +0 -5
  104. data/vendor/libgit2/include/git2/notes.h +1 -1
  105. data/vendor/libgit2/include/git2/object.h +17 -29
  106. data/vendor/libgit2/include/git2/odb.h +12 -11
  107. data/vendor/libgit2/include/git2/odb_backend.h +10 -9
  108. data/vendor/libgit2/include/git2/oid.h +2 -2
  109. data/vendor/libgit2/include/git2/pack.h +14 -3
  110. data/vendor/libgit2/include/git2/proxy.h +5 -3
  111. data/vendor/libgit2/include/git2/rebase.h +46 -2
  112. data/vendor/libgit2/include/git2/refs.h +34 -16
  113. data/vendor/libgit2/include/git2/remote.h +111 -14
  114. data/vendor/libgit2/include/git2/repository.h +69 -34
  115. data/vendor/libgit2/include/git2/revert.h +1 -1
  116. data/vendor/libgit2/include/git2/revwalk.h +7 -7
  117. data/vendor/libgit2/include/git2/signature.h +2 -2
  118. data/vendor/libgit2/include/git2/stash.h +5 -5
  119. data/vendor/libgit2/include/git2/status.h +26 -17
  120. data/vendor/libgit2/include/git2/submodule.h +23 -6
  121. data/vendor/libgit2/include/git2/sys/alloc.h +18 -18
  122. data/vendor/libgit2/include/git2/sys/commit.h +1 -1
  123. data/vendor/libgit2/include/git2/sys/config.h +13 -13
  124. data/vendor/libgit2/include/git2/sys/cred.h +90 -0
  125. data/vendor/libgit2/include/git2/sys/filter.h +6 -6
  126. data/vendor/libgit2/include/git2/sys/merge.h +3 -3
  127. data/vendor/libgit2/include/git2/sys/odb_backend.h +66 -22
  128. data/vendor/libgit2/include/git2/sys/path.h +14 -5
  129. data/vendor/libgit2/include/git2/sys/refdb_backend.h +76 -40
  130. data/vendor/libgit2/include/git2/sys/repository.h +5 -1
  131. data/vendor/libgit2/include/git2/sys/stream.h +92 -12
  132. data/vendor/libgit2/include/git2/sys/transport.h +129 -83
  133. data/vendor/libgit2/include/git2/tag.h +13 -4
  134. data/vendor/libgit2/include/git2/trace.h +2 -2
  135. data/vendor/libgit2/include/git2/transport.h +11 -311
  136. data/vendor/libgit2/include/git2/tree.h +4 -4
  137. data/vendor/libgit2/include/git2/types.h +25 -106
  138. data/vendor/libgit2/include/git2/version.h +3 -3
  139. data/vendor/libgit2/include/git2/worktree.h +5 -5
  140. data/vendor/libgit2/include/git2.h +4 -0
  141. data/vendor/libgit2/src/CMakeLists.txt +104 -235
  142. data/vendor/libgit2/src/alloc.c +14 -18
  143. data/vendor/libgit2/src/{stdalloc.c → allocators/stdalloc.c} +7 -8
  144. data/vendor/libgit2/src/{stdalloc.h → allocators/stdalloc.h} +4 -4
  145. data/vendor/libgit2/src/allocators/win32_crtdbg.c +118 -0
  146. data/vendor/libgit2/src/{transports/cred.h → allocators/win32_crtdbg.h} +5 -4
  147. data/vendor/libgit2/src/annotated_commit.c +18 -11
  148. data/vendor/libgit2/src/apply.c +535 -28
  149. data/vendor/libgit2/src/apply.h +3 -1
  150. data/vendor/libgit2/src/array.h +2 -2
  151. data/vendor/libgit2/src/attr.c +77 -71
  152. data/vendor/libgit2/src/attr_file.c +203 -117
  153. data/vendor/libgit2/src/attr_file.h +9 -9
  154. data/vendor/libgit2/src/attrcache.c +49 -51
  155. data/vendor/libgit2/src/attrcache.h +2 -1
  156. data/vendor/libgit2/src/blame.c +38 -18
  157. data/vendor/libgit2/src/blame.h +1 -1
  158. data/vendor/libgit2/src/blame_git.c +29 -15
  159. data/vendor/libgit2/src/blob.c +123 -37
  160. data/vendor/libgit2/src/blob.h +19 -2
  161. data/vendor/libgit2/src/branch.c +47 -23
  162. data/vendor/libgit2/src/buf_text.c +7 -6
  163. data/vendor/libgit2/src/buffer.c +60 -53
  164. data/vendor/libgit2/src/cache.c +38 -45
  165. data/vendor/libgit2/src/cache.h +3 -3
  166. data/vendor/libgit2/src/cc-compat.h +20 -3
  167. data/vendor/libgit2/src/checkout.c +77 -67
  168. data/vendor/libgit2/src/cherrypick.c +12 -6
  169. data/vendor/libgit2/src/clone.c +36 -14
  170. data/vendor/libgit2/src/clone.h +4 -0
  171. data/vendor/libgit2/src/commit.c +103 -48
  172. data/vendor/libgit2/src/commit.h +7 -0
  173. data/vendor/libgit2/src/commit_list.c +36 -78
  174. data/vendor/libgit2/src/commit_list.h +2 -2
  175. data/vendor/libgit2/src/common.h +24 -90
  176. data/vendor/libgit2/src/config.c +203 -176
  177. data/vendor/libgit2/src/config.h +8 -20
  178. data/vendor/libgit2/src/config_backend.h +96 -0
  179. data/vendor/libgit2/src/config_cache.c +41 -35
  180. data/vendor/libgit2/src/config_entries.c +229 -0
  181. data/vendor/libgit2/src/config_entries.h +24 -0
  182. data/vendor/libgit2/src/config_file.c +422 -680
  183. data/vendor/libgit2/src/config_mem.c +220 -0
  184. data/vendor/libgit2/src/config_parse.c +96 -68
  185. data/vendor/libgit2/src/config_parse.h +15 -14
  186. data/vendor/libgit2/src/config_snapshot.c +206 -0
  187. data/vendor/libgit2/src/crlf.c +219 -196
  188. data/vendor/libgit2/src/delta.c +25 -18
  189. data/vendor/libgit2/src/describe.c +42 -41
  190. data/vendor/libgit2/src/diff.c +52 -67
  191. data/vendor/libgit2/src/diff.h +2 -1
  192. data/vendor/libgit2/src/diff_driver.c +44 -46
  193. data/vendor/libgit2/src/diff_file.c +16 -14
  194. data/vendor/libgit2/src/diff_file.h +1 -1
  195. data/vendor/libgit2/src/diff_generate.c +158 -103
  196. data/vendor/libgit2/src/diff_generate.h +3 -3
  197. data/vendor/libgit2/src/diff_parse.c +4 -4
  198. data/vendor/libgit2/src/diff_print.c +34 -22
  199. data/vendor/libgit2/src/diff_stats.c +22 -7
  200. data/vendor/libgit2/src/diff_tform.c +18 -16
  201. data/vendor/libgit2/src/diff_xdiff.c +3 -3
  202. data/vendor/libgit2/src/errors.c +51 -39
  203. data/vendor/libgit2/src/errors.h +81 -0
  204. data/vendor/libgit2/src/features.h.in +9 -3
  205. data/vendor/libgit2/src/fetch.c +8 -3
  206. data/vendor/libgit2/src/fetchhead.c +12 -12
  207. data/vendor/libgit2/src/filebuf.c +28 -32
  208. data/vendor/libgit2/src/filebuf.h +2 -2
  209. data/vendor/libgit2/src/filter.c +47 -33
  210. data/vendor/libgit2/src/filter.h +0 -10
  211. data/vendor/libgit2/src/{fileops.c → futils.c} +70 -63
  212. data/vendor/libgit2/src/{fileops.h → futils.h} +6 -6
  213. data/vendor/libgit2/src/global.c +35 -55
  214. data/vendor/libgit2/src/global.h +0 -2
  215. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +48 -0
  216. data/vendor/libgit2/src/hash/sha1/collisiondetect.h +19 -0
  217. data/vendor/libgit2/src/hash/{hash_common_crypto.h → sha1/common_crypto.c} +17 -17
  218. data/vendor/libgit2/src/hash/sha1/common_crypto.h +19 -0
  219. data/vendor/libgit2/src/hash/{hash_generic.c → sha1/generic.c} +22 -10
  220. data/vendor/libgit2/src/hash/{hash_generic.h → sha1/generic.h} +4 -10
  221. data/vendor/libgit2/src/hash/{hash_mbedtls.c → sha1/mbedtls.c} +15 -7
  222. data/vendor/libgit2/src/hash/{hash_mbedtls.h → sha1/mbedtls.h} +6 -7
  223. data/vendor/libgit2/src/hash/sha1/openssl.c +59 -0
  224. data/vendor/libgit2/src/hash/sha1/openssl.h +19 -0
  225. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.c +14 -3
  226. data/vendor/libgit2/src/hash/{hash_win32.c → sha1/win32.c} +47 -37
  227. data/vendor/libgit2/src/hash/{hash_win32.h → sha1/win32.h} +6 -19
  228. data/vendor/libgit2/src/hash/sha1.h +38 -0
  229. data/vendor/libgit2/src/hash.c +61 -0
  230. data/vendor/libgit2/src/hash.h +20 -21
  231. data/vendor/libgit2/src/hashsig.c +5 -5
  232. data/vendor/libgit2/src/idxmap.c +107 -61
  233. data/vendor/libgit2/src/idxmap.h +153 -31
  234. data/vendor/libgit2/src/ignore.c +38 -42
  235. data/vendor/libgit2/src/index.c +264 -199
  236. data/vendor/libgit2/src/index.h +7 -1
  237. data/vendor/libgit2/src/indexer.c +338 -167
  238. data/vendor/libgit2/src/integer.h +71 -26
  239. data/vendor/libgit2/src/iterator.c +134 -62
  240. data/vendor/libgit2/src/iterator.h +15 -0
  241. data/vendor/libgit2/src/mailmap.c +8 -8
  242. data/vendor/libgit2/src/map.h +1 -1
  243. data/vendor/libgit2/src/merge.c +137 -93
  244. data/vendor/libgit2/src/merge_driver.c +11 -11
  245. data/vendor/libgit2/src/merge_file.c +2 -2
  246. data/vendor/libgit2/src/mwindow.c +24 -29
  247. data/vendor/libgit2/src/mwindow.h +4 -4
  248. data/vendor/libgit2/src/net.c +184 -0
  249. data/vendor/libgit2/src/net.h +36 -0
  250. data/vendor/libgit2/src/netops.c +55 -156
  251. data/vendor/libgit2/src/netops.h +3 -23
  252. data/vendor/libgit2/src/notes.c +14 -9
  253. data/vendor/libgit2/src/object.c +120 -69
  254. data/vendor/libgit2/src/object.h +22 -9
  255. data/vendor/libgit2/src/object_api.c +8 -8
  256. data/vendor/libgit2/src/odb.c +111 -88
  257. data/vendor/libgit2/src/odb.h +8 -7
  258. data/vendor/libgit2/src/odb_loose.c +58 -47
  259. data/vendor/libgit2/src/odb_mempack.c +21 -34
  260. data/vendor/libgit2/src/odb_pack.c +17 -13
  261. data/vendor/libgit2/src/offmap.c +53 -35
  262. data/vendor/libgit2/src/offmap.h +108 -21
  263. data/vendor/libgit2/src/oid.c +12 -7
  264. data/vendor/libgit2/src/oidmap.c +49 -47
  265. data/vendor/libgit2/src/oidmap.h +101 -24
  266. data/vendor/libgit2/src/pack-objects.c +87 -86
  267. data/vendor/libgit2/src/pack-objects.h +2 -8
  268. data/vendor/libgit2/src/pack.c +94 -96
  269. data/vendor/libgit2/src/pack.h +16 -18
  270. data/vendor/libgit2/src/parse.c +17 -4
  271. data/vendor/libgit2/src/parse.h +3 -3
  272. data/vendor/libgit2/src/patch.c +3 -3
  273. data/vendor/libgit2/src/patch_generate.c +18 -18
  274. data/vendor/libgit2/src/patch_parse.c +147 -79
  275. data/vendor/libgit2/src/path.c +207 -62
  276. data/vendor/libgit2/src/path.h +14 -0
  277. data/vendor/libgit2/src/pathspec.c +18 -18
  278. data/vendor/libgit2/src/pool.c +26 -22
  279. data/vendor/libgit2/src/pool.h +7 -7
  280. data/vendor/libgit2/src/posix.c +10 -10
  281. data/vendor/libgit2/src/posix.h +12 -1
  282. data/vendor/libgit2/src/proxy.c +8 -3
  283. data/vendor/libgit2/src/push.c +35 -29
  284. data/vendor/libgit2/src/push.h +2 -1
  285. data/vendor/libgit2/src/reader.c +265 -0
  286. data/vendor/libgit2/src/reader.h +107 -0
  287. data/vendor/libgit2/src/rebase.c +97 -38
  288. data/vendor/libgit2/src/refdb.c +15 -3
  289. data/vendor/libgit2/src/refdb_fs.c +318 -222
  290. data/vendor/libgit2/src/reflog.c +13 -15
  291. data/vendor/libgit2/src/refs.c +122 -89
  292. data/vendor/libgit2/src/refs.h +5 -3
  293. data/vendor/libgit2/src/refspec.c +27 -33
  294. data/vendor/libgit2/src/regexp.c +221 -0
  295. data/vendor/libgit2/src/regexp.h +97 -0
  296. data/vendor/libgit2/src/remote.c +229 -178
  297. data/vendor/libgit2/src/remote.h +11 -2
  298. data/vendor/libgit2/src/repository.c +227 -172
  299. data/vendor/libgit2/src/repository.h +52 -40
  300. data/vendor/libgit2/src/reset.c +7 -7
  301. data/vendor/libgit2/src/revert.c +11 -6
  302. data/vendor/libgit2/src/revparse.c +46 -46
  303. data/vendor/libgit2/src/revwalk.c +89 -54
  304. data/vendor/libgit2/src/revwalk.h +20 -0
  305. data/vendor/libgit2/src/settings.c +22 -9
  306. data/vendor/libgit2/src/signature.c +15 -13
  307. data/vendor/libgit2/src/sortedcache.c +22 -36
  308. data/vendor/libgit2/src/sortedcache.h +1 -1
  309. data/vendor/libgit2/src/stash.c +56 -76
  310. data/vendor/libgit2/src/status.c +27 -21
  311. data/vendor/libgit2/src/stream.h +17 -2
  312. data/vendor/libgit2/src/streams/mbedtls.c +100 -80
  313. data/vendor/libgit2/src/streams/mbedtls.h +5 -2
  314. data/vendor/libgit2/src/streams/openssl.c +93 -81
  315. data/vendor/libgit2/src/streams/openssl.h +5 -2
  316. data/vendor/libgit2/src/streams/registry.c +118 -0
  317. data/vendor/libgit2/src/streams/registry.h +19 -0
  318. data/vendor/libgit2/src/streams/socket.c +55 -30
  319. data/vendor/libgit2/src/streams/stransport.c +57 -32
  320. data/vendor/libgit2/src/streams/stransport.h +5 -0
  321. data/vendor/libgit2/src/streams/tls.c +48 -20
  322. data/vendor/libgit2/src/streams/tls.h +12 -4
  323. data/vendor/libgit2/src/strmap.c +47 -74
  324. data/vendor/libgit2/src/strmap.h +108 -33
  325. data/vendor/libgit2/src/submodule.c +190 -169
  326. data/vendor/libgit2/src/submodule.h +1 -1
  327. data/vendor/libgit2/src/sysdir.c +25 -15
  328. data/vendor/libgit2/src/tag.c +39 -26
  329. data/vendor/libgit2/src/tag.h +2 -1
  330. data/vendor/libgit2/src/trace.c +2 -2
  331. data/vendor/libgit2/src/trace.h +2 -2
  332. data/vendor/libgit2/src/trailer.c +46 -32
  333. data/vendor/libgit2/src/transaction.c +30 -29
  334. data/vendor/libgit2/src/transport.c +3 -3
  335. data/vendor/libgit2/src/transports/auth.c +14 -10
  336. data/vendor/libgit2/src/transports/auth.h +10 -3
  337. data/vendor/libgit2/src/transports/auth_negotiate.c +31 -16
  338. data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
  339. data/vendor/libgit2/src/transports/auth_ntlm.c +223 -0
  340. data/vendor/libgit2/src/transports/auth_ntlm.h +35 -0
  341. data/vendor/libgit2/src/transports/cred.c +24 -24
  342. data/vendor/libgit2/src/transports/git.c +25 -30
  343. data/vendor/libgit2/src/transports/http.c +871 -335
  344. data/vendor/libgit2/src/transports/http.h +2 -0
  345. data/vendor/libgit2/src/transports/local.c +28 -28
  346. data/vendor/libgit2/src/transports/smart.c +64 -46
  347. data/vendor/libgit2/src/transports/smart.h +5 -6
  348. data/vendor/libgit2/src/transports/smart_pkt.c +162 -151
  349. data/vendor/libgit2/src/transports/smart_protocol.c +64 -94
  350. data/vendor/libgit2/src/transports/ssh.c +76 -65
  351. data/vendor/libgit2/src/transports/winhttp.c +328 -319
  352. data/vendor/libgit2/src/tree-cache.c +21 -14
  353. data/vendor/libgit2/src/tree.c +119 -112
  354. data/vendor/libgit2/src/tree.h +1 -0
  355. data/vendor/libgit2/src/unix/map.c +3 -3
  356. data/vendor/libgit2/src/unix/posix.h +1 -11
  357. data/vendor/libgit2/src/userdiff.h +3 -1
  358. data/vendor/libgit2/src/util.c +154 -93
  359. data/vendor/libgit2/src/util.h +19 -23
  360. data/vendor/libgit2/src/vector.c +15 -10
  361. data/vendor/libgit2/src/wildmatch.c +320 -0
  362. data/vendor/libgit2/src/wildmatch.h +23 -0
  363. data/vendor/libgit2/src/win32/dir.c +3 -3
  364. data/vendor/libgit2/src/win32/findfile.c +1 -1
  365. data/vendor/libgit2/src/win32/map.c +9 -11
  366. data/vendor/libgit2/src/win32/msvc-compat.h +6 -0
  367. data/vendor/libgit2/src/win32/path_w32.c +113 -9
  368. data/vendor/libgit2/src/win32/path_w32.h +18 -29
  369. data/vendor/libgit2/src/win32/posix.h +1 -4
  370. data/vendor/libgit2/src/win32/posix_w32.c +69 -44
  371. data/vendor/libgit2/src/win32/precompiled.h +0 -2
  372. data/vendor/libgit2/src/win32/thread.c +5 -10
  373. data/vendor/libgit2/src/win32/w32_buffer.c +9 -5
  374. data/vendor/libgit2/src/win32/w32_common.h +39 -0
  375. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +2 -95
  376. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -2
  377. data/vendor/libgit2/src/win32/w32_stack.c +6 -11
  378. data/vendor/libgit2/src/win32/w32_stack.h +3 -3
  379. data/vendor/libgit2/src/win32/w32_util.c +27 -64
  380. data/vendor/libgit2/src/win32/w32_util.h +5 -49
  381. data/vendor/libgit2/src/worktree.c +44 -30
  382. data/vendor/libgit2/src/xdiff/xdiffi.c +5 -5
  383. data/vendor/libgit2/src/xdiff/xhistogram.c +1 -1
  384. data/vendor/libgit2/src/xdiff/xmerge.c +27 -15
  385. data/vendor/libgit2/src/xdiff/xpatience.c +3 -0
  386. data/vendor/libgit2/src/zstream.c +4 -4
  387. metadata +115 -38
  388. data/vendor/libgit2/deps/regex/CMakeLists.txt +0 -2
  389. data/vendor/libgit2/deps/regex/config.h +0 -7
  390. data/vendor/libgit2/deps/regex/regcomp.c +0 -3857
  391. data/vendor/libgit2/deps/regex/regex.c +0 -92
  392. data/vendor/libgit2/deps/regex/regex.h +0 -582
  393. data/vendor/libgit2/deps/regex/regex_internal.c +0 -1744
  394. data/vendor/libgit2/deps/regex/regex_internal.h +0 -819
  395. data/vendor/libgit2/deps/regex/regexec.c +0 -4369
  396. data/vendor/libgit2/include/git2/inttypes.h +0 -309
  397. data/vendor/libgit2/include/git2/sys/time.h +0 -31
  398. data/vendor/libgit2/libgit2.pc.in +0 -13
  399. data/vendor/libgit2/src/config_file.h +0 -73
  400. data/vendor/libgit2/src/fnmatch.c +0 -248
  401. data/vendor/libgit2/src/fnmatch.h +0 -48
  402. data/vendor/libgit2/src/hash/hash_collisiondetect.h +0 -47
  403. data/vendor/libgit2/src/hash/hash_openssl.h +0 -59
  404. data/vendor/libgit2/src/streams/curl.c +0 -385
  405. data/vendor/libgit2/src/streams/curl.h +0 -17
  406. /data/vendor/libgit2/deps/http-parser/{LICENSE-MIT → COPYING} +0 -0
  407. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.h +0 -0
  408. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.c +0 -0
  409. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.h +0 -0
@@ -16,10 +16,11 @@
16
16
  #include "commit_list.h"
17
17
  #include "oidmap.h"
18
18
  #include "refs.h"
19
+ #include "repository.h"
19
20
  #include "revwalk.h"
20
21
  #include "tag.h"
21
22
  #include "vector.h"
22
- #include "repository.h"
23
+ #include "wildmatch.h"
23
24
 
24
25
  /* Ported from https://github.com/git/git/blob/89dde7882f71f846ccd0359756d27bebc31108de/builtin/describe.c */
25
26
 
@@ -36,12 +37,7 @@ struct commit_name {
36
37
 
37
38
  static void *oidmap_value_bykey(git_oidmap *map, const git_oid *key)
38
39
  {
39
- khint_t pos = git_oidmap_lookup_index(map, key);
40
-
41
- if (!git_oidmap_valid_index(map, pos))
42
- return NULL;
43
-
44
- return git_oidmap_value_at(map, pos);
40
+ return git_oidmap_get(map, key);
45
41
  }
46
42
 
47
43
  static struct commit_name *find_commit_name(
@@ -108,7 +104,7 @@ static int add_to_known_names(
108
104
  if (replace_name(&tag, repo, e, prio, sha1)) {
109
105
  if (!found) {
110
106
  e = git__malloc(sizeof(struct commit_name));
111
- GITERR_CHECK_ALLOC(e);
107
+ GIT_ERROR_CHECK_ALLOC(e);
112
108
 
113
109
  e->path = NULL;
114
110
  e->tag = NULL;
@@ -124,13 +120,8 @@ static int add_to_known_names(
124
120
  e->path = git__strdup(path);
125
121
  git_oid_cpy(&e->peeled, peeled);
126
122
 
127
- if (!found) {
128
- int ret;
129
-
130
- git_oidmap_insert(names, &e->peeled, e, &ret);
131
- if (ret < 0)
132
- return -1;
133
- }
123
+ if (!found && git_oidmap_set(names, &e->peeled, e) < 0)
124
+ return -1;
134
125
  }
135
126
  else
136
127
  git_tag_free(tag);
@@ -151,7 +142,7 @@ static int retrieve_peeled_tag_or_object_oid(
151
142
  if ((error = git_reference_lookup_resolved(&ref, repo, refname, -1)) < 0)
152
143
  return error;
153
144
 
154
- if ((error = git_reference_peel(&peeled, ref, GIT_OBJ_ANY)) < 0)
145
+ if ((error = git_reference_peel(&peeled, ref, GIT_OBJECT_ANY)) < 0)
155
146
  goto cleanup;
156
147
 
157
148
  git_oid_cpy(ref_target_out, git_reference_target(ref));
@@ -191,7 +182,7 @@ static int commit_name_dup(struct commit_name **out, struct commit_name *in)
191
182
  struct commit_name *name;
192
183
 
193
184
  name = git__malloc(sizeof(struct commit_name));
194
- GITERR_CHECK_ALLOC(name);
185
+ GIT_ERROR_CHECK_ALLOC(name);
195
186
 
196
187
  memcpy(name, in, sizeof(struct commit_name));
197
188
  name->tag = NULL;
@@ -201,7 +192,7 @@ static int commit_name_dup(struct commit_name **out, struct commit_name *in)
201
192
  return -1;
202
193
 
203
194
  name->path = git__strdup(in->path);
204
- GITERR_CHECK_ALLOC(name->path);
195
+ GIT_ERROR_CHECK_ALLOC(name->path);
205
196
 
206
197
  *out = name;
207
198
  return 0;
@@ -224,7 +215,7 @@ static int get_name(const char *refname, void *payload)
224
215
  return 0;
225
216
 
226
217
  /* Accept only tags that match the pattern, if given */
227
- if (data->opts->pattern && (!is_tag || p_fnmatch(data->opts->pattern,
218
+ if (data->opts->pattern && (!is_tag || wildmatch(data->opts->pattern,
228
219
  refname + strlen(GIT_REFS_TAGS_DIR), 0)))
229
220
  return 0;
230
221
 
@@ -267,7 +258,7 @@ static int possible_tag_dup(struct possible_tag **out, struct possible_tag *in)
267
258
  int error;
268
259
 
269
260
  tag = git__malloc(sizeof(struct possible_tag));
270
- GITERR_CHECK_ALLOC(tag);
261
+ GIT_ERROR_CHECK_ALLOC(tag);
271
262
 
272
263
  memcpy(tag, in, sizeof(struct possible_tag));
273
264
  tag->name = NULL;
@@ -335,14 +326,14 @@ static int display_name(git_buf *buf, git_repository *repo, struct commit_name *
335
326
  {
336
327
  if (n->prio == 2 && !n->tag) {
337
328
  if (git_tag_lookup(&n->tag, repo, &n->sha1) < 0) {
338
- giterr_set(GITERR_TAG, "annotated tag '%s' not available", n->path);
329
+ git_error_set(GIT_ERROR_TAG, "annotated tag '%s' not available", n->path);
339
330
  return -1;
340
331
  }
341
332
  }
342
333
 
343
334
  if (n->tag && !n->name_checked) {
344
335
  if (!git_tag_name(n->tag)) {
345
- giterr_set(GITERR_TAG, "annotated tag '%s' has no embedded name", n->path);
336
+ git_error_set(GIT_ERROR_TAG, "annotated tag '%s' has no embedded name", n->path);
346
337
  return -1;
347
338
  }
348
339
 
@@ -366,7 +357,7 @@ static int find_unique_abbrev_size(
366
357
  int *out,
367
358
  git_repository *repo,
368
359
  const git_oid *oid_in,
369
- int abbreviated_size)
360
+ unsigned int abbreviated_size)
370
361
  {
371
362
  size_t size = abbreviated_size;
372
363
  git_odb *odb;
@@ -392,7 +383,7 @@ static int find_unique_abbrev_size(
392
383
 
393
384
  /* If we didn't find any shorter prefix, we have to do the whole thing */
394
385
  *out = GIT_OID_HEXSZ;
395
-
386
+
396
387
  return 0;
397
388
  }
398
389
 
@@ -401,7 +392,7 @@ static int show_suffix(
401
392
  int depth,
402
393
  git_repository *repo,
403
394
  const git_oid* id,
404
- size_t abbrev_size)
395
+ unsigned int abbrev_size)
405
396
  {
406
397
  int error, size = 0;
407
398
 
@@ -425,7 +416,7 @@ static int describe_not_found(const git_oid *oid, const char *message_format) {
425
416
  char oid_str[GIT_OID_HEXSZ + 1];
426
417
  git_oid_tostr(oid_str, sizeof(oid_str), oid);
427
418
 
428
- giterr_set(GITERR_DESCRIBE, message_format, oid_str);
419
+ git_error_set(GIT_ERROR_DESCRIBE, message_format, oid_str);
429
420
  return GIT_ENOTFOUND;
430
421
  }
431
422
 
@@ -504,7 +495,7 @@ static int describe(
504
495
  unannotated_cnt++;
505
496
  } else if (match_cnt < data->opts->max_candidates_tags) {
506
497
  struct possible_tag *t = git__malloc(sizeof(struct commit_name));
507
- GITERR_CHECK_ALLOC(t);
498
+ GIT_ERROR_CHECK_ALLOC(t);
508
499
  if ((error = git_vector_insert(&all_matches, t)) < 0)
509
500
  goto cleanup;
510
501
 
@@ -563,14 +554,14 @@ static int describe(
563
554
  goto cleanup;
564
555
  }
565
556
  if (unannotated_cnt) {
566
- error = describe_not_found(git_commit_id(commit),
557
+ error = describe_not_found(git_commit_id(commit),
567
558
  "cannot describe - "
568
559
  "no annotated tags can describe '%s'; "
569
560
  "however, there were unannotated tags.");
570
561
  goto cleanup;
571
562
  }
572
563
  else {
573
- error = describe_not_found(git_commit_id(commit),
564
+ error = describe_not_found(git_commit_id(commit),
574
565
  "cannot describe - "
575
566
  "no tags can describe '%s'.");
576
567
  goto cleanup;
@@ -667,7 +658,7 @@ int git_describe_commit(
667
658
  assert(committish);
668
659
 
669
660
  data.result = git__calloc(1, sizeof(git_describe_result));
670
- GITERR_CHECK_ALLOC(data.result);
661
+ GIT_ERROR_CHECK_ALLOC(data.result);
671
662
  data.result->repo = git_object_owner(committish);
672
663
 
673
664
  data.repo = git_object_owner(committish);
@@ -675,18 +666,18 @@ int git_describe_commit(
675
666
  if ((error = normalize_options(&normalized, opts)) < 0)
676
667
  return error;
677
668
 
678
- GITERR_CHECK_VERSION(
669
+ GIT_ERROR_CHECK_VERSION(
679
670
  &normalized,
680
671
  GIT_DESCRIBE_OPTIONS_VERSION,
681
672
  "git_describe_options");
682
673
  data.opts = &normalized;
683
674
 
684
- data.names = git_oidmap_alloc();
685
- GITERR_CHECK_ALLOC(data.names);
675
+ if ((error = git_oidmap_new(&data.names)) < 0)
676
+ return error;
686
677
 
687
678
  /** TODO: contains to be implemented */
688
679
 
689
- if ((error = git_object_peel((git_object **)(&commit), committish, GIT_OBJ_COMMIT)) < 0)
680
+ if ((error = git_object_peel((git_object **)(&commit), committish, GIT_OBJECT_COMMIT)) < 0)
690
681
  goto cleanup;
691
682
 
692
683
  if ((error = git_reference_foreach_name(
@@ -695,7 +686,7 @@ int git_describe_commit(
695
686
  goto cleanup;
696
687
 
697
688
  if (git_oidmap_size(data.names) == 0 && !opts->show_commit_oid_as_fallback) {
698
- giterr_set(GITERR_DESCRIBE, "cannot describe - "
689
+ git_error_set(GIT_ERROR_DESCRIBE, "cannot describe - "
699
690
  "no reference found, cannot describe anything.");
700
691
  error = -1;
701
692
  goto cleanup;
@@ -738,7 +729,7 @@ int git_describe_workdir(
738
729
  if ((error = git_reference_name_to_id(&current_id, repo, GIT_HEAD_FILE)) < 0)
739
730
  return error;
740
731
 
741
- if ((error = git_object_lookup(&commit, repo, &current_id, GIT_OBJ_COMMIT)) < 0)
732
+ if ((error = git_object_lookup(&commit, repo, &current_id, GIT_OBJECT_COMMIT)) < 0)
742
733
  return error;
743
734
 
744
735
  /* The first step is to perform a describe of HEAD, so we can leverage this */
@@ -769,7 +760,7 @@ static int normalize_format_options(
769
760
  const git_describe_format_options *src)
770
761
  {
771
762
  if (!src) {
772
- git_describe_init_format_options(dst, GIT_DESCRIBE_FORMAT_OPTIONS_VERSION);
763
+ git_describe_format_options_init(dst, GIT_DESCRIBE_FORMAT_OPTIONS_VERSION);
773
764
  return 0;
774
765
  }
775
766
 
@@ -786,14 +777,14 @@ int git_describe_format(git_buf *out, const git_describe_result *result, const g
786
777
 
787
778
  assert(out && result);
788
779
 
789
- GITERR_CHECK_VERSION(given, GIT_DESCRIBE_FORMAT_OPTIONS_VERSION, "git_describe_format_options");
780
+ GIT_ERROR_CHECK_VERSION(given, GIT_DESCRIBE_FORMAT_OPTIONS_VERSION, "git_describe_format_options");
790
781
  normalize_format_options(&opts, given);
791
782
 
792
783
  git_buf_sanitize(out);
793
784
 
794
785
 
795
786
  if (opts.always_use_long_format && opts.abbreviated_size == 0) {
796
- giterr_set(GITERR_DESCRIBE, "cannot describe - "
787
+ git_error_set(GIT_ERROR_DESCRIBE, "cannot describe - "
797
788
  "'always_use_long_format' is incompatible with a zero"
798
789
  "'abbreviated_size'");
799
790
  return -1;
@@ -878,16 +869,26 @@ void git_describe_result_free(git_describe_result *result)
878
869
  git__free(result);
879
870
  }
880
871
 
881
- int git_describe_init_options(git_describe_options *opts, unsigned int version)
872
+ int git_describe_options_init(git_describe_options *opts, unsigned int version)
882
873
  {
883
874
  GIT_INIT_STRUCTURE_FROM_TEMPLATE(
884
875
  opts, version, git_describe_options, GIT_DESCRIBE_OPTIONS_INIT);
885
876
  return 0;
886
877
  }
887
878
 
888
- int git_describe_init_format_options(git_describe_format_options *opts, unsigned int version)
879
+ int git_describe_init_options(git_describe_options *opts, unsigned int version)
880
+ {
881
+ return git_describe_options_init(opts, version);
882
+ }
883
+
884
+ int git_describe_format_options_init(git_describe_format_options *opts, unsigned int version)
889
885
  {
890
886
  GIT_INIT_STRUCTURE_FROM_TEMPLATE(
891
887
  opts, version, git_describe_format_options, GIT_DESCRIBE_FORMAT_OPTIONS_INIT);
892
888
  return 0;
893
889
  }
890
+
891
+ int git_describe_init_format_options(git_describe_format_options *opts, unsigned int version)
892
+ {
893
+ return git_describe_format_options_init(opts, version);
894
+ }
@@ -114,7 +114,7 @@ int git_diff_is_sorted_icase(const git_diff *diff)
114
114
  int git_diff_get_perfdata(git_diff_perfdata *out, const git_diff *diff)
115
115
  {
116
116
  assert(out);
117
- GITERR_CHECK_VERSION(out, GIT_DIFF_PERFDATA_VERSION, "git_diff_perfdata");
117
+ GIT_ERROR_CHECK_VERSION(out, GIT_DIFF_PERFDATA_VERSION, "git_diff_perfdata");
118
118
  out->stat_calls = diff->perf.stat_calls;
119
119
  out->oid_calculations = diff->perf.oid_calculations;
120
120
  return 0;
@@ -251,7 +251,7 @@ int git_diff_format_email(
251
251
  assert(out && diff && opts);
252
252
  assert(opts->summary && opts->id && opts->author);
253
253
 
254
- GITERR_CHECK_VERSION(opts,
254
+ GIT_ERROR_CHECK_VERSION(opts,
255
255
  GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION,
256
256
  "git_format_email_options");
257
257
 
@@ -260,14 +260,14 @@ int git_diff_format_email(
260
260
 
261
261
  if (!ignore_marker) {
262
262
  if (opts->patch_no > opts->total_patches) {
263
- giterr_set(GITERR_INVALID,
263
+ git_error_set(GIT_ERROR_INVALID,
264
264
  "patch %"PRIuZ" out of range. max %"PRIuZ,
265
265
  opts->patch_no, opts->total_patches);
266
266
  return -1;
267
267
  }
268
268
 
269
269
  if (opts->patch_no == 0) {
270
- giterr_set(GITERR_INVALID,
270
+ git_error_set(GIT_ERROR_INVALID,
271
271
  "invalid patch no %"PRIuZ". should be >0", opts->patch_no);
272
272
  return -1;
273
273
  }
@@ -280,14 +280,14 @@ int git_diff_format_email(
280
280
  size_t offset = 0;
281
281
 
282
282
  if ((offset = (loc - opts->summary)) == 0) {
283
- giterr_set(GITERR_INVALID, "summary is empty");
283
+ git_error_set(GIT_ERROR_INVALID, "summary is empty");
284
284
  error = -1;
285
285
  goto on_error;
286
286
  }
287
287
 
288
- GITERR_CHECK_ALLOC_ADD(&allocsize, offset, 1);
288
+ GIT_ERROR_CHECK_ALLOC_ADD(&allocsize, offset, 1);
289
289
  summary = git__calloc(allocsize, sizeof(char));
290
- GITERR_CHECK_ALLOC(summary);
290
+ GIT_ERROR_CHECK_ALLOC(summary);
291
291
 
292
292
  strncpy(summary, opts->summary, offset);
293
293
  }
@@ -323,7 +323,7 @@ int git_diff_commit_as_email(
323
323
  git_commit *commit,
324
324
  size_t patch_no,
325
325
  size_t total_patches,
326
- git_diff_format_email_flags_t flags,
326
+ uint32_t flags,
327
327
  const git_diff_options *diff_opts)
328
328
  {
329
329
  git_diff *diff = NULL;
@@ -350,14 +350,19 @@ int git_diff_commit_as_email(
350
350
  return error;
351
351
  }
352
352
 
353
- int git_diff_init_options(git_diff_options *opts, unsigned int version)
353
+ int git_diff_options_init(git_diff_options *opts, unsigned int version)
354
354
  {
355
355
  GIT_INIT_STRUCTURE_FROM_TEMPLATE(
356
356
  opts, version, git_diff_options, GIT_DIFF_OPTIONS_INIT);
357
357
  return 0;
358
358
  }
359
359
 
360
- int git_diff_find_init_options(
360
+ int git_diff_init_options(git_diff_options *opts, unsigned int version)
361
+ {
362
+ return git_diff_options_init(opts, version);
363
+ }
364
+
365
+ int git_diff_find_options_init(
361
366
  git_diff_find_options *opts, unsigned int version)
362
367
  {
363
368
  GIT_INIT_STRUCTURE_FROM_TEMPLATE(
@@ -365,7 +370,13 @@ int git_diff_find_init_options(
365
370
  return 0;
366
371
  }
367
372
 
368
- int git_diff_format_email_init_options(
373
+ int git_diff_find_init_options(
374
+ git_diff_find_options *opts, unsigned int version)
375
+ {
376
+ return git_diff_find_options_init(opts, version);
377
+ }
378
+
379
+ int git_diff_format_email_options_init(
369
380
  git_diff_format_email_options *opts, unsigned int version)
370
381
  {
371
382
  GIT_INIT_STRUCTURE_FROM_TEMPLATE(
@@ -374,6 +385,12 @@ int git_diff_format_email_init_options(
374
385
  return 0;
375
386
  }
376
387
 
388
+ int git_diff_format_email_init_options(
389
+ git_diff_format_email_options *opts, unsigned int version)
390
+ {
391
+ return git_diff_format_email_options_init(opts, version);
392
+ }
393
+
377
394
  static int flush_hunk(git_oid *result, git_hash_ctx *ctx)
378
395
  {
379
396
  git_oid hash;
@@ -386,7 +403,7 @@ static int flush_hunk(git_oid *result, git_hash_ctx *ctx)
386
403
 
387
404
  for (i = 0; i < GIT_OID_RAWSZ; i++) {
388
405
  carry += result->id[i] + hash.id[i];
389
- result->id[i] = carry;
406
+ result->id[i] = (unsigned char)carry;
390
407
  carry >>= 8;
391
408
  }
392
409
 
@@ -409,79 +426,44 @@ static void strip_spaces(git_buf *buf)
409
426
  git_buf_truncate(buf, len);
410
427
  }
411
428
 
412
- static int file_cb(
429
+ int git_diff_patchid_print_callback__to_buf(
413
430
  const git_diff_delta *delta,
414
- float progress,
431
+ const git_diff_hunk *hunk,
432
+ const git_diff_line *line,
415
433
  void *payload)
416
434
  {
417
435
  struct patch_id_args *args = (struct patch_id_args *) payload;
418
436
  git_buf buf = GIT_BUF_INIT;
419
- int error;
420
-
421
- GIT_UNUSED(progress);
437
+ int error = 0;
422
438
 
423
- if (!args->first_file &&
424
- (error = flush_hunk(&args->result, &args->ctx)) < 0)
439
+ if (line->origin == GIT_DIFF_LINE_CONTEXT_EOFNL ||
440
+ line->origin == GIT_DIFF_LINE_ADD_EOFNL ||
441
+ line->origin == GIT_DIFF_LINE_DEL_EOFNL)
425
442
  goto out;
426
- args->first_file = 0;
427
-
428
- if ((error = git_buf_printf(&buf,
429
- "diff--gita/%sb/%s---a/%s+++b/%s",
430
- delta->old_file.path,
431
- delta->new_file.path,
432
- delta->old_file.path,
433
- delta->new_file.path)) < 0)
434
- goto out;
435
-
436
- strip_spaces(&buf);
437
443
 
438
- if ((error = git_hash_update(&args->ctx, buf.ptr, buf.size)) < 0)
444
+ if ((error = git_diff_print_callback__to_buf(delta, hunk,
445
+ line, &buf)) < 0)
439
446
  goto out;
440
447
 
441
- out:
442
- git_buf_dispose(&buf);
443
- return error;
444
- }
445
-
446
- static int line_cb(
447
- const git_diff_delta *delta,
448
- const git_diff_hunk *hunk,
449
- const git_diff_line *line,
450
- void *payload)
451
- {
452
- struct patch_id_args *args = (struct patch_id_args *) payload;
453
- git_buf buf = GIT_BUF_INIT;
454
- int error;
455
-
456
- GIT_UNUSED(delta);
457
- GIT_UNUSED(hunk);
458
-
459
- switch (line->origin) {
460
- case GIT_DIFF_LINE_ADDITION:
461
- git_buf_putc(&buf, '+');
462
- break;
463
- case GIT_DIFF_LINE_DELETION:
464
- git_buf_putc(&buf, '-');
465
- break;
466
- case GIT_DIFF_LINE_CONTEXT:
467
- break;
468
- default:
469
- giterr_set(GITERR_PATCH, "invalid line origin for patch");
470
- return -1;
471
- }
472
-
473
- git_buf_put(&buf, line->content, line->content_len);
474
448
  strip_spaces(&buf);
475
449
 
450
+ if (line->origin == GIT_DIFF_LINE_FILE_HDR &&
451
+ !args->first_file &&
452
+ (error = flush_hunk(&args->result, &args->ctx) < 0))
453
+ goto out;
454
+
476
455
  if ((error = git_hash_update(&args->ctx, buf.ptr, buf.size)) < 0)
477
456
  goto out;
478
457
 
458
+ if (line->origin == GIT_DIFF_LINE_FILE_HDR && args->first_file)
459
+ args->first_file = 0;
460
+
479
461
  out:
480
462
  git_buf_dispose(&buf);
481
463
  return error;
482
464
  }
483
465
 
484
- int git_diff_patchid_init_options(git_diff_patchid_options *opts, unsigned int version)
466
+ int git_diff_patchid_options_init(git_diff_patchid_options *opts, unsigned int version)
485
467
  {
486
468
  GIT_INIT_STRUCTURE_FROM_TEMPLATE(
487
469
  opts, version, git_diff_patchid_options, GIT_DIFF_PATCHID_OPTIONS_INIT);
@@ -493,7 +475,7 @@ int git_diff_patchid(git_oid *out, git_diff *diff, git_diff_patchid_options *opt
493
475
  struct patch_id_args args;
494
476
  int error;
495
477
 
496
- GITERR_CHECK_VERSION(
478
+ GIT_ERROR_CHECK_VERSION(
497
479
  opts, GIT_DIFF_PATCHID_OPTIONS_VERSION, "git_diff_patchid_options");
498
480
 
499
481
  memset(&args, 0, sizeof(args));
@@ -501,7 +483,10 @@ int git_diff_patchid(git_oid *out, git_diff *diff, git_diff_patchid_options *opt
501
483
  if ((error = git_hash_ctx_init(&args.ctx)) < 0)
502
484
  goto out;
503
485
 
504
- if ((error = git_diff_foreach(diff, file_cb, NULL, NULL, line_cb, &args)) < 0)
486
+ if ((error = git_diff_print(diff,
487
+ GIT_DIFF_FORMAT_PATCH_ID,
488
+ git_diff_patchid_print_callback__to_buf,
489
+ &args)) < 0)
505
490
  goto out;
506
491
 
507
492
  if ((error = (flush_hunk(&args.result, &args.ctx))) < 0)
@@ -57,7 +57,8 @@ extern int git_diff_delta__format_file_header(
57
57
  const git_diff_delta *delta,
58
58
  const char *oldpfx,
59
59
  const char *newpfx,
60
- int oid_strlen);
60
+ int oid_strlen,
61
+ bool print_index);
61
62
 
62
63
  extern int git_diff_delta__cmp(const void *a, const void *b);
63
64
  extern int git_diff_delta__casecmp(const void *a, const void *b);