rugged 1.3.2 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (547) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/ext/rugged/extconf.rb +7 -4
  4. data/ext/rugged/rugged.c +16 -0
  5. data/ext/rugged/rugged.h +4 -0
  6. data/ext/rugged/rugged_blame.c +2 -0
  7. data/ext/rugged/rugged_blob.c +3 -0
  8. data/ext/rugged/rugged_commit.c +1 -0
  9. data/ext/rugged/rugged_config.c +9 -2
  10. data/ext/rugged/rugged_diff.c +1 -0
  11. data/ext/rugged/rugged_index.c +2 -0
  12. data/ext/rugged/rugged_patch.c +1 -0
  13. data/ext/rugged/rugged_rebase.c +1 -0
  14. data/ext/rugged/rugged_reference.c +1 -0
  15. data/ext/rugged/rugged_remote.c +28 -10
  16. data/ext/rugged/rugged_repo.c +7 -9
  17. data/ext/rugged/rugged_revwalk.c +5 -1
  18. data/ext/rugged/rugged_settings.c +5 -0
  19. data/ext/rugged/rugged_submodule.c +1 -0
  20. data/ext/rugged/rugged_tag.c +1 -0
  21. data/ext/rugged/rugged_tree.c +4 -0
  22. data/lib/rugged/index.rb +1 -1
  23. data/lib/rugged/tree.rb +5 -1
  24. data/lib/rugged/version.rb +1 -1
  25. data/vendor/libgit2/CMakeLists.txt +132 -288
  26. data/vendor/libgit2/COPYING +106 -19
  27. data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
  28. data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
  29. data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
  30. data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
  31. data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
  32. data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
  33. data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
  34. data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
  35. data/vendor/libgit2/cmake/{FindHTTP_Parser.cmake → FindHTTPParser.cmake} +17 -17
  36. data/vendor/libgit2/cmake/FindIconv.cmake +27 -27
  37. data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
  38. data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
  39. data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
  40. data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
  41. data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
  42. data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
  43. data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
  44. data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
  45. data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
  46. data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
  47. data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
  48. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
  49. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +19 -0
  50. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +100 -100
  51. data/vendor/libgit2/cmake/SelectHashes.cmake +91 -53
  52. data/vendor/libgit2/cmake/SelectRegex.cmake +51 -0
  53. data/vendor/libgit2/cmake/SelectSSH.cmake +41 -0
  54. data/vendor/libgit2/cmake/SelectWinHTTP.cmake +17 -0
  55. data/vendor/libgit2/cmake/SelectZlib.cmake +34 -0
  56. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
  57. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
  58. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +3 -1
  59. data/vendor/libgit2/deps/ntlmclient/ntlm.c +4 -4
  60. data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
  61. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
  62. data/vendor/libgit2/deps/pcre/CMakeLists.txt +88 -88
  63. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
  64. data/vendor/libgit2/deps/zlib/adler32.c +7 -0
  65. data/vendor/libgit2/deps/zlib/crc32.c +975 -288
  66. data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
  67. data/vendor/libgit2/deps/zlib/deflate.c +83 -31
  68. data/vendor/libgit2/deps/zlib/deflate.h +12 -15
  69. data/vendor/libgit2/deps/zlib/gzguts.h +3 -2
  70. data/vendor/libgit2/deps/zlib/infback.c +2 -1
  71. data/vendor/libgit2/deps/zlib/inffast.c +14 -14
  72. data/vendor/libgit2/deps/zlib/inflate.c +39 -8
  73. data/vendor/libgit2/deps/zlib/inflate.h +3 -2
  74. data/vendor/libgit2/deps/zlib/inftrees.c +3 -3
  75. data/vendor/libgit2/deps/zlib/trees.c +27 -48
  76. data/vendor/libgit2/deps/zlib/zlib.h +126 -100
  77. data/vendor/libgit2/deps/zlib/zutil.c +2 -2
  78. data/vendor/libgit2/deps/zlib/zutil.h +12 -9
  79. data/vendor/libgit2/include/git2/apply.h +16 -2
  80. data/vendor/libgit2/include/git2/attr.h +11 -2
  81. data/vendor/libgit2/include/git2/blame.h +4 -1
  82. data/vendor/libgit2/include/git2/blob.h +14 -1
  83. data/vendor/libgit2/include/git2/branch.h +4 -2
  84. data/vendor/libgit2/include/git2/buffer.h +18 -78
  85. data/vendor/libgit2/include/git2/cert.h +2 -2
  86. data/vendor/libgit2/include/git2/checkout.h +5 -2
  87. data/vendor/libgit2/include/git2/clone.h +3 -3
  88. data/vendor/libgit2/include/git2/commit.h +2 -0
  89. data/vendor/libgit2/include/git2/common.h +28 -7
  90. data/vendor/libgit2/include/git2/config.h +25 -9
  91. data/vendor/libgit2/include/git2/credential.h +2 -1
  92. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  93. data/vendor/libgit2/include/git2/deprecated.h +9 -1
  94. data/vendor/libgit2/include/git2/describe.h +7 -2
  95. data/vendor/libgit2/include/git2/diff.h +18 -10
  96. data/vendor/libgit2/include/git2/email.h +1 -1
  97. data/vendor/libgit2/include/git2/errors.h +17 -3
  98. data/vendor/libgit2/include/git2/experimental.h +20 -0
  99. data/vendor/libgit2/include/git2/filter.h +7 -2
  100. data/vendor/libgit2/include/git2/graph.h +1 -0
  101. data/vendor/libgit2/include/git2/ignore.h +1 -1
  102. data/vendor/libgit2/include/git2/index.h +11 -5
  103. data/vendor/libgit2/include/git2/indexer.h +48 -0
  104. data/vendor/libgit2/include/git2/merge.h +24 -4
  105. data/vendor/libgit2/include/git2/message.h +2 -0
  106. data/vendor/libgit2/include/git2/object.h +49 -0
  107. data/vendor/libgit2/include/git2/odb.h +94 -13
  108. data/vendor/libgit2/include/git2/odb_backend.h +107 -19
  109. data/vendor/libgit2/include/git2/oid.h +115 -15
  110. data/vendor/libgit2/include/git2/pack.h +24 -8
  111. data/vendor/libgit2/include/git2/patch.h +8 -0
  112. data/vendor/libgit2/include/git2/pathspec.h +1 -1
  113. data/vendor/libgit2/include/git2/proxy.h +1 -1
  114. data/vendor/libgit2/include/git2/rebase.h +9 -1
  115. data/vendor/libgit2/include/git2/refdb.h +3 -0
  116. data/vendor/libgit2/include/git2/reflog.h +1 -1
  117. data/vendor/libgit2/include/git2/refs.h +2 -2
  118. data/vendor/libgit2/include/git2/remote.h +184 -37
  119. data/vendor/libgit2/include/git2/repository.h +34 -10
  120. data/vendor/libgit2/include/git2/reset.h +2 -2
  121. data/vendor/libgit2/include/git2/revparse.h +1 -1
  122. data/vendor/libgit2/include/git2/revwalk.h +4 -1
  123. data/vendor/libgit2/include/git2/signature.h +1 -1
  124. data/vendor/libgit2/include/git2/stash.h +61 -7
  125. data/vendor/libgit2/include/git2/status.h +14 -5
  126. data/vendor/libgit2/include/git2/strarray.h +0 -13
  127. data/vendor/libgit2/include/git2/submodule.h +7 -2
  128. data/vendor/libgit2/include/git2/sys/commit_graph.h +1 -1
  129. data/vendor/libgit2/include/git2/sys/odb_backend.h +3 -6
  130. data/vendor/libgit2/include/git2/sys/remote.h +46 -0
  131. data/vendor/libgit2/include/git2/sys/stream.h +1 -1
  132. data/vendor/libgit2/include/git2/sys/transport.h +46 -39
  133. data/vendor/libgit2/include/git2/tag.h +1 -0
  134. data/vendor/libgit2/include/git2/tree.h +4 -3
  135. data/vendor/libgit2/include/git2/types.h +7 -7
  136. data/vendor/libgit2/include/git2/version.h +27 -6
  137. data/vendor/libgit2/include/git2/worktree.h +12 -2
  138. data/vendor/libgit2/include/git2.h +1 -0
  139. data/vendor/libgit2/src/CMakeLists.txt +177 -419
  140. data/vendor/libgit2/src/README.md +12 -0
  141. data/vendor/libgit2/src/cli/CMakeLists.txt +57 -0
  142. data/vendor/libgit2/src/cli/README.md +26 -0
  143. data/vendor/libgit2/src/cli/cli.h +20 -0
  144. data/vendor/libgit2/src/cli/cmd.c +21 -0
  145. data/vendor/libgit2/src/cli/cmd.h +33 -0
  146. data/vendor/libgit2/src/cli/cmd_cat_file.c +204 -0
  147. data/vendor/libgit2/src/cli/cmd_clone.c +176 -0
  148. data/vendor/libgit2/src/cli/cmd_hash_object.c +154 -0
  149. data/vendor/libgit2/src/cli/cmd_help.c +86 -0
  150. data/vendor/libgit2/src/cli/error.h +51 -0
  151. data/vendor/libgit2/src/cli/main.c +106 -0
  152. data/vendor/libgit2/src/cli/opt.c +669 -0
  153. data/vendor/libgit2/src/cli/opt.h +349 -0
  154. data/vendor/libgit2/src/cli/opt_usage.c +194 -0
  155. data/vendor/libgit2/src/cli/opt_usage.h +35 -0
  156. data/vendor/libgit2/src/cli/progress.c +345 -0
  157. data/vendor/libgit2/src/cli/progress.h +117 -0
  158. data/vendor/libgit2/src/cli/sighandler.h +20 -0
  159. data/vendor/libgit2/src/cli/unix/sighandler.c +36 -0
  160. data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
  161. data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
  162. data/vendor/libgit2/src/libgit2/CMakeLists.txt +141 -0
  163. data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +1 -1
  164. data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
  165. data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +18 -18
  166. data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
  167. data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +18 -18
  168. data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +18 -18
  169. data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +4 -4
  170. data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +18 -13
  171. data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +2 -0
  172. data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -1
  173. data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
  174. data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
  175. data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
  176. data/vendor/libgit2/src/{branch.h → libgit2/branch.h} +15 -3
  177. data/vendor/libgit2/src/libgit2/buf.c +126 -0
  178. data/vendor/libgit2/src/libgit2/buf.h +50 -0
  179. data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +74 -68
  180. data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +13 -13
  181. data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +96 -67
  182. data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +178 -73
  183. data/vendor/libgit2/src/libgit2/commit.h +87 -0
  184. data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +122 -89
  185. data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +14 -4
  186. data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +7 -4
  187. data/vendor/libgit2/src/libgit2/common.h +55 -0
  188. data/vendor/libgit2/src/{config.c → libgit2/config.c} +101 -69
  189. data/vendor/libgit2/src/{config.h → libgit2/config.h} +15 -2
  190. data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +105 -93
  191. data/vendor/libgit2/src/{config_mem.c → libgit2/config_mem.c} +9 -9
  192. data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +27 -23
  193. data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
  194. data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +35 -27
  195. data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +30 -9
  196. data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +2 -4
  197. data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +34 -36
  198. data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +3 -3
  199. data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +44 -26
  200. data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +47 -18
  201. data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
  202. data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +112 -100
  203. data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
  204. data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
  205. data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +13 -8
  206. data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
  207. data/vendor/libgit2/src/{email.c → libgit2/email.c} +55 -39
  208. data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
  209. data/vendor/libgit2/src/{errors.c → libgit2/errors.c} +18 -18
  210. data/vendor/libgit2/src/{errors.h → libgit2/errors.h} +1 -2
  211. data/vendor/libgit2/src/libgit2/experimental.h.in +13 -0
  212. data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +72 -27
  213. data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -1
  214. data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +23 -23
  215. data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +127 -53
  216. data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
  217. data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
  218. data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +35 -34
  219. data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
  220. data/vendor/libgit2/src/{index.c → libgit2/index.c} +91 -90
  221. data/vendor/libgit2/src/{index.h → libgit2/index.h} +6 -3
  222. data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +173 -92
  223. data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +71 -61
  224. data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +5 -5
  225. data/vendor/libgit2/src/{libgit2.c → libgit2/libgit2.c} +46 -11
  226. data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +38 -36
  227. data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +30 -30
  228. data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
  229. data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +2 -2
  230. data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -3
  231. data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
  232. data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +112 -92
  233. data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +5 -4
  234. data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +15 -12
  235. data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +5 -2
  236. data/vendor/libgit2/src/{netops.c → libgit2/netops.c} +1 -2
  237. data/vendor/libgit2/src/{netops.h → libgit2/netops.h} +1 -1
  238. data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +25 -34
  239. data/vendor/libgit2/src/{object.c → libgit2/object.c} +135 -30
  240. data/vendor/libgit2/src/{object.h → libgit2/object.h} +12 -3
  241. data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +228 -81
  242. data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
  243. data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
  244. data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +18 -5
  245. data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +137 -85
  246. data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +136 -90
  247. data/vendor/libgit2/src/libgit2/oid.h +273 -0
  248. data/vendor/libgit2/src/{oidmap.c → libgit2/oidmap.c} +1 -1
  249. data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +56 -30
  250. data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +11 -6
  251. data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +114 -84
  252. data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +31 -16
  253. data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +4 -3
  254. data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
  255. data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +1 -0
  256. data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +27 -11
  257. data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
  258. data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +29 -29
  259. data/vendor/libgit2/src/libgit2/path.c +375 -0
  260. data/vendor/libgit2/src/libgit2/path.h +68 -0
  261. data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +6 -6
  262. data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
  263. data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
  264. data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
  265. data/vendor/libgit2/src/{push.c → libgit2/push.c} +43 -38
  266. data/vendor/libgit2/src/{push.h → libgit2/push.h} +4 -16
  267. data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
  268. data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
  269. data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +119 -107
  270. data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +506 -197
  271. data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +7 -5
  272. data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +1 -2
  273. data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +34 -32
  274. data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +2 -2
  275. data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +32 -37
  276. data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +5 -2
  277. data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +718 -420
  278. data/vendor/libgit2/src/libgit2/remote.h +100 -0
  279. data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +629 -386
  280. data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +20 -9
  281. data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
  282. data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +14 -14
  283. data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +71 -42
  284. data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +12 -8
  285. data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +12 -6
  286. data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -1
  287. data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +235 -61
  288. data/vendor/libgit2/src/{status.c → libgit2/status.c} +4 -1
  289. data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
  290. data/vendor/libgit2/src/libgit2/strarray.h +25 -0
  291. data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +8 -6
  292. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +1 -1
  293. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +7 -3
  294. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +3 -3
  295. data/vendor/libgit2/src/{streams → libgit2/streams}/socket.c +4 -1
  296. data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +177 -161
  297. data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +1 -1
  298. data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
  299. data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +53 -18
  300. data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +73 -42
  301. data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
  302. data/vendor/libgit2/src/{threadstate.c → libgit2/threadstate.c} +3 -3
  303. data/vendor/libgit2/src/{threadstate.h → libgit2/threadstate.h} +2 -2
  304. data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
  305. data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
  306. data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +1 -1
  307. data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +1 -1
  308. data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +10 -10
  309. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
  310. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +2 -3
  311. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.c +12 -13
  312. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.c +10 -10
  313. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +0 -1
  314. data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +9 -11
  315. data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +41 -20
  316. data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +2 -3
  317. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +75 -66
  318. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
  319. data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +138 -116
  320. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +92 -133
  321. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +35 -32
  322. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +177 -65
  323. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +97 -49
  324. data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.c +365 -198
  325. data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +58 -59
  326. data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +8 -8
  327. data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +2 -2
  328. data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +93 -83
  329. data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +4 -4
  330. data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +121 -94
  331. data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
  332. data/vendor/libgit2/src/libgit2/xdiff/git-xdiff.h +53 -0
  333. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiff.h +15 -15
  334. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.c +134 -108
  335. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.c +23 -7
  336. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xhistogram.c +87 -78
  337. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xinclude.h +1 -12
  338. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmerge.c +104 -117
  339. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xpatience.c +6 -17
  340. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.c +15 -20
  341. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.c +18 -7
  342. data/vendor/libgit2/src/util/CMakeLists.txt +80 -0
  343. data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.h +1 -1
  344. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
  345. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
  346. data/vendor/libgit2/src/{array.h → util/array.h} +1 -1
  347. data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
  348. data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +1 -1
  349. data/vendor/libgit2/src/{date.c → util/date.c} +14 -20
  350. data/vendor/libgit2/src/util/date.h +33 -0
  351. data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +29 -29
  352. data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +2 -2
  353. data/vendor/libgit2/src/{path.c → util/fs_path.c} +453 -647
  354. data/vendor/libgit2/src/{path.h → util/fs_path.h} +221 -188
  355. data/vendor/libgit2/src/{futils.c → util/futils.c} +135 -90
  356. data/vendor/libgit2/src/{futils.h → util/futils.h} +28 -15
  357. data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +15 -1
  358. data/vendor/libgit2/src/{common.h → util/git2_util.h} +20 -59
  359. data/vendor/libgit2/src/util/hash/builtin.c +53 -0
  360. data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
  361. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
  362. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
  363. data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
  364. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
  365. data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
  366. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
  367. data/vendor/libgit2/src/util/hash/openssl.c +195 -0
  368. data/vendor/libgit2/src/util/hash/openssl.h +45 -0
  369. data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
  370. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
  371. data/vendor/libgit2/src/util/hash/sha.h +70 -0
  372. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
  373. data/vendor/libgit2/src/util/hash/win32.c +549 -0
  374. data/vendor/libgit2/src/util/hash/win32.h +60 -0
  375. data/vendor/libgit2/src/util/hash.c +158 -0
  376. data/vendor/libgit2/src/util/hash.h +61 -0
  377. data/vendor/libgit2/src/{khash.h → util/khash.h} +1 -1
  378. data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
  379. data/vendor/libgit2/src/util/net.c +1003 -0
  380. data/vendor/libgit2/src/{net.h → util/net.h} +18 -4
  381. data/vendor/libgit2/src/{pool.h → util/pool.h} +1 -1
  382. data/vendor/libgit2/src/{posix.c → util/posix.c} +3 -3
  383. data/vendor/libgit2/src/{posix.h → util/posix.h} +4 -1
  384. data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +2 -2
  385. data/vendor/libgit2/src/util/rand.c +234 -0
  386. data/vendor/libgit2/src/util/rand.h +37 -0
  387. data/vendor/libgit2/src/{regexp.c → util/regexp.c} +4 -4
  388. data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
  389. data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
  390. data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
  391. data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +1 -1
  392. data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +2 -2
  393. data/vendor/libgit2/src/{buffer.c → util/str.c} +157 -151
  394. data/vendor/libgit2/src/util/str.h +357 -0
  395. data/vendor/libgit2/src/{strmap.h → util/strmap.h} +1 -1
  396. data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
  397. data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
  398. data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
  399. data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
  400. data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -4
  401. data/vendor/libgit2/src/{unix → util/unix}/realpath.c +1 -3
  402. data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
  403. data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
  404. data/vendor/libgit2/src/{util.c → util/util.c} +15 -15
  405. data/vendor/libgit2/src/{util.h → util/util.h} +4 -29
  406. data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
  407. data/vendor/libgit2/src/{vector.h → util/vector.h} +2 -2
  408. data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
  409. data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
  410. data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
  411. data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
  412. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +140 -9
  413. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
  414. data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
  415. data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +12 -28
  416. data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
  417. data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
  418. data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
  419. data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.h +1 -1
  420. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
  421. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
  422. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
  423. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
  424. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
  425. data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
  426. data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
  427. metadata +402 -356
  428. data/vendor/libgit2/src/buffer.h +0 -374
  429. data/vendor/libgit2/src/commit.h +0 -46
  430. data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
  431. data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
  432. data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
  433. data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
  434. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  435. data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
  436. data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
  437. data/vendor/libgit2/src/hash/sha1.h +0 -38
  438. data/vendor/libgit2/src/hash.c +0 -110
  439. data/vendor/libgit2/src/hash.h +0 -46
  440. data/vendor/libgit2/src/message.h +0 -17
  441. data/vendor/libgit2/src/net.c +0 -540
  442. data/vendor/libgit2/src/oid.h +0 -51
  443. data/vendor/libgit2/src/remote.h +0 -55
  444. data/vendor/libgit2/src/sysdir.c +0 -347
  445. data/vendor/libgit2/src/win32/findfile.c +0 -230
  446. data/vendor/libgit2/src/win32/findfile.h +0 -19
  447. /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
  448. /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
  449. /data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +0 -0
  450. /data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +0 -0
  451. /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
  452. /data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +0 -0
  453. /data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +0 -0
  454. /data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -0
  455. /data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +0 -0
  456. /data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +0 -0
  457. /data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +0 -0
  458. /data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +0 -0
  459. /data/vendor/libgit2/src/{config_entries.c → libgit2/config_entries.c} +0 -0
  460. /data/vendor/libgit2/src/{config_entries.h → libgit2/config_entries.h} +0 -0
  461. /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
  462. /data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +0 -0
  463. /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
  464. /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
  465. /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
  466. /data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +0 -0
  467. /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
  468. /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
  469. /data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +0 -0
  470. /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
  471. /data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +0 -0
  472. /data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +0 -0
  473. /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
  474. /data/vendor/libgit2/src/{idxmap.c → libgit2/idxmap.c} +0 -0
  475. /data/vendor/libgit2/src/{idxmap.h → libgit2/idxmap.h} +0 -0
  476. /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
  477. /data/vendor/libgit2/src/{libgit2.h → libgit2/libgit2.h} +0 -0
  478. /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
  479. /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
  480. /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
  481. /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
  482. /data/vendor/libgit2/src/{offmap.c → libgit2/offmap.c} +0 -0
  483. /data/vendor/libgit2/src/{offmap.h → libgit2/offmap.h} +0 -0
  484. /data/vendor/libgit2/src/{oidarray.c → libgit2/oidarray.c} +0 -0
  485. /data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +0 -0
  486. /data/vendor/libgit2/src/{oidmap.h → libgit2/oidmap.h} +0 -0
  487. /data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +0 -0
  488. /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
  489. /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
  490. /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
  491. /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
  492. /data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +0 -0
  493. /data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +0 -0
  494. /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
  495. /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
  496. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
  497. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +0 -0
  498. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
  499. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
  500. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
  501. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
  502. /data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +0 -0
  503. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +0 -0
  504. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
  505. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +0 -0
  506. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
  507. /data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +0 -0
  508. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +0 -0
  509. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +0 -0
  510. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
  511. /data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.h +0 -0
  512. /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
  513. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.h +0 -0
  514. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.h +0 -0
  515. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmacros.h +0 -0
  516. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.h +0 -0
  517. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xtypes.h +0 -0
  518. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.h +0 -0
  519. /data/vendor/libgit2/src/{alloc.c → util/alloc.c} +0 -0
  520. /data/vendor/libgit2/src/{alloc.h → util/alloc.h} +0 -0
  521. /data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.c +0 -0
  522. /data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.c +0 -0
  523. /data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.c +0 -0
  524. /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
  525. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
  526. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
  527. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
  528. /data/vendor/libgit2/src/{integer.h → util/integer.h} +0 -0
  529. /data/vendor/libgit2/src/{pool.c → util/pool.c} +0 -0
  530. /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
  531. /data/vendor/libgit2/src/{strmap.c → util/strmap.c} +0 -0
  532. /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
  533. /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
  534. /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
  535. /data/vendor/libgit2/src/{vector.c → util/vector.c} +0 -0
  536. /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
  537. /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
  538. /data/vendor/libgit2/src/{win32 → util/win32}/error.c +0 -0
  539. /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
  540. /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
  541. /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
  542. /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
  543. /data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.c +0 -0
  544. /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
  545. /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
  546. /data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +0 -0
  547. /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
