rugged 1.0.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (349) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -0
  3. data/README.md +1 -1
  4. data/ext/rugged/rugged.c +7 -4
  5. data/ext/rugged/rugged_commit.c +1 -1
  6. data/ext/rugged/rugged_object.c +1 -1
  7. data/ext/rugged/rugged_repo.c +3 -3
  8. data/lib/rugged/commit.rb +16 -2
  9. data/lib/rugged/repository.rb +2 -2
  10. data/lib/rugged/version.rb +1 -1
  11. data/vendor/libgit2/CMakeLists.txt +41 -74
  12. data/vendor/libgit2/COPYING +109 -1
  13. data/vendor/libgit2/cmake/{Modules/AddCFlagIfSupported.cmake → AddCFlagIfSupported.cmake} +0 -0
  14. data/vendor/libgit2/cmake/{Modules/EnableWarnings.cmake → EnableWarnings.cmake} +0 -0
  15. data/vendor/libgit2/cmake/{Modules/FindCoreFoundation.cmake → FindCoreFoundation.cmake} +0 -0
  16. data/vendor/libgit2/cmake/{Modules/FindGSSAPI.cmake → FindGSSAPI.cmake} +0 -0
  17. data/vendor/libgit2/cmake/{Modules/FindGSSFramework.cmake → FindGSSFramework.cmake} +0 -0
  18. data/vendor/libgit2/cmake/{Modules/FindHTTP_Parser.cmake → FindHTTP_Parser.cmake} +0 -0
  19. data/vendor/libgit2/cmake/{Modules/FindIconv.cmake → FindIconv.cmake} +0 -0
  20. data/vendor/libgit2/cmake/FindLibSSH2.cmake +13 -0
  21. data/vendor/libgit2/cmake/{Modules/FindPCRE.cmake → FindPCRE.cmake} +0 -0
  22. data/vendor/libgit2/cmake/{Modules/FindPCRE2.cmake → FindPCRE2.cmake} +0 -0
  23. data/vendor/libgit2/cmake/{Modules/FindPkgLibraries.cmake → FindPkgLibraries.cmake} +0 -0
  24. data/vendor/libgit2/cmake/{Modules/FindSecurity.cmake → FindSecurity.cmake} +0 -0
  25. data/vendor/libgit2/cmake/{Modules/FindStatNsec.cmake → FindStatNsec.cmake} +0 -0
  26. data/vendor/libgit2/cmake/Findfutimens.cmake +14 -0
  27. data/vendor/libgit2/cmake/{Modules/FindmbedTLS.cmake → FindmbedTLS.cmake} +0 -0
  28. data/vendor/libgit2/cmake/{Modules/IdeSplitSources.cmake → IdeSplitSources.cmake} +0 -0
  29. data/vendor/libgit2/cmake/{Modules/PkgBuildConfig.cmake → PkgBuildConfig.cmake} +0 -0
  30. data/vendor/libgit2/cmake/{Modules/SanitizeBool.cmake → SanitizeBool.cmake} +0 -0
  31. data/vendor/libgit2/cmake/{Modules/SelectGSSAPI.cmake → SelectGSSAPI.cmake} +18 -26
  32. data/vendor/libgit2/cmake/{Modules/SelectHTTPSBackend.cmake → SelectHTTPSBackend.cmake} +29 -32
  33. data/vendor/libgit2/cmake/{Modules/SelectHashes.cmake → SelectHashes.cmake} +21 -28
  34. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +101 -0
  35. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +4 -3
  36. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +24 -10
  37. data/vendor/libgit2/deps/ntlmclient/compat.h +0 -27
  38. data/vendor/libgit2/deps/ntlmclient/crypt.h +14 -9
  39. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +20 -20
  40. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +3 -3
  41. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +37 -36
  42. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +4 -3
  43. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +178 -51
  44. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +74 -5
  45. data/vendor/libgit2/deps/ntlmclient/ntlm.c +164 -135
  46. data/vendor/libgit2/deps/ntlmclient/ntlm.h +13 -9
  47. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +16 -3
  48. data/vendor/libgit2/deps/ntlmclient/unicode.h +10 -4
  49. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +16 -27
  50. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.h +20 -0
  51. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +28 -52
  52. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.h +22 -0
  53. data/vendor/libgit2/deps/ntlmclient/util.c +15 -1
  54. data/vendor/libgit2/deps/ntlmclient/util.h +2 -1
  55. data/vendor/libgit2/deps/pcre/LICENCE +93 -0
  56. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  57. data/vendor/libgit2/deps/pcre/pcre_compile.c +29 -17
  58. data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +4 -4
  59. data/vendor/libgit2/deps/pcre/pcreposix.c +2 -3
  60. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -5
  61. data/vendor/libgit2/deps/zlib/deflate.c +1 -0
  62. data/vendor/libgit2/include/git2/annotated_commit.h +1 -1
  63. data/vendor/libgit2/include/git2/apply.h +2 -0
  64. data/vendor/libgit2/include/git2/attr.h +95 -0
  65. data/vendor/libgit2/include/git2/blame.h +95 -42
  66. data/vendor/libgit2/include/git2/blob.h +37 -3
  67. data/vendor/libgit2/include/git2/branch.h +25 -0
  68. data/vendor/libgit2/include/git2/cert.h +42 -5
  69. data/vendor/libgit2/include/git2/checkout.h +28 -12
  70. data/vendor/libgit2/include/git2/clone.h +1 -1
  71. data/vendor/libgit2/include/git2/commit.h +35 -19
  72. data/vendor/libgit2/include/git2/common.h +51 -6
  73. data/vendor/libgit2/include/git2/config.h +1 -1
  74. data/vendor/libgit2/include/git2/deprecated.h +368 -8
  75. data/vendor/libgit2/include/git2/diff.h +34 -113
  76. data/vendor/libgit2/include/git2/email.h +127 -0
  77. data/vendor/libgit2/include/git2/errors.h +8 -7
  78. data/vendor/libgit2/include/git2/filter.h +63 -17
  79. data/vendor/libgit2/include/git2/graph.h +20 -2
  80. data/vendor/libgit2/include/git2/index.h +4 -5
  81. data/vendor/libgit2/include/git2/indexer.h +2 -1
  82. data/vendor/libgit2/include/git2/notes.h +2 -2
  83. data/vendor/libgit2/include/git2/odb.h +44 -20
  84. data/vendor/libgit2/include/git2/oidarray.h +5 -8
  85. data/vendor/libgit2/include/git2/pack.h +1 -1
  86. data/vendor/libgit2/include/git2/patch.h +8 -0
  87. data/vendor/libgit2/include/git2/rebase.h +25 -1
  88. data/vendor/libgit2/include/git2/refs.h +9 -5
  89. data/vendor/libgit2/include/git2/remote.h +62 -9
  90. data/vendor/libgit2/include/git2/repository.h +107 -62
  91. data/vendor/libgit2/include/git2/revparse.h +5 -5
  92. data/vendor/libgit2/include/git2/stash.h +1 -1
  93. data/vendor/libgit2/include/git2/status.h +115 -59
  94. data/vendor/libgit2/include/git2/stdint.h +3 -3
  95. data/vendor/libgit2/include/git2/strarray.h +6 -10
  96. data/vendor/libgit2/include/git2/submodule.h +9 -0
  97. data/vendor/libgit2/include/git2/sys/commit_graph.h +174 -0
  98. data/vendor/libgit2/include/git2/sys/email.h +45 -0
  99. data/vendor/libgit2/include/git2/sys/filter.h +49 -28
  100. data/vendor/libgit2/include/git2/sys/midx.h +74 -0
  101. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -0
  102. data/vendor/libgit2/include/git2/sys/transport.h +1 -0
  103. data/vendor/libgit2/include/git2/tag.h +12 -0
  104. data/vendor/libgit2/include/git2/transport.h +1 -1
  105. data/vendor/libgit2/include/git2/tree.h +2 -14
  106. data/vendor/libgit2/include/git2/types.h +9 -0
  107. data/vendor/libgit2/include/git2/version.h +4 -4
  108. data/vendor/libgit2/include/git2/worktree.h +1 -0
  109. data/vendor/libgit2/include/git2.h +1 -0
  110. data/vendor/libgit2/src/CMakeLists.txt +84 -44
  111. data/vendor/libgit2/src/alloc.c +21 -8
  112. data/vendor/libgit2/src/allocators/failalloc.c +92 -0
  113. data/vendor/libgit2/src/allocators/failalloc.h +23 -0
  114. data/vendor/libgit2/src/allocators/stdalloc.c +41 -10
  115. data/vendor/libgit2/src/allocators/win32_leakcheck.c +118 -0
  116. data/vendor/libgit2/src/allocators/{win32_crtdbg.h → win32_leakcheck.h} +3 -3
  117. data/vendor/libgit2/src/annotated_commit.c +21 -9
  118. data/vendor/libgit2/src/apply.c +21 -8
  119. data/vendor/libgit2/src/array.h +11 -11
  120. data/vendor/libgit2/src/assert_safe.h +58 -0
  121. data/vendor/libgit2/src/attr.c +192 -70
  122. data/vendor/libgit2/src/attr_file.c +99 -41
  123. data/vendor/libgit2/src/attr_file.h +32 -11
  124. data/vendor/libgit2/src/attrcache.c +44 -40
  125. data/vendor/libgit2/src/attrcache.h +4 -5
  126. data/vendor/libgit2/src/blame.c +32 -19
  127. data/vendor/libgit2/src/blame_git.c +7 -4
  128. data/vendor/libgit2/src/blob.c +60 -32
  129. data/vendor/libgit2/src/branch.c +87 -37
  130. data/vendor/libgit2/src/buffer.c +349 -29
  131. data/vendor/libgit2/src/buffer.h +154 -2
  132. data/vendor/libgit2/src/cache.c +3 -24
  133. data/vendor/libgit2/src/cache.h +7 -7
  134. data/vendor/libgit2/src/cc-compat.h +10 -8
  135. data/vendor/libgit2/src/checkout.c +103 -105
  136. data/vendor/libgit2/src/cherrypick.c +8 -2
  137. data/vendor/libgit2/src/clone.c +105 -30
  138. data/vendor/libgit2/src/commit.c +41 -28
  139. data/vendor/libgit2/src/commit_graph.c +1209 -0
  140. data/vendor/libgit2/src/commit_graph.h +162 -0
  141. data/vendor/libgit2/src/commit_list.c +46 -0
  142. data/vendor/libgit2/src/commit_list.h +2 -0
  143. data/vendor/libgit2/src/common.h +26 -2
  144. data/vendor/libgit2/src/config.c +41 -23
  145. data/vendor/libgit2/src/config_cache.c +9 -4
  146. data/vendor/libgit2/src/config_entries.c +35 -27
  147. data/vendor/libgit2/src/config_file.c +17 -9
  148. data/vendor/libgit2/src/config_parse.c +6 -8
  149. data/vendor/libgit2/src/config_snapshot.c +2 -1
  150. data/vendor/libgit2/src/crlf.c +16 -6
  151. data/vendor/libgit2/src/date.c +4 -3
  152. data/vendor/libgit2/src/delta.c +1 -1
  153. data/vendor/libgit2/src/describe.c +12 -5
  154. data/vendor/libgit2/src/diff.c +55 -183
  155. data/vendor/libgit2/src/diff_driver.c +21 -17
  156. data/vendor/libgit2/src/diff_file.c +5 -7
  157. data/vendor/libgit2/src/diff_generate.c +56 -28
  158. data/vendor/libgit2/src/diff_parse.c +2 -3
  159. data/vendor/libgit2/src/diff_print.c +81 -65
  160. data/vendor/libgit2/src/diff_stats.c +19 -16
  161. data/vendor/libgit2/src/diff_tform.c +13 -13
  162. data/vendor/libgit2/src/diff_xdiff.c +4 -2
  163. data/vendor/libgit2/src/diff_xdiff.h +1 -1
  164. data/vendor/libgit2/src/email.c +299 -0
  165. data/vendor/libgit2/src/email.h +25 -0
  166. data/vendor/libgit2/src/errors.c +26 -19
  167. data/vendor/libgit2/src/features.h.in +5 -1
  168. data/vendor/libgit2/src/fetch.c +7 -2
  169. data/vendor/libgit2/src/fetchhead.c +8 -4
  170. data/vendor/libgit2/src/filebuf.c +9 -7
  171. data/vendor/libgit2/src/filter.c +215 -113
  172. data/vendor/libgit2/src/filter.h +24 -5
  173. data/vendor/libgit2/src/futils.c +8 -8
  174. data/vendor/libgit2/src/futils.h +4 -4
  175. data/vendor/libgit2/src/graph.c +64 -9
  176. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +3 -3
  177. data/vendor/libgit2/src/hash/sha1/common_crypto.c +3 -3
  178. data/vendor/libgit2/src/hash/sha1/generic.h +1 -1
  179. data/vendor/libgit2/src/hash/sha1/mbedtls.c +12 -12
  180. data/vendor/libgit2/src/hash/sha1/openssl.c +3 -3
  181. data/vendor/libgit2/src/hash/sha1/sha1dc/sha1.c +8 -10
  182. data/vendor/libgit2/src/hash/sha1/win32.c +15 -11
  183. data/vendor/libgit2/src/hash.c +16 -13
  184. data/vendor/libgit2/src/hash.h +1 -1
  185. data/vendor/libgit2/src/hashsig.c +23 -10
  186. data/vendor/libgit2/src/ident.c +13 -3
  187. data/vendor/libgit2/src/idxmap.c +0 -22
  188. data/vendor/libgit2/src/ignore.c +33 -17
  189. data/vendor/libgit2/src/index.c +124 -82
  190. data/vendor/libgit2/src/index.h +1 -1
  191. data/vendor/libgit2/src/indexer.c +95 -37
  192. data/vendor/libgit2/src/integer.h +79 -2
  193. data/vendor/libgit2/src/iterator.c +40 -28
  194. data/vendor/libgit2/src/iterator.h +1 -1
  195. data/vendor/libgit2/src/khash.h +2 -11
  196. data/vendor/libgit2/src/{settings.c → libgit2.c} +148 -49
  197. data/vendor/libgit2/src/libgit2.h +15 -0
  198. data/vendor/libgit2/src/mailmap.c +23 -10
  199. data/vendor/libgit2/src/map.h +3 -3
  200. data/vendor/libgit2/src/merge.c +95 -43
  201. data/vendor/libgit2/src/merge.h +2 -1
  202. data/vendor/libgit2/src/merge_driver.c +19 -13
  203. data/vendor/libgit2/src/merge_file.c +15 -9
  204. data/vendor/libgit2/src/message.c +3 -1
  205. data/vendor/libgit2/src/midx.c +879 -0
  206. data/vendor/libgit2/src/midx.h +110 -0
  207. data/vendor/libgit2/src/mwindow.c +214 -95
  208. data/vendor/libgit2/src/mwindow.h +3 -3
  209. data/vendor/libgit2/src/net.c +133 -4
  210. data/vendor/libgit2/src/net.h +16 -2
  211. data/vendor/libgit2/src/netops.c +6 -4
  212. data/vendor/libgit2/src/netops.h +2 -2
  213. data/vendor/libgit2/src/notes.c +40 -40
  214. data/vendor/libgit2/src/object.c +24 -15
  215. data/vendor/libgit2/src/odb.c +298 -57
  216. data/vendor/libgit2/src/odb.h +16 -2
  217. data/vendor/libgit2/src/odb_loose.c +31 -21
  218. data/vendor/libgit2/src/odb_mempack.c +3 -1
  219. data/vendor/libgit2/src/odb_pack.c +391 -114
  220. data/vendor/libgit2/src/oid.c +7 -4
  221. data/vendor/libgit2/src/oidarray.c +10 -1
  222. data/vendor/libgit2/src/pack-objects.c +83 -69
  223. data/vendor/libgit2/src/pack.c +383 -150
  224. data/vendor/libgit2/src/pack.h +44 -9
  225. data/vendor/libgit2/src/patch.c +14 -7
  226. data/vendor/libgit2/src/patch_generate.c +3 -5
  227. data/vendor/libgit2/src/patch_parse.c +6 -3
  228. data/vendor/libgit2/src/path.c +103 -58
  229. data/vendor/libgit2/src/path.h +80 -7
  230. data/vendor/libgit2/src/pathspec.c +12 -11
  231. data/vendor/libgit2/src/pool.c +34 -22
  232. data/vendor/libgit2/src/pool.h +9 -1
  233. data/vendor/libgit2/src/posix.c +43 -12
  234. data/vendor/libgit2/src/posix.h +9 -0
  235. data/vendor/libgit2/src/proxy.c +2 -0
  236. data/vendor/libgit2/src/push.c +2 -0
  237. data/vendor/libgit2/src/reader.c +10 -6
  238. data/vendor/libgit2/src/rebase.c +95 -49
  239. data/vendor/libgit2/src/refdb.c +165 -13
  240. data/vendor/libgit2/src/refdb.h +69 -0
  241. data/vendor/libgit2/src/refdb_fs.c +145 -153
  242. data/vendor/libgit2/src/reflog.c +21 -20
  243. data/vendor/libgit2/src/refs.c +153 -233
  244. data/vendor/libgit2/src/refs.h +2 -20
  245. data/vendor/libgit2/src/refspec.c +81 -45
  246. data/vendor/libgit2/src/regexp.c +2 -2
  247. data/vendor/libgit2/src/remote.c +320 -122
  248. data/vendor/libgit2/src/remote.h +2 -1
  249. data/vendor/libgit2/src/repository.c +476 -203
  250. data/vendor/libgit2/src/repository.h +27 -29
  251. data/vendor/libgit2/src/reset.c +8 -7
  252. data/vendor/libgit2/src/revert.c +8 -2
  253. data/vendor/libgit2/src/revparse.c +23 -17
  254. data/vendor/libgit2/src/revwalk.c +35 -20
  255. data/vendor/libgit2/src/runtime.c +162 -0
  256. data/vendor/libgit2/src/runtime.h +62 -0
  257. data/vendor/libgit2/src/{refdb_fs.h → settings.h} +3 -11
  258. data/vendor/libgit2/src/signature.c +6 -5
  259. data/vendor/libgit2/src/sortedcache.c +2 -3
  260. data/vendor/libgit2/src/sortedcache.h +10 -8
  261. data/vendor/libgit2/src/stash.c +6 -2
  262. data/vendor/libgit2/src/status.c +9 -4
  263. data/vendor/libgit2/src/strarray.c +64 -0
  264. data/vendor/libgit2/src/streams/mbedtls.c +14 -17
  265. data/vendor/libgit2/src/streams/mbedtls.h +1 -1
  266. data/vendor/libgit2/src/streams/openssl.c +113 -207
  267. data/vendor/libgit2/src/streams/openssl.h +9 -1
  268. data/vendor/libgit2/src/streams/openssl_dynamic.c +309 -0
  269. data/vendor/libgit2/src/streams/openssl_dynamic.h +348 -0
  270. data/vendor/libgit2/src/streams/openssl_legacy.c +203 -0
  271. data/vendor/libgit2/src/streams/openssl_legacy.h +63 -0
  272. data/vendor/libgit2/src/streams/registry.c +10 -9
  273. data/vendor/libgit2/src/streams/socket.c +6 -2
  274. data/vendor/libgit2/src/streams/stransport.c +6 -3
  275. data/vendor/libgit2/src/streams/tls.c +5 -3
  276. data/vendor/libgit2/src/submodule.c +134 -66
  277. data/vendor/libgit2/src/submodule.h +9 -9
  278. data/vendor/libgit2/src/sysdir.c +8 -26
  279. data/vendor/libgit2/src/sysdir.h +0 -11
  280. data/vendor/libgit2/src/tag.c +49 -11
  281. data/vendor/libgit2/src/thread.c +140 -0
  282. data/vendor/libgit2/src/thread.h +479 -0
  283. data/vendor/libgit2/src/threadstate.c +84 -0
  284. data/vendor/libgit2/src/threadstate.h +24 -0
  285. data/vendor/libgit2/src/trace.c +2 -2
  286. data/vendor/libgit2/src/trace.h +17 -13
  287. data/vendor/libgit2/src/trailer.c +1 -1
  288. data/vendor/libgit2/src/transaction.c +21 -9
  289. data/vendor/libgit2/src/transport.c +3 -3
  290. data/vendor/libgit2/src/transports/auth.c +1 -1
  291. data/vendor/libgit2/src/transports/auth_negotiate.c +11 -4
  292. data/vendor/libgit2/src/transports/auth_ntlm.c +10 -6
  293. data/vendor/libgit2/src/transports/credential.c +17 -7
  294. data/vendor/libgit2/src/transports/credential_helpers.c +2 -0
  295. data/vendor/libgit2/src/transports/git.c +1 -3
  296. data/vendor/libgit2/src/transports/http.c +19 -17
  297. data/vendor/libgit2/src/transports/http.h +1 -0
  298. data/vendor/libgit2/src/transports/httpclient.c +68 -38
  299. data/vendor/libgit2/src/transports/httpclient.h +1 -1
  300. data/vendor/libgit2/src/transports/local.c +5 -5
  301. data/vendor/libgit2/src/transports/smart.c +14 -9
  302. data/vendor/libgit2/src/transports/smart.h +1 -1
  303. data/vendor/libgit2/src/transports/smart_protocol.c +11 -5
  304. data/vendor/libgit2/src/transports/ssh.c +55 -21
  305. data/vendor/libgit2/src/transports/winhttp.c +157 -89
  306. data/vendor/libgit2/src/tree.c +100 -77
  307. data/vendor/libgit2/src/tree.h +1 -0
  308. data/vendor/libgit2/src/tsort.c +0 -2
  309. data/vendor/libgit2/src/unix/map.c +3 -1
  310. data/vendor/libgit2/src/unix/posix.h +16 -1
  311. data/vendor/libgit2/src/unix/pthread.h +2 -1
  312. data/vendor/libgit2/src/utf8.c +150 -0
  313. data/vendor/libgit2/src/utf8.h +52 -0
  314. data/vendor/libgit2/src/util.c +75 -184
  315. data/vendor/libgit2/src/util.h +34 -40
  316. data/vendor/libgit2/src/vector.c +23 -19
  317. data/vendor/libgit2/src/vector.h +4 -2
  318. data/vendor/libgit2/src/win32/findfile.c +5 -3
  319. data/vendor/libgit2/src/win32/git2.rc +18 -3
  320. data/vendor/libgit2/src/win32/map.c +1 -1
  321. data/vendor/libgit2/src/win32/msvc-compat.h +9 -1
  322. data/vendor/libgit2/src/win32/path_w32.c +23 -25
  323. data/vendor/libgit2/src/win32/path_w32.h +0 -1
  324. data/vendor/libgit2/src/win32/posix.h +6 -6
  325. data/vendor/libgit2/src/win32/posix_w32.c +86 -7
  326. data/vendor/libgit2/src/win32/precompiled.h +0 -1
  327. data/vendor/libgit2/src/win32/reparse.h +4 -4
  328. data/vendor/libgit2/src/win32/thread.c +24 -15
  329. data/vendor/libgit2/src/win32/thread.h +1 -1
  330. data/vendor/libgit2/src/win32/w32_buffer.c +3 -3
  331. data/vendor/libgit2/src/win32/w32_common.h +18 -9
  332. data/vendor/libgit2/src/win32/{w32_crtdbg_stacktrace.c → w32_leakcheck.c} +269 -33
  333. data/vendor/libgit2/src/win32/w32_leakcheck.h +222 -0
  334. data/vendor/libgit2/src/win32/w32_util.h +6 -6
  335. data/vendor/libgit2/src/worktree.c +36 -14
  336. data/vendor/libgit2/src/zstream.c +1 -1
  337. metadata +65 -42
  338. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +0 -29
  339. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +0 -96
  340. data/vendor/libgit2/src/allocators/win32_crtdbg.c +0 -118
  341. data/vendor/libgit2/src/buf_text.c +0 -316
  342. data/vendor/libgit2/src/buf_text.h +0 -122
  343. data/vendor/libgit2/src/global.c +0 -361
  344. data/vendor/libgit2/src/global.h +0 -41
  345. data/vendor/libgit2/src/thread-utils.c +0 -58
  346. data/vendor/libgit2/src/thread-utils.h +0 -246
  347. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -127
  348. data/vendor/libgit2/src/win32/w32_stack.c +0 -188
  349. data/vendor/libgit2/src/win32/w32_stack.h +0 -140
