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
@@ -22,11 +22,41 @@
22
22
  */
23
23
  GIT_BEGIN_DECL
24
24
 
25
+ /** Flags controlling the behavior of ODB lookup operations */
26
+ typedef enum {
27
+ /**
28
+ * Don't call `git_odb_refresh` if the lookup fails. Useful when doing
29
+ * a batch of lookup operations for objects that may legitimately not
30
+ * exist. When using this flag, you may wish to manually call
31
+ * `git_odb_refresh` before processing a batch of objects.
32
+ */
33
+ GIT_ODB_LOOKUP_NO_REFRESH = (1 << 0)
34
+ } git_odb_lookup_flags_t;
35
+
25
36
  /**
26
37
  * Function type for callbacks from git_odb_foreach.
27
38
  */
28
39
  typedef int GIT_CALLBACK(git_odb_foreach_cb)(const git_oid *id, void *payload);
29
40
 
41
+ /** Options for configuring a loose object backend. */
42
+ typedef struct {
43
+ unsigned int version; /**< version for the struct */
44
+
45
+ /**
46
+ * Type of object IDs to use for this object database, or
47
+ * 0 for default (currently SHA1).
48
+ */
49
+ git_oid_t oid_type;
50
+ } git_odb_options;
51
+
52
+ /* The current version of the diff options structure */
53
+ #define GIT_ODB_OPTIONS_VERSION 1
54
+
55
+ /* Stack initializer for odb options. Alternatively use
56
+ * `git_odb_options_init` programmatic initialization.
57
+ */
58
+ #define GIT_ODB_OPTIONS_INIT { GIT_ODB_OPTIONS_VERSION }
59
+
30
60
  /**
31
61
  * Create a new object database with no backends.
32
62
  *
@@ -35,9 +65,14 @@ typedef int GIT_CALLBACK(git_odb_foreach_cb)(const git_oid *id, void *payload);
35
65
  *
36
66
  * @param out location to store the database pointer, if opened.
37
67
  * Set to NULL if the open failed.
68
+ * @param opts the options for this object database or NULL for defaults
38
69
  * @return 0 or an error code
39
70
  */
71
+ #ifdef GIT_EXPERIMENTAL_SHA256
72
+ GIT_EXTERN(int) git_odb_new(git_odb **out, const git_odb_options *opts);
73
+ #else
40
74
  GIT_EXTERN(int) git_odb_new(git_odb **out);
75
+ #endif
41
76
 
42
77
  /**
43
78
  * Create a new object database and automatically add
@@ -53,9 +88,17 @@ GIT_EXTERN(int) git_odb_new(git_odb **out);
53
88
  * @param out location to store the database pointer, if opened.
54
89
  * Set to NULL if the open failed.
55
90
  * @param objects_dir path of the backends' "objects" directory.
91
+ * @param opts the options for this object database or NULL for defaults
56
92
  * @return 0 or an error code
57
93
  */
94
+ #ifdef GIT_EXPERIMENTAL_SHA256
95
+ GIT_EXTERN(int) git_odb_open(
96
+ git_odb **out,
97
+ const char *objects_dir,
98
+ const git_odb_options *opts);
99
+ #else
58
100
  GIT_EXTERN(int) git_odb_open(git_odb **out, const char *objects_dir);
101
+ #endif
59
102
 
60
103
  /**
61
104
  * Add an on-disk alternate to an existing Object DB.
@@ -106,7 +149,7 @@ GIT_EXTERN(int) git_odb_read(git_odb_object **out, git_odb *db, const git_oid *i
106
149
  * This method queries all available ODB backends
107
150
  * trying to match the 'len' first hexadecimal
108
151
  * characters of the 'short_id'.
109
- * The remaining (GIT_OID_HEXSZ-len)*4 bits of
152
+ * The remaining (GIT_OID_SHA1_HEXSIZE-len)*4 bits of
110
153
  * 'short_id' must be 0s.
111
154
  * 'len' must be at least GIT_OID_MINPREFIXLEN,
112
155
  * and the prefix must be long enough to identify
@@ -155,6 +198,17 @@ GIT_EXTERN(int) git_odb_read_header(size_t *len_out, git_object_t *type_out, git
155
198
  */
