rugged 1.7.2 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
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
  }