rugged 1.1.1 → 1.2.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 (277) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -0
  3. data/README.md +1 -1
  4. data/ext/rugged/rugged.c +7 -4
  5. data/ext/rugged/rugged_object.c +1 -1
  6. data/ext/rugged/rugged_repo.c +3 -3
  7. data/lib/rugged/repository.rb +2 -2
  8. data/lib/rugged/version.rb +1 -1
  9. data/vendor/libgit2/CMakeLists.txt +11 -6
  10. data/vendor/libgit2/COPYING +109 -1
  11. data/vendor/libgit2/cmake/Findfutimens.cmake +14 -0
  12. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +4 -0
  13. data/vendor/libgit2/cmake/SelectHashes.cmake +1 -0
  14. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +101 -0
  15. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +17 -5
  16. data/vendor/libgit2/deps/ntlmclient/crypt.h +14 -9
  17. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +20 -20
  18. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +3 -3
  19. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +37 -36
  20. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +4 -3
  21. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +178 -51
  22. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +74 -5
  23. data/vendor/libgit2/deps/ntlmclient/ntlm.c +150 -118
  24. data/vendor/libgit2/deps/ntlmclient/ntlm.h +13 -9
  25. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +16 -3
  26. data/vendor/libgit2/deps/ntlmclient/unicode.h +10 -4
  27. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +16 -27
  28. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.h +20 -0
  29. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +28 -52
  30. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.h +22 -0
  31. data/vendor/libgit2/include/git2/attr.h +89 -0
  32. data/vendor/libgit2/include/git2/blame.h +93 -42
  33. data/vendor/libgit2/include/git2/blob.h +14 -2
  34. data/vendor/libgit2/include/git2/branch.h +25 -0
  35. data/vendor/libgit2/include/git2/cert.h +42 -5
  36. data/vendor/libgit2/include/git2/checkout.h +28 -12
  37. data/vendor/libgit2/include/git2/commit.h +35 -19
  38. data/vendor/libgit2/include/git2/common.h +14 -4
  39. data/vendor/libgit2/include/git2/deprecated.h +206 -6
  40. data/vendor/libgit2/include/git2/diff.h +34 -19
  41. data/vendor/libgit2/include/git2/errors.h +6 -6
  42. data/vendor/libgit2/include/git2/filter.h +57 -17
  43. data/vendor/libgit2/include/git2/graph.h +20 -2
  44. data/vendor/libgit2/include/git2/index.h +2 -2
  45. data/vendor/libgit2/include/git2/odb.h +29 -0
  46. data/vendor/libgit2/include/git2/patch.h +8 -0
  47. data/vendor/libgit2/include/git2/rebase.h +25 -1
  48. data/vendor/libgit2/include/git2/refs.h +6 -2
  49. data/vendor/libgit2/include/git2/remote.h +59 -6
  50. data/vendor/libgit2/include/git2/revparse.h +5 -5
  51. data/vendor/libgit2/include/git2/status.h +115 -59
  52. data/vendor/libgit2/include/git2/submodule.h +9 -0
  53. data/vendor/libgit2/include/git2/sys/commit_graph.h +174 -0
  54. data/vendor/libgit2/include/git2/sys/filter.h +49 -28
  55. data/vendor/libgit2/include/git2/sys/midx.h +74 -0
  56. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -0
  57. data/vendor/libgit2/include/git2/sys/transport.h +1 -0
  58. data/vendor/libgit2/include/git2/tag.h +12 -0
  59. data/vendor/libgit2/include/git2/tree.h +0 -14
  60. data/vendor/libgit2/include/git2/types.h +9 -0
  61. data/vendor/libgit2/include/git2/version.h +4 -4
  62. data/vendor/libgit2/include/git2/worktree.h +1 -0
  63. data/vendor/libgit2/src/CMakeLists.txt +25 -4
  64. data/vendor/libgit2/src/alloc.c +21 -8
  65. data/vendor/libgit2/src/allocators/failalloc.c +92 -0
  66. data/vendor/libgit2/src/allocators/failalloc.h +23 -0
  67. data/vendor/libgit2/src/allocators/stdalloc.c +41 -10
  68. data/vendor/libgit2/src/allocators/win32_leakcheck.c +118 -0
  69. data/vendor/libgit2/src/allocators/{win32_crtdbg.h → win32_leakcheck.h} +3 -3
  70. data/vendor/libgit2/src/annotated_commit.c +21 -9
  71. data/vendor/libgit2/src/apply.c +16 -7
  72. data/vendor/libgit2/src/array.h +11 -11
  73. data/vendor/libgit2/src/attr.c +181 -74
  74. data/vendor/libgit2/src/attr_file.c +84 -39
  75. data/vendor/libgit2/src/attr_file.h +32 -11
  76. data/vendor/libgit2/src/attrcache.c +42 -37
  77. data/vendor/libgit2/src/attrcache.h +4 -5
  78. data/vendor/libgit2/src/blame.c +11 -5
  79. data/vendor/libgit2/src/blob.c +35 -24
  80. data/vendor/libgit2/src/branch.c +69 -17
  81. data/vendor/libgit2/src/buffer.c +334 -25
  82. data/vendor/libgit2/src/buffer.h +153 -2
  83. data/vendor/libgit2/src/cache.c +2 -2
  84. data/vendor/libgit2/src/cache.h +7 -7
  85. data/vendor/libgit2/src/cc-compat.h +10 -2
  86. data/vendor/libgit2/src/checkout.c +48 -26
  87. data/vendor/libgit2/src/cherrypick.c +6 -2
  88. data/vendor/libgit2/src/clone.c +41 -47
  89. data/vendor/libgit2/src/commit.c +41 -28
  90. data/vendor/libgit2/src/commit_graph.c +1209 -0
  91. data/vendor/libgit2/src/commit_graph.h +162 -0
  92. data/vendor/libgit2/src/commit_list.c +46 -0
  93. data/vendor/libgit2/src/commit_list.h +2 -0
  94. data/vendor/libgit2/src/common.h +25 -2
  95. data/vendor/libgit2/src/config.c +37 -15
  96. data/vendor/libgit2/src/config_cache.c +5 -3
  97. data/vendor/libgit2/src/config_file.c +16 -8
  98. data/vendor/libgit2/src/config_parse.c +4 -6
  99. data/vendor/libgit2/src/crlf.c +16 -6
  100. data/vendor/libgit2/src/date.c +4 -3
  101. data/vendor/libgit2/src/delta.c +1 -1
  102. data/vendor/libgit2/src/describe.c +6 -3
  103. data/vendor/libgit2/src/diff.c +11 -8
  104. data/vendor/libgit2/src/diff_driver.c +21 -17
  105. data/vendor/libgit2/src/diff_file.c +2 -6
  106. data/vendor/libgit2/src/diff_generate.c +46 -17
  107. data/vendor/libgit2/src/diff_print.c +19 -6
  108. data/vendor/libgit2/src/diff_stats.c +7 -5
  109. data/vendor/libgit2/src/diff_tform.c +9 -8
  110. data/vendor/libgit2/src/diff_xdiff.c +4 -2
  111. data/vendor/libgit2/src/diff_xdiff.h +1 -1
  112. data/vendor/libgit2/src/errors.c +24 -19
  113. data/vendor/libgit2/src/features.h.in +5 -1
  114. data/vendor/libgit2/src/fetch.c +5 -2
  115. data/vendor/libgit2/src/fetchhead.c +8 -4
  116. data/vendor/libgit2/src/filebuf.c +9 -7
  117. data/vendor/libgit2/src/filter.c +206 -110
  118. data/vendor/libgit2/src/filter.h +24 -5
  119. data/vendor/libgit2/src/futils.c +5 -5
  120. data/vendor/libgit2/src/futils.h +1 -1
  121. data/vendor/libgit2/src/graph.c +64 -9
  122. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +3 -3
  123. data/vendor/libgit2/src/hash/sha1/common_crypto.c +3 -3
  124. data/vendor/libgit2/src/hash/sha1/generic.h +1 -1
  125. data/vendor/libgit2/src/hash/sha1/mbedtls.c +12 -12
  126. data/vendor/libgit2/src/hash/sha1/openssl.c +3 -3
  127. data/vendor/libgit2/src/hash/sha1/sha1dc/sha1.c +0 -2
  128. data/vendor/libgit2/src/hash/sha1/win32.c +15 -11
  129. data/vendor/libgit2/src/hash.c +16 -13
  130. data/vendor/libgit2/src/hash.h +1 -1
  131. data/vendor/libgit2/src/hashsig.c +23 -10
  132. data/vendor/libgit2/src/ident.c +13 -3
  133. data/vendor/libgit2/src/ignore.c +35 -19
  134. data/vendor/libgit2/src/index.c +106 -70
  135. data/vendor/libgit2/src/index.h +1 -1
  136. data/vendor/libgit2/src/indexer.c +31 -29
  137. data/vendor/libgit2/src/integer.h +64 -2
  138. data/vendor/libgit2/src/iterator.c +36 -24
  139. data/vendor/libgit2/src/iterator.h +1 -1
  140. data/vendor/libgit2/src/khash.h +2 -11
  141. data/vendor/libgit2/src/{settings.c → libgit2.c} +117 -50
  142. data/vendor/libgit2/src/libgit2.h +15 -0
  143. data/vendor/libgit2/src/mailmap.c +23 -10
  144. data/vendor/libgit2/src/map.h +3 -3
  145. data/vendor/libgit2/src/merge.c +70 -30
  146. data/vendor/libgit2/src/merge.h +2 -1
  147. data/vendor/libgit2/src/merge_driver.c +19 -13
  148. data/vendor/libgit2/src/merge_file.c +11 -3
  149. data/vendor/libgit2/src/message.c +3 -1
  150. data/vendor/libgit2/src/midx.c +471 -10
  151. data/vendor/libgit2/src/midx.h +28 -1
  152. data/vendor/libgit2/src/mwindow.c +103 -59
  153. data/vendor/libgit2/src/mwindow.h +3 -3
  154. data/vendor/libgit2/src/net.c +127 -3
  155. data/vendor/libgit2/src/net.h +16 -2
  156. data/vendor/libgit2/src/netops.c +6 -4
  157. data/vendor/libgit2/src/netops.h +2 -2
  158. data/vendor/libgit2/src/notes.c +10 -10
  159. data/vendor/libgit2/src/object.c +22 -14
  160. data/vendor/libgit2/src/odb.c +285 -48
  161. data/vendor/libgit2/src/odb.h +16 -2
  162. data/vendor/libgit2/src/odb_loose.c +28 -18
  163. data/vendor/libgit2/src/odb_mempack.c +1 -1
  164. data/vendor/libgit2/src/odb_pack.c +391 -114
  165. data/vendor/libgit2/src/oid.c +5 -4
  166. data/vendor/libgit2/src/pack-objects.c +54 -48
  167. data/vendor/libgit2/src/pack.c +329 -119
  168. data/vendor/libgit2/src/pack.h +25 -7
  169. data/vendor/libgit2/src/patch.c +14 -7
  170. data/vendor/libgit2/src/patch_generate.c +2 -2
  171. data/vendor/libgit2/src/patch_parse.c +2 -1
  172. data/vendor/libgit2/src/path.c +98 -53
  173. data/vendor/libgit2/src/path.h +79 -6
  174. data/vendor/libgit2/src/pathspec.c +8 -8
  175. data/vendor/libgit2/src/pool.c +13 -7
  176. data/vendor/libgit2/src/posix.c +11 -3
  177. data/vendor/libgit2/src/reader.c +10 -6
  178. data/vendor/libgit2/src/rebase.c +93 -49
  179. data/vendor/libgit2/src/refdb.c +30 -13
  180. data/vendor/libgit2/src/refdb_fs.c +121 -69
  181. data/vendor/libgit2/src/reflog.c +19 -14
  182. data/vendor/libgit2/src/refs.c +76 -41
  183. data/vendor/libgit2/src/refspec.c +32 -12
  184. data/vendor/libgit2/src/remote.c +272 -102
  185. data/vendor/libgit2/src/remote.h +2 -1
  186. data/vendor/libgit2/src/repository.c +176 -103
  187. data/vendor/libgit2/src/repository.h +12 -1
  188. data/vendor/libgit2/src/reset.c +7 -6
  189. data/vendor/libgit2/src/revert.c +6 -2
  190. data/vendor/libgit2/src/revparse.c +14 -9
  191. data/vendor/libgit2/src/revwalk.c +32 -15
  192. data/vendor/libgit2/src/runtime.c +162 -0
  193. data/vendor/libgit2/src/runtime.h +62 -0
  194. data/vendor/libgit2/src/settings.h +11 -0
  195. data/vendor/libgit2/src/signature.c +6 -5
  196. data/vendor/libgit2/src/sortedcache.h +10 -8
  197. data/vendor/libgit2/src/stash.c +3 -1
  198. data/vendor/libgit2/src/status.c +7 -4
  199. data/vendor/libgit2/src/strarray.c +2 -1
  200. data/vendor/libgit2/src/streams/mbedtls.c +14 -17
  201. data/vendor/libgit2/src/streams/mbedtls.h +1 -1
  202. data/vendor/libgit2/src/streams/openssl.c +101 -201
  203. data/vendor/libgit2/src/streams/openssl.h +9 -1
  204. data/vendor/libgit2/src/streams/openssl_dynamic.c +309 -0
  205. data/vendor/libgit2/src/streams/openssl_dynamic.h +348 -0
  206. data/vendor/libgit2/src/streams/openssl_legacy.c +203 -0
  207. data/vendor/libgit2/src/streams/openssl_legacy.h +63 -0
  208. data/vendor/libgit2/src/streams/registry.c +5 -6
  209. data/vendor/libgit2/src/streams/socket.c +6 -2
  210. data/vendor/libgit2/src/streams/stransport.c +6 -3
  211. data/vendor/libgit2/src/streams/tls.c +5 -3
  212. data/vendor/libgit2/src/submodule.c +128 -62
  213. data/vendor/libgit2/src/submodule.h +9 -9
  214. data/vendor/libgit2/src/sysdir.c +4 -6
  215. data/vendor/libgit2/src/tag.c +47 -11
  216. data/vendor/libgit2/src/thread.c +140 -0
  217. data/vendor/libgit2/src/thread.h +479 -0
  218. data/vendor/libgit2/src/threadstate.c +83 -0
  219. data/vendor/libgit2/src/threadstate.h +24 -0
  220. data/vendor/libgit2/src/trace.c +2 -2
  221. data/vendor/libgit2/src/trace.h +17 -13
  222. data/vendor/libgit2/src/transaction.c +19 -8
  223. data/vendor/libgit2/src/transport.c +3 -3
  224. data/vendor/libgit2/src/transports/auth.c +1 -1
  225. data/vendor/libgit2/src/transports/auth_negotiate.c +11 -4
  226. data/vendor/libgit2/src/transports/auth_ntlm.c +10 -6
  227. data/vendor/libgit2/src/transports/credential.c +15 -7
  228. data/vendor/libgit2/src/transports/git.c +1 -3
  229. data/vendor/libgit2/src/transports/http.c +19 -17
  230. data/vendor/libgit2/src/transports/http.h +1 -0
  231. data/vendor/libgit2/src/transports/httpclient.c +53 -26
  232. data/vendor/libgit2/src/transports/httpclient.h +1 -1
  233. data/vendor/libgit2/src/transports/local.c +3 -3
  234. data/vendor/libgit2/src/transports/smart.c +12 -7
  235. data/vendor/libgit2/src/transports/smart.h +1 -1
  236. data/vendor/libgit2/src/transports/smart_protocol.c +11 -5
  237. data/vendor/libgit2/src/transports/ssh.c +51 -17
  238. data/vendor/libgit2/src/transports/winhttp.c +41 -31
  239. data/vendor/libgit2/src/tree.c +100 -77
  240. data/vendor/libgit2/src/tree.h +1 -0
  241. data/vendor/libgit2/src/tsort.c +0 -2
  242. data/vendor/libgit2/src/unix/map.c +3 -1
  243. data/vendor/libgit2/src/unix/pthread.h +2 -1
  244. data/vendor/libgit2/src/utf8.c +150 -0
  245. data/vendor/libgit2/src/utf8.h +52 -0
  246. data/vendor/libgit2/src/util.c +53 -129
  247. data/vendor/libgit2/src/util.h +33 -39
  248. data/vendor/libgit2/src/vector.c +23 -19
  249. data/vendor/libgit2/src/vector.h +4 -2
  250. data/vendor/libgit2/src/win32/findfile.c +4 -2
  251. data/vendor/libgit2/src/win32/map.c +1 -1
  252. data/vendor/libgit2/src/win32/msvc-compat.h +9 -1
  253. data/vendor/libgit2/src/win32/path_w32.c +22 -24
  254. data/vendor/libgit2/src/win32/path_w32.h +0 -1
  255. data/vendor/libgit2/src/win32/posix_w32.c +7 -1
  256. data/vendor/libgit2/src/win32/precompiled.h +0 -1
  257. data/vendor/libgit2/src/win32/reparse.h +4 -4
  258. data/vendor/libgit2/src/win32/thread.c +24 -15
  259. data/vendor/libgit2/src/win32/thread.h +1 -1
  260. data/vendor/libgit2/src/win32/w32_buffer.c +3 -3
  261. data/vendor/libgit2/src/win32/w32_common.h +18 -9
  262. data/vendor/libgit2/src/win32/{w32_crtdbg_stacktrace.c → w32_leakcheck.c} +269 -33
  263. data/vendor/libgit2/src/win32/w32_leakcheck.h +222 -0
  264. data/vendor/libgit2/src/win32/w32_util.h +6 -6
  265. data/vendor/libgit2/src/worktree.c +27 -16
  266. data/vendor/libgit2/src/zstream.c +1 -1
  267. metadata +32 -16
  268. data/vendor/libgit2/src/allocators/win32_crtdbg.c +0 -118
  269. data/vendor/libgit2/src/buf_text.c +0 -316
  270. data/vendor/libgit2/src/buf_text.h +0 -122
  271. data/vendor/libgit2/src/global.c +0 -363
  272. data/vendor/libgit2/src/global.h +0 -41
  273. data/vendor/libgit2/src/thread-utils.c +0 -58
  274. data/vendor/libgit2/src/thread-utils.h +0 -369
  275. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -127
  276. data/vendor/libgit2/src/win32/w32_stack.c +0 -188
  277. data/vendor/libgit2/src/win32/w32_stack.h +0 -140
