rugged 1.6.3 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (443) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rugged/rugged_allocator.c +0 -54
  3. data/lib/rugged/version.rb +1 -1
  4. data/vendor/libgit2/AUTHORS +1 -0
  5. data/vendor/libgit2/CMakeLists.txt +25 -17
  6. data/vendor/libgit2/COPYING +195 -1
  7. data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
  8. data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
  9. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  10. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +4 -4
  11. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
  12. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +34 -6
  13. data/vendor/libgit2/cmake/SelectHashes.cmake +32 -11
  14. data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
  15. data/vendor/libgit2/cmake/SelectSSH.cmake +22 -17
  16. data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
  17. data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
  18. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  19. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  20. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  21. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  22. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  23. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  24. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
  25. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  26. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  27. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  28. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
  29. data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
  30. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  31. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  32. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  33. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  34. data/vendor/libgit2/deps/pcre/CMakeLists.txt +1 -0
  35. data/vendor/libgit2/deps/pcre/LICENCE +5 -5
  36. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  37. data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
  38. data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
  39. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
  40. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/git-xdiff.h +4 -1
  41. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.c +19 -18
  42. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.h +2 -4
  43. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.c +3 -3
  44. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xhistogram.c +7 -18
  45. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmacros.h +18 -1
  46. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmerge.c +22 -20
  47. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xpatience.c +21 -30
  48. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.c +13 -30
  49. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.c +18 -1
  50. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.h +2 -1
  51. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  52. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  53. data/vendor/libgit2/deps/zlib/adler32.c +5 -27
  54. data/vendor/libgit2/deps/zlib/crc32.c +94 -167
  55. data/vendor/libgit2/deps/zlib/deflate.c +358 -435
  56. data/vendor/libgit2/deps/zlib/deflate.h +41 -10
  57. data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
  58. data/vendor/libgit2/deps/zlib/infback.c +17 -30
  59. data/vendor/libgit2/deps/zlib/inffast.c +1 -4
  60. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  61. data/vendor/libgit2/deps/zlib/inflate.c +36 -102
  62. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  63. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  64. data/vendor/libgit2/deps/zlib/trees.c +287 -352
  65. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  66. data/vendor/libgit2/deps/zlib/zlib.h +202 -202
  67. data/vendor/libgit2/deps/zlib/zutil.c +18 -44
  68. data/vendor/libgit2/deps/zlib/zutil.h +13 -33
  69. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  70. data/vendor/libgit2/include/git2/apply.h +27 -6
  71. data/vendor/libgit2/include/git2/attr.h +17 -4
  72. data/vendor/libgit2/include/git2/blame.h +133 -28
  73. data/vendor/libgit2/include/git2/blob.h +71 -28
  74. data/vendor/libgit2/include/git2/branch.h +22 -15
  75. data/vendor/libgit2/include/git2/buffer.h +6 -4
  76. data/vendor/libgit2/include/git2/cert.h +2 -1
  77. data/vendor/libgit2/include/git2/checkout.h +83 -32
  78. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  79. data/vendor/libgit2/include/git2/clone.h +25 -9
  80. data/vendor/libgit2/include/git2/commit.h +132 -3
  81. data/vendor/libgit2/include/git2/common.h +138 -56
  82. data/vendor/libgit2/include/git2/config.h +93 -23
  83. data/vendor/libgit2/include/git2/credential.h +30 -2
  84. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  85. data/vendor/libgit2/include/git2/deprecated.h +133 -3
  86. data/vendor/libgit2/include/git2/describe.h +13 -1
  87. data/vendor/libgit2/include/git2/diff.h +77 -9
  88. data/vendor/libgit2/include/git2/email.h +9 -29
  89. data/vendor/libgit2/include/git2/errors.h +49 -74
  90. data/vendor/libgit2/include/git2/filter.h +14 -7
  91. data/vendor/libgit2/include/git2/global.h +8 -1
  92. data/vendor/libgit2/include/git2/graph.h +3 -2
  93. data/vendor/libgit2/include/git2/ignore.h +10 -0
  94. data/vendor/libgit2/include/git2/index.h +100 -6
  95. data/vendor/libgit2/include/git2/indexer.h +21 -4
  96. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  97. data/vendor/libgit2/include/git2/merge.h +46 -1
  98. data/vendor/libgit2/include/git2/message.h +2 -2
  99. data/vendor/libgit2/include/git2/net.h +3 -1
  100. data/vendor/libgit2/include/git2/notes.h +9 -6
  101. data/vendor/libgit2/include/git2/object.h +9 -8
  102. data/vendor/libgit2/include/git2/odb.h +91 -49
  103. data/vendor/libgit2/include/git2/odb_backend.h +80 -52
  104. data/vendor/libgit2/include/git2/oid.h +24 -25
  105. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  106. data/vendor/libgit2/include/git2/pack.h +13 -1
  107. data/vendor/libgit2/include/git2/patch.h +2 -3
  108. data/vendor/libgit2/include/git2/pathspec.h +9 -0
  109. data/vendor/libgit2/include/git2/proxy.h +10 -0
  110. data/vendor/libgit2/include/git2/rebase.h +9 -6
  111. data/vendor/libgit2/include/git2/refdb.h +2 -2
  112. data/vendor/libgit2/include/git2/reflog.h +3 -2
  113. data/vendor/libgit2/include/git2/refs.h +9 -6
  114. data/vendor/libgit2/include/git2/refspec.h +14 -4
  115. data/vendor/libgit2/include/git2/remote.h +112 -18
  116. data/vendor/libgit2/include/git2/repository.h +61 -15
  117. data/vendor/libgit2/include/git2/reset.h +16 -3
  118. data/vendor/libgit2/include/git2/revert.h +9 -4
  119. data/vendor/libgit2/include/git2/revparse.h +3 -3
  120. data/vendor/libgit2/include/git2/revwalk.h +3 -2
  121. data/vendor/libgit2/include/git2/signature.h +46 -1
  122. data/vendor/libgit2/include/git2/stash.h +17 -3
  123. data/vendor/libgit2/include/git2/status.h +10 -6
  124. data/vendor/libgit2/include/git2/stdint.h +87 -85
  125. data/vendor/libgit2/include/git2/strarray.h +2 -3
  126. data/vendor/libgit2/include/git2/submodule.h +20 -9
  127. data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
  128. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  129. data/vendor/libgit2/include/git2/sys/commit_graph.h +109 -58
  130. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  131. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  132. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  133. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  134. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  135. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  136. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  137. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  138. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  139. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  140. data/vendor/libgit2/include/git2/sys/midx.h +47 -4
  141. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
  142. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  143. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  144. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  145. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  146. data/vendor/libgit2/include/git2/sys/remote.h +8 -1
  147. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  148. data/vendor/libgit2/include/git2/sys/stream.h +25 -2
  149. data/vendor/libgit2/include/git2/sys/transport.h +44 -5
  150. data/vendor/libgit2/include/git2/tag.h +3 -1
  151. data/vendor/libgit2/include/git2/trace.h +9 -3
  152. data/vendor/libgit2/include/git2/transaction.h +3 -2
  153. data/vendor/libgit2/include/git2/transport.h +11 -3
  154. data/vendor/libgit2/include/git2/tree.h +16 -5
  155. data/vendor/libgit2/include/git2/types.h +19 -3
  156. data/vendor/libgit2/include/git2/version.h +44 -8
  157. data/vendor/libgit2/include/git2/worktree.h +19 -7
  158. data/vendor/libgit2/src/CMakeLists.txt +40 -15
  159. data/vendor/libgit2/src/cli/CMakeLists.txt +2 -2
  160. data/vendor/libgit2/src/cli/cmd.c +1 -1
  161. data/vendor/libgit2/src/cli/cmd.h +4 -0
  162. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  163. data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
  164. data/vendor/libgit2/src/cli/cmd_clone.c +27 -13
  165. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  166. data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
  167. data/vendor/libgit2/src/cli/cmd_help.c +6 -7
  168. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  169. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  170. data/vendor/libgit2/src/cli/common.c +168 -0
  171. data/vendor/libgit2/src/cli/common.h +63 -0
  172. data/vendor/libgit2/src/cli/error.h +1 -1
  173. data/vendor/libgit2/src/cli/main.c +52 -24
  174. data/vendor/libgit2/src/cli/opt.c +29 -3
  175. data/vendor/libgit2/src/cli/opt.h +21 -3
  176. data/vendor/libgit2/src/cli/opt_usage.c +102 -33
  177. data/vendor/libgit2/src/cli/opt_usage.h +6 -1
  178. data/vendor/libgit2/src/cli/progress.c +60 -10
  179. data/vendor/libgit2/src/cli/progress.h +16 -4
  180. data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
  181. data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
  182. data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
  183. data/vendor/libgit2/src/libgit2/CMakeLists.txt +27 -27
  184. data/vendor/libgit2/src/libgit2/annotated_commit.c +2 -2
  185. data/vendor/libgit2/src/libgit2/annotated_commit.h +1 -1
  186. data/vendor/libgit2/src/libgit2/apply.c +14 -16
  187. data/vendor/libgit2/src/libgit2/attr.c +30 -13
  188. data/vendor/libgit2/src/libgit2/attr_file.c +7 -2
  189. data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
  190. data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
  191. data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
  192. data/vendor/libgit2/src/libgit2/blame.c +152 -59
  193. data/vendor/libgit2/src/libgit2/blame.h +1 -0
  194. data/vendor/libgit2/src/libgit2/blame_git.c +0 -1
  195. data/vendor/libgit2/src/libgit2/branch.c +2 -2
  196. data/vendor/libgit2/src/libgit2/cache.c +22 -17
  197. data/vendor/libgit2/src/libgit2/cache.h +7 -9
  198. data/vendor/libgit2/src/libgit2/checkout.c +34 -24
  199. data/vendor/libgit2/src/libgit2/checkout.h +0 -2
  200. data/vendor/libgit2/src/libgit2/cherrypick.c +4 -5
  201. data/vendor/libgit2/src/libgit2/clone.c +186 -164
  202. data/vendor/libgit2/src/libgit2/clone.h +4 -1
  203. data/vendor/libgit2/src/libgit2/commit.c +123 -9
  204. data/vendor/libgit2/src/libgit2/commit_graph.c +166 -88
  205. data/vendor/libgit2/src/libgit2/commit_graph.h +21 -6
  206. data/vendor/libgit2/src/libgit2/commit_list.c +12 -5
  207. data/vendor/libgit2/src/libgit2/commit_list.h +1 -0
  208. data/vendor/libgit2/src/libgit2/config.c +394 -300
  209. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  210. data/vendor/libgit2/src/libgit2/config.h +9 -4
  211. data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
  212. data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
  213. data/vendor/libgit2/src/libgit2/config_file.c +113 -96
  214. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  215. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  216. data/vendor/libgit2/src/libgit2/config_mem.c +194 -40
  217. data/vendor/libgit2/src/libgit2/config_parse.c +10 -9
  218. data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
  219. data/vendor/libgit2/src/libgit2/describe.c +34 -31
  220. data/vendor/libgit2/src/libgit2/diff.c +17 -8
  221. data/vendor/libgit2/src/libgit2/diff.h +6 -6
  222. data/vendor/libgit2/src/libgit2/diff_driver.c +12 -19
  223. data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
  224. data/vendor/libgit2/src/libgit2/diff_file.c +7 -7
  225. data/vendor/libgit2/src/libgit2/diff_generate.c +39 -18
  226. data/vendor/libgit2/src/libgit2/diff_parse.c +22 -6
  227. data/vendor/libgit2/src/libgit2/diff_print.c +88 -13
  228. data/vendor/libgit2/src/libgit2/diff_tform.c +40 -12
  229. data/vendor/libgit2/src/libgit2/diff_xdiff.h +1 -1
  230. data/vendor/libgit2/src/libgit2/email.c +5 -3
  231. data/vendor/libgit2/src/libgit2/fetch.c +39 -9
  232. data/vendor/libgit2/src/libgit2/fetch.h +0 -2
  233. data/vendor/libgit2/src/libgit2/fetchhead.c +11 -9
  234. data/vendor/libgit2/src/libgit2/filter.c +5 -5
  235. data/vendor/libgit2/src/libgit2/git2.rc +3 -3
  236. data/vendor/libgit2/src/libgit2/grafts.c +270 -0
  237. data/vendor/libgit2/src/libgit2/grafts.h +35 -0
  238. data/vendor/libgit2/src/libgit2/graph.c +1 -1
  239. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  240. data/vendor/libgit2/src/libgit2/ident.c +3 -3
  241. data/vendor/libgit2/src/libgit2/ignore.c +9 -5
  242. data/vendor/libgit2/src/libgit2/index.c +392 -208
  243. data/vendor/libgit2/src/libgit2/index.h +16 -3
  244. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  245. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  246. data/vendor/libgit2/src/libgit2/indexer.c +44 -41
  247. data/vendor/libgit2/src/libgit2/iterator.c +34 -13
  248. data/vendor/libgit2/src/libgit2/iterator.h +3 -0
  249. data/vendor/libgit2/src/libgit2/libgit2.c +155 -331
  250. data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
  251. data/vendor/libgit2/src/libgit2/merge.c +56 -46
  252. data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
  253. data/vendor/libgit2/src/libgit2/merge_file.c +0 -2
  254. data/vendor/libgit2/src/libgit2/midx.c +86 -44
  255. data/vendor/libgit2/src/libgit2/midx.h +13 -3
  256. data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
  257. data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
  258. data/vendor/libgit2/src/libgit2/notes.c +9 -8
  259. data/vendor/libgit2/src/libgit2/object.c +42 -16
  260. data/vendor/libgit2/src/libgit2/object.h +6 -0
  261. data/vendor/libgit2/src/libgit2/odb.c +16 -9
  262. data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
  263. data/vendor/libgit2/src/libgit2/odb_pack.c +28 -7
  264. data/vendor/libgit2/src/libgit2/oid.c +35 -2
  265. data/vendor/libgit2/src/libgit2/oid.h +11 -0
  266. data/vendor/libgit2/src/libgit2/oidarray.c +49 -3
  267. data/vendor/libgit2/src/libgit2/oidarray.h +5 -1
  268. data/vendor/libgit2/src/libgit2/pack-objects.c +77 -43
  269. data/vendor/libgit2/src/libgit2/pack-objects.h +17 -6
  270. data/vendor/libgit2/src/libgit2/pack.c +33 -27
  271. data/vendor/libgit2/src/libgit2/pack.h +15 -10
  272. data/vendor/libgit2/src/libgit2/parse.c +7 -4
  273. data/vendor/libgit2/src/libgit2/parse.h +1 -1
  274. data/vendor/libgit2/src/libgit2/patch.h +7 -1
  275. data/vendor/libgit2/src/libgit2/patch_generate.c +24 -5
  276. data/vendor/libgit2/src/libgit2/patch_parse.c +18 -10
  277. data/vendor/libgit2/src/libgit2/path.c +1 -1
  278. data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
  279. data/vendor/libgit2/src/libgit2/push.c +81 -30
  280. data/vendor/libgit2/src/libgit2/push.h +1 -0
  281. data/vendor/libgit2/src/libgit2/reader.c +1 -1
  282. data/vendor/libgit2/src/libgit2/rebase.c +72 -84
  283. data/vendor/libgit2/src/libgit2/refdb_fs.c +146 -70
  284. data/vendor/libgit2/src/libgit2/reflog.c +1 -2
  285. data/vendor/libgit2/src/libgit2/reflog.h +2 -0
  286. data/vendor/libgit2/src/libgit2/refs.c +34 -8
  287. data/vendor/libgit2/src/libgit2/refs.h +6 -1
  288. data/vendor/libgit2/src/libgit2/refspec.c +28 -1
  289. data/vendor/libgit2/src/libgit2/refspec.h +8 -0
  290. data/vendor/libgit2/src/libgit2/remote.c +136 -67
  291. data/vendor/libgit2/src/libgit2/remote.h +1 -0
  292. data/vendor/libgit2/src/libgit2/repository.c +789 -330
  293. data/vendor/libgit2/src/libgit2/repository.h +22 -3
  294. data/vendor/libgit2/src/libgit2/reset.c +2 -2
  295. data/vendor/libgit2/src/libgit2/revert.c +9 -13
  296. data/vendor/libgit2/src/libgit2/revparse.c +6 -3
  297. data/vendor/libgit2/src/libgit2/revwalk.c +36 -11
  298. data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
  299. data/vendor/libgit2/src/libgit2/settings.c +468 -0
  300. data/vendor/libgit2/src/libgit2/settings.h +6 -2
  301. data/vendor/libgit2/src/libgit2/signature.c +132 -15
  302. data/vendor/libgit2/src/libgit2/signature.h +0 -1
  303. data/vendor/libgit2/src/libgit2/stash.c +9 -8
  304. data/vendor/libgit2/src/libgit2/status.c +1 -1
  305. data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -61
  306. data/vendor/libgit2/src/libgit2/streams/openssl.c +40 -23
  307. data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
  308. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
  309. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
  310. data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
  311. data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
  312. data/vendor/libgit2/src/libgit2/streams/socket.c +237 -51
  313. data/vendor/libgit2/src/libgit2/streams/socket.h +3 -1
  314. data/vendor/libgit2/src/libgit2/streams/stransport.c +79 -19
  315. data/vendor/libgit2/src/libgit2/streams/tls.c +5 -0
  316. data/vendor/libgit2/src/libgit2/submodule.c +106 -63
  317. data/vendor/libgit2/src/libgit2/submodule.h +9 -10
  318. data/vendor/libgit2/src/libgit2/tag.c +1 -1
  319. data/vendor/libgit2/src/libgit2/trailer.c +6 -6
  320. data/vendor/libgit2/src/libgit2/transaction.c +26 -20
  321. data/vendor/libgit2/src/libgit2/transaction.h +4 -1
  322. data/vendor/libgit2/src/libgit2/transport.c +4 -1
  323. data/vendor/libgit2/src/libgit2/transports/auth.h +1 -2
  324. data/vendor/libgit2/src/libgit2/transports/{auth_negotiate.c → auth_gssapi.c} +32 -32
  325. data/vendor/libgit2/src/libgit2/transports/auth_negotiate.h +1 -1
  326. data/vendor/libgit2/src/libgit2/transports/auth_ntlm.h +1 -1
  327. data/vendor/libgit2/src/libgit2/transports/{auth_ntlm.c → auth_ntlmclient.c} +12 -12
  328. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
  329. data/vendor/libgit2/src/libgit2/transports/credential.c +1 -1
  330. data/vendor/libgit2/src/libgit2/transports/git.c +7 -8
  331. data/vendor/libgit2/src/libgit2/transports/http.c +8 -4
  332. data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
  333. data/vendor/libgit2/src/libgit2/transports/httpclient.c +117 -72
  334. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  335. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  336. data/vendor/libgit2/src/libgit2/transports/local.c +21 -11
  337. data/vendor/libgit2/src/libgit2/transports/smart.c +50 -32
  338. data/vendor/libgit2/src/libgit2/transports/smart.h +26 -9
  339. data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +139 -18
  340. data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +209 -57
  341. data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
  342. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  343. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  344. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1126 -0
  345. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  346. data/vendor/libgit2/src/libgit2/transports/winhttp.c +48 -21
  347. data/vendor/libgit2/src/libgit2/tree-cache.c +26 -16
  348. data/vendor/libgit2/src/libgit2/tree-cache.h +5 -3
  349. data/vendor/libgit2/src/libgit2/tree.c +35 -27
  350. data/vendor/libgit2/src/libgit2/tree.h +3 -2
  351. data/vendor/libgit2/src/libgit2/worktree.c +39 -27
  352. data/vendor/libgit2/src/util/CMakeLists.txt +4 -6
  353. data/vendor/libgit2/src/util/alloc.c +69 -7
  354. data/vendor/libgit2/src/util/alloc.h +34 -9
  355. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  356. data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
  357. data/vendor/libgit2/src/util/allocators/failalloc.c +0 -60
  358. data/vendor/libgit2/src/util/allocators/failalloc.h +0 -6
  359. data/vendor/libgit2/src/util/allocators/stdalloc.c +2 -115
  360. data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +0 -68
  361. data/vendor/libgit2/src/util/array.h +24 -18
  362. data/vendor/libgit2/src/util/cc-compat.h +4 -0
  363. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  364. data/vendor/libgit2/src/util/date.c +22 -14
  365. data/vendor/libgit2/src/util/date.h +12 -0
  366. data/vendor/libgit2/src/util/errors.c +401 -0
  367. data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
  368. data/vendor/libgit2/src/util/filebuf.c +6 -1
  369. data/vendor/libgit2/src/util/filebuf.h +19 -6
  370. data/vendor/libgit2/src/util/fs_path.c +16 -5
  371. data/vendor/libgit2/src/util/fs_path.h +23 -0
  372. data/vendor/libgit2/src/util/futils.c +14 -10
  373. data/vendor/libgit2/src/util/futils.h +13 -4
  374. data/vendor/libgit2/src/util/git2_features.h.in +21 -4
  375. data/vendor/libgit2/src/util/git2_util.h +6 -0
  376. data/vendor/libgit2/src/util/hash/openssl.c +152 -0
  377. data/vendor/libgit2/src/util/hash/openssl.h +17 -1
  378. data/vendor/libgit2/src/util/hash/sha.h +4 -1
  379. data/vendor/libgit2/src/util/hashmap.h +424 -0
  380. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  381. data/vendor/libgit2/src/util/integer.h +3 -1
  382. data/vendor/libgit2/src/util/net.c +318 -161
  383. data/vendor/libgit2/src/util/net.h +27 -0
  384. data/vendor/libgit2/src/util/pool.c +1 -1
  385. data/vendor/libgit2/src/util/pool.h +5 -0
  386. data/vendor/libgit2/src/util/posix.c +54 -0
  387. data/vendor/libgit2/src/util/posix.h +22 -0
  388. data/vendor/libgit2/src/util/pqueue.h +1 -1
  389. data/vendor/libgit2/src/util/process.h +222 -0
  390. data/vendor/libgit2/src/util/rand.c +6 -10
  391. data/vendor/libgit2/src/util/regexp.c +1 -1
  392. data/vendor/libgit2/src/util/sortedcache.c +14 -13
  393. data/vendor/libgit2/src/util/sortedcache.h +3 -3
  394. data/vendor/libgit2/src/util/staticstr.h +66 -0
  395. data/vendor/libgit2/src/util/str.c +2 -2
  396. data/vendor/libgit2/src/util/strlist.c +108 -0
  397. data/vendor/libgit2/src/util/strlist.h +36 -0
  398. data/vendor/libgit2/src/util/unix/posix.h +0 -2
  399. data/vendor/libgit2/src/util/unix/process.c +629 -0
  400. data/vendor/libgit2/src/util/unix/realpath.c +23 -5
  401. data/vendor/libgit2/src/util/util.c +17 -12
  402. data/vendor/libgit2/src/util/util.h +28 -54
  403. data/vendor/libgit2/src/util/vector.c +3 -3
  404. data/vendor/libgit2/src/util/vector.h +2 -2
  405. data/vendor/libgit2/src/util/win32/error.c +1 -1
  406. data/vendor/libgit2/src/util/win32/path_w32.c +8 -8
  407. data/vendor/libgit2/src/util/win32/posix_w32.c +30 -7
  408. data/vendor/libgit2/src/util/win32/process.c +506 -0
  409. data/vendor/libgit2/src/util/win32/utf-conv.c +73 -75
  410. data/vendor/libgit2/src/util/win32/utf-conv.h +81 -14
  411. data/vendor/libgit2/src/util/win32/w32_util.c +1 -1
  412. metadata +72 -49
  413. data/vendor/libgit2/cmake/SelectWinHTTP.cmake +0 -17
  414. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  415. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  416. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  417. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  418. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  419. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  420. data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
  421. data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
  422. data/vendor/libgit2/src/libgit2/errors.c +0 -238
  423. data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
  424. data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
  425. data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
  426. data/vendor/libgit2/src/libgit2/netops.c +0 -124
  427. data/vendor/libgit2/src/libgit2/netops.h +0 -68
  428. data/vendor/libgit2/src/libgit2/offmap.c +0 -101
  429. data/vendor/libgit2/src/libgit2/offmap.h +0 -133
  430. data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
  431. data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
  432. data/vendor/libgit2/src/libgit2/threadstate.c +0 -84
  433. data/vendor/libgit2/src/libgit2/threadstate.h +0 -24
  434. data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
  435. data/vendor/libgit2/src/util/khash.h +0 -615
  436. data/vendor/libgit2/src/util/strmap.c +0 -100
  437. data/vendor/libgit2/src/util/strmap.h +0 -131
  438. /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
  439. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiff.h +0 -0
  440. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.h +0 -0
  441. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xinclude.h +0 -0
  442. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.h +0 -0
  443. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xtypes.h +0 -0