156
199
  GIT_EXTERN(int) git_odb_exists(git_odb *db, const git_oid *id);
157
200
 
201
+ /**
202
+ * Determine if the given object can be found in the object database, with
203
+ * extended options.
204
+ *
205
+ * @param db database to be searched for the given object.
206
+ * @param id the object to search for.
207
+ * @param flags flags affecting the lookup (see `git_odb_lookup_flags_t`)
208
+ * @return 1 if the object was found, 0 otherwise
209
+ */
210
+ GIT_EXTERN(int) git_odb_exists_ext(git_odb *db, const git_oid *id, unsigned int flags);
211
+
158
212
  /**
159
213
  * Determine if an object can be found in the object database by an
160
214
  * abbreviated object ID.
@@ -192,12 +246,13 @@ typedef struct git_odb_expand_id {
192
246
 
193
247
  /**
194
248
  * Determine if one or more objects can be found in the object database
195
- * by their abbreviated object ID and type. The given array will be
196
- * updated in place: for each abbreviated ID that is unique in the
197
- * database, and of the given type (if specified), the full object ID,
198
- * object ID length (`GIT_OID_HEXSZ`) and type will be written back to
199
- * the array. For IDs that are not found (or are ambiguous), the
200
- * array entry will be zeroed.
249
+ * by their abbreviated object ID and type.
250
+ *
251
+ * The given array will be updated in place: for each abbreviated ID that is
252
+ * unique in the database, and of the given type (if specified),
253
+ * the full object ID, object ID length (`GIT_OID_SHA1_HEXSIZE`) and type will be
254
+ * written back to the array. For IDs that are not found (or are ambiguous),
255
+ * the array entry will be zeroed.
201
256
  *
202
257
  * Note that since this function operates on multiple objects, the
203
258
  * underlying database will not be asked to be reloaded if an object is
@@ -323,6 +378,11 @@ GIT_EXTERN(int) git_odb_stream_finalize_write(git_oid *out, git_odb_stream *stre
323
378
  * Read from an odb stream
324
379
  *
325
380
  * Most backends don't implement streaming reads
381
+ *
382
+ * @param stream the stream
383
+ * @param buffer a user-allocated buffer to store the data in.
384
+ * @param len the buffer's length
385
+ * @return 0 if the read succeeded, error code otherwise
326
386
  */
327
387
  GIT_EXTERN(int) git_odb_stream_read(git_odb_stream *stream, char *buffer, size_t len);
328
388
 