@@ -167,17 +167,18 @@ typedef void GIT_CALLBACK(git_filter_shutdown_fn)(git_filter *self);
167
167
  *
168
168
  * The `payload` will be a pointer to a reference payload for the filter.
169
169
  * This will start as NULL, but `check` can assign to this pointer for
170
- * later use by the `apply` callback. Note that the value should be heap
171
- * allocated (not stack), so that it doesn't go away before the `apply`
170
+ * later use by the `stream` callback. Note that the value should be heap
171
+ * allocated (not stack), so that it doesn't go away before the `stream`
172
172
  * callback can use it. If a filter allocates and assigns a value to the
173
173
  * `payload`, it will need a `cleanup` callback to free the payload.
174
174
  */
175
175
  typedef int GIT_CALLBACK(git_filter_check_fn)(
176
- git_filter *self,
177
- void **payload, /* points to NULL ptr on entry, may be set */
176
+ git_filter *self,
177
+ void **payload, /* NULL on entry, may be set */
178
178
  const git_filter_source *src,
179
- const char **attr_values);
179
+ const char **attr_values);
180
180
 
181
+ #ifndef GIT_DEPRECATE_HARD
181
182
  /**
182
183
  * Callback to actually perform the data filtering
183
184
  *
@@ -189,32 +190,45 @@ typedef int GIT_CALLBACK(git_filter_check_fn)(
189
190
  *
190
191
  * The `payload` value will refer to any payload that was set by the
191
192
  * `check` callback. It may be read from or written to as needed.
193
+ *
194
+ * @deprecated use git_filter_stream_fn
192
195
  */
