rugged 1.4.2 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (439) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/ext/rugged/extconf.rb +1 -0
  4. data/ext/rugged/rugged.c +16 -0
  5. data/ext/rugged/rugged.h +4 -0
  6. data/ext/rugged/rugged_remote.c +10 -10
  7. data/ext/rugged/rugged_repo.c +2 -7
  8. data/ext/rugged/rugged_settings.c +5 -0
  9. data/lib/rugged/tree.rb +4 -0
  10. data/lib/rugged/version.rb +1 -1
  11. data/vendor/libgit2/CMakeLists.txt +16 -3
  12. data/vendor/libgit2/COPYING +40 -0
  13. data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
  14. data/vendor/libgit2/cmake/FindPCRE.cmake +3 -4
  15. data/vendor/libgit2/cmake/FindPCRE2.cmake +1 -1
  16. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +1 -1
  17. data/vendor/libgit2/cmake/SelectHashes.cmake +62 -14
  18. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +3 -1
  19. data/vendor/libgit2/deps/zlib/adler32.c +7 -0
  20. data/vendor/libgit2/deps/zlib/crc32.c +975 -288
  21. data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
  22. data/vendor/libgit2/deps/zlib/deflate.c +83 -31
  23. data/vendor/libgit2/deps/zlib/deflate.h +12 -15
  24. data/vendor/libgit2/deps/zlib/gzguts.h +3 -2
  25. data/vendor/libgit2/deps/zlib/infback.c +2 -1
  26. data/vendor/libgit2/deps/zlib/inffast.c +14 -14
  27. data/vendor/libgit2/deps/zlib/inflate.c +39 -8
  28. data/vendor/libgit2/deps/zlib/inflate.h +3 -2
  29. data/vendor/libgit2/deps/zlib/inftrees.c +3 -3
  30. data/vendor/libgit2/deps/zlib/trees.c +27 -48
  31. data/vendor/libgit2/deps/zlib/zlib.h +126 -100
  32. data/vendor/libgit2/deps/zlib/zutil.c +2 -2
  33. data/vendor/libgit2/deps/zlib/zutil.h +12 -9
  34. data/vendor/libgit2/include/git2/branch.h +2 -2
  35. data/vendor/libgit2/include/git2/common.h +22 -1
  36. data/vendor/libgit2/include/git2/config.h +6 -6
  37. data/vendor/libgit2/include/git2/deprecated.h +2 -0
  38. data/vendor/libgit2/include/git2/errors.h +19 -4
  39. data/vendor/libgit2/include/git2/merge.h +1 -1
  40. data/vendor/libgit2/include/git2/status.h +5 -2
  41. data/vendor/libgit2/include/git2/sys/remote.h +15 -0
  42. data/vendor/libgit2/include/git2/sys/transport.h +9 -5
  43. data/vendor/libgit2/include/git2/version.h +27 -6
  44. data/vendor/libgit2/src/CMakeLists.txt +104 -214
  45. data/vendor/libgit2/src/README.md +12 -0
  46. data/vendor/libgit2/src/cli/CMakeLists.txt +53 -0
  47. data/vendor/libgit2/src/cli/README.md +26 -0
  48. data/vendor/libgit2/src/cli/cli.h +20 -0
  49. data/vendor/libgit2/src/cli/cmd.c +21 -0
  50. data/vendor/libgit2/src/cli/cmd.h +33 -0
  51. data/vendor/libgit2/src/cli/cmd_cat_file.c +204 -0
  52. data/vendor/libgit2/src/cli/cmd_clone.c +176 -0
  53. data/vendor/libgit2/src/cli/cmd_hash_object.c +135 -0
  54. data/vendor/libgit2/src/cli/cmd_help.c +86 -0
  55. data/vendor/libgit2/src/cli/error.h +51 -0
  56. data/vendor/libgit2/src/cli/main.c +106 -0
  57. data/vendor/libgit2/src/cli/opt.c +669 -0
  58. data/vendor/libgit2/src/cli/opt.h +349 -0
  59. data/vendor/libgit2/src/cli/opt_usage.c +194 -0
  60. data/vendor/libgit2/src/cli/opt_usage.h +35 -0
  61. data/vendor/libgit2/src/cli/progress.c +345 -0
  62. data/vendor/libgit2/src/cli/progress.h +117 -0
  63. data/vendor/libgit2/src/cli/sighandler.h +20 -0
  64. data/vendor/libgit2/src/cli/unix/sighandler.c +36 -0
  65. data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
  66. data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
  67. data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
  68. data/vendor/libgit2/src/features.h.in +9 -0
  69. data/vendor/libgit2/src/libgit2/CMakeLists.txt +131 -0
  70. data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +0 -0
  71. data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +0 -0
  72. data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +0 -0
  73. data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +0 -0
  74. data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +0 -0
  75. data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
  76. data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +0 -0
  77. data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +0 -0
  78. data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +0 -0
  79. data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +0 -0
  80. data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +0 -0
  81. data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +0 -0
  82. data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +0 -0
  83. data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
  84. data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +1 -1
  85. data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +0 -0
  86. data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +14 -9
  87. data/vendor/libgit2/src/{branch.h → libgit2/branch.h} +0 -0
  88. data/vendor/libgit2/src/{buf.c → libgit2/buf.c} +0 -0
  89. data/vendor/libgit2/src/{buf.h → libgit2/buf.h} +0 -0
  90. data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +0 -0
  91. data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +0 -0
  92. data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +0 -0
  93. data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -0
  94. data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +0 -0
  95. data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +0 -0
  96. data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +0 -0
  97. data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +0 -0
  98. data/vendor/libgit2/src/{commit.h → libgit2/commit.h} +0 -0
  99. data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +20 -17
  100. data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +1 -1
  101. data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +0 -0
  102. data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +0 -0
  103. data/vendor/libgit2/src/libgit2/common.h +55 -0
  104. data/vendor/libgit2/src/{config.c → libgit2/config.c} +14 -7
  105. data/vendor/libgit2/src/{config.h → libgit2/config.h} +0 -0
  106. data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +0 -0
  107. data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +0 -0
  108. data/vendor/libgit2/src/{config_entries.c → libgit2/config_entries.c} +0 -0
  109. data/vendor/libgit2/src/{config_entries.h → libgit2/config_entries.h} +0 -0
  110. data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +0 -0
  111. data/vendor/libgit2/src/{config_mem.c → libgit2/config_mem.c} +0 -0
  112. data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +0 -0
  113. data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
  114. data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +0 -0
  115. data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +0 -0
  116. data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
  117. data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
  118. data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +0 -0
  119. data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +0 -0
  120. data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +0 -0
  121. data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +0 -0
  122. data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +0 -0
  123. data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +0 -0
  124. data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
  125. data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +0 -0
  126. data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +0 -0
  127. data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +0 -0
  128. data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
  129. data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +5 -0
  130. data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +0 -0
  131. data/vendor/libgit2/src/{diff_stats.h → libgit2/diff_stats.h} +0 -0
  132. data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +0 -0
  133. data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
  134. data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +1 -0
  135. data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +0 -0
  136. data/vendor/libgit2/src/{email.c → libgit2/email.c} +0 -0
  137. data/vendor/libgit2/src/{email.h → libgit2/email.h} +0 -0
  138. data/vendor/libgit2/src/{errors.c → libgit2/errors.c} +0 -0
  139. data/vendor/libgit2/src/{errors.h → libgit2/errors.h} +1 -2
  140. data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +5 -2
  141. data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +0 -0
  142. data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +0 -0
  143. data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
  144. data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +31 -1
  145. data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +0 -0
  146. data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +0 -0
  147. data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +0 -0
  148. data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
  149. data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +0 -0
  150. data/vendor/libgit2/src/{idxmap.c → libgit2/idxmap.c} +0 -0
  151. data/vendor/libgit2/src/{idxmap.h → libgit2/idxmap.h} +0 -0
  152. data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +0 -0
  153. data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +0 -0
  154. data/vendor/libgit2/src/{index.c → libgit2/index.c} +6 -6
  155. data/vendor/libgit2/src/{index.h → libgit2/index.h} +0 -0
  156. data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +2 -2
  157. data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
  158. data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +3 -3
  159. data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +0 -0
  160. data/vendor/libgit2/src/{libgit2.c → libgit2/libgit2.c} +13 -0
  161. data/vendor/libgit2/src/{libgit2.h → libgit2/libgit2.h} +0 -0
  162. data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +0 -0
  163. data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
  164. data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +0 -0
  165. data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +0 -0
  166. data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +0 -0
  167. data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
  168. data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +0 -0
  169. data/vendor/libgit2/src/{message.c → libgit2/message.c} +0 -0
  170. data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +28 -26
  171. data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +2 -1
  172. data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +9 -9
  173. data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +1 -1
  174. data/vendor/libgit2/src/{netops.c → libgit2/netops.c} +0 -1
  175. data/vendor/libgit2/src/{netops.h → libgit2/netops.h} +0 -0
  176. data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +0 -0
  177. data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
  178. data/vendor/libgit2/src/{object.c → libgit2/object.c} +1 -0
  179. data/vendor/libgit2/src/{object.h → libgit2/object.h} +0 -0
  180. data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
  181. data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +2 -2
  182. data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +0 -0
  183. data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +0 -0
  184. data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +0 -0
  185. data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +0 -0
  186. data/vendor/libgit2/src/{offmap.c → libgit2/offmap.c} +0 -0
  187. data/vendor/libgit2/src/{offmap.h → libgit2/offmap.h} +0 -0
  188. data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +2 -21
  189. data/vendor/libgit2/src/{oid.h → libgit2/oid.h} +35 -2
  190. data/vendor/libgit2/src/{oidarray.c → libgit2/oidarray.c} +0 -0
  191. data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +0 -0
  192. data/vendor/libgit2/src/{oidmap.c → libgit2/oidmap.c} +1 -1
  193. data/vendor/libgit2/src/{oidmap.h → libgit2/oidmap.h} +0 -0
  194. data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +0 -0
  195. data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +0 -0
  196. data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +24 -18
  197. data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +3 -2
  198. data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +0 -0
  199. data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +0 -0
  200. data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +0 -0
  201. data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +0 -0
  202. data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +0 -0
  203. data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +0 -0
  204. data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +0 -0
  205. data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
  206. data/vendor/libgit2/src/{path.c → libgit2/path.c} +1 -0
  207. data/vendor/libgit2/src/{path.h → libgit2/path.h} +0 -0
  208. data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +0 -0
  209. data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +0 -0
  210. data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +0 -0
  211. data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +0 -0
  212. data/vendor/libgit2/src/{push.c → libgit2/push.c} +0 -0
  213. data/vendor/libgit2/src/{push.h → libgit2/push.h} +0 -0
  214. data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +0 -0
  215. data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +0 -0
  216. data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +11 -1
  217. data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
  218. data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
  219. data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +6 -2
  220. data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +0 -0
  221. data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +0 -0
  222. data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +0 -0
  223. data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +0 -0
  224. data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +0 -0
  225. data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +0 -0
  226. data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +6 -3
  227. data/vendor/libgit2/src/{remote.h → libgit2/remote.h} +1 -1
  228. data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
  229. data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +155 -22
  230. data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +1 -0
  231. data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +0 -0
  232. data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +0 -0
  233. data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +0 -0
  234. data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +0 -0
  235. data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +0 -0
  236. data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +0 -0
  237. data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +0 -0
  238. data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +0 -0
  239. data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +0 -0
  240. data/vendor/libgit2/src/{status.c → libgit2/status.c} +0 -0
  241. data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
  242. data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +0 -0
  243. data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
  244. data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +0 -0
  245. data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
  246. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +0 -0
  247. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +0 -0
  248. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +0 -0
  249. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +0 -0
  250. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
  251. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
  252. data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
  253. data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
  254. data/vendor/libgit2/src/{streams → libgit2/streams}/socket.c +0 -0
  255. data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +0 -0
  256. data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +0 -0
  257. data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
  258. data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +0 -0
  259. data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
  260. data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +0 -0
  261. data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +0 -0
  262. data/vendor/libgit2/src/{sysdir.c → libgit2/sysdir.c} +0 -0
  263. data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +0 -0
  264. data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +15 -5
  265. data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +0 -0
  266. data/vendor/libgit2/src/{threadstate.c → libgit2/threadstate.c} +0 -0
  267. data/vendor/libgit2/src/{threadstate.h → libgit2/threadstate.h} +0 -0
  268. data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +0 -0
  269. data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +0 -0
  270. data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +0 -0
  271. data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +0 -0
  272. data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +0 -0
  273. data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +0 -0
  274. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +0 -0
  275. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +0 -0
  276. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.c +0 -0
  277. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +0 -0
  278. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.c +0 -0
  279. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +0 -0
  280. data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +0 -0
  281. data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
  282. data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +0 -0
  283. data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +0 -0
  284. data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -0
  285. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +1 -1
  286. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +0 -0
  287. data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +0 -0
  288. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +12 -0
  289. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +0 -0
  290. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +0 -0
  291. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +0 -0
  292. data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.c +0 -0
  293. data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.h +0 -0
  294. data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +0 -0
  295. data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +1 -1
  296. data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +0 -0
  297. data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +16 -23
  298. data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +1 -1
  299. data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
  300. data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +0 -0
  301. data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +0 -0
  302. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/git-xdiff.h +0 -0
  303. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiff.h +0 -0
  304. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.c +0 -0
  305. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.h +0 -0
  306. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.c +0 -0
  307. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.h +0 -0
  308. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xhistogram.c +0 -0
  309. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xinclude.h +0 -0
  310. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmacros.h +0 -0
  311. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmerge.c +0 -0
  312. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xpatience.c +0 -0
  313. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.c +0 -0
  314. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.h +0 -0
  315. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xtypes.h +0 -0
  316. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.c +0 -0
  317. data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.h +0 -0
  318. data/vendor/libgit2/src/util/CMakeLists.txt +74 -0
  319. data/vendor/libgit2/src/{alloc.c → util/alloc.c} +0 -0
  320. data/vendor/libgit2/src/{alloc.h → util/alloc.h} +0 -0
  321. data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.c +0 -0
  322. data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.h +1 -1
  323. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.c +0 -0
  324. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
  325. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.c +0 -0
  326. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
  327. data/vendor/libgit2/src/{array.h → util/array.h} +1 -1
  328. data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
  329. data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
  330. data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +0 -0
  331. data/vendor/libgit2/src/{date.c → util/date.c} +4 -3
  332. data/vendor/libgit2/src/{date.h → util/date.h} +0 -0
  333. data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +1 -1
  334. data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +1 -1
  335. data/vendor/libgit2/src/{fs_path.c → util/fs_path.c} +219 -65
  336. data/vendor/libgit2/src/{fs_path.h → util/fs_path.h} +47 -9
  337. data/vendor/libgit2/src/{futils.c → util/futils.c} +44 -2
  338. data/vendor/libgit2/src/{futils.h → util/futils.h} +2 -1
  339. data/vendor/libgit2/src/{common.h → util/git2_util.h} +13 -59
  340. data/vendor/libgit2/src/util/hash/builtin.c +53 -0
  341. data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
  342. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +1 -1
  343. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
  344. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.c +55 -0
  345. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
  346. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.c +46 -0
  347. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
  348. data/vendor/libgit2/src/util/hash/openssl.c +194 -0
  349. data/vendor/libgit2/src/util/hash/openssl.h +45 -0
  350. data/vendor/libgit2/src/util/hash/rfc6234/sha.h +355 -0
  351. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
  352. data/vendor/libgit2/src/util/hash/sha.h +70 -0
  353. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +0 -0
  354. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
  355. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
  356. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
  357. data/vendor/libgit2/src/util/hash/win32.c +549 -0
  358. data/vendor/libgit2/src/util/hash/win32.h +60 -0
  359. data/vendor/libgit2/src/{hash.c → util/hash.c} +17 -1
  360. data/vendor/libgit2/src/{hash.h → util/hash.h} +5 -3
  361. data/vendor/libgit2/src/{integer.h → util/integer.h} +0 -0
  362. data/vendor/libgit2/src/{khash.h → util/khash.h} +0 -0
  363. data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
  364. data/vendor/libgit2/src/{net.c → util/net.c} +0 -1
  365. data/vendor/libgit2/src/{net.h → util/net.h} +1 -1
  366. data/vendor/libgit2/src/{pool.c → util/pool.c} +0 -0
  367. data/vendor/libgit2/src/{pool.h → util/pool.h} +1 -1
  368. data/vendor/libgit2/src/{posix.c → util/posix.c} +0 -0
  369. data/vendor/libgit2/src/{posix.h → util/posix.h} +1 -1
  370. data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
  371. data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +1 -1
  372. data/vendor/libgit2/src/{rand.c → util/rand.c} +7 -3
  373. data/vendor/libgit2/src/{rand.h → util/rand.h} +1 -1
  374. data/vendor/libgit2/src/{regexp.c → util/regexp.c} +0 -0
  375. data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
  376. data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
  377. data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
  378. data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +0 -0
  379. data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +1 -1
  380. data/vendor/libgit2/src/{str.c → util/str.c} +0 -0
  381. data/vendor/libgit2/src/{str.h → util/str.h} +1 -1
  382. data/vendor/libgit2/src/{strmap.c → util/strmap.c} +0 -0
  383. data/vendor/libgit2/src/{strmap.h → util/strmap.h} +1 -1
  384. data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
  385. data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
  386. data/vendor/libgit2/src/{thread.h → util/thread.h} +0 -0
  387. data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
  388. data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -1
  389. data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -1
  390. data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
  391. data/vendor/libgit2/src/{unix → util/unix}/realpath.c +1 -1
  392. data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
  393. data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
  394. data/vendor/libgit2/src/{util.c → util/util.c} +1 -1
  395. data/vendor/libgit2/src/{util.h → util/util.h} +1 -1
  396. data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
  397. data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
  398. data/vendor/libgit2/src/{vector.c → util/vector.c} +0 -0
  399. data/vendor/libgit2/src/{vector.h → util/vector.h} +1 -1
  400. data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
  401. data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
  402. data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
  403. data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
  404. data/vendor/libgit2/src/{win32 → util/win32}/error.c +0 -0
  405. data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
  406. data/vendor/libgit2/src/{win32 → util/win32}/findfile.c +0 -0
  407. data/vendor/libgit2/src/{win32 → util/win32}/findfile.h +1 -1
  408. data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
  409. data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
  410. data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
  411. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +0 -0
  412. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +1 -1
  413. data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -1
  414. data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +1 -1
  415. data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
  416. data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
  417. data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
  418. data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
  419. data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
  420. data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.c +0 -0
  421. data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.h +1 -1
  422. data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
  423. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +0 -0
  424. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +1 -1
  425. data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
  426. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +0 -0
  427. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
  428. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +0 -0
  429. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
  430. data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
  431. data/vendor/libgit2/src/{zstream.c → util/zstream.c} +0 -0
  432. data/vendor/libgit2/src/{zstream.h → util/zstream.h} +1 -1
  433. metadata +394 -365
  434. data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
  435. data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
  436. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  437. data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
  438. data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
  439. data/vendor/libgit2/src/hash/sha1.h +0 -40
