rugged 1.7.2 → 1.9.6

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 (477) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rugged/extconf.rb +4 -4
  3. data/ext/rugged/rugged.c +12 -1
  4. data/ext/rugged/rugged_blame.c +22 -6
  5. data/ext/rugged/rugged_blob.c +24 -9
  6. data/ext/rugged/rugged_branch.c +10 -7
  7. data/ext/rugged/rugged_branch_collection.c +8 -6
  8. data/ext/rugged/rugged_commit.c +7 -6
  9. data/ext/rugged/rugged_config.c +20 -11
  10. data/ext/rugged/rugged_diff.c +26 -12
  11. data/ext/rugged/rugged_diff_hunk.c +2 -1
  12. data/ext/rugged/rugged_index.c +39 -29
  13. data/ext/rugged/rugged_note.c +7 -6
  14. data/ext/rugged/rugged_object.c +3 -2
  15. data/ext/rugged/rugged_patch.c +23 -9
  16. data/ext/rugged/rugged_rebase.c +22 -10
  17. data/ext/rugged/rugged_reference.c +22 -13
  18. data/ext/rugged/rugged_reference_collection.c +9 -7
  19. data/ext/rugged/rugged_remote.c +23 -12
  20. data/ext/rugged/rugged_remote_collection.c +11 -9
  21. data/ext/rugged/rugged_repo.c +60 -45
  22. data/ext/rugged/rugged_revwalk.c +22 -12
  23. data/ext/rugged/rugged_submodule.c +23 -20
  24. data/ext/rugged/rugged_submodule_collection.c +20 -9
  25. data/ext/rugged/rugged_tag.c +6 -4
  26. data/ext/rugged/rugged_tag_collection.c +7 -5
  27. data/ext/rugged/rugged_tree.c +27 -15
  28. data/lib/rugged/version.rb +1 -1
  29. data/vendor/libgit2/AUTHORS +3 -0
  30. data/vendor/libgit2/CMakeLists.txt +23 -10
  31. data/vendor/libgit2/COPYING +278 -12
  32. data/vendor/libgit2/cmake/DefaultCFlags.cmake +8 -3
  33. data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
  34. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  35. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +1 -1
  36. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
  37. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +17 -8
  38. data/vendor/libgit2/cmake/SelectHashes.cmake +28 -11
  39. data/vendor/libgit2/cmake/SelectRegex.cmake +14 -4
  40. data/vendor/libgit2/cmake/SelectSSH.cmake +30 -19
  41. data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
  42. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  43. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  44. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  45. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  46. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  47. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  48. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
  49. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  50. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  51. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  52. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
  53. data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
  54. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  55. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  56. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  57. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  58. data/vendor/libgit2/deps/pcre2/CMakeLists.txt +110 -0
  59. data/vendor/libgit2/deps/pcre2/LICENCE.md +104 -0
  60. data/vendor/libgit2/deps/pcre2/config.h.in +54 -0
  61. data/vendor/libgit2/deps/pcre2/pcre2.h +1079 -0
  62. data/vendor/libgit2/deps/pcre2/pcre2_auto_possess.c +1416 -0
  63. data/vendor/libgit2/deps/{pcre/pcre_chartables.c → pcre2/pcre2_chartables.c} +41 -47
  64. data/vendor/libgit2/deps/{pcre/pcre_ord2utf8.c → pcre2/pcre2_chkdint.c} +36 -36
  65. data/vendor/libgit2/deps/pcre2/pcre2_compile.c +11345 -0
  66. data/vendor/libgit2/deps/pcre2/pcre2_compile.h +356 -0
  67. data/vendor/libgit2/deps/pcre2/pcre2_compile_cgroup.c +632 -0
  68. data/vendor/libgit2/deps/pcre2/pcre2_compile_class.c +2777 -0
  69. data/vendor/libgit2/deps/pcre2/pcre2_config.c +250 -0
  70. data/vendor/libgit2/deps/pcre2/pcre2_context.c +557 -0
  71. data/vendor/libgit2/deps/pcre2/pcre2_convert.c +1263 -0
  72. data/vendor/libgit2/deps/{pcre/pcre_dfa_exec.c → pcre2/pcre2_dfa_match.c} +1402 -943
  73. data/vendor/libgit2/deps/pcre2/pcre2_error.c +384 -0
  74. data/vendor/libgit2/deps/pcre2/pcre2_extuni.c +159 -0
  75. data/vendor/libgit2/deps/pcre2/pcre2_find_bracket.c +217 -0
  76. data/vendor/libgit2/deps/pcre2/pcre2_fuzzsupport.c +844 -0
  77. data/vendor/libgit2/deps/pcre2/pcre2_internal.h +2353 -0
  78. data/vendor/libgit2/deps/pcre2/pcre2_intmodedep.h +1044 -0
  79. data/vendor/libgit2/deps/pcre2/pcre2_maketables.c +177 -0
  80. data/vendor/libgit2/deps/pcre2/pcre2_match.c +8244 -0
  81. data/vendor/libgit2/deps/pcre2/pcre2_match_data.c +184 -0
  82. data/vendor/libgit2/deps/pcre2/pcre2_match_next.c +171 -0
  83. data/vendor/libgit2/deps/{pcre/pcre_newline.c → pcre2/pcre2_newline.c} +92 -63
  84. data/vendor/libgit2/deps/{pcre/pcre_refcount.c → pcre2/pcre2_ord2utf.c} +64 -38
  85. data/vendor/libgit2/deps/pcre2/pcre2_pattern_info.c +430 -0
  86. data/vendor/libgit2/deps/pcre2/pcre2_printint_inc.h +1098 -0
  87. data/vendor/libgit2/deps/pcre2/pcre2_script_run.c +344 -0
  88. data/vendor/libgit2/deps/pcre2/pcre2_serialize.c +284 -0
  89. data/vendor/libgit2/deps/pcre2/pcre2_string_utils.c +199 -0
  90. data/vendor/libgit2/deps/pcre2/pcre2_study.c +2087 -0
  91. data/vendor/libgit2/deps/pcre2/pcre2_substitute.c +1761 -0
  92. data/vendor/libgit2/deps/pcre2/pcre2_substring.c +553 -0
  93. data/vendor/libgit2/deps/pcre2/pcre2_tables.c +310 -0
  94. data/vendor/libgit2/deps/pcre2/pcre2_ucd.c +5805 -0
  95. data/vendor/libgit2/deps/pcre2/pcre2_ucp.h +408 -0
  96. data/vendor/libgit2/deps/pcre2/pcre2_ucptables_inc.h +1596 -0
  97. data/vendor/libgit2/deps/pcre2/pcre2_util.h +179 -0
  98. data/vendor/libgit2/deps/pcre2/pcre2_valid_utf.c +397 -0
  99. data/vendor/libgit2/deps/pcre2/pcre2_xclass.c +547 -0
  100. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +1 -1
  101. data/vendor/libgit2/deps/xdiff/xmerge.c +16 -12
  102. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  103. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  104. data/vendor/libgit2/deps/zlib/adler32.c +5 -27
  105. data/vendor/libgit2/deps/zlib/crc32.c +94 -167
  106. data/vendor/libgit2/deps/zlib/deflate.c +358 -435
  107. data/vendor/libgit2/deps/zlib/deflate.h +41 -10
  108. data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
  109. data/vendor/libgit2/deps/zlib/infback.c +17 -30
  110. data/vendor/libgit2/deps/zlib/inffast.c +1 -4
  111. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  112. data/vendor/libgit2/deps/zlib/inflate.c +36 -102
  113. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  114. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  115. data/vendor/libgit2/deps/zlib/trees.c +287 -352
  116. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  117. data/vendor/libgit2/deps/zlib/zlib.h +202 -202
  118. data/vendor/libgit2/deps/zlib/zutil.c +18 -44
  119. data/vendor/libgit2/deps/zlib/zutil.h +13 -33
  120. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  121. data/vendor/libgit2/include/git2/apply.h +27 -6
  122. data/vendor/libgit2/include/git2/attr.h +17 -4
  123. data/vendor/libgit2/include/git2/blame.h +133 -28
  124. data/vendor/libgit2/include/git2/blob.h +71 -28
  125. data/vendor/libgit2/include/git2/branch.h +22 -15
  126. data/vendor/libgit2/include/git2/buffer.h +6 -4
  127. data/vendor/libgit2/include/git2/cert.h +2 -1
  128. data/vendor/libgit2/include/git2/checkout.h +83 -32
  129. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  130. data/vendor/libgit2/include/git2/clone.h +25 -9
  131. data/vendor/libgit2/include/git2/commit.h +132 -3
  132. data/vendor/libgit2/include/git2/common.h +132 -63
  133. data/vendor/libgit2/include/git2/config.h +93 -23
  134. data/vendor/libgit2/include/git2/credential.h +30 -2
  135. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  136. data/vendor/libgit2/include/git2/deprecated.h +134 -4
  137. data/vendor/libgit2/include/git2/describe.h +13 -1
  138. data/vendor/libgit2/include/git2/diff.h +38 -8
  139. data/vendor/libgit2/include/git2/email.h +9 -29
  140. data/vendor/libgit2/include/git2/errors.h +46 -73
  141. data/vendor/libgit2/include/git2/filter.h +14 -7
  142. data/vendor/libgit2/include/git2/global.h +8 -1
  143. data/vendor/libgit2/include/git2/graph.h +3 -2
  144. data/vendor/libgit2/include/git2/ignore.h +10 -0
  145. data/vendor/libgit2/include/git2/index.h +100 -15
  146. data/vendor/libgit2/include/git2/indexer.h +21 -4
  147. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  148. data/vendor/libgit2/include/git2/merge.h +50 -3
  149. data/vendor/libgit2/include/git2/message.h +2 -2
  150. data/vendor/libgit2/include/git2/net.h +3 -1
  151. data/vendor/libgit2/include/git2/notes.h +9 -6
  152. data/vendor/libgit2/include/git2/object.h +9 -8
  153. data/vendor/libgit2/include/git2/odb.h +91 -49
  154. data/vendor/libgit2/include/git2/odb_backend.h +80 -52
  155. data/vendor/libgit2/include/git2/oid.h +23 -25
  156. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  157. data/vendor/libgit2/include/git2/pack.h +13 -1
  158. data/vendor/libgit2/include/git2/patch.h +2 -3
  159. data/vendor/libgit2/include/git2/pathspec.h +9 -0
  160. data/vendor/libgit2/include/git2/proxy.h +12 -3
  161. data/vendor/libgit2/include/git2/rebase.h +9 -6
  162. data/vendor/libgit2/include/git2/refdb.h +2 -2
  163. data/vendor/libgit2/include/git2/reflog.h +3 -2
  164. data/vendor/libgit2/include/git2/refs.h +9 -6
  165. data/vendor/libgit2/include/git2/refspec.h +14 -4
  166. data/vendor/libgit2/include/git2/remote.h +113 -25
  167. data/vendor/libgit2/include/git2/repository.h +57 -21
  168. data/vendor/libgit2/include/git2/reset.h +16 -3
  169. data/vendor/libgit2/include/git2/revert.h +9 -4
  170. data/vendor/libgit2/include/git2/revparse.h +3 -3
  171. data/vendor/libgit2/include/git2/revwalk.h +3 -2
  172. data/vendor/libgit2/include/git2/signature.h +46 -1
  173. data/vendor/libgit2/include/git2/stash.h +17 -3
  174. data/vendor/libgit2/include/git2/status.h +10 -6
  175. data/vendor/libgit2/include/git2/stdint.h +87 -85
  176. data/vendor/libgit2/include/git2/strarray.h +2 -3
  177. data/vendor/libgit2/include/git2/submodule.h +20 -9
  178. data/vendor/libgit2/include/git2/sys/alloc.h +12 -0
  179. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  180. data/vendor/libgit2/include/git2/sys/commit_graph.h +103 -62
  181. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  182. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  183. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  184. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  185. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  186. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  187. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  188. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  189. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  190. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  191. data/vendor/libgit2/include/git2/sys/midx.h +43 -4
  192. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
  193. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  194. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  195. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  196. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  197. data/vendor/libgit2/include/git2/sys/remote.h +8 -1
  198. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  199. data/vendor/libgit2/include/git2/sys/stream.h +11 -2
  200. data/vendor/libgit2/include/git2/sys/transport.h +25 -4
  201. data/vendor/libgit2/include/git2/tag.h +3 -1
  202. data/vendor/libgit2/include/git2/trace.h +9 -3
  203. data/vendor/libgit2/include/git2/transaction.h +3 -2
  204. data/vendor/libgit2/include/git2/transport.h +11 -3
  205. data/vendor/libgit2/include/git2/tree.h +16 -5
  206. data/vendor/libgit2/include/git2/types.h +19 -3
  207. data/vendor/libgit2/include/git2/version.h +46 -8
  208. data/vendor/libgit2/include/git2/worktree.h +16 -6
  209. data/vendor/libgit2/src/CMakeLists.txt +6 -4
  210. data/vendor/libgit2/src/cli/CMakeLists.txt +3 -4
  211. data/vendor/libgit2/src/cli/cmd.c +1 -1
  212. data/vendor/libgit2/src/cli/cmd.h +4 -0
  213. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  214. data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
  215. data/vendor/libgit2/src/cli/cmd_clone.c +5 -7
  216. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  217. data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
  218. data/vendor/libgit2/src/cli/cmd_help.c +6 -7
  219. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  220. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  221. data/vendor/libgit2/src/cli/common.c +168 -0
  222. data/vendor/libgit2/src/cli/common.h +63 -0
  223. data/vendor/libgit2/src/cli/error.h +1 -1
  224. data/vendor/libgit2/src/cli/main.c +52 -24
  225. data/vendor/libgit2/src/cli/opt.c +31 -5
  226. data/vendor/libgit2/src/cli/opt.h +21 -3
  227. data/vendor/libgit2/src/cli/opt_usage.c +102 -33
  228. data/vendor/libgit2/src/cli/opt_usage.h +6 -1
  229. data/vendor/libgit2/src/cli/progress.c +51 -2
  230. data/vendor/libgit2/src/cli/progress.h +12 -0
  231. data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
  232. data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
  233. data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
  234. data/vendor/libgit2/src/libgit2/CMakeLists.txt +55 -21
  235. data/vendor/libgit2/src/libgit2/apply.c +10 -13
  236. data/vendor/libgit2/src/libgit2/attr.c +30 -13
  237. data/vendor/libgit2/src/libgit2/attr_file.c +17 -5
  238. data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
  239. data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
  240. data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
  241. data/vendor/libgit2/src/libgit2/blame.c +135 -43
  242. data/vendor/libgit2/src/libgit2/blame.h +1 -0
  243. data/vendor/libgit2/src/libgit2/cache.c +22 -17
  244. data/vendor/libgit2/src/libgit2/cache.h +7 -9
  245. data/vendor/libgit2/src/libgit2/checkout.c +34 -24
  246. data/vendor/libgit2/src/libgit2/checkout.h +0 -2
  247. data/vendor/libgit2/src/libgit2/cherrypick.c +1 -2
  248. data/vendor/libgit2/src/libgit2/clone.c +192 -166
  249. data/vendor/libgit2/src/libgit2/clone.h +4 -1
  250. data/vendor/libgit2/src/libgit2/commit.c +93 -1
  251. data/vendor/libgit2/src/libgit2/commit_graph.c +68 -58
  252. data/vendor/libgit2/src/libgit2/commit_graph.h +1 -2
  253. data/vendor/libgit2/src/libgit2/config.c +390 -299
  254. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  255. data/vendor/libgit2/src/libgit2/config.h +9 -4
  256. data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
  257. data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
  258. data/vendor/libgit2/src/libgit2/config_file.c +101 -89
  259. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  260. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  261. data/vendor/libgit2/src/libgit2/config_mem.c +195 -40
  262. data/vendor/libgit2/src/libgit2/config_parse.c +12 -10
  263. data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
  264. data/vendor/libgit2/src/libgit2/delta.c +13 -1
  265. data/vendor/libgit2/src/libgit2/describe.c +24 -24
  266. data/vendor/libgit2/src/libgit2/diff.c +1 -1
  267. data/vendor/libgit2/src/libgit2/diff_driver.c +13 -20
  268. data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
  269. data/vendor/libgit2/src/libgit2/diff_generate.c +3 -3
  270. data/vendor/libgit2/src/libgit2/diff_parse.c +2 -2
  271. data/vendor/libgit2/src/libgit2/diff_print.c +65 -9
  272. data/vendor/libgit2/src/libgit2/diff_stats.c +19 -12
  273. data/vendor/libgit2/src/libgit2/diff_tform.c +36 -8
  274. data/vendor/libgit2/src/libgit2/email.c +1 -0
  275. data/vendor/libgit2/src/libgit2/fetch.c +5 -3
  276. data/vendor/libgit2/src/libgit2/fetchhead.c +1 -1
  277. data/vendor/libgit2/src/libgit2/filter.c +5 -5
  278. data/vendor/libgit2/src/libgit2/git2.rc +3 -3
  279. data/vendor/libgit2/src/libgit2/grafts.c +18 -20
  280. data/vendor/libgit2/src/libgit2/grafts.h +0 -1
  281. data/vendor/libgit2/src/libgit2/graph.c +1 -1
  282. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  283. data/vendor/libgit2/src/libgit2/ignore.c +9 -5
  284. data/vendor/libgit2/src/libgit2/index.c +76 -98
  285. data/vendor/libgit2/src/libgit2/index.h +5 -2
  286. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  287. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  288. data/vendor/libgit2/src/libgit2/indexer.c +38 -41
  289. data/vendor/libgit2/src/libgit2/iterator.c +14 -8
  290. data/vendor/libgit2/src/libgit2/libgit2.c +153 -368
  291. data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
  292. data/vendor/libgit2/src/libgit2/merge.c +43 -38
  293. data/vendor/libgit2/src/libgit2/merge.h +4 -0
  294. data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
  295. data/vendor/libgit2/src/libgit2/merge_file.c +43 -30
  296. data/vendor/libgit2/src/libgit2/message.c +1 -1
  297. data/vendor/libgit2/src/libgit2/midx.c +30 -18
  298. data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
  299. data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
  300. data/vendor/libgit2/src/libgit2/object.c +6 -5
  301. data/vendor/libgit2/src/libgit2/odb.c +7 -10
  302. data/vendor/libgit2/src/libgit2/odb_loose.c +24 -14
  303. data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
  304. data/vendor/libgit2/src/libgit2/odb_pack.c +13 -5
  305. data/vendor/libgit2/src/libgit2/oid.c +36 -10
  306. data/vendor/libgit2/src/libgit2/oid.h +11 -0
  307. data/vendor/libgit2/src/libgit2/pack-objects.c +59 -34
  308. data/vendor/libgit2/src/libgit2/pack-objects.h +12 -4
  309. data/vendor/libgit2/src/libgit2/pack.c +33 -24
  310. data/vendor/libgit2/src/libgit2/pack.h +15 -10
  311. data/vendor/libgit2/src/libgit2/patch_parse.c +2 -2
  312. data/vendor/libgit2/src/libgit2/path.c +1 -1
  313. data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
  314. data/vendor/libgit2/src/libgit2/push.c +79 -28
  315. data/vendor/libgit2/src/libgit2/push.h +1 -0
  316. data/vendor/libgit2/src/libgit2/refdb_fs.c +128 -61
  317. data/vendor/libgit2/src/libgit2/reflog.c +1 -2
  318. data/vendor/libgit2/src/libgit2/reflog.h +2 -0
  319. data/vendor/libgit2/src/libgit2/refs.c +41 -13
  320. data/vendor/libgit2/src/libgit2/refs.h +6 -1
  321. data/vendor/libgit2/src/libgit2/refspec.c +28 -1
  322. data/vendor/libgit2/src/libgit2/refspec.h +8 -0
  323. data/vendor/libgit2/src/libgit2/remote.c +125 -62
  324. data/vendor/libgit2/src/libgit2/remote.h +0 -1
  325. data/vendor/libgit2/src/libgit2/repository.c +235 -54
  326. data/vendor/libgit2/src/libgit2/repository.h +10 -6
  327. data/vendor/libgit2/src/libgit2/revert.c +1 -2
  328. data/vendor/libgit2/src/libgit2/revparse.c +2 -2
  329. data/vendor/libgit2/src/libgit2/revwalk.c +13 -10
  330. data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
  331. data/vendor/libgit2/src/libgit2/settings.c +477 -0
  332. data/vendor/libgit2/src/libgit2/settings.h +6 -2
  333. data/vendor/libgit2/src/libgit2/signature.c +132 -15
  334. data/vendor/libgit2/src/libgit2/signature.h +0 -1
  335. data/vendor/libgit2/src/libgit2/status.c +1 -1
  336. data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -60
  337. data/vendor/libgit2/src/libgit2/streams/openssl.c +36 -8
  338. data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
  339. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
  340. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
  341. data/vendor/libgit2/src/libgit2/streams/socket.c +30 -0
  342. data/vendor/libgit2/src/libgit2/streams/stransport.c +39 -7
  343. data/vendor/libgit2/src/libgit2/submodule.c +195 -80
  344. data/vendor/libgit2/src/libgit2/submodule.h +6 -7
  345. data/vendor/libgit2/src/libgit2/tag.c +4 -2
  346. data/vendor/libgit2/src/libgit2/trailer.c +6 -6
  347. data/vendor/libgit2/src/libgit2/transaction.c +26 -20
  348. data/vendor/libgit2/src/libgit2/transaction.h +4 -1
  349. data/vendor/libgit2/src/libgit2/transport.c +4 -1
  350. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +2 -0
  351. data/vendor/libgit2/src/libgit2/transports/credential.c +2 -2
  352. data/vendor/libgit2/src/libgit2/transports/git.c +1 -1
  353. data/vendor/libgit2/src/libgit2/transports/http.c +5 -6
  354. data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
  355. data/vendor/libgit2/src/libgit2/transports/httpclient.c +124 -81
  356. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  357. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  358. data/vendor/libgit2/src/libgit2/transports/local.c +16 -8
  359. data/vendor/libgit2/src/libgit2/transports/smart.c +25 -13
  360. data/vendor/libgit2/src/libgit2/transports/smart.h +4 -2
  361. data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +7 -6
  362. data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +55 -10
  363. data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
  364. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +386 -0
  365. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  366. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1132 -0
  367. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  368. data/vendor/libgit2/src/libgit2/transports/winhttp.c +35 -7
  369. data/vendor/libgit2/src/libgit2/tree.c +34 -26
  370. data/vendor/libgit2/src/libgit2/tree.h +3 -2
  371. data/vendor/libgit2/src/libgit2/worktree.c +14 -17
  372. data/vendor/libgit2/src/util/CMakeLists.txt +7 -10
  373. data/vendor/libgit2/src/util/alloc.c +4 -1
  374. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  375. data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
  376. data/vendor/libgit2/src/util/allocators/stdalloc.c +0 -10
  377. data/vendor/libgit2/src/util/array.h +18 -17
  378. data/vendor/libgit2/src/util/cc-compat.h +2 -0
  379. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  380. data/vendor/libgit2/src/util/date.c +22 -14
  381. data/vendor/libgit2/src/util/date.h +12 -0
  382. data/vendor/libgit2/src/util/errors.c +401 -0
  383. data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
  384. data/vendor/libgit2/src/util/fs_path.c +81 -10
  385. data/vendor/libgit2/src/util/fs_path.h +39 -10
  386. data/vendor/libgit2/src/util/futils.c +6 -5
  387. data/vendor/libgit2/src/util/futils.h +24 -7
  388. data/vendor/libgit2/src/util/git2_features.h.in +12 -1
  389. data/vendor/libgit2/src/util/git2_util.h +6 -0
  390. data/vendor/libgit2/src/util/hash/builtin.c +14 -4
  391. data/vendor/libgit2/src/util/hash/openssl.c +148 -0
  392. data/vendor/libgit2/src/util/hash/openssl.h +17 -1
  393. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +8 -6
  394. data/vendor/libgit2/src/util/hash/sha.h +4 -1
  395. data/vendor/libgit2/src/util/hashmap.h +425 -0
  396. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  397. data/vendor/libgit2/src/util/integer.h +3 -1
  398. data/vendor/libgit2/src/util/net.c +17 -11
  399. data/vendor/libgit2/src/util/net.h +2 -0
  400. data/vendor/libgit2/src/util/pool.c +1 -1
  401. data/vendor/libgit2/src/util/pool.h +5 -0
  402. data/vendor/libgit2/src/util/pqueue.h +1 -1
  403. data/vendor/libgit2/src/util/process.h +223 -0
  404. data/vendor/libgit2/src/util/rand.c +1 -7
  405. data/vendor/libgit2/src/util/regexp.c +28 -13
  406. data/vendor/libgit2/src/util/regexp.h +7 -2
  407. data/vendor/libgit2/src/util/runtime.c +2 -2
  408. data/vendor/libgit2/src/util/sortedcache.c +14 -13
  409. data/vendor/libgit2/src/util/sortedcache.h +3 -3
  410. data/vendor/libgit2/src/util/str.c +20 -8
  411. data/vendor/libgit2/src/util/str.h +5 -3
  412. data/vendor/libgit2/src/util/strlist.c +108 -0
  413. data/vendor/libgit2/src/util/strlist.h +36 -0
  414. data/vendor/libgit2/src/util/unix/posix.h +0 -2
  415. data/vendor/libgit2/src/util/unix/process.c +706 -0
  416. data/vendor/libgit2/src/util/unix/realpath.c +23 -5
  417. data/vendor/libgit2/src/util/util.c +18 -5
  418. data/vendor/libgit2/src/util/util.h +5 -38
  419. data/vendor/libgit2/src/util/vector.c +3 -3
  420. data/vendor/libgit2/src/util/vector.h +2 -2
  421. data/vendor/libgit2/src/util/win32/path_w32.c +81 -5
  422. data/vendor/libgit2/src/util/win32/posix_w32.c +29 -6
  423. data/vendor/libgit2/src/util/win32/process.c +522 -0
  424. metadata +102 -67
  425. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  426. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  427. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  428. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  429. data/vendor/libgit2/deps/pcre/CMakeLists.txt +0 -140
  430. data/vendor/libgit2/deps/pcre/COPYING +0 -5
  431. data/vendor/libgit2/deps/pcre/LICENCE +0 -93
  432. data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +0 -22
  433. data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +0 -17
  434. data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +0 -58
  435. data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +0 -29
  436. data/vendor/libgit2/deps/pcre/config.h.in +0 -57
  437. data/vendor/libgit2/deps/pcre/pcre.h +0 -641
  438. data/vendor/libgit2/deps/pcre/pcre_byte_order.c +0 -319
  439. data/vendor/libgit2/deps/pcre/pcre_compile.c +0 -9815
  440. data/vendor/libgit2/deps/pcre/pcre_config.c +0 -190
  441. data/vendor/libgit2/deps/pcre/pcre_exec.c +0 -7173
  442. data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +0 -245
  443. data/vendor/libgit2/deps/pcre/pcre_get.c +0 -669
  444. data/vendor/libgit2/deps/pcre/pcre_globals.c +0 -86
  445. data/vendor/libgit2/deps/pcre/pcre_internal.h +0 -2787
  446. data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +0 -11913
  447. data/vendor/libgit2/deps/pcre/pcre_maketables.c +0 -156
  448. data/vendor/libgit2/deps/pcre/pcre_printint.c +0 -834
  449. data/vendor/libgit2/deps/pcre/pcre_string_utils.c +0 -211
  450. data/vendor/libgit2/deps/pcre/pcre_study.c +0 -1686
  451. data/vendor/libgit2/deps/pcre/pcre_tables.c +0 -727
  452. data/vendor/libgit2/deps/pcre/pcre_ucd.c +0 -3644
  453. data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +0 -301
  454. data/vendor/libgit2/deps/pcre/pcre_version.c +0 -98
  455. data/vendor/libgit2/deps/pcre/pcre_xclass.c +0 -268
  456. data/vendor/libgit2/deps/pcre/pcreposix.c +0 -420
  457. data/vendor/libgit2/deps/pcre/pcreposix.h +0 -117
  458. data/vendor/libgit2/deps/pcre/ucp.h +0 -224
  459. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  460. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  461. data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
  462. data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
  463. data/vendor/libgit2/src/libgit2/errors.c +0 -293
  464. data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
  465. data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
  466. data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
  467. data/vendor/libgit2/src/libgit2/offmap.c +0 -101
  468. data/vendor/libgit2/src/libgit2/offmap.h +0 -133
  469. data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
  470. data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
  471. data/vendor/libgit2/src/libgit2/threadstate.c +0 -97
  472. data/vendor/libgit2/src/libgit2/threadstate.h +0 -22
  473. data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
  474. data/vendor/libgit2/src/util/khash.h +0 -615
  475. data/vendor/libgit2/src/util/strmap.c +0 -100
  476. data/vendor/libgit2/src/util/strmap.h +0 -131
  477. /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
