rugged 0.27.7 → 0.27.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (409) 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 +99 -51
  5. data/vendor/libgit2/COPYING +28 -0
  6. data/vendor/libgit2/cmake/Modules/AddCFlagIfSupported.cmake +15 -1
  7. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +29 -0
  8. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +96 -0
  9. data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +9 -8
  10. data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
  11. data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
  12. data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +28 -0
  13. data/vendor/libgit2/cmake/Modules/FindIconv.cmake +11 -6
  14. data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +38 -0
  15. data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +37 -0
  16. data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
  17. data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +6 -0
  18. data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +110 -0
  19. data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +53 -0
  20. data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +124 -0
  21. data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +66 -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/annotated_commit.h +9 -0
  82. data/vendor/libgit2/include/git2/apply.h +149 -0
  83. data/vendor/libgit2/include/git2/attr.h +20 -13
  84. data/vendor/libgit2/include/git2/blame.h +4 -4
  85. data/vendor/libgit2/include/git2/blob.h +44 -12
  86. data/vendor/libgit2/include/git2/buffer.h +20 -26
  87. data/vendor/libgit2/include/git2/cert.h +135 -0
  88. data/vendor/libgit2/include/git2/checkout.h +53 -21
  89. data/vendor/libgit2/include/git2/cherrypick.h +3 -3
  90. data/vendor/libgit2/include/git2/clone.h +5 -5
  91. data/vendor/libgit2/include/git2/commit.h +25 -3
  92. data/vendor/libgit2/include/git2/common.h +35 -10
  93. data/vendor/libgit2/include/git2/config.h +29 -19
  94. data/vendor/libgit2/include/git2/cred.h +308 -0
  95. data/vendor/libgit2/include/git2/deprecated.h +493 -0
  96. data/vendor/libgit2/include/git2/describe.h +4 -4
  97. data/vendor/libgit2/include/git2/diff.h +177 -135
  98. data/vendor/libgit2/include/git2/errors.h +53 -46
  99. data/vendor/libgit2/include/git2/filter.h +8 -0
  100. data/vendor/libgit2/include/git2/index.h +74 -52
  101. data/vendor/libgit2/include/git2/indexer.h +76 -6
  102. data/vendor/libgit2/include/git2/merge.h +25 -10
  103. data/vendor/libgit2/include/git2/net.h +0 -5
  104. data/vendor/libgit2/include/git2/notes.h +1 -1
  105. data/vendor/libgit2/include/git2/object.h +17 -29
  106. data/vendor/libgit2/include/git2/odb.h +12 -11
  107. data/vendor/libgit2/include/git2/odb_backend.h +10 -9
  108. data/vendor/libgit2/include/git2/oid.h +2 -2
  109. data/vendor/libgit2/include/git2/pack.h +14 -3
  110. data/vendor/libgit2/include/git2/proxy.h +5 -3
  111. data/vendor/libgit2/include/git2/rebase.h +46 -2
  112. data/vendor/libgit2/include/git2/refs.h +34 -16
  113. data/vendor/libgit2/include/git2/remote.h +111 -14
  114. data/vendor/libgit2/include/git2/repository.h +69 -34
  115. data/vendor/libgit2/include/git2/revert.h +1 -1
  116. data/vendor/libgit2/include/git2/revwalk.h +7 -7
  117. data/vendor/libgit2/include/git2/signature.h +2 -2
  118. data/vendor/libgit2/include/git2/stash.h +5 -5
  119. data/vendor/libgit2/include/git2/status.h +26 -17
  120. data/vendor/libgit2/include/git2/submodule.h +23 -6
  121. data/vendor/libgit2/include/git2/sys/alloc.h +18 -18
  122. data/vendor/libgit2/include/git2/sys/commit.h +1 -1
  123. data/vendor/libgit2/include/git2/sys/config.h +13 -13
  124. data/vendor/libgit2/include/git2/sys/cred.h +90 -0
  125. data/vendor/libgit2/include/git2/sys/filter.h +6 -6
  126. data/vendor/libgit2/include/git2/sys/merge.h +3 -3
  127. data/vendor/libgit2/include/git2/sys/odb_backend.h +66 -22
  128. data/vendor/libgit2/include/git2/sys/path.h +14 -5
  129. data/vendor/libgit2/include/git2/sys/refdb_backend.h +76 -40
  130. data/vendor/libgit2/include/git2/sys/repository.h +5 -1
  131. data/vendor/libgit2/include/git2/sys/stream.h +92 -12
  132. data/vendor/libgit2/include/git2/sys/transport.h +129 -83
  133. data/vendor/libgit2/include/git2/tag.h +13 -4
  134. data/vendor/libgit2/include/git2/trace.h +2 -2
  135. data/vendor/libgit2/include/git2/transport.h +11 -311
  136. data/vendor/libgit2/include/git2/tree.h +4 -4
  137. data/vendor/libgit2/include/git2/types.h +25 -106
  138. data/vendor/libgit2/include/git2/version.h +3 -3
  139. data/vendor/libgit2/include/git2/worktree.h +5 -5
  140. data/vendor/libgit2/include/git2.h +4 -0
  141. data/vendor/libgit2/src/CMakeLists.txt +104 -235
  142. data/vendor/libgit2/src/alloc.c +14 -18
  143. data/vendor/libgit2/src/{stdalloc.c → allocators/stdalloc.c} +7 -8
  144. data/vendor/libgit2/src/{stdalloc.h → allocators/stdalloc.h} +4 -4
  145. data/vendor/libgit2/src/allocators/win32_crtdbg.c +118 -0
  146. data/vendor/libgit2/src/{transports/cred.h → allocators/win32_crtdbg.h} +5 -4
  147. data/vendor/libgit2/src/annotated_commit.c +18 -11
  148. data/vendor/libgit2/src/apply.c +535 -28
  149. data/vendor/libgit2/src/apply.h +3 -1
  150. data/vendor/libgit2/src/array.h +2 -2
  151. data/vendor/libgit2/src/attr.c +77 -71
  152. data/vendor/libgit2/src/attr_file.c +203 -117
  153. data/vendor/libgit2/src/attr_file.h +9 -9
  154. data/vendor/libgit2/src/attrcache.c +49 -51
  155. data/vendor/libgit2/src/attrcache.h +2 -1
  156. data/vendor/libgit2/src/blame.c +38 -18
  157. data/vendor/libgit2/src/blame.h +1 -1
  158. data/vendor/libgit2/src/blame_git.c +29 -15
  159. data/vendor/libgit2/src/blob.c +123 -37
  160. data/vendor/libgit2/src/blob.h +19 -2
  161. data/vendor/libgit2/src/branch.c +47 -23
  162. data/vendor/libgit2/src/buf_text.c +7 -6
  163. data/vendor/libgit2/src/buffer.c +60 -53
  164. data/vendor/libgit2/src/cache.c +38 -45
  165. data/vendor/libgit2/src/cache.h +3 -3
  166. data/vendor/libgit2/src/cc-compat.h +20 -3
  167. data/vendor/libgit2/src/checkout.c +77 -67
  168. data/vendor/libgit2/src/cherrypick.c +12 -6
  169. data/vendor/libgit2/src/clone.c +36 -14
  170. data/vendor/libgit2/src/clone.h +4 -0
  171. data/vendor/libgit2/src/commit.c +103 -48
  172. data/vendor/libgit2/src/commit.h +7 -0
  173. data/vendor/libgit2/src/commit_list.c +36 -78
  174. data/vendor/libgit2/src/commit_list.h +2 -2
  175. data/vendor/libgit2/src/common.h +24 -90
  176. data/vendor/libgit2/src/config.c +203 -176
  177. data/vendor/libgit2/src/config.h +8 -20
  178. data/vendor/libgit2/src/config_backend.h +96 -0
  179. data/vendor/libgit2/src/config_cache.c +41 -35
  180. data/vendor/libgit2/src/config_entries.c +229 -0
  181. data/vendor/libgit2/src/config_entries.h +24 -0
  182. data/vendor/libgit2/src/config_file.c +422 -680
  183. data/vendor/libgit2/src/config_mem.c +220 -0
  184. data/vendor/libgit2/src/config_parse.c +96 -68
  185. data/vendor/libgit2/src/config_parse.h +15 -14
  186. data/vendor/libgit2/src/config_snapshot.c +206 -0
  187. data/vendor/libgit2/src/crlf.c +219 -196
  188. data/vendor/libgit2/src/delta.c +25 -18
  189. data/vendor/libgit2/src/describe.c +42 -41
  190. data/vendor/libgit2/src/diff.c +52 -67
  191. data/vendor/libgit2/src/diff.h +2 -1
  192. data/vendor/libgit2/src/diff_driver.c +44 -46
  193. data/vendor/libgit2/src/diff_file.c +16 -14
  194. data/vendor/libgit2/src/diff_file.h +1 -1
  195. data/vendor/libgit2/src/diff_generate.c +158 -103
  196. data/vendor/libgit2/src/diff_generate.h +3 -3
  197. data/vendor/libgit2/src/diff_parse.c +4 -4
  198. data/vendor/libgit2/src/diff_print.c +34 -22
  199. data/vendor/libgit2/src/diff_stats.c +22 -7
  200. data/vendor/libgit2/src/diff_tform.c +18 -16
  201. data/vendor/libgit2/src/diff_xdiff.c +3 -3
  202. data/vendor/libgit2/src/errors.c +51 -39
  203. data/vendor/libgit2/src/errors.h +81 -0
  204. data/vendor/libgit2/src/features.h.in +9 -3
  205. data/vendor/libgit2/src/fetch.c +8 -3
  206. data/vendor/libgit2/src/fetchhead.c +12 -12
  207. data/vendor/libgit2/src/filebuf.c +28 -32
  208. data/vendor/libgit2/src/filebuf.h +2 -2
  209. data/vendor/libgit2/src/filter.c +47 -33
  210. data/vendor/libgit2/src/filter.h +0 -10
  211. data/vendor/libgit2/src/{fileops.c → futils.c} +70 -63
  212. data/vendor/libgit2/src/{fileops.h → futils.h} +6 -6
  213. data/vendor/libgit2/src/global.c +35 -55
  214. data/vendor/libgit2/src/global.h +0 -2
  215. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +48 -0
  216. data/vendor/libgit2/src/hash/sha1/collisiondetect.h +19 -0
  217. data/vendor/libgit2/src/hash/{hash_common_crypto.h → sha1/common_crypto.c} +17 -17
  218. data/vendor/libgit2/src/hash/sha1/common_crypto.h +19 -0
  219. data/vendor/libgit2/src/hash/{hash_generic.c → sha1/generic.c} +22 -10
  220. data/vendor/libgit2/src/hash/{hash_generic.h → sha1/generic.h} +4 -10
  221. data/vendor/libgit2/src/hash/{hash_mbedtls.c → sha1/mbedtls.c} +15 -7
  222. data/vendor/libgit2/src/hash/{hash_mbedtls.h → sha1/mbedtls.h} +6 -7
  223. data/vendor/libgit2/src/hash/sha1/openssl.c +59 -0
  224. data/vendor/libgit2/src/hash/sha1/openssl.h +19 -0
  225. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.c +14 -3
  226. data/vendor/libgit2/src/hash/{hash_win32.c → sha1/win32.c} +47 -37
  227. data/vendor/libgit2/src/hash/{hash_win32.h → sha1/win32.h} +6 -19
  228. data/vendor/libgit2/src/hash/sha1.h +38 -0
  229. data/vendor/libgit2/src/hash.c +61 -0
  230. data/vendor/libgit2/src/hash.h +20 -21
  231. data/vendor/libgit2/src/hashsig.c +5 -5
  232. data/vendor/libgit2/src/idxmap.c +107 -61
  233. data/vendor/libgit2/src/idxmap.h +153 -31
  234. data/vendor/libgit2/src/ignore.c +38 -42
  235. data/vendor/libgit2/src/index.c +264 -199
  236. data/vendor/libgit2/src/index.h +7 -1
  237. data/vendor/libgit2/src/indexer.c +338 -167
  238. data/vendor/libgit2/src/integer.h +71 -26
  239. data/vendor/libgit2/src/iterator.c +134 -62
  240. data/vendor/libgit2/src/iterator.h +15 -0
  241. data/vendor/libgit2/src/mailmap.c +8 -8
  242. data/vendor/libgit2/src/map.h +1 -1
  243. data/vendor/libgit2/src/merge.c +137 -93
  244. data/vendor/libgit2/src/merge_driver.c +11 -11
  245. data/vendor/libgit2/src/merge_file.c +2 -2
  246. data/vendor/libgit2/src/mwindow.c +24 -29
  247. data/vendor/libgit2/src/mwindow.h +4 -4
  248. data/vendor/libgit2/src/net.c +184 -0
  249. data/vendor/libgit2/src/net.h +36 -0
  250. data/vendor/libgit2/src/netops.c +55 -156
  251. data/vendor/libgit2/src/netops.h +3 -23
  252. data/vendor/libgit2/src/notes.c +14 -9
  253. data/vendor/libgit2/src/object.c +120 -69
  254. data/vendor/libgit2/src/object.h +22 -9
  255. data/vendor/libgit2/src/object_api.c +8 -8
  256. data/vendor/libgit2/src/odb.c +111 -88
  257. data/vendor/libgit2/src/odb.h +8 -7
  258. data/vendor/libgit2/src/odb_loose.c +58 -47
  259. data/vendor/libgit2/src/odb_mempack.c +21 -34
  260. data/vendor/libgit2/src/odb_pack.c +17 -13
  261. data/vendor/libgit2/src/offmap.c +53 -35
  262. data/vendor/libgit2/src/offmap.h +108 -21
  263. data/vendor/libgit2/src/oid.c +12 -7
  264. data/vendor/libgit2/src/oidmap.c +49 -47
  265. data/vendor/libgit2/src/oidmap.h +101 -24
  266. data/vendor/libgit2/src/pack-objects.c +87 -86
  267. data/vendor/libgit2/src/pack-objects.h +2 -8
  268. data/vendor/libgit2/src/pack.c +94 -96
  269. data/vendor/libgit2/src/pack.h +16 -18
  270. data/vendor/libgit2/src/parse.c +17 -4
  271. data/vendor/libgit2/src/parse.h +3 -3
  272. data/vendor/libgit2/src/patch.c +3 -3
  273. data/vendor/libgit2/src/patch_generate.c +18 -18
  274. data/vendor/libgit2/src/patch_parse.c +147 -79
  275. data/vendor/libgit2/src/path.c +207 -62
  276. data/vendor/libgit2/src/path.h +14 -0
  277. data/vendor/libgit2/src/pathspec.c +18 -18
  278. data/vendor/libgit2/src/pool.c +26 -22
  279. data/vendor/libgit2/src/pool.h +7 -7
  280. data/vendor/libgit2/src/posix.c +10 -10
  281. data/vendor/libgit2/src/posix.h +12 -1
  282. data/vendor/libgit2/src/proxy.c +8 -3
  283. data/vendor/libgit2/src/push.c +35 -29
  284. data/vendor/libgit2/src/push.h +2 -1
  285. data/vendor/libgit2/src/reader.c +265 -0
  286. data/vendor/libgit2/src/reader.h +107 -0
  287. data/vendor/libgit2/src/rebase.c +97 -38
  288. data/vendor/libgit2/src/refdb.c +15 -3
  289. data/vendor/libgit2/src/refdb_fs.c +318 -222
  290. data/vendor/libgit2/src/reflog.c +13 -15
  291. data/vendor/libgit2/src/refs.c +122 -89
  292. data/vendor/libgit2/src/refs.h +5 -3
  293. data/vendor/libgit2/src/refspec.c +27 -33
  294. data/vendor/libgit2/src/regexp.c +221 -0
  295. data/vendor/libgit2/src/regexp.h +97 -0
  296. data/vendor/libgit2/src/remote.c +229 -178
  297. data/vendor/libgit2/src/remote.h +11 -2
  298. data/vendor/libgit2/src/repository.c +227 -172
  299. data/vendor/libgit2/src/repository.h +52 -40
  300. data/vendor/libgit2/src/reset.c +7 -7
  301. data/vendor/libgit2/src/revert.c +11 -6
  302. data/vendor/libgit2/src/revparse.c +46 -46
  303. data/vendor/libgit2/src/revwalk.c +89 -54
  304. data/vendor/libgit2/src/revwalk.h +20 -0
  305. data/vendor/libgit2/src/settings.c +22 -9
  306. data/vendor/libgit2/src/signature.c +15 -13
  307. data/vendor/libgit2/src/sortedcache.c +22 -36
  308. data/vendor/libgit2/src/sortedcache.h +1 -1
  309. data/vendor/libgit2/src/stash.c +56 -76
  310. data/vendor/libgit2/src/status.c +27 -21
  311. data/vendor/libgit2/src/stream.h +17 -2
  312. data/vendor/libgit2/src/streams/mbedtls.c +100 -80
  313. data/vendor/libgit2/src/streams/mbedtls.h +5 -2
  314. data/vendor/libgit2/src/streams/openssl.c +93 -81
  315. data/vendor/libgit2/src/streams/openssl.h +5 -2
  316. data/vendor/libgit2/src/streams/registry.c +118 -0
  317. data/vendor/libgit2/src/streams/registry.h +19 -0
  318. data/vendor/libgit2/src/streams/socket.c +55 -30
  319. data/vendor/libgit2/src/streams/stransport.c +57 -32
  320. data/vendor/libgit2/src/streams/stransport.h +5 -0
  321. data/vendor/libgit2/src/streams/tls.c +48 -20
  322. data/vendor/libgit2/src/streams/tls.h +12 -4
  323. data/vendor/libgit2/src/strmap.c +47 -74
  324. data/vendor/libgit2/src/strmap.h +108 -33
  325. data/vendor/libgit2/src/submodule.c +190 -169
  326. data/vendor/libgit2/src/submodule.h +1 -1
  327. data/vendor/libgit2/src/sysdir.c +25 -15
  328. data/vendor/libgit2/src/tag.c +39 -26
  329. data/vendor/libgit2/src/tag.h +2 -1
  330. data/vendor/libgit2/src/trace.c +2 -2
  331. data/vendor/libgit2/src/trace.h +2 -2
  332. data/vendor/libgit2/src/trailer.c +46 -32
  333. data/vendor/libgit2/src/transaction.c +30 -29
  334. data/vendor/libgit2/src/transport.c +3 -3
  335. data/vendor/libgit2/src/transports/auth.c +14 -10
  336. data/vendor/libgit2/src/transports/auth.h +10 -3
  337. data/vendor/libgit2/src/transports/auth_negotiate.c +31 -16
  338. data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
  339. data/vendor/libgit2/src/transports/auth_ntlm.c +223 -0
  340. data/vendor/libgit2/src/transports/auth_ntlm.h +35 -0
  341. data/vendor/libgit2/src/transports/cred.c +24 -24
  342. data/vendor/libgit2/src/transports/git.c +25 -30
  343. data/vendor/libgit2/src/transports/http.c +871 -335
  344. data/vendor/libgit2/src/transports/http.h +2 -0
  345. data/vendor/libgit2/src/transports/local.c +28 -28
  346. data/vendor/libgit2/src/transports/smart.c +64 -46
  347. data/vendor/libgit2/src/transports/smart.h +5 -6
  348. data/vendor/libgit2/src/transports/smart_pkt.c +162 -151
  349. data/vendor/libgit2/src/transports/smart_protocol.c +64 -94
  350. data/vendor/libgit2/src/transports/ssh.c +76 -65
  351. data/vendor/libgit2/src/transports/winhttp.c +328 -319
  352. data/vendor/libgit2/src/tree-cache.c +21 -14
  353. data/vendor/libgit2/src/tree.c +119 -112
  354. data/vendor/libgit2/src/tree.h +1 -0
  355. data/vendor/libgit2/src/unix/map.c +3 -3
  356. data/vendor/libgit2/src/unix/posix.h +1 -11
  357. data/vendor/libgit2/src/userdiff.h +3 -1
  358. data/vendor/libgit2/src/util.c +154 -93
  359. data/vendor/libgit2/src/util.h +19 -23
  360. data/vendor/libgit2/src/vector.c +15 -10
  361. data/vendor/libgit2/src/wildmatch.c +320 -0
  362. data/vendor/libgit2/src/wildmatch.h +23 -0
  363. data/vendor/libgit2/src/win32/dir.c +3 -3
  364. data/vendor/libgit2/src/win32/findfile.c +1 -1
  365. data/vendor/libgit2/src/win32/map.c +9 -11
  366. data/vendor/libgit2/src/win32/msvc-compat.h +6 -0
  367. data/vendor/libgit2/src/win32/path_w32.c +113 -9
  368. data/vendor/libgit2/src/win32/path_w32.h +18 -29
  369. data/vendor/libgit2/src/win32/posix.h +1 -4
  370. data/vendor/libgit2/src/win32/posix_w32.c +69 -44
  371. data/vendor/libgit2/src/win32/precompiled.h +0 -2
  372. data/vendor/libgit2/src/win32/thread.c +5 -10
  373. data/vendor/libgit2/src/win32/w32_buffer.c +9 -5
  374. data/vendor/libgit2/src/win32/w32_common.h +39 -0
  375. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +2 -95
  376. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -2
  377. data/vendor/libgit2/src/win32/w32_stack.c +6 -11
  378. data/vendor/libgit2/src/win32/w32_stack.h +3 -3
  379. data/vendor/libgit2/src/win32/w32_util.c +27 -64
  380. data/vendor/libgit2/src/win32/w32_util.h +5 -49
  381. data/vendor/libgit2/src/worktree.c +44 -30
  382. data/vendor/libgit2/src/xdiff/xdiffi.c +5 -5
  383. data/vendor/libgit2/src/xdiff/xhistogram.c +1 -1
  384. data/vendor/libgit2/src/xdiff/xmerge.c +27 -15
  385. data/vendor/libgit2/src/xdiff/xpatience.c +3 -0
  386. data/vendor/libgit2/src/zstream.c +4 -4
  387. metadata +115 -38
  388. data/vendor/libgit2/deps/regex/CMakeLists.txt +0 -2
  389. data/vendor/libgit2/deps/regex/config.h +0 -7
  390. data/vendor/libgit2/deps/regex/regcomp.c +0 -3857
  391. data/vendor/libgit2/deps/regex/regex.c +0 -92
  392. data/vendor/libgit2/deps/regex/regex.h +0 -582
  393. data/vendor/libgit2/deps/regex/regex_internal.c +0 -1744
  394. data/vendor/libgit2/deps/regex/regex_internal.h +0 -819
  395. data/vendor/libgit2/deps/regex/regexec.c +0 -4369
  396. data/vendor/libgit2/include/git2/inttypes.h +0 -309
  397. data/vendor/libgit2/include/git2/sys/time.h +0 -31
  398. data/vendor/libgit2/libgit2.pc.in +0 -13
  399. data/vendor/libgit2/src/config_file.h +0 -73
  400. data/vendor/libgit2/src/fnmatch.c +0 -248
  401. data/vendor/libgit2/src/fnmatch.h +0 -48
  402. data/vendor/libgit2/src/hash/hash_collisiondetect.h +0 -47
  403. data/vendor/libgit2/src/hash/hash_openssl.h +0 -59
  404. data/vendor/libgit2/src/streams/curl.c +0 -385
  405. data/vendor/libgit2/src/streams/curl.h +0 -17
  406. /data/vendor/libgit2/deps/http-parser/{LICENSE-MIT → COPYING} +0 -0
  407. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.h +0 -0
  408. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.c +0 -0
  409. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.h +0 -0
