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
@@ -4,16 +4,15 @@
4
4
  * This file is part of libgit2, distributed under the GNU GPL v2 with
5
5
  * a Linking Exception. For full terms see the included COPYING file.
6
6
  */
7
- #ifndef INCLUDE_path_h__
8
- #define INCLUDE_path_h__
7
+ #ifndef INCLUDE_fs_path_h__
8
+ #define INCLUDE_fs_path_h__
9
9
 
10
- #include "common.h"
10
+ #include "git2_util.h"
11
11
 
12
12
  #include "posix.h"
13
- #include "buffer.h"
13
+ #include "str.h"
14
14
  #include "vector.h"
15
-
16
- #include "git2/sys/path.h"
15
+ #include "utf8.h"
17
16
 
18
17
  /**
19
18
  * Path manipulation utils
@@ -32,16 +31,16 @@
32
31
  * the string ".". If path is a null pointer or points to an empty string,
33
32
  * dirname() shall return a pointer to the string "." .
34
33
  *
35
- * The `git_path_dirname` implementation is thread safe. The returned
34
+ * The `git_fs_path_dirname` implementation is thread safe. The returned
36
35
  * string must be manually free'd.
37
36
  *
38
- * The `git_path_dirname_r` implementation writes the dirname to a `git_buf`
37
+ * The `git_fs_path_dirname_r` implementation writes the dirname to a `git_str`
39
38
  * if the buffer pointer is not NULL.
40
39
  * It returns an error code < 0 if there is an allocation error, otherwise
41
40
  * the length of the dirname (which will be > 0).
42
41
  */
43
- extern char *git_path_dirname(const char *path);
44
- extern int git_path_dirname_r(git_buf *buffer, const char *path);
42
+ extern char *git_fs_path_dirname(const char *path);
43
+ extern int git_fs_path_dirname_r(git_str *buffer, const char *path);
45
44
 
46
45
  /*
47
46
  * This function returns the basename of the file, which is the last
@@ -52,20 +51,20 @@ extern int git_path_dirname_r(git_buf *buffer, const char *path);
52
51
  * Trailing slashes and backslashes are significant: the basename of
53
52
  * c:/foo/bar/ is an empty string after the rightmost slash.
54
53
  *
55
- * The `git_path_basename` implementation is thread safe. The returned
54
+ * The `git_fs_path_basename` implementation is thread safe. The returned
56
55
  * string must be manually free'd.
57
56
  *
58
- * The `git_path_basename_r` implementation writes the basename to a `git_buf`.
57
+ * The `git_fs_path_basename_r` implementation writes the basename to a `git_str`.
59
58
  * It returns an error code < 0 if there is an allocation error, otherwise
60
59
  * the length of the basename (which will be >= 0).
61
60
  */
62
- extern char *git_path_basename(const char *path);
63
- extern int git_path_basename_r(git_buf *buffer, const char *path);
61
+ extern char *git_fs_path_basename(const char *path);
62
+ extern int git_fs_path_basename_r(git_str *buffer, const char *path);
64
63
 
65
64
  /* Return the offset of the start of the basename. Unlike the other
66
65
  * basename functions, this returns 0 if the path is empty.
67
66
  */
68
- extern size_t git_path_basename_offset(git_buf *buffer);
67
+ extern size_t git_fs_path_basename_offset(git_str *buffer);
69
68
 
70
69
  /**
71
70
  * Find offset to root of path if path has one.
@@ -75,22 +74,45 @@ extern size_t git_path_basename_offset(git_buf *buffer);
75
74
  * "c:/windows/rooted/path" returns 2). If the path is not rooted, this
76
75
  * returns -1.
77
76
  */
78
- extern int git_path_root(const char *path);
77
+ extern int git_fs_path_root(const char *path);
79
78
 
80
79
  /**
81
80
  * Ensure path has a trailing '/'.
82
81
  */
83
- extern int git_path_to_dir(git_buf *path);
82
+ extern int git_fs_path_to_dir(git_str *path);
84
83
 
85
84
  /**
86
85
  * Ensure string has a trailing '/' if there is space for it.
87
86
  */
88
- extern void git_path_string_to_dir(char *path, size_t size);
87
+ extern void git_fs_path_string_to_dir(char *path, size_t size);
88
+
89
+ /**
90
+ * Provides the length of the given path string with no trailing
91
+ * slashes.
92
+ */
93
+ size_t git_fs_path_dirlen(const char *path);
94
+
95
+ /**
96
+ * Returns nonzero if the given path is a filesystem root; on Windows, this
97
+ * means a drive letter (eg `A:/`, `C:\`). On POSIX this is `/`.
98
+ */
99
+ GIT_INLINE(int) git_fs_path_is_root(const char *name)
100
+ {
101
+ #ifdef GIT_WIN32
102
+ if (((name[0] >= 'A' && name[0] <= 'Z') || (name[0] >= 'a' && name[0] <= 'z')) &&
103
+ name[1] == ':' &&
104
+ (name[2] == '/' || name[2] == '\\') &&
105
+ name[3] == '\0')
106
+ return 1;
107
+ #endif
108
+
109
+ return (name[0] == '/' && name[1] == '\0');
110
+ }
89
111
 
90
112
  /**
91
113
  * Taken from git.git; returns nonzero if the given path is "." or "..".
92
114
  */
