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
@@ -46,10 +46,8 @@ typedef struct {
46
46
  typedef struct loose_backend {
47
47
  git_odb_backend parent;
48
48
 
49
- int object_zlib_level; /** loose object zlib compression level. */
50
- int fsync_object_files; /** loose object file fsync flag. */
51
- mode_t object_file_mode;
52
- mode_t object_dir_mode;
49
+ git_odb_backend_loose_options options;
50
+ size_t oid_hexsize;
53
51
 
54
52
  size_t objects_dirlen;
55
53
  char objects_dir[GIT_FLEX_ARRAY];
@@ -59,13 +57,19 @@ typedef struct loose_backend {
59
57
  * in order to locate objects matching a short oid.
60
58
  */
61
59
  typedef struct {
60
+ loose_backend *backend;
61
+
62
62
  size_t dir_len;
63
- unsigned char short_oid[GIT_OID_HEXSZ]; /* hex formatted oid to match */
63
+
64
+ /* Hex formatted oid to match (and its length) */
65
+ unsigned char short_oid[GIT_OID_MAX_HEXSIZE];
64
66
  size_t short_oid_len;
65
- int found; /* number of matching
66
- * objects already found */
67
- unsigned char res_oid[GIT_OID_HEXSZ]; /* hex formatted oid of
68
- * the object found */
67
+
68
+ /* Number of matching objects found so far */
69
+ int found;
70
+
71
+ /* Hex formatted oid of the object found */
72
+ unsigned char res_oid[GIT_OID_MAX_HEXSIZE];
69
73
  } loose_locate_object_state;
70
74
 
71
75
 
@@ -76,31 +80,30 @@ typedef struct {
76
80
  ***********************************************************/
77
81
 
78
82
  static int object_file_name(
79
- git_buf *name, const loose_backend *be, const git_oid *id)
83
+ git_str *name, const loose_backend *be, const git_oid *id)
80
84
  {
81
- size_t alloclen;
85
+ /* append loose object filename: aa/aaa... (41 bytes plus NUL) */
86
+ size_t path_size = be->oid_hexsize + 1;
82
87
 
83
- /* expand length for object root + 40 hex sha1 chars + 2 * '/' + '\0' */
84
- GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, be->objects_dirlen, GIT_OID_HEXSZ);
85
- GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, alloclen, 3);
86
- if (git_buf_grow(name, alloclen) < 0)
87
- return -1;
88
+ git_str_set(name, be->objects_dir, be->objects_dirlen);
89
+ git_fs_path_to_dir(name);
88
90
 
89
- git_buf_set(name, be->objects_dir, be->objects_dirlen);
90
- git_path_to_dir(name);
91
+ if (git_str_grow_by(name, path_size + 1) < 0)
92
+ return -1;
91
93
 
92
- /* loose object filename: aa/aaa... (41 bytes) */
93
94
  git_oid_pathfmt(name->ptr + name->size, id);
94
- name->size += GIT_OID_HEXSZ + 1;
95
+ name->size += path_size;
95
96
  name->ptr[name->size] = '\0';
96
97
 
97
98
  return 0;
98
99
  }
99
100
 
100
- static int object_mkdir(const git_buf *name, const loose_backend *be)
101
+ static int object_mkdir(const git_str *name, const loose_backend *be)
101
102
  {
102
103
  return git_futils_mkdir_relative(
103
- name->ptr + be->objects_dirlen, be->objects_dir, be->object_dir_mode,
104
+ name->ptr + be->objects_dirlen,
105
+ be->objects_dir,
106
+ be->options.dir_mode,
104
107
  GIT_MKDIR_PATH | GIT_MKDIR_SKIP_LAST | GIT_MKDIR_VERIFY_DIR, NULL);
105
108
  }
106
109
 
@@ -222,9 +225,9 @@ static int is_zlib_compressed_data(unsigned char *data, size_t data_len)
222
225
  * of loose object data into packs. This format is no longer used, but
223
226
  * we must still read it.
224
227
  */
225
- static int read_loose_packlike(git_rawobj *out, git_buf *obj)
228
+ static int read_loose_packlike(git_rawobj *out, git_str *obj)
226
229
  {
227
- git_buf body = GIT_BUF_INIT;
230
+ git_str body = GIT_STR_INIT;
228
231
  const unsigned char *obj_data;
229
232
  obj_hdr hdr;
230
233
  size_t obj_len, head_len, alloc_size;
@@ -253,7 +256,7 @@ static int read_loose_packlike(git_rawobj *out, git_buf *obj)
253
256
  * allocate a buffer and inflate the data into it
254
257
  */
255
258
  if (GIT_ADD_SIZET_OVERFLOW(&alloc_size, hdr.size, 1) ||
256
- git_buf_init(&body, alloc_size) < 0) {
259
+ git_str_init(&body, alloc_size) < 0) {
257
260
  error = -1;
258
261
  goto done;
259
262
  }
@@ -263,14 +266,14 @@ static int read_loose_packlike(git_rawobj *out, git_buf *obj)
263
266
 
264
267
  out->len = hdr.size;
265
268
  out->type = hdr.type;
266
- out->data = git_buf_detach(&body);
269
+ out->data = git_str_detach(&body);
267
270
 
268
271
  done:
269
- git_buf_dispose(&body);
272
+ git_str_dispose(&body);
270
273
  return error;
271
274
  }
272
275
 
273
- static int read_loose_standard(git_rawobj *out, git_buf *obj)
276
+ static int read_loose_standard(git_rawobj *out, git_str *obj)
274
277
  {
275
278
  git_zstream zstream = GIT_ZSTREAM_INIT;
276
279
  unsigned char head[MAX_HEADER_LEN], *body = NULL;
@@ -279,7 +282,7 @@ static int read_loose_standard(git_rawobj *out, git_buf *obj)
279
282
  int error;
280
283
 
281
284
  if ((error = git_zstream_init(&zstream, GIT_ZSTREAM_INFLATE)) < 0 ||
282
- (error = git_zstream_set_input(&zstream, git_buf_cstr(obj), git_buf_len(obj))) < 0)
285
+ (error = git_zstream_set_input(&zstream, git_str_cstr(obj), git_str_len(obj))) < 0)
283
286
  goto done;
284
287
 
285
288
  decompressed = sizeof(head);
@@ -339,15 +342,15 @@ done:
339
342
  return error;
340
343
  }
