rugged 1.4.5 → 1.5.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 (424) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/ext/rugged/extconf.rb +1 -0
  4. data/ext/rugged/rugged.c +16 -0
  5. data/ext/rugged/rugged.h +4 -0
  6. data/ext/rugged/rugged_remote.c +10 -10
  7. data/ext/rugged/rugged_repo.c +2 -7
  8. data/ext/rugged/rugged_settings.c +5 -0
  9. data/lib/rugged/tree.rb +4 -0
  10. data/lib/rugged/version.rb +1 -1
  11. data/vendor/libgit2/CMakeLists.txt +16 -3
  12. data/vendor/libgit2/COPYING +40 -0
  13. data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
  14. data/vendor/libgit2/cmake/FindPCRE.cmake +3 -4
  15. data/vendor/libgit2/cmake/FindPCRE2.cmake +1 -1
  16. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +1 -1
  17. data/vendor/libgit2/cmake/SelectHashes.cmake +62 -14
  18. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +3 -1
  19. data/vendor/libgit2/include/git2/branch.h +2 -2
  20. data/vendor/libgit2/include/git2/common.h +11 -0
  21. data/vendor/libgit2/include/git2/config.h +6 -6
  22. data/vendor/libgit2/include/git2/deprecated.h +2 -0
  23. data/vendor/libgit2/include/git2/errors.h +17 -3
  24. data/vendor/libgit2/include/git2/merge.h +1 -1
  25. data/vendor/libgit2/include/git2/status.h +5 -2
  26. data/vendor/libgit2/include/git2/sys/remote.h +15 -0
  27. data/vendor/libgit2/include/git2/sys/transport.h +9 -5
  28. data/vendor/libgit2/include/git2/version.h +27 -6
  29. data/vendor/libgit2/src/CMakeLists.txt +104 -214
  30. data/vendor/libgit2/src/README.md +12 -0
  31. data/vendor/libgit2/src/cli/CMakeLists.txt +53 -0
  32. data/vendor/libgit2/src/cli/README.md +26 -0
  33. data/vendor/libgit2/src/cli/cli.h +20 -0
  34. data/vendor/libgit2/src/cli/cmd.c +21 -0
  35. data/vendor/libgit2/src/cli/cmd.h +33 -0
  36. data/vendor/libgit2/src/cli/cmd_cat_file.c +204 -0
  37. data/vendor/libgit2/src/cli/cmd_clone.c +176 -0
  38. data/vendor/libgit2/src/cli/cmd_hash_object.c +135 -0
  39. data/vendor/libgit2/src/cli/cmd_help.c +86 -0
  40. data/vendor/libgit2/src/cli/error.h +51 -0
  41. data/vendor/libgit2/src/cli/main.c +106 -0
  42. data/vendor/libgit2/src/cli/opt.c +669 -0
  43. data/vendor/libgit2/src/cli/opt.h +349 -0
  44. data/vendor/libgit2/src/cli/opt_usage.c +194 -0
  45. data/vendor/libgit2/src/cli/opt_usage.h +35 -0
  46. data/vendor/libgit2/src/cli/progress.c +345 -0
  47. data/vendor/libgit2/src/cli/progress.h +117 -0
  48. data/vendor/libgit2/src/cli/sighandler.h +20 -0
  49. data/vendor/libgit2/src/cli/unix/sighandler.c +36 -0
  50. data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
  51. data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
  52. data/vendor/libgit2/src/features.h.in +9 -0
  53. data/vendor/libgit2/src/libgit2/CMakeLists.txt +131 -0
  54. data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +1 -1
  55. data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +14 -9
  56. data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +20 -17
  57. data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +1 -1
  58. data/vendor/libgit2/src/libgit2/common.h +55 -0
  59. data/vendor/libgit2/src/{config.c → libgit2/config.c} +2 -2
  60. data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +1 -1
  61. data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +1 -0
  62. data/vendor/libgit2/src/{errors.h → libgit2/errors.h} +1 -2
  63. data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +31 -1
  64. data/vendor/libgit2/src/{index.c → libgit2/index.c} +6 -6
  65. data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +2 -2
  66. data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +3 -3
  67. data/vendor/libgit2/src/{libgit2.c → libgit2/libgit2.c} +5 -0
  68. data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +20 -23
  69. data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +2 -1
  70. data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +9 -9
  71. data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +1 -1
  72. data/vendor/libgit2/src/{netops.c → libgit2/netops.c} +0 -1
  73. data/vendor/libgit2/src/{object.c → libgit2/object.c} +1 -0
  74. data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +2 -2
  75. data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +2 -21
  76. data/vendor/libgit2/src/{oid.h → libgit2/oid.h} +35 -2
  77. data/vendor/libgit2/src/{oidmap.c → libgit2/oidmap.c} +1 -1
  78. data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +24 -18
  79. data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +3 -2
  80. data/vendor/libgit2/src/{path.c → libgit2/path.c} +1 -0
  81. data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +11 -1
  82. data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +6 -2
  83. data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +1 -1
  84. data/vendor/libgit2/src/{remote.h → libgit2/remote.h} +1 -1
  85. data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +1 -0
  86. data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +15 -5
  87. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +1 -1
  88. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +12 -0
  89. data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.c +91 -326
  90. data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +1 -1
  91. data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +16 -23
  92. data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +1 -1
  93. data/vendor/libgit2/src/util/CMakeLists.txt +74 -0
  94. data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.h +1 -1
  95. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
  96. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
  97. data/vendor/libgit2/src/{array.h → util/array.h} +1 -1
  98. data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
  99. data/vendor/libgit2/src/{date.c → util/date.c} +4 -3
  100. data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +1 -1
  101. data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +1 -1
  102. data/vendor/libgit2/src/{fs_path.c → util/fs_path.c} +17 -11
  103. data/vendor/libgit2/src/{fs_path.h → util/fs_path.h} +1 -1
  104. data/vendor/libgit2/src/{futils.c → util/futils.c} +44 -2
  105. data/vendor/libgit2/src/{futils.h → util/futils.h} +2 -1
  106. data/vendor/libgit2/src/{common.h → util/git2_util.h} +13 -59
  107. data/vendor/libgit2/src/util/hash/builtin.c +53 -0
  108. data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
  109. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +1 -1
  110. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
  111. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.c +55 -0
  112. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
  113. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.c +46 -0
  114. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
  115. data/vendor/libgit2/src/util/hash/openssl.c +194 -0
  116. data/vendor/libgit2/src/util/hash/openssl.h +45 -0
  117. data/vendor/libgit2/src/util/hash/rfc6234/sha.h +355 -0
  118. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
  119. data/vendor/libgit2/src/util/hash/sha.h +70 -0
  120. data/vendor/libgit2/src/util/hash/win32.c +549 -0
  121. data/vendor/libgit2/src/util/hash/win32.h +60 -0
  122. data/vendor/libgit2/src/{hash.c → util/hash.c} +17 -1
  123. data/vendor/libgit2/src/{hash.h → util/hash.h} +5 -3
  124. data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
  125. data/vendor/libgit2/src/{net.c → util/net.c} +0 -1
  126. data/vendor/libgit2/src/{net.h → util/net.h} +1 -1
  127. data/vendor/libgit2/src/{pool.h → util/pool.h} +1 -1
  128. data/vendor/libgit2/src/{posix.h → util/posix.h} +1 -1
  129. data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +1 -1
  130. data/vendor/libgit2/src/{rand.c → util/rand.c} +7 -3
  131. data/vendor/libgit2/src/{rand.h → util/rand.h} +1 -1
  132. data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
  133. data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
  134. data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
  135. data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +1 -1
  136. data/vendor/libgit2/src/{str.h → util/str.h} +1 -1
  137. data/vendor/libgit2/src/{strmap.h → util/strmap.h} +1 -1
  138. data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
  139. data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
  140. data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -1
  141. data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -1
  142. data/vendor/libgit2/src/{unix → util/unix}/realpath.c +1 -1
  143. data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
  144. data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
  145. data/vendor/libgit2/src/{util.c → util/util.c} +1 -1
  146. data/vendor/libgit2/src/{util.h → util/util.h} +1 -1
  147. data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
  148. data/vendor/libgit2/src/{vector.h → util/vector.h} +1 -1
  149. data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
  150. data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
  151. data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
  152. data/vendor/libgit2/src/{win32 → util/win32}/findfile.h +1 -1
  153. data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
  154. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +1 -1
  155. data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -1
  156. data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +1 -1
  157. data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
  158. data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
  159. data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
  160. data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.h +1 -1
  161. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +1 -1
  162. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
  163. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
  164. data/vendor/libgit2/src/{zstream.h → util/zstream.h} +1 -1
  165. metadata +390 -361
  166. data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
  167. data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
  168. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  169. data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
  170. data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
  171. data/vendor/libgit2/src/hash/sha1.h +0 -40
  172. /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
  173. /data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +0 -0
  174. /data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +0 -0
  175. /data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +0 -0
  176. /data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +0 -0
  177. /data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +0 -0
  178. /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
  179. /data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +0 -0
  180. /data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +0 -0
  181. /data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +0 -0
  182. /data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +0 -0
  183. /data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +0 -0
  184. /data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +0 -0
  185. /data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +0 -0
  186. /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
  187. /data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +0 -0
  188. /data/vendor/libgit2/src/{branch.h → libgit2/branch.h} +0 -0
  189. /data/vendor/libgit2/src/{buf.c → libgit2/buf.c} +0 -0
  190. /data/vendor/libgit2/src/{buf.h → libgit2/buf.h} +0 -0
  191. /data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +0 -0
  192. /data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +0 -0
  193. /data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +0 -0
  194. /data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -0
  195. /data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +0 -0
  196. /data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +0 -0
  197. /data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +0 -0
  198. /data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +0 -0
  199. /data/vendor/libgit2/src/{commit.h → libgit2/commit.h} +0 -0
  200. /data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +0 -0
  201. /data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +0 -0
  202. /data/vendor/libgit2/src/{config.h → libgit2/config.h} +0 -0
  203. /data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +0 -0
  204. /data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +0 -0
  205. /data/vendor/libgit2/src/{config_entries.c → libgit2/config_entries.c} +0 -0
  206. /data/vendor/libgit2/src/{config_entries.h → libgit2/config_entries.h} +0 -0
  207. /data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +0 -0
  208. /data/vendor/libgit2/src/{config_mem.c → libgit2/config_mem.c} +0 -0
  209. /data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +0 -0
  210. /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
  211. /data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +0 -0
  212. /data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +0 -0
  213. /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
  214. /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
  215. /data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +0 -0
  216. /data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +0 -0
  217. /data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +0 -0
  218. /data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +0 -0
  219. /data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +0 -0
  220. /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
  221. /data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +0 -0
  222. /data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +0 -0
  223. /data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +0 -0
  224. /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
  225. /data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +0 -0
  226. /data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +0 -0
  227. /data/vendor/libgit2/src/{diff_stats.h → libgit2/diff_stats.h} +0 -0
  228. /data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +0 -0
  229. /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
  230. /data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +0 -0
  231. /data/vendor/libgit2/src/{email.c → libgit2/email.c} +0 -0
  232. /data/vendor/libgit2/src/{email.h → libgit2/email.h} +0 -0
  233. /data/vendor/libgit2/src/{errors.c → libgit2/errors.c} +0 -0
  234. /data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +0 -0
  235. /data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +0 -0
  236. /data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +0 -0
  237. /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
  238. /data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +0 -0
  239. /data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +0 -0
  240. /data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +0 -0
  241. /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
  242. /data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +0 -0
  243. /data/vendor/libgit2/src/{idxmap.c → libgit2/idxmap.c} +0 -0
  244. /data/vendor/libgit2/src/{idxmap.h → libgit2/idxmap.h} +0 -0
  245. /data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +0 -0
  246. /data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +0 -0
  247. /data/vendor/libgit2/src/{index.h → libgit2/index.h} +0 -0
  248. /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
  249. /data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +0 -0
  250. /data/vendor/libgit2/src/{libgit2.h → libgit2/libgit2.h} +0 -0
  251. /data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +0 -0
  252. /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
  253. /data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +0 -0
  254. /data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +0 -0
  255. /data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +0 -0
  256. /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
  257. /data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +0 -0
  258. /data/vendor/libgit2/src/{message.c → libgit2/message.c} +0 -0
  259. /data/vendor/libgit2/src/{netops.h → libgit2/netops.h} +0 -0
  260. /data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +0 -0
  261. /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
  262. /data/vendor/libgit2/src/{object.h → libgit2/object.h} +0 -0
  263. /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
  264. /data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +0 -0
  265. /data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +0 -0
  266. /data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +0 -0
  267. /data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +0 -0
  268. /data/vendor/libgit2/src/{offmap.c → libgit2/offmap.c} +0 -0
  269. /data/vendor/libgit2/src/{offmap.h → libgit2/offmap.h} +0 -0
  270. /data/vendor/libgit2/src/{oidarray.c → libgit2/oidarray.c} +0 -0
  271. /data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +0 -0
  272. /data/vendor/libgit2/src/{oidmap.h → libgit2/oidmap.h} +0 -0
  273. /data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +0 -0
  274. /data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +0 -0
  275. /data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +0 -0
  276. /data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +0 -0
  277. /data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +0 -0
  278. /data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +0 -0
  279. /data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +0 -0
  280. /data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +0 -0
  281. /data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +0 -0
  282. /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
  283. /data/vendor/libgit2/src/{path.h → libgit2/path.h} +0 -0
  284. /data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +0 -0
  285. /data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +0 -0
  286. /data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +0 -0
  287. /data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +0 -0
  288. /data/vendor/libgit2/src/{push.c → libgit2/push.c} +0 -0
  289. /data/vendor/libgit2/src/{push.h → libgit2/push.h} +0 -0
  290. /data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +0 -0
  291. /data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +0 -0
  292. /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
  293. /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
  294. /data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +0 -0
  295. /data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +0 -0
  296. /data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +0 -0
  297. /data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +0 -0
  298. /data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +0 -0
  299. /data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +0 -0
  300. /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
  301. /data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +0 -0
  302. /data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +0 -0
  303. /data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +0 -0
  304. /data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +0 -0
  305. /data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +0 -0
  306. /data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +0 -0
  307. /data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +0 -0
  308. /data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +0 -0
  309. /data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +0 -0
  310. /data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +0 -0
  311. /data/vendor/libgit2/src/{status.c → libgit2/status.c} +0 -0
  312. /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
  313. /data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +0 -0
  314. /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
  315. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +0 -0
  316. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
  317. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +0 -0
  318. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +0 -0
  319. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +0 -0
  320. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +0 -0
  321. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
  322. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
  323. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
  324. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
  325. /data/vendor/libgit2/src/{streams → libgit2/streams}/socket.c +0 -0
  326. /data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +0 -0
  327. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +0 -0
  328. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
  329. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +0 -0
  330. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
  331. /data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +0 -0
  332. /data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +0 -0
  333. /data/vendor/libgit2/src/{sysdir.c → libgit2/sysdir.c} +0 -0
  334. /data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +0 -0
  335. /data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +0 -0
  336. /data/vendor/libgit2/src/{threadstate.c → libgit2/threadstate.c} +0 -0
  337. /data/vendor/libgit2/src/{threadstate.h → libgit2/threadstate.h} +0 -0
  338. /data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +0 -0
  339. /data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +0 -0
  340. /data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +0 -0
  341. /data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +0 -0
  342. /data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +0 -0
  343. /data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +0 -0
  344. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +0 -0
  345. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +0 -0
  346. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.c +0 -0
  347. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +0 -0
  348. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.c +0 -0
  349. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +0 -0
  350. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +0 -0
  351. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
  352. /data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +0 -0
  353. /data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +0 -0
  354. /data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -0
  355. /data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +0 -0
  356. /data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +0 -0
  357. /data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +0 -0
  358. /data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +0 -0
  359. /data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +0 -0
  360. /data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.h +0 -0
  361. /data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +0 -0
  362. /data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +0 -0
  363. /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
  364. /data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +0 -0
  365. /data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +0 -0
  366. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/git-xdiff.h +0 -0
  367. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiff.h +0 -0
  368. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.c +0 -0
  369. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.h +0 -0
  370. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.c +0 -0
  371. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.h +0 -0
  372. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xhistogram.c +0 -0
  373. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xinclude.h +0 -0
  374. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmacros.h +0 -0
  375. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmerge.c +0 -0
  376. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xpatience.c +0 -0
  377. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.c +0 -0
  378. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.h +0 -0
  379. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xtypes.h +0 -0
  380. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.c +0 -0
  381. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.h +0 -0
  382. /data/vendor/libgit2/src/{alloc.c → util/alloc.c} +0 -0
  383. /data/vendor/libgit2/src/{alloc.h → util/alloc.h} +0 -0
  384. /data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.c +0 -0
  385. /data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.c +0 -0
  386. /data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.c +0 -0
  387. /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
  388. /data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +0 -0
  389. /data/vendor/libgit2/src/{date.h → util/date.h} +0 -0
  390. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +0 -0
  391. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
  392. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
  393. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
  394. /data/vendor/libgit2/src/{integer.h → util/integer.h} +0 -0
  395. /data/vendor/libgit2/src/{khash.h → util/khash.h} +0 -0
  396. /data/vendor/libgit2/src/{pool.c → util/pool.c} +0 -0
  397. /data/vendor/libgit2/src/{posix.c → util/posix.c} +0 -0
  398. /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
  399. /data/vendor/libgit2/src/{regexp.c → util/regexp.c} +0 -0
  400. /data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +0 -0
  401. /data/vendor/libgit2/src/{str.c → util/str.c} +0 -0
  402. /data/vendor/libgit2/src/{strmap.c → util/strmap.c} +0 -0
  403. /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
  404. /data/vendor/libgit2/src/{thread.h → util/thread.h} +0 -0
  405. /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
  406. /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
  407. /data/vendor/libgit2/src/{vector.c → util/vector.c} +0 -0
  408. /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
  409. /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
  410. /data/vendor/libgit2/src/{win32 → util/win32}/error.c +0 -0
  411. /data/vendor/libgit2/src/{win32 → util/win32}/findfile.c +0 -0
  412. /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
  413. /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
  414. /data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +0 -0
  415. /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
  416. /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
  417. /data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.c +0 -0
  418. /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
  419. /data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +0 -0
  420. /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
  421. /data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +0 -0
  422. /data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +0 -0
  423. /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
  424. /data/vendor/libgit2/src/{zstream.c → util/zstream.c} +0 -0