@@ -14,10 +14,10 @@
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"
@@ -42,7 +42,7 @@ void git_commit__free(void *_commit)
42
42
  }
43
43
 
44
44
  static int git_commit__create_buffer_internal(
45
- git_buf *out,
45
+ git_str *out,
46
46
  const git_signature *author,
47
47
  const git_signature *committer,
48
48
  const char *message_encoding,
@@ -56,28 +56,30 @@ static int git_commit__create_buffer_internal(
56
56
  GIT_ASSERT_ARG(out);
57
57
  GIT_ASSERT_ARG(tree);
58
58
 
59
- git_oid__writebuf(out, "tree ", tree);
59
+ if (git_object__write_oid_header(out, "tree ", tree) < 0)
60
+ goto on_error;
60
61
 
61
62
  for (i = 0; i < git_array_size(*parents); i++) {
62
63
  parent = git_array_get(*parents, i);
63
- git_oid__writebuf(out, "parent ", parent);
64
+ if (git_object__write_oid_header(out, "parent ", parent) < 0)
65
+ goto on_error;
64
66
  }
65
67
 
66
68
  git_signature__writebuf(out, "author ", author);
67
69
  git_signature__writebuf(out, "committer ", committer);
68
70
 
69
71
  if (message_encoding != NULL)
70
- git_buf_printf(out, "encoding %s\n", message_encoding);
72
+ git_str_printf(out, "encoding %s\n", message_encoding);
71
73
 
72
- git_buf_putc(out, '\n');
74
+ git_str_putc(out, '\n');
73
75
 
74
- if (git_buf_puts(out, message) < 0)
76
+ if (git_str_puts(out, message) < 0)
75
77
  goto on_error;
76
78
 
77
79
  return 0;
78
80
 
79
81
  on_error:
80
- git_buf_dispose(out);
82
+ git_str_dispose(out);
81
83
  return -1;
82
84
  }
83
85
 
@@ -136,7 +138,7 @@ static int git_commit__create_internal(
136
138
  int error;
137
139
  git_odb *odb;
138
140
  git_reference *ref = NULL;
139
- git_buf buf = GIT_BUF_INIT;
141
+ git_str buf = GIT_STR_INIT;
140
142
  const git_oid *current_id = NULL;
141
143
  git_array_oid_t parents = GIT_ARRAY_INIT;
142
144
 
@@ -179,7 +181,7 @@ static int git_commit__create_internal(
179
181
  cleanup:
180
182
  git_array_clear(parents);
181
183
  git_reference_free(ref);
182
- git_buf_dispose(&buf);
184
+ git_str_dispose(&buf);
183
185
  return error;
184
186
  }
185
187
 
@@ -388,16 +390,22 @@ int git_commit_amend(
388
390
  return error;
389
391
  }
390
392
 
391
- static int commit_parse(git_commit *commit, const char *data, size_t size, unsigned int flags)
393
+ static int commit_parse(
394
+ git_commit *commit,
395
+ const char *data,
396
+ size_t size,
397
+ git_commit__parse_options *opts)
392
398
  {
393
399
  const char *buffer_start = data, *buffer;
394
400
  const char *buffer_end = buffer_start + size;
395
401
  git_oid parent_id;
396
402
  size_t header_len;
397
403
  git_signature dummy_sig;
404
+ int error;
398
405
 
399
406
  GIT_ASSERT_ARG(commit);
400
407
  GIT_ASSERT_ARG(data);
408
+ GIT_ASSERT_ARG(opts);
401
409
 
402
410
  buffer = buffer_start;
403
411
 
@@ -406,11 +414,14 @@ static int commit_parse(git_commit *commit, const char *data, size_t size, unsig
406
414
  GIT_ERROR_CHECK_ARRAY(commit->parent_ids);
407
415
 
408
416
  /* 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)
417
+ if (!(opts->flags & GIT_COMMIT_PARSE_QUICK)) {
418
+ if (git_object__parse_oid_header(&commit->tree_id,
419
+ &buffer, buffer_end, "tree ",
420
+ opts->oid_type) < 0)
411
421
  goto bad_buffer;
412
422
  } else {
413
- size_t tree_len = strlen("tree ") + GIT_OID_HEXSZ + 1;
423
+ size_t tree_len = strlen("tree ") + git_oid_hexsize(opts->oid_type) + 1;
424
+
414
425
  if (buffer + tree_len > buffer_end)
415
426
  goto bad_buffer;
416
427
  buffer += tree_len;
@@ -420,25 +431,27 @@ static int commit_parse(git_commit *commit, const char *data, size_t size, unsig
420
431
  * TODO: commit grafts!
421
432
  */
422
433
 
423
- while (git_oid__parse(&parent_id, &buffer, buffer_end, "parent ") == 0) {
434
+ while (git_object__parse_oid_header(&parent_id,
435
+ &buffer, buffer_end, "parent ",
436
+ opts->oid_type) == 0) {
424
437
  git_oid *new_id = git_array_alloc(commit->parent_ids);
425
438
  GIT_ERROR_CHECK_ALLOC(new_id);
426
439
 
427
440
  git_oid_cpy(new_id, &parent_id);
428
441
  }
429
442
 
430
- if (!(flags & GIT_COMMIT_PARSE_QUICK)) {
443
+ if (!opts || !(opts->flags & GIT_COMMIT_PARSE_QUICK)) {
431
444
  commit->author = git__malloc(sizeof(git_signature));
432
445
  GIT_ERROR_CHECK_ALLOC(commit->author);
433
446
 
434
- if (git_signature__parse(commit->author, &buffer, buffer_end, "author ", '\n') < 0)
435
- return -1;
447
+ if ((error = git_signature__parse(commit->author, &buffer, buffer_end, "author ", '\n')) < 0)
448
+ return error;
436
449
  }
437
450
 
438
451
  /* Some tools create multiple author fields, ignore the extra ones */
439
452
  while (!git__prefixncmp(buffer, buffer_end - buffer, "author ")) {
440
- if (git_signature__parse(&dummy_sig, &buffer, buffer_end, "author ", '\n') < 0)
441
- return -1;
453
+ if ((error = git_signature__parse(&dummy_sig, &buffer, buffer_end, "author ", '\n')) < 0)
454
+ return error;
442
455
 
443
456
  git__free(dummy_sig.name);
444
457
  git__free(dummy_sig.email);
@@ -448,10 +461,10 @@ static int commit_parse(git_commit *commit, const char *data, size_t size, unsig
448
461
  commit->committer = git__malloc(sizeof(git_signature));
449
462
  GIT_ERROR_CHECK_ALLOC(commit->committer);
450
463
 
451
- if (git_signature__parse(commit->committer, &buffer, buffer_end, "committer ", '\n') < 0)
452
- return -1;
464
+ if ((error = git_signature__parse(commit->committer, &buffer, buffer_end, "committer ", '\n')) < 0)
465
+ return error;
453
466
 
454
- if (flags & GIT_COMMIT_PARSE_QUICK)
467
+ if (opts && opts->flags & GIT_COMMIT_PARSE_QUICK)
455
468
  return 0;
456
469
 
457
470
  /* Parse add'l header entries */
@@ -493,22 +506,42 @@ static int commit_parse(git_commit *commit, const char *data, size_t size, unsig
493
506
 
494
507
  bad_buffer:
495
508
  git_error_set(GIT_ERROR_OBJECT, "failed to parse bad commit object");
496
- return -1;
509
+ return GIT_EINVALID;
497
510
  }
498
511
 
499
- int git_commit__parse_raw(void *commit, const char *data, size_t size)
512
+ int git_commit__parse(
513
+ void *commit,
514
+ git_odb_object *odb_obj,
515
+ git_oid_t oid_type)
500
516
  {
501
- return commit_parse(commit, data, size, 0);
517
+ git_commit__parse_options parse_options = {0};
518
+ parse_options.oid_type = oid_type;
519
+
520
+ return git_commit__parse_ext(commit, odb_obj, &parse_options);
502
521
  }
503
522
 
504
- int git_commit__parse_ext(git_commit *commit, git_odb_object *odb_obj, unsigned int flags)
523
+ int git_commit__parse_raw(
524
+ void *commit,
525
+ const char *data,
526
+ size_t size,
527
+ git_oid_t oid_type)
505
528
  {
506
- return commit_parse(commit, git_odb_object_data(odb_obj), git_odb_object_size(odb_obj), flags);
529
+ git_commit__parse_options parse_options = {0};
530
+ parse_options.oid_type = oid_type;
531
+
532
+ return commit_parse(commit, data, size, &parse_options);
507
533
  }
508
534
 
509
- int git_commit__parse(void *_commit, git_odb_object *odb_obj)
535
+ int git_commit__parse_ext(
536
+ git_commit *commit,
537
+ git_odb_object *odb_obj,
538
+ git_commit__parse_options *parse_opts)
510
539
  {
511
- return git_commit__parse_ext(_commit, odb_obj, 0);
540
+ return commit_parse(
541
+ commit,
542
+ git_odb_object_data(odb_obj),
543
+ git_odb_object_size(odb_obj),
544
+ parse_opts);
512
545
  }
513
546
 
514
547
  #define GIT_COMMIT_GETTER(_rvalue, _name, _return, _invalid) \
@@ -545,8 +578,8 @@ const char *git_commit_message(const git_commit *commit)
545
578
 
546
579
  const char *git_commit_summary(git_commit *commit)
547
580
  {
548
- git_buf summary = GIT_BUF_INIT;
549
- const char *msg, *space;
581
+ git_str summary = GIT_STR_INIT;
582
+ const char *msg, *space, *next;
550
583
  bool space_contains_newline = false;
551
584
 
552
585
  GIT_ASSERT_ARG_WITH_RETVAL(commit, NULL);
@@ -555,10 +588,21 @@ const char *git_commit_summary(git_commit *commit)
555
588
  for (msg = git_commit_message(commit), space = NULL; *msg; ++msg) {
556
589
  char next_character = msg[0];
557
590
  /* stop processing at the end of the first paragraph */
558
- if (next_character == '\n' && (!msg[1] || msg[1] == '\n'))
559
- break;
591
+ if (next_character == '\n') {
592
+ if (!msg[1])
593
+ break;
594
+ if (msg[1] == '\n')
595
+ break;
596
+ /* stop processing if next line contains only whitespace */
597
+ next = msg + 1;
598
+ while (*next && git__isspace_nonlf(*next)) {
599
+ ++next;
600
+ }
601
+ if (!*next || *next == '\n')
602
+ break;
603
+ }
560
604
  /* record the beginning of contiguous whitespace runs */
561
- else if (git__isspace(next_character)) {
605
+ if (git__isspace(next_character)) {
562
606
  if(space == NULL) {
563
607
  space = msg;
564
608
  space_contains_newline = false;
@@ -570,17 +614,17 @@ const char *git_commit_summary(git_commit *commit)
570
614
  /* process any recorded whitespace */
571
615
  if (space) {
572
616
  if(space_contains_newline)
573
- git_buf_putc(&summary, ' '); /* if the space contains a newline, collapse to ' ' */
617
+ git_str_putc(&summary, ' '); /* if the space contains a newline, collapse to ' ' */
574
618
  else
575
- git_buf_put(&summary, space, (msg - space)); /* otherwise copy it */
619
+ git_str_put(&summary, space, (msg - space)); /* otherwise copy it */
576
620
  space = NULL;
577
621
  }
578
622
  /* copy the next character */
579
- git_buf_putc(&summary, next_character);
623
+ git_str_putc(&summary, next_character);
580
624
  }
581
625
  }
582
626
 
583
- commit->summary = git_buf_detach(&summary);
627
+ commit->summary = git_str_detach(&summary);
584
628
  if (!commit->summary)
585
629
  commit->summary = git__strdup("");
586
630
  }
@@ -678,11 +722,22 @@ int git_commit_nth_gen_ancestor(
678
722
  return 0;
679
723
  }
680
724
 
681
- int git_commit_header_field(git_buf *out, const git_commit *commit, const char *field)
725
+ int git_commit_header_field(
726
+ git_buf *out,
727
+ const git_commit *commit,
728
+ const char *field)
729
+ {
730
+ GIT_BUF_WRAP_PRIVATE(out, git_commit__header_field, commit, field);
731
+ }
732
+
733
+ int git_commit__header_field(
734
+ git_str *out,
735
+ const git_commit *commit,
736
+ const char *field)
682
737
  {
683
738
  const char *eol, *buf = commit->raw_header;
684
739
 
685
- git_buf_clear(out);
740
+ git_str_clear(out);
686
741
 
687
742
  while ((eol = strchr(buf, '\n'))) {
688
743
  /* We can skip continuations here */
@@ -706,22 +761,22 @@ int git_commit_header_field(git_buf *out, const git_commit *commit, const char *
706
761
 
707
762
  buf++; /* skip the SP */
708
763
 
709
- git_buf_put(out, buf, eol - buf);
710
- if (git_buf_oom(out))
764
+ git_str_put(out, buf, eol - buf);
765
+ if (git_str_oom(out))
711
766
  goto oom;
712
767
 
713
768
  /* If the next line starts with SP, it's multi-line, we must continue */
714
769
  while (eol[1] == ' ') {
715
- git_buf_putc(out, '\n');
770
+ git_str_putc(out, '\n');
716
771
  buf = eol + 2;
717
772
  eol = strchr(buf, '\n');
718
773
  if (!eol)
719
774
  goto malformed;
720
775
 
721
- git_buf_put(out, buf, eol - buf);
776
+ git_str_put(out, buf, eol - buf);
722
777
  }
723
778
 
724
- if (git_buf_oom(out))
779
+ if (git_str_oom(out))
725
780
  goto oom;
726
781
 
727
782
  return 0;
@@ -738,7 +793,35 @@ oom:
738
793
  return -1;
739
794
  }
740
795
 
741
- int git_commit_extract_signature(git_buf *signature, git_buf *signed_data, git_repository *repo, git_oid *commit_id, const char *field)
796
+ int git_commit_extract_signature(
797
+ git_buf *signature_out,
798
+ git_buf *signed_data_out,
799
+ git_repository *repo,
800
+ git_oid *commit_id,
801
+ const char *field)
802
+ {
803
+ git_str signature = GIT_STR_INIT, signed_data = GIT_STR_INIT;
804
+ int error;
805
+
806
+ if ((error = git_buf_tostr(&signature, signature_out)) < 0 ||
807
+ (error = git_buf_tostr(&signed_data, signed_data_out)) < 0 ||
808
+ (error = git_commit__extract_signature(&signature, &signed_data, repo, commit_id, field)) < 0 ||
809
+ (error = git_buf_fromstr(signature_out, &signature)) < 0 ||
810
+ (error = git_buf_fromstr(signed_data_out, &signed_data)) < 0)
811
+ goto done;
812
+
813
+ done:
814
+ git_str_dispose(&signature);
815
+ git_str_dispose(&signed_data);
816
+ return error;
817
+ }
818
+
819
+ int git_commit__extract_signature(
820
+ git_str *signature,
821
+ git_str *signed_data,
822
+ git_repository *repo,
823
+ git_oid *commit_id,
824
+ const char *field)
742
825
  {
743
826
  git_odb_object *obj;
744
827
  git_odb *odb;
@@ -746,8 +829,8 @@ int git_commit_extract_signature(git_buf *signature, git_buf *signed_data, git_r
746
829
  const char *h, *eol;
747
830
  int error;
748
831
 
749
- git_buf_clear(signature);
750
- git_buf_clear(signed_data);
832
+ git_str_clear(signature);
833
+ git_str_clear(signed_data);
751
834
 
752
835
  if (!field)
753
836
  field = "gpgsig";
@@ -769,7 +852,7 @@ int git_commit_extract_signature(git_buf *signature, git_buf *signed_data, git_r
769
852
  while ((h = strchr(buf, '\n')) && h[1] != '\0') {
770
853
  h++;
771
854
  if (git__prefixcmp(buf, field)) {
772
- if (git_buf_put(signed_data, buf, h - buf) < 0)
855
+ if (git_str_put(signed_data, buf, h - buf) < 0)
773
856
  return -1;
774
857
 
775
858
  buf = h;
@@ -788,25 +871,25 @@ int git_commit_extract_signature(git_buf *signature, git_buf *signed_data, git_r
788
871
 
789
872
  h++; /* skip the SP */
790
873
 
791
- git_buf_put(signature, h, eol - h);
792
- if (git_buf_oom(signature))
874
+ git_str_put(signature, h, eol - h);
875
+ if (git_str_oom(signature))
793
876
  goto oom;
794
877
 
795
878
  /* If the next line starts with SP, it's multi-line, we must continue */
796
879
  while (eol[1] == ' ') {
797
- git_buf_putc(signature, '\n');
880
+ git_str_putc(signature, '\n');
798
881
  h = eol + 2;
799
882
  eol = strchr(h, '\n');
800
883
  if (!eol)
801
884
  goto malformed;
802
885
 
803
- git_buf_put(signature, h, eol - h);
886
+ git_str_put(signature, h, eol - h);
804
887
  }
805
888
 
806
- if (git_buf_oom(signature))
889
+ if (git_str_oom(signature))
807
890
  goto oom;
808
891
 
809
- error = git_buf_puts(signed_data, eol+1);
892
+ error = git_str_puts(signed_data, eol+1);
810
893
  git_odb_object_free(obj);
811
894
  return error;
812
895
  }
@@ -826,12 +909,29 @@ oom:
826
909
 
827
910
  cleanup:
828
911
  git_odb_object_free(obj);
829
- git_buf_clear(signature);
830
- git_buf_clear(signed_data);
912
+ git_str_clear(signature);
913
+ git_str_clear(signed_data);
831
914
  return error;
832
915
  }
833
916
 
834
- int git_commit_create_buffer(git_buf *out,
917
+ int git_commit_create_buffer(
918
+ git_buf *out,
919
+ git_repository *repo,
920
+ const git_signature *author,
921
+ const git_signature *committer,
922
+ const char *message_encoding,
923
+ const char *message,
924
+ const git_tree *tree,
925
+ size_t parent_count,
926
+ const git_commit *parents[])
927
+ {
928
+ GIT_BUF_WRAP_PRIVATE(out, git_commit__create_buffer, repo,
929
+ author, committer, message_encoding, message,
930
+ tree, parent_count, parents);
931
+ }
932
+
933
+ int git_commit__create_buffer(
934
+ git_str *out,
835
935
  git_repository *repo,
836
936
  const git_signature *author,
837
937
  const git_signature *committer,
@@ -866,7 +966,7 @@ int git_commit_create_buffer(git_buf *out,
866
966
  /**
867
967
  * Append to 'out' properly marking continuations when there's a newline in 'content'
868
968
  */
869
- static int format_header_field(git_buf *out, const char *field, const char *content)
969
+ static int format_header_field(git_str *out, const char *field, const char *content)
870
970
  {
871
971
  const char *lf;
872
972
 
@@ -874,19 +974,19 @@ static int format_header_field(git_buf *out, const char *field, const char *cont
874
974
  GIT_ASSERT_ARG(field);
875
975
  GIT_ASSERT_ARG(content);
876
976
 
877
- git_buf_puts(out, field);
878
- git_buf_putc(out, ' ');
977
+ git_str_puts(out, field);
978
+ git_str_putc(out, ' ');
879
979
 
880
980
  while ((lf = strchr(content, '\n')) != NULL) {
881
- git_buf_put(out, content, lf - content);
882
- git_buf_puts(out, "\n ");
981
+ git_str_put(out, content, lf - content);
982
+ git_str_puts(out, "\n ");
883
983
  content = lf + 1;
884
984
  }
885
985
 
886
- git_buf_puts(out, content);
887
- git_buf_putc(out, '\n');
986
+ git_str_puts(out, content);
987
+ git_str_putc(out, '\n');
888
988
 
889
- return git_buf_oom(out) ? -1 : 0;
989
+ return git_str_oom(out) ? -1 : 0;
890
990
  }
891
991
 
892
992
  static const git_oid *commit_parent_from_commit(size_t n, void *payload)
@@ -908,15 +1008,20 @@ int git_commit_create_with_signature(
908
1008
  int error = 0;
909
1009
  const char *field;
910
1010
  const char *header_end;
911
- git_buf commit = GIT_BUF_INIT;
1011
+ git_str commit = GIT_STR_INIT;
912
1012
  git_commit *parsed;
913
1013
  git_array_oid_t parents = GIT_ARRAY_INIT;
1014
+ git_commit__parse_options parse_opts = {0};
1015
+
1016
+ parse_opts.oid_type = repo->oid_type;
914
1017
 
915
1018
  /* The first step is to verify that all the tree and parents exist */
916
1019
  parsed = git__calloc(1, sizeof(git_commit));
917
1020
  GIT_ERROR_CHECK_ALLOC(parsed);
918
- if ((error = commit_parse(parsed, commit_content, strlen(commit_content), 0)) < 0)
1021
+ if (commit_parse(parsed, commit_content, strlen(commit_content), &parse_opts) < 0) {
1022
+ error = -1;
919
1023
  goto cleanup;
1024
+ }
920
1025
 
921
1026
  if ((error = validate_tree_and_parents(&parents, repo, &parsed->tree_id, commit_parent_from_commit, parsed, NULL, true)) < 0)
922
1027
  goto cleanup;
@@ -933,7 +1038,7 @@ int git_commit_create_with_signature(
933
1038
 
934
1039
  /* The header ends after the first LF */
935
1040
  header_end++;
936
- git_buf_put(&commit, commit_content, header_end - commit_content);
1041
+ git_str_put(&commit, commit_content, header_end - commit_content);
937
1042
 
938
1043
  if (signature != NULL) {
939
1044
  field = signature_field ? signature_field : "gpgsig";
@@ -942,9 +1047,9 @@ int git_commit_create_with_signature(
942
1047
  goto cleanup;
943
1048
  }
944
1049
 
945
- git_buf_puts(&commit, header_end);
1050
+ git_str_puts(&commit, header_end);
946
1051
 
947
- if (git_buf_oom(&commit))
1052
+ if (git_str_oom(&commit))
948
1053
  return -1;
949
1054
 
950
1055
  if ((error = git_repository_odb__weakptr(&odb, repo)) < 0)
@@ -955,7 +1060,7 @@ int git_commit_create_with_signature(
955
1060
 
956
1061
  cleanup:
957
1062
  git_commit__free(parsed);
958
- git_buf_dispose(&commit);
1063
+ git_str_dispose(&commit);
959
1064
  return error;
960
1065
  }
961
1066
 
@@ -0,0 +1,87 @@
1
+ /*
2
+ * Copyright (C) the libgit2 contributors. All rights reserved.
3
+ *
4
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
5
+ * a Linking Exception. For full terms see the included COPYING file.
6
+ */
7
+ #ifndef INCLUDE_commit_h__
8
+ #define INCLUDE_commit_h__
9
+
10
+ #include "common.h"
11
+
12
+ #include "git2/commit.h"
13
+ #include "tree.h"
14
+ #include "repository.h"
15
+ #include "array.h"
16
+
17
+ #include <time.h>
18
+
19
+ struct git_commit {
20
+ git_object object;
21
+
22
+ git_array_t(git_oid) parent_ids;
23
+ git_oid tree_id;
24
+
25
+ git_signature *author;
26
+ git_signature *committer;
27
+
28
+ char *message_encoding;
29
+ char *raw_message;
30
+ char *raw_header;
31
+
32
+ char *summary;
33
+ char *body;
34
+ };
35
+
36
+ typedef struct {
37
+ git_oid_t oid_type;
38
+ unsigned int flags;
39
+ } git_commit__parse_options;
40
+
41
+ typedef enum {
42
+ /** Only parse parents and committer info */
43
+ GIT_COMMIT_PARSE_QUICK = (1 << 0)
44
+ } git_commit__parse_flags;
45
+
46
+ int git_commit__header_field(
47
+ git_str *out,
48
+ const git_commit *commit,
49
+ const char *field);
50
+
51
+ int git_commit__extract_signature(
52
+ git_str *signature,
53
+ git_str *signed_data,
54
+ git_repository *repo,
55
+ git_oid *commit_id,
56
+ const char *field);
57
+
58
+ int git_commit__create_buffer(
59
+ git_str *out,
60
+ git_repository *repo,
61
+ const git_signature *author,
62
+ const git_signature *committer,
63
+ const char *message_encoding,
64
+ const char *message,
65
+ const git_tree *tree,
66
+ size_t parent_count,
67
+ const git_commit *parents[]);
68
+
69
+ int git_commit__parse(
70
+ void *commit,
71
+ git_odb_object *obj,
72
+ git_oid_t oid_type);
73
+
74
+ int git_commit__parse_raw(
75
+ void *commit,
76
+ const char *data,
77
+ size_t size,
78
+ git_oid_t oid_type);
79
+
80
+ int git_commit__parse_ext(
81
+ git_commit *commit,
82
+ git_odb_object *odb_obj,
83
+ git_commit__parse_options *parse_opts);
84
+
85
+ void git_commit__free(void *commit);
86
+
87
+ #endif