rugged 1.0.0 → 1.2.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 (338) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -0
  3. data/README.md +3 -3
  4. data/ext/rugged/rugged.c +7 -4
  5. data/ext/rugged/rugged_commit.c +1 -1
  6. data/ext/rugged/rugged_config.c +1 -1
  7. data/ext/rugged/rugged_object.c +1 -1
  8. data/ext/rugged/rugged_remote.c +32 -2
  9. data/ext/rugged/rugged_repo.c +13 -3
  10. data/lib/rugged/commit.rb +17 -4
  11. data/lib/rugged/repository.rb +7 -8
  12. data/lib/rugged/submodule_collection.rb +4 -4
  13. data/lib/rugged/version.rb +1 -1
  14. data/vendor/libgit2/CMakeLists.txt +41 -74
  15. data/vendor/libgit2/COPYING +109 -1
  16. data/vendor/libgit2/cmake/{Modules/AddCFlagIfSupported.cmake → AddCFlagIfSupported.cmake} +0 -0
  17. data/vendor/libgit2/cmake/{Modules/EnableWarnings.cmake → EnableWarnings.cmake} +0 -0
  18. data/vendor/libgit2/cmake/{Modules/FindCoreFoundation.cmake → FindCoreFoundation.cmake} +0 -0
  19. data/vendor/libgit2/cmake/{Modules/FindGSSAPI.cmake → FindGSSAPI.cmake} +0 -0
  20. data/vendor/libgit2/cmake/{Modules/FindGSSFramework.cmake → FindGSSFramework.cmake} +0 -0
  21. data/vendor/libgit2/cmake/{Modules/FindHTTP_Parser.cmake → FindHTTP_Parser.cmake} +0 -0
  22. data/vendor/libgit2/cmake/{Modules/FindIconv.cmake → FindIconv.cmake} +0 -0
  23. data/vendor/libgit2/cmake/{Modules/FindPCRE.cmake → FindPCRE.cmake} +0 -0
  24. data/vendor/libgit2/cmake/{Modules/FindPCRE2.cmake → FindPCRE2.cmake} +0 -0
  25. data/vendor/libgit2/cmake/{Modules/FindPkgLibraries.cmake → FindPkgLibraries.cmake} +0 -0
  26. data/vendor/libgit2/cmake/{Modules/FindSecurity.cmake → FindSecurity.cmake} +0 -0
  27. data/vendor/libgit2/cmake/{Modules/FindStatNsec.cmake → FindStatNsec.cmake} +0 -0
  28. data/vendor/libgit2/cmake/Findfutimens.cmake +14 -0
  29. data/vendor/libgit2/cmake/{Modules/FindmbedTLS.cmake → FindmbedTLS.cmake} +0 -0
  30. data/vendor/libgit2/cmake/{Modules/IdeSplitSources.cmake → IdeSplitSources.cmake} +0 -0
  31. data/vendor/libgit2/cmake/{Modules/PkgBuildConfig.cmake → PkgBuildConfig.cmake} +0 -0
  32. data/vendor/libgit2/cmake/{Modules/SanitizeBool.cmake → SanitizeBool.cmake} +0 -0
  33. data/vendor/libgit2/cmake/{Modules/SelectGSSAPI.cmake → SelectGSSAPI.cmake} +18 -26
  34. data/vendor/libgit2/cmake/{Modules/SelectHTTPSBackend.cmake → SelectHTTPSBackend.cmake} +29 -32
  35. data/vendor/libgit2/cmake/{Modules/SelectHashes.cmake → SelectHashes.cmake} +21 -28
  36. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +101 -0
  37. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +4 -3
  38. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +24 -10
  39. data/vendor/libgit2/deps/ntlmclient/compat.h +0 -27
  40. data/vendor/libgit2/deps/ntlmclient/crypt.h +14 -9
  41. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +20 -20
  42. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +3 -3
  43. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +37 -36
  44. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +4 -3
  45. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +178 -51
  46. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +74 -5
  47. data/vendor/libgit2/deps/ntlmclient/ntlm.c +164 -135
  48. data/vendor/libgit2/deps/ntlmclient/ntlm.h +13 -9
  49. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +16 -3
  50. data/vendor/libgit2/deps/ntlmclient/unicode.h +10 -4
  51. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +16 -27
  52. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.h +20 -0
  53. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +28 -52
  54. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.h +22 -0
  55. data/vendor/libgit2/deps/ntlmclient/util.c +15 -1
  56. data/vendor/libgit2/deps/ntlmclient/util.h +2 -1
  57. data/vendor/libgit2/deps/pcre/LICENCE +93 -0
  58. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  59. data/vendor/libgit2/deps/pcre/pcre_compile.c +29 -17
  60. data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +4 -4
  61. data/vendor/libgit2/deps/pcre/pcreposix.c +2 -3
  62. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -5
  63. data/vendor/libgit2/deps/zlib/deflate.c +1 -0
  64. data/vendor/libgit2/include/git2/annotated_commit.h +1 -1
  65. data/vendor/libgit2/include/git2/apply.h +2 -0
  66. data/vendor/libgit2/include/git2/attr.h +89 -0
  67. data/vendor/libgit2/include/git2/blame.h +95 -42
  68. data/vendor/libgit2/include/git2/blob.h +31 -3
  69. data/vendor/libgit2/include/git2/branch.h +25 -0
  70. data/vendor/libgit2/include/git2/cert.h +42 -5
  71. data/vendor/libgit2/include/git2/checkout.h +28 -12
  72. data/vendor/libgit2/include/git2/commit.h +35 -19
  73. data/vendor/libgit2/include/git2/common.h +33 -6
  74. data/vendor/libgit2/include/git2/config.h +1 -1
  75. data/vendor/libgit2/include/git2/deprecated.h +248 -8
  76. data/vendor/libgit2/include/git2/diff.h +35 -20
  77. data/vendor/libgit2/include/git2/errors.h +8 -7
  78. data/vendor/libgit2/include/git2/filter.h +57 -17
  79. data/vendor/libgit2/include/git2/graph.h +20 -2
  80. data/vendor/libgit2/include/git2/index.h +4 -5
  81. data/vendor/libgit2/include/git2/indexer.h +2 -1
  82. data/vendor/libgit2/include/git2/odb.h +44 -20
  83. data/vendor/libgit2/include/git2/pack.h +1 -1
  84. data/vendor/libgit2/include/git2/patch.h +8 -0
  85. data/vendor/libgit2/include/git2/rebase.h +25 -1
  86. data/vendor/libgit2/include/git2/refs.h +9 -5
  87. data/vendor/libgit2/include/git2/remote.h +59 -6
  88. data/vendor/libgit2/include/git2/repository.h +95 -52
  89. data/vendor/libgit2/include/git2/revparse.h +5 -5
  90. data/vendor/libgit2/include/git2/status.h +115 -59
  91. data/vendor/libgit2/include/git2/strarray.h +6 -10
  92. data/vendor/libgit2/include/git2/submodule.h +9 -0
  93. data/vendor/libgit2/include/git2/sys/commit_graph.h +174 -0
  94. data/vendor/libgit2/include/git2/sys/filter.h +49 -28
  95. data/vendor/libgit2/include/git2/sys/midx.h +74 -0
  96. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -0
  97. data/vendor/libgit2/include/git2/sys/transport.h +1 -0
  98. data/vendor/libgit2/include/git2/tag.h +12 -0
  99. data/vendor/libgit2/include/git2/transport.h +1 -1
  100. data/vendor/libgit2/include/git2/tree.h +2 -14
  101. data/vendor/libgit2/include/git2/types.h +9 -0
  102. data/vendor/libgit2/include/git2/version.h +3 -3
  103. data/vendor/libgit2/include/git2/worktree.h +1 -0
  104. data/vendor/libgit2/src/CMakeLists.txt +77 -44
  105. data/vendor/libgit2/src/alloc.c +21 -8
  106. data/vendor/libgit2/src/allocators/failalloc.c +92 -0
  107. data/vendor/libgit2/src/allocators/failalloc.h +23 -0
  108. data/vendor/libgit2/src/allocators/stdalloc.c +41 -10
  109. data/vendor/libgit2/src/allocators/win32_leakcheck.c +118 -0
  110. data/vendor/libgit2/src/allocators/{win32_crtdbg.h → win32_leakcheck.h} +3 -3
  111. data/vendor/libgit2/src/annotated_commit.c +21 -9
  112. data/vendor/libgit2/src/apply.c +21 -8
  113. data/vendor/libgit2/src/array.h +11 -11
  114. data/vendor/libgit2/src/assert_safe.h +58 -0
  115. data/vendor/libgit2/src/attr.c +181 -74
  116. data/vendor/libgit2/src/attr_file.c +92 -42
  117. data/vendor/libgit2/src/attr_file.h +32 -11
  118. data/vendor/libgit2/src/attrcache.c +44 -40
  119. data/vendor/libgit2/src/attrcache.h +4 -5
  120. data/vendor/libgit2/src/blame.c +28 -15
  121. data/vendor/libgit2/src/blame_git.c +6 -3
  122. data/vendor/libgit2/src/blob.c +46 -24
  123. data/vendor/libgit2/src/branch.c +87 -37
  124. data/vendor/libgit2/src/buffer.c +339 -27
  125. data/vendor/libgit2/src/buffer.h +153 -2
  126. data/vendor/libgit2/src/cache.c +3 -24
  127. data/vendor/libgit2/src/cache.h +7 -7
  128. data/vendor/libgit2/src/cc-compat.h +10 -2
  129. data/vendor/libgit2/src/checkout.c +97 -98
  130. data/vendor/libgit2/src/cherrypick.c +8 -2
  131. data/vendor/libgit2/src/clone.c +104 -29
  132. data/vendor/libgit2/src/commit.c +41 -28
  133. data/vendor/libgit2/src/commit_graph.c +1209 -0
  134. data/vendor/libgit2/src/commit_graph.h +162 -0
  135. data/vendor/libgit2/src/commit_list.c +46 -0
  136. data/vendor/libgit2/src/commit_list.h +2 -0
  137. data/vendor/libgit2/src/common.h +26 -2
  138. data/vendor/libgit2/src/config.c +40 -22
  139. data/vendor/libgit2/src/config_cache.c +9 -4
  140. data/vendor/libgit2/src/config_entries.c +35 -27
  141. data/vendor/libgit2/src/config_file.c +25 -8
  142. data/vendor/libgit2/src/config_parse.c +5 -7
  143. data/vendor/libgit2/src/config_snapshot.c +2 -1
  144. data/vendor/libgit2/src/crlf.c +16 -6
  145. data/vendor/libgit2/src/date.c +4 -3
  146. data/vendor/libgit2/src/delta.c +1 -1
  147. data/vendor/libgit2/src/describe.c +11 -4
  148. data/vendor/libgit2/src/diff.c +23 -19
  149. data/vendor/libgit2/src/diff_driver.c +21 -17
  150. data/vendor/libgit2/src/diff_file.c +5 -7
  151. data/vendor/libgit2/src/diff_generate.c +56 -28
  152. data/vendor/libgit2/src/diff_parse.c +2 -3
  153. data/vendor/libgit2/src/diff_print.c +81 -65
  154. data/vendor/libgit2/src/diff_stats.c +19 -16
  155. data/vendor/libgit2/src/diff_tform.c +13 -13
  156. data/vendor/libgit2/src/diff_xdiff.c +4 -2
  157. data/vendor/libgit2/src/diff_xdiff.h +1 -1
  158. data/vendor/libgit2/src/errors.c +26 -19
  159. data/vendor/libgit2/src/features.h.in +5 -1
  160. data/vendor/libgit2/src/fetch.c +7 -2
  161. data/vendor/libgit2/src/fetchhead.c +8 -4
  162. data/vendor/libgit2/src/filebuf.c +9 -7
  163. data/vendor/libgit2/src/filter.c +209 -113
  164. data/vendor/libgit2/src/filter.h +24 -5
  165. data/vendor/libgit2/src/futils.c +8 -8
  166. data/vendor/libgit2/src/futils.h +4 -4
  167. data/vendor/libgit2/src/graph.c +64 -9
  168. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +3 -3
  169. data/vendor/libgit2/src/hash/sha1/common_crypto.c +3 -3
  170. data/vendor/libgit2/src/hash/sha1/generic.h +1 -1
  171. data/vendor/libgit2/src/hash/sha1/mbedtls.c +12 -12
  172. data/vendor/libgit2/src/hash/sha1/openssl.c +3 -3
  173. data/vendor/libgit2/src/hash/sha1/sha1dc/sha1.c +0 -2
  174. data/vendor/libgit2/src/hash/sha1/win32.c +15 -11
  175. data/vendor/libgit2/src/hash.c +16 -13
  176. data/vendor/libgit2/src/hash.h +1 -1
  177. data/vendor/libgit2/src/hashsig.c +23 -10
  178. data/vendor/libgit2/src/ident.c +13 -3
  179. data/vendor/libgit2/src/idxmap.c +0 -22
  180. data/vendor/libgit2/src/ignore.c +35 -19
  181. data/vendor/libgit2/src/index.c +126 -84
  182. data/vendor/libgit2/src/index.h +1 -1
  183. data/vendor/libgit2/src/indexer.c +60 -36
  184. data/vendor/libgit2/src/integer.h +79 -2
  185. data/vendor/libgit2/src/iterator.c +40 -28
  186. data/vendor/libgit2/src/iterator.h +1 -1
  187. data/vendor/libgit2/src/khash.h +2 -11
  188. data/vendor/libgit2/src/{settings.c → libgit2.c} +125 -49
  189. data/vendor/libgit2/src/libgit2.h +15 -0
  190. data/vendor/libgit2/src/mailmap.c +23 -10
  191. data/vendor/libgit2/src/map.h +3 -3
  192. data/vendor/libgit2/src/merge.c +108 -46
  193. data/vendor/libgit2/src/merge.h +2 -1
  194. data/vendor/libgit2/src/merge_driver.c +19 -13
  195. data/vendor/libgit2/src/merge_file.c +15 -9
  196. data/vendor/libgit2/src/message.c +3 -1
  197. data/vendor/libgit2/src/midx.c +879 -0
  198. data/vendor/libgit2/src/midx.h +110 -0
  199. data/vendor/libgit2/src/mwindow.c +214 -95
  200. data/vendor/libgit2/src/mwindow.h +3 -3
  201. data/vendor/libgit2/src/net.c +133 -4
  202. data/vendor/libgit2/src/net.h +16 -2
  203. data/vendor/libgit2/src/netops.c +6 -4
  204. data/vendor/libgit2/src/netops.h +2 -2
  205. data/vendor/libgit2/src/notes.c +10 -10
  206. data/vendor/libgit2/src/object.c +24 -15
  207. data/vendor/libgit2/src/odb.c +298 -57
  208. data/vendor/libgit2/src/odb.h +16 -2
  209. data/vendor/libgit2/src/odb_loose.c +31 -21
  210. data/vendor/libgit2/src/odb_mempack.c +3 -1
  211. data/vendor/libgit2/src/odb_pack.c +391 -114
  212. data/vendor/libgit2/src/oid.c +7 -4
  213. data/vendor/libgit2/src/pack-objects.c +83 -69
  214. data/vendor/libgit2/src/pack.c +383 -150
  215. data/vendor/libgit2/src/pack.h +44 -9
  216. data/vendor/libgit2/src/patch.c +14 -7
  217. data/vendor/libgit2/src/patch_generate.c +3 -5
  218. data/vendor/libgit2/src/patch_parse.c +6 -3
  219. data/vendor/libgit2/src/path.c +102 -57
  220. data/vendor/libgit2/src/path.h +79 -6
  221. data/vendor/libgit2/src/pathspec.c +12 -11
  222. data/vendor/libgit2/src/pool.c +34 -22
  223. data/vendor/libgit2/src/pool.h +9 -1
  224. data/vendor/libgit2/src/posix.c +43 -12
  225. data/vendor/libgit2/src/posix.h +9 -0
  226. data/vendor/libgit2/src/proxy.c +2 -0
  227. data/vendor/libgit2/src/push.c +2 -0
  228. data/vendor/libgit2/src/reader.c +10 -6
  229. data/vendor/libgit2/src/rebase.c +95 -49
  230. data/vendor/libgit2/src/refdb.c +165 -13
  231. data/vendor/libgit2/src/refdb.h +69 -0
  232. data/vendor/libgit2/src/refdb_fs.c +144 -152
  233. data/vendor/libgit2/src/reflog.c +21 -20
  234. data/vendor/libgit2/src/refs.c +151 -231
  235. data/vendor/libgit2/src/refs.h +2 -20
  236. data/vendor/libgit2/src/refspec.c +80 -44
  237. data/vendor/libgit2/src/regexp.c +2 -2
  238. data/vendor/libgit2/src/remote.c +312 -121
  239. data/vendor/libgit2/src/remote.h +2 -1
  240. data/vendor/libgit2/src/repository.c +351 -189
  241. data/vendor/libgit2/src/repository.h +23 -29
  242. data/vendor/libgit2/src/reset.c +7 -6
  243. data/vendor/libgit2/src/revert.c +8 -2
  244. data/vendor/libgit2/src/revparse.c +19 -13
  245. data/vendor/libgit2/src/revwalk.c +35 -20
  246. data/vendor/libgit2/src/runtime.c +162 -0
  247. data/vendor/libgit2/src/runtime.h +62 -0
  248. data/vendor/libgit2/src/{refdb_fs.h → settings.h} +3 -11
  249. data/vendor/libgit2/src/signature.c +6 -5
  250. data/vendor/libgit2/src/sortedcache.c +2 -3
  251. data/vendor/libgit2/src/sortedcache.h +10 -8
  252. data/vendor/libgit2/src/stash.c +7 -3
  253. data/vendor/libgit2/src/status.c +9 -4
  254. data/vendor/libgit2/src/strarray.c +64 -0
  255. data/vendor/libgit2/src/streams/mbedtls.c +14 -17
  256. data/vendor/libgit2/src/streams/mbedtls.h +1 -1
  257. data/vendor/libgit2/src/streams/openssl.c +113 -207
  258. data/vendor/libgit2/src/streams/openssl.h +9 -1
  259. data/vendor/libgit2/src/streams/openssl_dynamic.c +309 -0
  260. data/vendor/libgit2/src/streams/openssl_dynamic.h +348 -0
  261. data/vendor/libgit2/src/streams/openssl_legacy.c +203 -0
  262. data/vendor/libgit2/src/streams/openssl_legacy.h +63 -0
  263. data/vendor/libgit2/src/streams/registry.c +10 -9
  264. data/vendor/libgit2/src/streams/socket.c +6 -2
  265. data/vendor/libgit2/src/streams/stransport.c +6 -3
  266. data/vendor/libgit2/src/streams/tls.c +5 -3
  267. data/vendor/libgit2/src/submodule.c +134 -66
  268. data/vendor/libgit2/src/submodule.h +9 -9
  269. data/vendor/libgit2/src/sysdir.c +8 -26
  270. data/vendor/libgit2/src/sysdir.h +0 -11
  271. data/vendor/libgit2/src/tag.c +49 -11
  272. data/vendor/libgit2/src/thread.c +140 -0
  273. data/vendor/libgit2/src/thread.h +479 -0
  274. data/vendor/libgit2/src/threadstate.c +83 -0
  275. data/vendor/libgit2/src/threadstate.h +24 -0
  276. data/vendor/libgit2/src/trace.c +2 -2
  277. data/vendor/libgit2/src/trace.h +17 -13
  278. data/vendor/libgit2/src/transaction.c +21 -9
  279. data/vendor/libgit2/src/transport.c +3 -3
  280. data/vendor/libgit2/src/transports/auth.c +1 -1
  281. data/vendor/libgit2/src/transports/auth_negotiate.c +11 -4
  282. data/vendor/libgit2/src/transports/auth_ntlm.c +10 -6
  283. data/vendor/libgit2/src/transports/credential.c +17 -7
  284. data/vendor/libgit2/src/transports/credential_helpers.c +2 -0
  285. data/vendor/libgit2/src/transports/git.c +1 -3
  286. data/vendor/libgit2/src/transports/http.c +19 -17
  287. data/vendor/libgit2/src/transports/http.h +1 -0
  288. data/vendor/libgit2/src/transports/httpclient.c +84 -42
  289. data/vendor/libgit2/src/transports/httpclient.h +1 -1
  290. data/vendor/libgit2/src/transports/local.c +5 -5
  291. data/vendor/libgit2/src/transports/smart.c +14 -9
  292. data/vendor/libgit2/src/transports/smart.h +1 -1
  293. data/vendor/libgit2/src/transports/smart_protocol.c +11 -5
  294. data/vendor/libgit2/src/transports/ssh.c +51 -17
  295. data/vendor/libgit2/src/transports/winhttp.c +156 -88
  296. data/vendor/libgit2/src/tree.c +100 -77
  297. data/vendor/libgit2/src/tree.h +1 -0
  298. data/vendor/libgit2/src/tsort.c +0 -2
  299. data/vendor/libgit2/src/unix/map.c +3 -1
  300. data/vendor/libgit2/src/unix/posix.h +16 -1
  301. data/vendor/libgit2/src/unix/pthread.h +2 -1
  302. data/vendor/libgit2/src/utf8.c +150 -0
  303. data/vendor/libgit2/src/utf8.h +52 -0
  304. data/vendor/libgit2/src/util.c +74 -183
  305. data/vendor/libgit2/src/util.h +33 -39
  306. data/vendor/libgit2/src/vector.c +23 -19
  307. data/vendor/libgit2/src/vector.h +4 -2
  308. data/vendor/libgit2/src/win32/findfile.c +4 -2
  309. data/vendor/libgit2/src/win32/git2.rc +18 -3
  310. data/vendor/libgit2/src/win32/map.c +1 -1
  311. data/vendor/libgit2/src/win32/msvc-compat.h +9 -1
  312. data/vendor/libgit2/src/win32/path_w32.c +23 -25
  313. data/vendor/libgit2/src/win32/path_w32.h +0 -1
  314. data/vendor/libgit2/src/win32/posix_w32.c +77 -1
  315. data/vendor/libgit2/src/win32/precompiled.h +0 -1
  316. data/vendor/libgit2/src/win32/reparse.h +4 -4
  317. data/vendor/libgit2/src/win32/thread.c +24 -15
  318. data/vendor/libgit2/src/win32/thread.h +1 -1
  319. data/vendor/libgit2/src/win32/w32_buffer.c +3 -3
  320. data/vendor/libgit2/src/win32/w32_common.h +18 -9
  321. data/vendor/libgit2/src/win32/{w32_crtdbg_stacktrace.c → w32_leakcheck.c} +269 -33
  322. data/vendor/libgit2/src/win32/w32_leakcheck.h +222 -0
  323. data/vendor/libgit2/src/win32/w32_util.h +6 -6
  324. data/vendor/libgit2/src/worktree.c +37 -15
  325. data/vendor/libgit2/src/zstream.c +1 -1
  326. metadata +56 -38
  327. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +0 -29
  328. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +0 -96
  329. data/vendor/libgit2/src/allocators/win32_crtdbg.c +0 -118
  330. data/vendor/libgit2/src/buf_text.c +0 -316
  331. data/vendor/libgit2/src/buf_text.h +0 -122
  332. data/vendor/libgit2/src/global.c +0 -361
  333. data/vendor/libgit2/src/global.h +0 -41
  334. data/vendor/libgit2/src/thread-utils.c +0 -58
  335. data/vendor/libgit2/src/thread-utils.h +0 -246
  336. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -127
  337. data/vendor/libgit2/src/win32/w32_stack.c +0 -188
  338. data/vendor/libgit2/src/win32/w32_stack.h +0 -140
