rugged 0.26.7 → 0.27.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (341) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/ext/rugged/rugged_blame.c +6 -3
  4. data/ext/rugged/rugged_branch_collection.c +3 -6
  5. data/ext/rugged/rugged_commit.c +56 -0
  6. data/ext/rugged/rugged_config.c +44 -9
  7. data/ext/rugged/rugged_diff.c +3 -14
  8. data/ext/rugged/rugged_diff_hunk.c +1 -3
  9. data/ext/rugged/rugged_index.c +1 -5
  10. data/ext/rugged/rugged_note.c +1 -4
  11. data/ext/rugged/rugged_patch.c +1 -4
  12. data/ext/rugged/rugged_reference_collection.c +1 -7
  13. data/ext/rugged/rugged_remote.c +5 -8
  14. data/ext/rugged/rugged_remote_collection.c +1 -6
  15. data/ext/rugged/rugged_repo.c +16 -48
  16. data/ext/rugged/rugged_revwalk.c +7 -16
  17. data/ext/rugged/rugged_settings.c +28 -0
  18. data/ext/rugged/rugged_submodule_collection.c +3 -4
  19. data/ext/rugged/rugged_tag_collection.c +1 -5
  20. data/ext/rugged/rugged_tree.c +2 -3
  21. data/lib/rugged/repository.rb +43 -0
  22. data/lib/rugged/version.rb +1 -1
  23. data/vendor/libgit2/AUTHORS +1 -0
  24. data/vendor/libgit2/CMakeLists.txt +61 -510
  25. data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +14 -0
  26. data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +25 -8
  27. data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +27 -8
  28. data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +20 -0
  29. data/vendor/libgit2/cmake/Modules/IdeSplitSources.cmake +22 -0
  30. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +3 -0
  31. data/vendor/libgit2/deps/regex/CMakeLists.txt +2 -0
  32. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +26 -0
  33. data/vendor/libgit2/deps/zlib/CMakeLists.txt +4 -0
  34. data/vendor/libgit2/include/git2/config.h +29 -2
  35. data/vendor/libgit2/include/git2/describe.h +1 -1
  36. data/vendor/libgit2/include/git2/diff.h +59 -8
  37. data/vendor/libgit2/include/git2/graph.h +3 -0
  38. data/vendor/libgit2/include/git2/merge.h +6 -0
  39. data/vendor/libgit2/include/git2/message.h +43 -3
  40. data/vendor/libgit2/include/git2/notes.h +89 -0
  41. data/vendor/libgit2/include/git2/odb.h +8 -1
  42. data/vendor/libgit2/include/git2/patch.h +2 -2
  43. data/vendor/libgit2/include/git2/pathspec.h +35 -18
  44. data/vendor/libgit2/include/git2/refs.h +3 -0
  45. data/vendor/libgit2/include/git2/remote.h +34 -4
  46. data/vendor/libgit2/include/git2/repository.h +6 -6
  47. data/vendor/libgit2/include/git2/reset.h +4 -4
  48. data/vendor/libgit2/include/git2/status.h +4 -0
  49. data/vendor/libgit2/include/git2/sys/config.h +4 -1
  50. data/vendor/libgit2/include/git2/sys/odb_backend.h +2 -1
  51. data/vendor/libgit2/include/git2/tree.h +4 -3
  52. data/vendor/libgit2/include/git2/types.h +1 -0
  53. data/vendor/libgit2/include/git2/version.h +4 -4
  54. data/vendor/libgit2/include/git2/worktree.h +1 -1
  55. data/vendor/libgit2/src/CMakeLists.txt +463 -0
  56. data/vendor/libgit2/src/annotated_commit.c +1 -1
  57. data/vendor/libgit2/src/annotated_commit.h +2 -0
  58. data/vendor/libgit2/src/apply.c +2 -1
  59. data/vendor/libgit2/src/apply.h +2 -0
  60. data/vendor/libgit2/src/attr.c +24 -4
  61. data/vendor/libgit2/src/attr.h +2 -0
  62. data/vendor/libgit2/src/attr_file.c +9 -2
  63. data/vendor/libgit2/src/attr_file.h +2 -0
  64. data/vendor/libgit2/src/attrcache.c +9 -1
  65. data/vendor/libgit2/src/attrcache.h +2 -0
  66. data/vendor/libgit2/src/blame.c +1 -0
  67. data/vendor/libgit2/src/blame.h +2 -1
  68. data/vendor/libgit2/src/blame_git.c +1 -0
  69. data/vendor/libgit2/src/blame_git.h +2 -0
  70. data/vendor/libgit2/src/blob.c +2 -2
  71. data/vendor/libgit2/src/blob.h +2 -0
  72. data/vendor/libgit2/src/branch.c +8 -1
  73. data/vendor/libgit2/src/branch.h +2 -0
  74. data/vendor/libgit2/src/buf_text.c +7 -7
  75. data/vendor/libgit2/src/buf_text.h +3 -3
  76. data/vendor/libgit2/src/buffer.c +31 -1
  77. data/vendor/libgit2/src/buffer.h +3 -0
  78. data/vendor/libgit2/src/cache.c +2 -2
  79. data/vendor/libgit2/src/cache.h +2 -0
  80. data/vendor/libgit2/src/cc-compat.h +3 -3
  81. data/vendor/libgit2/src/checkout.c +30 -19
  82. data/vendor/libgit2/src/checkout.h +2 -0
  83. data/vendor/libgit2/src/cherrypick.c +1 -0
  84. data/vendor/libgit2/src/clone.c +2 -1
  85. data/vendor/libgit2/src/clone.h +4 -0
  86. data/vendor/libgit2/src/commit.c +2 -1
  87. data/vendor/libgit2/src/commit.h +2 -0
  88. data/vendor/libgit2/src/commit_list.c +1 -1
  89. data/vendor/libgit2/src/commit_list.h +2 -0
  90. data/vendor/libgit2/src/common.h +11 -5
  91. data/vendor/libgit2/src/config.c +12 -10
  92. data/vendor/libgit2/src/config.h +2 -0
  93. data/vendor/libgit2/src/config_cache.c +1 -0
  94. data/vendor/libgit2/src/config_file.c +287 -786
  95. data/vendor/libgit2/src/config_file.h +4 -3
  96. data/vendor/libgit2/src/config_parse.c +525 -0
  97. data/vendor/libgit2/src/config_parse.h +64 -0
  98. data/vendor/libgit2/src/crlf.c +2 -1
  99. data/vendor/libgit2/src/delta.c +28 -30
  100. data/vendor/libgit2/src/delta.h +1 -0
  101. data/vendor/libgit2/src/describe.c +3 -1
  102. data/vendor/libgit2/src/diff.c +148 -2
  103. data/vendor/libgit2/src/diff.h +3 -1
  104. data/vendor/libgit2/src/diff_driver.c +12 -9
  105. data/vendor/libgit2/src/diff_driver.h +4 -1
  106. data/vendor/libgit2/src/diff_file.c +7 -4
  107. data/vendor/libgit2/src/diff_file.h +1 -0
  108. data/vendor/libgit2/src/diff_generate.c +6 -3
  109. data/vendor/libgit2/src/diff_generate.h +6 -1
  110. data/vendor/libgit2/src/diff_parse.c +5 -4
  111. data/vendor/libgit2/src/diff_parse.h +2 -0
  112. data/vendor/libgit2/src/diff_print.c +2 -0
  113. data/vendor/libgit2/src/diff_stats.c +2 -0
  114. data/vendor/libgit2/src/diff_tform.c +2 -1
  115. data/vendor/libgit2/src/diff_tform.h +4 -1
  116. data/vendor/libgit2/src/diff_xdiff.c +5 -2
  117. data/vendor/libgit2/src/diff_xdiff.h +2 -0
  118. data/vendor/libgit2/src/errors.c +2 -0
  119. data/vendor/libgit2/src/features.h.in +36 -0
  120. data/vendor/libgit2/src/fetch.c +2 -2
  121. data/vendor/libgit2/src/fetch.h +4 -0
  122. data/vendor/libgit2/src/fetchhead.c +3 -3
  123. data/vendor/libgit2/src/fetchhead.h +3 -0
  124. data/vendor/libgit2/src/filebuf.c +2 -1
  125. data/vendor/libgit2/src/filebuf.h +2 -0
  126. data/vendor/libgit2/src/fileops.c +12 -1
  127. data/vendor/libgit2/src/fileops.h +7 -1
  128. data/vendor/libgit2/src/filter.c +2 -1
  129. data/vendor/libgit2/src/filter.h +1 -0
  130. data/vendor/libgit2/src/fnmatch.c +2 -2
  131. data/vendor/libgit2/src/fnmatch.h +3 -4
  132. data/vendor/libgit2/src/global.c +4 -3
  133. data/vendor/libgit2/src/global.h +1 -5
  134. data/vendor/libgit2/src/graph.c +2 -0
  135. data/vendor/libgit2/src/hash.c +0 -1
  136. data/vendor/libgit2/src/hash.h +3 -1
  137. data/vendor/libgit2/src/hash/hash_collisiondetect.h +3 -3
  138. data/vendor/libgit2/src/hash/hash_common_crypto.h +18 -5
  139. data/vendor/libgit2/src/hash/hash_generic.c +2 -2
  140. data/vendor/libgit2/src/hash/hash_generic.h +5 -3
  141. data/vendor/libgit2/src/hash/hash_openssl.h +3 -3
  142. data/vendor/libgit2/src/hash/hash_win32.c +57 -14
  143. data/vendor/libgit2/src/hash/hash_win32.h +4 -3
  144. data/vendor/libgit2/src/hashsig.c +3 -0
  145. data/vendor/libgit2/src/ident.c +2 -0
  146. data/vendor/libgit2/src/idxmap.h +2 -1
  147. data/vendor/libgit2/src/ignore.c +14 -2
  148. data/vendor/libgit2/src/ignore.h +2 -0
  149. data/vendor/libgit2/src/index.c +20 -40
  150. data/vendor/libgit2/src/index.h +2 -0
  151. data/vendor/libgit2/src/indexer.c +13 -5
  152. data/vendor/libgit2/src/indexer.h +5 -1
  153. data/vendor/libgit2/src/integer.h +1 -1
  154. data/vendor/libgit2/src/iterator.c +44 -3
  155. data/vendor/libgit2/src/iterator.h +3 -0
  156. data/vendor/libgit2/src/map.h +1 -1
  157. data/vendor/libgit2/src/merge.c +155 -33
  158. data/vendor/libgit2/src/merge.h +2 -0
  159. data/vendor/libgit2/src/merge_driver.c +2 -2
  160. data/vendor/libgit2/src/merge_driver.h +2 -0
  161. data/vendor/libgit2/src/merge_file.c +3 -0
  162. data/vendor/libgit2/src/message.h +3 -1
  163. data/vendor/libgit2/src/mwindow.c +1 -1
  164. data/vendor/libgit2/src/mwindow.h +2 -0
  165. data/vendor/libgit2/src/netops.c +75 -62
  166. data/vendor/libgit2/src/netops.h +2 -1
  167. data/vendor/libgit2/src/notes.c +164 -48
  168. data/vendor/libgit2/src/notes.h +1 -1
  169. data/vendor/libgit2/src/object.c +14 -3
  170. data/vendor/libgit2/src/object.h +4 -0
  171. data/vendor/libgit2/src/object_api.c +3 -2
  172. data/vendor/libgit2/src/odb.c +104 -38
  173. data/vendor/libgit2/src/odb.h +3 -1
  174. data/vendor/libgit2/src/odb_loose.c +414 -267
  175. data/vendor/libgit2/src/odb_mempack.c +1 -0
  176. data/vendor/libgit2/src/odb_pack.c +2 -1
  177. data/vendor/libgit2/src/offmap.h +1 -0
  178. data/vendor/libgit2/src/oid.c +2 -1
  179. data/vendor/libgit2/src/oid.h +3 -8
  180. data/vendor/libgit2/src/oidarray.c +2 -1
  181. data/vendor/libgit2/src/oidarray.h +1 -0
  182. data/vendor/libgit2/src/oidmap.h +1 -0
  183. data/vendor/libgit2/src/pack-objects.c +5 -1
  184. data/vendor/libgit2/src/pack-objects.h +1 -1
  185. data/vendor/libgit2/src/pack.c +2 -6
  186. data/vendor/libgit2/src/pack.h +2 -1
  187. data/vendor/libgit2/src/parse.c +121 -0
  188. data/vendor/libgit2/src/parse.h +61 -0
  189. data/vendor/libgit2/src/patch.c +9 -2
  190. data/vendor/libgit2/src/patch.h +2 -0
  191. data/vendor/libgit2/src/patch_generate.c +6 -5
  192. data/vendor/libgit2/src/patch_generate.h +1 -0
  193. data/vendor/libgit2/src/patch_parse.c +265 -276
  194. data/vendor/libgit2/src/patch_parse.h +6 -11
  195. data/vendor/libgit2/src/path.c +24 -181
  196. data/vendor/libgit2/src/path.h +14 -73
  197. data/vendor/libgit2/src/pathspec.c +2 -1
  198. data/vendor/libgit2/src/pathspec.h +2 -1
  199. data/vendor/libgit2/src/pool.c +8 -0
  200. data/vendor/libgit2/src/pool.h +1 -0
  201. data/vendor/libgit2/src/posix.c +2 -1
  202. data/vendor/libgit2/src/posix.h +1 -0
  203. data/vendor/libgit2/src/pqueue.c +1 -0
  204. data/vendor/libgit2/src/pqueue.h +2 -0
  205. data/vendor/libgit2/src/proxy.c +2 -1
  206. data/vendor/libgit2/src/proxy.h +3 -1
  207. data/vendor/libgit2/src/push.c +4 -171
  208. data/vendor/libgit2/src/push.h +2 -0
  209. data/vendor/libgit2/src/rebase.c +1 -0
  210. data/vendor/libgit2/src/refdb.c +2 -3
  211. data/vendor/libgit2/src/refdb.h +2 -0
  212. data/vendor/libgit2/src/refdb_fs.c +5 -3
  213. data/vendor/libgit2/src/refdb_fs.h +4 -0
  214. data/vendor/libgit2/src/reflog.c +1 -0
  215. data/vendor/libgit2/src/reflog.h +2 -1
  216. data/vendor/libgit2/src/refs.c +1 -0
  217. data/vendor/libgit2/src/refs.h +2 -1
  218. data/vendor/libgit2/src/refspec.c +2 -2
  219. data/vendor/libgit2/src/refspec.h +2 -0
  220. data/vendor/libgit2/src/remote.c +56 -10
  221. data/vendor/libgit2/src/remote.h +2 -0
  222. data/vendor/libgit2/src/repository.c +16 -14
  223. data/vendor/libgit2/src/repository.h +2 -0
  224. data/vendor/libgit2/src/reset.c +6 -5
  225. data/vendor/libgit2/src/revert.c +1 -0
  226. data/vendor/libgit2/src/revparse.c +3 -5
  227. data/vendor/libgit2/src/revwalk.c +2 -2
  228. data/vendor/libgit2/src/revwalk.h +2 -0
  229. data/vendor/libgit2/src/settings.c +6 -8
  230. data/vendor/libgit2/src/sha1_lookup.c +2 -216
  231. data/vendor/libgit2/src/sha1_lookup.h +2 -6
  232. data/vendor/libgit2/src/signature.c +8 -3
  233. data/vendor/libgit2/src/signature.h +2 -0
  234. data/vendor/libgit2/src/sortedcache.c +7 -0
  235. data/vendor/libgit2/src/sortedcache.h +2 -0
  236. data/vendor/libgit2/src/stash.c +1 -0
  237. data/vendor/libgit2/src/status.c +14 -9
  238. data/vendor/libgit2/src/status.h +2 -0
  239. data/vendor/libgit2/src/{curl_stream.c → streams/curl.c} +2 -0
  240. data/vendor/libgit2/src/{curl_stream.h → streams/curl.h} +4 -2
  241. data/vendor/libgit2/src/{openssl_stream.c → streams/openssl.c} +47 -18
  242. data/vendor/libgit2/src/{openssl_stream.h → streams/openssl.h} +6 -2
  243. data/vendor/libgit2/src/{socket_stream.c → streams/socket.c} +2 -2
  244. data/vendor/libgit2/src/{socket_stream.h → streams/socket.h} +4 -2
  245. data/vendor/libgit2/src/{stransport_stream.c → streams/stransport.c} +4 -2
  246. data/vendor/libgit2/src/{stransport_stream.h → streams/stransport.h} +4 -2
  247. data/vendor/libgit2/src/{tls_stream.c → streams/tls.c} +4 -3
  248. data/vendor/libgit2/src/{tls_stream.h → streams/tls.h} +4 -2
  249. data/vendor/libgit2/src/submodule.c +28 -80
  250. data/vendor/libgit2/src/submodule.h +2 -13
  251. data/vendor/libgit2/src/sysdir.c +75 -8
  252. data/vendor/libgit2/src/sysdir.h +2 -1
  253. data/vendor/libgit2/src/tag.c +2 -2
  254. data/vendor/libgit2/src/tag.h +2 -0
  255. data/vendor/libgit2/src/thread-utils.c +1 -0
  256. data/vendor/libgit2/src/thread-utils.h +1 -1
  257. data/vendor/libgit2/src/trace.c +2 -2
  258. data/vendor/libgit2/src/trace.h +2 -0
  259. data/vendor/libgit2/src/trailer.c +416 -0
  260. data/vendor/libgit2/src/transaction.c +2 -1
  261. data/vendor/libgit2/src/transport.c +2 -0
  262. data/vendor/libgit2/src/transports/auth.c +2 -1
  263. data/vendor/libgit2/src/transports/auth.h +4 -3
  264. data/vendor/libgit2/src/transports/auth_negotiate.c +2 -1
  265. data/vendor/libgit2/src/transports/auth_negotiate.h +3 -3
  266. data/vendor/libgit2/src/transports/cred.c +2 -0
  267. data/vendor/libgit2/src/transports/cred.h +4 -2
  268. data/vendor/libgit2/src/transports/cred_helpers.c +1 -0
  269. data/vendor/libgit2/src/transports/git.c +3 -1
  270. data/vendor/libgit2/src/transports/http.c +10 -14
  271. data/vendor/libgit2/src/transports/http.h +23 -0
  272. data/vendor/libgit2/src/transports/local.c +23 -5
  273. data/vendor/libgit2/src/transports/smart.c +3 -1
  274. data/vendor/libgit2/src/transports/smart.h +23 -16
  275. data/vendor/libgit2/src/transports/smart_pkt.c +114 -130
  276. data/vendor/libgit2/src/transports/smart_protocol.c +26 -22
  277. data/vendor/libgit2/src/transports/ssh.c +12 -7
  278. data/vendor/libgit2/src/transports/ssh.h +4 -2
  279. data/vendor/libgit2/src/transports/winhttp.c +19 -21
  280. data/vendor/libgit2/src/tree-cache.c +1 -0
  281. data/vendor/libgit2/src/tree-cache.h +1 -0
  282. data/vendor/libgit2/src/tree.c +20 -14
  283. data/vendor/libgit2/src/tree.h +2 -0
  284. data/vendor/libgit2/src/tsort.c +0 -1
  285. data/vendor/libgit2/src/unix/map.c +4 -1
  286. data/vendor/libgit2/src/unix/posix.h +8 -4
  287. data/vendor/libgit2/src/unix/pthread.h +1 -1
  288. data/vendor/libgit2/src/unix/realpath.c +4 -1
  289. data/vendor/libgit2/src/util.c +6 -5
  290. data/vendor/libgit2/src/util.h +39 -111
  291. data/vendor/libgit2/src/varint.c +0 -1
  292. data/vendor/libgit2/src/varint.h +2 -0
  293. data/vendor/libgit2/src/vector.c +1 -1
  294. data/vendor/libgit2/src/win32/dir.c +3 -0
  295. data/vendor/libgit2/src/win32/dir.h +4 -3
  296. data/vendor/libgit2/src/win32/error.c +1 -1
  297. data/vendor/libgit2/src/win32/error.h +4 -2
  298. data/vendor/libgit2/src/win32/findfile.c +2 -1
  299. data/vendor/libgit2/src/win32/findfile.h +4 -2
  300. data/vendor/libgit2/src/win32/map.c +2 -0
  301. data/vendor/libgit2/src/win32/mingw-compat.h +3 -3
  302. data/vendor/libgit2/src/win32/msvc-compat.h +3 -3
  303. data/vendor/libgit2/src/win32/path_w32.c +7 -12
  304. data/vendor/libgit2/src/win32/path_w32.h +3 -2
  305. data/vendor/libgit2/src/win32/posix.h +2 -2
  306. data/vendor/libgit2/src/win32/posix_w32.c +11 -5
  307. data/vendor/libgit2/src/win32/precompiled.h +2 -1
  308. data/vendor/libgit2/src/win32/reparse.h +2 -2
  309. data/vendor/libgit2/src/win32/thread.c +1 -0
  310. data/vendor/libgit2/src/win32/thread.h +2 -2
  311. data/vendor/libgit2/src/win32/utf-conv.c +0 -1
  312. data/vendor/libgit2/src/win32/utf-conv.h +4 -3
  313. data/vendor/libgit2/src/win32/w32_buffer.c +1 -1
  314. data/vendor/libgit2/src/win32/w32_buffer.h +4 -2
  315. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +2 -1
  316. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +85 -2
  317. data/vendor/libgit2/src/win32/w32_stack.c +2 -1
  318. data/vendor/libgit2/src/win32/w32_stack.h +5 -3
  319. data/vendor/libgit2/src/win32/w32_util.h +4 -2
  320. data/vendor/libgit2/src/win32/win32-compat.h +3 -3
  321. data/vendor/libgit2/src/worktree.c +4 -5
  322. data/vendor/libgit2/src/worktree.h +2 -0
  323. data/vendor/libgit2/src/xdiff/xdiff.h +22 -13
  324. data/vendor/libgit2/src/xdiff/xdiffi.c +523 -81
  325. data/vendor/libgit2/src/xdiff/xdiffi.h +2 -2
  326. data/vendor/libgit2/src/xdiff/xemit.c +63 -39
  327. data/vendor/libgit2/src/xdiff/xemit.h +2 -2
  328. data/vendor/libgit2/src/xdiff/xhistogram.c +0 -1
  329. data/vendor/libgit2/src/xdiff/xinclude.h +3 -2
  330. data/vendor/libgit2/src/xdiff/xmacros.h +2 -2
  331. data/vendor/libgit2/src/xdiff/xmerge.c +80 -20
  332. data/vendor/libgit2/src/xdiff/xpatience.c +41 -9
  333. data/vendor/libgit2/src/xdiff/xprepare.c +2 -2
  334. data/vendor/libgit2/src/xdiff/xprepare.h +2 -2
  335. data/vendor/libgit2/src/xdiff/xtypes.h +2 -2
  336. data/vendor/libgit2/src/xdiff/xutils.c +47 -27
  337. data/vendor/libgit2/src/xdiff/xutils.h +2 -5
  338. data/vendor/libgit2/src/zstream.c +65 -45
  339. data/vendor/libgit2/src/zstream.h +9 -2
  340. metadata +27 -13
  341. data/vendor/libgit2/include/git2/sys/remote.h +0 -16
