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
@@ -0,0 +1,89 @@
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
+
8
+ #include "oidarray.h"
9
+
10
+ #include "git2/oidarray.h"
11
+ #include "array.h"
12
+
13
+ void git_oidarray_dispose(git_oidarray *arr)
14
+ {
15
+ git__free(arr->ids);
16
+ }
17
+
18
+ void git_oidarray__from_array(git_oidarray *out, const git_array_oid_t *array)
19
+ {
20
+ out->count = array->size;
21
+ out->ids = array->ptr;
22
+ }
23
+
24
+ void git_oidarray__to_array(git_array_oid_t *out, const git_oidarray *array)
25
+ {
26
+ out->ptr = array->ids;
27
+ out->size = array->count;
28
+ out->asize = array->count;
29
+ }
30
+
31
+ void git_oidarray__reverse(git_oidarray *arr)
32
+ {
33
+ size_t i;
34
+ git_oid tmp;
35
+
36
+ for (i = 0; i < arr->count / 2; i++) {
37
+ git_oid_cpy(&tmp, &arr->ids[i]);
38
+ git_oid_cpy(&arr->ids[i], &arr->ids[(arr->count-1)-i]);
39
+ git_oid_cpy(&arr->ids[(arr->count-1)-i], &tmp);
40
+ }
41
+ }
42
+
43
+ int git_oidarray__add(git_array_oid_t *arr, git_oid *id)
44
+ {
45
+ git_oid *add, *iter;
46
+ size_t i;
47
+
48
+ git_array_foreach(*arr, i, iter) {
49
+ if (git_oid_cmp(iter, id) == 0)
50
+ return 0;
51
+ }
52
+
53
+ if ((add = git_array_alloc(*arr)) == NULL)
54
+ return -1;
55
+
56
+ git_oid_cpy(add, id);
57
+ return 0;
58
+ }
59
+
60
+ bool git_oidarray__remove(git_array_oid_t *arr, git_oid *id)
61
+ {
62
+ bool found = false;
63
+ size_t remain, i;
64
+ git_oid *iter;
65
+
66
+ git_array_foreach(*arr, i, iter) {
67
+ if (git_oid_cmp(iter, id) == 0) {
68
+ arr->size--;
69
+ remain = arr->size - i;
70
+
71
+ if (remain > 0)
72
+ memmove(&arr->ptr[i], &arr->ptr[i+1], remain * sizeof(git_oid));
73
+
74
+ found = true;
75
+ break;
76
+ }
77
+ }
78
+
79
+ return found;
80
+ }
81
+
82
+ #ifndef GIT_DEPRECATE_HARD
83
+
84
+ void git_oidarray_free(git_oidarray *arr)
85
+ {
86
+ git_oidarray_dispose(arr);
87
+ }
88
+
89
+ #endif
@@ -15,6 +15,10 @@
15
15
  typedef git_array_t(git_oid) git_array_oid_t;
16
16
 
17
17
  extern void git_oidarray__reverse(git_oidarray *arr);
18
- extern void git_oidarray__from_array(git_oidarray *arr, git_array_oid_t *array);
18
+ extern void git_oidarray__from_array(git_oidarray *out, const git_array_oid_t *array);
19
+ extern void git_oidarray__to_array(git_array_oid_t *out, const git_oidarray *array);
20
+
21
+ int git_oidarray__add(git_array_oid_t *arr, git_oid *id);
22
+ bool git_oidarray__remove(git_array_oid_t *arr, git_oid *id);
19
23
 
20
24
  #endif
@@ -7,10 +7,10 @@
7
7
 
8
8
  #include "pack-objects.h"
9
9
 
10
+ #include "buf.h"
10
11
  #include "zstream.h"
11
12
  #include "delta.h"
12
13
  #include "iterator.h"
13
- #include "netops.h"
14
14
  #include "pack.h"
15
15
  #include "thread.h"
16
16
  #include "tree.h"