@@ -436,6 +436,8 @@ GIT_EXTERN(int) git_diff_format_email_options_init(
436
436
  #define GITERR_WORKTREE GIT_ERROR_WORKTREE
437
437
  #define GITERR_SHA1 GIT_ERROR_SHA1
438
438
 
439
+ #define GIT_ERROR_SHA1 GIT_ERROR_SHA
440
+
439
441
  /**
440
442
  * Return the last `git_error` object that was generated for the
441
443
  * current thread. This is an alias of `git_error_last` and is
@@ -57,7 +57,8 @@ typedef enum {
57
57
  GIT_RETRY = -32, /**< Internal only */
58
58
  GIT_EMISMATCH = -33, /**< Hashsum mismatch in object */
59
59
  GIT_EINDEXDIRTY = -34, /**< Unsaved changes in the index would be overwritten */
60
- GIT_EAPPLYFAIL = -35 /**< Patch application failed */
60
+ GIT_EAPPLYFAIL = -35, /**< Patch application failed */
61
+ GIT_EOWNER = -36 /**< The object is not owned by the current user */
61
62
  } git_error_code;
62
63
 
63
64
  /**
@@ -106,7 +107,7 @@ typedef enum {
106
107
  GIT_ERROR_FILESYSTEM,
107
108
  GIT_ERROR_PATCH,
108
109
  GIT_ERROR_WORKTREE,
109
- GIT_ERROR_SHA1,
110
+ GIT_ERROR_SHA,
110
111
  GIT_ERROR_HTTP,
111
112
  GIT_ERROR_INTERNAL
112
113
  } git_error_t;
@@ -130,7 +131,8 @@ GIT_EXTERN(const git_error *) git_error_last(void);
130
131
  GIT_EXTERN(void) git_error_clear(void);
131
132
 
132
133
  /**
133
- * Set the error message string for this thread.
134
+ * Set the error message string for this thread, using `printf`-style
135
+ * formatting.
134
136
  *
135
137
  * This function is public so that custom ODB backends and the like can
136
138
  * relay an error message through libgit2. Most regular users of libgit2
@@ -143,7 +145,20 @@ GIT_EXTERN(void) git_error_clear(void);
143
145
  *
144
146
  * @param error_class One of the `git_error_t` enum above describing the
145
147
  * general subsystem that is responsible for the error.
146
- * @param string The formatted error message to keep
148
+ * @param fmt The `printf`-style format string; subsequent arguments must
149
+ * be the arguments for the format string.
150
+ */
151
+ GIT_EXTERN(void) git_error_set(int error_class, const char *fmt, ...)
152
+ GIT_FORMAT_PRINTF(2, 3);
153
+
154
+ /**
155
+ * Set the error message string for this thread. This function is like
156
+ * `git_error_set` but takes a static string instead of a `printf`-style
157
+ * format.
158
+ *
159
+ * @param error_class One of the `git_error_t` enum above describing the
160
+ * general subsystem that is responsible for the error.
161
+ * @param string The error message to keep
147
162
  * @return 0 on success or -1 on failure
148
163
  */