@@ -0,0 +1,345 @@
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 <stdarg.h>
10
+ #include <stdint.h>
11
+
12
+ #include "progress.h"
13
+ #include "error.h"
14
+
15
+ /*
16
+ * Show updates to the percentage and number of objects received
17
+ * separately from the throughput to give an accurate progress while
18
+ * avoiding too much noise on the screen.
19
+ */
20
+ #define PROGRESS_UPDATE_TIME 0.10
21
+ #define THROUGHPUT_UPDATE_TIME 1.00
22
+
23
+ #define is_nl(c) ((c) == '\r' || (c) == '\n')
24
+
25
+ #define return_os_error(msg) do { \
26
+ git_error_set(GIT_ERROR_OS, "%s", msg); return -1; } while(0)
27
+
28
+ GIT_INLINE(size_t) no_nl_len(const char *str, size_t len)
29
+ {
30
+ size_t i = 0;
31
+
32
+ while (i < len && !is_nl(str[i]))
33
+ i++;
34
+
35
+ return i;
36
+ }
37
+
38
+ GIT_INLINE(size_t) nl_len(bool *has_nl, const char *str, size_t len)
39
+ {
40
+ size_t i = no_nl_len(str, len);
41
+
42
+ *has_nl = false;
43
+
44
+ while (i < len && is_nl(str[i])) {
45
+ *has_nl = true;
46
+ i++;
47
+ }
48
+
49
+ return i;
50
+ }
51
+
52
+ static int progress_write(cli_progress *progress, bool force, git_str *line)
53
+ {
54
+ bool has_nl;
55
+ size_t no_nl = no_nl_len(line->ptr, line->size);
56
+ size_t nl = nl_len(&has_nl, line->ptr + no_nl, line->size - no_nl);
57
+ double now = git__timer();
58
+ size_t i;
59
+
60
+ /* Avoid spamming the console with progress updates */
61
+ if (!force && line->ptr[line->size - 1] != '\n' && progress->last_update) {
62
+ if (now - progress->last_update < PROGRESS_UPDATE_TIME) {
63
+ git_str_clear(&progress->deferred);
64
+ git_str_put(&progress->deferred, line->ptr, line->size);
65
+ return git_str_oom(&progress->deferred) ? -1 : 0;
66
+ }
67
+ }
68
+
69
+ /*
70
+ * If there's something on this line already (eg, a progress line
71
+ * with only a trailing `\r` that we'll print over) then we need
72
+ * to really print over it in case we're writing a shorter line.
73
+ */
74
+ if (printf("%.*s", (int)no_nl, line->ptr) < 0)
75
+ return_os_error("could not print status");
76
+
77
+ if (progress->onscreen.size) {
78
+ for (i = no_nl; i < progress->onscreen.size; i++) {
79
+ if (printf(" ") < 0)
80
+ return_os_error("could not print status");
81
+ }
82
+ }
83
+
84
+ if (printf("%.*s", (int)nl, line->ptr + no_nl) < 0 ||
85
+ fflush(stdout) != 0)
86
+ return_os_error("could not print status");
87
+
88
+ git_str_clear(&progress->onscreen);
89
+
90
+ if (line->ptr[line->size - 1] == '\n') {
91
+ progress->last_update = 0;
92
+ } else {
93
+ git_str_put(&progress->onscreen, line->ptr, line->size);
94
+ progress->last_update = now;
95
+ }
96
+
97
+ git_str_clear(&progress->deferred);
98
+ return git_str_oom(&progress->onscreen) ? -1 : 0;
99
+ }
100
+
101
+ static int progress_printf(cli_progress *progress, bool force, const char *fmt, ...)
102
+ GIT_FORMAT_PRINTF(3, 4);
103
+
104
+ int progress_printf(cli_progress *progress, bool force, const char *fmt, ...)
105
+ {
106
+ git_str buf = GIT_BUF_INIT;
107
+ va_list ap;
108
+ int error;
109
+
110
+ va_start(ap, fmt);
111
+ error = git_str_vprintf(&buf, fmt, ap);
112
+ va_end(ap);
113
+
114
+ if (error < 0)
115
+ return error;
116
+
117
+ error = progress_write(progress, force, &buf);
118
+
119
+ git_str_dispose(&buf);
120
+ return error;
121
+ }
122
+
123
+ static int progress_complete(cli_progress *progress)
124
+ {
125
+ if (progress->deferred.size)
126
+ progress_write(progress, true, &progress->deferred);
127
+
128
+ if (progress->onscreen.size)
129
+ if (printf("\n") < 0)
130
+ return_os_error("could not print status");
131
+
132
+ git_str_clear(&progress->deferred);
133
+ git_str_clear(&progress->onscreen);
134
+ progress->last_update = 0;
135
+ progress->action_start = 0;
136
+ progress->action_finish = 0;
137
+
138
+ return 0;
139
+ }
140
+
141
+ GIT_INLINE(int) percent(size_t completed, size_t total)
142
+ {
143
+ if (total == 0)
144
+ return (completed == 0) ? 100 : 0;
145
+
146
+ return (int)(((double)completed / (double)total) * 100);
147
+ }
148
+
149
+ int cli_progress_fetch_sideband(const char *str, int len, void *payload)
150
+ {
151
+ cli_progress *progress = (cli_progress *)payload;
152
+ size_t remain;
153
+
154
+ if (len <= 0)
155
+ return 0;
156
+
157
+ /* Accumulate the sideband data, then print it line-at-a-time. */
158
+ if (git_str_put(&progress->sideband, str, len) < 0)
159
+ return -1;
160
+
161
+ str = progress->sideband.ptr;
162
+ remain = progress->sideband.size;
163
+
164
+ while (remain) {
165
+ bool has_nl;
166
+ size_t line_len = nl_len(&has_nl, str, remain);
167
+
168
+ if (!has_nl)
169
+ break;
170
+
171
+ if (line_len < INT_MAX) {
172
+ int error = progress_printf(progress, true,
173
+ "remote: %.*s", (int)line_len, str);
174
+
175
+ if (error < 0)
176
+ return error;
177
+ }
178
+
179
+ str += line_len;
180
+ remain -= line_len;
181
+ }
182
+
183
+ git_str_consume_bytes(&progress->sideband, (progress->sideband.size - remain));
184
+
185
+ return 0;
186
+ }
187
+
188
+ static int fetch_receiving(
189
+ cli_progress *progress,
190
+ const git_indexer_progress *stats)
191
+ {
192
+ char *recv_units[] = { "B", "KiB", "MiB", "GiB", "TiB", NULL };
193
+ char *rate_units[] = { "B/s", "KiB/s", "MiB/s", "GiB/s", "TiB/s", NULL };
194
+
195
+ double now, recv_len, rate, elapsed;
196
+ size_t recv_unit_idx = 0, rate_unit_idx = 0;
197
+ bool done = (stats->received_objects == stats->total_objects);
198
+
199
+ if (!progress->action_start)
200
+ progress->action_start = git__timer();
201
+
202
+ if (done && progress->action_finish)
203
+ now = progress->action_finish;
204
+ else if (done)
205
+ progress->action_finish = now = git__timer();
206
+ else
207
+ now = git__timer();
208
+
209
+ if (progress->throughput_update &&
210
+ now - progress->throughput_update < THROUGHPUT_UPDATE_TIME) {
211
+ elapsed = progress->throughput_update -
212
+ progress->action_start;
213
+ recv_len = progress->throughput_bytes;
214
+ } else {
215
+ elapsed = now - progress->action_start;
216
+ recv_len = (double)stats->received_bytes;
217
+
218
+ progress->throughput_update = now;
219
+ progress->throughput_bytes = recv_len;
220
+ }
221
+
222
+ rate = elapsed ? recv_len / elapsed : 0;
223
+
224
+ while (recv_len > 1024 && recv_units[recv_unit_idx+1]) {
225
+ recv_len /= 1024;
226
+ recv_unit_idx++;
227
+ }
228
+
229
+ while (rate > 1024 && rate_units[rate_unit_idx+1]) {
230
+ rate /= 1024;
231
+ rate_unit_idx++;
232
+ }
233
+
234
+ return progress_printf(progress, false,
235
+ "Receiving objects: %3d%% (%d/%d), %.2f %s | %.2f %s%s\r",
236
+ percent(stats->received_objects, stats->total_objects),
237
+ stats->received_objects,
238
+ stats->total_objects,
239
+ recv_len, recv_units[recv_unit_idx],
240
+ rate, rate_units[rate_unit_idx],
241
+ done ? ", done." : "");
242
+ }
243
+
244
+ static int fetch_resolving(
245
+ cli_progress *progress,
246
+ const git_indexer_progress *stats)
247
+ {
248
+ bool done = (stats->indexed_deltas == stats->total_deltas);
249
+
250
+ return progress_printf(progress, false,
251
+ "Resolving deltas: %3d%% (%d/%d)%s\r",
252
+ percent(stats->indexed_deltas, stats->total_deltas),
253
+ stats->indexed_deltas, stats->total_deltas,
254
+ done ? ", done." : "");
255
+ }
256
+
257
+ int cli_progress_fetch_transfer(const git_indexer_progress *stats, void *payload)
258
+ {
259
+ cli_progress *progress = (cli_progress *)payload;
260
+ int error = 0;
261
+
262
+ switch (progress->action) {
263
+ case CLI_PROGRESS_NONE:
264
+ progress->action = CLI_PROGRESS_RECEIVING;
265
+ /* fall through */
266
+
267
+ case CLI_PROGRESS_RECEIVING:
268
+ if ((error = fetch_receiving(progress, stats)) < 0)
269
+ break;
270
+
271
+ /*
272
+ * Upgrade from receiving to resolving; do this after the
273
+ * final call to cli_progress_fetch_receiving (above) to
274
+ * ensure that we've printed a final "done" string after
275
+ * any sideband data.
276
+ */
277
+ if (!stats->indexed_deltas)
278
+ break;
279
+
280
+ progress_complete(progress);
281
+ progress->action = CLI_PROGRESS_RESOLVING;
282
+ /* fall through */
283
+
284
+ case CLI_PROGRESS_RESOLVING:
285
+ error = fetch_resolving(progress, stats);
286
+ break;
287
+
288
+ default:
289
+ /* should not be reached */
290
+ GIT_ASSERT(!"unexpected progress state");
291
+ }
292
+
293
+ return error;
294
+ }
295
+
296
+ void cli_progress_checkout(
297
+ const char *path,
298
+ size_t completed_steps,
299
+ size_t total_steps,
300
+ void *payload)
301
+ {
302
+ cli_progress *progress = (cli_progress *)payload;
303
+ bool done = (completed_steps == total_steps);
304
+
305
+ GIT_UNUSED(path);
306
+
307
+ if (progress->action != CLI_PROGRESS_CHECKING_OUT) {
308
+ progress_complete(progress);
309
+ progress->action = CLI_PROGRESS_CHECKING_OUT;
310
+ }
311
+
312
+ progress_printf(progress, false,
313
+ "Checking out files: %3d%% (%" PRIuZ "/%" PRIuZ ")%s\r",
314
+ percent(completed_steps, total_steps),
315
+ completed_steps, total_steps,
316
+ done ? ", done." : "");
317
+ }
318
+
319
+ int cli_progress_abort(cli_progress *progress)
320
+ {
321
+ if (progress->onscreen.size > 0 && printf("\n") < 0)
322
+ return_os_error("could not print status");
323
+
324
+ return 0;
325
+ }
326
+
327
+ int cli_progress_finish(cli_progress *progress)
328
+ {
329
+ int error = progress->action ? progress_complete(progress) : 0;
330
+
331
+ progress->action = 0;
332
+ return error;
333
+ }
334
+
335
+ void cli_progress_dispose(cli_progress *progress)
336
+ {
337
+ if (progress == NULL)
338
+ return;
339
+
340
+ git_str_dispose(&progress->sideband);
341
+ git_str_dispose(&progress->onscreen);
342
+ git_str_dispose(&progress->deferred);
343
+
344
+ memset(progress, 0, sizeof(cli_progress));
345
+ }
@@ -0,0 +1,117 @@
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
+ #ifndef CLI_progress_h__
9
+ #define CLI_progress_h__
10
+
11
+ #include <git2.h>
12
+ #include "str.h"
13
+
14
+ /*
15
+ * A general purpose set of progress printing functions. An individual
16
+ * `cli_progress` object is capable of displaying progress for a single
17
+ * function, even if that function displays multiple pieces of progress
18
+ * (like `git_clone`). `cli_progress_finish` should be called after
19
+ * any function invocation to re-set state.
20
+ */
21
+
22
+ typedef enum {
23
+ CLI_PROGRESS_NONE,
24
+ CLI_PROGRESS_RECEIVING,
25
+ CLI_PROGRESS_RESOLVING,
26
+ CLI_PROGRESS_CHECKING_OUT
27
+ } cli_progress_t;
28
+
29
+ typedef struct {
30
+ cli_progress_t action;
31
+
32
+ /* Actions may time themselves (eg fetch) but are not required to */
33
+ double action_start;
34
+ double action_finish;
35
+
36
+ /* Last console update, avoid too frequent updates. */
37
+ double last_update;
38
+
39
+ /* Accumulators for partial output and deferred updates. */
40
+ git_str sideband;
41
+ git_str onscreen;
42
+ git_str deferred;
43
+
44
+ /* Last update about throughput */
45
+ double throughput_update;
46
+ double throughput_bytes;
47
+ } cli_progress;
48
+
49
+ #define CLI_PROGRESS_INIT { 0 }
50
+
51
+ /**
52
+ * Prints sideband data from fetch to the console. Suitable for a
53
+ * `sideband_progress` callback for `git_fetch_options`.
54
+ *
55
+ * @param str The sideband string
56
+ * @param len The length of the sideband string
57
+ * @param payload A pointer to the cli_progress
58
+ * @return 0 on success, -1 on failure
59
+ */
60
+ extern int cli_progress_fetch_sideband(
61
+ const char *str,
62
+ int len,
63
+ void *payload);
64
+
65
+ /**
66
+ * Prints fetch transfer statistics to the console. Suitable for a
67
+ * `transfer_progress` callback for `git_fetch_options`.
68
+ *
69
+ * @param stats The indexer stats
70
+ * @param payload A pointer to the cli_progress
71
+ * @return 0 on success, -1 on failure
72
+ */
73
+ extern int cli_progress_fetch_transfer(
74
+ const git_indexer_progress *stats,
75
+ void *payload);
76
+
77
+ /**
78
+ * Prints checkout progress to the console. Suitable for a
79
+ * `progress_cb` callback for `git_checkout_options`.
80
+ *
81
+ * @param path The path being written
82
+ * @param completed_steps The completed checkout steps
83
+ * @param total_steps The total number of checkout steps
84
+ * @param payload A pointer to the cli_progress
85
+ */
86
+ extern void cli_progress_checkout(
87
+ const char *path,
88
+ size_t completed_steps,
89
+ size_t total_steps,
90
+ void *payload);
91
+
92
+ /**
93
+ * Stop displaying progress quickly; suitable for stopping an application
94
+ * quickly. Does not display any lines that were buffered, just gets the
95
+ * console back to a sensible place.
96
+ *
97
+ * @param progress The progress information
98
+ * @return 0 on success, -1 on failure
99
+ */
100
+ extern int cli_progress_abort(cli_progress *progress);
101
+
102
+ /**
103
+ * Finishes displaying progress; flushes any buffered output.
104
+ *
105
+ * @param progress The progress information
106
+ * @return 0 on success, -1 on failure
107
+ */
108
+ extern int cli_progress_finish(cli_progress *progress);
109
+
110
+ /**
111
+ * Disposes the progress information.
112
+ *
113
+ * @param progress The progress information
114
+ */
115
+ extern void cli_progress_dispose(cli_progress *progress);
116
+
117
+ #endif /* CLI_progress_h__ */
@@ -0,0 +1,20 @@
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
+ #ifndef CLI_sighandler_h__
9
+ #define CLI_sighandler_h__
10
+
11
+ /**
12
+ * Sets up a signal handler that will run when the process is interrupted
13
+ * (via SIGINT on POSIX or Control-C or Control-Break on Windows).
14
+ *
15
+ * @param handler The function to run on interrupt
16
+ * @return 0 on success, -1 on failure
17
+ */
18
+ int cli_sighandler_set_interrupt(void (*handler)(void));
19
+
20
+ #endif /* CLI_sighandler_h__ */
@@ -0,0 +1,36 @@
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 <stdint.h>
9
+ #include <signal.h>
10
+ #include "git2_util.h"
11
+ #include "cli.h"
12
+
13
+ static void (*interrupt_handler)(void) = NULL;
14
+
15
+ static void interrupt_proxy(int signal)
16
+ {
17
+ GIT_UNUSED(signal);
18
+ interrupt_handler();
19
+ }
20
+
21
+ int cli_sighandler_set_interrupt(void (*handler)(void))
22
+ {
23
+ void (*result)(int);
24
+
25
+ if ((interrupt_handler = handler) != NULL)
26
+ result = signal(SIGINT, interrupt_proxy);
27
+ else
28
+ result = signal(SIGINT, SIG_DFL);
29
+
30
+ if (result == SIG_ERR) {
31
+ git_error_set(GIT_ERROR_OS, "could not set signal handler");
32
+ return -1;
33
+ }
34
+
35
+ return 0;
36
+ }
@@ -0,0 +1,3 @@
1
+ #include <git2.h>
2
+
3
+ #include "cli.h"
@@ -0,0 +1,37 @@
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 "git2_util.h"
9
+ #include <windows.h>
10
+
11
+ #include "cli.h"
12
+
13
+ static void (*interrupt_handler)(void) = NULL;
14
+
15
+ static BOOL WINAPI interrupt_proxy(DWORD signal)
16
+ {
17
+ GIT_UNUSED(signal);
18
+ interrupt_handler();
19
+ return TRUE;
20
+ }
21
+
22
+ int cli_sighandler_set_interrupt(void (*handler)(void))
23
+ {
24
+ BOOL result;
25
+
26
+ if ((interrupt_handler = handler) != NULL)
27
+ result = SetConsoleCtrlHandler(interrupt_proxy, FALSE);
28
+ else
29
+ result = SetConsoleCtrlHandler(NULL, FALSE);
30
+
31
+ if (!result) {
32
+ git_error_set(GIT_ERROR_OS, "could not set control control handler");
33
+ return -1;
34
+ }
35
+
36
+ return 0;
37
+ }
@@ -46,8 +46,17 @@
46
46
  #cmakedefine GIT_SHA1_WIN32 1
