rugged 1.6.3 → 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 (443) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rugged/rugged_allocator.c +0 -54
  3. data/lib/rugged/version.rb +1 -1
  4. data/vendor/libgit2/AUTHORS +1 -0
  5. data/vendor/libgit2/CMakeLists.txt +25 -17
  6. data/vendor/libgit2/COPYING +195 -1
  7. data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
  8. data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
  9. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  10. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +4 -4
  11. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
  12. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +34 -6
  13. data/vendor/libgit2/cmake/SelectHashes.cmake +32 -11
  14. data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
  15. data/vendor/libgit2/cmake/SelectSSH.cmake +22 -17
  16. data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
  17. data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
  18. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  19. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  20. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  21. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  22. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  23. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  24. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
  25. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  26. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  27. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  28. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
  29. data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
  30. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  31. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  32. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  33. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  34. data/vendor/libgit2/deps/pcre/CMakeLists.txt +1 -0
  35. data/vendor/libgit2/deps/pcre/LICENCE +5 -5
  36. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  37. data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
  38. data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
  39. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
  40. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/git-xdiff.h +4 -1
  41. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.c +19 -18
  42. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.h +2 -4
  43. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.c +3 -3
  44. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xhistogram.c +7 -18
  45. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmacros.h +18 -1
  46. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmerge.c +22 -20
  47. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xpatience.c +21 -30
  48. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.c +13 -30
  49. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.c +18 -1
  50. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.h +2 -1
  51. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  52. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  53. data/vendor/libgit2/deps/zlib/adler32.c +5 -27
  54. data/vendor/libgit2/deps/zlib/crc32.c +94 -167
  55. data/vendor/libgit2/deps/zlib/deflate.c +358 -435
  56. data/vendor/libgit2/deps/zlib/deflate.h +41 -10
  57. data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
  58. data/vendor/libgit2/deps/zlib/infback.c +17 -30
  59. data/vendor/libgit2/deps/zlib/inffast.c +1 -4
  60. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  61. data/vendor/libgit2/deps/zlib/inflate.c +36 -102
  62. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  63. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  64. data/vendor/libgit2/deps/zlib/trees.c +287 -352
  65. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  66. data/vendor/libgit2/deps/zlib/zlib.h +202 -202
  67. data/vendor/libgit2/deps/zlib/zutil.c +18 -44
  68. data/vendor/libgit2/deps/zlib/zutil.h +13 -33
  69. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  70. data/vendor/libgit2/include/git2/apply.h +27 -6
  71. data/vendor/libgit2/include/git2/attr.h +17 -4
  72. data/vendor/libgit2/include/git2/blame.h +133 -28
  73. data/vendor/libgit2/include/git2/blob.h +71 -28
  74. data/vendor/libgit2/include/git2/branch.h +22 -15
  75. data/vendor/libgit2/include/git2/buffer.h +6 -4
  76. data/vendor/libgit2/include/git2/cert.h +2 -1
  77. data/vendor/libgit2/include/git2/checkout.h +83 -32
  78. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  79. data/vendor/libgit2/include/git2/clone.h +25 -9
  80. data/vendor/libgit2/include/git2/commit.h +132 -3
  81. data/vendor/libgit2/include/git2/common.h +138 -56
  82. data/vendor/libgit2/include/git2/config.h +93 -23
  83. data/vendor/libgit2/include/git2/credential.h +30 -2
  84. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  85. data/vendor/libgit2/include/git2/deprecated.h +133 -3
  86. data/vendor/libgit2/include/git2/describe.h +13 -1
  87. data/vendor/libgit2/include/git2/diff.h +77 -9
  88. data/vendor/libgit2/include/git2/email.h +9 -29
  89. data/vendor/libgit2/include/git2/errors.h +49 -74
  90. data/vendor/libgit2/include/git2/filter.h +14 -7
  91. data/vendor/libgit2/include/git2/global.h +8 -1
  92. data/vendor/libgit2/include/git2/graph.h +3 -2
  93. data/vendor/libgit2/include/git2/ignore.h +10 -0
  94. data/vendor/libgit2/include/git2/index.h +100 -6
  95. data/vendor/libgit2/include/git2/indexer.h +21 -4
  96. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  97. data/vendor/libgit2/include/git2/merge.h +46 -1
  98. data/vendor/libgit2/include/git2/message.h +2 -2
  99. data/vendor/libgit2/include/git2/net.h +3 -1
  100. data/vendor/libgit2/include/git2/notes.h +9 -6
  101. data/vendor/libgit2/include/git2/object.h +9 -8
  102. data/vendor/libgit2/include/git2/odb.h +91 -49
  103. data/vendor/libgit2/include/git2/odb_backend.h +80 -52
  104. data/vendor/libgit2/include/git2/oid.h +24 -25
  105. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  106. data/vendor/libgit2/include/git2/pack.h +13 -1
  107. data/vendor/libgit2/include/git2/patch.h +2 -3
  108. data/vendor/libgit2/include/git2/pathspec.h +9 -0
  109. data/vendor/libgit2/include/git2/proxy.h +10 -0
  110. data/vendor/libgit2/include/git2/rebase.h +9 -6
  111. data/vendor/libgit2/include/git2/refdb.h +2 -2
  112. data/vendor/libgit2/include/git2/reflog.h +3 -2
  113. data/vendor/libgit2/include/git2/refs.h +9 -6
  114. data/vendor/libgit2/include/git2/refspec.h +14 -4
  115. data/vendor/libgit2/include/git2/remote.h +112 -18
  116. data/vendor/libgit2/include/git2/repository.h +61 -15
  117. data/vendor/libgit2/include/git2/reset.h +16 -3
  118. data/vendor/libgit2/include/git2/revert.h +9 -4
  119. data/vendor/libgit2/include/git2/revparse.h +3 -3
  120. data/vendor/libgit2/include/git2/revwalk.h +3 -2
  121. data/vendor/libgit2/include/git2/signature.h +46 -1
  122. data/vendor/libgit2/include/git2/stash.h +17 -3
  123. data/vendor/libgit2/include/git2/status.h +10 -6
  124. data/vendor/libgit2/include/git2/stdint.h +87 -85
  125. data/vendor/libgit2/include/git2/strarray.h +2 -3
  126. data/vendor/libgit2/include/git2/submodule.h +20 -9
  127. data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
  128. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  129. data/vendor/libgit2/include/git2/sys/commit_graph.h +109 -58
  130. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  131. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  132. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  133. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  134. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  135. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  136. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  137. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  138. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  139. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  140. data/vendor/libgit2/include/git2/sys/midx.h +47 -4
  141. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
  142. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  143. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  144. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  145. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  146. data/vendor/libgit2/include/git2/sys/remote.h +8 -1
  147. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  148. data/vendor/libgit2/include/git2/sys/stream.h +25 -2
  149. data/vendor/libgit2/include/git2/sys/transport.h +44 -5
  150. data/vendor/libgit2/include/git2/tag.h +3 -1
  151. data/vendor/libgit2/include/git2/trace.h +9 -3
  152. data/vendor/libgit2/include/git2/transaction.h +3 -2
  153. data/vendor/libgit2/include/git2/transport.h +11 -3
  154. data/vendor/libgit2/include/git2/tree.h +16 -5
  155. data/vendor/libgit2/include/git2/types.h +19 -3
  156. data/vendor/libgit2/include/git2/version.h +44 -8
  157. data/vendor/libgit2/include/git2/worktree.h +19 -7
  158. data/vendor/libgit2/src/CMakeLists.txt +40 -15
  159. data/vendor/libgit2/src/cli/CMakeLists.txt +2 -2
  160. data/vendor/libgit2/src/cli/cmd.c +1 -1
  161. data/vendor/libgit2/src/cli/cmd.h +4 -0
  162. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  163. data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
  164. data/vendor/libgit2/src/cli/cmd_clone.c +27 -13
  165. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  166. data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
  167. data/vendor/libgit2/src/cli/cmd_help.c +6 -7
  168. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  169. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  170. data/vendor/libgit2/src/cli/common.c +168 -0
  171. data/vendor/libgit2/src/cli/common.h +63 -0
  172. data/vendor/libgit2/src/cli/error.h +1 -1
  173. data/vendor/libgit2/src/cli/main.c +52 -24
  174. data/vendor/libgit2/src/cli/opt.c +29 -3
  175. data/vendor/libgit2/src/cli/opt.h +21 -3
  176. data/vendor/libgit2/src/cli/opt_usage.c +102 -33
  177. data/vendor/libgit2/src/cli/opt_usage.h +6 -1
  178. data/vendor/libgit2/src/cli/progress.c +60 -10
  179. data/vendor/libgit2/src/cli/progress.h +16 -4
  180. data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
  181. data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
  182. data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
  183. data/vendor/libgit2/src/libgit2/CMakeLists.txt +27 -27
  184. data/vendor/libgit2/src/libgit2/annotated_commit.c +2 -2
  185. data/vendor/libgit2/src/libgit2/annotated_commit.h +1 -1
  186. data/vendor/libgit2/src/libgit2/apply.c +14 -16
  187. data/vendor/libgit2/src/libgit2/attr.c +30 -13
  188. data/vendor/libgit2/src/libgit2/attr_file.c +7 -2
  189. data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
  190. data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
  191. data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
  192. data/vendor/libgit2/src/libgit2/blame.c +152 -59
  193. data/vendor/libgit2/src/libgit2/blame.h +1 -0
  194. data/vendor/libgit2/src/libgit2/blame_git.c +0 -1
  195. data/vendor/libgit2/src/libgit2/branch.c +2 -2
  196. data/vendor/libgit2/src/libgit2/cache.c +22 -17
  197. data/vendor/libgit2/src/libgit2/cache.h +7 -9
  198. data/vendor/libgit2/src/libgit2/checkout.c +34 -24
  199. data/vendor/libgit2/src/libgit2/checkout.h +0 -2
  200. data/vendor/libgit2/src/libgit2/cherrypick.c +4 -5
  201. data/vendor/libgit2/src/libgit2/clone.c +186 -164
  202. data/vendor/libgit2/src/libgit2/clone.h +4 -1
  203. data/vendor/libgit2/src/libgit2/commit.c +123 -9
  204. data/vendor/libgit2/src/libgit2/commit_graph.c +166 -88
  205. data/vendor/libgit2/src/libgit2/commit_graph.h +21 -6
  206. data/vendor/libgit2/src/libgit2/commit_list.c +12 -5
  207. data/vendor/libgit2/src/libgit2/commit_list.h +1 -0
  208. data/vendor/libgit2/src/libgit2/config.c +394 -300
  209. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  210. data/vendor/libgit2/src/libgit2/config.h +9 -4
  211. data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
  212. data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
  213. data/vendor/libgit2/src/libgit2/config_file.c +113 -96
  214. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  215. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  216. data/vendor/libgit2/src/libgit2/config_mem.c +194 -40
  217. data/vendor/libgit2/src/libgit2/config_parse.c +10 -9
  218. data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
  219. data/vendor/libgit2/src/libgit2/describe.c +34 -31
  220. data/vendor/libgit2/src/libgit2/diff.c +17 -8
  221. data/vendor/libgit2/src/libgit2/diff.h +6 -6
  222. data/vendor/libgit2/src/libgit2/diff_driver.c +12 -19
  223. data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
  224. data/vendor/libgit2/src/libgit2/diff_file.c +7 -7
  225. data/vendor/libgit2/src/libgit2/diff_generate.c +39 -18
  226. data/vendor/libgit2/src/libgit2/diff_parse.c +22 -6
  227. data/vendor/libgit2/src/libgit2/diff_print.c +88 -13
  228. data/vendor/libgit2/src/libgit2/diff_tform.c +40 -12
  229. data/vendor/libgit2/src/libgit2/diff_xdiff.h +1 -1
  230. data/vendor/libgit2/src/libgit2/email.c +5 -3
  231. data/vendor/libgit2/src/libgit2/fetch.c +39 -9
  232. data/vendor/libgit2/src/libgit2/fetch.h +0 -2
  233. data/vendor/libgit2/src/libgit2/fetchhead.c +11 -9
  234. data/vendor/libgit2/src/libgit2/filter.c +5 -5
  235. data/vendor/libgit2/src/libgit2/git2.rc +3 -3
  236. data/vendor/libgit2/src/libgit2/grafts.c +270 -0
  237. data/vendor/libgit2/src/libgit2/grafts.h +35 -0
  238. data/vendor/libgit2/src/libgit2/graph.c +1 -1
  239. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  240. data/vendor/libgit2/src/libgit2/ident.c +3 -3
  241. data/vendor/libgit2/src/libgit2/ignore.c +9 -5
  242. data/vendor/libgit2/src/libgit2/index.c +392 -208
  243. data/vendor/libgit2/src/libgit2/index.h +16 -3
  244. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  245. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  246. data/vendor/libgit2/src/libgit2/indexer.c +44 -41
  247. data/vendor/libgit2/src/libgit2/iterator.c +34 -13
  248. data/vendor/libgit2/src/libgit2/iterator.h +3 -0
  249. data/vendor/libgit2/src/libgit2/libgit2.c +155 -331
  250. data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
  251. data/vendor/libgit2/src/libgit2/merge.c +56 -46
  252. data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
  253. data/vendor/libgit2/src/libgit2/merge_file.c +0 -2
  254. data/vendor/libgit2/src/libgit2/midx.c +86 -44
  255. data/vendor/libgit2/src/libgit2/midx.h +13 -3
  256. data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
  257. data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
  258. data/vendor/libgit2/src/libgit2/notes.c +9 -8
  259. data/vendor/libgit2/src/libgit2/object.c +42 -16
  260. data/vendor/libgit2/src/libgit2/object.h +6 -0
  261. data/vendor/libgit2/src/libgit2/odb.c +16 -9
  262. data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
  263. data/vendor/libgit2/src/libgit2/odb_pack.c +28 -7
  264. data/vendor/libgit2/src/libgit2/oid.c +35 -2
  265. data/vendor/libgit2/src/libgit2/oid.h +11 -0
  266. data/vendor/libgit2/src/libgit2/oidarray.c +49 -3
  267. data/vendor/libgit2/src/libgit2/oidarray.h +5 -1
  268. data/vendor/libgit2/src/libgit2/pack-objects.c +77 -43
  269. data/vendor/libgit2/src/libgit2/pack-objects.h +17 -6
  270. data/vendor/libgit2/src/libgit2/pack.c +33 -27
  271. data/vendor/libgit2/src/libgit2/pack.h +15 -10
  272. data/vendor/libgit2/src/libgit2/parse.c +7 -4
  273. data/vendor/libgit2/src/libgit2/parse.h +1 -1
  274. data/vendor/libgit2/src/libgit2/patch.h +7 -1
  275. data/vendor/libgit2/src/libgit2/patch_generate.c +24 -5
  276. data/vendor/libgit2/src/libgit2/patch_parse.c +18 -10
  277. data/vendor/libgit2/src/libgit2/path.c +1 -1
  278. data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
  279. data/vendor/libgit2/src/libgit2/push.c +81 -30
  280. data/vendor/libgit2/src/libgit2/push.h +1 -0
  281. data/vendor/libgit2/src/libgit2/reader.c +1 -1
  282. data/vendor/libgit2/src/libgit2/rebase.c +72 -84
  283. data/vendor/libgit2/src/libgit2/refdb_fs.c +146 -70
  284. data/vendor/libgit2/src/libgit2/reflog.c +1 -2
  285. data/vendor/libgit2/src/libgit2/reflog.h +2 -0
  286. data/vendor/libgit2/src/libgit2/refs.c +34 -8
  287. data/vendor/libgit2/src/libgit2/refs.h +6 -1
  288. data/vendor/libgit2/src/libgit2/refspec.c +28 -1
  289. data/vendor/libgit2/src/libgit2/refspec.h +8 -0
  290. data/vendor/libgit2/src/libgit2/remote.c +136 -67
  291. data/vendor/libgit2/src/libgit2/remote.h +1 -0
  292. data/vendor/libgit2/src/libgit2/repository.c +789 -330
  293. data/vendor/libgit2/src/libgit2/repository.h +22 -3
  294. data/vendor/libgit2/src/libgit2/reset.c +2 -2
  295. data/vendor/libgit2/src/libgit2/revert.c +9 -13
  296. data/vendor/libgit2/src/libgit2/revparse.c +6 -3
  297. data/vendor/libgit2/src/libgit2/revwalk.c +36 -11
  298. data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
  299. data/vendor/libgit2/src/libgit2/settings.c +468 -0
  300. data/vendor/libgit2/src/libgit2/settings.h +6 -2
  301. data/vendor/libgit2/src/libgit2/signature.c +132 -15
  302. data/vendor/libgit2/src/libgit2/signature.h +0 -1
  303. data/vendor/libgit2/src/libgit2/stash.c +9 -8
  304. data/vendor/libgit2/src/libgit2/status.c +1 -1
  305. data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -61
  306. data/vendor/libgit2/src/libgit2/streams/openssl.c +40 -23
  307. data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
  308. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
  309. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
  310. data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
  311. data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
  312. data/vendor/libgit2/src/libgit2/streams/socket.c +237 -51
  313. data/vendor/libgit2/src/libgit2/streams/socket.h +3 -1
  314. data/vendor/libgit2/src/libgit2/streams/stransport.c +79 -19
  315. data/vendor/libgit2/src/libgit2/streams/tls.c +5 -0
  316. data/vendor/libgit2/src/libgit2/submodule.c +106 -63
  317. data/vendor/libgit2/src/libgit2/submodule.h +9 -10
  318. data/vendor/libgit2/src/libgit2/tag.c +1 -1
  319. data/vendor/libgit2/src/libgit2/trailer.c +6 -6
  320. data/vendor/libgit2/src/libgit2/transaction.c +26 -20
  321. data/vendor/libgit2/src/libgit2/transaction.h +4 -1
  322. data/vendor/libgit2/src/libgit2/transport.c +4 -1
  323. data/vendor/libgit2/src/libgit2/transports/auth.h +1 -2
  324. data/vendor/libgit2/src/libgit2/transports/{auth_negotiate.c → auth_gssapi.c} +32 -32
  325. data/vendor/libgit2/src/libgit2/transports/auth_negotiate.h +1 -1
  326. data/vendor/libgit2/src/libgit2/transports/auth_ntlm.h +1 -1
  327. data/vendor/libgit2/src/libgit2/transports/{auth_ntlm.c → auth_ntlmclient.c} +12 -12
  328. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
  329. data/vendor/libgit2/src/libgit2/transports/credential.c +1 -1
  330. data/vendor/libgit2/src/libgit2/transports/git.c +7 -8
  331. data/vendor/libgit2/src/libgit2/transports/http.c +8 -4
  332. data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
  333. data/vendor/libgit2/src/libgit2/transports/httpclient.c +117 -72
  334. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  335. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  336. data/vendor/libgit2/src/libgit2/transports/local.c +21 -11
  337. data/vendor/libgit2/src/libgit2/transports/smart.c +50 -32
  338. data/vendor/libgit2/src/libgit2/transports/smart.h +26 -9
  339. data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +139 -18
  340. data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +209 -57
  341. data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
  342. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  343. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  344. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1126 -0
  345. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  346. data/vendor/libgit2/src/libgit2/transports/winhttp.c +48 -21
  347. data/vendor/libgit2/src/libgit2/tree-cache.c +26 -16
  348. data/vendor/libgit2/src/libgit2/tree-cache.h +5 -3
  349. data/vendor/libgit2/src/libgit2/tree.c +35 -27
  350. data/vendor/libgit2/src/libgit2/tree.h +3 -2
  351. data/vendor/libgit2/src/libgit2/worktree.c +39 -27
  352. data/vendor/libgit2/src/util/CMakeLists.txt +4 -6
  353. data/vendor/libgit2/src/util/alloc.c +69 -7
  354. data/vendor/libgit2/src/util/alloc.h +34 -9
  355. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  356. data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
  357. data/vendor/libgit2/src/util/allocators/failalloc.c +0 -60
  358. data/vendor/libgit2/src/util/allocators/failalloc.h +0 -6
  359. data/vendor/libgit2/src/util/allocators/stdalloc.c +2 -115
  360. data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +0 -68
  361. data/vendor/libgit2/src/util/array.h +24 -18
  362. data/vendor/libgit2/src/util/cc-compat.h +4 -0
  363. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  364. data/vendor/libgit2/src/util/date.c +22 -14
  365. data/vendor/libgit2/src/util/date.h +12 -0
  366. data/vendor/libgit2/src/util/errors.c +401 -0
  367. data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
  368. data/vendor/libgit2/src/util/filebuf.c +6 -1
  369. data/vendor/libgit2/src/util/filebuf.h +19 -6
  370. data/vendor/libgit2/src/util/fs_path.c +16 -5
  371. data/vendor/libgit2/src/util/fs_path.h +23 -0
  372. data/vendor/libgit2/src/util/futils.c +14 -10
  373. data/vendor/libgit2/src/util/futils.h +13 -4
  374. data/vendor/libgit2/src/util/git2_features.h.in +21 -4
  375. data/vendor/libgit2/src/util/git2_util.h +6 -0
  376. data/vendor/libgit2/src/util/hash/openssl.c +152 -0
  377. data/vendor/libgit2/src/util/hash/openssl.h +17 -1
  378. data/vendor/libgit2/src/util/hash/sha.h +4 -1
  379. data/vendor/libgit2/src/util/hashmap.h +424 -0
  380. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  381. data/vendor/libgit2/src/util/integer.h +3 -1
  382. data/vendor/libgit2/src/util/net.c +318 -161
  383. data/vendor/libgit2/src/util/net.h +27 -0
  384. data/vendor/libgit2/src/util/pool.c +1 -1
  385. data/vendor/libgit2/src/util/pool.h +5 -0
  386. data/vendor/libgit2/src/util/posix.c +54 -0
  387. data/vendor/libgit2/src/util/posix.h +22 -0
  388. data/vendor/libgit2/src/util/pqueue.h +1 -1
  389. data/vendor/libgit2/src/util/process.h +222 -0
  390. data/vendor/libgit2/src/util/rand.c +6 -10
  391. data/vendor/libgit2/src/util/regexp.c +1 -1
  392. data/vendor/libgit2/src/util/sortedcache.c +14 -13
  393. data/vendor/libgit2/src/util/sortedcache.h +3 -3
  394. data/vendor/libgit2/src/util/staticstr.h +66 -0
  395. data/vendor/libgit2/src/util/str.c +2 -2
  396. data/vendor/libgit2/src/util/strlist.c +108 -0
  397. data/vendor/libgit2/src/util/strlist.h +36 -0
  398. data/vendor/libgit2/src/util/unix/posix.h +0 -2
  399. data/vendor/libgit2/src/util/unix/process.c +629 -0
  400. data/vendor/libgit2/src/util/unix/realpath.c +23 -5
  401. data/vendor/libgit2/src/util/util.c +17 -12
  402. data/vendor/libgit2/src/util/util.h +28 -54
  403. data/vendor/libgit2/src/util/vector.c +3 -3
  404. data/vendor/libgit2/src/util/vector.h +2 -2
  405. data/vendor/libgit2/src/util/win32/error.c +1 -1
  406. data/vendor/libgit2/src/util/win32/path_w32.c +8 -8
  407. data/vendor/libgit2/src/util/win32/posix_w32.c +30 -7
  408. data/vendor/libgit2/src/util/win32/process.c +506 -0
  409. data/vendor/libgit2/src/util/win32/utf-conv.c +73 -75
  410. data/vendor/libgit2/src/util/win32/utf-conv.h +81 -14
  411. data/vendor/libgit2/src/util/win32/w32_util.c +1 -1
  412. metadata +72 -49
  413. data/vendor/libgit2/cmake/SelectWinHTTP.cmake +0 -17
  414. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  415. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  416. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  417. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  418. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  419. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  420. data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
  421. data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
  422. data/vendor/libgit2/src/libgit2/errors.c +0 -238
  423. data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
  424. data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
  425. data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
  426. data/vendor/libgit2/src/libgit2/netops.c +0 -124
  427. data/vendor/libgit2/src/libgit2/netops.h +0 -68
  428. data/vendor/libgit2/src/libgit2/offmap.c +0 -101
  429. data/vendor/libgit2/src/libgit2/offmap.h +0 -133
  430. data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
  431. data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
  432. data/vendor/libgit2/src/libgit2/threadstate.c +0 -84
  433. data/vendor/libgit2/src/libgit2/threadstate.h +0 -24
  434. data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
  435. data/vendor/libgit2/src/util/khash.h +0 -615
  436. data/vendor/libgit2/src/util/strmap.c +0 -100
  437. data/vendor/libgit2/src/util/strmap.h +0 -131
  438. /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
  439. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiff.h +0 -0
  440. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.h +0 -0
  441. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xinclude.h +0 -0
  442. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.h +0 -0
  443. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xtypes.h +0 -0
