rugged 1.7.2 → 1.9.4

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 (405) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rugged/extconf.rb +4 -4
  3. data/ext/rugged/rugged.c +12 -1
  4. data/ext/rugged/rugged_blame.c +22 -6
  5. data/ext/rugged/rugged_blob.c +24 -9
  6. data/ext/rugged/rugged_branch.c +10 -7
  7. data/ext/rugged/rugged_branch_collection.c +8 -6
  8. data/ext/rugged/rugged_commit.c +7 -6
  9. data/ext/rugged/rugged_config.c +20 -11
  10. data/ext/rugged/rugged_diff.c +26 -12
  11. data/ext/rugged/rugged_diff_hunk.c +2 -1
  12. data/ext/rugged/rugged_index.c +39 -29
  13. data/ext/rugged/rugged_note.c +7 -6
  14. data/ext/rugged/rugged_object.c +3 -2
  15. data/ext/rugged/rugged_patch.c +23 -9
  16. data/ext/rugged/rugged_rebase.c +22 -10
  17. data/ext/rugged/rugged_reference.c +22 -13
  18. data/ext/rugged/rugged_reference_collection.c +9 -7
  19. data/ext/rugged/rugged_remote.c +23 -12
  20. data/ext/rugged/rugged_remote_collection.c +11 -9
  21. data/ext/rugged/rugged_repo.c +60 -45
  22. data/ext/rugged/rugged_revwalk.c +22 -12
  23. data/ext/rugged/rugged_submodule.c +23 -20
  24. data/ext/rugged/rugged_submodule_collection.c +20 -9
  25. data/ext/rugged/rugged_tag.c +6 -4
  26. data/ext/rugged/rugged_tag_collection.c +7 -5
  27. data/ext/rugged/rugged_tree.c +27 -15
  28. data/lib/rugged/version.rb +1 -1
  29. data/vendor/libgit2/AUTHORS +3 -0
  30. data/vendor/libgit2/CMakeLists.txt +23 -10
  31. data/vendor/libgit2/COPYING +195 -1
  32. data/vendor/libgit2/cmake/DefaultCFlags.cmake +4 -1
  33. data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
  34. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  35. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +1 -1
  36. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
  37. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +17 -8
  38. data/vendor/libgit2/cmake/SelectHashes.cmake +28 -11
  39. data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
  40. data/vendor/libgit2/cmake/SelectSSH.cmake +30 -19
  41. data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
  42. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  43. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  44. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  45. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  46. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  47. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  48. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
  49. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  50. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  51. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  52. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
  53. data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
  54. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  55. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  56. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  57. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  58. data/vendor/libgit2/deps/pcre/CMakeLists.txt +3 -3
  59. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +1 -1
  60. data/vendor/libgit2/deps/xdiff/xmerge.c +16 -12
  61. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  62. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  63. data/vendor/libgit2/deps/zlib/adler32.c +5 -27
  64. data/vendor/libgit2/deps/zlib/crc32.c +94 -167
  65. data/vendor/libgit2/deps/zlib/deflate.c +358 -435
  66. data/vendor/libgit2/deps/zlib/deflate.h +41 -10
  67. data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
  68. data/vendor/libgit2/deps/zlib/infback.c +17 -30
  69. data/vendor/libgit2/deps/zlib/inffast.c +1 -4
  70. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  71. data/vendor/libgit2/deps/zlib/inflate.c +36 -102
  72. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  73. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  74. data/vendor/libgit2/deps/zlib/trees.c +287 -352
  75. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  76. data/vendor/libgit2/deps/zlib/zlib.h +202 -202
  77. data/vendor/libgit2/deps/zlib/zutil.c +18 -44
  78. data/vendor/libgit2/deps/zlib/zutil.h +13 -33
  79. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  80. data/vendor/libgit2/include/git2/apply.h +27 -6
  81. data/vendor/libgit2/include/git2/attr.h +17 -4
  82. data/vendor/libgit2/include/git2/blame.h +133 -28
  83. data/vendor/libgit2/include/git2/blob.h +71 -28
  84. data/vendor/libgit2/include/git2/branch.h +22 -15
  85. data/vendor/libgit2/include/git2/buffer.h +6 -4
  86. data/vendor/libgit2/include/git2/cert.h +2 -1
  87. data/vendor/libgit2/include/git2/checkout.h +83 -32
  88. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  89. data/vendor/libgit2/include/git2/clone.h +25 -9
  90. data/vendor/libgit2/include/git2/commit.h +132 -3
  91. data/vendor/libgit2/include/git2/common.h +120 -63
  92. data/vendor/libgit2/include/git2/config.h +93 -23
  93. data/vendor/libgit2/include/git2/credential.h +30 -2
  94. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  95. data/vendor/libgit2/include/git2/deprecated.h +134 -4
  96. data/vendor/libgit2/include/git2/describe.h +13 -1
  97. data/vendor/libgit2/include/git2/diff.h +38 -8
  98. data/vendor/libgit2/include/git2/email.h +9 -29
  99. data/vendor/libgit2/include/git2/errors.h +46 -73
  100. data/vendor/libgit2/include/git2/filter.h +14 -7
  101. data/vendor/libgit2/include/git2/global.h +8 -1
  102. data/vendor/libgit2/include/git2/graph.h +3 -2
  103. data/vendor/libgit2/include/git2/ignore.h +10 -0
  104. data/vendor/libgit2/include/git2/index.h +100 -15
  105. data/vendor/libgit2/include/git2/indexer.h +21 -4
  106. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  107. data/vendor/libgit2/include/git2/merge.h +50 -3
  108. data/vendor/libgit2/include/git2/message.h +2 -2
  109. data/vendor/libgit2/include/git2/net.h +3 -1
  110. data/vendor/libgit2/include/git2/notes.h +9 -6
  111. data/vendor/libgit2/include/git2/object.h +9 -8
  112. data/vendor/libgit2/include/git2/odb.h +91 -49
  113. data/vendor/libgit2/include/git2/odb_backend.h +80 -52
  114. data/vendor/libgit2/include/git2/oid.h +23 -25
  115. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  116. data/vendor/libgit2/include/git2/pack.h +13 -1
  117. data/vendor/libgit2/include/git2/patch.h +2 -3
  118. data/vendor/libgit2/include/git2/pathspec.h +9 -0
  119. data/vendor/libgit2/include/git2/proxy.h +12 -3
  120. data/vendor/libgit2/include/git2/rebase.h +9 -6
  121. data/vendor/libgit2/include/git2/refdb.h +2 -2
  122. data/vendor/libgit2/include/git2/reflog.h +3 -2
  123. data/vendor/libgit2/include/git2/refs.h +9 -6
  124. data/vendor/libgit2/include/git2/refspec.h +14 -4
  125. data/vendor/libgit2/include/git2/remote.h +113 -25
  126. data/vendor/libgit2/include/git2/repository.h +57 -21
  127. data/vendor/libgit2/include/git2/reset.h +16 -3
  128. data/vendor/libgit2/include/git2/revert.h +9 -4
  129. data/vendor/libgit2/include/git2/revparse.h +3 -3
  130. data/vendor/libgit2/include/git2/revwalk.h +3 -2
  131. data/vendor/libgit2/include/git2/signature.h +46 -1
  132. data/vendor/libgit2/include/git2/stash.h +17 -3
  133. data/vendor/libgit2/include/git2/status.h +10 -6
  134. data/vendor/libgit2/include/git2/stdint.h +87 -85
  135. data/vendor/libgit2/include/git2/strarray.h +2 -3
  136. data/vendor/libgit2/include/git2/submodule.h +20 -9
  137. data/vendor/libgit2/include/git2/sys/alloc.h +12 -0
  138. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  139. data/vendor/libgit2/include/git2/sys/commit_graph.h +103 -62
  140. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  141. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  142. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  143. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  144. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  145. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  146. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  147. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  148. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  149. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  150. data/vendor/libgit2/include/git2/sys/midx.h +43 -4
  151. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
  152. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  153. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  154. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  155. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  156. data/vendor/libgit2/include/git2/sys/remote.h +8 -1
  157. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  158. data/vendor/libgit2/include/git2/sys/stream.h +11 -2
  159. data/vendor/libgit2/include/git2/sys/transport.h +25 -4
  160. data/vendor/libgit2/include/git2/tag.h +3 -1
  161. data/vendor/libgit2/include/git2/trace.h +9 -3
  162. data/vendor/libgit2/include/git2/transaction.h +3 -2
  163. data/vendor/libgit2/include/git2/transport.h +11 -3
  164. data/vendor/libgit2/include/git2/tree.h +16 -5
  165. data/vendor/libgit2/include/git2/types.h +19 -3
  166. data/vendor/libgit2/include/git2/version.h +46 -8
  167. data/vendor/libgit2/include/git2/worktree.h +16 -6
  168. data/vendor/libgit2/src/CMakeLists.txt +6 -4
  169. data/vendor/libgit2/src/cli/CMakeLists.txt +3 -4
  170. data/vendor/libgit2/src/cli/cmd.c +1 -1
  171. data/vendor/libgit2/src/cli/cmd.h +4 -0
  172. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  173. data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
  174. data/vendor/libgit2/src/cli/cmd_clone.c +5 -7
  175. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  176. data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
  177. data/vendor/libgit2/src/cli/cmd_help.c +6 -7
  178. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  179. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  180. data/vendor/libgit2/src/cli/common.c +168 -0
  181. data/vendor/libgit2/src/cli/common.h +63 -0
  182. data/vendor/libgit2/src/cli/error.h +1 -1
  183. data/vendor/libgit2/src/cli/main.c +52 -24
  184. data/vendor/libgit2/src/cli/opt.c +31 -5
  185. data/vendor/libgit2/src/cli/opt.h +21 -3
  186. data/vendor/libgit2/src/cli/opt_usage.c +102 -33
  187. data/vendor/libgit2/src/cli/opt_usage.h +6 -1
  188. data/vendor/libgit2/src/cli/progress.c +51 -2
  189. data/vendor/libgit2/src/cli/progress.h +12 -0
  190. data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
  191. data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
  192. data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
  193. data/vendor/libgit2/src/libgit2/CMakeLists.txt +55 -21
  194. data/vendor/libgit2/src/libgit2/apply.c +10 -13
  195. data/vendor/libgit2/src/libgit2/attr.c +30 -13
  196. data/vendor/libgit2/src/libgit2/attr_file.c +17 -5
  197. data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
  198. data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
  199. data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
  200. data/vendor/libgit2/src/libgit2/blame.c +130 -44
  201. data/vendor/libgit2/src/libgit2/blame.h +1 -0
  202. data/vendor/libgit2/src/libgit2/cache.c +22 -17
  203. data/vendor/libgit2/src/libgit2/cache.h +7 -9
  204. data/vendor/libgit2/src/libgit2/checkout.c +34 -24
  205. data/vendor/libgit2/src/libgit2/checkout.h +0 -2
  206. data/vendor/libgit2/src/libgit2/cherrypick.c +1 -2
  207. data/vendor/libgit2/src/libgit2/clone.c +192 -166
  208. data/vendor/libgit2/src/libgit2/clone.h +4 -1
  209. data/vendor/libgit2/src/libgit2/commit.c +93 -1
  210. data/vendor/libgit2/src/libgit2/commit_graph.c +68 -58
  211. data/vendor/libgit2/src/libgit2/commit_graph.h +1 -2
  212. data/vendor/libgit2/src/libgit2/config.c +390 -299
  213. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  214. data/vendor/libgit2/src/libgit2/config.h +9 -4
  215. data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
  216. data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
  217. data/vendor/libgit2/src/libgit2/config_file.c +101 -89
  218. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  219. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  220. data/vendor/libgit2/src/libgit2/config_mem.c +195 -40
  221. data/vendor/libgit2/src/libgit2/config_parse.c +12 -10
  222. data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
  223. data/vendor/libgit2/src/libgit2/delta.c +5 -1
  224. data/vendor/libgit2/src/libgit2/describe.c +24 -24
  225. data/vendor/libgit2/src/libgit2/diff.c +1 -1
  226. data/vendor/libgit2/src/libgit2/diff_driver.c +13 -20
  227. data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
  228. data/vendor/libgit2/src/libgit2/diff_generate.c +3 -3
  229. data/vendor/libgit2/src/libgit2/diff_parse.c +2 -2
  230. data/vendor/libgit2/src/libgit2/diff_print.c +65 -9
  231. data/vendor/libgit2/src/libgit2/diff_stats.c +19 -12
  232. data/vendor/libgit2/src/libgit2/diff_tform.c +36 -8
  233. data/vendor/libgit2/src/libgit2/email.c +1 -0
  234. data/vendor/libgit2/src/libgit2/fetch.c +5 -3
  235. data/vendor/libgit2/src/libgit2/fetchhead.c +1 -1
  236. data/vendor/libgit2/src/libgit2/filter.c +5 -5
  237. data/vendor/libgit2/src/libgit2/git2.rc +3 -3
  238. data/vendor/libgit2/src/libgit2/grafts.c +18 -20
  239. data/vendor/libgit2/src/libgit2/grafts.h +0 -1
  240. data/vendor/libgit2/src/libgit2/graph.c +1 -1
  241. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  242. data/vendor/libgit2/src/libgit2/ignore.c +9 -5
  243. data/vendor/libgit2/src/libgit2/index.c +76 -98
  244. data/vendor/libgit2/src/libgit2/index.h +5 -2
  245. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  246. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  247. data/vendor/libgit2/src/libgit2/indexer.c +36 -40
  248. data/vendor/libgit2/src/libgit2/iterator.c +14 -8
  249. data/vendor/libgit2/src/libgit2/libgit2.c +153 -368
  250. data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
  251. data/vendor/libgit2/src/libgit2/merge.c +43 -38
  252. data/vendor/libgit2/src/libgit2/merge.h +4 -0
  253. data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
  254. data/vendor/libgit2/src/libgit2/merge_file.c +43 -30
  255. data/vendor/libgit2/src/libgit2/message.c +1 -1
  256. data/vendor/libgit2/src/libgit2/midx.c +30 -18
  257. data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
  258. data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
  259. data/vendor/libgit2/src/libgit2/object.c +6 -5
  260. data/vendor/libgit2/src/libgit2/odb.c +7 -10
  261. data/vendor/libgit2/src/libgit2/odb_loose.c +24 -14
  262. data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
  263. data/vendor/libgit2/src/libgit2/odb_pack.c +13 -5
  264. data/vendor/libgit2/src/libgit2/oid.c +36 -10
  265. data/vendor/libgit2/src/libgit2/oid.h +11 -0
  266. data/vendor/libgit2/src/libgit2/pack-objects.c +59 -34
  267. data/vendor/libgit2/src/libgit2/pack-objects.h +12 -4
  268. data/vendor/libgit2/src/libgit2/pack.c +33 -24
  269. data/vendor/libgit2/src/libgit2/pack.h +15 -10
  270. data/vendor/libgit2/src/libgit2/patch_parse.c +2 -2
  271. data/vendor/libgit2/src/libgit2/path.c +1 -1
  272. data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
  273. data/vendor/libgit2/src/libgit2/push.c +79 -28
  274. data/vendor/libgit2/src/libgit2/push.h +1 -0
  275. data/vendor/libgit2/src/libgit2/refdb_fs.c +128 -61
  276. data/vendor/libgit2/src/libgit2/reflog.c +1 -2
  277. data/vendor/libgit2/src/libgit2/reflog.h +2 -0
  278. data/vendor/libgit2/src/libgit2/refs.c +41 -13
  279. data/vendor/libgit2/src/libgit2/refs.h +6 -1
  280. data/vendor/libgit2/src/libgit2/refspec.c +28 -1
  281. data/vendor/libgit2/src/libgit2/refspec.h +8 -0
  282. data/vendor/libgit2/src/libgit2/remote.c +125 -62
  283. data/vendor/libgit2/src/libgit2/remote.h +0 -1
  284. data/vendor/libgit2/src/libgit2/repository.c +235 -54
  285. data/vendor/libgit2/src/libgit2/repository.h +10 -6
  286. data/vendor/libgit2/src/libgit2/revert.c +1 -2
  287. data/vendor/libgit2/src/libgit2/revparse.c +2 -2
  288. data/vendor/libgit2/src/libgit2/revwalk.c +13 -10
  289. data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
  290. data/vendor/libgit2/src/libgit2/settings.c +468 -0
  291. data/vendor/libgit2/src/libgit2/settings.h +6 -2
  292. data/vendor/libgit2/src/libgit2/signature.c +132 -15
  293. data/vendor/libgit2/src/libgit2/signature.h +0 -1
  294. data/vendor/libgit2/src/libgit2/status.c +1 -1
  295. data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -60
  296. data/vendor/libgit2/src/libgit2/streams/openssl.c +32 -7
  297. data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
  298. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
  299. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
  300. data/vendor/libgit2/src/libgit2/streams/socket.c +30 -0
  301. data/vendor/libgit2/src/libgit2/streams/stransport.c +39 -7
  302. data/vendor/libgit2/src/libgit2/submodule.c +118 -68
  303. data/vendor/libgit2/src/libgit2/submodule.h +6 -7
  304. data/vendor/libgit2/src/libgit2/tag.c +4 -2
  305. data/vendor/libgit2/src/libgit2/trailer.c +6 -6
  306. data/vendor/libgit2/src/libgit2/transaction.c +26 -20
  307. data/vendor/libgit2/src/libgit2/transaction.h +4 -1
  308. data/vendor/libgit2/src/libgit2/transport.c +4 -1
  309. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +2 -0
  310. data/vendor/libgit2/src/libgit2/transports/credential.c +2 -2
  311. data/vendor/libgit2/src/libgit2/transports/git.c +1 -1
  312. data/vendor/libgit2/src/libgit2/transports/http.c +1 -2
  313. data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
  314. data/vendor/libgit2/src/libgit2/transports/httpclient.c +124 -81
  315. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  316. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  317. data/vendor/libgit2/src/libgit2/transports/local.c +16 -8
  318. data/vendor/libgit2/src/libgit2/transports/smart.c +25 -13
  319. data/vendor/libgit2/src/libgit2/transports/smart.h +4 -2
  320. data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +5 -5
  321. data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +55 -10
  322. data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
  323. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +386 -0
  324. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  325. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1126 -0
  326. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  327. data/vendor/libgit2/src/libgit2/transports/winhttp.c +35 -7
  328. data/vendor/libgit2/src/libgit2/tree.c +34 -26
  329. data/vendor/libgit2/src/libgit2/tree.h +3 -2
  330. data/vendor/libgit2/src/libgit2/worktree.c +14 -17
  331. data/vendor/libgit2/src/util/CMakeLists.txt +7 -10
  332. data/vendor/libgit2/src/util/alloc.c +4 -1
  333. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  334. data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
  335. data/vendor/libgit2/src/util/allocators/stdalloc.c +0 -10
  336. data/vendor/libgit2/src/util/array.h +18 -17
  337. data/vendor/libgit2/src/util/cc-compat.h +2 -0
  338. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  339. data/vendor/libgit2/src/util/date.c +22 -14
  340. data/vendor/libgit2/src/util/date.h +12 -0
  341. data/vendor/libgit2/src/util/errors.c +401 -0
  342. data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
  343. data/vendor/libgit2/src/util/fs_path.c +81 -10
  344. data/vendor/libgit2/src/util/fs_path.h +29 -0
  345. data/vendor/libgit2/src/util/futils.c +6 -5
  346. data/vendor/libgit2/src/util/futils.h +24 -7
  347. data/vendor/libgit2/src/util/git2_features.h.in +12 -1
  348. data/vendor/libgit2/src/util/git2_util.h +6 -0
  349. data/vendor/libgit2/src/util/hash/builtin.c +14 -4
  350. data/vendor/libgit2/src/util/hash/openssl.c +148 -0
  351. data/vendor/libgit2/src/util/hash/openssl.h +17 -1
  352. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +8 -6
  353. data/vendor/libgit2/src/util/hash/sha.h +4 -1
  354. data/vendor/libgit2/src/util/hashmap.h +425 -0
  355. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  356. data/vendor/libgit2/src/util/integer.h +3 -1
  357. data/vendor/libgit2/src/util/net.c +17 -11
  358. data/vendor/libgit2/src/util/net.h +2 -0
  359. data/vendor/libgit2/src/util/pool.c +1 -1
  360. data/vendor/libgit2/src/util/pool.h +5 -0
  361. data/vendor/libgit2/src/util/pqueue.h +1 -1
  362. data/vendor/libgit2/src/util/process.h +223 -0
  363. data/vendor/libgit2/src/util/rand.c +1 -7
  364. data/vendor/libgit2/src/util/regexp.c +1 -1
  365. data/vendor/libgit2/src/util/runtime.c +2 -2
  366. data/vendor/libgit2/src/util/sortedcache.c +14 -13
  367. data/vendor/libgit2/src/util/sortedcache.h +3 -3
  368. data/vendor/libgit2/src/util/str.c +20 -8
  369. data/vendor/libgit2/src/util/str.h +5 -3
  370. data/vendor/libgit2/src/util/strlist.c +108 -0
  371. data/vendor/libgit2/src/util/strlist.h +36 -0
  372. data/vendor/libgit2/src/util/unix/posix.h +0 -2
  373. data/vendor/libgit2/src/util/unix/process.c +706 -0
  374. data/vendor/libgit2/src/util/unix/realpath.c +23 -5
  375. data/vendor/libgit2/src/util/util.c +18 -5
  376. data/vendor/libgit2/src/util/util.h +5 -38
  377. data/vendor/libgit2/src/util/vector.c +3 -3
  378. data/vendor/libgit2/src/util/vector.h +2 -2
  379. data/vendor/libgit2/src/util/win32/path_w32.c +81 -5
  380. data/vendor/libgit2/src/util/win32/posix_w32.c +29 -6
  381. data/vendor/libgit2/src/util/win32/process.c +522 -0
  382. metadata +60 -32
  383. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  384. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  385. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  386. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  387. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  388. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  389. data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
  390. data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
  391. data/vendor/libgit2/src/libgit2/errors.c +0 -293
  392. data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
  393. data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
  394. data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
  395. data/vendor/libgit2/src/libgit2/offmap.c +0 -101
  396. data/vendor/libgit2/src/libgit2/offmap.h +0 -133
  397. data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
  398. data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
  399. data/vendor/libgit2/src/libgit2/threadstate.c +0 -97
  400. data/vendor/libgit2/src/libgit2/threadstate.h +0 -22
  401. data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
  402. data/vendor/libgit2/src/util/khash.h +0 -615
  403. data/vendor/libgit2/src/util/strmap.c +0 -100
  404. data/vendor/libgit2/src/util/strmap.h +0 -131
  405. /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
