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
@@ -0,0 +1,522 @@
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 <stdio.h>
9
+ #include <git2.h>
10
+
11
+ #include "git2_util.h"
12
+ #include "process.h"
13
+ #include "strlist.h"
14
+ #include "fs_path.h"
15
+
16
+ #ifndef DWORD_MAX
17
+ # define DWORD_MAX INT32_MAX
18
+ #endif
19
+
20
+ #define ENV_MAX 32767
21
+
22
+ struct git_process {
23
+ char *app_name;
24
+ wchar_t *app_path;
25
+ wchar_t *cmdline;
26
+ wchar_t *env;
27
+
28
+ wchar_t *cwd;
29
+
30
+ unsigned int capture_in : 1,
31
+ capture_out : 1,
32
+ capture_err : 1;
33
+
34
+ PROCESS_INFORMATION process_info;
35
+
36
+ HANDLE child_in;
37
+ HANDLE child_out;
38
+ HANDLE child_err;
39
+
40
+ git_process_result_status status;
41
+ };
42
+
43
+ /*
44
+ * Windows processes have a single command-line that is split by the
45
+ * invoked application into arguments (instead of an array of
46
+ * command-line arguments). This command-line is split by space or
47
+ * tab delimiters, unless that whitespace is within a double quote.
48
+ * Literal double-quotes themselves can be escaped by a backslash,
49
+ * but only when not within double quotes. Literal backslashes can
50
+ * be escaped by a backslash.
51
+ *
52
+ * Effectively, this means that instead of thinking about quoting
53
+ * individual strings, think about double quotes as an escaping
54
+ * mechanism for whitespace.
55
+ *
56
+ * In other words (using ` as a string boundary):
57
+ * [ `foo`, `bar` ] => `foo bar`
58
+ * [ `foo bar` ] => `foo" "bar`
59
+ * [ `foo bar`, `foo bar` ] => `foo" "bar foo" "bar`
60
+ * [ `foo "bar" foo` ] => `foo" "\"bar\"" "foo`
61
+ */
62
+ int git_process__cmdline(
63
+ git_str *out,
64
+ const char **in,
65
+ size_t in_len)
66
+ {
67
+ bool quoted = false;
68
+ const char *c;
69
+ size_t i;
70
+
71
+ for (i = 0; i < in_len; i++) {
72
+ /* Arguments are delimited by an unquoted space */
73
+ if (i)
74
+ git_str_putc(out, ' ');
75
+
76
+ for (c = in[i]; *c; c++) {
77
+ /* Start or stop quoting spaces within an argument */
78
+ if ((*c == ' ' || *c == '\t') && !quoted) {
79
+ git_str_putc(out, '"');
80
+ quoted = true;
81
+ } else if (*c != ' ' && *c != '\t' && quoted) {
82
+ git_str_putc(out, '"');
83
+ quoted = false;
84
+ }
85
+
86
+ /* Escape double-quotes and backslashes */
87
+ if (*c == '"' || *c == '\\')
88
+ git_str_putc(out, '\\');
89
+
90
+ git_str_putc(out, *c);
91
+ }
92
+ }
93
+
94
+ return git_str_oom(out) ? -1 : 0;
95
+ }
96
+
97
+ GIT_INLINE(bool) is_delete_env(const char *env)
98
+ {
99
+ char *c = strchr(env, '=');
100
+
101
+ if (c == NULL)
102
+ return false;
103
+
104
+ return *(c+1) == '\0';
105
+ }
106
+
107
+ static int merge_env(wchar_t **out, const char **in, size_t in_len, bool exclude_env)
108
+ {
109
+ git_str merged = GIT_STR_INIT;
110
+ wchar_t *in16 = NULL, *env = NULL, *e;
111
+ char *e8 = NULL;
112
+ size_t e_len;
113
+ int ret = 0;
114
+ size_t i;
115
+
116
+ *out = NULL;
117
+
118
+ in16 = git__malloc(ENV_MAX * sizeof(wchar_t));
119
+ GIT_ERROR_CHECK_ALLOC(in16);
120
+
121
+ e8 = git__malloc(ENV_MAX);
122
+ GIT_ERROR_CHECK_ALLOC(e8);
123
+
124
+ for (i = 0; in && i < in_len; i++) {
125
+ if (is_delete_env(in[i]))
126
+ continue;
127
+
128
+ if ((ret = git_utf8_to_16(in16, ENV_MAX, in[i])) < 0)
129
+ goto done;
130
+
131
+ git_str_put(&merged, (const char *)in16, ret * 2);
132
+ git_str_put(&merged, "\0\0", 2);
133
+ }
134
+
135
+ if (!exclude_env) {
136
+ env = GetEnvironmentStringsW();
137
+
138
+ for (e = env; *e; e += (e_len + 1)) {
139
+ e_len = wcslen(e);
140
+
141
+ if ((ret = git_utf8_from_16(e8, ENV_MAX, e)) < 0)
142
+ goto done;
143
+
144
+ if (git_strlist_contains_key(in, in_len, e8, '='))
145
+ continue;
146
+
147
+ git_str_put(&merged, (const char *)e, e_len * 2);
148
+ git_str_put(&merged, "\0\0", 2);
149
+ }
150
+ }
151
+
152
+ git_str_put(&merged, "\0\0", 2);
153
+
154
+ *out = (wchar_t *)git_str_detach(&merged);
155
+
156
+ done:
157
+ if (env)
158
+ FreeEnvironmentStringsW(env);
159
+
160
+ git_str_dispose(&merged);
161
+ git__free(e8);
162
+ git__free(in16);
163
+
164
+ return ret < 0 ? -1 : 0;
165
+ }
166
+
167
+ static int process_new(
168
+ git_process **out,
169
+ const char *appname,
170
+ const char *cmdline,
171
+ const char **env,
172
+ size_t env_len,
173
+ git_process_options *opts)
174
+ {
175
+ git_process *process;
176
+ int error = 0;
177
+
178
+ *out = NULL;
179
+
180
+ process = git__calloc(1, sizeof(git_process));
181
+ GIT_ERROR_CHECK_ALLOC(process);
182
+
183
+ if (appname && (process->app_name = git__strdup(appname)) == NULL) {
184
+ error = -1;
185
+ goto done;
186
+ }
187
+
188
+ if (git_utf8_to_16_alloc(&process->cmdline, cmdline) < 0) {
189
+ error = -1;
190
+ goto done;
191
+ }
192
+
193
+ if (opts && opts->cwd &&
194
+ git_utf8_to_16_alloc(&process->cwd, opts->cwd) < 0) {
195
+ error = -1;
196
+ goto done;
197
+ }
198
+
199
+ if (env && (error = merge_env(&process->env, env, env_len, opts && opts->exclude_env) < 0))
200
+ goto done;
201
+
202
+ if (opts) {
203
+ process->capture_in = opts->capture_in;
204
+ process->capture_out = opts->capture_out;
205
+ process->capture_err = opts->capture_err;
206
+ }
207
+
208
+ done:
209
+ if (error)
210
+ git_process_free(process);
211
+ else
212
+ *out = process;
213
+
214
+ return error;
215
+ }
216
+
217
+ int git_process_new_from_cmdline(
218
+ git_process **out,
219
+ const char *cmdline,
220
+ const char **env,
221
+ size_t env_len,
222
+ git_process_options *opts)
223
+ {
224
+ GIT_ASSERT_ARG(out && cmdline);
225
+
226
+ return process_new(out, NULL, cmdline, env, env_len, opts);
227
+ }
228
+
229
+ int git_process_new(
230
+ git_process **out,
231
+ const char **args,
232
+ size_t args_len,
233
+ const char **env,
234
+ size_t env_len,
235
+ git_process_options *opts)
236
+ {
237
+ git_str cmd_path = GIT_STR_INIT, cmdline = GIT_STR_INIT;
238
+ int error;
239
+
240
+ GIT_ASSERT_ARG(out && args && args_len > 0);
241
+
242
+ if ((error = git_process__cmdline(&cmdline, args, args_len)) < 0)
243
+ goto done;
244
+
245
+ error = process_new(out, args[0], cmdline.ptr, env, env_len, opts);
246
+
247
+ done:
248
+ git_str_dispose(&cmd_path);
249
+ git_str_dispose(&cmdline);
250
+ return error;
251
+ }
252
+
253
+ #define CLOSE_HANDLE(h) do { if ((h) != NULL) CloseHandle(h); } while(0)
254
+
255
+ int git_process_start(git_process *process)
256
+ {
257
+ STARTUPINFOW startup_info;
258
+ SECURITY_ATTRIBUTES security_attrs;
259
+ DWORD flags = CREATE_UNICODE_ENVIRONMENT;
260
+ HANDLE in[2] = { NULL, NULL },
261
+ out[2] = { NULL, NULL },
262
+ err[2] = { NULL, NULL };
263
+
264
+ if (process->app_name) {
265
+ git_str cmd_path = GIT_STR_INIT;
266
+ int error;
267
+
268
+ if ((error = git_fs_path_find_executable(&cmd_path, process->app_name)) == 0)
269
+ error = git_utf8_to_16_alloc(&process->app_path, cmd_path.ptr);
270
+
271
+ git_str_dispose(&cmd_path);
272
+
273
+ if (error < 0)
274
+ goto on_error;
275
+ }
276
+
277
+ memset(&security_attrs, 0, sizeof(SECURITY_ATTRIBUTES));
278
+ security_attrs.bInheritHandle = TRUE;
279
+
280
+ memset(&startup_info, 0, sizeof(STARTUPINFOW));
281
+ startup_info.cb = sizeof(STARTUPINFOW);
282
+ startup_info.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
283
+ startup_info.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
284
+ startup_info.hStdError = GetStdHandle(STD_ERROR_HANDLE);
285
+
286
+ if (process->capture_in) {
287
+ if (!CreatePipe(&in[0], &in[1], &security_attrs, 0) ||
288
+ !SetHandleInformation(in[1], HANDLE_FLAG_INHERIT, 0)) {
289
+ git_error_set(GIT_ERROR_OS, "could not create pipe");
290
+ goto on_error;
291
+ }
292
+
293
+ startup_info.hStdInput = in[0];
294
+ startup_info.dwFlags |= STARTF_USESTDHANDLES;
295
+ }
296
+
297
+ if (process->capture_out) {
298
+ if (!CreatePipe(&out[0], &out[1], &security_attrs, 0) ||
299
+ !SetHandleInformation(out[0], HANDLE_FLAG_INHERIT, 0)) {
300
+ git_error_set(GIT_ERROR_OS, "could not create pipe");
301
+ goto on_error;
302
+ }
303
+
304
+ startup_info.hStdOutput = out[1];
305
+ startup_info.dwFlags |= STARTF_USESTDHANDLES;
306
+ }
307
+
308
+ if (process->capture_err) {
309
+ if (!CreatePipe(&err[0], &err[1], &security_attrs, 0) ||
310
+ !SetHandleInformation(err[0], HANDLE_FLAG_INHERIT, 0)) {
311
+ git_error_set(GIT_ERROR_OS, "could not create pipe");
312
+ goto on_error;
313
+ }
314
+
315
+ startup_info.hStdError = err[1];
316
+ startup_info.dwFlags |= STARTF_USESTDHANDLES;
317
+ }
318
+
319
+ memset(&process->process_info, 0, sizeof(PROCESS_INFORMATION));
320
+
321
+ if (!CreateProcessW(process->app_path, process->cmdline,
322
+ NULL, NULL, TRUE, flags, process->env,
323
+ process->cwd,
324
+ &startup_info,
325
+ &process->process_info)) {
326
+ git_error_set(GIT_ERROR_OS, "could not create process");
327
+ goto on_error;
328
+ }
329
+
330
+ CLOSE_HANDLE(in[0]); process->child_in = in[1];
331
+ CLOSE_HANDLE(out[1]); process->child_out = out[0];
332
+ CLOSE_HANDLE(err[1]); process->child_err = err[0];
333
+
334
+ return 0;
335
+
336
+ on_error:
337
+ CLOSE_HANDLE(in[0]); CLOSE_HANDLE(in[1]);
338
+ CLOSE_HANDLE(out[0]); CLOSE_HANDLE(out[1]);
339
+ CLOSE_HANDLE(err[0]); CLOSE_HANDLE(err[1]);
340
+ return -1;
341
+ }
342
+
343
+ int git_process_id(p_pid_t *out, git_process *process)
344
+ {
345
+ GIT_ASSERT(out && process);
346
+
347
+ if (!process->process_info.dwProcessId) {
348
+ git_error_set(GIT_ERROR_INVALID, "process not running");
349
+ return -1;
350
+ }
351
+
352
+ *out = process->process_info.dwProcessId;
353
+ return 0;
354
+ }
355
+
356
+ ssize_t git_process_read(git_process *process, void *buf, size_t count)
357
+ {
358
+ DWORD ret;
359
+
360
+ if (count > DWORD_MAX)
361
+ count = DWORD_MAX;
362
+ if (count > SSIZE_MAX)
363
+ count = SSIZE_MAX;
364
+
365
+ if (!ReadFile(process->child_out, buf, (DWORD)count, &ret, NULL)) {
366
+ if (GetLastError() == ERROR_BROKEN_PIPE)
367
+ return 0;
368
+
369
+ git_error_set(GIT_ERROR_OS, "could not read");
370
+ return -1;
371
+ }
372
+
373
+ return ret;
374
+ }
375
+
376
+ ssize_t git_process_write(git_process *process, const void *buf, size_t count)
377
+ {
378
+ DWORD ret;
379
+
380
+ if (count > DWORD_MAX)
381
+ count = DWORD_MAX;
382
+ if (count > SSIZE_MAX)
383
+ count = SSIZE_MAX;
384
+
385
+ if (!WriteFile(process->child_in, buf, (DWORD)count, &ret, NULL)) {
386
+ git_error_set(GIT_ERROR_OS, "could not write");
387
+ return -1;
388
+ }
389
+
390
+ return ret;
391
+ }
392
+
393
+ int git_process_close_in(git_process *process)
394
+ {
395
+ if (!process->capture_in) {
396
+ git_error_set(GIT_ERROR_INVALID, "input is not open");
397
+ return -1;
398
+ }
399
+
400
+ if (process->child_in) {
401
+ CloseHandle(process->child_in);
402
+ process->child_in = NULL;
403
+ }
404
+
405
+ return 0;
406
+ }
407
+
408
+ int git_process_close_out(git_process *process)
409
+ {
410
+ if (!process->capture_out) {
411
+ git_error_set(GIT_ERROR_INVALID, "output is not open");
412
+ return -1;
413
+ }
414
+
415
+ if (process->child_out) {
416
+ CloseHandle(process->child_out);
417
+ process->child_out = NULL;
418
+ }
419
+
420
+ return 0;
421
+ }
422
+
423
+ int git_process_close_err(git_process *process)
424
+ {
425
+ if (!process->capture_err) {
426
+ git_error_set(GIT_ERROR_INVALID, "error is not open");
427
+ return -1;
428
+ }
429
+
430
+ if (process->child_err) {
431
+ CloseHandle(process->child_err);
432
+ process->child_err = NULL;
433
+ }
434
+
435
+ return 0;
436
+ }
437
+
438
+ int git_process_close(git_process *process)
439
+ {
440
+ if (process->child_in) {
441
+ CloseHandle(process->child_in);
442
+ process->child_in = NULL;
443
+ }
444
+
445
+ if (process->child_out) {
446
+ CloseHandle(process->child_out);
447
+ process->child_out = NULL;
448
+ }
449
+
450
+ if (process->child_err) {
451
+ CloseHandle(process->child_err);
452
+ process->child_err = NULL;
453
+ }
454
+
455
+ CloseHandle(process->process_info.hProcess);
456
+ process->process_info.hProcess = NULL;
457
+
458
+ CloseHandle(process->process_info.hThread);
459
+ process->process_info.hThread = NULL;
460
+
461
+ return 0;
462
+ }
463
+
464
+ int git_process_wait(git_process_result *result, git_process *process)
465
+ {
466
+ DWORD exitcode;
467
+
468
+ if (result)
469
+ memset(result, 0, sizeof(git_process_result));
470
+
471
+ if (!process->process_info.dwProcessId) {
472
+ git_error_set(GIT_ERROR_INVALID, "process is stopped");
473
+ return -1;
474
+ }
475
+
476
+ if (WaitForSingleObject(process->process_info.hProcess, INFINITE) == WAIT_FAILED) {
477
+ git_error_set(GIT_ERROR_OS, "could not wait for process");
478
+ return -1;
479
+ }
480
+
481
+ if (!GetExitCodeProcess(process->process_info.hProcess, &exitcode)) {
482
+ git_error_set(GIT_ERROR_OS, "could not get process exit code");
483
+ return -1;
484
+ }
485
+
486
+ result->status = GIT_PROCESS_STATUS_NORMAL;
487
+ result->exitcode = exitcode;
488
+
489
+ memset(&process->process_info, 0, sizeof(PROCESS_INFORMATION));
490
+ return 0;
491
+ }
492
+
493
+ int git_process_result_msg(git_str *out, git_process_result *result)
494
+ {
495
+ if (result->status == GIT_PROCESS_STATUS_NONE) {
496
+ return git_str_puts(out, "process not started");
497
+ } else if (result->status == GIT_PROCESS_STATUS_NORMAL) {
498
+ return git_str_printf(out, "process exited with code %d",
499
+ result->exitcode);
500
+ } else if (result->signal) {
501
+ return git_str_printf(out, "process exited on signal %d",
502
+ result->signal);
503
+ }
504
+
505
+ return git_str_puts(out, "unknown error");
506
+ }
507
+
508
+ void git_process_free(git_process *process)
509
+ {
510
+ if (!process)
511
+ return;
512
+
513
+ if (process->process_info.hProcess)
514
+ git_process_close(process);
515
+
516
+ git__free(process->env);
517
+ git__free(process->cwd);
518
+ git__free(process->cmdline);
519
+ git__free(process->app_path);
520
+ git__free(process->app_name);
521
+ git__free(process);
522
+ }