rugged 1.3.1 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (656) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/ext/rugged/extconf.rb +6 -3
  4. data/ext/rugged/rugged.c +16 -0
  5. data/ext/rugged/rugged.h +4 -0
  6. data/ext/rugged/rugged_allocator.c +0 -54
  7. data/ext/rugged/rugged_blame.c +2 -0
  8. data/ext/rugged/rugged_blob.c +3 -0
  9. data/ext/rugged/rugged_commit.c +1 -0
  10. data/ext/rugged/rugged_config.c +9 -2
  11. data/ext/rugged/rugged_diff.c +1 -0
  12. data/ext/rugged/rugged_index.c +2 -0
  13. data/ext/rugged/rugged_patch.c +1 -0
  14. data/ext/rugged/rugged_rebase.c +1 -0
  15. data/ext/rugged/rugged_reference.c +1 -0
  16. data/ext/rugged/rugged_remote.c +28 -10
  17. data/ext/rugged/rugged_repo.c +7 -9
  18. data/ext/rugged/rugged_revwalk.c +5 -1
  19. data/ext/rugged/rugged_settings.c +5 -0
  20. data/ext/rugged/rugged_submodule.c +1 -0
  21. data/ext/rugged/rugged_tag.c +1 -0
  22. data/ext/rugged/rugged_tree.c +4 -0
  23. data/lib/rugged/index.rb +1 -1
  24. data/lib/rugged/tree.rb +5 -1
  25. data/lib/rugged/version.rb +1 -1
  26. data/vendor/libgit2/AUTHORS +1 -0
  27. data/vendor/libgit2/CMakeLists.txt +141 -289
  28. data/vendor/libgit2/COPYING +301 -20
  29. data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
  30. data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
  31. data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
  32. data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
  33. data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
  34. data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
  35. data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
  36. data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
  37. data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
  38. data/vendor/libgit2/cmake/FindHTTP_Parser.cmake +17 -17
  39. data/vendor/libgit2/cmake/FindIntlIconv.cmake +51 -0
  40. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  41. data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
  42. data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
  43. data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
  44. data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
  45. data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
  46. data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
  47. data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
  48. data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
  49. data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
  50. data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
  51. data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
  52. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
  53. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +34 -0
  54. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +129 -101
  55. data/vendor/libgit2/cmake/SelectHashes.cmake +113 -54
  56. data/vendor/libgit2/cmake/SelectRegex.cmake +56 -0
  57. data/vendor/libgit2/cmake/SelectSSH.cmake +46 -0
  58. data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
  59. data/vendor/libgit2/cmake/SelectZlib.cmake +38 -0
  60. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
  61. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  62. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  63. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  64. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  65. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  66. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  67. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
  68. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  69. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  70. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  71. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +7 -5
  72. data/vendor/libgit2/deps/ntlmclient/ntlm.c +25 -25
  73. data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
  74. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
  75. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  76. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  77. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  78. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  79. data/vendor/libgit2/deps/pcre/CMakeLists.txt +89 -88
  80. data/vendor/libgit2/deps/pcre/LICENCE +5 -5
  81. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  82. data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
  83. data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
  84. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
  85. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
  86. data/vendor/libgit2/deps/xdiff/git-xdiff.h +56 -0
  87. data/vendor/libgit2/{src → deps}/xdiff/xdiff.h +15 -15
  88. data/vendor/libgit2/{src → deps}/xdiff/xdiffi.c +152 -125
  89. data/vendor/libgit2/{src → deps}/xdiff/xdiffi.h +2 -4
  90. data/vendor/libgit2/{src → deps}/xdiff/xemit.c +26 -10
  91. data/vendor/libgit2/{src → deps}/xdiff/xhistogram.c +92 -94
  92. data/vendor/libgit2/{src → deps}/xdiff/xinclude.h +1 -12
  93. data/vendor/libgit2/{src → deps}/xdiff/xmacros.h +18 -1
  94. data/vendor/libgit2/{src → deps}/xdiff/xmerge.c +126 -137
  95. data/vendor/libgit2/{src → deps}/xdiff/xpatience.c +26 -46
  96. data/vendor/libgit2/{src → deps}/xdiff/xprepare.c +24 -46
  97. data/vendor/libgit2/{src → deps}/xdiff/xutils.c +36 -8
  98. data/vendor/libgit2/{src → deps}/xdiff/xutils.h +2 -1
  99. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  100. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  101. data/vendor/libgit2/deps/zlib/adler32.c +7 -22
  102. data/vendor/libgit2/deps/zlib/crc32.c +931 -317
  103. data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
  104. data/vendor/libgit2/deps/zlib/deflate.c +428 -453
  105. data/vendor/libgit2/deps/zlib/deflate.h +51 -23
  106. data/vendor/libgit2/deps/zlib/gzguts.h +15 -19
  107. data/vendor/libgit2/deps/zlib/infback.c +19 -31
  108. data/vendor/libgit2/deps/zlib/inffast.c +15 -18
  109. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  110. data/vendor/libgit2/deps/zlib/inflate.c +75 -110
  111. data/vendor/libgit2/deps/zlib/inflate.h +3 -2
  112. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  113. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  114. data/vendor/libgit2/deps/zlib/trees.c +294 -380
  115. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  116. data/vendor/libgit2/deps/zlib/zlib.h +310 -284
  117. data/vendor/libgit2/deps/zlib/zutil.c +20 -46
  118. data/vendor/libgit2/deps/zlib/zutil.h +24 -41
  119. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  120. data/vendor/libgit2/include/git2/apply.h +43 -8
  121. data/vendor/libgit2/include/git2/attr.h +28 -6
  122. data/vendor/libgit2/include/git2/blame.h +137 -29
  123. data/vendor/libgit2/include/git2/blob.h +85 -29
  124. data/vendor/libgit2/include/git2/branch.h +25 -16
  125. data/vendor/libgit2/include/git2/buffer.h +24 -82
  126. data/vendor/libgit2/include/git2/cert.h +4 -3
  127. data/vendor/libgit2/include/git2/checkout.h +88 -34
  128. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  129. data/vendor/libgit2/include/git2/clone.h +28 -12
  130. data/vendor/libgit2/include/git2/commit.h +134 -3
  131. data/vendor/libgit2/include/git2/common.h +172 -59
  132. data/vendor/libgit2/include/git2/config.h +118 -32
  133. data/vendor/libgit2/include/git2/credential.h +32 -3
  134. data/vendor/libgit2/include/git2/credential_helpers.h +2 -0
  135. data/vendor/libgit2/include/git2/deprecated.h +141 -3
  136. data/vendor/libgit2/include/git2/describe.h +20 -3
  137. data/vendor/libgit2/include/git2/diff.h +95 -19
  138. data/vendor/libgit2/include/git2/email.h +10 -30
  139. data/vendor/libgit2/include/git2/errors.h +51 -61
  140. data/vendor/libgit2/include/git2/experimental.h +20 -0
  141. data/vendor/libgit2/include/git2/filter.h +21 -9
  142. data/vendor/libgit2/include/git2/global.h +8 -1
  143. data/vendor/libgit2/include/git2/graph.h +4 -2
  144. data/vendor/libgit2/include/git2/ignore.h +11 -1
  145. data/vendor/libgit2/include/git2/index.h +111 -11
  146. data/vendor/libgit2/include/git2/indexer.h +67 -2
  147. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  148. data/vendor/libgit2/include/git2/merge.h +70 -5
  149. data/vendor/libgit2/include/git2/message.h +4 -2
  150. data/vendor/libgit2/include/git2/net.h +3 -1
  151. data/vendor/libgit2/include/git2/notes.h +9 -6
  152. data/vendor/libgit2/include/git2/object.h +57 -7
  153. data/vendor/libgit2/include/git2/odb.h +156 -33
  154. data/vendor/libgit2/include/git2/odb_backend.h +132 -16
  155. data/vendor/libgit2/include/git2/oid.h +116 -17
  156. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  157. data/vendor/libgit2/include/git2/pack.h +37 -9
  158. data/vendor/libgit2/include/git2/patch.h +10 -3
  159. data/vendor/libgit2/include/git2/pathspec.h +10 -1
  160. data/vendor/libgit2/include/git2/proxy.h +11 -1
  161. data/vendor/libgit2/include/git2/rebase.h +18 -7
  162. data/vendor/libgit2/include/git2/refdb.h +5 -2
  163. data/vendor/libgit2/include/git2/reflog.h +4 -3
  164. data/vendor/libgit2/include/git2/refs.h +11 -8
  165. data/vendor/libgit2/include/git2/refspec.h +14 -4
  166. data/vendor/libgit2/include/git2/remote.h +295 -54
  167. data/vendor/libgit2/include/git2/repository.h +95 -25
  168. data/vendor/libgit2/include/git2/reset.h +18 -5
  169. data/vendor/libgit2/include/git2/revert.h +9 -4
  170. data/vendor/libgit2/include/git2/revparse.h +4 -4
  171. data/vendor/libgit2/include/git2/revwalk.h +7 -3
  172. data/vendor/libgit2/include/git2/signature.h +47 -2
  173. data/vendor/libgit2/include/git2/stash.h +78 -10
  174. data/vendor/libgit2/include/git2/status.h +24 -11
  175. data/vendor/libgit2/include/git2/stdint.h +87 -85
  176. data/vendor/libgit2/include/git2/strarray.h +2 -16
  177. data/vendor/libgit2/include/git2/submodule.h +27 -11
  178. data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
  179. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  180. data/vendor/libgit2/include/git2/sys/commit_graph.h +110 -59
  181. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  182. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  183. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  184. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  185. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  186. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  187. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  188. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  189. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  190. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  191. data/vendor/libgit2/include/git2/sys/midx.h +47 -4
  192. data/vendor/libgit2/include/git2/sys/odb_backend.h +10 -9
  193. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  194. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  195. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  196. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  197. data/vendor/libgit2/include/git2/sys/remote.h +53 -0
  198. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  199. data/vendor/libgit2/include/git2/sys/stream.h +26 -3
  200. data/vendor/libgit2/include/git2/sys/transport.h +87 -41
  201. data/vendor/libgit2/include/git2/tag.h +4 -1
  202. data/vendor/libgit2/include/git2/trace.h +9 -3
  203. data/vendor/libgit2/include/git2/transaction.h +3 -2
  204. data/vendor/libgit2/include/git2/transport.h +11 -3
  205. data/vendor/libgit2/include/git2/tree.h +20 -8
  206. data/vendor/libgit2/include/git2/types.h +26 -10
  207. data/vendor/libgit2/include/git2/version.h +63 -6
  208. data/vendor/libgit2/include/git2/worktree.h +30 -8
  209. data/vendor/libgit2/include/git2.h +1 -0
  210. data/vendor/libgit2/src/CMakeLists.txt +203 -420
  211. data/vendor/libgit2/src/README.md +12 -0
  212. data/vendor/libgit2/src/cli/CMakeLists.txt +56 -0
  213. data/vendor/libgit2/src/cli/README.md +26 -0
  214. data/vendor/libgit2/src/{branch.h → cli/cmd.c} +10 -8
  215. data/vendor/libgit2/src/cli/cmd.h +37 -0
  216. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  217. data/vendor/libgit2/src/cli/cmd_cat_file.c +202 -0
  218. data/vendor/libgit2/src/cli/cmd_clone.c +190 -0
  219. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  220. data/vendor/libgit2/src/cli/cmd_hash_object.c +152 -0
  221. data/vendor/libgit2/src/cli/cmd_help.c +85 -0
  222. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  223. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  224. data/vendor/libgit2/src/cli/common.c +168 -0
  225. data/vendor/libgit2/src/cli/common.h +63 -0
  226. data/vendor/libgit2/src/cli/error.h +51 -0
  227. data/vendor/libgit2/src/cli/main.c +134 -0
  228. data/vendor/libgit2/src/cli/opt.c +695 -0
  229. data/vendor/libgit2/src/cli/opt.h +367 -0
  230. data/vendor/libgit2/src/cli/opt_usage.c +263 -0
  231. data/vendor/libgit2/src/cli/opt_usage.h +40 -0
  232. data/vendor/libgit2/src/cli/progress.c +395 -0
  233. data/vendor/libgit2/src/cli/progress.h +129 -0
  234. data/vendor/libgit2/src/cli/sighandler.h +20 -0
  235. data/vendor/libgit2/src/cli/unix/sighandler.c +37 -0
  236. data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
  237. data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
  238. data/vendor/libgit2/src/libgit2/CMakeLists.txt +140 -0
  239. data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +2 -2
  240. data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
  241. data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +32 -34
  242. data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
  243. data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +48 -31
  244. data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +25 -20
  245. data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +6 -4
  246. data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +87 -46
  247. data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +5 -9
  248. data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +152 -57
  249. data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +1 -0
  250. data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -2
  251. data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
  252. data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
  253. data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
  254. data/vendor/libgit2/src/libgit2/branch.h +31 -0
  255. data/vendor/libgit2/src/libgit2/buf.c +126 -0
  256. data/vendor/libgit2/src/libgit2/buf.h +50 -0
  257. data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +22 -17
  258. data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +7 -9
  259. data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +107 -91
  260. data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -2
  261. data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +14 -15
  262. data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +254 -203
  263. data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +4 -1
  264. data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +296 -77
  265. data/vendor/libgit2/src/libgit2/commit.h +87 -0
  266. data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +246 -135
  267. data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +33 -8
  268. data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +17 -7
  269. data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +1 -0
  270. data/vendor/libgit2/src/libgit2/common.h +55 -0
  271. data/vendor/libgit2/src/{config.c → libgit2/config.c} +490 -360
  272. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  273. data/vendor/libgit2/src/{config.h → libgit2/config.h} +24 -6
  274. data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +8 -10
  275. data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +4 -5
  276. data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +212 -183
  277. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  278. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  279. data/vendor/libgit2/src/libgit2/config_mem.c +374 -0
  280. data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +37 -32
  281. data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +24 -31
  282. data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
  283. data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +62 -51
  284. data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +44 -14
  285. data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +8 -10
  286. data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +46 -55
  287. data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +5 -5
  288. data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +45 -27
  289. data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +70 -20
  290. data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
  291. data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +22 -6
  292. data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +192 -105
  293. data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
  294. data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
  295. data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +49 -16
  296. data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
  297. data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +1 -1
  298. data/vendor/libgit2/src/{email.c → libgit2/email.c} +58 -40
  299. data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
  300. data/vendor/libgit2/src/{transports/ssh.h → libgit2/experimental.h.in} +3 -4
  301. data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +105 -30
  302. data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -3
  303. data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +30 -28
  304. data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +132 -58
  305. data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
  306. data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +3 -3
  307. data/vendor/libgit2/src/libgit2/grafts.c +270 -0
  308. data/vendor/libgit2/src/libgit2/grafts.h +35 -0
  309. data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +1 -1
  310. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  311. data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
  312. data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +44 -39
  313. data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
  314. data/vendor/libgit2/src/{index.c → libgit2/index.c} +460 -276
  315. data/vendor/libgit2/src/{index.h → libgit2/index.h} +21 -5
  316. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  317. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  318. data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +208 -124
  319. data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +102 -71
  320. data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +8 -5
  321. data/vendor/libgit2/src/libgit2/libgit2.c +268 -0
  322. data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +39 -37
  323. data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +83 -73
  324. data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
  325. data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +4 -4
  326. data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -5
  327. data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
  328. data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +174 -112
  329. data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +17 -6
  330. data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +53 -57
  331. data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +9 -2
  332. data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +29 -37
  333. data/vendor/libgit2/src/{object.c → libgit2/object.c} +166 -35
  334. data/vendor/libgit2/src/{object.h → libgit2/object.h} +17 -2
  335. data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +261 -88
  336. data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
  337. data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
  338. data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +67 -22
  339. data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +162 -89
  340. data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +171 -92
  341. data/vendor/libgit2/src/libgit2/oid.h +284 -0
  342. data/vendor/libgit2/src/libgit2/oidarray.c +89 -0
  343. data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +5 -1
  344. data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +126 -66
  345. data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +28 -12
  346. data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +146 -111
  347. data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +45 -25
  348. data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +8 -4
  349. data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +1 -1
  350. data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
  351. data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +8 -1
  352. data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +51 -16
  353. data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
  354. data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +42 -34
  355. data/vendor/libgit2/src/libgit2/path.c +375 -0
  356. data/vendor/libgit2/src/libgit2/path.h +68 -0
  357. data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +7 -7
  358. data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
  359. data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
  360. data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
  361. data/vendor/libgit2/src/{push.c → libgit2/push.c} +116 -60
  362. data/vendor/libgit2/src/{push.h → libgit2/push.h} +5 -16
  363. data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
  364. data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
  365. data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +147 -147
  366. data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +639 -254
  367. data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +8 -7
  368. data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +3 -2
  369. data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +67 -39
  370. data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +8 -3
  371. data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +60 -38
  372. data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +13 -2
  373. data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +821 -454
  374. data/vendor/libgit2/src/libgit2/remote.h +101 -0
  375. data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +1377 -594
  376. data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +43 -12
  377. data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
  378. data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +18 -22
  379. data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +76 -44
  380. data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +48 -19
  381. data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +3 -3
  382. data/vendor/libgit2/src/{libgit2.c → libgit2/settings.c} +162 -95
  383. data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +6 -2
  384. data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +144 -21
  385. data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -2
  386. data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +243 -68
  387. data/vendor/libgit2/src/{status.c → libgit2/status.c} +5 -2
  388. data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
  389. data/vendor/libgit2/src/libgit2/strarray.h +25 -0
  390. data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +62 -67
  391. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +41 -24
  392. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +2 -0
  393. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +11 -3
  394. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +6 -3
  395. data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
  396. data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
  397. data/vendor/libgit2/src/libgit2/streams/socket.c +428 -0
  398. data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +3 -1
  399. data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +79 -19
  400. data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +5 -0
  401. data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +279 -220
  402. data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +10 -11
  403. data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
  404. data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +55 -18
  405. data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +74 -43
  406. data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
  407. data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
  408. data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
  409. data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +7 -7
  410. data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +27 -21
  411. data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +4 -1
  412. data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +14 -11
  413. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
  414. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +3 -5
  415. data/vendor/libgit2/src/{transports/auth_negotiate.c → libgit2/transports/auth_gssapi.c} +44 -45
  416. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +1 -1
  417. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +1 -2
  418. data/vendor/libgit2/src/{transports/auth_ntlm.c → libgit2/transports/auth_ntlmclient.c} +22 -22
  419. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
  420. data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +1 -1
  421. data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +16 -19
  422. data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +49 -24
  423. data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -11
  424. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +188 -134
  425. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
  426. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  427. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  428. data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +159 -127
  429. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +142 -165
  430. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +56 -36
  431. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +307 -74
  432. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +297 -97
  433. data/vendor/libgit2/src/libgit2/transports/ssh.c +85 -0
  434. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  435. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  436. data/vendor/libgit2/src/{transports/ssh.c → libgit2/transports/ssh_libssh2.c} +414 -268
  437. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  438. data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +101 -75
  439. data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +30 -20
  440. data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +7 -5
  441. data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +128 -110
  442. data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +7 -6
  443. data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +160 -121
  444. data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
  445. data/vendor/libgit2/src/util/CMakeLists.txt +77 -0
  446. data/vendor/libgit2/src/{alloc.c → util/alloc.c} +69 -7
  447. data/vendor/libgit2/src/util/alloc.h +65 -0
  448. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  449. data/vendor/libgit2/src/util/allocators/debugalloc.h +17 -0
  450. data/vendor/libgit2/src/util/allocators/failalloc.c +32 -0
  451. data/vendor/libgit2/src/util/allocators/failalloc.h +17 -0
  452. data/vendor/libgit2/src/util/allocators/stdalloc.c +37 -0
  453. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
  454. data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +50 -0
  455. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
  456. data/vendor/libgit2/src/{array.h → util/array.h} +25 -19
  457. data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
  458. data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +5 -1
  459. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  460. data/vendor/libgit2/src/{date.c → util/date.c} +35 -33
  461. data/vendor/libgit2/src/util/date.h +45 -0
  462. data/vendor/libgit2/src/util/errors.c +401 -0
  463. data/vendor/libgit2/src/{errors.h → util/errors.h} +22 -19
  464. data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +35 -30
  465. data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +21 -8
  466. data/vendor/libgit2/src/{path.c → util/fs_path.c} +591 -615
  467. data/vendor/libgit2/src/{path.h → util/fs_path.h} +257 -181
  468. data/vendor/libgit2/src/{futils.c → util/futils.c} +144 -95
  469. data/vendor/libgit2/src/{futils.h → util/futils.h} +40 -18
  470. data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +33 -2
  471. data/vendor/libgit2/src/{common.h → util/git2_util.h} +26 -59
  472. data/vendor/libgit2/src/util/hash/builtin.c +53 -0
  473. data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
  474. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
  475. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
  476. data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
  477. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
  478. data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
  479. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
  480. data/vendor/libgit2/src/util/hash/openssl.c +347 -0
  481. data/vendor/libgit2/src/util/hash/openssl.h +61 -0
  482. data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
  483. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
  484. data/vendor/libgit2/src/util/hash/sha.h +73 -0
  485. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
  486. data/vendor/libgit2/src/util/hash/win32.c +549 -0
  487. data/vendor/libgit2/src/util/hash/win32.h +60 -0
  488. data/vendor/libgit2/src/util/hash.c +158 -0
  489. data/vendor/libgit2/src/util/hash.h +61 -0
  490. data/vendor/libgit2/src/util/hashmap.h +424 -0
  491. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  492. data/vendor/libgit2/src/{integer.h → util/integer.h} +3 -1
  493. data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
  494. data/vendor/libgit2/src/util/net.c +1160 -0
  495. data/vendor/libgit2/src/{net.h → util/net.h} +45 -4
  496. data/vendor/libgit2/src/{pool.c → util/pool.c} +1 -1
  497. data/vendor/libgit2/src/{pool.h → util/pool.h} +6 -1
  498. data/vendor/libgit2/src/{posix.c → util/posix.c} +57 -3
  499. data/vendor/libgit2/src/{posix.h → util/posix.h} +26 -1
  500. data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +3 -3
  501. data/vendor/libgit2/src/util/process.h +222 -0
  502. data/vendor/libgit2/src/util/rand.c +230 -0
  503. data/vendor/libgit2/src/util/rand.h +37 -0
  504. data/vendor/libgit2/src/{regexp.c → util/regexp.c} +5 -5
  505. data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
  506. data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
  507. data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
  508. data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +15 -14
  509. data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +5 -5
  510. data/vendor/libgit2/src/util/staticstr.h +66 -0
  511. data/vendor/libgit2/src/{buffer.c → util/str.c} +159 -153
  512. data/vendor/libgit2/src/util/str.h +357 -0
  513. data/vendor/libgit2/src/util/strlist.c +108 -0
  514. data/vendor/libgit2/src/util/strlist.h +36 -0
  515. data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
  516. data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
  517. data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
  518. data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
  519. data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -6
  520. data/vendor/libgit2/src/util/unix/process.c +629 -0
  521. data/vendor/libgit2/src/{unix → util/unix}/realpath.c +24 -8
  522. data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
  523. data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
  524. data/vendor/libgit2/src/{util.c → util/util.c} +24 -19
  525. data/vendor/libgit2/src/{util.h → util/util.h} +30 -81
  526. data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
  527. data/vendor/libgit2/src/{vector.c → util/vector.c} +3 -3
  528. data/vendor/libgit2/src/{vector.h → util/vector.h} +4 -4
  529. data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
  530. data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
  531. data/vendor/libgit2/src/{win32 → util/win32}/error.c +1 -1
  532. data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
  533. data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
  534. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +148 -17
  535. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
  536. data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
  537. data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +42 -35
  538. data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
  539. data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
  540. data/vendor/libgit2/src/util/win32/process.c +506 -0
  541. data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
  542. data/vendor/libgit2/src/util/win32/utf-conv.c +144 -0
  543. data/vendor/libgit2/src/util/win32/utf-conv.h +127 -0
  544. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
  545. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
  546. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
  547. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
  548. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +1 -1
  549. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
  550. data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
  551. data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
  552. metadata +431 -362
  553. data/vendor/libgit2/cmake/FindIconv.cmake +0 -45
  554. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  555. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  556. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  557. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  558. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  559. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  560. data/vendor/libgit2/src/alloc.h +0 -40
  561. data/vendor/libgit2/src/allocators/failalloc.c +0 -92
  562. data/vendor/libgit2/src/allocators/failalloc.h +0 -23
  563. data/vendor/libgit2/src/allocators/stdalloc.c +0 -150
  564. data/vendor/libgit2/src/allocators/win32_leakcheck.c +0 -118
  565. data/vendor/libgit2/src/buffer.h +0 -374
  566. data/vendor/libgit2/src/commit.h +0 -46
  567. data/vendor/libgit2/src/config_entries.c +0 -237
  568. data/vendor/libgit2/src/config_entries.h +0 -24
  569. data/vendor/libgit2/src/config_mem.c +0 -220
  570. data/vendor/libgit2/src/errors.c +0 -238
  571. data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
  572. data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
  573. data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
  574. data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
  575. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  576. data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
  577. data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
  578. data/vendor/libgit2/src/hash/sha1.h +0 -38
  579. data/vendor/libgit2/src/hash.c +0 -110
  580. data/vendor/libgit2/src/hash.h +0 -46
  581. data/vendor/libgit2/src/idxmap.c +0 -157
  582. data/vendor/libgit2/src/idxmap.h +0 -177
  583. data/vendor/libgit2/src/khash.h +0 -615
  584. data/vendor/libgit2/src/libgit2.h +0 -15
  585. data/vendor/libgit2/src/message.h +0 -17
  586. data/vendor/libgit2/src/net.c +0 -540
  587. data/vendor/libgit2/src/netops.c +0 -125
  588. data/vendor/libgit2/src/netops.h +0 -68
  589. data/vendor/libgit2/src/offmap.c +0 -101
  590. data/vendor/libgit2/src/offmap.h +0 -133
  591. data/vendor/libgit2/src/oid.h +0 -51
  592. data/vendor/libgit2/src/oidarray.c +0 -43
  593. data/vendor/libgit2/src/oidmap.c +0 -107
  594. data/vendor/libgit2/src/oidmap.h +0 -128
  595. data/vendor/libgit2/src/remote.h +0 -55
  596. data/vendor/libgit2/src/streams/socket.c +0 -239
  597. data/vendor/libgit2/src/strmap.c +0 -100
  598. data/vendor/libgit2/src/strmap.h +0 -131
  599. data/vendor/libgit2/src/sysdir.c +0 -347
  600. data/vendor/libgit2/src/threadstate.c +0 -84
  601. data/vendor/libgit2/src/threadstate.h +0 -24
  602. data/vendor/libgit2/src/win32/findfile.c +0 -230
  603. data/vendor/libgit2/src/win32/findfile.h +0 -19
  604. data/vendor/libgit2/src/win32/utf-conv.c +0 -146
  605. data/vendor/libgit2/src/win32/utf-conv.h +0 -60
  606. /data/vendor/libgit2/{src → deps}/xdiff/xemit.h +0 -0
  607. /data/vendor/libgit2/{src → deps}/xdiff/xprepare.h +0 -0
  608. /data/vendor/libgit2/{src → deps}/xdiff/xtypes.h +0 -0
  609. /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
  610. /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
  611. /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
  612. /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
  613. /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
  614. /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
  615. /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
  616. /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
  617. /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
  618. /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
  619. /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
  620. /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
  621. /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
  622. /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
  623. /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
  624. /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
  625. /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
  626. /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
  627. /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
  628. /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
  629. /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
  630. /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
  631. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
  632. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
  633. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
  634. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
  635. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
  636. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
  637. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
  638. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
  639. /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
  640. /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
  641. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
  642. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
  643. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
  644. /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
  645. /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
  646. /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
  647. /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
  648. /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
  649. /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
  650. /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
  651. /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
  652. /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
  653. /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
  654. /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
  655. /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
  656. /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
