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
@@ -19,11 +19,12 @@
19
19
  #include "array.h"
20
20
  #include "cache.h"
21
21
  #include "refs.h"
22
- #include "buffer.h"
22
+ #include "str.h"
23
23
  #include "object.h"
24
24
  #include "attrcache.h"
25
25
  #include "submodule.h"
26
26
  #include "diff_driver.h"
27
+ #include "grafts.h"
27
28
 
28
29
  #define DOT_GIT ".git"
29
30
  #define GIT_DIR DOT_GIT "/"
@@ -34,6 +35,7 @@
34
35
  #define GIT_DIR_SHORTNAME "GIT~1"
35
36
 
36
37
  extern bool git_repository__fsync_gitdir;
38
+ extern bool git_repository__validate_ownership;
37
39
 
38
40
  /** Cvar cache identifiers */
39
41
  typedef enum {
@@ -100,6 +102,8 @@ typedef enum {
100
102
  /* core.trustctime */
101
103
  GIT_TRUSTCTIME_DEFAULT = GIT_CONFIGMAP_TRUE,
102
104
  /* core.abbrev */
105
+ GIT_ABBREV_FALSE = GIT_OID_MAX_HEXSIZE,
106
+ GIT_ABBREV_MINIMUM = 4,
103
107
  GIT_ABBREV_DEFAULT = 7,
104
108
  /* core.precomposeunicode */
105
109
  GIT_PRECOMPOSE_DEFAULT = GIT_CONFIGMAP_FALSE,
@@ -118,14 +122,14 @@ typedef enum {
118
122
  /* core.fsyncObjectFiles */
119
123
  GIT_FSYNCOBJECTFILES_DEFAULT = GIT_CONFIGMAP_FALSE,
120
124
  /* core.longpaths */
121
- GIT_LONGPATHS_DEFAULT = GIT_CONFIGMAP_FALSE,
125
+ GIT_LONGPATHS_DEFAULT = GIT_CONFIGMAP_FALSE
122
126
  } git_configmap_value;
123
127
 
124
128
  /* internal repository init flags */
125
129
  enum {
126
130
  GIT_REPOSITORY_INIT__HAS_DOTGIT = (1u << 16),
127
131
  GIT_REPOSITORY_INIT__NATURAL_WD = (1u << 17),
128
- GIT_REPOSITORY_INIT__IS_REINIT = (1u << 18),
132
+ GIT_REPOSITORY_INIT__IS_REINIT = (1u << 18)
129
133
  };
130
134
 
131
135
  /** Internal structure for repository object */
@@ -148,17 +152,22 @@ struct git_repository {
148
152
  char *ident_name;
149
153
  char *ident_email;
150
154
 
151
- git_array_t(git_buf) reserved_names;
155
+ git_array_t(git_str) reserved_names;
152
156
 
153
- unsigned is_bare:1;
154
- unsigned is_worktree:1;
157
+ unsigned use_env:1,
158
+ is_bare:1,
159
+ is_worktree:1;
160
+ git_oid_t oid_type;
155
161
 
156
162
  unsigned int lru_counter;
157
163
 
164
+ git_grafts *grafts;
165
+ git_grafts *shallow_grafts;
166
+
158
167
  git_atomic32 attr_session_key;
159
168
 
160
169
  intptr_t configmap_cache[GIT_CONFIGMAP_CACHE_MAX];
161
- git_strmap *submodule_cache;
170
+ git_submodule_cache *submodule_cache;
162
171
  };
163
172
 
164
173
  GIT_INLINE(git_attr_cache *) git_repository_attr_cache(git_repository *repo)
@@ -166,6 +175,7 @@ GIT_INLINE(git_attr_cache *) git_repository_attr_cache(git_repository *repo)
166
175
  return repo->attrcache;
167
176
  }
168
177
 
178
+ int git_repository_head_commit(git_commit **commit, git_repository *repo);
169
179
  int git_repository_head_tree(git_tree **tree, git_repository *repo);
170
180
  int git_repository_create_head(const char *git_dir, const char *ref_name);
171
181
 
@@ -186,6 +196,8 @@ int git_repository_config__weakptr(git_config **out, git_repository *repo);
186
196
  int git_repository_odb__weakptr(git_odb **out, git_repository *repo);
187
197
  int git_repository_refdb__weakptr(git_refdb **out, git_repository *repo);
188
198
  int git_repository_index__weakptr(git_index **out, git_repository *repo);
199
+ int git_repository_grafts__weakptr(git_grafts **out, git_repository *repo);
200
+ int git_repository_shallow_grafts__weakptr(git_grafts **out, git_repository *repo);
189
201
 
190
202
  /*
191
203
  * Configuration map cache
@@ -196,6 +208,11 @@ int git_repository_index__weakptr(git_index **out, git_repository *repo);
196
208
  int git_repository__configmap_lookup(int *out, git_repository *repo, git_configmap_item item);
197
209
  void git_repository__configmap_lookup_cache_clear(git_repository *repo);
198
210
 
211
+ /** Return the length that object names will be abbreviated to. */
212
+ int git_repository__abbrev_length(int *out, git_repository *repo);
213
+
214
+ int git_repository__item_path(git_str *out, const git_repository *repo, git_repository_item_t item);
215
+
199
216
  GIT_INLINE(int) git_repository__ensure_not_bare(
200
217
  git_repository *repo,
201
218
  const char *operation_name)
@@ -216,10 +233,10 @@ int git_repository__set_orig_head(git_repository *repo, const git_oid *orig_head
216
233
  int git_repository__cleanup_files(git_repository *repo, const char *files[], size_t files_len);
217
234
 
218
235
  /* The default "reserved names" for a repository */
219
- extern git_buf git_repository__reserved_names_win32[];
236
+ extern git_str git_repository__reserved_names_win32[];
220
237
  extern size_t git_repository__reserved_names_win32_len;
221
238
 
222
- extern git_buf git_repository__reserved_names_posix[];
239
+ extern git_str git_repository__reserved_names_posix[];
223
240
  extern size_t git_repository__reserved_names_posix_len;
224
241
 
225
242
  /*
@@ -233,13 +250,16 @@ extern size_t git_repository__reserved_names_posix_len;
233
250
  * will still be populated with good defaults.
234
251
  */
235
252
  bool git_repository__reserved_names(
236
- git_buf **out, size_t *outlen, git_repository *repo, bool include_ntfs);
253
+ git_str **out, size_t *outlen, git_repository *repo, bool include_ntfs);
254
+
255
+ int git_repository__shallow_roots(git_oid **out, size_t *out_len, git_repository *repo);
256
+ int git_repository__shallow_roots_write(git_repository *repo, git_oidarray *roots);
237
257
 
238
258
  /*
239
259
  * The default branch for the repository; the `init.defaultBranch`
240
260
  * configuration option, if set, or `master` if it is not.
241
261
  */
242
- int git_repository_initialbranch(git_buf *out, git_repository *repo);
262
+ int git_repository_initialbranch(git_str *out, git_repository *repo);
243
263
 
244
264
  /*
245
265
  * Given a relative `path`, this makes it absolute based on the
@@ -247,10 +267,21 @@ int git_repository_initialbranch(git_buf *out, git_repository *repo);
247
267
  * to ensure that the path is not longer than MAX_PATH on Windows
248
268
  * (unless `core.longpaths` is set in the repo config).
249
269
  */
250
- int git_repository_workdir_path(git_buf *out, git_repository *repo, const char *path);
270
+ int git_repository_workdir_path(git_str *out, git_repository *repo, const char *path);
251
271
 
252
272
  int git_repository__extensions(char ***out, size_t *out_len);
253
273
  int git_repository__set_extensions(const char **extensions, size_t len);
254
274
  void git_repository__free_extensions(void);
255
275
 
276
+ /*
277
+ * Set the object format (OID type) for a repository; this will set
278
+ * both the configuration and the internal value for the oid type.
279
+ */
280
+ int git_repository__set_objectformat(
281
+ git_repository *repo,
282
+ git_oid_t oid_type);
283
+
284
+ /* SHA256-aware internal functions */
285
+ int git_repository__new(git_repository **out, git_oid_t oid_type);
286
+
256
287
  #endif
@@ -111,7 +111,7 @@ static int reset(
111
111
  git_tree *tree = NULL;
112
112
  int error = 0;
113
113
  git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT;
114
- git_buf log_message = GIT_BUF_INIT;
114
+ git_str log_message = GIT_STR_INIT;
115
115
 
116
116
  GIT_ASSERT_ARG(repo);
117
117
  GIT_ASSERT_ARG(target);
@@ -144,7 +144,7 @@ static int reset(
144
144
  goto cleanup;
145
145
  }
146
146
 
147
- if ((error = git_buf_printf(&log_message, "reset: moving to %s", to)) < 0)
147
+ if ((error = git_str_printf(&log_message, "reset: moving to %s", to)) < 0)
148
148
  return error;
149
149
 
150
150
  if (reset_type == GIT_RESET_HARD) {
@@ -157,7 +157,7 @@ static int reset(
157
157
 
158
158
  /* move HEAD to the new target */
159
159
  if ((error = git_reference__update_terminal(repo, GIT_HEAD_FILE,
160
- git_object_id(commit), NULL, git_buf_cstr(&log_message))) < 0)
160
+ git_object_id(commit), NULL, git_str_cstr(&log_message))) < 0)
161
161
  goto cleanup;
162
162
 
163
163
  if (reset_type > GIT_RESET_SOFT) {
@@ -177,7 +177,7 @@ cleanup:
177
177
  git_object_free(commit);
178
178
  git_index_free(index);
179
179
  git_tree_free(tree);
180
- git_buf_dispose(&log_message);
180
+ git_str_dispose(&log_message);
181
181
 
182
182
  return error;
183
183
  }
@@ -188,7 +188,10 @@ int git_reset(
188
188
  git_reset_t reset_type,
189
189
  const git_checkout_options *checkout_opts)
190
190
  {
191
- return reset(repo, target, git_oid_tostr_s(git_object_id(target)), reset_type, checkout_opts);
191
+ char to[GIT_OID_MAX_HEXSIZE + 1];
192
+
193
+ git_oid_tostr(to, GIT_OID_MAX_HEXSIZE + 1, git_object_id(target));
194
+ return reset(repo, target, to, reset_type, checkout_opts);
192
195
  }
193
196
 
194
197
  int git_reset_from_annotated(
@@ -25,10 +25,10 @@ static int write_revert_head(
25
25
  const char *commit_oidstr)
26
26
  {
27
27
  git_filebuf file = GIT_FILEBUF_INIT;
28
- git_buf file_path = GIT_BUF_INIT;
28
+ git_str file_path = GIT_STR_INIT;
29
29
  int error = 0;
30
30
 
31
- if ((error = git_buf_joinpath(&file_path, repo->gitdir, GIT_REVERT_HEAD_FILE)) >= 0 &&
31
+ if ((error = git_str_joinpath(&file_path, repo->gitdir, GIT_REVERT_HEAD_FILE)) >= 0 &&
32
32
  (error = git_filebuf_open(&file, file_path.ptr, GIT_FILEBUF_CREATE_LEADING_DIRS, GIT_REVERT_FILE_MODE)) >= 0 &&
33
33
  (error = git_filebuf_printf(&file, "%s\n", commit_oidstr)) >= 0)
34
34
  error = git_filebuf_commit(&file);
@@ -36,7 +36,7 @@ static int write_revert_head(
36
36
  if (error < 0)
37
37
  git_filebuf_cleanup(&file);
38
38
 
39
- git_buf_dispose(&file_path);
39
+ git_str_dispose(&file_path);
40
40
 
41
41
  return error;
42
42
  }
@@ -47,10 +47,10 @@ static int write_merge_msg(
47
47
  const char *commit_msgline)
48
48
  {
49
49
  git_filebuf file = GIT_FILEBUF_INIT;
50
- git_buf file_path = GIT_BUF_INIT;
50
+ git_str file_path = GIT_STR_INIT;
51
51
  int error = 0;
52
52
 
53
- if ((error = git_buf_joinpath(&file_path, repo->gitdir, GIT_MERGE_MSG_FILE)) < 0 ||
53
+ if ((error = git_str_joinpath(&file_path, repo->gitdir, GIT_MERGE_MSG_FILE)) < 0 ||
54
54
  (error = git_filebuf_open(&file, file_path.ptr, GIT_FILEBUF_CREATE_LEADING_DIRS, GIT_REVERT_FILE_MODE)) < 0 ||
55
55
  (error = git_filebuf_printf(&file, "Revert \"%s\"\n\nThis reverts commit %s.\n",
56
56
  commit_msgline, commit_oidstr)) < 0)
@@ -62,7 +62,7 @@ cleanup:
62
62
  if (error < 0)
63
63
  git_filebuf_cleanup(&file);
64
64
 
65
- git_buf_dispose(&file_path);
65
+ git_str_dispose(&file_path);
66
66
 
67
67
  return error;
68
68
  }
@@ -74,8 +74,7 @@ static int revert_normalize_opts(
74
74
  const char *their_label)
75
75
  {
76
76
  int error = 0;
77
- unsigned int default_checkout_strategy = GIT_CHECKOUT_SAFE |
78
- GIT_CHECKOUT_ALLOW_CONFLICTS;
77
+ unsigned int default_checkout_strategy = GIT_CHECKOUT_ALLOW_CONFLICTS;
79
78
 
80
79
  GIT_UNUSED(repo);
81
80
 
@@ -107,12 +106,10 @@ static int revert_state_cleanup(git_repository *repo)
107
106
 
108
107
  static int revert_seterr(git_commit *commit, const char *fmt)
109
108
  {
110
- char commit_oidstr[GIT_OID_HEXSZ + 1];
109
+ char commit_id[GIT_OID_MAX_HEXSIZE + 1];
111
110
 
112
- git_oid_fmt(commit_oidstr, git_commit_id(commit));
113
- commit_oidstr[GIT_OID_HEXSZ] = '\0';
114
-
115
- git_error_set(GIT_ERROR_REVERT, fmt, commit_oidstr);
111
+ git_oid_tostr(commit_id, GIT_OID_MAX_HEXSIZE + 1, git_commit_id(commit));
112
+ git_error_set(GIT_ERROR_REVERT, fmt, commit_id);
116
113
 
117
114
  return -1;
118
115
  }
@@ -176,9 +173,9 @@ int git_revert(
176
173
  git_revert_options opts;
177
174
  git_reference *our_ref = NULL;
178
175
  git_commit *our_commit = NULL;
179
- char commit_oidstr[GIT_OID_HEXSZ + 1];
176
+ char commit_id[GIT_OID_MAX_HEXSIZE + 1];
180
177
  const char *commit_msg;
181
- git_buf their_label = GIT_BUF_INIT;
178
+ git_str their_label = GIT_STR_INIT;
182
179
  git_index *index = NULL;
183
180
  git_indexwriter indexwriter = GIT_INDEXWRITER_INIT;
184
181
  int error;
@@ -191,19 +188,18 @@ int git_revert(
191
188
  if ((error = git_repository__ensure_not_bare(repo, "revert")) < 0)
192
189
  return error;
193
190
 
194
- git_oid_fmt(commit_oidstr, git_commit_id(commit));
195
- commit_oidstr[GIT_OID_HEXSZ] = '\0';
191
+ git_oid_tostr(commit_id, GIT_OID_MAX_HEXSIZE + 1, git_commit_id(commit));
196
192
 
197
193
  if ((commit_msg = git_commit_summary(commit)) == NULL) {
198
194
  error = -1;
199
195
  goto on_error;
200
196
  }
201
197
 
202
- if ((error = git_buf_printf(&their_label, "parent of %.7s... %s", commit_oidstr, commit_msg)) < 0 ||
203
- (error = revert_normalize_opts(repo, &opts, given_opts, git_buf_cstr(&their_label))) < 0 ||
198
+ if ((error = git_str_printf(&their_label, "parent of %.7s... %s", commit_id, commit_msg)) < 0 ||
199
+ (error = revert_normalize_opts(repo, &opts, given_opts, git_str_cstr(&their_label))) < 0 ||
204
200
  (error = git_indexwriter_init_for_operation(&indexwriter, repo, &opts.checkout_opts.checkout_strategy)) < 0 ||
205
- (error = write_revert_head(repo, commit_oidstr)) < 0 ||
206
- (error = write_merge_msg(repo, commit_oidstr, commit_msg)) < 0 ||
201
+ (error = write_revert_head(repo, commit_id)) < 0 ||
202
+ (error = write_merge_msg(repo, commit_id, commit_msg)) < 0 ||
207
203
  (error = git_repository_head(&our_ref, repo)) < 0 ||
208
204
  (error = git_reference_peel((git_object **)&our_commit, our_ref, GIT_OBJECT_COMMIT)) < 0 ||
209
205
  (error = git_revert_commit(&index, repo, commit, our_commit, opts.mainline, &opts.merge_opts)) < 0 ||
@@ -223,7 +219,7 @@ done:
223
219
  git_index_free(index);
224
220
  git_commit_free(our_commit);
225
221
  git_reference_free(our_ref);
226
- git_buf_dispose(&their_label);
222
+ git_str_dispose(&their_label);
227
223
 
228
224
  return error;
229
225
  }
@@ -7,28 +7,36 @@
7
7
 
8
8
  #include "common.h"
9
9
 
10
- #include "buffer.h"
10
+ #include "str.h"
11
11
  #include "tree.h"
12
12
  #include "refdb.h"
13
13
  #include "regexp.h"
14
+ #include "date.h"
14
15
 
15
16
  #include "git2.h"
16
17
 
17
- static int maybe_sha_or_abbrev(git_object **out, git_repository *repo, const char *spec, size_t speclen)
18
+ static int maybe_sha_or_abbrev(
19
+ git_object **out,
20
+ git_repository *repo,
21
+ const char *spec,
22
+ size_t speclen)
18
23
  {
19
24
  git_oid oid;
20
25
 
21
- if (git_oid_fromstrn(&oid, spec, speclen) < 0)
26
+ if (git_oid__fromstrn(&oid, spec, speclen, repo->oid_type) < 0)
22
27
  return GIT_ENOTFOUND;
23
28
 
24
29
  return git_object_lookup_prefix(out, repo, &oid, speclen, GIT_OBJECT_ANY);
25
30
  }
26
31
 
27
- static int maybe_sha(git_object **out, git_repository *repo, const char *spec)
32
+ static int maybe_sha(
33
+ git_object **out,
34
+ git_repository *repo,
35
+ const char *spec)
28
36
  {
29
37
  size_t speclen = strlen(spec);
30
38
 
31
- if (speclen != GIT_OID_HEXSZ)
39
+ if (speclen != git_oid_hexsize(repo->oid_type))
32
40
  return GIT_ENOTFOUND;
33
41
 
34
42
  return maybe_sha_or_abbrev(out, repo, spec, speclen);
@@ -109,8 +117,8 @@ static int revparse_lookup_object(
109
117
  if (error != GIT_ENOTFOUND)
110
118
  return error;
111
119
 
112
- if ((strlen(spec) < GIT_OID_HEXSZ) &&
113
- ((error = maybe_abbrev(object_out, repo, spec)) != GIT_ENOTFOUND))
120
+ if ((strlen(spec) < git_oid_hexsize(repo->oid_type)) &&
121
+ ((error = maybe_abbrev(object_out, repo, spec)) != GIT_ENOTFOUND))
114
122
  return error;
115
123
 
116
124
  if ((error = maybe_describe(object_out, repo, spec)) != GIT_ENOTFOUND)
@@ -145,7 +153,7 @@ static int retrieve_previously_checked_out_branch_or_revision(git_object **out,
145
153
  size_t i, numentries, cur;
146
154
  const git_reflog_entry *entry;
147
155
  const char *msg;
148
- git_buf buf = GIT_BUF_INIT;
156
+ git_str buf = GIT_STR_INIT;
149
157
 
150
158
  cur = position;
151
159
 
@@ -179,16 +187,16 @@ static int retrieve_previously_checked_out_branch_or_revision(git_object **out,
179
187
  if (cur > 0)
180
188
  continue;
181
189
 
182
- if ((git_buf_put(&buf, msg+regexmatches[1].start, regexmatches[1].end - regexmatches[1].start)) < 0)
190
+ if ((git_str_put(&buf, msg+regexmatches[1].start, regexmatches[1].end - regexmatches[1].start)) < 0)
183
191
  goto cleanup;
184
192
 
185
- if ((error = git_reference_dwim(base_ref, repo, git_buf_cstr(&buf))) == 0)
193
+ if ((error = git_reference_dwim(base_ref, repo, git_str_cstr(&buf))) == 0)
186
194
  goto cleanup;
187
195
 
188
196
  if (error < 0 && error != GIT_ENOTFOUND)
189
197
  goto cleanup;
190
198
 
191
- error = maybe_abbrev(out, repo, git_buf_cstr(&buf));
199
+ error = maybe_abbrev(out, repo, git_str_cstr(&buf));
192
200
 
193
201
  goto cleanup;
194
202
  }
@@ -197,7 +205,7 @@ static int retrieve_previously_checked_out_branch_or_revision(git_object **out,
197
205
 
198
206
  cleanup:
199
207
  git_reference_free(ref);
200
- git_buf_dispose(&buf);
208
+ git_str_dispose(&buf);
201
209
  git_regexp_dispose(&preg);
202
210
  git_reflog_free(reflog);
203
211
  return error;
@@ -207,7 +215,7 @@ static int retrieve_oid_from_reflog(git_oid *oid, git_reference *ref, size_t ide
207
215
  {
208
216
  git_reflog *reflog;
209
217
  size_t numentries;
210
- const git_reflog_entry *entry;
218
+ const git_reflog_entry *entry = NULL;
211
219
  bool search_by_pos = (identifier <= 100000000);
212
220
 
213
221
  if (git_reflog_read(&reflog, git_reference_owner(ref), git_reference_name(ref)) < 0)
@@ -236,8 +244,15 @@ static int retrieve_oid_from_reflog(git_oid *oid, git_reference *ref, size_t ide
236
244
  break;
237
245
  }
238
246
 
239
- if (i == numentries)
240
- goto notfound;
247
+ if (i == numentries) {
248
+ if (entry == NULL)
249
+ goto notfound;
250
+
251
+ /*
252
+ * TODO: emit a warning (log for 'branch' only goes back to ...)
253
+ */
254
+ git_oid_cpy(oid, git_reflog_entry_id_new(entry));
255
+ }
241
256
  }
242
257
 
243
258
  git_reflog_free(reflog);
@@ -260,7 +275,16 @@ static int retrieve_revobject_from_reflog(git_object **out, git_reference **base
260
275
  int error = -1;
261
276
 
262
277
  if (*base_ref == NULL) {
263
- if ((error = git_reference_dwim(&ref, repo, identifier)) < 0)
278
+ /*
279
+ * When HEAD@{n} is specified, do not use dwim, which would resolve the
280
+ * reference (to the current branch that HEAD is pointing to).
281
+ */
282
+ if (position > 0 && strcmp(identifier, GIT_HEAD_FILE) == 0)
283
+ error = git_reference_lookup(&ref, repo, GIT_HEAD_FILE);
284
+ else
285
+ error = git_reference_dwim(&ref, repo, identifier);
286
+
287
+ if (error < 0)
264
288
  return error;
265
289
  } else {
266
290
  ref = *base_ref;
@@ -314,12 +338,12 @@ static int handle_at_syntax(git_object **out, git_reference **ref, const char *s
314
338
  {
315
339
  bool is_numeric;
316
340
  int parsed = 0, error = -1;
317
- git_buf identifier = GIT_BUF_INIT;
341
+ git_str identifier = GIT_STR_INIT;
318
342
  git_time_t timestamp;
319
343
 
320
344
  GIT_ASSERT(*out == NULL);
321
345
 
322
- if (git_buf_put(&identifier, spec, identifier_len) < 0)
346
+ if (git_str_put(&identifier, spec, identifier_len) < 0)
323
347
  return -1;
324
348
 
325
349
  is_numeric = !try_parse_numeric(&parsed, curly_braces_content);
@@ -331,26 +355,28 @@ static int handle_at_syntax(git_object **out, git_reference **ref, const char *s
331
355
 
332
356
  if (is_numeric) {
333
357
  if (parsed < 0)
334
- error = retrieve_previously_checked_out_branch_or_revision(out, ref, repo, git_buf_cstr(&identifier), -parsed);
358
+ error = retrieve_previously_checked_out_branch_or_revision(out, ref, repo, git_str_cstr(&identifier), -parsed);
335
359
  else
336
- error = retrieve_revobject_from_reflog(out, ref, repo, git_buf_cstr(&identifier), parsed);
360
+ error = retrieve_revobject_from_reflog(out, ref, repo, git_str_cstr(&identifier), parsed);
337
361
 
338
362
  goto cleanup;
339
363
  }
340
364
 
341
365
  if (!strcmp(curly_braces_content, "u") || !strcmp(curly_braces_content, "upstream")) {
342
- error = retrieve_remote_tracking_reference(ref, git_buf_cstr(&identifier), repo);
366
+ error = retrieve_remote_tracking_reference(ref, git_str_cstr(&identifier), repo);
343
367
 
344
368
  goto cleanup;
345
369
  }
346
370
 
347
- if (git__date_parse(&timestamp, curly_braces_content) < 0)
371
+ if (git_date_parse(&timestamp, curly_braces_content) < 0) {
372
+ error = GIT_EINVALIDSPEC;
348
373
  goto cleanup;
374
+ }
349
375
 
350
- error = retrieve_revobject_from_reflog(out, ref, repo, git_buf_cstr(&identifier), (size_t)timestamp);
376
+ error = retrieve_revobject_from_reflog(out, ref, repo, git_str_cstr(&identifier), (size_t)timestamp);
351
377
 
352
378
  cleanup:
353
- git_buf_dispose(&identifier);
379
+ git_str_dispose(&identifier);
354
380
  return error;
355
381
  }
356
382
 
@@ -520,9 +546,9 @@ static int handle_caret_curly_syntax(git_object **out, git_object *obj, const ch
520
546
  return git_object_peel(out, obj, expected_type);
521
547
  }
522
548
 
523
- static int extract_curly_braces_content(git_buf *buf, const char *spec, size_t *pos)
549
+ static int extract_curly_braces_content(git_str *buf, const char *spec, size_t *pos)
524
550
  {
525
- git_buf_clear(buf);
551
+ git_str_clear(buf);
526
552
 
527
553
  GIT_ASSERT_ARG(spec[*pos] == '^' || spec[*pos] == '@');
528
554
 
@@ -537,7 +563,7 @@ static int extract_curly_braces_content(git_buf *buf, const char *spec, size_t *
537
563
  if (spec[*pos] == '\0')
538
564
  return GIT_EINVALIDSPEC;
539
565
 
540
- if (git_buf_putc(buf, spec[(*pos)++]) < 0)
566
+ if (git_str_putc(buf, spec[(*pos)++]) < 0)
541
567
  return -1;
542
568
  }
543
569
 
@@ -546,18 +572,18 @@ static int extract_curly_braces_content(git_buf *buf, const char *spec, size_t *
546
572
  return 0;
547
573
  }
548
574
 
549
- static int extract_path(git_buf *buf, const char *spec, size_t *pos)
575
+ static int extract_path(git_str *buf, const char *spec, size_t *pos)
550
576
  {
551
- git_buf_clear(buf);
577
+ git_str_clear(buf);
552
578
 
553
579
  GIT_ASSERT_ARG(spec[*pos] == ':');
554
580
 
555
581
  (*pos)++;
556
582
 
557
- if (git_buf_puts(buf, spec + *pos) < 0)
583
+ if (git_str_puts(buf, spec + *pos) < 0)
558
584
  return -1;
559
585
 
560
- *pos += git_buf_len(buf);
586
+ *pos += git_str_len(buf);
561
587
 
562
588
  return 0;
563
589
  }
@@ -610,7 +636,7 @@ static int object_from_reference(git_object **object, git_reference *reference)
610
636
  static int ensure_base_rev_loaded(git_object **object, git_reference **reference, const char *spec, size_t identifier_len, git_repository *repo, bool allow_empty_identifier)
611
637
  {
612
638
  int error;
613
- git_buf identifier = GIT_BUF_INIT;
639
+ git_str identifier = GIT_STR_INIT;
614
640
 
615
641
  if (*object != NULL)
616
642
  return 0;
@@ -621,11 +647,11 @@ static int ensure_base_rev_loaded(git_object **object, git_reference **reference
621
647
  if (!allow_empty_identifier && identifier_len == 0)
622
648
  return GIT_EINVALIDSPEC;
623
649
 
624
- if (git_buf_put(&identifier, spec, identifier_len) < 0)
650
+ if (git_str_put(&identifier, spec, identifier_len) < 0)
625
651
  return -1;
626
652
 
627
- error = revparse_lookup_object(object, reference, repo, git_buf_cstr(&identifier));
628
- git_buf_dispose(&identifier);
653
+ error = revparse_lookup_object(object, reference, repo, git_str_cstr(&identifier));
654
+ git_str_dispose(&identifier);
629
655
 
630
656
  return error;
631
657
  }
@@ -669,12 +695,13 @@ static int revparse(
669
695
  {
670
696
  size_t pos = 0, identifier_len = 0;
671
697
  int error = -1, n;
672
- git_buf buf = GIT_BUF_INIT;
698
+ git_str buf = GIT_STR_INIT;
673
699
 
674
700
  git_reference *reference = NULL;
675
701
  git_object *base_rev = NULL;
676
702
 
677
703
  bool should_return_reference = true;
704
+ bool parsed = false;
678
705
 
679
706
  GIT_ASSERT_ARG(object_out);
680
707
  GIT_ASSERT_ARG(reference_out);
@@ -684,7 +711,7 @@ static int revparse(
684
711
  *object_out = NULL;
685
712
  *reference_out = NULL;
686
713
 
687
- while (spec[pos]) {
714
+ while (!parsed && spec[pos]) {
688
715
  switch (spec[pos]) {
689
716
  case '^':
690
717
  should_return_reference = false;
@@ -698,7 +725,7 @@ static int revparse(
698
725
  if ((error = extract_curly_braces_content(&buf, spec, &pos)) < 0)
699
726
  goto cleanup;
700
727
 
701
- if ((error = handle_caret_curly_syntax(&temp_object, base_rev, git_buf_cstr(&buf))) < 0)
728
+ if ((error = handle_caret_curly_syntax(&temp_object, base_rev, git_str_cstr(&buf))) < 0)
702
729
  goto cleanup;
703
730
 
704
731
  git_object_free(base_rev);
@@ -750,11 +777,11 @@ static int revparse(
750
777
  if ((error = ensure_base_rev_loaded(&base_rev, &reference, spec, identifier_len, repo, true)) < 0)
751
778
  goto cleanup;
752
779
 
753
- if ((error = handle_colon_syntax(&temp_object, base_rev, git_buf_cstr(&buf))) < 0)
780
+ if ((error = handle_colon_syntax(&temp_object, base_rev, git_str_cstr(&buf))) < 0)
754
781
  goto cleanup;
755
782
  } else {
756
- if (*git_buf_cstr(&buf) == '/') {
757
- if ((error = handle_grep_syntax(&temp_object, repo, NULL, git_buf_cstr(&buf) + 1)) < 0)
783
+ if (*git_str_cstr(&buf) == '/') {
784
+ if ((error = handle_grep_syntax(&temp_object, repo, NULL, git_str_cstr(&buf) + 1)) < 0)
758
785
  goto cleanup;
759
786
  } else {
760
787
 
@@ -783,12 +810,17 @@ static int revparse(
783
810
  if ((error = ensure_base_rev_is_not_known_yet(base_rev)) < 0)
784
811
  goto cleanup;
785
812
 
786
- if ((error = handle_at_syntax(&temp_object, &reference, spec, identifier_len, repo, git_buf_cstr(&buf))) < 0)
813
+ if ((error = handle_at_syntax(&temp_object, &reference, spec, identifier_len, repo, git_str_cstr(&buf))) < 0)
787
814
  goto cleanup;
788
815
 
789
816
  if (temp_object != NULL)
790
817
  base_rev = temp_object;
791
818
  break;
819
+ } else if (spec[pos + 1] == '\0' && !pos) {
820
+ spec = "HEAD";
821
+ identifier_len = 4;
822
+ parsed = true;
823
+ break;
792
824
  }
793
825
  /* fall through */
794
826
 
@@ -824,7 +856,7 @@ cleanup:
824
856
  git_reference_free(reference);
825
857
  }
826
858
 
827
- git_buf_dispose(&buf);
859
+ git_str_dispose(&buf);
828
860
  return error;
829
861
  }
830
862
 
@@ -903,7 +935,7 @@ int git_revparse(
903
935
  * allowed.
904
936
  */
905
937
  if (!git__strcmp(spec, "..")) {
906
- git_error_set(GIT_ERROR_INVALID, "Invalid pattern '..'");
938
+ git_error_set(GIT_ERROR_INVALID, "invalid pattern '..'");
907
939
  return GIT_EINVALIDSPEC;
908
940
  }
909
941