@@ -345,11 +345,11 @@ static VALUE do_walk(VALUE _payload)
345
345
  * Example:
346
346
  *
347
347
  * Rugged::Walker.walk(repo,
348
- * show: "92b22bbcb37caf4f6f53d30292169e84f5e4283b",
349
- * sort: Rugged::SORT_DATE|Rugged::SORT_TOPO,
350
- * oid_only: true) do |commit_oid|
351
- * puts commit_oid
352
- * end
348
+ * show: "92b22bbcb37caf4f6f53d30292169e84f5e4283b",
349
+ * sort: Rugged::SORT_DATE|Rugged::SORT_TOPO,
350
+ * oid_only: true) do |commit_oid|
351
+ * puts commit_oid
352
+ * end
353
353
  *
354
354
  * generates:
355
355
  *
@@ -365,14 +365,9 @@ static VALUE rb_git_walk(int argc, VALUE *argv, VALUE self)
365
365
  struct walk_options w;
366
366
  int exception = 0;
367
367
 
368
+ RETURN_ENUMERATOR(self, argc, argv);
368
369
  rb_scan_args(argc, argv, "10:", &rb_repo, &rb_options);
369
370
 
370
- if (!rb_block_given_p()) {
371
- ID iter_method = ID2SYM(rb_intern("walk"));
372
- return rb_funcall(self, rb_intern("to_enum"), 3,
373
- iter_method, rb_repo, rb_options);
374
- }
375
-
376
371
  Data_Get_Struct(rb_repo, git_repository, w.repo);