@@ -3938,10 +3938,10 @@ static sljit_s32 character_to_int32(pcre_uchar chr)
3938
3938
  sljit_s32 value = (sljit_s32)chr;
3939
3939
  #if defined COMPILE_PCRE8
3940
3940
  #define SSE2_COMPARE_TYPE_INDEX 0
3941
- return (value << 24) | (value << 16) | (value << 8) | value;
3941
+ return ((unsigned int)value << 24) | ((unsigned int)value << 16) | ((unsigned int)value << 8) | (unsigned int)value;
3942
3942
  #elif defined COMPILE_PCRE16
3943
3943
  #define SSE2_COMPARE_TYPE_INDEX 1
3944
- return (value << 16) | value;
3944
+ return ((unsigned int)value << 16) | value;
3945
3945
  #elif defined COMPILE_PCRE32
3946
3946
  #define SSE2_COMPARE_TYPE_INDEX 2
3947
3947
  return value;
@@ -8507,7 +8507,7 @@ if (opcode == OP_ONCE)
8507
8507
  /* We temporarily encode the needs_control_head in the lowest bit.
8508
8508
  Note: on the target architectures of SLJIT the ((x << 1) >> 1) returns
8509
8509
  the same value for small signed numbers (including negative numbers). */
8510
- BACKTRACK_AS(bracket_backtrack)->u.framesize = (BACKTRACK_AS(bracket_backtrack)->u.framesize << 1) | (needs_control_head ? 1 : 0);
8510
+ BACKTRACK_AS(bracket_backtrack)->u.framesize = ((unsigned int)BACKTRACK_AS(bracket_backtrack)->u.framesize << 1) | (needs_control_head ? 1 : 0);
8511
8511
  }