@@ -9,11 +9,18 @@
9
9
 
10
10
  #include "git2/oid.h"
11
11
  #include "repository.h"
12
- #include "threadstate.h"
12
+ #include "runtime.h"
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,161 @@ 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);
91
+ }
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);
66
114
  }
115
+ #endif
67
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
125
 
81
- max_i = n / 2;
126
+ if (!(hex_size = git_oid_hexsize(git_oid_type(oid))))
127
+ return oid_error_invalid("unknown type");
82
128
 
83
- for (i = 0; i < max_i; i++)
84
- str = fmt_one(str, oid->id[i]);
85
-
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
 
156
+ static git_tlsdata_key thread_str_key;
157
+
158
+ static void GIT_SYSTEM_CALL thread_str_free(void *s)
159
+ {
160
+ char *str = (char *)s;
161
+ git__free(str);
162
+ }
163
+
164
+ static void thread_str_global_shutdown(void)
165
+ {
166
+ char *str = git_tlsdata_get(thread_str_key);
167
+ git_tlsdata_set(thread_str_key, NULL);
168
+
169
+ git__free(str);
170
+ git_tlsdata_dispose(thread_str_key);
171
+ }
172
+
173
+ int git_oid_global_init(void)
174
+ {
175
+ if (git_tlsdata_init(&thread_str_key, thread_str_free) != 0)
176
+ return -1;
177
+
178
+ return git_runtime_shutdown_register(thread_str_global_shutdown);
179
+ }
180
+
109
181
  char *git_oid_tostr_s(const git_oid *oid)
