summaryrefslogtreecommitdiff
path: root/include/git2
diff options
context:
space:
mode:
Diffstat (limited to 'include/git2')
-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