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
@@ -13,7 +13,14 @@
13
13
  #include <string.h>
14
14
  #include <limits.h>
15
15
 
16
- static char to_hex[] = "0123456789abcdef";
16
+ const git_oid git_oid__empty_blob_sha1 =
17
+ GIT_OID_INIT(GIT_OID_SHA1,
18
+ { 0xe6, 0x9d, 0xe2, 0x9b, 0xb2, 0xd1, 0xd6, 0x43, 0x4b, 0x8b,
19
+ 0x29, 0xae, 0x77, 0x5a, 0xd8, 0xc2, 0xe4, 0x8c, 0x53, 0x91 });
20
+ const git_oid git_oid__empty_tree_sha1 =
21
+ GIT_OID_INIT(GIT_OID_SHA1,
22
+ { 0x4b, 0x82, 0x5d, 0xc6, 0x42, 0xcb, 0x6e, 0xb9, 0xa0, 0x60,
23
+ 0xe5, 0x4b, 0xf8, 0xd6, 0x92, 0x88, 0xfb, 0xee, 0x49, 0x04 });
17
24
 
18
25
  static int oid_error_invalid(const char *msg)
19
26
  {
@@ -21,21 +28,31 @@ static int oid_error_invalid(const char *msg)
21
28
  return -1;
22
29
  }
23
30
 