110
182
  {
111
- char *str = GIT_THREADSTATE->oid_fmt;
112
- git_oid_nfmt(str, GIT_OID_HEXSZ + 1, oid);
183
+ char *str;
184
+
185
+ if ((str = git_tlsdata_get(thread_str_key)) == NULL) {
186
+ if ((str = git__malloc(GIT_OID_MAX_HEXSIZE + 1)) == NULL)
187
+ return NULL;
188
+
189
+ git_tlsdata_set(thread_str_key, str);
190
+ }
191
+
192
+ git_oid_nfmt(str, git_oid_hexsize(git_oid_type(oid)) + 1, oid);
113
193
  return str;
114
194
  }
115
195
 
116
196
  char *git_oid_allocfmt(const git_oid *oid)
117
197
  {
118
- char *str = git__malloc(GIT_OID_HEXSZ + 1);
119
- if (!str)
198
+ size_t hex_size = git_oid_hexsize(git_oid_type(oid));
199
+ char *str = git__malloc(hex_size + 1);
200
+
201
+ if (!hex_size || !str)
202
+ return NULL;
203
+
204
+ if (git_oid_nfmt(str, hex_size + 1, oid) < 0) {
205
+ git__free(str);
120
206
  return NULL;
121
- git_oid_nfmt(str, GIT_OID_HEXSZ + 1, oid);
207
+ }
208
+
122
209
  return str;
123
210
  }
