rugged 1.7.2 → 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 (361) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rugged/version.rb +1 -1
  3. data/vendor/libgit2/AUTHORS +1 -0
  4. data/vendor/libgit2/CMakeLists.txt +23 -10
  5. data/vendor/libgit2/COPYING +195 -1
  6. data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
  7. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  8. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +1 -1
  9. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
  10. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +17 -8
  11. data/vendor/libgit2/cmake/SelectHashes.cmake +28 -11
  12. data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
  13. data/vendor/libgit2/cmake/SelectSSH.cmake +22 -17
  14. data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
  15. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  16. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  17. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  18. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  19. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  20. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  21. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
  22. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  23. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  24. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  25. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
  26. data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
  27. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  28. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  29. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  30. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  31. data/vendor/libgit2/deps/pcre/CMakeLists.txt +1 -0
  32. data/vendor/libgit2/deps/xdiff/xmerge.c +2 -2
  33. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  34. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  35. data/vendor/libgit2/deps/zlib/adler32.c +5 -27
  36. data/vendor/libgit2/deps/zlib/crc32.c +94 -167
  37. data/vendor/libgit2/deps/zlib/deflate.c +358 -435
  38. data/vendor/libgit2/deps/zlib/deflate.h +41 -10
  39. data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
  40. data/vendor/libgit2/deps/zlib/infback.c +17 -30
  41. data/vendor/libgit2/deps/zlib/inffast.c +1 -4
  42. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  43. data/vendor/libgit2/deps/zlib/inflate.c +36 -102
  44. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  45. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  46. data/vendor/libgit2/deps/zlib/trees.c +287 -352
  47. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  48. data/vendor/libgit2/deps/zlib/zlib.h +202 -202
  49. data/vendor/libgit2/deps/zlib/zutil.c +18 -44
  50. data/vendor/libgit2/deps/zlib/zutil.h +13 -33
  51. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  52. data/vendor/libgit2/include/git2/apply.h +27 -6
  53. data/vendor/libgit2/include/git2/attr.h +17 -4
  54. data/vendor/libgit2/include/git2/blame.h +133 -28
  55. data/vendor/libgit2/include/git2/blob.h +71 -28
  56. data/vendor/libgit2/include/git2/branch.h +22 -15
  57. data/vendor/libgit2/include/git2/buffer.h +6 -4
  58. data/vendor/libgit2/include/git2/cert.h +2 -1
  59. data/vendor/libgit2/include/git2/checkout.h +83 -32
  60. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  61. data/vendor/libgit2/include/git2/clone.h +25 -9
  62. data/vendor/libgit2/include/git2/commit.h +132 -3
  63. data/vendor/libgit2/include/git2/common.h +120 -63
  64. data/vendor/libgit2/include/git2/config.h +93 -23
  65. data/vendor/libgit2/include/git2/credential.h +30 -2
  66. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  67. data/vendor/libgit2/include/git2/deprecated.h +133 -3
  68. data/vendor/libgit2/include/git2/describe.h +13 -1
  69. data/vendor/libgit2/include/git2/diff.h +38 -8
  70. data/vendor/libgit2/include/git2/email.h +9 -29
  71. data/vendor/libgit2/include/git2/errors.h +46 -73
  72. data/vendor/libgit2/include/git2/filter.h +14 -7
  73. data/vendor/libgit2/include/git2/global.h +8 -1
  74. data/vendor/libgit2/include/git2/graph.h +3 -2
  75. data/vendor/libgit2/include/git2/ignore.h +10 -0
  76. data/vendor/libgit2/include/git2/index.h +99 -14
  77. data/vendor/libgit2/include/git2/indexer.h +21 -4
  78. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  79. data/vendor/libgit2/include/git2/merge.h +46 -1
  80. data/vendor/libgit2/include/git2/message.h +2 -2
  81. data/vendor/libgit2/include/git2/net.h +3 -1
  82. data/vendor/libgit2/include/git2/notes.h +9 -6
  83. data/vendor/libgit2/include/git2/object.h +9 -8
  84. data/vendor/libgit2/include/git2/odb.h +91 -49
  85. data/vendor/libgit2/include/git2/odb_backend.h +80 -52
  86. data/vendor/libgit2/include/git2/oid.h +23 -24
  87. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  88. data/vendor/libgit2/include/git2/pack.h +13 -1
  89. data/vendor/libgit2/include/git2/patch.h +2 -3
  90. data/vendor/libgit2/include/git2/pathspec.h +9 -0
  91. data/vendor/libgit2/include/git2/proxy.h +10 -0
  92. data/vendor/libgit2/include/git2/rebase.h +9 -6
  93. data/vendor/libgit2/include/git2/refdb.h +2 -2
  94. data/vendor/libgit2/include/git2/reflog.h +3 -2
  95. data/vendor/libgit2/include/git2/refs.h +9 -6
  96. data/vendor/libgit2/include/git2/refspec.h +14 -4
  97. data/vendor/libgit2/include/git2/remote.h +94 -18
  98. data/vendor/libgit2/include/git2/repository.h +57 -21
  99. data/vendor/libgit2/include/git2/reset.h +16 -3
  100. data/vendor/libgit2/include/git2/revert.h +9 -4
  101. data/vendor/libgit2/include/git2/revparse.h +3 -3
  102. data/vendor/libgit2/include/git2/revwalk.h +3 -2
  103. data/vendor/libgit2/include/git2/signature.h +46 -1
  104. data/vendor/libgit2/include/git2/stash.h +17 -3
  105. data/vendor/libgit2/include/git2/status.h +10 -6
  106. data/vendor/libgit2/include/git2/stdint.h +87 -85
  107. data/vendor/libgit2/include/git2/strarray.h +2 -3
  108. data/vendor/libgit2/include/git2/submodule.h +20 -9
  109. data/vendor/libgit2/include/git2/sys/alloc.h +12 -0
  110. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  111. data/vendor/libgit2/include/git2/sys/commit_graph.h +103 -62
  112. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  113. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  114. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  115. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  116. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  117. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  118. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  119. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  120. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  121. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  122. data/vendor/libgit2/include/git2/sys/midx.h +43 -4
  123. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
  124. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  125. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  126. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  127. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  128. data/vendor/libgit2/include/git2/sys/remote.h +8 -1
  129. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  130. data/vendor/libgit2/include/git2/sys/stream.h +11 -2
  131. data/vendor/libgit2/include/git2/sys/transport.h +24 -3
  132. data/vendor/libgit2/include/git2/tag.h +3 -1
  133. data/vendor/libgit2/include/git2/trace.h +9 -3
  134. data/vendor/libgit2/include/git2/transaction.h +3 -2
  135. data/vendor/libgit2/include/git2/transport.h +11 -3
  136. data/vendor/libgit2/include/git2/tree.h +16 -5
  137. data/vendor/libgit2/include/git2/types.h +19 -3
  138. data/vendor/libgit2/include/git2/version.h +44 -8
  139. data/vendor/libgit2/include/git2/worktree.h +16 -6
  140. data/vendor/libgit2/src/CMakeLists.txt +6 -4
  141. data/vendor/libgit2/src/cli/CMakeLists.txt +2 -2
  142. data/vendor/libgit2/src/cli/cmd.c +1 -1
  143. data/vendor/libgit2/src/cli/cmd.h +4 -0
  144. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  145. data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
  146. data/vendor/libgit2/src/cli/cmd_clone.c +5 -7
  147. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  148. data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
  149. data/vendor/libgit2/src/cli/cmd_help.c +6 -7
  150. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  151. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  152. data/vendor/libgit2/src/cli/common.c +168 -0
  153. data/vendor/libgit2/src/cli/common.h +63 -0
  154. data/vendor/libgit2/src/cli/error.h +1 -1
  155. data/vendor/libgit2/src/cli/main.c +52 -24
  156. data/vendor/libgit2/src/cli/opt.c +29 -3
  157. data/vendor/libgit2/src/cli/opt.h +21 -3
  158. data/vendor/libgit2/src/cli/opt_usage.c +102 -33
  159. data/vendor/libgit2/src/cli/opt_usage.h +6 -1
  160. data/vendor/libgit2/src/cli/progress.c +51 -2
  161. data/vendor/libgit2/src/cli/progress.h +12 -0
  162. data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
  163. data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
  164. data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
  165. data/vendor/libgit2/src/libgit2/CMakeLists.txt +26 -8
  166. data/vendor/libgit2/src/libgit2/apply.c +10 -13
  167. data/vendor/libgit2/src/libgit2/attr.c +30 -13
  168. data/vendor/libgit2/src/libgit2/attr_file.c +7 -2
  169. data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
  170. data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
  171. data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
  172. data/vendor/libgit2/src/libgit2/blame.c +130 -44
  173. data/vendor/libgit2/src/libgit2/blame.h +1 -0
  174. data/vendor/libgit2/src/libgit2/cache.c +22 -17
  175. data/vendor/libgit2/src/libgit2/cache.h +7 -9
  176. data/vendor/libgit2/src/libgit2/checkout.c +34 -24
  177. data/vendor/libgit2/src/libgit2/checkout.h +0 -2
  178. data/vendor/libgit2/src/libgit2/cherrypick.c +1 -2
  179. data/vendor/libgit2/src/libgit2/clone.c +186 -166
  180. data/vendor/libgit2/src/libgit2/clone.h +4 -1
  181. data/vendor/libgit2/src/libgit2/commit.c +92 -0
  182. data/vendor/libgit2/src/libgit2/commit_graph.c +67 -56
  183. data/vendor/libgit2/src/libgit2/commit_graph.h +1 -2
  184. data/vendor/libgit2/src/libgit2/config.c +389 -298
  185. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  186. data/vendor/libgit2/src/libgit2/config.h +9 -4
  187. data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
  188. data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
  189. data/vendor/libgit2/src/libgit2/config_file.c +99 -88
  190. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  191. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  192. data/vendor/libgit2/src/libgit2/config_mem.c +194 -40
  193. data/vendor/libgit2/src/libgit2/config_parse.c +10 -9
  194. data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
  195. data/vendor/libgit2/src/libgit2/describe.c +24 -24
  196. data/vendor/libgit2/src/libgit2/diff.c +1 -1
  197. data/vendor/libgit2/src/libgit2/diff_driver.c +12 -19
  198. data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
  199. data/vendor/libgit2/src/libgit2/diff_generate.c +3 -3
  200. data/vendor/libgit2/src/libgit2/diff_parse.c +2 -2
  201. data/vendor/libgit2/src/libgit2/diff_print.c +65 -9
  202. data/vendor/libgit2/src/libgit2/diff_tform.c +36 -8
  203. data/vendor/libgit2/src/libgit2/email.c +1 -0
  204. data/vendor/libgit2/src/libgit2/fetch.c +5 -3
  205. data/vendor/libgit2/src/libgit2/filter.c +5 -5
  206. data/vendor/libgit2/src/libgit2/git2.rc +3 -3
  207. data/vendor/libgit2/src/libgit2/grafts.c +18 -20
  208. data/vendor/libgit2/src/libgit2/grafts.h +0 -1
  209. data/vendor/libgit2/src/libgit2/graph.c +1 -1
  210. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  211. data/vendor/libgit2/src/libgit2/ignore.c +9 -5
  212. data/vendor/libgit2/src/libgit2/index.c +68 -90
  213. data/vendor/libgit2/src/libgit2/index.h +2 -2
  214. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  215. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  216. data/vendor/libgit2/src/libgit2/indexer.c +34 -38
  217. data/vendor/libgit2/src/libgit2/iterator.c +14 -8
  218. data/vendor/libgit2/src/libgit2/libgit2.c +153 -368
  219. data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
  220. data/vendor/libgit2/src/libgit2/merge.c +42 -37
  221. data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
  222. data/vendor/libgit2/src/libgit2/midx.c +28 -15
  223. data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
  224. data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
  225. data/vendor/libgit2/src/libgit2/object.c +6 -5
  226. data/vendor/libgit2/src/libgit2/odb.c +5 -4
  227. data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
  228. data/vendor/libgit2/src/libgit2/odb_pack.c +13 -5
  229. data/vendor/libgit2/src/libgit2/oid.c +32 -5
  230. data/vendor/libgit2/src/libgit2/oid.h +11 -0
  231. data/vendor/libgit2/src/libgit2/pack-objects.c +58 -31
  232. data/vendor/libgit2/src/libgit2/pack-objects.h +12 -4
  233. data/vendor/libgit2/src/libgit2/pack.c +30 -24
  234. data/vendor/libgit2/src/libgit2/pack.h +15 -10
  235. data/vendor/libgit2/src/libgit2/patch_parse.c +2 -2
  236. data/vendor/libgit2/src/libgit2/path.c +1 -1
  237. data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
  238. data/vendor/libgit2/src/libgit2/push.c +79 -28
  239. data/vendor/libgit2/src/libgit2/push.h +1 -0
  240. data/vendor/libgit2/src/libgit2/refdb_fs.c +128 -61
  241. data/vendor/libgit2/src/libgit2/reflog.c +1 -2
  242. data/vendor/libgit2/src/libgit2/reflog.h +2 -0
  243. data/vendor/libgit2/src/libgit2/refs.c +26 -7
  244. data/vendor/libgit2/src/libgit2/refs.h +6 -1
  245. data/vendor/libgit2/src/libgit2/refspec.c +28 -1
  246. data/vendor/libgit2/src/libgit2/refspec.h +8 -0
  247. data/vendor/libgit2/src/libgit2/remote.c +121 -61
  248. data/vendor/libgit2/src/libgit2/repository.c +231 -51
  249. data/vendor/libgit2/src/libgit2/repository.h +10 -6
  250. data/vendor/libgit2/src/libgit2/revert.c +1 -2
  251. data/vendor/libgit2/src/libgit2/revparse.c +2 -2
  252. data/vendor/libgit2/src/libgit2/revwalk.c +13 -10
  253. data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
  254. data/vendor/libgit2/src/libgit2/settings.c +468 -0
  255. data/vendor/libgit2/src/libgit2/settings.h +6 -2
  256. data/vendor/libgit2/src/libgit2/signature.c +132 -15
  257. data/vendor/libgit2/src/libgit2/signature.h +0 -1
  258. data/vendor/libgit2/src/libgit2/status.c +1 -1
  259. data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -60
  260. data/vendor/libgit2/src/libgit2/streams/openssl.c +32 -7
  261. data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
  262. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
  263. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
  264. data/vendor/libgit2/src/libgit2/streams/stransport.c +39 -7
  265. data/vendor/libgit2/src/libgit2/submodule.c +106 -63
  266. data/vendor/libgit2/src/libgit2/submodule.h +6 -7
  267. data/vendor/libgit2/src/libgit2/tag.c +1 -1
  268. data/vendor/libgit2/src/libgit2/trailer.c +6 -6
  269. data/vendor/libgit2/src/libgit2/transaction.c +26 -20
  270. data/vendor/libgit2/src/libgit2/transaction.h +4 -1
  271. data/vendor/libgit2/src/libgit2/transport.c +4 -1
  272. data/vendor/libgit2/src/libgit2/transports/credential.c +1 -1
  273. data/vendor/libgit2/src/libgit2/transports/http.c +1 -2
  274. data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
  275. data/vendor/libgit2/src/libgit2/transports/httpclient.c +112 -72
  276. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  277. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  278. data/vendor/libgit2/src/libgit2/transports/local.c +8 -7
  279. data/vendor/libgit2/src/libgit2/transports/smart.c +20 -8
  280. data/vendor/libgit2/src/libgit2/transports/smart.h +4 -2
  281. data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +2 -2
  282. data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +55 -10
  283. data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
  284. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  285. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  286. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1126 -0
  287. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  288. data/vendor/libgit2/src/libgit2/transports/winhttp.c +35 -7
  289. data/vendor/libgit2/src/libgit2/tree.c +34 -26
  290. data/vendor/libgit2/src/libgit2/tree.h +3 -2
  291. data/vendor/libgit2/src/libgit2/worktree.c +14 -17
  292. data/vendor/libgit2/src/util/CMakeLists.txt +4 -6
  293. data/vendor/libgit2/src/util/alloc.c +4 -1
  294. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  295. data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
  296. data/vendor/libgit2/src/util/allocators/stdalloc.c +0 -10
  297. data/vendor/libgit2/src/util/array.h +18 -17
  298. data/vendor/libgit2/src/util/cc-compat.h +2 -0
  299. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  300. data/vendor/libgit2/src/util/date.c +22 -14
  301. data/vendor/libgit2/src/util/date.h +12 -0
  302. data/vendor/libgit2/src/util/errors.c +401 -0
  303. data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
  304. data/vendor/libgit2/src/util/fs_path.c +15 -4
  305. data/vendor/libgit2/src/util/fs_path.h +23 -0
  306. data/vendor/libgit2/src/util/futils.c +6 -5
  307. data/vendor/libgit2/src/util/futils.h +13 -4
  308. data/vendor/libgit2/src/util/git2_features.h.in +12 -1
  309. data/vendor/libgit2/src/util/git2_util.h +6 -0
  310. data/vendor/libgit2/src/util/hash/openssl.c +152 -0
  311. data/vendor/libgit2/src/util/hash/openssl.h +17 -1
  312. data/vendor/libgit2/src/util/hash/sha.h +4 -1
  313. data/vendor/libgit2/src/util/hashmap.h +424 -0
  314. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  315. data/vendor/libgit2/src/util/integer.h +3 -1
  316. data/vendor/libgit2/src/util/net.c +13 -7
  317. data/vendor/libgit2/src/util/net.h +2 -0
  318. data/vendor/libgit2/src/util/pool.c +1 -1
  319. data/vendor/libgit2/src/util/pool.h +5 -0
  320. data/vendor/libgit2/src/util/pqueue.h +1 -1
  321. data/vendor/libgit2/src/util/process.h +222 -0
  322. data/vendor/libgit2/src/util/rand.c +1 -7
  323. data/vendor/libgit2/src/util/regexp.c +1 -1
  324. data/vendor/libgit2/src/util/sortedcache.c +14 -13
  325. data/vendor/libgit2/src/util/sortedcache.h +3 -3
  326. data/vendor/libgit2/src/util/str.c +2 -2
  327. data/vendor/libgit2/src/util/strlist.c +108 -0
  328. data/vendor/libgit2/src/util/strlist.h +36 -0
  329. data/vendor/libgit2/src/util/unix/posix.h +0 -2
  330. data/vendor/libgit2/src/util/unix/process.c +629 -0
  331. data/vendor/libgit2/src/util/unix/realpath.c +23 -5
  332. data/vendor/libgit2/src/util/util.c +2 -2
  333. data/vendor/libgit2/src/util/util.h +4 -38
  334. data/vendor/libgit2/src/util/vector.c +3 -3
  335. data/vendor/libgit2/src/util/vector.h +2 -2
  336. data/vendor/libgit2/src/util/win32/posix_w32.c +29 -6
  337. data/vendor/libgit2/src/util/win32/process.c +506 -0
  338. metadata +45 -28
  339. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  340. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  341. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  342. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  343. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  344. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  345. data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
  346. data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
  347. data/vendor/libgit2/src/libgit2/errors.c +0 -293
  348. data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
  349. data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
  350. data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
  351. data/vendor/libgit2/src/libgit2/offmap.c +0 -101
  352. data/vendor/libgit2/src/libgit2/offmap.h +0 -133
  353. data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
  354. data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
  355. data/vendor/libgit2/src/libgit2/threadstate.c +0 -97
  356. data/vendor/libgit2/src/libgit2/threadstate.h +0 -22
  357. data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
  358. data/vendor/libgit2/src/util/khash.h +0 -615
  359. data/vendor/libgit2/src/util/strmap.c +0 -100
  360. data/vendor/libgit2/src/util/strmap.h +0 -131
  361. /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
