rugged 1.6.3 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (443) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rugged/rugged_allocator.c +0 -54
  3. data/lib/rugged/version.rb +1 -1
  4. data/vendor/libgit2/AUTHORS +1 -0
  5. data/vendor/libgit2/CMakeLists.txt +25 -17
  6. data/vendor/libgit2/COPYING +195 -1
  7. data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
  8. data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
  9. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  10. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +4 -4
  11. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
  12. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +34 -6
  13. data/vendor/libgit2/cmake/SelectHashes.cmake +32 -11
  14. data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
  15. data/vendor/libgit2/cmake/SelectSSH.cmake +22 -17
  16. data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
  17. data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
  18. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  19. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  20. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  21. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  22. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  23. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  24. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
  25. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  26. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  27. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  28. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
  29. data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
  30. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  31. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  32. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  33. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  34. data/vendor/libgit2/deps/pcre/CMakeLists.txt +1 -0
  35. data/vendor/libgit2/deps/pcre/LICENCE +5 -5
  36. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  37. data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
  38. data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
  39. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
  40. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/git-xdiff.h +4 -1
  41. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.c +19 -18
  42. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.h +2 -4
  43. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.c +3 -3
  44. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xhistogram.c +7 -18
  45. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmacros.h +18 -1
  46. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmerge.c +22 -20
  47. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xpatience.c +21 -30
  48. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.c +13 -30
  49. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.c +18 -1
  50. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.h +2 -1
  51. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  52. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  53. data/vendor/libgit2/deps/zlib/adler32.c +5 -27
  54. data/vendor/libgit2/deps/zlib/crc32.c +94 -167
  55. data/vendor/libgit2/deps/zlib/deflate.c +358 -435
  56. data/vendor/libgit2/deps/zlib/deflate.h +41 -10
  57. data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
  58. data/vendor/libgit2/deps/zlib/infback.c +17 -30
  59. data/vendor/libgit2/deps/zlib/inffast.c +1 -4
  60. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  61. data/vendor/libgit2/deps/zlib/inflate.c +36 -102
  62. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  63. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  64. data/vendor/libgit2/deps/zlib/trees.c +287 -352
  65. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  66. data/vendor/libgit2/deps/zlib/zlib.h +202 -202
  67. data/vendor/libgit2/deps/zlib/zutil.c +18 -44
  68. data/vendor/libgit2/deps/zlib/zutil.h +13 -33
  69. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  70. data/vendor/libgit2/include/git2/apply.h +27 -6
  71. data/vendor/libgit2/include/git2/attr.h +17 -4
  72. data/vendor/libgit2/include/git2/blame.h +133 -28
  73. data/vendor/libgit2/include/git2/blob.h +71 -28
  74. data/vendor/libgit2/include/git2/branch.h +22 -15
  75. data/vendor/libgit2/include/git2/buffer.h +6 -4
  76. data/vendor/libgit2/include/git2/cert.h +2 -1
  77. data/vendor/libgit2/include/git2/checkout.h +83 -32
  78. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  79. data/vendor/libgit2/include/git2/clone.h +25 -9
  80. data/vendor/libgit2/include/git2/commit.h +132 -3
  81. data/vendor/libgit2/include/git2/common.h +138 -56
  82. data/vendor/libgit2/include/git2/config.h +93 -23
  83. data/vendor/libgit2/include/git2/credential.h +30 -2
  84. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  85. data/vendor/libgit2/include/git2/deprecated.h +133 -3
  86. data/vendor/libgit2/include/git2/describe.h +13 -1
  87. data/vendor/libgit2/include/git2/diff.h +77 -9
  88. data/vendor/libgit2/include/git2/email.h +9 -29
  89. data/vendor/libgit2/include/git2/errors.h +49 -74
  90. data/vendor/libgit2/include/git2/filter.h +14 -7
  91. data/vendor/libgit2/include/git2/global.h +8 -1
  92. data/vendor/libgit2/include/git2/graph.h +3 -2
  93. data/vendor/libgit2/include/git2/ignore.h +10 -0
  94. data/vendor/libgit2/include/git2/index.h +100 -6
  95. data/vendor/libgit2/include/git2/indexer.h +21 -4
  96. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  97. data/vendor/libgit2/include/git2/merge.h +46 -1
  98. data/vendor/libgit2/include/git2/message.h +2 -2
  99. data/vendor/libgit2/include/git2/net.h +3 -1
  100. data/vendor/libgit2/include/git2/notes.h +9 -6
  101. data/vendor/libgit2/include/git2/object.h +9 -8
  102. data/vendor/libgit2/include/git2/odb.h +91 -49
  103. data/vendor/libgit2/include/git2/odb_backend.h +80 -52
  104. data/vendor/libgit2/include/git2/oid.h +24 -25
  105. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  106. data/vendor/libgit2/include/git2/pack.h +13 -1
  107. data/vendor/libgit2/include/git2/patch.h +2 -3
  108. data/vendor/libgit2/include/git2/pathspec.h +9 -0
  109. data/vendor/libgit2/include/git2/proxy.h +10 -0
  110. data/vendor/libgit2/include/git2/rebase.h +9 -6
  111. data/vendor/libgit2/include/git2/refdb.h +2 -2
  112. data/vendor/libgit2/include/git2/reflog.h +3 -2
  113. data/vendor/libgit2/include/git2/refs.h +9 -6
  114. data/vendor/libgit2/include/git2/refspec.h +14 -4
  115. data/vendor/libgit2/include/git2/remote.h +112 -18
  116. data/vendor/libgit2/include/git2/repository.h +61 -15
  117. data/vendor/libgit2/include/git2/reset.h +16 -3
  118. data/vendor/libgit2/include/git2/revert.h +9 -4
  119. data/vendor/libgit2/include/git2/revparse.h +3 -3
  120. data/vendor/libgit2/include/git2/revwalk.h +3 -2
  121. data/vendor/libgit2/include/git2/signature.h +46 -1
  122. data/vendor/libgit2/include/git2/stash.h +17 -3
  123. data/vendor/libgit2/include/git2/status.h +10 -6
  124. data/vendor/libgit2/include/git2/stdint.h +87 -85
  125. data/vendor/libgit2/include/git2/strarray.h +2 -3
  126. data/vendor/libgit2/include/git2/submodule.h +20 -9
  127. data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
  128. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  129. data/vendor/libgit2/include/git2/sys/commit_graph.h +109 -58
  130. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  131. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  132. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  133. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  134. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  135. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  136. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  137. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  138. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  139. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  140. data/vendor/libgit2/include/git2/sys/midx.h +47 -4
  141. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
  142. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  143. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  144. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  145. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  146. data/vendor/libgit2/include/git2/sys/remote.h +8 -1
  147. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  148. data/vendor/libgit2/include/git2/sys/stream.h +25 -2
  149. data/vendor/libgit2/include/git2/sys/transport.h +44 -5
  150. data/vendor/libgit2/include/git2/tag.h +3 -1
  151. data/vendor/libgit2/include/git2/trace.h +9 -3
  152. data/vendor/libgit2/include/git2/transaction.h +3 -2
  153. data/vendor/libgit2/include/git2/transport.h +11 -3
  154. data/vendor/libgit2/include/git2/tree.h +16 -5
  155. data/vendor/libgit2/include/git2/types.h +19 -3
  156. data/vendor/libgit2/include/git2/version.h +44 -8
  157. data/vendor/libgit2/include/git2/worktree.h +19 -7
  158. data/vendor/libgit2/src/CMakeLists.txt +40 -15
  159. data/vendor/libgit2/src/cli/CMakeLists.txt +2 -2
  160. data/vendor/libgit2/src/cli/cmd.c +1 -1
  161. data/vendor/libgit2/src/cli/cmd.h +4 -0
  162. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  163. data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
  164. data/vendor/libgit2/src/cli/cmd_clone.c +27 -13
  165. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  166. data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
  167. data/vendor/libgit2/src/cli/cmd_help.c +6 -7
  168. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  169. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  170. data/vendor/libgit2/src/cli/common.c +168 -0
  171. data/vendor/libgit2/src/cli/common.h +63 -0
  172. data/vendor/libgit2/src/cli/error.h +1 -1
  173. data/vendor/libgit2/src/cli/main.c +52 -24
  174. data/vendor/libgit2/src/cli/opt.c +29 -3
  175. data/vendor/libgit2/src/cli/opt.h +21 -3
  176. data/vendor/libgit2/src/cli/opt_usage.c +102 -33
  177. data/vendor/libgit2/src/cli/opt_usage.h +6 -1
  178. data/vendor/libgit2/src/cli/progress.c +60 -10
  179. data/vendor/libgit2/src/cli/progress.h +16 -4
  180. data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
  181. data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
  182. data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
  183. data/vendor/libgit2/src/libgit2/CMakeLists.txt +27 -27
  184. data/vendor/libgit2/src/libgit2/annotated_commit.c +2 -2
  185. data/vendor/libgit2/src/libgit2/annotated_commit.h +1 -1
  186. data/vendor/libgit2/src/libgit2/apply.c +14 -16
  187. data/vendor/libgit2/src/libgit2/attr.c +30 -13
  188. data/vendor/libgit2/src/libgit2/attr_file.c +7 -2
  189. data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
  190. data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
  191. data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
  192. data/vendor/libgit2/src/libgit2/blame.c +152 -59
  193. data/vendor/libgit2/src/libgit2/blame.h +1 -0
  194. data/vendor/libgit2/src/libgit2/blame_git.c +0 -1
  195. data/vendor/libgit2/src/libgit2/branch.c +2 -2
  196. data/vendor/libgit2/src/libgit2/cache.c +22 -17
  197. data/vendor/libgit2/src/libgit2/cache.h +7 -9
  198. data/vendor/libgit2/src/libgit2/checkout.c +34 -24
  199. data/vendor/libgit2/src/libgit2/checkout.h +0 -2
  200. data/vendor/libgit2/src/libgit2/cherrypick.c +4 -5
  201. data/vendor/libgit2/src/libgit2/clone.c +186 -164
  202. data/vendor/libgit2/src/libgit2/clone.h +4 -1
  203. data/vendor/libgit2/src/libgit2/commit.c +123 -9
  204. data/vendor/libgit2/src/libgit2/commit_graph.c +166 -88
  205. data/vendor/libgit2/src/libgit2/commit_graph.h +21 -6
  206. data/vendor/libgit2/src/libgit2/commit_list.c +12 -5
  207. data/vendor/libgit2/src/libgit2/commit_list.h +1 -0
  208. data/vendor/libgit2/src/libgit2/config.c +394 -300
  209. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  210. data/vendor/libgit2/src/libgit2/config.h +9 -4
  211. data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
  212. data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
  213. data/vendor/libgit2/src/libgit2/config_file.c +113 -96
  214. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  215. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  216. data/vendor/libgit2/src/libgit2/config_mem.c +194 -40
  217. data/vendor/libgit2/src/libgit2/config_parse.c +10 -9
  218. data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
  219. data/vendor/libgit2/src/libgit2/describe.c +34 -31
  220. data/vendor/libgit2/src/libgit2/diff.c +17 -8
  221. data/vendor/libgit2/src/libgit2/diff.h +6 -6
  222. data/vendor/libgit2/src/libgit2/diff_driver.c +12 -19
  223. data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
  224. data/vendor/libgit2/src/libgit2/diff_file.c +7 -7
  225. data/vendor/libgit2/src/libgit2/diff_generate.c +39 -18
  226. data/vendor/libgit2/src/libgit2/diff_parse.c +22 -6
  227. data/vendor/libgit2/src/libgit2/diff_print.c +88 -13
  228. data/vendor/libgit2/src/libgit2/diff_tform.c +40 -12
  229. data/vendor/libgit2/src/libgit2/diff_xdiff.h +1 -1
  230. data/vendor/libgit2/src/libgit2/email.c +5 -3
  231. data/vendor/libgit2/src/libgit2/fetch.c +39 -9
  232. data/vendor/libgit2/src/libgit2/fetch.h +0 -2
  233. data/vendor/libgit2/src/libgit2/fetchhead.c +11 -9
  234. data/vendor/libgit2/src/libgit2/filter.c +5 -5
  235. data/vendor/libgit2/src/libgit2/git2.rc +3 -3
  236. data/vendor/libgit2/src/libgit2/grafts.c +270 -0
  237. data/vendor/libgit2/src/libgit2/grafts.h +35 -0
  238. data/vendor/libgit2/src/libgit2/graph.c +1 -1
  239. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  240. data/vendor/libgit2/src/libgit2/ident.c +3 -3
  241. data/vendor/libgit2/src/libgit2/ignore.c +9 -5
  242. data/vendor/libgit2/src/libgit2/index.c +392 -208
  243. data/vendor/libgit2/src/libgit2/index.h +16 -3
  244. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  245. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  246. data/vendor/libgit2/src/libgit2/indexer.c +44 -41
  247. data/vendor/libgit2/src/libgit2/iterator.c +34 -13
  248. data/vendor/libgit2/src/libgit2/iterator.h +3 -0
  249. data/vendor/libgit2/src/libgit2/libgit2.c +155 -331
  250. data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
  251. data/vendor/libgit2/src/libgit2/merge.c +56 -46
  252. data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
  253. data/vendor/libgit2/src/libgit2/merge_file.c +0 -2
  254. data/vendor/libgit2/src/libgit2/midx.c +86 -44
  255. data/vendor/libgit2/src/libgit2/midx.h +13 -3
  256. data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
  257. data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
  258. data/vendor/libgit2/src/libgit2/notes.c +9 -8
  259. data/vendor/libgit2/src/libgit2/object.c +42 -16
  260. data/vendor/libgit2/src/libgit2/object.h +6 -0
  261. data/vendor/libgit2/src/libgit2/odb.c +16 -9
  262. data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
  263. data/vendor/libgit2/src/libgit2/odb_pack.c +28 -7
  264. data/vendor/libgit2/src/libgit2/oid.c +35 -2
  265. data/vendor/libgit2/src/libgit2/oid.h +11 -0
  266. data/vendor/libgit2/src/libgit2/oidarray.c +49 -3
  267. data/vendor/libgit2/src/libgit2/oidarray.h +5 -1
  268. data/vendor/libgit2/src/libgit2/pack-objects.c +77 -43
  269. data/vendor/libgit2/src/libgit2/pack-objects.h +17 -6
  270. data/vendor/libgit2/src/libgit2/pack.c +33 -27
  271. data/vendor/libgit2/src/libgit2/pack.h +15 -10
  272. data/vendor/libgit2/src/libgit2/parse.c +7 -4
  273. data/vendor/libgit2/src/libgit2/parse.h +1 -1
  274. data/vendor/libgit2/src/libgit2/patch.h +7 -1
  275. data/vendor/libgit2/src/libgit2/patch_generate.c +24 -5
  276. data/vendor/libgit2/src/libgit2/patch_parse.c +18 -10
  277. data/vendor/libgit2/src/libgit2/path.c +1 -1
  278. data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
  279. data/vendor/libgit2/src/libgit2/push.c +81 -30
  280. data/vendor/libgit2/src/libgit2/push.h +1 -0
  281. data/vendor/libgit2/src/libgit2/reader.c +1 -1
  282. data/vendor/libgit2/src/libgit2/rebase.c +72 -84
  283. data/vendor/libgit2/src/libgit2/refdb_fs.c +146 -70
  284. data/vendor/libgit2/src/libgit2/reflog.c +1 -2
  285. data/vendor/libgit2/src/libgit2/reflog.h +2 -0
  286. data/vendor/libgit2/src/libgit2/refs.c +34 -8
  287. data/vendor/libgit2/src/libgit2/refs.h +6 -1
  288. data/vendor/libgit2/src/libgit2/refspec.c +28 -1
  289. data/vendor/libgit2/src/libgit2/refspec.h +8 -0
  290. data/vendor/libgit2/src/libgit2/remote.c +136 -67
  291. data/vendor/libgit2/src/libgit2/remote.h +1 -0
  292. data/vendor/libgit2/src/libgit2/repository.c +789 -330
  293. data/vendor/libgit2/src/libgit2/repository.h +22 -3
  294. data/vendor/libgit2/src/libgit2/reset.c +2 -2
  295. data/vendor/libgit2/src/libgit2/revert.c +9 -13
  296. data/vendor/libgit2/src/libgit2/revparse.c +6 -3
  297. data/vendor/libgit2/src/libgit2/revwalk.c +36 -11
  298. data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
  299. data/vendor/libgit2/src/libgit2/settings.c +468 -0
  300. data/vendor/libgit2/src/libgit2/settings.h +6 -2
  301. data/vendor/libgit2/src/libgit2/signature.c +132 -15
  302. data/vendor/libgit2/src/libgit2/signature.h +0 -1
  303. data/vendor/libgit2/src/libgit2/stash.c +9 -8
  304. data/vendor/libgit2/src/libgit2/status.c +1 -1
  305. data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -61
  306. data/vendor/libgit2/src/libgit2/streams/openssl.c +40 -23
  307. data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
  308. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
  309. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
  310. data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
  311. data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
  312. data/vendor/libgit2/src/libgit2/streams/socket.c +237 -51
  313. data/vendor/libgit2/src/libgit2/streams/socket.h +3 -1
  314. data/vendor/libgit2/src/libgit2/streams/stransport.c +79 -19
  315. data/vendor/libgit2/src/libgit2/streams/tls.c +5 -0
  316. data/vendor/libgit2/src/libgit2/submodule.c +106 -63
  317. data/vendor/libgit2/src/libgit2/submodule.h +9 -10
  318. data/vendor/libgit2/src/libgit2/tag.c +1 -1
  319. data/vendor/libgit2/src/libgit2/trailer.c +6 -6
  320. data/vendor/libgit2/src/libgit2/transaction.c +26 -20
  321. data/vendor/libgit2/src/libgit2/transaction.h +4 -1
  322. data/vendor/libgit2/src/libgit2/transport.c +4 -1
  323. data/vendor/libgit2/src/libgit2/transports/auth.h +1 -2
  324. data/vendor/libgit2/src/libgit2/transports/{auth_negotiate.c → auth_gssapi.c} +32 -32
  325. data/vendor/libgit2/src/libgit2/transports/auth_negotiate.h +1 -1
  326. data/vendor/libgit2/src/libgit2/transports/auth_ntlm.h +1 -1
  327. data/vendor/libgit2/src/libgit2/transports/{auth_ntlm.c → auth_ntlmclient.c} +12 -12
  328. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
  329. data/vendor/libgit2/src/libgit2/transports/credential.c +1 -1
  330. data/vendor/libgit2/src/libgit2/transports/git.c +7 -8
  331. data/vendor/libgit2/src/libgit2/transports/http.c +8 -4
  332. data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
  333. data/vendor/libgit2/src/libgit2/transports/httpclient.c +117 -72
  334. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  335. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  336. data/vendor/libgit2/src/libgit2/transports/local.c +21 -11
  337. data/vendor/libgit2/src/libgit2/transports/smart.c +50 -32
  338. data/vendor/libgit2/src/libgit2/transports/smart.h +26 -9
  339. data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +139 -18
  340. data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +209 -57
  341. data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
  342. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  343. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  344. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1126 -0
  345. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  346. data/vendor/libgit2/src/libgit2/transports/winhttp.c +48 -21
  347. data/vendor/libgit2/src/libgit2/tree-cache.c +26 -16
  348. data/vendor/libgit2/src/libgit2/tree-cache.h +5 -3
  349. data/vendor/libgit2/src/libgit2/tree.c +35 -27
  350. data/vendor/libgit2/src/libgit2/tree.h +3 -2
  351. data/vendor/libgit2/src/libgit2/worktree.c +39 -27
  352. data/vendor/libgit2/src/util/CMakeLists.txt +4 -6
  353. data/vendor/libgit2/src/util/alloc.c +69 -7
  354. data/vendor/libgit2/src/util/alloc.h +34 -9
  355. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  356. data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
  357. data/vendor/libgit2/src/util/allocators/failalloc.c +0 -60
  358. data/vendor/libgit2/src/util/allocators/failalloc.h +0 -6
  359. data/vendor/libgit2/src/util/allocators/stdalloc.c +2 -115
  360. data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +0 -68
  361. data/vendor/libgit2/src/util/array.h +24 -18
  362. data/vendor/libgit2/src/util/cc-compat.h +4 -0
  363. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  364. data/vendor/libgit2/src/util/date.c +22 -14
  365. data/vendor/libgit2/src/util/date.h +12 -0
  366. data/vendor/libgit2/src/util/errors.c +401 -0
  367. data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
  368. data/vendor/libgit2/src/util/filebuf.c +6 -1
  369. data/vendor/libgit2/src/util/filebuf.h +19 -6
  370. data/vendor/libgit2/src/util/fs_path.c +16 -5
  371. data/vendor/libgit2/src/util/fs_path.h +23 -0
  372. data/vendor/libgit2/src/util/futils.c +14 -10
  373. data/vendor/libgit2/src/util/futils.h +13 -4
  374. data/vendor/libgit2/src/util/git2_features.h.in +21 -4
  375. data/vendor/libgit2/src/util/git2_util.h +6 -0
  376. data/vendor/libgit2/src/util/hash/openssl.c +152 -0
  377. data/vendor/libgit2/src/util/hash/openssl.h +17 -1
  378. data/vendor/libgit2/src/util/hash/sha.h +4 -1
  379. data/vendor/libgit2/src/util/hashmap.h +424 -0
  380. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  381. data/vendor/libgit2/src/util/integer.h +3 -1
  382. data/vendor/libgit2/src/util/net.c +318 -161
  383. data/vendor/libgit2/src/util/net.h +27 -0
  384. data/vendor/libgit2/src/util/pool.c +1 -1
  385. data/vendor/libgit2/src/util/pool.h +5 -0
  386. data/vendor/libgit2/src/util/posix.c +54 -0
  387. data/vendor/libgit2/src/util/posix.h +22 -0
  388. data/vendor/libgit2/src/util/pqueue.h +1 -1
  389. data/vendor/libgit2/src/util/process.h +222 -0
  390. data/vendor/libgit2/src/util/rand.c +6 -10
  391. data/vendor/libgit2/src/util/regexp.c +1 -1
  392. data/vendor/libgit2/src/util/sortedcache.c +14 -13
  393. data/vendor/libgit2/src/util/sortedcache.h +3 -3
  394. data/vendor/libgit2/src/util/staticstr.h +66 -0
  395. data/vendor/libgit2/src/util/str.c +2 -2
  396. data/vendor/libgit2/src/util/strlist.c +108 -0
  397. data/vendor/libgit2/src/util/strlist.h +36 -0
  398. data/vendor/libgit2/src/util/unix/posix.h +0 -2
  399. data/vendor/libgit2/src/util/unix/process.c +629 -0
  400. data/vendor/libgit2/src/util/unix/realpath.c +23 -5
  401. data/vendor/libgit2/src/util/util.c +17 -12
  402. data/vendor/libgit2/src/util/util.h +28 -54
  403. data/vendor/libgit2/src/util/vector.c +3 -3
  404. data/vendor/libgit2/src/util/vector.h +2 -2
  405. data/vendor/libgit2/src/util/win32/error.c +1 -1
  406. data/vendor/libgit2/src/util/win32/path_w32.c +8 -8
  407. data/vendor/libgit2/src/util/win32/posix_w32.c +30 -7
  408. data/vendor/libgit2/src/util/win32/process.c +506 -0
  409. data/vendor/libgit2/src/util/win32/utf-conv.c +73 -75
  410. data/vendor/libgit2/src/util/win32/utf-conv.h +81 -14
  411. data/vendor/libgit2/src/util/win32/w32_util.c +1 -1
  412. metadata +72 -49
  413. data/vendor/libgit2/cmake/SelectWinHTTP.cmake +0 -17
  414. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  415. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  416. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  417. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  418. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  419. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  420. data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
  421. data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
  422. data/vendor/libgit2/src/libgit2/errors.c +0 -238
  423. data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
  424. data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
  425. data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
  426. data/vendor/libgit2/src/libgit2/netops.c +0 -124
  427. data/vendor/libgit2/src/libgit2/netops.h +0 -68
  428. data/vendor/libgit2/src/libgit2/offmap.c +0 -101
  429. data/vendor/libgit2/src/libgit2/offmap.h +0 -133
  430. data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
  431. data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
  432. data/vendor/libgit2/src/libgit2/threadstate.c +0 -84
  433. data/vendor/libgit2/src/libgit2/threadstate.h +0 -24
  434. data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
  435. data/vendor/libgit2/src/util/khash.h +0 -615
  436. data/vendor/libgit2/src/util/strmap.c +0 -100
  437. data/vendor/libgit2/src/util/strmap.h +0 -131
  438. /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
  439. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiff.h +0 -0
  440. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.h +0 -0
  441. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xinclude.h +0 -0
  442. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.h +0 -0
  443. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xtypes.h +0 -0
