rugged 1.7.2 → 1.9.4

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 (405) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rugged/extconf.rb +4 -4
  3. data/ext/rugged/rugged.c +12 -1
  4. data/ext/rugged/rugged_blame.c +22 -6
  5. data/ext/rugged/rugged_blob.c +24 -9
  6. data/ext/rugged/rugged_branch.c +10 -7
  7. data/ext/rugged/rugged_branch_collection.c +8 -6
  8. data/ext/rugged/rugged_commit.c +7 -6
  9. data/ext/rugged/rugged_config.c +20 -11
  10. data/ext/rugged/rugged_diff.c +26 -12
  11. data/ext/rugged/rugged_diff_hunk.c +2 -1
  12. data/ext/rugged/rugged_index.c +39 -29
  13. data/ext/rugged/rugged_note.c +7 -6
  14. data/ext/rugged/rugged_object.c +3 -2
  15. data/ext/rugged/rugged_patch.c +23 -9
  16. data/ext/rugged/rugged_rebase.c +22 -10
  17. data/ext/rugged/rugged_reference.c +22 -13
  18. data/ext/rugged/rugged_reference_collection.c +9 -7
  19. data/ext/rugged/rugged_remote.c +23 -12
  20. data/ext/rugged/rugged_remote_collection.c +11 -9
  21. data/ext/rugged/rugged_repo.c +60 -45
  22. data/ext/rugged/rugged_revwalk.c +22 -12
  23. data/ext/rugged/rugged_submodule.c +23 -20
  24. data/ext/rugged/rugged_submodule_collection.c +20 -9
  25. data/ext/rugged/rugged_tag.c +6 -4
  26. data/ext/rugged/rugged_tag_collection.c +7 -5
  27. data/ext/rugged/rugged_tree.c +27 -15
  28. data/lib/rugged/version.rb +1 -1
  29. data/vendor/libgit2/AUTHORS +3 -0
  30. data/vendor/libgit2/CMakeLists.txt +23 -10
  31. data/vendor/libgit2/COPYING +195 -1
  32. data/vendor/libgit2/cmake/DefaultCFlags.cmake +4 -1
  33. data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
  34. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  35. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +1 -1
  36. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
  37. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +17 -8
  38. data/vendor/libgit2/cmake/SelectHashes.cmake +28 -11
  39. data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
  40. data/vendor/libgit2/cmake/SelectSSH.cmake +30 -19
  41. data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
  42. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  43. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  44. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  45. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  46. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  47. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  48. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
  49. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  50. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  51. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  52. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
  53. data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
  54. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  55. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  56. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  57. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  58. data/vendor/libgit2/deps/pcre/CMakeLists.txt +3 -3
  59. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +1 -1
  60. data/vendor/libgit2/deps/xdiff/xmerge.c +16 -12
  61. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  62. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  63. data/vendor/libgit2/deps/zlib/adler32.c +5 -27
  64. data/vendor/libgit2/deps/zlib/crc32.c +94 -167
  65. data/vendor/libgit2/deps/zlib/deflate.c +358 -435
  66. data/vendor/libgit2/deps/zlib/deflate.h +41 -10
  67. data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
  68. data/vendor/libgit2/deps/zlib/infback.c +17 -30
  69. data/vendor/libgit2/deps/zlib/inffast.c +1 -4
  70. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  71. data/vendor/libgit2/deps/zlib/inflate.c +36 -102
  72. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  73. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  74. data/vendor/libgit2/deps/zlib/trees.c +287 -352
  75. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  76. data/vendor/libgit2/deps/zlib/zlib.h +202 -202
  77. data/vendor/libgit2/deps/zlib/zutil.c +18 -44
  78. data/vendor/libgit2/deps/zlib/zutil.h +13 -33
  79. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  80. data/vendor/libgit2/include/git2/apply.h +27 -6
  81. data/vendor/libgit2/include/git2/attr.h +17 -4
  82. data/vendor/libgit2/include/git2/blame.h +133 -28
  83. data/vendor/libgit2/include/git2/blob.h +71 -28
  84. data/vendor/libgit2/include/git2/branch.h +22 -15
  85. data/vendor/libgit2/include/git2/buffer.h +6 -4
  86. data/vendor/libgit2/include/git2/cert.h +2 -1
  87. data/vendor/libgit2/include/git2/checkout.h +83 -32
  88. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  89. data/vendor/libgit2/include/git2/clone.h +25 -9
  90. data/vendor/libgit2/include/git2/commit.h +132 -3
  91. data/vendor/libgit2/include/git2/common.h +120 -63
  92. data/vendor/libgit2/include/git2/config.h +93 -23
  93. data/vendor/libgit2/include/git2/credential.h +30 -2
  94. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  95. data/vendor/libgit2/include/git2/deprecated.h +134 -4
  96. data/vendor/libgit2/include/git2/describe.h +13 -1
  97. data/vendor/libgit2/include/git2/diff.h +38 -8
  98. data/vendor/libgit2/include/git2/email.h +9 -29
  99. data/vendor/libgit2/include/git2/errors.h +46 -73
  100. data/vendor/libgit2/include/git2/filter.h +14 -7
  101. data/vendor/libgit2/include/git2/global.h +8 -1
  102. data/vendor/libgit2/include/git2/graph.h +3 -2
  103. data/vendor/libgit2/include/git2/ignore.h +10 -0
  104. data/vendor/libgit2/include/git2/index.h +100 -15
  105. data/vendor/libgit2/include/git2/indexer.h +21 -4
  106. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  107. data/vendor/libgit2/include/git2/merge.h +50 -3
  108. data/vendor/libgit2/include/git2/message.h +2 -2
  109. data/vendor/libgit2/include/git2/net.h +3 -1
  110. data/vendor/libgit2/include/git2/notes.h +9 -6
  111. data/vendor/libgit2/include/git2/object.h +9 -8
  112. data/vendor/libgit2/include/git2/odb.h +91 -49
  113. data/vendor/libgit2/include/git2/odb_backend.h +80 -52
  114. data/vendor/libgit2/include/git2/oid.h +23 -25
  115. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  116. data/vendor/libgit2/include/git2/pack.h +13 -1
  117. data/vendor/libgit2/include/git2/patch.h +2 -3
  118. data/vendor/libgit2/include/git2/pathspec.h +9 -0
  119. data/vendor/libgit2/include/git2/proxy.h +12 -3
  120. data/vendor/libgit2/include/git2/rebase.h +9 -6
  121. data/vendor/libgit2/include/git2/refdb.h +2 -2
  122. data/vendor/libgit2/include/git2/reflog.h +3 -2
  123. data/vendor/libgit2/include/git2/refs.h +9 -6
  124. data/vendor/libgit2/include/git2/refspec.h +14 -4
  125. data/vendor/libgit2/include/git2/remote.h +113 -25
  126. data/vendor/libgit2/include/git2/repository.h +57 -21
  127. data/vendor/libgit2/include/git2/reset.h +16 -3
  128. data/vendor/libgit2/include/git2/revert.h +9 -4
  129. data/vendor/libgit2/include/git2/revparse.h +3 -3
  130. data/vendor/libgit2/include/git2/revwalk.h +3 -2
  131. data/vendor/libgit2/include/git2/signature.h +46 -1
  132. data/vendor/libgit2/include/git2/stash.h +17 -3
  133. data/vendor/libgit2/include/git2/status.h +10 -6
  134. data/vendor/libgit2/include/git2/stdint.h +87 -85
  135. data/vendor/libgit2/include/git2/strarray.h +2 -3
  136. data/vendor/libgit2/include/git2/submodule.h +20 -9
  137. data/vendor/libgit2/include/git2/sys/alloc.h +12 -0
  138. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  139. data/vendor/libgit2/include/git2/sys/commit_graph.h +103 -62
  140. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  141. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  142. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  143. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  144. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  145. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  146. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  147. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  148. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  149. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  150. data/vendor/libgit2/include/git2/sys/midx.h +43 -4
  151. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
  152. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  153. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  154. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  155. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  156. data/vendor/libgit2/include/git2/sys/remote.h +8 -1
  157. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  158. data/vendor/libgit2/include/git2/sys/stream.h +11 -2
  159. data/vendor/libgit2/include/git2/sys/transport.h +25 -4
  160. data/vendor/libgit2/include/git2/tag.h +3 -1
  161. data/vendor/libgit2/include/git2/trace.h +9 -3
  162. data/vendor/libgit2/include/git2/transaction.h +3 -2
  163. data/vendor/libgit2/include/git2/transport.h +11 -3
  164. data/vendor/libgit2/include/git2/tree.h +16 -5
  165. data/vendor/libgit2/include/git2/types.h +19 -3
  166. data/vendor/libgit2/include/git2/version.h +46 -8
  167. data/vendor/libgit2/include/git2/worktree.h +16 -6
  168. data/vendor/libgit2/src/CMakeLists.txt +6 -4
  169. data/vendor/libgit2/src/cli/CMakeLists.txt +3 -4
  170. data/vendor/libgit2/src/cli/cmd.c +1 -1
  171. data/vendor/libgit2/src/cli/cmd.h +4 -0
  172. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  173. data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
  174. data/vendor/libgit2/src/cli/cmd_clone.c +5 -7
  175. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  176. data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
  177. data/vendor/libgit2/src/cli/cmd_help.c +6 -7
  178. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  179. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  180. data/vendor/libgit2/src/cli/common.c +168 -0
  181. data/vendor/libgit2/src/cli/common.h +63 -0
  182. data/vendor/libgit2/src/cli/error.h +1 -1
  183. data/vendor/libgit2/src/cli/main.c +52 -24
  184. data/vendor/libgit2/src/cli/opt.c +31 -5
  185. data/vendor/libgit2/src/cli/opt.h +21 -3
  186. data/vendor/libgit2/src/cli/opt_usage.c +102 -33
  187. data/vendor/libgit2/src/cli/opt_usage.h +6 -1
  188. data/vendor/libgit2/src/cli/progress.c +51 -2
  189. data/vendor/libgit2/src/cli/progress.h +12 -0
  190. data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
  191. data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
  192. data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
  193. data/vendor/libgit2/src/libgit2/CMakeLists.txt +55 -21
  194. data/vendor/libgit2/src/libgit2/apply.c +10 -13
  195. data/vendor/libgit2/src/libgit2/attr.c +30 -13
  196. data/vendor/libgit2/src/libgit2/attr_file.c +17 -5
  197. data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
  198. data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
  199. data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
  200. data/vendor/libgit2/src/libgit2/blame.c +130 -44
  201. data/vendor/libgit2/src/libgit2/blame.h +1 -0
  202. data/vendor/libgit2/src/libgit2/cache.c +22 -17
  203. data/vendor/libgit2/src/libgit2/cache.h +7 -9
  204. data/vendor/libgit2/src/libgit2/checkout.c +34 -24
  205. data/vendor/libgit2/src/libgit2/checkout.h +0 -2
  206. data/vendor/libgit2/src/libgit2/cherrypick.c +1 -2
  207. data/vendor/libgit2/src/libgit2/clone.c +192 -166
  208. data/vendor/libgit2/src/libgit2/clone.h +4 -1
  209. data/vendor/libgit2/src/libgit2/commit.c +93 -1
  210. data/vendor/libgit2/src/libgit2/commit_graph.c +68 -58
  211. data/vendor/libgit2/src/libgit2/commit_graph.h +1 -2
  212. data/vendor/libgit2/src/libgit2/config.c +390 -299
  213. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  214. data/vendor/libgit2/src/libgit2/config.h +9 -4
  215. data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
  216. data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
  217. data/vendor/libgit2/src/libgit2/config_file.c +101 -89
  218. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  219. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  220. data/vendor/libgit2/src/libgit2/config_mem.c +195 -40
  221. data/vendor/libgit2/src/libgit2/config_parse.c +12 -10
  222. data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
  223. data/vendor/libgit2/src/libgit2/delta.c +5 -1
  224. data/vendor/libgit2/src/libgit2/describe.c +24 -24
  225. data/vendor/libgit2/src/libgit2/diff.c +1 -1
  226. data/vendor/libgit2/src/libgit2/diff_driver.c +13 -20
  227. data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
  228. data/vendor/libgit2/src/libgit2/diff_generate.c +3 -3
  229. data/vendor/libgit2/src/libgit2/diff_parse.c +2 -2
  230. data/vendor/libgit2/src/libgit2/diff_print.c +65 -9
  231. data/vendor/libgit2/src/libgit2/diff_stats.c +19 -12
  232. data/vendor/libgit2/src/libgit2/diff_tform.c +36 -8
  233. data/vendor/libgit2/src/libgit2/email.c +1 -0
  234. data/vendor/libgit2/src/libgit2/fetch.c +5 -3
  235. data/vendor/libgit2/src/libgit2/fetchhead.c +1 -1
  236. data/vendor/libgit2/src/libgit2/filter.c +5 -5
  237. data/vendor/libgit2/src/libgit2/git2.rc +3 -3
  238. data/vendor/libgit2/src/libgit2/grafts.c +18 -20
  239. data/vendor/libgit2/src/libgit2/grafts.h +0 -1
  240. data/vendor/libgit2/src/libgit2/graph.c +1 -1
  241. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  242. data/vendor/libgit2/src/libgit2/ignore.c +9 -5
  243. data/vendor/libgit2/src/libgit2/index.c +76 -98
  244. data/vendor/libgit2/src/libgit2/index.h +5 -2
  245. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  246. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  247. data/vendor/libgit2/src/libgit2/indexer.c +36 -40
  248. data/vendor/libgit2/src/libgit2/iterator.c +14 -8
  249. data/vendor/libgit2/src/libgit2/libgit2.c +153 -368
  250. data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
  251. data/vendor/libgit2/src/libgit2/merge.c +43 -38
  252. data/vendor/libgit2/src/libgit2/merge.h +4 -0
  253. data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
  254. data/vendor/libgit2/src/libgit2/merge_file.c +43 -30
  255. data/vendor/libgit2/src/libgit2/message.c +1 -1
  256. data/vendor/libgit2/src/libgit2/midx.c +30 -18
  257. data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
  258. data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
  259. data/vendor/libgit2/src/libgit2/object.c +6 -5
  260. data/vendor/libgit2/src/libgit2/odb.c +7 -10
  261. data/vendor/libgit2/src/libgit2/odb_loose.c +24 -14
  262. data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
  263. data/vendor/libgit2/src/libgit2/odb_pack.c +13 -5
  264. data/vendor/libgit2/src/libgit2/oid.c +36 -10
  265. data/vendor/libgit2/src/libgit2/oid.h +11 -0
  266. data/vendor/libgit2/src/libgit2/pack-objects.c +59 -34
  267. data/vendor/libgit2/src/libgit2/pack-objects.h +12 -4
  268. data/vendor/libgit2/src/libgit2/pack.c +33 -24
  269. data/vendor/libgit2/src/libgit2/pack.h +15 -10
  270. data/vendor/libgit2/src/libgit2/patch_parse.c +2 -2
  271. data/vendor/libgit2/src/libgit2/path.c +1 -1
  272. data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
  273. data/vendor/libgit2/src/libgit2/push.c +79 -28
  274. data/vendor/libgit2/src/libgit2/push.h +1 -0
  275. data/vendor/libgit2/src/libgit2/refdb_fs.c +128 -61
  276. data/vendor/libgit2/src/libgit2/reflog.c +1 -2
  277. data/vendor/libgit2/src/libgit2/reflog.h +2 -0
  278. data/vendor/libgit2/src/libgit2/refs.c +41 -13
  279. data/vendor/libgit2/src/libgit2/refs.h +6 -1
  280. data/vendor/libgit2/src/libgit2/refspec.c +28 -1
  281. data/vendor/libgit2/src/libgit2/refspec.h +8 -0
  282. data/vendor/libgit2/src/libgit2/remote.c +125 -62
  283. data/vendor/libgit2/src/libgit2/remote.h +0 -1
  284. data/vendor/libgit2/src/libgit2/repository.c +235 -54
  285. data/vendor/libgit2/src/libgit2/repository.h +10 -6
  286. data/vendor/libgit2/src/libgit2/revert.c +1 -2
  287. data/vendor/libgit2/src/libgit2/revparse.c +2 -2
  288. data/vendor/libgit2/src/libgit2/revwalk.c +13 -10
  289. data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
  290. data/vendor/libgit2/src/libgit2/settings.c +468 -0
  291. data/vendor/libgit2/src/libgit2/settings.h +6 -2
  292. data/vendor/libgit2/src/libgit2/signature.c +132 -15
  293. data/vendor/libgit2/src/libgit2/signature.h +0 -1
  294. data/vendor/libgit2/src/libgit2/status.c +1 -1
  295. data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -60
  296. data/vendor/libgit2/src/libgit2/streams/openssl.c +32 -7
  297. data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
  298. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
  299. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
  300. data/vendor/libgit2/src/libgit2/streams/socket.c +30 -0
  301. data/vendor/libgit2/src/libgit2/streams/stransport.c +39 -7
  302. data/vendor/libgit2/src/libgit2/submodule.c +118 -68
  303. data/vendor/libgit2/src/libgit2/submodule.h +6 -7
  304. data/vendor/libgit2/src/libgit2/tag.c +4 -2
  305. data/vendor/libgit2/src/libgit2/trailer.c +6 -6
  306. data/vendor/libgit2/src/libgit2/transaction.c +26 -20
  307. data/vendor/libgit2/src/libgit2/transaction.h +4 -1
  308. data/vendor/libgit2/src/libgit2/transport.c +4 -1
  309. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +2 -0
  310. data/vendor/libgit2/src/libgit2/transports/credential.c +2 -2
  311. data/vendor/libgit2/src/libgit2/transports/git.c +1 -1
  312. data/vendor/libgit2/src/libgit2/transports/http.c +1 -2
  313. data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
  314. data/vendor/libgit2/src/libgit2/transports/httpclient.c +124 -81
  315. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  316. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  317. data/vendor/libgit2/src/libgit2/transports/local.c +16 -8
  318. data/vendor/libgit2/src/libgit2/transports/smart.c +25 -13
  319. data/vendor/libgit2/src/libgit2/transports/smart.h +4 -2
  320. data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +5 -5
  321. data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +55 -10
  322. data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
  323. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +386 -0
  324. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  325. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1126 -0
  326. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  327. data/vendor/libgit2/src/libgit2/transports/winhttp.c +35 -7
  328. data/vendor/libgit2/src/libgit2/tree.c +34 -26
  329. data/vendor/libgit2/src/libgit2/tree.h +3 -2
  330. data/vendor/libgit2/src/libgit2/worktree.c +14 -17
  331. data/vendor/libgit2/src/util/CMakeLists.txt +7 -10
  332. data/vendor/libgit2/src/util/alloc.c +4 -1
  333. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  334. data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
  335. data/vendor/libgit2/src/util/allocators/stdalloc.c +0 -10
  336. data/vendor/libgit2/src/util/array.h +18 -17
  337. data/vendor/libgit2/src/util/cc-compat.h +2 -0
  338. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  339. data/vendor/libgit2/src/util/date.c +22 -14
  340. data/vendor/libgit2/src/util/date.h +12 -0
  341. data/vendor/libgit2/src/util/errors.c +401 -0
  342. data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
  343. data/vendor/libgit2/src/util/fs_path.c +81 -10
  344. data/vendor/libgit2/src/util/fs_path.h +29 -0
  345. data/vendor/libgit2/src/util/futils.c +6 -5
  346. data/vendor/libgit2/src/util/futils.h +24 -7
  347. data/vendor/libgit2/src/util/git2_features.h.in +12 -1
  348. data/vendor/libgit2/src/util/git2_util.h +6 -0
  349. data/vendor/libgit2/src/util/hash/builtin.c +14 -4
  350. data/vendor/libgit2/src/util/hash/openssl.c +148 -0
  351. data/vendor/libgit2/src/util/hash/openssl.h +17 -1
  352. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +8 -6
  353. data/vendor/libgit2/src/util/hash/sha.h +4 -1
  354. data/vendor/libgit2/src/util/hashmap.h +425 -0
  355. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  356. data/vendor/libgit2/src/util/integer.h +3 -1
  357. data/vendor/libgit2/src/util/net.c +17 -11
  358. data/vendor/libgit2/src/util/net.h +2 -0
  359. data/vendor/libgit2/src/util/pool.c +1 -1
  360. data/vendor/libgit2/src/util/pool.h +5 -0
  361. data/vendor/libgit2/src/util/pqueue.h +1 -1
  362. data/vendor/libgit2/src/util/process.h +223 -0
  363. data/vendor/libgit2/src/util/rand.c +1 -7
  364. data/vendor/libgit2/src/util/regexp.c +1 -1
  365. data/vendor/libgit2/src/util/runtime.c +2 -2
  366. data/vendor/libgit2/src/util/sortedcache.c +14 -13
  367. data/vendor/libgit2/src/util/sortedcache.h +3 -3
  368. data/vendor/libgit2/src/util/str.c +20 -8
  369. data/vendor/libgit2/src/util/str.h +5 -3
  370. data/vendor/libgit2/src/util/strlist.c +108 -0
  371. data/vendor/libgit2/src/util/strlist.h +36 -0
  372. data/vendor/libgit2/src/util/unix/posix.h +0 -2
  373. data/vendor/libgit2/src/util/unix/process.c +706 -0
  374. data/vendor/libgit2/src/util/unix/realpath.c +23 -5
  375. data/vendor/libgit2/src/util/util.c +18 -5
  376. data/vendor/libgit2/src/util/util.h +5 -38
  377. data/vendor/libgit2/src/util/vector.c +3 -3
  378. data/vendor/libgit2/src/util/vector.h +2 -2
  379. data/vendor/libgit2/src/util/win32/path_w32.c +81 -5
  380. data/vendor/libgit2/src/util/win32/posix_w32.c +29 -6
  381. data/vendor/libgit2/src/util/win32/process.c +522 -0
  382. metadata +60 -32
  383. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  384. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  385. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  386. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  387. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  388. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  389. data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
  390. data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
  391. data/vendor/libgit2/src/libgit2/errors.c +0 -293
  392. data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
  393. data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
  394. data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
  395. data/vendor/libgit2/src/libgit2/offmap.c +0 -101
  396. data/vendor/libgit2/src/libgit2/offmap.h +0 -133
  397. data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
  398. data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
  399. data/vendor/libgit2/src/libgit2/threadstate.c +0 -97
  400. data/vendor/libgit2/src/libgit2/threadstate.h +0 -22
  401. data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
  402. data/vendor/libgit2/src/util/khash.h +0 -615
  403. data/vendor/libgit2/src/util/strmap.c +0 -100
  404. data/vendor/libgit2/src/util/strmap.h +0 -131
  405. /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
