rugged 0.27.9 → 0.27.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (420) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rugged/version.rb +1 -1
  3. data/vendor/libgit2/AUTHORS +1 -0
  4. data/vendor/libgit2/CMakeLists.txt +98 -54
  5. data/vendor/libgit2/COPYING +28 -0
  6. data/vendor/libgit2/cmake/Modules/AddCFlagIfSupported.cmake +15 -1
  7. data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +9 -8
  8. data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
  9. data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
  10. data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +28 -0
  11. data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +38 -0
  12. data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +37 -0
  13. data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
  14. data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +6 -0
  15. data/vendor/libgit2/cmake/Modules/FindmbedTLS.cmake +93 -0
  16. data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +110 -0
  17. data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +53 -0
  18. data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +124 -0
  19. data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +66 -0
  20. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +2 -0
  21. data/vendor/libgit2/deps/http-parser/{LICENSE-MIT → COPYING} +0 -0
  22. data/vendor/libgit2/deps/http-parser/http_parser.c +11 -6
  23. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +21 -0
  24. data/vendor/libgit2/deps/ntlmclient/compat.h +33 -0
  25. data/vendor/libgit2/deps/ntlmclient/crypt.h +64 -0
  26. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +120 -0
  27. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +18 -0
  28. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +145 -0
  29. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +18 -0
  30. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +130 -0
  31. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +21 -0
  32. data/vendor/libgit2/deps/ntlmclient/ntlm.c +1420 -0
  33. data/vendor/libgit2/deps/ntlmclient/ntlm.h +174 -0
  34. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +320 -0
  35. data/vendor/libgit2/deps/ntlmclient/unicode.h +36 -0
  36. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +445 -0
  37. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +201 -0
  38. data/vendor/libgit2/deps/ntlmclient/utf8.h +1257 -0
  39. data/vendor/libgit2/deps/ntlmclient/util.c +21 -0
  40. data/vendor/libgit2/deps/ntlmclient/util.h +14 -0
  41. data/vendor/libgit2/deps/pcre/CMakeLists.txt +140 -0
  42. data/vendor/libgit2/deps/pcre/COPYING +5 -0
  43. data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +22 -0
  44. data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +17 -0
  45. data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +58 -0
  46. data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +29 -0
  47. data/vendor/libgit2/deps/pcre/config.h.in +57 -0
  48. data/vendor/libgit2/deps/pcre/pcre.h +641 -0
  49. data/vendor/libgit2/deps/pcre/pcre_byte_order.c +319 -0
  50. data/vendor/libgit2/deps/pcre/pcre_chartables.c +198 -0
  51. data/vendor/libgit2/deps/pcre/pcre_compile.c +9800 -0
  52. data/vendor/libgit2/deps/pcre/pcre_config.c +190 -0
  53. data/vendor/libgit2/deps/pcre/pcre_dfa_exec.c +3676 -0
  54. data/vendor/libgit2/deps/pcre/pcre_exec.c +7173 -0
  55. data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +245 -0
  56. data/vendor/libgit2/deps/pcre/pcre_get.c +669 -0
  57. data/vendor/libgit2/deps/pcre/pcre_globals.c +86 -0
  58. data/vendor/libgit2/deps/pcre/pcre_internal.h +2787 -0
  59. data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +11913 -0
  60. data/vendor/libgit2/deps/pcre/pcre_maketables.c +156 -0
  61. data/vendor/libgit2/deps/pcre/pcre_newline.c +210 -0
  62. data/vendor/libgit2/deps/pcre/pcre_ord2utf8.c +94 -0
  63. data/vendor/libgit2/deps/pcre/pcre_printint.c +834 -0
  64. data/vendor/libgit2/deps/pcre/pcre_refcount.c +92 -0
  65. data/vendor/libgit2/deps/pcre/pcre_string_utils.c +211 -0
  66. data/vendor/libgit2/deps/pcre/pcre_study.c +1686 -0
  67. data/vendor/libgit2/deps/pcre/pcre_tables.c +727 -0
  68. data/vendor/libgit2/deps/pcre/pcre_ucd.c +3644 -0
  69. data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +301 -0
  70. data/vendor/libgit2/deps/pcre/pcre_version.c +98 -0
  71. data/vendor/libgit2/deps/pcre/pcre_xclass.c +268 -0
  72. data/vendor/libgit2/deps/pcre/pcreposix.c +421 -0
  73. data/vendor/libgit2/deps/pcre/pcreposix.h +117 -0
  74. data/vendor/libgit2/deps/pcre/ucp.h +224 -0
  75. data/vendor/libgit2/deps/winhttp/COPYING.GPL +993 -0
  76. data/vendor/libgit2/deps/winhttp/COPYING.LGPL +502 -0
  77. data/vendor/libgit2/deps/zlib/CMakeLists.txt +1 -0
  78. data/vendor/libgit2/deps/zlib/COPYING +27 -0
  79. data/vendor/libgit2/deps/zlib/adler32.c +0 -7
  80. data/vendor/libgit2/deps/zlib/crc32.c +0 -7
  81. data/vendor/libgit2/include/git2.h +5 -0
  82. data/vendor/libgit2/include/git2/annotated_commit.h +9 -0
  83. data/vendor/libgit2/include/git2/apply.h +149 -0
  84. data/vendor/libgit2/include/git2/attr.h +38 -20
  85. data/vendor/libgit2/include/git2/blame.h +42 -25
  86. data/vendor/libgit2/include/git2/blob.h +45 -13
  87. data/vendor/libgit2/include/git2/branch.h +1 -1
  88. data/vendor/libgit2/include/git2/buffer.h +22 -16
  89. data/vendor/libgit2/include/git2/cert.h +135 -0
  90. data/vendor/libgit2/include/git2/checkout.h +65 -32
  91. data/vendor/libgit2/include/git2/cherrypick.h +9 -7
  92. data/vendor/libgit2/include/git2/clone.h +12 -10
  93. data/vendor/libgit2/include/git2/commit.h +53 -3
  94. data/vendor/libgit2/include/git2/common.h +60 -8
  95. data/vendor/libgit2/include/git2/config.h +30 -19
  96. data/vendor/libgit2/include/git2/cred.h +308 -0
  97. data/vendor/libgit2/include/git2/deprecated.h +493 -0
  98. data/vendor/libgit2/include/git2/describe.h +32 -9
  99. data/vendor/libgit2/include/git2/diff.h +208 -156
  100. data/vendor/libgit2/include/git2/errors.h +54 -46
  101. data/vendor/libgit2/include/git2/filter.h +8 -0
  102. data/vendor/libgit2/include/git2/ignore.h +2 -2
  103. data/vendor/libgit2/include/git2/index.h +74 -52
  104. data/vendor/libgit2/include/git2/indexer.h +76 -6
  105. data/vendor/libgit2/include/git2/mailmap.h +115 -0
  106. data/vendor/libgit2/include/git2/merge.h +35 -18
  107. data/vendor/libgit2/include/git2/net.h +0 -5
  108. data/vendor/libgit2/include/git2/notes.h +1 -1
  109. data/vendor/libgit2/include/git2/object.h +17 -29
  110. data/vendor/libgit2/include/git2/odb.h +12 -11
  111. data/vendor/libgit2/include/git2/odb_backend.h +10 -9
  112. data/vendor/libgit2/include/git2/oid.h +2 -2
  113. data/vendor/libgit2/include/git2/pack.h +14 -3
  114. data/vendor/libgit2/include/git2/proxy.h +14 -8
  115. data/vendor/libgit2/include/git2/rebase.h +53 -6
  116. data/vendor/libgit2/include/git2/refs.h +33 -15
  117. data/vendor/libgit2/include/git2/refspec.h +17 -0
  118. data/vendor/libgit2/include/git2/remote.h +123 -24
  119. data/vendor/libgit2/include/git2/repository.h +76 -39
  120. data/vendor/libgit2/include/git2/revert.h +6 -4
  121. data/vendor/libgit2/include/git2/revwalk.h +7 -7
  122. data/vendor/libgit2/include/git2/signature.h +2 -2
  123. data/vendor/libgit2/include/git2/stash.h +15 -12
  124. data/vendor/libgit2/include/git2/status.h +33 -20
  125. data/vendor/libgit2/include/git2/submodule.h +30 -12
  126. data/vendor/libgit2/include/git2/sys/alloc.h +101 -0
  127. data/vendor/libgit2/include/git2/sys/commit.h +1 -1
  128. data/vendor/libgit2/include/git2/sys/config.h +13 -13
  129. data/vendor/libgit2/include/git2/sys/cred.h +90 -0
  130. data/vendor/libgit2/include/git2/sys/filter.h +6 -6
  131. data/vendor/libgit2/include/git2/sys/index.h +3 -0
  132. data/vendor/libgit2/include/git2/sys/mempack.h +35 -35
  133. data/vendor/libgit2/include/git2/sys/merge.h +9 -4
  134. data/vendor/libgit2/include/git2/sys/odb_backend.h +66 -22
  135. data/vendor/libgit2/include/git2/sys/path.h +64 -0
  136. data/vendor/libgit2/include/git2/sys/refdb_backend.h +76 -40
  137. data/vendor/libgit2/include/git2/sys/repository.h +5 -1
  138. data/vendor/libgit2/include/git2/sys/stream.h +92 -12
  139. data/vendor/libgit2/include/git2/sys/transport.h +129 -83
  140. data/vendor/libgit2/include/git2/tag.h +13 -4
  141. data/vendor/libgit2/include/git2/trace.h +2 -2
  142. data/vendor/libgit2/include/git2/transaction.h +1 -0
  143. data/vendor/libgit2/include/git2/transport.h +11 -311
  144. data/vendor/libgit2/include/git2/tree.h +4 -4
  145. data/vendor/libgit2/include/git2/types.h +33 -111
  146. data/vendor/libgit2/include/git2/version.h +4 -4
  147. data/vendor/libgit2/include/git2/worktree.h +48 -13
  148. data/vendor/libgit2/src/CMakeLists.txt +96 -164
  149. data/vendor/libgit2/src/alloc.c +43 -0
  150. data/vendor/libgit2/src/alloc.h +40 -0
  151. data/vendor/libgit2/src/allocators/stdalloc.c +119 -0
  152. data/vendor/libgit2/src/{streams/curl.h → allocators/stdalloc.h} +5 -5
  153. data/vendor/libgit2/src/allocators/win32_crtdbg.c +118 -0
  154. data/vendor/libgit2/src/{transports/cred.h → allocators/win32_crtdbg.h} +5 -4
  155. data/vendor/libgit2/src/annotated_commit.c +15 -8
  156. data/vendor/libgit2/src/apply.c +537 -31
  157. data/vendor/libgit2/src/apply.h +3 -1
  158. data/vendor/libgit2/src/array.h +2 -2
  159. data/vendor/libgit2/src/attr.c +81 -75
  160. data/vendor/libgit2/src/attr_file.c +207 -121
  161. data/vendor/libgit2/src/attr_file.h +9 -9
  162. data/vendor/libgit2/src/attrcache.c +51 -53
  163. data/vendor/libgit2/src/attrcache.h +2 -1
  164. data/vendor/libgit2/src/blame.c +47 -20
  165. data/vendor/libgit2/src/blame.h +2 -1
  166. data/vendor/libgit2/src/blame_git.c +37 -20
  167. data/vendor/libgit2/src/blob.c +128 -42
  168. data/vendor/libgit2/src/blob.h +19 -2
  169. data/vendor/libgit2/src/branch.c +67 -43
  170. data/vendor/libgit2/src/buf_text.c +7 -6
  171. data/vendor/libgit2/src/buffer.c +69 -57
  172. data/vendor/libgit2/src/buffer.h +1 -1
  173. data/vendor/libgit2/src/cache.c +38 -45
  174. data/vendor/libgit2/src/cache.h +3 -3
  175. data/vendor/libgit2/src/cc-compat.h +20 -3
  176. data/vendor/libgit2/src/checkout.c +109 -90
  177. data/vendor/libgit2/src/cherrypick.c +15 -9
  178. data/vendor/libgit2/src/clone.c +49 -27
  179. data/vendor/libgit2/src/clone.h +4 -0
  180. data/vendor/libgit2/src/commit.c +117 -49
  181. data/vendor/libgit2/src/commit.h +7 -0
  182. data/vendor/libgit2/src/commit_list.c +30 -78
  183. data/vendor/libgit2/src/commit_list.h +2 -2
  184. data/vendor/libgit2/src/common.h +27 -91
  185. data/vendor/libgit2/src/config.c +194 -176
  186. data/vendor/libgit2/src/config.h +8 -20
  187. data/vendor/libgit2/src/config_backend.h +96 -0
  188. data/vendor/libgit2/src/config_cache.c +41 -35
  189. data/vendor/libgit2/src/config_entries.c +229 -0
  190. data/vendor/libgit2/src/config_entries.h +24 -0
  191. data/vendor/libgit2/src/config_file.c +439 -753
  192. data/vendor/libgit2/src/config_mem.c +220 -0
  193. data/vendor/libgit2/src/config_parse.c +114 -63
  194. data/vendor/libgit2/src/config_parse.h +17 -16
  195. data/vendor/libgit2/src/config_snapshot.c +206 -0
  196. data/vendor/libgit2/src/crlf.c +219 -190
  197. data/vendor/libgit2/src/delta.c +25 -18
  198. data/vendor/libgit2/src/describe.c +42 -41
  199. data/vendor/libgit2/src/diff.c +53 -68
  200. data/vendor/libgit2/src/diff.h +2 -1
  201. data/vendor/libgit2/src/diff_driver.c +47 -49
  202. data/vendor/libgit2/src/diff_file.c +19 -17
  203. data/vendor/libgit2/src/diff_file.h +1 -1
  204. data/vendor/libgit2/src/diff_generate.c +162 -106
  205. data/vendor/libgit2/src/diff_generate.h +3 -3
  206. data/vendor/libgit2/src/diff_parse.c +4 -4
  207. data/vendor/libgit2/src/diff_print.c +42 -30
  208. data/vendor/libgit2/src/diff_stats.c +22 -7
  209. data/vendor/libgit2/src/diff_tform.c +16 -16
  210. data/vendor/libgit2/src/diff_xdiff.c +15 -3
  211. data/vendor/libgit2/src/errors.c +51 -39
  212. data/vendor/libgit2/src/errors.h +81 -0
  213. data/vendor/libgit2/src/features.h.in +11 -3
  214. data/vendor/libgit2/src/fetch.c +10 -5
  215. data/vendor/libgit2/src/fetchhead.c +17 -17
  216. data/vendor/libgit2/src/filebuf.c +32 -36
  217. data/vendor/libgit2/src/filebuf.h +2 -2
  218. data/vendor/libgit2/src/filter.c +46 -38
  219. data/vendor/libgit2/src/filter.h +0 -10
  220. data/vendor/libgit2/src/{fileops.c → futils.c} +80 -73
  221. data/vendor/libgit2/src/{fileops.h → futils.h} +6 -6
  222. data/vendor/libgit2/src/global.c +48 -63
  223. data/vendor/libgit2/src/global.h +0 -2
  224. data/vendor/libgit2/src/hash.c +61 -0
  225. data/vendor/libgit2/src/hash.h +20 -19
  226. data/vendor/libgit2/src/hash/sha1.h +38 -0
  227. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +48 -0
  228. data/vendor/libgit2/src/hash/sha1/collisiondetect.h +19 -0
  229. data/vendor/libgit2/src/hash/{hash_common_crypto.h → sha1/common_crypto.c} +17 -17
  230. data/vendor/libgit2/src/hash/sha1/common_crypto.h +19 -0
  231. data/vendor/libgit2/src/hash/{hash_generic.c → sha1/generic.c} +22 -10
  232. data/vendor/libgit2/src/hash/{hash_generic.h → sha1/generic.h} +4 -10
  233. data/vendor/libgit2/src/hash/sha1/mbedtls.c +46 -0
  234. data/vendor/libgit2/src/hash/sha1/mbedtls.h +19 -0
  235. data/vendor/libgit2/src/hash/sha1/openssl.c +59 -0
  236. data/vendor/libgit2/src/hash/sha1/openssl.h +19 -0
  237. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.c +14 -3
  238. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.h +0 -0
  239. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.c +0 -0
  240. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.h +0 -0
  241. data/vendor/libgit2/src/hash/{hash_win32.c → sha1/win32.c} +47 -37
  242. data/vendor/libgit2/src/hash/{hash_win32.h → sha1/win32.h} +6 -19
  243. data/vendor/libgit2/src/hashsig.c +5 -5
  244. data/vendor/libgit2/src/idxmap.c +107 -61
  245. data/vendor/libgit2/src/idxmap.h +153 -31
  246. data/vendor/libgit2/src/ignore.c +43 -47
  247. data/vendor/libgit2/src/index.c +337 -232
  248. data/vendor/libgit2/src/index.h +17 -1
  249. data/vendor/libgit2/src/indexer.c +346 -175
  250. data/vendor/libgit2/src/integer.h +71 -26
  251. data/vendor/libgit2/src/iterator.c +142 -70
  252. data/vendor/libgit2/src/iterator.h +15 -0
  253. data/vendor/libgit2/src/khash.h +3 -1
  254. data/vendor/libgit2/src/mailmap.c +485 -0
  255. data/vendor/libgit2/src/mailmap.h +35 -0
  256. data/vendor/libgit2/src/map.h +1 -1
  257. data/vendor/libgit2/src/merge.c +144 -100
  258. data/vendor/libgit2/src/merge_driver.c +11 -11
  259. data/vendor/libgit2/src/merge_file.c +2 -2
  260. data/vendor/libgit2/src/mwindow.c +24 -29
  261. data/vendor/libgit2/src/mwindow.h +4 -4
  262. data/vendor/libgit2/src/net.c +184 -0
  263. data/vendor/libgit2/src/net.h +36 -0
  264. data/vendor/libgit2/src/netops.c +55 -156
  265. data/vendor/libgit2/src/netops.h +3 -23
  266. data/vendor/libgit2/src/notes.c +16 -11
  267. data/vendor/libgit2/src/object.c +120 -69
  268. data/vendor/libgit2/src/object.h +22 -9
  269. data/vendor/libgit2/src/object_api.c +8 -8
  270. data/vendor/libgit2/src/odb.c +116 -93
  271. data/vendor/libgit2/src/odb.h +8 -7
  272. data/vendor/libgit2/src/odb_loose.c +62 -55
  273. data/vendor/libgit2/src/odb_mempack.c +21 -34
  274. data/vendor/libgit2/src/odb_pack.c +18 -14
  275. data/vendor/libgit2/src/offmap.c +53 -35
  276. data/vendor/libgit2/src/offmap.h +108 -21
  277. data/vendor/libgit2/src/oid.c +12 -7
  278. data/vendor/libgit2/src/oidmap.c +49 -47
  279. data/vendor/libgit2/src/oidmap.h +101 -24
  280. data/vendor/libgit2/src/pack-objects.c +88 -87
  281. data/vendor/libgit2/src/pack-objects.h +2 -8
  282. data/vendor/libgit2/src/pack.c +99 -101
  283. data/vendor/libgit2/src/pack.h +17 -19
  284. data/vendor/libgit2/src/parse.c +10 -0
  285. data/vendor/libgit2/src/parse.h +3 -3
  286. data/vendor/libgit2/src/patch.c +4 -4
  287. data/vendor/libgit2/src/patch_generate.c +20 -20
  288. data/vendor/libgit2/src/patch_parse.c +151 -63
  289. data/vendor/libgit2/src/path.c +169 -125
  290. data/vendor/libgit2/src/path.h +3 -71
  291. data/vendor/libgit2/src/pathspec.c +19 -19
  292. data/vendor/libgit2/src/pool.c +26 -22
  293. data/vendor/libgit2/src/pool.h +7 -7
  294. data/vendor/libgit2/src/posix.c +10 -10
  295. data/vendor/libgit2/src/posix.h +12 -1
  296. data/vendor/libgit2/src/proxy.c +8 -3
  297. data/vendor/libgit2/src/push.c +37 -31
  298. data/vendor/libgit2/src/push.h +2 -1
  299. data/vendor/libgit2/src/reader.c +265 -0
  300. data/vendor/libgit2/src/reader.h +107 -0
  301. data/vendor/libgit2/src/rebase.c +115 -59
  302. data/vendor/libgit2/src/refdb.c +15 -3
  303. data/vendor/libgit2/src/refdb_fs.c +381 -254
  304. data/vendor/libgit2/src/reflog.c +13 -15
  305. data/vendor/libgit2/src/refs.c +118 -88
  306. data/vendor/libgit2/src/refs.h +5 -3
  307. data/vendor/libgit2/src/refspec.c +56 -37
  308. data/vendor/libgit2/src/refspec.h +1 -1
  309. data/vendor/libgit2/src/regexp.c +221 -0
  310. data/vendor/libgit2/src/regexp.h +97 -0
  311. data/vendor/libgit2/src/remote.c +266 -215
  312. data/vendor/libgit2/src/remote.h +11 -2
  313. data/vendor/libgit2/src/repository.c +280 -225
  314. data/vendor/libgit2/src/repository.h +52 -40
  315. data/vendor/libgit2/src/reset.c +8 -8
  316. data/vendor/libgit2/src/revert.c +14 -9
  317. data/vendor/libgit2/src/revparse.c +47 -48
  318. data/vendor/libgit2/src/revwalk.c +120 -57
  319. data/vendor/libgit2/src/revwalk.h +22 -1
  320. data/vendor/libgit2/src/settings.c +47 -10
  321. data/vendor/libgit2/src/signature.c +11 -11
  322. data/vendor/libgit2/src/sortedcache.c +22 -36
  323. data/vendor/libgit2/src/sortedcache.h +1 -1
  324. data/vendor/libgit2/src/stash.c +125 -99
  325. data/vendor/libgit2/src/status.c +28 -22
  326. data/vendor/libgit2/src/stream.h +17 -2
  327. data/vendor/libgit2/src/streams/mbedtls.c +483 -0
  328. data/vendor/libgit2/src/streams/mbedtls.h +23 -0
  329. data/vendor/libgit2/src/streams/openssl.c +224 -114
  330. data/vendor/libgit2/src/streams/openssl.h +4 -108
  331. data/vendor/libgit2/src/streams/registry.c +118 -0
  332. data/vendor/libgit2/src/streams/registry.h +19 -0
  333. data/vendor/libgit2/src/streams/socket.c +55 -30
  334. data/vendor/libgit2/src/streams/stransport.c +57 -32
  335. data/vendor/libgit2/src/streams/stransport.h +5 -0
  336. data/vendor/libgit2/src/streams/tls.c +50 -19
  337. data/vendor/libgit2/src/streams/tls.h +12 -4
  338. data/vendor/libgit2/src/strmap.c +47 -74
  339. data/vendor/libgit2/src/strmap.h +108 -33
  340. data/vendor/libgit2/src/submodule.c +272 -216
  341. data/vendor/libgit2/src/submodule.h +1 -1
  342. data/vendor/libgit2/src/sysdir.c +29 -19
  343. data/vendor/libgit2/src/tag.c +41 -28
  344. data/vendor/libgit2/src/tag.h +2 -1
  345. data/vendor/libgit2/src/trace.c +2 -2
  346. data/vendor/libgit2/src/trace.h +3 -3
  347. data/vendor/libgit2/src/trailer.c +52 -38
  348. data/vendor/libgit2/src/transaction.c +30 -29
  349. data/vendor/libgit2/src/transport.c +5 -5
  350. data/vendor/libgit2/src/transports/auth.c +15 -11
  351. data/vendor/libgit2/src/transports/auth.h +10 -3
  352. data/vendor/libgit2/src/transports/auth_negotiate.c +33 -18
  353. data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
  354. data/vendor/libgit2/src/transports/auth_ntlm.c +223 -0
  355. data/vendor/libgit2/src/transports/auth_ntlm.h +35 -0
  356. data/vendor/libgit2/src/transports/cred.c +24 -24
  357. data/vendor/libgit2/src/transports/git.c +26 -31
  358. data/vendor/libgit2/src/transports/http.c +881 -348
  359. data/vendor/libgit2/src/transports/http.h +2 -0
  360. data/vendor/libgit2/src/transports/local.c +35 -35
  361. data/vendor/libgit2/src/transports/smart.c +70 -47
  362. data/vendor/libgit2/src/transports/smart.h +3 -4
  363. data/vendor/libgit2/src/transports/smart_pkt.c +43 -40
  364. data/vendor/libgit2/src/transports/smart_protocol.c +96 -116
  365. data/vendor/libgit2/src/transports/ssh.c +77 -66
  366. data/vendor/libgit2/src/transports/winhttp.c +318 -314
  367. data/vendor/libgit2/src/tree-cache.c +19 -12
  368. data/vendor/libgit2/src/tree.c +103 -142
  369. data/vendor/libgit2/src/tree.h +1 -12
  370. data/vendor/libgit2/src/unix/map.c +3 -3
  371. data/vendor/libgit2/src/unix/posix.h +1 -11
  372. data/vendor/libgit2/src/userdiff.h +3 -1
  373. data/vendor/libgit2/src/util.c +70 -56
  374. data/vendor/libgit2/src/util.h +28 -156
  375. data/vendor/libgit2/src/vector.c +4 -4
  376. data/vendor/libgit2/src/wildmatch.c +320 -0
  377. data/vendor/libgit2/src/wildmatch.h +23 -0
  378. data/vendor/libgit2/src/win32/dir.c +3 -3
  379. data/vendor/libgit2/src/win32/findfile.c +3 -3
  380. data/vendor/libgit2/src/win32/map.c +9 -11
  381. data/vendor/libgit2/src/win32/msvc-compat.h +6 -0
  382. data/vendor/libgit2/src/win32/path_w32.c +113 -9
  383. data/vendor/libgit2/src/win32/path_w32.h +18 -29
  384. data/vendor/libgit2/src/win32/posix.h +1 -4
  385. data/vendor/libgit2/src/win32/posix_w32.c +70 -45
  386. data/vendor/libgit2/src/win32/precompiled.h +0 -2
  387. data/vendor/libgit2/src/win32/thread.c +5 -10
  388. data/vendor/libgit2/src/win32/w32_buffer.c +9 -5
  389. data/vendor/libgit2/src/win32/w32_common.h +39 -0
  390. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +3 -2
  391. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +26 -75
  392. data/vendor/libgit2/src/win32/w32_stack.c +6 -11
  393. data/vendor/libgit2/src/win32/w32_stack.h +3 -3
  394. data/vendor/libgit2/src/win32/w32_util.c +27 -64
  395. data/vendor/libgit2/src/win32/w32_util.h +5 -49
  396. data/vendor/libgit2/src/worktree.c +95 -60
  397. data/vendor/libgit2/src/worktree.h +2 -0
  398. data/vendor/libgit2/src/xdiff/xdiffi.c +7 -5
  399. data/vendor/libgit2/src/xdiff/xhistogram.c +1 -1
  400. data/vendor/libgit2/src/xdiff/xmerge.c +27 -15
  401. data/vendor/libgit2/src/xdiff/xpatience.c +3 -0
  402. data/vendor/libgit2/src/zstream.c +4 -4
  403. metadata +122 -33
  404. data/vendor/libgit2/deps/regex/CMakeLists.txt +0 -2
  405. data/vendor/libgit2/deps/regex/config.h +0 -7
  406. data/vendor/libgit2/deps/regex/regcomp.c +0 -3857
  407. data/vendor/libgit2/deps/regex/regex.c +0 -92
  408. data/vendor/libgit2/deps/regex/regex.h +0 -582
  409. data/vendor/libgit2/deps/regex/regex_internal.c +0 -1744
  410. data/vendor/libgit2/deps/regex/regex_internal.h +0 -819
  411. data/vendor/libgit2/deps/regex/regexec.c +0 -4369
  412. data/vendor/libgit2/include/git2/inttypes.h +0 -309
  413. data/vendor/libgit2/include/git2/sys/time.h +0 -31
  414. data/vendor/libgit2/libgit2.pc.in +0 -13
  415. data/vendor/libgit2/src/config_file.h +0 -73
  416. data/vendor/libgit2/src/fnmatch.c +0 -248
  417. data/vendor/libgit2/src/fnmatch.h +0 -48
  418. data/vendor/libgit2/src/hash/hash_collisiondetect.h +0 -47
  419. data/vendor/libgit2/src/hash/hash_openssl.h +0 -59
  420. data/vendor/libgit2/src/streams/curl.c +0 -385