193
196
  typedef int GIT_CALLBACK(git_filter_apply_fn)(
194
- git_filter *self,
195
- void **payload, /* may be read and/or set */
196
- git_buf *to,
197
- const git_buf *from,
197
+ git_filter *self,
198
+ void **payload, /* may be read and/or set */
199
+ git_buf *to,
200
+ const git_buf *from,
198
201
  const git_filter_source *src);
202
+ #endif
199
203
 
204
+ /**
205
+ * Callback to perform the data filtering.
206
+ *
207
+ * Specified as `filter.stream`, this is a callback that filters data
208
+ * in a streaming manner. This function will provide a
209
+ * `git_writestream` that will the original data will be written to;
210
+ * with that data, the `git_writestream` will then perform the filter
211
+ * translation and stream the filtered data out to the `next` location.
212
+ */
200
213
  typedef int GIT_CALLBACK(git_filter_stream_fn)(
201
- git_writestream **out,
202
- git_filter *self,
203
- void **payload,
214
+ git_writestream **out,
215
+ git_filter *self,
216
+ void **payload,
204
217
  const git_filter_source *src,
205
- git_writestream *next);
218
+ git_writestream *next);
206
219
 
207
220
  /**
208
221
  * Callback to clean up after filtering has been applied
209
222
  *
210
223
  * Specified as `filter.cleanup`, this is an optional callback invoked
211
- * after the filter has been applied. If the `check` or `apply` callbacks
212
- * allocated a `payload` to keep per-source filter state, use this
213
- * callback to free that payload and release resources as required.
224
+ * after the filter has been applied. If the `check`, `apply`, or
225
+ * `stream` callbacks allocated a `payload` to keep per-source filter
226
+ * state, use this callback to free that payload and release resources
227
+ * as required.
214
228
  */
