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
@@ -187,8 +187,7 @@ int git_oid_fromraw(git_oid *out, const unsigned char *raw)
187
187
 
188
188
  int git_oid_cpy(git_oid *out, const git_oid *src)
189
189
  {
190
- memcpy(out->id, src->id, sizeof(out->id));
191
- return 0;
190
+ return git_oid_raw_cpy(out->id, src->id);
192
191
  }
193
192
 
194
193
  int git_oid_cmp(const git_oid *a, const git_oid *b)
@@ -203,25 +202,7 @@ int git_oid_equal(const git_oid *a, const git_oid *b)
203
202
 
204
203
  int git_oid_ncmp(const git_oid *oid_a, const git_oid *oid_b, size_t len)
205
204
  {
206
- const unsigned char *a = oid_a->id;
207
- const unsigned char *b = oid_b->id;
208
-
209
- if (len > GIT_OID_HEXSZ)
210
- len = GIT_OID_HEXSZ;
211
-
212
- while (len > 1) {
213
- if (*a != *b)
214
- return 1;
215
- a++;
216
- b++;
217
- len -= 2;
218
- };
219
-
220
- if (len)
221
- if ((*a ^ *b) & 0xf0)
222
- return 1;
223
-
224
- return 0;
205
+ return git_oid_raw_ncmp(oid_a->id, oid_b->id, len);
225
206
  }
226
207
 
227
208
  int git_oid_strcmp(const git_oid *oid_a, const char *str)
@@ -25,11 +25,44 @@ extern const git_oid git_oid__empty_tree_sha1;
25
25
  */
26
26
  char *git_oid_allocfmt(const git_oid *id);
27
27
 
28
- GIT_INLINE(int) git_oid__hashcmp(const unsigned char *sha1, const unsigned char *sha2)
28
+ GIT_INLINE(int) git_oid_raw_ncmp(
29
+ const unsigned char *sha1,
30
+ const unsigned char *sha2,
31
+ size_t len)
32
+ {
33
+ if (len > GIT_OID_HEXSZ)
34
+ len = GIT_OID_HEXSZ;
35
+
36
+ while (len > 1) {
37
+ if (*sha1 != *sha2)
38
+ return 1;
39
+ sha1++;
40
+ sha2++;
41
+ len -= 2;
42
+ };
43
+
44
+ if (len)
45
+ if ((*sha1 ^ *sha2) & 0xf0)
46
+ return 1;
47
+
48
+ return 0;
49
+ }
50
+
51
+ GIT_INLINE(int) git_oid_raw_cmp(
52
+ const unsigned char *sha1,
53
+ const unsigned char *sha2)
29
54
  {
30
55
  return memcmp(sha1, sha2, GIT_OID_RAWSZ);
31
56
  }
32
57
 
58
+ GIT_INLINE(int) git_oid_raw_cpy(
59
+ unsigned char *dst,
60
+ const unsigned char *src)
61
+ {
62
+ memcpy(dst, src, GIT_OID_RAWSZ);
63
+ return 0;
64
+ }
65
+
33
66
  /*
34
67
  * Compare two oid structures.
35
68
  *
@@ -39,7 +72,7 @@ GIT_INLINE(int) git_oid__hashcmp(const unsigned char *sha1, const unsigned char
39
72
  */
40
73
  GIT_INLINE(int) git_oid__cmp(const git_oid *a, const git_oid *b)
41
74
  {
42
- return git_oid__hashcmp(a->id, b->id);
75
+ return git_oid_raw_cmp(a->id, b->id);
43
76
  }
44
77
 