377
372
  rugged_exception_check(git_revwalk_new(&w.walk, w.repo));
378
373
 
@@ -402,13 +397,9 @@ static VALUE rb_git_walk_with_opts(int argc, VALUE *argv, VALUE self, int oid_on
402
397
  VALUE rb_options;
403
398
  struct walk_options w;
404
399
 
400
+ RETURN_ENUMERATOR(self, argc, argv);
405
401
  rb_scan_args(argc, argv, "01", &rb_options);
406
402
 
407
- if (!rb_block_given_p()) {
408
- ID iter_method = ID2SYM(rb_intern(oid_only ? "each_oid" : "each"));
409
- return rb_funcall(self, rb_intern("to_enum"), 2, iter_method, rb_options);
410
- }
411
-
412
403
  Data_Get_Struct(self, git_revwalk, w.walk);
413
404
  w.repo = git_revwalk_repository(w.walk);
414
405
 
@@ -135,9 +135,37 @@ static VALUE rb_git_get_option(VALUE self, VALUE option)
135
135
  }
136
136
  }
137
137
 
138
+ /*
139
+ * call-seq:
140
+ * Rugged::Settings.max_cache_size -> max cache size
141
+ *
142
+ * Returns the maximum amount of memory the cache will consume.
143
+ */
144
+ static VALUE rb_git_get_max_cache_size(VALUE mod) {
145
+ size_t val;
146
+ size_t max;
147
+ git_libgit2_opts(GIT_OPT_GET_CACHED_MEMORY, &val, &max);
148
+ return SIZET2NUM(max);
149
+ }
150
+
151
+ /*
152
+ * call-seq:
153
+ * Rugged::Settings.used_cache_size -> used cache size
154
+ *
155
+ * Returns the amount of memory the cache is currently consuming.
156
+ */
157
+ static VALUE rb_git_get_used_cache_size(VALUE mod) {
158
+ size_t val;
159
+ size_t max;
160
+ git_libgit2_opts(GIT_OPT_GET_CACHED_MEMORY, &val, &max);
161
+ return SIZET2NUM(val);
162
+ }
163
+
138
164
  void Init_rugged_settings(void)
139
165
  {
140
166
  VALUE rb_cRuggedSettings = rb_define_class_under(rb_mRugged, "Settings", rb_cObject);
141
167
  rb_define_module_function(rb_cRuggedSettings, "[]=", rb_git_set_option, 2);
142
168
  rb_define_module_function(rb_cRuggedSettings, "[]", rb_git_get_option, 1);
169
+ rb_define_module_function(rb_cRuggedSettings, "max_cache_size", rb_git_get_max_cache_size, 0);
170
+ rb_define_module_function(rb_cRuggedSettings, "used_cache_size", rb_git_get_used_cache_size, 0);
143
171
  }
@@ -124,13 +124,12 @@ static VALUE rb_git_submodule_collection_each(VALUE self)
124
124
  git_repository *repo;
125
125
  int error;
126
126
  struct rugged_cb_payload payload;
127
+ VALUE rb_repo;
127
128
 
128
- VALUE rb_repo = rugged_owner(self);
129
+ RETURN_ENUMERATOR(self, 0, 0);
130
+ rb_repo = rugged_owner(self);
129
131
  Data_Get_Struct(rb_repo, git_repository, repo);