215
229
  typedef void GIT_CALLBACK(git_filter_cleanup_fn)(
216
- git_filter *self,
217
- void *payload);
230
+ git_filter *self,
231
+ void *payload);
218
232
 
219
233
  /**
220
234
  * Filter structure used to register custom filters.
@@ -248,21 +262,28 @@ struct git_filter {
248
262
  /**
249
263
  * Called to determine whether the filter should be invoked for a
250
264
  * given file. If this function returns `GIT_PASSTHROUGH` then the
251
- * `apply` function will not be invoked and the contents will be passed
252
- * through unmodified.
265
+ * `stream` or `apply` functions will not be invoked and the
266
+ * contents will be passed through unmodified.
253
267
  */
254
268
  git_filter_check_fn check;
255
269
 
270
+ #ifdef GIT_DEPRECATE_HARD
271
+ void *reserved;
272
+ #else
256
273
  /**
257
- * Called to actually apply the filter to file contents. If this
258
- * function returns `GIT_PASSTHROUGH` then the contents will be passed
259
- * through unmodified.
274
+ * Provided for backward compatibility; this will apply the
275
+ * filter to the given contents in a `git_buf`. Callers should
276
+ * provide a `stream` function instead.
260
277
  */
261
278
  git_filter_apply_fn apply;