8512
8512
  return cc + repeat_length;
8513
8513
  }
@@ -9002,7 +9002,7 @@ if (exact > 1)
9002
9002
  #ifdef SUPPORT_UTF
9003
9003
  && !common->utf
9004
9004
  #endif
9005
- )
9005
+ && type != OP_ANYNL && type != OP_EXTUNI)
9006
9006
  {
9007
9007
  OP2(SLJIT_ADD, TMP1, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(exact));
9008
9008
  add_jump(compiler, &backtrack->topbacktracks, CMP(SLJIT_GREATER, TMP1, 0, STR_END, 0));
@@ -6,7 +6,7 @@
6
6
  and semantics are as close as possible to those of the Perl 5 language.
7
7
 
8
8
  Written by Philip Hazel
9
- Copyright (c) 1997-2018 University of Cambridge
9
+ Copyright (c) 1997-2020 University of Cambridge
10
10
 
11
11
  -----------------------------------------------------------------------------
12
12
  Redistribution and use in source and binary forms, with or without
@@ -287,6 +287,7 @@ if (preg->re_pcre == NULL)
287
287
  (void)pcre_fullinfo((const pcre *)preg->re_pcre, NULL, PCRE_INFO_CAPTURECOUNT,
288
288
  &re_nsub);
289
289
  preg->re_nsub = (size_t)re_nsub;
290
+ preg->re_erroffset = (size_t)(-1); /* No meaning after successful compile */
290
291
  return 0;
291
292
  }
