rugged 1.3.1 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (656) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/ext/rugged/extconf.rb +6 -3
  4. data/ext/rugged/rugged.c +16 -0
  5. data/ext/rugged/rugged.h +4 -0
  6. data/ext/rugged/rugged_allocator.c +0 -54
  7. data/ext/rugged/rugged_blame.c +2 -0
  8. data/ext/rugged/rugged_blob.c +3 -0
  9. data/ext/rugged/rugged_commit.c +1 -0
  10. data/ext/rugged/rugged_config.c +9 -2
  11. data/ext/rugged/rugged_diff.c +1 -0
  12. data/ext/rugged/rugged_index.c +2 -0
  13. data/ext/rugged/rugged_patch.c +1 -0
  14. data/ext/rugged/rugged_rebase.c +1 -0
  15. data/ext/rugged/rugged_reference.c +1 -0
  16. data/ext/rugged/rugged_remote.c +28 -10
  17. data/ext/rugged/rugged_repo.c +7 -9
  18. data/ext/rugged/rugged_revwalk.c +5 -1
  19. data/ext/rugged/rugged_settings.c +5 -0
  20. data/ext/rugged/rugged_submodule.c +1 -0
  21. data/ext/rugged/rugged_tag.c +1 -0
  22. data/ext/rugged/rugged_tree.c +4 -0
  23. data/lib/rugged/index.rb +1 -1
  24. data/lib/rugged/tree.rb +5 -1
  25. data/lib/rugged/version.rb +1 -1
  26. data/vendor/libgit2/AUTHORS +1 -0
  27. data/vendor/libgit2/CMakeLists.txt +141 -289
  28. data/vendor/libgit2/COPYING +301 -20
  29. data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
  30. data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
  31. data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
  32. data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
  33. data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
  34. data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
  35. data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
  36. data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
  37. data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
  38. data/vendor/libgit2/cmake/FindHTTP_Parser.cmake +17 -17
  39. data/vendor/libgit2/cmake/FindIntlIconv.cmake +51 -0
  40. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  41. data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
  42. data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
  43. data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
  44. data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
  45. data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
  46. data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
  47. data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
  48. data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
  49. data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
  50. data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
  51. data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
  52. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
  53. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +34 -0
  54. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +129 -101
  55. data/vendor/libgit2/cmake/SelectHashes.cmake +113 -54
  56. data/vendor/libgit2/cmake/SelectRegex.cmake +56 -0
  57. data/vendor/libgit2/cmake/SelectSSH.cmake +46 -0
  58. data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
  59. data/vendor/libgit2/cmake/SelectZlib.cmake +38 -0
  60. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
  61. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  62. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  63. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  64. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  65. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  66. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  67. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
  68. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  69. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  70. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  71. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +7 -5
  72. data/vendor/libgit2/deps/ntlmclient/ntlm.c +25 -25
  73. data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
  74. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
  75. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  76. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  77. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  78. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  79. data/vendor/libgit2/deps/pcre/CMakeLists.txt +89 -88
  80. data/vendor/libgit2/deps/pcre/LICENCE +5 -5
  81. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  82. data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
  83. data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
  84. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
  85. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
  86. data/vendor/libgit2/deps/xdiff/git-xdiff.h +56 -0
  87. data/vendor/libgit2/{src → deps}/xdiff/xdiff.h +15 -15
  88. data/vendor/libgit2/{src → deps}/xdiff/xdiffi.c +152 -125
  89. data/vendor/libgit2/{src → deps}/xdiff/xdiffi.h +2 -4
  90. data/vendor/libgit2/{src → deps}/xdiff/xemit.c +26 -10
  91. data/vendor/libgit2/{src → deps}/xdiff/xhistogram.c +92 -94
  92. data/vendor/libgit2/{src → deps}/xdiff/xinclude.h +1 -12
  93. data/vendor/libgit2/{src → deps}/xdiff/xmacros.h +18 -1
  94. data/vendor/libgit2/{src → deps}/xdiff/xmerge.c +126 -137
  95. data/vendor/libgit2/{src → deps}/xdiff/xpatience.c +26 -46
  96. data/vendor/libgit2/{src → deps}/xdiff/xprepare.c +24 -46
  97. data/vendor/libgit2/{src → deps}/xdiff/xutils.c +36 -8
  98. data/vendor/libgit2/{src → deps}/xdiff/xutils.h +2 -1
  99. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  100. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  101. data/vendor/libgit2/deps/zlib/adler32.c +7 -22
  102. data/vendor/libgit2/deps/zlib/crc32.c +931 -317
  103. data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
  104. data/vendor/libgit2/deps/zlib/deflate.c +428 -453
  105. data/vendor/libgit2/deps/zlib/deflate.h +51 -23
  106. data/vendor/libgit2/deps/zlib/gzguts.h +15 -19
  107. data/vendor/libgit2/deps/zlib/infback.c +19 -31
  108. data/vendor/libgit2/deps/zlib/inffast.c +15 -18
  109. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  110. data/vendor/libgit2/deps/zlib/inflate.c +75 -110
  111. data/vendor/libgit2/deps/zlib/inflate.h +3 -2
  112. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  113. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  114. data/vendor/libgit2/deps/zlib/trees.c +294 -380
  115. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  116. data/vendor/libgit2/deps/zlib/zlib.h +310 -284
  117. data/vendor/libgit2/deps/zlib/zutil.c +20 -46
  118. data/vendor/libgit2/deps/zlib/zutil.h +24 -41
  119. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  120. data/vendor/libgit2/include/git2/apply.h +43 -8
  121. data/vendor/libgit2/include/git2/attr.h +28 -6
  122. data/vendor/libgit2/include/git2/blame.h +137 -29
  123. data/vendor/libgit2/include/git2/blob.h +85 -29
  124. data/vendor/libgit2/include/git2/branch.h +25 -16
  125. data/vendor/libgit2/include/git2/buffer.h +24 -82
  126. data/vendor/libgit2/include/git2/cert.h +4 -3
  127. data/vendor/libgit2/include/git2/checkout.h +88 -34
  128. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  129. data/vendor/libgit2/include/git2/clone.h +28 -12
  130. data/vendor/libgit2/include/git2/commit.h +134 -3
  131. data/vendor/libgit2/include/git2/common.h +172 -59
  132. data/vendor/libgit2/include/git2/config.h +118 -32
  133. data/vendor/libgit2/include/git2/credential.h +32 -3
  134. data/vendor/libgit2/include/git2/credential_helpers.h +2 -0
  135. data/vendor/libgit2/include/git2/deprecated.h +141 -3
  136. data/vendor/libgit2/include/git2/describe.h +20 -3
  137. data/vendor/libgit2/include/git2/diff.h +95 -19
  138. data/vendor/libgit2/include/git2/email.h +10 -30
  139. data/vendor/libgit2/include/git2/errors.h +51 -61
  140. data/vendor/libgit2/include/git2/experimental.h +20 -0
  141. data/vendor/libgit2/include/git2/filter.h +21 -9
  142. data/vendor/libgit2/include/git2/global.h +8 -1
  143. data/vendor/libgit2/include/git2/graph.h +4 -2
  144. data/vendor/libgit2/include/git2/ignore.h +11 -1
  145. data/vendor/libgit2/include/git2/index.h +111 -11
  146. data/vendor/libgit2/include/git2/indexer.h +67 -2
  147. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  148. data/vendor/libgit2/include/git2/merge.h +70 -5
  149. data/vendor/libgit2/include/git2/message.h +4 -2
  150. data/vendor/libgit2/include/git2/net.h +3 -1
  151. data/vendor/libgit2/include/git2/notes.h +9 -6
  152. data/vendor/libgit2/include/git2/object.h +57 -7
  153. data/vendor/libgit2/include/git2/odb.h +156 -33
  154. data/vendor/libgit2/include/git2/odb_backend.h +132 -16
  155. data/vendor/libgit2/include/git2/oid.h +116 -17
  156. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  157. data/vendor/libgit2/include/git2/pack.h +37 -9
  158. data/vendor/libgit2/include/git2/patch.h +10 -3
  159. data/vendor/libgit2/include/git2/pathspec.h +10 -1
  160. data/vendor/libgit2/include/git2/proxy.h +11 -1
  161. data/vendor/libgit2/include/git2/rebase.h +18 -7
  162. data/vendor/libgit2/include/git2/refdb.h +5 -2
  163. data/vendor/libgit2/include/git2/reflog.h +4 -3
  164. data/vendor/libgit2/include/git2/refs.h +11 -8
  165. data/vendor/libgit2/include/git2/refspec.h +14 -4
  166. data/vendor/libgit2/include/git2/remote.h +295 -54
  167. data/vendor/libgit2/include/git2/repository.h +95 -25
  168. data/vendor/libgit2/include/git2/reset.h +18 -5
  169. data/vendor/libgit2/include/git2/revert.h +9 -4
  170. data/vendor/libgit2/include/git2/revparse.h +4 -4
  171. data/vendor/libgit2/include/git2/revwalk.h +7 -3
  172. data/vendor/libgit2/include/git2/signature.h +47 -2
  173. data/vendor/libgit2/include/git2/stash.h +78 -10
  174. data/vendor/libgit2/include/git2/status.h +24 -11
  175. data/vendor/libgit2/include/git2/stdint.h +87 -85
  176. data/vendor/libgit2/include/git2/strarray.h +2 -16
  177. data/vendor/libgit2/include/git2/submodule.h +27 -11
  178. data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
  179. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  180. data/vendor/libgit2/include/git2/sys/commit_graph.h +110 -59
  181. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  182. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  183. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  184. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  185. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  186. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  187. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  188. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  189. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  190. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  191. data/vendor/libgit2/include/git2/sys/midx.h +47 -4
  192. data/vendor/libgit2/include/git2/sys/odb_backend.h +10 -9
  193. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  194. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  195. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  196. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  197. data/vendor/libgit2/include/git2/sys/remote.h +53 -0
  198. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  199. data/vendor/libgit2/include/git2/sys/stream.h +26 -3
  200. data/vendor/libgit2/include/git2/sys/transport.h +87 -41
  201. data/vendor/libgit2/include/git2/tag.h +4 -1
  202. data/vendor/libgit2/include/git2/trace.h +9 -3
  203. data/vendor/libgit2/include/git2/transaction.h +3 -2
  204. data/vendor/libgit2/include/git2/transport.h +11 -3
  205. data/vendor/libgit2/include/git2/tree.h +20 -8
  206. data/vendor/libgit2/include/git2/types.h +26 -10
  207. data/vendor/libgit2/include/git2/version.h +63 -6
  208. data/vendor/libgit2/include/git2/worktree.h +30 -8
  209. data/vendor/libgit2/include/git2.h +1 -0
  210. data/vendor/libgit2/src/CMakeLists.txt +203 -420
  211. data/vendor/libgit2/src/README.md +12 -0
  212. data/vendor/libgit2/src/cli/CMakeLists.txt +56 -0
  213. data/vendor/libgit2/src/cli/README.md +26 -0
  214. data/vendor/libgit2/src/{branch.h → cli/cmd.c} +10 -8
  215. data/vendor/libgit2/src/cli/cmd.h +37 -0
  216. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  217. data/vendor/libgit2/src/cli/cmd_cat_file.c +202 -0
  218. data/vendor/libgit2/src/cli/cmd_clone.c +190 -0
  219. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  220. data/vendor/libgit2/src/cli/cmd_hash_object.c +152 -0
  221. data/vendor/libgit2/src/cli/cmd_help.c +85 -0
  222. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  223. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  224. data/vendor/libgit2/src/cli/common.c +168 -0
  225. data/vendor/libgit2/src/cli/common.h +63 -0
  226. data/vendor/libgit2/src/cli/error.h +51 -0
  227. data/vendor/libgit2/src/cli/main.c +134 -0
  228. data/vendor/libgit2/src/cli/opt.c +695 -0
  229. data/vendor/libgit2/src/cli/opt.h +367 -0
  230. data/vendor/libgit2/src/cli/opt_usage.c +263 -0
  231. data/vendor/libgit2/src/cli/opt_usage.h +40 -0
  232. data/vendor/libgit2/src/cli/progress.c +395 -0
  233. data/vendor/libgit2/src/cli/progress.h +129 -0
  234. data/vendor/libgit2/src/cli/sighandler.h +20 -0
  235. data/vendor/libgit2/src/cli/unix/sighandler.c +37 -0
  236. data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
  237. data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
  238. data/vendor/libgit2/src/libgit2/CMakeLists.txt +140 -0
  239. data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +2 -2
  240. data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
  241. data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +32 -34
  242. data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
  243. data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +48 -31
  244. data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +25 -20
  245. data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +6 -4
  246. data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +87 -46
  247. data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +5 -9
  248. data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +152 -57
  249. data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +1 -0
  250. data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -2
  251. data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
  252. data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
  253. data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
  254. data/vendor/libgit2/src/libgit2/branch.h +31 -0
  255. data/vendor/libgit2/src/libgit2/buf.c +126 -0
  256. data/vendor/libgit2/src/libgit2/buf.h +50 -0
  257. data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +22 -17
  258. data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +7 -9
  259. data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +107 -91
  260. data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -2
  261. data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +14 -15
  262. data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +254 -203
  263. data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +4 -1
  264. data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +296 -77
  265. data/vendor/libgit2/src/libgit2/commit.h +87 -0
  266. data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +246 -135
  267. data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +33 -8
  268. data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +17 -7
  269. data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +1 -0
  270. data/vendor/libgit2/src/libgit2/common.h +55 -0
  271. data/vendor/libgit2/src/{config.c → libgit2/config.c} +490 -360
  272. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  273. data/vendor/libgit2/src/{config.h → libgit2/config.h} +24 -6
  274. data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +8 -10
  275. data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +4 -5
  276. data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +212 -183
  277. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  278. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  279. data/vendor/libgit2/src/libgit2/config_mem.c +374 -0
  280. data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +37 -32
  281. data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +24 -31
  282. data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
  283. data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +62 -51
  284. data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +44 -14
  285. data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +8 -10
  286. data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +46 -55
  287. data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +5 -5
  288. data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +45 -27
  289. data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +70 -20
  290. data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
  291. data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +22 -6
  292. data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +192 -105
  293. data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
  294. data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
  295. data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +49 -16
  296. data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
  297. data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +1 -1
  298. data/vendor/libgit2/src/{email.c → libgit2/email.c} +58 -40
  299. data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
  300. data/vendor/libgit2/src/{transports/ssh.h → libgit2/experimental.h.in} +3 -4
  301. data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +105 -30
  302. data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -3
  303. data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +30 -28
  304. data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +132 -58
  305. data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
  306. data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +3 -3
  307. data/vendor/libgit2/src/libgit2/grafts.c +270 -0
  308. data/vendor/libgit2/src/libgit2/grafts.h +35 -0
  309. data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +1 -1
  310. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  311. data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
  312. data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +44 -39
  313. data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
  314. data/vendor/libgit2/src/{index.c → libgit2/index.c} +460 -276
  315. data/vendor/libgit2/src/{index.h → libgit2/index.h} +21 -5
  316. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  317. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  318. data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +208 -124
  319. data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +102 -71
  320. data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +8 -5
  321. data/vendor/libgit2/src/libgit2/libgit2.c +268 -0
  322. data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +39 -37
  323. data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +83 -73
  324. data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
  325. data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +4 -4
  326. data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -5
  327. data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
  328. data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +174 -112
  329. data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +17 -6
  330. data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +53 -57
  331. data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +9 -2
  332. data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +29 -37
  333. data/vendor/libgit2/src/{object.c → libgit2/object.c} +166 -35
  334. data/vendor/libgit2/src/{object.h → libgit2/object.h} +17 -2
  335. data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +261 -88
  336. data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
  337. data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
  338. data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +67 -22
  339. data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +162 -89
  340. data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +171 -92
  341. data/vendor/libgit2/src/libgit2/oid.h +284 -0
  342. data/vendor/libgit2/src/libgit2/oidarray.c +89 -0
  343. data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +5 -1
  344. data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +126 -66
  345. data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +28 -12
  346. data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +146 -111
  347. data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +45 -25
  348. data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +8 -4
  349. data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +1 -1
  350. data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
  351. data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +8 -1
  352. data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +51 -16
  353. data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
  354. data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +42 -34
  355. data/vendor/libgit2/src/libgit2/path.c +375 -0
  356. data/vendor/libgit2/src/libgit2/path.h +68 -0
  357. data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +7 -7
  358. data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
  359. data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
  360. data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
  361. data/vendor/libgit2/src/{push.c → libgit2/push.c} +116 -60
  362. data/vendor/libgit2/src/{push.h → libgit2/push.h} +5 -16
  363. data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
  364. data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
  365. data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +147 -147
  366. data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +639 -254
  367. data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +8 -7
  368. data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +3 -2
  369. data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +67 -39
  370. data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +8 -3
  371. data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +60 -38
  372. data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +13 -2
  373. data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +821 -454
  374. data/vendor/libgit2/src/libgit2/remote.h +101 -0
  375. data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +1377 -594
  376. data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +43 -12
  377. data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
  378. data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +18 -22
  379. data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +76 -44
  380. data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +48 -19
  381. data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +3 -3
  382. data/vendor/libgit2/src/{libgit2.c → libgit2/settings.c} +162 -95
  383. data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +6 -2
  384. data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +144 -21
  385. data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -2
  386. data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +243 -68
  387. data/vendor/libgit2/src/{status.c → libgit2/status.c} +5 -2
  388. data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
  389. data/vendor/libgit2/src/libgit2/strarray.h +25 -0
  390. data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +62 -67
  391. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +41 -24
  392. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +2 -0
  393. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +11 -3
  394. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +6 -3
  395. data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
  396. data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
  397. data/vendor/libgit2/src/libgit2/streams/socket.c +428 -0
  398. data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +3 -1
  399. data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +79 -19
  400. data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +5 -0
  401. data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +279 -220
  402. data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +10 -11
  403. data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
  404. data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +55 -18
  405. data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +74 -43
  406. data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
  407. data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
  408. data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
  409. data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +7 -7
  410. data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +27 -21
  411. data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +4 -1
  412. data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +14 -11
  413. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
  414. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +3 -5
  415. data/vendor/libgit2/src/{transports/auth_negotiate.c → libgit2/transports/auth_gssapi.c} +44 -45
  416. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +1 -1
  417. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +1 -2
  418. data/vendor/libgit2/src/{transports/auth_ntlm.c → libgit2/transports/auth_ntlmclient.c} +22 -22
  419. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
  420. data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +1 -1
  421. data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +16 -19
  422. data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +49 -24
  423. data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -11
  424. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +188 -134
  425. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
  426. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  427. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  428. data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +159 -127
  429. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +142 -165
  430. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +56 -36
  431. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +307 -74
  432. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +297 -97
  433. data/vendor/libgit2/src/libgit2/transports/ssh.c +85 -0
  434. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  435. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  436. data/vendor/libgit2/src/{transports/ssh.c → libgit2/transports/ssh_libssh2.c} +414 -268
  437. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  438. data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +101 -75
  439. data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +30 -20
  440. data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +7 -5
  441. data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +128 -110
  442. data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +7 -6
  443. data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +160 -121
  444. data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
  445. data/vendor/libgit2/src/util/CMakeLists.txt +77 -0
  446. data/vendor/libgit2/src/{alloc.c → util/alloc.c} +69 -7
  447. data/vendor/libgit2/src/util/alloc.h +65 -0
  448. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  449. data/vendor/libgit2/src/util/allocators/debugalloc.h +17 -0
  450. data/vendor/libgit2/src/util/allocators/failalloc.c +32 -0
  451. data/vendor/libgit2/src/util/allocators/failalloc.h +17 -0
  452. data/vendor/libgit2/src/util/allocators/stdalloc.c +37 -0
  453. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
  454. data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +50 -0
  455. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
  456. data/vendor/libgit2/src/{array.h → util/array.h} +25 -19
  457. data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
  458. data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +5 -1
  459. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  460. data/vendor/libgit2/src/{date.c → util/date.c} +35 -33
  461. data/vendor/libgit2/src/util/date.h +45 -0
  462. data/vendor/libgit2/src/util/errors.c +401 -0
  463. data/vendor/libgit2/src/{errors.h → util/errors.h} +22 -19
  464. data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +35 -30
  465. data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +21 -8
  466. data/vendor/libgit2/src/{path.c → util/fs_path.c} +591 -615
  467. data/vendor/libgit2/src/{path.h → util/fs_path.h} +257 -181
  468. data/vendor/libgit2/src/{futils.c → util/futils.c} +144 -95
  469. data/vendor/libgit2/src/{futils.h → util/futils.h} +40 -18
  470. data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +33 -2
  471. data/vendor/libgit2/src/{common.h → util/git2_util.h} +26 -59
  472. data/vendor/libgit2/src/util/hash/builtin.c +53 -0
  473. data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
  474. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
  475. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
  476. data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
  477. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
  478. data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
  479. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
  480. data/vendor/libgit2/src/util/hash/openssl.c +347 -0
  481. data/vendor/libgit2/src/util/hash/openssl.h +61 -0
  482. data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
  483. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
  484. data/vendor/libgit2/src/util/hash/sha.h +73 -0
  485. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
  486. data/vendor/libgit2/src/util/hash/win32.c +549 -0
  487. data/vendor/libgit2/src/util/hash/win32.h +60 -0
  488. data/vendor/libgit2/src/util/hash.c +158 -0
  489. data/vendor/libgit2/src/util/hash.h +61 -0
  490. data/vendor/libgit2/src/util/hashmap.h +424 -0
  491. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  492. data/vendor/libgit2/src/{integer.h → util/integer.h} +3 -1
  493. data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
  494. data/vendor/libgit2/src/util/net.c +1160 -0
  495. data/vendor/libgit2/src/{net.h → util/net.h} +45 -4
  496. data/vendor/libgit2/src/{pool.c → util/pool.c} +1 -1
  497. data/vendor/libgit2/src/{pool.h → util/pool.h} +6 -1
  498. data/vendor/libgit2/src/{posix.c → util/posix.c} +57 -3
  499. data/vendor/libgit2/src/{posix.h → util/posix.h} +26 -1
  500. data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +3 -3
  501. data/vendor/libgit2/src/util/process.h +222 -0
  502. data/vendor/libgit2/src/util/rand.c +230 -0
  503. data/vendor/libgit2/src/util/rand.h +37 -0
  504. data/vendor/libgit2/src/{regexp.c → util/regexp.c} +5 -5
  505. data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
  506. data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
  507. data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
  508. data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +15 -14
  509. data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +5 -5
  510. data/vendor/libgit2/src/util/staticstr.h +66 -0
  511. data/vendor/libgit2/src/{buffer.c → util/str.c} +159 -153
  512. data/vendor/libgit2/src/util/str.h +357 -0
  513. data/vendor/libgit2/src/util/strlist.c +108 -0
  514. data/vendor/libgit2/src/util/strlist.h +36 -0
  515. data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
  516. data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
  517. data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
  518. data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
  519. data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -6
  520. data/vendor/libgit2/src/util/unix/process.c +629 -0
  521. data/vendor/libgit2/src/{unix → util/unix}/realpath.c +24 -8
  522. data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
  523. data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
  524. data/vendor/libgit2/src/{util.c → util/util.c} +24 -19
  525. data/vendor/libgit2/src/{util.h → util/util.h} +30 -81
  526. data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
  527. data/vendor/libgit2/src/{vector.c → util/vector.c} +3 -3
  528. data/vendor/libgit2/src/{vector.h → util/vector.h} +4 -4
  529. data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
  530. data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
  531. data/vendor/libgit2/src/{win32 → util/win32}/error.c +1 -1
  532. data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
  533. data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
  534. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +148 -17
  535. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
  536. data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
  537. data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +42 -35
  538. data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
  539. data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
  540. data/vendor/libgit2/src/util/win32/process.c +506 -0
  541. data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
  542. data/vendor/libgit2/src/util/win32/utf-conv.c +144 -0
  543. data/vendor/libgit2/src/util/win32/utf-conv.h +127 -0
  544. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
  545. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
  546. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
  547. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
  548. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +1 -1
  549. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
  550. data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
  551. data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
  552. metadata +431 -362
  553. data/vendor/libgit2/cmake/FindIconv.cmake +0 -45
  554. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  555. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  556. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  557. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  558. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  559. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  560. data/vendor/libgit2/src/alloc.h +0 -40
  561. data/vendor/libgit2/src/allocators/failalloc.c +0 -92
  562. data/vendor/libgit2/src/allocators/failalloc.h +0 -23
  563. data/vendor/libgit2/src/allocators/stdalloc.c +0 -150
  564. data/vendor/libgit2/src/allocators/win32_leakcheck.c +0 -118
  565. data/vendor/libgit2/src/buffer.h +0 -374
  566. data/vendor/libgit2/src/commit.h +0 -46
  567. data/vendor/libgit2/src/config_entries.c +0 -237
  568. data/vendor/libgit2/src/config_entries.h +0 -24
  569. data/vendor/libgit2/src/config_mem.c +0 -220
  570. data/vendor/libgit2/src/errors.c +0 -238
  571. data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
  572. data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
  573. data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
  574. data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
  575. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  576. data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
  577. data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
  578. data/vendor/libgit2/src/hash/sha1.h +0 -38
  579. data/vendor/libgit2/src/hash.c +0 -110
  580. data/vendor/libgit2/src/hash.h +0 -46
  581. data/vendor/libgit2/src/idxmap.c +0 -157
  582. data/vendor/libgit2/src/idxmap.h +0 -177
  583. data/vendor/libgit2/src/khash.h +0 -615
  584. data/vendor/libgit2/src/libgit2.h +0 -15
  585. data/vendor/libgit2/src/message.h +0 -17
  586. data/vendor/libgit2/src/net.c +0 -540
  587. data/vendor/libgit2/src/netops.c +0 -125
  588. data/vendor/libgit2/src/netops.h +0 -68
  589. data/vendor/libgit2/src/offmap.c +0 -101
  590. data/vendor/libgit2/src/offmap.h +0 -133
  591. data/vendor/libgit2/src/oid.h +0 -51
  592. data/vendor/libgit2/src/oidarray.c +0 -43
  593. data/vendor/libgit2/src/oidmap.c +0 -107
  594. data/vendor/libgit2/src/oidmap.h +0 -128
  595. data/vendor/libgit2/src/remote.h +0 -55
  596. data/vendor/libgit2/src/streams/socket.c +0 -239
  597. data/vendor/libgit2/src/strmap.c +0 -100
  598. data/vendor/libgit2/src/strmap.h +0 -131
  599. data/vendor/libgit2/src/sysdir.c +0 -347
  600. data/vendor/libgit2/src/threadstate.c +0 -84
  601. data/vendor/libgit2/src/threadstate.h +0 -24
  602. data/vendor/libgit2/src/win32/findfile.c +0 -230
  603. data/vendor/libgit2/src/win32/findfile.h +0 -19
  604. data/vendor/libgit2/src/win32/utf-conv.c +0 -146
  605. data/vendor/libgit2/src/win32/utf-conv.h +0 -60
  606. /data/vendor/libgit2/{src → deps}/xdiff/xemit.h +0 -0
  607. /data/vendor/libgit2/{src → deps}/xdiff/xprepare.h +0 -0
  608. /data/vendor/libgit2/{src → deps}/xdiff/xtypes.h +0 -0
  609. /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
  610. /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
  611. /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
  612. /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
  613. /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
  614. /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
  615. /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
  616. /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
  617. /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
  618. /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
  619. /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
  620. /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
  621. /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
  622. /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
  623. /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
  624. /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
  625. /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
  626. /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
  627. /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
  628. /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
  629. /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
  630. /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
  631. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
  632. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
  633. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
  634. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
  635. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
  636. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
  637. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
  638. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
  639. /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
  640. /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
  641. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
  642. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
  643. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
  644. /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
  645. /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
  646. /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
  647. /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
  648. /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
  649. /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
  650. /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
  651. /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
  652. /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
  653. /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
  654. /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
  655. /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
  656. /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