@@ -33,7 +33,7 @@ struct unpacked {
33
33
 
34
34
  struct tree_walk_context {
35
35
  git_packbuilder *pb;
36
- git_buf buf;
36
+ git_str buf;
37
37
  };
38
38
 
39
39
  struct pack_write_context {
@@ -64,6 +64,9 @@ struct walk_object {
64
64
  /* Size of the buffer to feed to zlib */
65
65
  #define COMPRESS_BUFLEN (1024 * 1024)
66
66
 
67
+ GIT_HASHMAP_OID_FUNCTIONS(git_packbuilder_pobjectmap, GIT_HASHMAP_INLINE, git_pobject *);
68
+ GIT_HASHMAP_OID_FUNCTIONS(git_packbuilder_walk_objectmap, GIT_HASHMAP_INLINE, struct walk_object *);
69
+
67
70
  static unsigned name_hash(const char *name)
68
71
  {
69
72
  unsigned c, hash = 0;
@@ -126,6 +129,7 @@ out:
126
129
 
127
130
  int git_packbuilder_new(git_packbuilder **out, git_repository *repo)
128
131
  {
132
+ git_hash_algorithm_t hash_algorithm;
129
133
  git_packbuilder *pb;
130
134
 
131
135
  *out = NULL;
@@ -133,15 +137,18 @@ int git_packbuilder_new(git_packbuilder **out, git_repository *repo)
133
137
  pb = git__calloc(1, sizeof(*pb));
134
138
  GIT_ERROR_CHECK_ALLOC(pb);
135
139
 
136
- if (git_oidmap_new(&pb->object_ix) < 0 ||
137
- git_oidmap_new(&pb->walk_objects) < 0 ||
138
- git_pool_init(&pb->object_pool, sizeof(struct walk_object)) < 0)
140
+ pb->oid_type = repo->oid_type;
141
+
142
+ hash_algorithm = git_oid_algorithm(pb->oid_type);
143
+ GIT_ASSERT(hash_algorithm);
144
+
145
+ if (git_pool_init(&pb->object_pool, sizeof(struct walk_object)) < 0)
139
146
  goto on_error;
140
147
 
141
148
  pb->repo = repo;
142
149
  pb->nr_threads = 1; /* do not spawn any thread by default */
143
150
 
144
- if (git_hash_ctx_init(&pb->ctx) < 0 ||
151
+ if (git_hash_ctx_init(&pb->ctx, hash_algorithm) < 0 ||
145
152
  git_zstream_init(&pb->zstream, GIT_ZSTREAM_DEFLATE) < 0 ||
146
153
  git_repository_odb(&pb->odb, repo) < 0 ||
147
154
  packbuilder_config(pb) < 0)
@@ -186,10 +193,10 @@ static int rehash(git_packbuilder *pb)
186
193
  git_pobject *po;
187
194
  size_t i;
188
195
 
189
- git_oidmap_clear(pb->object_ix);
196
+ git_packbuilder_pobjectmap_clear(&pb->object_ix);
190
197
 
191
198
  for (i = 0, po = pb->object_list; i < pb->nr_objects; i++, po++) {
192
- if (git_oidmap_set(pb->object_ix, &po->id, po) < 0)
199
+ if (git_packbuilder_pobjectmap_put(&pb->object_ix, &po->id, po) < 0)
193
200
  return -1;
194
201
  }
195
202
 
@@ -208,7 +215,7 @@ int git_packbuilder_insert(git_packbuilder *pb, const git_oid *oid,
208
215
 
209
216
  /* If the object already exists in the hash table, then we don't
210
217
  * have any work to do */
211
- if (git_oidmap_exists(pb->object_ix, oid))
218
+ if (git_packbuilder_pobjectmap_contains(&pb->object_ix, oid))
212
219
  return 0;
213
220
 
214
221
  if (pb->nr_objects >= pb->nr_alloc) {
@@ -240,7 +247,7 @@ int git_packbuilder_insert(git_packbuilder *pb, const git_oid *oid,
240
247
  git_oid_cpy(&po->id, oid);
241
248
  po->hash = name_hash(name);
242
249
 
243
- if (git_oidmap_set(pb->object_ix, &po->id, po) < 0) {
250
+ if (git_packbuilder_pobjectmap_put(&pb->object_ix, &po->id, po) < 0) {
244
251
  git_error_set_oom();
245
252
  return -1;
246
253
  }
@@ -248,10 +255,10 @@ int git_packbuilder_insert(git_packbuilder *pb, const git_oid *oid,
248
255
  pb->done = false;
249
256
 
250
257
  if (pb->progress_cb) {
251
- double current_time = git__timer();
252
- double elapsed = current_time - pb->last_progress_report_time;
258
+ uint64_t current_time = git_time_monotonic();
259
+ uint64_t elapsed = current_time - pb->last_progress_report_time;
253
260
 
254
- if (elapsed < 0 || elapsed >= MIN_PROGRESS_UPDATE_INTERVAL) {
261
+ if (elapsed >= MIN_PROGRESS_UPDATE_INTERVAL) {
255
262
  pb->last_progress_report_time = current_time;
256
263
 
257
264
  ret = pb->progress_cb(
@@ -314,9 +321,11 @@ static int write_object(
314
321
  git_object_t type;
315
322
  unsigned char hdr[10], *zbuf = NULL;
316
323
  void *data = NULL;
317
- size_t hdr_len, zbuf_len = COMPRESS_BUFLEN, data_len;
324
+ size_t hdr_len, zbuf_len = COMPRESS_BUFLEN, data_len, oid_size;
318
325
  int error;
319
326
 
327
+ oid_size = git_oid_size(pb->oid_type);
328
+
320
329
  /*
321
330
  * If we have a delta base, let's use the delta to save space.
322
331
  * Otherwise load the whole object. 'data' ends up pointing to
@@ -346,8 +355,8 @@ static int write_object(
346
355
  goto done;
347
356
 
348
357
  if (type == GIT_OBJECT_REF_DELTA) {
349
- if ((error = write_cb(po->delta->id.id, GIT_OID_RAWSZ, cb_data)) < 0 ||
350
- (error = git_hash_update(&pb->ctx, po->delta->id.id, GIT_OID_RAWSZ)) < 0)
358
+ if ((error = write_cb(po->delta->id.id, oid_size, cb_data)) < 0 ||
359
+ (error = git_hash_update(&pb->ctx, po->delta->id.id, oid_size)) < 0)
351
360
  goto done;
352
361
  }
353
362
 
@@ -507,7 +516,7 @@ static int cb_tag_foreach(const char *name, git_oid *oid, void *data)
507
516
 
508
517
  GIT_UNUSED(name);
509
518
 
510
- if ((po = git_oidmap_get(pb->object_ix, oid)) == NULL)
519
+ if (git_packbuilder_pobjectmap_get(&po, &pb->object_ix, oid) != 0)
511
520
  return 0;
512
521
 
513
522
  po->tagged = 1;
@@ -664,10 +673,10 @@ static int write_pack(git_packbuilder *pb,
664
673
  pb->nr_remaining -= pb->nr_written;
665
674
  } while (pb->nr_remaining && i < pb->nr_objects);
666
675
 
667
- if ((error = git_hash_final(&entry_oid, &pb->ctx)) < 0)
676
+ if ((error = git_hash_final(entry_oid.id, &pb->ctx)) < 0)
668
677
  goto done;
669
678
 
670
- error = write_cb(entry_oid.id, GIT_OID_RAWSZ, cb_data);
679
+ error = write_cb(entry_oid.id, git_oid_size(pb->oid_type), cb_data);
671
680
 
672
681
  done:
673
682
  /* if callback cancelled writing, we must still free delta_data */
@@ -685,8 +694,8 @@ done:
685
694
 
686
695
  static int write_pack_buf(void *buf, size_t size, void *data)
687
696
  {
688
- git_buf *b = (git_buf *)data;
689
- return git_buf_put(b, buf, size);
697
+ git_str *b = (git_str *)data;
698
+ return git_str_put(b, buf, size);
690
699
  }
691
700
 
692
701
  static int type_size_sort(const void *_a, const void *_b)
@@ -924,19 +933,24 @@ static int report_delta_progress(
924
933
  {
925
934
  int ret;
926
935
 
936
+ if (pb->failure)
937
+ return pb->failure;
938
+
927
939
  if (pb->progress_cb) {
928
- double current_time = git__timer();
929
- double elapsed = current_time - pb->last_progress_report_time;
940
+ uint64_t current_time = git_time_monotonic();
941
+ uint64_t elapsed = current_time - pb->last_progress_report_time;
930
942
 
931
- if (force || elapsed < 0 || elapsed >= MIN_PROGRESS_UPDATE_INTERVAL) {
943
+ if (force || elapsed >= MIN_PROGRESS_UPDATE_INTERVAL) {
932
944
  pb->last_progress_report_time = current_time;
933
945
 
934
946
  ret = pb->progress_cb(
935
947
  GIT_PACKBUILDER_DELTAFICATION,
936
948
  count, pb->nr_objects, pb->progress_cb_payload);
937
949
 
938
- if (ret)
950
+ if (ret) {
951
+ pb->failure = ret;
939
952
  return git_error_set_after_callback(ret);
953
+ }
940
954
  }
941
955
  }
942
956
 
@@ -947,7 +961,7 @@ static int find_deltas(git_packbuilder *pb, git_pobject **list,
947
961
  size_t *list_size, size_t window, size_t depth)
948
962
  {
949
963
  git_pobject *po;
950
- git_buf zbuf = GIT_BUF_INIT;
964
+ git_str zbuf = GIT_STR_INIT;
951
965
  struct unpacked *array;
952
966
  size_t idx = 0, count = 0;
953
967
  size_t mem_usage = 0;
@@ -968,7 +982,10 @@ static int find_deltas(git_packbuilder *pb, git_pobject **list,
968
982
  }
969
983
 
970
984
  pb->nr_deltified += 1;
971
- report_delta_progress(pb, pb->nr_deltified, false);
985
+ if ((error = report_delta_progress(pb, pb->nr_deltified, false)) < 0) {
986
+ GIT_ASSERT(git_packbuilder__progress_unlock(pb) == 0);
987
+ goto on_error;
988
+ }
972
989
 
973
990
  po = *list++;
974
991
  (*list_size)--;
@@ -1045,7 +1062,7 @@ static int find_deltas(git_packbuilder *pb, git_pobject **list,
1045
1062
 
1046
1063
  memcpy(po->delta_data, zbuf.ptr, zbuf.size);
1047
1064
  po->z_delta_size = zbuf.size;
1048
- git_buf_clear(&zbuf);
1065
+ git_str_clear(&zbuf);
1049
1066
 
1050
1067
  GIT_ASSERT(git_packbuilder__cache_lock(pb) == 0);
1051
1068
  pb->delta_cache_size -= po->delta_size;
@@ -1093,7 +1110,7 @@ on_error:
1093
1110
  git__free(array[i].data);
1094
1111
  }
1095
1112
  git__free(array);
1096
- git_buf_dispose(&zbuf);
1113
+ git_str_dispose(&zbuf);
1097
1114
 
1098
1115
  return error;
1099
1116
  }
@@ -1116,6 +1133,10 @@ struct thread_params {
1116
1133
  size_t depth;
1117
1134
  size_t working;
1118
1135
  size_t data_ready;
1136
+
1137
+ /* A pb->progress_cb can stop the packing process by returning an error.
1138
+ When that happens, all threads observe the error and stop voluntarily. */
1139
+ bool stopped;
1119
1140
  };
1120
1141
 
1121
1142
  static void *threaded_find_deltas(void *arg)
@@ -1125,7 +1146,12 @@ static void *threaded_find_deltas(void *arg)
1125
1146
  while (me->remaining) {
1126
1147
  if (find_deltas(me->pb, me->list, &me->remaining,
1127
1148
  me->window, me->depth) < 0) {
1128
- ; /* TODO */
1149
+ me->stopped = true;
1150
+ GIT_ASSERT_WITH_RETVAL(git_packbuilder__progress_lock(me->pb) == 0, NULL);
1151
+ me->working = false;
1152
+ git_cond_signal(&me->pb->progress_cond);
1153
+ GIT_ASSERT_WITH_RETVAL(git_packbuilder__progress_unlock(me->pb) == 0, NULL);
1154
+ return NULL;
1129
1155
  }
1130
1156
 
1131
1157
  GIT_ASSERT_WITH_RETVAL(git_packbuilder__progress_lock(me->pb) == 0, NULL);
@@ -1167,8 +1193,7 @@ static int ll_find_deltas(git_packbuilder *pb, git_pobject **list,
1167
1193
  pb->nr_threads = git__online_cpus();
1168
1194
 
1169
1195
  if (pb->nr_threads <= 1) {
1170
- find_deltas(pb, list, &list_size, window, depth);
1171
- return 0;
1196
+ return find_deltas(pb, list, &list_size, window, depth);
1172
1197
  }
1173
1198
 
1174
1199
  p = git__mallocarray(pb->nr_threads, sizeof(*p));
@@ -1187,6 +1212,7 @@ static int ll_find_deltas(git_packbuilder *pb, git_pobject **list,
1187
1212
  p[i].depth = depth;
1188
1213
  p[i].working = 1;
1189
1214
  p[i].data_ready = 0;
1215
+ p[i].stopped = 0;
1190
1216
 
1191
1217
  /* try to split chunks on "path" boundaries */
1192
1218
  while (sub_size && sub_size < list_size &&
@@ -1254,7 +1280,7 @@ static int ll_find_deltas(git_packbuilder *pb, git_pobject **list,
1254
1280
  (!victim || victim->remaining < p[i].remaining))
1255
1281
  victim = &p[i];
1256
1282
 
1257
- if (victim) {
1283
+ if (victim && !target->stopped) {
1258
1284
  sub_size = victim->remaining / 2;
1259
1285
  list = victim->list + victim->list_size - sub_size;
1260
1286
  while (sub_size && list[0]->hash &&
@@ -1278,7 +1304,7 @@ static int ll_find_deltas(git_packbuilder *pb, git_pobject **list,
1278
1304
  }
1279
1305
  target->list_size = sub_size;
1280
1306
  target->remaining = sub_size;
1281
- target->working = 1;
1307
+ target->working = 1; /* even when target->stopped, so that we don't process this thread again */
1282
1308
  GIT_ASSERT(git_packbuilder__progress_unlock(pb) == 0);
1283
1309
 
1284
1310
  if (git_mutex_lock(&target->mutex)) {
@@ -1291,7 +1317,7 @@ static int ll_find_deltas(git_packbuilder *pb, git_pobject **list,
1291
1317
  git_cond_signal(&target->cond);
1292
1318
  git_mutex_unlock(&target->mutex);
1293
1319
 
1294
- if (!sub_size) {
1320
+ if (target->stopped || !sub_size) {
1295
1321
  git_thread_join(&target->thread, NULL);
1296
1322
  git_cond_free(&target->cond);
1297
1323
  git_mutex_free(&target->mutex);
@@ -1300,17 +1326,18 @@ static int ll_find_deltas(git_packbuilder *pb, git_pobject **list,
1300
1326
  }
1301
1327
 
1302
1328
  git__free(p);
1303
- return 0;
1329
+ return pb->failure;
1304
1330
  }
1305
1331
 
1306
1332
  #else
1307
1333
  #define ll_find_deltas(pb, l, ls, w, d) find_deltas(pb, l, &ls, w, d)
1308
1334
  #endif
1309
1335
 
1310
- static int prepare_pack(git_packbuilder *pb)
1336
+ int git_packbuilder__prepare(git_packbuilder *pb)
1311
1337
  {
1312
1338
  git_pobject **delta_list;
1313
1339
  size_t i, n = 0;
1340
+ int error;
1314
1341
 
1315
1342
  if (pb->nr_objects == 0 || pb->done)
1316
1343
  return 0; /* nothing to do */
@@ -1319,8 +1346,10 @@ static int prepare_pack(git_packbuilder *pb)
1319
1346
  * Although we do not report progress during deltafication, we
1320
1347
  * at least report that we are in the deltafication stage
1321
1348
  */
1322
- if (pb->progress_cb)
1323
- pb->progress_cb(GIT_PACKBUILDER_DELTAFICATION, 0, pb->nr_objects, pb->progress_cb_payload);
1349
+ if (pb->progress_cb) {
1350
+ if ((error = pb->progress_cb(GIT_PACKBUILDER_DELTAFICATION, 0, pb->nr_objects, pb->progress_cb_payload)) < 0)
1351
+ return git_error_set_after_callback(error);
1352
+ }
1324
1353
 
1325
1354
  delta_list = git__mallocarray(pb->nr_objects, sizeof(*delta_list));
1326
1355
  GIT_ERROR_CHECK_ALLOC(delta_list);
@@ -1337,41 +1366,43 @@ static int prepare_pack(git_packbuilder *pb)
1337
1366
 
1338
1367
  if (n > 1) {
1339
1368
  git__tsort((void **)delta_list, n, type_size_sort);
1340
- if (ll_find_deltas(pb, delta_list, n,
1369
+ if ((error = ll_find_deltas(pb, delta_list, n,
1341
1370
  GIT_PACK_WINDOW + 1,
1342
- GIT_PACK_DEPTH) < 0) {
1371
+ GIT_PACK_DEPTH)) < 0) {
1343
1372
  git__free(delta_list);
1344
- return -1;
1373
+ return error;
1345
1374
  }
1346
1375
  }
1347
1376
 
1348
- report_delta_progress(pb, pb->nr_objects, true);
1377
+ error = report_delta_progress(pb, pb->nr_objects, true);
1349
1378
 
1350
1379
  pb->done = true;
1351
1380
  git__free(delta_list);
1352
- return 0;
1381
+ return error;
1353
1382
  }
1354
1383
 
1355
- #define PREPARE_PACK if (prepare_pack(pb) < 0) { return -1; }
1384
+ #define PREPARE_PACK error = git_packbuilder__prepare(pb); if (error < 0) { return error; }
1356
1385
 
1357
1386
  int git_packbuilder_foreach(git_packbuilder *pb, int (*cb)(void *buf, size_t size, void *payload), void *payload)
1358
1387
  {
1388
+ int error;
1359
1389
  PREPARE_PACK;
1360
1390
  return write_pack(pb, cb, payload);
1361
1391
  }
1362
1392
 
1363
- int git_packbuilder_write_buf(git_buf *buf, git_packbuilder *pb)
1393
+ int git_packbuilder__write_buf(git_str *buf, git_packbuilder *pb)
1364
1394
  {
1365
1395
  int error;
1366
-
1367
- if ((error = git_buf_sanitize(buf)) < 0)
1368
- return error;
1369
-
1370
1396
  PREPARE_PACK;
1371
1397
 
1372
1398
  return write_pack(pb, &write_pack_buf, buf);
1373
1399
  }
1374
1400
 
1401
+ int git_packbuilder_write_buf(git_buf *buf, git_packbuilder *pb)
1402
+ {
1403
+ GIT_BUF_WRAP_PRIVATE(buf, git_packbuilder__write_buf, pb);
1404
+ }
1405
+
1375
1406
  static int write_cb(void *buf, size_t len, void *payload)
1376
1407
  {
1377
1408
  struct pack_write_context *ctx = payload;
@@ -1386,7 +1417,7 @@ int git_packbuilder_write(
1386
1417
  void *progress_cb_payload)
1387
1418
  {
1388
1419
  int error = -1;
1389
- git_buf object_path = GIT_BUF_INIT;
1420
+ git_str object_path = GIT_STR_INIT;
1390
1421
  git_indexer_options opts = GIT_INDEXER_OPTIONS_INIT;
1391
1422
  git_indexer *indexer = NULL;
1392
1423
  git_indexer_progress stats;
@@ -1396,17 +1427,29 @@ int git_packbuilder_write(
1396
1427
  PREPARE_PACK;
1397
1428
 
1398
1429
  if (path == NULL) {
1399
- if ((error = git_repository_item_path(&object_path, pb->repo, GIT_REPOSITORY_ITEM_OBJECTS)) < 0)
1430
+ if ((error = git_repository__item_path(&object_path, pb->repo, GIT_REPOSITORY_ITEM_OBJECTS)) < 0)
1400
1431
  goto cleanup;
1401
- if ((error = git_buf_joinpath(&object_path, git_buf_cstr(&object_path), "pack")) < 0)
1432
+ if ((error = git_str_joinpath(&object_path, git_str_cstr(&object_path), "pack")) < 0)
1402
1433
  goto cleanup;
1403
- path = git_buf_cstr(&object_path);
1434
+ path = git_str_cstr(&object_path);
1404
1435
  }
1405
1436
 
1406
1437
  opts.progress_cb = progress_cb;
1407
1438
  opts.progress_cb_payload = progress_cb_payload;
1408
1439
 
1409
- if ((error = git_indexer_new(&indexer, path, mode, pb->odb, &opts)) < 0)
1440
+ /* TODO: SHA256 */
1441
+
1442
+ #ifdef GIT_EXPERIMENTAL_SHA256
1443
+ opts.mode = mode;
1444
+ opts.odb = pb->odb;
1445
+ opts.oid_type = GIT_OID_SHA1;
1446
+
1447
+ error = git_indexer_new(&indexer, path, &opts);
1448
+ #else
1449
+ error = git_indexer_new(&indexer, path, mode, pb->odb, &opts);
1450
+ #endif
1451
+
1452
+ if (error < 0)
1410
1453
  goto cleanup;
1411
1454
 
1412
1455
  if (!git_repository__configmap_lookup(&t, pb->repo, GIT_CONFIGMAP_FSYNCOBJECTFILES) && t)
@@ -1421,20 +1464,32 @@ int git_packbuilder_write(
1421
1464
  if ((error = git_indexer_commit(indexer, &stats)) < 0)
1422
1465
  goto cleanup;
1423
1466
 
1467
+ #ifndef GIT_DEPRECATE_HARD
1424
1468
  git_oid_cpy(&pb->pack_oid, git_indexer_hash(indexer));
1469
+ #endif
1470
+
1471
+ pb->pack_name = git__strdup(git_indexer_name(indexer));
1472
+ GIT_ERROR_CHECK_ALLOC(pb->pack_name);
1425
1473
 
1426
1474
  cleanup:
1427
1475
  git_indexer_free(indexer);
1428
- git_buf_dispose(&object_path);
1476
+ git_str_dispose(&object_path);
1429
1477
  return error;
1430
1478
  }
1431
1479
 
1432
1480
  #undef PREPARE_PACK
1433
1481
 
1482
+ #ifndef GIT_DEPRECATE_HARD
1434
1483
  const git_oid *git_packbuilder_hash(git_packbuilder *pb)
1435
1484
  {
1436
1485
  return &pb->pack_oid;
1437
1486
  }
1487
+ #endif
1488
+
1489
+ const char *git_packbuilder_name(git_packbuilder *pb)
1490
+ {
1491
+ return pb->pack_name;
1492
+ }
1438
1493
 
1439
1494
 
1440
1495
  static int cb_tree_walk(
@@ -1447,10 +1502,10 @@ static int cb_tree_walk(
1447
1502
  if (git_tree_entry_type(entry) == GIT_OBJECT_COMMIT)
1448
1503
  return 0;
1449
1504
 
1450
- if (!(error = git_buf_sets(&ctx->buf, root)) &&
1451
- !(error = git_buf_puts(&ctx->buf, git_tree_entry_name(entry))))
1505
+ if (!(error = git_str_sets(&ctx->buf, root)) &&
1506
+ !(error = git_str_puts(&ctx->buf, git_tree_entry_name(entry))))
1452
1507
  error = git_packbuilder_insert(
1453
- ctx->pb, git_tree_entry_id(entry), git_buf_cstr(&ctx->buf));
1508
+ ctx->pb, git_tree_entry_id(entry), git_str_cstr(&ctx->buf));
1454
1509
 
1455
1510
  return error;
1456
1511
  }
@@ -1474,14 +1529,14 @@ int git_packbuilder_insert_tree(git_packbuilder *pb, const git_oid *oid)
1474
1529
  {
1475
1530
  int error;
1476
1531
  git_tree *tree = NULL;
1477
- struct tree_walk_context context = { pb, GIT_BUF_INIT };
1532
+ struct tree_walk_context context = { pb, GIT_STR_INIT };
1478
1533
 
1479
1534
  if (!(error = git_tree_lookup(&tree, pb->repo, oid)) &&
1480
1535
  !(error = git_packbuilder_insert(pb, oid, NULL)))
1481
1536
  error = git_tree_walk(tree, GIT_TREEWALK_PRE, cb_tree_walk, &context);
1482
1537
 
1483
1538
  git_tree_free(tree);
1484
- git_buf_dispose(&context.buf);
1539
+ git_str_dispose(&context.buf);
1485
1540
  return error;
1486
1541
  }
1487
1542
 
@@ -1553,12 +1608,16 @@ static int retrieve_object(struct walk_object **out, git_packbuilder *pb, const
1553
1608
  struct walk_object *obj;
1554
1609
  int error;
1555
1610
 
1556
- if ((obj = git_oidmap_get(pb->walk_objects, id)) == NULL) {
1611
+ error = git_packbuilder_walk_objectmap_get(&obj, &pb->walk_objects, id);
1612
+
1613
+ if (error == GIT_ENOTFOUND) {
1557
1614
  if ((error = lookup_walk_object(&obj, pb, id)) < 0)
1558
1615
  return error;
1559
1616
 
1560
- if ((error = git_oidmap_set(pb->walk_objects, &obj->id, obj)) < 0)
1617
+ if ((error = git_packbuilder_walk_objectmap_put(&pb->walk_objects, &obj->id, obj)) < 0)
1561
1618
  return error;
1619
+ } else if (error != 0) {
1620
+ return error;
1562
1621
  }
1563
1622
 
1564
1623
  *out = obj;
@@ -1790,17 +1849,18 @@ void git_packbuilder_free(git_packbuilder *pb)
1790
1849
  if (pb->odb)
1791
1850
  git_odb_free(pb->odb);
1792
1851
 
1793
- if (pb->object_ix)
1794
- git_oidmap_free(pb->object_ix);
1852
+ git_packbuilder_pobjectmap_dispose(&pb->object_ix);
1795
1853
 
1796
1854
  if (pb->object_list)
1797
1855
  git__free(pb->object_list);
1798
1856
 
1799
- git_oidmap_free(pb->walk_objects);
1857
+ git_packbuilder_walk_objectmap_dispose(&pb->walk_objects);
1800
1858
  git_pool_clear(&pb->object_pool);
1801
1859
 
1802
1860
  git_hash_ctx_cleanup(&pb->ctx);
1803
1861
  git_zstream_free(&pb->zstream);
1804
1862
 
1863
+ git__free(pb->pack_name);
1864
+
1805
1865
  git__free(pb);
1806
1866
  }