279
+ #endif
262
280
 
263
281
  /**
264
- * Called to apply the filter in a streaming manner. If this is not
265
- * specified then the system will call `apply` with the whole buffer.
282
+ * Called to apply the filter, this function will provide a
283
+ * `git_writestream` that will the original data will be
284
+ * written to; with that data, the `git_writestream` will then
285
+ * perform the filter translation and stream the filtered data
286
+ * out to the `next` location.
266
287
  */
267
288
  git_filter_stream_fn stream;
268
289
 
@@ -289,9 +310,9 @@ GIT_EXTERN(int) git_filter_init(git_filter *filter, unsigned int version);
289
310
  * As mentioned elsewhere, the initialize callback will not be invoked
290
311
  * immediately. It is deferred until the filter is used in some way.
291
312
  *
292
- * A filter's attribute checks and `check` and `apply` callbacks will be
293
- * issued in order of `priority` on smudge (to workdir), and in reverse
294
- * order of `priority` on clean (to odb).
313
+ * A filter's attribute checks and `check` and `stream` (or `apply`)
314
+ * callbacks will be issued in order of `priority` on smudge (to
315
+ * workdir), and in reverse order of `priority` on clean (to odb).
295
316
  *
296
317
  * Two filters are preregistered with libgit2:
297
318
  * - GIT_FILTER_CRLF with priority 0
@@ -0,0 +1,74 @@
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_sys_git_midx_h__
8
+ #define INCLUDE_sys_git_midx_h__
9
+
10
+ #include "git2/common.h"
11
+ #include "git2/types.h"
12
+
13
+ /**
14
+ * @file git2/midx.h
15
+ * @brief Git multi-pack-index routines
16
+ * @defgroup git_midx Git multi-pack-index routines
17
+ * @ingroup Git
18
+ * @{
19
+ */
20
+ GIT_BEGIN_DECL
21
+
22
+ /**
23
+ * Create a new writer for `multi-pack-index` files.
24
+ *
25
+ * @param out location to store the writer pointer.
26
+ * @param pack_dir the directory where the `.pack` and `.idx` files are. The
27
+ * `multi-pack-index` file will be written in this directory, too.
28
+ * @return 0 or an error code
29
+ */
30
+ GIT_EXTERN(int) git_midx_writer_new(
31
+ git_midx_writer **out,
32
+ const char *pack_dir);
33
+
34
+ /**
35
+ * Free the multi-pack-index writer and its resources.
36
+ *
37
+ * @param w the writer to free. If NULL no action is taken.
38
+ */
39
+ GIT_EXTERN(void) git_midx_writer_free(git_midx_writer *w);
40
+
41
+ /**
42
+ * Add an `.idx` file to the writer.
43
+ *
44
+ * @param w the writer
45
+ * @param idx_path the path of an `.idx` file.
46
+ * @return 0 or an error code
47
+ */
48
+ GIT_EXTERN(int) git_midx_writer_add(
49
+ git_midx_writer *w,
50
+ const char *idx_path);
51
+
52
+ /**
53
+ * Write a `multi-pack-index` file to a file.
54
+ *
55
+ * @param w the writer
56
+ * @return 0 or an error code
57
+ */
58
+ GIT_EXTERN(int) git_midx_writer_commit(
59
+ git_midx_writer *w);
60
+
61
+ /**
62
+ * Dump the contents of the `multi-pack-index` to an in-memory buffer.
63
+ *
64
+ * @param midx Buffer where to store the contents of the `multi-pack-index`.
65
+ * @param w the writer
66
+ * @return 0 or an error code
67
+ */
68
+ GIT_EXTERN(int) git_midx_writer_dump(
69
+ git_buf *midx,
70
+ git_midx_writer *w);
71
+
72
+ /** @} */
73
+ GIT_END_DECL
74
+ #endif
@@ -84,6 +84,13 @@ struct git_odb_backend {
84
84
  git_odb_writepack **, git_odb_backend *, git_odb *odb,
85
85
  git_indexer_progress_cb progress_cb, void *progress_payload);