292
293
 
@@ -324,8 +325,6 @@ if ((eflags & PCRE_REG_NOTBOL) != 0) options |= PCRE_NOTBOL;
324
325
  if ((eflags & PCRE_REG_NOTEOL) != 0) options |= PCRE_NOTEOL;
325
326
  if ((eflags & PCRE_REG_NOTEMPTY) != 0) options |= PCRE_NOTEMPTY;
326
327
 
327
- ((pcre_regex_t *)preg)->re_erroffset = (size_t)(-1); /* Only has meaning after compile */
328
-
329
328
  /* When no string data is being returned, or no vector has been passed in which
330
329
  to put it, ensure that nmatch is zero. Otherwise, ensure the vector for holding
331
330
  the return data is large enough. */
@@ -1,5 +1,6 @@
1
- DISABLE_WARNINGS(implicit-fallthrough)
2
- ADD_DEFINITIONS(-DNO_VIZ -DSTDC -DNO_GZIP)
3
- FILE(GLOB SRC_ZLIB "*.c" "*.h")
4
- INCLUDE_DIRECTORIES(".")
5
- ADD_LIBRARY(zlib OBJECT ${SRC_ZLIB})
1
+ disable_warnings(implicit-fallthrough)
2
+ add_definitions(-DNO_VIZ -DSTDC -DNO_GZIP)
3
+ file(GLOB SRC_ZLIB "*.c" "*.h")
4
+ list(SORT SRC_ZLIB)
5
+ include_directories(".")
6
+ add_library(zlib OBJECT ${SRC_ZLIB})
@@ -320,6 +320,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
320
320
 