124
211
 
125
212
  char *git_oid_tostr(char *out, size_t n, const git_oid *oid)
126
213
  {
214
+ size_t hex_size;
215
+
127
216
  if (!out || n == 0)
128
217
  return "";
129
218
 
130
- if (n > GIT_OID_HEXSZ + 1)
131
- n = GIT_OID_HEXSZ + 1;
219
+ hex_size = oid ? git_oid_hexsize(git_oid_type(oid)) : 0;
220
+
221
+ if (n > hex_size + 1)
222
+ n = hex_size + 1;
132
223
 
133
224
  git_oid_nfmt(out, n - 1, oid); /* allow room for terminating NUL */
134
225
  out[n - 1] = '\0';
@@ -136,52 +227,44 @@ char *git_oid_tostr(char *out, size_t n, const git_oid *oid)
136
227
  return out;
137
228
  }
138
229
 
139
- int git_oid__parse(
140
- git_oid *oid, const char **buffer_out,
141
- const char *buffer_end, const char *header)
230
+ int git_oid__fromraw(git_oid *out, const unsigned char *raw, git_oid_t type)
142
231
  {
143
- const size_t sha_len = GIT_OID_HEXSZ;
144
- const size_t header_len = strlen(header);
232
+ size_t size;
145
233
 
146
- const char *buffer = *buffer_out;
147
-
148
- if (buffer + (header_len + sha_len + 1) > buffer_end)
149
- return -1;
150
-
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);
234
+ if (!(size = git_oid_size(type)))
235
+ return oid_error_invalid("unknown type");
161
236
 