93
- GIT_INLINE(int) git_path_is_dot_or_dotdot(const char *name)
115
+ GIT_INLINE(int) git_fs_path_is_dot_or_dotdot(const char *name)
94
116
  {
95
117
  return (name[0] == '.' &&
96
118
  (name[1] == '\0' ||
@@ -98,23 +120,23 @@ GIT_INLINE(int) git_path_is_dot_or_dotdot(const char *name)
98
120
  }
99
121
 
100
122
  #ifdef GIT_WIN32
101
- GIT_INLINE(int) git_path_is_dot_or_dotdotW(const wchar_t *name)
123
+ GIT_INLINE(int) git_fs_path_is_dot_or_dotdotW(const wchar_t *name)
102
124
  {
103
125
  return (name[0] == L'.' &&
104
126
  (name[1] == L'\0' ||
105
127
  (name[1] == L'.' && name[2] == L'\0')));
106
128
  }
107
129
 
108
- #define git_path_is_absolute(p) \
130
+ #define git_fs_path_is_absolute(p) \
109
131
  (git__isalpha((p)[0]) && (p)[1] == ':' && ((p)[2] == '\\' || (p)[2] == '/'))
110
132
 
111
- #define git_path_is_dirsep(p) \
133
+ #define git_fs_path_is_dirsep(p) \
112
134
  ((p) == '/' || (p) == '\\')
113
135
 
114
136
  /**
115
137
  * Convert backslashes in path to forward slashes.
116
138
  */
117
- GIT_INLINE(void) git_path_mkposix(char *path)
139
+ GIT_INLINE(void) git_fs_path_mkposix(char *path)
118
140
  {
119
141
  while (*path) {
120
142
  if (*path == '\\')
@@ -124,12 +146,12 @@ GIT_INLINE(void) git_path_mkposix(char *path)
124
146
  }
125
147
  }
126
148
  #else
127
- # define git_path_mkposix(p) /* blank */
149
+ # define git_fs_path_mkposix(p) /* blank */
128
150
 
129
- #define git_path_is_absolute(p) \
151
+ #define git_fs_path_is_absolute(p) \
130
152
  ((p)[0] == '/')
131
153
 
132
- #define git_path_is_dirsep(p) \
154
+ #define git_fs_path_is_dirsep(p) \
133
155
  ((p) == '/')
134
156
 
135
157
  #endif
@@ -137,7 +159,7 @@ GIT_INLINE(void) git_path_mkposix(char *path)
137
159
  /**
138
160
  * Check if string is a relative path (i.e. starts with "./" or "../")
139
161
  */
140
- GIT_INLINE(int) git_path_is_relative(const char *p)
162
+ GIT_INLINE(int) git_fs_path_is_relative(const char *p)
141
163
  {
142
164
  return (p[0] == '.' && (p[1] == '/' || (p[1] == '.' && p[2] == '/')));
143
165
  }
@@ -145,17 +167,17 @@ GIT_INLINE(int) git_path_is_relative(const char *p)
145
167
  /**
146
168
  * Check if string is at end of path segment (i.e. looking at '/' or '\0')
147
169
  */
148
- GIT_INLINE(int) git_path_at_end_of_segment(const char *p)
170
+ GIT_INLINE(int) git_fs_path_at_end_of_segment(const char *p)
149
171
  {
150
172
  return !*p || *p == '/';
151
173
  }
152
174
 
153
- extern int git__percent_decode(git_buf *decoded_out, const char *input);
175
+ extern int git__percent_decode(git_str *decoded_out, const char *input);
154
176
 
155
177
  /**
156
178
  * Extract path from file:// URL.
157
179
  */
158
- extern int git_path_fromurl(git_buf *local_path_out, const char *file_url);
180
+ extern int git_fs_path_fromurl(git_str *local_path_out, const char *file_url);
159
181
 
160
182
 
161
183
  /**
@@ -168,35 +190,35 @@ extern int git_path_fromurl(git_buf *local_path_out, const char *file_url);
168
190
  * Check if a file exists and can be accessed.
169
191
  * @return true or false
170
192
  */
171
- extern bool git_path_exists(const char *path);
193
+ extern bool git_fs_path_exists(const char *path);
172
194
 
173
195
  /**
174
196
  * Check if the given path points to a directory.
175
197
  * @return true or false
176
198
  */
177
- extern bool git_path_isdir(const char *path);
199
+ extern bool git_fs_path_isdir(const char *path);
178
200
 
179
201
  /**
180
202
  * Check if the given path points to a regular file.
181
203
  * @return true or false
182
204
  */
183
- extern bool git_path_isfile(const char *path);
205
+ extern bool git_fs_path_isfile(const char *path);
184
206
 
185
207
  /**
186
208
  * Check if the given path points to a symbolic link.
187
209
  * @return true or false
188
210
  */
189
- extern bool git_path_islink(const char *path);
211
+ extern bool git_fs_path_islink(const char *path);
190
212
 
191
213
  /**
192
214
  * Check if the given path is a directory, and is empty.
193
215
  */
194
- extern bool git_path_is_empty_dir(const char *path);
216
+ extern bool git_fs_path_is_empty_dir(const char *path);
195
217
 
196
218
  /**
197
219
  * Stat a file and/or link and set error if needed.
198
220
  */
199
- extern int git_path_lstat(const char *path, struct stat *st);
221
+ extern int git_fs_path_lstat(const char *path, struct stat *st);
200
222
 
201
223
  /**
202
224
  * Check if the parent directory contains the item.
@@ -205,7 +227,7 @@ extern int git_path_lstat(const char *path, struct stat *st);
205
227
  * @param item Item that might be in the directory.
206
228
  * @return 0 if item exists in directory, <0 otherwise.
207
229
  */
208
- extern bool git_path_contains(git_buf *dir, const char *item);
230
+ extern bool git_fs_path_contains(git_str *dir, const char *item);
209
231
 
210
232
  /**
211
233
  * Check if the given path contains the given subdirectory.
@@ -214,7 +236,7 @@ extern bool git_path_contains(git_buf *dir, const char *item);
214
236
  * @param subdir Subdirectory name to look for in parent
215
237
  * @return true if subdirectory exists, false otherwise.
216
238
  */
217
- extern bool git_path_contains_dir(git_buf *parent, const char *subdir);
239
+ extern bool git_fs_path_contains_dir(git_str *parent, const char *subdir);
218
240
 
219
241
  /**
220
242
  * Determine the common directory length between two paths, including
@@ -226,7 +248,7 @@ extern bool git_path_contains_dir(git_buf *parent, const char *subdir);
226
248
  * @param two The second path
227
249
  * @return The length of the common directory
228
250
  */
229
- extern size_t git_path_common_dirlen(const char *one, const char *two);
251
+ extern size_t git_fs_path_common_dirlen(const char *one, const char *two);
230
252
 
231
253
  /**
232
254
  * Make the path relative to the given parent path.
@@ -237,7 +259,7 @@ extern size_t git_path_common_dirlen(const char *one, const char *two);
237
259
  * if there was not common root between the paths,
238
260
  * or <0.
239
261
  */
240
- extern int git_path_make_relative(git_buf *path, const char *parent);
262
+ extern int git_fs_path_make_relative(git_str *path, const char *parent);
241
263
 
242
264
  /**
243
265
  * Check if the given path contains the given file.
@@ -246,7 +268,7 @@ extern int git_path_make_relative(git_buf *path, const char *parent);
246
268
  * @param file File name to look for in parent
247
269
  * @return true if file exists, false otherwise.
248
270
  */
249
- extern bool git_path_contains_file(git_buf *dir, const char *file);
271
+ extern bool git_fs_path_contains_file(git_str *dir, const char *file);
250
272
 
251
273
  /**
252
274
  * Prepend base to unrooted path or just copy path over.
@@ -254,36 +276,36 @@ extern bool git_path_contains_file(git_buf *dir, const char *file);
254
276
  * This will optionally return the index into the path where the "root"
255
277
  * is, either the end of the base directory prefix or the path root.
256
278
  */
257
- extern int git_path_join_unrooted(
258
- git_buf *path_out, const char *path, const char *base, ssize_t *root_at);
279
+ extern int git_fs_path_join_unrooted(
280
+ git_str *path_out, const char *path, const char *base, ssize_t *root_at);
259
281
 
260
282
  /**
261
283
  * Removes multiple occurrences of '/' in a row, squashing them into a
262
284
  * single '/'.
263
285
  */
264
- extern void git_path_squash_slashes(git_buf *path);
286
+ extern void git_fs_path_squash_slashes(git_str *path);
265
287
 
266
288
  /**
267
289
  * Clean up path, prepending base if it is not already rooted.
268
290
  */
269
- extern int git_path_prettify(git_buf *path_out, const char *path, const char *base);
291
+ extern int git_fs_path_prettify(git_str *path_out, const char *path, const char *base);
270
292
 
271
293
  /**
272
294
  * Clean up path, prepending base if it is not already rooted and
273
295
  * appending a slash.
274
296
  */
275
- extern int git_path_prettify_dir(git_buf *path_out, const char *path, const char *base);
297
+ extern int git_fs_path_prettify_dir(git_str *path_out, const char *path, const char *base);
276
298
 
277
299
  /**
278
300
  * Get a directory from a path.
279
301
  *
280
- * If path is a directory, this acts like `git_path_prettify_dir`
302
+ * If path is a directory, this acts like `git_fs_path_prettify_dir`
281
303
  * (cleaning up path and appending a '/'). If path is a normal file,
282
304
  * this prettifies it, then removed the filename a la dirname and
283
305
  * appends the trailing '/'. If the path does not exist, it is
284
306
  * treated like a regular filename.
285
307
  */
286
- extern int git_path_find_dir(git_buf *dir);
308
+ extern int git_fs_path_find_dir(git_str *dir);
287
309
 
288
310
  /**
289
311
  * Resolve relative references within a path.
@@ -295,7 +317,7 @@ extern int git_path_find_dir(git_buf *dir);
295
317
  * Additionally, this will recognize an "c:/" drive prefix or a "xyz://" URL
296
318
  * prefix and not touch that part of the path.
297
319
  */
298
- extern int git_path_resolve_relative(git_buf *path, size_t ceiling);
320
+ extern int git_fs_path_resolve_relative(git_str *path, size_t ceiling);
299
321
 
300
322
  /**
301
323
  * Apply a relative path to base path.
@@ -306,12 +328,12 @@ extern int git_path_resolve_relative(git_buf *path, size_t ceiling);
306
328
  * slash, "." will be eaten with no change, and ".." will remove a
307
329
  * segment from the base path.
308
330
  */
309
- extern int git_path_apply_relative(git_buf *target, const char *relpath);
331
+ extern int git_fs_path_apply_relative(git_str *target, const char *relpath);
310
332
 
311
333
  enum {
312
- GIT_PATH_DIR_IGNORE_CASE = (1u << 0),
313
- GIT_PATH_DIR_PRECOMPOSE_UNICODE = (1u << 1),
314
- GIT_PATH_DIR_INCLUDE_DOT_AND_DOTDOT = (1u << 2),
334
+ GIT_FS_PATH_DIR_IGNORE_CASE = (1u << 0),
335
+ GIT_FS_PATH_DIR_PRECOMPOSE_UNICODE = (1u << 1),
336
+ GIT_FS_PATH_DIR_INCLUDE_DOT_AND_DOTDOT = (1u << 2),
315
337
  };
316
338
 
317
339
  /**
@@ -319,7 +341,7 @@ enum {
319
341
  *
320
342
  * @param pathbuf Buffer the function reads the initial directory
321
343
  * path from, and updates with each successive entry's name.
322
- * @param flags Combination of GIT_PATH_DIR flags.
344
+ * @param flags Combination of GIT_FS_PATH_DIR flags.
323
345
  * @param callback Callback for each entry. Passed the `payload` and each
324
346
  * successive path inside the directory as a full path. This may
325
347
  * safely append text to the pathbuf if needed. Return non-zero to
@@ -327,16 +349,16 @@ enum {
327
349
  * @param payload Passed to callback as first argument.
328
350
  * @return 0 on success or error code from OS error or from callback
329
351
  */
330
- extern int git_path_direach(
331
- git_buf *pathbuf,
352
+ extern int git_fs_path_direach(
353
+ git_str *pathbuf,
332
354
  uint32_t flags,
333
- int (*callback)(void *payload, git_buf *path),
355
+ int (*callback)(void *payload, git_str *path),
334
356
  void *payload);
335
357
 
336
358
  /**
337
359
  * Sort function to order two paths
338
360
  */
339
- extern int git_path_cmp(
361
+ extern int git_fs_path_cmp(
340
362
  const char *name1, size_t len1, int isdir1,
341
363
  const char *name2, size_t len2, int isdir2,
342
364
  int (*compare)(const char *, const char *, size_t));
@@ -359,21 +381,25 @@ extern int git_path_cmp(
359
381
  * be modified in any way. Return non-zero to stop iteration.
360
382
  * @param payload Passed to fn as the first ath.
361
383
  */
362
- extern int git_path_walk_up(
363
- git_buf *pathbuf,
384
+ extern int git_fs_path_walk_up(
385
+ git_str *pathbuf,
364
386
  const char *ceiling,
365
387
  int (*callback)(void *payload, const char *path),
366
388
  void *payload);
367
389
 
368
390
 
369
- enum { GIT_PATH_NOTEQUAL = 0, GIT_PATH_EQUAL = 1, GIT_PATH_PREFIX = 2 };
391
+ enum {
392
+ GIT_FS_PATH_NOTEQUAL = 0,
393
+ GIT_FS_PATH_EQUAL = 1,
394
+ GIT_FS_PATH_PREFIX = 2
395
+ };
370
396
 
371
397
  /*
372
398
  * Determines if a path is equal to or potentially a child of another.
373
399
  * @param parent The possible parent
374
400
  * @param child The possible child
375
401
  */
376
- GIT_INLINE(int) git_path_equal_or_prefixed(
402
+ GIT_INLINE(int) git_fs_path_equal_or_prefixed(
377
403
  const char *parent,
378
404
  const char *child,
379
405
  ssize_t *prefixlen)
@@ -385,35 +411,35 @@ GIT_INLINE(int) git_path_equal_or_prefixed(
385
411
  lastslash = (*p == '/');
386
412
 
387
413
  if (*p++ != *c++)
388
- return GIT_PATH_NOTEQUAL;
414
+ return GIT_FS_PATH_NOTEQUAL;
389
415
  }
390
416
 
391
417
  if (*p != '\0')
392
- return GIT_PATH_NOTEQUAL;
418
+ return GIT_FS_PATH_NOTEQUAL;
393
419
 
394
420
  if (*c == '\0') {
395
421
  if (prefixlen)
396
422
  *prefixlen = p - parent;
397
423
 
398
- return GIT_PATH_EQUAL;
424
+ return GIT_FS_PATH_EQUAL;
399
425
  }
400
426
 
401
427
  if (*c == '/' || lastslash) {
402
428
  if (prefixlen)
403
429
  *prefixlen = (p - parent) - lastslash;
404
430
 
405
- return GIT_PATH_PREFIX;
431
+ return GIT_FS_PATH_PREFIX;
406
432
  }
407
433
 
408
- return GIT_PATH_NOTEQUAL;
434
+ return GIT_FS_PATH_NOTEQUAL;
409
435
  }
410
436
 
411
437
  /* translate errno to libgit2 error code and set error message */
412
- extern int git_path_set_error(
438
+ extern int git_fs_path_set_error(
413
439
  int errno_value, const char *path, const char *action);
414
440
 
415
441
  /* check if non-ascii characters are present in filename */
416
- extern bool git_path_has_non_ascii(const char *path, size_t pathlen);
442
+ extern bool git_fs_path_has_non_ascii(const char *path, size_t pathlen);
417
443
 
418
444
  #define GIT_PATH_REPO_ENCODING "UTF-8"
419
445
 
@@ -429,39 +455,39 @@ extern bool git_path_has_non_ascii(const char *path, size_t pathlen);
429
455
 
430
456
  typedef struct {
431
457
  iconv_t map;
432
- git_buf buf;
433
- } git_path_iconv_t;
458
+ git_str buf;
459
+ } git_fs_path_iconv_t;
434
460
 
435
- #define GIT_PATH_ICONV_INIT { (iconv_t)-1, GIT_BUF_INIT }
461
+ #define GIT_PATH_ICONV_INIT { (iconv_t)-1, GIT_STR_INIT }
436
462
 
437
463
  /* Init iconv data for converting decomposed UTF-8 to precomposed */
438
- extern int git_path_iconv_init_precompose(git_path_iconv_t *ic);
464
+ extern int git_fs_path_iconv_init_precompose(git_fs_path_iconv_t *ic);
439
465
 
440
466
  /* Clear allocated iconv data */
441
- extern void git_path_iconv_clear(git_path_iconv_t *ic);
467
+ extern void git_fs_path_iconv_clear(git_fs_path_iconv_t *ic);
442
468
 
443
469
  /*
444
470
  * Rewrite `in` buffer using iconv map if necessary, replacing `in`
445
471
  * pointer internal iconv buffer if rewrite happened. The `in` pointer
446
472
  * will be left unchanged if no rewrite was needed.
447
473
  */
448
- extern int git_path_iconv(git_path_iconv_t *ic, const char **in, size_t *inlen);
474
+ extern int git_fs_path_iconv(git_fs_path_iconv_t *ic, const char **in, size_t *inlen);
449
475
 
450
476
  #endif /* GIT_USE_ICONV */
451
477
 
452
- extern bool git_path_does_fs_decompose_unicode(const char *root);
478
+ extern bool git_fs_path_does_decompose_unicode(const char *root);
453
479
 
454
480
 
455
- typedef struct git_path_diriter git_path_diriter;
481
+ typedef struct git_fs_path_diriter git_fs_path_diriter;
456
482
 
457
483
  #if defined(GIT_WIN32) && !defined(__MINGW32__)
458
484
 
459
- struct git_path_diriter
485
+ struct git_fs_path_diriter
460
486
  {
461
487
  git_win32_path path;
462
488
  size_t parent_len;
463
489
 
464
- git_buf path_utf8;
490
+ git_str path_utf8;
465
491
  size_t parent_utf8_len;
466
492
 
467
493
  HANDLE handle;
@@ -472,13 +498,13 @@ struct git_path_diriter
472
498
  unsigned int needs_next;
473
499
  };
474
500
 
475
- #define GIT_PATH_DIRITER_INIT { {0}, 0, GIT_BUF_INIT, 0, INVALID_HANDLE_VALUE }
501
+ #define GIT_FS_PATH_DIRITER_INIT { {0}, 0, GIT_STR_INIT, 0, INVALID_HANDLE_VALUE }
476
502
 
477
503
  #else
478
504
 
479
- struct git_path_diriter
505
+ struct git_fs_path_diriter
480
506
  {
481
- git_buf path;
507
+ git_str path;
482
508
  size_t parent_len;
483
509
 
484
510
  unsigned int flags;
@@ -486,11 +512,11 @@ struct git_path_diriter
486
512
  DIR *dir;
487
513
 
488
514
  #ifdef GIT_USE_ICONV
489
- git_path_iconv_t ic;
515
+ git_fs_path_iconv_t ic;
490
516
  #endif
491
517
  };
492
518
 
493
- #define GIT_PATH_DIRITER_INIT { GIT_BUF_INIT }
519
+ #define GIT_FS_PATH_DIRITER_INIT { GIT_STR_INIT }
494
520
 
495
521
  #endif
496
522
 
@@ -502,8 +528,8 @@ struct git_path_diriter
502
528
  * @param flags Directory reader flags
503
529
  * @return 0 or an error code
504
530
  */
505
- extern int git_path_diriter_init(
506
- git_path_diriter *diriter,
531
+ extern int git_fs_path_diriter_init(
532
+ git_fs_path_diriter *diriter,
507
533
  const char *path,
508
534
  unsigned int flags);
509
535
 
@@ -514,7 +540,7 @@ extern int git_path_diriter_init(
514
540
  * @param diriter The directory iterator
515
541
  * @return 0, GIT_ITEROVER, or an error code
516
542
  */
517
- extern int git_path_diriter_next(git_path_diriter *diriter);
543
+ extern int git_fs_path_diriter_next(git_fs_path_diriter *diriter);
518
544
 
519
545
  /**
520
546
  * Returns the file name of the current item in the iterator.
@@ -524,10 +550,10 @@ extern int git_path_diriter_next(git_path_diriter *diriter);
524
550
  * @param diriter The directory iterator
525
551
  * @return 0 or an error code
526
552
  */
527
- extern int git_path_diriter_filename(
553
+ extern int git_fs_path_diriter_filename(
528
554
  const char **out,
529
555
  size_t *out_len,
530
- git_path_diriter *diriter);
556
+ git_fs_path_diriter *diriter);
531
557
 
532
558
  /**
533
559
  * Returns the full path of the current item in the iterator; that
@@ -539,10 +565,10 @@ extern int git_path_diriter_filename(
539
565
  * @param diriter The directory iterator
540
566
  * @return 0 or an error code
541
567
  */
542
- extern int git_path_diriter_fullpath(
568
+ extern int git_fs_path_diriter_fullpath(
543
569
  const char **out,
544
570
  size_t *out_len,
545
- git_path_diriter *diriter);
571
+ git_fs_path_diriter *diriter);
546
572
 
547
573
  /**
548
574
  * Performs an `lstat` on the current item in the iterator.
@@ -551,19 +577,19 @@ extern int git_path_diriter_fullpath(
551
577
  * @param diriter The directory iterator
552
578
  * @return 0 or an error code
553
579
  */
554
- extern int git_path_diriter_stat(struct stat *out, git_path_diriter *diriter);
580
+ extern int git_fs_path_diriter_stat(struct stat *out, git_fs_path_diriter *diriter);
555
581
 
556
582
  /**
557
583
  * Closes the directory iterator.
558
584
  *
559
585
  * @param diriter The directory iterator
560
586
  */
561
- extern void git_path_diriter_free(git_path_diriter *diriter);
587
+ extern void git_fs_path_diriter_free(git_fs_path_diriter *diriter);
562
588
 
563
589
  /**
564
590
  * Load all directory entries (except '.' and '..') into a vector.
565
591
  *
566
- * For cases where `git_path_direach()` is not appropriate, this
592
+ * For cases where `git_fs_path_direach()` is not appropriate, this
567
593
  * allows you to load the filenames in a directory into a vector
568
594
  * of strings. That vector can then be sorted, iterated, or whatever.
569
595
  * Remember to free alloc of the allocated strings when you are done.
@@ -573,9 +599,9 @@ extern void git_path_diriter_free(git_path_diriter *diriter);
573
599
  * @param prefix_len When inserting entries, the trailing part of path
574
600
  * will be prefixed after this length. I.e. given path "/a/b" and
575
601
  * prefix_len 3, the entries will look like "b/e1", "b/e2", etc.
576
- * @param flags Combination of GIT_PATH_DIR flags.
602
+ * @param flags Combination of GIT_FS_PATH_DIR flags.
577
603
  */
578
- extern int git_path_dirload(
604
+ extern int git_fs_path_dirload(
579
605
  git_vector *contents,
580
606
  const char *path,
581
607
  size_t prefix_len,
@@ -583,77 +609,105 @@ extern int git_path_dirload(
583
609
 
584
610
 
585
611
  /* Used for paths to repositories on the filesystem */
586
- extern bool git_path_is_local_file_url(const char *file_url);
587
- extern int git_path_from_url_or_path(git_buf *local_path_out, const char *url_or_path);
588
-
589
- /* Flags to determine path validity in `git_path_isvalid` */
590
- #define GIT_PATH_REJECT_TRAVERSAL (1 << 0)
591
- #define GIT_PATH_REJECT_DOT_GIT (1 << 1)
592
- #define GIT_PATH_REJECT_SLASH (1 << 2)
593
- #define GIT_PATH_REJECT_BACKSLASH (1 << 3)
594
- #define GIT_PATH_REJECT_TRAILING_DOT (1 << 4)
595
- #define GIT_PATH_REJECT_TRAILING_SPACE (1 << 5)
596
- #define GIT_PATH_REJECT_TRAILING_COLON (1 << 6)
597
- #define GIT_PATH_REJECT_DOS_PATHS (1 << 7)
598
- #define GIT_PATH_REJECT_NT_CHARS (1 << 8)
599
- #define GIT_PATH_REJECT_DOT_GIT_LITERAL (1 << 9)
600
- #define GIT_PATH_REJECT_DOT_GIT_HFS (1 << 10)
601
- #define GIT_PATH_REJECT_DOT_GIT_NTFS (1 << 11)
612
+ extern bool git_fs_path_is_local_file_url(const char *file_url);
613
+ extern int git_fs_path_from_url_or_path(git_str *local_path_out, const char *url_or_path);
614
+
615
+ /* Flags to determine path validity in `git_fs_path_isvalid` */
616
+ #define GIT_FS_PATH_REJECT_EMPTY_COMPONENT (1 << 0)
617
+ #define GIT_FS_PATH_REJECT_TRAVERSAL (1 << 1)
618
+ #define GIT_FS_PATH_REJECT_SLASH (1 << 2)
619
+ #define GIT_FS_PATH_REJECT_BACKSLASH (1 << 3)
620
+ #define GIT_FS_PATH_REJECT_TRAILING_DOT (1 << 4)
621
+ #define GIT_FS_PATH_REJECT_TRAILING_SPACE (1 << 5)
622
+ #define GIT_FS_PATH_REJECT_TRAILING_COLON (1 << 6)
623
+ #define GIT_FS_PATH_REJECT_DOS_PATHS (1 << 7)
624
+ #define GIT_FS_PATH_REJECT_NT_CHARS (1 << 8)
625
+ #define GIT_FS_PATH_REJECT_LONG_PATHS (1 << 9)
626
+
627
+ #define GIT_FS_PATH_REJECT_MAX (1 << 9)
602
628
 
603
629
  /* Default path safety for writing files to disk: since we use the
604
630
  * Win32 "File Namespace" APIs ("\\?\") we need to protect from
605
631
  * paths that the normal Win32 APIs would not write.
606
632
  */
607
633
  #ifdef GIT_WIN32
608
- # define GIT_PATH_REJECT_FILESYSTEM_DEFAULTS \
609
- GIT_PATH_REJECT_TRAVERSAL | \
610
- GIT_PATH_REJECT_BACKSLASH | \
611
- GIT_PATH_REJECT_TRAILING_DOT | \
612
- GIT_PATH_REJECT_TRAILING_SPACE | \
613
- GIT_PATH_REJECT_TRAILING_COLON | \
614
- GIT_PATH_REJECT_DOS_PATHS | \
615
- GIT_PATH_REJECT_NT_CHARS
634
+ # define GIT_FS_PATH_REJECT_FILESYSTEM_DEFAULTS \
635
+ GIT_FS_PATH_REJECT_EMPTY_COMPONENT | \
636
+ GIT_FS_PATH_REJECT_TRAVERSAL | \
637
+ GIT_FS_PATH_REJECT_BACKSLASH | \
638
+ GIT_FS_PATH_REJECT_TRAILING_DOT | \
639
+ GIT_FS_PATH_REJECT_TRAILING_SPACE | \
640
+ GIT_FS_PATH_REJECT_TRAILING_COLON | \
641
+ GIT_FS_PATH_REJECT_DOS_PATHS | \
642
+ GIT_FS_PATH_REJECT_NT_CHARS
616
643
  #else
617
- # define GIT_PATH_REJECT_FILESYSTEM_DEFAULTS \
618
- GIT_PATH_REJECT_TRAVERSAL
644
+ # define GIT_FS_PATH_REJECT_FILESYSTEM_DEFAULTS \
645
+ GIT_FS_PATH_REJECT_EMPTY_COMPONENT | \
646
+ GIT_FS_PATH_REJECT_TRAVERSAL
619
647
  #endif
620
648
 
621
- /* Paths that should never be written into the working directory. */
622
- #define GIT_PATH_REJECT_WORKDIR_DEFAULTS \
623
- GIT_PATH_REJECT_FILESYSTEM_DEFAULTS | GIT_PATH_REJECT_DOT_GIT
649
+ /**
650
+ * Validate a filesystem path; with custom callbacks per-character and
651
+ * per-path component.
652
+ */
653
+ extern bool git_fs_path_str_is_valid_ext(
654
+ const git_str *path,
655
+ unsigned int flags,
656
+ bool (*validate_char_cb)(char ch, void *payload),
657
+ bool (*validate_component_cb)(const char *component, size_t len, void *payload),
658
+ bool (*validate_length_cb)(const char *component, size_t len, size_t utf8_char_len),
659
+ void *payload);
624
660
 
625
- /* Paths that should never be written to the index. */
626
- #define GIT_PATH_REJECT_INDEX_DEFAULTS \
627
- GIT_PATH_REJECT_TRAVERSAL | GIT_PATH_REJECT_DOT_GIT
661
+ GIT_INLINE(bool) git_fs_path_is_valid_ext(
662
+ const char *path,
663
+ unsigned int flags,
664
+ bool (*validate_char_cb)(char ch, void *payload),
665
+ bool (*validate_component_cb)(const char *component, size_t len, void *payload),
666
+ bool (*validate_length_cb)(const char *component, size_t len, size_t utf8_char_len),
667
+ void *payload)
668
+ {
669
+ const git_str str = GIT_STR_INIT_CONST(path, SIZE_MAX);
670
+ return git_fs_path_str_is_valid_ext(
671
+ &str,
672
+ flags,
673
+ validate_char_cb,
674
+ validate_component_cb,
675
+ validate_length_cb,
676
+ payload);
677
+ }
628
678
 
629
679
  /**
630
- * Validate a "bare" git path. This ensures that the given path is legal
631
- * to place in the index or a tree. This should be checked by mechanisms
632
- * like `git_index_add` and `git_treebuilder_insert` when taking user
633
- * data, and by `git_checkout` before constructing on-disk paths.
634
- *
635
- * This will ensure that a git path does not contain any "unsafe" components,
636
- * a '.' or '..' component, or a component that is ".git" (in any case).
637
- *
638
- * (Note: if you take or construct an on-disk path -- a workdir path,
639
- * a path to a git repository or a reference name that could be a loose
640
- * ref -- you should _also_ validate that with `git_path_validate_workdir`.)
641
- *
642
- * `repo` is optional. If specified, it will be used to determine the short
643
- * path name to reject (if `GIT_PATH_REJECT_DOS_SHORTNAME` is specified),
644
- * in addition to the default of "git~1".
680
+ * Validate a filesystem path. This ensures that the given path is legal
681
+ * and does not contain any "unsafe" components like path traversal ('.'
682
+ * or '..'), characters that are inappropriate for lesser filesystems
683
+ * (trailing ' ' or ':' characters), or filenames ("component names")
684
+ * that are not supported ('AUX', 'COM1").
645
685
  */
646
- extern bool git_path_validate(
647
- git_repository *repo,
686
+ GIT_INLINE(bool) git_fs_path_is_valid(
648
687
  const char *path,
649
- uint16_t mode,
650
- unsigned int flags);
688
+ unsigned int flags)
689
+ {
690
+ const git_str str = GIT_STR_INIT_CONST(path, SIZE_MAX);
691
+ return git_fs_path_str_is_valid_ext(&str, flags, NULL, NULL, NULL, NULL);
692
+ }
693
+
694
+ /** Validate a filesystem path in a `git_str`. */
695
+ GIT_INLINE(bool) git_fs_path_str_is_valid(
696
+ const git_str *path,
697
+ unsigned int flags)
698
+ {
699
+ return git_fs_path_str_is_valid_ext(path, flags, NULL, NULL, NULL, NULL);
700
+ }
701
+
702
+ extern int git_fs_path_validate_str_length_with_suffix(
703
+ git_str *path,
704
+ size_t suffix_len);
651
705
 
652
706
  /**
653
707
  * Validate an on-disk path, taking into account that it will have a
654
708
  * suffix appended (eg, `.lock`).
655
709
  */
656
- GIT_INLINE(int) git_path_validate_filesystem_with_suffix(
710
+ GIT_INLINE(int) git_fs_path_validate_filesystem_with_suffix(
657
711
  const char *path,
658
712
  size_t path_len,
659
713
  size_t suffix_len)
@@ -684,54 +738,76 @@ GIT_INLINE(int) git_path_validate_filesystem_with_suffix(
684
738
  * Windows.
685
739
  *
686
740
  * For paths within the working directory, you should use ensure that
687
- * `core.longpaths` is obeyed. Use `git_path_validate_workdir`.
741
+ * `core.longpaths` is obeyed. Use `git_fs_path_validate_workdir`.
688
742
  */
689
- GIT_INLINE(int) git_path_validate_filesystem(
743
+ GIT_INLINE(int) git_fs_path_validate_filesystem(
690
744
  const char *path,
691
745
  size_t path_len)
692
746
  {
693
- return git_path_validate_filesystem_with_suffix(path, path_len, 0);
747
+ return git_fs_path_validate_filesystem_with_suffix(path, path_len, 0);
694
748
  }
695
749
 
696
750
  /**
697
- * Validate a path relative to the repo's worktree. This ensures that
698
- * the given working tree path is valid for the operating system/platform.
699
- * This will ensure that an absolute path is smaller than MAX_PATH on
700
- * Windows, while keeping `core.longpaths` configuration settings in mind.
701
- *
702
- * This should be checked by mechamisms like `git_checkout` after
703
- * contructing on-disk paths and before trying to write them.
704
- *
705
- * If the repository is null, no repository configuration is applied.
751
+ * Convert any backslashes into slashes
706
752
  */
707
- extern int git_path_validate_workdir(
708
- git_repository *repo,
709
- const char *path);
710
- extern int git_path_validate_workdir_with_len(
711
- git_repository *repo,
712
- const char *path,
713
- size_t path_len);
714
- extern int git_path_validate_workdir_buf(
715
- git_repository *repo,
716
- git_buf *buf);
753
+ int git_fs_path_normalize_slashes(git_str *out, const char *path);
754
+
755
+ bool git_fs_path_supports_symlinks(const char *dir);
756
+
757
+ typedef enum {
758
+ GIT_FS_PATH_OWNER_NONE = 0,
759
+
760
+ /** The file must be owned by the current user. */
761
+ GIT_FS_PATH_OWNER_CURRENT_USER = (1 << 0),
762
+
763
+ /** The file must be owned by the system account. */
764
+ GIT_FS_PATH_OWNER_ADMINISTRATOR = (1 << 1),
765
+
766
+ /**
767
+ * The file may be owned by a system account if the current
768
+ * user is in an administrator group. Windows only; this is
769
+ * a noop on non-Windows systems.
770
+ */
771
+ GIT_FS_PATH_USER_IS_ADMINISTRATOR = (1 << 2),
772
+
773
+ /**
774
+ * The file is owned by the current user, who is running `sudo`.
775
+ */
776
+ GIT_FS_PATH_OWNER_RUNNING_SUDO = (1 << 3),
777
+
778
+ /** The file may be owned by another user. */
779
+ GIT_FS_PATH_OWNER_OTHER = (1 << 4)
780
+ } git_fs_path_owner_t;
717
781
 
718
782
  /**
719
- * Convert any backslashes into slashes
783
+ * Sets the mock ownership for files; subsequent calls to
784
+ * `git_fs_path_owner_is_*` functions will return this data until
785
+ * cleared with `GIT_FS_PATH_OWNER_NONE`.
720
786
  */
721
- int git_path_normalize_slashes(git_buf *out, const char *path);
787
+ void git_fs_path__set_owner(git_fs_path_owner_t owner);
722
788
 
723
- bool git_path_supports_symlinks(const char *dir);
789
+ /** Verify that the file in question is owned by the given owner. */
790
+ int git_fs_path_owner_is(
791
+ bool *out,
792
+ const char *path,
793
+ git_fs_path_owner_t owner_type);
724
794
 
725
795
  /**
726
- * Validate a system file's ownership
727
- *
728
796
  * Verify that the file in question is owned by an administrator or system
729
- * account, or at least by the current user.
730
- *
731
- * This function returns 0 if successful. If the file is not owned by any of
732
- * these, or any other if there have been problems determining the file
733
- * ownership, it returns -1.
797
+ * account.
798
+ */
799
+ int git_fs_path_owner_is_system(bool *out, const char *path);
800
+
801
+ /**
802
+ * Verify that the file in question is owned by the current user;
803
+ */
804
+
805
+ int git_fs_path_owner_is_current_user(bool *out, const char *path);
806
+
807
+ /**
808
+ * Search the current PATH for the given executable, returning the full
809
+ * path if it is found.
734
810
  */
735
- int git_path_validate_system_file_ownership(const char *path);
811
+ int git_fs_path_find_executable(git_str *fullpath, const char *executable);
736
812
 
737
813
  #endif