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.
- checksums.yaml +4 -4
- data/LICENSE +1 -0
- data/README.md +1 -1
- data/ext/rugged/rugged.c +7 -4
- data/ext/rugged/rugged_object.c +1 -1
- data/ext/rugged/rugged_repo.c +3 -3
- data/lib/rugged/repository.rb +2 -2
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +11 -6
- data/vendor/libgit2/COPYING +109 -1
- data/vendor/libgit2/cmake/Findfutimens.cmake +14 -0
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +4 -0
- data/vendor/libgit2/cmake/SelectHashes.cmake +1 -0
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +101 -0
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +17 -5
- data/vendor/libgit2/deps/ntlmclient/crypt.h +14 -9
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +20 -20
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +3 -3
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +37 -36
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +4 -3
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +178 -51
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +74 -5
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +150 -118
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +13 -9
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +16 -3
- data/vendor/libgit2/deps/ntlmclient/unicode.h +10 -4
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +16 -27
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.h +20 -0
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +28 -52
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.h +22 -0
- data/vendor/libgit2/include/git2/attr.h +89 -0
- data/vendor/libgit2/include/git2/blame.h +93 -42
- data/vendor/libgit2/include/git2/blob.h +14 -2
- data/vendor/libgit2/include/git2/branch.h +25 -0
- data/vendor/libgit2/include/git2/cert.h +42 -5
- data/vendor/libgit2/include/git2/checkout.h +28 -12
- data/vendor/libgit2/include/git2/commit.h +35 -19
- data/vendor/libgit2/include/git2/common.h +14 -4
- data/vendor/libgit2/include/git2/deprecated.h +206 -6
- data/vendor/libgit2/include/git2/diff.h +34 -19
- data/vendor/libgit2/include/git2/errors.h +6 -6
- data/vendor/libgit2/include/git2/filter.h +57 -17
- data/vendor/libgit2/include/git2/graph.h +20 -2
- data/vendor/libgit2/include/git2/index.h +2 -2
- data/vendor/libgit2/include/git2/odb.h +29 -0
- data/vendor/libgit2/include/git2/patch.h +8 -0
- data/vendor/libgit2/include/git2/rebase.h +25 -1
- data/vendor/libgit2/include/git2/refs.h +6 -2
- data/vendor/libgit2/include/git2/remote.h +59 -6
- data/vendor/libgit2/include/git2/revparse.h +5 -5
- data/vendor/libgit2/include/git2/status.h +115 -59
- data/vendor/libgit2/include/git2/submodule.h +9 -0
- data/vendor/libgit2/include/git2/sys/commit_graph.h +174 -0
- data/vendor/libgit2/include/git2/sys/filter.h +49 -28
- data/vendor/libgit2/include/git2/sys/midx.h +74 -0
- data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -0
- data/vendor/libgit2/include/git2/sys/transport.h +1 -0
- data/vendor/libgit2/include/git2/tag.h +12 -0
- data/vendor/libgit2/include/git2/tree.h +0 -14
- data/vendor/libgit2/include/git2/types.h +9 -0
- data/vendor/libgit2/include/git2/version.h +4 -4
- data/vendor/libgit2/include/git2/worktree.h +1 -0
- data/vendor/libgit2/src/CMakeLists.txt +25 -4
- data/vendor/libgit2/src/alloc.c +21 -8
- data/vendor/libgit2/src/allocators/failalloc.c +92 -0
- data/vendor/libgit2/src/allocators/failalloc.h +23 -0
- data/vendor/libgit2/src/allocators/stdalloc.c +41 -10
- data/vendor/libgit2/src/allocators/win32_leakcheck.c +118 -0
- data/vendor/libgit2/src/allocators/{win32_crtdbg.h → win32_leakcheck.h} +3 -3
- data/vendor/libgit2/src/annotated_commit.c +21 -9
- data/vendor/libgit2/src/apply.c +16 -7
- data/vendor/libgit2/src/array.h +11 -11
- data/vendor/libgit2/src/attr.c +181 -74
- data/vendor/libgit2/src/attr_file.c +84 -39
- data/vendor/libgit2/src/attr_file.h +32 -11
- data/vendor/libgit2/src/attrcache.c +42 -37
- data/vendor/libgit2/src/attrcache.h +4 -5
- data/vendor/libgit2/src/blame.c +11 -5
- data/vendor/libgit2/src/blob.c +35 -24
- data/vendor/libgit2/src/branch.c +69 -17
- data/vendor/libgit2/src/buffer.c +334 -25
- data/vendor/libgit2/src/buffer.h +153 -2
- data/vendor/libgit2/src/cache.c +2 -2
- data/vendor/libgit2/src/cache.h +7 -7
- data/vendor/libgit2/src/cc-compat.h +10 -2
- data/vendor/libgit2/src/checkout.c +48 -26
- data/vendor/libgit2/src/cherrypick.c +6 -2
- data/vendor/libgit2/src/clone.c +41 -47
- data/vendor/libgit2/src/commit.c +41 -28
- data/vendor/libgit2/src/commit_graph.c +1209 -0
- data/vendor/libgit2/src/commit_graph.h +162 -0
- data/vendor/libgit2/src/commit_list.c +46 -0
- data/vendor/libgit2/src/commit_list.h +2 -0
- data/vendor/libgit2/src/common.h +25 -2
- data/vendor/libgit2/src/config.c +37 -15
- data/vendor/libgit2/src/config_cache.c +5 -3
- data/vendor/libgit2/src/config_file.c +16 -8
- data/vendor/libgit2/src/config_parse.c +4 -6
- data/vendor/libgit2/src/crlf.c +16 -6
- data/vendor/libgit2/src/date.c +4 -3
- data/vendor/libgit2/src/delta.c +1 -1
- data/vendor/libgit2/src/describe.c +6 -3
- data/vendor/libgit2/src/diff.c +11 -8
- data/vendor/libgit2/src/diff_driver.c +21 -17
- data/vendor/libgit2/src/diff_file.c +2 -6
- data/vendor/libgit2/src/diff_generate.c +46 -17
- data/vendor/libgit2/src/diff_print.c +19 -6
- data/vendor/libgit2/src/diff_stats.c +7 -5
- data/vendor/libgit2/src/diff_tform.c +9 -8
- data/vendor/libgit2/src/diff_xdiff.c +4 -2
- data/vendor/libgit2/src/diff_xdiff.h +1 -1
- data/vendor/libgit2/src/errors.c +24 -19
- data/vendor/libgit2/src/features.h.in +5 -1
- data/vendor/libgit2/src/fetch.c +5 -2
- data/vendor/libgit2/src/fetchhead.c +8 -4
- data/vendor/libgit2/src/filebuf.c +9 -7
- data/vendor/libgit2/src/filter.c +206 -110
- data/vendor/libgit2/src/filter.h +24 -5
- data/vendor/libgit2/src/futils.c +5 -5
- data/vendor/libgit2/src/futils.h +1 -1
- data/vendor/libgit2/src/graph.c +64 -9
- data/vendor/libgit2/src/hash/sha1/collisiondetect.c +3 -3
- data/vendor/libgit2/src/hash/sha1/common_crypto.c +3 -3
- data/vendor/libgit2/src/hash/sha1/generic.h +1 -1
- data/vendor/libgit2/src/hash/sha1/mbedtls.c +12 -12
- data/vendor/libgit2/src/hash/sha1/openssl.c +3 -3
- data/vendor/libgit2/src/hash/sha1/sha1dc/sha1.c +0 -2
- data/vendor/libgit2/src/hash/sha1/win32.c +15 -11
- data/vendor/libgit2/src/hash.c +16 -13
- data/vendor/libgit2/src/hash.h +1 -1
- data/vendor/libgit2/src/hashsig.c +23 -10
- data/vendor/libgit2/src/ident.c +13 -3
- data/vendor/libgit2/src/ignore.c +35 -19
- data/vendor/libgit2/src/index.c +106 -70
- data/vendor/libgit2/src/index.h +1 -1
- data/vendor/libgit2/src/indexer.c +31 -29
- data/vendor/libgit2/src/integer.h +64 -2
- data/vendor/libgit2/src/iterator.c +36 -24
- data/vendor/libgit2/src/iterator.h +1 -1
- data/vendor/libgit2/src/khash.h +2 -11
- data/vendor/libgit2/src/{settings.c → libgit2.c} +117 -50
- data/vendor/libgit2/src/libgit2.h +15 -0
- data/vendor/libgit2/src/mailmap.c +23 -10
- data/vendor/libgit2/src/map.h +3 -3
- data/vendor/libgit2/src/merge.c +70 -30
- data/vendor/libgit2/src/merge.h +2 -1
- data/vendor/libgit2/src/merge_driver.c +19 -13
- data/vendor/libgit2/src/merge_file.c +11 -3
- data/vendor/libgit2/src/message.c +3 -1
- data/vendor/libgit2/src/midx.c +471 -10
- data/vendor/libgit2/src/midx.h +28 -1
- data/vendor/libgit2/src/mwindow.c +103 -59
- data/vendor/libgit2/src/mwindow.h +3 -3
- data/vendor/libgit2/src/net.c +127 -3
- data/vendor/libgit2/src/net.h +16 -2
- data/vendor/libgit2/src/netops.c +6 -4
- data/vendor/libgit2/src/netops.h +2 -2
- data/vendor/libgit2/src/notes.c +10 -10
- data/vendor/libgit2/src/object.c +22 -14
- data/vendor/libgit2/src/odb.c +285 -48
- data/vendor/libgit2/src/odb.h +16 -2
- data/vendor/libgit2/src/odb_loose.c +28 -18
- data/vendor/libgit2/src/odb_mempack.c +1 -1
- data/vendor/libgit2/src/odb_pack.c +391 -114
- data/vendor/libgit2/src/oid.c +5 -4
- data/vendor/libgit2/src/pack-objects.c +54 -48
- data/vendor/libgit2/src/pack.c +329 -119
- data/vendor/libgit2/src/pack.h +25 -7
- data/vendor/libgit2/src/patch.c +14 -7
- data/vendor/libgit2/src/patch_generate.c +2 -2
- data/vendor/libgit2/src/patch_parse.c +2 -1
- data/vendor/libgit2/src/path.c +98 -53
- data/vendor/libgit2/src/path.h +79 -6
- data/vendor/libgit2/src/pathspec.c +8 -8
- data/vendor/libgit2/src/pool.c +13 -7
- data/vendor/libgit2/src/posix.c +11 -3
- data/vendor/libgit2/src/reader.c +10 -6
- data/vendor/libgit2/src/rebase.c +93 -49
- data/vendor/libgit2/src/refdb.c +30 -13
- data/vendor/libgit2/src/refdb_fs.c +121 -69
- data/vendor/libgit2/src/reflog.c +19 -14
- data/vendor/libgit2/src/refs.c +76 -41
- data/vendor/libgit2/src/refspec.c +32 -12
- data/vendor/libgit2/src/remote.c +272 -102
- data/vendor/libgit2/src/remote.h +2 -1
- data/vendor/libgit2/src/repository.c +176 -103
- data/vendor/libgit2/src/repository.h +12 -1
- data/vendor/libgit2/src/reset.c +7 -6
- data/vendor/libgit2/src/revert.c +6 -2
- data/vendor/libgit2/src/revparse.c +14 -9
- data/vendor/libgit2/src/revwalk.c +32 -15
- data/vendor/libgit2/src/runtime.c +162 -0
- data/vendor/libgit2/src/runtime.h +62 -0
- data/vendor/libgit2/src/settings.h +11 -0
- data/vendor/libgit2/src/signature.c +6 -5
- data/vendor/libgit2/src/sortedcache.h +10 -8
- data/vendor/libgit2/src/stash.c +3 -1
- data/vendor/libgit2/src/status.c +7 -4
- data/vendor/libgit2/src/strarray.c +2 -1
- data/vendor/libgit2/src/streams/mbedtls.c +14 -17
- data/vendor/libgit2/src/streams/mbedtls.h +1 -1
- data/vendor/libgit2/src/streams/openssl.c +101 -201
- data/vendor/libgit2/src/streams/openssl.h +9 -1
- data/vendor/libgit2/src/streams/openssl_dynamic.c +309 -0
- data/vendor/libgit2/src/streams/openssl_dynamic.h +348 -0
- data/vendor/libgit2/src/streams/openssl_legacy.c +203 -0
- data/vendor/libgit2/src/streams/openssl_legacy.h +63 -0
- data/vendor/libgit2/src/streams/registry.c +5 -6
- data/vendor/libgit2/src/streams/socket.c +6 -2
- data/vendor/libgit2/src/streams/stransport.c +6 -3
- data/vendor/libgit2/src/streams/tls.c +5 -3
- data/vendor/libgit2/src/submodule.c +128 -62
- data/vendor/libgit2/src/submodule.h +9 -9
- data/vendor/libgit2/src/sysdir.c +4 -6
- data/vendor/libgit2/src/tag.c +47 -11
- data/vendor/libgit2/src/thread.c +140 -0
- data/vendor/libgit2/src/thread.h +479 -0
- data/vendor/libgit2/src/threadstate.c +83 -0
- data/vendor/libgit2/src/threadstate.h +24 -0
- data/vendor/libgit2/src/trace.c +2 -2
- data/vendor/libgit2/src/trace.h +17 -13
- data/vendor/libgit2/src/transaction.c +19 -8
- data/vendor/libgit2/src/transport.c +3 -3
- data/vendor/libgit2/src/transports/auth.c +1 -1
- data/vendor/libgit2/src/transports/auth_negotiate.c +11 -4
- data/vendor/libgit2/src/transports/auth_ntlm.c +10 -6
- data/vendor/libgit2/src/transports/credential.c +15 -7
- data/vendor/libgit2/src/transports/git.c +1 -3
- data/vendor/libgit2/src/transports/http.c +19 -17
- data/vendor/libgit2/src/transports/http.h +1 -0
- data/vendor/libgit2/src/transports/httpclient.c +53 -26
- data/vendor/libgit2/src/transports/httpclient.h +1 -1
- data/vendor/libgit2/src/transports/local.c +3 -3
- data/vendor/libgit2/src/transports/smart.c +12 -7
- data/vendor/libgit2/src/transports/smart.h +1 -1
- data/vendor/libgit2/src/transports/smart_protocol.c +11 -5
- data/vendor/libgit2/src/transports/ssh.c +51 -17
- data/vendor/libgit2/src/transports/winhttp.c +41 -31
- data/vendor/libgit2/src/tree.c +100 -77
- data/vendor/libgit2/src/tree.h +1 -0
- data/vendor/libgit2/src/tsort.c +0 -2
- data/vendor/libgit2/src/unix/map.c +3 -1
- data/vendor/libgit2/src/unix/pthread.h +2 -1
- data/vendor/libgit2/src/utf8.c +150 -0
- data/vendor/libgit2/src/utf8.h +52 -0
- data/vendor/libgit2/src/util.c +53 -129
- data/vendor/libgit2/src/util.h +33 -39
- data/vendor/libgit2/src/vector.c +23 -19
- data/vendor/libgit2/src/vector.h +4 -2
- data/vendor/libgit2/src/win32/findfile.c +4 -2
- data/vendor/libgit2/src/win32/map.c +1 -1
- data/vendor/libgit2/src/win32/msvc-compat.h +9 -1
- data/vendor/libgit2/src/win32/path_w32.c +22 -24
- data/vendor/libgit2/src/win32/path_w32.h +0 -1
- data/vendor/libgit2/src/win32/posix_w32.c +7 -1
- data/vendor/libgit2/src/win32/precompiled.h +0 -1
- data/vendor/libgit2/src/win32/reparse.h +4 -4
- data/vendor/libgit2/src/win32/thread.c +24 -15
- data/vendor/libgit2/src/win32/thread.h +1 -1
- data/vendor/libgit2/src/win32/w32_buffer.c +3 -3
- data/vendor/libgit2/src/win32/w32_common.h +18 -9
- data/vendor/libgit2/src/win32/{w32_crtdbg_stacktrace.c → w32_leakcheck.c} +269 -33
- data/vendor/libgit2/src/win32/w32_leakcheck.h +222 -0
- data/vendor/libgit2/src/win32/w32_util.h +6 -6
- data/vendor/libgit2/src/worktree.c +27 -16
- data/vendor/libgit2/src/zstream.c +1 -1
- metadata +32 -16
- data/vendor/libgit2/src/allocators/win32_crtdbg.c +0 -118
- data/vendor/libgit2/src/buf_text.c +0 -316
- data/vendor/libgit2/src/buf_text.h +0 -122
- data/vendor/libgit2/src/global.c +0 -363
- data/vendor/libgit2/src/global.h +0 -41
- data/vendor/libgit2/src/thread-utils.c +0 -58
- data/vendor/libgit2/src/thread-utils.h +0 -369
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -127
- data/vendor/libgit2/src/win32/w32_stack.c +0 -188
- data/vendor/libgit2/src/win32/w32_stack.h +0 -140
|
@@ -168,6 +168,10 @@ typedef enum {
|
|
|
168
168
|
* can apply given diff information to binary files.
|
|
169
169
|
*/
|
|
170
170
|
GIT_DIFF_SHOW_BINARY = (1u << 30),
|
|
171
|
+
|
|
172
|
+
/** Ignore blank lines */
|
|
173
|
+
GIT_DIFF_IGNORE_BLANK_LINES = (1u << 31),
|
|
174
|
+
|
|
171
175
|
} git_diff_option_t;
|
|
172
176
|
|
|
173
177
|
/**
|
|
@@ -237,32 +241,43 @@ typedef enum {
|
|
|
237
241
|
* Although this is called a "file", it could represent a file, a symbolic
|
|
238
242
|
* link, a submodule commit id, or even a tree (although that only if you
|
|
239
243
|
* are tracking type changes or ignored/untracked directories).
|
|
240
|
-
*
|
|
241
|
-
* The `id` is the `git_oid` of the item. If the entry represents an
|
|
242
|
-
* absent side of a diff (e.g. the `old_file` of a `GIT_DELTA_ADDED` delta),
|
|
243
|
-
* then the oid will be zeroes.
|
|
244
|
-
*
|
|
245
|
-
* `path` is the NUL-terminated path to the entry relative to the working
|
|
246
|
-
* directory of the repository.
|
|
247
|
-
*
|
|
248
|
-
* `size` is the size of the entry in bytes.
|
|
249
|
-
*
|
|
250
|
-
* `flags` is a combination of the `git_diff_flag_t` types
|
|
251
|
-
*
|
|
252
|
-
* `mode` is, roughly, the stat() `st_mode` value for the item. This will
|
|
253
|
-
* be restricted to one of the `git_filemode_t` values.
|
|
254
|
-
*
|
|
255
|
-
* The `id_abbrev` represents the known length of the `id` field, when
|
|
256
|
-
* converted to a hex string. It is generally `GIT_OID_HEXSZ`, unless this
|
|
257
|
-
* delta was created from reading a patch file, in which case it may be
|
|
258
|
-
* abbreviated to something reasonable, like 7 characters.
|
|
259
244
|
*/
|
|
260
245
|
typedef struct {
|
|
246
|
+
/**
|
|
247
|
+
* The `git_oid` of the item. If the entry represents an
|
|
248
|
+
* absent side of a diff (e.g. the `old_file` of a `GIT_DELTA_ADDED` delta),
|
|
249
|
+
* then the oid will be zeroes.
|
|
250
|
+
*/
|
|
261
251
|
git_oid id;
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* The NUL-terminated path to the entry relative to the working
|
|
255
|
+
* directory of the repository.
|
|
256
|
+
*/
|
|
262
257
|
const char *path;
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* The size of the entry in bytes.
|
|
261
|
+
*/
|
|
263
262
|
git_object_size_t size;
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* A combination of the `git_diff_flag_t` types
|
|
266
|
+
*/
|
|
264
267
|
uint32_t flags;
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Roughly, the stat() `st_mode` value for the item. This will
|
|
271
|
+
* be restricted to one of the `git_filemode_t` values.
|
|
272
|
+
*/
|
|
265
273
|
uint16_t mode;
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Represents the known length of the `id` field, when
|
|
277
|
+
* converted to a hex string. It is generally `GIT_OID_HEXSZ`, unless this
|
|
278
|
+
* delta was created from reading a patch file, in which case it may be
|
|
279
|
+
* abbreviated to something reasonable, like 7 characters.
|
|
280
|
+
*/
|
|
266
281
|
uint16_t id_abbrev;
|
|
267
282
|
} git_diff_file;
|
|
268
283
|
|
|
@@ -42,14 +42,14 @@ typedef enum {
|
|
|
42
42
|
GIT_ECONFLICT = -13, /**< Checkout conflicts prevented operation */
|
|
43
43
|
GIT_ELOCKED = -14, /**< Lock file prevented operation */
|
|
44
44
|
GIT_EMODIFIED = -15, /**< Reference value does not match expected */
|
|
45
|
-
GIT_EAUTH = -16,
|
|
46
|
-
GIT_ECERTIFICATE = -17,
|
|
45
|
+
GIT_EAUTH = -16, /**< Authentication error */
|
|
46
|
+
GIT_ECERTIFICATE = -17, /**< Server certificate is invalid */
|
|
47
47
|
GIT_EAPPLIED = -18, /**< Patch/merge has already been applied */
|
|
48
|
-
GIT_EPEEL = -19,
|
|
49
|
-
GIT_EEOF = -20,
|
|
50
|
-
GIT_EINVALID = -21,
|
|
48
|
+
GIT_EPEEL = -19, /**< The requested peel operation is not possible */
|
|
49
|
+
GIT_EEOF = -20, /**< Unexpected EOF */
|
|
50
|
+
GIT_EINVALID = -21, /**< Invalid operation or input */
|
|
51
51
|
GIT_EUNCOMMITTED = -22, /**< Uncommitted changes in index prevented operation */
|
|
52
|
-
GIT_EDIRECTORY = -23,
|
|
52
|
+
GIT_EDIRECTORY = -23, /**< The operation is not valid for a directory */
|
|
53
53
|
GIT_EMERGECONFLICT = -24, /**< A merge conflict exists and cannot continue */
|
|
54
54
|
|
|
55
55
|
GIT_PASSTHROUGH = -30, /**< A user-configured callback refused to act */
|
|
@@ -49,8 +49,33 @@ typedef enum {
|
|
|
49
49
|
|
|
50
50
|
/** Load attributes from `.gitattributes` in the root of HEAD */
|
|
51
51
|
GIT_FILTER_ATTRIBUTES_FROM_HEAD = (1u << 2),
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Load attributes from `.gitattributes` in a given commit.
|
|
55
|
+
* This can only be specified in a `git_filter_options`.
|
|
56
|
+
*/
|
|
57
|
+
GIT_FILTER_ATTRIBUTES_FROM_COMMIT = (1u << 3),
|
|
52
58
|
} git_filter_flag_t;
|
|
53
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Filtering options
|
|
62
|
+
*/
|
|
63
|
+
typedef struct {
|
|
64
|
+
unsigned int version;
|
|
65
|
+
|
|
66
|
+
/** See `git_filter_flag_t` above */
|
|
67
|
+
uint32_t flags;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* The commit to load attributes from, when
|
|
71
|
+
* `GIT_FILTER_ATTRIBUTES_FROM_COMMIT` is specified.
|
|
72
|
+
*/
|
|
73
|
+
git_oid *commit_id;
|
|
74
|
+
} git_filter_options;
|
|
75
|
+
|
|
76
|
+
#define GIT_FILTER_OPTIONS_VERSION 1
|
|
77
|
+
#define GIT_FILTER_OPTIONS_INIT {GIT_FILTER_OPTIONS_VERSION}
|
|
78
|
+
|
|
54
79
|
/**
|
|
55
80
|
* A filter that can transform file data
|
|
56
81
|
*
|
|
@@ -103,6 +128,29 @@ GIT_EXTERN(int) git_filter_list_load(
|
|
|
103
128
|
git_filter_mode_t mode,
|
|
104
129
|
uint32_t flags);
|
|
105
130
|
|
|
131
|
+
/**
|
|
132
|
+
* Load the filter list for a given path.
|
|
133
|
+
*
|
|
134
|
+
* This will return 0 (success) but set the output git_filter_list to NULL
|
|
135
|
+
* if no filters are requested for the given file.
|
|
136
|
+
*
|
|
137
|
+
* @param filters Output newly created git_filter_list (or NULL)
|
|
138
|
+
* @param repo Repository object that contains `path`
|
|
139
|
+
* @param blob The blob to which the filter will be applied (if known)
|
|
140
|
+
* @param path Relative path of the file to be filtered
|
|
141
|
+
* @param mode Filtering direction (WT->ODB or ODB->WT)
|
|
142
|
+
* @param opts The `git_filter_options` to use when loading filters
|
|
143
|
+
* @return 0 on success (which could still return NULL if no filters are
|
|
144
|
+
* needed for the requested file), <0 on error
|
|
145
|
+
*/
|
|
146
|
+
GIT_EXTERN(int) git_filter_list_load_ext(
|
|
147
|
+
git_filter_list **filters,
|
|
148
|
+
git_repository *repo,
|
|
149
|
+
git_blob *blob,
|
|
150
|
+
const char *path,
|
|
151
|
+
git_filter_mode_t mode,
|
|
152
|
+
git_filter_options *opts);
|
|
153
|
+
|
|
106
154
|
/**
|
|
107
155
|
* Query the filter list to see if a given filter (by name) will run.
|
|
108
156
|
* The built-in filters "crlf" and "ident" can be queried, otherwise this
|
|
@@ -122,27 +170,17 @@ GIT_EXTERN(int) git_filter_list_contains(
|
|
|
122
170
|
/**
|
|
123
171
|
* Apply filter list to a data buffer.
|
|
124
172
|
*
|
|
125
|
-
* See `git2/buffer.h` for background on `git_buf` objects.
|
|
126
|
-
*
|
|
127
|
-
* If the `in` buffer holds data allocated by libgit2 (i.e. `in->asize` is
|
|
128
|
-
* not zero), then it will be overwritten when applying the filters. If
|
|
129
|
-
* not, then it will be left untouched.
|
|
130
|
-
*
|
|
131
|
-
* If there are no filters to apply (or `filters` is NULL), then the `out`
|
|
132
|
-
* buffer will reference the `in` buffer data (with `asize` set to zero)
|
|
133
|
-
* instead of allocating data. This keeps allocations to a minimum, but
|
|
134
|
-
* it means you have to be careful about freeing the `in` data since `out`
|
|
135
|
-
* may be pointing to it!
|
|
136
|
-
*
|
|
137
173
|
* @param out Buffer to store the result of the filtering
|
|
138
174
|
* @param filters A loaded git_filter_list (or NULL)
|
|
139
175
|
* @param in Buffer containing the data to filter
|
|
176
|
+
* @param in_len The length of the input buffer
|
|
140
177
|
* @return 0 on success, an error code otherwise
|
|
141
178
|
*/
|
|
142
|
-
GIT_EXTERN(int)
|
|
179
|
+
GIT_EXTERN(int) git_filter_list_apply_to_buffer(
|
|
143
180
|
git_buf *out,
|
|
144
181
|
git_filter_list *filters,
|
|
145
|
-
|
|
182
|
+
const char *in,
|
|
183
|
+
size_t in_len);
|
|
146
184
|
|
|
147
185
|
/**
|
|
148
186
|
* Apply a filter list to the contents of a file on disk
|
|
@@ -175,12 +213,14 @@ GIT_EXTERN(int) git_filter_list_apply_to_blob(
|
|
|
175
213
|
* Apply a filter list to an arbitrary buffer as a stream
|
|
176
214
|
*
|
|
177
215
|
* @param filters the list of filters to apply
|
|
178
|
-
* @param
|
|
216
|
+
* @param buffer the buffer to filter
|
|
217
|
+
* @param len the size of the buffer
|
|
179
218
|
* @param target the stream into which the data will be written
|
|
180
219
|
*/
|
|
181
|
-
GIT_EXTERN(int)
|
|
220
|
+
GIT_EXTERN(int) git_filter_list_stream_buffer(
|
|
182
221
|
git_filter_list *filters,
|
|
183
|
-
|
|
222
|
+
const char *buffer,
|
|
223
|
+
size_t len,
|
|
184
224
|
git_writestream *target);
|
|
185
225
|
|
|
186
226
|
/**
|
|
@@ -43,8 +43,9 @@ GIT_EXTERN(int) git_graph_ahead_behind(size_t *ahead, size_t *behind, git_reposi
|
|
|
43
43
|
* Note that a commit is not considered a descendant of itself, in contrast
|
|
44
44
|
* to `git merge-base --is-ancestor`.
|
|
45
45
|
*
|
|
46
|
-
* @param
|
|
47
|
-
* @param
|
|
46
|
+
* @param repo the repository where the commits exist
|
|
47
|
+
* @param commit a previously loaded commit
|
|
48
|
+
* @param ancestor a potential ancestor commit
|
|
48
49
|
* @return 1 if the given commit is a descendant of the potential ancestor,
|
|
49
50
|
* 0 if not, error code otherwise.
|
|
50
51
|
*/
|
|
@@ -53,6 +54,23 @@ GIT_EXTERN(int) git_graph_descendant_of(
|
|
|
53
54
|
const git_oid *commit,
|
|
54
55
|
const git_oid *ancestor);
|
|
55
56
|
|
|
57
|
+
/**
|
|
58
|
+
* Determine if a commit is reachable from any of a list of commits by
|
|
59
|
+
* following parent edges.
|
|
60
|
+
*
|
|
61
|
+
* @param repo the repository where the commits exist
|
|
62
|
+
* @param commit a previously loaded commit
|
|
63
|
+
* @param length the number of commits in the provided `descendant_array`
|
|
64
|
+
* @param descendant_array oids of the commits
|
|
65
|
+
* @return 1 if the given commit is an ancestor of any of the given potential
|
|
66
|
+
* descendants, 0 if not, error code otherwise.
|
|
67
|
+
*/
|
|
68
|
+
GIT_EXTERN(int) git_graph_reachable_from_any(
|
|
69
|
+
git_repository *repo,
|
|
70
|
+
const git_oid *commit,
|
|
71
|
+
const git_oid descendant_array[],
|
|
72
|
+
size_t length);
|
|
73
|
+
|
|
56
74
|
/** @} */
|
|
57
75
|
GIT_END_DECL
|
|
58
76
|
#endif
|
|
@@ -702,7 +702,7 @@ GIT_EXTERN(int) git_index_update_all(
|
|
|
702
702
|
* @param at_pos the address to which the position of the index entry is written (optional)
|
|
703
703
|
* @param index an existing index object
|
|
704
704
|
* @param path path to search
|
|
705
|
-
* @return 0
|
|
705
|
+
* @return 0 or an error code
|
|
706
706
|
*/
|
|
707
707
|
GIT_EXTERN(int) git_index_find(size_t *at_pos, git_index *index, const char *path);
|
|
708
708
|
|
|
@@ -713,7 +713,7 @@ GIT_EXTERN(int) git_index_find(size_t *at_pos, git_index *index, const char *pat
|
|
|
713
713
|
* @param at_pos the address to which the position of the index entry is written (optional)
|
|
714
714
|
* @param index an existing index object
|
|
715
715
|
* @param prefix the prefix to search for
|
|
716
|
-
* @return 0
|
|
716
|
+
* @return 0 or an error code
|
|
717
717
|
*/
|
|
718
718
|
GIT_EXTERN(int) git_index_find_prefix(size_t *at_pos, git_index *index, const char *prefix);
|
|
719
719
|
|
|
@@ -390,6 +390,20 @@ GIT_EXTERN(int) git_odb_write_pack(
|
|
|
390
390
|
git_indexer_progress_cb progress_cb,
|
|
391
391
|
void *progress_payload);
|
|
392
392
|
|
|
393
|
+
/**
|
|
394
|
+
* Write a `multi-pack-index` file from all the `.pack` files in the ODB.
|
|
395
|
+
*
|
|
396
|
+
* If the ODB layer understands pack files, then this will create a file called
|
|
397
|
+
* `multi-pack-index` next to the `.pack` and `.idx` files, which will contain
|
|
398
|
+
* an index of all objects stored in `.pack` files. This will allow for
|
|
399
|
+
* O(log n) lookup for n objects (regardless of how many packfiles there
|
|
400
|
+
* exist).
|
|
401
|
+
*
|
|
402
|
+
* @param db object database where the `multi-pack-index` file will be written.
|
|
403
|
+
*/
|
|
404
|
+
GIT_EXTERN(int) git_odb_write_multi_pack_index(
|
|
405
|
+
git_odb *db);
|
|
406
|
+
|
|
393
407
|
/**
|
|
394
408
|
* Determine the object-ID (sha1 hash) of a data buffer
|
|
395
409
|
*
|
|
@@ -539,6 +553,21 @@ GIT_EXTERN(size_t) git_odb_num_backends(git_odb *odb);
|
|
|
539
553
|
*/
|
|
540
554
|
GIT_EXTERN(int) git_odb_get_backend(git_odb_backend **out, git_odb *odb, size_t pos);
|
|
541
555
|
|
|
556
|
+
/**
|
|
557
|
+
* Set the git commit-graph for the ODB.
|
|
558
|
+
*
|
|
559
|
+
* After a successfull call, the ownership of the cgraph parameter will be
|
|
560
|
+
* transferred to libgit2, and the caller should not free it.
|
|
561
|
+
*
|
|
562
|
+
* The commit-graph can also be unset by explicitly passing NULL as the cgraph
|
|
563
|
+
* parameter.
|
|
564
|
+
*
|
|
565
|
+
* @param odb object database
|
|
566
|
+
* @param cgraph the git commit-graph
|
|
567
|
+
* @return 0 on success; error code otherwise
|
|
568
|
+
*/
|
|
569
|
+
GIT_EXTERN(int) git_odb_set_commit_graph(git_odb *odb, git_commit_graph *cgraph);
|
|
570
|
+
|
|
542
571
|
/** @} */
|
|
543
572
|
GIT_END_DECL
|
|
544
573
|
#endif
|
|
@@ -28,6 +28,14 @@ GIT_BEGIN_DECL
|
|
|
28
28
|
*/
|
|
29
29
|
typedef struct git_patch git_patch;
|
|
30
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Get the repository associated with this patch. May be NULL.
|
|
33
|
+
*
|
|
34
|
+
* @param patch the patch
|
|
35
|
+
* @return a pointer to the repository
|
|
36
|
+
*/
|
|
37
|
+
GIT_EXTERN(git_repository *) git_patch_owner(const git_patch *patch);
|
|
38
|
+
|
|
31
39
|
/**
|
|
32
40
|
* Return a patch for an entry in the diff list.
|
|
33
41
|
*
|
|
@@ -74,14 +74,38 @@ typedef struct {
|
|
|
74
74
|
*/
|
|
75
75
|
git_checkout_options checkout_options;
|
|
76
76
|
|
|
77
|
+
/**
|
|
78
|
+
* Optional callback that allows users to override commit
|
|
79
|
+
* creation in `git_rebase_commit`. If specified, users can
|
|
80
|
+
* create their own commit and provide the commit ID, which
|
|
81
|
+
* may be useful for signing commits or otherwise customizing
|
|
82
|
+
* the commit creation.
|
|
83
|
+
*
|
|
84
|
+
* If this callback returns `GIT_PASSTHROUGH`, then
|
|
85
|
+
* `git_rebase_commit` will continue to create the commit.
|
|
86
|
+
*/
|
|
87
|
+
git_commit_create_cb commit_create_cb;
|
|
88
|
+
|
|
89
|
+
#ifdef GIT_DEPRECATE_HARD
|
|
90
|
+
void *reserved;
|
|
91
|
+
#else
|
|
77
92
|
/**
|
|
78
93
|
* If provided, this will be called with the commit content, allowing
|
|
79
94
|
* a signature to be added to the rebase commit. Can be skipped with
|
|
80
95
|
* GIT_PASSTHROUGH. If GIT_PASSTHROUGH is returned, a commit will be made
|
|
81
96
|
* without a signature.
|
|
97
|
+
*
|
|
82
98
|
* This field is only used when performing git_rebase_commit.
|
|
99
|
+
*
|
|
100
|
+
* This callback is not invoked if a `git_commit_create_cb` is
|
|
101
|
+
* specified.
|
|
102
|
+
*
|
|
103
|
+
* This callback is deprecated; users should provide a
|
|
104
|
+
* creation callback as `commit_create_cb` that produces a
|
|
105
|
+
* commit buffer, signs it, and commits it.
|
|
83
106
|
*/
|
|
84
|
-
|
|
107
|
+
int (*signing_cb)(git_buf *, git_buf *, const char *, void *);
|
|
108
|
+
#endif
|
|
85
109
|
|
|
86
110
|
/**
|
|
87
111
|
* This will be passed to each of the callbacks in this struct
|
|
@@ -97,6 +97,9 @@ GIT_EXTERN(int) git_reference_dwim(git_reference **out, git_repository *repo, co
|
|
|
97
97
|
* of updating does not match the one passed through `current_value`
|
|
98
98
|
* (i.e. if the ref has changed since the user read it).
|
|
99
99
|
*
|
|
100
|
+
* If `current_value` is all zeros, this function will return GIT_EMODIFIED
|
|
101
|
+
* if the ref already exists.
|
|
102
|
+
*
|
|
100
103
|
* @param out Pointer to the newly created reference
|
|
101
104
|
* @param repo Repository where that reference will live
|
|
102
105
|
* @param name The name of the reference
|
|
@@ -743,10 +746,11 @@ GIT_EXTERN(int) git_reference_peel(
|
|
|
743
746
|
* the characters '~', '^', ':', '\\', '?', '[', and '*', and the
|
|
744
747
|
* sequences ".." and "@{" which have special meaning to revparse.
|
|
745
748
|
*
|
|
749
|
+
* @param valid output pointer to set with validity of given reference name
|
|
746
750
|
* @param refname name to be checked.
|
|
747
|
-
* @return
|
|
751
|
+
* @return 0 on success or an error code
|
|
748
752
|
*/
|
|
749
|
-
GIT_EXTERN(int)
|
|
753
|
+
GIT_EXTERN(int) git_reference_name_is_valid(int *valid, const char *refname);
|
|
750
754
|
|
|
751
755
|
/**
|
|
752
756
|
* Get the reference's short name
|
|
@@ -212,7 +212,8 @@ GIT_EXTERN(const char *) git_remote_name(const git_remote *remote);
|
|
|
212
212
|
* Get the remote's url
|
|
213
213
|
*
|
|
214
214
|
* If url.*.insteadOf has been configured for this URL, it will
|
|
215
|
-
* return the modified URL.
|
|
215
|
+
* return the modified URL. If `git_remote_set_instance_pushurl`
|
|
216
|
+
* has been called for this remote, then that URL will be returned.
|
|
216
217
|
*
|
|
217
218
|
* @param remote the remote
|
|
218
219
|
* @return a pointer to the url
|
|
@@ -220,10 +221,11 @@ GIT_EXTERN(const char *) git_remote_name(const git_remote *remote);
|
|
|
220
221
|
GIT_EXTERN(const char *) git_remote_url(const git_remote *remote);
|
|
221
222
|
|
|
222
223
|
/**
|
|
223
|
-
* Get the remote's url for pushing
|
|
224
|
+
* Get the remote's url for pushing.
|
|
224
225
|
*
|
|
225
226
|
* If url.*.pushInsteadOf has been configured for this URL, it
|
|
226
|
-
* will return the modified URL.
|
|
227
|
+
* will return the modified URL. If `git_remote_set_instance_pushurl`
|
|
228
|
+
* has been called for this remote, then that URL will be returned.
|
|
227
229
|
*
|
|
228
230
|
* @param remote the remote
|
|
229
231
|
* @return a pointer to the url or NULL if no special url for pushing is set
|
|
@@ -253,9 +255,30 @@ GIT_EXTERN(int) git_remote_set_url(git_repository *repo, const char *remote, con
|
|
|
253
255
|
* @param repo the repository in which to perform the change
|
|
254
256
|
* @param remote the remote's name
|
|
255
257
|
* @param url the url to set
|
|
258
|
+
* @return 0, or an error code
|
|
256
259
|
*/
|
|
257
260
|
GIT_EXTERN(int) git_remote_set_pushurl(git_repository *repo, const char *remote, const char* url);
|
|
258
261
|
|
|
262
|
+
/**
|
|
263
|
+
* Set the url for this particular url instance. The URL in the
|
|
264
|
+
* configuration will be ignored, and will not be changed.
|
|
265
|
+
*
|
|
266
|
+
* @param remote the remote's name
|
|
267
|
+
* @param url the url to set
|
|
268
|
+
* @return 0 or an error value
|
|
269
|
+
*/
|
|
270
|
+
GIT_EXTERN(int) git_remote_set_instance_url(git_remote *remote, const char *url);
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Set the push url for this particular url instance. The URL in the
|
|
274
|
+
* configuration will be ignored, and will not be changed.
|
|
275
|
+
*
|
|
276
|
+
* @param remote the remote's name
|
|
277
|
+
* @param url the url to set
|
|
278
|
+
* @return 0 or an error value
|
|
279
|
+
*/
|
|
280
|
+
GIT_EXTERN(int) git_remote_set_instance_pushurl(git_remote *remote, const char *url);
|
|
281
|
+
|
|
259
282
|
/**
|
|
260
283
|
* Add a fetch refspec to the remote's configuration
|
|
261
284
|
*
|
|
@@ -476,6 +499,7 @@ typedef int GIT_CALLBACK(git_push_negotiation)(const git_push_update **updates,
|
|
|
476
499
|
*/
|
|
477
500
|
typedef int GIT_CALLBACK(git_push_update_reference_cb)(const char *refname, const char *status, void *data);
|
|
478
501
|
|
|
502
|
+
#ifndef GIT_DEPRECATE_HARD
|
|
479
503
|
/**
|
|
480
504
|
* Callback to resolve URLs before connecting to remote
|
|
481
505
|
*
|
|
@@ -487,8 +511,22 @@ typedef int GIT_CALLBACK(git_push_update_reference_cb)(const char *refname, cons
|
|
|
487
511
|
* @param direction GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH
|
|
488
512
|
* @param payload Payload provided by the caller
|
|
489
513
|
* @return 0 on success, GIT_PASSTHROUGH or an error
|
|
514
|
+
* @deprecated Use `git_remote_set_instance_url`
|
|
490
515
|
*/
|
|
491
516
|
typedef int GIT_CALLBACK(git_url_resolve_cb)(git_buf *url_resolved, const char *url, int direction, void *payload);
|
|
517
|
+
#endif
|
|
518
|
+
|
|
519
|
+
/**
|
|
520
|
+
* Callback invoked immediately before we attempt to connect to the
|
|
521
|
+
* given url. Callers may change the URL before the connection by
|
|
522
|
+
* calling `git_remote_set_instance_url` in the callback.
|
|
523
|
+
*
|
|
524
|
+
* @param remote The remote to be connected
|
|
525
|
+
* @param direction GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH
|
|
526
|
+
* @param payload Payload provided by the caller
|
|
527
|
+
* @return 0 on success, or an error
|
|
528
|
+
*/
|
|
529
|
+
typedef int GIT_CALLBACK(git_remote_ready_cb)(git_remote *remote, int direction, void *payload);
|
|
492
530
|
|
|
493
531
|
/**
|
|
494
532
|
* The callback settings structure
|
|
@@ -574,17 +612,29 @@ struct git_remote_callbacks {
|
|
|
574
612
|
*/
|
|
575
613
|
git_transport_cb transport;
|
|
576
614
|
|
|
615
|
+
/**
|
|
616
|
+
* Callback when the remote is ready to connect.
|
|
617
|
+
*/
|
|
618
|
+
git_remote_ready_cb remote_ready;
|
|
619
|
+
|
|
577
620
|
/**
|
|
578
621
|
* This will be passed to each of the callbacks in this struct
|
|
579
622
|
* as the last parameter.
|
|
580
623
|
*/
|
|
581
624
|
void *payload;
|
|
582
625
|
|
|
626
|
+
#ifdef GIT_DEPRECATE_HARD
|
|
627
|
+
void *reserved;
|
|
628
|
+
#else
|
|
583
629
|
/**
|
|
584
630
|
* Resolve URL before connecting to remote.
|
|
585
631
|
* The returned URL will be used to connect to the remote instead.
|
|
632
|
+
*
|
|
633
|
+
* This callback is deprecated; users should use
|
|
634
|
+
* git_remote_ready_cb and configure the instance URL instead.
|
|
586
635
|
*/
|
|
587
636
|
git_url_resolve_cb resolve_url;
|
|
637
|
+
#endif
|
|
588
638
|
};
|
|
589
639
|
|
|
590
640
|
#define GIT_REMOTE_CALLBACKS_VERSION 1
|
|
@@ -876,8 +926,10 @@ GIT_EXTERN(git_remote_autotag_option_t) git_remote_autotag(const git_remote *rem
|
|
|
876
926
|
* @param repo the repository in which to make the change
|
|
877
927
|
* @param remote the name of the remote
|
|
878
928
|
* @param value the new value to take.
|
|
929
|
+
* @return 0, or an error code.
|
|
879
930
|
*/
|
|
880
931
|
GIT_EXTERN(int) git_remote_set_autotag(git_repository *repo, const char *remote, git_remote_autotag_option_t value);
|
|
932
|
+
|
|
881
933
|
/**
|
|
882
934
|
* Retrieve the ref-prune setting
|
|
883
935
|
*
|
|
@@ -915,10 +967,11 @@ GIT_EXTERN(int) git_remote_rename(
|
|
|
915
967
|
/**
|
|
916
968
|
* Ensure the remote name is well-formed.
|
|
917
969
|
*
|
|
970
|
+
* @param valid output pointer to set with validity of given remote name
|
|
918
971
|
* @param remote_name name to be checked.
|
|
919
|
-
* @return
|
|
972
|
+
* @return 0 on success or an error code
|
|
920
973
|
*/
|
|
921
|
-
|
|
974
|
+
int git_remote_name_is_valid(int *valid, const char *remote_name);
|
|
922
975
|
|
|
923
976
|
/**
|
|
924
977
|
* Delete an existing persisted remote.
|
|
@@ -943,7 +996,7 @@ GIT_EXTERN(int) git_remote_delete(git_repository *repo, const char *name);
|
|
|
943
996
|
*
|
|
944
997
|
* This function must only be called after connecting.
|
|
945
998
|
*
|
|
946
|
-
* @param out the
|
|
999
|
+
* @param out the buffer in which to store the reference name
|
|
947
1000
|
* @param remote the remote
|
|
948
1001
|
* @return 0, GIT_ENOTFOUND if the remote does not have any references
|
|
949
1002
|
* or none of them point to HEAD's commit, or an error message.
|