@@ -383,6 +443,7 @@ GIT_EXTERN(int) git_odb_open_rstream(
383
443
  * Be aware that this is called inline with network and indexing operations,
384
444
  * so performance may be affected.
385
445
  * @param progress_payload payload for the progress callback
446
+ * @return 0 or an error code.
386
447
  */
387
448
  GIT_EXTERN(int) git_odb_write_pack(
388
449
  git_odb_writepack **out,
@@ -400,23 +461,34 @@ GIT_EXTERN(int) git_odb_write_pack(
400
461
  * exist).
401
462
  *
402
463
  * @param db object database where the `multi-pack-index` file will be written.
464
+ * @return 0 or an error code.
403
465
  */
404
466
  GIT_EXTERN(int) git_odb_write_multi_pack_index(
405
467
  git_odb *db);
406
468
 
407
469
  /**
408
- * Determine the object-ID (sha1 hash) of a data buffer
470
+ * Determine the object-ID (sha1 or sha256 hash) of a data buffer
409
471
  *
410
- * The resulting SHA-1 OID will be the identifier for the data
411
- * buffer as if the data buffer it were to written to the ODB.
472
+ * The resulting OID will be the identifier for the data buffer as if
473
+ * the data buffer it were to written to the ODB.
412
474
  *
413
475
  * @param out the resulting object-ID.
414
476
  * @param data data to hash
415
477
  * @param len size of the data
416
- * @param type of the data to hash
478
+ * @param object_type of the data to hash
479
+ * @param oid_type the oid type to hash to
417
480
  * @return 0 or an error code
418
481
  */
482
+ #ifdef GIT_EXPERIMENTAL_SHA256
483
+ GIT_EXTERN(int) git_odb_hash(
484
+ git_oid *out,
485
+ const void *data,
486
+ size_t len,
487
+ git_object_t object_type,
488
+ git_oid_t oid_type);
489
+ #else
419
490
  GIT_EXTERN(int) git_odb_hash(git_oid *out, const void *data, size_t len, git_object_t type);
491
+ #endif
420
492
 
421
493
  /**
422
494
  * Read a file from disk and fill a git_oid with the object id
@@ -428,10 +500,19 @@ GIT_EXTERN(int) git_odb_hash(git_oid *out, const void *data, size_t len, git_obj
428
500
  *
429
501
  * @param out oid structure the result is written into.
430
502
  * @param path file to read and determine object id for
431
- * @param type the type of the object that will be hashed
503
+ * @param object_type of the data to hash
504
+ * @param oid_type the oid type to hash to
432
505
  * @return 0 or an error code
433
506
  */
507
+ #ifdef GIT_EXPERIMENTAL_SHA256
508
+ GIT_EXTERN(int) git_odb_hashfile(
509
+ git_oid *out,
510
+ const char *path,
511
+ git_object_t object_type,
512
+ git_oid_t oid_type);
513
+ #else
434
514
  GIT_EXTERN(int) git_odb_hashfile(git_oid *out, const char *path, git_object_t type);
515
+ #endif
435
516
 
436
517
  /**
437
518
  * Create a copy of an odb_object
@@ -556,7 +637,7 @@ GIT_EXTERN(int) git_odb_get_backend(git_odb_backend **out, git_odb *odb, size_t
556
637
  /**
557
638
  * Set the git commit-graph for the ODB.
558
639
  *
559
- * After a successfull call, the ownership of the cgraph parameter will be
640
+ * After a successful call, the ownership of the cgraph parameter will be
560
641
  * transferred to libgit2, and the caller should not free it.
561
642
  *
562
643
  * The commit-graph can also be unset by explicitly passing NULL as the cgraph
@@ -24,6 +24,26 @@ GIT_BEGIN_DECL
24
24
  * Constructors for in-box ODB backends.
25
25
  */
26
26
 
27
+ /** Options for configuring a packfile object backend. */
28
+ typedef struct {
29
+ unsigned int version; /**< version for the struct */
30
+
31
+ /**
32
+ * Type of object IDs to use for this object database, or
33
+ * 0 for default (currently SHA1).
34
+ */
35
+ git_oid_t oid_type;
36
+ } git_odb_backend_pack_options;
37
+
38
+ /* The current version of the diff options structure */
39
+ #define GIT_ODB_BACKEND_PACK_OPTIONS_VERSION 1
40
+
41
+ /* Stack initializer for odb pack backend options. Alternatively use
42
+ * `git_odb_backend_pack_options_init` programmatic initialization.
43
+ */
44
+ #define GIT_ODB_BACKEND_PACK_OPTIONS_INIT \
45
+ { GIT_ODB_BACKEND_PACK_OPTIONS_VERSION }
46
+
27
47
  /**
28
48
  * Create a backend for the packfiles.
29
49
  *
@@ -32,20 +52,96 @@ GIT_BEGIN_DECL
32
52
  *
33
53
  * @return 0 or an error code
34
54
  */
35
- GIT_EXTERN(int) git_odb_backend_pack(git_odb_backend **out, const char *objects_dir);
55
+ #ifdef GIT_EXPERIMENTAL_SHA256
56
+ GIT_EXTERN(int) git_odb_backend_pack(
57
+ git_odb_backend **out,
58
+ const char *objects_dir,
59
+ const git_odb_backend_pack_options *opts);
60
+ #else
61
+ GIT_EXTERN(int) git_odb_backend_pack(
62
+ git_odb_backend **out,
63
+ const char *objects_dir);
64
+ #endif
65
+
66
+ /**
67
+ * Create a backend out of a single packfile
68
+ *
69
+ * This can be useful for inspecting the contents of a single
70
+ * packfile.
71
+ *
72
+ * @param out location to store the odb backend pointer
73
+ * @param index_file path to the packfile's .idx file
74
+ *
75
+ * @return 0 or an error code
76
+ */
77
+ #ifdef GIT_EXPERIMENTAL_SHA256
78
+ GIT_EXTERN(int) git_odb_backend_one_pack(
79
+ git_odb_backend **out,
80
+ const char *index_file,
81
+ const git_odb_backend_pack_options *opts);
82
+ #else
83
+ GIT_EXTERN(int) git_odb_backend_one_pack(
84
+ git_odb_backend **out,
85
+ const char *index_file);
86
+ #endif
87
+
88
+ typedef enum {
89
+ GIT_ODB_BACKEND_LOOSE_FSYNC = (1 << 0)
90
+ } git_odb_backend_loose_flag_t;
91
+
92
+ /** Options for configuring a loose object backend. */
93
+ typedef struct {
94
+ unsigned int version; /**< version for the struct */
95
+
96
+ /** A combination of the `git_odb_backend_loose_flag_t` types. */
97
+ uint32_t flags;
98
+
99
+ /**
100
+ * zlib compression level to use (0-9), where 1 is the fastest
101
+ * at the expense of larger files, and 9 produces the best
102
+ * compression at the expense of speed. 0 indicates that no
103
+ * compression should be performed. -1 is the default (currently
104
+ * optimizing for speed).
105
+ */
106
+ int compression_level;
107
+
108
+ /** Permissions to use creating a directory or 0 for defaults */
109
+ unsigned int dir_mode;
110
+
111
+ /** Permissions to use creating a file or 0 for defaults */
112
+ unsigned int file_mode;
113
+
114
+ /**
115
+ * Type of object IDs to use for this object database, or
116
+ * 0 for default (currently SHA1).
117
+ */
118
+ git_oid_t oid_type;
119
+ } git_odb_backend_loose_options;
120
+
121
+ /* The current version of the diff options structure */
122
+ #define GIT_ODB_BACKEND_LOOSE_OPTIONS_VERSION 1
123
+
124
+ /* Stack initializer for odb loose backend options. Alternatively use
125
+ * `git_odb_backend_loose_options_init` programmatic initialization.
126
+ */
127
+ #define GIT_ODB_BACKEND_LOOSE_OPTIONS_INIT \
128
+ { GIT_ODB_BACKEND_LOOSE_OPTIONS_VERSION, 0, -1 }
36
129
 
37
130
  /**
38
131
  * Create a backend for loose objects
39
132
  *
40
133
  * @param out location to store the odb backend pointer
41
134
  * @param objects_dir the Git repository's objects directory
42
- * @param compression_level zlib compression level to use
43
- * @param do_fsync whether to do an fsync() after writing
44
- * @param dir_mode permissions to use creating a directory or 0 for defaults
45
- * @param file_mode permissions to use creating a file or 0 for defaults
135
+ * @param opts options for the loose object backend or NULL
46
136
  *
47
137
  * @return 0 or an error code
48
138
  */
139
+ #ifdef GIT_EXPERIMENTAL_SHA256
140
+ GIT_EXTERN(int) git_odb_backend_loose(
141
+ git_odb_backend **out,
142
+ const char *objects_dir,
143
+ git_odb_backend_loose_options *opts);
144
+ #else
49
145
  GIT_EXTERN(int) git_odb_backend_loose(
50
146
  git_odb_backend **out,
51
147
  const char *objects_dir,
@@ -53,25 +149,13 @@ GIT_EXTERN(int) git_odb_backend_loose(
53
149
  int do_fsync,
54
150
  unsigned int dir_mode,
55
151
  unsigned int file_mode);
56
-
57
- /**
58
- * Create a backend out of a single packfile
59
- *
60
- * This can be useful for inspecting the contents of a single
61
- * packfile.
62
- *
63
- * @param out location to store the odb backend pointer
64
- * @param index_file path to the packfile's .idx file
65
- *
66
- * @return 0 or an error code
67
- */
68
- GIT_EXTERN(int) git_odb_backend_one_pack(git_odb_backend **out, const char *index_file);
152
+ #endif
69
153
 
70
154
  /** Streaming mode */
71
155
  typedef enum {
72
156
  GIT_STREAM_RDONLY = (1 << 1),
73
157
  GIT_STREAM_WRONLY = (1 << 2),
74
- GIT_STREAM_RW = (GIT_STREAM_RDONLY | GIT_STREAM_WRONLY),
158
+ GIT_STREAM_RW = (GIT_STREAM_RDONLY | GIT_STREAM_WRONLY)
75
159
  } git_odb_stream_t;
76
160
 
77
161
  /**
@@ -87,6 +171,10 @@ struct git_odb_stream {
87
171
  unsigned int mode;
88
172
  void *hash_ctx;
89
173
 
174
+ #ifdef GIT_EXPERIMENTAL_SHA256
175
+ git_oid_t oid_type;
176
+ #endif
177
+
90
178
  git_object_size_t declared_size;
91
179
  git_object_size_t received_bytes;
92
180
 
@@ -9,6 +9,7 @@
9
9
 
10
10
  #include "common.h"
11
11
  #include "types.h"
12
+ #include "experimental.h"
12
13
 
13
14
  /**
14
15
  * @file git2/oid.h
@@ -19,11 +20,76 @@
19
20
  */
20
21
  GIT_BEGIN_DECL
21
22
 
22
- /** Size (in bytes) of a raw/binary oid */
23
- #define GIT_OID_RAWSZ 20
23
+ /** The type of object id. */
24
+ typedef enum {
24
25
 
25
- /** Size (in bytes) of a hex formatted oid */
26
- #define GIT_OID_HEXSZ (GIT_OID_RAWSZ * 2)
26
+ #ifdef GIT_EXPERIMENTAL_SHA256
27
+ GIT_OID_SHA1 = 1, /**< SHA1 */
28
+ GIT_OID_SHA256 = 2 /**< SHA256 */
29
+ #else
30
+ GIT_OID_SHA1 = 1 /**< SHA1 */
31
+ #endif
32
+
33
+ } git_oid_t;
34
+
35
+ /*
36
+ * SHA1 is currently the only supported object ID type.
37
+ */
38
+
39
+ /** SHA1 is currently libgit2's default oid type. */
40
+ #define GIT_OID_DEFAULT GIT_OID_SHA1
41
+
42
+ /** Size (in bytes) of a raw/binary sha1 oid */
43
+ #define GIT_OID_SHA1_SIZE 20
44
+ /** Size (in bytes) of a hex formatted sha1 oid */
45
+ #define GIT_OID_SHA1_HEXSIZE (GIT_OID_SHA1_SIZE * 2)
46
+
47
+ /**
48
+ * The binary representation of the null sha1 object ID.
49
+ */
50
+ #ifndef GIT_EXPERIMENTAL_SHA256
51
+ # define GIT_OID_SHA1_ZERO { { 0 } }
52
+ #else
53
+ # define GIT_OID_SHA1_ZERO { GIT_OID_SHA1, { 0 } }
54
+ #endif
55
+
56
+ /**
57
+ * The string representation of the null sha1 object ID.
58
+ */
59
+ #define GIT_OID_SHA1_HEXZERO "0000000000000000000000000000000000000000"
60
+
61
+ /*
62
+ * Experimental SHA256 support is a breaking change to the API.
63
+ * This exists for application compatibility testing.
64
+ */
65
+
66
+ #ifdef GIT_EXPERIMENTAL_SHA256
67
+
68
+ /** Size (in bytes) of a raw/binary sha256 oid */
69
+ # define GIT_OID_SHA256_SIZE 32
70
+ /** Size (in bytes) of a hex formatted sha256 oid */
71
+ # define GIT_OID_SHA256_HEXSIZE (GIT_OID_SHA256_SIZE * 2)
72
+
73
+ /**
74
+ * The binary representation of the null sha256 object ID.
75
+ */
76
+ # define GIT_OID_SHA256_ZERO { GIT_OID_SHA256, { 0 } }
77
+
78
+ /**
79
+ * The string representation of the null sha256 object ID.
80
+ */
81
+ # define GIT_OID_SHA256_HEXZERO "0000000000000000000000000000000000000000000000000000000000000000"
82
+
83
+ #endif
84
+
85
+ /* Maximum possible object ID size in raw / hex string format. */
86
+ #ifndef GIT_EXPERIMENTAL_SHA256
87
+ # define GIT_OID_MAX_SIZE GIT_OID_SHA1_SIZE
88
+ # define GIT_OID_MAX_HEXSIZE GIT_OID_SHA1_HEXSIZE
89
+ #else
90
+ # define GIT_OID_MAX_SIZE GIT_OID_SHA256_SIZE
91
+ # define GIT_OID_MAX_HEXSIZE GIT_OID_SHA256_HEXSIZE
92
+ #endif
27
93
 
28
94
  /** Minimum length (in number of hex characters,
29
95
  * i.e. packets of 4 bits) of an oid prefix */
@@ -31,29 +97,50 @@ GIT_BEGIN_DECL
31
97
 
32
98
  /** Unique identity of any object (commit, tree, blob, tag). */
33
99
  typedef struct git_oid {
100
+
101
+ #ifdef GIT_EXPERIMENTAL_SHA256
102
+ /** type of object id */
103
+ unsigned char type;
104
+ #endif
105
+
34
106
  /** raw binary formatted id */
35
- unsigned char id[GIT_OID_RAWSZ];
107
+ unsigned char id[GIT_OID_MAX_SIZE];
36
108
  } git_oid;
37
109
 
38
110
  /**
39
111
  * Parse a hex formatted object id into a git_oid.
40
112
  *
113
+ * The appropriate number of bytes for the given object ID type will
114
+ * be read from the string - 40 bytes for SHA1, 64 bytes for SHA256.
115
+ * The given string need not be NUL terminated.
116
+ *
41
117
  * @param out oid structure the result is written into.
42
118
  * @param str input hex string; must be pointing at the start of
43
119
  * the hex sequence and have at least the number of bytes
44
- * needed for an oid encoded in hex (40 bytes).
120
+ * needed for an oid encoded in hex (40 bytes for sha1,
121
+ * 256 bytes for sha256).
122
+ * @param type the type of object id
45
123
  * @return 0 or an error code
46
124
  */
125
+ #ifdef GIT_EXPERIMENTAL_SHA256
126
+ GIT_EXTERN(int) git_oid_fromstr(git_oid *out, const char *str, git_oid_t type);
127
+ #else
47
128
  GIT_EXTERN(int) git_oid_fromstr(git_oid *out, const char *str);
129
+ #endif
48
130
 
49
131
  /**
50
- * Parse a hex formatted null-terminated string into a git_oid.
132
+ * Parse a hex formatted NUL-terminated string into a git_oid.
51
133
  *
52
134
  * @param out oid structure the result is written into.
53
135
  * @param str input hex string; must be null-terminated.
136
+ * @param type the type of object id
54
137
  * @return 0 or an error code
55
138
  */
139
+ #ifdef GIT_EXPERIMENTAL_SHA256
140
+ GIT_EXTERN(int) git_oid_fromstrp(git_oid *out, const char *str, git_oid_t type);
141
+ #else
56
142
  GIT_EXTERN(int) git_oid_fromstrp(git_oid *out, const char *str);
143
+ #endif
57
144
 
58
145
  /**
59
146
  * Parse N characters of a hex formatted object id into a git_oid.
@@ -64,9 +151,14 @@ GIT_EXTERN(int) git_oid_fromstrp(git_oid *out, const char *str);
64
151
  * @param out oid structure the result is written into.
65
152
  * @param str input hex string of at least size `length`
66
153
  * @param length length of the input string
154
+ * @param type the type of object id
67
155
  * @return 0 or an error code
68
156
  */
157
+ #ifdef GIT_EXPERIMENTAL_SHA256
158
+ GIT_EXTERN(int) git_oid_fromstrn(git_oid *out, const char *str, size_t length, git_oid_t type);
159
+ #else
69
160
  GIT_EXTERN(int) git_oid_fromstrn(git_oid *out, const char *str, size_t length);
161
+ #endif
70
162
 
71
163
  /**
72
164
  * Copy an already raw oid into a git_oid structure.
@@ -75,16 +167,21 @@ GIT_EXTERN(int) git_oid_fromstrn(git_oid *out, const char *str, size_t length);
75
167
  * @param raw the raw input bytes to be copied.
76
168
  * @return 0 on success or error code
77
169
  */
170
+ #ifdef GIT_EXPERIMENTAL_SHA256
171
+ GIT_EXTERN(int) git_oid_fromraw(git_oid *out, const unsigned char *raw, git_oid_t type);
172
+ #else
78
173
  GIT_EXTERN(int) git_oid_fromraw(git_oid *out, const unsigned char *raw);
174
+ #endif
79
175
 
80
176
  /**
81
177
  * Format a git_oid into a hex string.
82
178
  *
83
179
  * @param out output hex string; must be pointing at the start of
84
180
  * the hex sequence and have at least the number of bytes
85
- * needed for an oid encoded in hex (40 bytes). Only the
86
- * oid digits are written; a '\\0' terminator must be added
87
- * by the caller if it is required.
181
+ * needed for an oid encoded in hex (40 bytes for SHA1,
182
+ * 64 bytes for SHA256). Only the oid digits are written;
183
+ * a '\\0' terminator must be added by the caller if it is
184
+ * required.
88
185
  * @param id oid structure to format.
89
186
  * @return 0 on success or error code
90
187
  */
@@ -94,7 +191,7 @@ GIT_EXTERN(int) git_oid_fmt(char *out, const git_oid *id);
94
191
  * Format a git_oid into a partial hex string.
95
192
  *
96
193
  * @param out output hex string; you say how many bytes to write.
97
- * If the number of bytes is > GIT_OID_HEXSZ, extra bytes
194
+ * If the number of bytes is > GIT_OID_SHA1_HEXSIZE, extra bytes
98
195
  * will be zeroed; if not, a '\0' terminator is NOT added.
99
196
  * @param n number of characters to write into out string
100
197
  * @param id oid structure to format.
@@ -110,9 +207,10 @@ GIT_EXTERN(int) git_oid_nfmt(char *out, size_t n, const git_oid *id);
110
207
  *
111
208
  * @param out output hex string; must be pointing at the start of
112
209
  * the hex sequence and have at least the number of bytes
113
- * needed for an oid encoded in hex (41 bytes). Only the
114
- * oid digits are written; a '\\0' terminator must be added
115
- * by the caller if it is required.
210
+ * needed for an oid encoded in hex (41 bytes for SHA1,
211
+ * 65 bytes for SHA256). Only the oid digits are written;
212
+ * a '\\0' terminator must be added by the caller if it
213
+ * is required.
116
214
  * @param id oid structure to format.
117
215
  * @return 0 on success, non-zero callback return value, or error code
118
216
  */
@@ -134,7 +232,9 @@ GIT_EXTERN(char *) git_oid_tostr_s(const git_oid *oid);
134
232
  /**
135
233
  * Format a git_oid into a buffer as a hex format c-string.
136
234
  *
137
- * If the buffer is smaller than GIT_OID_HEXSZ+1, then the resulting
235
+ * If the buffer is smaller than the size of a hex-formatted oid string
236
+ * plus an additional byte (GIT_OID_SHA_HEXSIZE + 1 for SHA1 or
237
+ * GIT_OID_SHA256_HEXSIZE + 1 for SHA256), then the resulting
138
238
  * oid c-string will be truncated to n-1 characters (but will still be
139
239
  * NUL-byte terminated).
140
240
  *
@@ -51,7 +51,7 @@ GIT_BEGIN_DECL
51
51
  */
52
52
  typedef enum {
53
53
  GIT_PACKBUILDER_ADDING_OBJECTS = 0,
54
- GIT_PACKBUILDER_DELTAFICATION = 1,
54
+ GIT_PACKBUILDER_DELTAFICATION = 1
55
55
  } git_packbuilder_stage_t;
56
56
 
57
57
  /**
@@ -148,6 +148,7 @@ GIT_EXTERN(int) git_packbuilder_insert_recur(git_packbuilder *pb, const git_oid
148
148
  *
149
149
  * @param buf Buffer where to write the packfile
150
150
  * @param pb The packbuilder
151
+ * @return 0 or an error code
151
152
  */
152
153
  GIT_EXTERN(int) git_packbuilder_write_buf(git_buf *buf, git_packbuilder *pb);
153
154
 
@@ -169,15 +170,30 @@ GIT_EXTERN(int) git_packbuilder_write(
169
170
  git_indexer_progress_cb progress_cb,
170
171
  void *progress_cb_payload);
171
172
 
173
+ #ifndef GIT_DEPRECATE_HARD
172
174
  /**
173
- * Get the packfile's hash
174
- *
175
- * A packfile's name is derived from the sorted hashing of all object
176
- * names. This is only correct after the packfile has been written.
177
- *
178
- * @param pb The packbuilder object
179
- */
175
+ * Get the packfile's hash
176
+ *
177
+ * A packfile's name is derived from the sorted hashing of all object
178
+ * names. This is only correct after the packfile has been written.
179
+ *
180
+ * @deprecated use git_packbuilder_name
181
+ * @param pb The packbuilder object
182
+ * @return 0 or an error code
183
+ */
180
184
  GIT_EXTERN(const git_oid *) git_packbuilder_hash(git_packbuilder *pb);
185
+ #endif
186
+
187
+ /**
188
+ * Get the unique name for the resulting packfile.
189
+ *
190
+ * The packfile's name is derived from the packfile's content.
191
+ * This is only correct after the packfile has been written.
192
+ *
193
+ * @param pb the packbuilder instance
194
+ * @return a NUL terminated string for the packfile name
195
+ */
196
+ GIT_EXTERN(const char *) git_packbuilder_name(git_packbuilder *pb);
181
197
 
182
198
  /**
183
199
  * Callback used to iterate over packed objects
@@ -139,17 +139,25 @@ GIT_EXTERN(int) git_patch_from_buffers(
139
139
 
140
140
  /**
141
141
  * Free a git_patch object.
142
+ *
143
+ * @param patch The patch to free.
142
144
  */
143
145
  GIT_EXTERN(void) git_patch_free(git_patch *patch);
144
146
 
145
147
  /**
146
148
  * Get the delta associated with a patch. This delta points to internal
147
149
  * data and you do not have to release it when you are done with it.
150
+ *
151
+ * @param patch The patch in which to get the delta.
152
+ * @return The delta associated with the patch.
148
153
  */
149
154
  GIT_EXTERN(const git_diff_delta *) git_patch_get_delta(const git_patch *patch);
150
155
 
151
156
  /**
152
157
  * Get the number of hunks in a patch
158
+ *
159
+ * @param patch The patch in which to get the number of hunks.
160
+ * @return The number of hunks of the patch.
153
161
  */
154
162
  GIT_EXTERN(size_t) git_patch_num_hunks(const git_patch *patch);
155
163
 
@@ -69,7 +69,7 @@ typedef enum {
69
69
  * just test if there were any matches at all or in combination with
70
70
  * GIT_PATHSPEC_FIND_FAILURES to validate a pathspec.
71
71
  */
72
- GIT_PATHSPEC_FAILURES_ONLY = (1u << 5),
72
+ GIT_PATHSPEC_FAILURES_ONLY = (1u << 5)
73
73
  } git_pathspec_flag_t;
74
74
 
75
75
  /**
@@ -32,7 +32,7 @@ typedef enum {
32
32
  /**
33
33
  * Connect via the URL given in the options
34
34
  */
35
- GIT_PROXY_SPECIFIED,
35
+ GIT_PROXY_SPECIFIED
36
36
  } git_proxy_t;
37
37
 
38
38
  /**