rugged 0.17.0b2 → 0.17.0.b6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (374) hide show
  1. data/Rakefile +10 -11
  2. data/ext/rugged/extconf.rb +5 -13
  3. data/ext/rugged/rugged_commit.c +2 -5
  4. data/ext/rugged/rugged_reference.c +29 -28
  5. data/ext/rugged/rugged_remote.c +1 -1
  6. data/ext/rugged/rugged_repo.c +4 -1
  7. data/ext/rugged/rugged_tree.c +20 -19
  8. data/lib/rugged/commit.rb +5 -1
  9. data/lib/rugged/repository.rb +6 -4
  10. data/lib/rugged/version.rb +1 -1
  11. data/test/config_test.rb +1 -1
  12. data/test/index_test.rb +4 -2
  13. data/test/object_test.rb +3 -3
  14. data/test/reference_test.rb +66 -1
  15. data/test/repo_test.rb +4 -4
  16. data/test/tree_test.rb +1 -1
  17. data/test/walker_test.rb +1 -1
  18. data/vendor/libgit2/Makefile.embed +42 -0
  19. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/http-parser/http_parser.c +0 -0
  20. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/http-parser/http_parser.h +0 -0
  21. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/regex/config.h +0 -0
  22. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/regex/regcomp.c +0 -0
  23. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/regex/regex.c +0 -0
  24. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/regex/regex.h +0 -0
  25. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/regex/regex_internal.c +0 -0
  26. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/regex/regex_internal.h +0 -0
  27. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/regex/regexec.c +0 -0
  28. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/adler32.c +0 -0
  29. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/crc32.c +0 -0
  30. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/crc32.h +0 -0
  31. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/deflate.c +0 -0
  32. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/deflate.h +0 -0
  33. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/inffast.c +0 -0
  34. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/inffast.h +0 -0
  35. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/inffixed.h +0 -0
  36. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/inflate.c +0 -0
  37. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/inflate.h +0 -0
  38. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/inftrees.c +0 -0
  39. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/inftrees.h +0 -0
  40. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/trees.c +0 -0
  41. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/trees.h +0 -0
  42. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/zconf.h +0 -0
  43. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/zlib.h +0 -0
  44. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/zutil.c +0 -0
  45. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/deps/zlib/zutil.h +0 -0
  46. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2.h +6 -0
  47. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/attr.h +35 -20
  48. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/blob.h +1 -1
  49. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/branch.h +62 -24
  50. data/vendor/libgit2/include/git2/checkout.h +66 -0
  51. data/vendor/libgit2/include/git2/clone.h +59 -0
  52. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/commit.h +22 -3
  53. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/common.h +27 -0
  54. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/config.h +22 -4
  55. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/diff.h +20 -1
  56. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/errors.h +2 -37
  57. data/vendor/libgit2/include/git2/ignore.h +74 -0
  58. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/index.h +37 -5
  59. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/indexer.h +2 -2
  60. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/inttypes.h +0 -0
  61. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/merge.h +10 -0
  62. data/vendor/libgit2/include/git2/message.h +43 -0
  63. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/net.h +0 -0
  64. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/notes.h +24 -20
  65. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/object.h +18 -1
  66. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/odb.h +16 -1
  67. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/odb_backend.h +8 -1
  68. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/oid.h +26 -2
  69. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/reflog.h +39 -9
  70. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/refs.h +55 -3
  71. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/refspec.h +0 -0
  72. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/remote.h +68 -2
  73. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/repository.h +39 -1
  74. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/reset.h +0 -0
  75. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/revparse.h +0 -0
  76. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/revwalk.h +2 -2
  77. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/signature.h +3 -0
  78. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/status.h +5 -2
  79. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/stdint.h +0 -0
  80. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/submodule.h +0 -0
  81. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/tag.h +3 -3
  82. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/threads.h +0 -0
  83. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/tree.h +77 -20
  84. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/types.h +14 -0
  85. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/version.h +0 -0
  86. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/include/git2/windows.h +0 -0
  87. data/vendor/libgit2/src/amiga/map.c +51 -0
  88. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/attr.c +39 -6
  89. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/attr.h +1 -0
  90. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/attr_file.c +2 -16
  91. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/attr_file.h +4 -0
  92. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/blob.c +0 -0
  93. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/blob.h +0 -0
  94. data/vendor/libgit2/src/branch.c +294 -0
  95. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/bswap.h +0 -0
  96. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/buffer.c +40 -0
  97. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/buffer.h +22 -0
  98. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/cache.c +1 -0
  99. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/cache.h +0 -0
  100. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/cc-compat.h +0 -0
  101. data/vendor/libgit2/src/checkout.c +230 -0
  102. data/vendor/libgit2/src/clone.c +254 -0
  103. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/commit.c +42 -16
  104. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/commit.h +0 -0
  105. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/common.h +3 -9
  106. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/compat/fnmatch.c +0 -0
  107. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/compat/fnmatch.h +0 -0
  108. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/config.c +15 -5
  109. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/config.h +0 -0
  110. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/config_cache.c +0 -0
  111. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/config_file.c +86 -19
  112. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/config_file.h +16 -1
  113. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/crlf.c +92 -4
  114. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/date.c +20 -20
  115. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/delta-apply.c +0 -0
  116. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/delta-apply.h +0 -0
  117. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/diff.c +45 -18
  118. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/diff.h +0 -0
  119. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/diff_output.c +63 -46
  120. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/errors.c +0 -0
  121. data/vendor/libgit2/src/fetch.c +380 -0
  122. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/fetch.h +1 -2
  123. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/filebuf.c +7 -2
  124. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/filebuf.h +0 -0
  125. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/fileops.c +16 -1
  126. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/fileops.h +10 -0
  127. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/filter.c +38 -2
  128. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/filter.h +15 -0
  129. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/global.c +5 -0
  130. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/global.h +2 -6
  131. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/hash.c +0 -0
  132. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/hash.h +0 -0
  133. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/ignore.c +50 -1
  134. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/ignore.h +0 -0
  135. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/index.c +95 -28
  136. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/index.h +5 -0
  137. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/indexer.c +27 -25
  138. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/iterator.c +0 -0
  139. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/iterator.h +0 -0
  140. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/khash.h +6 -4
  141. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/map.h +4 -0
  142. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/message.c +27 -2
  143. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/message.h +2 -1
  144. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/mwindow.c +54 -10
  145. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/mwindow.h +1 -1
  146. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/netops.c +48 -38
  147. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/netops.h +7 -4
  148. data/vendor/libgit2/src/notes.c +610 -0
  149. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/notes.h +0 -0
  150. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/object.c +73 -2
  151. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/odb.c +20 -1
  152. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/odb.h +0 -0
  153. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/odb_loose.c +89 -3
  154. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/odb_pack.c +61 -3
  155. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/oid.c +1 -6
  156. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/oidmap.h +1 -6
  157. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/pack.c +49 -4
  158. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/pack.h +5 -1
  159. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/path.c +144 -21
  160. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/path.h +46 -0
  161. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/pkt.c +30 -8
  162. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/pkt.h +0 -0
  163. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/pool.c +7 -0
  164. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/pool.h +7 -0
  165. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/posix.c +92 -1
  166. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/posix.h +36 -1
  167. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/ppc/sha1.c +0 -0
  168. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/ppc/sha1.h +0 -0
  169. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/pqueue.c +0 -0
  170. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/pqueue.h +0 -0
  171. data/vendor/libgit2/src/protocol.c +88 -0
  172. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/protocol.h +3 -9
  173. data/vendor/libgit2/src/reflog.c +489 -0
  174. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/reflog.h +3 -0
  175. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/refs.c +95 -52
  176. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/refs.h +0 -0
  177. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/refspec.c +0 -0
  178. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/refspec.h +0 -0
  179. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/remote.c +130 -8
  180. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/remote.h +6 -0
  181. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/repository.c +167 -42
  182. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/repository.h +7 -0
  183. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/reset.c +1 -1
  184. data/vendor/libgit2/src/revparse.c +830 -0
  185. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/revwalk.c +83 -15
  186. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/sha1.c +0 -0
  187. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/sha1.h +5 -0
  188. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/sha1_lookup.c +0 -0
  189. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/sha1_lookup.h +0 -0
  190. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/signature.c +19 -5
  191. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/signature.h +0 -0
  192. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/status.c +24 -18
  193. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/strmap.h +1 -1
  194. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/submodule.c +3 -3
  195. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/tag.c +2 -9
  196. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/tag.h +0 -0
  197. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/thread-utils.c +0 -0
  198. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/thread-utils.h +0 -0
  199. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/transport.c +0 -0
  200. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/transport.h +13 -9
  201. data/vendor/libgit2/src/transports/git.c +245 -0
  202. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/transports/http.c +93 -336
  203. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/transports/local.c +35 -32
  204. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/tree-cache.c +0 -0
  205. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/tree-cache.h +0 -0
  206. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/tree.c +214 -124
  207. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/tree.h +7 -3
  208. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/tsort.c +0 -0
  209. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/unix/map.c +2 -0
  210. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/unix/posix.h +2 -1
  211. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/util.c +30 -0
  212. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/util.h +13 -6
  213. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/vector.c +1 -1
  214. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/vector.h +5 -5
  215. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/win32/dir.c +0 -0
  216. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/win32/dir.h +0 -0
  217. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/win32/map.c +0 -0
  218. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/win32/mingw-compat.h +0 -0
  219. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/win32/msvc-compat.h +0 -0
  220. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/win32/posix.h +1 -0
  221. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/win32/posix_w32.c +17 -1
  222. data/vendor/libgit2/src/win32/precompiled.c +1 -0
  223. data/vendor/libgit2/src/win32/precompiled.h +19 -0
  224. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/win32/pthread.c +0 -0
  225. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/win32/pthread.h +0 -0
  226. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/win32/utf-conv.c +0 -0
  227. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/win32/utf-conv.h +0 -0
  228. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xdiff.h +0 -0
  229. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xdiffi.c +0 -0
  230. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xdiffi.h +0 -0
  231. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xemit.c +0 -0
  232. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xemit.h +0 -0
  233. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xhistogram.c +0 -0
  234. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xinclude.h +0 -0
  235. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xmacros.h +0 -0
  236. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xmerge.c +0 -0
  237. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xpatience.c +0 -0
  238. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xprepare.c +0 -0
  239. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xprepare.h +0 -0
  240. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xtypes.h +0 -0
  241. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xutils.c +0 -0
  242. data/{ext/rugged/vendor/libgit2-dist → vendor/libgit2}/src/xdiff/xutils.h +0 -0
  243. metadata +265 -348
  244. data/ext/rugged/vendor/libgit2-dist.tar.gz +0 -0
  245. data/ext/rugged/vendor/libgit2-dist/examples/diff.c +0 -238
  246. data/ext/rugged/vendor/libgit2-dist/examples/general.c +0 -451
  247. data/ext/rugged/vendor/libgit2-dist/examples/network/common.h +0 -14
  248. data/ext/rugged/vendor/libgit2-dist/examples/network/fetch.c +0 -113
  249. data/ext/rugged/vendor/libgit2-dist/examples/network/git2.c +0 -62
  250. data/ext/rugged/vendor/libgit2-dist/examples/network/index-pack.c +0 -102
  251. data/ext/rugged/vendor/libgit2-dist/examples/network/ls-remote.c +0 -76
  252. data/ext/rugged/vendor/libgit2-dist/examples/showindex.c +0 -43
  253. data/ext/rugged/vendor/libgit2-dist/src/branch.c +0 -208
  254. data/ext/rugged/vendor/libgit2-dist/src/branch.h +0 -17
  255. data/ext/rugged/vendor/libgit2-dist/src/fetch.c +0 -200
  256. data/ext/rugged/vendor/libgit2-dist/src/notes.c +0 -548
  257. data/ext/rugged/vendor/libgit2-dist/src/protocol.c +0 -58
  258. data/ext/rugged/vendor/libgit2-dist/src/reflog.c +0 -340
  259. data/ext/rugged/vendor/libgit2-dist/src/revparse.c +0 -748
  260. data/ext/rugged/vendor/libgit2-dist/src/transports/git.c +0 -477
  261. data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/attr_expect.h +0 -43
  262. data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/file.c +0 -226
  263. data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/flags.c +0 -108
  264. data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/lookup.c +0 -262
  265. data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/repo.c +0 -273
  266. data/ext/rugged/vendor/libgit2-dist/tests-clar/buf/basic.c +0 -29
  267. data/ext/rugged/vendor/libgit2-dist/tests-clar/clar_helpers.c +0 -181
  268. data/ext/rugged/vendor/libgit2-dist/tests-clar/clar_libgit2.h +0 -55
  269. data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/commit.c +0 -44
  270. data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/parse.c +0 -350
  271. data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/signature.c +0 -65
  272. data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/write.c +0 -140
  273. data/ext/rugged/vendor/libgit2-dist/tests-clar/config/add.c +0 -37
  274. data/ext/rugged/vendor/libgit2-dist/tests-clar/config/multivar.c +0 -151
  275. data/ext/rugged/vendor/libgit2-dist/tests-clar/config/new.c +0 -36
  276. data/ext/rugged/vendor/libgit2-dist/tests-clar/config/read.c +0 -221
  277. data/ext/rugged/vendor/libgit2-dist/tests-clar/config/stress.c +0 -61
  278. data/ext/rugged/vendor/libgit2-dist/tests-clar/config/write.c +0 -92
  279. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/buffer.c +0 -613
  280. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/dirent.c +0 -235
  281. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/env.c +0 -115
  282. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/errors.c +0 -60
  283. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/filebuf.c +0 -92
  284. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/hex.c +0 -22
  285. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/oid.c +0 -18
  286. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/path.c +0 -420
  287. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/pool.c +0 -85
  288. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/rmdir.c +0 -68
  289. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/string.c +0 -28
  290. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/strmap.c +0 -102
  291. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/strtol.c +0 -37
  292. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/vector.c +0 -191
  293. data/ext/rugged/vendor/libgit2-dist/tests-clar/date/date.c +0 -15
  294. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/blob.c +0 -254
  295. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/diff_helpers.c +0 -104
  296. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/diff_helpers.h +0 -47
  297. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/index.c +0 -92
  298. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/iterator.c +0 -572
  299. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/patch.c +0 -99
  300. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/tree.c +0 -210
  301. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/workdir.c +0 -543
  302. data/ext/rugged/vendor/libgit2-dist/tests-clar/index/read_tree.c +0 -46
  303. data/ext/rugged/vendor/libgit2-dist/tests-clar/index/rename.c +0 -50
  304. data/ext/rugged/vendor/libgit2-dist/tests-clar/index/tests.c +0 -246
  305. data/ext/rugged/vendor/libgit2-dist/tests-clar/network/createremotethenload.c +0 -33
  306. data/ext/rugged/vendor/libgit2-dist/tests-clar/network/remotelocal.c +0 -137
  307. data/ext/rugged/vendor/libgit2-dist/tests-clar/network/remotes.c +0 -183
  308. data/ext/rugged/vendor/libgit2-dist/tests-clar/notes/notes.c +0 -133
  309. data/ext/rugged/vendor/libgit2-dist/tests-clar/notes/notesref.c +0 -57
  310. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/blob/filter.c +0 -125
  311. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/blob/fromchunks.c +0 -87
  312. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/blob/write.c +0 -69
  313. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/commit/commitstagedfile.c +0 -126
  314. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/lookup.c +0 -63
  315. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/message.c +0 -171
  316. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/chars.c +0 -41
  317. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/compare.c +0 -124
  318. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/convert.c +0 -75
  319. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/data.h +0 -323
  320. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/fromstr.c +0 -30
  321. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/hash.c +0 -166
  322. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/short.c +0 -94
  323. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/size.c +0 -13
  324. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/type2string.c +0 -54
  325. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/write.c +0 -455
  326. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tag/peel.c +0 -56
  327. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tag/read.c +0 -130
  328. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tag/write.c +0 -192
  329. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tree/frompath.c +0 -81
  330. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tree/read.c +0 -75
  331. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tree/write.c +0 -84
  332. data/ext/rugged/vendor/libgit2-dist/tests-clar/odb/loose.c +0 -84
  333. data/ext/rugged/vendor/libgit2-dist/tests-clar/odb/loose_data.h +0 -522
  334. data/ext/rugged/vendor/libgit2-dist/tests-clar/odb/mixed.c +0 -24
  335. data/ext/rugged/vendor/libgit2-dist/tests-clar/odb/pack_data.h +0 -151
  336. data/ext/rugged/vendor/libgit2-dist/tests-clar/odb/packed.c +0 -78
  337. data/ext/rugged/vendor/libgit2-dist/tests-clar/odb/sorting.c +0 -71
  338. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/create.c +0 -113
  339. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/delete.c +0 -91
  340. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/listall.c +0 -78
  341. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/move.c +0 -72
  342. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/crashes.c +0 -17
  343. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/create.c +0 -149
  344. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/delete.c +0 -85
  345. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/list.c +0 -53
  346. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/listall.c +0 -36
  347. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/lookup.c +0 -42
  348. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/normalize.c +0 -200
  349. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/overwrite.c +0 -136
  350. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/pack.c +0 -67
  351. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/read.c +0 -194
  352. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/reflog.c +0 -123
  353. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/rename.c +0 -339
  354. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/revparse.c +0 -174
  355. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/unicode.c +0 -42
  356. data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/discover.c +0 -142
  357. data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/getters.c +0 -86
  358. data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/init.c +0 -249
  359. data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/open.c +0 -282
  360. data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/setters.c +0 -80
  361. data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/mixed.c +0 -47
  362. data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/reset_helpers.c +0 -10
  363. data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/reset_helpers.h +0 -6
  364. data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/soft.c +0 -102
  365. data/ext/rugged/vendor/libgit2-dist/tests-clar/revwalk/basic.c +0 -181
  366. data/ext/rugged/vendor/libgit2-dist/tests-clar/revwalk/mergebase.c +0 -148
  367. data/ext/rugged/vendor/libgit2-dist/tests-clar/status/ignore.c +0 -147
  368. data/ext/rugged/vendor/libgit2-dist/tests-clar/status/single.c +0 -29
  369. data/ext/rugged/vendor/libgit2-dist/tests-clar/status/status_data.h +0 -202
  370. data/ext/rugged/vendor/libgit2-dist/tests-clar/status/status_helpers.c +0 -49
  371. data/ext/rugged/vendor/libgit2-dist/tests-clar/status/status_helpers.h +0 -33
  372. data/ext/rugged/vendor/libgit2-dist/tests-clar/status/submodules.c +0 -112
  373. data/ext/rugged/vendor/libgit2-dist/tests-clar/status/worktree.c +0 -649
  374. data/ext/rugged/vendor/libgit2-dist/tests-clar/threads/basic.c +0 -20
