rugged 1.6.3 → 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 (443) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rugged/rugged_allocator.c +0 -54
  3. data/lib/rugged/version.rb +1 -1
  4. data/vendor/libgit2/AUTHORS +1 -0
  5. data/vendor/libgit2/CMakeLists.txt +25 -17
  6. data/vendor/libgit2/COPYING +195 -1
  7. data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
  8. data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
  9. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  10. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +4 -4
  11. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
  12. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +34 -6
  13. data/vendor/libgit2/cmake/SelectHashes.cmake +32 -11
  14. data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
  15. data/vendor/libgit2/cmake/SelectSSH.cmake +22 -17
  16. data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
  17. data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
  18. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  19. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  20. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  21. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  22. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  23. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  24. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
  25. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  26. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  27. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  28. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
  29. data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
  30. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  31. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  32. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  33. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  34. data/vendor/libgit2/deps/pcre/CMakeLists.txt +1 -0
  35. data/vendor/libgit2/deps/pcre/LICENCE +5 -5
  36. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  37. data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
  38. data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
  39. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
  40. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/git-xdiff.h +4 -1
  41. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.c +19 -18
  42. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.h +2 -4
  43. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.c +3 -3
  44. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xhistogram.c +7 -18
  45. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmacros.h +18 -1
  46. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmerge.c +22 -20
  47. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xpatience.c +21 -30
  48. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.c +13 -30
  49. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.c +18 -1
  50. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.h +2 -1
  51. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  52. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  53. data/vendor/libgit2/deps/zlib/adler32.c +5 -27
  54. data/vendor/libgit2/deps/zlib/crc32.c +94 -167
  55. data/vendor/libgit2/deps/zlib/deflate.c +358 -435
  56. data/vendor/libgit2/deps/zlib/deflate.h +41 -10
  57. data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
  58. data/vendor/libgit2/deps/zlib/infback.c +17 -30
  59. data/vendor/libgit2/deps/zlib/inffast.c +1 -4
  60. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  61. data/vendor/libgit2/deps/zlib/inflate.c +36 -102
  62. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  63. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  64. data/vendor/libgit2/deps/zlib/trees.c +287 -352
  65. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  66. data/vendor/libgit2/deps/zlib/zlib.h +202 -202
  67. data/vendor/libgit2/deps/zlib/zutil.c +18 -44
  68. data/vendor/libgit2/deps/zlib/zutil.h +13 -33
  69. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  70. data/vendor/libgit2/include/git2/apply.h +27 -6
  71. data/vendor/libgit2/include/git2/attr.h +17 -4
  72. data/vendor/libgit2/include/git2/blame.h +133 -28
  73. data/vendor/libgit2/include/git2/blob.h +71 -28
  74. data/vendor/libgit2/include/git2/branch.h +22 -15
  75. data/vendor/libgit2/include/git2/buffer.h +6 -4
  76. data/vendor/libgit2/include/git2/cert.h +2 -1
  77. data/vendor/libgit2/include/git2/checkout.h +83 -32
  78. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  79. data/vendor/libgit2/include/git2/clone.h +25 -9
  80. data/vendor/libgit2/include/git2/commit.h +132 -3
  81. data/vendor/libgit2/include/git2/common.h +138 -56
  82. data/vendor/libgit2/include/git2/config.h +93 -23
  83. data/vendor/libgit2/include/git2/credential.h +30 -2
  84. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  85. data/vendor/libgit2/include/git2/deprecated.h +133 -3
  86. data/vendor/libgit2/include/git2/describe.h +13 -1
  87. data/vendor/libgit2/include/git2/diff.h +77 -9
  88. data/vendor/libgit2/include/git2/email.h +9 -29
  89. data/vendor/libgit2/include/git2/errors.h +49 -74
  90. data/vendor/libgit2/include/git2/filter.h +14 -7
  91. data/vendor/libgit2/include/git2/global.h +8 -1
  92. data/vendor/libgit2/include/git2/graph.h +3 -2
  93. data/vendor/libgit2/include/git2/ignore.h +10 -0
  94. data/vendor/libgit2/include/git2/index.h +100 -6
  95. data/vendor/libgit2/include/git2/indexer.h +21 -4
  96. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  97. data/vendor/libgit2/include/git2/merge.h +46 -1
  98. data/vendor/libgit2/include/git2/message.h +2 -2
  99. data/vendor/libgit2/include/git2/net.h +3 -1
  100. data/vendor/libgit2/include/git2/notes.h +9 -6
  101. data/vendor/libgit2/include/git2/object.h +9 -8
  102. data/vendor/libgit2/include/git2/odb.h +91 -49
  103. data/vendor/libgit2/include/git2/odb_backend.h +80 -52
  104. data/vendor/libgit2/include/git2/oid.h +24 -25
  105. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  106. data/vendor/libgit2/include/git2/pack.h +13 -1
  107. data/vendor/libgit2/include/git2/patch.h +2 -3
  108. data/vendor/libgit2/include/git2/pathspec.h +9 -0
  109. data/vendor/libgit2/include/git2/proxy.h +10 -0
  110. data/vendor/libgit2/include/git2/rebase.h +9 -6
  111. data/vendor/libgit2/include/git2/refdb.h +2 -2
  112. data/vendor/libgit2/include/git2/reflog.h +3 -2
  113. data/vendor/libgit2/include/git2/refs.h +9 -6
  114. data/vendor/libgit2/include/git2/refspec.h +14 -4
  115. data/vendor/libgit2/include/git2/remote.h +112 -18
  116. data/vendor/libgit2/include/git2/repository.h +61 -15
  117. data/vendor/libgit2/include/git2/reset.h +16 -3
  118. data/vendor/libgit2/include/git2/revert.h +9 -4
  119. data/vendor/libgit2/include/git2/revparse.h +3 -3
  120. data/vendor/libgit2/include/git2/revwalk.h +3 -2
  121. data/vendor/libgit2/include/git2/signature.h +46 -1
  122. data/vendor/libgit2/include/git2/stash.h +17 -3
  123. data/vendor/libgit2/include/git2/status.h +10 -6
  124. data/vendor/libgit2/include/git2/stdint.h +87 -85
  125. data/vendor/libgit2/include/git2/strarray.h +2 -3
  126. data/vendor/libgit2/include/git2/submodule.h +20 -9
  127. data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
  128. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  129. data/vendor/libgit2/include/git2/sys/commit_graph.h +109 -58
  130. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  131. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  132. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  133. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  134. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  135. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  136. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  137. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  138. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  139. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  140. data/vendor/libgit2/include/git2/sys/midx.h +47 -4
  141. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
  142. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  143. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  144. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  145. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  146. data/vendor/libgit2/include/git2/sys/remote.h +8 -1
  147. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  148. data/vendor/libgit2/include/git2/sys/stream.h +25 -2
  149. data/vendor/libgit2/include/git2/sys/transport.h +44 -5
  150. data/vendor/libgit2/include/git2/tag.h +3 -1
  151. data/vendor/libgit2/include/git2/trace.h +9 -3
  152. data/vendor/libgit2/include/git2/transaction.h +3 -2
  153. data/vendor/libgit2/include/git2/transport.h +11 -3
  154. data/vendor/libgit2/include/git2/tree.h +16 -5
  155. data/vendor/libgit2/include/git2/types.h +19 -3
  156. data/vendor/libgit2/include/git2/version.h +44 -8
  157. data/vendor/libgit2/include/git2/worktree.h +19 -7
  158. data/vendor/libgit2/src/CMakeLists.txt +40 -15
  159. data/vendor/libgit2/src/cli/CMakeLists.txt +2 -2
  160. data/vendor/libgit2/src/cli/cmd.c +1 -1
  161. data/vendor/libgit2/src/cli/cmd.h +4 -0
  162. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  163. data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
  164. data/vendor/libgit2/src/cli/cmd_clone.c +27 -13
  165. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  166. data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
  167. data/vendor/libgit2/src/cli/cmd_help.c +6 -7
  168. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  169. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  170. data/vendor/libgit2/src/cli/common.c +168 -0
  171. data/vendor/libgit2/src/cli/common.h +63 -0
  172. data/vendor/libgit2/src/cli/error.h +1 -1
  173. data/vendor/libgit2/src/cli/main.c +52 -24
  174. data/vendor/libgit2/src/cli/opt.c +29 -3
  175. data/vendor/libgit2/src/cli/opt.h +21 -3
  176. data/vendor/libgit2/src/cli/opt_usage.c +102 -33
  177. data/vendor/libgit2/src/cli/opt_usage.h +6 -1
  178. data/vendor/libgit2/src/cli/progress.c +60 -10
  179. data/vendor/libgit2/src/cli/progress.h +16 -4
  180. data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
  181. data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
  182. data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
  183. data/vendor/libgit2/src/libgit2/CMakeLists.txt +27 -27
  184. data/vendor/libgit2/src/libgit2/annotated_commit.c +2 -2
  185. data/vendor/libgit2/src/libgit2/annotated_commit.h +1 -1
  186. data/vendor/libgit2/src/libgit2/apply.c +14 -16
  187. data/vendor/libgit2/src/libgit2/attr.c +30 -13
  188. data/vendor/libgit2/src/libgit2/attr_file.c +7 -2
  189. data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
  190. data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
  191. data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
  192. data/vendor/libgit2/src/libgit2/blame.c +152 -59
  193. data/vendor/libgit2/src/libgit2/blame.h +1 -0
  194. data/vendor/libgit2/src/libgit2/blame_git.c +0 -1
  195. data/vendor/libgit2/src/libgit2/branch.c +2 -2
  196. data/vendor/libgit2/src/libgit2/cache.c +22 -17
  197. data/vendor/libgit2/src/libgit2/cache.h +7 -9
  198. data/vendor/libgit2/src/libgit2/checkout.c +34 -24
  199. data/vendor/libgit2/src/libgit2/checkout.h +0 -2
  200. data/vendor/libgit2/src/libgit2/cherrypick.c +4 -5
  201. data/vendor/libgit2/src/libgit2/clone.c +186 -164
  202. data/vendor/libgit2/src/libgit2/clone.h +4 -1
  203. data/vendor/libgit2/src/libgit2/commit.c +123 -9
  204. data/vendor/libgit2/src/libgit2/commit_graph.c +166 -88
  205. data/vendor/libgit2/src/libgit2/commit_graph.h +21 -6
  206. data/vendor/libgit2/src/libgit2/commit_list.c +12 -5
  207. data/vendor/libgit2/src/libgit2/commit_list.h +1 -0
  208. data/vendor/libgit2/src/libgit2/config.c +394 -300
  209. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  210. data/vendor/libgit2/src/libgit2/config.h +9 -4
  211. data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
  212. data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
  213. data/vendor/libgit2/src/libgit2/config_file.c +113 -96
  214. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  215. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  216. data/vendor/libgit2/src/libgit2/config_mem.c +194 -40
  217. data/vendor/libgit2/src/libgit2/config_parse.c +10 -9
  218. data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
  219. data/vendor/libgit2/src/libgit2/describe.c +34 -31
  220. data/vendor/libgit2/src/libgit2/diff.c +17 -8
  221. data/vendor/libgit2/src/libgit2/diff.h +6 -6
  222. data/vendor/libgit2/src/libgit2/diff_driver.c +12 -19
  223. data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
  224. data/vendor/libgit2/src/libgit2/diff_file.c +7 -7
  225. data/vendor/libgit2/src/libgit2/diff_generate.c +39 -18
  226. data/vendor/libgit2/src/libgit2/diff_parse.c +22 -6
  227. data/vendor/libgit2/src/libgit2/diff_print.c +88 -13
  228. data/vendor/libgit2/src/libgit2/diff_tform.c +40 -12
  229. data/vendor/libgit2/src/libgit2/diff_xdiff.h +1 -1
  230. data/vendor/libgit2/src/libgit2/email.c +5 -3
  231. data/vendor/libgit2/src/libgit2/fetch.c +39 -9
  232. data/vendor/libgit2/src/libgit2/fetch.h +0 -2
  233. data/vendor/libgit2/src/libgit2/fetchhead.c +11 -9
  234. data/vendor/libgit2/src/libgit2/filter.c +5 -5
  235. data/vendor/libgit2/src/libgit2/git2.rc +3 -3
  236. data/vendor/libgit2/src/libgit2/grafts.c +270 -0
  237. data/vendor/libgit2/src/libgit2/grafts.h +35 -0
  238. data/vendor/libgit2/src/libgit2/graph.c +1 -1
  239. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  240. data/vendor/libgit2/src/libgit2/ident.c +3 -3
  241. data/vendor/libgit2/src/libgit2/ignore.c +9 -5
  242. data/vendor/libgit2/src/libgit2/index.c +392 -208
  243. data/vendor/libgit2/src/libgit2/index.h +16 -3
  244. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  245. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  246. data/vendor/libgit2/src/libgit2/indexer.c +44 -41
  247. data/vendor/libgit2/src/libgit2/iterator.c +34 -13
  248. data/vendor/libgit2/src/libgit2/iterator.h +3 -0
  249. data/vendor/libgit2/src/libgit2/libgit2.c +155 -331
  250. data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
  251. data/vendor/libgit2/src/libgit2/merge.c +56 -46
  252. data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
  253. data/vendor/libgit2/src/libgit2/merge_file.c +0 -2
  254. data/vendor/libgit2/src/libgit2/midx.c +86 -44
  255. data/vendor/libgit2/src/libgit2/midx.h +13 -3
  256. data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
  257. data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
  258. data/vendor/libgit2/src/libgit2/notes.c +9 -8
  259. data/vendor/libgit2/src/libgit2/object.c +42 -16
  260. data/vendor/libgit2/src/libgit2/object.h +6 -0
  261. data/vendor/libgit2/src/libgit2/odb.c +16 -9
  262. data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
  263. data/vendor/libgit2/src/libgit2/odb_pack.c +28 -7
  264. data/vendor/libgit2/src/libgit2/oid.c +35 -2
  265. data/vendor/libgit2/src/libgit2/oid.h +11 -0
  266. data/vendor/libgit2/src/libgit2/oidarray.c +49 -3
  267. data/vendor/libgit2/src/libgit2/oidarray.h +5 -1
  268. data/vendor/libgit2/src/libgit2/pack-objects.c +77 -43
  269. data/vendor/libgit2/src/libgit2/pack-objects.h +17 -6
  270. data/vendor/libgit2/src/libgit2/pack.c +33 -27
  271. data/vendor/libgit2/src/libgit2/pack.h +15 -10
  272. data/vendor/libgit2/src/libgit2/parse.c +7 -4
  273. data/vendor/libgit2/src/libgit2/parse.h +1 -1
  274. data/vendor/libgit2/src/libgit2/patch.h +7 -1
  275. data/vendor/libgit2/src/libgit2/patch_generate.c +24 -5
  276. data/vendor/libgit2/src/libgit2/patch_parse.c +18 -10
  277. data/vendor/libgit2/src/libgit2/path.c +1 -1
  278. data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
  279. data/vendor/libgit2/src/libgit2/push.c +81 -30
  280. data/vendor/libgit2/src/libgit2/push.h +1 -0
  281. data/vendor/libgit2/src/libgit2/reader.c +1 -1
  282. data/vendor/libgit2/src/libgit2/rebase.c +72 -84
  283. data/vendor/libgit2/src/libgit2/refdb_fs.c +146 -70
  284. data/vendor/libgit2/src/libgit2/reflog.c +1 -2
  285. data/vendor/libgit2/src/libgit2/reflog.h +2 -0
  286. data/vendor/libgit2/src/libgit2/refs.c +34 -8
  287. data/vendor/libgit2/src/libgit2/refs.h +6 -1
  288. data/vendor/libgit2/src/libgit2/refspec.c +28 -1
  289. data/vendor/libgit2/src/libgit2/refspec.h +8 -0
  290. data/vendor/libgit2/src/libgit2/remote.c +136 -67
  291. data/vendor/libgit2/src/libgit2/remote.h +1 -0
  292. data/vendor/libgit2/src/libgit2/repository.c +789 -330
  293. data/vendor/libgit2/src/libgit2/repository.h +22 -3
  294. data/vendor/libgit2/src/libgit2/reset.c +2 -2
  295. data/vendor/libgit2/src/libgit2/revert.c +9 -13
  296. data/vendor/libgit2/src/libgit2/revparse.c +6 -3
  297. data/vendor/libgit2/src/libgit2/revwalk.c +36 -11
  298. data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
  299. data/vendor/libgit2/src/libgit2/settings.c +468 -0
  300. data/vendor/libgit2/src/libgit2/settings.h +6 -2
  301. data/vendor/libgit2/src/libgit2/signature.c +132 -15
  302. data/vendor/libgit2/src/libgit2/signature.h +0 -1
  303. data/vendor/libgit2/src/libgit2/stash.c +9 -8
  304. data/vendor/libgit2/src/libgit2/status.c +1 -1
  305. data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -61
  306. data/vendor/libgit2/src/libgit2/streams/openssl.c +40 -23
  307. data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
  308. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
  309. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
  310. data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
  311. data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
  312. data/vendor/libgit2/src/libgit2/streams/socket.c +237 -51
  313. data/vendor/libgit2/src/libgit2/streams/socket.h +3 -1
  314. data/vendor/libgit2/src/libgit2/streams/stransport.c +79 -19
  315. data/vendor/libgit2/src/libgit2/streams/tls.c +5 -0
  316. data/vendor/libgit2/src/libgit2/submodule.c +106 -63
  317. data/vendor/libgit2/src/libgit2/submodule.h +9 -10
  318. data/vendor/libgit2/src/libgit2/tag.c +1 -1
  319. data/vendor/libgit2/src/libgit2/trailer.c +6 -6
  320. data/vendor/libgit2/src/libgit2/transaction.c +26 -20
  321. data/vendor/libgit2/src/libgit2/transaction.h +4 -1
  322. data/vendor/libgit2/src/libgit2/transport.c +4 -1
  323. data/vendor/libgit2/src/libgit2/transports/auth.h +1 -2
  324. data/vendor/libgit2/src/libgit2/transports/{auth_negotiate.c → auth_gssapi.c} +32 -32
  325. data/vendor/libgit2/src/libgit2/transports/auth_negotiate.h +1 -1
  326. data/vendor/libgit2/src/libgit2/transports/auth_ntlm.h +1 -1
  327. data/vendor/libgit2/src/libgit2/transports/{auth_ntlm.c → auth_ntlmclient.c} +12 -12
  328. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
  329. data/vendor/libgit2/src/libgit2/transports/credential.c +1 -1
  330. data/vendor/libgit2/src/libgit2/transports/git.c +7 -8
  331. data/vendor/libgit2/src/libgit2/transports/http.c +8 -4
  332. data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
  333. data/vendor/libgit2/src/libgit2/transports/httpclient.c +117 -72
  334. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  335. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  336. data/vendor/libgit2/src/libgit2/transports/local.c +21 -11
  337. data/vendor/libgit2/src/libgit2/transports/smart.c +50 -32
  338. data/vendor/libgit2/src/libgit2/transports/smart.h +26 -9
  339. data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +139 -18
  340. data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +209 -57
  341. data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
  342. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  343. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  344. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1126 -0
  345. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  346. data/vendor/libgit2/src/libgit2/transports/winhttp.c +48 -21
  347. data/vendor/libgit2/src/libgit2/tree-cache.c +26 -16
  348. data/vendor/libgit2/src/libgit2/tree-cache.h +5 -3
  349. data/vendor/libgit2/src/libgit2/tree.c +35 -27
  350. data/vendor/libgit2/src/libgit2/tree.h +3 -2
  351. data/vendor/libgit2/src/libgit2/worktree.c +39 -27
  352. data/vendor/libgit2/src/util/CMakeLists.txt +4 -6
  353. data/vendor/libgit2/src/util/alloc.c +69 -7
  354. data/vendor/libgit2/src/util/alloc.h +34 -9
  355. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  356. data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
  357. data/vendor/libgit2/src/util/allocators/failalloc.c +0 -60
  358. data/vendor/libgit2/src/util/allocators/failalloc.h +0 -6
  359. data/vendor/libgit2/src/util/allocators/stdalloc.c +2 -115
  360. data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +0 -68
  361. data/vendor/libgit2/src/util/array.h +24 -18
  362. data/vendor/libgit2/src/util/cc-compat.h +4 -0
  363. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  364. data/vendor/libgit2/src/util/date.c +22 -14
  365. data/vendor/libgit2/src/util/date.h +12 -0
  366. data/vendor/libgit2/src/util/errors.c +401 -0
  367. data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
  368. data/vendor/libgit2/src/util/filebuf.c +6 -1
  369. data/vendor/libgit2/src/util/filebuf.h +19 -6
  370. data/vendor/libgit2/src/util/fs_path.c +16 -5
  371. data/vendor/libgit2/src/util/fs_path.h +23 -0
  372. data/vendor/libgit2/src/util/futils.c +14 -10
  373. data/vendor/libgit2/src/util/futils.h +13 -4
  374. data/vendor/libgit2/src/util/git2_features.h.in +21 -4
  375. data/vendor/libgit2/src/util/git2_util.h +6 -0
  376. data/vendor/libgit2/src/util/hash/openssl.c +152 -0
  377. data/vendor/libgit2/src/util/hash/openssl.h +17 -1
  378. data/vendor/libgit2/src/util/hash/sha.h +4 -1
  379. data/vendor/libgit2/src/util/hashmap.h +424 -0
  380. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  381. data/vendor/libgit2/src/util/integer.h +3 -1
  382. data/vendor/libgit2/src/util/net.c +318 -161
  383. data/vendor/libgit2/src/util/net.h +27 -0
  384. data/vendor/libgit2/src/util/pool.c +1 -1
  385. data/vendor/libgit2/src/util/pool.h +5 -0
  386. data/vendor/libgit2/src/util/posix.c +54 -0
  387. data/vendor/libgit2/src/util/posix.h +22 -0
  388. data/vendor/libgit2/src/util/pqueue.h +1 -1
  389. data/vendor/libgit2/src/util/process.h +222 -0
  390. data/vendor/libgit2/src/util/rand.c +6 -10
  391. data/vendor/libgit2/src/util/regexp.c +1 -1
  392. data/vendor/libgit2/src/util/sortedcache.c +14 -13
  393. data/vendor/libgit2/src/util/sortedcache.h +3 -3
  394. data/vendor/libgit2/src/util/staticstr.h +66 -0
  395. data/vendor/libgit2/src/util/str.c +2 -2
  396. data/vendor/libgit2/src/util/strlist.c +108 -0
  397. data/vendor/libgit2/src/util/strlist.h +36 -0
  398. data/vendor/libgit2/src/util/unix/posix.h +0 -2
  399. data/vendor/libgit2/src/util/unix/process.c +629 -0
  400. data/vendor/libgit2/src/util/unix/realpath.c +23 -5
  401. data/vendor/libgit2/src/util/util.c +17 -12
  402. data/vendor/libgit2/src/util/util.h +28 -54
  403. data/vendor/libgit2/src/util/vector.c +3 -3
  404. data/vendor/libgit2/src/util/vector.h +2 -2
  405. data/vendor/libgit2/src/util/win32/error.c +1 -1
  406. data/vendor/libgit2/src/util/win32/path_w32.c +8 -8
  407. data/vendor/libgit2/src/util/win32/posix_w32.c +30 -7
  408. data/vendor/libgit2/src/util/win32/process.c +506 -0
  409. data/vendor/libgit2/src/util/win32/utf-conv.c +73 -75
  410. data/vendor/libgit2/src/util/win32/utf-conv.h +81 -14
  411. data/vendor/libgit2/src/util/win32/w32_util.c +1 -1
  412. metadata +72 -49
  413. data/vendor/libgit2/cmake/SelectWinHTTP.cmake +0 -17
  414. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  415. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  416. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  417. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  418. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  419. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  420. data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
  421. data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
  422. data/vendor/libgit2/src/libgit2/errors.c +0 -238
  423. data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
  424. data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
  425. data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
  426. data/vendor/libgit2/src/libgit2/netops.c +0 -124
  427. data/vendor/libgit2/src/libgit2/netops.h +0 -68
  428. data/vendor/libgit2/src/libgit2/offmap.c +0 -101
  429. data/vendor/libgit2/src/libgit2/offmap.h +0 -133
  430. data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
  431. data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
  432. data/vendor/libgit2/src/libgit2/threadstate.c +0 -84
  433. data/vendor/libgit2/src/libgit2/threadstate.h +0 -24
  434. data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
  435. data/vendor/libgit2/src/util/khash.h +0 -615
  436. data/vendor/libgit2/src/util/strmap.c +0 -100
  437. data/vendor/libgit2/src/util/strmap.h +0 -131
  438. /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
  439. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiff.h +0 -0
  440. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.h +0 -0
  441. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xinclude.h +0 -0
  442. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.h +0 -0
  443. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xtypes.h +0 -0