@@ -0,0 +1,3 @@
1
+ include(CMakeFindDependencyMacro)
2
+
3
+ include("${CMAKE_CURRENT_LIST_DIR}/@LIBGIT2_TARGETS_EXPORT_NAME@.cmake")
@@ -24,7 +24,8 @@
24
24
 
25
25
  struct git_config {
26
26
  git_refcount rc;
27
- git_vector backends;
27
+ git_vector readers;
28
+ git_vector writers;
28
29
  };
29
30
 
30
31
  extern int git_config__global_location(git_str *buf);
@@ -94,17 +95,21 @@ int git_config_lookup_map_enum(git_configmap_t *type_out,
94
95
  size_t map_n, int enum_val);
95
96
 
96
97
  /**
97
- * Unlock the backend with the highest priority
98
+ * Unlock the given backend that was previously locked.
98
99
  *
99
100
  * Unlocking will allow other writers to update the configuration
100
101
  * file. Optionally, any changes performed since the lock will be
101
102
  * applied to the configuration.
102
103
  *
103
- * @param cfg the configuration
104
+ * @param config the config instance
105
+ * @param data the config data passed to git_transaction_new
104
106
  * @param commit boolean which indicates whether to commit any changes
105
107
  * done since locking
106
108
  * @return 0 or an error code
107
109
  */