341
344
 
342
- static int read_loose(git_rawobj *out, git_buf *loc)
345
+ static int read_loose(git_rawobj *out, git_str *loc)
343
346
  {
344
347
  int error;
345
- git_buf obj = GIT_BUF_INIT;
348
+ git_str obj = GIT_STR_INIT;
346
349
 
347
350
  GIT_ASSERT_ARG(out);
348
351
  GIT_ASSERT_ARG(loc);
349
352
 
350
- if (git_buf_oom(loc))
353
+ if (git_str_oom(loc))
351
354
  return -1;
352
355
 
353
356
  out->data = NULL;
@@ -363,7 +366,7 @@ static int read_loose(git_rawobj *out, git_buf *loc)
363
366
  error = read_loose_standard(out, &obj);
364
367
 
365
368
  done:
366
- git_buf_dispose(&obj);
369
+ git_str_dispose(&obj);
367
370
  return error;
368
371
  }
369
372
 
@@ -406,7 +409,7 @@ done:
406
409
  return error;
407
410
  }
408
411
 
409
- static int read_header_loose(git_rawobj *out, git_buf *loc)
412
+ static int read_header_loose(git_rawobj *out, git_str *loc)
410
413
  {
411
414
  unsigned char obj[1024];
412
415
  ssize_t obj_len;
@@ -415,7 +418,7 @@ static int read_header_loose(git_rawobj *out, git_buf *loc)
415
418
  GIT_ASSERT_ARG(out);
416
419
  GIT_ASSERT_ARG(loc);
417
420
 
418
- if (git_buf_oom(loc))
421
+ if (git_str_oom(loc))
419
422
  return -1;
420
423
 
421
424
  out->data = NULL;
@@ -446,28 +449,29 @@ done:
446
449
  }
447
450
 
448
451
  static int locate_object(
449
- git_buf *object_location,
452
+ git_str *object_location,
450
453
  loose_backend *backend,
451
454
  const git_oid *oid)
452
455
  {
453
456
  int error = object_file_name(object_location, backend, oid);
454
457
 
455
- if (!error && !git_path_exists(object_location->ptr))
458
+ if (!error && !git_fs_path_exists(object_location->ptr))
456
459
  return GIT_ENOTFOUND;
457
460
 
458
461
  return error;
459
462
  }
460
463
 
461
464
  /* Explore an entry of a directory and see if it matches a short oid */