@@ -16,17 +16,35 @@
16
16
 
17
17
  char *p_realpath(const char *pathname, char *resolved)
18
18
  {
19
- char *ret;
20
- if ((ret = realpath(pathname, resolved)) == NULL)
19
+ char *result;
20
+
21
+ if ((result = realpath(pathname, resolved)) == NULL)
21
22
  return NULL;
22
23
 
23
24
  #ifdef __OpenBSD__
24
25
  /* The OpenBSD realpath function behaves differently,
25
26
  * figure out if the file exists */
26
- if (access(ret, F_OK) < 0)
27
- ret = NULL;
27
+ if (access(result, F_OK) < 0) {
28
+ if (!resolved)
29
+ free(result);
30
+
31
+ return NULL;
32
+ }
28
33
  #endif
29
- return ret;
34
+
35
+ /*
36
+ * If resolved == NULL, the system has allocated the result
37
+ * string. We need to strdup this into _our_ allocator pool
38
+ * so that callers can free it with git__free.
39
+ */
40
+ if (!resolved) {
41
+ char *dup = git__strdup(result);
42
+ free(result);
43
+
44
+ result = dup;
45
+ }
46
+
47
+ return result;
30
48
  }
31
49
 
32
50
  #endif
@@ -269,13 +269,26 @@ int git__prefixncmp_icase(const char *str, size_t str_n, const char *prefix)
269
269
  return prefixcmp(str, str_n, prefix, true);
