rugged 1.4.5 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (424) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/ext/rugged/extconf.rb +1 -0
  4. data/ext/rugged/rugged.c +16 -0
  5. data/ext/rugged/rugged.h +4 -0
  6. data/ext/rugged/rugged_remote.c +10 -10
  7. data/ext/rugged/rugged_repo.c +2 -7
  8. data/ext/rugged/rugged_settings.c +5 -0
  9. data/lib/rugged/tree.rb +4 -0
  10. data/lib/rugged/version.rb +1 -1
  11. data/vendor/libgit2/CMakeLists.txt +16 -3
  12. data/vendor/libgit2/COPYING +40 -0
  13. data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
  14. data/vendor/libgit2/cmake/FindPCRE.cmake +3 -4
  15. data/vendor/libgit2/cmake/FindPCRE2.cmake +1 -1
  16. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +1 -1
  17. data/vendor/libgit2/cmake/SelectHashes.cmake +62 -14
  18. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +3 -1
  19. data/vendor/libgit2/include/git2/branch.h +2 -2
  20. data/vendor/libgit2/include/git2/common.h +11 -0
  21. data/vendor/libgit2/include/git2/config.h +6 -6
  22. data/vendor/libgit2/include/git2/deprecated.h +2 -0
  23. data/vendor/libgit2/include/git2/errors.h +17 -3
  24. data/vendor/libgit2/include/git2/merge.h +1 -1
  25. data/vendor/libgit2/include/git2/status.h +5 -2
  26. data/vendor/libgit2/include/git2/sys/remote.h +15 -0
  27. data/vendor/libgit2/include/git2/sys/transport.h +9 -5
  28. data/vendor/libgit2/include/git2/version.h +27 -6
  29. data/vendor/libgit2/src/CMakeLists.txt +104 -214
  30. data/vendor/libgit2/src/README.md +12 -0
  31. data/vendor/libgit2/src/cli/CMakeLists.txt +53 -0
  32. data/vendor/libgit2/src/cli/README.md +26 -0
  33. data/vendor/libgit2/src/cli/cli.h +20 -0
  34. data/vendor/libgit2/src/cli/cmd.c +21 -0
  35. data/vendor/libgit2/src/cli/cmd.h +33 -0
  36. data/vendor/libgit2/src/cli/cmd_cat_file.c +204 -0
  37. data/vendor/libgit2/src/cli/cmd_clone.c +176 -0
  38. data/vendor/libgit2/src/cli/cmd_hash_object.c +135 -0
  39. data/vendor/libgit2/src/cli/cmd_help.c +86 -0
  40. data/vendor/libgit2/src/cli/error.h +51 -0
  41. data/vendor/libgit2/src/cli/main.c +106 -0
  42. data/vendor/libgit2/src/cli/opt.c +669 -0
  43. data/vendor/libgit2/src/cli/opt.h +349 -0
  44. data/vendor/libgit2/src/cli/opt_usage.c +194 -0
  45. data/vendor/libgit2/src/cli/opt_usage.h +35 -0
  46. data/vendor/libgit2/src/cli/progress.c +345 -0
  47. data/vendor/libgit2/src/cli/progress.h +117 -0
  48. data/vendor/libgit2/src/cli/sighandler.h +20 -0
  49. data/vendor/libgit2/src/cli/unix/sighandler.c +36 -0
  50. data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
  51. data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
  52. data/vendor/libgit2/src/features.h.in +9 -0
  53. data/vendor/libgit2/src/libgit2/CMakeLists.txt +131 -0
  54. data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +1 -1
  55. data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +14 -9
  56. data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +20 -17
  57. data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +1 -1
  58. data/vendor/libgit2/src/libgit2/common.h +55 -0
  59. data/vendor/libgit2/src/{config.c → libgit2/config.c} +2 -2
  60. data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +1 -1
  61. data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +1 -0
  62. data/vendor/libgit2/src/{errors.h → libgit2/errors.h} +1 -2
  63. data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +31 -1
  64. data/vendor/libgit2/src/{index.c → libgit2/index.c} +6 -6
  65. data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +2 -2
  66. data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +3 -3
  67. data/vendor/libgit2/src/{libgit2.c → libgit2/libgit2.c} +5 -0
  68. data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +20 -23
  69. data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +2 -1
  70. data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +9 -9
  71. data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +1 -1
  72. data/vendor/libgit2/src/{netops.c → libgit2/netops.c} +0 -1
  73. data/vendor/libgit2/src/{object.c → libgit2/object.c} +1 -0
  74. data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +2 -2
  75. data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +2 -21
  76. data/vendor/libgit2/src/{oid.h → libgit2/oid.h} +35 -2
  77. data/vendor/libgit2/src/{oidmap.c → libgit2/oidmap.c} +1 -1
  78. data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +24 -18
  79. data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +3 -2
  80. data/vendor/libgit2/src/{path.c → libgit2/path.c} +1 -0
  81. data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +11 -1
  82. data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +6 -2
  83. data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +1 -1
  84. data/vendor/libgit2/src/{remote.h → libgit2/remote.h} +1 -1
  85. data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +1 -0
  86. data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +15 -5
  87. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +1 -1
  88. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +12 -0
  89. data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.c +91 -326
  90. data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +1 -1
  91. data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +16 -23
  92. data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +1 -1
  93. data/vendor/libgit2/src/util/CMakeLists.txt +74 -0
  94. data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.h +1 -1
  95. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
  96. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
  97. data/vendor/libgit2/src/{array.h → util/array.h} +1 -1
  98. data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
  99. data/vendor/libgit2/src/{date.c → util/date.c} +4 -3
  100. data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +1 -1
  101. data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +1 -1
  102. data/vendor/libgit2/src/{fs_path.c → util/fs_path.c} +17 -11
  103. data/vendor/libgit2/src/{fs_path.h → util/fs_path.h} +1 -1
  104. data/vendor/libgit2/src/{futils.c → util/futils.c} +44 -2
  105. data/vendor/libgit2/src/{futils.h → util/futils.h} +2 -1
  106. data/vendor/libgit2/src/{common.h → util/git2_util.h} +13 -59
  107. data/vendor/libgit2/src/util/hash/builtin.c +53 -0
  108. data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
  109. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +1 -1
  110. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
  111. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.c +55 -0
  112. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
  113. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.c +46 -0
  114. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
  115. data/vendor/libgit2/src/util/hash/openssl.c +194 -0
  116. data/vendor/libgit2/src/util/hash/openssl.h +45 -0
  117. data/vendor/libgit2/src/util/hash/rfc6234/sha.h +355 -0
  118. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
  119. data/vendor/libgit2/src/util/hash/sha.h +70 -0
  120. data/vendor/libgit2/src/util/hash/win32.c +549 -0
  121. data/vendor/libgit2/src/util/hash/win32.h +60 -0
  122. data/vendor/libgit2/src/{hash.c → util/hash.c} +17 -1
  123. data/vendor/libgit2/src/{hash.h → util/hash.h} +5 -3
  124. data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
  125. data/vendor/libgit2/src/{net.c → util/net.c} +0 -1
  126. data/vendor/libgit2/src/{net.h → util/net.h} +1 -1
  127. data/vendor/libgit2/src/{pool.h → util/pool.h} +1 -1
  128. data/vendor/libgit2/src/{posix.h → util/posix.h} +1 -1
  129. data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +1 -1
  130. data/vendor/libgit2/src/{rand.c → util/rand.c} +7 -3
  131. data/vendor/libgit2/src/{rand.h → util/rand.h} +1 -1
  132. data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
  133. data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
  134. data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
  135. data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +1 -1
  136. data/vendor/libgit2/src/{str.h → util/str.h} +1 -1
  137. data/vendor/libgit2/src/{strmap.h → util/strmap.h} +1 -1
  138. data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
  139. data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
  140. data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -1
  141. data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -1
  142. data/vendor/libgit2/src/{unix → util/unix}/realpath.c +1 -1
  143. data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
  144. data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
  145. data/vendor/libgit2/src/{util.c → util/util.c} +1 -1
  146. data/vendor/libgit2/src/{util.h → util/util.h} +1 -1
  147. data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
  148. data/vendor/libgit2/src/{vector.h → util/vector.h} +1 -1
  149. data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
  150. data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
  151. data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
  152. data/vendor/libgit2/src/{win32 → util/win32}/findfile.h +1 -1
  153. data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
  154. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +1 -1
  155. data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -1
  156. data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +1 -1
  157. data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
  158. data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
  159. data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
  160. data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.h +1 -1
  161. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +1 -1
  162. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
  163. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
  164. data/vendor/libgit2/src/{zstream.h → util/zstream.h} +1 -1
  165. metadata +390 -361
  166. data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
  167. data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
  168. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  169. data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
  170. data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
  171. data/vendor/libgit2/src/hash/sha1.h +0 -40
  172. /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
  173. /data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +0 -0
  174. /data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +0 -0
  175. /data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +0 -0
  176. /data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +0 -0
  177. /data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +0 -0
  178. /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
  179. /data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +0 -0
  180. /data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +0 -0
  181. /data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +0 -0
  182. /data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +0 -0
  183. /data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +0 -0
  184. /data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +0 -0
  185. /data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +0 -0
  186. /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
  187. /data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +0 -0
  188. /data/vendor/libgit2/src/{branch.h → libgit2/branch.h} +0 -0
  189. /data/vendor/libgit2/src/{buf.c → libgit2/buf.c} +0 -0
  190. /data/vendor/libgit2/src/{buf.h → libgit2/buf.h} +0 -0
  191. /data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +0 -0
  192. /data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +0 -0
  193. /data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +0 -0
  194. /data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -0
  195. /data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +0 -0
  196. /data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +0 -0
  197. /data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +0 -0
  198. /data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +0 -0
  199. /data/vendor/libgit2/src/{commit.h → libgit2/commit.h} +0 -0
  200. /data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +0 -0
  201. /data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +0 -0
  202. /data/vendor/libgit2/src/{config.h → libgit2/config.h} +0 -0
  203. /data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +0 -0
  204. /data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +0 -0
  205. /data/vendor/libgit2/src/{config_entries.c → libgit2/config_entries.c} +0 -0
  206. /data/vendor/libgit2/src/{config_entries.h → libgit2/config_entries.h} +0 -0
  207. /data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +0 -0
  208. /data/vendor/libgit2/src/{config_mem.c → libgit2/config_mem.c} +0 -0
  209. /data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +0 -0
  210. /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
  211. /data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +0 -0
  212. /data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +0 -0
  213. /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
  214. /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
  215. /data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +0 -0
  216. /data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +0 -0
  217. /data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +0 -0
  218. /data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +0 -0
  219. /data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +0 -0
  220. /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
  221. /data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +0 -0
  222. /data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +0 -0
  223. /data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +0 -0
  224. /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
  225. /data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +0 -0
  226. /data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +0 -0
  227. /data/vendor/libgit2/src/{diff_stats.h → libgit2/diff_stats.h} +0 -0
  228. /data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +0 -0
  229. /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
  230. /data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +0 -0
  231. /data/vendor/libgit2/src/{email.c → libgit2/email.c} +0 -0
  232. /data/vendor/libgit2/src/{email.h → libgit2/email.h} +0 -0
  233. /data/vendor/libgit2/src/{errors.c → libgit2/errors.c} +0 -0
  234. /data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +0 -0
  235. /data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +0 -0
  236. /data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +0 -0
  237. /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
  238. /data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +0 -0
  239. /data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +0 -0
  240. /data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +0 -0
  241. /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
  242. /data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +0 -0
  243. /data/vendor/libgit2/src/{idxmap.c → libgit2/idxmap.c} +0 -0
  244. /data/vendor/libgit2/src/{idxmap.h → libgit2/idxmap.h} +0 -0
  245. /data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +0 -0
  246. /data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +0 -0
  247. /data/vendor/libgit2/src/{index.h → libgit2/index.h} +0 -0
  248. /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
  249. /data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +0 -0
  250. /data/vendor/libgit2/src/{libgit2.h → libgit2/libgit2.h} +0 -0
  251. /data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +0 -0
  252. /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
  253. /data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +0 -0
  254. /data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +0 -0
  255. /data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +0 -0
  256. /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
  257. /data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +0 -0
  258. /data/vendor/libgit2/src/{message.c → libgit2/message.c} +0 -0
  259. /data/vendor/libgit2/src/{netops.h → libgit2/netops.h} +0 -0
  260. /data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +0 -0
  261. /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
  262. /data/vendor/libgit2/src/{object.h → libgit2/object.h} +0 -0
  263. /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
  264. /data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +0 -0
  265. /data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +0 -0
  266. /data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +0 -0
  267. /data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +0 -0
  268. /data/vendor/libgit2/src/{offmap.c → libgit2/offmap.c} +0 -0
  269. /data/vendor/libgit2/src/{offmap.h → libgit2/offmap.h} +0 -0
  270. /data/vendor/libgit2/src/{oidarray.c → libgit2/oidarray.c} +0 -0
  271. /data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +0 -0
  272. /data/vendor/libgit2/src/{oidmap.h → libgit2/oidmap.h} +0 -0
  273. /data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +0 -0
  274. /data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +0 -0
  275. /data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +0 -0
  276. /data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +0 -0
  277. /data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +0 -0
  278. /data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +0 -0
  279. /data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +0 -0
  280. /data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +0 -0
  281. /data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +0 -0
  282. /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
  283. /data/vendor/libgit2/src/{path.h → libgit2/path.h} +0 -0
  284. /data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +0 -0
  285. /data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +0 -0
  286. /data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +0 -0
  287. /data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +0 -0
  288. /data/vendor/libgit2/src/{push.c → libgit2/push.c} +0 -0
  289. /data/vendor/libgit2/src/{push.h → libgit2/push.h} +0 -0
  290. /data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +0 -0
  291. /data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +0 -0
  292. /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
  293. /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
  294. /data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +0 -0
  295. /data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +0 -0
  296. /data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +0 -0
  297. /data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +0 -0
  298. /data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +0 -0
  299. /data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +0 -0
  300. /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
  301. /data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +0 -0
  302. /data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +0 -0
  303. /data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +0 -0
  304. /data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +0 -0
  305. /data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +0 -0
  306. /data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +0 -0
  307. /data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +0 -0
  308. /data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +0 -0
  309. /data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +0 -0
  310. /data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +0 -0
  311. /data/vendor/libgit2/src/{status.c → libgit2/status.c} +0 -0
  312. /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
  313. /data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +0 -0
  314. /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
  315. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +0 -0
  316. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
  317. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +0 -0
  318. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +0 -0
  319. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +0 -0
  320. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +0 -0
  321. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
  322. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
  323. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
  324. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
  325. /data/vendor/libgit2/src/{streams → libgit2/streams}/socket.c +0 -0
  326. /data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +0 -0
  327. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +0 -0
  328. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
  329. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +0 -0
  330. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
  331. /data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +0 -0
  332. /data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +0 -0
  333. /data/vendor/libgit2/src/{sysdir.c → libgit2/sysdir.c} +0 -0
  334. /data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +0 -0
  335. /data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +0 -0
  336. /data/vendor/libgit2/src/{threadstate.c → libgit2/threadstate.c} +0 -0
  337. /data/vendor/libgit2/src/{threadstate.h → libgit2/threadstate.h} +0 -0
  338. /data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +0 -0
  339. /data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +0 -0
  340. /data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +0 -0
  341. /data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +0 -0
  342. /data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +0 -0
  343. /data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +0 -0
  344. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +0 -0
  345. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +0 -0
  346. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.c +0 -0
  347. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +0 -0
  348. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.c +0 -0
  349. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +0 -0
  350. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +0 -0
  351. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
  352. /data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +0 -0
  353. /data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +0 -0
  354. /data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -0
  355. /data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +0 -0
  356. /data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +0 -0
  357. /data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +0 -0
  358. /data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +0 -0
  359. /data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +0 -0
  360. /data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.h +0 -0
  361. /data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +0 -0
  362. /data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +0 -0
  363. /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
  364. /data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +0 -0
  365. /data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +0 -0
  366. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/git-xdiff.h +0 -0
  367. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiff.h +0 -0
  368. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.c +0 -0
  369. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.h +0 -0
  370. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.c +0 -0
  371. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.h +0 -0
  372. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xhistogram.c +0 -0
  373. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xinclude.h +0 -0
  374. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmacros.h +0 -0
  375. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmerge.c +0 -0
  376. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xpatience.c +0 -0
  377. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.c +0 -0
  378. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.h +0 -0
  379. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xtypes.h +0 -0
  380. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.c +0 -0
  381. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.h +0 -0
  382. /data/vendor/libgit2/src/{alloc.c → util/alloc.c} +0 -0
  383. /data/vendor/libgit2/src/{alloc.h → util/alloc.h} +0 -0
  384. /data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.c +0 -0
  385. /data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.c +0 -0
  386. /data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.c +0 -0
  387. /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
  388. /data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +0 -0
  389. /data/vendor/libgit2/src/{date.h → util/date.h} +0 -0
  390. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +0 -0
  391. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
  392. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
  393. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
  394. /data/vendor/libgit2/src/{integer.h → util/integer.h} +0 -0
  395. /data/vendor/libgit2/src/{khash.h → util/khash.h} +0 -0
  396. /data/vendor/libgit2/src/{pool.c → util/pool.c} +0 -0
  397. /data/vendor/libgit2/src/{posix.c → util/posix.c} +0 -0
  398. /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
  399. /data/vendor/libgit2/src/{regexp.c → util/regexp.c} +0 -0
  400. /data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +0 -0
  401. /data/vendor/libgit2/src/{str.c → util/str.c} +0 -0
  402. /data/vendor/libgit2/src/{strmap.c → util/strmap.c} +0 -0
  403. /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
  404. /data/vendor/libgit2/src/{thread.h → util/thread.h} +0 -0
  405. /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
  406. /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
  407. /data/vendor/libgit2/src/{vector.c → util/vector.c} +0 -0
  408. /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
  409. /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
  410. /data/vendor/libgit2/src/{win32 → util/win32}/error.c +0 -0
  411. /data/vendor/libgit2/src/{win32 → util/win32}/findfile.c +0 -0
  412. /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
  413. /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
  414. /data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +0 -0
  415. /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
  416. /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
  417. /data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.c +0 -0
  418. /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
  419. /data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +0 -0
  420. /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
  421. /data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +0 -0
  422. /data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +0 -0
  423. /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
  424. /data/vendor/libgit2/src/{zstream.c → util/zstream.c} +0 -0