@@ -7,23 +7,31 @@
7
7
  #ifndef INCLUDE_git_version_h__
8
8
  #define INCLUDE_git_version_h__
9
9
 
10
+ /**
11
+ * @file git2/version.h
12
+ * @brief The version of libgit2
13
+ * @ingroup Git
14
+ * @{
15
+ */
16
+ GIT_BEGIN_DECL
17
+
10
18
  /**
11
19
  * The version string for libgit2. This string follows semantic
12
20
  * versioning (v2) guidelines.
13
21
  */
14
- #define LIBGIT2_VERSION "1.7.2"
22
+ #define LIBGIT2_VERSION "1.9.0"
15
23
 
16
24
  /** The major version number for this version of libgit2. */
17
- #define LIBGIT2_VER_MAJOR 1
25
+ #define LIBGIT2_VERSION_MAJOR 1
18
26
 
19
27
  /** The minor version number for this version of libgit2. */
20
- #define LIBGIT2_VER_MINOR 7
28
+ #define LIBGIT2_VERSION_MINOR 9
21
29
 
22
30
  /** The revision ("teeny") version number for this version of libgit2. */
23
- #define LIBGIT2_VER_REVISION 2
31
+ #define LIBGIT2_VERSION_REVISION 0
24
32
 
25
33
  /** The Windows DLL patch number for this version of libgit2. */