86
86
 
87
+ /**
88
+ * If the backend supports pack files, this will create a
89
+ * `multi-pack-index` file which will contain an index of all objects
90
+ * across all the `.pack` files.
91
+ */
92
+ int GIT_CALLBACK(writemidx)(git_odb_backend *);
93
+
87
94
  /**
88
95
  * "Freshens" an already existing object, updating its last-used
89
96
  * time. This occurs when `git_odb_write` was called, but the
@@ -9,6 +9,7 @@
9
9
  #define INCLUDE_sys_git_transport_h
10
10
 
11
11
  #include "git2/net.h"
12
+ #include "git2/transport.h"
12
13
  #include "git2/types.h"
13
14
  #include "git2/strarray.h"
14
15
  #include "git2/proxy.h"
@@ -365,6 +365,18 @@ GIT_EXTERN(int) git_tag_peel(
365
365
  */
366
366
  GIT_EXTERN(int) git_tag_dup(git_tag **out, git_tag *source);
367
367
 
368
+ /**
369
+ * Determine whether a tag name is valid, meaning that (when prefixed
370
+ * with `refs/tags/`) that it is a valid reference name, and that any
371
+ * additional tag name restrictions are imposed (eg, it cannot start
372
+ * with a `-`).
373
+ *
374
+ * @param valid output pointer to set with validity of given tag name
375
+ * @param name a tag name to test
376
+ * @return 0 on success or an error code
377
+ */
378
+ GIT_EXTERN(int) git_tag_name_is_valid(int *valid, const char *name);
379
+
368
380
  /** @} */
369
381
  GIT_END_DECL
370
382
  #endif
@@ -379,20 +379,6 @@ GIT_EXTERN(int) git_treebuilder_filter(
379
379
  GIT_EXTERN(int) git_treebuilder_write(
380
380
  git_oid *id, git_treebuilder *bld);
381
381
 
382
- /**
383
- * Write the contents of the tree builder as a tree object
384
- * using a shared git_buf.
385
- *
386
- * @see git_treebuilder_write
387
- *
388
- * @param oid Pointer to store the OID of the newly written tree
389
- * @param bld Tree builder to write
390
- * @param tree Shared buffer for writing the tree. Will be grown as necessary.
391
- * @return 0 or an error code
392
- */
393
- GIT_EXTERN(int) git_treebuilder_write_with_buffer(
394
- git_oid *oid, git_treebuilder *bld, git_buf *tree);
395
-
396
382
  /** Callback for the tree traversal method */
397
383
  typedef int GIT_CALLBACK(git_treewalk_cb)(
398
384
  const char *root, const git_tree_entry *entry, void *payload);
@@ -96,12 +96,21 @@ typedef struct git_odb_stream git_odb_stream;
96
96
  /** A stream to write a packfile to the ODB */
97
97
  typedef struct git_odb_writepack git_odb_writepack;
98
98
 
99
+ /** a writer for multi-pack-index files. */
100
+ typedef struct git_midx_writer git_midx_writer;
101
+
99
102
  /** An open refs database handle. */
100
103
  typedef struct git_refdb git_refdb;
101
104
 
102
105
  /** A custom backend for refs */
103
106
  typedef struct git_refdb_backend git_refdb_backend;
104
107
 
108
+ /** A git commit-graph */
109
+ typedef struct git_commit_graph git_commit_graph;
110
+
111
+ /** a writer for commit-graph files. */
112
+ typedef struct git_commit_graph_writer git_commit_graph_writer;
113
+
105
114
  /**
106
115
  * Representation of an existing git repository,
107
116
  * including all its object contents
@@ -7,12 +7,12 @@
7
7
  #ifndef INCLUDE_git_version_h__
8
8
  #define INCLUDE_git_version_h__
9
9
 
10
- #define LIBGIT2_VERSION "1.1.1"
10
+ #define LIBGIT2_VERSION "1.2.0"
11
11
  #define LIBGIT2_VER_MAJOR 1
12
- #define LIBGIT2_VER_MINOR 1
13
- #define LIBGIT2_VER_REVISION 1
12
+ #define LIBGIT2_VER_MINOR 2
13
+ #define LIBGIT2_VER_REVISION 0
14
14
  #define LIBGIT2_VER_PATCH 0
15
15
 
16
- #define LIBGIT2_SOVERSION "1.1"
16
+ #define LIBGIT2_SOVERSION "1.2"
17
17
 
18
18
  #endif
@@ -198,6 +198,7 @@ typedef enum {
198
198
  typedef struct git_worktree_prune_options {
199
199
  unsigned int version;
200
200
 
201
+ /** A combination of `git_worktree_prune_t` */
201
202
  uint32_t flags;
202
203
  } git_worktree_prune_options;