130
132
 
131
- if (!rb_block_given_p())
132
- return rb_funcall(self, rb_intern("to_enum"), 1, CSTR2SYM("each"));
133
-
134
133
  payload.exception = 0;
135
134
  payload.rb_data = rb_repo;
136
135
 
@@ -236,13 +236,9 @@ static VALUE each_tag(int argc, VALUE *argv, VALUE self, int tag_names_only)
236
236
  VALUE rb_repo = rugged_owner(self), rb_pattern;
237
237
  const char *pattern = NULL;
238
238
 
239
+ RETURN_ENUMERATOR(self, argc, argv);
239
240
  rb_scan_args(argc, argv, "01", &rb_pattern);
240
241
 
241
- if (!rb_block_given_p()) {
242
- VALUE symbol = tag_names_only ? CSTR2SYM("each_name") : CSTR2SYM("each");
243
- return rb_funcall(self, rb_intern("to_enum"), 2, symbol, rb_pattern);
244
- }
245
-
246
242
  if (!NIL_P(rb_pattern)) {
247
243
  Check_Type(rb_pattern, T_STRING);
248
244
  pattern = StringValueCStr(rb_pattern);
@@ -220,10 +220,9 @@ static VALUE rb_git_tree_each(VALUE self)
220
220
  {
221
221
  git_tree *tree;
222
222
  size_t i, count;
223
- Data_Get_Struct(self, git_tree, tree);
224
223
 
225
- if (!rb_block_given_p())
226
- return rb_funcall(self, rb_intern("to_enum"), 0);
224
+ RETURN_ENUMERATOR(self, 0, 0);
225
+ Data_Get_Struct(self, git_tree, tree);
227
226
 
228
227
  count = git_tree_entrycount(tree);
229
228
 
@@ -53,6 +53,49 @@ module Rugged
53
53
  end
54
54
  end
55
55
 
56
+ ###
57
+ # call-seq:
58
+ # repo.status { |file, status_data| block }
59
+ # repo.status(path) -> status_data
60
+ #
61
+ # Returns the status for one or more files in the working directory
62
+ # of the repository. This is equivalent to the +git status+ command.
63
+ #
64
+ # The returned +status_data+ is always an array containing one or more
65
+ # status flags as Ruby symbols. Possible flags are:
66
+ #
67
+ # - +:index_new+: the file is new in the index
68
+ # - +:index_modified+: the file has been modified in the index
69
+ # - +:index_deleted+: the file has been deleted from the index
70
+ # - +:worktree_new+: the file is new in the working directory
71
+ # - +:worktree_modified+: the file has been modified in the working directory
72
+ # - +:worktree_deleted+: the file has been deleted from the working directory
73
+ #
74
+ # If a +block+ is given, status information will be gathered for every
75
+ # single file on the working dir. The +block+ will be called with the
76
+ # status data for each file.
77
+ #
78
+ # repo.status { |file, status_data| puts "#{file} has status: #{status_data.inspect}" }
79
+ #
80
+ # results in, for example:
81
+ #
82
+ # src/diff.c has status: [:index_new, :worktree_new]
83
+ # README has status: [:worktree_modified]
84
+ #
85
+ # If a +path+ is given instead, the function will return the +status_data+ for
86
+ # the file pointed to by path, or raise an exception if the path doesn't exist.
87
+ #
88
+ # +path+ must be relative to the repository's working directory.
89
+ #
90
+ # repo.status('src/diff.c') #=> [:index_new, :worktree_new]
91
+ def status(file = nil, &block)
92
+ if file
93
+ file_status file
94
+ else
95
+ each_status(&block)
96
+ end
97
+ end
98
+
56
99
  def diff(left, right, opts = {})
57
100
  left = rev_parse(left) if left.kind_of?(String)
58
101
  right = rev_parse(right) if right.kind_of?(String)
@@ -4,5 +4,5 @@
4
4
  # For full terms see the included LICENSE file.
5
5
 
6
6
  module Rugged
7
- Version = VERSION = '0.26.7'
7
+ Version = VERSION = '0.27.0'
8
8
  end
@@ -22,6 +22,7 @@ Dmitry Kakurin
22
22
  Dmitry Kovega
23
23
  Emeric Fermas
24
24
  Emmanuel Rodriguez
25
+ Eric Myhre
25
26
  Florian Forster
26
27
  Holger Weiss
27
28
  Ingmar Vanhassel
@@ -12,11 +12,17 @@
12
12
  # > cmake --build . --target install
13
13
 
14
14
  PROJECT(libgit2 C)
15
- CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
15
+ CMAKE_MINIMUM_REQUIRED(VERSION 2.8.11)
16
16
  CMAKE_POLICY(SET CMP0015 NEW)
17
+ IF (POLICY CMP0051)
18
+ CMAKE_POLICY(SET CMP0051 NEW)
19
+ ENDIF()
20
+ IF (POLICY CMP0042)
21
+ CMAKE_POLICY(SET CMP0042 NEW)
22
+ ENDIF()
17
23
 
18
24
  # Add find modules to the path
19
- SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/")
25
+ SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${libgit2_SOURCE_DIR}/cmake/Modules/")
20
26
 
21
27
  INCLUDE(CheckLibraryExists)
22
28
  INCLUDE(CheckFunctionExists)
@@ -24,6 +30,11 @@ INCLUDE(CheckSymbolExists)
24
30
  INCLUDE(CheckStructHasMember)
25
31
  INCLUDE(AddCFlagIfSupported)
26
32
  INCLUDE(FindPkgConfig)
33
+ INCLUDE(FindThreads)
34
+ INCLUDE(FindStatNsec)
35
+ INCLUDE(IdeSplitSources)
36
+ INCLUDE(FeatureSummary)
37
+ INCLUDE(EnableWarnings)
27
38
 
28
39
  # Build options
29
40
  #
@@ -37,22 +48,23 @@ OPTION( PROFILE "Generate profiling information" OFF )
37
48
  OPTION( ENABLE_TRACE "Enables tracing support" OFF )
38
49
  OPTION( LIBGIT2_FILENAME "Name of the produced binary" OFF )
39
50
 
40
- OPTION( USE_SHA1DC "Use SHA-1 with collision detection" OFF )
41
- OPTION( USE_ICONV "Link with and use iconv library" OFF )
51
+ SET(SHA1_BACKEND "CollisionDetection" CACHE STRING "Backend to use for SHA1. One of Generic, OpenSSL, Win32, CommonCrypto, CollisionDetection. ")
42
52
  OPTION( USE_SSH "Link with libssh to enable SSH support" ON )
53
+ OPTION( USE_HTTPS "Enable HTTPS support. Can be set to a specific backend" ON )
43
54
  OPTION( USE_GSSAPI "Link with libgssapi for SPNEGO auth" OFF )
44
55
  OPTION( VALGRIND "Configure build for valgrind" OFF )
45
56
  OPTION( CURL "Use curl for HTTP if available" ON)
57
+ OPTION( USE_EXT_HTTP_PARSER "Use system HTTP_Parser if available" ON)
46
58
  OPTION( DEBUG_POOL "Enable debug pool allocator" OFF )
59
+ OPTION( ENABLE_WERROR "Enable compilation with -Werror" OFF )
60
+ OPTION( USE_BUNDLED_ZLIB "Use the bundled version of zlib" OFF )
47
61
 
48
- IF(DEBUG_POOL)
49
- ADD_DEFINITIONS(-DGIT_DEBUG_POOL)
62
+ IF (UNIX AND NOT APPLE)
63
+ OPTION( ENABLE_REPRODUCIBLE_BUILDS "Enable reproducible builds" OFF )
50
64
  ENDIF()
51
65
 
52
- IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
53
- SET( USE_ICONV ON )
54
- FIND_PACKAGE(Security)
55
- FIND_PACKAGE(CoreFoundation REQUIRED)
66
+ IF (APPLE)
67
+ OPTION( USE_ICONV "Link with and use iconv library" ON )
56
68
  ENDIF()
57
69
 
58
70
  IF(MSVC)
@@ -71,10 +83,6 @@ IF(MSVC)
71
83
  # If you want to embed a copy of libssh2 into libgit2, pass a
72
84
  # path to libssh2
73
85
  OPTION( EMBED_SSH_PATH "Path to libssh2 to embed (Windows)" OFF )
74
-
75
- ADD_DEFINITIONS(-D_SCL_SECURE_NO_WARNINGS)
76
- ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE)
77
- ADD_DEFINITIONS(-D_CRT_NONSTDC_NO_DEPRECATE)
78
86
  ENDIF()
79
87
 
80
88
 
@@ -89,313 +97,21 @@ IF(MSVC)
89
97
  OPTION(MSVC_CRTDBG "Enable CRTDBG memory leak reporting" OFF)
90
98
  ENDIF()
91
99
 
92
- IF (NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
93
- OPTION( USE_OPENSSL "Link with and use openssl library" ON )
94
- ENDIF()
95
-
96
- CHECK_STRUCT_HAS_MEMBER ("struct stat" st_mtim "sys/types.h;sys/stat.h"
97
- HAVE_STRUCT_STAT_ST_MTIM LANGUAGE C)
98
- CHECK_STRUCT_HAS_MEMBER ("struct stat" st_mtimespec "sys/types.h;sys/stat.h"
99
- HAVE_STRUCT_STAT_ST_MTIMESPEC LANGUAGE C)
100
- CHECK_STRUCT_HAS_MEMBER("struct stat" st_mtime_nsec sys/stat.h
101
- HAVE_STRUCT_STAT_MTIME_NSEC LANGUAGE C)
102
-
103
- IF (HAVE_STRUCT_STAT_ST_MTIM)
104
- CHECK_STRUCT_HAS_MEMBER("struct stat" st_mtim.tv_nsec sys/stat.h
105
- HAVE_STRUCT_STAT_NSEC LANGUAGE C)
106
- ELSEIF (HAVE_STRUCT_STAT_ST_MTIMESPEC)
107
- CHECK_STRUCT_HAS_MEMBER("struct stat" st_mtimespec.tv_nsec sys/stat.h
108
- HAVE_STRUCT_STAT_NSEC LANGUAGE C)
109
- ELSE ()
110
- SET( HAVE_STRUCT_STAT_NSEC ON )
111
- ENDIF()
112
-
113
- IF (HAVE_STRUCT_STAT_NSEC OR WIN32)
114
- OPTION( USE_NSEC "Care about sub-second file mtimes and ctimes" ON )
115
- ENDIF()
116
-
117
- # This variable will contain the libraries we need to put into
118
- # libgit2.pc's Requires.private. That is, what we're linking to or
119
- # what someone who's statically linking us needs to link to.
120
- SET(LIBGIT2_PC_REQUIRES "")
121
- # This will be set later if we use the system's http-parser library or
122
- # use iconv (OSX) and will be written to the Libs.private field in the
123
- # pc file.
124
- SET(LIBGIT2_PC_LIBS "")
125
-
126
- # Installation paths
127
- #
128
- SET(BIN_INSTALL_DIR bin CACHE PATH "Where to install binaries to.")
129
- SET(LIB_INSTALL_DIR lib CACHE PATH "Where to install libraries to.")
130
- SET(INCLUDE_INSTALL_DIR include CACHE PATH "Where to install headers to.")
131
-
132
- # Set a couple variables to be substituted inside the .pc file.
133
- # We can't just use LIB_INSTALL_DIR in the .pc file, as passing them as absolue
134
- # or relative paths is both valid and supported by cmake.
135
- SET (PKGCONFIG_PREFIX ${CMAKE_INSTALL_PREFIX})
136
-
137
- IF(IS_ABSOLUTE ${LIB_INSTALL_DIR})
138
- SET (PKGCONFIG_LIBDIR ${LIB_INSTALL_DIR})
139
- ELSE(IS_ABSOLUTE ${LIB_INSTALL_DIR})
140
- SET (PKGCONFIG_LIBDIR "\${prefix}/${LIB_INSTALL_DIR}")
141
- ENDIF (IS_ABSOLUTE ${LIB_INSTALL_DIR})
142
-
143
- IF(IS_ABSOLUTE ${INCLUDE_INSTALL_DIR})
144
- SET (PKGCONFIG_INCLUDEDIR ${INCLUDE_INSTALL_DIR})
145
- ELSE(IS_ABSOLUTE ${INCLUDE_INSTALL_DIR})
146
- SET (PKGCONFIG_INCLUDEDIR "\${prefix}/${INCLUDE_INSTALL_DIR}")
147
- ENDIF(IS_ABSOLUTE ${INCLUDE_INSTALL_DIR})
148
-
149
- FUNCTION(TARGET_OS_LIBRARIES target)
150
- IF(WIN32)
151
- TARGET_LINK_LIBRARIES(${target} ws2_32)
152
- ELSEIF(CMAKE_SYSTEM_NAME MATCHES "(Solaris|SunOS)")
153
- TARGET_LINK_LIBRARIES(${target} socket nsl)
154
- LIST(APPEND LIBGIT2_PC_LIBS "-lsocket" "-lnsl")
155
- SET(LIBGIT2_PC_LIBS ${LIBGIT2_PC_LIBS} PARENT_SCOPE)
156
- ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Haiku")
157
- TARGET_LINK_LIBRARIES(${target} network)
158
- LIST(APPEND LIBGIT2_PC_LIBS "-lnetwork")
159
- SET(LIBGIT2_PC_LIBS ${LIBGIT2_PC_LIBS} PARENT_SCOPE)
160
- ENDIF()
161
- CHECK_LIBRARY_EXISTS(rt clock_gettime "time.h" NEED_LIBRT)
162
- IF(NEED_LIBRT)
163
- TARGET_LINK_LIBRARIES(${target} rt)
164
- LIST(APPEND LIBGIT2_PC_LIBS "-lrt")
165
- SET(LIBGIT2_PC_LIBS ${LIBGIT2_PC_LIBS} PARENT_SCOPE)
166
- ENDIF()
167
-
168
- IF(THREADSAFE)
169
- TARGET_LINK_LIBRARIES(${target} ${CMAKE_THREAD_LIBS_INIT})
170
- LIST(APPEND LIBGIT2_PC_LIBS ${CMAKE_THREAD_LIBS_INIT})
171
- SET(LIBGIT2_PC_LIBS ${LIBGIT2_PC_LIBS} PARENT_SCOPE)
172
- ENDIF()
173
- ENDFUNCTION()
174
-
175
- # This function splits the sources files up into their appropriate
176
- # subdirectories. This is especially useful for IDEs like Xcode and
177
- # Visual Studio, so that you can navigate into the libgit2_clar project,
178
- # and see the folders within the tests folder (instead of just seeing all
179
- # source and tests in a single folder.)
180
- FUNCTION(IDE_SPLIT_SOURCES target)
181
- IF(MSVC_IDE OR CMAKE_GENERATOR STREQUAL Xcode)
182
- GET_TARGET_PROPERTY(sources ${target} SOURCES)
183
- FOREACH(source ${sources})
184
- IF(source MATCHES ".*/")
185
- STRING(REPLACE ${CMAKE_CURRENT_SOURCE_DIR}/ "" rel ${source})
186
- IF(rel)
187
- STRING(REGEX REPLACE "/([^/]*)$" "" rel ${rel})
188
- IF(rel)
189
- STRING(REPLACE "/" "\\\\" rel ${rel})
190
- SOURCE_GROUP(${rel} FILES ${source})
191
- ENDIF()
192
- ENDIF()
193
- ENDIF()
194
- ENDFOREACH()
195
- ENDIF()
196
- ENDFUNCTION()
197
-
198
- FILE(STRINGS "include/git2/version.h" GIT2_HEADER REGEX "^#define LIBGIT2_VERSION \"[^\"]*\"$")
100
+ FILE(STRINGS "${libgit2_SOURCE_DIR}/include/git2/version.h" GIT2_HEADER REGEX "^#define LIBGIT2_VERSION \"[^\"]*\"$")
199
101
 
200
102
  STRING(REGEX REPLACE "^.*LIBGIT2_VERSION \"([0-9]+).*$" "\\1" LIBGIT2_VERSION_MAJOR "${GIT2_HEADER}")
201
103
  STRING(REGEX REPLACE "^.*LIBGIT2_VERSION \"[0-9]+\\.([0-9]+).*$" "\\1" LIBGIT2_VERSION_MINOR "${GIT2_HEADER}")
202
104
  STRING(REGEX REPLACE "^.*LIBGIT2_VERSION \"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" LIBGIT2_VERSION_REV "${GIT2_HEADER}")
203
105
  SET(LIBGIT2_VERSION_STRING "${LIBGIT2_VERSION_MAJOR}.${LIBGIT2_VERSION_MINOR}.${LIBGIT2_VERSION_REV}")
204
106
 
205
- FILE(STRINGS "include/git2/version.h" GIT2_HEADER_SOVERSION REGEX "^#define LIBGIT2_SOVERSION [0-9]+$")
107
+ FILE(STRINGS "${libgit2_SOURCE_DIR}/include/git2/version.h" GIT2_HEADER_SOVERSION REGEX "^#define LIBGIT2_SOVERSION [0-9]+$")
206
108
  STRING(REGEX REPLACE "^.*LIBGIT2_SOVERSION ([0-9]+)$" "\\1" LIBGIT2_SOVERSION "${GIT2_HEADER_SOVERSION}")
207
109
 
208
- # Find required dependencies
209
- INCLUDE_DIRECTORIES(src include)
210
-
211
- IF (SECURITY_FOUND)
212
- # OS X 10.7 and older do not have some functions we use, fall back to OpenSSL there
213
- CHECK_LIBRARY_EXISTS("${SECURITY_DIRS}" SSLCreateContext "Security/SecureTransport.h" HAVE_NEWER_SECURITY)
214
- IF (HAVE_NEWER_SECURITY)
215
- MESSAGE("-- Found Security ${SECURITY_DIRS}")
216
- LIST(APPEND LIBGIT2_PC_LIBS "-framework Security")
217
- ELSE()
218
- MESSAGE("-- Security framework is too old, falling back to OpenSSL")
219
- SET(SECURITY_FOUND "NO")
220
- SET(SECURITY_DIRS "")
221
- SET(SECURITY_DIR "")
222
- SET(USE_OPENSSL "ON")
223
- ENDIF()
224
- ENDIF()
225
-
226
- IF (COREFOUNDATION_FOUND)
227
- MESSAGE("-- Found CoreFoundation ${COREFOUNDATION_DIRS}")
228
- LIST(APPEND LIBGIT2_PC_LIBS "-framework CoreFoundation")
229
- ENDIF()
230
-
231
-
232
- IF (WIN32 AND EMBED_SSH_PATH)
233
- FILE(GLOB SRC_SSH "${EMBED_SSH_PATH}/src/*.c")
234
- INCLUDE_DIRECTORIES("${EMBED_SSH_PATH}/include")
235
- FILE(WRITE "${EMBED_SSH_PATH}/src/libssh2_config.h" "#define HAVE_WINCNG\n#define LIBSSH2_WINCNG\n#include \"../win32/libssh2_config.h\"")
236
- ADD_DEFINITIONS(-DGIT_SSH)
237
- ENDIF()
238
-
239
- IF (WIN32 AND WINHTTP)
240
- ADD_DEFINITIONS(-DGIT_WINHTTP)
241
- ADD_DEFINITIONS(-DGIT_HTTPS)
242
-
243
- # Since MinGW does not come with headers or an import library for winhttp,
244
- # we have to include a private header and generate our own import library
245
- IF (MINGW)
246
- FIND_PROGRAM(DLLTOOL dlltool CMAKE_FIND_ROOT_PATH_BOTH)
247
- IF (NOT DLLTOOL)
248
- MESSAGE(FATAL_ERROR "Could not find dlltool command")
249
- ENDIF ()
250
-
251
- SET(LIBWINHTTP_PATH "${CMAKE_CURRENT_BINARY_DIR}/deps/winhttp")
252
- FILE(MAKE_DIRECTORY ${LIBWINHTTP_PATH})
253
-
254
- IF (CMAKE_SIZEOF_VOID_P EQUAL 8)
255
- set(WINHTTP_DEF "${CMAKE_CURRENT_SOURCE_DIR}/deps/winhttp/winhttp64.def")
256
- ELSE()
257
- set(WINHTTP_DEF "${CMAKE_CURRENT_SOURCE_DIR}/deps/winhttp/winhttp.def")
258
- ENDIF()
259
-
260
- ADD_CUSTOM_COMMAND(
261
- OUTPUT ${LIBWINHTTP_PATH}/libwinhttp.a
262
- COMMAND ${DLLTOOL} -d ${WINHTTP_DEF} -k -D winhttp.dll -l libwinhttp.a
263
- DEPENDS ${WINHTTP_DEF}
264
- WORKING_DIRECTORY ${LIBWINHTTP_PATH}
265
- )
266
-
267
- SET_SOURCE_FILES_PROPERTIES(
268
- ${CMAKE_CURRENT_SOURCE_DIR}/src/transports/winhttp.c
269
- PROPERTIES OBJECT_DEPENDS ${LIBWINHTTP_PATH}/libwinhttp.a
270
- )
271
-
272
- INCLUDE_DIRECTORIES(deps/winhttp)
273
- LINK_DIRECTORIES(${LIBWINHTTP_PATH})
274
- ENDIF ()
275
-
276
- LINK_LIBRARIES(winhttp rpcrt4 crypt32 ole32)
277
- LIST(APPEND LIBGIT2_PC_LIBS "-lwinhttp" "-lrpcrt4" "-lcrypt32" "-lole32")
278
- ELSE ()
279
- IF (CURL)
280
- PKG_CHECK_MODULES(CURL libcurl)
281
- ENDIF ()
282
-
283
- IF (NOT AMIGA AND USE_OPENSSL)
284
- FIND_PACKAGE(OpenSSL)
285
- ENDIF ()
286
-
287
- IF (CURL_FOUND)
288
- ADD_DEFINITIONS(-DGIT_CURL)
289
- INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS})
290
- LINK_DIRECTORIES(${CURL_LIBRARY_DIRS})
291
- LINK_LIBRARIES(${CURL_LIBRARIES})
292
- LIST(APPEND LIBGIT2_PC_LIBS ${CURL_LDFLAGS})
293
- ENDIF()
294
- ENDIF()
295
-
296
- # Specify sha1 implementation
297
- IF (USE_SHA1DC)
298
- ADD_DEFINITIONS(-DGIT_SHA1_COLLISIONDETECT)
299
- ADD_DEFINITIONS(-DSHA1DC_NO_STANDARD_INCLUDES=1)
300
- ADD_DEFINITIONS(-DSHA1DC_CUSTOM_INCLUDE_SHA1_C=\"common.h\")
301
- ADD_DEFINITIONS(-DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C=\"common.h\")
302
- FILE(GLOB SRC_SHA1 src/hash/hash_collisiondetect.c src/hash/sha1dc/*)
303
- ELSEIF (WIN32 AND NOT MINGW)
304
- ADD_DEFINITIONS(-DGIT_SHA1_WIN32)
305
- FILE(GLOB SRC_SHA1 src/hash/hash_win32.c)
306
- ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
307
- ADD_DEFINITIONS(-DGIT_SHA1_COMMON_CRYPTO)
308
- ELSEIF (OPENSSL_FOUND)
309
- ADD_DEFINITIONS(-DGIT_SHA1_OPENSSL)
310
- IF (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
311
- LIST(APPEND LIBGIT2_PC_LIBS "-lssl")
312
- ELSE()
313
- SET(LIBGIT2_PC_REQUIRES "${LIBGIT2_PC_REQUIRES} openssl")
314
- ENDIF ()
315
- ELSE()
316
- FILE(GLOB SRC_SHA1 src/hash/hash_generic.c)
317
- ENDIF()
318
-
319
- # Enable tracing
320
- IF (ENABLE_TRACE STREQUAL "ON")
321
- ADD_DEFINITIONS(-DGIT_TRACE)
322
- ENDIF()
323
-
324
- # Include POSIX regex when it is required
325
- IF(WIN32 OR AMIGA OR CMAKE_SYSTEM_NAME MATCHES "(Solaris|SunOS)")
326
- INCLUDE_DIRECTORIES(deps/regex)
327
- SET(SRC_REGEX deps/regex/regex.c)
328
- ENDIF()
329
-
330
- # Optional external dependency: http-parser
331
- FIND_PACKAGE(HTTP_Parser)
332
- IF (HTTP_PARSER_FOUND AND HTTP_PARSER_VERSION_MAJOR EQUAL 2)
333
- INCLUDE_DIRECTORIES(${HTTP_PARSER_INCLUDE_DIRS})
334
- LINK_LIBRARIES(${HTTP_PARSER_LIBRARIES})
335
- LIST(APPEND LIBGIT2_PC_LIBS "-lhttp_parser")
336
- ELSE()
337
- MESSAGE(STATUS "http-parser version 2 was not found; using bundled 3rd-party sources.")
338
- INCLUDE_DIRECTORIES(deps/http-parser)
339
- FILE(GLOB SRC_HTTP deps/http-parser/*.c deps/http-parser/*.h)
340
- ENDIF()
341
-
342
- # Optional external dependency: zlib
343
- FIND_PACKAGE(ZLIB)
344
- IF (ZLIB_FOUND)
345
- INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIRS})
346
- LINK_LIBRARIES(${ZLIB_LIBRARIES})
347
- IF(APPLE OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
348
- LIST(APPEND LIBGIT2_PC_LIBS "-lz")
349
- ELSE()
350
- SET(LIBGIT2_PC_REQUIRES "${LIBGIT2_PC_REQUIRES} zlib")
351
- ENDIF()
352
- ELSE()
353
- MESSAGE(STATUS "zlib was not found; using bundled 3rd-party sources." )
354
- INCLUDE_DIRECTORIES(deps/zlib)
355
- ADD_DEFINITIONS(-DNO_VIZ -DSTDC -DNO_GZIP)
356
- FILE(GLOB SRC_ZLIB deps/zlib/*.c deps/zlib/*.h)
357
- ENDIF()
358
-
359
- # Optional external dependency: libssh2
360
- IF (USE_SSH)
361
- PKG_CHECK_MODULES(LIBSSH2 libssh2)
362
- ENDIF()
363
- IF (LIBSSH2_FOUND)
364
- ADD_DEFINITIONS(-DGIT_SSH)
365
- INCLUDE_DIRECTORIES(${LIBSSH2_INCLUDE_DIRS})
366
- LINK_DIRECTORIES(${LIBSSH2_LIBRARY_DIRS})
367
- LIST(APPEND LIBGIT2_PC_LIBS ${LIBSSH2_LDFLAGS})
368
- #SET(LIBGIT2_PC_LIBS "${LIBGIT2_PC_LIBS} ${LIBSSH2_LDFLAGS}")
369
- SET(SSH_LIBRARIES ${LIBSSH2_LIBRARIES})
370
-
371
- CHECK_LIBRARY_EXISTS("${LIBSSH2_LIBRARIES}" libssh2_userauth_publickey_frommemory "${LIBSSH2_LIBRARY_DIRS}" HAVE_LIBSSH2_MEMORY_CREDENTIALS)
372
- IF (HAVE_LIBSSH2_MEMORY_CREDENTIALS)
373
- ADD_DEFINITIONS(-DGIT_SSH_MEMORY_CREDENTIALS)
374
- ENDIF()
375
- ELSE()
376
- MESSAGE(STATUS "LIBSSH2 not found. Set CMAKE_PREFIX_PATH if it is installed outside of the default search path.")
377
- ENDIF()
378
-
379
- # Optional external dependency: libgssapi
380
- IF (USE_GSSAPI)
381
- FIND_PACKAGE(GSSAPI)
382
- ENDIF()
383
- IF (GSSAPI_FOUND)
384
- ADD_DEFINITIONS(-DGIT_GSSAPI)
385
- ENDIF()
386
-
387
- # Optional external dependency: iconv
388
- IF (USE_ICONV)
389
- FIND_PACKAGE(Iconv)
390
- ENDIF()
391
- IF (ICONV_FOUND)
392
- ADD_DEFINITIONS(-DGIT_USE_ICONV)
393
- INCLUDE_DIRECTORIES(${ICONV_INCLUDE_DIR})
394
- LIST(APPEND LIBGIT2_PC_LIBS ${ICONV_LIBRARIES})
395
- ENDIF()
396
-
397
110
  # Platform specific compilation flags
398
111
  IF (MSVC)
112
+ ADD_DEFINITIONS(-D_SCL_SECURE_NO_WARNINGS)
113
+ ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE)
114
+ ADD_DEFINITIONS(-D_CRT_NONSTDC_NO_DEPRECATE)
399
115
 
400
116
  STRING(REPLACE "/Zm1000" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
401
117
 
@@ -417,7 +133,8 @@ IF (MSVC)
417
133
  ENDIF()
418
134
 
419
135
  IF (MSVC_CRTDBG)
420
- SET(CRT_FLAG_DEBUG "${CRT_FLAG_DEBUG} /DGIT_MSVC_CRTDBG")
136
+ SET(GIT_MSVC_CRTDBG 1)
137
+ SET(CRT_FLAG_DEBUG "${CRT_FLAG_DEBUG}")
421
138
  SET(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES} Dbghelp.lib")
422
139
  ENDIF()
423
140
 
@@ -466,13 +183,17 @@ IF (MSVC)
466
183
  SET(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
467
184
  SET(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO}")
468
185
  SET(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL}")
469
-
470
- SET(WIN_RC "src/win32/git2.rc")
471
186
  ELSE ()
187
+ IF (ENABLE_REPRODUCIBLE_BUILDS)
188
+ SET(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> Dqc <TARGET> <LINK_FLAGS> <OBJECTS>")
189
+ SET(CMAKE_C_ARCHIVE_APPEND "<CMAKE_AR> Dq <TARGET> <LINK_FLAGS> <OBJECTS>")
190
+ SET(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> -D <TARGET>")
191
+ ENDIF()
192
+
472
193
  SET(CMAKE_C_FLAGS "-D_GNU_SOURCE ${CMAKE_C_FLAGS}")
473
194
 
474
- ADD_C_FLAG_IF_SUPPORTED(-Wall)
475
- ADD_C_FLAG_IF_SUPPORTED(-Wextra)
195
+ ENABLE_WARNINGS(all)
196
+ ENABLE_WARNINGS(extra)
476
197
 
477
198
  IF (CMAKE_SYSTEM_NAME MATCHES "(Solaris|SunOS)")
478
199
  SET(CMAKE_C_FLAGS "-std=c99 -D_POSIX_C_SOURCE=200112L -D__EXTENSIONS__ -D_POSIX_PTHREAD_SEMANTICS ${CMAKE_C_FLAGS}")
@@ -495,16 +216,17 @@ ELSE ()
495
216
  ADD_DEFINITIONS(-D__USE_MINGW_ANSI_STDIO=1)
496
217
  ENDIF ()
497
218
 
498
- ADD_C_FLAG_IF_SUPPORTED(-Wdocumentation)
499
- ADD_C_FLAG_IF_SUPPORTED(-Wno-missing-field-initializers)
500
- ADD_C_FLAG_IF_SUPPORTED(-Wstrict-aliasing=2)
501
- ADD_C_FLAG_IF_SUPPORTED(-Wstrict-prototypes)
502
- ADD_C_FLAG_IF_SUPPORTED(-Wdeclaration-after-statement)
503
- ADD_C_FLAG_IF_SUPPORTED(-Wno-unused-const-variable)
504
- ADD_C_FLAG_IF_SUPPORTED(-Wno-unused-function)
219
+ ENABLE_WARNINGS(documentation)
220
+ DISABLE_WARNINGS(missing-field-initializers)
221
+ ENABLE_WARNINGS(strict-aliasing)
222
+ ENABLE_WARNINGS(strict-prototypes)
223
+ ENABLE_WARNINGS(declaration-after-statement)
224
+ ENABLE_WARNINGS(shift-count-overflow)
225
+ DISABLE_WARNINGS(unused-const-variable)
226
+ DISABLE_WARNINGS(unused-function)
505
227
 
506
228
  IF (APPLE) # Apple deprecated OpenSSL
507
- ADD_C_FLAG_IF_SUPPORTED(-Wno-deprecated-declarations)
229
+ DISABLE_WARNINGS(deprecated-declarations)
508
230
  ENDIF()
509
231
 
510
232
  IF (PROFILE)
@@ -513,26 +235,6 @@ ELSE ()
513
235
  ENDIF ()
514
236
  ENDIF()
515
237
 
516
- CHECK_SYMBOL_EXISTS(regcomp_l "regex.h;xlocale.h" HAVE_REGCOMP_L)
517
- IF (HAVE_REGCOMP_L)
518
- ADD_DEFINITIONS(-DHAVE_REGCOMP_L)
519
- ENDIF ()
520
-
521
- CHECK_FUNCTION_EXISTS(futimens HAVE_FUTIMENS)
522
- IF (HAVE_FUTIMENS)
523
- ADD_DEFINITIONS(-DHAVE_FUTIMENS)
524
- ENDIF ()
525
-
526
- CHECK_FUNCTION_EXISTS(qsort_r HAVE_QSORT_R)
527
- IF (HAVE_QSORT_R)
528
- ADD_DEFINITIONS(-DHAVE_QSORT_R)
529
- ENDIF ()
530
-
531
- CHECK_FUNCTION_EXISTS(qsort_s HAVE_QSORT_S)
532
- IF (HAVE_QSORT_S)
533
- ADD_DEFINITIONS(-DHAVE_QSORT_S)
534
- ENDIF ()
535
-
536
238
  IF( NOT CMAKE_CONFIGURATION_TYPES )
537
239
  # Build Debug by default
538
240
  IF (NOT CMAKE_BUILD_TYPE)
@@ -543,177 +245,18 @@ ELSE()
543
245
  # that uses CMAKE_CONFIGURATION_TYPES and not CMAKE_BUILD_TYPE
544
246
  ENDIF()
545
247
 
546
- IF (SECURITY_FOUND)
547
- ADD_DEFINITIONS(-DGIT_SECURE_TRANSPORT)
548
- ADD_DEFINITIONS(-DGIT_HTTPS)
549
- INCLUDE_DIRECTORIES(${SECURITY_INCLUDE_DIR})
550
- ENDIF ()
551
-
552
- IF (OPENSSL_FOUND)
553
- ADD_DEFINITIONS(-DGIT_OPENSSL)
554
- ADD_DEFINITIONS(-DGIT_HTTPS)
555
- INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR})
556
- SET(SSL_LIBRARIES ${OPENSSL_LIBRARIES})
557
- ENDIF()
558
-
559
-
560
-
561
- IF (THREADSAFE)
562
- IF (NOT WIN32)
563
- FIND_PACKAGE(Threads REQUIRED)
564
- ENDIF()
565
-
566
- ADD_DEFINITIONS(-DGIT_THREADS)
567
- ENDIF()
568
-
569
- IF (USE_NSEC)
570
- ADD_DEFINITIONS(-DGIT_USE_NSEC)
571
- ENDIF()
572
-
573
- IF (HAVE_STRUCT_STAT_ST_MTIM)
574
- ADD_DEFINITIONS(-DGIT_USE_STAT_MTIM)
575
- ELSEIF (HAVE_STRUCT_STAT_ST_MTIMESPEC)
576
- ADD_DEFINITIONS(-DGIT_USE_STAT_MTIMESPEC)
577
- ELSEIF (HAVE_STRUCT_STAT_ST_MTIME_NSEC)
578
- ADD_DEFINITIONS(-DGIT_USE_STAT_MTIME_NSEC)
579
- ENDIF()
580
-
581
- ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64)
248
+ ADD_SUBDIRECTORY(src)
582
249
 
583
- # Collect sourcefiles
584
- FILE(GLOB SRC_H include/git2.h include/git2/*.h include/git2/sys/*.h)
585
-
586
- # On Windows use specific platform sources
587
- IF (WIN32 AND NOT CYGWIN)
588
- ADD_DEFINITIONS(-DWIN32 -D_WIN32_WINNT=0x0501)
589
- FILE(GLOB SRC_OS src/win32/*.c src/win32/*.h)
590
- ELSEIF (AMIGA)
591
- ADD_DEFINITIONS(-DNO_ADDRINFO -DNO_READDIR_R -DNO_MMAP)
592
- ELSE()
593
- IF (VALGRIND)
594
- ADD_DEFINITIONS(-DNO_MMAP)
595
- ENDIF()
596
- FILE(GLOB SRC_OS src/unix/*.c src/unix/*.h)
597
- ENDIF()
598
- FILE(GLOB SRC_GIT2 src/*.c src/*.h src/transports/*.c src/transports/*.h src/xdiff/*.c src/xdiff/*.h)
599
-
600
- # Determine architecture of the machine
601
- IF (CMAKE_SIZEOF_VOID_P EQUAL 8)
602
- ADD_DEFINITIONS(-DGIT_ARCH_64)
603
- ELSEIF (CMAKE_SIZEOF_VOID_P EQUAL 4)
604
- ADD_DEFINITIONS(-DGIT_ARCH_32)
605
- ELSEIF (CMAKE_SIZEOF_VOID_P)
606
- MESSAGE(FATAL_ERROR "Unsupported architecture (pointer size is ${CMAKE_SIZEOF_VOID_P} bytes)")
607
- ELSE()
608
- MESSAGE(FATAL_ERROR "Unsupported architecture (CMAKE_SIZEOF_VOID_P is unset)")
609
- ENDIF()
610
-
611
- # Compile and link libgit2
612
- ADD_LIBRARY(git2 ${SRC_H} ${SRC_GIT2} ${SRC_OS} ${SRC_ZLIB} ${SRC_HTTP} ${SRC_REGEX} ${SRC_SSH} ${SRC_SHA1} ${WIN_RC})
613
- TARGET_LINK_LIBRARIES(git2 ${SECURITY_DIRS})
614
- TARGET_LINK_LIBRARIES(git2 ${COREFOUNDATION_DIRS})
615
- TARGET_LINK_LIBRARIES(git2 ${SSL_LIBRARIES})
616
- TARGET_LINK_LIBRARIES(git2 ${SSH_LIBRARIES})
617
- TARGET_LINK_LIBRARIES(git2 ${GSSAPI_LIBRARIES})
618
- TARGET_LINK_LIBRARIES(git2 ${ICONV_LIBRARIES})
619
- TARGET_OS_LIBRARIES(git2)
620
-
621
- # Workaround for Cmake bug #0011240 (see http://public.kitware.com/Bug/view.php?id=11240)
622
- # Win64+MSVC+static libs = linker error
623
- IF(MSVC AND GIT_ARCH_64 AND NOT BUILD_SHARED_LIBS)
624
- SET_TARGET_PROPERTIES(git2 PROPERTIES STATIC_LIBRARY_FLAGS "/MACHINE:x64")
625
- ENDIF()
626
-
627
- IDE_SPLIT_SOURCES(git2)
628
-
629
- IF (SONAME)
630
- SET_TARGET_PROPERTIES(git2 PROPERTIES VERSION ${LIBGIT2_VERSION_STRING})
631
- SET_TARGET_PROPERTIES(git2 PROPERTIES SOVERSION ${LIBGIT2_SOVERSION})
632
- IF (LIBGIT2_FILENAME)
633
- ADD_DEFINITIONS(-DLIBGIT2_FILENAME=\"${LIBGIT2_FILENAME}\")
634
- SET_TARGET_PROPERTIES(git2 PROPERTIES OUTPUT_NAME ${LIBGIT2_FILENAME})
635
- ELSEIF (DEFINED LIBGIT2_PREFIX)
636
- SET_TARGET_PROPERTIES(git2 PROPERTIES PREFIX "${LIBGIT2_PREFIX}")
637
- ENDIF()
638
- ENDIF()
639
- STRING(REPLACE ";" " " LIBGIT2_PC_LIBS "${LIBGIT2_PC_LIBS}")
640
- CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/libgit2.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libgit2.pc @ONLY)
641
-
642
- IF (MSVC_IDE)
643
- # Precompiled headers
644
- SET_TARGET_PROPERTIES(git2 PROPERTIES COMPILE_FLAGS "/Yuprecompiled.h /FIprecompiled.h")
645
- SET_SOURCE_FILES_PROPERTIES(src/win32/precompiled.c COMPILE_FLAGS "/Ycprecompiled.h")
250
+ # Tests
251
+ IF (NOT MSVC)
252
+ IF (NOT BUILD_SHARED_LIBS)
253
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
254
+ ENDIF()
646
255
  ENDIF ()
647
256
 
648
- # Install
649
- INSTALL(TARGETS git2
650
- RUNTIME DESTINATION ${BIN_INSTALL_DIR}
651
- LIBRARY DESTINATION ${LIB_INSTALL_DIR}
652
- ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
653
- )
654
- INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libgit2.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig )
655
- INSTALL(DIRECTORY include/git2 DESTINATION ${INCLUDE_INSTALL_DIR} )
656
- INSTALL(FILES include/git2.h DESTINATION ${INCLUDE_INSTALL_DIR} )
657
-
658
- # Tests
659
257
  IF (BUILD_CLAR)
660
- FIND_PACKAGE(PythonInterp)
661
-
662
- IF(NOT PYTHONINTERP_FOUND)
663
- MESSAGE(FATAL_ERROR "Could not find a python interpeter, which is needed to build the tests. "
664
- "Make sure python is available, or pass -DBUILD_CLAR=OFF to skip building the tests")
665
- ENDIF()
666
-
667
- SET(CLAR_FIXTURES "${CMAKE_CURRENT_SOURCE_DIR}/tests/resources/")
668
- SET(CLAR_PATH "${CMAKE_CURRENT_SOURCE_DIR}/tests")
669
- SET(CLAR_RESOURCES "${CMAKE_CURRENT_SOURCE_DIR}/tests/resources" CACHE PATH "Path to test resources.")
670
- ADD_DEFINITIONS(-DCLAR_FIXTURE_PATH=\"${CLAR_FIXTURES}\")
671
- ADD_DEFINITIONS(-DCLAR_RESOURCES=\"${TEST_RESOURCES}\")
672
- ADD_DEFINITIONS(-DCLAR_TMPDIR=\"libgit2_tests\")
673
-
674
- INCLUDE_DIRECTORIES(${CLAR_PATH})
675
- FILE(GLOB_RECURSE SRC_TEST ${CLAR_PATH}/*/*.c ${CLAR_PATH}/*/*.h)
676
- SET(SRC_CLAR "${CLAR_PATH}/main.c" "${CLAR_PATH}/clar_libgit2.c" "${CLAR_PATH}/clar_libgit2_trace.c" "${CLAR_PATH}/clar_libgit2_timer.c" "${CLAR_PATH}/clar.c")
677
-
678
- ADD_CUSTOM_COMMAND(
679
- OUTPUT ${CLAR_PATH}/clar.suite
680
- COMMAND ${PYTHON_EXECUTABLE} generate.py -f -xonline -xstress .
681
- DEPENDS ${SRC_TEST}
682
- WORKING_DIRECTORY ${CLAR_PATH}
683
- )
684
-
685
- SET_SOURCE_FILES_PROPERTIES(
686
- ${CLAR_PATH}/clar.c
687
- PROPERTIES OBJECT_DEPENDS ${CLAR_PATH}/clar.suite)
688
-
689
- ADD_EXECUTABLE(libgit2_clar ${SRC_H} ${SRC_GIT2} ${SRC_OS} ${SRC_CLAR} ${SRC_TEST} ${SRC_ZLIB} ${SRC_HTTP} ${SRC_REGEX} ${SRC_SSH} ${SRC_SHA1})
690
-
691
- TARGET_LINK_LIBRARIES(libgit2_clar ${COREFOUNDATION_DIRS})
692
- TARGET_LINK_LIBRARIES(libgit2_clar ${SECURITY_DIRS})
693
- TARGET_LINK_LIBRARIES(libgit2_clar ${SSL_LIBRARIES})
694
- TARGET_LINK_LIBRARIES(libgit2_clar ${SSH_LIBRARIES})
695
- TARGET_LINK_LIBRARIES(libgit2_clar ${GSSAPI_LIBRARIES})
696
- TARGET_LINK_LIBRARIES(libgit2_clar ${ICONV_LIBRARIES})
697
- TARGET_OS_LIBRARIES(libgit2_clar)
698
- IDE_SPLIT_SOURCES(libgit2_clar)
699
-
700
- IF (MSVC_IDE)
701
- # Precompiled headers
702
- SET_TARGET_PROPERTIES(libgit2_clar PROPERTIES COMPILE_FLAGS "/Yuprecompiled.h /FIprecompiled.h")
703
- ENDIF ()
704
-
705
258
  ENABLE_TESTING()
706
- IF (WINHTTP OR OPENSSL_FOUND OR SECURITY_FOUND)
707
- ADD_TEST(libgit2_clar libgit2_clar -ionline -xclone::local::git_style_unc_paths -xclone::local::standard_unc_paths_are_written_git_style)
708
- ELSE ()
709
- ADD_TEST(libgit2_clar libgit2_clar -v -xclone::local::git_style_unc_paths -xclone::local::standard_unc_paths_are_written_git_style)
710
- ENDIF ()
711
-
712
- # Add a test target which runs the cred callback tests, to be
713
- # called after setting the url and user
714
- ADD_TEST(libgit2_clar-cred_callback libgit2_clar -v -sonline::clone::cred_callback)
715
- ADD_TEST(libgit2_clar-proxy_credentials_in_url libgit2_clar -v -sonline::clone::proxy_credentials_in_url)
716
- ADD_TEST(libgit2_clar-proxy_credentials_request libgit2_clar -v -sonline::clone::proxy_credentials_request)
259
+ ADD_SUBDIRECTORY(tests)
717
260
  ENDIF ()
718
261
 
719
262
  IF (TAGS)
@@ -738,3 +281,11 @@ ENDIF ()
738
281
  IF (BUILD_EXAMPLES)
739
282
  ADD_SUBDIRECTORY(examples)
740
283
  ENDIF ()
284
+
285
+ IF(CMAKE_VERSION VERSION_GREATER 3)
286
+ FEATURE_SUMMARY(WHAT ENABLED_FEATURES DESCRIPTION "Enabled features:")
287
+ FEATURE_SUMMARY(WHAT DISABLED_FEATURES DESCRIPTION "Disabled features:")
288
+ ELSE()
289
+ PRINT_ENABLED_FEATURES()
290
+ PRINT_DISABLED_FEATURES()
291
+ ENDIF()