@@ -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
@@ -224,7 +250,14 @@ typedef enum {
224
250
  GIT_OPT_GET_OWNER_VALIDATION,
225
251
  GIT_OPT_SET_OWNER_VALIDATION,
226
252
  GIT_OPT_GET_HOMEDIR,
227
- GIT_OPT_SET_HOMEDIR
253
+ GIT_OPT_SET_HOMEDIR,
254
+ GIT_OPT_SET_SERVER_CONNECT_TIMEOUT,
255
+ GIT_OPT_GET_SERVER_CONNECT_TIMEOUT,
256
+ GIT_OPT_SET_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
228
261
  } git_libgit2_opt_t;
229
262
 
230
263
  /**
@@ -329,15 +362,52 @@ typedef enum {
329
362
  * > - `path` is the location of a directory holding several
330
363
  * > certificates, one per file.
331
364
  * >
365
+ * > Calling `GIT_OPT_ADD_SSL_X509_CERT` may override the
366
+ * > data in `path`.
367
+ * >
332
368
  * > Either parameter may be `NULL`, but not both.
333
369
  *
370
+ * * opts(GIT_OPT_ADD_SSL_X509_CERT, const X509 *cert)
371
+ *
372
+ * > Add a raw X509 certificate into the SSL certs store.
373
+ * > This certificate is only used by libgit2 invocations
374
+ * > during the application lifetime and is not persisted
375
+ * > to disk. This certificate cannot be removed from the
376
+ * > application once is has been added.
377
+ * >
378
+ * > - `cert` is the raw X509 cert will be added to cert store.
379
+ *
334
380
  * * opts(GIT_OPT_SET_USER_AGENT, const char *user_agent)
335
381
  *
336
- * > Set the value of the User-Agent header. This value will be
337
- * > appended to "git/1.0", for compatibility with other git clients.
382
+ * > Set the value of the comment section of the User-Agent header.
383
+ * > This can be information about your product and its version.
384
+ * > By default this is "libgit2" followed by the libgit2 version.
385
+ * >
386
+ * > This value will be appended to User-Agent _product_, which
387
+ * > is typically set to "git/2.0".
388
+ * >
389
+ * > Set to the empty string ("") to not send any information in the
390
+ * > comment section, or set to NULL to restore the default.
391
+ *
392
+ * * opts(GIT_OPT_GET_USER_AGENT, git_buf *out)
393
+ *
394
+ * > Get the value of the User-Agent header.
395
+ * > The User-Agent is written to the `out` buffer.
396
+ *
397
+ * * opts(GIT_OPT_SET_USER_AGENT_PRODUCT, const char *user_agent_product)
398
+ *
399
+ * > Set the value of the product portion of the User-Agent header.
400
+ * > This defaults to "git/2.0", for compatibility with other git
401
+ * > clients. It is recommended to keep this as git/<version> for
402
+ * > compatibility with servers that do user-agent detection.
338
403
  * >
339
- * > - `user_agent` is the value that will be delivered as the
340
- * > User-Agent header on HTTP requests.
404
+ * > Set to the empty string ("") to not send any user-agent string,
405
+ * > or set to NULL to restore the default.
406
+ *
407
+ * * opts(GIT_OPT_GET_USER_AGENT_PRODUCT, git_buf *out)
408
+ *
409
+ * > Get the value of the User-Agent product header.
410
+ * > The User-Agent product is written to the `out` buffer.
341
411
  *
342
412
  * * opts(GIT_OPT_SET_WINDOWS_SHAREMODE, unsigned long value)
343
413
  *
@@ -373,11 +443,6 @@ typedef enum {
373
443
  * >
374
444
  * > - `ciphers` is the list of ciphers that are eanbled.
375
445
  *
376
- * * opts(GIT_OPT_GET_USER_AGENT, git_buf *out)
377
- *
378
- * > Get the value of the User-Agent header.
379
- * > The User-Agent is written to the `out` buffer.
380
- *
381
446
  * * opts(GIT_OPT_ENABLE_OFS_DELTA, int enabled)
382
447
  *
383
448
  * > Enable or disable the use of "offset deltas" when creating packfiles,
@@ -480,8 +545,25 @@ typedef enum {
480
545
  * >
481
546
  * > - `path` directory of home directory.
482
547
  *
548
+ * opts(GIT_OPT_GET_SERVER_CONNECT_TIMEOUT, int *timeout)
549
+ * > Gets the timeout (in milliseconds) to attempt connections to
550
+ * > a remote server.
551
+ *
552
+ * opts(GIT_OPT_SET_SERVER_CONNECT_TIMEOUT, int timeout)
553
+ * > Sets the timeout (in milliseconds) to attempt connections to
554
+ * > a remote server. Set to 0 to use the system default. Note that
555
+ * > this may not be able to be configured longer than the system
556
+ * > default, typically 75 seconds.
557
+ *
558
+ * opts(GIT_OPT_GET_SERVER_TIMEOUT, int *timeout)
559
+ * > Gets the timeout (in milliseconds) for reading from and writing
560
+ * > to a remote server.
561
+ *
562
+ * opts(GIT_OPT_SET_SERVER_TIMEOUT, int timeout)
563
+ * > Sets the timeout (in milliseconds) for reading from and writing
564
+ * > to a remote server. Set to 0 to use the system default.
565
+ *
483
566
  * @param option Option key
484
- * @param ... value to set the option
485
567
  * @return 0 on success, <0 on failure
486
568
  */
487
569
  GIT_EXTERN(int) git_libgit2_opts(int option, ...);