@@ -0,0 +1,162 @@
1
+ /*
2
+ * Copyright (C) the libgit2 contributors. All rights reserved.
3
+ *
4
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
5
+ * a Linking Exception. For full terms see the included COPYING file.
6
+ */
7
+
8
+ #ifndef INCLUDE_commit_graph_h__
9
+ #define INCLUDE_commit_graph_h__
10
+
11
+ #include "common.h"
12
+
13
+ #include "git2/types.h"
14
+ #include "git2/sys/commit_graph.h"
15
+
16
+ #include "map.h"
17
+ #include "vector.h"
18
+
19
+ /**
20
+ * A commit-graph file.
21
+ *
22
+ * This file contains metadata about commits, particularly the generation
23
+ * number for each one. This can help speed up graph operations without
24
+ * requiring a full graph traversal.
25
+ *
26
+ * Support for this feature was added in git 2.19.
27
+ */
28
+ typedef struct git_commit_graph_file {
29
+ git_map graph_map;
30
+
31
+ /* The OID Fanout table. */
32
+ const uint32_t *oid_fanout;
33
+ /* The total number of commits in the graph. */
34
+ uint32_t num_commits;
35
+
36
+ /* The OID Lookup table. */
37
+ git_oid *oid_lookup;
38
+
39
+ /*
40
+ * The Commit Data table. Each entry contains the OID of the commit followed
41
+ * by two 8-byte fields in network byte order:
42
+ * - The indices of the first two parents (32 bits each).
43
+ * - The generation number (first 30 bits) and commit time in seconds since
44
+ * UNIX epoch (34 bits).
45
+ */
46
+ const unsigned char *commit_data;
47
+
48
+ /*
49
+ * The Extra Edge List table. Each 4-byte entry is a network byte order index
50
+ * of one of the i-th (i > 0) parents of commits in the `commit_data` table,
51
+ * when the commit has more than 2 parents.
52
+ */
53
+ const unsigned char *extra_edge_list;
54
+ /* The number of entries in the Extra Edge List table. Each entry is 4 bytes wide. */
55
+ size_t num_extra_edge_list;
56
+
57
+ /* The trailer of the file. Contains the SHA1-checksum of the whole file. */
58
+ git_oid checksum;
59
+ } git_commit_graph_file;
60
+
61
+ /**
62
+ * An entry in the commit-graph file. Provides a subset of the information that
63
+ * can be obtained from the commit header.
64
+ */
65
+ typedef struct git_commit_graph_entry {
66
+ /* The generation number of the commit within the graph */
67
+ size_t generation;
68
+
69
+ /* Time in seconds from UNIX epoch. */
70
+ git_time_t commit_time;
71
+
72
+ /* The number of parents of the commit. */
73
+ size_t parent_count;
74
+
75
+ /*
76
+ * The indices of the parent commits within the Commit Data table. The value
77
+ * of `GIT_COMMIT_GRAPH_MISSING_PARENT` indicates that no parent is in that
78
+ * position.
79
+ */
80
+ size_t parent_indices[2];
81
+
82
+ /* The index within the Extra Edge List of any parent after the first two. */
83
+ size_t extra_parents_index;
84
+
85
+ /* The SHA-1 hash of the root tree of the commit. */
86
+ git_oid tree_oid;
87
+
88
+ /* The SHA-1 hash of the requested commit. */
89
+ git_oid sha1;
90
+ } git_commit_graph_entry;
91
+
92
+ /* A wrapper for git_commit_graph_file to enable lazy loading in the ODB. */
93
+ struct git_commit_graph {
94
+ /* The path to the commit-graph file. Something like ".git/objects/info/commit-graph". */
95
+ git_buf filename;
96
+
97
+ /* The underlying commit-graph file. */
98
+ git_commit_graph_file *file;
99
+
100
+ /* Whether the commit-graph file was already checked for validity. */
101
+ bool checked;
102
+ };
103
+
104
+ /** Create a new commit-graph, optionally opening the underlying file. */
105
+ int git_commit_graph_new(git_commit_graph **cgraph_out, const char *objects_dir, bool open_file);
106
+
107
+ /** Open and validate a commit-graph file. */
108
+ int git_commit_graph_file_open(git_commit_graph_file **file_out, const char *path);
109
+
110
+ /*
111
+ * Attempt to get the git_commit_graph's commit-graph file. This object is
112
+ * still owned by the git_commit_graph. If the repository does not contain a commit graph,
113
+ * it will return GIT_ENOTFOUND.
114
+ *
115
+ * This function is not thread-safe.
116
+ */
117
+ int git_commit_graph_get_file(git_commit_graph_file **file_out, git_commit_graph *cgraph);
118
+
119
+ /* Marks the commit-graph file as needing a refresh. */
120
+ void git_commit_graph_refresh(git_commit_graph *cgraph);
121
+
122
+ /*
123
+ * A writer for `commit-graph` files.
124
+ */
125
+ struct git_commit_graph_writer {
126
+ /*
127
+ * The path of the `objects/info` directory where the `commit-graph` will be
128
+ * stored.
129
+ */
130
+ git_buf objects_info_dir;
131
+
132
+ /* The list of packed commits. */
133
+ git_vector commits;
134
+ };
135
+
136
+ /*
137
+ * Returns whether the git_commit_graph_file needs to be reloaded since the
138
+ * contents of the commit-graph file have changed on disk.
139
+ */
140
+ bool git_commit_graph_file_needs_refresh(
141
+ const git_commit_graph_file *file, const char *path);
142
+
143
+ int git_commit_graph_entry_find(
144
+ git_commit_graph_entry *e,
145
+ const git_commit_graph_file *file,
146
+ const git_oid *short_oid,
147
+ size_t len);
148
+ int git_commit_graph_entry_parent(
149
+ git_commit_graph_entry *parent,
150
+ const git_commit_graph_file *file,
151
+ const git_commit_graph_entry *entry,
152
+ size_t n);
153
+ int git_commit_graph_file_close(git_commit_graph_file *cgraph);
154
+ void git_commit_graph_file_free(git_commit_graph_file *cgraph);
155
+
156
+ /* This is exposed for use in the fuzzers. */
157
+ int git_commit_graph_file_parse(
158
+ git_commit_graph_file *file,
159
+ const unsigned char *data,
160
+ size_t size);
161
+
162
+ #endif
@@ -12,6 +12,24 @@
12
12
  #include "odb.h"