45
78
  GIT_INLINE(void) git_oid__cpy_prefix(
@@ -19,7 +19,7 @@ __KHASH_TYPE(oid, const git_oid *, void *)
19
19
  GIT_INLINE(khint_t) git_oidmap_hash(const git_oid *oid)
20
20
  {
21
21
  khint_t h;
22
- memcpy(&h, oid, sizeof(khint_t));
22
+ memcpy(&h, oid->id, sizeof(khint_t));
23
23
  return h;
24
24
  }
25
25
 
@@ -1001,13 +1001,14 @@ int get_delta_base(
1001
1001
  base_offset = delta_obj_offset - unsigned_base_offset;
1002
1002
  *curpos += used;
1003
1003
  } else if (type == GIT_OBJECT_REF_DELTA) {
1004
+ git_oid base_oid;
1005
+ git_oid_fromraw(&base_oid, base_info);
1006
+
1004
1007
  /* If we have the cooperative cache, search in it first */
1005
1008
  if (p->has_cache) {
1006
1009
  struct git_pack_entry *entry;
1007
- git_oid oid;
1008
1010
 
1009
- git_oid_fromraw(&oid, base_info);
1010
- if ((entry = git_oidmap_get(p->idx_cache, &oid)) != NULL) {
1011
+ if ((entry = git_oidmap_get(p->idx_cache, &base_oid)) != NULL) {
1011
1012
  if (entry->offset == 0)
1012
1013
  return packfile_error("delta offset is zero");
1013
1014
 
@@ -1024,7 +1025,7 @@ int get_delta_base(
1024
1025
  }
1025
1026
 
1026
1027
  /* The base entry _must_ be in the same pack */
1027
- if (pack_entry_find_offset(&base_offset, &unused, p, (git_oid *)base_info, GIT_OID_HEXSZ) < 0)
1028
+ if (pack_entry_find_offset(&base_offset, &unused, p, &base_oid, GIT_OID_HEXSZ) < 0)
1028
1029
  return packfile_error("base entry delta is not in the same pack");
1029
1030
  *curpos += 20;
1030
1031
  } else
@@ -1082,7 +1083,7 @@ static int packfile_open_locked(struct git_pack_file *p)
1082
1083
  {
1083
1084
  struct stat st;
1084
1085
  struct git_pack_header hdr;
1085
- git_oid sha1;
1086
+ unsigned char sha1[GIT_OID_RAWSZ];
1086
1087
  unsigned char *idx_sha1;
1087
1088
 
1088
1089
  if (pack_index_open_locked(p) < 0)
@@ -1130,12 +1131,12 @@ static int packfile_open_locked(struct git_pack_file *p)
1130
1131
 
1131
1132
  /* Verify the pack matches its index. */
1132
1133
  if (p->num_objects != ntohl(hdr.hdr_entries) ||
1133
- p_pread(p->mwf.fd, sha1.id, GIT_OID_RAWSZ, p->mwf.size - GIT_OID_RAWSZ) < 0)
1134
+ p_pread(p->mwf.fd, sha1, GIT_OID_RAWSZ, p->mwf.size - GIT_OID_RAWSZ) < 0)
1134
1135
  goto cleanup;
1135
1136
 
1136
1137
  idx_sha1 = ((unsigned char *)p->index_map.data) + p->index_map.len - 40;
1137
1138
 
1138
- if (git_oid__cmp(&sha1, (git_oid *)idx_sha1) != 0)
1139
+ if (git_oid_raw_cmp(sha1, idx_sha1) != 0)
1139
1140
  goto cleanup;
1140
1141
 
1141
1142
  if (git_mwindow_file_register(&p->mwf) < 0)
@@ -1340,10 +1341,14 @@ int git_pack_foreach_entry(
1340
1341
  }
1341
1342
 
1342
1343
  git_vector_free(&offsets);
1343
- p->oids = (git_oid **)git_vector_detach(NULL, NULL, &oids);
1344
+ p->oids = (unsigned char **)git_vector_detach(NULL, NULL, &oids);
1344
1345
  }
1345
1346
 
1346
- /* We need to copy the OIDs to another array before we relinquish the lock to avoid races. */
1347
+ /*
1348
+ * We need to copy the OIDs to another array before we
1349
+ * relinquish the lock to avoid races. We can also take
1350
+ * this opportunity to put them into normal form.
1351
+ */
1347
1352
  git_array_init_to_size(oids, p->num_objects);
1348
1353
  if (!oids.ptr) {
1349
1354
  git_mutex_unlock(&p->lock);
@@ -1357,7 +1362,7 @@ int git_pack_foreach_entry(
1357
1362
  git_array_clear(oids);
1358
1363
  GIT_ERROR_CHECK_ALLOC(oid);
1359
1364
  }
1360
- git_oid_cpy(oid, p->oids[i]);
1365
+ git_oid_fromraw(oid, p->oids[i]);
1361
1366
  }
1362
1367
 
1363
1368
  git_mutex_unlock(&p->lock);
@@ -1380,7 +1385,7 @@ int git_pack_foreach_entry_offset(
1380
1385
  {
1381
1386
  const unsigned char *index;
1382
1387
  off64_t current_offset;
1383
- const git_oid *current_oid;
1388
+ git_oid current_oid;
1384
1389
  uint32_t i;
1385
1390
  int error = 0;
1386
1391
 
@@ -1422,8 +1427,9 @@ int git_pack_foreach_entry_offset(
1422
1427
  current_offset = (((off64_t)ntohl(*((uint32_t *)(large_offset_ptr + 0)))) << 32) |
1423
1428
  ntohl(*((uint32_t *)(large_offset_ptr + 4)));
1424
1429
  }
1425
- current_oid = (const git_oid *)(index + 20 * i);
1426
- if ((error = cb(current_oid, current_offset, data)) != 0) {
1430
+
1431
+ git_oid_fromraw(&current_oid, (index + 20 * i));
1432
+ if ((error = cb(&current_oid, current_offset, data)) != 0) {
1427
1433
  error = git_error_set_after_callback(error);
1428
1434
  goto cleanup;
1429
1435
  }
@@ -1431,8 +1437,8 @@ int git_pack_foreach_entry_offset(
1431
1437
  } else {
1432
1438
  for (i = 0; i < p->num_objects; i++) {
1433
1439
  current_offset = ntohl(*(const uint32_t *)(index + 24 * i));
1434
- current_oid = (const git_oid *)(index + 24 * i + 4);
1435
- if ((error = cb(current_oid, current_offset, data)) != 0) {
1440
+ git_oid_fromraw(&current_oid, (index + 24 * i + 4));
1441
+ if ((error = cb(&current_oid, current_offset, data)) != 0) {
1436
1442
  error = git_error_set_after_callback(error);
1437
1443
  goto cleanup;
1438
1444
  }
@@ -1451,7 +1457,7 @@ int git_pack__lookup_sha1(const void *oid_lookup_table, size_t stride, unsigned
1451
1457
 
1452
1458
  while (lo < hi) {
1453
1459
  unsigned mi = (lo + hi) / 2;
1454
- int cmp = git_oid__hashcmp(base + mi * stride, oid_prefix);
1460
+ int cmp = git_oid_raw_cmp(base + mi * stride, oid_prefix);
1455
1461
 
1456
1462
  if (!cmp)
1457
1463
  return mi;
@@ -1530,7 +1536,7 @@ static int pack_entry_find_offset(
1530
1536
  if (pos < (int)p->num_objects) {
1531
1537
  current = index + pos * stride;
1532
1538
 
1533
- if (!git_oid_ncmp(short_oid, (const git_oid *)current, len))
1539
+ if (!git_oid_raw_ncmp(short_oid->id, current, len))
1534
1540
  found = 1;
1535
1541
  }
1536
1542
  }
@@ -1539,7 +1545,7 @@ static int pack_entry_find_offset(
1539
1545
  /* Check for ambiguousity */
1540
1546
  const unsigned char *next = current + stride;
1541
1547
 
1542
- if (!git_oid_ncmp(short_oid, (const git_oid *)next, len)) {
1548
+ if (!git_oid_raw_ncmp(short_oid->id, next, len)) {
1543
1549
  found = 2;
1544
1550
  }
1545
1551
  }
@@ -19,6 +19,7 @@
19
19
  #include "offmap.h"
20
20
  #include "oidmap.h"
21
21
  #include "zstream.h"
22
+ #include "oid.h"
22
23
 
23
24
  /**
24
25
  * Function type for callbacks from git_pack_foreach_entry_offset.
@@ -32,7 +33,7 @@ typedef int git_pack_foreach_entry_offset_cb(
32
33
 
33
34
  #define PACK_SIGNATURE 0x5041434b /* "PACK" */
34
35
  #define PACK_VERSION 2
35
- #define pack_version_ok(v) ((v) == htonl(2) || (v) == htonl(3))
36
+ #define pack_version_ok(v) ((v) == htonl(2))
36
37
  struct git_pack_header {
37
38
  uint32_t hdr_signature;
38
39
  uint32_t hdr_version;
@@ -104,7 +105,7 @@ struct git_pack_file {
104
105
  git_time_t mtime;
105
106
  unsigned pack_local:1, pack_keep:1, has_cache:1;
106
107
  git_oidmap *idx_cache;
107
- git_oid **oids;
108
+ unsigned char **oids;
108
109
 
109
110
  git_pack_cache bases; /* delta base cache */
110
111
 
@@ -9,6 +9,7 @@
9
9
 
10
10
  #include "repository.h"
11
11
  #include "fs_path.h"
12
+ #include "utf8.h"
12
13
 
13
14
  typedef struct {
14
15
  git_repository *repo;
@@ -35,6 +35,7 @@
35
35
  #define ONTO_FILE "onto"
36
36
  #define ONTO_NAME_FILE "onto_name"
37
37
  #define QUIET_FILE "quiet"
38
+ #define INTERACTIVE_FILE "interactive"
38
39
 
39
40
  #define MSGNUM_FILE "msgnum"
40
41
  #define END_FILE "end"
@@ -92,6 +93,7 @@ static int rebase_state_type(
92
93
  git_repository *repo)
93
94
  {
94
95
  git_str path = GIT_STR_INIT;
96
+ git_str interactive_path = GIT_STR_INIT;
95
97
  git_rebase_t type = GIT_REBASE_NONE;
96
98
 
97
99
  if (git_str_joinpath(&path, repo->gitdir, REBASE_APPLY_DIR) < 0)
@@ -107,7 +109,14 @@ static int rebase_state_type(
107
109
  return -1;
108
110
 
109
111
  if (git_fs_path_isdir(git_str_cstr(&path))) {
110
- type = GIT_REBASE_MERGE;
112
+ if (git_str_joinpath(&interactive_path, path.ptr, INTERACTIVE_FILE) < 0)
113
+ return -1;
114
+
115
+ if (git_fs_path_isfile(interactive_path.ptr))
116
+ type = GIT_REBASE_INTERACTIVE;
117
+ else
118
+ type = GIT_REBASE_MERGE;
119
+
111
120
  goto done;
112
121
  }
113
122
 
@@ -118,6 +127,7 @@ done:
118
127
  *path_out = git_str_detach(&path);
119
128
 
120
129
  git_str_dispose(&path);
130
+ git_str_dispose(&interactive_path);
121
131
 
122
132
  return 0;
123
133
  }
@@ -740,7 +740,7 @@ static int packed_lookup(
740
740
  return 0;
741
741
  }
742
742
  }
743
- return GIT_ENOTFOUND;
743
+ return ref_error_notfound(ref_name);
744
744
 
745
745
  parse_failed:
746
746
  git_error_set(GIT_ERROR_REFERENCE, "corrupted packed references file");
@@ -1361,7 +1361,11 @@ static int packed_write(refdb_fs_backend *backend)
1361
1361
 
1362
1362
  for (i = 0; i < git_sortedcache_entrycount(refcache); ++i) {
1363
1363
  struct packref *ref = git_sortedcache_entry(refcache, i);
1364
- GIT_ASSERT(ref);
1364
+
1365
+ GIT_ASSERT_WITH_CLEANUP(ref, {
1366
+ error = -1;
1367
+ goto fail;
1368
+ });
1365
1369
 
1366
1370
  if ((error = packed_find_peel(backend, ref)) < 0)
1367
1371
  goto fail;
@@ -1830,7 +1830,7 @@ static int update_one_tip(
1830
1830
  }
1831
1831
 
1832
1832
  if (error == GIT_ENOTFOUND) {
1833
- memset(&old, 0, GIT_OID_RAWSZ);
1833
+ memset(&old, 0, sizeof(git_oid));
1834
1834
  error = 0;
1835
1835
 
1836
1836
  if (autotag && (error = git_vector_insert(update_heads, head)) < 0)
@@ -11,6 +11,7 @@
11
11
 
12
12
  #include "git2/remote.h"
13
13
  #include "git2/transport.h"
14
+ #include "git2/sys/remote.h"
14
15
  #include "git2/sys/transport.h"
15
16
 
16
17
  #include "refspec.h"
@@ -53,7 +54,6 @@ int git_remote_connect_options_normalize(
53
54
  git_remote_connect_options *dst,
54
55
  git_repository *repo,
55
56
  const git_remote_connect_options *src);
56
- void git_remote_connect_options_dispose(git_remote_connect_options *opts);
57
57
 
58
58
  int git_remote_capabilities(unsigned int *out, git_remote *remote);
59
59
 
@@ -1581,6 +1581,7 @@ static int check_valid_extension(const git_config_entry *entry, void *payload)
1581
1581
  }
1582
1582
 
1583
1583
  for (i = 0; i < ARRAY_SIZE(builtin_extensions); i++) {
1584
+ git_str_clear(&cfg);
1584
1585
  extension = builtin_extensions[i];
1585
1586
 
1586
1587
  if ((error = git_str_printf(&cfg, "extensions.%s", extension)) < 0)
@@ -244,6 +244,15 @@ on_error:
244
244
  return -1;
245
245
  }
246
246
 
247
+ static bool tag_name_is_valid(const char *tag_name)
248
+ {
249
+ /*
250
+ * Discourage tag name starting with dash,
251
+ * https://github.com/git/git/commit/4f0accd638b8d2
252
+ */
253
+ return tag_name[0] != '-';
254
+ }
255
+
247
256
  static int git_tag_create__internal(
248
257
  git_oid *oid,
249
258
  git_repository *repo,
@@ -269,6 +278,11 @@ static int git_tag_create__internal(
269
278
  return -1;
270
279
  }
271
280
 
281
+ if (!tag_name_is_valid(tag_name)) {
282
+ git_error_set(GIT_ERROR_TAG, "'%s' is not a valid tag name", tag_name);
283
+ return -1;
284
+ }
285
+
272
286
  error = retrieve_tag_reference_oid(oid, &ref_name, repo, tag_name);
273
287
  if (error < 0 && error != GIT_ENOTFOUND)
274
288
  goto cleanup;
@@ -542,11 +556,7 @@ int git_tag_name_is_valid(int *valid, const char *name)
542
556
 
543
557
  *valid = 0;
544
558
 
545
- /*
546
- * Discourage tag name starting with dash,
547
- * https://github.com/git/git/commit/4f0accd638b8d2
548
- */
549
- if (!name || name[0] == '-')
559
+ if (!name || !tag_name_is_valid(name))
550
560
  goto done;
551
561
 
552
562
  if ((error = git_str_puts(&ref_name, GIT_REFS_TAGS_DIR)) < 0 ||
@@ -395,7 +395,7 @@ static int on_body(http_parser *parser, const char *buf, size_t len)
395
395
  size_t max_len;
396
396
 
397
397
  /* Saw data when we expected not to (eg, in consume_response_body) */
398
- if (ctx->output_buf == NULL && ctx->output_size == 0) {
398
+ if (ctx->output_buf == NULL || ctx->output_size == 0) {
399
399
  ctx->parse_status = PARSE_STATUS_NO_OUTPUT;
400
400
  return 0;
401
401
  }
@@ -425,6 +425,18 @@ int git_transport_smart_credentials(git_credential **out, git_transport *transpo
425
425
  return connect_opts->callbacks.credentials(out, t->url, user, methods, connect_opts->callbacks.payload);
426
426
  }
427
427
 
428
+ int git_transport_remote_connect_options(
429
+ git_remote_connect_options *out,
430
+ git_transport *transport)
431
+ {
432
+ transport_smart *t = GIT_CONTAINER_OF(transport, transport_smart, parent);
433
+
434
+ GIT_ASSERT_ARG(out);
435
+ GIT_ASSERT_ARG(transport);
436
+
437
+ return git_remote_connect_options_dup(out, &t->connect_opts);
438
+ }
439
+
428
440
  int git_transport_smart(git_transport **out, git_remote *owner, void *param)
429
441
  {
430
442
  transport_smart *t;