summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authoryuangli <yuangli@mathworks.com>2022-07-04 17:08:04 +0100
committeryuangli <yuangli@mathworks.com>2022-07-04 17:08:04 +0100
commitafa79ca05862c24baa0360324ab7b63c0df90689 (patch)
treefbaa0ddf5f5176e5fb8d83ed7e0db72209473c87 /include
parent70a332a51b6364507d19bd1821b22fabbd1f2e08 (diff)
downloadlibgit2-afa79ca05862c24baa0360324ab7b63c0df90689.tar.gz
Merge branch 'pr/tiennou/4747' into transportPR
Diffstat (limited to 'include')
-rw-r--r--include/git2/remote.h7
-rw-r--r--include/git2/repository.h11
-rw-r--r--include/git2/sys/transport.h17
3 files changed, 32 insertions, 3 deletions
diff --git a/include/git2/remote.h b/include/git2/remote.h
index 4d57eaaf7..e577f8a7b 100644
--- a/include/git2/remote.h
+++ b/include/git2/remote.h
@@ -738,11 +738,16 @@ typedef struct {
* Extra headers for this fetch operation
*/
git_strarray custom_headers;
+
+ /**
+ * Depth of the fetch to perform
+ */
+ int depth;
} git_fetch_options;
#define GIT_FETCH_OPTIONS_VERSION 1
#define GIT_FETCH_OPTIONS_INIT { GIT_FETCH_OPTIONS_VERSION, GIT_REMOTE_CALLBACKS_INIT, GIT_FETCH_PRUNE_UNSPECIFIED, 1, \
- GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED, GIT_PROXY_OPTIONS_INIT }
+ GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED, GIT_PROXY_OPTIONS_INIT, { NULL }, -1 }
/**
* Initialize git_fetch_options structure
diff --git a/include/git2/repository.h b/include/git2/repository.h
index ec8adfb29..bbf3ae4cd 100644
--- a/include/git2/repository.h
+++ b/include/git2/repository.h
@@ -921,6 +921,17 @@ GIT_EXTERN(const char *) git_repository_get_namespace(git_repository *repo);
GIT_EXTERN(int) git_repository_is_shallow(git_repository *repo);
/**
+ * Determine the shallow roots of the repository
+ *
+ * This oidarray is owned by the library. Do not free it.
+ *
+ * @param out An array of shallow oids.
+ * @param repo The repository
+ * @return 0 on success, an error otherwise.
+ */
+GIT_EXTERN(int) git_repository_shallow_roots(git_oidarray *out, git_repository *repo);
+
+/**
* Retrieve the configured identity to use for reflogs
*
* The memory is owned by the repository and must not be freed by the
diff --git a/include/git2/sys/transport.h b/include/git2/sys/transport.h
index fee34544f..ea8bcb64b 100644
--- a/include/git2/sys/transport.h
+++ b/include/git2/sys/transport.h
@@ -33,6 +33,15 @@ typedef enum {
GIT_TRANSPORTFLAGS_NONE = 0,
} git_transport_flags_t;
+typedef struct git_shallowarray git_shallowarray;
+
+typedef struct {
+ const git_remote_head * const *refs;
+ size_t count;
+ git_shallowarray *shallow_roots;
+ int depth;
+} git_fetch_negotiation;
+
struct git_transport {
unsigned int version; /**< The struct version */
@@ -87,8 +96,7 @@ struct git_transport {
int GIT_CALLBACK(negotiate_fetch)(
git_transport *transport,
git_repository *repo,
- const git_remote_head * const *refs,
- size_t count);
+ const git_fetch_negotiation *fetch_data);
/**
* Start downloading the packfile from the remote repository.
@@ -435,6 +443,11 @@ GIT_EXTERN(int) git_smart_subtransport_ssh(
git_transport *owner,
void *param);
+GIT_EXTERN(size_t) git_shallowarray_count(git_shallowarray *array);
+GIT_EXTERN(const git_oid *) git_shallowarray_get(git_shallowarray *array, size_t idx);
+GIT_EXTERN(int) git_shallowarray_add(git_shallowarray *array, git_oid *oid);
+GIT_EXTERN(int) git_shallowarray_remove(git_shallowarray *array, git_oid *oid);
+
/** @} */
GIT_END_DECL
#endif