270
270
  }
271
271
 
272
- int git__suffixcmp(const char *str, const char *suffix)
272
+ static int suffixcmp(const char *str, const char *suffix, bool icase)
273
273
  {
274
274
  size_t a = strlen(str);
275
275
  size_t b = strlen(suffix);
276
+
276
277
  if (a < b)
277
278
  return -1;
278
- return strcmp(str + (a - b), suffix);
279
+
280
+ return icase ? strcasecmp(str + (a - b), suffix) :
281
+ strcmp(str + (a - b), suffix);
282
+ }
283
+
284
+ int git__suffixcmp(const char *str, const char *suffix)
285
+ {
286
+ return suffixcmp(str, suffix, false);
287
+ }
288
+
289
+ int git__suffixcmp_icase(const char *str, const char *suffix)
290
+ {
291
+ return suffixcmp(str, suffix, true);
279
292
  }
280
293
 
281
294
  char *git__strtok(char **end, const char *sep)
@@ -323,7 +336,7 @@ char *git__strsep(char **end, const char *sep)
323
336
 
324
337
  size_t git__linenlen(const char *buffer, size_t buffer_len)
325
338
  {
326
- char *nl = memchr(buffer, '\n', buffer_len);
339
+ const char *nl = memchr(buffer, '\n', buffer_len);
327
340
  return nl ? (size_t)(nl - buffer) + 1 : buffer_len;
328
341
  }
