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
|
@@ -70,12 +70,12 @@ GIT_EXTERN(int) git_revparse_ext(
|
|
|
70
70
|
*/
|
|
71
71
|
typedef enum {
|
|
72
72
|
/** The spec targeted a single object. */
|
|
73
|
-
|
|
73
|
+
GIT_REVSPEC_SINGLE = 1 << 0,
|
|
74
74
|
/** The spec targeted a range of commits. */
|
|
75
|
-
|
|
75
|
+
GIT_REVSPEC_RANGE = 1 << 1,
|
|
76
76
|
/** The spec used the '...' operator, which invokes special semantics. */
|
|
77
|
-
|
|
78
|
-
}
|
|
77
|
+
GIT_REVSPEC_MERGE_BASE = 1 << 2,
|
|
78
|
+
} git_revspec_t;
|
|
79
79
|
|
|
80
80
|
/**
|
|
81
81
|
* Git Revision Spec: output of a `git_revparse` operation
|
|
@@ -85,7 +85,7 @@ typedef struct {
|
|
|
85
85
|
git_object *from;
|
|
86
86
|
/** The right element of the revspec; must be freed by the user */
|
|
87
87
|
git_object *to;
|
|
88
|
-
/** The intent of the revspec (i.e. `
|
|
88
|
+
/** The intent of the revspec (i.e. `git_revspec_mode_t` flags) */
|
|
89
89
|
unsigned int flags;
|
|
90
90
|
} git_revspec;
|
|
91
91
|
|
|
@@ -69,89 +69,141 @@ typedef int GIT_CALLBACK(git_status_cb)(
|
|
|
69
69
|
* With `git_status_foreach_ext`, this will control which changes get
|
|
70
70
|
* callbacks. With `git_status_list_new`, these will control which
|
|
71
71
|
* changes are included in the list.
|
|
72
|
-
*
|
|
73
|
-
* - GIT_STATUS_SHOW_INDEX_AND_WORKDIR is the default. This roughly
|
|
74
|
-
* matches `git status --porcelain` regarding which files are
|
|
75
|
-
* included and in what order.
|
|
76
|
-
* - GIT_STATUS_SHOW_INDEX_ONLY only gives status based on HEAD to index
|
|
77
|
-
* comparison, not looking at working directory changes.
|
|
78
|
-
* - GIT_STATUS_SHOW_WORKDIR_ONLY only gives status based on index to
|
|
79
|
-
* working directory comparison, not comparing the index to the HEAD.
|
|
80
72
|
*/
|
|
81
73
|
typedef enum {
|
|
74
|
+
/**
|
|
75
|
+
* The default. This roughly matches `git status --porcelain` regarding
|
|
76
|
+
* which files are included and in what order.
|
|
77
|
+
*/
|
|
82
78
|
GIT_STATUS_SHOW_INDEX_AND_WORKDIR = 0,
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Only gives status based on HEAD to index comparison, not looking at
|
|
82
|
+
* working directory changes.
|
|
83
|
+
*/
|
|
83
84
|
GIT_STATUS_SHOW_INDEX_ONLY = 1,
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Only gives status based on index to working directory comparison,
|
|
88
|
+
* not comparing the index to the HEAD.
|
|
89
|
+
*/
|
|
84
90
|
GIT_STATUS_SHOW_WORKDIR_ONLY = 2,
|
|
85
91
|
} git_status_show_t;
|
|
86
92
|
|
|
87
93
|
/**
|
|
88
94
|
* Flags to control status callbacks
|
|
89
95
|
*
|
|
90
|
-
* - GIT_STATUS_OPT_INCLUDE_UNTRACKED says that callbacks should be made
|
|
91
|
-
* on untracked files. These will only be made if the workdir files are
|
|
92
|
-
* included in the status "show" option.
|
|
93
|
-
* - GIT_STATUS_OPT_INCLUDE_IGNORED says that ignored files get callbacks.
|
|
94
|
-
* Again, these callbacks will only be made if the workdir files are
|
|
95
|
-
* included in the status "show" option.
|
|
96
|
-
* - GIT_STATUS_OPT_INCLUDE_UNMODIFIED indicates that callback should be
|
|
97
|
-
* made even on unmodified files.
|
|
98
|
-
* - GIT_STATUS_OPT_EXCLUDE_SUBMODULES indicates that submodules should be
|
|
99
|
-
* skipped. This only applies if there are no pending typechanges to
|
|
100
|
-
* the submodule (either from or to another type).
|
|
101
|
-
* - GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS indicates that all files in
|
|
102
|
-
* untracked directories should be included. Normally if an entire
|
|
103
|
-
* directory is new, then just the top-level directory is included (with
|
|
104
|
-
* a trailing slash on the entry name). This flag says to include all
|
|
105
|
-
* of the individual files in the directory instead.
|
|
106
|
-
* - GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH indicates that the given path
|
|
107
|
-
* should be treated as a literal path, and not as a pathspec pattern.
|
|
108
|
-
* - GIT_STATUS_OPT_RECURSE_IGNORED_DIRS indicates that the contents of
|
|
109
|
-
* ignored directories should be included in the status. This is like
|
|
110
|
-
* doing `git ls-files -o -i --exclude-standard` with core git.
|
|
111
|
-
* - GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX indicates that rename detection
|
|
112
|
-
* should be processed between the head and the index and enables
|
|
113
|
-
* the GIT_STATUS_INDEX_RENAMED as a possible status flag.
|
|
114
|
-
* - GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR indicates that rename
|
|
115
|
-
* detection should be run between the index and the working directory
|
|
116
|
-
* and enabled GIT_STATUS_WT_RENAMED as a possible status flag.
|
|
117
|
-
* - GIT_STATUS_OPT_SORT_CASE_SENSITIVELY overrides the native case
|
|
118
|
-
* sensitivity for the file system and forces the output to be in
|
|
119
|
-
* case-sensitive order
|
|
120
|
-
* - GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY overrides the native case
|
|
121
|
-
* sensitivity for the file system and forces the output to be in
|
|
122
|
-
* case-insensitive order
|
|
123
|
-
* - GIT_STATUS_OPT_RENAMES_FROM_REWRITES indicates that rename detection
|
|
124
|
-
* should include rewritten files
|
|
125
|
-
* - GIT_STATUS_OPT_NO_REFRESH bypasses the default status behavior of
|
|
126
|
-
* doing a "soft" index reload (i.e. reloading the index data if the
|
|
127
|
-
* file on disk has been modified outside libgit2).
|
|
128
|
-
* - GIT_STATUS_OPT_UPDATE_INDEX tells libgit2 to refresh the stat cache
|
|
129
|
-
* in the index for files that are unchanged but have out of date stat
|
|
130
|
-
* information in the index. It will result in less work being done on
|
|
131
|
-
* subsequent calls to get status. This is mutually exclusive with the
|
|
132
|
-
* NO_REFRESH option.
|
|
133
|
-
*
|
|
134
96
|
* Calling `git_status_foreach()` is like calling the extended version
|
|
135
97
|
* with: GIT_STATUS_OPT_INCLUDE_IGNORED, GIT_STATUS_OPT_INCLUDE_UNTRACKED,
|
|
136
98
|
* and GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS. Those options are bundled
|
|
137
99
|
* together as `GIT_STATUS_OPT_DEFAULTS` if you want them as a baseline.
|
|
138
100
|
*/
|
|
139
101
|
typedef enum {
|
|
102
|
+
/**
|
|
103
|
+
* Says that callbacks should be made on untracked files.
|
|
104
|
+
* These will only be made if the workdir files are included in the status
|
|
105
|
+
* "show" option.
|
|
106
|
+
*/
|
|
140
107
|
GIT_STATUS_OPT_INCLUDE_UNTRACKED = (1u << 0),
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Says that ignored files get callbacks.
|
|
111
|
+
* Again, these callbacks will only be made if the workdir files are
|
|
112
|
+
* included in the status "show" option.
|
|
113
|
+
*/
|
|
141
114
|
GIT_STATUS_OPT_INCLUDE_IGNORED = (1u << 1),
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Indicates that callback should be made even on unmodified files.
|
|
118
|
+
*/
|
|
142
119
|
GIT_STATUS_OPT_INCLUDE_UNMODIFIED = (1u << 2),
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Indicates that submodules should be skipped.
|
|
123
|
+
* This only applies if there are no pending typechanges to the submodule
|
|
124
|
+
* (either from or to another type).
|
|
125
|
+
*/
|
|
143
126
|
GIT_STATUS_OPT_EXCLUDE_SUBMODULES = (1u << 3),
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Indicates that all files in untracked directories should be included.
|
|
130
|
+
* Normally if an entire directory is new, then just the top-level
|
|
131
|
+
* directory is included (with a trailing slash on the entry name).
|
|
132
|
+
* This flag says to include all of the individual files in the directory
|
|
133
|
+
* instead.
|
|
134
|
+
*/
|
|
144
135
|
GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS = (1u << 4),
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Indicates that the given path should be treated as a literal path,
|
|
139
|
+
* and not as a pathspec pattern.
|
|
140
|
+
*/
|
|
145
141
|
GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH = (1u << 5),
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Indicates that the contents of ignored directories should be included
|
|
145
|
+
* in the status. This is like doing `git ls-files -o -i --exclude-standard`
|
|
146
|
+
* with core git.
|
|
147
|
+
*/
|
|
146
148
|
GIT_STATUS_OPT_RECURSE_IGNORED_DIRS = (1u << 6),
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Indicates that rename detection should be processed between the head and
|
|
152
|
+
* the index and enables the GIT_STATUS_INDEX_RENAMED as a possible status
|
|
153
|
+
* flag.
|
|
154
|
+
*/
|
|
147
155
|
GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX = (1u << 7),
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Indicates that rename detection should be run between the index and the
|
|
159
|
+
* working directory and enabled GIT_STATUS_WT_RENAMED as a possible status
|
|
160
|
+
* flag.
|
|
161
|
+
*/
|
|
148
162
|
GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR = (1u << 8),
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Overrides the native case sensitivity for the file system and forces
|
|
166
|
+
* the output to be in case-sensitive order.
|
|
167
|
+
*/
|
|
149
168
|
GIT_STATUS_OPT_SORT_CASE_SENSITIVELY = (1u << 9),
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Overrides the native case sensitivity for the file system and forces
|
|
172
|
+
* the output to be in case-insensitive order.
|
|
173
|
+
*/
|
|
150
174
|
GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY = (1u << 10),
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Iindicates that rename detection should include rewritten files.
|
|
178
|
+
*/
|
|
151
179
|
GIT_STATUS_OPT_RENAMES_FROM_REWRITES = (1u << 11),
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Bypasses the default status behavior of doing a "soft" index reload
|
|
183
|
+
* (i.e. reloading the index data if the file on disk has been modified
|
|
184
|
+
* outside libgit2).
|
|
185
|
+
*/
|
|
152
186
|
GIT_STATUS_OPT_NO_REFRESH = (1u << 12),
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Tells libgit2 to refresh the stat cache in the index for files that are
|
|
190
|
+
* unchanged but have out of date stat einformation in the index.
|
|
191
|
+
* It will result in less work being done on subsequent calls to get status.
|
|
192
|
+
* This is mutually exclusive with the NO_REFRESH option.
|
|
193
|
+
*/
|
|
153
194
|
GIT_STATUS_OPT_UPDATE_INDEX = (1u << 13),
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Normally files that cannot be opened or read are ignored as
|
|
198
|
+
* these are often transient files; this option will return
|
|
199
|
+
* unreadable files as `GIT_STATUS_WT_UNREADABLE`.
|
|
200
|
+
*/
|
|
154
201
|
GIT_STATUS_OPT_INCLUDE_UNREADABLE = (1u << 14),
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Unreadable files will be detected and given the status
|
|
205
|
+
* untracked instead of unreadable.
|
|
206
|
+
*/
|
|
155
207
|
GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED = (1u << 15),
|
|
156
208
|
} git_status_opt_t;
|
|
157
209
|
|
|
@@ -168,7 +220,10 @@ typedef enum {
|
|
|
168
220
|
*
|
|
169
221
|
*/
|
|
170
222
|
typedef struct {
|
|
171
|
-
|
|
223
|
+
/**
|
|
224
|
+
* The struct version; pass `GIT_STATUS_OPTIONS_VERSION`.
|
|
225
|
+
*/
|
|
226
|
+
unsigned int version;
|
|
172
227
|
|
|
173
228
|
/**
|
|
174
229
|
* The `show` value is one of the `git_status_show_t` constants that
|
|
@@ -177,21 +232,22 @@ typedef struct {
|
|
|
177
232
|
git_status_show_t show;
|
|
178
233
|
|
|
179
234
|
/**
|
|
180
|
-
* The `flags` value is an OR'ed combination of the
|
|
181
|
-
* values above.
|
|
235
|
+
* The `flags` value is an OR'ed combination of the
|
|
236
|
+
* `git_status_opt_t` values above.
|
|
182
237
|
*/
|
|
183
238
|
unsigned int flags;
|
|
184
239
|
|
|
185
240
|
/**
|
|
186
241
|
* The `pathspec` is an array of path patterns to match (using
|
|
187
|
-
* fnmatch-style matching), or just an array of paths to match
|
|
188
|
-
* `GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH` is specified
|
|
242
|
+
* fnmatch-style matching), or just an array of paths to match
|
|
243
|
+
* exactly if `GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH` is specified
|
|
244
|
+
* in the flags.
|
|
189
245
|
*/
|
|
190
246
|
git_strarray pathspec;
|
|
191
247
|
|
|
192
248
|
/**
|
|
193
|
-
* The `baseline` is the tree to be used for comparison to the
|
|
194
|
-
* and index; defaults to HEAD.
|
|
249
|
+
* The `baseline` is the tree to be used for comparison to the
|
|
250
|
+
* working directory and index; defaults to HEAD.
|
|
195
251
|
*/
|
|
196
252
|
git_tree *baseline;
|
|
197
253
|
} git_status_options;
|
|
@@ -223,6 +223,15 @@ GIT_EXTERN(int) git_submodule_lookup(
|
|
|
223
223
|
git_repository *repo,
|
|
224
224
|
const char *name);
|
|
225
225
|
|
|
226
|
+
/**
|
|
227
|
+
* Create an in-memory copy of a submodule. The copy must be explicitly
|
|
228
|
+
* free'd or it will leak.
|
|
229
|
+
*
|
|
230
|
+
* @param out Pointer to store the copy of the submodule.
|
|
231
|
+
* @param source Original submodule to copy.
|
|
232
|
+
*/
|
|
233
|
+
GIT_EXTERN(int) git_submodule_dup(git_submodule **out, git_submodule *source);
|
|
234
|
+
|
|
226
235
|
/**
|
|
227
236
|
* Release a submodule
|
|
228
237
|
*
|
|
@@ -0,0 +1,174 @@
|
|
|
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_commit_graph_h__
|
|
8
|
+
#define INCLUDE_sys_git_commit_graph_h__
|
|
9
|
+
|
|
10
|
+
#include "git2/common.h"
|
|
11
|
+
#include "git2/types.h"
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @file git2/sys/commit_graph.h
|
|
15
|
+
* @brief Git commit-graph
|
|
16
|
+
* @defgroup git_commit_graph Git commit-graph APIs
|
|
17
|
+
* @ingroup Git
|
|
18
|
+
* @{
|
|
19
|
+
*/
|
|
20
|
+
GIT_BEGIN_DECL
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Opens a `git_commit_graph` from a path to an objects directory.
|
|
24
|
+
*
|
|
25
|
+
* This finds, opens, and validates the `commit-graph` file.
|
|
26
|
+
*
|
|
27
|
+
* @param cgraph_out the `git_commit_graph` struct to initialize.
|
|
28
|
+
* @param objects_dir the path to a git objects directory.
|
|
29
|
+
* @return Zero on success; -1 on failure.
|
|
30
|
+
*/
|
|
31
|
+
GIT_EXTERN(int) git_commit_graph_open(git_commit_graph **cgraph_out, const char *objects_dir);
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Frees commit-graph data. This should only be called when memory allocated
|
|
35
|
+
* using `git_commit_graph_open` is not returned to libgit2 because it was not
|
|
36
|
+
* associated with the ODB through a successful call to
|
|
37
|
+
* `git_odb_set_commit_graph`.
|
|
38
|
+
*
|
|
39
|
+
* @param cgraph the commit-graph object to free. If NULL, no action is taken.
|
|
40
|
+
*/
|
|
41
|
+
GIT_EXTERN(void) git_commit_graph_free(git_commit_graph *cgraph);
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Create a new writer for `commit-graph` files.
|
|
45
|
+
*
|
|
46
|
+
* @param out Location to store the writer pointer.
|
|
47
|
+
* @param objects_info_dir The `objects/info` directory.
|
|
48
|
+
* The `commit-graph` file will be written in this directory.
|
|
49
|
+
* @return 0 or an error code
|
|
50
|
+
*/
|
|
51
|
+
GIT_EXTERN(int) git_commit_graph_writer_new(
|
|
52
|
+
git_commit_graph_writer **out,
|
|
53
|
+
const char *objects_info_dir);
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Free the commit-graph writer and its resources.
|
|
57
|
+
*
|
|
58
|
+
* @param w The writer to free. If NULL no action is taken.
|
|
59
|
+
*/
|
|
60
|
+
GIT_EXTERN(void) git_commit_graph_writer_free(git_commit_graph_writer *w);
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Add an `.idx` file (associated to a packfile) to the writer.
|
|
64
|
+
*
|
|
65
|
+
* @param w The writer.
|
|
66
|
+
* @param repo The repository that owns the `.idx` file.
|
|
67
|
+
* @param idx_path The path of an `.idx` file.
|
|
68
|
+
* @return 0 or an error code
|
|
69
|
+
*/
|
|
70
|
+
GIT_EXTERN(int) git_commit_graph_writer_add_index_file(
|
|
71
|
+
git_commit_graph_writer *w,
|
|
72
|
+
git_repository *repo,
|
|
73
|
+
const char *idx_path);
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Add a revwalk to the writer. This will add all the commits from the revwalk
|
|
77
|
+
* to the commit-graph.
|
|
78
|
+
*
|
|
79
|
+
* @param w The writer.
|
|
80
|
+
* @param walk The git_revwalk.
|
|
81
|
+
* @return 0 or an error code
|
|
82
|
+
*/
|
|
83
|
+
GIT_EXTERN(int) git_commit_graph_writer_add_revwalk(
|
|
84
|
+
git_commit_graph_writer *w,
|
|
85
|
+
git_revwalk *walk);
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* The strategy to use when adding a new set of commits to a pre-existing
|
|
90
|
+
* commit-graph chain.
|
|
91
|
+
*/
|
|
92
|
+
typedef enum {
|
|
93
|
+
/**
|
|
94
|
+
* Do not split commit-graph files. The other split strategy-related option
|
|
95
|
+
* fields are ignored.
|
|
96
|
+
*/
|
|
97
|
+
GIT_COMMIT_GRAPH_SPLIT_STRATEGY_SINGLE_FILE = 0,
|
|
98
|
+
} git_commit_graph_split_strategy_t;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Options structure for
|
|
102
|
+
* `git_commit_graph_writer_commit`/`git_commit_graph_writer_dump`.
|
|
103
|
+
*
|
|
104
|
+
* Initialize with `GIT_COMMIT_GRAPH_WRITER_OPTIONS_INIT`. Alternatively, you
|
|
105
|
+
* can use `git_commit_graph_writer_options_init`.
|
|
106
|
+
*/
|
|
107
|
+
typedef struct {
|
|
108
|
+
unsigned int version;
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* The strategy to use when adding new commits to a pre-existing commit-graph
|
|
112
|
+
* chain.
|
|
113
|
+
*/
|
|
114
|
+
git_commit_graph_split_strategy_t split_strategy;
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* The number of commits in level N is less than X times the number of
|
|
118
|
+
* commits in level N + 1. Default is 2.
|
|
119
|
+
*/
|
|
120
|
+
float size_multiple;
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* The number of commits in level N + 1 is more than C commits.
|
|
124
|
+
* Default is 64000.
|
|
125
|
+
*/
|
|
126
|
+
size_t max_commits;
|
|
127
|
+
} git_commit_graph_writer_options;
|
|
128
|
+
|
|
129
|
+
#define GIT_COMMIT_GRAPH_WRITER_OPTIONS_VERSION 1
|
|
130
|
+
#define GIT_COMMIT_GRAPH_WRITER_OPTIONS_INIT { \
|
|
131
|
+
GIT_COMMIT_GRAPH_WRITER_OPTIONS_VERSION \
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Initialize git_commit_graph_writer_options structure
|
|
136
|
+
*
|
|
137
|
+
* Initializes a `git_commit_graph_writer_options` with default values. Equivalent to
|
|
138
|
+
* creating an instance with `GIT_COMMIT_GRAPH_WRITER_OPTIONS_INIT`.
|
|
139
|
+
*
|
|
140
|
+
* @param opts The `git_commit_graph_writer_options` struct to initialize.
|
|
141
|
+
* @param version The struct version; pass `GIT_COMMIT_GRAPH_WRITER_OPTIONS_VERSION`.
|
|
142
|
+
* @return Zero on success; -1 on failure.
|
|
143
|
+
*/
|
|
144
|
+
GIT_EXTERN(int) git_commit_graph_writer_options_init(
|
|
145
|
+
git_commit_graph_writer_options *opts,
|
|
146
|
+
unsigned int version);
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Write a `commit-graph` file to a file.
|
|
150
|
+
*
|
|
151
|
+
* @param w The writer
|
|
152
|
+
* @param opts Pointer to git_commit_graph_writer_options struct.
|
|
153
|
+
* @return 0 or an error code
|
|
154
|
+
*/
|
|
155
|
+
GIT_EXTERN(int) git_commit_graph_writer_commit(
|
|
156
|
+
git_commit_graph_writer *w,
|
|
157
|
+
git_commit_graph_writer_options *opts);
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Dump the contents of the `commit-graph` to an in-memory buffer.
|
|
161
|
+
*
|
|
162
|
+
* @param buffer Buffer where to store the contents of the `commit-graph`.
|
|
163
|
+
* @param w The writer.
|
|
164
|
+
* @param opts Pointer to git_commit_graph_writer_options struct.
|
|
165
|
+
* @return 0 or an error code
|
|
166
|
+
*/
|
|
167
|
+
GIT_EXTERN(int) git_commit_graph_writer_dump(
|
|
168
|
+
git_buf *buffer,
|
|
169
|
+
git_commit_graph_writer *w,
|
|
170
|
+
git_commit_graph_writer_options *opts);
|
|
171
|
+
|
|
172
|
+
/** @} */
|
|
173
|
+
GIT_END_DECL
|
|
174
|
+
#endif
|