203
204
 
@@ -6,7 +6,18 @@ IF(DEBUG_POOL)
6
6
  ENDIF()
7
7
  ADD_FEATURE_INFO(debugpool GIT_DEBUG_POOL "debug pool allocator")
8
8
 
9
+ IF(DEBUG_STRICT_ALLOC)
10
+ SET(GIT_DEBUG_STRICT_ALLOC 1)
11
+ ENDIF()
12
+ ADD_FEATURE_INFO(debugalloc GIT_DEBUG_STRICT_ALLOC "debug strict allocators")
13
+
14
+ IF(DEBUG_STRICT_OPEN)
15
+ SET(GIT_DEBUG_STRICT_OPEN 1)
16
+ ENDIF()
17
+ ADD_FEATURE_INFO(debugopen GIT_DEBUG_STRICT_OPEN "path validation in open")
18
+
9
19
  INCLUDE(PkgBuildConfig)
20
+ INCLUDE(SanitizeBool)
10
21
 
11
22
  # This variable will contain the libraries we need to put into
12
23
  # libgit2.pc's Requires.private. That is, what we're linking to or
@@ -32,10 +43,10 @@ IF(ENABLE_TRACE)
32
43
  ENDIF()
33
44
  ADD_FEATURE_INFO(tracing GIT_TRACE "tracing support")
34
45
 
35
- CHECK_FUNCTION_EXISTS(futimens HAVE_FUTIMENS)
36
46
  IF (HAVE_FUTIMENS)
37
47
  SET(GIT_USE_FUTIMENS 1)
38
48
  ENDIF ()
49
+ ADD_FEATURE_INFO(futimens GIT_USE_FUTIMENS "futimens support")
39
50
 