329
342
 
@@ -623,12 +636,12 @@ int git__bsearch_r(
623
636
  */
624
637
  int git__strcmp_cb(const void *a, const void *b)
625
638
  {
626
- return strcmp((const char *)a, (const char *)b);
639
+ return git__strcmp((const char *)a, (const char *)b);
627
640
  }
628
641
 
629
642
  int git__strcasecmp_cb(const void *a, const void *b)
630
643
  {
631
- return strcasecmp((const char *)a, (const char *)b);
644
+ return git__strcasecmp((const char *)a, (const char *)b);
632
645
  }
633
646
 
634
647
  int git__parse_bool(int *out, const char *value)
@@ -7,15 +7,15 @@
7
7
  #ifndef INCLUDE_util_h__
8
8
  #define INCLUDE_util_h__
9
9
 
10
- #ifndef GIT_WIN32
11
- # include <ctype.h>
12
- #endif
13
-
14
10
  #include "str.h"
15
11
  #include "git2_util.h"
16
12
  #include "strnlen.h"
17
13
  #include "thread.h"
18
14
 
15
+ #ifndef GIT_WIN32
16
+ # include <ctype.h>
17
+ #endif
18
+
19
19
  #define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
20
20
  #define bitsizeof(x) (CHAR_BIT * sizeof(x))
21
21
  #define MSB(x, bits) ((x) & (~UINT64_C(0) << (bitsizeof(x) - (bits))))
@@ -57,6 +57,7 @@ extern int git__prefixcmp_icase(const char *str, const char *prefix);
57
57
  extern int git__prefixncmp(const char *str, size_t str_n, const char *prefix);
58
58
  extern int git__prefixncmp_icase(const char *str, size_t str_n, const char *prefix);
59
59
  extern int git__suffixcmp(const char *str, const char *suffix);
60
+ extern int git__suffixcmp_icase(const char *str, const char *suffix);
60
61
 
61
62
  GIT_INLINE(int) git__signum(int val)
62
63
  {
@@ -83,15 +84,6 @@ extern char *git__strsep(char **end, const char *sep);
83
84
  extern void git__strntolower(char *str, size_t len);
84
85
  extern void git__strtolower(char *str);
85
86
 
86
- #ifdef GIT_WIN32
87
- GIT_INLINE(int) git__tolower(int c)
88
- {
89
- return (c >= 'A' && c <= 'Z') ? (c + 32) : c;
90
- }
91
- #else
92
- # define git__tolower(a) tolower(a)
93
- #endif
94
-
95
87
  extern size_t git__linenlen(const char *buffer, size_t buffer_len);
96
88
 
97
89
  GIT_INLINE(const char *) git__next_line(const char *s)
@@ -249,26 +241,6 @@ GIT_INLINE(size_t) git__size_t_powerof2(size_t v)
249
241
  return git__size_t_bitmask(v) + 1;
250
242
  }
251
243
 
252
- GIT_INLINE(bool) git__isupper(int c)
253
- {
254
- return (c >= 'A' && c <= 'Z');
255
- }
256
-
257
- GIT_INLINE(bool) git__isalpha(int c)
258
- {
259
- return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'));
260
- }
261
-
262
- GIT_INLINE(bool) git__isdigit(int c)
263
- {
264
- return (c >= '0' && c <= '9');
265
- }
266
-
267
- GIT_INLINE(bool) git__isspace(int c)
268
- {
269
- return (c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '\r' || c == '\v');
270
- }
271
-
272
244
  GIT_INLINE(bool) git__isspace_nonlf(int c)
273
245
  {
274
246
  return (c == ' ' || c == '\t' || c == '\f' || c == '\r' || c == '\v');
@@ -279,11 +251,6 @@ GIT_INLINE(bool) git__iswildcard(int c)
279
251
  return (c == '*' || c == '?' || c == '[');
280
252
  }
281
253
 
282
- GIT_INLINE(bool) git__isxdigit(int c)
283
- {
284
- return ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
285
- }
286
-
287
254
  /*
288
255
  * Parse a string value as a boolean, just like Core Git does.
289
256
  *
@@ -76,7 +76,7 @@ int git_vector_dup(git_vector *v, const git_vector *src, git_vector_cmp cmp)
76
76
  return 0;
77
77
  }
78
78
 
79
- void git_vector_free(git_vector *v)
79
+ void git_vector_dispose(git_vector *v)
80
80
  {
81
81
  if (!v)
82
82
  return;
@@ -88,7 +88,7 @@ void git_vector_free(git_vector *v)
88
88
  v->_alloc_size = 0;
89
89
  }
90
90
 
91
- void git_vector_free_deep(git_vector *v)
91
+ void git_vector_dispose_deep(git_vector *v)
92
92
  {
93
93
  size_t i;
94
94
 
@@ -100,7 +100,7 @@ void git_vector_free_deep(git_vector *v)
100
100
  v->contents[i] = NULL;
101
101
  }
102
102
 
103
- git_vector_free(v);
103
+ git_vector_dispose(v);
104
104
  }
105
105
 
106
106
  int git_vector_init(git_vector *v, size_t initial_size, git_vector_cmp cmp)
@@ -28,8 +28,8 @@ typedef struct git_vector {
28
28
 
29
29
  GIT_WARN_UNUSED_RESULT int git_vector_init(
30
30
  git_vector *v, size_t initial_size, git_vector_cmp cmp);
31
- void git_vector_free(git_vector *v);
32
- void git_vector_free_deep(git_vector *v); /* free each entry and self */
31
+ void git_vector_dispose(git_vector *v);
32
+ void git_vector_dispose_deep(git_vector *v); /* free each entry and self */
33
33
  void git_vector_clear(git_vector *v);
34
34
  GIT_WARN_UNUSED_RESULT int git_vector_dup(
35
35
  git_vector *v, const git_vector *src, git_vector_cmp cmp);
@@ -153,6 +153,7 @@ int git_win32_path_canonicalize(git_win32_path path)
153
153
 
154
154
  static int git_win32_path_join(
155
155
  git_win32_path dest,
156
+ size_t *dest_len,
156
157
  const wchar_t *one,
157
158
  size_t one_len,
158
159
  const wchar_t *two,
@@ -176,6 +177,9 @@ static int git_win32_path_join(
176
177
  memcpy(dest + one_len + backslash, two, two_len * sizeof(wchar_t));
177
178
  dest[one_len + backslash + two_len] = L'\0';
178
179
 
180
+ if (dest_len)
181
+ *dest_len = one_len + backslash + two_len;
182
+
179
183
  return 0;
180
184
  }
181
185
 
@@ -253,21 +257,92 @@ static void win32_path_iter_dispose(struct win32_path_iter *iter)
253
257
  iter->current_dir = NULL;
254
258
  }
255
259
 
260
+ struct executable_suffix {
261
+ const wchar_t *suffix;
262
+ size_t len;
263
+ };
264
+
265
+ static struct executable_suffix suffixes[] = { { NULL, 0 }, { L".exe", 4 }, { L".cmd", 4 } };
266
+
267
+ static bool has_executable_suffix(wchar_t *exe, size_t exe_len)
268
+ {
269
+ size_t i;
270
+
271
+ for (i = 0; i < ARRAY_SIZE(suffixes); i++) {
272
+ struct executable_suffix *suffix = &suffixes[i];
273
+
274
+ if (!suffix->len)
275
+ continue;
276
+
277
+ if (exe_len < suffix->len)
278
+ continue;
279
+
280
+ if (memcmp(&exe[exe_len - suffix->len], suffix->suffix, suffix->len) == 0)
281
+ return true;
282
+ }
283
+
284
+ return false;
285
+ }
286
+
287
+ static int is_executable(git_win32_path path, size_t path_len, bool suffixed)
288
+ {
289
+ size_t i;
290
+
291
+ /*
292
+ * if the given name has an executable suffix, then try looking for it
293
+ * directly. in all cases, append executable extensions
294
+ * (".exe", ".cmd"...)
295
+ */
296
+ for (i = suffixed ? 0 : 1; i < ARRAY_SIZE(suffixes); i++) {
297
+ struct executable_suffix *suffix = &suffixes[i];
298
+
299
+ if (suffix->len) {
300
+ if (path_len + suffix->len > MAX_PATH)
301
+ continue;
302
+
303
+ wcscat(path, suffix->suffix);
304
+ }
305
+
306
+ if (_waccess(path, 0) == 0)
307
+ return true;
308
+
309
+ path[path_len] = L'\0';
310
+ }
311
+
312
+ return false;
313
+ }
314
+
256
315
  int git_win32_path_find_executable(git_win32_path fullpath, wchar_t *exe)
257
316
  {
258
317
  struct win32_path_iter path_iter;
259
318
  const wchar_t *dir;
260
- size_t dir_len, exe_len = wcslen(exe);
261
- bool found = false;
319
+ size_t dir_len, exe_len, fullpath_len;
320
+ bool suffixed = false, found = false;
321
+
322
+ if ((exe_len = wcslen(exe)) > MAX_PATH)
323
+ goto done;
324
+
325
+ /* see if the given executable has an executable suffix; if so we will
326
+ * look for the explicit name directly, as well as with added suffixes.
327
+ */
328
+ suffixed = has_executable_suffix(exe, exe_len);
329
+
330
+ /* For fully-qualified paths we do not look in PATH */
331
+ if (wcschr(exe, L'\\') != NULL || wcschr(exe, L'/') != NULL) {
332
+ if ((found = is_executable(exe, exe_len, suffixed)))
333
+ wcscpy(fullpath, exe);
334
+
335
+ goto done;
336
+ }
262
337
 
263
338
  if (win32_path_iter_init(&path_iter) < 0)
264
339
  return -1;
265
340
 
266
- while (win32_path_iter_next(&dir, &dir_len, &path_iter) != GIT_ITEROVER) {
267
- if (git_win32_path_join(fullpath, dir, dir_len, exe, exe_len) < 0)
341
+ while (win32_path_iter_next(&dir, &dir_len, &path_iter) != GIT_ITEROVER && !found) {
342
+ if (git_win32_path_join(fullpath, &fullpath_len, dir, dir_len, exe, exe_len) < 0)
268
343
  continue;
269
344
 
270
- if (_waccess(fullpath, 0) == 0) {
345
+ if (is_executable(fullpath, fullpath_len, suffixed)) {
271
346
  found = true;
272
347
  break;
273
348
  }
@@ -275,6 +350,7 @@ int git_win32_path_find_executable(git_win32_path fullpath, wchar_t *exe)
275
350
 
276
351
  win32_path_iter_dispose(&path_iter);
277
352
 
353
+ done:
278
354
  if (found)
279
355
  return 0;
280
356
 
@@ -770,6 +770,7 @@ int p_rmdir(const char *path)
770
770
  * handle to the directory." This sounds like what everybody else calls
771
771
  * EBUSY. Let's convert appropriate error codes.
772
772
  */
773
+ case ERROR_ACCESS_DENIED:
773
774
  case ERROR_SHARING_VIOLATION:
774
775
  errno = EBUSY;
775
776
  break;
@@ -787,13 +788,19 @@ int p_rmdir(const char *path)
787
788
  char *p_realpath(const char *orig_path, char *buffer)
788
789
  {
789
790
  git_win32_path orig_path_w, buffer_w;
791
+ DWORD long_len;
790
792
 
791
793
  if (git_win32_path_from_utf8(orig_path_w, orig_path) < 0)
792
794
  return NULL;
793
795
 
794
- /* Note that if the path provided is a relative path, then the current directory
796
+ /*
797
+ * POSIX realpath performs two functions: first, it turns relative
798
+ * paths into absolute paths. For this, we need GetFullPathName.
799
+ *
800
+ * Note that if the path provided is a relative path, then the current directory
795
801
  * is used to resolve the path -- which is a concurrency issue because the current
796
- * directory is a process-wide variable. */
802
+ * directory is a process-wide variable.
803
+ */
797
804
  if (!GetFullPathNameW(orig_path_w, GIT_WIN_PATH_UTF16, buffer_w, NULL)) {
798
805
  if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
799
806
  errno = ENAMETOOLONG;
@@ -803,9 +810,26 @@ char *p_realpath(const char *orig_path, char *buffer)
803
810
  return NULL;
804
811
  }
805
812
 
806
- /* The path must exist. */
807
- if (GetFileAttributesW(buffer_w) == INVALID_FILE_ATTRIBUTES) {
808
- errno = ENOENT;
813
+ /*
814
+ * Then, the path is canonicalized. eg, on macOS,
815
+ * "/TMP" -> "/private/tmp". For this, we need GetLongPathName.
816
+ */
817
+ if ((long_len = GetLongPathNameW(buffer_w, buffer_w, GIT_WIN_PATH_UTF16)) == 0) {
818
+ DWORD error = GetLastError();
819
+
820
+ if (error == ERROR_FILE_NOT_FOUND ||
821
+ error == ERROR_PATH_NOT_FOUND)
822
+ errno = ENOENT;
823
+ else if (error == ERROR_ACCESS_DENIED)
824
+ errno = EPERM;
825
+ else
826
+ errno = EINVAL;
827
+
828
+ return NULL;
829
+ }
830
+
831
+ if (long_len > GIT_WIN_PATH_UTF16) {
832
+ errno = ENAMETOOLONG;
809
833
  return NULL;
810
834
  }
811
835
 
@@ -821,7 +845,6 @@ char *p_realpath(const char *orig_path, char *buffer)
821
845
  return NULL;
822
846
 
823
847
  git_fs_path_mkposix(buffer);
824
-
825
848
  return buffer;
826
849
  }
827
850