237
+ #ifdef GIT_EXPERIMENTAL_SHA256
238
+ out->type = type;
239
+ #endif
240
+ memcpy(out->id, raw, size);
162
241
  return 0;
163
242
  }
164
243
 
165
- void git_oid__writebuf(git_buf *buf, const char *header, const git_oid *oid)
244
+ #ifdef GIT_EXPERIMENTAL_SHA256
245
+ int git_oid_fromraw(git_oid *out, const unsigned char *raw, git_oid_t type)
166
246
  {
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');
247
+ return git_oid__fromraw(out, raw, type);
173
248
  }
174
-
249
+ #else
175
250
  int git_oid_fromraw(git_oid *out, const unsigned char *raw)
176
251
  {
177
- memcpy(out->id, raw, sizeof(out->id));
178
- return 0;
252
+ return git_oid__fromraw(out, raw, GIT_OID_SHA1);
179
253
  }
254
+ #endif
180
255
 
181
256
  int git_oid_cpy(git_oid *out, const git_oid *src)
182
257
  {
183
- memcpy(out->id, src->id, sizeof(out->id));
184
- return 0;
258
+ size_t size;
259
+
260
+ if (!(size = git_oid_size(git_oid_type(src))))
261
+ return oid_error_invalid("unknown type");
262
+
263
+ #ifdef GIT_EXPERIMENTAL_SHA256
264
+ out->type = src->type;
265
+ #endif
266
+
267
+ return git_oid_raw_cpy(out->id, src->id, size);
185
268
  }
