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
@@ -15,6 +15,9 @@ extern int git_clone__submodule(git_repository **out,
15
15
  const char *url, const char *local_path,
16
16
  const git_clone_options *_options);
17
17
 
18
- extern int git_clone__should_clone_local(const char *url, git_clone_local_t local);
18
+ extern int git_clone__should_clone_local(
19
+ bool *out,
20
+ const char *url,
21
+ git_clone_local_t local);
19
22
 
20
23
  #endif
@@ -14,14 +14,15 @@
14
14
  #include "git2/mailmap.h"
15
15
  #include "git2/sys/commit.h"
16
16
 
17
+ #include "buf.h"
17
18
  #include "odb.h"
18
19
  #include "commit.h"
19
20
  #include "signature.h"
20
- #include "message.h"
21
21
  #include "refs.h"
22
22
  #include "object.h"
23
23
  #include "array.h"
24
24
  #include "oidarray.h"
25
+ #include "grafts.h"
25
26
 
26
27
  void git_commit__free(void *_commit)
27
28
  {
@@ -42,7 +43,7 @@ void git_commit__free(void *_commit)
42
43
  }
43
44
 
44
45
  static int git_commit__create_buffer_internal(
45
- git_buf *out,
46
+ git_str *out,
46
47
  const git_signature *author,
47
48
  const git_signature *committer,
48
49
  const char *message_encoding,
@@ -56,28 +57,30 @@ static int git_commit__create_buffer_internal(
56
57
  GIT_ASSERT_ARG(out);
57
58
  GIT_ASSERT_ARG(tree);
58
59
 
59
- git_oid__writebuf(out, "tree ", tree);
60
+ if (git_object__write_oid_header(out, "tree ", tree) < 0)
61
+ goto on_error;
60
62
 
61
63
  for (i = 0; i < git_array_size(*parents); i++) {
62
64
  parent = git_array_get(*parents, i);
63
- git_oid__writebuf(out, "parent ", parent);
65
+ if (git_object__write_oid_header(out, "parent ", parent) < 0)
66
+ goto on_error;
64
67
  }
65
68
 
66
69
  git_signature__writebuf(out, "author ", author);
67
70
  git_signature__writebuf(out, "committer ", committer);
68
71
 
69
72
  if (message_encoding != NULL)
70
- git_buf_printf(out, "encoding %s\n", message_encoding);
73
+ git_str_printf(out, "encoding %s\n", message_encoding);
71
74
 
72
- git_buf_putc(out, '\n');
75
+ git_str_putc(out, '\n');
73
76
 
74
- if (git_buf_puts(out, message) < 0)
77
+ if (git_str_puts(out, message) < 0)
75
78
  goto on_error;
76
79
 
77
80
  return 0;
78
81
 
79
82
  on_error:
80
- git_buf_dispose(out);
83
+ git_str_dispose(out);
81
84
  return -1;
82
85
  }
83
86
 
@@ -136,7 +139,7 @@ static int git_commit__create_internal(
136
139
  int error;
137
140
  git_odb *odb;
138
141
  git_reference *ref = NULL;
139
- git_buf buf = GIT_BUF_INIT;
142
+ git_str buf = GIT_STR_INIT;
140
143
  const git_oid *current_id = NULL;
141
144
  git_array_oid_t parents = GIT_ARRAY_INIT;
142
145
 
@@ -179,7 +182,7 @@ static int git_commit__create_internal(
179
182
  cleanup:
180
183
  git_array_clear(parents);
181
184
  git_reference_free(ref);
182
- git_buf_dispose(&buf);
185
+ git_str_dispose(&buf);
183
186
  return error;
184
187
  }
185
188
 
@@ -388,16 +391,22 @@ int git_commit_amend(
388
391
  return error;
389
392
  }
390
393
 
391
- static int commit_parse(git_commit *commit, const char *data, size_t size, unsigned int flags)
394
+ static int commit_parse(
395
+ git_commit *commit,
396
+ const char *data,
397
+ size_t size,
398
+ git_commit__parse_options *opts)
392
399
  {
393
400
  const char *buffer_start = data, *buffer;
394
401
  const char *buffer_end = buffer_start + size;
395
402
  git_oid parent_id;
396
403
  size_t header_len;
397
404
  git_signature dummy_sig;
405
+ int error;
398
406
 
399
407
  GIT_ASSERT_ARG(commit);
400
408
  GIT_ASSERT_ARG(data);
409
+ GIT_ASSERT_ARG(opts);
401
410
 
402
411
  buffer = buffer_start;
403
412
 
@@ -406,39 +415,40 @@ static int commit_parse(git_commit *commit, const char *data, size_t size, unsig
406
415
  GIT_ERROR_CHECK_ARRAY(commit->parent_ids);
407
416
 
408
417
  /* The tree is always the first field */
409
- if (!(flags & GIT_COMMIT_PARSE_QUICK)) {
410
- if (git_oid__parse(&commit->tree_id, &buffer, buffer_end, "tree ") < 0)
418
+ if (!(opts->flags & GIT_COMMIT_PARSE_QUICK)) {
419
+ if (git_object__parse_oid_header(&commit->tree_id,
420
+ &buffer, buffer_end, "tree ",
421
+ opts->oid_type) < 0)
411
422
  goto bad_buffer;
412
423
  } else {
413
- size_t tree_len = strlen("tree ") + GIT_OID_HEXSZ + 1;
424
+ size_t tree_len = strlen("tree ") + git_oid_hexsize(opts->oid_type) + 1;
425
+
414
426
  if (buffer + tree_len > buffer_end)
415
427
  goto bad_buffer;
416
428
  buffer += tree_len;
417
429
  }
418
430
 
419
- /*
420
- * TODO: commit grafts!
421
- */
422
-
423
- while (git_oid__parse(&parent_id, &buffer, buffer_end, "parent ") == 0) {
431
+ while (git_object__parse_oid_header(&parent_id,
432
+ &buffer, buffer_end, "parent ",
433
+ opts->oid_type) == 0) {
424
434
  git_oid *new_id = git_array_alloc(commit->parent_ids);
425
435
  GIT_ERROR_CHECK_ALLOC(new_id);
426
436
 
427
437
  git_oid_cpy(new_id, &parent_id);
428
438
  }
429
439
 
430
- if (!(flags & GIT_COMMIT_PARSE_QUICK)) {
440
+ if (!opts || !(opts->flags & GIT_COMMIT_PARSE_QUICK)) {
431
441
  commit->author = git__malloc(sizeof(git_signature));
432
442
  GIT_ERROR_CHECK_ALLOC(commit->author);
433
443
 
434
- if (git_signature__parse(commit->author, &buffer, buffer_end, "author ", '\n') < 0)
435
- return -1;
444
+ if ((error = git_signature__parse(commit->author, &buffer, buffer_end, "author ", '\n')) < 0)
445
+ return error;
436
446
  }
437
447
 
438
448
  /* Some tools create multiple author fields, ignore the extra ones */
439
449
  while (!git__prefixncmp(buffer, buffer_end - buffer, "author ")) {
440
- if (git_signature__parse(&dummy_sig, &buffer, buffer_end, "author ", '\n') < 0)
441
- return -1;
450
+ if ((error = git_signature__parse(&dummy_sig, &buffer, buffer_end, "author ", '\n')) < 0)
451
+ return error;
442
452
 
443
453
  git__free(dummy_sig.name);
444
454
  git__free(dummy_sig.email);
@@ -448,10 +458,10 @@ static int commit_parse(git_commit *commit, const char *data, size_t size, unsig
448
458
  commit->committer = git__malloc(sizeof(git_signature));
449
459
  GIT_ERROR_CHECK_ALLOC(commit->committer);
450
460
 
451
- if (git_signature__parse(commit->committer, &buffer, buffer_end, "committer ", '\n') < 0)
452
- return -1;
461
+ if ((error = git_signature__parse(commit->committer, &buffer, buffer_end, "committer ", '\n')) < 0)
462
+ return error;
453
463
 
454
- if (flags & GIT_COMMIT_PARSE_QUICK)
464
+ if (opts && opts->flags & GIT_COMMIT_PARSE_QUICK)
455
465
  return 0;
456
466
 
457
467
  /* Parse add'l header entries */
@@ -493,22 +503,67 @@ static int commit_parse(git_commit *commit, const char *data, size_t size, unsig
493
503
 
494
504
  bad_buffer:
495
505
  git_error_set(GIT_ERROR_OBJECT, "failed to parse bad commit object");
496
- return -1;
506
+ return GIT_EINVALID;
497
507
  }
498
508
 
499
- int git_commit__parse_raw(void *commit, const char *data, size_t size)
509
+ int git_commit__parse(
510
+ void *commit,
511
+ git_odb_object *odb_obj,
512
+ git_oid_t oid_type)
500
513
  {
501
- return commit_parse(commit, data, size, 0);
514
+ git_commit__parse_options parse_options = {0};
515
+ parse_options.oid_type = oid_type;
516
+
517
+ return git_commit__parse_ext(commit, odb_obj, &parse_options);
502
518
  }
503
519
 
504
- int git_commit__parse_ext(git_commit *commit, git_odb_object *odb_obj, unsigned int flags)
520
+ int git_commit__parse_raw(
521
+ void *commit,
522
+ const char *data,
523
+ size_t size,
524
+ git_oid_t oid_type)
505
525
  {
506
- return commit_parse(commit, git_odb_object_data(odb_obj), git_odb_object_size(odb_obj), flags);
526
+ git_commit__parse_options parse_options = {0};
527
+ parse_options.oid_type = oid_type;
528
+
529
+ return commit_parse(commit, data, size, &parse_options);
530
+ }
531
+
532
+ static int assign_commit_parents_from_graft(git_commit *commit, git_commit_graft *graft) {
533
+ size_t idx;
534
+ git_oid *oid;
535
+
536
+ git_array_clear(commit->parent_ids);
537
+ git_array_init_to_size(commit->parent_ids, git_array_size(graft->parents));
538
+ git_array_foreach(graft->parents, idx, oid) {
539
+ git_oid *id = git_array_alloc(commit->parent_ids);
540
+ GIT_ERROR_CHECK_ALLOC(id);
541
+
542
+ git_oid_cpy(id, oid);
543
+ }
544
+
545
+ return 0;
507
546
  }
508
547
 
509
- int git_commit__parse(void *_commit, git_odb_object *odb_obj)
548
+ int git_commit__parse_ext(
549
+ git_commit *commit,
550
+ git_odb_object *odb_obj,
551
+ git_commit__parse_options *parse_opts)
510
552
  {
511
- return git_commit__parse_ext(_commit, odb_obj, 0);
553
+ git_repository *repo = git_object_owner((git_object *)commit);
554
+ git_commit_graft *graft;
555
+ int error;
556
+
557
+ if ((error = commit_parse(commit, git_odb_object_data(odb_obj),
558
+ git_odb_object_size(odb_obj), parse_opts)) < 0)
559
+ return error;
560
+
561
+ /* Perform necessary grafts */
562
+ if (git_grafts_get(&graft, repo->grafts, git_odb_object_id(odb_obj)) != 0 &&
563
+ git_grafts_get(&graft, repo->shallow_grafts, git_odb_object_id(odb_obj)) != 0)
564
+ return 0;
565
+
566
+ return assign_commit_parents_from_graft(commit, graft);
512
567
  }
513
568
 
514
569
  #define GIT_COMMIT_GETTER(_rvalue, _name, _return, _invalid) \
@@ -545,8 +600,8 @@ const char *git_commit_message(const git_commit *commit)
545
600
 
546
601
  const char *git_commit_summary(git_commit *commit)
547
602
  {
548
- git_buf summary = GIT_BUF_INIT;
549
- const char *msg, *space;
603
+ git_str summary = GIT_STR_INIT;
604
+ const char *msg, *space, *next;
550
605
  bool space_contains_newline = false;
551
606
 
552
607
  GIT_ASSERT_ARG_WITH_RETVAL(commit, NULL);
@@ -555,10 +610,21 @@ const char *git_commit_summary(git_commit *commit)
555
610
  for (msg = git_commit_message(commit), space = NULL; *msg; ++msg) {
556
611
  char next_character = msg[0];
557
612
  /* stop processing at the end of the first paragraph */
558
- if (next_character == '\n' && (!msg[1] || msg[1] == '\n'))
559
- break;
613
+ if (next_character == '\n') {
614
+ if (!msg[1])
615
+ break;
616
+ if (msg[1] == '\n')
617
+ break;
618
+ /* stop processing if next line contains only whitespace */
619
+ next = msg + 1;
620
+ while (*next && git__isspace_nonlf(*next)) {
621
+ ++next;
622
+ }
623
+ if (!*next || *next == '\n')
624
+ break;
625
+ }
560
626
  /* record the beginning of contiguous whitespace runs */
561
- else if (git__isspace(next_character)) {
627
+ if (git__isspace(next_character)) {
562
628
  if(space == NULL) {
563
629
  space = msg;
564
630
  space_contains_newline = false;
@@ -570,17 +636,17 @@ const char *git_commit_summary(git_commit *commit)
570
636
  /* process any recorded whitespace */
571
637
  if (space) {
572
638
  if(space_contains_newline)
573
- git_buf_putc(&summary, ' '); /* if the space contains a newline, collapse to ' ' */
639
+ git_str_putc(&summary, ' '); /* if the space contains a newline, collapse to ' ' */
574
640
  else
575
- git_buf_put(&summary, space, (msg - space)); /* otherwise copy it */
641
+ git_str_put(&summary, space, (msg - space)); /* otherwise copy it */
576
642
  space = NULL;
577
643
  }
578
644
  /* copy the next character */
579
- git_buf_putc(&summary, next_character);
645
+ git_str_putc(&summary, next_character);
580
646
  }
581
647
  }
582
648
 
583
- commit->summary = git_buf_detach(&summary);
649
+ commit->summary = git_str_detach(&summary);
584
650
  if (!commit->summary)
585
651
  commit->summary = git__strdup("");
586
652
  }
@@ -678,11 +744,22 @@ int git_commit_nth_gen_ancestor(
678
744
  return 0;
679
745
  }
680
746
 
681
- int git_commit_header_field(git_buf *out, const git_commit *commit, const char *field)
747
+ int git_commit_header_field(
748
+ git_buf *out,
749
+ const git_commit *commit,
750
+ const char *field)
751
+ {
752
+ GIT_BUF_WRAP_PRIVATE(out, git_commit__header_field, commit, field);
753
+ }
754
+
755
+ int git_commit__header_field(
756
+ git_str *out,
757
+ const git_commit *commit,
758
+ const char *field)
682
759
  {
683
760
  const char *eol, *buf = commit->raw_header;
684
761
 
685
- git_buf_clear(out);
762
+ git_str_clear(out);
686
763
 
687
764
  while ((eol = strchr(buf, '\n'))) {
688
765
  /* We can skip continuations here */
@@ -706,22 +783,22 @@ int git_commit_header_field(git_buf *out, const git_commit *commit, const char *
706
783
 
707
784
  buf++; /* skip the SP */
708
785
 
709
- git_buf_put(out, buf, eol - buf);
710
- if (git_buf_oom(out))
786
+ git_str_put(out, buf, eol - buf);
787
+ if (git_str_oom(out))
711
788
  goto oom;
712
789
 
713
790
  /* If the next line starts with SP, it's multi-line, we must continue */
714
791
  while (eol[1] == ' ') {
715
- git_buf_putc(out, '\n');
792
+ git_str_putc(out, '\n');
716
793
  buf = eol + 2;
717
794
  eol = strchr(buf, '\n');
718
795
  if (!eol)
719
796
  goto malformed;
720
797
 
721
- git_buf_put(out, buf, eol - buf);
798
+ git_str_put(out, buf, eol - buf);
722
799
  }
723
800
 
724
- if (git_buf_oom(out))
801
+ if (git_str_oom(out))
725
802
  goto oom;
726
803
 
727
804
  return 0;
@@ -738,7 +815,35 @@ oom:
738
815
  return -1;
739
816
  }
740
817
 
741
- int git_commit_extract_signature(git_buf *signature, git_buf *signed_data, git_repository *repo, git_oid *commit_id, const char *field)
818
+ int git_commit_extract_signature(
819
+ git_buf *signature_out,
820
+ git_buf *signed_data_out,
821
+ git_repository *repo,
822
+ git_oid *commit_id,
823
+ const char *field)
824
+ {
825
+ git_str signature = GIT_STR_INIT, signed_data = GIT_STR_INIT;
826
+ int error;
827
+
828
+ if ((error = git_buf_tostr(&signature, signature_out)) < 0 ||
829
+ (error = git_buf_tostr(&signed_data, signed_data_out)) < 0 ||
830
+ (error = git_commit__extract_signature(&signature, &signed_data, repo, commit_id, field)) < 0 ||
831
+ (error = git_buf_fromstr(signature_out, &signature)) < 0 ||
832
+ (error = git_buf_fromstr(signed_data_out, &signed_data)) < 0)
833
+ goto done;
834
+
835
+ done:
836
+ git_str_dispose(&signature);
837
+ git_str_dispose(&signed_data);
838
+ return error;
839
+ }
840
+
841
+ int git_commit__extract_signature(
842
+ git_str *signature,
843
+ git_str *signed_data,
844
+ git_repository *repo,
845
+ git_oid *commit_id,
846
+ const char *field)
742
847
  {
743
848
  git_odb_object *obj;
744
849
  git_odb *odb;
@@ -746,8 +851,8 @@ int git_commit_extract_signature(git_buf *signature, git_buf *signed_data, git_r
746
851
  const char *h, *eol;
747
852
  int error;
748
853
 
749
- git_buf_clear(signature);
750
- git_buf_clear(signed_data);
854
+ git_str_clear(signature);
855
+ git_str_clear(signed_data);
751
856
 
752
857
  if (!field)
753
858
  field = "gpgsig";
@@ -769,7 +874,7 @@ int git_commit_extract_signature(git_buf *signature, git_buf *signed_data, git_r
769
874
  while ((h = strchr(buf, '\n')) && h[1] != '\0') {
770
875
  h++;
771
876
  if (git__prefixcmp(buf, field)) {
772
- if (git_buf_put(signed_data, buf, h - buf) < 0)
877
+ if (git_str_put(signed_data, buf, h - buf) < 0)
773
878
  return -1;
774
879
 
775
880
  buf = h;
@@ -788,25 +893,25 @@ int git_commit_extract_signature(git_buf *signature, git_buf *signed_data, git_r
788
893
 
789
894
  h++; /* skip the SP */
790
895
 
791
- git_buf_put(signature, h, eol - h);
792
- if (git_buf_oom(signature))
896
+ git_str_put(signature, h, eol - h);
897
+ if (git_str_oom(signature))
793
898
  goto oom;
794
899
 
795
900
  /* If the next line starts with SP, it's multi-line, we must continue */
796
901
  while (eol[1] == ' ') {
797
- git_buf_putc(signature, '\n');
902
+ git_str_putc(signature, '\n');
798
903
  h = eol + 2;
799
904
  eol = strchr(h, '\n');
800
905
  if (!eol)
801
906
  goto malformed;
802
907
 
803
- git_buf_put(signature, h, eol - h);
908
+ git_str_put(signature, h, eol - h);
804
909
  }
805
910
 
806
- if (git_buf_oom(signature))
911
+ if (git_str_oom(signature))
807
912
  goto oom;
808
913
 
809
- error = git_buf_puts(signed_data, eol+1);
914
+ error = git_str_puts(signed_data, eol+1);
810
915
  git_odb_object_free(obj);
811
916
  return error;
812
917
  }
@@ -826,12 +931,29 @@ oom:
826
931
 
827
932
  cleanup:
828
933
  git_odb_object_free(obj);
829
- git_buf_clear(signature);
830
- git_buf_clear(signed_data);
934
+ git_str_clear(signature);
935
+ git_str_clear(signed_data);
831
936
  return error;
832
937
  }
833
938
 
834
- int git_commit_create_buffer(git_buf *out,
939
+ int git_commit_create_buffer(
940
+ git_buf *out,
941
+ git_repository *repo,
942
+ const git_signature *author,
943
+ const git_signature *committer,
944
+ const char *message_encoding,
945
+ const char *message,
946
+ const git_tree *tree,
947
+ size_t parent_count,
948
+ const git_commit *parents[])
949
+ {
950
+ GIT_BUF_WRAP_PRIVATE(out, git_commit__create_buffer, repo,
951
+ author, committer, message_encoding, message,
952
+ tree, parent_count, parents);
953
+ }
954
+
955
+ int git_commit__create_buffer(
956
+ git_str *out,
835
957
  git_repository *repo,
836
958
  const git_signature *author,
837
959
  const git_signature *committer,
@@ -866,7 +988,7 @@ int git_commit_create_buffer(git_buf *out,
866
988
  /**
867
989
  * Append to 'out' properly marking continuations when there's a newline in 'content'
868
990
  */
869
- static int format_header_field(git_buf *out, const char *field, const char *content)
991
+ static int format_header_field(git_str *out, const char *field, const char *content)
870
992
  {
871
993
  const char *lf;
872
994
 
@@ -874,19 +996,19 @@ static int format_header_field(git_buf *out, const char *field, const char *cont
874
996
  GIT_ASSERT_ARG(field);
875
997
  GIT_ASSERT_ARG(content);
876
998
 
877
- git_buf_puts(out, field);
878
- git_buf_putc(out, ' ');
999
+ git_str_puts(out, field);
1000
+ git_str_putc(out, ' ');
879
1001
 
880
1002
  while ((lf = strchr(content, '\n')) != NULL) {
881
- git_buf_put(out, content, lf - content);
882
- git_buf_puts(out, "\n ");
1003
+ git_str_put(out, content, lf - content);
1004
+ git_str_puts(out, "\n ");
883
1005
  content = lf + 1;
884
1006
  }
885
1007
 
886
- git_buf_puts(out, content);
887
- git_buf_putc(out, '\n');
1008
+ git_str_puts(out, content);
1009
+ git_str_putc(out, '\n');
888
1010
 
889
- return git_buf_oom(out) ? -1 : 0;
1011
+ return git_str_oom(out) ? -1 : 0;
890
1012
  }
891
1013
 
892
1014
  static const git_oid *commit_parent_from_commit(size_t n, void *payload)
@@ -908,15 +1030,20 @@ int git_commit_create_with_signature(
908
1030
  int error = 0;
909
1031
  const char *field;
910
1032
  const char *header_end;
911
- git_buf commit = GIT_BUF_INIT;
1033
+ git_str commit = GIT_STR_INIT;
912
1034
  git_commit *parsed;
913
1035
  git_array_oid_t parents = GIT_ARRAY_INIT;
1036
+ git_commit__parse_options parse_opts = {0};
1037
+
1038
+ parse_opts.oid_type = repo->oid_type;
914
1039
 
915
1040
  /* The first step is to verify that all the tree and parents exist */
916
1041
  parsed = git__calloc(1, sizeof(git_commit));
917
1042
  GIT_ERROR_CHECK_ALLOC(parsed);
918
- if ((error = commit_parse(parsed, commit_content, strlen(commit_content), 0)) < 0)
1043
+ if (commit_parse(parsed, commit_content, strlen(commit_content), &parse_opts) < 0) {
1044
+ error = -1;
919
1045
  goto cleanup;
1046
+ }
920
1047
 
921
1048
  if ((error = validate_tree_and_parents(&parents, repo, &parsed->tree_id, commit_parent_from_commit, parsed, NULL, true)) < 0)
922
1049
  goto cleanup;
@@ -933,7 +1060,7 @@ int git_commit_create_with_signature(
933
1060
 
934
1061
  /* The header ends after the first LF */
935
1062
  header_end++;
936
- git_buf_put(&commit, commit_content, header_end - commit_content);
1063
+ git_str_put(&commit, commit_content, header_end - commit_content);
937
1064
 
938
1065
  if (signature != NULL) {
939
1066
  field = signature_field ? signature_field : "gpgsig";
@@ -942,9 +1069,9 @@ int git_commit_create_with_signature(
942
1069
  goto cleanup;
943
1070
  }
944
1071
 
945
- git_buf_puts(&commit, header_end);
1072
+ git_str_puts(&commit, header_end);
946
1073
 
947
- if (git_buf_oom(&commit))
1074
+ if (git_str_oom(&commit))
948
1075
  return -1;
949
1076
 
950
1077
  if ((error = git_repository_odb__weakptr(&odb, repo)) < 0)
@@ -955,7 +1082,84 @@ int git_commit_create_with_signature(
955
1082
 
956
1083
  cleanup:
957
1084
  git_commit__free(parsed);
958
- git_buf_dispose(&commit);
1085
+ git_str_dispose(&commit);
1086
+ return error;
1087
+ }
1088
+
1089
+ int git_commit_create_from_stage(
1090
+ git_oid *out,
1091
+ git_repository *repo,
1092
+ const char *message,
1093
+ const git_commit_create_options *given_opts)
1094
+ {
1095
+ git_commit_create_options opts = GIT_COMMIT_CREATE_OPTIONS_INIT;
1096
+ git_signature *default_signature = NULL;
1097
+ const git_signature *author, *committer;
1098
+ git_index *index = NULL;
1099
+ git_diff *diff = NULL;
1100
+ git_oid tree_id;
1101
+ git_tree *head_tree = NULL, *tree = NULL;
1102
+ git_commitarray parents = { 0 };
1103
+ int error = -1;
1104
+
1105
+ GIT_ASSERT_ARG(out && repo);
1106
+
1107
+ if (given_opts)
1108
+ memcpy(&opts, given_opts, sizeof(git_commit_create_options));
1109
+
1110
+ author = opts.author;
1111
+ committer = opts.committer;
1112
+
1113
+ if (!author || !committer) {
1114
+ if (git_signature_default(&default_signature, repo) < 0)
1115
+ goto done;
1116
+
1117
+ if (!author)
1118
+ author = default_signature;
1119
+
1120
+ if (!committer)
1121
+ committer = default_signature;
1122
+ }
1123
+
1124
+ if (git_repository_index(&index, repo) < 0)
1125
+ goto done;
1126
+
1127
+ if (!opts.allow_empty_commit) {
1128
+ error = git_repository_head_tree(&head_tree, repo);
1129
+
1130
+ if (error && error != GIT_EUNBORNBRANCH)
1131
+ goto done;
1132
+
1133
+ error = -1;
1134
+
1135
+ if (git_diff_tree_to_index(&diff, repo, head_tree, index, NULL) < 0)
1136
+ goto done;
1137
+
1138
+ if (git_diff_num_deltas(diff) == 0) {
1139
+ git_error_set(GIT_ERROR_REPOSITORY,
1140
+ "no changes are staged for commit");
1141
+ error = GIT_EUNCHANGED;
1142
+ goto done;
1143
+ }
1144
+ }
1145
+
1146
+ if (git_index_write_tree(&tree_id, index) < 0 ||
1147
+ git_tree_lookup(&tree, repo, &tree_id) < 0 ||
1148
+ git_repository_commit_parents(&parents, repo) < 0)
1149
+ goto done;
1150
+
1151
+ error = git_commit_create(out, repo, "HEAD", author, committer,
1152
+ opts.message_encoding, message,
1153
+ tree, parents.count,
1154
+ (const git_commit **)parents.commits);
1155
+
1156
+ done:
1157
+ git_commitarray_dispose(&parents);
1158
+ git_signature_free(default_signature);
1159
+ git_tree_free(tree);
1160
+ git_tree_free(head_tree);
1161
+ git_diff_free(diff);
1162
+ git_index_free(index);
959
1163
  return error;
960
1164
  }
961
1165
 
@@ -970,3 +1174,18 @@ int git_commit_author_with_mailmap(
970
1174
  {
971
1175
  return git_mailmap_resolve_signature(out, mailmap, commit->author);
972
1176
  }
1177
+
1178
+ void git_commitarray_dispose(git_commitarray *array)
1179
+ {
1180
+ size_t i;
1181
+
1182
+ if (array == NULL)
1183
+ return;
1184
+
1185
+ for (i = 0; i < array->count; i++)
1186
+ git_commit_free(array->commits[i]);
1187
+
1188
+ git__free((git_commit **)array->commits);
1189
+
1190
+ memset(array, 0, sizeof(*array));
1191
+ }