rugged 1.7.2 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (361) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rugged/version.rb +1 -1
  3. data/vendor/libgit2/AUTHORS +1 -0
  4. data/vendor/libgit2/CMakeLists.txt +23 -10
  5. data/vendor/libgit2/COPYING +195 -1
  6. data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
  7. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  8. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +1 -1
  9. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
  10. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +17 -8
  11. data/vendor/libgit2/cmake/SelectHashes.cmake +28 -11
  12. data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
  13. data/vendor/libgit2/cmake/SelectSSH.cmake +22 -17
  14. data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
  15. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  16. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  17. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  18. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  19. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  20. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  21. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
  22. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  23. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  24. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  25. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
  26. data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
  27. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  28. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  29. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  30. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  31. data/vendor/libgit2/deps/pcre/CMakeLists.txt +1 -0
  32. data/vendor/libgit2/deps/xdiff/xmerge.c +2 -2
  33. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  34. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  35. data/vendor/libgit2/deps/zlib/adler32.c +5 -27
  36. data/vendor/libgit2/deps/zlib/crc32.c +94 -167
  37. data/vendor/libgit2/deps/zlib/deflate.c +358 -435
  38. data/vendor/libgit2/deps/zlib/deflate.h +41 -10
  39. data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
  40. data/vendor/libgit2/deps/zlib/infback.c +17 -30
  41. data/vendor/libgit2/deps/zlib/inffast.c +1 -4
  42. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  43. data/vendor/libgit2/deps/zlib/inflate.c +36 -102
  44. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  45. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  46. data/vendor/libgit2/deps/zlib/trees.c +287 -352
  47. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  48. data/vendor/libgit2/deps/zlib/zlib.h +202 -202
  49. data/vendor/libgit2/deps/zlib/zutil.c +18 -44
  50. data/vendor/libgit2/deps/zlib/zutil.h +13 -33
  51. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  52. data/vendor/libgit2/include/git2/apply.h +27 -6
  53. data/vendor/libgit2/include/git2/attr.h +17 -4
  54. data/vendor/libgit2/include/git2/blame.h +133 -28
  55. data/vendor/libgit2/include/git2/blob.h +71 -28
  56. data/vendor/libgit2/include/git2/branch.h +22 -15
  57. data/vendor/libgit2/include/git2/buffer.h +6 -4
  58. data/vendor/libgit2/include/git2/cert.h +2 -1
  59. data/vendor/libgit2/include/git2/checkout.h +83 -32
  60. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  61. data/vendor/libgit2/include/git2/clone.h +25 -9
  62. data/vendor/libgit2/include/git2/commit.h +132 -3
  63. data/vendor/libgit2/include/git2/common.h +120 -63
  64. data/vendor/libgit2/include/git2/config.h +93 -23
  65. data/vendor/libgit2/include/git2/credential.h +30 -2
  66. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  67. data/vendor/libgit2/include/git2/deprecated.h +133 -3
  68. data/vendor/libgit2/include/git2/describe.h +13 -1
  69. data/vendor/libgit2/include/git2/diff.h +38 -8
  70. data/vendor/libgit2/include/git2/email.h +9 -29
  71. data/vendor/libgit2/include/git2/errors.h +46 -73
  72. data/vendor/libgit2/include/git2/filter.h +14 -7
  73. data/vendor/libgit2/include/git2/global.h +8 -1
  74. data/vendor/libgit2/include/git2/graph.h +3 -2
  75. data/vendor/libgit2/include/git2/ignore.h +10 -0
  76. data/vendor/libgit2/include/git2/index.h +99 -14
  77. data/vendor/libgit2/include/git2/indexer.h +21 -4
  78. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  79. data/vendor/libgit2/include/git2/merge.h +46 -1
  80. data/vendor/libgit2/include/git2/message.h +2 -2
  81. data/vendor/libgit2/include/git2/net.h +3 -1
  82. data/vendor/libgit2/include/git2/notes.h +9 -6
  83. data/vendor/libgit2/include/git2/object.h +9 -8
  84. data/vendor/libgit2/include/git2/odb.h +91 -49
  85. data/vendor/libgit2/include/git2/odb_backend.h +80 -52
  86. data/vendor/libgit2/include/git2/oid.h +23 -24
  87. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  88. data/vendor/libgit2/include/git2/pack.h +13 -1
  89. data/vendor/libgit2/include/git2/patch.h +2 -3
  90. data/vendor/libgit2/include/git2/pathspec.h +9 -0
  91. data/vendor/libgit2/include/git2/proxy.h +10 -0
  92. data/vendor/libgit2/include/git2/rebase.h +9 -6
  93. data/vendor/libgit2/include/git2/refdb.h +2 -2
  94. data/vendor/libgit2/include/git2/reflog.h +3 -2
  95. data/vendor/libgit2/include/git2/refs.h +9 -6
  96. data/vendor/libgit2/include/git2/refspec.h +14 -4
  97. data/vendor/libgit2/include/git2/remote.h +94 -18
  98. data/vendor/libgit2/include/git2/repository.h +57 -21
  99. data/vendor/libgit2/include/git2/reset.h +16 -3
  100. data/vendor/libgit2/include/git2/revert.h +9 -4
  101. data/vendor/libgit2/include/git2/revparse.h +3 -3
  102. data/vendor/libgit2/include/git2/revwalk.h +3 -2
  103. data/vendor/libgit2/include/git2/signature.h +46 -1
  104. data/vendor/libgit2/include/git2/stash.h +17 -3
  105. data/vendor/libgit2/include/git2/status.h +10 -6
  106. data/vendor/libgit2/include/git2/stdint.h +87 -85
  107. data/vendor/libgit2/include/git2/strarray.h +2 -3
  108. data/vendor/libgit2/include/git2/submodule.h +20 -9
  109. data/vendor/libgit2/include/git2/sys/alloc.h +12 -0
  110. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  111. data/vendor/libgit2/include/git2/sys/commit_graph.h +103 -62
  112. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  113. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  114. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  115. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  116. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  117. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  118. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  119. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  120. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  121. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  122. data/vendor/libgit2/include/git2/sys/midx.h +43 -4
  123. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
  124. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  125. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  126. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  127. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  128. data/vendor/libgit2/include/git2/sys/remote.h +8 -1
  129. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  130. data/vendor/libgit2/include/git2/sys/stream.h +11 -2
  131. data/vendor/libgit2/include/git2/sys/transport.h +24 -3
  132. data/vendor/libgit2/include/git2/tag.h +3 -1
  133. data/vendor/libgit2/include/git2/trace.h +9 -3
  134. data/vendor/libgit2/include/git2/transaction.h +3 -2
  135. data/vendor/libgit2/include/git2/transport.h +11 -3
  136. data/vendor/libgit2/include/git2/tree.h +16 -5
  137. data/vendor/libgit2/include/git2/types.h +19 -3
  138. data/vendor/libgit2/include/git2/version.h +44 -8
  139. data/vendor/libgit2/include/git2/worktree.h +16 -6
  140. data/vendor/libgit2/src/CMakeLists.txt +6 -4
  141. data/vendor/libgit2/src/cli/CMakeLists.txt +2 -2
  142. data/vendor/libgit2/src/cli/cmd.c +1 -1
  143. data/vendor/libgit2/src/cli/cmd.h +4 -0
  144. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  145. data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
  146. data/vendor/libgit2/src/cli/cmd_clone.c +5 -7
  147. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  148. data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
  149. data/vendor/libgit2/src/cli/cmd_help.c +6 -7
  150. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  151. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  152. data/vendor/libgit2/src/cli/common.c +168 -0
  153. data/vendor/libgit2/src/cli/common.h +63 -0
  154. data/vendor/libgit2/src/cli/error.h +1 -1
  155. data/vendor/libgit2/src/cli/main.c +52 -24
  156. data/vendor/libgit2/src/cli/opt.c +29 -3
  157. data/vendor/libgit2/src/cli/opt.h +21 -3
  158. data/vendor/libgit2/src/cli/opt_usage.c +102 -33
  159. data/vendor/libgit2/src/cli/opt_usage.h +6 -1
  160. data/vendor/libgit2/src/cli/progress.c +51 -2
  161. data/vendor/libgit2/src/cli/progress.h +12 -0
  162. data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
  163. data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
  164. data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
  165. data/vendor/libgit2/src/libgit2/CMakeLists.txt +26 -8
  166. data/vendor/libgit2/src/libgit2/apply.c +10 -13
  167. data/vendor/libgit2/src/libgit2/attr.c +30 -13
  168. data/vendor/libgit2/src/libgit2/attr_file.c +7 -2
  169. data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
  170. data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
  171. data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
  172. data/vendor/libgit2/src/libgit2/blame.c +130 -44
  173. data/vendor/libgit2/src/libgit2/blame.h +1 -0
  174. data/vendor/libgit2/src/libgit2/cache.c +22 -17
  175. data/vendor/libgit2/src/libgit2/cache.h +7 -9
  176. data/vendor/libgit2/src/libgit2/checkout.c +34 -24
  177. data/vendor/libgit2/src/libgit2/checkout.h +0 -2
  178. data/vendor/libgit2/src/libgit2/cherrypick.c +1 -2
  179. data/vendor/libgit2/src/libgit2/clone.c +186 -166
  180. data/vendor/libgit2/src/libgit2/clone.h +4 -1
  181. data/vendor/libgit2/src/libgit2/commit.c +92 -0
  182. data/vendor/libgit2/src/libgit2/commit_graph.c +67 -56
  183. data/vendor/libgit2/src/libgit2/commit_graph.h +1 -2
  184. data/vendor/libgit2/src/libgit2/config.c +389 -298
  185. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  186. data/vendor/libgit2/src/libgit2/config.h +9 -4
  187. data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
  188. data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
  189. data/vendor/libgit2/src/libgit2/config_file.c +99 -88
  190. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  191. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  192. data/vendor/libgit2/src/libgit2/config_mem.c +194 -40
  193. data/vendor/libgit2/src/libgit2/config_parse.c +10 -9
  194. data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
  195. data/vendor/libgit2/src/libgit2/describe.c +24 -24
  196. data/vendor/libgit2/src/libgit2/diff.c +1 -1
  197. data/vendor/libgit2/src/libgit2/diff_driver.c +12 -19
  198. data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
  199. data/vendor/libgit2/src/libgit2/diff_generate.c +3 -3
  200. data/vendor/libgit2/src/libgit2/diff_parse.c +2 -2
  201. data/vendor/libgit2/src/libgit2/diff_print.c +65 -9
  202. data/vendor/libgit2/src/libgit2/diff_tform.c +36 -8
  203. data/vendor/libgit2/src/libgit2/email.c +1 -0
  204. data/vendor/libgit2/src/libgit2/fetch.c +5 -3
  205. data/vendor/libgit2/src/libgit2/filter.c +5 -5
  206. data/vendor/libgit2/src/libgit2/git2.rc +3 -3
  207. data/vendor/libgit2/src/libgit2/grafts.c +18 -20
  208. data/vendor/libgit2/src/libgit2/grafts.h +0 -1
  209. data/vendor/libgit2/src/libgit2/graph.c +1 -1
  210. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  211. data/vendor/libgit2/src/libgit2/ignore.c +9 -5
  212. data/vendor/libgit2/src/libgit2/index.c +68 -90
  213. data/vendor/libgit2/src/libgit2/index.h +2 -2
  214. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  215. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  216. data/vendor/libgit2/src/libgit2/indexer.c +34 -38
  217. data/vendor/libgit2/src/libgit2/iterator.c +14 -8
  218. data/vendor/libgit2/src/libgit2/libgit2.c +153 -368
  219. data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
  220. data/vendor/libgit2/src/libgit2/merge.c +42 -37
  221. data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
  222. data/vendor/libgit2/src/libgit2/midx.c +28 -15
  223. data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
  224. data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
  225. data/vendor/libgit2/src/libgit2/object.c +6 -5
  226. data/vendor/libgit2/src/libgit2/odb.c +5 -4
  227. data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
  228. data/vendor/libgit2/src/libgit2/odb_pack.c +13 -5
  229. data/vendor/libgit2/src/libgit2/oid.c +32 -5
  230. data/vendor/libgit2/src/libgit2/oid.h +11 -0
  231. data/vendor/libgit2/src/libgit2/pack-objects.c +58 -31
  232. data/vendor/libgit2/src/libgit2/pack-objects.h +12 -4
  233. data/vendor/libgit2/src/libgit2/pack.c +30 -24
  234. data/vendor/libgit2/src/libgit2/pack.h +15 -10
  235. data/vendor/libgit2/src/libgit2/patch_parse.c +2 -2
  236. data/vendor/libgit2/src/libgit2/path.c +1 -1
  237. data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
  238. data/vendor/libgit2/src/libgit2/push.c +79 -28
  239. data/vendor/libgit2/src/libgit2/push.h +1 -0
  240. data/vendor/libgit2/src/libgit2/refdb_fs.c +128 -61
  241. data/vendor/libgit2/src/libgit2/reflog.c +1 -2
  242. data/vendor/libgit2/src/libgit2/reflog.h +2 -0
  243. data/vendor/libgit2/src/libgit2/refs.c +26 -7
  244. data/vendor/libgit2/src/libgit2/refs.h +6 -1
  245. data/vendor/libgit2/src/libgit2/refspec.c +28 -1
  246. data/vendor/libgit2/src/libgit2/refspec.h +8 -0
  247. data/vendor/libgit2/src/libgit2/remote.c +121 -61
  248. data/vendor/libgit2/src/libgit2/repository.c +231 -51
  249. data/vendor/libgit2/src/libgit2/repository.h +10 -6
  250. data/vendor/libgit2/src/libgit2/revert.c +1 -2
  251. data/vendor/libgit2/src/libgit2/revparse.c +2 -2
  252. data/vendor/libgit2/src/libgit2/revwalk.c +13 -10
  253. data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
  254. data/vendor/libgit2/src/libgit2/settings.c +468 -0
  255. data/vendor/libgit2/src/libgit2/settings.h +6 -2
  256. data/vendor/libgit2/src/libgit2/signature.c +132 -15
  257. data/vendor/libgit2/src/libgit2/signature.h +0 -1
  258. data/vendor/libgit2/src/libgit2/status.c +1 -1
  259. data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -60
  260. data/vendor/libgit2/src/libgit2/streams/openssl.c +32 -7
  261. data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
  262. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
  263. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
  264. data/vendor/libgit2/src/libgit2/streams/stransport.c +39 -7
  265. data/vendor/libgit2/src/libgit2/submodule.c +106 -63
  266. data/vendor/libgit2/src/libgit2/submodule.h +6 -7
  267. data/vendor/libgit2/src/libgit2/tag.c +1 -1
  268. data/vendor/libgit2/src/libgit2/trailer.c +6 -6
  269. data/vendor/libgit2/src/libgit2/transaction.c +26 -20
  270. data/vendor/libgit2/src/libgit2/transaction.h +4 -1
  271. data/vendor/libgit2/src/libgit2/transport.c +4 -1
  272. data/vendor/libgit2/src/libgit2/transports/credential.c +1 -1
  273. data/vendor/libgit2/src/libgit2/transports/http.c +1 -2
  274. data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
  275. data/vendor/libgit2/src/libgit2/transports/httpclient.c +112 -72
  276. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  277. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  278. data/vendor/libgit2/src/libgit2/transports/local.c +8 -7
  279. data/vendor/libgit2/src/libgit2/transports/smart.c +20 -8
  280. data/vendor/libgit2/src/libgit2/transports/smart.h +4 -2
  281. data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +2 -2
  282. data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +55 -10
  283. data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
  284. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  285. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  286. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1126 -0
  287. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  288. data/vendor/libgit2/src/libgit2/transports/winhttp.c +35 -7
  289. data/vendor/libgit2/src/libgit2/tree.c +34 -26
  290. data/vendor/libgit2/src/libgit2/tree.h +3 -2
  291. data/vendor/libgit2/src/libgit2/worktree.c +14 -17
  292. data/vendor/libgit2/src/util/CMakeLists.txt +4 -6
  293. data/vendor/libgit2/src/util/alloc.c +4 -1
  294. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  295. data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
  296. data/vendor/libgit2/src/util/allocators/stdalloc.c +0 -10
  297. data/vendor/libgit2/src/util/array.h +18 -17
  298. data/vendor/libgit2/src/util/cc-compat.h +2 -0
  299. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  300. data/vendor/libgit2/src/util/date.c +22 -14
  301. data/vendor/libgit2/src/util/date.h +12 -0
  302. data/vendor/libgit2/src/util/errors.c +401 -0
  303. data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
  304. data/vendor/libgit2/src/util/fs_path.c +15 -4
  305. data/vendor/libgit2/src/util/fs_path.h +23 -0
  306. data/vendor/libgit2/src/util/futils.c +6 -5
  307. data/vendor/libgit2/src/util/futils.h +13 -4
  308. data/vendor/libgit2/src/util/git2_features.h.in +12 -1
  309. data/vendor/libgit2/src/util/git2_util.h +6 -0
  310. data/vendor/libgit2/src/util/hash/openssl.c +152 -0
  311. data/vendor/libgit2/src/util/hash/openssl.h +17 -1
  312. data/vendor/libgit2/src/util/hash/sha.h +4 -1
  313. data/vendor/libgit2/src/util/hashmap.h +424 -0
  314. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  315. data/vendor/libgit2/src/util/integer.h +3 -1
  316. data/vendor/libgit2/src/util/net.c +13 -7
  317. data/vendor/libgit2/src/util/net.h +2 -0
  318. data/vendor/libgit2/src/util/pool.c +1 -1
  319. data/vendor/libgit2/src/util/pool.h +5 -0
  320. data/vendor/libgit2/src/util/pqueue.h +1 -1
  321. data/vendor/libgit2/src/util/process.h +222 -0
  322. data/vendor/libgit2/src/util/rand.c +1 -7
  323. data/vendor/libgit2/src/util/regexp.c +1 -1
  324. data/vendor/libgit2/src/util/sortedcache.c +14 -13
  325. data/vendor/libgit2/src/util/sortedcache.h +3 -3
  326. data/vendor/libgit2/src/util/str.c +2 -2
  327. data/vendor/libgit2/src/util/strlist.c +108 -0
  328. data/vendor/libgit2/src/util/strlist.h +36 -0
  329. data/vendor/libgit2/src/util/unix/posix.h +0 -2
  330. data/vendor/libgit2/src/util/unix/process.c +629 -0
  331. data/vendor/libgit2/src/util/unix/realpath.c +23 -5
  332. data/vendor/libgit2/src/util/util.c +2 -2
  333. data/vendor/libgit2/src/util/util.h +4 -38
  334. data/vendor/libgit2/src/util/vector.c +3 -3
  335. data/vendor/libgit2/src/util/vector.h +2 -2
  336. data/vendor/libgit2/src/util/win32/posix_w32.c +29 -6
  337. data/vendor/libgit2/src/util/win32/process.c +506 -0
  338. metadata +45 -28
  339. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  340. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  341. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  342. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  343. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  344. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  345. data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
  346. data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
  347. data/vendor/libgit2/src/libgit2/errors.c +0 -293
  348. data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
  349. data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
  350. data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
  351. data/vendor/libgit2/src/libgit2/offmap.c +0 -101
  352. data/vendor/libgit2/src/libgit2/offmap.h +0 -133
  353. data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
  354. data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
  355. data/vendor/libgit2/src/libgit2/threadstate.c +0 -97
  356. data/vendor/libgit2/src/libgit2/threadstate.h +0 -22
  357. data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
  358. data/vendor/libgit2/src/util/khash.h +0 -615
  359. data/vendor/libgit2/src/util/strmap.c +0 -100
  360. data/vendor/libgit2/src/util/strmap.h +0 -131
  361. /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +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,6 +24,8 @@
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
31
  unsigned char checksum[GIT_HASH_SHA256_SIZE];
@@ -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;
@@ -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,
@@ -884,7 +895,7 @@ static int config_file_read(
884
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