@@ -142,7 +142,7 @@ int git_indexer_stream_new(git_indexer_stream **out, const char *prefix)
142
142
  {
143
143
  git_indexer_stream *idx;
144
144
  git_buf path = GIT_BUF_INIT;
145
- static const char suff[] = "/objects/pack/pack-received";
145
+ static const char suff[] = "/pack";
146
146
  int error;
147
147
 
148
148
  idx = git__calloc(1, sizeof(git_indexer_stream));
@@ -169,29 +169,14 @@ cleanup:
169
169
  }
170
170
 
171
171
  /* Try to store the delta so we can try to resolve it later */
172
- static int store_delta(git_indexer_stream *idx)
172
+ static int store_delta(git_indexer_stream *idx, git_off_t entry_start, size_t entry_size, git_otype type)
173
173
  {
174
- git_otype type;
175
174
  git_mwindow *w = NULL;
176
- git_mwindow_file *mwf = &idx->pack->mwf;
177
- git_off_t entry_start = idx->off;
178
175
  struct delta_info *delta;
179
- size_t entry_size;
180
176
  git_rawobj obj;
181
177
  int error;
182
178
 
183
- /*
184
- * ref-delta objects can refer to object that we haven't
185
- * found yet, so give it another opportunity
186
- */
187
- if (git_packfile_unpack_header(&entry_size, &type, mwf, &w, &idx->off) < 0)
188
- return -1;
189
-
190
- git_mwindow_close(&w);
191
-
192
- /* If it's not a delta, mark it as failure, we can't do anything with it */
193
- if (type != GIT_OBJ_REF_DELTA && type != GIT_OBJ_OFS_DELTA)
194
- return -1;
179
+ assert(type == GIT_OBJ_REF_DELTA || type == GIT_OBJ_OFS_DELTA);
195
180
 
196
181
  if (type == GIT_OBJ_REF_DELTA) {
197
182
  idx->off += GIT_OID_RAWSZ;
@@ -313,8 +298,6 @@ int git_indexer_stream_add(git_indexer_stream *idx, const void *data, size_t siz
313
298
  mwf = &idx->pack->mwf;
314
299
  if (git_mwindow_file_register(&idx->pack->mwf) < 0)
315
300
  return -1;
316
-
317
- return 0;
318
301
  }
319
302
 
320
303
  if (!idx->parsed_header) {
@@ -352,27 +335,44 @@ int git_indexer_stream_add(git_indexer_stream *idx, const void *data, size_t siz
352
335
  while (processed < idx->nr_objects) {
353
336
  git_rawobj obj;
354
337
  git_off_t entry_start = idx->off;
338
+ size_t entry_size;
339
+ git_otype type;
340
+ git_mwindow *w = NULL;
355
341
 
356
342
  if (idx->pack->mwf.size <= idx->off + 20)
357
343
  return 0;
358
344
 
359
- error = git_packfile_unpack(&obj, idx->pack, &idx->off);
345
+ error = git_packfile_unpack_header(&entry_size, &type, mwf, &w, &idx->off);
360
346
  if (error == GIT_EBUFS) {
361
347
  idx->off = entry_start;
362
348
  return 0;
363
349
  }
350
+ if (error < 0)
351
+ return -1;
364
352
 
365
- if (error < 0) {
366
- idx->off = entry_start;
367
- error = store_delta(idx);
368
- if (error == GIT_EBUFS)
353
+ git_mwindow_close(&w);
354
+
355
+ if (type == GIT_OBJ_REF_DELTA || type == GIT_OBJ_OFS_DELTA) {
356
+ error = store_delta(idx, entry_start, entry_size, type);
357
+ if (error == GIT_EBUFS) {
358
+ idx->off = entry_start;
369
359
  return 0;
360
+ }
370
361
  if (error < 0)
371
362
  return error;
372
363
 
373
364
  continue;
374
365
  }
375
366
 
367
+ idx->off = entry_start;
368
+ error = git_packfile_unpack(&obj, idx->pack, &idx->off);
369
+ if (error == GIT_EBUFS) {
370
+ idx->off = entry_start;
371
+ return 0;
372
+ }
373
+ if (error < 0)
374
+ return -1;
375
+
376
376
  if (hash_and_save(idx, &obj, entry_start) < 0)
377
377
  goto on_error;
378
378
 
@@ -775,6 +775,7 @@ int git_indexer_write(git_indexer *idx)
775
775
 
776
776
  cleanup:
777
777
  git_mwindow_free_all(&idx->pack->mwf);
778
+ git_mwindow_file_deregister(&idx->pack->mwf);
778
779
  if (error < 0)
779
780
  git_filebuf_cleanup(&idx->file);
780
781
  git_buf_free(&filename);
@@ -888,6 +889,7 @@ void git_indexer_free(git_indexer *idx)
888
889
  return;
889
890
 
890
891
  p_close(idx->pack->mwf.fd);
892
+ git_mwindow_file_deregister(&idx->pack->mwf);
891
893
  git_vector_foreach(&idx->objects, i, e)
892
894
  git__free(e);
893
895
  git_vector_free(&idx->objects);
@@ -131,7 +131,9 @@ typedef unsigned long long khint64_t;
131
131
  #endif
132
132
 
133
133
  #ifdef _MSC_VER
134
- #define inline __inline
134
+ #define kh_inline __inline
135
+ #else
136
+ #define kh_inline inline
135
137
  #endif
136
138
 
137
139
  typedef khint32_t khint_t;
@@ -345,7 +347,7 @@ static const double __ac_HASH_UPPER = 0.77;
345
347
  __KHASH_IMPL(name, SCOPE, khkey_t, khval_t, kh_is_map, __hash_func, __hash_equal)
346
348
 
347
349
  #define KHASH_INIT(name, khkey_t, khval_t, kh_is_map, __hash_func, __hash_equal) \
348
- KHASH_INIT2(name, static inline, khkey_t, khval_t, kh_is_map, __hash_func, __hash_equal)
350
+ KHASH_INIT2(name, static kh_inline, khkey_t, khval_t, kh_is_map, __hash_func, __hash_equal)
349
351
 
350
352
  /* --- BEGIN OF HASH FUNCTIONS --- */
351
353
 
@@ -374,7 +376,7 @@ static const double __ac_HASH_UPPER = 0.77;
374
376
  @param s Pointer to a null terminated string
375
377
  @return The hash value
376
378
  */
377
- static inline khint_t __ac_X31_hash_string(const char *s)
379
+ static kh_inline khint_t __ac_X31_hash_string(const char *s)
378
380
  {
379
381
  khint_t h = (khint_t)*s;
380
382
  if (h) for (++s ; *s; ++s) h = (h << 5) - h + (khint_t)*s;
@@ -391,7 +393,7 @@ static inline khint_t __ac_X31_hash_string(const char *s)
391
393
  */
392
394
  #define kh_str_hash_equal(a, b) (strcmp(a, b) == 0)
393
395
 
394
- static inline khint_t __ac_Wang_hash(khint_t key)
396
+ static kh_inline khint_t __ac_Wang_hash(khint_t key)
395
397
  {
396
398
  key += ~(key << 15);
397
399
  key ^= (key >> 10);
@@ -23,6 +23,10 @@
23
23
  #define GIT_MAP_TYPE 0xf
24
24
  #define GIT_MAP_FIXED 0x10
25
25
 
26
+ #ifdef __amigaos4__
27
+ #define MAP_FAILED 0
28
+ #endif
29
+
26
30
  typedef struct { /* memory mapped buffer */
27
31
  void *data; /* data bytes */
28
32
  size_t len; /* data length */
@@ -6,7 +6,6 @@
6
6
  */
7
7
 
8
8
  #include "message.h"
9
- #include <ctype.h>
10
9
 
11
10
  static size_t line_length_without_trailing_spaces(const char *line, size_t len)
12
11
  {
@@ -22,7 +21,7 @@ static size_t line_length_without_trailing_spaces(const char *line, size_t len)
22
21
 
23
22
  /* Greatly inspired from git.git "stripspace" */
24
23
  /* see https://github.com/git/git/blob/497215d8811ac7b8955693ceaad0899ecd894ed2/builtin/stripspace.c#L4-67 */
25
- int git_message_prettify(git_buf *message_out, const char *message, int strip_comments)
24
+ int git_message__prettify(git_buf *message_out, const char *message, int strip_comments)
26
25
  {
27
26
  const size_t message_len = strlen(message);
28
27
 
@@ -59,3 +58,29 @@ int git_message_prettify(git_buf *message_out, const char *message, int strip_co
59
58
 
60
59
  return git_buf_oom(message_out) ? -1 : 0;
61
60
  }
61
+
62
+ int git_message_prettify(char *message_out, size_t buffer_size, const char *message, int strip_comments)
63
+ {
64
+ git_buf buf = GIT_BUF_INIT;
65
+ ssize_t out_size = -1;
66
+
67
+ if (message_out && buffer_size)
68
+ *message_out = '\0';
69
+
70
+ if (git_message__prettify(&buf, message, strip_comments) < 0)
71
+ goto done;
72
+
73
+ if (message_out && buf.size + 1 > buffer_size) { /* +1 for NUL byte */
74
+ giterr_set(GITERR_INVALID, "Buffer too short to hold the cleaned message");
75
+ goto done;
76
+ }
77
+
78
+ if (message_out)
79
+ git_buf_copy_cstr(message_out, buffer_size, &buf);
80
+
81
+ out_size = buf.size + 1;
82
+
83
+ done:
84
+ git_buf_free(&buf);
85
+ return out_size;
86
+ }
@@ -7,8 +7,9 @@
7
7
  #ifndef INCLUDE_message_h__
8
8
  #define INCLUDE_message_h__
9
9
 
10
+ #include "git2/message.h"
10
11
  #include "buffer.h"
11
12
 
12
- int git_message_prettify(git_buf *message_out, const char *message, int strip_comments);
13
+ int git_message__prettify(git_buf *message_out, const char *message, int strip_comments);
13
14
 
14
15
  #endif /* INCLUDE_message_h__ */
@@ -32,14 +32,20 @@ static struct {
32
32
  DEFAULT_MAPPED_LIMIT,
33
33
  };
34
34
 
35
+ /* Whenever you want to read or modify this, grab git__mwindow_mutex */
36
+ static git_mwindow_ctl mem_ctl;
37
+
35
38
  /*
36
39
  * Free all the windows in a sequence, typically because we're done
37
40
  * with the file
38
41
  */
39
42
  void git_mwindow_free_all(git_mwindow_file *mwf)
40
43
  {
41
- git_mwindow_ctl *ctl = &GIT_GLOBAL->mem_ctl;
44
+ git_mwindow_ctl *ctl = &mem_ctl;
42
45
  unsigned int i;
46
+
47
+ git_mutex_lock(&git__mwindow_mutex);
48
+
43
49
  /*
44
50
  * Remove these windows from the global list
45
51
  */
@@ -67,6 +73,8 @@ void git_mwindow_free_all(git_mwindow_file *mwf)
67
73
  mwf->windows = w->next;
68
74
  git__free(w);
69
75
  }
76
+
77
+ git_mutex_unlock(&git__mwindow_mutex);
70
78
  }
71
79
 
72
80
  /*
@@ -82,7 +90,7 @@ int git_mwindow_contains(git_mwindow *win, git_off_t offset)
82
90
  /*
83
91
  * Find the least-recently-used window in a file
84
92
  */
85
- void git_mwindow_scan_lru(
93
+ static void git_mwindow_scan_lru(
86
94
  git_mwindow_file *mwf,
87
95
  git_mwindow **lru_w,
88
96
  git_mwindow **lru_l)
@@ -107,11 +115,12 @@ void git_mwindow_scan_lru(
107
115
 
108
116
  /*
109
117
  * Close the least recently used window. You should check to see if
110
- * the file descriptors need closing from time to time.
118
+ * the file descriptors need closing from time to time. Called under
119
+ * lock from new_window.
111
120
  */
112
121
  static int git_mwindow_close_lru(git_mwindow_file *mwf)
113
122
  {
114
- git_mwindow_ctl *ctl = &GIT_GLOBAL->mem_ctl;
123
+ git_mwindow_ctl *ctl = &mem_ctl;
115
124
  unsigned int i;
116
125
  git_mwindow *lru_w = NULL, *lru_l = NULL, **list = &mwf->windows;
117
126
 
@@ -146,18 +155,20 @@ static int git_mwindow_close_lru(git_mwindow_file *mwf)
146
155
  return 0;
147
156
  }
148
157
 
158
+ /* This gets called under lock from git_mwindow_open */
149
159
  static git_mwindow *new_window(
150
160
  git_mwindow_file *mwf,
151
161
  git_file fd,
152
162
  git_off_t size,
153
163
  git_off_t offset)
154
164
  {
155
- git_mwindow_ctl *ctl = &GIT_GLOBAL->mem_ctl;
165
+ git_mwindow_ctl *ctl = &mem_ctl;
156
166
  size_t walign = _mw_options.window_size / 2;
157
167
  git_off_t len;
158
168
  git_mwindow *w;
159
169
 
160
170
  w = git__malloc(sizeof(*w));
171
+
161
172
  if (w == NULL)
162
173
  return NULL;
163
174
 
@@ -207,9 +218,10 @@ unsigned char *git_mwindow_open(
207
218
  size_t extra,
208
219
  unsigned int *left)
209
220
  {
210
- git_mwindow_ctl *ctl = &GIT_GLOBAL->mem_ctl;
221
+ git_mwindow_ctl *ctl = &mem_ctl;
211
222
  git_mwindow *w = *cursor;
212
223
 
224
+ git_mutex_lock(&git__mwindow_mutex);
213
225
  if (!w || !(git_mwindow_contains(w, offset) && git_mwindow_contains(w, offset + extra))) {
214
226
  if (w) {
215
227
  w->inuse_cnt--;
@@ -227,8 +239,10 @@ unsigned char *git_mwindow_open(
227
239
  */
228
240
  if (!w) {
229
241
  w = new_window(mwf, mwf->fd, mwf->size, offset);
230
- if (w == NULL)
242
+ if (w == NULL) {
243
+ git_mutex_unlock(&git__mwindow_mutex);
231
244
  return NULL;
245
+ }
232
246
  w->next = mwf->windows;
233
247
  mwf->windows = w;
234
248
  }
@@ -246,25 +260,55 @@ unsigned char *git_mwindow_open(
246
260
  if (left)
247
261
  *left = (unsigned int)(w->window_map.len - offset);
248
262
 
263
+ git_mutex_unlock(&git__mwindow_mutex);
249
264
  return (unsigned char *) w->window_map.data + offset;
250
265
  }
251
266
 
252
267
  int git_mwindow_file_register(git_mwindow_file *mwf)
253
268
  {
254
- git_mwindow_ctl *ctl = &GIT_GLOBAL->mem_ctl;
269
+ git_mwindow_ctl *ctl = &mem_ctl;
270
+ int ret;
255
271
 
272
+ git_mutex_lock(&git__mwindow_mutex);
256
273
  if (ctl->windowfiles.length == 0 &&
257
- git_vector_init(&ctl->windowfiles, 8, NULL) < 0)
274
+ git_vector_init(&ctl->windowfiles, 8, NULL) < 0) {
275
+ git_mutex_unlock(&git__mwindow_mutex);
258
276
  return -1;
277
+ }
278
+
279
+ ret = git_vector_insert(&ctl->windowfiles, mwf);
280
+ git_mutex_unlock(&git__mwindow_mutex);
281
+
282
+ return ret;
283
+ }
284
+
285
+ int git_mwindow_file_deregister(git_mwindow_file *mwf)
286
+ {
287
+ git_mwindow_ctl *ctl = &mem_ctl;
288
+ git_mwindow_file *cur;
289
+ unsigned int i;
290
+
291
+ git_mutex_lock(&git__mwindow_mutex);
292
+ git_vector_foreach(&ctl->windowfiles, i, cur) {
293
+ if (cur == mwf) {
294
+ git_vector_remove(&ctl->windowfiles, i);
295
+ git_mutex_unlock(&git__mwindow_mutex);
296
+ return 0;
297
+ }
298
+ }
299
+ git_mutex_unlock(&git__mwindow_mutex);
259
300
 
260
- return git_vector_insert(&ctl->windowfiles, mwf);
301
+ giterr_set(GITERR_ODB, "Failed to find the memory window file to deregister");
302
+ return -1;
261
303
  }
262
304
 
263
305
  void git_mwindow_close(git_mwindow **window)
264
306
  {
265
307
  git_mwindow *w = *window;
266
308
  if (w) {
309
+ git_mutex_lock(&git__mwindow_mutex);
267
310
  w->inuse_cnt--;
311
+ git_mutex_unlock(&git__mwindow_mutex);
268
312
  *window = NULL;
269
313
  }
270
314
  }
@@ -38,8 +38,8 @@ typedef struct git_mwindow_ctl {
38
38
  int git_mwindow_contains(git_mwindow *win, git_off_t offset);
39
39
  void git_mwindow_free_all(git_mwindow_file *mwf);
40
40
  unsigned char *git_mwindow_open(git_mwindow_file *mwf, git_mwindow **cursor, git_off_t offset, size_t extra, unsigned int *left);
41
- void git_mwindow_scan_lru(git_mwindow_file *mwf, git_mwindow **lru_w, git_mwindow **lru_l);
42
41
  int git_mwindow_file_register(git_mwindow_file *mwf);
42
+ int git_mwindow_file_deregister(git_mwindow_file *mwf);
43
43
  void git_mwindow_close(git_mwindow **w_cursor);
44
44
 
45
45
  #endif
@@ -12,7 +12,6 @@
12
12
  # include <netdb.h>
13
13
  # include <arpa/inet.h>
14
14
  #else
15
- # include <winsock2.h>
16
15
  # include <ws2tcpip.h>
17
16
  # ifdef _MSC_VER
18
17
  # pragma comment(lib, "ws2_32.lib")
@@ -62,63 +61,72 @@ static int ssl_set_error(gitno_ssl *ssl, int error)
62
61
  }
63
62
  #endif
64
63
 
65
- void gitno_buffer_setup(git_transport *t, gitno_buffer *buf, char *data, unsigned int len)
64
+ int gitno_recv(gitno_buffer *buf)
66
65
  {
67
- memset(buf, 0x0, sizeof(gitno_buffer));
68
- memset(data, 0x0, len);
69
- buf->data = data;
70
- buf->len = len;
71
- buf->offset = 0;
72
- buf->fd = t->socket;
73
- #ifdef GIT_SSL
74
- if (t->encrypt)
75
- buf->ssl = &t->ssl;
76
- #endif
66
+ return buf->recv(buf);
77
67
  }
78
68
 
79
69
  #ifdef GIT_SSL
80
- static int ssl_recv(gitno_ssl *ssl, void *data, size_t len)
70
+ static int gitno__recv_ssl(gitno_buffer *buf)
81
71
  {
82
72
  int ret;
83
73
 
84
74
  do {
85
- ret = SSL_read(ssl->ssl, data, len);
86
- } while (SSL_get_error(ssl->ssl, ret) == SSL_ERROR_WANT_READ);
75
+ ret = SSL_read(buf->ssl->ssl, buf->data + buf->offset, buf->len - buf->offset);
76
+ } while (SSL_get_error(buf->ssl->ssl, ret) == SSL_ERROR_WANT_READ);
87
77
 
88
- if (ret < 0)
89
- return ssl_set_error(ssl, ret);
78
+ if (ret < 0) {
79
+ net_set_error("Error receiving socket data");
80
+ return -1;
81
+ }
90
82
 
83
+ buf->offset += ret;
91
84
  return ret;
92
85
  }
93
86
  #endif
94
87
 
95
- int gitno_recv(gitno_buffer *buf)
88
+ int gitno__recv(gitno_buffer *buf)
96
89
  {
97
90
  int ret;
98
91
 
99
- #ifdef GIT_SSL
100
- if (buf->ssl != NULL) {
101
- if ((ret = ssl_recv(buf->ssl, buf->data + buf->offset, buf->len - buf->offset)) < 0)
102
- return -1;
103
- } else {
104
- ret = p_recv(buf->fd, buf->data + buf->offset, buf->len - buf->offset, 0);
105
- if (ret < 0) {
106
- net_set_error("Error receiving socket data");
107
- return -1;
108
- }
109
- }
110
- #else
111
92
  ret = p_recv(buf->fd, buf->data + buf->offset, buf->len - buf->offset, 0);
112
93
  if (ret < 0) {
113
94
  net_set_error("Error receiving socket data");
114
95
  return -1;
115
96
  }
116
- #endif
117
97
 
118
98
  buf->offset += ret;
119
99
  return ret;
120
100
  }
121
101
 
102
+ void gitno_buffer_setup_callback(
103
+ git_transport *t,
104
+ gitno_buffer *buf,
105
+ char *data,
106
+ size_t len,
107
+ int (*recv)(gitno_buffer *buf), void *cb_data)
108
+ {
109
+ memset(buf, 0x0, sizeof(gitno_buffer));
110
+ memset(data, 0x0, len);
111
+ buf->data = data;
112
+ buf->len = len;
113
+ buf->offset = 0;
114
+ buf->fd = t->socket;
115
+ buf->recv = recv;
116
+ buf->cb_data = cb_data;
117
+ }
118
+
119
+ void gitno_buffer_setup(git_transport *t, gitno_buffer *buf, char *data, size_t len)
120
+ {
121
+ #ifdef GIT_SSL
122
+ if (t->use_ssl) {
123
+ gitno_buffer_setup_callback(t, buf, data, len, gitno__recv_ssl, NULL);
124
+ buf->ssl = &t->ssl;
125
+ } else
126
+ #endif
127
+ gitno_buffer_setup_callback(t, buf, data, len, gitno__recv, NULL);
128
+ }
129
+
122
130
  /* Consume up to ptr and move the rest of the buffer to the beginning */
123
131
  void gitno_consume(gitno_buffer *buf, const char *ptr)
124
132
  {
@@ -148,7 +156,7 @@ int gitno_ssl_teardown(git_transport *t)
148
156
  int ret;
149
157
  #endif
150
158
 
151
- if (!t->encrypt)
159
+ if (!t->use_ssl)
152
160
  return 0;
153
161
 
154
162
  #ifdef GIT_SSL
@@ -382,16 +390,18 @@ int gitno_connect(git_transport *t, const char *host, const char *port)
382
390
  GIT_SOCKET s = INVALID_SOCKET;
383
391
 
384
392
  memset(&hints, 0x0, sizeof(struct addrinfo));
385
- hints.ai_family = AF_UNSPEC;
386
393
  hints.ai_socktype = SOCK_STREAM;
394
+ hints.ai_family = AF_UNSPEC;
387
395
 
388
- if ((ret = getaddrinfo(host, port, &hints, &info)) < 0) {
389
- giterr_set(GITERR_NET, "Failed to resolve address for %s: %s", host, gai_strerror(ret));
396
+ if ((ret = p_getaddrinfo(host, port, &hints, &info)) < 0) {
397
+ giterr_set(GITERR_NET,
398
+ "Failed to resolve address for %s: %s", host, p_gai_strerror(ret));
390
399
  return -1;
391
400
  }
392
401
 
393
402
  for (p = info; p != NULL; p = p->ai_next) {
394
403
  s = socket(p->ai_family, p->ai_socktype, p->ai_protocol);
404
+
395
405
  if (s == INVALID_SOCKET) {
396
406
  net_set_error("error creating socket");
397
407
  break;
@@ -412,9 +422,9 @@ int gitno_connect(git_transport *t, const char *host, const char *port)
412
422
  }
413
423
 
414
424
  t->socket = s;
415
- freeaddrinfo(info);
425
+ p_freeaddrinfo(info);
416
426
 
417
- if (t->encrypt && ssl_setup(t, host) < 0)
427
+ if (t->use_ssl && ssl_setup(t, host) < 0)
418
428
  return -1;
419
429
 
420
430
  return 0;
@@ -444,7 +454,7 @@ int gitno_send(git_transport *t, const char *msg, size_t len, int flags)
444
454
  size_t off = 0;
445
455
 
446
456
  #ifdef GIT_SSL
447
- if (t->encrypt)
457
+ if (t->use_ssl)
448
458
  return send_ssl(&t->ssl, msg, len);
449
459
  #endif
450
460