26
- #define LIBGIT2_VER_PATCH 0
34
+ #define LIBGIT2_VERSION_PATCH 0
27
35
 
28
36
  /**
29
37
  * The prerelease string for this version of libgit2. For development
@@ -31,9 +39,37 @@
31
39
  * a prerelease name like "beta" or "rc1". For final releases, this will
32
40
  * be `NULL`.
33
41
  */
34
- #define LIBGIT2_VER_PRERELEASE NULL
42
+ #define LIBGIT2_VERSION_PRERELEASE NULL
43
+
44
+ /**
45
+ * The library ABI soversion for this version of libgit2. This should
46
+ * only be changed when the library has a breaking ABI change, and so
47
+ * may not reflect the library's API version number.
48
+ */
49
+ #define LIBGIT2_SOVERSION "1.9"
50
+
51
+ /**
52
+ * An integer value representing the libgit2 version number. For example,
53
+ * libgit2 1.6.3 is 1060300.
54
+ */
55
+ #define LIBGIT2_VERSION_NUMBER ( \
56
+ (LIBGIT2_VERSION_MAJOR * 1000000) + \
57
+ (LIBGIT2_VERSION_MINOR * 10000) + \
58
+ (LIBGIT2_VERSION_REVISION * 100))
59
+
60
+ /**
61
+ * Compare the libgit2 version against a given version. Evaluates to true
62
+ * if the given major, minor, and revision values are greater than or equal
63
+ * to the currently running libgit2 version. For example:
64
+ *
65
+ * #if LIBGIT2_VERSION_CHECK(1, 6, 3)
66
+ * # error libgit2 version is >= 1.6.3
67
+ * #endif
68
+ */
69
+ #define LIBGIT2_VERSION_CHECK(major, minor, revision) \
70
+ (LIBGIT2_VERSION_NUMBER >= ((major)*1000000)+((minor)*10000)+((revision)*100))
35
71
 