@@ -74,32 +74,30 @@ int git_reflog_write(git_reflog *reflog)
74
74
 
75
75
  int git_reflog_append(git_reflog *reflog, const git_oid *new_oid, const git_signature *committer, const char *msg)
76
76
  {
77
- git_reflog_entry *entry;
78
77
  const git_reflog_entry *previous;
79
- const char *newline;
78
+ git_reflog_entry *entry;
80
79
 
81
80
  assert(reflog && new_oid && committer);
82
81
 
83
82
  entry = git__calloc(1, sizeof(git_reflog_entry));
84
- GITERR_CHECK_ALLOC(entry);
83
+ GIT_ERROR_CHECK_ALLOC(entry);
85
84
 
86
85
  if ((git_signature_dup(&entry->committer, committer)) < 0)
87
86
  goto cleanup;
88
87
 
89
88
  if (msg != NULL) {
90
- if ((entry->msg = git__strdup(msg)) == NULL)
91
- goto cleanup;
89
+ size_t i, msglen = strlen(msg);
92
90
 
93
- newline = strchr(msg, '\n');
94
-
95
- if (newline) {
96
- if (newline[1] != '\0') {
97
- giterr_set(GITERR_INVALID, "reflog message cannot contain newline");
98
- goto cleanup;
99
- }
91
+ if ((entry->msg = git__strndup(msg, msglen)) == NULL)
92
+ goto cleanup;
100
93
 
101
- entry->msg[newline - msg] = '\0';
102
- }
94
+ /*
95
+ * Replace all newlines with spaces, except for
96
+ * the final trailing newline.
97
+ */
98
+ for (i = 0; i < msglen; i++)
99
+ if (entry->msg[i] == '\n')
100
+ entry->msg[i] = ' ';
103
101
  }
104
102
 
105
103
  previous = git_reflog_entry_byindex(reflog, 0);
@@ -194,7 +192,7 @@ int git_reflog_drop(git_reflog *reflog, size_t idx, int rewrite_previous_entry)
194
192
  entry = (git_reflog_entry *)git_reflog_entry_byindex(reflog, idx);
195
193
 
196
194
  if (entry == NULL) {
197
- giterr_set(GITERR_REFERENCE, "no reflog entry at index %"PRIuZ, idx);
195
+ git_error_set(GIT_ERROR_REFERENCE, "no reflog entry at index %"PRIuZ, idx);
198
196
  return GIT_ENOTFOUND;
199
197
  }
200
198
 
@@ -9,7 +9,7 @@
9
9
 
10
10
  #include "hash.h"
11
11
  #include "repository.h"
12
- #include "fileops.h"
12
+ #include "futils.h"
13
13
  #include "filebuf.h"
14
14
  #include "pack.h"
15
15
  #include "reflog.h"
@@ -59,7 +59,7 @@ git_reference *git_reference__alloc_symbolic(
59
59
  if (!ref)
60
60
  return NULL;
61
61
 
62
- ref->type = GIT_REF_SYMBOLIC;
62
+ ref->type = GIT_REFERENCE_SYMBOLIC;
63
63
 
64
64
  if ((ref->target.symbolic = git__strdup(target)) == NULL) {
65
65
  git__free(ref);
@@ -82,7 +82,7 @@ git_reference *git_reference__alloc(
82
82
  if (!ref)
83
83
  return NULL;
84
84
 
85
- ref->type = GIT_REF_OID;
85
+ ref->type = GIT_REFERENCE_DIRECT;
86
86
  git_oid_cpy(&ref->target.oid, oid);
87
87
 
88
88
  if (peel != NULL)
@@ -108,12 +108,12 @@ git_reference *git_reference__set_name(
108
108
 
109
109
  int git_reference_dup(git_reference **dest, git_reference *source)
110
110
  {
111
- if (source->type == GIT_REF_SYMBOLIC)
111
+ if (source->type == GIT_REFERENCE_SYMBOLIC)
112
112
  *dest = git_reference__alloc_symbolic(source->name, source->target.symbolic);
113
113
  else
114
114
  *dest = git_reference__alloc(source->name, &source->target.oid, &source->peel);
115
115
 
116
- GITERR_CHECK_ALLOC(*dest);
116
+ GIT_ERROR_CHECK_ALLOC(*dest);
117
117
 
118
118
  (*dest)->db = source->db;
119
119
  GIT_REFCOUNT_INC((*dest)->db);
@@ -126,7 +126,7 @@ void git_reference_free(git_reference *reference)
126
126
  if (reference == NULL)
127
127
  return;
128
128
 
129
- if (reference->type == GIT_REF_SYMBOLIC)
129
+ if (reference->type == GIT_REFERENCE_SYMBOLIC)
130
130
  git__free(reference->target.symbolic);
131
131
 
132
132
  if (reference->db)
@@ -140,7 +140,7 @@ int git_reference_delete(git_reference *ref)
140
140
  const git_oid *old_id = NULL;
141
141
  const char *old_target = NULL;
142
142
 
143
- if (ref->type == GIT_REF_OID)
143
+ if (ref->type == GIT_REFERENCE_DIRECT)
144
144
  old_id = &ref->target.oid;
145
145
  else
146
146
  old_target = ref->target.symbolic;
@@ -186,14 +186,14 @@ static int reference_normalize_for_repo(
186
186
  bool validate)
187
187
  {
188
188
  int precompose;
189
- unsigned int flags = GIT_REF_FORMAT_ALLOW_ONELEVEL;
189
+ unsigned int flags = GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL;
190
190
 
191
- if (!git_repository__cvar(&precompose, repo, GIT_CVAR_PRECOMPOSE) &&
191
+ if (!git_repository__configmap_lookup(&precompose, repo, GIT_CONFIGMAP_PRECOMPOSE) &&
192
192
  precompose)
193
- flags |= GIT_REF_FORMAT__PRECOMPOSE_UNICODE;
193
+ flags |= GIT_REFERENCE_FORMAT__PRECOMPOSE_UNICODE;
194
194
 
195
195
  if (!validate)
196
- flags |= GIT_REF_FORMAT__VALIDATION_DISABLE;
196
+ flags |= GIT_REFERENCE_FORMAT__VALIDATION_DISABLE;
197
197
 
198
198
  return git_reference_normalize_name(out, GIT_REFNAME_MAX, name, flags);
199
199
  }
@@ -205,7 +205,7 @@ int git_reference_lookup_resolved(
205
205
  int max_nesting)
206
206
  {
207
207
  git_refname_t scan_name;
208
- git_ref_t scan_type;
208
+ git_reference_t scan_type;
209
209
  int error = 0, nesting;
210
210
  git_reference *ref = NULL;
211
211
  git_refdb *refdb;
@@ -219,7 +219,7 @@ int git_reference_lookup_resolved(
219
219
  else if (max_nesting < 0)
220
220
  max_nesting = DEFAULT_NESTING_LEVEL;
221
221
 
222
- scan_type = GIT_REF_SYMBOLIC;
222
+ scan_type = GIT_REFERENCE_SYMBOLIC;
223
223
 
224
224
  if ((error = reference_normalize_for_repo(scan_name, repo, name, true)) < 0)
225
225
  return error;
@@ -228,7 +228,7 @@ int git_reference_lookup_resolved(
228
228
  return error;
229
229
 
230
230
  for (nesting = max_nesting;
231
- nesting >= 0 && scan_type == GIT_REF_SYMBOLIC;
231
+ nesting >= 0 && scan_type == GIT_REFERENCE_SYMBOLIC;
232
232
  nesting--)
233
233
  {
234
234
  if (nesting != max_nesting) {
@@ -242,8 +242,8 @@ int git_reference_lookup_resolved(
242
242
  scan_type = ref->type;
243
243
  }
244
244
 
245
- if (scan_type != GIT_REF_OID && max_nesting != 0) {
246
- giterr_set(GITERR_REFERENCE,
245
+ if (scan_type != GIT_REFERENCE_DIRECT && max_nesting != 0) {
246
+ git_error_set(GIT_ERROR_REFERENCE,
247
247
  "cannot resolve reference (>%u levels deep)", max_nesting);
248
248
  git_reference_free(ref);
249
249
  return -1;
@@ -282,7 +282,7 @@ int git_reference__read_head(
282
282
 
283
283
  out:
284
284
  git__free(name);
285
- git_buf_free(&reference);
285
+ git_buf_dispose(&reference);
286
286
 
287
287
  return error;
288
288
  }
@@ -339,22 +339,22 @@ int git_reference_dwim(git_reference **out, git_repository *repo, const char *re
339
339
  cleanup:
340
340
  if (error && !foundvalid) {
341
341
  /* never found a valid reference name */
342
- giterr_set(GITERR_REFERENCE,
342
+ git_error_set(GIT_ERROR_REFERENCE,
343
343
  "could not use '%s' as valid reference name", git_buf_cstr(&name));
344
344
  }
345
345
 
346
346
  if (error == GIT_ENOTFOUND)
347
- giterr_set(GITERR_REFERENCE, "no reference found for shorthand '%s'", refname);
347
+ git_error_set(GIT_ERROR_REFERENCE, "no reference found for shorthand '%s'", refname);
348
348
 
349
- git_buf_free(&name);
350
- git_buf_free(&refnamebuf);
349
+ git_buf_dispose(&name);
350
+ git_buf_dispose(&refnamebuf);
351
351
  return error;
352
352
  }
353
353
 
354
354
  /**
355
355
  * Getters
356
356
  */
357
- git_ref_t git_reference_type(const git_reference *ref)
357
+ git_reference_t git_reference_type(const git_reference *ref)
358
358
  {
359
359
  assert(ref);
360
360
  return ref->type;
@@ -376,7 +376,7 @@ const git_oid *git_reference_target(const git_reference *ref)
376
376
  {
377
377
  assert(ref);
378
378
 
379
- if (ref->type != GIT_REF_OID)
379
+ if (ref->type != GIT_REFERENCE_DIRECT)
380
380
  return NULL;
381
381
 
382
382
  return &ref->target.oid;
@@ -386,7 +386,7 @@ const git_oid *git_reference_target_peel(const git_reference *ref)
386
386
  {
387
387
  assert(ref);
388
388
 
389
- if (ref->type != GIT_REF_OID || git_oid_iszero(&ref->peel))
389
+ if (ref->type != GIT_REFERENCE_DIRECT || git_oid_is_zero(&ref->peel))
390
390
  return NULL;
391
391
 
392
392
  return &ref->peel;
@@ -396,7 +396,7 @@ const char *git_reference_symbolic_target(const git_reference *ref)
396
396
  {
397
397
  assert(ref);
398
398
 
399
- if (ref->type != GIT_REF_SYMBOLIC)
399
+ if (ref->type != GIT_REFERENCE_SYMBOLIC)
400
400
  return NULL;
401
401
 
402
402
  return ref->target.symbolic;
@@ -436,8 +436,8 @@ static int reference__create(
436
436
  if (oid != NULL) {
437
437
  assert(symbolic == NULL);
438
438
 
439
- if (!git_object__is_valid(repo, oid, GIT_OBJ_ANY)) {
440
- giterr_set(GITERR_REFERENCE,
439
+ if (!git_object__is_valid(repo, oid, GIT_OBJECT_ANY)) {
440
+ git_error_set(GIT_ERROR_REFERENCE,
441
441
  "target OID for the reference doesn't exist on the repository");
442
442
  return -1;
443
443
  }
@@ -455,7 +455,7 @@ static int reference__create(
455
455
  ref = git_reference__alloc_symbolic(normalized, normalized_target);
456
456
  }
457
457
 
458
- GITERR_CHECK_ALLOC(ref);
458
+ GIT_ERROR_CHECK_ALLOC(ref);
459
459
 
460
460
  if ((error = git_refdb_write(refdb, ref, force, signature, log_message, old_id, old_target)) < 0) {
461
461
  git_reference_free(ref);
@@ -566,10 +566,10 @@ int git_reference_symbolic_create(
566
566
 
567
567
  static int ensure_is_an_updatable_direct_reference(git_reference *ref)
568
568
  {
569
- if (ref->type == GIT_REF_OID)
569
+ if (ref->type == GIT_REFERENCE_DIRECT)
570
570
  return 0;
571
571
 
572
- giterr_set(GITERR_REFERENCE, "cannot set OID on symbolic reference");
572
+ git_error_set(GIT_ERROR_REFERENCE, "cannot set OID on symbolic reference");
573
573
  return -1;
574
574
  }
575
575
 
@@ -594,10 +594,10 @@ int git_reference_set_target(
594
594
 
595
595
  static int ensure_is_an_updatable_symbolic_reference(git_reference *ref)
596
596
  {
597
- if (ref->type == GIT_REF_SYMBOLIC)
597
+ if (ref->type == GIT_REFERENCE_SYMBOLIC)
598
598
  return 0;
599
599
 
600
- giterr_set(GITERR_REFERENCE, "cannot set symbolic target on a direct reference");
600
+ git_error_set(GIT_ERROR_REFERENCE, "cannot set symbolic target on a direct reference");
601
601
  return -1;
602
602
  }
603
603
 
@@ -631,7 +631,7 @@ static int update_wt_heads(git_repository *repo, const char *path, void *payload
631
631
  int error;
632
632
 
633
633
  if ((error = git_reference__read_head(&head, repo, path)) < 0) {
634
- giterr_set(GITERR_REFERENCE, "could not read HEAD when renaming references");
634
+ git_error_set(GIT_ERROR_REFERENCE, "could not read HEAD when renaming references");
635
635
  goto out;
636
636
  }
637
637
 
@@ -640,7 +640,7 @@ static int update_wt_heads(git_repository *repo, const char *path, void *payload
640
640
  goto out;
641
641
  }
642
642
 
643
- if (git_reference_type(head) != GIT_REF_SYMBOLIC ||
643
+ if (git_reference_type(head) != GIT_REFERENCE_SYMBOLIC ||
644
644
  git__strcmp(head->target.symbolic, data->old_name) != 0) {
645
645
  error = 0;
646
646
  goto out;
@@ -648,7 +648,7 @@ static int update_wt_heads(git_repository *repo, const char *path, void *payload
648
648
 
649
649
  /* Update HEAD it was pointing to the reference being renamed */
650
650
  if ((error = git_repository_create_head(gitdir, data->new_name)) < 0) {
651
- giterr_set(GITERR_REFERENCE, "failed to update HEAD after renaming reference");
651
+ git_error_set(GIT_ERROR_REFERENCE, "failed to update HEAD after renaming reference");
652
652
  goto out;
653
653
  }
654
654
 
@@ -692,7 +692,7 @@ static int reference__rename(git_reference **out, git_reference *ref, const char
692
692
  payload.old_name = ref->name;
693
693
  memcpy(&payload.new_name, &normalized, sizeof(normalized));
694
694
 
695
- error = git_repository_foreach_head(repo, update_wt_heads, &payload);
695
+ error = git_repository_foreach_head(repo, update_wt_heads, 0, &payload);
696
696
  }
697
697
 
698
698
  return error;
@@ -723,14 +723,14 @@ int git_reference_rename(
723
723
  int git_reference_resolve(git_reference **ref_out, const git_reference *ref)
724
724
  {
725
725
  switch (git_reference_type(ref)) {
726
- case GIT_REF_OID:
726
+ case GIT_REFERENCE_DIRECT:
727
727
  return git_reference_lookup(ref_out, ref->db->repo, ref->name);
728
728
 
729
- case GIT_REF_SYMBOLIC:
729
+ case GIT_REFERENCE_SYMBOLIC:
730
730
  return git_reference_lookup_resolved(ref_out, ref->db->repo, ref->target.symbolic, -1);
731
731
 
732
732
  default:
733
- giterr_set(GITERR_REFERENCE, "invalid reference");
733
+ git_error_set(GIT_ERROR_REFERENCE, "invalid reference");
734
734
  return -1;
735
735
  }
736
736
  }
@@ -749,7 +749,7 @@ int git_reference_foreach(
749
749
 
750
750
  while (!(error = git_reference_next(&ref, iter))) {
751
751
  if ((error = callback(ref, payload)) != 0) {
752
- giterr_set_after_callback(error);
752
+ git_error_set_after_callback(error);
753
753
  break;
754
754
  }
755
755
  }
@@ -775,7 +775,7 @@ int git_reference_foreach_name(
775
775
 
776
776
  while (!(error = git_reference_next_name(&refname, iter))) {
777
777
  if ((error = callback(refname, payload)) != 0) {
778
- giterr_set_after_callback(error);
778
+ git_error_set_after_callback(error);
779
779
  break;
780
780
  }
781
781
  }
@@ -802,7 +802,7 @@ int git_reference_foreach_glob(
802
802
 
803
803
  while (!(error = git_reference_next_name(&refname, iter))) {
804
804
  if ((error = callback(refname, payload)) != 0) {
805
- giterr_set_after_callback(error);
805
+ git_error_set_after_callback(error);
806
806
  break;
807
807
  }
808
808
  }
@@ -856,7 +856,7 @@ void git_reference_iterator_free(git_reference_iterator *iter)
856
856
  static int cb__reflist_add(const char *ref, void *data)
857
857
  {
858
858
  char *name = git__strdup(ref);
859
- GITERR_CHECK_ALLOC(name);
859
+ GIT_ERROR_CHECK_ALLOC(name);
860
860
  return git_vector_insert((git_vector *)data, name);
861
861
  }
862
862
 
@@ -897,14 +897,13 @@ static int is_valid_ref_char(char ch)
897
897
  case '\\':
898
898
  case '?':
899
899
  case '[':
900
- case '*':
901
900
  return 0;
902
901
  default:
903
902
  return 1;
904
903
  }
905
904
  }
906
905
 
907
- static int ensure_segment_validity(const char *name)
906
+ static int ensure_segment_validity(const char *name, char may_contain_glob)
908
907
  {
909
908
  const char *current = name;
910
909
  char prev = '\0';
@@ -927,6 +926,12 @@ static int ensure_segment_validity(const char *name)
927
926
  if (prev == '@' && *current == '{')
928
927
  return -1; /* Refname contains "@{" */
929
928
 
929
+ if (*current == '*') {
930
+ if (!may_contain_glob)
931
+ return -1;
932
+ may_contain_glob = 0;
933
+ }
934
+
930
935
  prev = *current;
931
936
  }
932
937
 
@@ -970,7 +975,7 @@ int git_reference__normalize_name(
970
975
  int segment_len, segments_count = 0, error = GIT_EINVALIDSPEC;
971
976
  unsigned int process_flags;
972
977
  bool normalize = (buf != NULL);
973
- bool validate = (flags & GIT_REF_FORMAT__VALIDATION_DISABLE) == 0;
978
+ bool validate = (flags & GIT_REFERENCE_FORMAT__VALIDATION_DISABLE) == 0;
974
979
 
975
980
  #ifdef GIT_USE_ICONV
976
981
  git_path_iconv_t ic = GIT_PATH_ICONV_INIT;
@@ -988,7 +993,7 @@ int git_reference__normalize_name(
988
993
  git_buf_clear(buf);
989
994
 
990
995
  #ifdef GIT_USE_ICONV
991
- if ((flags & GIT_REF_FORMAT__PRECOMPOSE_UNICODE) != 0) {
996
+ if ((flags & GIT_REFERENCE_FORMAT__PRECOMPOSE_UNICODE) != 0) {
992
997
  size_t namelen = strlen(current);
993
998
  if ((error = git_path_iconv_init_precompose(&ic)) < 0 ||
994
999
  (error = git_path_iconv(&ic, &current, &namelen)) < 0)
@@ -1005,19 +1010,20 @@ int git_reference__normalize_name(
1005
1010
  }
1006
1011
 
1007
1012
  while (true) {
1008
- segment_len = ensure_segment_validity(current);
1009
- if (segment_len < 0) {
1010
- if ((process_flags & GIT_REF_FORMAT_REFSPEC_PATTERN) &&
1011
- current[0] == '*' &&
1012
- (current[1] == '\0' || current[1] == '/')) {
1013
- /* Accept one wildcard as a full refname component. */
1014
- process_flags &= ~GIT_REF_FORMAT_REFSPEC_PATTERN;
1015
- segment_len = 1;
1016
- } else
1017
- goto cleanup;
1018
- }
1013
+ char may_contain_glob = process_flags & GIT_REFERENCE_FORMAT_REFSPEC_PATTERN;
1014
+
1015
+ segment_len = ensure_segment_validity(current, may_contain_glob);
1016
+ if (segment_len < 0)
1017
+ goto cleanup;
1019
1018
 
1020
1019
  if (segment_len > 0) {
1020
+ /*
1021
+ * There may only be one glob in a pattern, thus we reset
1022
+ * the pattern-flag in case the current segment has one.
1023
+ */
1024
+ if (memchr(current, '*', segment_len))
1025
+ process_flags &= ~GIT_REFERENCE_FORMAT_REFSPEC_PATTERN;
1026
+
1021
1027
  if (normalize) {
1022
1028
  size_t cur_len = git_buf_len(buf);
1023
1029
 
@@ -1056,13 +1062,13 @@ int git_reference__normalize_name(
1056
1062
  if (current[segment_len - 1] == '/')
1057
1063
  goto cleanup;
1058
1064
 
1059
- if ((segments_count == 1 ) && !(flags & GIT_REF_FORMAT_ALLOW_ONELEVEL))
1065
+ if ((segments_count == 1 ) && !(flags & GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL))
1060
1066
  goto cleanup;
1061
1067
 
1062
1068
  if ((segments_count == 1 ) &&
1063
- !(flags & GIT_REF_FORMAT_REFSPEC_SHORTHAND) &&
1069
+ !(flags & GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND) &&
1064
1070
  !(is_all_caps_and_underscore(name, (size_t)segment_len) ||
1065
- ((flags & GIT_REF_FORMAT_REFSPEC_PATTERN) && !strcmp("*", name))))
1071
+ ((flags & GIT_REFERENCE_FORMAT_REFSPEC_PATTERN) && !strcmp("*", name))))
1066
1072
  goto cleanup;
1067
1073
 
1068
1074
  if ((segments_count > 1)
@@ -1073,12 +1079,12 @@ int git_reference__normalize_name(
1073
1079
 
1074
1080
  cleanup:
1075
1081
  if (error == GIT_EINVALIDSPEC)
1076
- giterr_set(
1077
- GITERR_REFERENCE,
1082
+ git_error_set(
1083
+ GIT_ERROR_REFERENCE,
1078
1084
  "the given reference name '%s' is not valid", name);
1079
1085
 
1080
1086
  if (error && normalize)
1081
- git_buf_free(buf);
1087
+ git_buf_dispose(buf);
1082
1088
 
1083
1089
  #ifdef GIT_USE_ICONV
1084
1090
  git_path_iconv_clear(&ic);
@@ -1100,8 +1106,8 @@ int git_reference_normalize_name(
1100
1106
  goto cleanup;
1101
1107
 
1102
1108
  if (git_buf_len(&buf) > buffer_size - 1) {
1103
- giterr_set(
1104
- GITERR_REFERENCE,
1109
+ git_error_set(
1110
+ GIT_ERROR_REFERENCE,
1105
1111
  "the provided buffer is too short to hold the normalization of '%s'", name);
1106
1112
  error = GIT_EBUFS;
1107
1113
  goto cleanup;
@@ -1112,17 +1118,17 @@ int git_reference_normalize_name(
1112
1118
  error = 0;
1113
1119
 
1114
1120
  cleanup:
1115
- git_buf_free(&buf);
1121
+ git_buf_dispose(&buf);
1116
1122
  return error;
1117
1123
  }
1118
1124
 
1119
- #define GIT_REF_TYPEMASK (GIT_REF_OID | GIT_REF_SYMBOLIC)
1125
+ #define GIT_REFERENCE_TYPEMASK (GIT_REFERENCE_DIRECT | GIT_REFERENCE_SYMBOLIC)
1120
1126
 
1121
1127
  int git_reference_cmp(
1122
1128
  const git_reference *ref1,
1123
1129
  const git_reference *ref2)
1124
1130
  {
1125
- git_ref_t type1, type2;
1131
+ git_reference_t type1, type2;
1126
1132
  assert(ref1 && ref2);
1127
1133
 
1128
1134
  type1 = git_reference_type(ref1);
@@ -1130,9 +1136,9 @@ int git_reference_cmp(
1130
1136
 
1131
1137
  /* let's put symbolic refs before OIDs */
1132
1138
  if (type1 != type2)
1133
- return (type1 == GIT_REF_SYMBOLIC) ? -1 : 1;
1139
+ return (type1 == GIT_REFERENCE_SYMBOLIC) ? -1 : 1;
1134
1140
 
1135
- if (type1 == GIT_REF_SYMBOLIC)
1141
+ if (type1 == GIT_REFERENCE_SYMBOLIC)
1136
1142
  return strcmp(ref1->target.symbolic, ref2->target.symbolic);
1137
1143
 
1138
1144
  return git_oid__cmp(&ref1->target.oid, &ref2->target.oid);
@@ -1148,7 +1154,7 @@ static int get_terminal(git_reference **out, git_repository *repo, const char *r
1148
1154
  int error = 0;
1149
1155
 
1150
1156
  if (nesting > MAX_NESTING_LEVEL) {
1151
- giterr_set(GITERR_REFERENCE, "reference chain too deep (%d)", nesting);
1157
+ git_error_set(GIT_ERROR_REFERENCE, "reference chain too deep (%d)", nesting);
1152
1158
  return GIT_ENOTFOUND;
1153
1159
  }
1154
1160
 
@@ -1158,7 +1164,7 @@ static int get_terminal(git_reference **out, git_repository *repo, const char *r
1158
1164
  return error;
1159
1165
  }
1160
1166
 
1161
- if (git_reference_type(ref) == GIT_REF_OID) {
1167
+ if (git_reference_type(ref) == GIT_REFERENCE_DIRECT) {
1162
1168
  *out = ref;
1163
1169
  error = 0;
1164
1170
  } else {
@@ -1197,16 +1203,16 @@ int git_reference__update_terminal(
1197
1203
 
1198
1204
  /* found a dangling symref */
1199
1205
  if (error == GIT_ENOTFOUND && ref) {
1200
- assert(git_reference_type(ref) == GIT_REF_SYMBOLIC);
1201
- giterr_clear();
1206
+ assert(git_reference_type(ref) == GIT_REFERENCE_SYMBOLIC);
1207
+ git_error_clear();
1202
1208
  error = reference__create(&ref2, repo, ref->target.symbolic, oid, NULL, 0, to_use,
1203
1209
  log_message, NULL, NULL);
1204
1210
  } else if (error == GIT_ENOTFOUND) {
1205
- giterr_clear();
1211
+ git_error_clear();
1206
1212
  error = reference__create(&ref2, repo, ref_name, oid, NULL, 0, to_use,
1207
1213
  log_message, NULL, NULL);
1208
1214
  } else if (error == 0) {
1209
- assert(git_reference_type(ref) == GIT_REF_OID);
1215
+ assert(git_reference_type(ref) == GIT_REFERENCE_DIRECT);
1210
1216
  error = reference__create(&ref2, repo, ref->name, oid, NULL, 1, to_use,
1211
1217
  log_message, &ref->target.oid, NULL);
1212
1218
  }
@@ -1264,7 +1270,7 @@ int git_reference__update_for_commit(
1264
1270
 
1265
1271
  done:
1266
1272
  git_reference_free(ref_new);
1267
- git_buf_free(&reflog_msg);
1273
+ git_buf_dispose(&reflog_msg);
1268
1274
  git_commit_free(commit);
1269
1275
  return error;
1270
1276
  }
@@ -1341,8 +1347,8 @@ int git_reference_is_note(const git_reference *ref)
1341
1347
 
1342
1348
  static int peel_error(int error, const git_reference *ref, const char* msg)
1343
1349
  {
1344
- giterr_set(
1345
- GITERR_INVALID,
1350
+ git_error_set(
1351
+ GIT_ERROR_INVALID,
1346
1352
  "the reference '%s' cannot be peeled - %s", git_reference_name(ref), msg);
1347
1353
  return error;
1348
1354
  }
@@ -1350,7 +1356,7 @@ static int peel_error(int error, const git_reference *ref, const char* msg)
1350
1356
  int git_reference_peel(
1351
1357
  git_object **peeled,
1352
1358
  const git_reference *ref,
1353
- git_otype target_type)
1359
+ git_object_t target_type)
1354
1360
  {
1355
1361
  const git_reference *resolved = NULL;
1356
1362
  git_reference *allocated = NULL;
@@ -1359,7 +1365,7 @@ int git_reference_peel(
1359
1365
 
1360
1366
  assert(ref);
1361
1367
 
1362
- if (ref->type == GIT_REF_OID) {
1368
+ if (ref->type == GIT_REFERENCE_DIRECT) {
1363
1369
  resolved = ref;
1364
1370
  } else {
1365
1371
  if ((error = git_reference_resolve(&allocated, ref)) < 0)
@@ -1374,12 +1380,12 @@ int git_reference_peel(
1374
1380
  * to a commit. So we only want to use the peeled value
1375
1381
  * if it is not zero and the target is not a tag.
1376
1382
  */
1377
- if (target_type != GIT_OBJ_TAG && !git_oid_iszero(&resolved->peel)) {
1383
+ if (target_type != GIT_OBJECT_TAG && !git_oid_is_zero(&resolved->peel)) {
1378
1384
  error = git_object_lookup(&target,
1379
- git_reference_owner(ref), &resolved->peel, GIT_OBJ_ANY);
1385
+ git_reference_owner(ref), &resolved->peel, GIT_OBJECT_ANY);
1380
1386
  } else {
1381
1387
  error = git_object_lookup(&target,
1382
- git_reference_owner(ref), &resolved->target.oid, GIT_OBJ_ANY);
1388
+ git_reference_owner(ref), &resolved->target.oid, GIT_OBJECT_ANY);
1383
1389
  }
1384
1390
 
1385
1391
  if (error < 0) {
@@ -1387,7 +1393,7 @@ int git_reference_peel(
1387
1393
  goto cleanup;
1388
1394
  }
1389
1395
 
1390
- if (target_type == GIT_OBJ_ANY && git_object_type(target) != GIT_OBJ_TAG)
1396
+ if (target_type == GIT_OBJECT_ANY && git_object_type(target) != GIT_OBJECT_TAG)
1391
1397
  error = git_object_dup(peeled, target);
1392
1398
  else
1393
1399
  error = git_object_peel(peeled, target, target_type);
@@ -1402,7 +1408,7 @@ cleanup:
1402
1408
  int git_reference__is_valid_name(const char *refname, unsigned int flags)
1403
1409
  {
1404
1410
  if (git_reference__normalize_name(NULL, refname, flags) < 0) {
1405
- giterr_clear();
1411
+ git_error_clear();
1406
1412
  return false;
1407
1413
  }
1408
1414
 
@@ -1411,7 +1417,7 @@ int git_reference__is_valid_name(const char *refname, unsigned int flags)
1411
1417
 
1412
1418
  int git_reference_is_valid_name(const char *refname)
1413
1419
  {
1414
- return git_reference__is_valid_name(refname, GIT_REF_FORMAT_ALLOW_ONELEVEL);
1420
+ return git_reference__is_valid_name(refname, GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL);
1415
1421
  }
1416
1422
 
1417
1423
  const char *git_reference__shorthand(const char *name)
@@ -1433,3 +1439,27 @@ const char *git_reference_shorthand(const git_reference *ref)
1433
1439
  {
1434
1440
  return git_reference__shorthand(ref->name);
1435
1441
  }
1442
+
1443
+ int git_reference__is_unborn_head(bool *unborn, const git_reference *ref, git_repository *repo)
1444
+ {
1445
+ int error;
1446
+ git_reference *tmp_ref;
1447
+ assert(unborn && ref && repo);
1448
+
1449
+ if (ref->type == GIT_REFERENCE_DIRECT) {
1450
+ *unborn = 0;
1451
+ return 0;
1452
+ }
1453
+
1454
+ error = git_reference_lookup_resolved(&tmp_ref, repo, ref->name, -1);
1455
+ git_reference_free(tmp_ref);
1456
+
1457
+ if (error != 0 && error != GIT_ENOTFOUND)
1458
+ return error;
1459
+ else if (error == GIT_ENOTFOUND && git__strcmp(ref->name, GIT_HEAD_FILE) == 0)
1460
+ *unborn = true;
1461
+ else
1462
+ *unborn = false;
1463
+
1464
+ return 0;
1465
+ }