@@ -5,35 +5,84 @@
5
5
  * a Linking Exception. For full terms see the included COPYING file.
6
6
  */
7
7
 
8
- #include "cli.h"
8
+ #include "common.h"
9
9
  #include "str.h"
10
10
 
11
- static int print_spec_name(git_str *out, const cli_opt_spec *spec)
11
+ #define is_switch_or_value(spec) \
12
+ ((spec)->type == CLI_OPT_TYPE_SWITCH || \
13
+ (spec)->type == CLI_OPT_TYPE_VALUE)
14
+
15
+ static int print_spec_args(git_str *out, const cli_opt_spec *spec)
12
16
  {
13
- if (spec->type == CLI_OPT_TYPE_VALUE && spec->alias &&
14
- !(spec->usage & CLI_OPT_USAGE_VALUE_OPTIONAL) &&
15
- !(spec->usage & CLI_OPT_USAGE_SHOW_LONG))
16
- return git_str_printf(out, "-%c <%s>", spec->alias, spec->value_name);
17
- if (spec->type == CLI_OPT_TYPE_VALUE && spec->alias &&
18
- !(spec->usage & CLI_OPT_USAGE_SHOW_LONG))
19
- return git_str_printf(out, "-%c [<%s>]", spec->alias, spec->value_name);
20
- if (spec->type == CLI_OPT_TYPE_VALUE &&
21
- !(spec->usage & CLI_OPT_USAGE_VALUE_OPTIONAL))
22
- return git_str_printf(out, "--%s[=<%s>]", spec->name, spec->value_name);
23
- if (spec->type == CLI_OPT_TYPE_VALUE)
24
- return git_str_printf(out, "--%s=<%s>", spec->name, spec->value_name);
17
+ GIT_ASSERT(!is_switch_or_value(spec));
18
+
25
19
  if (spec->type == CLI_OPT_TYPE_ARG)
26
20
  return git_str_printf(out, "<%s>", spec->value_name);
27
21
  if (spec->type == CLI_OPT_TYPE_ARGS)
28
22
  return git_str_printf(out, "<%s>...", spec->value_name);
29
23
  if (spec->type == CLI_OPT_TYPE_LITERAL)
30
24
  return git_str_printf(out, "--");
31
- if (spec->alias && !(spec->usage & CLI_OPT_USAGE_SHOW_LONG))
25
+
26
+ GIT_ASSERT(!"unknown option spec type");
27
+ return -1;
28
+ }
29
+
30
+ GIT_INLINE(int) print_spec_alias(git_str *out, const cli_opt_spec *spec)
31
+ {
32
+ GIT_ASSERT(is_switch_or_value(spec) && spec->alias);
33
+
34
+ if (spec->type == CLI_OPT_TYPE_VALUE &&
35
+ !(spec->usage & CLI_OPT_USAGE_VALUE_OPTIONAL))
36
+ return git_str_printf(out, "-%c <%s>", spec->alias, spec->value_name);
37
+ else if (spec->type == CLI_OPT_TYPE_VALUE)
38
+ return git_str_printf(out, "-%c [<%s>]", spec->alias, spec->value_name);
39
+ else
32
40
  return git_str_printf(out, "-%c", spec->alias);
33
- if (spec->name)
41
+ }
42
+
43
+ GIT_INLINE(int) print_spec_name(git_str *out, const cli_opt_spec *spec)
44
+ {
45
+ GIT_ASSERT(is_switch_or_value(spec) && spec->name);
46
+
47
+ if (spec->type == CLI_OPT_TYPE_VALUE &&
48
+ !(spec->usage & CLI_OPT_USAGE_VALUE_OPTIONAL))
49
+ return git_str_printf(out, "--%s=<%s>", spec->name, spec->value_name);
50
+ else if (spec->type == CLI_OPT_TYPE_VALUE)
51
+ return git_str_printf(out, "--%s[=<%s>]", spec->name, spec->value_name);
52
+ else
34
53
  return git_str_printf(out, "--%s", spec->name);
54
+ }
55
+
56
+ GIT_INLINE(int) print_spec_full(git_str *out, const cli_opt_spec *spec)
57
+ {
58
+ int error = 0;
35
59
 
36
- GIT_ASSERT(0);
60
+ if (is_switch_or_value(spec)) {
61
+ if (spec->alias)
62
+ error |= print_spec_alias(out, spec);
63
+
64
+ if (spec->alias && spec->name)
65
+ error |= git_str_printf(out, ", ");
66
+
67
+ if (spec->name)
68
+ error |= print_spec_name(out, spec);
69
+ } else {
70
+ error |= print_spec_args(out, spec);
71
+ }
72
+
73
+ return error;
74
+ }
75
+
76
+ GIT_INLINE(int) print_spec(git_str *out, const cli_opt_spec *spec)
77
+ {
78
+ if (is_switch_or_value(spec)) {
79
+ if (spec->alias && !(spec->usage & CLI_OPT_USAGE_SHOW_LONG))
80
+ return print_spec_alias(out, spec);
81
+ else
82
+ return print_spec_name(out, spec);
83
+ }
84
+
85
+ return print_spec_args(out, spec);
37
86
  }