40
51
  CHECK_PROTOTYPE_DEFINITION(qsort_r
41
52
  "void qsort_r(void *base, size_t nmemb, size_t size, void *thunk, int (*compar)(void *, const void *, const void *))"
@@ -186,7 +197,12 @@ ELSE()
186
197
  ENDIF()
187
198
 
188
199
  # Optional external dependency: zlib
189
- IF(NOT USE_BUNDLED_ZLIB)
200
+ SanitizeBool(USE_BUNDLED_ZLIB)
201
+ IF(USE_BUNDLED_ZLIB STREQUAL ON)
202
+ SET(USE_BUNDLED_ZLIB "Bundled")
203
+ ENDIF()
204
+
205
+ IF(USE_BUNDLED_ZLIB STREQUAL "OFF")
190
206
  FIND_PACKAGE(ZLIB)
191
207
  IF(ZLIB_FOUND)
192
208
  LIST(APPEND LIBGIT2_SYSTEM_INCLUDES ${ZLIB_INCLUDE_DIRS})
@@ -201,7 +217,12 @@ IF(NOT USE_BUNDLED_ZLIB)
201
217
  MESSAGE(STATUS "zlib was not found; using bundled 3rd-party sources." )
202
218
  ENDIF()
203
219
  ENDIF()
204
- IF(USE_BUNDLED_ZLIB OR NOT ZLIB_FOUND)
220
+ IF(USE_BUNDLED_ZLIB STREQUAL "Chromium")
221
+ ADD_SUBDIRECTORY("${libgit2_SOURCE_DIR}/deps/chromium-zlib" "${libgit2_BINARY_DIR}/deps/chromium-zlib")
222
+ LIST(APPEND LIBGIT2_INCLUDES "${libgit2_SOURCE_DIR}/deps/chromium-zlib")
223
+ LIST(APPEND LIBGIT2_OBJECTS $<TARGET_OBJECTS:chromium_zlib>)
224
+ ADD_FEATURE_INFO(zlib ON "using (Chromium) bundled zlib")
225
+ ELSEIF(USE_BUNDLED_ZLIB OR NOT ZLIB_FOUND)
205
226
  ADD_SUBDIRECTORY("${libgit2_SOURCE_DIR}/deps/zlib" "${libgit2_BINARY_DIR}/deps/zlib")
206
227
  LIST(APPEND LIBGIT2_INCLUDES "${libgit2_SOURCE_DIR}/deps/zlib")
207
228
  LIST(APPEND LIBGIT2_OBJECTS $<TARGET_OBJECTS:zlib>)
@@ -374,7 +395,7 @@ if(SONAME)
374
395
  set_target_properties(git2 PROPERTIES VERSION ${libgit2_VERSION})
375
396
  set_target_properties(git2 PROPERTIES SOVERSION "${libgit2_VERSION_MAJOR}.${libgit2_VERSION_MINOR}")
376
397
  if(LIBGIT2_FILENAME)
377
- target_compile_definitions(git2internal PRIVATE LIBGIT2_FILENAME=\"${LIBGIT2_FILENAME}\")
398
+ target_compile_definitions(git2 PRIVATE LIBGIT2_FILENAME=\"${LIBGIT2_FILENAME}\")
378
399
  set_target_properties(git2 PROPERTIES OUTPUT_NAME ${LIBGIT2_FILENAME})
379
400
  elseif(DEFINED LIBGIT2_PREFIX)
380
401
  set_target_properties(git2 PROPERTIES PREFIX "${LIBGIT2_PREFIX}")
@@ -6,16 +6,29 @@
6
6
  */
7
7
 
8
8
  #include "alloc.h"
9
+ #include "runtime.h"
9
10
 
11
+ #include "allocators/failalloc.h"
10
12
  #include "allocators/stdalloc.h"
11
- #include "allocators/win32_crtdbg.h"
12
-
13
- git_allocator git__allocator;
13
+ #include "allocators/win32_leakcheck.h"
14
+
15
+ /* Fail any allocation until git_libgit2_init is called. */
16
+ git_allocator git__allocator = {
17
+ git_failalloc_malloc,
18
+ git_failalloc_calloc,
19
+ git_failalloc_strdup,
20
+ git_failalloc_strndup,
21
+ git_failalloc_substrdup,
22
+ git_failalloc_realloc,
23
+ git_failalloc_reallocarray,
24
+ git_failalloc_mallocarray,
25
+ git_failalloc_free
26
+ };
14
27
 
15
28
  static int setup_default_allocator(void)
16
29
  {
17
- #if defined(GIT_MSVC_CRTDBG)
18
- return git_win32_crtdbg_init_allocator(&git__allocator);
30
+ #if defined(GIT_WIN32_LEAKCHECK)
31
+ return git_win32_leakcheck_init_allocator(&git__allocator);
19
32
  #else
20
33
  return git_stdalloc_init_allocator(&git__allocator);
21
34
  #endif
@@ -24,10 +37,10 @@ static int setup_default_allocator(void)
24
37
  int git_allocator_global_init(void)
25
38
  {
26
39
  /*
27
- * We don't want to overwrite any allocator which has been set before
28
- * the init function is called.
40
+ * We don't want to overwrite any allocator which has been set
41
+ * before the init function is called.
29
42
  */
30
- if (git__allocator.gmalloc != NULL)
43
+ if (git__allocator.gmalloc != git_failalloc_malloc)
31
44
  return 0;
32
45
 
33
46
  return setup_default_allocator();
@@ -0,0 +1,92 @@
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
+
8
+ #include "failalloc.h"
9
+
10
+ void *git_failalloc_malloc(size_t len, const char *file, int line)
11
+ {
12
+ GIT_UNUSED(len);
13
+ GIT_UNUSED(file);
14
+ GIT_UNUSED(line);
15
+
16
+ return NULL;
17
+ }
18
+
19
+ void *git_failalloc_calloc(size_t nelem, size_t elsize, const char *file, int line)
20
+ {
21
+ GIT_UNUSED(nelem);
22
+ GIT_UNUSED(elsize);
23
+ GIT_UNUSED(file);
24
+ GIT_UNUSED(line);
25
+
26
+ return NULL;
27
+ }
28
+
29
+ char *git_failalloc_strdup(const char *str, const char *file, int line)
30
+ {
31
+ GIT_UNUSED(str);
32
+ GIT_UNUSED(file);
33
+ GIT_UNUSED(line);
34
+
35
+ return NULL;
36
+ }
37
+
38
+ char *git_failalloc_strndup(const char *str, size_t n, const char *file, int line)
39
+ {
40
+ GIT_UNUSED(str);
41
+ GIT_UNUSED(n);
42
+ GIT_UNUSED(file);
43
+ GIT_UNUSED(line);
44
+
45
+ return NULL;
46
+ }
47
+
48
+ char *git_failalloc_substrdup(const char *start, size_t n, const char *file, int line)
49
+ {
50
+ GIT_UNUSED(start);
51
+ GIT_UNUSED(n);
52
+ GIT_UNUSED(file);
53
+ GIT_UNUSED(line);
54
+
55
+ return NULL;
56
+ }
57
+
58
+ void *git_failalloc_realloc(void *ptr, size_t size, const char *file, int line)
59
+ {
60
+ GIT_UNUSED(ptr);
61
+ GIT_UNUSED(size);
62
+ GIT_UNUSED(file);
63
+ GIT_UNUSED(line);
64
+
65
+ return NULL;
66
+ }
67
+
68
+ void *git_failalloc_reallocarray(void *ptr, size_t nelem, size_t elsize, const char *file, int line)
69
+ {
70
+ GIT_UNUSED(ptr);
71
+ GIT_UNUSED(nelem);
72
+ GIT_UNUSED(elsize);
73
+ GIT_UNUSED(file);
74
+ GIT_UNUSED(line);
75
+
76
+ return NULL;
77
+ }
78
+
79
+ void *git_failalloc_mallocarray(size_t nelem, size_t elsize, const char *file, int line)
80
+ {
81
+ GIT_UNUSED(nelem);
82
+ GIT_UNUSED(elsize);
83
+ GIT_UNUSED(file);
84
+ GIT_UNUSED(line);
85
+
86
+ return NULL;
87
+ }
88
+
89
+ void git_failalloc_free(void *ptr)
90
+ {
91
+ GIT_UNUSED(ptr);
92
+ }