321
321
  s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte));
322
322
  s->prev = (Posf *) ZALLOC(strm, s->w_size, sizeof(Pos));
323
+ memset(s->prev, 0, s->w_size * sizeof(Pos));
323
324
  s->head = (Posf *) ZALLOC(strm, s->hash_size, sizeof(Pos));
324
325
 
325
326
  s->high_water = 0; /* nothing written to s->window yet */
@@ -78,7 +78,7 @@ GIT_EXTERN(int) git_annotated_commit_lookup(
78
78
  const git_oid *id);
79
79
 
80
80
  /**
81
- * Creates a `git_annotated_comit` from a revision string.
81
+ * Creates a `git_annotated_commit` from a revision string.
82
82
  *
83
83
  * See `man gitrevisions`, or
84
84
  * http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for
@@ -100,6 +100,7 @@ GIT_EXTERN(int) git_apply_options_init(git_apply_options *opts, unsigned int ver
100
100
  * @param preimage the tree to apply the diff to
101
101
  * @param diff the diff to apply
102
102
  * @param options the options for the apply (or null for defaults)
103
+ * @return 0 or an error code
103
104
  */
104
105
  GIT_EXTERN(int) git_apply_to_tree(
105
106
  git_index **out,
@@ -137,6 +138,7 @@ typedef enum {
137
138
  * @param diff the diff to apply
138
139
  * @param location the location to apply (workdir, index or both)
139
140
  * @param options the options for the apply (or null for defaults)
141
+ * @return 0 or an error code
140
142
  */
141
143
  GIT_EXTERN(int) git_apply(
142
144
  git_repository *repo,
@@ -130,9 +130,38 @@ GIT_EXTERN(git_attr_value_t) git_attr_value(const char *attr);
130
130
  *
131
131
  * Passing the `GIT_ATTR_CHECK_INCLUDE_HEAD` flag will use attributes
132
132
  * from a `.gitattributes` file in the repository at the HEAD revision.
133
+ *
134
+ * Passing the `GIT_ATTR_CHECK_INCLUDE_COMMIT` flag will use attributes
135
+ * from a `.gitattributes` file in a specific commit.
133
136
  */
134
137
  #define GIT_ATTR_CHECK_NO_SYSTEM (1 << 2)
135
138
  #define GIT_ATTR_CHECK_INCLUDE_HEAD (1 << 3)
139
+ #define GIT_ATTR_CHECK_INCLUDE_COMMIT (1 << 4)
140
+
141
+ /**
142
+ * An options structure for querying attributes.
143
+ */
144
+ typedef struct {
145
+ unsigned int version;
146
+
147
+ /** A combination of GIT_ATTR_CHECK flags */
148
+ unsigned int flags;
149
+
150
+ #ifdef GIT_DEPRECATE_HARD
151
+ void *reserved;
152
+ #else
153
+ git_oid *commit_id;
154
+ #endif
155
+
156
+ /**
157
+ * The commit to load attributes from, when
158
+ * `GIT_ATTR_CHECK_INCLUDE_COMMIT` is specified.
159
+ */
160
+ git_oid attr_commit_id;
161
+ } git_attr_options;
162
+
163
+ #define GIT_ATTR_OPTIONS_VERSION 1
164
+ #define GIT_ATTR_OPTIONS_INIT {GIT_ATTR_OPTIONS_VERSION}
136
165
 
137
166
  /**
138
167
  * Look up the value of one git attribute for path.
@@ -156,6 +185,28 @@ GIT_EXTERN(int) git_attr_get(
156
185
  const char *path,
157
186
  const char *name);
158
187
 
188
+ /**
189
+ * Look up the value of one git attribute for path with extended options.
190
+ *
191
+ * @param value_out Output of the value of the attribute. Use the GIT_ATTR_...
192
+ * macros to test for TRUE, FALSE, UNSPECIFIED, etc. or just
193
+ * use the string value for attributes set to a value. You
194
+ * should NOT modify or free this value.
195
+ * @param repo The repository containing the path.
196
+ * @param opts The `git_attr_options` to use when querying these attributes.
197
+ * @param path The path to check for attributes. Relative paths are
198
+ * interpreted relative to the repo root. The file does
199
+ * not have to exist, but if it does not, then it will be
200
+ * treated as a plain file (not a directory).
201
+ * @param name The name of the attribute to look up.
202
+ */
203
+ GIT_EXTERN(int) git_attr_get_ext(
204
+ const char **value_out,
205
+ git_repository *repo,
206
+ git_attr_options *opts,
207
+ const char *path,
208
+ const char *name);
209
+
159
210
  /**
160
211
  * Look up a list of git attributes for path.
161
212
  *
@@ -193,6 +244,30 @@ GIT_EXTERN(int) git_attr_get_many(
193
244
  size_t num_attr,
194
245
  const char **names);
195
246
 
247
+ /**
248
+ * Look up a list of git attributes for path with extended options.
249
+ *
250
+ * @param values_out An array of num_attr entries that will have string
251
+ * pointers written into it for the values of the attributes.
252
+ * You should not modify or free the values that are written
253
+ * into this array (although of course, you should free the
254
+ * array itself if you allocated it).
255
+ * @param repo The repository containing the path.
256
+ * @param opts The `git_attr_options` to use when querying these attributes.
257
+ * @param path The path inside the repo to check attributes. This
258
+ * does not have to exist, but if it does not, then
259
+ * it will be treated as a plain file (i.e. not a directory).
260
+ * @param num_attr The number of attributes being looked up
261
+ * @param names An array of num_attr strings containing attribute names.
262
+ */
263
+ GIT_EXTERN(int) git_attr_get_many_ext(
264
+ const char **values_out,
265
+ git_repository *repo,
266
+ git_attr_options *opts,
267
+ const char *path,
268
+ size_t num_attr,
269
+ const char **names);
270
+
196
271
  /**
197
272
  * The callback used with git_attr_foreach.
198
273
  *
@@ -231,6 +306,26 @@ GIT_EXTERN(int) git_attr_foreach(
231
306
  git_attr_foreach_cb callback,
232
307
  void *payload);
233
308
 
309
+ /**
310
+ * Loop over all the git attributes for a path with extended options.
311
+ *
312
+ * @param repo The repository containing the path.
313
+ * @param opts The `git_attr_options` to use when querying these attributes.
314
+ * @param path Path inside the repo to check attributes. This does not have
315
+ * to exist, but if it does not, then it will be treated as a
316
+ * plain file (i.e. not a directory).
317
+ * @param callback Function to invoke on each attribute name and value.
318
+ * See git_attr_foreach_cb.
319
+ * @param payload Passed on as extra parameter to callback function.
320
+ * @return 0 on success, non-zero callback return value, or error code
321
+ */
322
+ GIT_EXTERN(int) git_attr_foreach_ext(
323
+ git_repository *repo,
324
+ git_attr_options *opts,
325
+ const char *path,
326
+ git_attr_foreach_cb callback,
327
+ void *payload);
328
+
234
329
  /**
235
330
  * Flush the gitattributes cache.
236
331
  *
@@ -26,27 +26,54 @@ GIT_BEGIN_DECL
26
26
  typedef enum {
27
27
  /** Normal blame, the default */
28
28
  GIT_BLAME_NORMAL = 0,
29
- /** Track lines that have moved within a file (like `git blame -M`).
30
- * NOT IMPLEMENTED. */
29
+
30
+ /**
31
+ * Track lines that have moved within a file (like `git blame -M`).
32
+ *
33
+ * This is not yet implemented and reserved for future use.
34
+ */
31
35
  GIT_BLAME_TRACK_COPIES_SAME_FILE = (1<<0),
32
- /** Track lines that have moved across files in the same commit (like `git blame -C`).
33
- * NOT IMPLEMENTED. */
36
+
37
+ /**
38
+ * Track lines that have moved across files in the same commit
39
+ * (like `git blame -C`).
40
+ *
41
+ * This is not yet implemented and reserved for future use.
42
+ */
34
43
  GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES = (1<<1),
35
- /** Track lines that have been copied from another file that exists in the
36
- * same commit (like `git blame -CC`). Implies SAME_FILE.
37
- * NOT IMPLEMENTED. */
44
+
45
+ /**
46
+ * Track lines that have been copied from another file that exists
47
+ * in the same commit (like `git blame -CC`). Implies SAME_FILE.
48
+ *
49
+ * This is not yet implemented and reserved for future use.
50
+ */
38
51
  GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES = (1<<2),
39
- /** Track lines that have been copied from another file that exists in *any*
40
- * commit (like `git blame -CCC`). Implies SAME_COMMIT_COPIES.
41
- * NOT IMPLEMENTED. */
52
+
53
+ /**
54
+ * Track lines that have been copied from another file that exists in
55
+ * *any* commit (like `git blame -CCC`). Implies SAME_COMMIT_COPIES.
56
+ *
57
+ * This is not yet implemented and reserved for future use.
58
+ */
42
59
  GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES = (1<<3),
43
- /** Restrict the search of commits to those reachable following only the
44
- * first parents. */
60
+
61
+ /**
62
+ * Restrict the search of commits to those reachable following only
63
+ * the first parents.
64
+ */
45
65
  GIT_BLAME_FIRST_PARENT = (1<<4),
46
- /** Use mailmap file to map author and committer names and email addresses
47
- * to canonical real names and email addresses. The mailmap will be read
48
- * from the working directory, or HEAD in a bare repository. */
66
+
67
+ /**
68
+ * Use mailmap file to map author and committer names and email
69
+ * addresses to canonical real names and email addresses. The
70
+ * mailmap will be read from the working directory, or HEAD in a
71
+ * bare repository.
72
+ */
49
73
  GIT_BLAME_USE_MAILMAP = (1<<5),
74
+
75
+ /** Ignore whitespace differences */
76
+ GIT_BLAME_IGNORE_WHITESPACE = (1<<6),
50
77
  } git_blame_flag_t;
51
78
 
52
79
  /**
@@ -61,25 +88,33 @@ typedef struct git_blame_options {
61
88
 
62
89
  /** A combination of `git_blame_flag_t` */
63
90
  uint32_t flags;
64
- /** The lower bound on the number of alphanumeric
65
- * characters that must be detected as moving/copying within a file for it to
66
- * associate those lines with the parent commit. The default value is 20.
67
- * This value only takes effect if any of the `GIT_BLAME_TRACK_COPIES_*`
68
- * flags are specified.
91
+
92
+ /**
93
+ * The lower bound on the number of alphanumeric characters that
94
+ * must be detected as moving/copying within a file for it to
95
+ * associate those lines with the parent commit. The default value
96
+ * is 20.
97
+ *
98
+ * This value only takes effect if any of the `GIT_BLAME_TRACK_COPIES_*`
99
+ * flags are specified.
69
100
  */
70
101
  uint16_t min_match_characters;
102
+
71
103
  /** The id of the newest commit to consider. The default is HEAD. */
72
104
  git_oid newest_commit;
105
+
73
106
  /**
74
107
  * The id of the oldest commit to consider.
75
108
  * The default is the first commit encountered with a NULL parent.
76
109
  */
77
110
  git_oid oldest_commit;
111
+
78
112
  /**
79
113
  * The first line in the file to blame.
80
114
  * The default is 1 (line numbers start with 1).
81
115
  */
82
116
  size_t min_line;
117
+
83
118
  /**
84
119
  * The last line in the file to blame.
85
120
  * The default is the last line of the file.
@@ -106,41 +141,59 @@ GIT_EXTERN(int) git_blame_options_init(
106
141
 
107
142
  /**
108
143
  * Structure that represents a blame hunk.
109
- *
110
- * - `lines_in_hunk` is the number of lines in this hunk
111
- * - `final_commit_id` is the OID of the commit where this line was last
112
- * changed.
113
- * - `final_start_line_number` is the 1-based line number where this hunk
114
- * begins, in the final version of the file
115
- * - `final_signature` is the author of `final_commit_id`. If
116
- * `GIT_BLAME_USE_MAILMAP` has been specified, it will contain the canonical
117
- * real name and email address.
118
- * - `orig_commit_id` is the OID of the commit where this hunk was found. This
119
- * will usually be the same as `final_commit_id`, except when
120
- * `GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES` has been specified.
121
- * - `orig_path` is the path to the file where this hunk originated, as of the
122
- * commit specified by `orig_commit_id`.
123
- * - `orig_start_line_number` is the 1-based line number where this hunk begins
124
- * in the file named by `orig_path` in the commit specified by
125
- * `orig_commit_id`.
126
- * - `orig_signature` is the author of `orig_commit_id`. If
127
- * `GIT_BLAME_USE_MAILMAP` has been specified, it will contain the canonical
128
- * real name and email address.
129
- * - `boundary` is 1 iff the hunk has been tracked to a boundary commit (the
130
- * root, or the commit specified in git_blame_options.oldest_commit)
131
144
  */
132
145
  typedef struct git_blame_hunk {
146
+ /**
147
+ * The number of lines in this hunk.
148
+ */
133
149
  size_t lines_in_hunk;
134
150
 
151
+ /**
152
+ * The OID of the commit where this line was last changed.
153
+ */
135
154
  git_oid final_commit_id;
155
+
156
+ /**
157
+ * The 1-based line number where this hunk begins, in the final version
158
+ * of the file.
159
+ */
136
160
  size_t final_start_line_number;
161
+
162
+ /**
163
+ * The author of `final_commit_id`. If `GIT_BLAME_USE_MAILMAP` has been
164
+ * specified, it will contain the canonical real name and email address.
165
+ */
137
166
  git_signature *final_signature;
138
167
 
168
+ /**
169
+ * The OID of the commit where this hunk was found.
170
+ * This will usually be the same as `final_commit_id`, except when
171
+ * `GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES` has been specified.
172
+ */
139
173
  git_oid orig_commit_id;
174
+
175
+ /**
176
+ * The path to the file where this hunk originated, as of the commit
177
+ * specified by `orig_commit_id`.
178
+ */
140
179
  const char *orig_path;
180
+
181
+ /**
182
+ * The 1-based line number where this hunk begins in the file named by
183
+ * `orig_path` in the commit specified by `orig_commit_id`.
184
+ */
141
185
  size_t orig_start_line_number;
186
+
187
+ /**
188
+ * The author of `orig_commit_id`. If `GIT_BLAME_USE_MAILMAP` has been
189
+ * specified, it will contain the canonical real name and email address.
190
+ */
142
191
  git_signature *orig_signature;
143
192
 
193
+ /**
194
+ * The 1 iff the hunk has been tracked to a boundary commit (the root,
195
+ * or the commit specified in git_blame_options.oldest_commit)
196
+ */
144
197
  char boundary;
145
198
  } git_blame_hunk;
146
199
 
@@ -84,7 +84,7 @@ GIT_EXTERN(git_repository *) git_blob_owner(const git_blob *blob);
84
84
  * time.
85
85
  *
86
86
  * @param blob pointer to the blob
87
- * @return the pointer
87
+ * @return the pointer, or NULL on error
88
88
  */
89
89
  GIT_EXTERN(const void *) git_blob_rawcontent(const git_blob *blob);
90
90
 
@@ -113,22 +113,56 @@ typedef enum {
113
113
  * When set, filters will be loaded from a `.gitattributes` file
114
114
  * in the HEAD commit.
115
115
  */
116
- GIT_BLOB_FILTER_ATTTRIBUTES_FROM_HEAD = (1 << 2),
116
+ GIT_BLOB_FILTER_ATTRIBUTES_FROM_HEAD = (1 << 2),
117
+
118
+ /**
119
+ * When set, filters will be loaded from a `.gitattributes` file
120
+ * in the specified commit.
121
+ */
122
+ GIT_BLOB_FILTER_ATTRIBUTES_FROM_COMMIT = (1 << 3),
117
123
  } git_blob_filter_flag_t;
118
124
 
119
125
  /**
120
126
  * The options used when applying filter options to a file.
127
+ *
128
+ * Initialize with `GIT_BLOB_FILTER_OPTIONS_INIT`. Alternatively, you can
129
+ * use `git_blob_filter_options_init`.
130
+ *
121
131
  */
122
132
  typedef struct {
123
133
  int version;
124
134
 
125
135
  /** Flags to control the filtering process, see `git_blob_filter_flag_t` above */
126
136
  uint32_t flags;
137
+
138
+ #ifdef GIT_DEPRECATE_HARD
139
+ void *reserved;
140
+ #else
141
+ git_oid *commit_id;
142
+ #endif
143
+
144
+ /**
145
+ * The commit to load attributes from, when
146
+ * `GIT_BLOB_FILTER_ATTRIBUTES_FROM_COMMIT` is specified.
147
+ */
148
+ git_oid attr_commit_id;
127
149
  } git_blob_filter_options;
128
150
 
129
151
  #define GIT_BLOB_FILTER_OPTIONS_VERSION 1
130
152
  #define GIT_BLOB_FILTER_OPTIONS_INIT {GIT_BLOB_FILTER_OPTIONS_VERSION, GIT_BLOB_FILTER_CHECK_FOR_BINARY}
131
153
 
154
+ /**
155
+ * Initialize git_blob_filter_options structure
156
+ *
157
+ * Initializes a `git_blob_filter_options` with default values. Equivalent
158
+ * to creating an instance with `GIT_BLOB_FILTER_OPTIONS_INIT`.
159
+ *
160
+ * @param opts The `git_blob_filter_options` struct to initialize.
161
+ * @param version The struct version; pass `GIT_BLOB_FILTER_OPTIONS_VERSION`.
162
+ * @return Zero on success; -1 on failure.
163
+ */
164
+ GIT_EXTERN(int) git_blob_filter_options_init(git_blob_filter_options *opts, unsigned int version);
165
+
132
166
  /**
133
167
  * Get a buffer with the filtered content of a blob.
134
168
  *
@@ -229,7 +263,7 @@ GIT_EXTERN(int) git_blob_create_from_stream_commit(
229
263
  * Write an in-memory buffer to the ODB as a blob
230
264
  *
231
265
  * @param id return the id of the written blob
232
- * @param repo repository where to blob will be written
266
+ * @param repo repository where the blob will be written
233
267
  * @param buffer data to be written into the blob
234
268
  * @param len length of the data
235
269
  * @return 0 or an error code
@@ -304,6 +304,31 @@ GIT_EXTERN(int) git_branch_remote_name(
304
304
  */
305
305
  GIT_EXTERN(int) git_branch_upstream_remote(git_buf *buf, git_repository *repo, const char *refname);
306
306
 
307
+ /**
308
+ * Retrieve the upstream merge of a local branch
309
+ *
310
+ * This will return the currently configured "branch.*.merge" for a given
311
+ * branch. This branch must be local.
312
+ *
313
+ * @param buf the buffer into which to write the name
314
+ * @param repo the repository in which to look
315
+ * @param refname the full name of the branch
316
+ * @return 0 or an error code
317
+ */
318
+ GIT_EXTERN(int) git_branch_upstream_merge(git_buf *buf, git_repository *repo, const char *refname);
319
+
320
+ /**
321
+ * Determine whether a branch name is valid, meaning that (when prefixed
322
+ * with `refs/heads/`) that it is a valid reference name, and that any
323
+ * additional branch name restrictions are imposed (eg, it cannot start
324
+ * with a `-`).
325
+ *
326
+ * @param valid output pointer to set with validity of given branch name
327
+ * @param name a branch name to test
328
+ * @return 0 on success or an error code
329
+ */
330
+ GIT_EXTERN(int) git_branch_name_is_valid(int *valid, const char *name);
331
+
307
332
  /** @} */
308
333
  GIT_END_DECL
309
334
  #endif
@@ -8,6 +8,7 @@
8
8
  #define INCLUDE_git_cert_h__
9
9
 
10
10
  #include "common.h"
11
+ #include "types.h"
11
12
 
12
13
  /**
13
14
  * @file git2/cert.h
@@ -80,8 +81,27 @@ typedef enum {
80
81
  GIT_CERT_SSH_SHA1 = (1 << 1),
81
82
  /** SHA-256 is available */
82
83
  GIT_CERT_SSH_SHA256 = (1 << 2),
84
+ /** Raw hostkey is available */
85
+ GIT_CERT_SSH_RAW = (1 << 3),
83
86
  } git_cert_ssh_t;
84
87
 
88
+ typedef enum {
89
+ /** The raw key is of an unknown type. */
90
+ GIT_CERT_SSH_RAW_TYPE_UNKNOWN = 0,
91
+ /** The raw key is an RSA key. */
92
+ GIT_CERT_SSH_RAW_TYPE_RSA = 1,
93
+ /** The raw key is a DSS key. */
94
+ GIT_CERT_SSH_RAW_TYPE_DSS = 2,
95
+ /** The raw key is a ECDSA 256 key. */
96
+ GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_256 = 3,
97
+ /** The raw key is a ECDSA 384 key. */
98
+ GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_384 = 4,
99
+ /** The raw key is a ECDSA 521 key. */
100
+ GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_521 = 5,
101
+ /** The raw key is a ED25519 key. */
102
+ GIT_CERT_SSH_RAW_TYPE_KEY_ED25519 = 6
103
+ } git_cert_ssh_raw_type_t;
104
+
85
105
  /**
86
106
  * Hostkey information taken from libssh2
87
107
  */
@@ -89,28 +109,45 @@ typedef struct {
89
109
  git_cert parent; /**< The parent cert */
90
110
 
91
111
  /**
92
- * A hostkey type from libssh2, either
93
- * `GIT_CERT_SSH_MD5` or `GIT_CERT_SSH_SHA1`
112
+ * A bitmask containing the available fields.
94
113
  */
95
114
  git_cert_ssh_t type;
96
115
 
97
116
  /**
98
- * Hostkey hash. If type has `GIT_CERT_SSH_MD5` set, this will
117
+ * Hostkey hash. If `type` has `GIT_CERT_SSH_MD5` set, this will
99
118
  * have the MD5 hash of the hostkey.
100
119
  */
101
120
  unsigned char hash_md5[16];
102
121
 
103
122
  /**
104
- * Hostkey hash. If type has `GIT_CERT_SSH_SHA1` set, this will
123
+ * Hostkey hash. If `type` has `GIT_CERT_SSH_SHA1` set, this will
105
124
  * have the SHA-1 hash of the hostkey.
106
125
  */
107
126
  unsigned char hash_sha1[20];
108
127
 
109
128
  /**
110
- * Hostkey hash. If type has `GIT_CERT_SSH_SHA256` set, this will
129
+ * Hostkey hash. If `type` has `GIT_CERT_SSH_SHA256` set, this will
111
130
  * have the SHA-256 hash of the hostkey.
112
131
  */
113
132
  unsigned char hash_sha256[32];
133
+
134
+ /**
135
+ * Raw hostkey type. If `type` has `GIT_CERT_SSH_RAW` set, this will
136
+ * have the type of the raw hostkey.
137
+ */
138
+ git_cert_ssh_raw_type_t raw_type;
139
+
140
+ /**
141
+ * Pointer to the raw hostkey. If `type` has `GIT_CERT_SSH_RAW` set,
142
+ * this will have the raw contents of the hostkey.
143
+ */
144
+ const char *hostkey;
145
+
146
+ /**
147
+ * Raw hostkey length. If `type` has `GIT_CERT_SSH_RAW` set, this will
148
+ * have the length of the raw contents of the hostkey.
149
+ */
150
+ size_t hostkey_len;
114
151
  } git_cert_hostkey;
115
152
 
116
153
  /**
@@ -177,6 +177,12 @@ typedef enum {
177
177
  /** Normally checkout writes the index upon completion; this prevents that. */
178
178
  GIT_CHECKOUT_DONT_WRITE_INDEX = (1u << 23),
179
179
 
180
+ /**
181
+ * Show what would be done by a checkout. Stop after sending
182
+ * notifications; don't update the working directory or index.
183
+ */
184
+ GIT_CHECKOUT_DRY_RUN = (1u << 24),
185
+
180
186
  /**
181
187
  * THE FOLLOWING OPTIONS ARE NOT YET IMPLEMENTED
182
188
  */
@@ -194,18 +200,6 @@ typedef enum {
194
200
  * Checkout will invoke an options notification callback (`notify_cb`) for
195
201
  * certain cases - you pick which ones via `notify_flags`:
196
202
  *
197
- * - GIT_CHECKOUT_NOTIFY_CONFLICT invokes checkout on conflicting paths.
198
- *
199
- * - GIT_CHECKOUT_NOTIFY_DIRTY notifies about "dirty" files, i.e. those that
200
- * do not need an update but no longer match the baseline. Core git
201
- * displays these files when checkout runs, but won't stop the checkout.
202
- *
203
- * - GIT_CHECKOUT_NOTIFY_UPDATED sends notification for any file changed.
204
- *
205
- * - GIT_CHECKOUT_NOTIFY_UNTRACKED notifies about untracked files.
206
- *
207
- * - GIT_CHECKOUT_NOTIFY_IGNORED notifies about ignored files.
208
- *
209
203
  * Returning a non-zero value from this callback will cancel the checkout.
210
204
  * The non-zero return value will be propagated back and returned by the
211
205
  * git_checkout_... call.
@@ -216,10 +210,32 @@ typedef enum {
216
210
  */
217
211
  typedef enum {
218
212
  GIT_CHECKOUT_NOTIFY_NONE = 0,
213
+
214
+ /**
215
+ * Invokes checkout on conflicting paths.
216
+ */
219
217
  GIT_CHECKOUT_NOTIFY_CONFLICT = (1u << 0),
218
+
219
+ /**
220
+ * Notifies about "dirty" files, i.e. those that do not need an update
221
+ * but no longer match the baseline. Core git displays these files when
222
+ * checkout runs, but won't stop the checkout.
223
+ */
220
224
  GIT_CHECKOUT_NOTIFY_DIRTY = (1u << 1),
225
+
226
+ /**
227
+ * Sends notification for any file changed.
228
+ */
221
229
  GIT_CHECKOUT_NOTIFY_UPDATED = (1u << 2),
230
+
231
+ /**
232
+ * Notifies about untracked files.
233
+ */
222
234
  GIT_CHECKOUT_NOTIFY_UNTRACKED = (1u << 3),
235
+
236
+ /**
237
+ * Notifies about ignored files.
238
+ */
223
239
  GIT_CHECKOUT_NOTIFY_IGNORED = (1u << 4),
224
240
 
225
241
  GIT_CHECKOUT_NOTIFY_ALL = 0x0FFFFu