@@ -17,9 +17,9 @@
17
17
  #include "remote.h"
18
18
  #include "refspec.h"
19
19
  #include "pack.h"
20
- #include "netops.h"
21
20
  #include "repository.h"
22
21
  #include "refs.h"
22
+ #include "transports/smart.h"
23
23
 
24
24
  static int maybe_want(git_remote *remote, git_remote_head *head, git_refspec *tagspec, git_remote_autotag_option_t tagopt)
25
25
  {
@@ -59,8 +59,12 @@ static int mark_local(git_remote *remote)
59
59
  return -1;
60
60
 
61
61
  git_vector_foreach(&remote->refs, i, head) {
62
- /* If we have the object, mark it so we don't ask for it */
63
- if (git_odb_exists(odb, &head->oid))
62
+ /* If we have the object, mark it so we don't ask for it.
63
+ However if we are unshallowing or changing history
64
+ depth, we need to ask for it even though the head
65
+ exists locally. */
66
+ if (remote->nego.depth == GIT_FETCH_DEPTH_FULL &&
67
+ git_odb_exists(odb, &head->oid))
64
68
  head->local = 1;
65
69
  else
66
70
  remote->need_pack = 1;
@@ -76,7 +80,7 @@ static int maybe_want_oid(git_remote *remote, git_refspec *spec)
76
80
  oid_head = git__calloc(1, sizeof(git_remote_head));
77
81
  GIT_ERROR_CHECK_ALLOC(oid_head);
78
82
 
79
- git_oid__fromstr(&oid_head->oid, spec->src, GIT_OID_SHA1);
83
+ git_oid__fromstr(&oid_head->oid, spec->src, remote->repo->oid_type);
80
84
 
81
85
  if (spec->dst) {
82
86
  oid_head->name = git__strdup(spec->dst);
@@ -137,7 +141,7 @@ static int filter_wants(git_remote *remote, const git_fetch_options *opts)
137
141
 
138
142
  /* Handle explicitly specified OID specs */
139
143
  git_vector_foreach(&remote->active_refspecs, i, spec) {
140
- if (!git_oid__is_hexstr(spec->src, GIT_OID_SHA1))
144
+ if (!git_oid__is_hexstr(spec->src, remote->repo->oid_type))
141
145
  continue;
142
146
 
143
147
  if (!(remote_caps & oid_mask)) {
@@ -166,9 +170,15 @@ cleanup:
166
170
  int git_fetch_negotiate(git_remote *remote, const git_fetch_options *opts)
167
171
  {
168
172
  git_transport *t = remote->transport;
173
+ int error;
169
174
 
170
175
  remote->need_pack = 0;
171
176
 
177
+ if (opts) {
178
+ GIT_ASSERT_ARG(opts->depth >= 0);
179
+ remote->nego.depth = opts->depth;
180
+ }
181
+
172
182
  if (filter_wants(remote, opts) < 0)
173
183
  return -1;
174
184
 
@@ -180,20 +190,40 @@ int git_fetch_negotiate(git_remote *remote, const git_fetch_options *opts)
180
190
  * Now we have everything set up so we can start tell the
181
191
  * server what we want and what we have.
182
192
  */
183
- return t->negotiate_fetch(t,
193
+ remote->nego.refs = (const git_remote_head * const *)remote->refs.contents;
194
+ remote->nego.refs_len = remote->refs.length;
195
+
196
+ if (git_repository__shallow_roots(&remote->nego.shallow_roots,
197
+ &remote->nego.shallow_roots_len,
198
+ remote->repo) < 0)
199
+ return -1;
200
+
201
+ error = t->negotiate_fetch(t,
184
202
  remote->repo,
185
- (const git_remote_head * const *)remote->refs.contents,
186
- remote->refs.length);
203
+ &remote->nego);
204
+
205
+ git__free(remote->nego.shallow_roots);
206
+
207
+ return error;
187
208
  }
188
209
 
189
210
  int git_fetch_download_pack(git_remote *remote)
190
211
  {
212
+ git_oidarray shallow_roots = { NULL };
191
213
  git_transport *t = remote->transport;
214
+ int error;
192
215
 
193
216
  if (!remote->need_pack)
194
217
  return 0;
195
218
 
196
- return t->download_pack(t, remote->repo, &remote->stats);
219
+ if ((error = t->download_pack(t, remote->repo, &remote->stats)) != 0 ||
220
+ (error = t->shallow_roots(&shallow_roots, t)) != 0)
221
+ return error;
222
+
223
+ error = git_repository__shallow_roots_write(remote->repo, &shallow_roots);
224
+
225
+ git_oidarray_dispose(&shallow_roots);
226
+ return error;
197
227
  }
198
228
 
199
229
  int git_fetch_options_init(git_fetch_options *opts, unsigned int version)
@@ -11,8 +11,6 @@
11
11
 
12
12
  #include "git2/remote.h"
13
13
 
14
- #include "netops.h"
15
-
16
14
  int git_fetch_negotiate(git_remote *remote, const git_fetch_options *opts);
17
15
 
18
16
  int git_fetch_download_pack(git_remote *remote);
@@ -105,15 +105,14 @@ static int fetchhead_ref_write(
105
105
  git_filebuf *file,
106
106
  git_fetchhead_ref *fetchhead_ref)
107
107
  {
108
- char oid[GIT_OID_SHA1_HEXSIZE + 1];
108
+ char oid[GIT_OID_MAX_HEXSIZE + 1];
109
109
  const char *type, *name;
110
110
  int head = 0;
111
111
 
112
112
  GIT_ASSERT_ARG(file);
113
113
  GIT_ASSERT_ARG(fetchhead_ref);
114
114
 
115
- git_oid_fmt(oid, &fetchhead_ref->oid);
116
- oid[GIT_OID_SHA1_HEXSIZE] = '\0';
115
+ git_oid_tostr(oid, GIT_OID_MAX_HEXSIZE + 1, &fetchhead_ref->oid);
117
116
 
118
117
  if (git__prefixcmp(fetchhead_ref->ref_name, GIT_REFS_HEADS_DIR) == 0) {
119
118
  type = "branch ";
@@ -174,7 +173,8 @@ static int fetchhead_ref_parse(
174
173
  git_str *ref_name,
175
174
  const char **remote_url,
176
175
  char *line,
177
- size_t line_num)
176
+ size_t line_num,
177
+ git_oid_t oid_type)
178
178
  {
179
179
  char *oid_str, *is_merge_str, *desc, *name = NULL;
180
180
  const char *type = NULL;
@@ -196,13 +196,13 @@ static int fetchhead_ref_parse(
196
196
  *is_merge = 1;
197
197
  }
198
198
 
199
- if (strlen(oid_str) != GIT_OID_SHA1_HEXSIZE) {
199
+ if (strlen(oid_str) != git_oid_hexsize(oid_type)) {
200
200
  git_error_set(GIT_ERROR_FETCHHEAD,
201
201
  "invalid object ID in FETCH_HEAD line %"PRIuZ, line_num);
202
202
  return -1;
203
203
  }
204
204
 
205
- if (git_oid__fromstr(oid, oid_str, GIT_OID_SHA1) < 0) {
205
+ if (git_oid__fromstr(oid, oid_str, oid_type) < 0) {
206
206
  const git_error *oid_err = git_error_last();
207
207
  const char *err_msg = oid_err ? oid_err->message : "invalid object ID";
208
208
 
@@ -269,7 +269,8 @@ static int fetchhead_ref_parse(
269
269
  return error;
270
270
  }
271
271
 
272
- int git_repository_fetchhead_foreach(git_repository *repo,
272
+ int git_repository_fetchhead_foreach(
273
+ git_repository *repo,
273
274
  git_repository_fetchhead_foreach_cb cb,
274
275
  void *payload)
275
276
  {
@@ -296,8 +297,9 @@ int git_repository_fetchhead_foreach(git_repository *repo,
296
297
  while ((line = git__strsep(&buffer, "\n")) != NULL) {
297
298
  ++line_num;
298
299
 
299
- if ((error = fetchhead_ref_parse(
300
- &oid, &is_merge, &name, &remote_url, line, line_num)) < 0)
300
+ if ((error = fetchhead_ref_parse(&oid, &is_merge, &name,
301
+ &remote_url, line, line_num,
302
+ repo->oid_type)) < 0)
301
303
  goto done;
302
304
 
303
305
  if (git_str_len(&name) > 0)
@@ -239,7 +239,7 @@ static void git_filter_global_shutdown(void)
239
239
  git__free(fdef);
240
240
  }
241
241
 
242
- git_vector_free(&filter_registry.filters);
242
+ git_vector_dispose(&filter_registry.filters);
243
243
 
244
244
  git_rwlock_wrunlock(&filter_registry.lock);
245
245
  git_rwlock_free(&filter_registry.lock);
@@ -908,7 +908,7 @@ static int buffered_stream_close(git_writestream *s)
908
908
  {
909
909
  struct buffered_stream *buffered_stream = (struct buffered_stream *)s;
910
910
  git_str *writebuf;
911
- git_error_state error_state = {0};
911
+ git_error *last_error;
912
912
  int error;
913
913
 
914
914
  GIT_ASSERT_ARG(buffered_stream);
@@ -946,9 +946,9 @@ static int buffered_stream_close(git_writestream *s)
946
946
  } else {
947
947
  /* close stream before erroring out taking care
948
948
  * to preserve the original error */
949
- git_error_state_capture(&error_state, error);
949
+ git_error_save(&last_error);
950
950
  buffered_stream->target->close(buffered_stream->target);
951
- git_error_state_restore(&error_state);
951
+ git_error_restore(last_error);
952
952
  return error;
953
953
  }
954
954
 
@@ -1106,7 +1106,7 @@ static void filter_streams_free(git_vector *streams)
1106
1106
 
1107
1107
  git_vector_foreach(streams, i, stream)
1108
1108
  stream->free(stream);
1109
- git_vector_free(streams);
1109
+ git_vector_dispose(streams);
1110
1110
  }
1111
1111
 
1112
1112
  int git_filter_list_stream_file(
@@ -10,7 +10,7 @@
10
10
  #endif
11
11
 
12
12
  #ifndef LIBGIT2_COMMENTS
13
- # define LIBGIT2_COMMENTS "For more information visit http://libgit2.github.com/"
13
+ # define LIBGIT2_COMMENTS "For more information visit https://libgit2.org/"
14
14
  #endif
15
15
 
16
16
  #ifdef __GNUC__
@@ -25,8 +25,8 @@ VS_VERSION_INFO VERSIONINFO
25
25
  #else
26
26
  VS_VERSION_INFO VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE
27
27
  #endif
28
- FILEVERSION LIBGIT2_VER_MAJOR,LIBGIT2_VER_MINOR,LIBGIT2_VER_REVISION,LIBGIT2_VER_PATCH
29
- PRODUCTVERSION LIBGIT2_VER_MAJOR,LIBGIT2_VER_MINOR,LIBGIT2_VER_REVISION,LIBGIT2_VER_PATCH
28
+ FILEVERSION LIBGIT2_VERSION_MAJOR,LIBGIT2_VERSION_MINOR,LIBGIT2_VERSION_REVISION,LIBGIT2_VERSION_PATCH
29
+ PRODUCTVERSION LIBGIT2_VERSION_MAJOR,LIBGIT2_VERSION_MINOR,LIBGIT2_VERSION_REVISION,LIBGIT2_VERSION_PATCH
30
30
  FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
31
31
  #ifdef _DEBUG
32
32
  FILEFLAGS VS_FF_DEBUG
@@ -0,0 +1,270 @@
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 "grafts.h"
9
+
10
+ #include "futils.h"
11
+ #include "oid.h"
12
+ #include "oidarray.h"
13
+ #include "parse.h"
14
+ #include "hashmap_oid.h"
15
+
16
+ GIT_HASHMAP_OID_SETUP(git_grafts_oidmap, git_commit_graft *);
17
+
18
+ struct git_grafts {
19
+ /* Map of `git_commit_graft`s */
20
+ git_grafts_oidmap commits;
21
+
22
+ /* Type of object IDs */
23
+ git_oid_t oid_type;
24
+
25
+ /* File backing the graft. NULL if it's an in-memory graft */
26
+ char *path;
27
+ unsigned char path_checksum[GIT_HASH_SHA256_SIZE];
28
+ };
29
+
30
+ int git_grafts_new(git_grafts **out, git_oid_t oid_type)
31
+ {
32
+ git_grafts *grafts;
33
+
34
+ GIT_ASSERT_ARG(out && oid_type);
35
+
36
+ grafts = git__calloc(1, sizeof(*grafts));
37
+ GIT_ERROR_CHECK_ALLOC(grafts);
38
+
39
+ grafts->oid_type = oid_type;
40
+
41
+ *out = grafts;
42
+ return 0;
43
+ }
44
+
45
+ int git_grafts_open(
46
+ git_grafts **out,
47
+ const char *path,
48
+ git_oid_t oid_type)
49
+ {
50
+ git_grafts *grafts = NULL;
51
+ int error;
52
+
53
+ GIT_ASSERT_ARG(out && path && oid_type);
54
+
55
+ if ((error = git_grafts_new(&grafts, oid_type)) < 0)
56
+ goto error;
57
+
58
+ grafts->path = git__strdup(path);
59
+ GIT_ERROR_CHECK_ALLOC(grafts->path);
60
+
61
+ if ((error = git_grafts_refresh(grafts)) < 0)
62
+ goto error;
63
+
64
+ *out = grafts;
65
+
66
+ error:
67
+ if (error < 0)
68
+ git_grafts_free(grafts);
69
+
70
+ return error;
71
+ }
72
+
73
+ int git_grafts_open_or_refresh(
74
+ git_grafts **out,
75
+ const char *path,
76
+ git_oid_t oid_type)
77
+ {
78
+ GIT_ASSERT_ARG(out && path && oid_type);
79
+
80
+ return *out ? git_grafts_refresh(*out) : git_grafts_open(out, path, oid_type);
81
+ }
82
+
83
+ void git_grafts_free(git_grafts *grafts)
84
+ {
85
+ if (!grafts)
86
+ return;
87
+ git__free(grafts->path);
88
+ git_grafts_clear(grafts);
89
+ git_grafts_oidmap_dispose(&grafts->commits);
90
+ git__free(grafts);
91
+ }
92
+
93
+ void git_grafts_clear(git_grafts *grafts)
94
+ {
95
+ git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
96
+ git_commit_graft *graft;
97
+
98
+ if (!grafts)
99
+ return;
100
+
101
+ while (git_grafts_oidmap_iterate(&iter, NULL, &graft, &grafts->commits) == 0) {
102
+ git__free(graft->parents.ptr);
103
+ git__free(graft);
104
+ }
105
+
106
+ git_grafts_oidmap_clear(&grafts->commits);
107
+ }
108
+
109
+ int git_grafts_refresh(git_grafts *grafts)
110
+ {
111
+ git_str contents = GIT_STR_INIT;
112
+ int error, updated = 0;
113
+
114
+ GIT_ASSERT_ARG(grafts);
115
+
116
+ if (!grafts->path)
117
+ return 0;
118
+
119
+ if ((error = git_futils_readbuffer_updated(&contents, grafts->path,
120
+ grafts->path_checksum, &updated)) < 0) {
121
+
122
+ if (error == GIT_ENOTFOUND) {
123
+ git_grafts_clear(grafts);
124
+ error = 0;
125
+ }
126
+
127
+ goto cleanup;
128
+ }
129
+
130
+ if (!updated) {
131
+ goto cleanup;
132
+ }
133
+
134
+ if ((error = git_grafts_parse(grafts, contents.ptr, contents.size)) < 0)
135
+ goto cleanup;
136
+
137
+ cleanup:
138
+ git_str_dispose(&contents);
139
+ return error;
140
+ }
141
+
142
+ int git_grafts_parse(git_grafts *grafts, const char *buf, size_t len)
143
+ {
144
+ git_array_oid_t parents = GIT_ARRAY_INIT;
145
+ git_parse_ctx parser;
146
+ int error;
147
+
148
+ git_grafts_clear(grafts);
149
+
150
+ if ((error = git_parse_ctx_init(&parser, buf, len)) < 0)
151
+ goto error;
152
+
153
+ for (; parser.remain_len; git_parse_advance_line(&parser)) {
154
+ git_oid graft_oid;
155
+
156
+ if ((error = git_parse_advance_oid(&graft_oid, &parser, grafts->oid_type)) < 0) {
157
+ git_error_set(GIT_ERROR_GRAFTS, "invalid graft OID at line %" PRIuZ, parser.line_num);
158
+ goto error;
159
+ }
160
+
161
+ while (parser.line_len && git_parse_advance_expected(&parser, "\n", 1) != 0) {
162
+ git_oid *id = git_array_alloc(parents);
163
+ GIT_ERROR_CHECK_ALLOC(id);
164
+
165
+ if ((error = git_parse_advance_expected(&parser, " ", 1)) < 0 ||
166
+ (error = git_parse_advance_oid(id, &parser, grafts->oid_type)) < 0) {
167
+ git_error_set(GIT_ERROR_GRAFTS, "invalid parent OID at line %" PRIuZ, parser.line_num);
168
+ goto error;
169
+ }
170
+ }
171
+
172
+ if ((error = git_grafts_add(grafts, &graft_oid, parents)) < 0)
173
+ goto error;
174
+
175
+ git_array_clear(parents);
176
+ }
177
+
178
+ error:
179
+ git_array_clear(parents);
180
+ return error;
181
+ }
182
+
183
+ int git_grafts_add(git_grafts *grafts, const git_oid *oid, git_array_oid_t parents)
184
+ {
185
+ git_commit_graft *graft;
186
+ git_oid *parent_oid;
187
+ int error;
188
+ size_t i;
189
+
190
+ GIT_ASSERT_ARG(grafts && oid);
191
+
192
+ graft = git__calloc(1, sizeof(*graft));
193
+ GIT_ERROR_CHECK_ALLOC(graft);
194
+
195
+ git_array_init_to_size(graft->parents, git_array_size(parents));
196
+ git_array_foreach(parents, i, parent_oid) {
197
+ git_oid *id = git_array_alloc(graft->parents);
198
+ GIT_ERROR_CHECK_ALLOC(id);
199
+
200
+ git_oid_cpy(id, parent_oid);
201
+ }
202
+ git_oid_cpy(&graft->oid, oid);
203
+
204
+ if ((error = git_grafts_remove(grafts, &graft->oid)) < 0 && error != GIT_ENOTFOUND)
205
+ goto cleanup;
206
+
207
+ if ((error = git_grafts_oidmap_put(&grafts->commits, &graft->oid, graft)) < 0)
208
+ goto cleanup;
209
+
210
+ return 0;
211
+
212
+ cleanup:
213
+ git_array_clear(graft->parents);
214
+ git__free(graft);
215
+ return error;
216
+ }
217
+
218
+ int git_grafts_remove(git_grafts *grafts, const git_oid *oid)
219
+ {
220
+ git_commit_graft *graft;
221
+ int error;
222
+
223
+ GIT_ASSERT_ARG(grafts && oid);
224
+
225
+ if (git_grafts_oidmap_get(&graft, &grafts->commits, oid) != 0)
226
+ return GIT_ENOTFOUND;
227
+
228
+ if ((error = git_grafts_oidmap_remove(&grafts->commits, oid)) < 0)
229
+ return error;
230
+
231
+ git__free(graft->parents.ptr);
232
+ git__free(graft);
233
+
234
+ return 0;
235
+ }
236
+
237
+ int git_grafts_get(git_commit_graft **out, git_grafts *grafts, const git_oid *oid)
238
+ {
239
+ GIT_ASSERT_ARG(out && grafts && oid);
240
+ return git_grafts_oidmap_get(out, &grafts->commits, oid);
241
+ }
242
+
243
+ int git_grafts_oids(git_oid **out, size_t *out_len, git_grafts *grafts)
244
+ {
245
+ git_hashmap_iter_t iter = GIT_HASHMAP_ITER_INIT;
246
+ git_array_oid_t array = GIT_ARRAY_INIT;
247
+ const git_oid *oid;
248
+ size_t existing;
249
+
250
+ GIT_ASSERT_ARG(out && grafts);
251
+
252
+ if ((existing = git_grafts_oidmap_size(&grafts->commits)) > 0)
253
+ git_array_init_to_size(array, existing);
254
+
255
+ while (git_grafts_oidmap_iterate(&iter, &oid, NULL, &grafts->commits) == 0) {
256
+ git_oid *cpy = git_array_alloc(array);
257
+ GIT_ERROR_CHECK_ALLOC(cpy);
258
+ git_oid_cpy(cpy, oid);
259
+ }
260
+
261
+ *out = array.ptr;
262
+ *out_len = array.size;
263
+
264
+ return 0;
265
+ }
266
+
267
+ size_t git_grafts_size(git_grafts *grafts)
268
+ {
269
+ return git_grafts_oidmap_size(&grafts->commits);
270
+ }
@@ -0,0 +1,35 @@
1
+ /*
2
+ * Copyright (C) the libgit2 contributors. All rights reserved.
3
+ *
4
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
5
+ * a Linking Exception. For full terms see the included COPYING file.
6
+ */
7
+ #ifndef INCLUDE_graft_h__
8
+ #define INCLUDE_graft_h__
9
+
10
+ #include "common.h"
11
+ #include "oidarray.h"
12
+
13
+ /** graft commit */
14
+ typedef struct {
15
+ git_oid oid;
16
+ git_array_oid_t parents;
17
+ } git_commit_graft;
18
+
19
+ typedef struct git_grafts git_grafts;
20
+
21
+ int git_grafts_new(git_grafts **out, git_oid_t oid_type);
22
+ int git_grafts_open(git_grafts **out, const char *path, git_oid_t oid_type);
23
+ int git_grafts_open_or_refresh(git_grafts **out, const char *path, git_oid_t oid_type);
24
+ void git_grafts_free(git_grafts *grafts);
25
+ void git_grafts_clear(git_grafts *grafts);
26
+
27
+ int git_grafts_refresh(git_grafts *grafts);
28
+ int git_grafts_parse(git_grafts *grafts, const char *buf, size_t len);
29
+ int git_grafts_add(git_grafts *grafts, const git_oid *oid, git_array_oid_t parents);
30
+ int git_grafts_remove(git_grafts *grafts, const git_oid *oid);
31
+ int git_grafts_get(git_commit_graft **out, git_grafts *grafts, const git_oid *oid);
32
+ int git_grafts_oids(git_oid **out, size_t *out_len, git_grafts *grafts);
33
+ size_t git_grafts_size(git_grafts *grafts);
34
+
35
+ #endif
@@ -243,7 +243,7 @@ int git_graph_reachable_from_any(
243
243
 
244
244
  done:
245
245
  git_commit_list_free(&result);
246
- git_vector_free(&list);
246
+ git_vector_dispose(&list);
247
247
  git_revwalk_free(walk);
248
248
  return error;
249
249
  }
@@ -0,0 +1,30 @@
1
+ /*
2
+ * Copyright (C) the libgit2 contributors. All rights reserved.
3
+ *
4
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
5
+ * a Linking Exception. For full terms see the included COPYING file.
6
+ */
7
+ #ifndef INCLUDE_hashmap_oid_h__
8
+ #define INCLUDE_hashmap_oid_h__
9
+
10
+ #include "hashmap.h"
11
+
12
+ GIT_INLINE(uint32_t) git_hashmap_oid_hashcode(const git_oid *oid)
13
+ {
14
+ uint32_t hash;
15
+ memcpy(&hash, oid->id, sizeof(uint32_t));
16
+ return hash;
17
+ }
18
+
19
+ #define GIT_HASHMAP_OID_STRUCT(name, val_t) \
20
+ GIT_HASHMAP_STRUCT(name, const git_oid *, val_t)
21
+ #define GIT_HASHMAP_OID_PROTOTYPES(name, val_t) \
22
+ GIT_HASHMAP_PROTOTYPES(name, const git_oid *, val_t)
23
+ #define GIT_HASHMAP_OID_FUNCTIONS(name, scope, val_t) \
24
+ GIT_HASHMAP_FUNCTIONS(name, scope, const git_oid *, val_t, git_hashmap_oid_hashcode, git_oid_equal)
25
+
26
+ #define GIT_HASHMAP_OID_SETUP(name, val_t) \
27
+ GIT_HASHMAP_OID_STRUCT(name, val_t) \
28
+ GIT_HASHMAP_OID_FUNCTIONS(name, GIT_HASHMAP_INLINE, val_t)
29
+
30
+ #endif
@@ -42,7 +42,7 @@ static int ident_find_id(
42
42
  static int ident_insert_id(
43
43
  git_str *to, const git_str *from, const git_filter_source *src)
44
44
  {
45
- char oid[GIT_OID_SHA1_HEXSIZE+1];
45
+ char oid[GIT_OID_MAX_HEXSIZE + 1];
46
46
  const char *id_start, *id_end, *from_end = from->ptr + from->size;
47
47
  size_t need_size;
48
48
 
@@ -57,7 +57,7 @@ static int ident_insert_id(
57
57
  return GIT_PASSTHROUGH;
58
58
 
59
59
  need_size = (size_t)(id_start - from->ptr) +
60
- 5 /* "$Id: " */ + GIT_OID_SHA1_HEXSIZE + 2 /* " $" */ +
60
+ 5 /* "$Id: " */ + GIT_OID_MAX_HEXSIZE + 2 /* " $" */ +
61
61
  (size_t)(from_end - id_end);
62
62
 
63
63
  if (git_str_grow(to, need_size) < 0)
@@ -65,7 +65,7 @@ static int ident_insert_id(
65
65
 
66
66
  git_str_set(to, from->ptr, (size_t)(id_start - from->ptr));
67
67
  git_str_put(to, "$Id: ", 5);
68
- git_str_put(to, oid, GIT_OID_SHA1_HEXSIZE);
68
+ git_str_puts(to, oid);
69
69
  git_str_put(to, " $", 2);
70
70
  git_str_put(to, id_end, (size_t)(from_end - id_end));
71
71
 
@@ -296,6 +296,8 @@ int git_ignore__for_path(
296
296
  {
297
297
  int error = 0;
298
298
  const char *workdir = git_repository_workdir(repo);
299
+ git_attr_cache *attrcache;
300
+ const char *excludes_file = NULL;
299
301
  git_str infopath = GIT_STR_INIT;
300
302
 
301
303
  GIT_ASSERT_ARG(repo);
@@ -358,10 +360,12 @@ int git_ignore__for_path(
358
360
  }
359
361
 
360
362
  /* load core.excludesfile */
361
- if (git_repository_attr_cache(repo)->cfg_excl_file != NULL)
363
+ attrcache = git_repository_attr_cache(repo);
364
+ excludes_file = git_attr_cache_excludesfile(attrcache);
365
+
366
+ if (excludes_file != NULL)
362
367
  error = push_ignore_file(
363
- ignores, &ignores->ign_global, NULL,
364
- git_repository_attr_cache(repo)->cfg_excl_file);
368
+ ignores, &ignores->ign_global, NULL, excludes_file);
365
369
 
366
370
  cleanup:
367
371
  git_str_dispose(&infopath);
@@ -428,13 +432,13 @@ void git_ignore__free(git_ignores *ignores)
428
432
  git_attr_file__free(file);
429
433
  ignores->ign_path.contents[i] = NULL;
430
434
  }
431
- git_vector_free(&ignores->ign_path);
435
+ git_vector_dispose(&ignores->ign_path);
432
436
 
433
437
  git_vector_foreach(&ignores->ign_global, i, file) {
434
438
  git_attr_file__free(file);
435
439
  ignores->ign_global.contents[i] = NULL;
436
440
  }
437
- git_vector_free(&ignores->ign_global);
441
+ git_vector_dispose(&ignores->ign_global);
438
442
 
439
443
  git_str_dispose(&ignores->dir);
440
444
  }