36
- /** The library ABI soversion for this version of libgit2. */
37
- #define LIBGIT2_SOVERSION "1.7"
72
+ /** @} */
73
+ GIT_END_DECL
38
74
 
39
75
  #endif
@@ -11,11 +11,12 @@
11
11
  #include "buffer.h"
12
12
  #include "types.h"
13
13
  #include "strarray.h"
14
+ #include "checkout.h"
14
15
 
15
16
  /**
16
- * @file git2/worktrees.h
17
- * @brief Git worktree related functions
18
- * @defgroup git_commit Git worktree related functions
17
+ * @file git2/worktree.h
18
+ * @brief Additional working directories for a repository
19
+ * @defgroup git_commit Additional working directories for a repository
19
20
  * @ingroup Git
20
21
  * @{
21
22
  */
@@ -85,8 +86,9 @@ GIT_EXTERN(int) git_worktree_validate(const git_worktree *wt);
85
86
  typedef struct git_worktree_add_options {
86
87
  unsigned int version;
87
88
 
88
- int lock; /**< lock newly created worktree */
89
- git_reference *ref; /**< reference to use for the new worktree HEAD */
89
+ int lock; /**< lock newly created worktree */
90
+ int checkout_existing; /**< allow checkout of existing branch matching worktree name */
91
+ git_reference *ref; /**< reference to use for the new worktree HEAD */
90
92
 
91
93
  /**
92
94
  * Options for the checkout.
@@ -94,8 +96,12 @@ typedef struct git_worktree_add_options {
94
96
  git_checkout_options checkout_options;
95
97
  } git_worktree_add_options;
96
98
 
99
+ /** Current version for the `git_worktree_add_options` structure */
97
100
  #define GIT_WORKTREE_ADD_OPTIONS_VERSION 1
98
- #define GIT_WORKTREE_ADD_OPTIONS_INIT {GIT_WORKTREE_ADD_OPTIONS_VERSION,0,NULL,GIT_CHECKOUT_OPTIONS_INIT}
101
+
102
+ /** Static constructor for `git_worktree_add_options` */
103
+ #define GIT_WORKTREE_ADD_OPTIONS_INIT { GIT_WORKTREE_ADD_OPTIONS_VERSION, \
104
+ 0, 0, NULL, GIT_CHECKOUT_OPTIONS_INIT }
99
105
 