186
269
 
187
270
  int git_oid_cmp(const git_oid *a, const git_oid *b)
@@ -196,34 +279,22 @@ int git_oid_equal(const git_oid *a, const git_oid *b)
196
279
 
197
280
  int git_oid_ncmp(const git_oid *oid_a, const git_oid *oid_b, size_t len)
198
281
  {
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;
282
+ #ifdef GIT_EXPERIMENTAL_SHA256
283
+ if (oid_a->type != oid_b->type)
284
+ return oid_a->type - oid_b->type;
285
+ #endif
216
286
 
217
- return 0;
287
+ return git_oid_raw_ncmp(oid_a->id, oid_b->id, len);
218
288
  }
219
289
 
220
290
  int git_oid_strcmp(const git_oid *oid_a, const char *str)
221
291
  {
222
292
  const unsigned char *a;
223
293
  unsigned char strval;
294
+ long size = (long)git_oid_size(git_oid_type(oid_a));
224
295
  int hexval;
225
296
 
226
- for (a = oid_a->id; *str && (a - oid_a->id) < GIT_OID_RAWSZ; ++a) {
297
+ for (a = oid_a->id; *str && (a - oid_a->id) < size; ++a) {
227
298
  if ((hexval = git__fromhex(*str++)) < 0)
228
299
  return -1;
229
300
  strval = (unsigned char)(hexval << 4);
@@ -247,8 +318,16 @@ int git_oid_streq(const git_oid *oid_a, const char *str)
247
318
  int git_oid_is_zero(const git_oid *oid_a)
248
319
  {
249
320
  const unsigned char *a = oid_a->id;
250
- unsigned int i;
251
- for (i = 0; i < GIT_OID_RAWSZ; ++i, ++a)
321
+ size_t size = git_oid_size(git_oid_type(oid_a)), i;
322
+
323
+ #ifdef GIT_EXPERIMENTAL_SHA256
324
+ if (!oid_a->type)
325
+ return 1;
326
+ else if (!size)
327
+ return 0;
328
+ #endif
329
+
330
+ for (i = 0; i < size; ++i, ++a)
252
331
  if (*a != 0)
253
332
  return 0;
254
333
  return 1;
@@ -405,7 +484,7 @@ int git_oid_shorten_add(git_oid_shorten *os, const char *text_oid)
405
484
  idx = 0;
406
485
  is_leaf = false;
407
486
 
408
- for (i = 0; i < GIT_OID_HEXSZ; ++i) {
487
+ for (i = 0; i < GIT_OID_SHA1_HEXSIZE; ++i) {
409
488
  int c = git__fromhex(text_oid[i]);
410
489
  trie_node *node;
411
490
 
@@ -0,0 +1,284 @@
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(bool) git_oid_type_is_valid(git_oid_t type)
70
+ {
71
+ return (type == GIT_OID_SHA1
72
+ #ifdef GIT_EXPERIMENTAL_SHA256
73
+ || type == GIT_OID_SHA256
74
+ #endif
75
+ );
76
+ }
77
+
78
+ GIT_INLINE(const char *) git_oid_type_name(git_oid_t type)
79
+ {
80
+ switch (type) {
81
+ case GIT_OID_SHA1:
82
+ return "sha1";
83
+
84
+ #ifdef GIT_EXPERIMENTAL_SHA256
85
+ case GIT_OID_SHA256:
86
+ return "sha256";
87
+ #endif
88
+ }
89
+
90
+ return "unknown";
91
+ }
92
+
93
+ GIT_INLINE(git_oid_t) git_oid_type_fromstr(const char *name)
94
+ {
95
+ if (strcmp(name, "sha1") == 0)
96
+ return GIT_OID_SHA1;
97
+
98
+ #ifdef GIT_EXPERIMENTAL_SHA256
99
+ if (strcmp(name, "sha256") == 0)
100
+ return GIT_OID_SHA256;
101
+ #endif
102
+
103
+ return 0;
104
+ }
105
+
106
+ GIT_INLINE(git_oid_t) git_oid_type_fromstrn(const char *name, size_t len)
107
+ {
108
+ if (len == CONST_STRLEN("sha1") && strncmp(name, "sha1", len) == 0)
109
+ return GIT_OID_SHA1;
110
+
111
+ #ifdef GIT_EXPERIMENTAL_SHA256
112
+ if (len == CONST_STRLEN("sha256") && strncmp(name, "sha256", len) == 0)
113
+ return GIT_OID_SHA256;
114
+ #endif
115
+
116
+ return 0;
117
+ }
118
+
119
+ GIT_INLINE(git_hash_algorithm_t) git_oid_algorithm(git_oid_t type)
120
+ {
121
+ switch (type) {
122
+ case GIT_OID_SHA1:
123
+ return GIT_HASH_ALGORITHM_SHA1;
124
+
125
+ #ifdef GIT_EXPERIMENTAL_SHA256
126
+ case GIT_OID_SHA256:
127
+ return GIT_HASH_ALGORITHM_SHA256;
128
+ #endif
129
+
130
+ }
131
+
132
+ return 0;
133
+ }
134
+
135
+ /**
136
+ * Format a git_oid into a newly allocated c-string.
137
+ *
138
+ * The c-string is owned by the caller and needs to be manually freed.
139
+ *
140
+ * @param id the oid structure to format
141
+ * @return the c-string; NULL if memory is exhausted. Caller must
142
+ * deallocate the string with git__free().
143
+ */
144
+ char *git_oid_allocfmt(const git_oid *id);
145
+
146
+ /**
147
+ * Format the requested nibbles of an object id.
148
+ *
149
+ * @param str the string to write into
150
+ * @param oid the oid structure to format
151
+ * @param start the starting number of nibbles
152
+ * @param count the number of nibbles to format
153
+ */
154
+ GIT_INLINE(void) git_oid_fmt_substr(
155
+ char *str,
156
+ const git_oid *oid,
157
+ size_t start,
158
+ size_t count)
159
+ {
160
+ static char hex[] = "0123456789abcdef";
161
+ size_t i, end = start + count, min = start / 2, max = end / 2;
162
+
163
+ if (start & 1)
164
+ *str++ = hex[oid->id[min++] & 0x0f];
165
+
166
+ for (i = min; i < max; i++) {
167
+ *str++ = hex[oid->id[i] >> 4];
168
+ *str++ = hex[oid->id[i] & 0x0f];
169
+ }
170
+
171
+ if (end & 1)
172
+ *str++ = hex[oid->id[i] >> 4];
173
+ }
174
+
175
+ GIT_INLINE(int) git_oid_raw_ncmp(
176
+ const unsigned char *sha1,
177
+ const unsigned char *sha2,
178
+ size_t len)
179
+ {
180
+ if (len > GIT_OID_MAX_HEXSIZE)
181
+ len = GIT_OID_MAX_HEXSIZE;
182
+
183
+ while (len > 1) {
184
+ if (*sha1 != *sha2)
185
+ return 1;
186
+ sha1++;
187
+ sha2++;
188
+ len -= 2;
189
+ };
190
+
191
+ if (len)
192
+ if ((*sha1 ^ *sha2) & 0xf0)
193
+ return 1;
194
+
195
+ return 0;
196
+ }
197
+
198
+ GIT_INLINE(int) git_oid_raw_cmp(
199
+ const unsigned char *sha1,
200
+ const unsigned char *sha2,
201
+ size_t size)
202
+ {
203
+ return memcmp(sha1, sha2, size);
204
+ }
205
+
206
+ GIT_INLINE(int) git_oid_raw_cpy(
207
+ unsigned char *dst,
208
+ const unsigned char *src,
209
+ size_t size)
210
+ {
211
+ memcpy(dst, src, size);
212
+ return 0;
213
+ }
214
+
215
+ /*
216
+ * Compare two oid structures.
217
+ *
218
+ * @param a first oid structure.
219
+ * @param b second oid structure.
220
+ * @return <0, 0, >0 if a < b, a == b, a > b.
221
+ */
222
+ GIT_INLINE(int) git_oid__cmp(const git_oid *a, const git_oid *b)
223
+ {
224
+ #ifdef GIT_EXPERIMENTAL_SHA256
225
+ if (a->type != b->type)
226
+ return a->type - b->type;
227
+
228
+ return git_oid_raw_cmp(a->id, b->id, git_oid_size(a->type));
229
+ #else
230
+ return git_oid_raw_cmp(a->id, b->id, git_oid_size(GIT_OID_SHA1));
231
+ #endif
232
+ }
233
+
234
+ GIT_INLINE(void) git_oid__cpy_prefix(
235
+ git_oid *out, const git_oid *id, size_t len)
236
+ {
237
+ #ifdef GIT_EXPERIMENTAL_SHA256
238
+ out->type = id->type;
239
+ #endif
240
+
241
+ memcpy(&out->id, id->id, (len + 1) / 2);
242
+
243
+ if (len & 1)
244
+ out->id[len / 2] &= 0xF0;
245
+ }
246
+
247
+ GIT_INLINE(bool) git_oid__is_hexstr(const char *str, git_oid_t type)
248
+ {
249
+ size_t i;
250
+
251
+ for (i = 0; str[i] != '\0'; i++) {
252
+ if (git__fromhex(str[i]) < 0)
253
+ return false;
254
+ }
255
+
256
+ return (i == git_oid_hexsize(type));
257
+ }
258
+
259
+ GIT_INLINE(void) git_oid_clear(git_oid *out, git_oid_t type)
260
+ {
261
+ memset(out->id, 0, git_oid_size(type));
262
+
263
+ #ifdef GIT_EXPERIMENTAL_SHA256
264
+ out->type = type;
265
+ #endif
266
+ }
267
+
268
+ /* SHA256 support */
269
+
270
+ int git_oid__fromstr(git_oid *out, const char *str, git_oid_t type);
271
+
272
+ int git_oid__fromstrp(git_oid *out, const char *str, git_oid_t type);
273
+
274
+ int git_oid__fromstrn(
275
+ git_oid *out,
276
+ const char *str,
277
+ size_t length,
278
+ git_oid_t type);
279
+
280
+ int git_oid__fromraw(git_oid *out, const unsigned char *raw, git_oid_t type);
281
+
282
+ int git_oid_global_init(void);
283
+
284
+ #endif