149
164
  GIT_EXTERN(int) git_error_set_str(int error_class, const char *string);
@@ -603,7 +603,7 @@ GIT_EXTERN(int) git_merge_commits(
603
603
  * completes, resolve any conflicts and prepare a commit.
604
604
  *
605
605
  * For compatibility with git, the repository is put into a merging
606
- * state. Once the commit is done (or if the uses wishes to abort),
606
+ * state. Once the commit is done (or if the user wishes to abort),
607
607
  * you should clear this state by calling
608
608
  * `git_repository_state_cleanup()`.
609
609
  *
@@ -227,13 +227,16 @@ typedef struct {
227
227
 
228
228
  /**
229
229
  * The `show` value is one of the `git_status_show_t` constants that
230
- * control which files to scan and in what order.
230
+ * control which files to scan and in what order. The default is
231
+ * `GIT_STATUS_SHOW_INDEX_AND_WORKDIR`.
231
232
  */
232
233
  git_status_show_t show;
233
234
 
234
235
  /**
235
236
  * The `flags` value is an OR'ed combination of the
236
- * `git_status_opt_t` values above.
237
+ * `git_status_opt_t` values above. The default is
238
+ * `GIT_STATUS_OPT_DEFAULTS`, which matches git's default
239
+ * behavior.
237
240
  */
238
241
  unsigned int flags;
239
242
 
@@ -8,6 +8,8 @@
8
8
  #ifndef INCLUDE_sys_git_remote_h
9
9
  #define INCLUDE_sys_git_remote_h
10
10
 
11
+ #include "git2/remote.h"
12
+
11
13
  /**
12
14
  * @file git2/sys/remote.h
13
15
  * @brief Low-level remote functionality for custom transports
@@ -26,6 +28,19 @@ typedef enum {
26
28
  GIT_REMOTE_CAPABILITY_REACHABLE_OID = (1 << 1),
27
29
  } git_remote_capability_t;
28
30
 
31
+ /**
32
+ * Disposes libgit2-initialized fields from a git_remote_connect_options.
33
+ * This should only be used for git_remote_connect_options returned by
34
+ * git_transport_remote_connect_options.
35
+ *
36
+ * Note that this does not free the `git_remote_connect_options` itself, just
37
+ * the memory pointed to by it.
38
+ *
39
+ * @param opts The `git_remote_connect_options` struct to dispose.
40
+ */
41
+ GIT_EXTERN(void) git_remote_connect_options_dispose(
42
+ git_remote_connect_options *opts);
43
+
29
44
  /** @} */
30
45
  GIT_END_DECL
31
46
  #endif
@@ -9,10 +9,11 @@
9
9
  #define INCLUDE_sys_git_transport_h
10
10
 
11
11
  #include "git2/net.h"
12
+ #include "git2/proxy.h"
13
+ #include "git2/remote.h"
14
+ #include "git2/strarray.h"
12
15
  #include "git2/transport.h"
13
16
  #include "git2/types.h"
14
- #include "git2/strarray.h"
15
- #include "git2/proxy.h"
16
17
 
17
18
  /**
18
19
  * @file git2/sys/transport.h
@@ -261,14 +262,17 @@ GIT_EXTERN(int) git_transport_smart_certificate_check(git_transport *transport,
261
262
  GIT_EXTERN(int) git_transport_smart_credentials(git_credential **out, git_transport *transport, const char *user, int methods);
262
263
 
263
264
  /**
264
- * Get a copy of the proxy options
265
+ * Get a copy of the remote connect options
265
266
  *
266
- * The url is copied and must be freed by the caller.
267
+ * All data is copied and must be freed by the caller by calling
268
+ * `git_remote_connect_options_dispose`.
267
269
  *
268
270
  * @param out options struct to fill
269
271
  * @param transport the transport to extract the data from.
270
272
  */
271
- GIT_EXTERN(int) git_transport_smart_proxy_options(git_proxy_options *out, git_transport *transport);
273
+ GIT_EXTERN(int) git_transport_remote_connect_options(
274
+ git_remote_connect_options *out,
275
+ git_transport *transport);
272
276
 
273
277
  /*
274
278
  *** End of base transport interface ***
@@ -7,12 +7,33 @@
7
7
  #ifndef INCLUDE_git_version_h__
8
8
  #define INCLUDE_git_version_h__
9
9
 
10
- #define LIBGIT2_VERSION "1.4.2"
11
- #define LIBGIT2_VER_MAJOR 1
12
- #define LIBGIT2_VER_MINOR 4
13
- #define LIBGIT2_VER_REVISION 2
14
- #define LIBGIT2_VER_PATCH 0
10
+ /**
11
+ * The version string for libgit2. This string follows semantic
12
+ * versioning (v2) guidelines.
13
+ */
14
+ #define LIBGIT2_VERSION "1.5.0"
15
+
16
+ /** The major version number for this version of libgit2. */
17
+ #define LIBGIT2_VER_MAJOR 1
18
+
19
+ /** The minor version number for this version of libgit2. */
20
+ #define LIBGIT2_VER_MINOR 5
21
+
22
+ /** The revision ("teeny") version number for this version of libgit2. */
23
+ #define LIBGIT2_VER_REVISION 0
24
+
25
+ /** The Windows DLL patch number for this version of libgit2. */
26
+ #define LIBGIT2_VER_PATCH 0
27
+
28
+ /**
29
+ * The prerelease string for this version of libgit2. For development
30
+ * (nightly) builds, this will be "alpha". For prereleases, this will be
31
+ * a prerelease name like "beta" or "rc1". For final releases, this will
32
+ * be `NULL`.
33
+ */
34
+ #define LIBGIT2_VER_PRERELEASE NULL
15
35
 
16
- #define LIBGIT2_SOVERSION "1.4"
36
+ /** The library ABI soversion for this version of libgit2. */
37
+ #define LIBGIT2_SOVERSION "1.5"
17
38
 
18
39
  #endif
@@ -1,12 +1,22 @@
1
- add_library(git2internal OBJECT)
2
- set_target_properties(git2internal PROPERTIES C_STANDARD 90)
3
- set_target_properties(git2internal PROPERTIES C_EXTENSIONS OFF)
1
+ # The main libgit2 source tree: this CMakeLists.txt identifies platform
2
+ # support and includes the subprojects that make up core libgit2 support.
4
3
 
4
+ #
5
+ # Optional build configuration settings
6
+ #
5
7
 
6
8
  if(DEPRECATE_HARD)
7
9
  add_definitions(-DGIT_DEPRECATE_HARD)
8
10
  endif()
9
11
 
12
+ if(USE_LEAK_CHECKER STREQUAL "valgrind")
13
+ add_definitions(-DVALGRIND)
14
+ endif()
15
+
16
+ #
17
+ # Optional debugging functionality
18
+ #
19
+
10
20
  if(DEBUG_POOL)
11
21
  set(GIT_DEBUG_POOL 1)
12
22
  endif()
@@ -22,29 +32,32 @@ if(DEBUG_STRICT_OPEN)
22
32
  endif()
23
33
  add_feature_info(debugopen GIT_DEBUG_STRICT_OPEN "path validation in open")
24
34
 
35
+ #
36
+ # Optional feature enablement
37
+ #
25
38
 
26
- include(PkgBuildConfig)
27
- include(SanitizeBool)
39
+ include(SelectGSSAPI)
40
+ include(SelectHTTPSBackend)
41
+ include(SelectHashes)
42
+ include(SelectHTTPParser)
43
+ include(SelectRegex)
44
+ include(SelectSSH)
45
+ include(SelectWinHTTP)
46
+ include(SelectZlib)
28
47
 
29
- # This variable will contain the libraries we need to put into
30
- # libgit2.pc's Requires.private. That is, what we're linking to or
31
- # what someone who's statically linking us needs to link to.
32
- set(LIBGIT2_PC_REQUIRES "")
33
- # This will be set later if we use the system's http-parser library or
34
- # use iconv (OSX) and will be written to the Libs.private field in the
35
- # pc file.
36
- set(LIBGIT2_PC_LIBS "")
48
+ #
49
+ # Platform support
50
+ #
37
51
 
38
- set(LIBGIT2_INCLUDES
39
- "${CMAKE_CURRENT_BINARY_DIR}"
40
- "${PROJECT_SOURCE_DIR}/src"
41
- "${PROJECT_SOURCE_DIR}/include")
52
+ # futimes/futimens
42
53
 
43
54
  if(HAVE_FUTIMENS)
44
55
  set(GIT_USE_FUTIMENS 1)
45
56
  endif ()
46
57
  add_feature_info(futimens GIT_USE_FUTIMENS "futimens support")
47
58
 
59
+ # qsort
60
+
48
61
  check_prototype_definition(qsort_r
49
62
  "void qsort_r(void *base, size_t nmemb, size_t size, void *thunk, int (*compar)(void *, const void *, const void *))"
50
63
  "" "stdlib.h" GIT_QSORT_R_BSD)
@@ -55,69 +68,85 @@ check_prototype_definition(qsort_r
55
68
 
56
69
  check_function_exists(qsort_s GIT_QSORT_S)
57
70
 
71
+ # random / entropy data
72
+
58
73
  check_function_exists(getentropy GIT_RAND_GETENTROPY)
74
+ check_function_exists(getloadavg GIT_RAND_GETLOADAVG)
59
75
 
60
- # Find required dependencies
76
+ # determine architecture of the machine
61
77
 
62
- if(WIN32)
63
- list(APPEND LIBGIT2_SYSTEM_LIBS ws2_32)
64
- elseif(CMAKE_SYSTEM_NAME MATCHES "(Solaris|SunOS)")
65
- list(APPEND LIBGIT2_SYSTEM_LIBS socket nsl)
66
- list(APPEND LIBGIT2_PC_LIBS "-lsocket" "-lnsl")
67
- elseif(CMAKE_SYSTEM_NAME MATCHES "Haiku")
68
- list(APPEND LIBGIT2_SYSTEM_LIBS network)
69
- list(APPEND LIBGIT2_PC_LIBS "-lnetwork")
78
+ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
79
+ set(GIT_ARCH_64 1)
80
+ elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
81
+ set(GIT_ARCH_32 1)
82
+ elseif(CMAKE_SIZEOF_VOID_P)
83
+ message(FATAL_ERROR "Unsupported architecture (pointer size is ${CMAKE_SIZEOF_VOID_P} bytes)")
84
+ else()
85
+ message(FATAL_ERROR "Unsupported architecture (CMAKE_SIZEOF_VOID_P is unset)")
86
+ endif()
87
+
88
+ # nanosecond mtime/ctime support
89
+
90
+ if(USE_NSEC)
91
+ set(GIT_USE_NSEC 1)
70
92
  endif()
71
93
 
94
+ # high-resolution stat support
95
+
96
+ if(HAVE_STRUCT_STAT_ST_MTIM)
97
+ set(GIT_USE_STAT_MTIM 1)
98
+ elseif(HAVE_STRUCT_STAT_ST_MTIMESPEC)
99
+ set(GIT_USE_STAT_MTIMESPEC 1)
100
+ elseif(HAVE_STRUCT_STAT_ST_MTIME_NSEC)
101
+ set(GIT_USE_STAT_MTIME_NSEC 1)
102
+ endif()
103
+
104
+ # realtime support
105
+
72
106
  check_library_exists(rt clock_gettime "time.h" NEED_LIBRT)
73
107
  if(NEED_LIBRT)
74
108
  list(APPEND LIBGIT2_SYSTEM_LIBS rt)
75
109
  list(APPEND LIBGIT2_PC_LIBS "-lrt")
76
110
  endif()
77
111
 
78
- if(USE_THREADS)
79
- list(APPEND LIBGIT2_SYSTEM_LIBS ${CMAKE_THREAD_LIBS_INIT})
80
- list(APPEND LIBGIT2_PC_LIBS ${CMAKE_THREAD_LIBS_INIT})
112
+ # platform libraries
113
+
114
+ if(WIN32)
115
+ list(APPEND LIBGIT2_SYSTEM_LIBS ws2_32)
81
116
  endif()
82
- add_feature_info(threadsafe USE_THREADS "threadsafe support")
83
117
 
118
+ if(CMAKE_SYSTEM_NAME MATCHES "(Solaris|SunOS)")
119
+ list(APPEND LIBGIT2_SYSTEM_LIBS socket nsl)
120
+ list(APPEND LIBGIT2_PC_LIBS "-lsocket" "-lnsl")
121
+ endif()
84
122
 
85
- if(WIN32 AND EMBED_SSH_PATH)
86
- file(GLOB SRC_SSH "${EMBED_SSH_PATH}/src/*.c")
87
- list(SORT SRC_SSH)
88
- target_sources(git2internal PRIVATE ${SRC_SSH})
123
+ if(CMAKE_SYSTEM_NAME MATCHES "Haiku")
124
+ list(APPEND LIBGIT2_SYSTEM_LIBS gnu network)
125
+ list(APPEND LIBGIT2_PC_LIBS "-lgnu -lnetwork")
126
+ endif()
89
127
 
90
- list(APPEND LIBGIT2_SYSTEM_INCLUDES "${EMBED_SSH_PATH}/include")
91
- file(WRITE "${EMBED_SSH_PATH}/src/libssh2_config.h" "#define HAVE_WINCNG\n#define LIBSSH2_WINCNG\n#include \"../win32/libssh2_config.h\"")
92
- set(GIT_SSH 1)
128
+ if(AMIGA)
129
+ add_definitions(-DNO_ADDRINFO -DNO_READDIR_R -DNO_MMAP)
93
130
  endif()
94
131
 
95
- include(SelectHTTPSBackend)
96
- include(SelectHashes)
97
- include(SelectHTTPParser)
98
- include(SelectRegex)
99
- include(SelectSSH)
100
- include(SelectWinHTTP)
101
- include(SelectZlib)
132
+ # threads
102
133
 
134
+ if(USE_THREADS)
135
+ if(NOT WIN32)
136
+ find_package(Threads REQUIRED)
137
+ list(APPEND LIBGIT2_SYSTEM_LIBS ${CMAKE_THREAD_LIBS_INIT})
138
+ list(APPEND LIBGIT2_PC_LIBS ${CMAKE_THREAD_LIBS_INIT})
139
+ endif()
103
140
 
104
- if(USE_SHA1 STREQUAL "CollisionDetection")
105
- file(GLOB SRC_SHA1 hash/sha1/collisiondetect.* hash/sha1/sha1dc/*)
106
- elseif(USE_SHA1 STREQUAL "OpenSSL")
107
- file(GLOB SRC_SHA1 hash/sha1/openssl.*)
108
- elseif(USE_SHA1 STREQUAL "CommonCrypto")
109
- file(GLOB SRC_SHA1 hash/sha1/common_crypto.*)
110
- elseif(USE_SHA1 STREQUAL "mbedTLS")
111
- file(GLOB SRC_SHA1 hash/sha1/mbedtls.*)
112
- elseif(USE_SHA1 STREQUAL "Win32")
113
- file(GLOB SRC_SHA1 hash/sha1/win32.*)
114
- elseif(USE_SHA1 STREQUAL "Generic")
115
- file(GLOB SRC_SHA1 hash/sha1/generic.*)
141
+ set(GIT_THREADS 1)
116
142
  endif()
117
- list(APPEND SRC_SHA1 "hash/sha1.h")
118
- target_sources(git2internal PRIVATE ${SRC_SHA1})
143
+ add_feature_info(threadsafe USE_THREADS "threadsafe support")
144
+
145
+ #
146
+ # Optional bundled features
147
+ #
119
148
 
120
- # Optional external dependency: ntlmclient
149
+ # ntlmclient
121
150
  if(USE_NTLMCLIENT)
122
151
  set(GIT_NTLM 1)
123
152
  add_subdirectory("${PROJECT_SOURCE_DIR}/deps/ntlmclient" "${PROJECT_BINARY_DIR}/deps/ntlmclient")
@@ -126,11 +155,10 @@ if(USE_NTLMCLIENT)
126
155
  endif()
127
156
  add_feature_info(ntlmclient GIT_NTLM "NTLM authentication support for Unix")
128
157
 
129
- # Optional external dependency: GSSAPI
158
+ #
159
+ # Optional external dependencies
130
160
 
131
- include(SelectGSSAPI)
132
-
133
- # Optional external dependency: iconv
161
+ # iconv
134
162
  if(USE_ICONV)
135
163
  find_package(Iconv)
136
164
  endif()
@@ -142,166 +170,28 @@ if(ICONV_FOUND)
142
170
  endif()
143
171
  add_feature_info(iconv GIT_USE_ICONV "iconv encoding conversion support")
144
172
 
173
+ #
174
+ # Configure support
175
+ #
145
176
 
146
- if(USE_THREADS)
147
- if(NOT WIN32)
148
- find_package(Threads REQUIRED)
149
- endif()
150
-
151
- set(GIT_THREADS 1)
152
- endif()
153
-
154
- if(USE_NSEC)
155
- set(GIT_USE_NSEC 1)
156
- endif()
157
-
158
- if(HAVE_STRUCT_STAT_ST_MTIM)
159
- set(GIT_USE_STAT_MTIM 1)
160
- elseif(HAVE_STRUCT_STAT_ST_MTIMESPEC)
161
- set(GIT_USE_STAT_MTIMESPEC 1)
162
- elseif(HAVE_STRUCT_STAT_ST_MTIME_NSEC)
163
- set(GIT_USE_STAT_MTIME_NSEC 1)
164
- endif()
165
-
166
- target_compile_definitions(git2internal PRIVATE _FILE_OFFSET_BITS=64)
167
-
168
- # Collect sourcefiles
169
- file(GLOB SRC_H
170
- "${PROJECT_SOURCE_DIR}/include/git2.h"
171
- "${PROJECT_SOURCE_DIR}/include/git2/*.h"
172
- "${PROJECT_SOURCE_DIR}/include/git2/sys/*.h")
173
- list(SORT SRC_H)
174
- target_sources(git2internal PRIVATE ${SRC_H})
175
-
176
- # On Windows use specific platform sources
177
- if(WIN32 AND NOT CYGWIN)
178
- set(WIN_RC "win32/git2.rc")
179
-
180
- file(GLOB SRC_OS win32/*.c win32/*.h)
181
- list(SORT SRC_OS)
182
- target_sources(git2internal PRIVATE ${SRC_OS})
183
- elseif(AMIGA)
184
- target_compile_definitions(git2internal PRIVATE NO_ADDRINFO NO_READDIR_R NO_MMAP)
185
- else()
186
- file(GLOB SRC_OS unix/*.c unix/*.h)
187
- list(SORT SRC_OS)
188
- target_sources(git2internal PRIVATE ${SRC_OS})
189
- endif()
190
-
191
- if(USE_LEAK_CHECKER STREQUAL "valgrind")
192
- target_compile_definitions(git2internal PRIVATE VALGRIND)
193
- endif()
177
+ configure_file(features.h.in git2/sys/features.h)
194
178
 
195
- file(GLOB SRC_GIT2 *.c *.h
196
- allocators/*.c allocators/*.h
197
- streams/*.c streams/*.h
198
- transports/*.c transports/*.h
199
- xdiff/*.c xdiff/*.h)
200
- list(SORT SRC_GIT2)
201
- target_sources(git2internal PRIVATE ${SRC_GIT2})
202
-
203
- if(APPLE)
204
- # The old Secure Transport API has been deprecated in macOS 10.15.
205
- set_source_files_properties(streams/stransport.c PROPERTIES COMPILE_FLAGS -Wno-deprecated)
206
- endif()
179
+ #
180
+ # Include child projects
181
+ #
207
182
 
208
- # the xdiff dependency is not (yet) warning-free, disable warnings as
209
- # errors for the xdiff sources until we've sorted them out
210
- if(MSVC)
211
- set_source_files_properties(xdiff/xdiffi.c PROPERTIES COMPILE_FLAGS -WX-)
212
- set_source_files_properties(xdiff/xemit.c PROPERTIES COMPILE_FLAGS -WX-)
213
- set_source_files_properties(xdiff/xhistogram.c PROPERTIES COMPILE_FLAGS -WX-)
214
- set_source_files_properties(xdiff/xmerge.c PROPERTIES COMPILE_FLAGS -WX-)
215
- set_source_files_properties(xdiff/xutils.c PROPERTIES COMPILE_FLAGS -WX-)
216
- set_source_files_properties(xdiff/xpatience.c PROPERTIES COMPILE_FLAGS -WX-)
217
- else()
218
- set_source_files_properties(xdiff/xdiffi.c PROPERTIES COMPILE_FLAGS "-Wno-sign-compare -Wno-unused-parameter")
219
- set_source_files_properties(xdiff/xemit.c PROPERTIES COMPILE_FLAGS "-Wno-sign-compare -Wno-unused-parameter")
220
- set_source_files_properties(xdiff/xhistogram.c PROPERTIES COMPILE_FLAGS "-Wno-sign-compare")
221
- set_source_files_properties(xdiff/xutils.c PROPERTIES COMPILE_FLAGS "-Wno-sign-compare")
222
- set_source_files_properties(xdiff/xpatience.c PROPERTIES COMPILE_FLAGS "-Wno-sign-compare")
223
- endif()
183
+ add_subdirectory(libgit2)
184
+ add_subdirectory(util)
224
185
 
225
- # Determine architecture of the machine
226
- if(CMAKE_SIZEOF_VOID_P EQUAL 8)
227
- set(GIT_ARCH_64 1)
228
- elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
229
- set(GIT_ARCH_32 1)
230
- elseif(CMAKE_SIZEOF_VOID_P)
231
- message(FATAL_ERROR "Unsupported architecture (pointer size is ${CMAKE_SIZEOF_VOID_P} bytes)")
232
- else()
233
- message(FATAL_ERROR "Unsupported architecture (CMAKE_SIZEOF_VOID_P is unset)")
186
+ if(BUILD_CLI)
187
+ add_subdirectory(cli)
234
188
  endif()
235
189
 
236
- configure_file(features.h.in git2/sys/features.h)
237
-
238
- ide_split_sources(git2internal)
239
- list(APPEND LIBGIT2_OBJECTS $<TARGET_OBJECTS:git2internal> ${LIBGIT2_DEPENDENCY_OBJECTS})
240
-
241
- target_include_directories(git2internal PRIVATE ${LIBGIT2_INCLUDES} ${LIBGIT2_DEPENDENCY_INCLUDES} PUBLIC ${PROJECT_SOURCE_DIR}/include)
242
- target_include_directories(git2internal SYSTEM PRIVATE ${LIBGIT2_SYSTEM_INCLUDES})
243
-
190
+ # re-export these to the root so that peer projects (tests, fuzzers,
191
+ # examples) can use them
244
192
  set(LIBGIT2_INCLUDES ${LIBGIT2_INCLUDES} PARENT_SCOPE)
245
193
  set(LIBGIT2_OBJECTS ${LIBGIT2_OBJECTS} PARENT_SCOPE)
246
194
  set(LIBGIT2_DEPENDENCY_INCLUDES ${LIBGIT2_DEPENDENCY_INCLUDES} PARENT_SCOPE)
247
195
  set(LIBGIT2_DEPENDENCY_OBJECTS ${LIBGIT2_DEPENDENCY_OBJECTS} PARENT_SCOPE)
248
196
  set(LIBGIT2_SYSTEM_INCLUDES ${LIBGIT2_SYSTEM_INCLUDES} PARENT_SCOPE)
249
197
  set(LIBGIT2_SYSTEM_LIBS ${LIBGIT2_SYSTEM_LIBS} PARENT_SCOPE)
250
-
251
- if(XCODE_VERSION)
252
- # This is required for Xcode to actually link the libgit2 library
253
- # when using only object libraries.
254
- file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/dummy.c "")
255
- list(APPEND LIBGIT2_OBJECTS ${CMAKE_CURRENT_BINARY_DIR}/dummy.c)
256
- endif()
257
-
258
- # Compile and link libgit2
259
- add_library(git2 ${WIN_RC} ${LIBGIT2_OBJECTS})
260
- target_link_libraries(git2 ${LIBGIT2_SYSTEM_LIBS})
261
-
262
- set_target_properties(git2 PROPERTIES C_STANDARD 90)
263
- set_target_properties(git2 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
264
- set_target_properties(git2 PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
265
- set_target_properties(git2 PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
266
-
267
- # Workaround for Cmake bug #0011240 (see http://public.kitware.com/Bug/view.php?id=11240)
268
- # Win64+MSVC+static libs = linker error
269
- if(MSVC AND GIT_ARCH_64 AND NOT BUILD_SHARED_LIBS)
270
- set_target_properties(git2 PROPERTIES STATIC_LIBRARY_FLAGS "/MACHINE:x64")
271
- endif()
272
-
273
- ide_split_sources(git2)
274
-
275
- if(SONAME)
276
- set_target_properties(git2 PROPERTIES VERSION ${libgit2_VERSION})
277
- set_target_properties(git2 PROPERTIES SOVERSION "${libgit2_VERSION_MAJOR}.${libgit2_VERSION_MINOR}")
278
- if(LIBGIT2_FILENAME)
279
- target_compile_definitions(git2 PRIVATE LIBGIT2_FILENAME=\"${LIBGIT2_FILENAME}\")
280
- set_target_properties(git2 PROPERTIES OUTPUT_NAME ${LIBGIT2_FILENAME})
281
- elseif(DEFINED LIBGIT2_PREFIX)
282
- set_target_properties(git2 PROPERTIES PREFIX "${LIBGIT2_PREFIX}")
283
- endif()
284
- endif()
285
-
286
- pkg_build_config(NAME libgit2
287
- VERSION ${libgit2_VERSION}
288
- DESCRIPTION "The git library, take 2"
289
- LIBS_SELF git2
290
- PRIVATE_LIBS ${LIBGIT2_PC_LIBS}
291
- REQUIRES ${LIBGIT2_PC_REQUIRES}
292
- )
293
-
294
- if(MSVC_IDE)
295
- # Precompiled headers
296
- set_target_properties(git2 PROPERTIES COMPILE_FLAGS "/Yuprecompiled.h /FIprecompiled.h")
297
- set_source_files_properties(win32/precompiled.c COMPILE_FLAGS "/Ycprecompiled.h")
298
- endif()
299
-
300
- # Install
301
- install(TARGETS git2
302
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
303
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
304
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
305
- )
306
- install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/git2 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
307
- install(FILES ${PROJECT_SOURCE_DIR}/include/git2.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
@@ -0,0 +1,12 @@
1
+ # libgit2 sources
2
+
3
+ This is the source that makes up the core of libgit2 and its related
4
+ projects.
5
+
6
+ * `cli`
7
+ A git-compatible command-line interface that uses libgit2.
8
+ * `libgit2`
9
+ This is the libgit2 project, a cross-platform, linkable library
10
+ implementation of Git that you can use in your application.
11
+ * `util`
12
+ A shared utility library for these projects.
@@ -0,0 +1,53 @@
1
+ set(CLI_INCLUDES
2
+ "${libgit2_BINARY_DIR}/src"
3
+ "${libgit2_SOURCE_DIR}/src/util"
4
+ "${libgit2_SOURCE_DIR}/src/cli"
5
+ "${libgit2_SOURCE_DIR}/include")
6
+
7
+ if(WIN32 AND NOT CYGWIN)
8
+ file(GLOB CLI_SRC_OS win32/*.c)
9
+ list(SORT CLI_SRC_OS)
10
+ else()
11
+ file(GLOB CLI_SRC_OS unix/*.c)
12
+ list(SORT CLI_SRC_OS)
13
+ endif()
14
+
15
+ file(GLOB CLI_SRC_C *.c *.h)
16
+ list(SORT CLI_SRC_C)
17
+
18
+ #
19
+ # The CLI currently needs to be statically linked against libgit2 because
20
+ # the utility library uses libgit2's thread-local error buffers. TODO:
21
+ # remove this dependency and allow us to dynamically link against libgit2.
22
+ #
23
+
24
+ if(BUILD_CLI STREQUAL "dynamic")
25
+ set(CLI_LIBGIT2_LIBRARY libgit2package)
26
+ else()
27
+ set(CLI_LIBGIT2_OBJECTS $<TARGET_OBJECTS:libgit2>)
28
+ endif()
29
+
30
+ #
31
+ # Compile and link the CLI
32
+ #
33
+
34
+ add_executable(git2_cli ${CLI_SRC_C} ${CLI_SRC_OS} ${CLI_OBJECTS}
35
+ $<TARGET_OBJECTS:util>
36
+ ${CLI_LIBGIT2_OBJECTS}
37
+ ${LIBGIT2_DEPENDENCY_OBJECTS})
38
+ target_link_libraries(git2_cli ${CLI_LIBGIT2_LIBRARY} ${LIBGIT2_SYSTEM_LIBS})
39
+
40
+ set_target_properties(git2_cli PROPERTIES C_STANDARD 90)
41
+ set_target_properties(git2_cli PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${libgit2_BINARY_DIR})
42
+
43
+ ide_split_sources(git2_cli)
44
+
45
+ target_include_directories(git2_cli PRIVATE ${CLI_INCLUDES})
46
+
47
+ if(MSVC_IDE)
48
+ # Precompiled headers
49
+ set_target_properties(git2_cli PROPERTIES COMPILE_FLAGS "/Yuprecompiled.h /FIprecompiled.h")
50
+ set_source_files_properties(win32/precompiled.c COMPILE_FLAGS "/Ycprecompiled.h")
51
+ endif()
52
+
53
+ install(TARGETS git2_cli RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
@@ -0,0 +1,26 @@
1
+ # cli
2
+
3
+ A git-compatible command-line interface that uses libgit2.
4
+
5
+ ## Adding commands
6
+
7
+ 1. Individual commands have a `main`-like top-level entrypoint. For example:
8
+
9
+ ```c
10
+ int cmd_help(int argc, char **argv)
11
+ ```
12
+
13
+ Although this is the same signature as `main`, commands are not built as
14
+ individual standalone executables, they'll be linked into the main cli.
15
+ (Though there may be an option for command executables to be built as
16
+ standalone executables in the future.)
17
+
18
+ 2. Commands are prototyped in `cmd.h` and added to `main.c`'s list of
19
+ commands (`cli_cmds[]`). Commands should be specified with their name,
20
+ entrypoint and a brief description that can be printed in `git help`.
21
+ This is done because commands are linked into the main cli.
22
+
23
+ 3. Commands should accept a `--help` option that displays their help
24
+ information. This will be shown when a user runs `<command> --help` and
25
+ when a user runs `help <command>`.
26
+