38
87
 
39
88
  /*
@@ -46,7 +95,8 @@ int cli_opt_usage_fprint(
46
95
  FILE *file,
47
96
  const char *command,
48
97
  const char *subcommand,
49
- const cli_opt_spec specs[])
98
+ const cli_opt_spec specs[],
99
+ unsigned int print_flags)
50
100
  {
51
101
  git_str usage = GIT_BUF_INIT, opt = GIT_BUF_INIT;
52
102
  const cli_opt_spec *spec;
@@ -55,7 +105,7 @@ int cli_opt_usage_fprint(
55
105
  int error;
56
106
 
57
107
  /* TODO: query actual console width. */
58
- int console_width = 80;
108
+ int console_width = 78;
59
109
 
60
110
  if ((error = git_str_printf(&usage, "usage: %s", command)) < 0)
61
111
  goto done;
@@ -73,7 +123,8 @@ int cli_opt_usage_fprint(
73
123
 
74
124
  next_choice = !!((spec + 1)->usage & CLI_OPT_USAGE_CHOICE);
75
125
 
76
- if (spec->usage & CLI_OPT_USAGE_HIDDEN)
126
+ if ((spec->usage & CLI_OPT_USAGE_HIDDEN) &&
127
+ !(print_flags & CLI_OPT_USAGE_SHOW_HIDDEN))
77
128
  continue;
78
129
 
79
130
  if (choice)
@@ -86,7 +137,7 @@ int cli_opt_usage_fprint(
86
137
  if (!optional && !choice && next_choice)
87
138
  git_str_putc(&opt, '(');
88
139
 
89
- if ((error = print_spec_name(&opt, spec)) < 0)
140
+ if ((error = print_spec(&opt, spec)) < 0)
90
141
  goto done;
91
142
 
92
143
  if (!optional && choice && !next_choice)
@@ -111,11 +162,11 @@ int cli_opt_usage_fprint(
111
162
  git_str_putc(&usage, ' ');
112
163
 
113
164
  linelen = prefixlen;
114
- } else {
115
- git_str_putc(&usage, ' ');
116
- linelen += git_str_len(&opt) + 1;
117
165
  }
118
166
 
167
+ git_str_putc(&usage, ' ');
168
+ linelen += git_str_len(&opt) + 1;
169
+
119
170
  git_str_puts(&usage, git_str_cstr(&opt));
120
171
 
121
172
  if (git_str_oom(&usage)) {
@@ -140,7 +191,7 @@ int cli_opt_usage_error(
140
191
  const cli_opt *invalid_opt)
141
192
  {
142
193
  cli_opt_status_fprint(stderr, PROGRAM_NAME, invalid_opt);
143
- cli_opt_usage_fprint(stderr, PROGRAM_NAME, subcommand, specs);
194
+ cli_opt_usage_fprint(stderr, PROGRAM_NAME, subcommand, specs, 0);
144
195
  return CLI_EXIT_USAGE;
145
196
  }
146
197
 
@@ -150,35 +201,53 @@ int cli_opt_help_fprint(
150
201
  {
151
202
  git_str help = GIT_BUF_INIT;
152
203
  const cli_opt_spec *spec;
204
+ bool required = true;
153
205
  int error = 0;
154
206
 
155
207
  /* Display required arguments first */
156
208
  for (spec = specs; spec->type; ++spec) {
157
- if (! (spec->usage & CLI_OPT_USAGE_REQUIRED) ||
158
- (spec->usage & CLI_OPT_USAGE_HIDDEN))
209
+ if ((spec->usage & CLI_OPT_USAGE_HIDDEN) ||
210
+ (spec->type == CLI_OPT_TYPE_LITERAL))
211
+ continue;
212
+
213
+ required = ((spec->usage & CLI_OPT_USAGE_REQUIRED) ||
214
+ ((spec->usage & CLI_OPT_USAGE_CHOICE) && required));
215
+
216
+ if (!required)
159
217
  continue;
160
218
 
161
219
  git_str_printf(&help, " ");
162
220
 
163
- if ((error = print_spec_name(&help, spec)) < 0)
221
+ if ((error = print_spec_full(&help, spec)) < 0)
164
222
  goto done;
165
223
 
166
- git_str_printf(&help, ": %s\n", spec->help);
224
+ git_str_printf(&help, "\n");
225
+
226
+ if (spec->help)
227
+ git_str_printf(&help, " %s\n", spec->help);
167
228
  }
168
229
 
169
230
  /* Display the remaining arguments */
170
231
  for (spec = specs; spec->type; ++spec) {
171
- if ((spec->usage & CLI_OPT_USAGE_REQUIRED) ||
172
- (spec->usage & CLI_OPT_USAGE_HIDDEN))
232
+ if ((spec->usage & CLI_OPT_USAGE_HIDDEN) ||
233
+ (spec->type == CLI_OPT_TYPE_LITERAL))
234
+ continue;
235
+
236
+ required = ((spec->usage & CLI_OPT_USAGE_REQUIRED) ||
237
+ ((spec->usage & CLI_OPT_USAGE_CHOICE) && required));
238
+
239
+ if (required)
173
240
  continue;
174
241
 
175
242
  git_str_printf(&help, " ");
176
243
 
177
- if ((error = print_spec_name(&help, spec)) < 0)
244
+ if ((error = print_spec_full(&help, spec)) < 0)
178
245
  goto done;
179
246
 
180
- git_str_printf(&help, ": %s\n", spec->help);
247
+ git_str_printf(&help, "\n");
181
248
 
249
+ if (spec->help)
250
+ git_str_printf(&help, " %s\n", spec->help);
182
251
  }
183
252
 
184
253
  if (git_str_oom(&help) ||
@@ -8,6 +8,10 @@
8
8
  #ifndef CLI_opt_usage_h__
9
9
  #define CLI_opt_usage_h__
10
10
 
11
+ typedef enum {
12
+ CLI_OPT_USAGE_SHOW_HIDDEN = (1 << 0),
13
+ } cli_opt_usage_flags;
14
+
11
15
  /**
12
16
  * Prints usage information to the given file handle.
13
17
  *
@@ -21,7 +25,8 @@ int cli_opt_usage_fprint(
21
25
  FILE *file,
22
26
  const char *command,
23
27
  const char *subcommand,
24
- const cli_opt_spec specs[]);
28
+ const cli_opt_spec specs[],
29
+ unsigned int print_flags);
25
30
 
26
31
  int cli_opt_usage_error(
27
32
  const char *subcommand,
@@ -242,7 +242,21 @@ static int fetch_receiving(
242
242
  done ? ", done." : "");
243
243
  }
244
244
 
245
- static int fetch_resolving(
245
+ static int indexer_indexing(
246
+ cli_progress *progress,
247
+ const git_indexer_progress *stats)
248
+ {
249
+ bool done = (stats->received_objects == stats->total_objects);
250
+
251
+ return progress_printf(progress, false,
252
+ "Indexing objects: %3d%% (%d/%d)%s\r",
253
+ percent(stats->received_objects, stats->total_objects),
254
+ stats->received_objects,
255
+ stats->total_objects,
256
+ done ? ", done." : "");
257
+ }
258
+
259
+ static int indexer_resolving(
246
260
  cli_progress *progress,
247
261
  const git_indexer_progress *stats)
248
262
  {
@@ -283,7 +297,42 @@ int cli_progress_fetch_transfer(const git_indexer_progress *stats, void *payload
283
297
  /* fall through */
284
298
 
285
299
  case CLI_PROGRESS_RESOLVING:
286
- error = fetch_resolving(progress, stats);
300
+ error = indexer_resolving(progress, stats);
301
+ break;
302
+
303
+ default:
304
+ /* should not be reached */
305
+ GIT_ASSERT(!"unexpected progress state");
306
+ }
307
+
308
+ return error;
309
+ }
310
+
311
+ int cli_progress_indexer(
312
+ const git_indexer_progress *stats,
313
+ void *payload)
314
+ {
315
+ cli_progress *progress = (cli_progress *)payload;
316
+ int error = 0;
317
+
318
+ switch (progress->action) {
319
+ case CLI_PROGRESS_NONE:
320
+ progress->action = CLI_PROGRESS_INDEXING;
321
+ /* fall through */
322
+
323
+ case CLI_PROGRESS_INDEXING:
324
+ if ((error = indexer_indexing(progress, stats)) < 0)
325
+ break;
326
+
327
+ if (stats->indexed_deltas == stats->total_deltas)
328
+ break;
329
+
330
+ progress_complete(progress);
331
+ progress->action = CLI_PROGRESS_RESOLVING;
332
+ /* fall through */
333
+
334
+ case CLI_PROGRESS_RESOLVING:
335
+ error = indexer_resolving(progress, stats);
287
336
  break;
288
337
 
289
338
  default:
@@ -22,6 +22,7 @@
22
22
  typedef enum {
23
23
  CLI_PROGRESS_NONE,
24
24
  CLI_PROGRESS_RECEIVING,
25
+ CLI_PROGRESS_INDEXING,
25
26
  CLI_PROGRESS_RESOLVING,
26
27
  CLI_PROGRESS_CHECKING_OUT
27
28
  } cli_progress_t;
@@ -74,6 +75,17 @@ extern int cli_progress_fetch_transfer(
74
75
  const git_indexer_progress *stats,
75
76
  void *payload);
76
77
 
78
+ /**
79
+ * Prints indexer progress to the console. Suitable for a
80
+ * `progress_cb` callback for `git_indexer_options`.
81
+ *
82
+ * @param stats The indexer stats
83
+ * @param payload A pointer to the cli_progress
84
+ */
85
+ extern int cli_progress_indexer(
86
+ const git_indexer_progress *stats,
87
+ void *payload);
88
+
77
89
  /**
78
90
  * Prints checkout progress to the console. Suitable for a
79
91
  * `progress_cb` callback for `git_checkout_options`.
@@ -8,7 +8,8 @@
8
8
  #include <stdint.h>
9
9
  #include <signal.h>
10
10
  #include "git2_util.h"
11
- #include "cli.h"
11
+ #include "common.h"
12
+ #include "sighandler.h"
12
13
 
13
14
  static void (*interrupt_handler)(void) = NULL;
14
15
 
@@ -1,3 +1,3 @@
1
1
  #include <git2.h>
2
2
 
3
- #include "cli.h"
3
+ #include "common.h"
@@ -8,7 +8,7 @@
8
8
  #include "git2_util.h"
9
9
  #include <windows.h>
10
10
 
11
- #include "cli.h"
11
+ #include "sighandler.h"
12
12
 
13
13
  static void (*interrupt_handler)(void) = NULL;
14
14
 
@@ -2,17 +2,15 @@
2
2
  # git library functionality.
3
3
 
4
4
  add_library(libgit2 OBJECT)
5
- set_target_properties(libgit2 PROPERTIES C_STANDARD 90)
6
- set_target_properties(libgit2 PROPERTIES C_EXTENSIONS OFF)
7
5
 
8
6
  include(PkgBuildConfig)
7
+ include(CMakePackageConfigHelpers)
9
8
 
10
9
  set(LIBGIT2_INCLUDES
11
- "${PROJECT_BINARY_DIR}/src/util"
12
- "${PROJECT_BINARY_DIR}/include"
13
10
  "${PROJECT_SOURCE_DIR}/src/libgit2"
14
11
  "${PROJECT_SOURCE_DIR}/src/util"
15
- "${PROJECT_SOURCE_DIR}/include")
12
+ "${PROJECT_SOURCE_DIR}/include"
13
+ "${PROJECT_BINARY_DIR}/gen_headers")
16
14
 
17
15
  # Collect sourcefiles
18
16
  file(GLOB SRC_H
@@ -42,7 +40,11 @@ ide_split_sources(libgit2)
42
40
  list(APPEND LIBGIT2_OBJECTS $<TARGET_OBJECTS:util> $<TARGET_OBJECTS:libgit2> ${LIBGIT2_DEPENDENCY_OBJECTS})
43
41
  list(APPEND LIBGIT2_INCLUDES ${LIBGIT2_DEPENDENCY_INCLUDES})
44
42
 
45
- target_include_directories(libgit2 PRIVATE ${LIBGIT2_INCLUDES} ${LIBGIT2_DEPENDENCY_INCLUDES} PUBLIC ${PROJECT_SOURCE_DIR}/include)
43
+ target_include_directories(libgit2
44
+ PRIVATE ${LIBGIT2_INCLUDES} ${LIBGIT2_DEPENDENCY_INCLUDES}
45
+ PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
46
+ $<INSTALL_INTERFACE:include>)
47
+
46
48
  target_include_directories(libgit2 SYSTEM PRIVATE ${LIBGIT2_SYSTEM_INCLUDES})
47
49
 
48
50
  set(LIBGIT2_INCLUDES ${LIBGIT2_INCLUDES} PARENT_SCOPE)
@@ -56,21 +58,23 @@ set(LIBGIT2_SYSTEM_LIBS ${LIBGIT2_SYSTEM_LIBS} PARENT_SCOPE)
56
58
  # Compile and link libgit2
57
59
  #
58
60
 
61
+ if (NOT BUILD_SHARED_LIBS AND XCODE_VERSION)
62
+ # This is required for Xcode to actually create the static libgit2 library
63
+ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/dummy.c "")
64
+ list(APPEND LIBGIT2_OBJECTS ${CMAKE_CURRENT_BINARY_DIR}/dummy.c)
65
+ endif()
66
+
59
67
  add_library(libgit2package ${SRC_RC} ${LIBGIT2_OBJECTS})
60
68
  target_link_libraries(libgit2package ${LIBGIT2_SYSTEM_LIBS})
61
69
  target_include_directories(libgit2package SYSTEM PRIVATE ${LIBGIT2_INCLUDES})
70
+ target_include_directories(libgit2package INTERFACE $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
62
71
 
63
72
  set_target_properties(libgit2package PROPERTIES C_STANDARD 90)
73
+ set_target_properties(libgit2package PROPERTIES C_EXTENSIONS OFF)
64
74
  set_target_properties(libgit2package PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
65
75
  set_target_properties(libgit2package PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
66
76
  set_target_properties(libgit2package PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
67
77
 
68
- # Workaround for Cmake bug #0011240 (see http://public.kitware.com/Bug/view.php?id=11240)
69
- # Win64+MSVC+static libs = linker error
70
- if(MSVC AND GIT_ARCH_64 AND NOT BUILD_SHARED_LIBS)
71
- set_target_properties(libgit2package PROPERTIES STATIC_LIBRARY_FLAGS "/MACHINE:x64")
72
- endif()
73
-
74
78
  ide_split_sources(libgit2package)
75
79
 
76
80
  if(SONAME)
@@ -99,24 +103,54 @@ endif()
99
103
 
100
104
  # support experimental features and functionality
101
105
 
102
- configure_file(experimental.h.in "${PROJECT_BINARY_DIR}/include/git2/experimental.h")
106
+ configure_file(experimental.h.in "${PROJECT_BINARY_DIR}/gen_headers/experimental.h")
103
107
 
104
- # translate filenames in the git2.h so that they match the install directory
108
+ # translate filenames in the headers so that they match the install directory
105
109
  # (allows for side-by-side installs of libgit2 and libgit2-experimental.)
106
110
 
107
- FILE(READ "${PROJECT_SOURCE_DIR}/include/git2.h" LIBGIT2_INCLUDE)
108
- STRING(REGEX REPLACE "#include \"git2\/" "#include \"${LIBGIT2_FILENAME}/" LIBGIT2_INCLUDE "${LIBGIT2_INCLUDE}")
109
- FILE(WRITE "${PROJECT_BINARY_DIR}/include/${LIBGIT2_FILENAME}.h" ${LIBGIT2_INCLUDE})
111
+ foreach(HEADER_SOURCE ${SRC_H})
112
+ file(RELATIVE_PATH HEADER_RELATIVE ${PROJECT_SOURCE_DIR} ${HEADER_SOURCE})
113
+ string(REGEX REPLACE "^include\/git2" "include/${LIBGIT2_FILENAME}" HEADER_RELATIVE ${HEADER_RELATIVE})
114
+
115
+ file(READ "${HEADER_SOURCE}" HEADER_CONTENTS)
116
+ string(REGEX REPLACE "#include \"git2\/" "#include \"${LIBGIT2_FILENAME}/" HEADER_CONTENTS "${HEADER_CONTENTS}")
117
+
118
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${HEADER_RELATIVE}.tmp" "${HEADER_CONTENTS}")
119
+ configure_file("${CMAKE_CURRENT_BINARY_DIR}/${HEADER_RELATIVE}.tmp" "${PROJECT_BINARY_DIR}/${HEADER_RELATIVE}" COPYONLY)
120
+ endforeach()
121
+
122
+ configure_file("${PROJECT_BINARY_DIR}/gen_headers/experimental.h" "${PROJECT_BINARY_DIR}/include/${LIBGIT2_FILENAME}/experimental.h" COPYONLY)
123
+
124
+ # cmake package targets
125
+
126
+ set(LIBGIT2_TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
127
+
128
+ write_basic_package_version_file(
129
+ "${PROJECT_BINARY_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake"
130
+ VERSION ${PROJECT_VERSION}
131
+ COMPATIBILITY SameMajorVersion)
132
+
133
+ configure_file(config.cmake.in
134
+ "${PROJECT_BINARY_DIR}/cmake/${PROJECT_NAME}Config.cmake"
135
+ @ONLY)
136
+
137
+ install(FILES
138
+ "${PROJECT_BINARY_DIR}/cmake/${PROJECT_NAME}Config.cmake"
139
+ "${PROJECT_BINARY_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake"
140
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
141
+ install(
142
+ EXPORT ${LIBGIT2_TARGETS_EXPORT_NAME}
143
+ NAMESPACE "${PROJECT_NAME}::"
144
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
110
145
 
111
146
  # Install
112
147
 
113
148
  install(TARGETS libgit2package
149
+ EXPORT ${LIBGIT2_TARGETS_EXPORT_NAME}
114
150
  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
115
151
  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
116
152
  ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
117
- install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/git2/
118
- DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${LIBGIT2_FILENAME}")
119
- install(FILES ${PROJECT_BINARY_DIR}/include/git2/experimental.h
120
- DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${LIBGIT2_FILENAME}")
121
153
  install(FILES "${PROJECT_BINARY_DIR}/include/${LIBGIT2_FILENAME}.h"
122
154
  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
155
+ install(DIRECTORY "${PROJECT_BINARY_DIR}/include/${LIBGIT2_FILENAME}"
156
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
@@ -20,6 +20,7 @@
20
20
  #include "reader.h"
21
21
  #include "index.h"
22
22
  #include "repository.h"
23
+ #include "hashmap_str.h"
23
24
  #include "apply.h"
24
25
 
25
26
  typedef struct {
@@ -96,7 +97,7 @@ static void patch_image_free(patch_image *image)
96
97
  return;
97
98
 
98
99
  git_pool_clear(&image->pool);
99
- git_vector_free(&image->lines);
100
+ git_vector_dispose(&image->lines);
100
101
  }
101
102
 
102
103
  static bool match_hunk(
@@ -452,7 +453,7 @@ static int apply_one(
452
453
  git_reader *postimage_reader,
453
454
  git_index *postimage,
454
455
  git_diff *diff,
455
- git_strmap *removed_paths,
456
+ git_hashset_str *removed_paths,
456
457
  size_t i,
457
458
  const git_apply_options *opts)
458
459
  {
@@ -489,7 +490,7 @@ static int apply_one(
489
490
  */
490
491
  if (delta->status != GIT_DELTA_RENAMED &&
491
492
  delta->status != GIT_DELTA_ADDED) {
492
- if (git_strmap_exists(removed_paths, delta->old_file.path)) {
493
+ if (git_hashset_str_contains(removed_paths, delta->old_file.path)) {
493
494
  error = apply_err("path '%s' has been renamed or deleted", delta->old_file.path);
494
495
  goto done;
495
496
  }
@@ -573,11 +574,11 @@ static int apply_one(
573
574
 
574
575
  if (delta->status == GIT_DELTA_RENAMED ||
575
576
  delta->status == GIT_DELTA_DELETED)
576
- error = git_strmap_set(removed_paths, delta->old_file.path, (char *) delta->old_file.path);
577
+ error = git_hashset_str_add(removed_paths, delta->old_file.path);
577
578
 
578
579
  if (delta->status == GIT_DELTA_RENAMED ||
579
580
  delta->status == GIT_DELTA_ADDED)
580
- git_strmap_delete(removed_paths, delta->new_file.path);
581
+ git_hashset_str_remove(removed_paths, delta->new_file.path);
581
582
 
582
583
  done:
583
584
  git_str_dispose(&pre_contents);
@@ -597,20 +598,17 @@ static int apply_deltas(
597
598
  git_diff *diff,
598
599
  const git_apply_options *opts)
599
600
  {
600
- git_strmap *removed_paths;
601
+ git_hashset_str removed_paths = GIT_HASHSET_INIT;
601
602
  size_t i;
602
603
  int error = 0;
603
604
 
604
- if (git_strmap_new(&removed_paths) < 0)
605
- return -1;
606
-
607
605
  for (i = 0; i < git_diff_num_deltas(diff); i++) {
608
- if ((error = apply_one(repo, pre_reader, preimage, post_reader, postimage, diff, removed_paths, i, opts)) < 0)
606
+ if ((error = apply_one(repo, pre_reader, preimage, post_reader, postimage, diff, &removed_paths, i, opts)) < 0)
609
607
  goto done;
610
608
  }
611
609
 
612
610
  done:
613
- git_strmap_free(removed_paths);
611
+ git_hashset_str_dispose(&removed_paths);
614
612
  return error;
615
613
  }
616
614
 
@@ -715,7 +713,6 @@ static int git_apply__to_workdir(
715
713
  goto done;
716
714
  }
717
715
 
718
- checkout_opts.checkout_strategy |= GIT_CHECKOUT_SAFE;
719
716
  checkout_opts.checkout_strategy |= GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH;
720
717
  checkout_opts.checkout_strategy |= GIT_CHECKOUT_DONT_WRITE_INDEX;
721
718
 
@@ -730,7 +727,7 @@ static int git_apply__to_workdir(
730
727
  error = git_checkout_index(repo, postimage, &checkout_opts);
731
728
 
732
729
  done:
733
- git_vector_free(&paths);
730
+ git_vector_dispose(&paths);
734
731
  return error;
735
732
  }
736
733