100
106
  /**
101
107
  * Initialize git_worktree_add_options structure
@@ -208,7 +214,10 @@ typedef struct git_worktree_prune_options {
208
214
  uint32_t flags;
209
215
  } git_worktree_prune_options;
210
216
 
217
+ /** Current version for the `git_worktree_prune_options` structure */
211
218
  #define GIT_WORKTREE_PRUNE_OPTIONS_VERSION 1
219
+
220
+ /** Static constructor for `git_worktree_prune_options` */
212
221
  #define GIT_WORKTREE_PRUNE_OPTIONS_INIT {GIT_WORKTREE_PRUNE_OPTIONS_VERSION,0}
213
222
 
214
223
  /**
@@ -265,4 +274,5 @@ GIT_EXTERN(int) git_worktree_prune(git_worktree *wt,
265
274
 
266
275
  /** @} */
267
276
  GIT_END_DECL
277
+
268
278
  #endif
@@ -127,7 +127,8 @@ endif()
127
127
  # realtime support
128
128
 
129
129
  check_library_exists(rt clock_gettime "time.h" NEED_LIBRT)
130
- if(NEED_LIBRT)
130
+
131
+ if(NEED_LIBRT AND NOT CMAKE_SYSTEM_NAME MATCHES "iOS")
131
132
  list(APPEND LIBGIT2_SYSTEM_LIBS rt)
132
133
  list(APPEND LIBGIT2_PC_LIBS "-lrt")
133
134
  endif()
@@ -135,7 +136,8 @@ endif()
135
136
  # platform libraries
136
137
 
137
138
  if(WIN32)
138
- list(APPEND LIBGIT2_SYSTEM_LIBS ws2_32)
139
+ list(APPEND LIBGIT2_SYSTEM_LIBS "ws2_32" "secur32")
140
+ list(APPEND LIBGIT2_PC_LIBS "-lws2_32" "-lsecur32")
139
141
  endif()
140
142
 
141
143
  if(CMAKE_SYSTEM_NAME MATCHES "(Solaris|SunOS)")
@@ -183,7 +185,7 @@ add_feature_info(ntlmclient GIT_NTLM "NTLM authentication support for Unix")
183
185
 
184
186
  # iconv
185
187
  if(USE_ICONV)
186
- find_package(Iconv)
188
+ find_package(IntlIconv)
187
189
  endif()
188
190
  if(ICONV_FOUND)
189
191
  set(GIT_USE_ICONV 1)
@@ -200,7 +202,7 @@ add_feature_info(iconv GIT_USE_ICONV "iconv encoding conversion support")
200
202
  add_subdirectory(libgit2)
201
203
  add_subdirectory(util)
202
204
 
203
- if(BUILD_CLI)
205
+ if(BUILD_CLI AND NOT CMAKE_SYSTEM_NAME MATCHES "iOS")
204
206
  add_subdirectory(cli)
205
207
  endif()