13
13
  #include "commit.h"
14
14
 
15
+ int git_commit_list_generation_cmp(const void *a, const void *b)
16
+ {
17
+ uint32_t generation_a = ((git_commit_list_node *) a)->generation;
18
+ uint32_t generation_b = ((git_commit_list_node *) b)->generation;
19
+
20
+ if (!generation_a || !generation_b) {
21
+ /* Fall back to comparing by timestamps if at least one commit lacks a generation. */
22
+ return git_commit_list_time_cmp(a, b);
23
+ }
24
+
25
+ if (generation_a < generation_b)
26
+ return 1;
27
+ if (generation_a > generation_b)
28
+ return -1;
29
+
30
+ return 0;
31
+ }
32
+
15
33
  int git_commit_list_time_cmp(const void *a, const void *b)
16
34
  {
17
35
  int64_t time_a = ((git_commit_list_node *) a)->time;
@@ -124,6 +142,7 @@ static int commit_quick_parse(
124
142
  return -1;
125
143
  }
126
144
 
145
+ node->generation = 0;
127
146
  node->time = commit->committer->when.time;
128
147
  node->out_degree = (uint16_t) git_array_size(commit->parent_ids);
129
148
  node->parents = alloc_parents(walk, node, node->out_degree);
@@ -143,11 +162,38 @@ static int commit_quick_parse(
143
162
  int git_commit_list_parse(git_revwalk *walk, git_commit_list_node *commit)
144
163
  {
145
164
  git_odb_object *obj;
165
+ git_commit_graph_file *cgraph_file = NULL;
146
166
  int error;
147
167
 
148
168
  if (commit->parsed)
149
169
  return 0;
150
170
 
171
+ /* Let's try to use the commit graph first. */
172
+ git_odb__get_commit_graph_file(&cgraph_file, walk->odb);
173
+ if (cgraph_file) {
174
+ git_commit_graph_entry e;
175
+
176
+ error = git_commit_graph_entry_find(&e, cgraph_file, &commit->oid, GIT_OID_RAWSZ);
177
+ if (error == 0 && git__is_uint16(e.parent_count)) {
178
+ size_t i;
179
+ commit->generation = (uint32_t)e.generation;
180
+ commit->time = e.commit_time;
181
+ commit->out_degree = (uint16_t)e.parent_count;
182
+ commit->parents = alloc_parents(walk, commit, commit->out_degree);
183
+ GIT_ERROR_CHECK_ALLOC(commit->parents);
184
+
185
+ for (i = 0; i < commit->out_degree; ++i) {
186
+ git_commit_graph_entry parent;
187
+ error = git_commit_graph_entry_parent(&parent, cgraph_file, &e, i);
188
+ if (error < 0)
189
+ return error;
190
+ commit->parents[i] = git_revwalk__commit_lookup(walk, &parent.sha1);
191
+ }
192
+ commit->parsed = 1;
193
+ return 0;
194
+ }
195
+ }
196
+
151
197
  if ((error = git_odb_read(&obj, walk->odb, &commit->oid)) < 0)
152
198
  return error;
153
199
 
@@ -26,6 +26,7 @@
26
26
  typedef struct git_commit_list_node {
27
27
  git_oid oid;
28
28
  int64_t time;
29
+ uint32_t generation;
29
30
  unsigned int seen:1,
30
31
  uninteresting:1,
31
32
  topo_delay:1,
@@ -45,6 +46,7 @@ typedef struct git_commit_list {
45
46
  } git_commit_list;
46
47
 
47
48
  git_commit_list_node *git_commit_list_alloc_node(git_revwalk *walk);
49
+ int git_commit_list_generation_cmp(const void *a, const void *b);
48
50
  int git_commit_list_time_cmp(const void *a, const void *b);
49
51
  void git_commit_list_free(git_commit_list **list_p);
50
52
  git_commit_list *git_commit_list_insert(git_commit_list_node *item, git_commit_list **list_p);
@@ -19,6 +19,8 @@
19
19
  # define GIT_INLINE(type) static __inline type
20
20
  #elif defined(__GNUC__)
21
21
  # define GIT_INLINE(type) static __inline__ type
22
+ #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
23
+ # define GIT_INLINE(type) static inline type
22
24
  #else
23
25
  # define GIT_INLINE(type) static type
24
26
  #endif
@@ -28,6 +30,24 @@
28
30
  # define __has_builtin(x) 0
29
31
  #endif
30
32
 
33
+ /**
34
+ * Declare that a function's return value must be used.
35
+ *
36
+ * Used mostly to guard against potential silent bugs at runtime. This is
37
+ * recommended to be added to functions that:
38
+ *
39
+ * - Allocate / reallocate memory. This prevents memory leaks or errors where
40
+ * buffers are expected to have grown to a certain size, but could not be
41
+ * resized.
42
+ * - Acquire locks. When a lock cannot be acquired, that will almost certainly
43
+ * cause a data race / undefined behavior.
44
+ */
45
+ #if defined(__GNUC__)
46
+ # define GIT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
47
+ #else
48
+ # define GIT_WARN_UNUSED_RESULT
49
+ #endif
50
+
31
51
  #include <assert.h>
32
52
  #include <errno.h>
33
53
  #include <limits.h>
@@ -63,7 +83,9 @@
63
83
  # include <pthread.h>
64
84
  # include <sched.h>
65
85
  # endif
66
- #define GIT_STDLIB_CALL
86
+
87
+ #define GIT_LIBGIT2_CALL
88
+ #define GIT_SYSTEM_CALL
67
89
 
68
90
  #ifdef GIT_USE_STAT_ATIMESPEC
69
91
  # define st_atim st_atimespec
@@ -78,8 +100,10 @@
78
100
  #include "git2/types.h"
79
101
  #include "git2/errors.h"
80
102
  #include "errors.h"
81
- #include "thread-utils.h"
103
+ #include "thread.h"
82
104
  #include "integer.h"
105
+ #include "assert_safe.h"
106
+ #include "utf8.h"
83
107
 
84
108
  /*
85
109
  * Include the declarations for deprecated functions; this ensures
@@ -10,7 +10,6 @@
10
10
  #include "git2/config.h"
11
11
  #include "git2/sys/config.h"
12
12
 
13
- #include "buf_text.h"
14
13
  #include "config_backend.h"
15
14
  #include "regexp.h"
16
15
  #include "sysdir.h"
@@ -108,7 +107,8 @@ int git_config_add_file_ondisk(
108
107
  struct stat st;
109
108
  int res;
110
109
 
111
- assert(cfg && path);
110
+ GIT_ASSERT_ARG(cfg);
111
+ GIT_ASSERT_ARG(path);
112
112
 
113
113
  res = p_stat(path, &st);
114
114
  if (res < 0 && errno != ENOENT && errno != ENOTDIR) {
@@ -316,7 +316,8 @@ int git_config_add_backend(
316
316
  backend_internal *internal;
317
317
  int result;
318
318
 
319
- assert(cfg && backend);
319
+ GIT_ASSERT_ARG(cfg);
320
+ GIT_ASSERT_ARG(backend);
320
321
 
321
322
  GIT_ERROR_CHECK_VERSION(backend, GIT_CONFIG_BACKEND_VERSION, "git_config_backend");
322
323
 
@@ -514,7 +515,8 @@ int git_config_backend_foreach_match(
514
515
  git_regexp regex;
515
516
  int error = 0;
516
517
 
517
- assert(backend && cb);
518
+ GIT_ASSERT_ARG(backend);
519
+ GIT_ASSERT_ARG(cb);
518
520
 
519
521
  if (regexp && git_regexp_compile(&regex, regexp, 0) < 0)
520
522
  return -1;
@@ -886,7 +888,8 @@ int git_config_get_string_buf(
886
888
  int ret;
887
889
  const char *str;
888
890
 
889
- git_buf_sanitize(out);
891
+ if ((ret = git_buf_sanitize(out)) < 0)
892
+ return ret;
890
893
 
891
894
  ret = get_entry(&entry, cfg, name, true, GET_ALL_ERRORS);
892
895
  str = !ret ? (entry->value ? entry->value : "") : NULL;
@@ -1000,7 +1003,7 @@ static int multivar_iter_next(git_config_entry **entry, git_config_iterator *_it
1000
1003
  return error;
1001
1004
  }
1002
1005
 
1003
- void multivar_iter_free(git_config_iterator *_iter)
1006
+ static void multivar_iter_free(git_config_iterator *_iter)
1004
1007
  {
1005
1008
  multivar_iter *iter = (multivar_iter *) _iter;
1006
1009
 
@@ -1084,19 +1087,31 @@ void git_config_iterator_free(git_config_iterator *iter)
1084
1087
 
1085
1088
  int git_config_find_global(git_buf *path)
1086
1089
  {
1087
- git_buf_sanitize(path);
1090
+ int error;
1091
+
1092
+ if ((error = git_buf_sanitize(path)) < 0)
1093
+ return error;
1094
+
1088
1095
  return git_sysdir_find_global_file(path, GIT_CONFIG_FILENAME_GLOBAL);
1089
1096
  }
1090
1097
 
1091
1098
  int git_config_find_xdg(git_buf *path)
1092
1099
  {
1093
- git_buf_sanitize(path);
1100
+ int error;
1101
+
1102
+ if ((error = git_buf_sanitize(path)) < 0)
1103
+ return error;
1104
+
1094
1105
  return git_sysdir_find_xdg_file(path, GIT_CONFIG_FILENAME_XDG);
1095
1106
  }
1096
1107
 
1097
1108
  int git_config_find_system(git_buf *path)
1098
1109
  {
1099
- git_buf_sanitize(path);
1110
+ int error;
1111
+
1112
+ if ((error = git_buf_sanitize(path)) < 0)
1113
+ return error;
1114
+
1100
1115
  return git_sysdir_find_system_file(path, GIT_CONFIG_FILENAME_SYSTEM);
1101
1116
  }
1102
1117
 
@@ -1104,7 +1119,9 @@ int git_config_find_programdata(git_buf *path)
1104
1119
  {
1105
1120
  int ret;
1106
1121
 
1107
- git_buf_sanitize(path);
1122
+ if ((ret = git_buf_sanitize(path)) < 0)
1123
+ return ret;
1124
+
1108
1125
  ret = git_sysdir_find_programdata_file(path,
1109
1126
  GIT_CONFIG_FILENAME_PROGRAMDATA);
1110
1127
  if (ret != GIT_OK)
@@ -1182,7 +1199,7 @@ int git_config_lock(git_transaction **out, git_config *cfg)
1182
1199
  git_config_backend *backend;
1183
1200
  backend_internal *internal;
1184
1201
 
1185
- assert(cfg);
1202
+ GIT_ASSERT_ARG(cfg);
1186
1203
 
1187
1204
  internal = git_vector_get(&cfg->backends, 0);
1188
1205
  if (!internal || !internal->backend) {
@@ -1202,7 +1219,7 @@ int git_config_unlock(git_config *cfg, int commit)
1202
1219
  git_config_backend *backend;
1203
1220
  backend_internal *internal;
1204
1221
 
1205
- assert(cfg);
1222
+ GIT_ASSERT_ARG(cfg);
1206
1223
 
1207
1224
  internal = git_vector_get(&cfg->backends, 0);
1208
1225
  if (!internal || !internal->backend) {
@@ -1227,9 +1244,6 @@ int git_config_lookup_map_value(
1227
1244
  {
1228
1245
  size_t i;
1229
1246
 
1230
- if (!value)
1231
- goto fail_parse;
1232
-
1233
1247
  for (i = 0; i < map_n; ++i) {
1234
1248
  const git_configmap *m = maps + i;
1235
1249
 
@@ -1238,7 +1252,7 @@ int git_config_lookup_map_value(
1238
1252
  case GIT_CONFIGMAP_TRUE: {
1239
1253
  int bool_val;
1240
1254
 
1241
- if (git__parse_bool(&bool_val, value) == 0 &&
1255
+ if (git_config_parse_bool(&bool_val, value) == 0 &&
1242
1256
  bool_val == (int)m->type) {
1243
1257
  *out = m->map_value;
1244
1258
  return 0;
@@ -1252,7 +1266,7 @@ int git_config_lookup_map_value(
1252
1266
  break;
1253
1267
 
1254
1268
  case GIT_CONFIGMAP_STRING:
1255
- if (strcasecmp(value, m->str_match) == 0) {
1269
+ if (value && strcasecmp(value, m->str_match) == 0) {
1256
1270
  *out = m->map_value;
1257
1271
  return 0;
1258
1272
  }
@@ -1260,7 +1274,6 @@ int git_config_lookup_map_value(
1260
1274
  }
1261
1275
  }
1262
1276
 
1263
- fail_parse:
1264
1277
  git_error_set(GIT_ERROR_CONFIG, "failed to map '%s'", value);
1265
1278
  return -1;
1266
1279
  }
@@ -1364,9 +1377,13 @@ fail_parse:
1364
1377
 
1365
1378
  int git_config_parse_path(git_buf *out, const char *value)
1366
1379
  {
1367
- assert(out && value);
1380
+ int error;
1368
1381
 
1369
- git_buf_sanitize(out);
1382
+ GIT_ASSERT_ARG(out);
1383
+ GIT_ASSERT_ARG(value);
1384
+
1385
+ if ((error = git_buf_sanitize(out)) < 0)
1386
+ return error;
1370
1387
 
1371
1388
  if (value[0] == '~') {
1372
1389
  if (value[1] != '\0' && value[1] != '/') {
@@ -1409,7 +1426,8 @@ int git_config__normalize_name(const char *in, char **out)
1409
1426
  {
1410
1427
  char *name, *fdot, *ldot;
1411
1428
 
1412
- assert(in && out);
1429
+ GIT_ASSERT_ARG(in);
1430
+ GIT_ASSERT_ARG(out);
1413
1431
 
1414
1432
  name = git__strdup(in);
1415
1433
  GIT_ERROR_CHECK_ALLOC(name);
@@ -1478,7 +1496,7 @@ int git_config_rename_section(
1478
1496
  int error = 0;
1479
1497
  struct rename_data data;
1480
1498
 
1481
- git_buf_text_puts_escape_regex(&pattern, old_section_name);
1499
+ git_buf_puts_escape_regex(&pattern, old_section_name);
1482
1500
 
1483
1501
  if ((error = git_buf_puts(&pattern, "\\..+")) < 0)
1484
1502
  goto cleanup;