@@ -7,7 +7,7 @@
7
7
 
8
8
  #include <stdio.h>
9
9
  #include <git2.h>
10
- #include "cli.h"
10
+ #include "common.h"
11
11
  #include "cmd.h"
12
12
  #include "error.h"
13
13
  #include "sighandler.h"
@@ -18,15 +18,13 @@
18
18
 
19
19
  #define COMMAND_NAME "clone"
20
20
 
21
- static char *branch, *remote_path, *local_path;
22
- static int show_help, quiet, checkout = 1, bare;
21
+ static char *branch, *remote_path, *local_path, *depth;
22
+ static int quiet, checkout = 1, bare;
23
23
  static bool local_path_exists;
24
24
  static cli_progress progress = CLI_PROGRESS_INIT;
25
25
 
26
26
  static const cli_opt_spec opts[] = {
27
- { CLI_OPT_TYPE_SWITCH, "help", 0, &show_help, 1,
28
- CLI_OPT_USAGE_HIDDEN | CLI_OPT_USAGE_STOP_PARSING, NULL,
29
- "display help about the " COMMAND_NAME " command" },
27
+ CLI_COMMON_OPT,
30
28
 
31
29
  { CLI_OPT_TYPE_SWITCH, "quiet", 'q', &quiet, 1,
32
30
  CLI_OPT_USAGE_DEFAULT, NULL, "display the type of the object" },
@@ -36,6 +34,8 @@ static const cli_opt_spec opts[] = {
36
34
  CLI_OPT_USAGE_DEFAULT, NULL, "don't create a working directory" },
37
35
  { CLI_OPT_TYPE_VALUE, "branch", 'b', &branch, 0,
38
36
  CLI_OPT_USAGE_DEFAULT, "name", "branch to check out" },
37
+ { CLI_OPT_TYPE_VALUE, "depth", 0, &depth, 0,
38
+ CLI_OPT_USAGE_DEFAULT, "depth", "commit depth to check out " },
39
39
  { CLI_OPT_TYPE_LITERAL },
40
40
  { CLI_OPT_TYPE_ARG, "repository", 0, &remote_path, 0,
41
41
  CLI_OPT_USAGE_REQUIRED, "repository", "repository path" },
@@ -46,7 +46,7 @@ static const cli_opt_spec opts[] = {
46
46
 
47
47
  static void print_help(void)
48
48
  {
49
- cli_opt_usage_fprint(stdout, PROGRAM_NAME, COMMAND_NAME, opts);
49
+ cli_opt_usage_fprint(stdout, PROGRAM_NAME, COMMAND_NAME, opts, 0);
50
50
  printf("\n");
51
51
 
52
52
  printf("Clone a repository into a new directory.\n");
@@ -71,6 +71,22 @@ static char *compute_local_path(const char *orig_path)
71
71
  return local_path;
72
72
  }
73
73
 
74
+ static int compute_depth(const char *depth)
75
+ {
76
+ int64_t i;
77
+ const char *endptr;
78
+
79
+ if (!depth)
80
+ return 0;
81
+
82
+ if (git__strntol64(&i, depth, strlen(depth), &endptr, 10) < 0 || i < 0 || i > INT_MAX || *endptr) {
83
+ fprintf(stderr, "fatal: depth '%s' is not valid.\n", depth);
84
+ exit(128);
85
+ }
86
+
87
+ return (int)i;
88
+ }
89
+
74
90
  static bool validate_local_path(const char *path)
75
91
  {
76
92
  if (!git_fs_path_exists(path))
@@ -117,7 +133,7 @@ int cmd_clone(int argc, char **argv)
117
133
  if (cli_opt_parse(&invalid_opt, opts, argv + 1, argc - 1, CLI_OPT_PARSE_GNU))
118
134
  return cli_opt_usage_error(COMMAND_NAME, opts, &invalid_opt);
119
135
 
120
- if (show_help) {
136
+ if (cli_opt__show_help) {
121
137
  print_help();
122
138
  return 0;
123
139
  }
@@ -127,11 +143,9 @@ int cmd_clone(int argc, char **argv)
127
143
  goto done;
128
144
  }
129
145
 
130
- if (bare)
131
- clone_opts.bare = 1;
132
-
133
- if (branch)
134
- clone_opts.checkout_branch = branch;
146
+ clone_opts.bare = !!bare;
147
+ clone_opts.checkout_branch = branch;
148
+ clone_opts.fetch_opts.depth = compute_depth(depth);
135
149
 
136
150
  if (!checkout)
137
151
  clone_opts.checkout_opts.checkout_strategy = GIT_CHECKOUT_NONE;
@@ -0,0 +1,241 @@
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.h>
9
+
10
+ #include "common.h"
11
+ #include "cmd.h"
12
+
13
+ #define COMMAND_NAME "config"
14
+
15
+ typedef enum {
16
+ ACTION_NONE = 0,
17
+ ACTION_GET,
18
+ ACTION_ADD,
19
+ ACTION_REPLACE_ALL,
20
+ ACTION_LIST
21
+ } action_t;
22
+
23
+ static action_t action = ACTION_NONE;
24
+ static int show_origin;
25
+ static int show_scope;
26
+ static int null_separator;
27
+ static int config_level;
28
+ static char *config_filename;
29
+ static char *name, *value, *value_pattern;
30
+
31
+ static const cli_opt_spec opts[] = {
32
+ CLI_COMMON_OPT, \
33
+
34
+ { CLI_OPT_TYPE_SWITCH, "null", 'z', &null_separator, 1,
35
+ 0, NULL, "use NUL as a separator" },
36
+
37
+ { CLI_OPT_TYPE_SWITCH, "system", 0, &config_level, GIT_CONFIG_LEVEL_SYSTEM,
38
+ 0, NULL, "read/write to system configuration" },
39
+ { CLI_OPT_TYPE_SWITCH, "global", 0, &config_level, GIT_CONFIG_LEVEL_GLOBAL,
40
+ CLI_OPT_USAGE_CHOICE, NULL, "read/write to global configuration" },
41
+ { CLI_OPT_TYPE_SWITCH, "local", 0, &config_level, GIT_CONFIG_LEVEL_LOCAL,
42
+ CLI_OPT_USAGE_CHOICE, NULL, "read/write to local configuration" },
43
+ { CLI_OPT_TYPE_VALUE, "file", 0, &config_filename, 0,
44
+ CLI_OPT_USAGE_CHOICE, "filename", "read/write to specified configuration file" },
45
+
46
+ { CLI_OPT_TYPE_SWITCH, "get", 0, &action, ACTION_GET,
47
+ CLI_OPT_USAGE_REQUIRED, NULL, "get a configuration value" },
48
+ { CLI_OPT_TYPE_SWITCH, "add", 0, &action, ACTION_ADD,
49
+ CLI_OPT_USAGE_CHOICE, NULL, "add a configuration value" },
50
+ { CLI_OPT_TYPE_SWITCH, "replace-all", 0, &action, ACTION_REPLACE_ALL,
51
+ CLI_OPT_USAGE_CHOICE, NULL, "add a configuration value, replacing any old values" },
52
+ { CLI_OPT_TYPE_SWITCH, "list", 'l', &action, ACTION_LIST,
53
+ CLI_OPT_USAGE_CHOICE | CLI_OPT_USAGE_SHOW_LONG,
54
+ NULL, "list all configuration entries" },
55
+ { CLI_OPT_TYPE_SWITCH, "show-origin", 0, &show_origin, 1,
56
+ 0, NULL, "show origin of configuration" },
57
+ { CLI_OPT_TYPE_SWITCH, "show-scope", 0, &show_scope, 1,
58
+ 0, NULL, "show scope of configuration" },
59
+ { CLI_OPT_TYPE_ARG, "name", 0, &name, 0,
60
+ 0, "name", "name of configuration entry" },
61
+ { CLI_OPT_TYPE_ARG, "value", 0, &value, 0,
62
+ 0, "value", "value of configuration entry" },
63
+ { CLI_OPT_TYPE_ARG, "regexp", 0, &value_pattern, 0,
64
+ 0, "regexp", "regular expression of values to replace" },
65
+ { 0 },
66
+ };
67
+
68
+ static void print_help(void)
69
+ {
70
+ cli_opt_usage_fprint(stdout, PROGRAM_NAME, COMMAND_NAME, opts, 0);
71
+ printf("\n");
72
+
73
+ printf("Query and set configuration options.\n");
74
+ printf("\n");
75
+
76
+ printf("Options:\n");
77
+
78
+ cli_opt_help_fprint(stdout, opts);
79
+ }
80
+
81
+ static int get_config(git_config *config)
82
+ {
83
+ git_buf value = GIT_BUF_INIT;
84
+ char sep = null_separator ? '\0' : '\n';
85
+ int error;
86
+
87
+ error = git_config_get_string_buf(&value, config, name);
88
+
89
+ if (error && error != GIT_ENOTFOUND)
90
+ return cli_error_git();
91
+
92
+ else if (error == GIT_ENOTFOUND)
93
+ return 1;
94
+
95
+ printf("%s%c", value.ptr, sep);
96
+ return 0;
97
+ }
98
+
99
+ static int add_config(git_config *config)
100
+ {
101
+ if (git_config_set_multivar(config, name, "$^", value) < 0)
102
+ return cli_error_git();
103
+
104
+ return 0;
105
+ }
106
+
107
+ static int replace_all_config(git_config *config)
108
+ {
109
+ if (git_config_set_multivar(config, name, value_pattern ? value_pattern : ".*", value) < 0)
110
+ return cli_error_git();
111
+
112
+ return 0;
113
+ }
114
+
115
+ static const char *level_name(git_config_level_t level)
116
+ {
117
+ switch (level) {
118
+ case GIT_CONFIG_LEVEL_PROGRAMDATA:
119
+ return "programdata";
120
+ case GIT_CONFIG_LEVEL_SYSTEM:
121
+ return "system";
122
+ case GIT_CONFIG_LEVEL_XDG:
123
+ return "global";
124
+ case GIT_CONFIG_LEVEL_GLOBAL:
125
+ return "global";
126
+ case GIT_CONFIG_LEVEL_LOCAL:
127
+ return "local";
128
+ case GIT_CONFIG_LEVEL_APP:
129
+ return "command";
130
+ default:
131
+ return "unknown";
132
+ }
133
+ }
134
+
135
+ static int list_config(git_config *config)
136
+ {
137
+ git_config_iterator *iterator;
138
+ git_config_entry *entry;
139
+ char data_separator = null_separator ? '\0' : '\t';
140
+ char kv_separator = null_separator ? '\n' : '=';
141
+ char entry_separator = null_separator ? '\0' : '\n';
142
+ int error;
143
+
144
+ if (git_config_iterator_new(&iterator, config) < 0)
145
+ return cli_error_git();
146
+
147
+ while ((error = git_config_next(&entry, iterator)) == 0) {
148
+ if (show_scope)
149
+ printf("%s%c",
150
+ level_name(entry->level),
151
+ data_separator);
152
+
153
+ if (show_origin)
154
+ printf("%s%s%s%c",
155
+ entry->backend_type ? entry->backend_type : "",
156
+ entry->backend_type && entry->origin_path ? ":" : "",
157
+ entry->origin_path ? entry->origin_path : "",
158
+ data_separator);
159
+
160
+ printf("%s%c%s%c", entry->name, kv_separator, entry->value,
161
+ entry_separator);
162
+ }
163
+
164
+ if (error != GIT_ITEROVER)
165
+ return cli_error_git();
166
+
167
+ git_config_iterator_free(iterator);
168
+ return 0;
169
+ }
170
+
171
+ int cmd_config(int argc, char **argv)
172
+ {
173
+ git_repository *repo = NULL;
174
+ git_config *config = NULL;
175
+ cli_repository_open_options open_opts = { argv + 1, argc - 1};
176
+ cli_opt invalid_opt;
177
+ int ret = 0;
178
+
179
+ if (cli_opt_parse(&invalid_opt, opts, argv + 1, argc - 1, CLI_OPT_PARSE_GNU))
180
+ return cli_opt_usage_error(COMMAND_NAME, opts, &invalid_opt);
181
+
182
+ if (cli_opt__show_help) {
183
+ print_help();
184
+ return 0;
185
+ }
186
+
187
+ if (config_filename) {
188
+ if (git_config_new(&config) < 0 ||
189
+ git_config_add_file_ondisk(config, config_filename,
190
+ GIT_CONFIG_LEVEL_APP, NULL, 0) < 0) {
191
+ ret = cli_error_git();
192
+ goto done;
193
+ }
194
+ } else {
195
+ if (cli_repository_open(&repo, &open_opts) < 0 ||
196
+ git_repository_config(&config, repo) < 0) {
197
+ ret = cli_error_git();
198
+ goto done;
199
+ }
200
+
201
+ if (config_level &&
202
+ git_config_open_level(&config, config, config_level) < 0) {
203
+ ret = cli_error_git();
204
+ goto done;
205
+ }
206
+ }
207
+
208
+ switch (action) {
209
+ case ACTION_ADD:
210
+ if (!name || !value || value_pattern)
211
+ ret = cli_error_usage("%s --add requires two arguments", COMMAND_NAME);
212
+ else
213
+ ret = add_config(config);
214
+ break;
215
+ case ACTION_REPLACE_ALL:
216
+ if (!name || !value)
217
+ ret = cli_error_usage("%s --replace-all requires two or three arguments", COMMAND_NAME);
218
+ else
219
+ ret = replace_all_config(config);
220
+ break;
221
+ case ACTION_GET:
222
+ if (!name)
223
+ ret = cli_error_usage("%s --get requires an argument", COMMAND_NAME);
224
+ else
225
+ ret = get_config(config);
226
+ break;
227
+ case ACTION_LIST:
228
+ if (name)
229
+ ret = cli_error_usage("%s --list does not take an argument", COMMAND_NAME);
230
+ else
231
+ ret = list_config(config);
232
+ break;
233
+ default:
234
+ ret = cli_error_usage("unknown action");
235
+ }
236
+
237
+ done:
238
+ git_config_free(config);
239
+ git_repository_free(repo);
240
+ return ret;
241
+ }
@@ -6,22 +6,19 @@
6
6
  */
7
7
 
8
8
  #include <git2.h>
9
- #include "cli.h"
9
+ #include "common.h"
10
10
  #include "cmd.h"
11
11
 
12
12
  #include "futils.h"
13
13
 
14
14
  #define COMMAND_NAME "hash-object"
15
15
 
16
- static int show_help;
17
16
  static char *type_name;
18
17
  static int write_object, read_stdin, literally;
19
18
  static char **filenames;
20
19
 
21
20
  static const cli_opt_spec opts[] = {
22
- { CLI_OPT_TYPE_SWITCH, "help", 0, &show_help, 1,
23
- CLI_OPT_USAGE_HIDDEN | CLI_OPT_USAGE_STOP_PARSING, NULL,
24
- "display help about the " COMMAND_NAME " command" },
21
+ CLI_COMMON_OPT,
25
22
 
26
23
  { CLI_OPT_TYPE_VALUE, NULL, 't', &type_name, 0,
27
24
  CLI_OPT_USAGE_DEFAULT, "type", "the type of object to hash (default: \"blob\")" },
@@ -38,7 +35,7 @@ static const cli_opt_spec opts[] = {
38
35
 
39
36
  static void print_help(void)
40
37
  {
41
- cli_opt_usage_fprint(stdout, PROGRAM_NAME, COMMAND_NAME, opts);
38
+ cli_opt_usage_fprint(stdout, PROGRAM_NAME, COMMAND_NAME, opts, 0);
42
39
  printf("\n");
43
40
 
44
41
  printf("Compute the object ID for a given file and optionally write that file\nto the object database.\n");
@@ -92,6 +89,7 @@ static int hash_buf(
92
89
 
93
90
  int cmd_hash_object(int argc, char **argv)
94
91
  {
92
+ cli_repository_open_options open_opts = { argv + 1, argc - 1};
95
93
  git_repository *repo = NULL;
96
94
  git_odb *odb = NULL;
97
95
  git_oid_t oid_type;
@@ -104,7 +102,7 @@ int cmd_hash_object(int argc, char **argv)
104
102
  if (cli_opt_parse(&invalid_opt, opts, argv + 1, argc - 1, CLI_OPT_PARSE_GNU))
105
103
  return cli_opt_usage_error(COMMAND_NAME, opts, &invalid_opt);
106
104
 
107
- if (show_help) {
105
+ if (cli_opt__show_help) {
108
106
  print_help();
109
107
  return 0;
110
108
  }
@@ -113,7 +111,7 @@ int cmd_hash_object(int argc, char **argv)
113
111
  return cli_error_usage("invalid object type '%s'", type_name);
114
112
 
115
113
  if (write_object &&
116
- (git_repository_open_ext(&repo, ".", GIT_REPOSITORY_OPEN_FROM_ENV, NULL) < 0 ||
114
+ (cli_repository_open(&repo, &open_opts) < 0 ||
117
115
  git_repository_odb(&odb, repo) < 0)) {
118
116
  ret = cli_error_git();
119
117
  goto done;
@@ -7,17 +7,16 @@
7
7
 
8
8
  #include <stdio.h>
9
9
  #include <git2.h>
10
- #include "cli.h"
10
+ #include "common.h"
11
11
  #include "cmd.h"
12
12
 
13
13
  #define COMMAND_NAME "help"
14
14
 
15
15
  static char *command;
16
- static int show_help;
17
16
 
18
17
  static const cli_opt_spec opts[] = {
19
- { CLI_OPT_TYPE_SWITCH, "help", 0, &show_help, 1,
20
- CLI_OPT_USAGE_HIDDEN, NULL, "display help about the help command" },
18
+ CLI_COMMON_OPT,
19
+
21
20
  { CLI_OPT_TYPE_ARG, "command", 0, &command, 0,
22
21
  CLI_OPT_USAGE_DEFAULT, "command", "the command to show help for" },
23
22
  { 0 },
@@ -25,7 +24,7 @@ static const cli_opt_spec opts[] = {
25
24
 
26
25
  static int print_help(void)
27
26
  {
28
- cli_opt_usage_fprint(stdout, PROGRAM_NAME, COMMAND_NAME, opts);
27
+ cli_opt_usage_fprint(stdout, PROGRAM_NAME, COMMAND_NAME, opts, CLI_OPT_USAGE_SHOW_HIDDEN);
29
28
  printf("\n");
30
29
 
31
30
  printf("Display help information about %s. If a command is specified, help\n", PROGRAM_NAME);
@@ -39,7 +38,7 @@ static int print_commands(void)
39
38
  {
40
39
  const cli_cmd_spec *cmd;
41
40
 
42
- cli_opt_usage_fprint(stdout, PROGRAM_NAME, NULL, cli_common_opts);
41
+ cli_opt_usage_fprint(stdout, PROGRAM_NAME, NULL, cli_common_opts, CLI_OPT_USAGE_SHOW_HIDDEN);
43
42
  printf("\n");
44
43
 
45
44
  printf("These are the %s commands available:\n\n", PROGRAM_NAME);
@@ -62,7 +61,7 @@ int cmd_help(int argc, char **argv)
62
61
  return cli_opt_usage_error(COMMAND_NAME, opts, &invalid_opt);
63
62
 
64
63
  /* Show the meta-help */
65
- if (show_help)
64
+ if (cli_opt__show_help)
66
65
  return print_help();
67
66
 
68
67
  /* We were not asked to show help for a specific command. */
@@ -0,0 +1,114 @@
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.h>
9
+ #include "common.h"
10
+ #include "cmd.h"
11
+ #include "progress.h"
12
+
13
+ #define COMMAND_NAME "index-pack"
14
+
15
+ #define BUFFER_SIZE (1024 * 1024)
16
+
17
+ static int verbose, read_stdin;
18
+ static char *filename;
19
+ static cli_progress progress = CLI_PROGRESS_INIT;
20
+
21
+ static const cli_opt_spec opts[] = {
22
+ CLI_COMMON_OPT,
23
+
24
+ { CLI_OPT_TYPE_SWITCH, "verbose", 'v', &verbose, 1,
25
+ CLI_OPT_USAGE_DEFAULT, NULL, "display progress output" },
26
+
27
+ { CLI_OPT_TYPE_LITERAL },
28
+
29
+ { CLI_OPT_TYPE_SWITCH, "stdin", 0, &read_stdin, 1,
30
+ CLI_OPT_USAGE_REQUIRED, NULL, "read from stdin" },
31
+ { CLI_OPT_TYPE_ARG, "pack-file", 0, &filename, 0,
32
+ CLI_OPT_USAGE_CHOICE, "pack-file", "packfile path" },
33
+
34
+ { 0 },
35
+ };
36
+
37
+ static void print_help(void)
38
+ {
39
+ cli_opt_usage_fprint(stdout, PROGRAM_NAME, COMMAND_NAME, opts, 0);
40
+ printf("\n");
41
+
42
+ printf("Indexes a packfile and writes the index to disk.\n");
43
+ printf("\n");
44
+
45
+ printf("Options:\n");
46
+
47
+ cli_opt_help_fprint(stdout, opts);
48
+ }
49
+
50
+ int cmd_index_pack(int argc, char **argv)
51
+ {
52
+ cli_opt invalid_opt;
53
+ git_indexer *idx = NULL;
54
+ git_indexer_options idx_opts = GIT_INDEXER_OPTIONS_INIT;
55
+ git_indexer_progress stats = {0};
56
+ char buf[BUFFER_SIZE];
57
+ ssize_t read_len;
58
+ int fd, ret;
59
+
60
+ if (cli_opt_parse(&invalid_opt, opts, argv + 1, argc - 1, CLI_OPT_PARSE_GNU))
61
+ return cli_opt_usage_error(COMMAND_NAME, opts, &invalid_opt);
62
+
63
+ if (cli_opt__show_help) {
64
+ print_help();
65
+ return 0;
66
+ }
67
+
68
+ if (verbose) {
69
+ idx_opts.progress_cb = cli_progress_indexer;
70
+ idx_opts.progress_cb_payload = &progress;
71
+ }
72
+
73
+ if (read_stdin) {
74
+ fd = fileno(stdin);
75
+ } else if ((fd = p_open(filename, O_RDONLY)) < 0) {
76
+ ret = cli_error_git();
77
+ goto done;
78
+ }
79
+
80
+ #ifdef GIT_EXPERIMENTAL_SHA256
81
+ idx_opts.oid_type = GIT_OID_SHA1;
82
+
83
+ ret = git_indexer_new(&idx, ".", &idx_opts);
84
+ #else
85
+ ret = git_indexer_new(&idx, ".", 0, NULL, &idx_opts);
86
+ #endif
87
+
88
+ if (ret < 0) {
89
+ ret = cli_error_git();
90
+ goto done;
91
+ }
92
+
93
+ while ((read_len = p_read(fd, buf, sizeof(buf))) > 0) {
94
+ if (git_indexer_append(idx, buf, (size_t)read_len, &stats) < 0) {
95
+ ret = cli_error_git();
96
+ goto done;
97
+ }
98
+ }
99
+
100
+ if (git_indexer_commit(idx, &stats) < 0) {
101
+ ret = cli_error_git();
102
+ goto done;
103
+ }
104
+
105
+ cli_progress_finish(&progress);
106
+
107
+ done:
108
+ if (!read_stdin && fd >= 0)
109
+ p_close(fd);
110
+
111
+ cli_progress_dispose(&progress);
112
+ git_indexer_free(idx);
113
+ return ret;
114
+ }
@@ -0,0 +1,102 @@
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
+ #include "common.h"
11
+ #include "cmd.h"
12
+ #include "error.h"
13
+ #include "sighandler.h"
14
+ #include "progress.h"
15
+
16
+ #include "fs_path.h"
17
+ #include "futils.h"
18
+
19
+ #define COMMAND_NAME "init"
20
+
21
+ static char *branch, *git_dir, *template_dir, *path;
22
+ static int quiet, bare;
23
+
24
+ static const cli_opt_spec opts[] = {
25
+ CLI_COMMON_OPT,
26
+
27
+ { CLI_OPT_TYPE_SWITCH, "quiet", 'q', &quiet, 1,
28
+ CLI_OPT_USAGE_DEFAULT, NULL, "quiet mode; don't display informational messages" },
29
+ { CLI_OPT_TYPE_SWITCH, "bare", 0, &bare, 1,
30
+ CLI_OPT_USAGE_DEFAULT, NULL, "don't create a working directory" },
31
+ { CLI_OPT_TYPE_VALUE, "initial-branch", 'b', &branch, 0,
32
+ CLI_OPT_USAGE_DEFAULT, "name", "initial branch name" },
33
+ { CLI_OPT_TYPE_VALUE, "separate-git-dir", 0, &git_dir, 0,
34
+ CLI_OPT_USAGE_DEFAULT, "git-dir", "path to separate git directory" },
35
+ { CLI_OPT_TYPE_VALUE, "template", 0, &template_dir, 0,
36
+ CLI_OPT_USAGE_DEFAULT, "template-dir", "path to git directory templates" },
37
+ { CLI_OPT_TYPE_LITERAL },
38
+ { CLI_OPT_TYPE_ARG, "directory", 0, &path, 0,
39
+ CLI_OPT_USAGE_DEFAULT, "directory", "directory to create repository in" },
40
+ { 0 }
41
+ };
42
+
43
+ static void print_help(void)
44
+ {
45
+ cli_opt_usage_fprint(stdout, PROGRAM_NAME, COMMAND_NAME, opts, 0);
46
+ printf("\n");
47
+
48
+ printf("Create a new git repository.\n");
49
+ printf("\n");
50
+
51
+ printf("Options:\n");
52
+
53
+ cli_opt_help_fprint(stdout, opts);
54
+ }
55
+
56
+ int cmd_init(int argc, char **argv)
57
+ {
58
+ git_repository *repo = NULL;
59
+ git_repository_init_options init_opts = GIT_REPOSITORY_INIT_OPTIONS_INIT;
60
+ cli_opt invalid_opt;
61
+ const char *repo_path;
62
+ int ret = 0;
63
+
64
+ if (cli_opt_parse(&invalid_opt, opts, argv + 1, argc - 1, CLI_OPT_PARSE_GNU))
65
+ return cli_opt_usage_error(COMMAND_NAME, opts, &invalid_opt);
66
+
67
+ if (cli_opt__show_help) {
68
+ print_help();
69
+ return 0;
70
+ }
71
+
72
+ init_opts.flags |= GIT_REPOSITORY_INIT_MKPATH |
73
+ GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE;
74
+
75
+ if (bare && git_dir)
76
+ return cli_error_usage("the '--bare' and '--separate-git-dir' options cannot be used together");
77
+
78
+ if (bare)
79
+ init_opts.flags |= GIT_REPOSITORY_INIT_BARE;
80
+
81
+ init_opts.template_path = template_dir;
82
+ init_opts.initial_head = branch;
83
+
84
+ if (git_dir) {
85
+ init_opts.flags |= GIT_REPOSITORY_INIT_NO_DOTGIT_DIR;
86
+ init_opts.workdir_path = path;
87
+
88
+ repo_path = git_dir;
89
+ } else {
90
+ repo_path = path;
91
+ }
92
+
93
+ if (git_repository_init_ext(&repo, repo_path, &init_opts) < 0) {
94
+ ret = cli_error_git();
95
+ } else if (!quiet) {
96
+ printf("Initialized empty Git repository in %s\n",
97
+ git_repository_path(repo));
98
+ }
99
+
100
+ git_repository_free(repo);
101
+ return ret;
102
+ }