rugged 0.28.5 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (411) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/ext/rugged/extconf.rb +3 -1
  4. data/ext/rugged/rugged.c +35 -31
  5. data/ext/rugged/rugged.h +13 -0
  6. data/ext/rugged/rugged_blob.c +11 -9
  7. data/ext/rugged/rugged_commit.c +18 -16
  8. data/ext/rugged/rugged_config.c +1 -1
  9. data/ext/rugged/rugged_diff.c +4 -26
  10. data/ext/rugged/rugged_index.c +4 -2
  11. data/ext/rugged/rugged_note.c +5 -3
  12. data/ext/rugged/rugged_object.c +57 -10
  13. data/ext/rugged/rugged_rebase.c +3 -1
  14. data/ext/rugged/rugged_remote.c +32 -8
  15. data/ext/rugged/rugged_repo.c +232 -17
  16. data/ext/rugged/rugged_tag.c +8 -6
  17. data/ext/rugged/rugged_tree.c +18 -16
  18. data/lib/rugged/commit.rb +17 -4
  19. data/lib/rugged/repository.rb +5 -6
  20. data/lib/rugged/submodule_collection.rb +4 -4
  21. data/lib/rugged/version.rb +1 -1
  22. data/vendor/libgit2/CMakeLists.txt +57 -75
  23. data/vendor/libgit2/COPYING +28 -0
  24. data/vendor/libgit2/cmake/{Modules/AddCFlagIfSupported.cmake → AddCFlagIfSupported.cmake} +0 -0
  25. data/vendor/libgit2/cmake/{Modules/EnableWarnings.cmake → EnableWarnings.cmake} +5 -1
  26. data/vendor/libgit2/cmake/{Modules/FindCoreFoundation.cmake → FindCoreFoundation.cmake} +2 -2
  27. data/vendor/libgit2/cmake/{Modules/FindGSSAPI.cmake → FindGSSAPI.cmake} +1 -1
  28. data/vendor/libgit2/cmake/FindGSSFramework.cmake +28 -0
  29. data/vendor/libgit2/cmake/{Modules/FindHTTP_Parser.cmake → FindHTTP_Parser.cmake} +0 -0
  30. data/vendor/libgit2/cmake/{Modules/FindIconv.cmake → FindIconv.cmake} +0 -0
  31. data/vendor/libgit2/cmake/FindPCRE.cmake +38 -0
  32. data/vendor/libgit2/cmake/FindPCRE2.cmake +37 -0
  33. data/vendor/libgit2/cmake/{Modules/FindPkgLibraries.cmake → FindPkgLibraries.cmake} +0 -0
  34. data/vendor/libgit2/cmake/{Modules/FindSecurity.cmake → FindSecurity.cmake} +2 -2
  35. data/vendor/libgit2/cmake/{Modules/FindStatNsec.cmake → FindStatNsec.cmake} +6 -0
  36. data/vendor/libgit2/cmake/{Modules/FindmbedTLS.cmake → FindmbedTLS.cmake} +0 -0
  37. data/vendor/libgit2/cmake/{Modules/IdeSplitSources.cmake → IdeSplitSources.cmake} +0 -0
  38. data/vendor/libgit2/cmake/PkgBuildConfig.cmake +77 -0
  39. data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -0
  40. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +48 -0
  41. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +120 -0
  42. data/vendor/libgit2/cmake/SelectHashes.cmake +61 -0
  43. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +4 -3
  44. data/vendor/libgit2/deps/http-parser/http_parser.c +11 -6
  45. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +25 -0
  46. data/vendor/libgit2/deps/ntlmclient/compat.h +28 -0
  47. data/vendor/libgit2/deps/ntlmclient/crypt.h +64 -0
  48. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +120 -0
  49. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +18 -0
  50. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +145 -0
  51. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +18 -0
  52. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +130 -0
  53. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +21 -0
  54. data/vendor/libgit2/deps/ntlmclient/ntlm.c +1419 -0
  55. data/vendor/libgit2/deps/ntlmclient/ntlm.h +174 -0
  56. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +320 -0
  57. data/vendor/libgit2/deps/ntlmclient/unicode.h +36 -0
  58. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +445 -0
  59. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +201 -0
  60. data/vendor/libgit2/deps/ntlmclient/utf8.h +1257 -0
  61. data/vendor/libgit2/deps/ntlmclient/util.c +35 -0
  62. data/vendor/libgit2/deps/ntlmclient/util.h +15 -0
  63. data/vendor/libgit2/deps/pcre/CMakeLists.txt +140 -0
  64. data/vendor/libgit2/deps/pcre/COPYING +5 -0
  65. data/vendor/libgit2/deps/pcre/LICENCE +93 -0
  66. data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +22 -0
  67. data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +17 -0
  68. data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +58 -0
  69. data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +29 -0
  70. data/vendor/libgit2/deps/pcre/config.h.in +57 -0
  71. data/vendor/libgit2/deps/pcre/pcre.h +641 -0
  72. data/vendor/libgit2/deps/pcre/pcre_byte_order.c +319 -0
  73. data/vendor/libgit2/deps/pcre/pcre_chartables.c +198 -0
  74. data/vendor/libgit2/deps/pcre/pcre_compile.c +9812 -0
  75. data/vendor/libgit2/deps/pcre/pcre_config.c +190 -0
  76. data/vendor/libgit2/deps/pcre/pcre_dfa_exec.c +3676 -0
  77. data/vendor/libgit2/deps/pcre/pcre_exec.c +7173 -0
  78. data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +245 -0
  79. data/vendor/libgit2/deps/pcre/pcre_get.c +669 -0
  80. data/vendor/libgit2/deps/pcre/pcre_globals.c +86 -0
  81. data/vendor/libgit2/deps/pcre/pcre_internal.h +2787 -0
  82. data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +11913 -0
  83. data/vendor/libgit2/deps/pcre/pcre_maketables.c +156 -0
  84. data/vendor/libgit2/deps/pcre/pcre_newline.c +210 -0
  85. data/vendor/libgit2/deps/pcre/pcre_ord2utf8.c +94 -0
  86. data/vendor/libgit2/deps/pcre/pcre_printint.c +834 -0
  87. data/vendor/libgit2/deps/pcre/pcre_refcount.c +92 -0
  88. data/vendor/libgit2/deps/pcre/pcre_string_utils.c +211 -0
  89. data/vendor/libgit2/deps/pcre/pcre_study.c +1686 -0
  90. data/vendor/libgit2/deps/pcre/pcre_tables.c +727 -0
  91. data/vendor/libgit2/deps/pcre/pcre_ucd.c +3644 -0
  92. data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +301 -0
  93. data/vendor/libgit2/deps/pcre/pcre_version.c +98 -0
  94. data/vendor/libgit2/deps/pcre/pcre_xclass.c +268 -0
  95. data/vendor/libgit2/deps/pcre/pcreposix.c +420 -0
  96. data/vendor/libgit2/deps/pcre/pcreposix.h +117 -0
  97. data/vendor/libgit2/deps/pcre/ucp.h +224 -0
  98. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -5
  99. data/vendor/libgit2/deps/zlib/adler32.c +0 -7
  100. data/vendor/libgit2/deps/zlib/crc32.c +0 -7
  101. data/vendor/libgit2/deps/zlib/deflate.c +1 -0
  102. data/vendor/libgit2/include/git2.h +2 -0
  103. data/vendor/libgit2/include/git2/annotated_commit.h +1 -1
  104. data/vendor/libgit2/include/git2/apply.h +24 -2
  105. data/vendor/libgit2/include/git2/attr.h +23 -13
  106. data/vendor/libgit2/include/git2/blame.h +4 -2
  107. data/vendor/libgit2/include/git2/blob.h +61 -13
  108. data/vendor/libgit2/include/git2/branch.h +74 -57
  109. data/vendor/libgit2/include/git2/buffer.h +20 -14
  110. data/vendor/libgit2/include/git2/cert.h +135 -0
  111. data/vendor/libgit2/include/git2/checkout.h +46 -14
  112. data/vendor/libgit2/include/git2/cherrypick.h +3 -3
  113. data/vendor/libgit2/include/git2/clone.h +2 -2
  114. data/vendor/libgit2/include/git2/commit.h +23 -1
  115. data/vendor/libgit2/include/git2/common.h +34 -8
  116. data/vendor/libgit2/include/git2/config.h +13 -13
  117. data/vendor/libgit2/include/git2/cred_helpers.h +4 -42
  118. data/vendor/libgit2/include/git2/credential.h +314 -0
  119. data/vendor/libgit2/include/git2/credential_helpers.h +52 -0
  120. data/vendor/libgit2/include/git2/deprecated.h +362 -4
  121. data/vendor/libgit2/include/git2/describe.h +4 -4
  122. data/vendor/libgit2/include/git2/diff.h +17 -15
  123. data/vendor/libgit2/include/git2/errors.h +5 -2
  124. data/vendor/libgit2/include/git2/filter.h +8 -0
  125. data/vendor/libgit2/include/git2/index.h +5 -5
  126. data/vendor/libgit2/include/git2/indexer.h +49 -4
  127. data/vendor/libgit2/include/git2/merge.h +6 -10
  128. data/vendor/libgit2/include/git2/net.h +0 -5
  129. data/vendor/libgit2/include/git2/object.h +2 -14
  130. data/vendor/libgit2/include/git2/odb.h +18 -22
  131. data/vendor/libgit2/include/git2/odb_backend.h +5 -4
  132. data/vendor/libgit2/include/git2/oid.h +11 -6
  133. data/vendor/libgit2/include/git2/pack.h +13 -2
  134. data/vendor/libgit2/include/git2/proxy.h +6 -4
  135. data/vendor/libgit2/include/git2/rebase.h +46 -2
  136. data/vendor/libgit2/include/git2/refs.h +22 -3
  137. data/vendor/libgit2/include/git2/remote.h +40 -15
  138. data/vendor/libgit2/include/git2/repository.h +124 -58
  139. data/vendor/libgit2/include/git2/revert.h +1 -1
  140. data/vendor/libgit2/include/git2/revwalk.h +7 -3
  141. data/vendor/libgit2/include/git2/stash.h +4 -4
  142. data/vendor/libgit2/include/git2/status.h +25 -16
  143. data/vendor/libgit2/include/git2/strarray.h +6 -10
  144. data/vendor/libgit2/include/git2/submodule.h +20 -3
  145. data/vendor/libgit2/include/git2/sys/alloc.h +9 -9
  146. data/vendor/libgit2/include/git2/sys/cred.h +15 -0
  147. data/vendor/libgit2/include/git2/sys/credential.h +90 -0
  148. data/vendor/libgit2/include/git2/sys/index.h +4 -2
  149. data/vendor/libgit2/include/git2/sys/mempack.h +2 -1
  150. data/vendor/libgit2/include/git2/sys/merge.h +1 -1
  151. data/vendor/libgit2/include/git2/sys/odb_backend.h +48 -4
  152. data/vendor/libgit2/include/git2/sys/refdb_backend.h +164 -21
  153. data/vendor/libgit2/include/git2/sys/repository.h +17 -6
  154. data/vendor/libgit2/include/git2/sys/transport.h +4 -4
  155. data/vendor/libgit2/include/git2/tag.h +11 -2
  156. data/vendor/libgit2/include/git2/trace.h +2 -2
  157. data/vendor/libgit2/include/git2/transport.h +11 -340
  158. data/vendor/libgit2/include/git2/tree.h +7 -3
  159. data/vendor/libgit2/include/git2/types.h +4 -89
  160. data/vendor/libgit2/include/git2/version.h +5 -5
  161. data/vendor/libgit2/include/git2/worktree.h +5 -5
  162. data/vendor/libgit2/src/CMakeLists.txt +147 -272
  163. data/vendor/libgit2/src/alloc.c +2 -14
  164. data/vendor/libgit2/src/{stdalloc.c → allocators/stdalloc.c} +3 -4
  165. data/vendor/libgit2/src/{stdalloc.h → allocators/stdalloc.h} +4 -4
  166. data/vendor/libgit2/src/allocators/win32_crtdbg.c +118 -0
  167. data/vendor/libgit2/src/{transports/cred.h → allocators/win32_crtdbg.h} +5 -4
  168. data/vendor/libgit2/src/apply.c +36 -16
  169. data/vendor/libgit2/src/assert_safe.h +58 -0
  170. data/vendor/libgit2/src/attr.c +70 -64
  171. data/vendor/libgit2/src/attr_file.c +197 -99
  172. data/vendor/libgit2/src/attr_file.h +9 -9
  173. data/vendor/libgit2/src/attrcache.c +48 -49
  174. data/vendor/libgit2/src/attrcache.h +2 -1
  175. data/vendor/libgit2/src/blame.c +34 -15
  176. data/vendor/libgit2/src/blame.h +1 -1
  177. data/vendor/libgit2/src/blame_git.c +27 -10
  178. data/vendor/libgit2/src/blob.c +92 -17
  179. data/vendor/libgit2/src/blob.h +2 -2
  180. data/vendor/libgit2/src/branch.c +68 -42
  181. data/vendor/libgit2/src/buffer.c +11 -3
  182. data/vendor/libgit2/src/buffer.h +1 -0
  183. data/vendor/libgit2/src/cache.c +34 -58
  184. data/vendor/libgit2/src/cache.h +1 -1
  185. data/vendor/libgit2/src/cc-compat.h +5 -0
  186. data/vendor/libgit2/src/checkout.c +73 -86
  187. data/vendor/libgit2/src/cherrypick.c +9 -1
  188. data/vendor/libgit2/src/clone.c +130 -27
  189. data/vendor/libgit2/src/clone.h +4 -0
  190. data/vendor/libgit2/src/commit.c +70 -22
  191. data/vendor/libgit2/src/commit.h +6 -0
  192. data/vendor/libgit2/src/commit_list.c +28 -76
  193. data/vendor/libgit2/src/commit_list.h +2 -2
  194. data/vendor/libgit2/src/common.h +4 -75
  195. data/vendor/libgit2/src/config.c +34 -47
  196. data/vendor/libgit2/src/config.h +7 -6
  197. data/vendor/libgit2/src/config_backend.h +12 -0
  198. data/vendor/libgit2/src/config_cache.c +42 -39
  199. data/vendor/libgit2/src/config_entries.c +76 -98
  200. data/vendor/libgit2/src/config_entries.h +1 -0
  201. data/vendor/libgit2/src/config_file.c +346 -380
  202. data/vendor/libgit2/src/config_mem.c +12 -16
  203. data/vendor/libgit2/src/config_parse.c +50 -30
  204. data/vendor/libgit2/src/config_parse.h +13 -12
  205. data/vendor/libgit2/src/config_snapshot.c +207 -0
  206. data/vendor/libgit2/src/crlf.c +14 -14
  207. data/vendor/libgit2/src/describe.c +26 -21
  208. data/vendor/libgit2/src/diff.c +53 -75
  209. data/vendor/libgit2/src/diff.h +4 -3
  210. data/vendor/libgit2/src/diff_driver.c +37 -38
  211. data/vendor/libgit2/src/diff_file.c +15 -11
  212. data/vendor/libgit2/src/diff_file.h +2 -2
  213. data/vendor/libgit2/src/diff_generate.c +36 -37
  214. data/vendor/libgit2/src/diff_generate.h +2 -2
  215. data/vendor/libgit2/src/diff_parse.c +3 -4
  216. data/vendor/libgit2/src/diff_print.c +86 -71
  217. data/vendor/libgit2/src/diff_stats.c +13 -12
  218. data/vendor/libgit2/src/diff_tform.c +15 -16
  219. data/vendor/libgit2/src/errors.c +23 -25
  220. data/vendor/libgit2/src/errors.h +81 -0
  221. data/vendor/libgit2/src/features.h.in +9 -2
  222. data/vendor/libgit2/src/fetch.c +9 -2
  223. data/vendor/libgit2/src/fetchhead.c +9 -9
  224. data/vendor/libgit2/src/filebuf.c +1 -1
  225. data/vendor/libgit2/src/filebuf.h +1 -1
  226. data/vendor/libgit2/src/filter.c +19 -11
  227. data/vendor/libgit2/src/{fileops.c → futils.c} +23 -20
  228. data/vendor/libgit2/src/{fileops.h → futils.h} +8 -8
  229. data/vendor/libgit2/src/global.c +3 -1
  230. data/vendor/libgit2/src/hash.c +61 -0
  231. data/vendor/libgit2/src/hash.h +19 -21
  232. data/vendor/libgit2/src/hash/sha1.h +38 -0
  233. data/vendor/libgit2/src/hash/{hash_collisiondetect.h → sha1/collisiondetect.c} +14 -17
  234. data/vendor/libgit2/src/{sha1_lookup.h → hash/sha1/collisiondetect.h} +8 -8
  235. data/vendor/libgit2/src/hash/{hash_common_crypto.h → sha1/common_crypto.c} +15 -19
  236. data/vendor/libgit2/src/hash/sha1/common_crypto.h +19 -0
  237. data/vendor/libgit2/src/hash/{hash_generic.c → sha1/generic.c} +22 -10
  238. data/vendor/libgit2/src/hash/{hash_generic.h → sha1/generic.h} +4 -14
  239. data/vendor/libgit2/src/hash/{hash_mbedtls.c → sha1/mbedtls.c} +15 -7
  240. data/vendor/libgit2/src/hash/{hash_mbedtls.h → sha1/mbedtls.h} +6 -11
  241. data/vendor/libgit2/src/hash/{hash_openssl.h → sha1/openssl.c} +14 -18
  242. data/vendor/libgit2/src/{refdb_fs.h → hash/sha1/openssl.h} +8 -8
  243. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.c +14 -3
  244. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.h +0 -0
  245. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.c +0 -0
  246. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.h +0 -0
  247. data/vendor/libgit2/src/hash/{hash_win32.c → sha1/win32.c} +34 -24
  248. data/vendor/libgit2/src/hash/{hash_win32.h → sha1/win32.h} +6 -19
  249. data/vendor/libgit2/src/hashsig.c +1 -1
  250. data/vendor/libgit2/src/idxmap.c +73 -69
  251. data/vendor/libgit2/src/idxmap.h +151 -15
  252. data/vendor/libgit2/src/ignore.c +26 -35
  253. data/vendor/libgit2/src/index.c +123 -95
  254. data/vendor/libgit2/src/index.h +1 -1
  255. data/vendor/libgit2/src/indexer.c +99 -78
  256. data/vendor/libgit2/src/integer.h +26 -4
  257. data/vendor/libgit2/src/iterator.c +36 -32
  258. data/vendor/libgit2/src/iterator.h +8 -8
  259. data/vendor/libgit2/src/map.h +1 -1
  260. data/vendor/libgit2/src/merge.c +93 -57
  261. data/vendor/libgit2/src/merge.h +2 -2
  262. data/vendor/libgit2/src/merge_driver.c +5 -5
  263. data/vendor/libgit2/src/merge_file.c +5 -7
  264. data/vendor/libgit2/src/midx.c +418 -0
  265. data/vendor/libgit2/src/midx.h +83 -0
  266. data/vendor/libgit2/src/mwindow.c +144 -74
  267. data/vendor/libgit2/src/mwindow.h +4 -4
  268. data/vendor/libgit2/src/net.c +416 -0
  269. data/vendor/libgit2/src/net.h +57 -0
  270. data/vendor/libgit2/src/netops.c +6 -222
  271. data/vendor/libgit2/src/netops.h +1 -37
  272. data/vendor/libgit2/src/notes.c +8 -5
  273. data/vendor/libgit2/src/object.c +5 -4
  274. data/vendor/libgit2/src/object.h +2 -0
  275. data/vendor/libgit2/src/odb.c +54 -32
  276. data/vendor/libgit2/src/odb.h +3 -2
  277. data/vendor/libgit2/src/odb_loose.c +20 -13
  278. data/vendor/libgit2/src/odb_mempack.c +15 -24
  279. data/vendor/libgit2/src/odb_pack.c +4 -5
  280. data/vendor/libgit2/src/offmap.c +43 -55
  281. data/vendor/libgit2/src/offmap.h +102 -24
  282. data/vendor/libgit2/src/oid.c +21 -8
  283. data/vendor/libgit2/src/oidmap.c +39 -57
  284. data/vendor/libgit2/src/oidmap.h +99 -19
  285. data/vendor/libgit2/src/pack-objects.c +55 -52
  286. data/vendor/libgit2/src/pack-objects.h +1 -1
  287. data/vendor/libgit2/src/pack.c +160 -149
  288. data/vendor/libgit2/src/pack.h +32 -18
  289. data/vendor/libgit2/src/parse.c +10 -0
  290. data/vendor/libgit2/src/parse.h +3 -3
  291. data/vendor/libgit2/src/patch.c +1 -1
  292. data/vendor/libgit2/src/patch_generate.c +2 -4
  293. data/vendor/libgit2/src/patch_parse.c +34 -11
  294. data/vendor/libgit2/src/path.c +47 -10
  295. data/vendor/libgit2/src/path.h +2 -0
  296. data/vendor/libgit2/src/pathspec.c +18 -17
  297. data/vendor/libgit2/src/pool.c +42 -32
  298. data/vendor/libgit2/src/pool.h +15 -7
  299. data/vendor/libgit2/src/posix.c +39 -16
  300. data/vendor/libgit2/src/posix.h +21 -1
  301. data/vendor/libgit2/src/proxy.c +9 -2
  302. data/vendor/libgit2/src/push.c +15 -7
  303. data/vendor/libgit2/src/reader.c +2 -2
  304. data/vendor/libgit2/src/rebase.c +89 -28
  305. data/vendor/libgit2/src/refdb.c +147 -0
  306. data/vendor/libgit2/src/refdb.h +69 -0
  307. data/vendor/libgit2/src/refdb_fs.c +230 -241
  308. data/vendor/libgit2/src/reflog.c +13 -19
  309. data/vendor/libgit2/src/refs.c +113 -217
  310. data/vendor/libgit2/src/refs.h +10 -21
  311. data/vendor/libgit2/src/refspec.c +57 -48
  312. data/vendor/libgit2/src/regexp.c +221 -0
  313. data/vendor/libgit2/src/regexp.h +97 -0
  314. data/vendor/libgit2/src/remote.c +102 -79
  315. data/vendor/libgit2/src/remote.h +2 -2
  316. data/vendor/libgit2/src/repository.c +322 -203
  317. data/vendor/libgit2/src/repository.h +49 -57
  318. data/vendor/libgit2/src/revert.c +8 -1
  319. data/vendor/libgit2/src/revparse.c +23 -23
  320. data/vendor/libgit2/src/revwalk.c +73 -37
  321. data/vendor/libgit2/src/revwalk.h +20 -0
  322. data/vendor/libgit2/src/settings.c +22 -1
  323. data/vendor/libgit2/src/sortedcache.c +14 -29
  324. data/vendor/libgit2/src/sortedcache.h +1 -1
  325. data/vendor/libgit2/src/stash.c +49 -67
  326. data/vendor/libgit2/src/status.c +19 -11
  327. data/vendor/libgit2/src/strarray.c +63 -0
  328. data/vendor/libgit2/src/streams/openssl.c +66 -8
  329. data/vendor/libgit2/src/streams/registry.c +5 -3
  330. data/vendor/libgit2/src/streams/socket.c +2 -2
  331. data/vendor/libgit2/src/strmap.c +37 -84
  332. data/vendor/libgit2/src/strmap.h +105 -33
  333. data/vendor/libgit2/src/submodule.c +157 -130
  334. data/vendor/libgit2/src/submodule.h +1 -1
  335. data/vendor/libgit2/src/sysdir.c +4 -20
  336. data/vendor/libgit2/src/sysdir.h +0 -11
  337. data/vendor/libgit2/src/tag.c +12 -2
  338. data/vendor/libgit2/src/thread-utils.h +163 -40
  339. data/vendor/libgit2/src/trace.c +1 -1
  340. data/vendor/libgit2/src/trace.h +3 -3
  341. data/vendor/libgit2/src/trailer.c +46 -32
  342. data/vendor/libgit2/src/transaction.c +5 -9
  343. data/vendor/libgit2/src/transports/auth.c +16 -15
  344. data/vendor/libgit2/src/transports/auth.h +18 -11
  345. data/vendor/libgit2/src/transports/auth_negotiate.c +64 -33
  346. data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
  347. data/vendor/libgit2/src/transports/auth_ntlm.c +223 -0
  348. data/vendor/libgit2/src/transports/auth_ntlm.h +38 -0
  349. data/vendor/libgit2/src/transports/credential.c +478 -0
  350. data/vendor/libgit2/src/transports/{cred_helpers.c → credential_helpers.c} +23 -8
  351. data/vendor/libgit2/src/transports/git.c +11 -16
  352. data/vendor/libgit2/src/transports/http.c +488 -1248
  353. data/vendor/libgit2/src/transports/http.h +4 -1
  354. data/vendor/libgit2/src/transports/httpclient.c +1552 -0
  355. data/vendor/libgit2/src/transports/httpclient.h +190 -0
  356. data/vendor/libgit2/src/transports/local.c +12 -12
  357. data/vendor/libgit2/src/transports/smart.c +21 -21
  358. data/vendor/libgit2/src/transports/smart.h +3 -3
  359. data/vendor/libgit2/src/transports/smart_protocol.c +40 -64
  360. data/vendor/libgit2/src/transports/ssh.c +77 -59
  361. data/vendor/libgit2/src/transports/winhttp.c +368 -285
  362. data/vendor/libgit2/src/tree-cache.c +14 -7
  363. data/vendor/libgit2/src/tree.c +16 -26
  364. data/vendor/libgit2/src/unix/map.c +1 -1
  365. data/vendor/libgit2/src/unix/posix.h +16 -11
  366. data/vendor/libgit2/src/userdiff.h +3 -1
  367. data/vendor/libgit2/src/util.c +75 -110
  368. data/vendor/libgit2/src/util.h +18 -23
  369. data/vendor/libgit2/src/wildmatch.c +320 -0
  370. data/vendor/libgit2/src/wildmatch.h +23 -0
  371. data/vendor/libgit2/src/win32/git2.rc +18 -3
  372. data/vendor/libgit2/src/win32/map.c +3 -5
  373. data/vendor/libgit2/src/win32/path_w32.c +42 -5
  374. data/vendor/libgit2/src/win32/path_w32.h +15 -29
  375. data/vendor/libgit2/src/win32/posix.h +1 -4
  376. data/vendor/libgit2/src/win32/posix_w32.c +117 -5
  377. data/vendor/libgit2/src/win32/precompiled.h +0 -2
  378. data/vendor/libgit2/src/win32/thread.c +5 -5
  379. data/vendor/libgit2/src/win32/w32_buffer.c +7 -3
  380. data/vendor/libgit2/src/win32/w32_common.h +39 -0
  381. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +0 -93
  382. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -2
  383. data/vendor/libgit2/src/win32/w32_stack.c +4 -9
  384. data/vendor/libgit2/src/win32/w32_stack.h +3 -3
  385. data/vendor/libgit2/src/win32/w32_util.c +31 -0
  386. data/vendor/libgit2/src/win32/w32_util.h +6 -32
  387. data/vendor/libgit2/src/worktree.c +91 -50
  388. data/vendor/libgit2/src/xdiff/xdiffi.c +1 -1
  389. data/vendor/libgit2/src/xdiff/xmerge.c +12 -0
  390. data/vendor/libgit2/src/xdiff/xpatience.c +3 -0
  391. data/vendor/libgit2/src/zstream.c +5 -0
  392. data/vendor/libgit2/src/zstream.h +1 -0
  393. metadata +123 -53
  394. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +0 -29
  395. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +0 -96
  396. data/vendor/libgit2/deps/regex/CMakeLists.txt +0 -2
  397. data/vendor/libgit2/deps/regex/COPYING +0 -502
  398. data/vendor/libgit2/deps/regex/config.h +0 -7
  399. data/vendor/libgit2/deps/regex/regcomp.c +0 -3857
  400. data/vendor/libgit2/deps/regex/regex.c +0 -92
  401. data/vendor/libgit2/deps/regex/regex.h +0 -582
  402. data/vendor/libgit2/deps/regex/regex_internal.c +0 -1744
  403. data/vendor/libgit2/deps/regex/regex_internal.h +0 -819
  404. data/vendor/libgit2/deps/regex/regexec.c +0 -4369
  405. data/vendor/libgit2/include/git2/inttypes.h +0 -309
  406. data/vendor/libgit2/include/git2/sys/time.h +0 -31
  407. data/vendor/libgit2/libgit2.pc.in +0 -13
  408. data/vendor/libgit2/src/fnmatch.c +0 -248
  409. data/vendor/libgit2/src/fnmatch.h +0 -48
  410. data/vendor/libgit2/src/sha1_lookup.c +0 -35
  411. data/vendor/libgit2/src/transports/cred.c +0 -390