24
- int git_oid_fromstrn(git_oid *out, const char *str, size_t length)
31
+ int git_oid__fromstrn(
32
+ git_oid *out,
33
+ const char *str,
34
+ size_t length,
35
+ git_oid_t type)
25
36
  {
26
- size_t p;
37
+ size_t size, p;
27
38
  int v;
28
39
 
29
40
  GIT_ASSERT_ARG(out);
30
41
  GIT_ASSERT_ARG(str);
31
42
 
43
+ if (!(size = git_oid_size(type)))
44
+ return oid_error_invalid("unknown type");
45
+
32
46
  if (!length)
33
47
  return oid_error_invalid("too short");
34
48
 
35
- if (length > GIT_OID_HEXSZ)
49
+ if (length > git_oid_hexsize(type))
36
50
  return oid_error_invalid("too long");
37
51
 
38
- memset(out->id, 0, GIT_OID_RAWSZ);
52
+ #ifdef GIT_EXPERIMENTAL_SHA256
53
+ out->type = type;
54
+ #endif
55
+ memset(out->id, 0, size);
39
56
 
40
57
  for (p = 0; p < length; p++) {
41
58
  v = git__fromhex(str[p]);
@@ -48,87 +65,128 @@ int git_oid_fromstrn(git_oid *out, const char *str, size_t length)
48
65
  return 0;
49
66
  }
50
67
 
51
- int git_oid_fromstrp(git_oid *out, const char *str)
68
+ int git_oid__fromstrp(git_oid *out, const char *str, git_oid_t type)
52
69
  {
53
- return git_oid_fromstrn(out, str, strlen(str));
70
+ return git_oid__fromstrn(out, str, strlen(str), type);
54
71
  }
55
72
 
56
- int git_oid_fromstr(git_oid *out, const char *str)
73
+ int git_oid__fromstr(git_oid *out, const char *str, git_oid_t type)
57
74
  {
58
- return git_oid_fromstrn(out, str, GIT_OID_HEXSZ);
75
+ return git_oid__fromstrn(out, str, git_oid_hexsize(type), type);
59
76
  }
60
77
 
61
- GIT_INLINE(char) *fmt_one(char *str, unsigned int val)
78
+ #ifdef GIT_EXPERIMENTAL_SHA256
79
+ int git_oid_fromstrn(
80
+ git_oid *out,
81
+ const char *str,
82
+ size_t length,
83
+ git_oid_t type)
62
84
  {
63
- *str++ = to_hex[val >> 4];
64
- *str++ = to_hex[val & 0xf];
65
- return str;
85
+ return git_oid__fromstrn(out, str, length, type);
86
+ }
87
+
88
+ int git_oid_fromstrp(git_oid *out, const char *str, git_oid_t type)
89
+ {
90
+ return git_oid_fromstrn(out, str, strlen(str), type);
66
91
  }
67
92
 
93
+ int git_oid_fromstr(git_oid *out, const char *str, git_oid_t type)
94
+ {
95
+ return git_oid_fromstrn(out, str, git_oid_hexsize(type), type);
96
+ }
97
+ #else
98
+ int git_oid_fromstrn(
99
+ git_oid *out,
100
+ const char *str,
101
+ size_t length)
102
+ {
103
+ return git_oid__fromstrn(out, str, length, GIT_OID_SHA1);
104
+ }
105
+
106
+ int git_oid_fromstrp(git_oid *out, const char *str)
107
+ {
108
+ return git_oid__fromstrn(out, str, strlen(str), GIT_OID_SHA1);
109
+ }
110
+
111
+ int git_oid_fromstr(git_oid *out, const char *str)
112
+ {
113
+ return git_oid__fromstrn(out, str, GIT_OID_SHA1_HEXSIZE, GIT_OID_SHA1);
114
+ }
115
+ #endif
116
+
68
117
  int git_oid_nfmt(char *str, size_t n, const git_oid *oid)
69
118
  {
70
- size_t i, max_i;
119
+ size_t hex_size;
71
120
 
72
121
  if (!oid) {
73
122
  memset(str, 0, n);
74
123
  return 0;
75
124
  }
76
- if (n > GIT_OID_HEXSZ) {
77
- memset(&str[GIT_OID_HEXSZ], 0, n - GIT_OID_HEXSZ);
78
- n = GIT_OID_HEXSZ;
79
- }
80
-
81
- max_i = n / 2;
82
125
 
83
- for (i = 0; i < max_i; i++)
84
- str = fmt_one(str, oid->id[i]);
126
+ if (!(hex_size = git_oid_hexsize(git_oid_type(oid))))
127
+ return oid_error_invalid("unknown type");
85
128
 
86
- if (n & 1)
87
- *str++ = to_hex[oid->id[i] >> 4];
129
+ if (n > hex_size) {
130
+ memset(&str[hex_size], 0, n - hex_size);
131
+ n = hex_size;
132
+ }
88
133
 
134
+ git_oid_fmt_substr(str, oid, 0, n);
89
135
  return 0;
90
136
  }
91
137
 
92
138
  int git_oid_fmt(char *str, const git_oid *oid)
93
139
  {
94
- return git_oid_nfmt(str, GIT_OID_HEXSZ, oid);
140
+ return git_oid_nfmt(str, git_oid_hexsize(git_oid_type(oid)), oid);
95
141
  }
96
142
 
97
143
  int git_oid_pathfmt(char *str, const git_oid *oid)
98
144
  {
99
- size_t i;
145
+ size_t hex_size;
100
146
 
101
- str = fmt_one(str, oid->id[0]);
102
- *str++ = '/';
103
- for (i = 1; i < sizeof(oid->id); i++)
104
- str = fmt_one(str, oid->id[i]);
147
+ if (!(hex_size = git_oid_hexsize(git_oid_type(oid))))
148
+ return oid_error_invalid("unknown type");
105
149
 
150
+ git_oid_fmt_substr(str, oid, 0, 2);
151
+ str[2] = '/';
152
+ git_oid_fmt_substr(&str[3], oid, 2, (hex_size - 2));
106
153
  return 0;
107
154
  }
108
155
 
109
156
  char *git_oid_tostr_s(const git_oid *oid)
110
157
  {
111
158
  char *str = GIT_THREADSTATE->oid_fmt;
112
- git_oid_nfmt(str, GIT_OID_HEXSZ + 1, oid);
159
+ git_oid_nfmt(str, git_oid_hexsize(git_oid_type(oid)) + 1, oid);
113
160
  return str;
114
161
  }
115
162
 
116
163
  char *git_oid_allocfmt(const git_oid *oid)
117
164
  {
118
- char *str = git__malloc(GIT_OID_HEXSZ + 1);
119
- if (!str)
165
+ size_t hex_size = git_oid_hexsize(git_oid_type(oid));
166
+ char *str = git__malloc(hex_size + 1);
167
+
168
+ if (!hex_size || !str)
169
+ return NULL;
170
+
171
+ if (git_oid_nfmt(str, hex_size + 1, oid) < 0) {
172
+ git__free(str);
120
173
  return NULL;
121
- git_oid_nfmt(str, GIT_OID_HEXSZ + 1, oid);
174
+ }
175
+
122
176
  return str;
123
177
  }
124
178
 
125
179
  char *git_oid_tostr(char *out, size_t n, const git_oid *oid)
126
180
  {
181
+ size_t hex_size;
182
+
127
183
  if (!out || n == 0)
128
184
  return "";
129
185
 
130
- if (n > GIT_OID_HEXSZ + 1)
131
- n = GIT_OID_HEXSZ + 1;
186
+ hex_size = oid ? git_oid_hexsize(git_oid_type(oid)) : 0;
187
+
188
+ if (n > hex_size + 1)
189
+ n = hex_size + 1;
132
190
 
133
191
  git_oid_nfmt(out, n - 1, oid); /* allow room for terminating NUL */
134
192
  out[n - 1] = '\0';
@@ -136,52 +194,44 @@ char *git_oid_tostr(char *out, size_t n, const git_oid *oid)
136
194
  return out;
137
195
  }
138
196
 
139
- int git_oid__parse(
140
- git_oid *oid, const char **buffer_out,
141
- const char *buffer_end, const char *header)
197
+ int git_oid__fromraw(git_oid *out, const unsigned char *raw, git_oid_t type)
142
198
  {
143
- const size_t sha_len = GIT_OID_HEXSZ;
144
- const size_t header_len = strlen(header);
145
-
146
- const char *buffer = *buffer_out;
147
-
148
- if (buffer + (header_len + sha_len + 1) > buffer_end)
149
- return -1;
199
+ size_t size;
150
200
 
151
- if (memcmp(buffer, header, header_len) != 0)
152
- return -1;
153
-
154
- if (buffer[header_len + sha_len] != '\n')
155
- return -1;
156
-
157
- if (git_oid_fromstr(oid, buffer + header_len) < 0)
158
- return -1;
159
-
160
- *buffer_out = buffer + (header_len + sha_len + 1);
201
+ if (!(size = git_oid_size(type)))
202
+ return oid_error_invalid("unknown type");
161
203
 
204
+ #ifdef GIT_EXPERIMENTAL_SHA256
205
+ out->type = type;
206
+ #endif
207
+ memcpy(out->id, raw, size);
162
208
  return 0;
163
209
  }
164
210
 
165
- void git_oid__writebuf(git_buf *buf, const char *header, const git_oid *oid)
211
+ #ifdef GIT_EXPERIMENTAL_SHA256
212
+ int git_oid_fromraw(git_oid *out, const unsigned char *raw, git_oid_t type)
166
213
  {
167
- char hex_oid[GIT_OID_HEXSZ];
168
-
169
- git_oid_fmt(hex_oid, oid);
170
- git_buf_puts(buf, header);
171
- git_buf_put(buf, hex_oid, GIT_OID_HEXSZ);
172
- git_buf_putc(buf, '\n');
214
+ return git_oid__fromraw(out, raw, type);
173
215
  }
174
-
216
+ #else
175
217
  int git_oid_fromraw(git_oid *out, const unsigned char *raw)
176
218
  {
177
- memcpy(out->id, raw, sizeof(out->id));
178
- return 0;
219
+ return git_oid__fromraw(out, raw, GIT_OID_SHA1);
179
220
  }
221
+ #endif
180
222
 
181
223
  int git_oid_cpy(git_oid *out, const git_oid *src)
182
224
  {
183
- memcpy(out->id, src->id, sizeof(out->id));
184
- return 0;
225
+ size_t size;
226
+
227
+ if (!(size = git_oid_size(git_oid_type(src))))
228
+ return oid_error_invalid("unknown type");
229
+
230
+ #ifdef GIT_EXPERIMENTAL_SHA256
231
+ out->type = src->type;
232
+ #endif
233
+
234
+ return git_oid_raw_cpy(out->id, src->id, size);
185
235
  }
186
236
 
187
237
  int git_oid_cmp(const git_oid *a, const git_oid *b)
@@ -196,34 +246,22 @@ int git_oid_equal(const git_oid *a, const git_oid *b)
196
246
 
197
247
  int git_oid_ncmp(const git_oid *oid_a, const git_oid *oid_b, size_t len)
198
248
  {
199
- const unsigned char *a = oid_a->id;
200
- const unsigned char *b = oid_b->id;
201
-
202
- if (len > GIT_OID_HEXSZ)
203
- len = GIT_OID_HEXSZ;
204
-
205
- while (len > 1) {
206
- if (*a != *b)
207
- return 1;
208
- a++;
209
- b++;
210
- len -= 2;
211
- };
212
-
213
- if (len)
214
- if ((*a ^ *b) & 0xf0)
215
- return 1;
249
+ #ifdef GIT_EXPERIMENTAL_SHA256
250
+ if (oid_a->type != oid_b->type)
251
+ return oid_a->type - oid_b->type;
252
+ #endif
216
253
 
217
- return 0;
254
+ return git_oid_raw_ncmp(oid_a->id, oid_b->id, len);
218
255
  }
219
256
 
220
257
  int git_oid_strcmp(const git_oid *oid_a, const char *str)
221
258
  {
222
259
  const unsigned char *a;
223
260
  unsigned char strval;
261
+ long size = (long)git_oid_size(git_oid_type(oid_a));
224
262
  int hexval;
225
263
 
226
- for (a = oid_a->id; *str && (a - oid_a->id) < GIT_OID_RAWSZ; ++a) {
264
+ for (a = oid_a->id; *str && (a - oid_a->id) < size; ++a) {
227
265
  if ((hexval = git__fromhex(*str++)) < 0)
228
266
  return -1;
229
267
  strval = (unsigned char)(hexval << 4);
@@ -247,8 +285,16 @@ int git_oid_streq(const git_oid *oid_a, const char *str)
247
285
  int git_oid_is_zero(const git_oid *oid_a)
248
286
  {
249
287
  const unsigned char *a = oid_a->id;
250
- unsigned int i;
251
- for (i = 0; i < GIT_OID_RAWSZ; ++i, ++a)
288
+ size_t size = git_oid_size(git_oid_type(oid_a)), i;
289
+
290
+ #ifdef GIT_EXPERIMENTAL_SHA256
291
+ if (!oid_a->type)
292
+ return 1;
293
+ else if (!size)
294
+ return 0;
295
+ #endif
296
+
297
+ for (i = 0; i < size; ++i, ++a)
252
298
  if (*a != 0)
253
299
  return 0;
254
300
  return 1;
@@ -405,7 +451,7 @@ int git_oid_shorten_add(git_oid_shorten *os, const char *text_oid)
405
451
  idx = 0;
406
452
  is_leaf = false;
407
453
 
408
- for (i = 0; i < GIT_OID_HEXSZ; ++i) {
454
+ for (i = 0; i < GIT_OID_SHA1_HEXSIZE; ++i) {
409
455
  int c = git__fromhex(text_oid[i]);
410
456
  trie_node *node;
411
457
 
@@ -0,0 +1,273 @@
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_oid_h__
8
+ #define INCLUDE_oid_h__
9
+
10
+ #include "common.h"
11
+
12
+ #include "git2/experimental.h"
13
+ #include "git2/oid.h"
14
+ #include "hash.h"
15
+
16
+ #ifdef GIT_EXPERIMENTAL_SHA256
17
+ # define GIT_OID_NONE { 0, { 0 } }
18
+ # define GIT_OID_INIT(type, ...) { type, __VA_ARGS__ }
19
+ #else
20
+ # define GIT_OID_NONE { { 0 } }
21
+ # define GIT_OID_INIT(type, ...) { __VA_ARGS__ }
22
+ #endif
23
+
24
+ extern const git_oid git_oid__empty_blob_sha1;
25
+ extern const git_oid git_oid__empty_tree_sha1;
26
+
27
+ GIT_INLINE(git_oid_t) git_oid_type(const git_oid *oid)
28
+ {
29
+ #ifdef GIT_EXPERIMENTAL_SHA256
30
+ return oid->type;
31
+ #else
32
+ GIT_UNUSED(oid);
33
+ return GIT_OID_SHA1;
34
+ #endif
35
+ }
36
+
37
+ GIT_INLINE(size_t) git_oid_size(git_oid_t type)
38
+ {
39
+ switch (type) {
40
+ case GIT_OID_SHA1:
41
+ return GIT_OID_SHA1_SIZE;
42
+
43
+ #ifdef GIT_EXPERIMENTAL_SHA256
44
+ case GIT_OID_SHA256:
45
+ return GIT_OID_SHA256_SIZE;
46
+ #endif
47
+
48
+ }
49
+
50
+ return 0;
51
+ }
52
+
53
+ GIT_INLINE(size_t) git_oid_hexsize(git_oid_t type)
54
+ {
55
+ switch (type) {
56
+ case GIT_OID_SHA1:
57
+ return GIT_OID_SHA1_HEXSIZE;
58
+
59
+ #ifdef GIT_EXPERIMENTAL_SHA256
60
+ case GIT_OID_SHA256:
61
+ return GIT_OID_SHA256_HEXSIZE;
62
+ #endif
63
+
64
+ }
65
+
66
+ return 0;
67
+ }
68
+
69
+ GIT_INLINE(const char *) git_oid_type_name(git_oid_t type)
70
+ {
71
+ switch (type) {
72
+ case GIT_OID_SHA1:
73
+ return "sha1";
74
+
75
+ #ifdef GIT_EXPERIMENTAL_SHA256
76
+ case GIT_OID_SHA256:
77
+ return "sha256";
78
+ #endif
79
+ }
80
+
81
+ return "unknown";
82
+ }
83
+
84
+ GIT_INLINE(git_oid_t) git_oid_type_fromstr(const char *name)
85
+ {
86
+ if (strcmp(name, "sha1") == 0)
87
+ return GIT_OID_SHA1;
88
+
89
+ #ifdef GIT_EXPERIMENTAL_SHA256
90
+ if (strcmp(name, "sha256") == 0)
91
+ return GIT_OID_SHA256;
92
+ #endif
93
+
94
+ return 0;
95
+ }
96
+
97
+ GIT_INLINE(git_oid_t) git_oid_type_fromstrn(const char *name, size_t len)
98
+ {
99
+ if (len == CONST_STRLEN("sha1") && strncmp(name, "sha1", len) == 0)
100
+ return GIT_OID_SHA1;
101
+
102
+ #ifdef GIT_EXPERIMENTAL_SHA256
103
+ if (len == CONST_STRLEN("sha256") && strncmp(name, "sha256", len) == 0)
104
+ return GIT_OID_SHA256;
105
+ #endif
106
+
107
+ return 0;
108
+ }
109
+
110
+ GIT_INLINE(git_hash_algorithm_t) git_oid_algorithm(git_oid_t type)
111
+ {
112
+ switch (type) {
113
+ case GIT_OID_SHA1:
114
+ return GIT_HASH_ALGORITHM_SHA1;
115
+
116
+ #ifdef GIT_EXPERIMENTAL_SHA256
117
+ case GIT_OID_SHA256:
118
+ return GIT_HASH_ALGORITHM_SHA256;
119
+ #endif
120
+
121
+ }
122
+
123
+ return 0;
124
+ }
125
+
126
+ /**
127
+ * Format a git_oid into a newly allocated c-string.
128
+ *
129
+ * The c-string is owned by the caller and needs to be manually freed.
130
+ *
131
+ * @param id the oid structure to format
132
+ * @return the c-string; NULL if memory is exhausted. Caller must
133
+ * deallocate the string with git__free().
134
+ */
135
+ char *git_oid_allocfmt(const git_oid *id);
136
+
137
+ /**
138
+ * Format the requested nibbles of an object id.
139
+ *
140
+ * @param str the string to write into
141
+ * @param oid the oid structure to format
142
+ * @param start the starting number of nibbles
143
+ * @param count the number of nibbles to format
144
+ */
145
+ GIT_INLINE(void) git_oid_fmt_substr(
146
+ char *str,
147
+ const git_oid *oid,
148
+ size_t start,
149
+ size_t count)
150
+ {
151
+ static char hex[] = "0123456789abcdef";
152
+ size_t i, end = start + count, min = start / 2, max = end / 2;
153
+
154
+ if (start & 1)
155
+ *str++ = hex[oid->id[min++] & 0x0f];
156
+
157
+ for (i = min; i < max; i++) {
158
+ *str++ = hex[oid->id[i] >> 4];
159
+ *str++ = hex[oid->id[i] & 0x0f];
160
+ }
161
+
162
+ if (end & 1)
163
+ *str++ = hex[oid->id[i] >> 4];
164
+ }
165
+
166
+ GIT_INLINE(int) git_oid_raw_ncmp(
167
+ const unsigned char *sha1,
168
+ const unsigned char *sha2,
169
+ size_t len)
170
+ {
171
+ if (len > GIT_OID_MAX_HEXSIZE)
172
+ len = GIT_OID_MAX_HEXSIZE;
173
+
174
+ while (len > 1) {
175
+ if (*sha1 != *sha2)
176
+ return 1;
177
+ sha1++;
178
+ sha2++;
179
+ len -= 2;
180
+ };
181
+
182
+ if (len)
183
+ if ((*sha1 ^ *sha2) & 0xf0)
184
+ return 1;
185
+
186
+ return 0;
187
+ }
188
+
189
+ GIT_INLINE(int) git_oid_raw_cmp(
190
+ const unsigned char *sha1,
191
+ const unsigned char *sha2,
192
+ size_t size)
193
+ {
194
+ return memcmp(sha1, sha2, size);
195
+ }
196
+
197
+ GIT_INLINE(int) git_oid_raw_cpy(
198
+ unsigned char *dst,
199
+ const unsigned char *src,
200
+ size_t size)
201
+ {
202
+ memcpy(dst, src, size);
203
+ return 0;
204
+ }
205
+
206
+ /*
207
+ * Compare two oid structures.
208
+ *
209
+ * @param a first oid structure.
210
+ * @param b second oid structure.
211
+ * @return <0, 0, >0 if a < b, a == b, a > b.
212
+ */
213
+ GIT_INLINE(int) git_oid__cmp(const git_oid *a, const git_oid *b)
214
+ {
215
+ #ifdef GIT_EXPERIMENTAL_SHA256
216
+ if (a->type != b->type)
217
+ return a->type - b->type;
218
+
219
+ return git_oid_raw_cmp(a->id, b->id, git_oid_size(a->type));
220
+ #else
221
+ return git_oid_raw_cmp(a->id, b->id, git_oid_size(GIT_OID_SHA1));
222
+ #endif
223
+ }
224
+
225
+ GIT_INLINE(void) git_oid__cpy_prefix(
226
+ git_oid *out, const git_oid *id, size_t len)
227
+ {
228
+ #ifdef GIT_EXPERIMENTAL_SHA256
229
+ out->type = id->type;
230
+ #endif
231
+
232
+ memcpy(&out->id, id->id, (len + 1) / 2);
233
+
234
+ if (len & 1)
235
+ out->id[len / 2] &= 0xF0;
236
+ }
237
+
238
+ GIT_INLINE(bool) git_oid__is_hexstr(const char *str, git_oid_t type)
239
+ {
240
+ size_t i;
241
+
242
+ for (i = 0; str[i] != '\0'; i++) {
243
+ if (git__fromhex(str[i]) < 0)
244
+ return false;
245
+ }
246
+
247
+ return (i == git_oid_hexsize(type));
248
+ }
249
+
250
+ GIT_INLINE(void) git_oid_clear(git_oid *out, git_oid_t type)
251
+ {
252
+ memset(out->id, 0, git_oid_size(type));
253
+
254
+ #ifdef GIT_EXPERIMENTAL_SHA256
255
+ out->type = type;
256
+ #endif
257
+ }
258
+
259
+ /* SHA256 support */
260
+
261
+ int git_oid__fromstr(git_oid *out, const char *str, git_oid_t type);
262
+
263
+ int git_oid__fromstrp(git_oid *out, const char *str, git_oid_t type);
264
+
265
+ int git_oid__fromstrn(
266
+ git_oid *out,
267
+ const char *str,
268
+ size_t length,
269
+ git_oid_t type);
270
+
271
+ int git_oid__fromraw(git_oid *out, const unsigned char *raw, git_oid_t type);
272
+
273
+ #endif
@@ -19,7 +19,7 @@ __KHASH_TYPE(oid, const git_oid *, void *)
19
19
  GIT_INLINE(khint_t) git_oidmap_hash(const git_oid *oid)
20
20
  {
21
21
  khint_t h;
22
- memcpy(&h, oid, sizeof(khint_t));
22
+ memcpy(&h, oid->id, sizeof(khint_t));
23
23
  return h;
24
24
  }
25
25