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
@@ -81,13 +81,18 @@ typedef enum {
81
81
  GIT_OBJECT_REF_DELTA = 7 /**< A delta, base is given by object id. */
82
82
  } git_object_t;
83
83
 
84
- /** An open object database handle. */
84
+ /**
85
+ * An object database stores the objects (commit, trees, blobs, tags,
86
+ * etc) for a repository.
87
+ */
85
88
  typedef struct git_odb git_odb;
86
89
 
87
90
  /** A custom backend in an ODB */
88
91
  typedef struct git_odb_backend git_odb_backend;
89
92
 
90
- /** An object read from the ODB */
93
+ /**
94
+ * A "raw" object read from the object database.
95
+ */
91
96
  typedef struct git_odb_object git_odb_object;
92
97
 
93
98
  /** A stream to read/write from the ODB */
@@ -194,7 +199,18 @@ typedef struct git_reference_iterator git_reference_iterator;
194
199
  /** Transactional interface to references */
195
200
  typedef struct git_transaction git_transaction;
196
201
 
197
- /** Annotated commits, the input to merge and rebase. */
202
+ /**
203
+ * Annotated commits are commits with additional metadata about how the
204
+ * commit was resolved, which can be used for maintaining the user's
205
+ * "intent" through commands like merge and rebase.
206
+ *
207
+ * For example, if a user wants to conceptually "merge `HEAD`", then the
208
+ * commit portion of an annotated commit will point to the `HEAD` commit,
209
+ * but the _annotation_ will denote the ref `HEAD`. This allows git to
210
+ * perform the internal bookkeeping so that the system knows both the
211
+ * content of what is being merged but also how the content was looked up
212
+ * so that it can be recorded in the reflog appropriately.
213
+ */
198
214
  typedef struct git_annotated_commit git_annotated_commit;
199
215
 
200
216
  /** Representation of a status collection */
@@ -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.6.3"
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 6
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 3
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.6"
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
  /**
@@ -237,7 +246,9 @@ GIT_EXTERN(int) git_worktree_prune_options_init(
237
246
  *
238
247
  * If the worktree is not valid and not locked or if the above
239
248
  * flags have been passed in, this function will return a
240
- * positive value.
249
+ * positive value. If the worktree is not prunable, an error
250
+ * message will be set (visible in `giterr_last`) with details about
251
+ * why.
241
252
  *
242
253
  * @param wt Worktree to check.
243
254
  * @param opts The prunable options.
@@ -263,4 +274,5 @@ GIT_EXTERN(int) git_worktree_prune(git_worktree *wt,
263
274
 
264
275
  /** @} */
265
276
  GIT_END_DECL
277
+
266
278
  #endif
@@ -41,8 +41,8 @@ include(SelectHTTPSBackend)
41
41
  include(SelectHashes)
42
42
  include(SelectHTTPParser)
43
43
  include(SelectRegex)
44
+ include(SelectXdiff)
44
45
  include(SelectSSH)
45
- include(SelectWinHTTP)
46
46
  include(SelectZlib)
47
47
 
48
48
  #
@@ -58,20 +58,43 @@ add_feature_info(futimens GIT_USE_FUTIMENS "futimens support")
58
58
 
59
59
  # qsort
60
60
 