47
47
  #cmakedefine GIT_SHA1_COMMON_CRYPTO 1
48
48
  #cmakedefine GIT_SHA1_OPENSSL 1
49
+ #cmakedefine GIT_SHA1_OPENSSL_DYNAMIC 1
49
50
  #cmakedefine GIT_SHA1_MBEDTLS 1
50
51
 
52
+ #cmakedefine GIT_SHA256_BUILTIN 1
53
+ #cmakedefine GIT_SHA256_WIN32 1
54
+ #cmakedefine GIT_SHA256_COMMON_CRYPTO 1
55
+ #cmakedefine GIT_SHA256_OPENSSL 1
56
+ #cmakedefine GIT_SHA256_OPENSSL_DYNAMIC 1
57
+ #cmakedefine GIT_SHA256_MBEDTLS 1
58
+
51
59
  #cmakedefine GIT_RAND_GETENTROPY 1
60
+ #cmakedefine GIT_RAND_GETLOADAVG 1
52
61
 
53
62
  #endif
@@ -0,0 +1,131 @@
1
+ # libgit2: the shared library: this CMakeLists.txt compiles the core
2
+ # git library functionality.
3
+
4
+ add_library(libgit2 OBJECT)
5
+ set_target_properties(libgit2 PROPERTIES C_STANDARD 90)
6
+ set_target_properties(libgit2 PROPERTIES C_EXTENSIONS OFF)
7
+
8
+ include(PkgBuildConfig)
9
+
10
+ set(LIBGIT2_INCLUDES
11
+ "${PROJECT_BINARY_DIR}/src"
12
+ "${PROJECT_SOURCE_DIR}/src/libgit2"
13
+ "${PROJECT_SOURCE_DIR}/src/util"
14
+ "${PROJECT_SOURCE_DIR}/include")
15
+
16
+ if(WIN32 AND EMBED_SSH_PATH)
17
+ file(GLOB SRC_SSH "${EMBED_SSH_PATH}/src/*.c")
18
+ list(SORT SRC_SSH)
19
+ target_sources(libgit2 PRIVATE ${SRC_SSH})
20
+
21
+ list(APPEND LIBGIT2_SYSTEM_INCLUDES "${EMBED_SSH_PATH}/include")
22
+ file(WRITE "${EMBED_SSH_PATH}/src/libssh2_config.h" "#define HAVE_WINCNG\n#define LIBSSH2_WINCNG\n#include \"../win32/libssh2_config.h\"")
23
+ set(GIT_SSH 1)
24
+ endif()
25
+
26
+ # Collect sourcefiles
27
+ file(GLOB SRC_H
28
+ "${PROJECT_SOURCE_DIR}/include/git2.h"
29
+ "${PROJECT_SOURCE_DIR}/include/git2/*.h"
30
+ "${PROJECT_SOURCE_DIR}/include/git2/sys/*.h")
31
+ list(SORT SRC_H)
32
+ target_sources(libgit2 PRIVATE ${SRC_H})
33
+
34
+ file(GLOB SRC_GIT2 *.c *.h
35
+ streams/*.c streams/*.h
36
+ transports/*.c transports/*.h
37
+ xdiff/*.c xdiff/*.h)
38
+ list(SORT SRC_GIT2)
39
+ target_sources(libgit2 PRIVATE ${SRC_GIT2})
40
+
41
+ if(WIN32 AND NOT CYGWIN)
42
+ # Add resource information on Windows
43
+ set(SRC_RC "git2.rc")
44
+ endif()
45
+
46
+ if(APPLE)
47
+ # The old Secure Transport API has been deprecated in macOS 10.15.
48
+ set_source_files_properties(streams/stransport.c PROPERTIES COMPILE_FLAGS -Wno-deprecated)
49
+ endif()
50
+
51
+ # the xdiff dependency is not (yet) warning-free, disable warnings
52
+ # as errors for the xdiff sources until we've sorted them out
53
+ if(MSVC)
54
+ set_source_files_properties(xdiff/xdiffi.c PROPERTIES COMPILE_FLAGS -WX-)
55
+ set_source_files_properties(xdiff/xemit.c PROPERTIES COMPILE_FLAGS -WX-)
56
+ set_source_files_properties(xdiff/xhistogram.c PROPERTIES COMPILE_FLAGS -WX-)
57
+ set_source_files_properties(xdiff/xmerge.c PROPERTIES COMPILE_FLAGS -WX-)
58
+ set_source_files_properties(xdiff/xutils.c PROPERTIES COMPILE_FLAGS -WX-)
59
+ set_source_files_properties(xdiff/xpatience.c PROPERTIES COMPILE_FLAGS -WX-)
60
+ else()
61
+ set_source_files_properties(xdiff/xdiffi.c PROPERTIES COMPILE_FLAGS "-Wno-sign-compare -Wno-unused-parameter")
62
+ set_source_files_properties(xdiff/xemit.c PROPERTIES COMPILE_FLAGS "-Wno-sign-compare -Wno-unused-parameter")
63
+ set_source_files_properties(xdiff/xhistogram.c PROPERTIES COMPILE_FLAGS "-Wno-sign-compare")
64
+ set_source_files_properties(xdiff/xutils.c PROPERTIES COMPILE_FLAGS "-Wno-sign-compare")
65
+ set_source_files_properties(xdiff/xpatience.c PROPERTIES COMPILE_FLAGS "-Wno-sign-compare")
66
+ endif()
67
+
68
+ ide_split_sources(libgit2)
69
+ list(APPEND LIBGIT2_OBJECTS $<TARGET_OBJECTS:util> $<TARGET_OBJECTS:libgit2> ${LIBGIT2_DEPENDENCY_OBJECTS})
70
+
71
+ target_include_directories(libgit2 PRIVATE ${LIBGIT2_INCLUDES} ${LIBGIT2_DEPENDENCY_INCLUDES} PUBLIC ${PROJECT_SOURCE_DIR}/include)
72
+ target_include_directories(libgit2 SYSTEM PRIVATE ${LIBGIT2_SYSTEM_INCLUDES})
73
+
74
+ set(LIBGIT2_INCLUDES ${LIBGIT2_INCLUDES} PARENT_SCOPE)
75
+ set(LIBGIT2_OBJECTS ${LIBGIT2_OBJECTS} PARENT_SCOPE)
76
+ set(LIBGIT2_DEPENDENCY_INCLUDES ${LIBGIT2_DEPENDENCY_INCLUDES} PARENT_SCOPE)
77
+ set(LIBGIT2_DEPENDENCY_OBJECTS ${LIBGIT2_DEPENDENCY_OBJECTS} PARENT_SCOPE)
78
+ set(LIBGIT2_SYSTEM_INCLUDES ${LIBGIT2_SYSTEM_INCLUDES} PARENT_SCOPE)
79
+ set(LIBGIT2_SYSTEM_LIBS ${LIBGIT2_SYSTEM_LIBS} PARENT_SCOPE)
80
+
81
+ #
82
+ # Compile and link libgit2
83
+ #
84
+
85
+ add_library(libgit2package ${SRC_RC} ${LIBGIT2_OBJECTS})
86
+ target_link_libraries(libgit2package ${LIBGIT2_SYSTEM_LIBS})
87
+
88
+ set_target_properties(libgit2package PROPERTIES C_STANDARD 90)
89
+ set_target_properties(libgit2package PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
90
+ set_target_properties(libgit2package PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
91
+ set_target_properties(libgit2package PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
92
+
93
+ # Workaround for Cmake bug #0011240 (see http://public.kitware.com/Bug/view.php?id=11240)
94
+ # Win64+MSVC+static libs = linker error
95
+ if(MSVC AND GIT_ARCH_64 AND NOT BUILD_SHARED_LIBS)
96
+ set_target_properties(libgit2package PROPERTIES STATIC_LIBRARY_FLAGS "/MACHINE:x64")
97
+ endif()
98
+
99
+ ide_split_sources(libgit2package)
100
+
101
+ if(SONAME)
102
+ set_target_properties(libgit2package PROPERTIES VERSION ${libgit2_VERSION})
103
+ set_target_properties(libgit2package PROPERTIES SOVERSION "${libgit2_VERSION_MAJOR}.${libgit2_VERSION_MINOR}")
104
+ if(LIBGIT2_FILENAME)
105
+ target_compile_definitions(libgit2package PRIVATE LIBGIT2_FILENAME=\"${LIBGIT2_FILENAME}\")
106
+ set_target_properties(libgit2package PROPERTIES OUTPUT_NAME ${LIBGIT2_FILENAME})
107
+ elseif(DEFINED LIBGIT2_PREFIX)
108
+ set_target_properties(libgit2package PROPERTIES PREFIX "${LIBGIT2_PREFIX}")
109
+ endif()
110
+ endif()
111
+
112
+ pkg_build_config(NAME libgit2
113
+ VERSION ${libgit2_VERSION}
114
+ DESCRIPTION "The git library, take 2"
115
+ LIBS_SELF git2
116
+ PRIVATE_LIBS ${LIBGIT2_PC_LIBS}
117
+ REQUIRES ${LIBGIT2_PC_REQUIRES})
118
+
119
+ if(MSVC_IDE)
120
+ # Precompiled headers
121
+ set_target_properties(libgit2package PROPERTIES COMPILE_FLAGS "/Yuprecompiled.h /FIprecompiled.h")
122
+ set_source_files_properties(win32/precompiled.c COMPILE_FLAGS "/Ycprecompiled.h")
123
+ endif()
124
+
125
+ # Install
126
+ install(TARGETS libgit2package
127
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
128
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
129
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
130
+ install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/git2 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
131
+ install(FILES ${PROJECT_SOURCE_DIR}/include/git2.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})