462
- static int fn_locate_object_short_oid(void *state, git_buf *pathbuf) {
465
+ static int fn_locate_object_short_oid(void *state, git_str *pathbuf) {
463
466
  loose_locate_object_state *sstate = (loose_locate_object_state *)state;
467
+ size_t hex_size = sstate->backend->oid_hexsize;
464
468
 
465
- if (git_buf_len(pathbuf) - sstate->dir_len != GIT_OID_HEXSZ - 2) {
469
+ if (git_str_len(pathbuf) - sstate->dir_len != hex_size - 2) {
466
470
  /* Entry cannot be an object. Continue to next entry */
467
471
  return 0;
468
472
  }
469
473
 
470
- if (git_path_isdir(pathbuf->ptr) == false) {
474
+ if (git_fs_path_isdir(pathbuf->ptr) == false) {
471
475
  /* We are already in the directory matching the 2 first hex characters,
472
476
  * compare the first ncmp characters of the oids */
473
477
  if (!memcmp(sstate->short_oid + 2,
@@ -477,7 +481,9 @@ static int fn_locate_object_short_oid(void *state, git_buf *pathbuf) {
477
481
  if (!sstate->found) {
478
482
  sstate->res_oid[0] = sstate->short_oid[0];
479
483
  sstate->res_oid[1] = sstate->short_oid[1];
480
- memcpy(sstate->res_oid+2, pathbuf->ptr+sstate->dir_len, GIT_OID_HEXSZ-2);
484
+ memcpy(sstate->res_oid + 2,
485
+ pathbuf->ptr+sstate->dir_len,
486
+ hex_size - 2);
481
487
  }
482
488
  sstate->found++;
483
489
  }
@@ -491,7 +497,7 @@ static int fn_locate_object_short_oid(void *state, git_buf *pathbuf) {
491
497
 
492
498
  /* Locate an object matching a given short oid */
493
499
  static int locate_object_short_oid(
494
- git_buf *object_location,
500
+ git_str *object_location,
495
501
  git_oid *res_oid,
496
502
  loose_backend *backend,
497
503
  const git_oid *short_oid,
@@ -503,36 +509,37 @@ static int locate_object_short_oid(
503
509
  int error;
504
510
 
505
511
  /* prealloc memory for OBJ_DIR/xx/xx..38x..xx */
506
- GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, dir_len, GIT_OID_HEXSZ);
512
+ GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, dir_len, backend->oid_hexsize);
507
513
  GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, alloc_len, 3);
508
- if (git_buf_grow(object_location, alloc_len) < 0)
514
+ if (git_str_grow(object_location, alloc_len) < 0)
509
515
  return -1;
510
516
 
511
- git_buf_set(object_location, objects_dir, dir_len);
512
- git_path_to_dir(object_location);
517
+ git_str_set(object_location, objects_dir, dir_len);
518
+ git_fs_path_to_dir(object_location);
513
519
 
514
520
  /* save adjusted position at end of dir so it can be restored later */
515
- dir_len = git_buf_len(object_location);
521
+ dir_len = git_str_len(object_location);
516
522
 
517
523
  /* Convert raw oid to hex formatted oid */
518
524
  git_oid_fmt((char *)state.short_oid, short_oid);
519
525
 
520
526
  /* Explore OBJ_DIR/xx/ where xx is the beginning of hex formatted short oid */
521
- if (git_buf_put(object_location, (char *)state.short_oid, 3) < 0)
527
+ if (git_str_put(object_location, (char *)state.short_oid, 3) < 0)
522
528
  return -1;
523
529
  object_location->ptr[object_location->size - 1] = '/';
524
530
 
525
531
  /* Check that directory exists */
526
- if (git_path_isdir(object_location->ptr) == false)
532
+ if (git_fs_path_isdir(object_location->ptr) == false)
527
533
  return git_odb__error_notfound("no matching loose object for prefix",
528
534
  short_oid, len);
529
535
 
530
- state.dir_len = git_buf_len(object_location);
536
+ state.backend = backend;
537
+ state.dir_len = git_str_len(object_location);
531
538
  state.short_oid_len = len;
532
539
  state.found = 0;
533
540
 
534
541
  /* Explore directory to find a unique object matching short_oid */
535
- error = git_path_direach(
542
+ error = git_fs_path_direach(
536
543
  object_location, 0, fn_locate_object_short_oid, &state);
537
544
  if (error < 0 && error != GIT_EAMBIGUOUS)
538
545
  return error;
@@ -545,34 +552,26 @@ static int locate_object_short_oid(
545
552
  return git_odb__error_ambiguous("multiple matches in loose objects");
546
553
 
547
554
  /* Convert obtained hex formatted oid to raw */
548
- error = git_oid_fromstr(res_oid, (char *)state.res_oid);
555
+ error = git_oid__fromstr(res_oid, (char *)state.res_oid, backend->options.oid_type);
549
556
  if (error)
550
557
  return error;
551
558
 
552
559
  /* Update the location according to the oid obtained */
553
- GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, dir_len, GIT_OID_HEXSZ);
560
+ GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, dir_len, backend->oid_hexsize);
554
561
  GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, alloc_len, 2);
555
562
 
556
- git_buf_truncate(object_location, dir_len);
557
- if (git_buf_grow(object_location, alloc_len) < 0)
563
+ git_str_truncate(object_location, dir_len);
564
+ if (git_str_grow(object_location, alloc_len) < 0)
558
565
  return -1;
559
566
 
560
567
  git_oid_pathfmt(object_location->ptr + dir_len, res_oid);
561
568
 
562
- object_location->size += GIT_OID_HEXSZ + 1;
569
+ object_location->size += backend->oid_hexsize + 1;
563
570
  object_location->ptr[object_location->size] = '\0';
564
571
 
565
572
  return 0;
566
573
  }
567
574
 
568
-
569
-
570
-
571
-
572
-
573
-
574
-
575
-
576
575
  /***********************************************************
577
576
  *
578
577
  * LOOSE BACKEND PUBLIC API
@@ -583,7 +582,7 @@ static int locate_object_short_oid(
583
582
 
584
583
  static int loose_backend__read_header(size_t *len_p, git_object_t *type_p, git_odb_backend *backend, const git_oid *oid)
585
584
  {
586
- git_buf object_path = GIT_BUF_INIT;
585
+ git_str object_path = GIT_STR_INIT;
587
586
  git_rawobj raw;
588
587
  int error;
589
588
 
@@ -595,20 +594,20 @@ static int loose_backend__read_header(size_t *len_p, git_object_t *type_p, git_o
595
594
 
596
595
  if (locate_object(&object_path, (loose_backend *)backend, oid) < 0) {
597
596
  error = git_odb__error_notfound("no matching loose object",
598
- oid, GIT_OID_HEXSZ);
597
+ oid, ((struct loose_backend *)backend)->oid_hexsize);
599
598
  } else if ((error = read_header_loose(&raw, &object_path)) == 0) {
600
599
  *len_p = raw.len;
601
600
  *type_p = raw.type;
602
601
  }
603
602
 
604
- git_buf_dispose(&object_path);
603
+ git_str_dispose(&object_path);
605
604
 
606
605
  return error;
607
606
  }
608
607
 
609
608
  static int loose_backend__read(void **buffer_p, size_t *len_p, git_object_t *type_p, git_odb_backend *backend, const git_oid *oid)
610
609
  {
611
- git_buf object_path = GIT_BUF_INIT;
610
+ git_str object_path = GIT_STR_INIT;
612
611
  git_rawobj raw;
613
612
  int error = 0;
614
613
 
@@ -617,14 +616,14 @@ static int loose_backend__read(void **buffer_p, size_t *len_p, git_object_t *typ
617
616
 
618
617
  if (locate_object(&object_path, (loose_backend *)backend, oid) < 0) {
619
618
  error = git_odb__error_notfound("no matching loose object",
620
- oid, GIT_OID_HEXSZ);
619
+ oid, ((struct loose_backend *)backend)->oid_hexsize);
621
620
  } else if ((error = read_loose(&raw, &object_path)) == 0) {
622
621
  *buffer_p = raw.data;
623
622
  *len_p = raw.len;
624
623
  *type_p = raw.type;
625
624
  }
626
625
 
627
- git_buf_dispose(&object_path);
626
+ git_str_dispose(&object_path);
628
627
 
629
628
  return error;
630
629
  }
@@ -634,21 +633,23 @@ static int loose_backend__read_prefix(
634
633
  void **buffer_p,
635
634
  size_t *len_p,
636
635
  git_object_t *type_p,
637
- git_odb_backend *backend,
636
+ git_odb_backend *_backend,
638
637
  const git_oid *short_oid,
639
638
  size_t len)
640
639
  {
640
+ struct loose_backend *backend = (struct loose_backend *)_backend;
641
641
  int error = 0;
642
642
 
643
- GIT_ASSERT_ARG(len >= GIT_OID_MINPREFIXLEN && len <= GIT_OID_HEXSZ);
643
+ GIT_ASSERT_ARG(len >= GIT_OID_MINPREFIXLEN &&
644
+ len <= backend->oid_hexsize);
644
645
 
645
- if (len == GIT_OID_HEXSZ) {
646
+ if (len == backend->oid_hexsize) {
646
647
  /* We can fall back to regular read method */
647
- error = loose_backend__read(buffer_p, len_p, type_p, backend, short_oid);
648
+ error = loose_backend__read(buffer_p, len_p, type_p, _backend, short_oid);
648
649
  if (!error)
649
650
  git_oid_cpy(out_oid, short_oid);
650
651
  } else {
651
- git_buf object_path = GIT_BUF_INIT;
652
+ git_str object_path = GIT_STR_INIT;
652
653
  git_rawobj raw;
653
654
 
654
655
  GIT_ASSERT_ARG(backend && short_oid);
@@ -662,7 +663,7 @@ static int loose_backend__read_prefix(
662
663
  *type_p = raw.type;
663
664
  }
664
665
 
665
- git_buf_dispose(&object_path);
666
+ git_str_dispose(&object_path);
666
667
  }
667
668
 
668
669
  return error;
@@ -670,7 +671,7 @@ static int loose_backend__read_prefix(
670
671
 
671
672
  static int loose_backend__exists(git_odb_backend *backend, const git_oid *oid)
672
673
  {
673
- git_buf object_path = GIT_BUF_INIT;
674
+ git_str object_path = GIT_STR_INIT;
674
675
  int error;
675
676
 
676
677
  GIT_ASSERT_ARG(backend);
@@ -678,7 +679,7 @@ static int loose_backend__exists(git_odb_backend *backend, const git_oid *oid)
678
679
 
679
680
  error = locate_object(&object_path, (loose_backend *)backend, oid);
680
681
 
681
- git_buf_dispose(&object_path);
682
+ git_str_dispose(&object_path);
682
683
 
683
684
  return !error;
684
685
  }
@@ -686,7 +687,7 @@ static int loose_backend__exists(git_odb_backend *backend, const git_oid *oid)
686
687
  static int loose_backend__exists_prefix(
687
688
  git_oid *out, git_odb_backend *backend, const git_oid *short_id, size_t len)
688
689
  {
689
- git_buf object_path = GIT_BUF_INIT;
690
+ git_str object_path = GIT_STR_INIT;
690
691
  int error;
691
692
 
692
693
  GIT_ASSERT_ARG(backend);
@@ -697,21 +698,24 @@ static int loose_backend__exists_prefix(
697
698
  error = locate_object_short_oid(
698
699
  &object_path, out, (loose_backend *)backend, short_id, len);
699
700
 
700
- git_buf_dispose(&object_path);
701
+ git_str_dispose(&object_path);
701
702
 
702
703
  return error;
703
704
  }
704
705
 
705
706
  struct foreach_state {
707
+ struct loose_backend *backend;
706
708
  size_t dir_len;
707
709
  git_odb_foreach_cb cb;
708
710
  void *data;
709
711
  };
710
712
 
711
- GIT_INLINE(int) filename_to_oid(git_oid *oid, const char *ptr)
713
+ GIT_INLINE(int) filename_to_oid(struct loose_backend *backend, git_oid *oid, const char *ptr)
712
714
  {
713
- int v, i = 0;
714
- if (strlen(ptr) != GIT_OID_HEXSZ+1)
715
+ int v;
716
+ size_t i = 0;
717
+
718
+ if (strlen(ptr) != backend->oid_hexsize + 1)
715
719
  return -1;
716
720
 
717
721
  if (ptr[2] != '/') {
@@ -725,7 +729,7 @@ GIT_INLINE(int) filename_to_oid(git_oid *oid, const char *ptr)
725
729
  oid->id[0] = (unsigned char) v;
726
730
 
727
731
  ptr += 3;
728
- for (i = 0; i < 38; i += 2) {
732
+ for (i = 0; i < backend->oid_hexsize - 2; i += 2) {
729
733
  v = (git__fromhex(ptr[i]) << 4) | git__fromhex(ptr[i + 1]);
730
734
  if (v < 0)
731
735
  return -1;
@@ -733,37 +737,41 @@ GIT_INLINE(int) filename_to_oid(git_oid *oid, const char *ptr)
733
737
  oid->id[1 + i/2] = (unsigned char) v;
734
738
  }
735
739
 
740
+ #ifdef GIT_EXPERIMENTAL_SHA256
741
+ oid->type = backend->options.oid_type;
742
+ #endif
743
+
736
744
  return 0;
737
745
  }
738
746
 
739
- static int foreach_object_dir_cb(void *_state, git_buf *path)
747
+ static int foreach_object_dir_cb(void *_state, git_str *path)
740
748
  {
741
749
  git_oid oid;
742
750
  struct foreach_state *state = (struct foreach_state *) _state;
743
751
 
744
- if (filename_to_oid(&oid, path->ptr + state->dir_len) < 0)
752
+ if (filename_to_oid(state->backend, &oid, path->ptr + state->dir_len) < 0)
745
753
  return 0;
746
754
 
747
755
  return git_error_set_after_callback_function(
748
756
  state->cb(&oid, state->data), "git_odb_foreach");
749
757
  }
750
758
 
751
- static int foreach_cb(void *_state, git_buf *path)
759
+ static int foreach_cb(void *_state, git_str *path)
752
760
  {
753
761
  struct foreach_state *state = (struct foreach_state *) _state;
754
762
 
755
763
  /* non-dir is some stray file, ignore it */
756
- if (!git_path_isdir(git_buf_cstr(path)))
764
+ if (!git_fs_path_isdir(git_str_cstr(path)))
757
765
  return 0;
758
766
 
759
- return git_path_direach(path, 0, foreach_object_dir_cb, state);
767
+ return git_fs_path_direach(path, 0, foreach_object_dir_cb, state);
760
768
  }
761
769
 
762
770
  static int loose_backend__foreach(git_odb_backend *_backend, git_odb_foreach_cb cb, void *data)
763
771
  {
764
772
  char *objects_dir;
765
773
  int error;
766
- git_buf buf = GIT_BUF_INIT;
774
+ git_str buf = GIT_STR_INIT;
767
775
  struct foreach_state state;
768
776
  loose_backend *backend = (loose_backend *) _backend;
769
777
 
@@ -772,19 +780,20 @@ static int loose_backend__foreach(git_odb_backend *_backend, git_odb_foreach_cb
772
780
 
773
781
  objects_dir = backend->objects_dir;
774
782
 
775
- git_buf_sets(&buf, objects_dir);
776
- git_path_to_dir(&buf);
777
- if (git_buf_oom(&buf))
783
+ git_str_sets(&buf, objects_dir);
784
+ git_fs_path_to_dir(&buf);
785
+ if (git_str_oom(&buf))
778
786
  return -1;
779
787
 
780
788
  memset(&state, 0, sizeof(state));
789
+ state.backend = backend;
781
790
  state.cb = cb;
782
791
  state.data = data;
783
- state.dir_len = git_buf_len(&buf);
792
+ state.dir_len = git_str_len(&buf);
784
793
 
785
- error = git_path_direach(&buf, 0, foreach_cb, &state);
794
+ error = git_fs_path_direach(&buf, 0, foreach_cb, &state);
786
795
 
787
- git_buf_dispose(&buf);
796
+ git_str_dispose(&buf);
788
797
 
789
798
  return error;
790
799
  }
@@ -793,7 +802,7 @@ static int loose_backend__writestream_finalize(git_odb_stream *_stream, const gi
793
802
  {
794
803
  loose_writestream *stream = (loose_writestream *)_stream;
795
804
  loose_backend *backend = (loose_backend *)_stream->backend;
796
- git_buf final_path = GIT_BUF_INIT;
805
+ git_str final_path = GIT_STR_INIT;
797
806
  int error = 0;
798
807
 
799
808
  if (object_file_name(&final_path, backend, oid) < 0 ||
@@ -803,7 +812,7 @@ static int loose_backend__writestream_finalize(git_odb_stream *_stream, const gi
803
812
  error = git_filebuf_commit_at(
804
813
  &stream->fbuf, final_path.ptr);
805
814
 
806
- git_buf_dispose(&final_path);
815
+ git_str_dispose(&final_path);
807
816
 
808
817
  return error;
809
818
  }
@@ -825,9 +834,10 @@ static void loose_backend__writestream_free(git_odb_stream *_stream)
825
834
  static int filebuf_flags(loose_backend *backend)
826
835
  {
827
836
  int flags = GIT_FILEBUF_TEMPORARY |
828
- (backend->object_zlib_level << GIT_FILEBUF_DEFLATE_SHIFT);
837
+ (backend->options.compression_level << GIT_FILEBUF_DEFLATE_SHIFT);
829
838
 
830
- if (backend->fsync_object_files || git_repository__fsync_gitdir)
839
+ if ((backend->options.flags & GIT_ODB_BACKEND_LOOSE_FSYNC) ||
840
+ git_repository__fsync_gitdir)
831
841
  flags |= GIT_FILEBUF_FSYNC;
832
842
 
833
843
  return flags;
@@ -838,7 +848,7 @@ static int loose_backend__writestream(git_odb_stream **stream_out, git_odb_backe
838
848
  loose_backend *backend;
839
849
  loose_writestream *stream = NULL;
840
850
  char hdr[MAX_HEADER_LEN];
841
- git_buf tmp_path = GIT_BUF_INIT;
851
+ git_str tmp_path = GIT_STR_INIT;
842
852
  size_t hdrlen;
843
853
  int error;
844
854
 
@@ -861,16 +871,16 @@ static int loose_backend__writestream(git_odb_stream **stream_out, git_odb_backe
861
871
  stream->stream.free = &loose_backend__writestream_free;
862
872
  stream->stream.mode = GIT_STREAM_WRONLY;
863
873
 
864
- if (git_buf_joinpath(&tmp_path, backend->objects_dir, "tmp_object") < 0 ||
874
+ if (git_str_joinpath(&tmp_path, backend->objects_dir, "tmp_object") < 0 ||
865
875
  git_filebuf_open(&stream->fbuf, tmp_path.ptr, filebuf_flags(backend),
866
- backend->object_file_mode) < 0 ||
876
+ backend->options.file_mode) < 0 ||
867
877
  stream->stream.write((git_odb_stream *)stream, hdr, hdrlen) < 0)
868
878
  {
869
879
  git_filebuf_cleanup(&stream->fbuf);
870
880
  git__free(stream);
871
881
  stream = NULL;
872
882
  }
873
- git_buf_dispose(&tmp_path);
883
+ git_str_dispose(&tmp_path);
874
884
  *stream_out = (git_odb_stream *)stream;
875
885
 
876
886
  return !stream ? -1 : 0;
@@ -996,7 +1006,8 @@ static int loose_backend__readstream(
996
1006
  loose_backend *backend;
997
1007
  loose_readstream *stream = NULL;
998
1008
  git_hash_ctx *hash_ctx = NULL;
999
- git_buf object_path = GIT_BUF_INIT;
1009
+ git_str object_path = GIT_STR_INIT;
1010
+ git_hash_algorithm_t algorithm;
1000
1011
  obj_hdr hdr;
1001
1012
  int error = 0;
1002
1013
 
@@ -1013,7 +1024,7 @@ static int loose_backend__readstream(
1013
1024
 
1014
1025
  if (locate_object(&object_path, backend, oid) < 0) {
1015
1026
  error = git_odb__error_notfound("no matching loose object",
1016
- oid, GIT_OID_HEXSZ);
1027
+ oid, backend->oid_hexsize);
1017
1028
  goto done;
1018
1029
  }
1019
1030
 
@@ -1023,9 +1034,11 @@ static int loose_backend__readstream(
1023
1034
  hash_ctx = git__malloc(sizeof(git_hash_ctx));
1024
1035
  GIT_ERROR_CHECK_ALLOC(hash_ctx);
1025
1036
 
1026
- if ((error = git_hash_ctx_init(hash_ctx)) < 0 ||
1027
- (error = git_futils_mmap_ro_file(&stream->map, object_path.ptr)) < 0 ||
1028
- (error = git_zstream_init(&stream->zstream, GIT_ZSTREAM_INFLATE)) < 0)
1037
+ algorithm = git_oid_algorithm(backend->options.oid_type);
1038
+
1039
+ if ((error = git_hash_ctx_init(hash_ctx, algorithm)) < 0 ||
1040
+ (error = git_futils_mmap_ro_file(&stream->map, object_path.ptr)) < 0 ||
1041
+ (error = git_zstream_init(&stream->zstream, GIT_ZSTREAM_INFLATE)) < 0)
1029
1042
  goto done;
1030
1043
 
1031
1044
  /* check for a packlike loose object */
@@ -1059,14 +1072,14 @@ done:
1059
1072
  }
1060
1073
  }
1061
1074
 
1062
- git_buf_dispose(&object_path);
1075
+ git_str_dispose(&object_path);
1063
1076
  return error;
1064
1077
  }
1065
1078
 
1066
1079
  static int loose_backend__write(git_odb_backend *_backend, const git_oid *oid, const void *data, size_t len, git_object_t type)
1067
1080
  {
1068
1081
  int error = 0;
1069
- git_buf final_path = GIT_BUF_INIT;
1082
+ git_str final_path = GIT_STR_INIT;
1070
1083
  char header[MAX_HEADER_LEN];
1071
1084
  size_t header_len;
1072
1085
  git_filebuf fbuf = GIT_FILEBUF_INIT;
@@ -1079,9 +1092,9 @@ static int loose_backend__write(git_odb_backend *_backend, const git_oid *oid, c
1079
1092
  header, sizeof(header), len, type)) < 0)
1080
1093
  goto cleanup;
1081
1094
 
1082
- if (git_buf_joinpath(&final_path, backend->objects_dir, "tmp_object") < 0 ||
1095
+ if (git_str_joinpath(&final_path, backend->objects_dir, "tmp_object") < 0 ||
1083
1096
  git_filebuf_open(&fbuf, final_path.ptr, filebuf_flags(backend),
1084
- backend->object_file_mode) < 0)
1097
+ backend->options.file_mode) < 0)
1085
1098
  {
1086
1099
  error = -1;
1087
1100
  goto cleanup;
@@ -1098,7 +1111,7 @@ static int loose_backend__write(git_odb_backend *_backend, const git_oid *oid, c
1098
1111
  cleanup:
1099
1112
  if (error < 0)
1100
1113
  git_filebuf_cleanup(&fbuf);
1101
- git_buf_dispose(&final_path);
1114
+ git_str_dispose(&final_path);
1102
1115
  return error;
1103
1116
  }
1104
1117
 
@@ -1107,14 +1120,14 @@ static int loose_backend__freshen(
1107
1120
  const git_oid *oid)
1108
1121
  {
1109
1122
  loose_backend *backend = (loose_backend *)_backend;
1110
- git_buf path = GIT_BUF_INIT;
1123
+ git_str path = GIT_STR_INIT;
1111
1124
  int error;
1112
1125
 
1113
1126
  if (object_file_name(&path, backend, oid) < 0)
1114
1127
  return -1;
1115
1128
 
1116
1129
  error = git_futils_touch(path.ptr, NULL);
1117
- git_buf_dispose(&path);
1130
+ git_str_dispose(&path);
1118
1131
 
1119
1132
  return error;
1120
1133
  }
@@ -1124,13 +1137,34 @@ static void loose_backend__free(git_odb_backend *_backend)
1124
1137
  git__free(_backend);
1125
1138
  }
1126
1139
 
1127
- int git_odb_backend_loose(
1140
+ static void normalize_options(
1141
+ git_odb_backend_loose_options *opts,
1142
+ const git_odb_backend_loose_options *given_opts)
1143
+ {
1144
+ git_odb_backend_loose_options init = GIT_ODB_BACKEND_LOOSE_OPTIONS_INIT;
1145
+
1146
+ if (given_opts)
1147
+ memcpy(opts, given_opts, sizeof(git_odb_backend_loose_options));
1148
+ else
1149
+ memcpy(opts, &init, sizeof(git_odb_backend_loose_options));
1150
+
1151
+ if (opts->compression_level < 0)
1152
+ opts->compression_level = Z_BEST_SPEED;
1153
+
1154
+ if (opts->dir_mode == 0)
1155
+ opts->dir_mode = GIT_OBJECT_DIR_MODE;
1156
+
1157
+ if (opts->file_mode == 0)
1158
+ opts->file_mode = GIT_OBJECT_FILE_MODE;
1159
+
1160
+ if (opts->oid_type == 0)
1161
+ opts->oid_type = GIT_OID_DEFAULT;
1162
+ }
1163
+
1164
+ int git_odb__backend_loose(
1128
1165
  git_odb_backend **backend_out,
1129
1166
  const char *objects_dir,
1130
- int compression_level,
1131
- int do_fsync,
1132
- unsigned int dir_mode,
1133
- unsigned int file_mode)
1167
+ git_odb_backend_loose_options *opts)
1134
1168
  {
1135
1169
  loose_backend *backend;
1136
1170
  size_t objects_dirlen, alloclen;
@@ -1148,22 +1182,12 @@ int git_odb_backend_loose(
1148
1182
  backend->parent.version = GIT_ODB_BACKEND_VERSION;
1149
1183
  backend->objects_dirlen = objects_dirlen;
1150
1184
  memcpy(backend->objects_dir, objects_dir, objects_dirlen);
1185
+
1151
1186
  if (backend->objects_dir[backend->objects_dirlen - 1] != '/')
1152
1187
  backend->objects_dir[backend->objects_dirlen++] = '/';
1153
1188
 
1154
- if (compression_level < 0)
1155
- compression_level = Z_BEST_SPEED;
1156
-
1157
- if (dir_mode == 0)
1158
- dir_mode = GIT_OBJECT_DIR_MODE;
1159
-
1160
- if (file_mode == 0)
1161
- file_mode = GIT_OBJECT_FILE_MODE;
1162
-
1163
- backend->object_zlib_level = compression_level;
1164
- backend->fsync_object_files = do_fsync;
1165
- backend->object_dir_mode = dir_mode;
1166
- backend->object_file_mode = file_mode;
1189
+ normalize_options(&backend->options, opts);
1190
+ backend->oid_hexsize = git_oid_hexsize(backend->options.oid_type);
1167
1191
 
1168
1192
  backend->parent.read = &loose_backend__read;
1169
1193
  backend->parent.write = &loose_backend__write;
@@ -1180,3 +1204,37 @@ int git_odb_backend_loose(
1180
1204
  *backend_out = (git_odb_backend *)backend;
1181
1205
  return 0;
1182
1206
  }
1207
+
1208
+
1209
+ #ifdef GIT_EXPERIMENTAL_SHA256
1210
+ int git_odb_backend_loose(
1211
+ git_odb_backend **backend_out,
1212
+ const char *objects_dir,
1213
+ git_odb_backend_loose_options *opts)
1214
+ {
1215
+ return git_odb__backend_loose(backend_out, objects_dir, opts);
1216
+ }
1217
+ #else
1218
+ int git_odb_backend_loose(
1219
+ git_odb_backend **backend_out,
1220
+ const char *objects_dir,
1221
+ int compression_level,
1222
+ int do_fsync,
1223
+ unsigned int dir_mode,
1224
+ unsigned int file_mode)
1225
+ {
1226
+ git_odb_backend_loose_flag_t flags = 0;
1227
+ git_odb_backend_loose_options opts = GIT_ODB_BACKEND_LOOSE_OPTIONS_INIT;
1228
+
1229
+ if (do_fsync)
1230
+ flags |= GIT_ODB_BACKEND_LOOSE_FSYNC;
1231
+
1232
+ opts.flags = flags;
1233
+ opts.compression_level = compression_level;
1234
+ opts.dir_mode = dir_mode;
1235
+ opts.file_mode = file_mode;
1236
+ opts.oid_type = GIT_OID_DEFAULT;
1237
+
1238
+ return git_odb__backend_loose(backend_out, objects_dir, &opts);
1239
+ }
1240
+ #endif