@@ -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;
@@ -339,12 +339,12 @@ 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
349
  git_buf_dispose(&name);
350
350
  git_buf_dispose(&refnamebuf);
@@ -354,7 +354,7 @@ cleanup:
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;
@@ -709,6 +709,8 @@ int git_reference_rename(
709
709
  git_signature *who;
710
710
  int error;
711
711
 
712
+ assert(out && ref);
713
+
712
714
  if ((error = git_reference__log_signature(&who, ref->db->repo)) < 0)
713
715
  return error;
714
716
 
@@ -721,14 +723,14 @@ int git_reference_rename(
721
723
  int git_reference_resolve(git_reference **ref_out, const git_reference *ref)
722
724
  {
723
725
  switch (git_reference_type(ref)) {
724
- case GIT_REF_OID:
726
+ case GIT_REFERENCE_DIRECT:
725
727
  return git_reference_lookup(ref_out, ref->db->repo, ref->name);
726
728
 
727
- case GIT_REF_SYMBOLIC:
729
+ case GIT_REFERENCE_SYMBOLIC:
728
730
  return git_reference_lookup_resolved(ref_out, ref->db->repo, ref->target.symbolic, -1);
729
731
 
730
732
  default:
731
- giterr_set(GITERR_REFERENCE, "invalid reference");
733
+ git_error_set(GIT_ERROR_REFERENCE, "invalid reference");
732
734
  return -1;
733
735
  }
734
736
  }
@@ -747,7 +749,7 @@ int git_reference_foreach(
747
749
 
748
750
  while (!(error = git_reference_next(&ref, iter))) {
749
751
  if ((error = callback(ref, payload)) != 0) {
750
- giterr_set_after_callback(error);
752
+ git_error_set_after_callback(error);
751
753
  break;
752
754
  }
753
755
  }
@@ -773,7 +775,7 @@ int git_reference_foreach_name(
773
775
 
774
776
  while (!(error = git_reference_next_name(&refname, iter))) {
775
777
  if ((error = callback(refname, payload)) != 0) {
776
- giterr_set_after_callback(error);
778
+ git_error_set_after_callback(error);
777
779
  break;
778
780
  }
779
781
  }
@@ -800,7 +802,7 @@ int git_reference_foreach_glob(
800
802
 
801
803
  while (!(error = git_reference_next_name(&refname, iter))) {
802
804
  if ((error = callback(refname, payload)) != 0) {
803
- giterr_set_after_callback(error);
805
+ git_error_set_after_callback(error);
804
806
  break;
805
807
  }
806
808
  }
@@ -854,7 +856,7 @@ void git_reference_iterator_free(git_reference_iterator *iter)
854
856
  static int cb__reflist_add(const char *ref, void *data)
855
857
  {
856
858
  char *name = git__strdup(ref);
857
- GITERR_CHECK_ALLOC(name);
859
+ GIT_ERROR_CHECK_ALLOC(name);
858
860
  return git_vector_insert((git_vector *)data, name);
859
861
  }
860
862
 
@@ -895,14 +897,13 @@ static int is_valid_ref_char(char ch)
895
897
  case '\\':
896
898
  case '?':
897
899
  case '[':
898
- case '*':
899
900
  return 0;
900
901
  default:
901
902
  return 1;
902
903
  }
903
904
  }
904
905
 
905
- static int ensure_segment_validity(const char *name)
906
+ static int ensure_segment_validity(const char *name, char may_contain_glob)
906
907
  {
907
908
  const char *current = name;
908
909
  char prev = '\0';
@@ -925,6 +926,12 @@ static int ensure_segment_validity(const char *name)
925
926
  if (prev == '@' && *current == '{')
926
927
  return -1; /* Refname contains "@{" */
927
928
 
929
+ if (*current == '*') {
930
+ if (!may_contain_glob)
931
+ return -1;
932
+ may_contain_glob = 0;
933
+ }
934
+
928
935
  prev = *current;
929
936
  }
930
937
 
@@ -968,7 +975,7 @@ int git_reference__normalize_name(
968
975
  int segment_len, segments_count = 0, error = GIT_EINVALIDSPEC;
969
976
  unsigned int process_flags;
970
977
  bool normalize = (buf != NULL);
971
- bool validate = (flags & GIT_REF_FORMAT__VALIDATION_DISABLE) == 0;
978
+ bool validate = (flags & GIT_REFERENCE_FORMAT__VALIDATION_DISABLE) == 0;
972
979
 
973
980
  #ifdef GIT_USE_ICONV
974
981
  git_path_iconv_t ic = GIT_PATH_ICONV_INIT;
@@ -986,7 +993,7 @@ int git_reference__normalize_name(
986
993
  git_buf_clear(buf);
987
994
 
988
995
  #ifdef GIT_USE_ICONV
989
- if ((flags & GIT_REF_FORMAT__PRECOMPOSE_UNICODE) != 0) {
996
+ if ((flags & GIT_REFERENCE_FORMAT__PRECOMPOSE_UNICODE) != 0) {
990
997
  size_t namelen = strlen(current);
991
998
  if ((error = git_path_iconv_init_precompose(&ic)) < 0 ||
992
999
  (error = git_path_iconv(&ic, &current, &namelen)) < 0)
@@ -1003,19 +1010,20 @@ int git_reference__normalize_name(
1003
1010
  }
1004
1011
 
1005
1012
  while (true) {
1006
- segment_len = ensure_segment_validity(current);
1007
- if (segment_len < 0) {
1008
- if ((process_flags & GIT_REF_FORMAT_REFSPEC_PATTERN) &&
1009
- current[0] == '*' &&
1010
- (current[1] == '\0' || current[1] == '/')) {
1011
- /* Accept one wildcard as a full refname component. */
1012
- process_flags &= ~GIT_REF_FORMAT_REFSPEC_PATTERN;
1013
- segment_len = 1;
1014
- } else
1015
- goto cleanup;
1016
- }
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;
1017
1018
 
1018
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
+
1019
1027
  if (normalize) {
1020
1028
  size_t cur_len = git_buf_len(buf);
1021
1029
 
@@ -1054,13 +1062,13 @@ int git_reference__normalize_name(
1054
1062
  if (current[segment_len - 1] == '/')
1055
1063
  goto cleanup;
1056
1064
 
1057
- if ((segments_count == 1 ) && !(flags & GIT_REF_FORMAT_ALLOW_ONELEVEL))
1065
+ if ((segments_count == 1 ) && !(flags & GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL))
1058
1066
  goto cleanup;
1059
1067
 
1060
1068
  if ((segments_count == 1 ) &&
1061
- !(flags & GIT_REF_FORMAT_REFSPEC_SHORTHAND) &&
1069
+ !(flags & GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND) &&
1062
1070
  !(is_all_caps_and_underscore(name, (size_t)segment_len) ||
1063
- ((flags & GIT_REF_FORMAT_REFSPEC_PATTERN) && !strcmp("*", name))))
1071
+ ((flags & GIT_REFERENCE_FORMAT_REFSPEC_PATTERN) && !strcmp("*", name))))
1064
1072
  goto cleanup;
1065
1073
 
1066
1074
  if ((segments_count > 1)
@@ -1071,8 +1079,8 @@ int git_reference__normalize_name(
1071
1079
 
1072
1080
  cleanup:
1073
1081
  if (error == GIT_EINVALIDSPEC)
1074
- giterr_set(
1075
- GITERR_REFERENCE,
1082
+ git_error_set(
1083
+ GIT_ERROR_REFERENCE,
1076
1084
  "the given reference name '%s' is not valid", name);
1077
1085
 
1078
1086
  if (error && normalize)
@@ -1098,8 +1106,8 @@ int git_reference_normalize_name(
1098
1106
  goto cleanup;
1099
1107
 
1100
1108
  if (git_buf_len(&buf) > buffer_size - 1) {
1101
- giterr_set(
1102
- GITERR_REFERENCE,
1109
+ git_error_set(
1110
+ GIT_ERROR_REFERENCE,
1103
1111
  "the provided buffer is too short to hold the normalization of '%s'", name);
1104
1112
  error = GIT_EBUFS;
1105
1113
  goto cleanup;
@@ -1114,13 +1122,13 @@ cleanup:
1114
1122
  return error;
1115
1123
  }
1116
1124
 
1117
- #define GIT_REF_TYPEMASK (GIT_REF_OID | GIT_REF_SYMBOLIC)
1125
+ #define GIT_REFERENCE_TYPEMASK (GIT_REFERENCE_DIRECT | GIT_REFERENCE_SYMBOLIC)
1118
1126
 
1119
1127
  int git_reference_cmp(
1120
1128
  const git_reference *ref1,
1121
1129
  const git_reference *ref2)
1122
1130
  {
1123
- git_ref_t type1, type2;
1131
+ git_reference_t type1, type2;
1124
1132
  assert(ref1 && ref2);
1125
1133
 
1126
1134
  type1 = git_reference_type(ref1);
@@ -1128,9 +1136,9 @@ int git_reference_cmp(
1128
1136
 
1129
1137
  /* let's put symbolic refs before OIDs */
1130
1138
  if (type1 != type2)
1131
- return (type1 == GIT_REF_SYMBOLIC) ? -1 : 1;
1139
+ return (type1 == GIT_REFERENCE_SYMBOLIC) ? -1 : 1;
1132
1140
 
1133
- if (type1 == GIT_REF_SYMBOLIC)
1141
+ if (type1 == GIT_REFERENCE_SYMBOLIC)
1134
1142
  return strcmp(ref1->target.symbolic, ref2->target.symbolic);
1135
1143
 
1136
1144
  return git_oid__cmp(&ref1->target.oid, &ref2->target.oid);
@@ -1146,7 +1154,7 @@ static int get_terminal(git_reference **out, git_repository *repo, const char *r
1146
1154
  int error = 0;
1147
1155
 
1148
1156
  if (nesting > MAX_NESTING_LEVEL) {
1149
- giterr_set(GITERR_REFERENCE, "reference chain too deep (%d)", nesting);
1157
+ git_error_set(GIT_ERROR_REFERENCE, "reference chain too deep (%d)", nesting);
1150
1158
  return GIT_ENOTFOUND;
1151
1159
  }
1152
1160
 
@@ -1156,7 +1164,7 @@ static int get_terminal(git_reference **out, git_repository *repo, const char *r
1156
1164
  return error;
1157
1165
  }
1158
1166
 
1159
- if (git_reference_type(ref) == GIT_REF_OID) {
1167
+ if (git_reference_type(ref) == GIT_REFERENCE_DIRECT) {
1160
1168
  *out = ref;
1161
1169
  error = 0;
1162
1170
  } else {
@@ -1195,16 +1203,16 @@ int git_reference__update_terminal(
1195
1203
 
1196
1204
  /* found a dangling symref */
1197
1205
  if (error == GIT_ENOTFOUND && ref) {
1198
- assert(git_reference_type(ref) == GIT_REF_SYMBOLIC);
1199
- giterr_clear();
1206
+ assert(git_reference_type(ref) == GIT_REFERENCE_SYMBOLIC);
1207
+ git_error_clear();
1200
1208
  error = reference__create(&ref2, repo, ref->target.symbolic, oid, NULL, 0, to_use,
1201
1209
  log_message, NULL, NULL);
1202
1210
  } else if (error == GIT_ENOTFOUND) {
1203
- giterr_clear();
1211
+ git_error_clear();
1204
1212
  error = reference__create(&ref2, repo, ref_name, oid, NULL, 0, to_use,
1205
1213
  log_message, NULL, NULL);
1206
1214
  } else if (error == 0) {
1207
- assert(git_reference_type(ref) == GIT_REF_OID);
1215
+ assert(git_reference_type(ref) == GIT_REFERENCE_DIRECT);
1208
1216
  error = reference__create(&ref2, repo, ref->name, oid, NULL, 1, to_use,
1209
1217
  log_message, &ref->target.oid, NULL);
1210
1218
  }
@@ -1337,30 +1345,33 @@ int git_reference_is_note(const git_reference *ref)
1337
1345
  return git_reference__is_note(ref->name);
1338
1346
  }
1339
1347
 
1340
- static int peel_error(int error, git_reference *ref, const char* msg)
1348
+ static int peel_error(int error, const git_reference *ref, const char* msg)
1341
1349
  {
1342
- giterr_set(
1343
- GITERR_INVALID,
1350
+ git_error_set(
1351
+ GIT_ERROR_INVALID,
1344
1352
  "the reference '%s' cannot be peeled - %s", git_reference_name(ref), msg);
1345
1353
  return error;
1346
1354
  }
1347
1355
 
1348
1356
  int git_reference_peel(
1349
1357
  git_object **peeled,
1350
- git_reference *ref,
1351
- git_otype target_type)
1358
+ const git_reference *ref,
1359
+ git_object_t target_type)
1352
1360
  {
1353
- git_reference *resolved = NULL;
1361
+ const git_reference *resolved = NULL;
1362
+ git_reference *allocated = NULL;
1354
1363
  git_object *target = NULL;
1355
1364
  int error;
1356
1365
 
1357
1366
  assert(ref);
1358
1367
 
1359
- if (ref->type == GIT_REF_OID) {
1368
+ if (ref->type == GIT_REFERENCE_DIRECT) {
1360
1369
  resolved = ref;
1361
1370
  } else {
1362
- if ((error = git_reference_resolve(&resolved, ref)) < 0)
1371
+ if ((error = git_reference_resolve(&allocated, ref)) < 0)
1363
1372
  return peel_error(error, ref, "Cannot resolve reference");
1373
+
1374
+ resolved = allocated;
1364
1375
  }
1365
1376
 
1366
1377
  /*
@@ -1369,12 +1380,12 @@ int git_reference_peel(
1369
1380
  * to a commit. So we only want to use the peeled value
1370
1381
  * if it is not zero and the target is not a tag.
1371
1382
  */
1372
- if (target_type != GIT_OBJ_TAG && !git_oid_iszero(&resolved->peel)) {
1383
+ if (target_type != GIT_OBJECT_TAG && !git_oid_is_zero(&resolved->peel)) {
1373
1384
  error = git_object_lookup(&target,
1374
- git_reference_owner(ref), &resolved->peel, GIT_OBJ_ANY);
1385
+ git_reference_owner(ref), &resolved->peel, GIT_OBJECT_ANY);
1375
1386
  } else {
1376
1387
  error = git_object_lookup(&target,
1377
- git_reference_owner(ref), &resolved->target.oid, GIT_OBJ_ANY);
1388
+ git_reference_owner(ref), &resolved->target.oid, GIT_OBJECT_ANY);
1378
1389
  }
1379
1390
 
1380
1391
  if (error < 0) {
@@ -1382,16 +1393,14 @@ int git_reference_peel(
1382
1393
  goto cleanup;
1383
1394
  }
1384
1395
 
1385
- 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)
1386
1397
  error = git_object_dup(peeled, target);
1387
1398
  else
1388
1399
  error = git_object_peel(peeled, target, target_type);
1389
1400
 
1390
1401
  cleanup:
1391
1402
  git_object_free(target);
1392
-
1393
- if (resolved != ref)
1394
- git_reference_free(resolved);
1403
+ git_reference_free(allocated);
1395
1404
 
1396
1405
  return error;
1397
1406
  }
@@ -1399,7 +1408,7 @@ cleanup:
1399
1408
  int git_reference__is_valid_name(const char *refname, unsigned int flags)
1400
1409
  {
1401
1410
  if (git_reference__normalize_name(NULL, refname, flags) < 0) {
1402
- giterr_clear();
1411
+ git_error_clear();
1403
1412
  return false;
1404
1413
  }
1405
1414
 
@@ -1408,7 +1417,7 @@ int git_reference__is_valid_name(const char *refname, unsigned int flags)
1408
1417
 
1409
1418
  int git_reference_is_valid_name(const char *refname)
1410
1419
  {
1411
- 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);
1412
1421
  }
1413
1422
 
1414
1423
  const char *git_reference__shorthand(const char *name)
@@ -1430,3 +1439,27 @@ const char *git_reference_shorthand(const git_reference *ref)
1430
1439
  {
1431
1440
  return git_reference__shorthand(ref->name);
1432
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
+ }
@@ -55,8 +55,8 @@ extern bool git_reference__enable_symbolic_ref_target_validation;
55
55
  #define GIT_STASH_FILE "stash"
56
56
  #define GIT_REFS_STASH_FILE GIT_REFS_DIR GIT_STASH_FILE
57
57
 
58
- #define GIT_REF_FORMAT__PRECOMPOSE_UNICODE (1u << 16)
59
- #define GIT_REF_FORMAT__VALIDATION_DISABLE (1u << 15)
58
+ #define GIT_REFERENCE_FORMAT__PRECOMPOSE_UNICODE (1u << 16)
59
+ #define GIT_REFERENCE_FORMAT__VALIDATION_DISABLE (1u << 15)
60
60
 
61
61
  #define GIT_REFNAME_MAX 1024
62
62
 
@@ -64,7 +64,7 @@ typedef char git_refname_t[GIT_REFNAME_MAX];
64
64
 
65
65
  struct git_reference {
66
66
  git_refdb *db;
67
- git_ref_t type;
67
+ git_reference_t type;
68
68
 
69
69
  union {
70
70
  git_oid oid;
@@ -136,4 +136,6 @@ int git_reference__update_for_commit(
136
136
  const git_oid *id,
137
137
  const char *operation);
138
138
 
139
+ int git_reference__is_unborn_head(bool *unborn, const git_reference *ref, git_repository *repo);
140
+
139
141
  #endif