108
- GIT_EXTERN(int) git_config_unlock(git_config *cfg, int commit);
110
+ GIT_EXTERN(int) git_config_unlock(
111
+ git_config *config,
112
+ void *data,
113
+ int commit);
109
114
 
110
115
  #endif
@@ -37,15 +37,6 @@ extern int git_config_backend_from_file(git_config_backend **out, const char *pa
37
37
  */
38
38
  extern int git_config_backend_snapshot(git_config_backend **out, git_config_backend *source);
39
39
 
40
- /**
41
- * Create an in-memory configuration file backend
42
- *
43
- * @param out the new backend
44
- * @param cfg the configuration that is to be parsed
45
- * @param len the length of the string pointed to by `cfg`
46
- */
47
- extern int git_config_backend_from_string(git_config_backend **out, const char *cfg, size_t len);
48
-
49
40
  GIT_INLINE(int) git_config_backend_open(git_config_backend *cfg, unsigned int level, const git_repository *repo)
50
41
  {
51
42
  return cfg->open(cfg, level, repo);
@@ -60,7 +51,14 @@ GIT_INLINE(void) git_config_backend_free(git_config_backend *cfg)
60
51
  GIT_INLINE(int) git_config_backend_get_string(
61
52
  git_config_entry **out, git_config_backend *cfg, const char *name)
62
53
  {
63
- return cfg->get(cfg, name, out);
54
+ git_config_backend_entry *be;
55
+ int error;
56
+
57
+ if ((error = cfg->get(cfg, name, &be)) < 0)
58
+ return error;
59
+
60
+ *out = &be->entry;
61
+ return 0;
64
62
  }
65
63
 
66
64
  GIT_INLINE(int) git_config_backend_set_string(
@@ -64,11 +64,10 @@ static git_configmap _configmap_logallrefupdates[] = {
64
64
  {GIT_CONFIGMAP_STRING, "always", GIT_LOGALLREFUPDATES_ALWAYS},
65
65
  };
66
66
 
67
- /*
68
- * Generic map for integer values
69
- */
70
- static git_configmap _configmap_int[] = {
67
+ static git_configmap _configmap_abbrev[] = {
71
68
  {GIT_CONFIGMAP_INT32, NULL, 0},
69
+ {GIT_CONFIGMAP_FALSE, NULL, GIT_ABBREV_FALSE},
70
+ {GIT_CONFIGMAP_STRING, "auto", GIT_ABBREV_DEFAULT}
72
71
  };
73
72
 
74
73
  static struct map_data _configmaps[] = {
@@ -79,7 +78,7 @@ static struct map_data _configmaps[] = {
79
78
  {"core.filemode", NULL, 0, GIT_FILEMODE_DEFAULT },
80
79
  {"core.ignorestat", NULL, 0, GIT_IGNORESTAT_DEFAULT },
81
80
  {"core.trustctime", NULL, 0, GIT_TRUSTCTIME_DEFAULT },
82
- {"core.abbrev", _configmap_int, 1, GIT_ABBREV_DEFAULT },
81
+ {"core.abbrev", _configmap_abbrev, ARRAY_SIZE(_configmap_abbrev), GIT_ABBREV_DEFAULT },
83
82
  {"core.precomposeunicode", NULL, 0, GIT_PRECOMPOSE_DEFAULT },
84
83
  {"core.safecrlf", _configmap_safecrlf, ARRAY_SIZE(_configmap_safecrlf), GIT_SAFE_CRLF_DEFAULT},
85
84
  {"core.logallrefupdates", _configmap_logallrefupdates, ARRAY_SIZE(_configmap_logallrefupdates), GIT_LOGALLREFUPDATES_DEFAULT},
@@ -13,7 +13,7 @@
13
13
  #include "array.h"
14
14
  #include "str.h"
15
15
  #include "config_backend.h"
16
- #include "config_entries.h"
16
+ #include "config_list.h"
17
17
  #include "config_parse.h"
18
18
  #include "filebuf.h"
19
19
  #include "regexp.h"
@@ -24,9 +24,11 @@
24
24
  /* Max depth for [include] directives */
25
25
  #define MAX_INCLUDE_DEPTH 10
26
26
 
27
+ #define CONFIG_FILE_TYPE "file"
28
+
27
29
  typedef struct config_file {
28
30
  git_futils_filestamp stamp;
29
- unsigned char checksum[GIT_HASH_SHA1_SIZE];
31
+ unsigned char checksum[GIT_HASH_SHA256_SIZE];
30
32
  char *path;
31
33
  git_array_t(struct config_file) includes;
32
34
  } config_file;
@@ -34,7 +36,7 @@ typedef struct config_file {
34
36
  typedef struct {
35
37
  git_config_backend parent;
36
38
  git_mutex values_mutex;
37
- git_config_entries *entries;
39
+ git_config_list *config_list;
38
40
  const git_repository *repo;
39
41
  git_config_level_t level;
40
42
 
@@ -50,13 +52,13 @@ typedef struct {
50
52
  typedef struct {
51
53
  const git_repository *repo;
52
54
  config_file *file;
53
- git_config_entries *entries;
55
+ git_config_list *config_list;
54
56
  git_config_level_t level;
55
57
  unsigned int depth;
56
58
  } config_file_parse_data;
57
59
 
58
- static int config_file_read(git_config_entries *entries, const git_repository *repo, config_file *file, git_config_level_t level, int depth);
59
- static int config_file_read_buffer(git_config_entries *entries, const git_repository *repo, config_file *file, git_config_level_t level, int depth, const char *buf, size_t buflen);
60
+ static int config_file_read(git_config_list *config_list, const git_repository *repo, config_file *file, git_config_level_t level, int depth);
61
+ static int config_file_read_buffer(git_config_list *config_list, const git_repository *repo, config_file *file, git_config_level_t level, int depth, const char *buf, size_t buflen);
60
62
  static int config_file_write(config_file_backend *cfg, const char *orig_key, const char *key, const git_regexp *preg, const char *value);
61
63
  static char *escape_value(const char *ptr);
62
64
 
@@ -65,7 +67,7 @@ static char *escape_value(const char *ptr);
65
67
  * refcount. This is its own function to make sure we use the mutex to
66
68
  * avoid the map pointer from changing under us.
67
69
  */
68
- static int config_file_entries_take(git_config_entries **out, config_file_backend *b)
70
+ static int config_file_take_list(git_config_list **out, config_file_backend *b)
69
71
  {
70
72
  int error;
71
73
 
@@ -74,8 +76,8 @@ static int config_file_entries_take(git_config_entries **out, config_file_backen
74
76
  return error;
75
77
  }
76
78
 
77
- git_config_entries_incref(b->entries);
78
- *out = b->entries;
79
+ git_config_list_incref(b->config_list);
80
+ *out = b->config_list;
79
81
 
80
82
  git_mutex_unlock(&b->values_mutex);
81
83
 
@@ -106,7 +108,7 @@ static int config_file_open(git_config_backend *cfg, git_config_level_t level, c
106
108
  b->level = level;
107
109
  b->repo = repo;
108
110
 
109
- if ((res = git_config_entries_new(&b->entries)) < 0)
111
+ if ((res = git_config_list_new(&b->config_list)) < 0)
110
112
  return res;
111
113
 
112
114
  if (!git_fs_path_exists(b->file.path))
@@ -121,9 +123,9 @@ static int config_file_open(git_config_backend *cfg, git_config_level_t level, c
121
123
  if (p_access(b->file.path, R_OK) < 0)
122
124
  return GIT_ENOTFOUND;
123
125
 
124
- if (res < 0 || (res = config_file_read(b->entries, repo, &b->file, level, 0)) < 0) {
125
- git_config_entries_free(b->entries);
126
- b->entries = NULL;
126
+ if (res < 0 || (res = config_file_read(b->config_list, repo, &b->file, level, 0)) < 0) {
127
+ git_config_list_free(b->config_list);
128
+ b->config_list = NULL;
127
129
  }
128
130
 
129
131
  return res;
@@ -133,7 +135,7 @@ static int config_file_is_modified(int *modified, config_file *file)
133
135
  {
134
136
  config_file *include;
135
137
  git_str buf = GIT_STR_INIT;
136
- unsigned char checksum[GIT_HASH_SHA1_SIZE];
138
+ unsigned char checksum[GIT_HASH_SHA256_SIZE];
137
139
  uint32_t i;
138
140
  int error = 0;
139
141
 
@@ -145,10 +147,10 @@ static int config_file_is_modified(int *modified, config_file *file)
145
147
  if ((error = git_futils_readbuffer(&buf, file->path)) < 0)
146
148
  goto out;
147
149
 
148
- if ((error = git_hash_buf(checksum, buf.ptr, buf.size, GIT_HASH_ALGORITHM_SHA1)) < 0)
150
+ if ((error = git_hash_buf(checksum, buf.ptr, buf.size, GIT_HASH_ALGORITHM_SHA256)) < 0)
149
151
  goto out;
150
152
 
151
- if (memcmp(checksum, file->checksum, GIT_HASH_SHA1_SIZE) != 0) {
153
+ if (memcmp(checksum, file->checksum, GIT_HASH_SHA256_SIZE) != 0) {
152
154
  *modified = 1;
153
155
  goto out;
154
156
  }
@@ -175,10 +177,10 @@ static void config_file_clear_includes(config_file_backend *cfg)
175
177
  git_array_clear(cfg->file.includes);
176
178
  }
177
179
 
178
- static int config_file_set_entries(git_config_backend *cfg, git_config_entries *entries)
180
+ static int config_file_set_entries(git_config_backend *cfg, git_config_list *config_list)
179
181
  {
180
182
  config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
181
- git_config_entries *old = NULL;
183
+ git_config_list *old = NULL;
182
184
  int error;
183
185
 
184
186
  if (b->parent.readonly) {
@@ -191,40 +193,40 @@ static int config_file_set_entries(git_config_backend *cfg, git_config_entries *
191
193
  goto out;
192
194
  }
193
195
 
194
- old = b->entries;
195
- b->entries = entries;
196
+ old = b->config_list;
197
+ b->config_list = config_list;
196
198
 
197
199
  git_mutex_unlock(&b->values_mutex);
198
200
 
199
201
  out:
200
- git_config_entries_free(old);
202
+ git_config_list_free(old);
201
203
  return error;
202
204
  }
203
205
 
204
206
  static int config_file_refresh_from_buffer(git_config_backend *cfg, const char *buf, size_t buflen)
205
207
  {
206
208
  config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
207
- git_config_entries *entries = NULL;
209
+ git_config_list *config_list = NULL;
208
210
  int error;
209
211
 
210
212
  config_file_clear_includes(b);
211
213
 
212
- if ((error = git_config_entries_new(&entries)) < 0 ||
213
- (error = config_file_read_buffer(entries, b->repo, &b->file,
214
+ if ((error = git_config_list_new(&config_list)) < 0 ||
215
+ (error = config_file_read_buffer(config_list, b->repo, &b->file,
214
216
  b->level, 0, buf, buflen)) < 0 ||
215
- (error = config_file_set_entries(cfg, entries)) < 0)
217
+ (error = config_file_set_entries(cfg, config_list)) < 0)
216
218
  goto out;
217
219
 
218
- entries = NULL;
220
+ config_list = NULL;
219
221
  out:
220
- git_config_entries_free(entries);
222
+ git_config_list_free(config_list);
221
223
  return error;
222
224
  }
223
225
 
224
226
  static int config_file_refresh(git_config_backend *cfg)
225
227
  {
226
228
  config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
227
- git_config_entries *entries = NULL;
229
+ git_config_list *config_list = NULL;
228
230
  int error, modified;
229
231
 
230
232
  if (cfg->readonly)
@@ -238,14 +240,14 @@ static int config_file_refresh(git_config_backend *cfg)
238
240
 
239
241
  config_file_clear_includes(b);
240
242
 
241
- if ((error = git_config_entries_new(&entries)) < 0 ||
242
- (error = config_file_read(entries, b->repo, &b->file, b->level, 0)) < 0 ||
243
- (error = config_file_set_entries(cfg, entries)) < 0)
243
+ if ((error = git_config_list_new(&config_list)) < 0 ||
244
+ (error = config_file_read(config_list, b->repo, &b->file, b->level, 0)) < 0 ||
245
+ (error = config_file_set_entries(cfg, config_list)) < 0)
244
246
  goto out;
245
247
 
246
- entries = NULL;
248
+ config_list = NULL;
247
249
  out:
248
- git_config_entries_free(entries);
250
+ git_config_list_free(config_list);
249
251
 
250
252
  return (error == GIT_ENOTFOUND) ? 0 : error;
251
253
  }
@@ -258,7 +260,7 @@ static void config_file_free(git_config_backend *_backend)
258
260
  return;
259
261
 
260
262
  config_file_clear(&backend->file);
261
- git_config_entries_free(backend->entries);
263
+ git_config_list_free(backend->config_list);
262
264
  git_mutex_free(&backend->values_mutex);
263
265
  git__free(backend);
264
266
  }
@@ -268,19 +270,19 @@ static int config_file_iterator(
268
270
  struct git_config_backend *backend)
269
271
  {
270
272
  config_file_backend *b = GIT_CONTAINER_OF(backend, config_file_backend, parent);
271
- git_config_entries *dupped = NULL, *entries = NULL;
273
+ git_config_list *dupped = NULL, *config_list = NULL;
272
274
  int error;
273
275
 
274
276
  if ((error = config_file_refresh(backend)) < 0 ||
275
- (error = config_file_entries_take(&entries, b)) < 0 ||
276
- (error = git_config_entries_dup(&dupped, entries)) < 0 ||
277
- (error = git_config_entries_iterator_new(iter, dupped)) < 0)
277
+ (error = config_file_take_list(&config_list, b)) < 0 ||
278
+ (error = git_config_list_dup(&dupped, config_list)) < 0 ||
279
+ (error = git_config_list_iterator_new(iter, dupped)) < 0)
278
280
  goto out;
279
281
 
280
282
  out:
281
- /* Let iterator delete duplicated entries when it's done */
282
- git_config_entries_free(entries);
283
- git_config_entries_free(dupped);
283
+ /* Let iterator delete duplicated config_list when it's done */
284
+ git_config_list_free(config_list);
285
+ git_config_list_free(dupped);
284
286
  return error;
285
287
  }
286
288
 
@@ -292,24 +294,24 @@ static int config_file_snapshot(git_config_backend **out, git_config_backend *ba
292
294
  static int config_file_set(git_config_backend *cfg, const char *name, const char *value)
293
295
  {
294
296
  config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
295
- git_config_entries *entries;
296
- git_config_entry *existing;
297
+ git_config_list *config_list;
298
+ git_config_list_entry *existing;
297
299
  char *key, *esc_value = NULL;
298
300
  int error;
299
301
 
300
302
  if ((error = git_config__normalize_name(name, &key)) < 0)
301
303
  return error;
302
304
 
303
- if ((error = config_file_entries_take(&entries, b)) < 0)
305
+ if ((error = config_file_take_list(&config_list, b)) < 0)
304
306
  return error;
305
307
 
306
308
  /* Check whether we'd be modifying an included or multivar key */
307
- if ((error = git_config_entries_get_unique(&existing, entries, key)) < 0) {
309
+ if ((error = git_config_list_get_unique(&existing, config_list, key)) < 0) {
308
310
  if (error != GIT_ENOTFOUND)
309
311
  goto out;
310
312
  error = 0;
311
- } else if ((!existing->value && !value) ||
312
- (existing->value && value && !strcmp(existing->value, value))) {
313
+ } else if ((!existing->base.entry.value && !value) ||
314
+ (existing->base.entry.value && value && !strcmp(existing->base.entry.value, value))) {
313
315
  /* don't update if old and new values already match */
314
316
  error = 0;
315
317
  goto out;
@@ -325,43 +327,37 @@ static int config_file_set(git_config_backend *cfg, const char *name, const char
325
327
  goto out;
326
328
 
327
329
  out:
328
- git_config_entries_free(entries);
330
+ git_config_list_free(config_list);
329
331
  git__free(esc_value);
330
332
  git__free(key);
331
333
  return error;
332
334
  }
333
335
 
334
- /* release the map containing the entry as an equivalent to freeing it */
335
- static void config_file_entry_free(git_config_entry *entry)
336
- {
337
- git_config_entries *entries = (git_config_entries *) entry->payload;
338
- git_config_entries_free(entries);
339
- }
340
-
341
336
  /*
342
337
  * Internal function that actually gets the value in string form
343
338
  */
344
- static int config_file_get(git_config_backend *cfg, const char *key, git_config_entry **out)
339
+ static int config_file_get(
340
+ git_config_backend *cfg,
341
+ const char *key,
342
+ git_config_backend_entry **out)
345
343
  {
346
344
  config_file_backend *h = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
347
- git_config_entries *entries = NULL;
348
- git_config_entry *entry;
345
+ git_config_list *config_list = NULL;
346
+ git_config_list_entry *entry;
349
347
  int error = 0;
350
348
 
351
349
  if (!h->parent.readonly && ((error = config_file_refresh(cfg)) < 0))
352
350
  return error;
353
351
 
354
- if ((error = config_file_entries_take(&entries, h)) < 0)
352
+ if ((error = config_file_take_list(&config_list, h)) < 0)
355
353
  return error;
356
354
 
357
- if ((error = (git_config_entries_get(&entry, entries, key))) < 0) {
358
- git_config_entries_free(entries);
355
+ if ((error = (git_config_list_get(&entry, config_list, key))) < 0) {
356
+ git_config_list_free(config_list);
359
357
  return error;
360
358
  }
361
359
 
362
- entry->free = config_file_entry_free;
363
- entry->payload = entries;
364
- *out = entry;
360
+ *out = &entry->base;
365
361
 
366
362
  return 0;
367
363
  }
@@ -396,29 +392,29 @@ out:
396
392
  static int config_file_delete(git_config_backend *cfg, const char *name)
397
393
  {
398
394
  config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
399
- git_config_entries *entries = NULL;
400
- git_config_entry *entry;
395
+ git_config_list *config_list = NULL;
396
+ git_config_list_entry *entry;
401
397
  char *key = NULL;
402
398
  int error;
403
399
 
404
400
  if ((error = git_config__normalize_name(name, &key)) < 0)
405
401
  goto out;
406
402
 
407
- if ((error = config_file_entries_take(&entries, b)) < 0)
403
+ if ((error = config_file_take_list(&config_list, b)) < 0)
408
404
  goto out;
409
405
 
410
406
  /* Check whether we'd be modifying an included or multivar key */
411
- if ((error = git_config_entries_get_unique(&entry, entries, key)) < 0) {
407
+ if ((error = git_config_list_get_unique(&entry, config_list, key)) < 0) {
412
408
  if (error == GIT_ENOTFOUND)
413
409
  git_error_set(GIT_ERROR_CONFIG, "could not find key '%s' to delete", name);
414
410
  goto out;
415
411
  }
416
412
 
417
- if ((error = config_file_write(b, name, entry->name, NULL, NULL)) < 0)
413
+ if ((error = config_file_write(b, name, entry->base.entry.name, NULL, NULL)) < 0)
418
414
  goto out;
419
415
 
420
416
  out:
421
- git_config_entries_free(entries);
417
+ git_config_list_free(config_list);
422
418
  git__free(key);
423
419
  return error;
424
420
  }
@@ -426,8 +422,8 @@ out:
426
422
  static int config_file_delete_multivar(git_config_backend *cfg, const char *name, const char *regexp)
427
423
  {
428
424
  config_file_backend *b = GIT_CONTAINER_OF(cfg, config_file_backend, parent);
429
- git_config_entries *entries = NULL;
430
- git_config_entry *entry = NULL;
425
+ git_config_list *config_list = NULL;
426
+ git_config_list_entry *entry = NULL;
431
427
  git_regexp preg = GIT_REGEX_INIT;
432
428
  char *key = NULL;
433
429
  int result;
@@ -435,10 +431,10 @@ static int config_file_delete_multivar(git_config_backend *cfg, const char *name
435
431
  if ((result = git_config__normalize_name(name, &key)) < 0)
436
432
  goto out;
437
433
 
438
- if ((result = config_file_entries_take(&entries, b)) < 0)
434
+ if ((result = config_file_take_list(&config_list, b)) < 0)
439
435
  goto out;
440
436
 
441
- if ((result = git_config_entries_get(&entry, entries, key)) < 0) {
437
+ if ((result = git_config_list_get(&entry, config_list, key)) < 0) {
442
438
  if (result == GIT_ENOTFOUND)
443
439
  git_error_set(GIT_ERROR_CONFIG, "could not find key '%s' to delete", name);
444
440
  goto out;
@@ -451,7 +447,7 @@ static int config_file_delete_multivar(git_config_backend *cfg, const char *name
451
447
  goto out;
452
448
 
453
449
  out:
454
- git_config_entries_free(entries);
450
+ git_config_list_free(config_list);
455
451
  git__free(key);
456
452
  git_regexp_dispose(&preg);
457
453
  return result;
@@ -591,7 +587,7 @@ static int parse_include(config_file_parse_data *parse_data, const char *file)
591
587
  git_array_init(include->includes);
592
588
  include->path = git_str_detach(&path);
593
589
 
594
- result = config_file_read(parse_data->entries, parse_data->repo, include,
590
+ result = config_file_read(parse_data->config_list, parse_data->repo, include,
595
591
  parse_data->level, parse_data->depth+1);
596
592
 
597
593
  if (result == GIT_ENOTFOUND) {
@@ -776,7 +772,7 @@ static int read_on_variable(
776
772
  {
777
773
  config_file_parse_data *parse_data = (config_file_parse_data *)data;
778
774
  git_str buf = GIT_STR_INIT;
779
- git_config_entry *entry;
775
+ git_config_list_entry *entry;
780
776
  const char *c;
781
777
  int result = 0;
782
778
 
@@ -799,30 +795,45 @@ static int read_on_variable(
799
795
  if (git_str_oom(&buf))
800
796
  return -1;
801
797
 
802
- entry = git__calloc(1, sizeof(git_config_entry));
798
+ entry = git__calloc(1, sizeof(git_config_list_entry));
803
799
  GIT_ERROR_CHECK_ALLOC(entry);
804
- entry->name = git_str_detach(&buf);
805
- entry->value = var_value ? git__strdup(var_value) : NULL;
806
- entry->level = parse_data->level;
807
- entry->include_depth = parse_data->depth;
808
800
 
809
- if ((result = git_config_entries_append(parse_data->entries, entry)) < 0)
801
+ entry->base.entry.name = git_str_detach(&buf);
802
+ GIT_ERROR_CHECK_ALLOC(entry->base.entry.name);
803
+
804
+ if (var_value) {
805
+ entry->base.entry.value = git__strdup(var_value);
806
+ GIT_ERROR_CHECK_ALLOC(entry->base.entry.value);
807
+ }
808
+
809
+ entry->base.entry.backend_type = git_config_list_add_string(parse_data->config_list, CONFIG_FILE_TYPE);
810
+ GIT_ERROR_CHECK_ALLOC(entry->base.entry.backend_type);
811
+
812
+ entry->base.entry.origin_path = git_config_list_add_string(parse_data->config_list, parse_data->file->path);
813
+ GIT_ERROR_CHECK_ALLOC(entry->base.entry.origin_path);
814
+
815
+ entry->base.entry.level = parse_data->level;
816
+ entry->base.entry.include_depth = parse_data->depth;
817
+ entry->base.free = git_config_list_entry_free;
818
+ entry->config_list = parse_data->config_list;
819
+
820
+ if ((result = git_config_list_append(parse_data->config_list, entry)) < 0)
810
821
  return result;
811
822
 
812
823
  result = 0;
813
824
 
814
825
  /* Add or append the new config option */
815
- if (!git__strcmp(entry->name, "include.path"))
816
- result = parse_include(parse_data, entry->value);
817
- else if (!git__prefixcmp(entry->name, "includeif.") &&
818
- !git__suffixcmp(entry->name, ".path"))
819
- result = parse_conditional_include(parse_data, entry->name, entry->value);
826
+ if (!git__strcmp(entry->base.entry.name, "include.path"))
827
+ result = parse_include(parse_data, entry->base.entry.value);
828
+ else if (!git__prefixcmp(entry->base.entry.name, "includeif.") &&
829
+ !git__suffixcmp(entry->base.entry.name, ".path"))
830
+ result = parse_conditional_include(parse_data, entry->base.entry.name, entry->base.entry.value);
820
831
 
821
832
  return result;
822
833
  }
823
834
 
824
835
  static int config_file_read_buffer(
825
- git_config_entries *entries,
836
+ git_config_list *config_list,
826
837
  const git_repository *repo,
827
838
  config_file *file,
828
839
  git_config_level_t level,
@@ -851,7 +862,7 @@ static int config_file_read_buffer(
851
862
 
852
863
  parse_data.repo = repo;
853
864
  parse_data.file = file;
854
- parse_data.entries = entries;
865
+ parse_data.config_list = config_list;
855
866
  parse_data.level = level;
856
867
  parse_data.depth = depth;
857
868
 
@@ -862,7 +873,7 @@ out:
862
873
  }
863
874
 
864
875
  static int config_file_read(
865
- git_config_entries *entries,
876
+ git_config_list *config_list,
866
877
  const git_repository *repo,
867
878
  config_file *file,
868
879
  git_config_level_t level,
@@ -881,10 +892,10 @@ static int config_file_read(
881
892
  goto out;
882
893
 
883
894
  git_futils_filestamp_set_from_stat(&file->stamp, &st);
884
- if ((error = git_hash_buf(file->checksum, contents.ptr, contents.size, GIT_HASH_ALGORITHM_SHA1)) < 0)
895
+ if ((error = git_hash_buf(file->checksum, contents.ptr, contents.size, GIT_HASH_ALGORITHM_SHA256)) < 0)
885
896
  goto out;
886
897
 
887
- if ((error = config_file_read_buffer(entries, repo, file, level, depth,
898
+ if ((error = config_file_read_buffer(config_list, repo, file, level, depth,
888
899
  contents.ptr, contents.size)) < 0)
889
900
  goto out;
890
901
 
@@ -1116,7 +1127,12 @@ static int write_on_eof(
1116
1127
  /*
1117
1128
  * This is pretty much the parsing, except we write out anything we don't have
1118
1129
  */
1119
- static int config_file_write(config_file_backend *cfg, const char *orig_key, const char *key, const git_regexp *preg, const char *value)
1130
+ static int config_file_write(
1131
+ config_file_backend *cfg,
1132
+ const char *orig_key,
1133
+ const char *key,
1134
+ const git_regexp *preg,
1135
+ const char *value)
1120
1136
 
1121
1137
  {
1122
1138
  char *orig_section = NULL, *section = NULL, *orig_name, *name, *ldot;
@@ -1131,8 +1147,9 @@ static int config_file_write(config_file_backend *cfg, const char *orig_key, con
1131
1147
  if (cfg->locked) {
1132
1148
  error = git_str_puts(&contents, git_str_cstr(&cfg->locked_content) == NULL ? "" : git_str_cstr(&cfg->locked_content));
1133
1149
  } else {
1134
- if ((error = git_filebuf_open(&file, cfg->file.path, GIT_FILEBUF_HASH_CONTENTS,
1135
- GIT_CONFIG_FILE_MODE)) < 0)
1150
+ if ((error = git_filebuf_open(&file, cfg->file.path,
1151
+ GIT_FILEBUF_HASH_SHA256,
1152
+ GIT_CONFIG_FILE_MODE)) < 0)
1136
1153
  goto done;
1137
1154
 
1138
1155
  /* We need to read in our own config file */