@@ -71,99 +71,6 @@ static bool g_limit_reached = false; /* had allocs after we filled row table */
71
71
  static unsigned int g_checkpoint_id = 0; /* to better label leak checkpoints */
72
72
  static bool g_transient_leaks_since_mark = false; /* payload for hook */
73
73
 
74
- static void *crtdbg__malloc(size_t len, const char *file, int line)
75
- {
76
- void *ptr = _malloc_dbg(len, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
77
- if (!ptr) git_error_set_oom();
78
- return ptr;
79
- }
80
-
81
- static void *crtdbg__calloc(size_t nelem, size_t elsize, const char *file, int line)
82
- {
83
- void *ptr = _calloc_dbg(nelem, elsize, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
84
- if (!ptr) git_error_set_oom();
85
- return ptr;
86
- }
87
-
88
- static char *crtdbg__strdup(const char *str, const char *file, int line)
89
- {
90
- char *ptr = _strdup_dbg(str, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
91
- if (!ptr) git_error_set_oom();
92
- return ptr;
93
- }
94
-
95
- static char *crtdbg__strndup(const char *str, size_t n, const char *file, int line)
96
- {
97
- size_t length = 0, alloclength;
98
- char *ptr;
99
-
100
- length = p_strnlen(str, n);
101
-
102
- if (GIT_ADD_SIZET_OVERFLOW(&alloclength, length, 1) ||
103
- !(ptr = crtdbg__malloc(alloclength, file, line)))
104
- return NULL;
105
-
106
- if (length)
107
- memcpy(ptr, str, length);
108
-
109
- ptr[length] = '\0';
110
-
111
- return ptr;
112
- }
113
-
114
- static char *crtdbg__substrdup(const char *start, size_t n, const char *file, int line)
115
- {
116
- char *ptr;
117
- size_t alloclen;
118
-
119
- if (GIT_ADD_SIZET_OVERFLOW(&alloclen, n, 1) ||
120
- !(ptr = crtdbg__malloc(alloclen, file, line)))
121
- return NULL;
122
-
123
- memcpy(ptr, start, n);
124
- ptr[n] = '\0';
125
- return ptr;
126
- }
127
-
128
- static void *crtdbg__realloc(void *ptr, size_t size, const char *file, int line)
129
- {
130
- void *new_ptr = _realloc_dbg(ptr, size, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
131
- if (!new_ptr) git_error_set_oom();
132
- return new_ptr;
133
- }
134
-
135
- static void *crtdbg__reallocarray(void *ptr, size_t nelem, size_t elsize, const char *file, int line)
136
- {
137
- size_t newsize;
138
-
139
- return GIT_MULTIPLY_SIZET_OVERFLOW(&newsize, nelem, elsize) ?
140
- NULL : _realloc_dbg(ptr, newsize, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
141
- }
142
-
143
- static void *crtdbg__mallocarray(size_t nelem, size_t elsize, const char *file, int line)
144
- {
145
- return crtdbg__reallocarray(NULL, nelem, elsize, file, line);
146
- }
147
-
148
- static void crtdbg__free(void *ptr)
149
- {
150
- free(ptr);
151
- }
152
-
153
- int git_win32_crtdbg_init_allocator(git_allocator *allocator)
154
- {
155
- allocator->gmalloc = crtdbg__malloc;
156
- allocator->gcalloc = crtdbg__calloc;
157
- allocator->gstrdup = crtdbg__strdup;
158
- allocator->gstrndup = crtdbg__strndup;
159
- allocator->gsubstrdup = crtdbg__substrdup;
160
- allocator->grealloc = crtdbg__realloc;
161
- allocator->greallocarray = crtdbg__reallocarray;
162
- allocator->gmallocarray = crtdbg__mallocarray;
163
- allocator->gfree = crtdbg__free;
164
- return 0;
165
- }
166
-
167
74
  /**
168
75
  * Compare function for bsearch on g_cs_index table.
169
76
  */
@@ -43,8 +43,6 @@
43
43
  * startup. See tests/main.c for an example.
44
44
  */
45
45
 
46
- int git_win32_crtdbg_init_allocator(git_allocator *allocator);
47
-
48
46
  /**
49
47
  * Initialize our memory leak tracking and de-dup data structures.
50
48
  * This should ONLY be called by git_libgit2_init().
@@ -13,11 +13,6 @@
13
13
  #include "win32/posix.h"
14
14
  #include "hash.h"
15
15
 
16
- /**
17
- * This is supposedly defined in WinBase.h (from Windows.h) but there were linker issues.
18
- */
19
- USHORT WINAPI RtlCaptureStackBackTrace(ULONG, ULONG, PVOID*, PULONG);
20
-
21
16
  static bool g_win32_stack_initialized = false;
22
17
  static HANDLE g_win32_stack_process = INVALID_HANDLE_VALUE;
23
18
  static git_win32__stack__aux_cb_alloc g_aux_cb_alloc = NULL;
@@ -81,7 +76,7 @@ int git_win32__stack_compare(
81
76
  }
82
77
 
83
78
  int git_win32__stack_format(
84
- char *pbuf, int buf_len,
79
+ char *pbuf, size_t buf_len,
85
80
  const git_win32__stack__raw_data *pdata,
86
81
  const char *prefix, const char *suffix)
87
82
  {
@@ -96,10 +91,10 @@ int git_win32__stack_format(
96
91
  } s;
97
92
 
98
93
  IMAGEHLP_LINE64 line;
99
- int buf_used = 0;
94
+ size_t buf_used = 0;
100
95
  unsigned int k;
101
96
  char detail[MY_MAX_FILENAME * 2]; /* filename plus space for function name and formatting */
102
- int detail_len;
97
+ size_t detail_len;
103
98
 
104
99
  if (!g_win32_stack_initialized) {
105
100
  git_error_set(GIT_ERROR_INVALID, "git_win32_stack not initialized.");
@@ -176,7 +171,7 @@ int git_win32__stack_format(
176
171
  }
177
172
 
178
173
  int git_win32__stack(
179
- char * pbuf, int buf_len,
174
+ char * pbuf, size_t buf_len,
180
175
  int skip,
181
176
  const char *prefix, const char *suffix)
182
177
  {
@@ -38,7 +38,7 @@ typedef void (*git_win32__stack__aux_cb_alloc)(unsigned int *aux_id);
38
38
  * @param aux_msg A buffer where a formatted message should be written.
39
39
  * @param aux_msg_len The size of the buffer.
40
40
  */
41
- typedef void (*git_win32__stack__aux_cb_lookup)(unsigned int aux_id, char *aux_msg, unsigned int aux_msg_len);
41
+ typedef void (*git_win32__stack__aux_cb_lookup)(unsigned int aux_id, char *aux_msg, size_t aux_msg_len);
42
42
 
43
43
  /**
44
44
  * Register an "aux" data provider to augment our C stacktrace data.
@@ -116,7 +116,7 @@ int git_win32__stack_compare(
116
116
  * @param suffix String written after each frame; defaults to "\n".
117
117
  */
118
118
  int git_win32__stack_format(
119
- char *pbuf, int buf_len,
119
+ char *pbuf, size_t buf_len,
120
120
  const git_win32__stack__raw_data *pdata,
121
121
  const char *prefix, const char *suffix);
122
122
 
@@ -132,7 +132,7 @@ int git_win32__stack_format(
132
132
  * @param suffix String written after each frame; defaults to "\n".
133
133
  */
134
134
  int git_win32__stack(
135
- char * pbuf, int buf_len,
135
+ char * pbuf, size_t buf_len,
136
136
  int skip,
137
137
  const char *prefix, const char *suffix);
138
138
 
@@ -93,3 +93,34 @@ int git_win32__hidden(bool *out, const char *path)
93
93
  *out = (attrs & FILE_ATTRIBUTE_HIDDEN) ? true : false;
94
94
  return 0;
95
95
  }
96
+
97
+ int git_win32__file_attribute_to_stat(
98
+ struct stat *st,
99
+ const WIN32_FILE_ATTRIBUTE_DATA *attrdata,
100
+ const wchar_t *path)
101
+ {
102
+ git_win32__stat_init(st,
103
+ attrdata->dwFileAttributes,
104
+ attrdata->nFileSizeHigh,
105
+ attrdata->nFileSizeLow,
106
+ attrdata->ftCreationTime,
107
+ attrdata->ftLastAccessTime,
108
+ attrdata->ftLastWriteTime);
109
+
110
+ if (attrdata->dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT && path) {
111
+ git_win32_path target;
112
+
113
+ if (git_win32_path_readlink_w(target, path) >= 0) {
114
+ st->st_mode = (st->st_mode & ~S_IFMT) | S_IFLNK;
115
+
116
+ /* st_size gets the UTF-8 length of the target name, in bytes,
117
+ * not counting the NULL terminator */
118
+ if ((st->st_size = git__utf16_to_8(NULL, 0, target)) < 0) {
119
+ git_error_set(GIT_ERROR_OS, "could not convert reparse point name for '%ls'", path);
120
+ return -1;
121
+ }
122
+ }
123
+ }
124
+
125
+ return 0;
126
+ }
@@ -59,6 +59,11 @@ extern int git_win32__set_hidden(const char *path, bool hidden);
59
59
  */
60
60
  extern int git_win32__hidden(bool *hidden, const char *path);
61
61
 
62
+ extern int git_win32__file_attribute_to_stat(
63
+ struct stat *st,
64
+ const WIN32_FILE_ATTRIBUTE_DATA *attrdata,
65
+ const wchar_t *path);
66
+
62
67
  /**
63
68
  * Converts a FILETIME structure to a struct timespec.
64
69
  *
@@ -115,7 +120,7 @@ GIT_INLINE(void) git_win32__stat_init(
115
120
  st->st_uid = 0;
116
121
  st->st_nlink = 1;
117
122
  st->st_mode = mode;
118
- st->st_size = ((git_off_t)nFileSizeHigh << 32) + nFileSizeLow;
123
+ st->st_size = ((int64_t)nFileSizeHigh << 32) + nFileSizeLow;
119
124
  st->st_dev = _getdrive() - 1;
120
125
  st->st_rdev = st->st_dev;
121
126
  git_win32__filetime_to_timespec(&ftLastAccessTime, &(st->st_atim));
@@ -136,35 +141,4 @@ GIT_INLINE(void) git_win32__file_information_to_stat(
136
141
  fileinfo->ftLastWriteTime);
137
142
  }
138
143
 
139
- GIT_INLINE(int) git_win32__file_attribute_to_stat(
140
- struct stat *st,
141
- const WIN32_FILE_ATTRIBUTE_DATA *attrdata,
142
- const wchar_t *path)
143
- {
144
- git_win32__stat_init(st,
145
- attrdata->dwFileAttributes,
146
- attrdata->nFileSizeHigh,
147
- attrdata->nFileSizeLow,
148
- attrdata->ftCreationTime,
149
- attrdata->ftLastAccessTime,
150
- attrdata->ftLastWriteTime);
151
-
152
- if (attrdata->dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT && path) {
153
- git_win32_path target;
154
-
155
- if (git_win32_path_readlink_w(target, path) >= 0) {
156
- st->st_mode = (st->st_mode & ~S_IFMT) | S_IFLNK;
157
-
158
- /* st_size gets the UTF-8 length of the target name, in bytes,
159
- * not counting the NULL terminator */
160
- if ((st->st_size = git__utf16_to_8(NULL, 0, target)) < 0) {
161
- git_error_set(GIT_ERROR_OS, "could not convert reparse point name for '%ls'", path);
162
- return -1;
163
- }
164
- }
165
- }
166
-
167
- return 0;
168
- }
169
-
170
144
  #endif
@@ -34,7 +34,7 @@ int git_worktree_list(git_strarray *wts, git_repository *repo)
34
34
  git_vector worktrees = GIT_VECTOR_INIT;
35
35
  git_buf path = GIT_BUF_INIT;
36
36
  char *worktree;
37
- unsigned i, len;
37
+ size_t i, len;
38
38
  int error;
39
39
 
40
40
  assert(wts && repo);
@@ -136,11 +136,11 @@ static int open_worktree_dir(git_worktree **out, const char *parent, const char
136
136
  goto out;
137
137
  }
138
138
 
139
- if ((wt->name = git__strdup(name)) == NULL
140
- || (wt->commondir_path = git_worktree__read_link(dir, "commondir")) == NULL
141
- || (wt->gitlink_path = git_worktree__read_link(dir, "gitdir")) == NULL
142
- || (parent && (wt->parent_path = git__strdup(parent)) == NULL)
143
- || (wt->worktree_path = git_path_dirname(wt->gitlink_path)) == NULL) {
139
+ if ((wt->name = git__strdup(name)) == NULL ||
140
+ (wt->commondir_path = git_worktree__read_link(dir, "commondir")) == NULL ||
141
+ (wt->gitlink_path = git_worktree__read_link(dir, "gitdir")) == NULL ||
142
+ (parent && (wt->parent_path = git__strdup(parent)) == NULL) ||
143
+ (wt->worktree_path = git_path_dirname(wt->gitlink_path)) == NULL) {
144
144
  error = -1;
145
145
  goto out;
146
146
  }
@@ -149,7 +149,10 @@ static int open_worktree_dir(git_worktree **out, const char *parent, const char
149
149
  goto out;
150
150
  wt->gitdir_path = git_buf_detach(&gitdir);
151
151
 
152
- wt->locked = !!git_worktree_is_locked(NULL, wt);
152
+ if ((error = git_worktree_is_locked(NULL, wt)) < 0)
153
+ goto out;
154
+ wt->locked = !!error;
155
+ error = 0;
153
156
 
154
157
  *out = wt;
155
158
 
@@ -238,29 +241,36 @@ int git_worktree_validate(const git_worktree *wt)
238
241
 
239
242
  if (!is_worktree_dir(wt->gitdir_path)) {
240
243
  git_error_set(GIT_ERROR_WORKTREE,
241
- "Worktree gitdir ('%s') is not valid",
244
+ "worktree gitdir ('%s') is not valid",
242
245
  wt->gitlink_path);
243
246
  return GIT_ERROR;
244
247
  }
245
248
 
246
249
  if (wt->parent_path && !git_path_exists(wt->parent_path)) {
247
250
  git_error_set(GIT_ERROR_WORKTREE,
248
- "Worktree parent directory ('%s') does not exist ",
251
+ "worktree parent directory ('%s') does not exist ",
249
252
  wt->parent_path);
250
253
  return GIT_ERROR;
251
254
  }
252
255
 
253
256
  if (!git_path_exists(wt->commondir_path)) {
254
257
  git_error_set(GIT_ERROR_WORKTREE,
255
- "Worktree common directory ('%s') does not exist ",
258
+ "worktree common directory ('%s') does not exist ",
256
259
  wt->commondir_path);
257
260
  return GIT_ERROR;
258
261
  }
259
-
262
+
263
+ if (!git_path_exists(wt->worktree_path)) {
264
+ git_error_set(GIT_ERROR_WORKTREE,
265
+ "worktree directory '%s' does not exist",
266
+ wt->worktree_path);
267
+ return GIT_ERROR;
268
+ }
269
+
260
270
  return 0;
261
271
  }
262
272
 
263
- int git_worktree_add_init_options(git_worktree_add_options *opts,
273
+ int git_worktree_add_options_init(git_worktree_add_options *opts,
264
274
  unsigned int version)
265
275
  {
266
276
  GIT_INIT_STRUCTURE_FROM_TEMPLATE(opts, version,
@@ -268,6 +278,14 @@ int git_worktree_add_init_options(git_worktree_add_options *opts,
268
278
  return 0;
269
279
  }
270
280
 
281
+ #ifndef GIT_DEPRECATE_HARD
282
+ int git_worktree_add_init_options(git_worktree_add_options *opts,
283
+ unsigned int version)
284
+ {
285
+ return git_worktree_add_options_init(opts, version);
286
+ }
287
+ #endif
288
+
271
289
  int git_worktree_add(git_worktree **out, git_repository *repo,
272
290
  const char *name, const char *worktree,
273
291
  const git_worktree_add_options *opts)
@@ -290,6 +308,20 @@ int git_worktree_add(git_worktree **out, git_repository *repo,
290
308
 
291
309
  *out = NULL;
292
310
 
311
+ if (wtopts.ref) {
312
+ if (!git_reference_is_branch(wtopts.ref)) {
313
+ git_error_set(GIT_ERROR_WORKTREE, "reference is not a branch");
314
+ err = -1;
315
+ goto out;
316
+ }
317
+
318
+ if (git_branch_is_checked_out(wtopts.ref)) {
319
+ git_error_set(GIT_ERROR_WORKTREE, "reference is already checked out");
320
+ err = -1;
321
+ goto out;
322
+ }
323
+ }
324
+
293
325
  /* Create gitdir directory ".git/worktrees/<name>" */
294
326
  if ((err = git_buf_joinpath(&gitdir, repo->commondir, "worktrees")) < 0)
295
327
  goto out;
@@ -342,18 +374,6 @@ int git_worktree_add(git_worktree **out, git_repository *repo,
342
374
 
343
375
  /* Set up worktree reference */
344
376
  if (wtopts.ref) {
345
- if (!git_reference_is_branch(wtopts.ref)) {
346
- git_error_set(GIT_ERROR_WORKTREE, "reference is not a branch");
347
- err = -1;
348
- goto out;
349
- }
350
-
351
- if (git_branch_is_checked_out(wtopts.ref)) {
352
- git_error_set(GIT_ERROR_WORKTREE, "reference is already checked out");
353
- err = -1;
354
- goto out;
355
- }
356
-
357
377
  if ((err = git_reference_dup(&ref, wtopts.ref)) < 0)
358
378
  goto out;
359
379
  } else {
@@ -395,20 +415,24 @@ out:
395
415
  int git_worktree_lock(git_worktree *wt, const char *reason)
396
416
  {
397
417
  git_buf buf = GIT_BUF_INIT, path = GIT_BUF_INIT;
398
- int err;
418
+ int error;
399
419
 
400
420
  assert(wt);
401
421
 
402
- if ((err = git_worktree_is_locked(NULL, wt)) < 0)
422
+ if ((error = git_worktree_is_locked(NULL, wt)) < 0)
403
423
  goto out;
424
+ if (error) {
425
+ error = GIT_ELOCKED;
426
+ goto out;
427
+ }
404
428
 
405
- if ((err = git_buf_joinpath(&path, wt->gitdir_path, "locked")) < 0)
429
+ if ((error = git_buf_joinpath(&path, wt->gitdir_path, "locked")) < 0)
406
430
  goto out;
407
431
 
408
432
  if (reason)
409
433
  git_buf_attach_notowned(&buf, reason, strlen(reason));
410
434
 
411
- if ((err = git_futils_writebuffer(&buf, path.ptr, O_CREAT|O_EXCL|O_WRONLY, 0644)) < 0)
435
+ if ((error = git_futils_writebuffer(&buf, path.ptr, O_CREAT|O_EXCL|O_WRONLY, 0644)) < 0)
412
436
  goto out;
413
437
 
414
438
  wt->locked = 1;
@@ -416,16 +440,19 @@ int git_worktree_lock(git_worktree *wt, const char *reason)
416
440
  out:
417
441
  git_buf_dispose(&path);
418
442
 
419
- return err;
443
+ return error;
420
444
  }
421
445
 
422
446
  int git_worktree_unlock(git_worktree *wt)
423
447
  {
424
448
  git_buf path = GIT_BUF_INIT;
449
+ int error;
425
450
 
426
451
  assert(wt);
427
452
 
428
- if (!git_worktree_is_locked(NULL, wt))
453
+ if ((error = git_worktree_is_locked(NULL, wt)) < 0)
454
+ return error;
455
+ if (!error)
429
456
  return 1;
430
457
 
431
458
  if (git_buf_joinpath(&path, wt->gitdir_path, "locked") < 0)
@@ -446,22 +473,25 @@ int git_worktree_unlock(git_worktree *wt)
446
473
  int git_worktree_is_locked(git_buf *reason, const git_worktree *wt)
447
474
  {
448
475
  git_buf path = GIT_BUF_INIT;
449
- int ret;
476
+ int error, locked;
450
477
 
451
478
  assert(wt);
452
479
 
453
480
  if (reason)
454
481
  git_buf_clear(reason);
455
482
 
456
- if ((ret = git_buf_joinpath(&path, wt->gitdir_path, "locked")) < 0)
483
+ if ((error = git_buf_joinpath(&path, wt->gitdir_path, "locked")) < 0)
484
+ goto out;
485
+ locked = git_path_exists(path.ptr);
486
+ if (locked && reason &&
487
+ (error = git_futils_readbuffer(reason, path.ptr)) < 0)
457
488
  goto out;
458
- if ((ret = git_path_exists(path.ptr)) && reason)
459
- git_futils_readbuffer(reason, path.ptr);
460
489
 
490
+ error = locked;
461
491
  out:
462
492
  git_buf_dispose(&path);
463
493
 
464
- return ret;
494
+ return error;
465
495
  }
466
496
 
467
497
  const char *git_worktree_name(const git_worktree *wt)
@@ -476,7 +506,7 @@ const char *git_worktree_path(const git_worktree *wt)
476
506
  return wt->worktree_path;
477
507
  }
478
508
 
479
- int git_worktree_prune_init_options(
509
+ int git_worktree_prune_options_init(
480
510
  git_worktree_prune_options *opts,
481
511
  unsigned int version)
482
512
  {
@@ -485,10 +515,17 @@ int git_worktree_prune_init_options(
485
515
  return 0;
486
516
  }
487
517
 
518
+ #ifndef GIT_DEPRECATE_HARD
519
+ int git_worktree_prune_init_options(git_worktree_prune_options *opts,
520
+ unsigned int version)
521
+ {
522
+ return git_worktree_prune_options_init(opts, version);
523
+ }
524
+ #endif
525
+
488
526
  int git_worktree_is_prunable(git_worktree *wt,
489
527
  git_worktree_prune_options *opts)
490
528
  {
491
- git_buf reason = GIT_BUF_INIT;
492
529
  git_worktree_prune_options popts = GIT_WORKTREE_PRUNE_OPTIONS_INIT;
493
530
 
494
531
  GIT_ERROR_CHECK_VERSION(
@@ -498,21 +535,25 @@ int git_worktree_is_prunable(git_worktree *wt,
498
535
  if (opts)
499
536
  memcpy(&popts, opts, sizeof(popts));
500
537
 
501
- if ((popts.flags & GIT_WORKTREE_PRUNE_LOCKED) == 0 &&
502
- git_worktree_is_locked(&reason, wt))
503
- {
504
- if (!reason.size)
505
- git_buf_attach_notowned(&reason, "no reason given", 15);
506
- git_error_set(GIT_ERROR_WORKTREE, "Not pruning locked working tree: '%s'", reason.ptr);
507
- git_buf_dispose(&reason);
538
+ if ((popts.flags & GIT_WORKTREE_PRUNE_LOCKED) == 0) {
539
+ git_buf reason = GIT_BUF_INIT;
540
+ int error;
508
541
 
509
- return 0;
542
+ if ((error = git_worktree_is_locked(&reason, wt)) < 0)
543
+ return error;
544
+
545
+ if (error) {
546
+ if (!reason.size)
547
+ git_buf_attach_notowned(&reason, "no reason given", 15);
548
+ git_error_set(GIT_ERROR_WORKTREE, "not pruning locked working tree: '%s'", reason.ptr);
549
+ git_buf_dispose(&reason);
550
+ return 0;
551
+ }
510
552
  }
511
553
 
512
554
  if ((popts.flags & GIT_WORKTREE_PRUNE_VALID) == 0 &&
513
- git_worktree_validate(wt) == 0)
514
- {
515
- git_error_set(GIT_ERROR_WORKTREE, "Not pruning valid working tree");
555
+ git_worktree_validate(wt) == 0) {
556
+ git_error_set(GIT_ERROR_WORKTREE, "not pruning valid working tree");
516
557
  return 0;
517
558
  }
518
559
 
@@ -544,7 +585,7 @@ int git_worktree_prune(git_worktree *wt,
544
585
  goto out;
545
586
  if (!git_path_exists(path.ptr))
546
587
  {
547
- git_error_set(GIT_ERROR_WORKTREE, "Worktree gitdir '%s' does not exist", path.ptr);
588
+ git_error_set(GIT_ERROR_WORKTREE, "worktree gitdir '%s' does not exist", path.ptr);
548
589
  err = -1;
549
590
  goto out;
550
591
  }
@@ -564,7 +605,7 @@ int git_worktree_prune(git_worktree *wt,
564
605
  git_buf_attach(&path, wtpath, 0);
565
606
  if (!git_path_exists(path.ptr))
566
607
  {
567
- git_error_set(GIT_ERROR_WORKTREE, "Working tree '%s' does not exist", path.ptr);
608
+ git_error_set(GIT_ERROR_WORKTREE, "working tree '%s' does not exist", path.ptr);
568
609
  err = -1;
569
610
  goto out;
570
611
  }