@@ -101,7 +101,7 @@ static int write_file_stream(
101
101
  git_oid *id, git_odb *odb, const char *path, git_object_size_t file_size)
102
102
  {
103
103
  int fd, error;
104
- char buffer[FILEIO_BUFSIZE];
104
+ char buffer[GIT_BUFSIZE_FILEIO];
105
105
  git_odb_stream *stream = NULL;
106
106
  ssize_t read_len = -1;
107
107
  git_object_size_t written = 0;
@@ -53,6 +53,17 @@ static int not_a_local_branch(const char *reference_name)
53
53
  return -1;
54
54
  }
55
55
 
56
+ static bool branch_name_is_valid(const char *branch_name)
57
+ {
58
+ /*
59
+ * Discourage branch name starting with dash,
60
+ * https://github.com/git/git/commit/6348624010888b
61
+ * and discourage HEAD as branch name,
62
+ * https://github.com/git/git/commit/a625b092cc5994
63
+ */
64
+ return branch_name[0] != '-' && git__strcmp(branch_name, "HEAD");
65
+ }
66
+
56
67
  static int create_branch(
57
68
  git_reference **ref_out,
58
69
  git_repository *repository,
@@ -73,8 +84,8 @@ static int create_branch(
73
84
  GIT_ASSERT_ARG(ref_out);
74
85
  GIT_ASSERT_ARG(git_commit_owner(commit) == repository);
75
86
 
76
- if (!git__strcmp(branch_name, "HEAD")) {
77
- git_error_set(GIT_ERROR_REFERENCE, "'HEAD' is not a valid branch name");
87
+ if (!branch_name_is_valid(branch_name)) {
88
+ git_error_set(GIT_ERROR_REFERENCE, "'%s' is not a valid branch name", branch_name);
78
89
  error = -1;
79
90
  goto cleanup;
80
91
  }
@@ -797,13 +808,7 @@ int git_branch_name_is_valid(int *valid, const char *name)
797
808
 
798
809
  *valid = 0;
799
810
 
800
- /*
801
- * Discourage branch name starting with dash,
802
- * https://github.com/git/git/commit/6348624010888b
803
- * and discourage HEAD as branch name,
804
- * https://github.com/git/git/commit/a625b092cc5994
805
- */
806
- if (!name || name[0] == '-' || !git__strcmp(name, "HEAD"))
811
+ if (!name || !branch_name_is_valid(name))
807
812
  goto done;
808
813
 
809
814
  if ((error = git_str_puts(&ref_name, GIT_REFS_HEADS_DIR)) < 0 ||
@@ -138,7 +138,7 @@ static int commit_graph_parse_oid_lookup(
138
138
  struct git_commit_graph_chunk *chunk_oid_lookup)
139
139
  {
140
140
  uint32_t i;
141
- git_oid *oid, *prev_oid, zero_oid = {{0}};
141
+ unsigned char *oid, *prev_oid, zero_oid[GIT_OID_RAWSZ] = {0};
142
142
 
143
143
  if (chunk_oid_lookup->offset == 0)
144
144
  return commit_graph_error("missing OID Lookup chunk");
@@ -147,10 +147,10 @@ static int commit_graph_parse_oid_lookup(
147
147
  if (chunk_oid_lookup->length != file->num_commits * GIT_OID_RAWSZ)
148
148
  return commit_graph_error("OID Lookup chunk has wrong length");
149
149
 
150
- file->oid_lookup = oid = (git_oid *)(data + chunk_oid_lookup->offset);
151
- prev_oid = &zero_oid;
152
- for (i = 0; i < file->num_commits; ++i, ++oid) {
153
- if (git_oid_cmp(prev_oid, oid) >= 0)
150
+ file->oid_lookup = oid = (unsigned char *)(data + chunk_oid_lookup->offset);
151
+ prev_oid = zero_oid;
152
+ for (i = 0; i < file->num_commits; ++i, oid += GIT_OID_RAWSZ) {
153
+ if (git_oid_raw_cmp(prev_oid, oid) >= 0)
154
154
  return commit_graph_error("OID Lookup index is non-monotonic");
155
155
  prev_oid = oid;
156
156
  }
@@ -437,7 +437,7 @@ static int git_commit_graph_entry_get_byindex(
437
437
  }
438
438
 
439
439
  commit_data = file->commit_data + pos * (GIT_OID_RAWSZ + 4 * sizeof(uint32_t));
440
- git_oid_cpy(&e->tree_oid, (const git_oid *)commit_data);
440
+ git_oid_fromraw(&e->tree_oid, commit_data);
441
441
  e->parent_indices[0] = ntohl(*((uint32_t *)(commit_data + GIT_OID_RAWSZ)));
442
442
  e->parent_indices[1] = ntohl(
443
443
  *((uint32_t *)(commit_data + GIT_OID_RAWSZ + sizeof(uint32_t))));
@@ -470,7 +470,8 @@ static int git_commit_graph_entry_get_byindex(
470
470
  e->parent_count++;
471
471
  }
472
472
  }
473
- git_oid_cpy(&e->sha1, &file->oid_lookup[pos]);
473
+
474
+ git_oid_fromraw(&e->sha1, &file->oid_lookup[pos * GIT_OID_RAWSZ]);
474
475
  return 0;
475
476
  }
476
477
 
@@ -514,7 +515,7 @@ int git_commit_graph_entry_find(
514
515
  {
515
516
  int pos, found = 0;
516
517
  uint32_t hi, lo;
517
- const git_oid *current = NULL;
518
+ const unsigned char *current = NULL;
518
519
 
519
520
  GIT_ASSERT_ARG(e);
520
521
  GIT_ASSERT_ARG(file);
@@ -528,26 +529,25 @@ int git_commit_graph_entry_find(
528
529
  if (pos >= 0) {
529
530
  /* An object matching exactly the oid was found */
530
531
  found = 1;
531
- current = file->oid_lookup + pos;
532
+ current = file->oid_lookup + (pos * GIT_OID_RAWSZ);
532
533
  } else {
533
534
  /* No object was found */
534
535
  /* pos refers to the object with the "closest" oid to short_oid */
535
536
  pos = -1 - pos;
536
537
  if (pos < (int)file->num_commits) {
537
- current = file->oid_lookup + pos;
538
+ current = file->oid_lookup + (pos * GIT_OID_RAWSZ);
538
539
 
539
- if (!git_oid_ncmp(short_oid, current, len))
540
+ if (!git_oid_raw_ncmp(short_oid->id, current, len))
540
541
  found = 1;
541
542
  }
542
543
  }
543
544
 
544
545
  if (found && len != GIT_OID_HEXSZ && pos + 1 < (int)file->num_commits) {
545
546
  /* Check for ambiguousity */
546
- const git_oid *next = current + 1;
547
+ const unsigned char *next = current + GIT_OID_RAWSZ;
547
548
 
548
- if (!git_oid_ncmp(short_oid, next, len)) {
549
+ if (!git_oid_raw_ncmp(short_oid->id, next, len))
549
550
  found = 2;
550
- }
551
551
  }
552
552
 
553
553
  if (!found)
@@ -1019,7 +1019,9 @@ static int commit_graph_write(
1019
1019
  /* Fill the OID Lookup table. */
1020
1020
  git_vector_foreach (&w->commits, i, packed_commit) {
1021
1021
  error = git_str_put(&oid_lookup,
1022
- (const char *)&packed_commit->sha1, sizeof(git_oid));
1022
+ (const char *)&packed_commit->sha1.id,
1023
+ GIT_OID_RAWSZ);
1024
+
1023
1025
  if (error < 0)
1024
1026
  goto cleanup;
1025
1027
  }
@@ -1034,8 +1036,9 @@ static int commit_graph_write(
1034
1036
  unsigned int parentcount = (unsigned int)git_array_size(packed_commit->parents);
1035
1037
 
1036
1038
  error = git_str_put(&commit_data,
1037
- (const char *)&packed_commit->tree_oid,
1038
- sizeof(git_oid));
1039
+ (const char *)&packed_commit->tree_oid.id,
1040
+ GIT_OID_RAWSZ);
1041
+
1039
1042
  if (error < 0)
1040
1043
  goto cleanup;
1041
1044
 
@@ -36,7 +36,7 @@ typedef struct git_commit_graph_file {
36
36
  uint32_t num_commits;
37
37
 
38
38
  /* The OID Lookup table. */
39
- git_oid *oid_lookup;
39
+ unsigned char *oid_lookup;
40
40
 
41
41
  /*
42
42
  * The Commit Data table. Each entry contains the OID of the commit followed
@@ -0,0 +1,55 @@
1
+ /*
2
+ * Copyright (C) the libgit2 contributors. All rights reserved.
3
+ *
4
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
5
+ * a Linking Exception. For full terms see the included COPYING file.
6
+ */
7
+ #ifndef INCLUDE_common_h__
8
+ #define INCLUDE_common_h__
9
+
10
+ #include "git2_util.h"
11
+ #include "errors.h"
12
+
13
+ /*
14
+ * Include the declarations for deprecated functions; this ensures
15
+ * that they're decorated with the proper extern/visibility attributes.
16
+ */
17
+ #include "git2/deprecated.h"
18
+
19
+ #include "posix.h"
20
+
21
+ /**
22
+ * Initialize a structure with a version.
23
+ */
24
+ GIT_INLINE(void) git__init_structure(void *structure, size_t len, unsigned int version)
25
+ {
26
+ memset(structure, 0, len);
27
+ *((int*)structure) = version;
28
+ }
29
+ #define GIT_INIT_STRUCTURE(S,V) git__init_structure(S, sizeof(*S), V)
30
+
31
+ #define GIT_INIT_STRUCTURE_FROM_TEMPLATE(PTR,VERSION,TYPE,TPL) do { \
32
+ TYPE _tmpl = TPL; \
33
+ GIT_ERROR_CHECK_VERSION(&(VERSION), _tmpl.version, #TYPE); \
34
+ memcpy((PTR), &_tmpl, sizeof(_tmpl)); } while (0)
35
+
36
+ /**
37
+ * Check a versioned structure for validity
38
+ */
39
+ GIT_INLINE(int) git_error__check_version(const void *structure, unsigned int expected_max, const char *name)
40
+ {
41
+ unsigned int actual;
42
+
43
+ if (!structure)
44
+ return 0;
45
+
46
+ actual = *(const unsigned int*)structure;
47
+ if (actual > 0 && actual <= expected_max)
48
+ return 0;
49
+
50
+ git_error_set(GIT_ERROR_INVALID, "invalid version %d on %s", actual, name);
51
+ return -1;
52
+ }
53
+ #define GIT_ERROR_CHECK_VERSION(S,V,N) if (git_error__check_version(S,V,N) < 0) return -1
54
+
55
+ #endif
@@ -1137,7 +1137,7 @@ int git_config__find_global(git_str *path)
1137
1137
 
1138
1138
  int git_config_find_xdg(git_buf *path)
1139
1139
  {
1140
- GIT_BUF_WRAP_PRIVATE(path, git_sysdir_find_global_file, GIT_CONFIG_FILENAME_XDG);
1140
+ GIT_BUF_WRAP_PRIVATE(path, git_sysdir_find_xdg_file, GIT_CONFIG_FILENAME_XDG);
1141
1141
  }
1142
1142
 
1143
1143
  int git_config__find_xdg(git_str *path)
@@ -1147,7 +1147,7 @@ int git_config__find_xdg(git_str *path)
1147
1147
 
1148
1148
  int git_config_find_system(git_buf *path)
1149
1149
  {
1150
- GIT_BUF_WRAP_PRIVATE(path, git_sysdir_find_global_file, GIT_CONFIG_FILENAME_SYSTEM);
1150
+ GIT_BUF_WRAP_PRIVATE(path, git_sysdir_find_system_file, GIT_CONFIG_FILENAME_SYSTEM);
1151
1151
  }
1152
1152
 
1153
1153
  int git_config__find_system(git_str *path)
@@ -652,7 +652,7 @@ int git_describe_commit(
652
652
  {
653
653
  struct get_name_data data;
654
654
  struct commit_name *name;
655
- git_commit *commit = NULL;
655
+ git_commit *commit;
656
656
  int error = -1;
657
657
  git_describe_options normalized;
658
658
 
@@ -11,6 +11,7 @@
11
11
  #include "diff.h"
12
12
  #include "diff_driver.h"
13
13
  #include "patch_generate.h"
14
+ #include "utf8.h"
14
15
 
15
16
  static int git_xdiff_scan_int(const char **str, int *value)
16
17
  {
@@ -11,9 +11,8 @@
11
11
  #include "common.h"
12
12
 
13
13
  /*
14
- * Set the error message for this thread, formatting as needed.
14
+ * `vprintf`-style formatting for the error message for this thread.
15
15
  */
16
- void git_error_set(int error_class, const char *fmt, ...) GIT_FORMAT_PRINTF(2, 3);
17
16
  void git_error_vset(int error_class, const char *fmt, va_list ap);
18
17
 
19
18
  /**
@@ -893,6 +893,17 @@ static int buffered_stream_write(
893
893
  return git_str_put(&buffered_stream->input, buffer, len);
894
894
  }
895
895
 
896
+ #ifndef GIT_DEPRECATE_HARD
897
+ # define BUF_TO_STRUCT(b, s) \
898
+ (b)->ptr = (s)->ptr; \
899
+ (b)->size = (s)->size; \
900
+ (b)->reserved = (s)->asize;
901
+ # define STRUCT_TO_BUF(s, b) \
902
+ (s)->ptr = (b)->ptr; \
903
+ (s)->size = (b)->size; \
904
+ (s)->asize = (b)->reserved;
905
+ #endif
906
+
896
907
  static int buffered_stream_close(git_writestream *s)
897
908
  {
898
909
  struct buffered_stream *buffered_stream = (struct buffered_stream *)s;
@@ -902,6 +913,25 @@ static int buffered_stream_close(git_writestream *s)
902
913
 
903
914
  GIT_ASSERT_ARG(buffered_stream);
904
915
 
916
+ #ifndef GIT_DEPRECATE_HARD
917
+ if (buffered_stream->write_fn == NULL) {
918
+ git_buf legacy_output = GIT_BUF_INIT,
919
+ legacy_input = GIT_BUF_INIT;
920
+
921
+ BUF_TO_STRUCT(&legacy_output, buffered_stream->output);
922
+ BUF_TO_STRUCT(&legacy_input, &buffered_stream->input);
923
+
924
+ error = buffered_stream->legacy_write_fn(
925
+ buffered_stream->filter,
926
+ buffered_stream->payload,
927
+ &legacy_output,
928
+ &legacy_input,
929
+ buffered_stream->source);
930
+
931
+ STRUCT_TO_BUF(buffered_stream->output, &legacy_output);
932
+ STRUCT_TO_BUF(&buffered_stream->input, &legacy_input);
933
+ } else
934
+ #endif
905
935
  error = buffered_stream->write_fn(
906
936
  buffered_stream->filter,
907
937
  buffered_stream->payload,
@@ -1085,7 +1115,7 @@ int git_filter_list_stream_file(
1085
1115
  const char *path,
1086
1116
  git_writestream *target)
1087
1117
  {
1088
- char buf[FILTERIO_BUFSIZE];
1118
+ char buf[GIT_BUFSIZE_FILTERIO];
1089
1119
  git_str abspath = GIT_STR_INIT;
1090
1120
  const char *base = repo ? git_repository_workdir(repo) : NULL;
1091
1121
  git_vector filter_streams = GIT_VECTOR_INIT;
@@ -74,7 +74,7 @@ struct entry_short {
74
74
  uint32_t uid;
75
75
  uint32_t gid;
76
76
  uint32_t file_size;
77
- git_oid oid;
77
+ unsigned char oid[GIT_OID_RAWSZ];
78
78
  uint16_t flags;
79
79
  char path[1]; /* arbitrary length */
80
80
  };
@@ -88,7 +88,7 @@ struct entry_long {
88
88
  uint32_t uid;
89
89
  uint32_t gid;
90
90
  uint32_t file_size;
91
- git_oid oid;
91
+ unsigned char oid[GIT_OID_RAWSZ];
92
92
  uint16_t flags;
93
93
  uint16_t flags_extended;
94
94
  char path[1]; /* arbitrary length */
@@ -2480,9 +2480,11 @@ static int read_entry(
2480
2480
  entry.uid = ntohl(source.uid);
2481
2481
  entry.gid = ntohl(source.gid);
2482
2482
  entry.file_size = ntohl(source.file_size);
2483
- git_oid_cpy(&entry.id, &source.oid);
2484
2483
  entry.flags = ntohs(source.flags);
2485
2484
 
2485
+ if (git_oid_fromraw(&entry.id, source.oid) < 0)
2486
+ return -1;
2487
+
2486
2488
  if (entry.flags & GIT_INDEX_ENTRY_EXTENDED) {
2487
2489
  uint16_t flags_raw;
2488
2490
  size_t flags_offset;
@@ -2803,9 +2805,7 @@ static int write_disk_entry(git_filebuf *file, git_index_entry *entry, const cha
2803
2805
  ondisk.uid = htonl(entry->uid);
2804
2806
  ondisk.gid = htonl(entry->gid);
2805
2807
  ondisk.file_size = htonl((uint32_t)entry->file_size);
2806
-
2807
- git_oid_cpy(&ondisk.oid, &entry->id);
2808
-
2808
+ git_oid_raw_cpy(ondisk.oid, entry->id.id);
2809
2809
  ondisk.flags = htons(entry->flags);
2810
2810
 
2811
2811
  if (entry->flags & GIT_INDEX_ENTRY_EXTENDED) {
@@ -385,7 +385,7 @@ static int check_object_connectivity(git_indexer *idx, const git_rawobj *obj)
385
385
  size_t i;
386
386
 
387
387
  git_array_foreach(tree->entries, i, entry)
388
- if (add_expected_oid(idx, entry->oid) < 0)
388
+ if (add_expected_oid(idx, &entry->oid) < 0)
389
389
  goto out;
390
390
 
391
391
  break;
@@ -1269,7 +1269,7 @@ int git_indexer_commit(git_indexer *idx, git_indexer_progress *stats)
1269
1269
 
1270
1270
  /* Write out the object names (SHA-1 hashes) */
1271
1271
  git_vector_foreach(&idx->objects, i, entry) {
1272
- git_filebuf_write(&index_file, &entry->oid, sizeof(git_oid));
1272
+ git_filebuf_write(&index_file, &entry->oid.id, GIT_OID_RAWSZ);
1273
1273
  }
1274
1274
 
1275
1275
  /* Write out the CRC32 values */
@@ -613,7 +613,7 @@ GIT_INLINE(int) tree_iterator_frame_push_neighbors(
613
613
  break;
614
614
 
615
615
  if ((error = git_tree_lookup(&tree,
616
- iter->base.repo, entry->tree_entry->oid)) < 0)
616
+ iter->base.repo, &entry->tree_entry->oid)) < 0)
617
617
  break;
618
618
 
619
619
  if (git_vector_insert(&parent_frame->similar_trees, tree) < 0)
@@ -659,7 +659,7 @@ GIT_INLINE(int) tree_iterator_frame_push(
659
659
  int error;
660
660
 
661
661
  if ((error = git_tree_lookup(&tree,
662
- iter->base.repo, entry->tree_entry->oid)) < 0 ||
662
+ iter->base.repo, &entry->tree_entry->oid)) < 0 ||
663
663
  (error = tree_iterator_frame_init(iter, tree, entry)) < 0)
664
664
  goto done;
665
665
 
@@ -740,7 +740,7 @@ static void tree_iterator_set_current(
740
740
 
741
741
  iter->entry.mode = tree_entry->attr;
742
742
  iter->entry.path = iter->entry_path.ptr;
743
- git_oid_cpy(&iter->entry.id, tree_entry->oid);
743
+ git_oid_cpy(&iter->entry.id, &tree_entry->oid);
744
744
  }
745
745
 
746
746
  static int tree_iterator_advance(const git_index_entry **out, git_iterator *i)
@@ -107,6 +107,11 @@ int git_libgit2_version(int *major, int *minor, int *rev)
107
107
  return 0;
108
108
  }
109
109
 
110
+ const char *git_libgit2_prerelease(void)
111
+ {
112
+ return LIBGIT2_VER_PRERELEASE;
113
+ }
114
+
110
115
  int git_libgit2_features(void)
111
116
  {
112
117
  return 0
@@ -115,7 +115,7 @@ static int midx_parse_oid_lookup(
115
115
  struct git_midx_chunk *chunk_oid_lookup)
116
116
  {
117
117
  uint32_t i;
118
- git_oid *oid, *prev_oid, zero_oid = {{0}};
118
+ unsigned char *oid, *prev_oid, zero_oid[GIT_OID_RAWSZ] = {0};
119
119
 
120
120
  if (chunk_oid_lookup->offset == 0)
121
121
  return midx_error("missing OID Lookup chunk");
@@ -124,10 +124,10 @@ static int midx_parse_oid_lookup(
124
124
  if (chunk_oid_lookup->length != idx->num_objects * GIT_OID_RAWSZ)
125
125
  return midx_error("OID Lookup chunk has wrong length");
126
126
 
127
- idx->oid_lookup = oid = (git_oid *)(data + chunk_oid_lookup->offset);
128
- prev_oid = &zero_oid;
129
- for (i = 0; i < idx->num_objects; ++i, ++oid) {
130
- if (git_oid_cmp(prev_oid, oid) >= 0)
127
+ idx->oid_lookup = oid = (unsigned char *)(data + chunk_oid_lookup->offset);
128
+ prev_oid = zero_oid;
129
+ for (i = 0; i < idx->num_objects; ++i, oid += GIT_OID_RAWSZ) {
130
+ if (git_oid_raw_cmp(prev_oid, oid) >= 0)
131
131
  return midx_error("OID Lookup index is non-monotonic");
132
132
  prev_oid = oid;
133
133
  }
@@ -179,7 +179,6 @@ int git_midx_parse(
179
179
  uint32_t i;
180
180
  off64_t last_chunk_offset, chunk_offset, trailer_offset;
181
181
  size_t checksum_size;
182
- unsigned char checksum[GIT_HASH_SHA1_SIZE];
183
182
  int error;
184
183
  struct git_midx_chunk chunk_packfile_names = {0},
185
184
  chunk_oid_fanout = {0},
@@ -217,11 +216,6 @@ int git_midx_parse(
217
216
  return midx_error("wrong index size");
218
217
  memcpy(idx->checksum, data + trailer_offset, checksum_size);
219
218
 
220
- if (git_hash_buf(checksum, data, (size_t)trailer_offset, GIT_HASH_ALGORITHM_SHA1) < 0)
221
- return midx_error("could not calculate signature");
222
- if (memcmp(checksum, idx->checksum, checksum_size) != 0)
223
- return midx_error("index signature mismatch");
224
-
225
219
  chunk_hdr = data + sizeof(struct git_midx_header);
226
220
  last_chunk = NULL;
227
221
  for (i = 0; i < hdr->chunks; ++i, chunk_hdr += 12) {
@@ -389,7 +383,7 @@ int git_midx_entry_find(
389
383
  int pos, found = 0;
390
384
  size_t pack_index;
391
385
  uint32_t hi, lo;
392
- const git_oid *current = NULL;
386
+ unsigned char *current = NULL;
393
387
  const unsigned char *object_offset;
394
388
  off64_t offset;
395
389
 
@@ -403,26 +397,25 @@ int git_midx_entry_find(
403
397
  if (pos >= 0) {
404
398
  /* An object matching exactly the oid was found */
405
399
  found = 1;
406
- current = idx->oid_lookup + pos;
400
+ current = idx->oid_lookup + (pos * GIT_OID_RAWSZ);
407
401
  } else {
408
402
  /* No object was found */
409
403
  /* pos refers to the object with the "closest" oid to short_oid */
410
404
  pos = -1 - pos;
411
405
  if (pos < (int)idx->num_objects) {
412
- current = idx->oid_lookup + pos;
406
+ current = idx->oid_lookup + (pos * GIT_OID_RAWSZ);
413
407
 
414
- if (!git_oid_ncmp(short_oid, current, len))
408
+ if (!git_oid_raw_ncmp(short_oid->id, current, len))
415
409
  found = 1;
416
410
  }
417
411
  }
418
412
 
419
413
  if (found && len != GIT_OID_HEXSZ && pos + 1 < (int)idx->num_objects) {
420
414
  /* Check for ambiguousity */
421
- const git_oid *next = current + 1;
415
+ const unsigned char *next = current + GIT_OID_RAWSZ;
422
416
 
423
- if (!git_oid_ncmp(short_oid, next, len)) {
417
+ if (!git_oid_raw_ncmp(short_oid->id, next, len))
424
418
  found = 2;
425
- }
426
419
  }
427
420
 
428
421
  if (!found)
@@ -432,8 +425,8 @@ int git_midx_entry_find(
432
425
 
433
426
  object_offset = idx->object_offsets + pos * 8;
434
427
  offset = ntohl(*((uint32_t *)(object_offset + 4)));
435
- if (offset & 0x80000000) {
436
- uint32_t object_large_offsets_pos = offset & 0x7fffffff;
428
+ if (idx->object_large_offsets && offset & 0x80000000) {
429
+ uint32_t object_large_offsets_pos = (uint32_t) (offset ^ 0x80000000);
437
430
  const unsigned char *object_large_offsets_index = idx->object_large_offsets;
438
431
 
439
432
  /* Make sure we're not being sent out of bounds */
@@ -450,7 +443,7 @@ int git_midx_entry_find(
450
443
  return midx_error("invalid index into the packfile names table");
451
444
  e->pack_index = pack_index;
452
445
  e->offset = offset;
453
- git_oid_cpy(&e->sha1, current);
446
+ git_oid_fromraw(&e->sha1, current);
454
447
  return 0;
455
448
  }
456
449
 
@@ -459,13 +452,17 @@ int git_midx_foreach_entry(
459
452
  git_odb_foreach_cb cb,
460
453
  void *data)
461
454
  {
455
+ git_oid oid;
462
456
  size_t i;
463
457
  int error;
464
458
 
465
459
  GIT_ASSERT_ARG(idx);
466
460
 
467
461
  for (i = 0; i < idx->num_objects; ++i) {
468
- if ((error = cb(&idx->oid_lookup[i], data)) != 0)
462
+ if ((error = git_oid_fromraw(&oid, &idx->oid_lookup[i * GIT_OID_RAWSZ])) < 0)
463
+ return error;
464
+
465
+ if ((error = cb(&oid, data)) != 0)
469
466
  return git_error_set_after_callback(error);
470
467
  }
471
468
 
@@ -751,7 +748,7 @@ static int midx_write(
751
748
 
752
749
  /* Fill the OID Lookup table. */
753
750
  git_vector_foreach (&object_entries, i, entry) {
754
- error = git_str_put(&oid_lookup, (const char *)&entry->sha1, sizeof(entry->sha1));
751
+ error = git_str_put(&oid_lookup, (char *)&entry->sha1.id, GIT_OID_RAWSZ);
755
752
  if (error < 0)
756
753
  goto cleanup;
757
754
  }
@@ -17,6 +17,7 @@
17
17
  #include "map.h"
18
18
  #include "mwindow.h"
19
19
  #include "odb.h"
20
+ #include "oid.h"
20
21
 
21
22
  /*
22
23
  * A multi-pack-index file.
@@ -40,7 +41,7 @@ typedef struct git_midx_file {
40
41
  uint32_t num_objects;
41
42
 
42
43
  /* The OID Lookup table. */
43
- git_oid *oid_lookup;
44
+ unsigned char *oid_lookup;
44
45
 
45
46
  /* The Object Offsets table. Each entry has two 4-byte fields with the pack index and the offset. */
46
47
  const unsigned char *object_offsets;
@@ -186,13 +186,16 @@ int git_mwindow_free_all(git_mwindow_file *mwf)
186
186
  }
187
187
 
188
188
  /*
189
- * Check if a window 'win' contains the address 'offset'
189
+ * Check if a window 'win' contains both the address 'offset' and 'extra'.
190
+ *
191
+ * 'extra' is the size of the hash we're using as we always want to make sure
192
+ * that it's contained.
190
193
  */
191
- int git_mwindow_contains(git_mwindow *win, off64_t offset)
194
+ int git_mwindow_contains(git_mwindow *win, off64_t offset, off64_t extra)
192
195
  {
193
196
  off64_t win_off = win->offset;
194
197
  return win_off <= offset
195
- && offset <= (off64_t)(win_off + win->window_map.len);
198
+ && (offset + extra) <= (off64_t)(win_off + win->window_map.len);
196
199
  }
197
200
 
198
201
  #define GIT_MWINDOW__LRU -1
@@ -237,9 +240,7 @@ static bool git_mwindow_scan_recently_used(
237
240
  * store it in the output parameter. If lru_window is NULL,
238
241
  * it's the first loop, so store it as well.
239
242
  */
240
- if (!lru_window ||
241
- (comparison_sign == GIT_MWINDOW__LRU && lru_window->last_used > w->last_used) ||
242
- (comparison_sign == GIT_MWINDOW__MRU && lru_window->last_used < w->last_used)) {
243
+ if (!lru_window || (comparison_sign * w->last_used) > lru_window->last_used) {
243
244
  lru_window = w;
244
245
  lru_last = w_last;
245
246
  found = true;
@@ -406,14 +407,13 @@ unsigned char *git_mwindow_open(
406
407
  return NULL;
407
408
  }
408
409
 
409
- if (!w || !(git_mwindow_contains(w, offset) && git_mwindow_contains(w, offset + extra))) {
410
+ if (!w || !(git_mwindow_contains(w, offset, extra))) {
410
411
  if (w) {
411
412
  w->inuse_cnt--;
412
413
  }
413
414
 
414
415
  for (w = mwf->windows; w; w = w->next) {
415
- if (git_mwindow_contains(w, offset) &&
416
- git_mwindow_contains(w, offset + extra))
416
+ if (git_mwindow_contains(w, offset, extra))
417
417
  break;
418
418
  }
419
419
 
@@ -38,7 +38,7 @@ typedef struct git_mwindow_ctl {
38
38
  git_vector windowfiles;
39
39
  } git_mwindow_ctl;
40
40
 
41
- int git_mwindow_contains(git_mwindow *win, off64_t offset);
41
+ int git_mwindow_contains(git_mwindow *win, off64_t offset, off64_t extra);
42
42
  int git_mwindow_free_all(git_mwindow_file *mwf); /* locks */
43
43
  unsigned char *git_mwindow_open(git_mwindow_file *mwf, git_mwindow **cursor, off64_t offset, size_t extra, unsigned int *left);
44
44
  int git_mwindow_file_register(git_mwindow_file *mwf);
@@ -12,7 +12,6 @@
12
12
 
13
13
  #include "posix.h"
14
14
  #include "str.h"
15
- #include "http_parser.h"
16
15
  #include "runtime.h"
17
16
 
18
17
  int gitno_recv(gitno_buffer *buf)
@@ -250,6 +250,7 @@ int git_object_lookup_prefix(
250
250
  if (error < 0)
251
251
  return error;
252
252
 
253
+ GIT_ASSERT(odb_obj);
253
254
  error = git_object__from_odb_object(object_out, repo, odb_obj, type);
254
255
 
255
256
  git_odb_object_free(odb_obj);
@@ -198,7 +198,7 @@ void git_odb_object_free(git_odb_object *object)
198
198
  int git_odb__hashfd(git_oid *out, git_file fd, size_t size, git_object_t type)
199
199
  {
200
200
  size_t hdr_len;
201
- char hdr[64], buffer[FILEIO_BUFSIZE];
201
+ char hdr[64], buffer[GIT_BUFSIZE_FILEIO];
202
202
  git_hash_ctx ctx;
203
203
  ssize_t read_len = 0;
204
204
  int error = 0;
@@ -1067,7 +1067,7 @@ int git_odb_expand_ids(
1067
1067
  int git_odb_read_header(size_t *len_p, git_object_t *type_p, git_odb *db, const git_oid *id)
1068
1068
  {
1069
1069
  int error;
1070
- git_odb_object *object;
1070
+ git_odb_object *object = NULL;
1071
1071
 
1072
1072
  error = git_odb__read_header_or_object(&object, len_p, type_p, db, id);
1073
1073