61
- check_prototype_definition(qsort_r
62
- "void qsort_r(void *base, size_t nmemb, size_t size, void *thunk, int (*compar)(void *, const void *, const void *))"
63
- "" "stdlib.h" GIT_QSORT_R_BSD)
61
+ # old-style FreeBSD qsort_r() has the 'context' parameter as the first argument
62
+ # of the comparison function:
63
+ check_prototype_definition_safe(qsort_r
64
+ "void (qsort_r)(void *base, size_t nmemb, size_t size, void *context, int (*compar)(void *, const void *, const void *))"
65
+ "" "stdlib.h" GIT_QSORT_BSD)
66
+
67
+ # GNU or POSIX qsort_r() has the 'context' parameter as the last argument of the
68
+ # comparison function:
69
+ check_prototype_definition_safe(qsort_r
70
+ "void (qsort_r)(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *, void *), void *context)"
71
+ "" "stdlib.h" GIT_QSORT_GNU)
72
+
73
+ # C11 qsort_s() has the 'context' parameter as the last argument of the
74
+ # comparison function, and returns an error status:
75
+ check_prototype_definition_safe(qsort_s
76
+ "errno_t (qsort_s)(void *base, rsize_t nmemb, rsize_t size, int (*compar)(const void *, const void *, void *), void *context)"
77
+ "0" "stdlib.h" GIT_QSORT_C11)
78
+
79
+ # MSC qsort_s() has the 'context' parameter as the first argument of the
80
+ # comparison function, and as the last argument of qsort_s():
81
+ check_prototype_definition_safe(qsort_s
82
+ "void (qsort_s)(void *base, size_t num, size_t width, int (*compare )(void *, const void *, const void *), void *context)"
83
+ "" "stdlib.h" GIT_QSORT_MSC)
64
84
 
65
- check_prototype_definition(qsort_r
66
- "void qsort_r(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *, void *), void *arg)"
67
- "" "stdlib.h" GIT_QSORT_R_GNU)
85
+ # random / entropy data
68
86
 
69
- check_function_exists(qsort_s GIT_QSORT_S)
87
+ check_symbol_exists(getentropy unistd.h GIT_RAND_GETENTROPY)
88
+ check_symbol_exists(getloadavg stdlib.h GIT_RAND_GETLOADAVG)
70
89
 
71
- # random / entropy data
90
+ # poll
72
91
 
73
- check_function_exists(getentropy GIT_RAND_GETENTROPY)
74
- check_function_exists(getloadavg GIT_RAND_GETLOADAVG)
92
+ if(WIN32)
93
+ set(GIT_IO_WSAPOLL 1)
94
+ else()
95
+ check_symbol_exists(poll poll.h GIT_IO_POLL)
96
+ check_symbol_exists(select sys/select.h GIT_IO_SELECT)
97
+ endif()
75
98
 
76
99
  # determine architecture of the machine
77
100
 
@@ -104,7 +127,8 @@ endif()
104
127
  # realtime support
105
128
 
106
129
  check_library_exists(rt clock_gettime "time.h" NEED_LIBRT)
107
- if(NEED_LIBRT)
130
+
131
+ if(NEED_LIBRT AND NOT CMAKE_SYSTEM_NAME MATCHES "iOS")
108
132
  list(APPEND LIBGIT2_SYSTEM_LIBS rt)
109
133
  list(APPEND LIBGIT2_PC_LIBS "-lrt")
110
134
  endif()
@@ -112,7 +136,8 @@ endif()
112
136
  # platform libraries
113
137
 
114
138
  if(WIN32)
115
- 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")
116
141
  endif()
117
142
 
118
143
  if(CMAKE_SYSTEM_NAME MATCHES "(Solaris|SunOS)")
@@ -160,7 +185,7 @@ add_feature_info(ntlmclient GIT_NTLM "NTLM authentication support for Unix")
160
185
 
161
186
  # iconv
162
187
  if(USE_ICONV)
163
- find_package(Iconv)
188
+ find_package(IntlIconv)
164
189
  endif()
165
190
  if(ICONV_FOUND)
166
191
  set(GIT_USE_ICONV 1)
@@ -177,7 +202,7 @@ add_feature_info(iconv GIT_USE_ICONV "iconv encoding conversion support")
177
202
  add_subdirectory(libgit2)
178
203
  add_subdirectory(util)
179
204
 
180
- if(BUILD_CLI)
205
+ if(BUILD_CLI AND NOT CMAKE_SYSTEM_NAME MATCHES "iOS")
181
206
  add_subdirectory(cli)
182
207
  endif()
183
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) {