@@ -13,7 +13,6 @@
13
13
  #include "refdb.h"
14
14
 
15
15
  #include "git2/sys/refdb_backend.h"
16
- #include "git2/sys/reflog.h"
17
16
 
18
17
  void git_reflog_entry__free(git_reflog_entry *entry)
19
18
  {
@@ -40,7 +39,7 @@ void git_reflog_free(git_reflog *reflog)
40
39
  git_reflog_entry__free(entry);
41
40
  }
42
41
 
43
- git_vector_free(&reflog->entries);
42
+ git_vector_dispose(&reflog->entries);
44
43
  git__free(reflog->ref_name);
45
44
  git__free(reflog);
46
45
  }
@@ -71,7 +70,11 @@ int git_reflog_write(git_reflog *reflog)
71
70
  return db->backend->reflog_write(db->backend, reflog);
72
71
  }
73
72
 
74
- int git_reflog_append(git_reflog *reflog, const git_oid *new_oid, const git_signature *committer, const char *msg)
73
+ int git_reflog_append(
74
+ git_reflog *reflog,
75
+ const git_oid *new_oid,
76
+ const git_signature *committer,
77
+ const char *msg)
75
78
  {
76
79
  const git_reflog_entry *previous;
77
80
  git_reflog_entry *entry;
@@ -104,7 +107,7 @@ int git_reflog_append(git_reflog *reflog, const git_oid *new_oid, const git_sign
104
107
  previous = git_reflog_entry_byindex(reflog, 0);
105
108
 
106
109
  if (previous == NULL)
107
- git_oid_fromstr(&entry->oid_old, GIT_OID_HEX_ZERO);
110
+ git_oid_clear(&entry->oid_old, reflog->oid_type);
108
111
  else
109
112
  git_oid_cpy(&entry->oid_old, &previous->oid_cur);
110
113
 
@@ -219,9 +222,7 @@ int git_reflog_drop(git_reflog *reflog, size_t idx, int rewrite_previous_entry)
219
222
  /* If the oldest entry has just been removed... */
220
223
  if (idx == entrycount - 1) {
221
224
  /* ...clear the oid_old member of the "new" oldest entry */
222
- if (git_oid_fromstr(&entry->oid_old, GIT_OID_HEX_ZERO) < 0)
223
- return -1;
224
-
225
+ git_oid_clear(&entry->oid_old, reflog->oid_type);
225
226
  return 0;
226
227
  }
227
228
 
@@ -16,8 +16,6 @@
16
16
  #define GIT_REFLOG_DIR_MODE 0777
17
17
  #define GIT_REFLOG_FILE_MODE 0666
18
18
 
19
- #define GIT_REFLOG_SIZE_MIN (2*GIT_OID_HEXSZ+2+17)
20
-
21
19
  struct git_reflog_entry {
22
20
  git_oid oid_old;
23
21
  git_oid oid_cur;
@@ -30,6 +28,7 @@ struct git_reflog_entry {
30
28
  struct git_reflog {
31
29
  git_refdb *db;
32
30
  char *ref_name;
31
+ git_oid_t oid_type;
33
32
  git_vector entries;
34
33
  };
35
34
 
@@ -38,4 +37,6 @@ GIT_INLINE(size_t) reflog_inverse_index(size_t idx, size_t total)
38
37
  return (total - 1) - idx;
39
38
  }
40
39
 
40
+ void git_reflog_entry__free(git_reflog_entry *entry);
41
+
41
42
  #endif
@@ -72,6 +72,7 @@ git_reference *git_reference__alloc(
72
72
  const git_oid *oid,
73
73
  const git_oid *peel)
74
74
  {
75
+ git_oid_t oid_type;
75
76
  git_reference *ref;
76
77
 
77
78
  GIT_ASSERT_ARG_WITH_RETVAL(name, NULL);
@@ -84,8 +85,16 @@ git_reference *git_reference__alloc(
84
85
  ref->type = GIT_REFERENCE_DIRECT;
85
86
  git_oid_cpy(&ref->target.oid, oid);
86
87
 
88
+ #ifdef GIT_EXPERIMENTAL_SHA256
89
+ oid_type = oid->type;
90
+ #else
91
+ oid_type = GIT_OID_SHA1;
92
+ #endif
93
+
87
94
  if (peel != NULL)
88
95
  git_oid_cpy(&ref->peel, peel);
96
+ else
97
+ git_oid_clear(&ref->peel, oid_type);
89
98
 
90
99
  return ref;
91
100
  }
@@ -247,7 +256,7 @@ int git_reference_dwim(git_reference **out, git_repository *repo, const char *re
247
256
  int error = 0, i, valid;
248
257
  bool fallbackmode = true, foundvalid = false;
249
258
  git_reference *ref;
250
- git_buf refnamebuf = GIT_BUF_INIT, name = GIT_BUF_INIT;
259
+ git_str refnamebuf = GIT_STR_INIT, name = GIT_STR_INIT;
251
260
 
252
261
  static const char *formatters[] = {
253
262
  "%s",
@@ -260,18 +269,18 @@ int git_reference_dwim(git_reference **out, git_repository *repo, const char *re
260
269
  };
261
270
 
262
271
  if (*refname)
263
- git_buf_puts(&name, refname);
272
+ git_str_puts(&name, refname);
264
273
  else {
265
- git_buf_puts(&name, GIT_HEAD_FILE);
274
+ git_str_puts(&name, GIT_HEAD_FILE);
266
275
  fallbackmode = false;
267
276
  }
268
277
 
269
278
  for (i = 0; formatters[i] && (fallbackmode || i == 0); i++) {
270
279
 
271
- git_buf_clear(&refnamebuf);
280
+ git_str_clear(&refnamebuf);
272
281
 
273
- if ((error = git_buf_printf(&refnamebuf, formatters[i], git_buf_cstr(&name))) < 0 ||
274
- (error = git_reference_name_is_valid(&valid, git_buf_cstr(&refnamebuf))) < 0)
282
+ if ((error = git_str_printf(&refnamebuf, formatters[i], git_str_cstr(&name))) < 0 ||
283
+ (error = git_reference_name_is_valid(&valid, git_str_cstr(&refnamebuf))) < 0)
275
284
  goto cleanup;
276
285
 
277
286
  if (!valid) {
@@ -280,7 +289,7 @@ int git_reference_dwim(git_reference **out, git_repository *repo, const char *re
280
289
  }
281
290
  foundvalid = true;
282
291
 
283
- error = git_reference_lookup_resolved(&ref, repo, git_buf_cstr(&refnamebuf), -1);
292
+ error = git_reference_lookup_resolved(&ref, repo, git_str_cstr(&refnamebuf), -1);
284
293
 
285
294
  if (!error) {
286
295
  *out = ref;
@@ -296,14 +305,14 @@ cleanup:
296
305
  if (error && !foundvalid) {
297
306
  /* never found a valid reference name */
298
307
  git_error_set(GIT_ERROR_REFERENCE,
299
- "could not use '%s' as valid reference name", git_buf_cstr(&name));
308
+ "could not use '%s' as valid reference name", git_str_cstr(&name));
300
309
  }
301
310
 
302
311
  if (error == GIT_ENOTFOUND)
303
312
  git_error_set(GIT_ERROR_REFERENCE, "no reference found for shorthand '%s'", refname);
304
313
 
305
- git_buf_dispose(&name);
306
- git_buf_dispose(&refnamebuf);
314
+ git_str_dispose(&name);
315
+ git_str_dispose(&refnamebuf);
307
316
  return error;
308
317
  }
309
318
 
@@ -799,7 +808,7 @@ int git_reference_list(
799
808
 
800
809
  if (git_reference_foreach_name(
801
810
  repo, &cb__reflist_add, (void *)&ref_list) < 0) {
802
- git_vector_free(&ref_list);
811
+ git_vector_dispose(&ref_list);
803
812
  return -1;
804
813
  }
805
814
 
@@ -826,17 +835,20 @@ static int is_valid_ref_char(char ch)
826
835
  }
827
836
  }
828
837
 
829
- static int ensure_segment_validity(const char *name, char may_contain_glob)
838
+ static int ensure_segment_validity(const char *name, char may_contain_glob, bool allow_caret_prefix)
830
839
  {
831
840
  const char *current = name;
841
+ const char *start = current;
832
842
  char prev = '\0';
833
843
  const int lock_len = (int)strlen(GIT_FILELOCK_EXTENSION);
834
844
  int segment_len;
835
845
 
836
846
  if (*current == '.')
837
847
  return -1; /* Refname starts with "." */
848
+ if (allow_caret_prefix && *current == '^')
849
+ start++;
838
850
 
839
- for (current = name; ; current++) {
851
+ for (current = start; ; current++) {
840
852
  if (*current == '\0' || *current == '/')
841
853
  break;
842
854
 
@@ -868,7 +880,7 @@ static int ensure_segment_validity(const char *name, char may_contain_glob)
868
880
  return segment_len;
869
881
  }
870
882
 
871
- static bool is_all_caps_and_underscore(const char *name, size_t len)
883
+ static bool is_valid_normalized_name(const char *name, size_t len)
872
884
  {
873
885
  size_t i;
874
886
  char c;
@@ -879,6 +891,9 @@ static bool is_all_caps_and_underscore(const char *name, size_t len)
879
891
  for (i = 0; i < len; i++)
880
892
  {
881
893
  c = name[i];
894
+ if (i == 0 && c == '^')
895
+ continue; /* The first character is allowed to be "^" for negative refspecs */
896
+
882
897
  if ((c < 'A' || c > 'Z') && c != '_')
883
898
  return false;
884
899
  }
@@ -891,7 +906,7 @@ static bool is_all_caps_and_underscore(const char *name, size_t len)
891
906
 
892
907
  /* Inspired from https://github.com/git/git/blob/f06d47e7e0d9db709ee204ed13a8a7486149f494/refs.c#L36-100 */
893
908
  int git_reference__normalize_name(
894
- git_buf *buf,
909
+ git_str *buf,
895
910
  const char *name,
896
911
  unsigned int flags)
897
912
  {
@@ -899,10 +914,11 @@ int git_reference__normalize_name(
899
914
  int segment_len, segments_count = 0, error = GIT_EINVALIDSPEC;
900
915
  unsigned int process_flags;
901
916
  bool normalize = (buf != NULL);
917
+ bool allow_caret_prefix = true;
902
918
  bool validate = (flags & GIT_REFERENCE_FORMAT__VALIDATION_DISABLE) == 0;
903
919
 
904
920
  #ifdef GIT_USE_ICONV
905
- git_path_iconv_t ic = GIT_PATH_ICONV_INIT;
921
+ git_fs_path_iconv_t ic = GIT_PATH_ICONV_INIT;
906
922
  #endif
907
923
 
908
924
  GIT_ASSERT_ARG(name);
@@ -914,29 +930,29 @@ int git_reference__normalize_name(
914
930
  goto cleanup;
915
931
 
916
932
  if (normalize)
917
- git_buf_clear(buf);
933
+ git_str_clear(buf);
918
934
 
919
935
  #ifdef GIT_USE_ICONV
920
936
  if ((flags & GIT_REFERENCE_FORMAT__PRECOMPOSE_UNICODE) != 0) {
921
937
  size_t namelen = strlen(current);
922
- if ((error = git_path_iconv_init_precompose(&ic)) < 0 ||
923
- (error = git_path_iconv(&ic, &current, &namelen)) < 0)
938
+ if ((error = git_fs_path_iconv_init_precompose(&ic)) < 0 ||
939
+ (error = git_fs_path_iconv(&ic, &current, &namelen)) < 0)
924
940
  goto cleanup;
925
941
  error = GIT_EINVALIDSPEC;
926
942
  }
927
943
  #endif
928
944
 
929
945
  if (!validate) {
930
- git_buf_sets(buf, current);
946
+ git_str_sets(buf, current);
931
947
 
932
- error = git_buf_oom(buf) ? -1 : 0;
948
+ error = git_str_oom(buf) ? -1 : 0;
933
949
  goto cleanup;
934
950
  }
935
951
 
936
952
  while (true) {
937
953
  char may_contain_glob = process_flags & GIT_REFERENCE_FORMAT_REFSPEC_PATTERN;
938
954
 
939
- segment_len = ensure_segment_validity(current, may_contain_glob);
955
+ segment_len = ensure_segment_validity(current, may_contain_glob, allow_caret_prefix);
940
956
  if (segment_len < 0)
941
957
  goto cleanup;
942
958
 
@@ -949,13 +965,13 @@ int git_reference__normalize_name(
949
965
  process_flags &= ~GIT_REFERENCE_FORMAT_REFSPEC_PATTERN;
950
966
 
951
967
  if (normalize) {
952
- size_t cur_len = git_buf_len(buf);
968
+ size_t cur_len = git_str_len(buf);
953
969
 
954
- git_buf_joinpath(buf, git_buf_cstr(buf), current);
955
- git_buf_truncate(buf,
970
+ git_str_joinpath(buf, git_str_cstr(buf), current);
971
+ git_str_truncate(buf,
956
972
  cur_len + segment_len + (segments_count ? 1 : 0));
957
973
 
958
- if (git_buf_oom(buf)) {
974
+ if (git_str_oom(buf)) {
959
975
  error = -1;
960
976
  goto cleanup;
961
977
  }
@@ -972,6 +988,12 @@ int git_reference__normalize_name(
972
988
  break;
973
989
 
974
990
  current += segment_len + 1;
991
+
992
+ /*
993
+ * A caret prefix is only allowed in the first segment to signify a
994
+ * negative refspec.
995
+ */
996
+ allow_caret_prefix = false;
975
997
  }
976
998
 
977
999
  /* A refname can not be empty */
@@ -991,12 +1013,12 @@ int git_reference__normalize_name(
991
1013
 
992
1014
  if ((segments_count == 1 ) &&
993
1015
  !(flags & GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND) &&
994
- !(is_all_caps_and_underscore(name, (size_t)segment_len) ||
1016
+ !(is_valid_normalized_name(name, (size_t)segment_len) ||
995
1017
  ((flags & GIT_REFERENCE_FORMAT_REFSPEC_PATTERN) && !strcmp("*", name))))
996
1018
  goto cleanup;
997
1019
 
998
1020
  if ((segments_count > 1)
999
- && (is_all_caps_and_underscore(name, strchr(name, '/') - name)))
1021
+ && (is_valid_normalized_name(name, strchr(name, '/') - name)))
1000
1022
  goto cleanup;
1001
1023
 
1002
1024
  error = 0;
@@ -1008,10 +1030,10 @@ cleanup:
1008
1030
  "the given reference name '%s' is not valid", name);
1009
1031
 
1010
1032
  if (error && normalize)
1011
- git_buf_dispose(buf);
1033
+ git_str_dispose(buf);
1012
1034
 
1013
1035
  #ifdef GIT_USE_ICONV
1014
- git_path_iconv_clear(&ic);
1036
+ git_fs_path_iconv_clear(&ic);
1015
1037
  #endif
1016
1038
 
1017
1039
  return error;
@@ -1023,13 +1045,13 @@ int git_reference_normalize_name(
1023
1045
  const char *name,
1024
1046
  unsigned int flags)
1025
1047
  {
1026
- git_buf buf = GIT_BUF_INIT;
1048
+ git_str buf = GIT_STR_INIT;
1027
1049
  int error;
1028
1050
 
1029
1051
  if ((error = git_reference__normalize_name(&buf, name, flags)) < 0)
1030
1052
  goto cleanup;
1031
1053
 
1032
- if (git_buf_len(&buf) > buffer_size - 1) {
1054
+ if (git_str_len(&buf) > buffer_size - 1) {
1033
1055
  git_error_set(
1034
1056
  GIT_ERROR_REFERENCE,
1035
1057
  "the provided buffer is too short to hold the normalization of '%s'", name);
@@ -1037,13 +1059,13 @@ int git_reference_normalize_name(
1037
1059
  goto cleanup;
1038
1060
  }
1039
1061
 
1040
- if ((error = git_buf_copy_cstr(buffer_out, buffer_size, &buf)) < 0)
1062
+ if ((error = git_str_copy_cstr(buffer_out, buffer_size, &buf)) < 0)
1041
1063
  goto cleanup;
1042
1064
 
1043
1065
  error = 0;
1044
1066
 
1045
1067
  cleanup:
1046
- git_buf_dispose(&buf);
1068
+ git_str_dispose(&buf);
1047
1069
  return error;
1048
1070
  }
1049
1071
 
@@ -1071,6 +1093,12 @@ int git_reference_cmp(
1071
1093
  return git_oid__cmp(&ref1->target.oid, &ref2->target.oid);
1072
1094
  }
1073
1095
 
1096
+ int git_reference__cmp_cb(const void *a, const void *b)
1097
+ {
1098
+ return git_reference_cmp(
1099
+ (const git_reference *)a, (const git_reference *)b);
1100
+ }
1101
+
1074
1102
  /*
1075
1103
  * Starting with the reference given by `ref_name`, follows symbolic
1076
1104
  * references until a direct reference is found and updated the OID
@@ -1143,12 +1171,12 @@ int git_reference__update_for_commit(
1143
1171
  {
1144
1172
  git_reference *ref_new = NULL;
1145
1173
  git_commit *commit = NULL;
1146
- git_buf reflog_msg = GIT_BUF_INIT;
1174
+ git_str reflog_msg = GIT_STR_INIT;
1147
1175
  const git_signature *who;
1148
1176
  int error;
1149
1177
 
1150
1178
  if ((error = git_commit_lookup(&commit, repo, id)) < 0 ||
1151
- (error = git_buf_printf(&reflog_msg, "%s%s: %s",
1179
+ (error = git_str_printf(&reflog_msg, "%s%s: %s",
1152
1180
  operation ? operation : "commit",
1153
1181
  commit_type(commit),
1154
1182
  git_commit_summary(commit))) < 0)
@@ -1161,15 +1189,15 @@ int git_reference__update_for_commit(
1161
1189
  return error;
1162
1190
 
1163
1191
  error = reference__create(&ref_new, repo, ref->name, id, NULL, 1, who,
1164
- git_buf_cstr(&reflog_msg), &ref->target.oid, NULL);
1192
+ git_str_cstr(&reflog_msg), &ref->target.oid, NULL);
1165
1193
  }
1166
1194
  else
1167
1195
  error = git_reference__update_terminal(
1168
- repo, ref_name, id, who, git_buf_cstr(&reflog_msg));
1196
+ repo, ref_name, id, who, git_str_cstr(&reflog_msg));
1169
1197
 
1170
1198
  done:
1171
1199
  git_reference_free(ref_new);
1172
- git_buf_dispose(&reflog_msg);
1200
+ git_str_dispose(&reflog_msg);
1173
1201
  git_commit_free(commit);
1174
1202
  return error;
1175
1203
  }
@@ -12,8 +12,7 @@
12
12
  #include "git2/oid.h"
13
13
  #include "git2/refs.h"
14
14
  #include "git2/refdb.h"
15
- #include "strmap.h"
16
- #include "buffer.h"
15
+ #include "str.h"
17
16
  #include "oid.h"
18
17
 
19
18
  extern bool git_reference__enable_symbolic_ref_target_validation;
@@ -83,7 +82,7 @@ struct git_reference {
83
82
  */
84
83
  git_reference *git_reference__realloc(git_reference **ptr_to_ref, const char *name);
85
84
 
86
- int git_reference__normalize_name(git_buf *buf, const char *name, unsigned int flags);
85
+ int git_reference__normalize_name(git_str *buf, const char *name, unsigned int flags);
87
86
  int git_reference__update_terminal(git_repository *repo, const char *ref_name, const git_oid *oid, const git_signature *sig, const char *log_message);
88
87
  int git_reference__name_is_valid(int *valid, const char *name, unsigned int flags);
89
88
  int git_reference__is_branch(const char *ref_name);
@@ -92,6 +91,12 @@ int git_reference__is_tag(const char *ref_name);
92
91
  int git_reference__is_note(const char *ref_name);
93
92
  const char *git_reference__shorthand(const char *name);
94
93
 
94
+ /*
95
+ * A `git_reference_cmp` wrapper suitable for passing to generic
96
+ * comparators, like `vector_cmp` / `tsort` / etc.
97
+ */
98
+ int git_reference__cmp_cb(const void *a, const void *b);
99
+
95
100
  /**
96
101
  * Lookup a reference by name and try to resolve to an OID.
97
102
  *
@@ -7,8 +7,7 @@
7
7
 
8
8
  #include "refspec.h"
9
9
 
10
- #include "git2/errors.h"
11
-
10
+ #include "buf.h"
12
11
  #include "refs.h"
13
12
  #include "util.h"
14
13
  #include "vector.h"
@@ -23,6 +22,7 @@ int git_refspec__parse(git_refspec *refspec, const char *input, bool is_fetch)
23
22
  const char *lhs, *rhs;
24
23
  int valid = 0;
25
24
  unsigned int flags;
25
+ bool is_neg_refspec = false;
26
26
 
27
27
  GIT_ASSERT_ARG(refspec);
28
28
  GIT_ASSERT_ARG(input);
@@ -35,6 +35,9 @@ int git_refspec__parse(git_refspec *refspec, const char *input, bool is_fetch)
35
35
  refspec->force = 1;
36
36
  lhs++;
37
37
  }
38
+ if (*lhs == '^') {
39
+ is_neg_refspec = true;
40
+ }
38
41
 
39
42
  rhs = strrchr(lhs, ':');
40
43
 
@@ -63,7 +66,14 @@ int git_refspec__parse(git_refspec *refspec, const char *input, bool is_fetch)
63
66
 
64
67
  llen = (rhs ? (size_t)(rhs - lhs - 1) : strlen(lhs));
65
68
  if (1 <= llen && memchr(lhs, '*', llen)) {
66
- if ((rhs && !is_glob) || (!rhs && is_fetch))
69
+ /*
70
+ * If the lefthand side contains a glob, then one of the following must be
71
+ * true, otherwise the spec is invalid
72
+ * 1) the rhs exists and also contains a glob
73
+ * 2) it is a negative refspec (i.e. no rhs)
74
+ * 3) the rhs doesn't exist and we're fetching
75
+ */
76
+ if ((rhs && !is_glob) || (rhs && is_neg_refspec) || (!rhs && is_fetch && !is_neg_refspec))
67
77
  goto invalid;
68
78
  is_glob = 1;
69
79
  } else if (rhs && is_glob)
@@ -226,6 +236,14 @@ int git_refspec_force(const git_refspec *refspec)
226
236
  return refspec->force;
227
237
  }
228
238
 
239
+ int git_refspec_src_matches_negative(const git_refspec *refspec, const char *refname)
240
+ {
241
+ if (refspec == NULL || refspec->src == NULL || !git_refspec_is_negative(refspec))
242
+ return false;
243
+
244
+ return (wildmatch(refspec->src + 1, refname, 0) == 0);
245
+ }
246
+
229
247
  int git_refspec_src_matches(const git_refspec *refspec, const char *refname)
230
248
  {
231
249
  if (refspec == NULL || refspec->src == NULL)
@@ -243,16 +261,12 @@ int git_refspec_dst_matches(const git_refspec *refspec, const char *refname)
243
261
  }
244
262
 
245
263
  static int refspec_transform(
246
- git_buf *out, const char *from, const char *to, const char *name)
264
+ git_str *out, const char *from, const char *to, const char *name)
247
265
  {
248
266
  const char *from_star, *to_star;
249
267
  size_t replacement_len, star_offset;
250
- int error;
251
268
 
252
- if ((error = git_buf_sanitize(out)) < 0)
253
- return error;
254
-
255
- git_buf_clear(out);
269
+ git_str_clear(out);
256
270
 
257
271
  /*
258
272
  * There are two parts to each side of a refspec, the bit
@@ -269,72 +283,72 @@ static int refspec_transform(
269
283
  star_offset = from_star - from;
270
284
 
271
285
  /* the first half is copied over */
272
- git_buf_put(out, to, to_star - to);
286
+ git_str_put(out, to, to_star - to);
273
287
 
274
288
  /*
275
289
  * Copy over the name, but exclude the trailing part in "from" starting
276
290
  * after the glob
277
291
  */
278
292
  replacement_len = strlen(name + star_offset) - strlen(from_star + 1);
279
- git_buf_put(out, name + star_offset, replacement_len);
293
+ git_str_put(out, name + star_offset, replacement_len);
280
294
 
281
- return git_buf_puts(out, to_star + 1);
295
+ return git_str_puts(out, to_star + 1);
282
296
  }
283
297
 
284
298
  int git_refspec_transform(git_buf *out, const git_refspec *spec, const char *name)
285
299
  {
286
- int error;
300
+ GIT_BUF_WRAP_PRIVATE(out, git_refspec__transform, spec, name);
301
+ }
287
302
 
303
+ int git_refspec__transform(git_str *out, const git_refspec *spec, const char *name)
304
+ {
288
305
  GIT_ASSERT_ARG(out);
289
306
  GIT_ASSERT_ARG(spec);
290
307
  GIT_ASSERT_ARG(name);
291
308
 
292
- if ((error = git_buf_sanitize(out)) < 0)
293
- return error;
294
-
295
309
  if (!git_refspec_src_matches(spec, name)) {
296
310
  git_error_set(GIT_ERROR_INVALID, "ref '%s' doesn't match the source", name);
297
311
  return -1;
298
312
  }
299
313
 
300
314
  if (!spec->pattern)
301
- return git_buf_puts(out, spec->dst ? spec->dst : "");
315
+ return git_str_puts(out, spec->dst ? spec->dst : "");
302
316
 
303
317
  return refspec_transform(out, spec->src, spec->dst, name);
304
318
  }
305
319
 
306
320
  int git_refspec_rtransform(git_buf *out, const git_refspec *spec, const char *name)
307
321
  {
308
- int error;
322
+ GIT_BUF_WRAP_PRIVATE(out, git_refspec__rtransform, spec, name);
323
+ }
309
324
 
325
+ int git_refspec__rtransform(git_str *out, const git_refspec *spec, const char *name)
326
+ {
310
327
  GIT_ASSERT_ARG(out);
311
328
  GIT_ASSERT_ARG(spec);
312
329
  GIT_ASSERT_ARG(name);
313
330
 
314
- if ((error = git_buf_sanitize(out)) < 0)
315
- return error;
316
-
317
331
  if (!git_refspec_dst_matches(spec, name)) {
318
332
  git_error_set(GIT_ERROR_INVALID, "ref '%s' doesn't match the destination", name);
319
333
  return -1;
320
334
  }
321
335
 
322
336
  if (!spec->pattern)
323
- return git_buf_puts(out, spec->src);
337
+ return git_str_puts(out, spec->src);
324
338
 
325
339
  return refspec_transform(out, spec->dst, spec->src, name);
326
340
  }
327
341
 
328
- int git_refspec__serialize(git_buf *out, const git_refspec *refspec)
342
+ int git_refspec__serialize(git_str *out, const git_refspec *refspec)
329
343
  {
330
344
  if (refspec->force)
331
- git_buf_putc(out, '+');
345
+ git_str_putc(out, '+');
332
346
 
333
- git_buf_printf(out, "%s:%s",
347
+ git_str_printf(out, "%s:%s",
334
348
  refspec->src != NULL ? refspec->src : "",
335
349
  refspec->dst != NULL ? refspec->dst : "");
336
350
 
337
- return git_buf_oom(out) == false;
351
+ return git_str_oom(out) == false;
338
352
  }
339
353
 
340
354
  int git_refspec_is_wildcard(const git_refspec *spec)
@@ -345,6 +359,14 @@ int git_refspec_is_wildcard(const git_refspec *spec)
345
359
  return (spec->src[strlen(spec->src) - 1] == '*');
346
360
  }
347
361
 
362
+ int git_refspec_is_negative(const git_refspec *spec)
363
+ {
364
+ GIT_ASSERT_ARG(spec);
365
+ GIT_ASSERT_ARG(spec->src);
366
+
367
+ return (spec->src[0] == '^' && spec->dst == NULL);
368
+ }
369
+
348
370
  git_direction git_refspec_direction(const git_refspec *spec)
349
371
  {
350
372
  GIT_ASSERT_ARG(spec);
@@ -354,7 +376,7 @@ git_direction git_refspec_direction(const git_refspec *spec)
354
376
 
355
377
  int git_refspec__dwim_one(git_vector *out, git_refspec *spec, git_vector *refs)
356
378
  {
357
- git_buf buf = GIT_BUF_INIT;
379
+ git_str buf = GIT_STR_INIT;
358
380
  size_t j, pos;
359
381
  git_remote_head key;
360
382
  git_refspec *cur;
@@ -382,14 +404,14 @@ int git_refspec__dwim_one(git_vector *out, git_refspec *spec, git_vector *refs)
382
404
  /* shorthand on the lhs */
383
405
  if (git__prefixcmp(spec->src, GIT_REFS_DIR)) {
384
406
  for (j = 0; formatters[j]; j++) {
385
- git_buf_clear(&buf);
386
- git_buf_printf(&buf, formatters[j], spec->src);
387
- GIT_ERROR_CHECK_ALLOC_BUF(&buf);
407
+ git_str_clear(&buf);
408
+ git_str_printf(&buf, formatters[j], spec->src);
409
+ GIT_ERROR_CHECK_ALLOC_STR(&buf);
388
410
 
389
- key.name = (char *) git_buf_cstr(&buf);
411
+ key.name = (char *) git_str_cstr(&buf);
390
412
  if (!git_vector_search(&pos, refs, &key)) {
391
413
  /* we found something to match the shorthand, set src to that */
392
- cur->src = git_buf_detach(&buf);
414
+ cur->src = git_str_detach(&buf);
393
415
  }
394
416
  }
395
417
  }
@@ -403,18 +425,18 @@ int git_refspec__dwim_one(git_vector *out, git_refspec *spec, git_vector *refs)
403
425
  if (spec->dst && git__prefixcmp(spec->dst, GIT_REFS_DIR)) {
404
426
  /* if it starts with "remotes" then we just prepend "refs/" */
405
427
  if (!git__prefixcmp(spec->dst, "remotes/")) {
406
- git_buf_puts(&buf, GIT_REFS_DIR);
428
+ git_str_puts(&buf, GIT_REFS_DIR);
407
429
  } else {
408
- git_buf_puts(&buf, GIT_REFS_HEADS_DIR);
430
+ git_str_puts(&buf, GIT_REFS_HEADS_DIR);
409
431
  }
410
432
 
411
- git_buf_puts(&buf, spec->dst);
412
- GIT_ERROR_CHECK_ALLOC_BUF(&buf);
433
+ git_str_puts(&buf, spec->dst);
434
+ GIT_ERROR_CHECK_ALLOC_STR(&buf);
413
435
 
414
- cur->dst = git_buf_detach(&buf);
436
+ cur->dst = git_str_detach(&buf);
415
437
  }
416
438
 
417
- git_buf_dispose(&buf);
439
+ git_str_dispose(&buf);
418
440
 
419
441
  if (cur->dst == NULL && spec->dst != NULL) {
420
442
  cur->dst = git__strdup(spec->dst);