@@ -17,9 +17,13 @@
17
17
 
18
18
  /**
19
19
  * @file git2/clone.h
20
- * @brief Git cloning routines
20
+ * @brief Clone a remote repository to the local disk
21
21
  * @defgroup git_clone Git cloning routines
22
22
  * @ingroup Git
23
+ *
24
+ * Clone will take a remote repository - located on a remote server
25
+ * accessible by HTTPS or SSH, or a repository located elsewhere on
26
+ * the local disk - and place a copy in the given local path.
23
27
  * @{
24
28
  */
25
29
  GIT_BEGIN_DECL
@@ -59,7 +63,7 @@ typedef enum {
59
63
  * Callers of git_clone may provide a function matching this signature to override
60
64
  * the remote creation and customization process during a clone operation.
61
65
  *
62
- * @param out the resulting remote
66
+ * @param[out] out the resulting remote
63
67
  * @param repo the repository in which to create the remote
64
68
  * @param name the remote's name
65
69
  * @param url the remote's url
@@ -81,7 +85,7 @@ typedef int GIT_CALLBACK(git_remote_create_cb)(
81
85
  * to override the repository creation and customization process
82
86
  * during a clone operation.
83
87
  *
84
- * @param out the resulting repository
88
+ * @param[out] out the resulting repository
85
89
  * @param path path in which to create the repository
86
90
  * @param bare whether the repository is bare. This is the value from the clone options
87
91
  * @param payload payload specified by the options
@@ -99,14 +103,17 @@ typedef int GIT_CALLBACK(git_repository_create_cb)(
99
103
  * Initialize with `GIT_CLONE_OPTIONS_INIT`. Alternatively, you can
100
104
  * use `git_clone_options_init`.
101
105
  *
106
+ * @options[version] GIT_CLONE_OPTIONS_VERSION
107
+ * @options[init_macro] GIT_CLONE_OPTIONS_INIT
108
+ * @options[init_function] git_clone_options_init
102
109
  */
103
110
  typedef struct git_clone_options {
104
111
  unsigned int version;
105
112
 
106
113
  /**
107
114
  * These options are passed to the checkout step. To disable
108
- * checkout, set the `checkout_strategy` to
109
- * `GIT_CHECKOUT_NONE`.
115
+ * checkout, set the `checkout_strategy` to `GIT_CHECKOUT_NONE`
116
+ * or `GIT_CHECKOUT_DRY_RUN`.
110
117
  */
111
118
  git_checkout_options checkout_opts;
112
119
 
@@ -163,10 +170,14 @@ typedef struct git_clone_options {
163
170
  void *remote_cb_payload;
164
171
  } git_clone_options;
165
172
 
173
+ /** Current version for the `git_clone_options` structure */
166
174
  #define GIT_CLONE_OPTIONS_VERSION 1
167
- #define GIT_CLONE_OPTIONS_INIT { GIT_CLONE_OPTIONS_VERSION, \
168
- { GIT_CHECKOUT_OPTIONS_VERSION, GIT_CHECKOUT_SAFE }, \
169
- GIT_FETCH_OPTIONS_INIT }
175
+
176
+ /** Static constructor for `git_clone_options` */
177
+ #define GIT_CLONE_OPTIONS_INIT \
178
+ { GIT_CLONE_OPTIONS_VERSION, \
179
+ GIT_CHECKOUT_OPTIONS_INIT, \
180
+ GIT_FETCH_OPTIONS_INIT }
170
181
 
171
182
  /**
172
183
  * Initialize git_clone_options structure
@@ -189,7 +200,11 @@ GIT_EXTERN(int) git_clone_options_init(
189
200
  * git's defaults. You can use the options in the callback to
190
201
  * customize how these are created.
191
202
  *
192
- * @param out pointer that will receive the resulting repository object
203
+ * Note that the libgit2 library _must_ be initialized using
204
+ * `git_libgit2_init` before any APIs can be called, including
205
+ * this one.
206
+ *
207
+ * @param[out] out pointer that will receive the resulting repository object
193
208
  * @param url the remote repository to clone
194
209
  * @param local_path local directory to clone to
195
210
  * @param options configuration options for the clone. If NULL, the
@@ -206,4 +221,5 @@ GIT_EXTERN(int) git_clone(
206
221
 
207
222
  /** @} */
208
223
  GIT_END_DECL
224
+
209
225
  #endif
@@ -14,9 +14,13 @@
14
14
 
15
15
  /**
16
16
  * @file git2/commit.h
17
- * @brief Git commit parsing, formatting routines
17
+ * @brief A representation of a set of changes in the repository
18
18
  * @defgroup git_commit Git commit parsing, formatting routines
19
19
  * @ingroup Git
20
+ *
21
+ * A commit represents a set of changes made to the files within a
22
+ * repository, and metadata about who made the changes, and when the
23
+ * changes were made.
20
24
  * @{
21
25
  */
22
26
  GIT_BEGIN_DECL
@@ -380,7 +384,38 @@ GIT_EXTERN(int) git_commit_create(
380
384
  *
381
385
  * All other parameters remain the same as `git_commit_create()`.
382
386
  *
383
- * @see git_commit_create
387
+ * @param id Pointer in which to store the OID of the newly created commit
388
+ *
389
+ * @param repo Repository where to store the commit
390
+ *
391
+ * @param update_ref If not NULL, name of the reference that
392
+ * will be updated to point to this commit. If the reference
393
+ * is not direct, it will be resolved to a direct reference.
394
+ * Use "HEAD" to update the HEAD of the current branch and
395
+ * make it point to this commit. If the reference doesn't
396
+ * exist yet, it will be created. If it does exist, the first
397
+ * parent must be the tip of this branch.
398
+ *
399
+ * @param author Signature with author and author time of commit
400
+ *
401
+ * @param committer Signature with committer and * commit time of commit
402
+ *
403
+ * @param message_encoding The encoding for the message in the
404
+ * commit, represented with a standard encoding name.
405
+ * E.g. "UTF-8". If NULL, no encoding header is written and
406
+ * UTF-8 is assumed.
407
+ *
408
+ * @param message Full message for this commit
409
+ *
410
+ * @param tree An instance of a `git_tree` object that will
411
+ * be used as the tree for the commit. This tree object must
412
+ * also be owned by the given `repo`.
413
+ *
414
+ * @param parent_count Number of parents for this commit
415
+ *
416
+ * @return 0 or an error code
417
+ * The created commit will be written to the Object Database and
418
+ * the given reference will be updated to point to it
384
419
  */
385
420
  GIT_EXTERN(int) git_commit_create_v(
386
421
  git_oid *id,
@@ -394,6 +429,52 @@ GIT_EXTERN(int) git_commit_create_v(
394
429
  size_t parent_count,
395
430
  ...);
396
431
 
432
+ typedef struct {
433
+ unsigned int version;
434
+
435
+ /**
436
+ * Flags for creating the commit.
437
+ *
438
+ * If `allow_empty_commit` is specified, a commit with no changes
439
+ * from the prior commit (and "empty" commit) is allowed. Otherwise,
440
+ * commit creation will be stopped.
441
+ */
442
+ unsigned int allow_empty_commit : 1;
443
+
444
+ /** The commit author, or NULL for the default. */
445
+ const git_signature *author;
446
+
447
+ /** The committer, or NULL for the default. */
448
+ const git_signature *committer;
449
+
450
+ /** Encoding for the commit message; leave NULL for default. */
451
+ const char *message_encoding;
452
+ } git_commit_create_options;
453
+
454
+ /** Current version for the `git_commit_create_options` structure */
455
+ #define GIT_COMMIT_CREATE_OPTIONS_VERSION 1
456
+
457
+ /** Static constructor for `git_commit_create_options` */
458
+ #define GIT_COMMIT_CREATE_OPTIONS_INIT { GIT_COMMIT_CREATE_OPTIONS_VERSION }
459
+
460
+ /**
461
+ * Commits the staged changes in the repository; this is a near analog to
462
+ * `git commit -m message`.
463
+ *
464
+ * By default, empty commits are not allowed.
465
+ *
466
+ * @param id pointer to store the new commit's object id
467
+ * @param repo repository to commit changes in
468
+ * @param message the commit message
469
+ * @param opts options for creating the commit
470
+ * @return 0 on success, GIT_EUNCHANGED if there were no changes to commit, or an error code
471
+ */
472
+ GIT_EXTERN(int) git_commit_create_from_stage(
473
+ git_oid *id,
474
+ git_repository *repo,
475
+ const char *message,
476
+ const git_commit_create_options *opts);
477
+
397
478
  /**
398
479
  * Amend an existing commit by replacing only non-NULL values.
399
480
  *
@@ -413,7 +494,36 @@ GIT_EXTERN(int) git_commit_create_v(
413
494
  *
414
495
  * All parameters have the same meanings as in `git_commit_create()`.
415
496
  *
416
- * @see git_commit_create
497
+ * @param id Pointer in which to store the OID of the newly created commit
498
+ *
499
+ * @param commit_to_amend The commit to amend
500
+ *
501
+ * @param update_ref If not NULL, name of the reference that
502
+ * will be updated to point to this commit. If the reference
503
+ * is not direct, it will be resolved to a direct reference.
504
+ * Use "HEAD" to update the HEAD of the current branch and
505
+ * make it point to this commit. If the reference doesn't
506
+ * exist yet, it will be created. If it does exist, the first
507
+ * parent must be the tip of this branch.
508
+ *
509
+ * @param author Signature with author and author time of commit
510
+ *
511
+ * @param committer Signature with committer and * commit time of commit
512
+ *
513
+ * @param message_encoding The encoding for the message in the
514
+ * commit, represented with a standard encoding name.
515
+ * E.g. "UTF-8". If NULL, no encoding header is written and
516
+ * UTF-8 is assumed.
517
+ *
518
+ * @param message Full message for this commit
519
+ *
520
+ * @param tree An instance of a `git_tree` object that will
521
+ * be used as the tree for the commit. This tree object must
522
+ * also be owned by the given `repo`.
523
+ *
524
+ * @return 0 or an error code
525
+ * The created commit will be written to the Object Database and
526
+ * the given reference will be updated to point to it
417
527
  */
418
528
  GIT_EXTERN(int) git_commit_amend(
419
529
  git_oid *id,
@@ -541,6 +651,25 @@ typedef int (*git_commit_create_cb)(
541
651
  const git_commit *parents[],
542
652
  void *payload);
543
653
 
654
+ /** An array of commits returned from the library */
655
+ typedef struct git_commitarray {
656
+ git_commit *const *commits;
657
+ size_t count;
658
+ } git_commitarray;
659
+
660
+ /**
661
+ * Free the commits contained in a commit array. This method should
662
+ * be called on `git_commitarray` objects that were provided by the
663
+ * library. Not doing so will result in a memory leak.
664
+ *
665
+ * This does not free the `git_commitarray` itself, since the library
666
+ * will never allocate that object directly itself.
667
+ *
668
+ * @param array The git_commitarray that contains commits to free
669
+ */
670
+ GIT_EXTERN(void) git_commitarray_dispose(git_commitarray *array);
671
+
544
672
  /** @} */
545
673
  GIT_END_DECL
674
+
546
675
  #endif
@@ -11,7 +11,9 @@
11
11
  #include <stdlib.h>
12
12
 
13
13
  #ifdef __cplusplus
14
+ /** Start declarations in C mode for C++ compatibility */
14
15
  # define GIT_BEGIN_DECL extern "C" {
16
+ /** End declarations in C mode */
15
17
  # define GIT_END_DECL }
16
18
  #else
17
19
  /** Start declarations in C mode */
@@ -71,19 +73,19 @@ typedef size_t size_t;
71
73
  # define GIT_FORMAT_PRINTF(a,b) /* empty */
72
74
  #endif
73
75
 
74
- #if (defined(_WIN32)) && !defined(__CYGWIN__)
75
- #define GIT_WIN32 1
76
- #endif
77
-
78
76
  #ifdef __amigaos4__
79
77
  #include <netinet/in.h>
80
78
  #endif
81
79
 
82
80
  /**
83
81
  * @file git2/common.h
84
- * @brief Git common platform definitions
82
+ * @brief Base platform functionality
85
83
  * @defgroup git_common Git common platform definitions
86
84
  * @ingroup Git
85
+ *
86
+ * Common platform functionality including introspecting libgit2
87
+ * itself - information like how it was built, and the current
88
+ * running version.
87
89
  * @{
88
90
  */
89
91
 
@@ -94,10 +96,10 @@ GIT_BEGIN_DECL
94
96
  * environment variable). A semi-colon ";" is used on Windows and
95
97
  * AmigaOS, and a colon ":" for all other systems.
96
98
  */
97
- #if defined(GIT_WIN32) || defined(AMIGA)
98
- #define GIT_PATH_LIST_SEPARATOR ';'
99
+ #if (defined(_WIN32) && !defined(__CYGWIN__)) || defined(AMIGA)
100
+ # define GIT_PATH_LIST_SEPARATOR ';'
99
101
  #else
100
- #define GIT_PATH_LIST_SEPARATOR ':'
102
+ # define GIT_PATH_LIST_SEPARATOR ':'
101
103
  #endif
102
104
 
103
105
  /**
@@ -128,56 +130,80 @@ GIT_EXTERN(int) git_libgit2_version(int *major, int *minor, int *rev);
128
130
  GIT_EXTERN(const char *) git_libgit2_prerelease(void);
129
131
 
130
132
  /**
131
- * Combinations of these values describe the features with which libgit2
132
- * was compiled
133
+ * Configurable features of libgit2; either optional settings (like
134
+ * threading), or features that can be enabled by one of a number of
135
+ * different backend "providers" (like HTTPS, which can be provided by
136
+ * OpenSSL, mbedTLS, or system libraries).
133
137
  */
134
138
  typedef enum {
135
- /**
136
- * If set, libgit2 was built thread-aware and can be safely used from multiple
137
- * threads.
138
- */
139
- GIT_FEATURE_THREADS = (1 << 0),
140
- /**
141
- * If set, libgit2 was built with and linked against a TLS implementation.
142
- * Custom TLS streams may still be added by the user to support HTTPS
143
- * regardless of this.
144
- */
145
- GIT_FEATURE_HTTPS = (1 << 1),
146
- /**
147
- * If set, libgit2 was built with and linked against libssh2. A custom
148
- * transport may still be added by the user to support libssh2 regardless of
149
- * this.
150
- */
151
- GIT_FEATURE_SSH = (1 << 2),
152
- /**
153
- * If set, libgit2 was built with support for sub-second resolution in file
154
- * modification times.
155
- */
156
- GIT_FEATURE_NSEC = (1 << 3)
139
+ /**
140
+ * libgit2 is thread-aware and can be used from multiple threads
141
+ * (as described in the documentation).
142
+ */
143
+ GIT_FEATURE_THREADS = (1 << 0),
144
+
145
+ /** HTTPS remotes */
146
+ GIT_FEATURE_HTTPS = (1 << 1),
147
+
148
+ /** SSH remotes */
149
+ GIT_FEATURE_SSH = (1 << 2),
150
+
151
+ /** Sub-second resolution in index timestamps */
152
+ GIT_FEATURE_NSEC = (1 << 3),
153
+
154
+ /** HTTP parsing; always available */
155
+ GIT_FEATURE_HTTP_PARSER = (1 << 4),
156
+
157
+ /** Regular expression support; always available */
158
+ GIT_FEATURE_REGEX = (1 << 5),
159
+
160
+ /** Internationalization support for filename translation */
161
+ GIT_FEATURE_I18N = (1 << 6),
162
+
163
+ /** NTLM support over HTTPS */
164
+ GIT_FEATURE_AUTH_NTLM = (1 << 7),
165
+
166
+ /** Kerberos (SPNEGO) authentication support over HTTPS */
167
+ GIT_FEATURE_AUTH_NEGOTIATE = (1 << 8),
168
+
169
+ /** zlib support; always available */
170
+ GIT_FEATURE_COMPRESSION = (1 << 9),
171
+
172
+ /** SHA1 object support; always available */
173
+ GIT_FEATURE_SHA1 = (1 << 10),
174
+
175
+ /** SHA256 object support */
176
+ GIT_FEATURE_SHA256 = (1 << 11)
157
177
  } git_feature_t;
158
178
 
159
179
  /**
160
180
  * Query compile time options for libgit2.
161
181
  *
162
182
  * @return A combination of GIT_FEATURE_* values.
183
+ */
184
+ GIT_EXTERN(int) git_libgit2_features(void);
185
+
186
+ /**
187
+ * Query the backend details for the compile-time feature in libgit2.
163
188
  *
164
- * - GIT_FEATURE_THREADS
165
- * Libgit2 was compiled with thread support. Note that thread support is
166
- * still to be seen as a 'work in progress' - basic object lookups are
167
- * believed to be threadsafe, but other operations may not be.
189
+ * This will return the "backend" for the feature, which is useful for
190
+ * things like HTTPS or SSH support, that can have multiple backends
191
+ * that could be compiled in.
168
192
  *
169
- * - GIT_FEATURE_HTTPS
170
- * Libgit2 supports the https:// protocol. This requires the openssl
171
- * library to be found when compiling libgit2.
193
+ * For example, when libgit2 is compiled with dynamic OpenSSL support,
194
+ * the feature backend will be `openssl-dynamic`. The feature backend
195
+ * names reflect the compilation options specified to the build system
196
+ * (though in all lower case). The backend _may_ be "builtin" for
197
+ * features that are provided by libgit2 itself.
172
198
  *
173
- * - GIT_FEATURE_SSH
174
- * Libgit2 supports the SSH protocol for network operations. This requires
175
- * the libssh2 library to be found when compiling libgit2
199
+ * If the feature is not supported by the library, this API returns
200
+ * `NULL`.
176
201
  *
177
- * - GIT_FEATURE_NSEC
178
- * Libgit2 supports the sub-second resolution in file modification times.
202
+ * @param feature the feature to query details for
203
+ * @return the provider details, or NULL if the feature is not supported
179
204
  */
180
- GIT_EXTERN(int) git_libgit2_features(void);
205
+ GIT_EXTERN(const char *) git_libgit2_feature_backend(
206
+ git_feature_t feature);
181
207
 
182
208
  /**
183
209
  * Global library options
@@ -228,7 +254,12 @@ typedef enum {
228
254
  GIT_OPT_SET_SERVER_CONNECT_TIMEOUT,
229
255
  GIT_OPT_GET_SERVER_CONNECT_TIMEOUT,
230
256
  GIT_OPT_SET_SERVER_TIMEOUT,
231
- GIT_OPT_GET_SERVER_TIMEOUT
257
+ GIT_OPT_GET_SERVER_TIMEOUT,
258
+ GIT_OPT_SET_USER_AGENT_PRODUCT,
259
+ GIT_OPT_GET_USER_AGENT_PRODUCT,
260
+ GIT_OPT_ADD_SSL_X509_CERT,
261
+ GIT_OPT_GET_PACK_MAX_OBJECT_SIZE,
262
+ GIT_OPT_SET_PACK_MAX_OBJECT_SIZE
232
263
  } git_libgit2_opt_t;
233
264
 
234
265
  /**
@@ -333,15 +364,52 @@ typedef enum {
333
364
  * > - `path` is the location of a directory holding several
334
365
  * > certificates, one per file.
335
366
  * >
367
+ * > Calling `GIT_OPT_ADD_SSL_X509_CERT` may override the
368
+ * > data in `path`.
369
+ * >
336
370
  * > Either parameter may be `NULL`, but not both.
337
371
  *
372
+ * * opts(GIT_OPT_ADD_SSL_X509_CERT, const X509 *cert)
373
+ *
374
+ * > Add a raw X509 certificate into the SSL certs store.
375
+ * > This certificate is only used by libgit2 invocations
376
+ * > during the application lifetime and is not persisted
377
+ * > to disk. This certificate cannot be removed from the
378
+ * > application once is has been added.
379
+ * >
380
+ * > - `cert` is the raw X509 cert will be added to cert store.
381
+ *
338
382
  * * opts(GIT_OPT_SET_USER_AGENT, const char *user_agent)
339
383
  *
340
- * > Set the value of the User-Agent header. This value will be
341
- * > appended to "git/1.0", for compatibility with other git clients.
384
+ * > Set the value of the comment section of the User-Agent header.
385
+ * > This can be information about your product and its version.
386
+ * > By default this is "libgit2" followed by the libgit2 version.
342
387
  * >
343
- * > - `user_agent` is the value that will be delivered as the
344
- * > User-Agent header on HTTP requests.
388
+ * > This value will be appended to User-Agent _product_, which
389
+ * > is typically set to "git/2.0".
390
+ * >
391
+ * > Set to the empty string ("") to not send any information in the
392
+ * > comment section, or set to NULL to restore the default.
393
+ *
394
+ * * opts(GIT_OPT_GET_USER_AGENT, git_buf *out)
395
+ *
396
+ * > Get the value of the User-Agent header.
397
+ * > The User-Agent is written to the `out` buffer.
398
+ *
399
+ * * opts(GIT_OPT_SET_USER_AGENT_PRODUCT, const char *user_agent_product)
400
+ *
401
+ * > Set the value of the product portion of the User-Agent header.
402
+ * > This defaults to "git/2.0", for compatibility with other git
403
+ * > clients. It is recommended to keep this as git/<version> for
404
+ * > compatibility with servers that do user-agent detection.
405
+ * >
406
+ * > Set to the empty string ("") to not send any user-agent string,
407
+ * > or set to NULL to restore the default.
408
+ *
409
+ * * opts(GIT_OPT_GET_USER_AGENT_PRODUCT, git_buf *out)
410
+ *
411
+ * > Get the value of the User-Agent product header.
412
+ * > The User-Agent product is written to the `out` buffer.
345
413
  *
346
414
  * * opts(GIT_OPT_SET_WINDOWS_SHAREMODE, unsigned long value)
347
415
  *
@@ -377,11 +445,6 @@ typedef enum {
377
445
  * >
378
446
  * > - `ciphers` is the list of ciphers that are eanbled.
379
447
  *
380
- * * opts(GIT_OPT_GET_USER_AGENT, git_buf *out)
381
- *
382
- * > Get the value of the User-Agent header.
383
- * > The User-Agent is written to the `out` buffer.
384
- *
385
448
  * * opts(GIT_OPT_ENABLE_OFS_DELTA, int enabled)
386
449
  *
387
450
  * > Enable or disable the use of "offset deltas" when creating packfiles,
@@ -490,10 +553,9 @@ typedef enum {
490
553
  *
491
554
  * opts(GIT_OPT_SET_SERVER_CONNECT_TIMEOUT, int timeout)
492
555
  * > Sets the timeout (in milliseconds) to attempt connections to
493
- * > a remote server. This is supported only for HTTP(S) connections
494
- * > and is not supported by SSH. Set to 0 to use the system default.
495
- * > Note that this may not be able to be configured longer than the
496
- * > system default, typically 75 seconds.
556
+ * > a remote server. Set to 0 to use the system default. Note that
557
+ * > this may not be able to be configured longer than the system
558
+ * > default, typically 75 seconds.
497
559
  *
498
560
  * opts(GIT_OPT_GET_SERVER_TIMEOUT, int *timeout)
499
561
  * > Gets the timeout (in milliseconds) for reading from and writing
@@ -501,12 +563,19 @@ typedef enum {
501
563
  *
502
564
  * opts(GIT_OPT_SET_SERVER_TIMEOUT, int timeout)
503
565
  * > Sets the timeout (in milliseconds) for reading from and writing
504
- * > to a remote server. This is supported only for HTTP(S)
505
- * > connections and is not supported by SSH. Set to 0 to use the
506
- * > system default.
566
+ * > to a remote server. Set to 0 to use the system default.
567
+ *
568
+ * opts(GIT_OPT_GET_PACK_MAX_OBJECT_SIZE, size_t *out)
569
+ * > Gets the maximum size of a declared packfile object. This can
570
+ * > be used to limit maximum memory usage when fetching from a
571
+ * > remote.
572
+ *
573
+ * opts(GIT_OPT_SET_PACK_MAX_OBJECT_SIZE, size_t object_size)
574
+ * > Set the maximum size of an object that libgit2 will allow in
575
+ * > a pack file when downloading a pack file from a remote.
576
+ * > The default is 2 GiB.
507
577
  *
508
578
  * @param option Option key
509
- * @param ... value to set the option
510
579
  * @return 0 on success, <0 on failure
511
580
  */
512
581
  GIT_EXTERN(int) git_libgit2_opts(int option, ...);