206
208
 
@@ -4,7 +4,8 @@ set(CLI_INCLUDES
4
4
  "${libgit2_SOURCE_DIR}/src/util"
5
5
  "${libgit2_SOURCE_DIR}/src/cli"
6
6
  "${libgit2_SOURCE_DIR}/include"
7
- "${LIBGIT2_DEPENDENCY_INCLUDES}")
7
+ "${LIBGIT2_DEPENDENCY_INCLUDES}"
8
+ "${LIBGIT2_SYSTEM_INCLUDES}")
8
9
 
9
10
  if(WIN32 AND NOT CYGWIN)
10
11
  file(GLOB CLI_SRC_OS win32/*.c)
@@ -39,7 +40,6 @@ add_executable(git2_cli ${CLI_SRC_C} ${CLI_SRC_OS} ${CLI_OBJECTS}
39
40
  ${LIBGIT2_DEPENDENCY_OBJECTS})
40
41
  target_link_libraries(git2_cli ${CLI_LIBGIT2_LIBRARY} ${LIBGIT2_SYSTEM_LIBS})
41
42
 
42
- set_target_properties(git2_cli PROPERTIES C_STANDARD 90)
43
43
  set_target_properties(git2_cli PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${libgit2_BINARY_DIR})
44
44
  set_target_properties(git2_cli PROPERTIES OUTPUT_NAME ${LIBGIT2_FILENAME})
45
45
 
@@ -5,7 +5,7 @@
5
5
  * a Linking Exception. For full terms see the included COPYING file.
6
6
  */
7
7
 
8
- #include "cli.h"
8
+ #include "common.h"
9
9
  #include "cmd.h"
10
10
 
11
11
  const cli_cmd_spec *cli_cmd_spec_byname(const char *name)
@@ -25,9 +25,13 @@ extern const cli_cmd_spec cli_cmds[];
25
25
  extern const cli_cmd_spec *cli_cmd_spec_byname(const char *name);
26
26
 
27
27
  /* Commands */
28
+ extern int cmd_blame(int argc, char **argv);
28
29
  extern int cmd_cat_file(int argc, char **argv);
29
30
  extern int cmd_clone(int argc, char **argv);
31
+ extern int cmd_config(int argc, char **argv);
30
32
  extern int cmd_hash_object(int argc, char **argv);
31
33
  extern int cmd_help(int argc, char **argv);
34
+ extern int cmd_index_pack(int argc, char **argv);
35
+ extern int cmd_init(int argc, char **argv);
32
36
 
33
37
  #endif /* CLI_cmd_h__ */
@@ -0,0 +1,287 @@
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
+ #include "date.h"
19
+ #include "hashmap.h"
20
+
21
+ #define COMMAND_NAME "blame"
22
+
23
+ static char *file;
24
+ static int porcelain, line_porcelain;
25
+
26
+ static const cli_opt_spec opts[] = {
27
+ CLI_COMMON_OPT,
28
+
29
+ { CLI_OPT_TYPE_SWITCH, "porcelain", 'p', &porcelain, 1,
30
+ CLI_OPT_USAGE_DEFAULT, NULL, "show machine readable output" },
31
+ { CLI_OPT_TYPE_SWITCH, "line-porcelain", 0, &line_porcelain, 1,
32
+ CLI_OPT_USAGE_DEFAULT, NULL, "show individual lines in machine readable output" },
33
+ { CLI_OPT_TYPE_LITERAL },
34
+ { CLI_OPT_TYPE_ARG, "file", 0, &file, 0,
35
+ CLI_OPT_USAGE_REQUIRED, "file", "file to blame" },
36
+
37
+ { 0 }
38
+ };
39
+
40
+ static void print_help(void)
41
+ {
42
+ cli_opt_usage_fprint(stdout, PROGRAM_NAME, COMMAND_NAME, opts, 0);
43
+ printf("\n");
44
+
45
+ printf("Show the origin of each line of a file.\n");
46
+ printf("\n");
47
+
48
+ printf("Options:\n");
49
+
50
+ cli_opt_help_fprint(stdout, opts);
51
+ }
52
+
53
+ static int strintlen(size_t n)
54
+ {
55
+ int len = 1;
56
+
57
+ while (n > 10) {
58
+ n /= 10;
59
+ len++;
60
+
61
+ if (len == INT_MAX)
62
+ break;
63
+ }
64
+
65
+ return len;
66
+ }
67
+
68
+ static int fmt_date(git_str *out, git_time_t time, int offset)
69
+ {
70
+ time_t t;
71
+ struct tm gmt;
72
+
73
+ GIT_ASSERT_ARG(out);
74
+
75
+ t = (time_t)(time + offset * 60);
76
+
77
+ if (p_gmtime_r(&t, &gmt) == NULL)
78
+ return -1;
79
+
80
+ return git_str_printf(out, "%.4u-%02u-%02u %02u:%02u:%02u %+03d%02d",
81
+ gmt.tm_year + 1900, gmt.tm_mon + 1, gmt.tm_mday,
82
+ gmt.tm_hour, gmt.tm_min, gmt.tm_sec,
83
+ offset / 60, offset % 60);
84
+ }
85
+
86
+ static int print_standard(git_blame *blame)
87
+ {
88
+ size_t max_line_number = 0;
89
+ int max_lineno_len, max_line_len, max_author_len = 0, max_path_len = 0;
90
+ const char *last_path = NULL;
91
+ const git_blame_line *line;
92
+ bool paths_differ = false;
93
+ git_str date_str = GIT_STR_INIT;
94
+ size_t i;
95
+ int ret = 0;
96
+
97
+ /* Compute the maximum size of things */
98
+ for (i = 0; i < git_blame_hunkcount(blame); i++) {
99
+ const git_blame_hunk *hunk = git_blame_hunk_byindex(blame, i);
100
+ size_t hunk_author_len = strlen(hunk->orig_signature->name);
101
+ size_t hunk_path_len = strlen(hunk->orig_path);
102
+ size_t hunk_max_line_number =
103
+ hunk->orig_start_line_number + hunk->lines_in_hunk;
104
+
105
+ if (hunk_max_line_number > max_line_number)
106
+ max_line_number = hunk_max_line_number;
107
+
108
+ if (hunk_author_len > INT_MAX)
109
+ max_author_len = INT_MAX;
110
+ else if ((int)hunk_author_len > max_author_len)
111
+ max_author_len = (int)hunk_author_len;
112
+
113
+ if (hunk_path_len > INT_MAX)
114
+ hunk_path_len = INT_MAX;
115
+ else if ((int)hunk_path_len > max_path_len)
116
+ max_path_len = (int)hunk_path_len;
117
+
118
+ if (!paths_differ && last_path != NULL &&
119
+ strcmp(last_path, hunk->orig_path) != 0) {
120
+ paths_differ = true;
121
+ }
122
+
123
+ last_path = hunk->orig_path;
124
+ }
125
+
126
+ max_lineno_len = strintlen(max_line_number);
127
+
128
+ max_author_len--;
129
+
130
+ for (i = 1; i < git_blame_linecount(blame); i++) {
131
+ const git_blame_hunk *hunk = git_blame_hunk_byline(blame, i);
132
+ int oid_abbrev;
133
+
134
+ if (!hunk)
135
+ break;
136
+
137
+ oid_abbrev = hunk->boundary ? 7 : 8;
138
+ printf("%s%.*s ", hunk->boundary ? "^" : "",
139
+ oid_abbrev, git_oid_tostr_s(&hunk->orig_commit_id));
140
+
141
+ if (paths_differ)
142
+ printf("%-*.*s ", max_path_len, max_path_len, hunk->orig_path);
143
+
144
+ git_str_clear(&date_str);
145
+ if (fmt_date(&date_str,
146
+ hunk->orig_signature->when.time,
147
+ hunk->orig_signature->when.offset) < 0) {
148
+ ret = cli_error_git();
149
+ goto done;
150
+ }
151
+
152
+ if ((line = git_blame_line_byindex(blame, i)) == NULL) {
153
+ ret = cli_error_git();
154
+ goto done;
155
+ }
156
+
157
+ max_line_len = (int)min(line->len, INT_MAX);
158
+
159
+ printf("(%-*.*s %s %*" PRIuZ ") %.*s" ,
160
+ max_author_len, max_author_len, hunk->orig_signature->name,
161
+ date_str.ptr,
162
+ max_lineno_len, i,
163
+ max_line_len, line->ptr);
164
+ printf("\n");
165
+ }
166
+
167
+ done:
168
+ git_str_dispose(&date_str);
169
+ return ret;
170
+ }
171
+
172
+ GIT_INLINE(uint32_t) oid_hashcode(const git_oid *oid)
173
+ {
174
+ uint32_t hash;
175
+ memcpy(&hash, oid->id, sizeof(uint32_t));
176
+ return hash;
177
+ }
178
+
179
+ GIT_HASHSET_SETUP(git_blame_commitmap, const git_oid *, oid_hashcode, git_oid_equal);
180
+
181
+ static int print_porcelain(git_blame *blame)
182
+ {
183
+ git_blame_commitmap seen_ids = GIT_HASHSET_INIT;
184
+ size_t i, j;
185
+
186
+ for (i = 0; i < git_blame_hunkcount(blame); i++) {
187
+ const git_blame_line *line;
188
+ const git_blame_hunk *hunk = git_blame_hunk_byindex(blame, i);
189
+
190
+ for (j = 0; j < hunk->lines_in_hunk; j++) {
191
+ size_t line_number = hunk->final_start_line_number + j;
192
+ bool seen = git_blame_commitmap_contains(&seen_ids, &hunk->orig_commit_id);
193
+
194
+ printf("%s %" PRIuZ " %" PRIuZ,
195
+ git_oid_tostr_s(&hunk->orig_commit_id),
196
+ hunk->orig_start_line_number + j,
197
+ hunk->final_start_line_number + j);
198
+
199
+ if (!j)
200
+ printf(" %" PRIuZ, hunk->lines_in_hunk);
201
+
202
+ printf("\n");
203
+
204
+ if ((!j && !seen) || line_porcelain) {
205
+ printf("author %s\n", hunk->orig_signature->name);
206
+ printf("author-mail <%s>\n", hunk->orig_signature->email);
207
+ printf("author-time %" PRId64 "\n", hunk->orig_signature->when.time);
208
+ printf("author-tz %+03d%02d\n",
209
+ hunk->orig_signature->when.offset / 60,
210
+ hunk->orig_signature->when.offset % 60);
211
+
212
+ printf("committer %s\n", hunk->orig_committer->name);
213
+ printf("committer-mail <%s>\n", hunk->orig_committer->email);
214
+ printf("committer-time %" PRId64 "\n", hunk->orig_committer->when.time);
215
+ printf("committer-tz %+03d%02d\n",
216
+ hunk->orig_committer->when.offset / 60,
217
+ hunk->orig_committer->when.offset % 60);
218
+
219
+ printf("summary %s\n", hunk->summary);
220
+
221
+ /* TODO: previous */
222
+
223
+ printf("filename %s\n", hunk->orig_path);
224
+ }
225
+
226
+ if ((line = git_blame_line_byindex(blame, line_number)) == NULL)
227
+ return cli_error_git();
228
+
229
+ printf("\t%.*s\n", (int)min(line->len, INT_MAX),
230
+ line->ptr);
231
+
232
+ if (!seen)
233
+ git_blame_commitmap_add(&seen_ids, &hunk->orig_commit_id);
234
+ }
235
+ }
236
+
237
+ git_blame_commitmap_dispose(&seen_ids);
238
+ return 0;
239
+ }
240
+
241
+ int cmd_blame(int argc, char **argv)
242
+ {
243
+ cli_repository_open_options open_opts = { argv + 1, argc - 1 };
244
+ git_blame_options blame_opts = GIT_BLAME_OPTIONS_INIT;
245
+ git_repository *repo = NULL;
246
+ git_str workdir_path = GIT_STR_INIT;
247
+ git_blame *blame = NULL;
248
+ cli_opt invalid_opt;
249
+ int ret = 0;
250
+
251
+ blame_opts.flags |= GIT_BLAME_USE_MAILMAP;
252
+
253
+ if (cli_opt_parse(&invalid_opt, opts, argv + 1, argc - 1, CLI_OPT_PARSE_GNU))
254
+ return cli_opt_usage_error(COMMAND_NAME, opts, &invalid_opt);
255
+
256
+ if (cli_opt__show_help) {
257
+ print_help();
258
+ return 0;
259
+ }
260
+
261
+ if (!file) {
262
+ ret = cli_error_usage("you must specify a file to blame");
263
+ goto done;
264
+ }
265
+
266
+ if (cli_repository_open(&repo, &open_opts) < 0)
267
+ return cli_error_git();
268
+
269
+ if ((ret = cli_resolve_path(&workdir_path, repo, file)) != 0)
270
+ goto done;
271
+
272
+ if (git_blame_file(&blame, repo, workdir_path.ptr, &blame_opts) < 0) {
273
+ ret = cli_error_git();
274
+ goto done;
275
+ }
276
+
277
+ if (porcelain || line_porcelain)
278
+ ret = print_porcelain(blame);
279
+ else
280
+ ret = print_standard(blame);
281
+
282
+ done:
283
+ git_str_dispose(&workdir_path);
284
+ git_blame_free(blame);
285
+ git_repository_free(repo);
286
+ return ret;
287
+ }
@@ -6,7 +6,7 @@
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
  #define COMMAND_NAME "cat-file"
@@ -19,14 +19,11 @@ typedef enum {
19
19
  DISPLAY_TYPE
20
20
  } display_t;
21
21
 
22
- static int show_help;
23
22
  static int display = DISPLAY_CONTENT;
24
23
  static char *type_name, *object_spec;
25
24
 
26
25
  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" },
26
+ CLI_COMMON_OPT,
30
27
 
31
28
  { CLI_OPT_TYPE_SWITCH, NULL, 't', &display, DISPLAY_TYPE,
32
29
  CLI_OPT_USAGE_REQUIRED, NULL, "display the type of the object" },
@@ -45,7 +42,7 @@ static const cli_opt_spec opts[] = {
45
42
 
46
43
  static void print_help(void)
47
44
  {
48
- cli_opt_usage_fprint(stdout, PROGRAM_NAME, COMMAND_NAME, opts);
45
+ cli_opt_usage_fprint(stdout, PROGRAM_NAME, COMMAND_NAME, opts, 0);
49
46
  printf("\n");
50
47
 
51
48
  printf("Display the content for the given object in the repository.\n");
@@ -139,6 +136,7 @@ static int print_pretty(git_object *object)
139
136
 
140
137
  int cmd_cat_file(int argc, char **argv)
141
138
  {
139
+ cli_repository_open_options open_opts = { argv + 1, argc - 1};
142
140
  git_repository *repo = NULL;
143
141
  git_object *object = NULL;
144
142
  git_object_t type;
@@ -148,12 +146,12 @@ int cmd_cat_file(int argc, char **argv)
148
146
  if (cli_opt_parse(&invalid_opt, opts, argv + 1, argc - 1, CLI_OPT_PARSE_GNU))
149
147
  return cli_opt_usage_error(COMMAND_NAME, opts, &invalid_opt);
150
148
 
151
- if (show_help) {
149
+ if (cli_opt__show_help) {
152
150
  print_help();
153
151
  return 0;
154
152
  }
155
153
 
156
- if (git_repository_open_ext(&repo, ".", GIT_REPOSITORY_OPEN_FROM_ENV, NULL) < 0)
154
+ if (cli_repository_open(&repo, &open_opts) < 0)
157
155
  return cli_error_git();
158
156
 
159
157
  if ((giterr = git_revparse_single(&object, repo, object_spec)) < 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"
@@ -19,14 +19,12 @@
19
19
  #define COMMAND_NAME "clone"
20
20
 
21
21
  static char *branch, *remote_path, *local_path, *depth;
22
- static int show_help, quiet, checkout = 1, bare;
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" },
@@ -48,7 +46,7 @@ static const cli_opt_spec opts[] = {
48
46
 
49
47
  static void print_help(void)
50
48
  {
51
- cli_opt_usage_fprint(stdout, PROGRAM_NAME, COMMAND_NAME, opts);
49
+ cli_opt_usage_fprint(stdout, PROGRAM_NAME, COMMAND_NAME, opts, 0);
52
50
  printf("\n");
53
51
 
54
52
  printf("Clone a repository into a new directory.\n");
@@ -135,7 +133,7 @@ int cmd_clone(int argc, char **argv)
135
133
  if (cli_opt_parse(&invalid_opt, opts, argv + 1, argc - 1, CLI_OPT_PARSE_GNU))
136
134
  return cli_opt_usage_error(COMMAND_NAME, opts, &invalid_opt);
137
135
 
138
- if (show_help) {
136
+ if (cli_opt__show_help) {
139
137
  print_help();
140
138
  return 0;
141
139
  }