diff --git a/Clibgit2.xcframework/Info.plist b/Clibgit2.xcframework/Info.plist
index 4e9c185..2e954b5 100644
--- a/Clibgit2.xcframework/Info.plist
+++ b/Clibgit2.xcframework/Info.plist
@@ -5,10 +5,12 @@
AvailableLibraries
+ BinaryPath
+ libgit2_all.a
HeadersPath
Headers
LibraryIdentifier
- ios-arm64_x86_64-maccatalyst
+ macos-arm64_x86_64
LibraryPath
libgit2_all.a
SupportedArchitectures
@@ -17,25 +19,30 @@
x86_64
SupportedPlatform
- ios
- SupportedPlatformVariant
- maccatalyst
+ macos
+ BinaryPath
+ libgit2_all.a
HeadersPath
Headers
LibraryIdentifier
- ios-arm64
+ ios-arm64_x86_64-maccatalyst
LibraryPath
libgit2_all.a
SupportedArchitectures
arm64
+ x86_64
SupportedPlatform
ios
+ SupportedPlatformVariant
+ maccatalyst
+ BinaryPath
+ libgit2_all.a
HeadersPath
Headers
LibraryIdentifier
@@ -52,19 +59,20 @@
simulator
+ BinaryPath
+ libgit2_all.a
HeadersPath
Headers
LibraryIdentifier
- macos-arm64_x86_64
+ ios-arm64
LibraryPath
libgit2_all.a
SupportedArchitectures
arm64
- x86_64
SupportedPlatform
- macos
+ ios
CFBundlePackageType
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2.h
index 2961cc3..3457e5f 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2.h
@@ -28,6 +28,7 @@
#include "git2/diff.h"
#include "git2/email.h"
#include "git2/errors.h"
+#include "git2/experimental.h"
#include "git2/filter.h"
#include "git2/global.h"
#include "git2/graph.h"
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/annotated_commit.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/annotated_commit.h
index 3b7103f..04f3b1c 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/annotated_commit.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/annotated_commit.h
@@ -13,9 +13,16 @@
/**
* @file git2/annotated_commit.h
- * @brief Git annotated commit routines
+ * @brief A commit and information about how it was looked up by the user.
* @defgroup git_annotated_commit Git annotated commit routines
* @ingroup Git
+ *
+ * An "annotated commit" is a commit that contains information about
+ * how the commit was resolved, which can be used for maintaining the
+ * user's "intent" through commands like merge and rebase. For example,
+ * if a user wants to "merge HEAD" then an annotated commit is used to
+ * both contain the HEAD commit _and_ the fact that it was resolved as
+ * the HEAD ref.
* @{
*/
GIT_BEGIN_DECL
@@ -25,7 +32,7 @@ GIT_BEGIN_DECL
* The resulting git_annotated_commit must be freed with
* `git_annotated_commit_free`.
*
- * @param out pointer to store the git_annotated_commit result in
+ * @param[out] out pointer to store the git_annotated_commit result in
* @param repo repository that contains the given reference
* @param ref reference to use to lookup the git_annotated_commit
* @return 0 on success or error code
@@ -40,7 +47,7 @@ GIT_EXTERN(int) git_annotated_commit_from_ref(
* The resulting git_annotated_commit must be freed with
* `git_annotated_commit_free`.
*
- * @param out pointer to store the git_annotated_commit result in
+ * @param[out] out pointer to store the git_annotated_commit result in
* @param repo repository that contains the given commit
* @param branch_name name of the (remote) branch
* @param remote_url url of the remote
@@ -67,7 +74,7 @@ GIT_EXTERN(int) git_annotated_commit_from_fetchhead(
* most specific function (eg `git_annotated_commit_from_ref`)
* instead of this one when that data is known.
*
- * @param out pointer to store the git_annotated_commit result in
+ * @param[out] out pointer to store the git_annotated_commit result in
* @param repo repository that contains the given commit
* @param id the commit object id to lookup
* @return 0 on success or error code
@@ -84,7 +91,7 @@ GIT_EXTERN(int) git_annotated_commit_lookup(
* http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for
* information on the syntax accepted.
*
- * @param out pointer to store the git_annotated_commit result in
+ * @param[out] out pointer to store the git_annotated_commit result in
* @param repo repository that contains the given commit
* @param revspec the extended sha syntax string to use to lookup the commit
* @return 0 on success or error code
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/apply.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/apply.h
index bc637df..7ab939d 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/apply.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/apply.h
@@ -14,9 +14,12 @@
/**
* @file git2/apply.h
- * @brief Git patch application routines
+ * @brief Apply patches to the working directory or index
* @defgroup git_apply Git patch application routines
* @ingroup Git
+ *
+ * Mechanisms to apply a patch to the index, the working directory,
+ * or both.
* @{
*/
GIT_BEGIN_DECL
@@ -32,6 +35,8 @@ GIT_BEGIN_DECL
*
* @param delta The delta to be applied
* @param payload User-specified payload
+ * @return 0 if the delta is applied, < 0 if the apply process will be aborted
+ * or > 0 if the delta will not be applied.
*/
typedef int GIT_CALLBACK(git_apply_delta_cb)(
const git_diff_delta *delta,
@@ -48,27 +53,44 @@ typedef int GIT_CALLBACK(git_apply_delta_cb)(
*
* @param hunk The hunk to be applied
* @param payload User-specified payload
+ * @return 0 if the hunk is applied, < 0 if the apply process will be aborted
+ * or > 0 if the hunk will not be applied.
*/
typedef int GIT_CALLBACK(git_apply_hunk_cb)(
const git_diff_hunk *hunk,
void *payload);
-/** Flags controlling the behavior of git_apply */
+/**
+ * Flags controlling the behavior of `git_apply`.
+ *
+ * When the callback:
+ * - returns < 0, the apply process will be aborted.
+ * - returns > 0, the hunk will not be applied, but the apply process
+ * continues
+ * - returns 0, the hunk is applied, and the apply process continues.
+ */
typedef enum {
/**
* Don't actually make changes, just test that the patch applies.
* This is the equivalent of `git apply --check`.
*/
- GIT_APPLY_CHECK = (1 << 0),
+ GIT_APPLY_CHECK = (1 << 0)
} git_apply_flags_t;
/**
- * Apply options structure
+ * Apply options structure.
+ *
+ * When the callback:
+ * - returns < 0, the apply process will be aborted.
+ * - returns > 0, the hunk will not be applied, but the apply process
+ * continues
+ * - returns 0, the hunk is applied, and the apply process continues.
*
* Initialize with `GIT_APPLY_OPTIONS_INIT`. Alternatively, you can
* use `git_apply_options_init`.
*
- * @see git_apply_to_tree, git_apply
+ * @see git_apply_to_tree
+ * @see git_apply
*/
typedef struct {
unsigned int version; /**< The version */
@@ -79,16 +101,29 @@ typedef struct {
/** When applying a patch, callback that will be made per hunk. */
git_apply_hunk_cb hunk_cb;
- /** Payload passed to both delta_cb & hunk_cb. */
+ /** Payload passed to both `delta_cb` & `hunk_cb`. */
void *payload;
- /** Bitmask of git_apply_flags_t */
+ /** Bitmask of `git_apply_flags_t` */
unsigned int flags;
} git_apply_options;
+/** Current version for the `git_apply_options` structure */
#define GIT_APPLY_OPTIONS_VERSION 1
+
+/** Static constructor for `git_apply_options` */
#define GIT_APPLY_OPTIONS_INIT {GIT_APPLY_OPTIONS_VERSION}
+/**
+ * Initialize git_apply_options structure
+ *
+ * Initialize a `git_apply_options` with default values. Equivalent to creating
+ * an instance with GIT_APPLY_OPTIONS_INIT.
+ *
+ * @param opts The `git_apply_options` struct to initialize.
+ * @param version The struct version; pass `GIT_APPLY_OPTIONS_VERSION`
+ * @return 0 on success or -1 on failure.
+ */
GIT_EXTERN(int) git_apply_options_init(git_apply_options *opts, unsigned int version);
/**
@@ -127,7 +162,7 @@ typedef enum {
* Apply the patch to both the working directory and the index.
* This is the equivalent of `git apply --index`.
*/
- GIT_APPLY_LOCATION_BOTH = 2,
+ GIT_APPLY_LOCATION_BOTH = 2
} git_apply_location_t;
/**
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/attr.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/attr.h
index 3891a0c..e5216fe 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/attr.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/attr.h
@@ -12,9 +12,13 @@
/**
* @file git2/attr.h
- * @brief Git attribute management routines
+ * @brief Attribute management routines
* @defgroup git_attr Git attribute management routines
* @ingroup Git
+ *
+ * Attributes specify additional information about how git should
+ * handle particular paths - for example, they may indicate whether
+ * a particular filter is applied, like LFS or line ending conversions.
* @{
*/
GIT_BEGIN_DECL
@@ -83,7 +87,7 @@ typedef enum {
GIT_ATTR_VALUE_UNSPECIFIED = 0, /**< The attribute has been left unspecified */
GIT_ATTR_VALUE_TRUE, /**< The attribute has been set */
GIT_ATTR_VALUE_FALSE, /**< The attribute has been unset */
- GIT_ATTR_VALUE_STRING, /**< This attribute has a value */
+ GIT_ATTR_VALUE_STRING /**< This attribute has a value */
} git_attr_value_t;
/**
@@ -114,16 +118,18 @@ GIT_EXTERN(git_attr_value_t) git_attr_value(const char *attr);
* use index only for creating archives or for a bare repo (if an
* index has been specified for the bare repo).
*/
+
+/** Examine attribute in working directory, then index */
#define GIT_ATTR_CHECK_FILE_THEN_INDEX 0
+/** Examine attribute in index, then working directory */
#define GIT_ATTR_CHECK_INDEX_THEN_FILE 1
-#define GIT_ATTR_CHECK_INDEX_ONLY 2
+/** Examine attributes only in the index */
+#define GIT_ATTR_CHECK_INDEX_ONLY 2
/**
* Check attribute flags: controlling extended attribute behavior.
*
* Normally, attribute checks include looking in the /etc (or system
- * equivalent) directory for a `gitattributes` file. Passing this
- * flag will cause attribute checks to ignore that file.
* equivalent) directory for a `gitattributes` file. Passing the
* `GIT_ATTR_CHECK_NO_SYSTEM` flag will cause attribute checks to
* ignore that file.
@@ -134,8 +140,12 @@ GIT_EXTERN(git_attr_value_t) git_attr_value(const char *attr);
* Passing the `GIT_ATTR_CHECK_INCLUDE_COMMIT` flag will use attributes
* from a `.gitattributes` file in a specific commit.
*/
+
+/** Ignore system attributes */
#define GIT_ATTR_CHECK_NO_SYSTEM (1 << 2)
+/** Honor `.gitattributes` in the HEAD revision */
#define GIT_ATTR_CHECK_INCLUDE_HEAD (1 << 3)
+/** Honor `.gitattributes` in a specific commit */
#define GIT_ATTR_CHECK_INCLUDE_COMMIT (1 << 4)
/**
@@ -160,7 +170,10 @@ typedef struct {
git_oid attr_commit_id;
} git_attr_options;
+/** Current version for the `git_attr_options` structure */
#define GIT_ATTR_OPTIONS_VERSION 1
+
+/** Static constructor for `git_attr_options` */
#define GIT_ATTR_OPTIONS_INIT {GIT_ATTR_OPTIONS_VERSION}
/**
@@ -177,6 +190,7 @@ typedef struct {
* not have to exist, but if it does not, then it will be
* treated as a plain file (not a directory).
* @param name The name of the attribute to look up.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_attr_get(
const char **value_out,
@@ -199,6 +213,7 @@ GIT_EXTERN(int) git_attr_get(
* not have to exist, but if it does not, then it will be
* treated as a plain file (not a directory).
* @param name The name of the attribute to look up.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_attr_get_ext(
const char **value_out,
@@ -235,6 +250,7 @@ GIT_EXTERN(int) git_attr_get_ext(
* it will be treated as a plain file (i.e. not a directory).
* @param num_attr The number of attributes being looked up
* @param names An array of num_attr strings containing attribute names.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_attr_get_many(
const char **values_out,
@@ -259,6 +275,7 @@ GIT_EXTERN(int) git_attr_get_many(
* it will be treated as a plain file (i.e. not a directory).
* @param num_attr The number of attributes being looked up
* @param names An array of num_attr strings containing attribute names.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_attr_get_many_ext(
const char **values_out,
@@ -344,11 +361,16 @@ GIT_EXTERN(int) git_attr_cache_flush(
* Add a macro definition.
*
* Macros will automatically be loaded from the top level `.gitattributes`
- * file of the repository (plus the build-in "binary" macro). This
+ * file of the repository (plus the built-in "binary" macro). This
* function allows you to add others. For example, to add the default
* macro, you would call:
*
* git_attr_add_macro(repo, "binary", "-diff -crlf");
+ *
+ * @param repo The repository to add the macro in.
+ * @param name The name of the macro.
+ * @param values The value for the macro.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_attr_add_macro(
git_repository *repo,
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/blame.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/blame.h
index d193ce1..f3e6692 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/blame.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/blame.h
@@ -13,9 +13,14 @@
/**
* @file git2/blame.h
- * @brief Git blame routines
+ * @brief Specify a file's most recent changes per-line
* @defgroup git_blame Git blame routines
* @ingroup Git
+ *
+ * Producing a "blame" (or "annotated history") decorates individual
+ * lines in a file with the commit that introduced that particular line
+ * of changes. This can be useful to indicate when and why a particular
+ * change was made.
* @{
*/
GIT_BEGIN_DECL
@@ -73,7 +78,7 @@ typedef enum {
GIT_BLAME_USE_MAILMAP = (1<<5),
/** Ignore whitespace differences */
- GIT_BLAME_IGNORE_WHITESPACE = (1<<6),
+ GIT_BLAME_IGNORE_WHITESPACE = (1<<6)
} git_blame_flag_t;
/**
@@ -87,7 +92,7 @@ typedef struct git_blame_options {
unsigned int version;
/** A combination of `git_blame_flag_t` */
- uint32_t flags;
+ unsigned int flags;
/**
* The lower bound on the number of alphanumeric characters that
@@ -122,7 +127,10 @@ typedef struct git_blame_options {
size_t max_line;
} git_blame_options;
+/** Current version for the `git_blame_options` structure */
#define GIT_BLAME_OPTIONS_VERSION 1
+
+/** Static constructor for `git_blame_options` */
#define GIT_BLAME_OPTIONS_INIT {GIT_BLAME_OPTIONS_VERSION}
/**
@@ -165,6 +173,13 @@ typedef struct git_blame_hunk {
*/
git_signature *final_signature;
+ /**
+ * The committer of `final_commit_id`. If `GIT_BLAME_USE_MAILMAP` has
+ * been specified, it will contain the canonical real name and email
+ * address.
+ */
+ git_signature *final_committer;
+
/**
* The OID of the commit where this hunk was found.
* This will usually be the same as `final_commit_id`, except when
@@ -190,6 +205,18 @@ typedef struct git_blame_hunk {
*/
git_signature *orig_signature;
+ /**
+ * The committer of `orig_commit_id`. If `GIT_BLAME_USE_MAILMAP` has
+ * been specified, it will contain the canonical real name and email
+ * address.
+ */
+ git_signature *orig_committer;
+
+ /*
+ * The summary of the commit.
+ */
+ const char *summary;
+
/**
* The 1 iff the hunk has been tracked to a boundary commit (the root,
* or the commit specified in git_blame_options.oldest_commit)
@@ -197,13 +224,75 @@ typedef struct git_blame_hunk {
char boundary;
} git_blame_hunk;
+/**
+ * Structure that represents a line in a blamed file.
+ */
+typedef struct git_blame_line {
+ const char *ptr;
+ size_t len;
+} git_blame_line;
/** Opaque structure to hold blame results */
typedef struct git_blame git_blame;
+/**
+ * Gets the number of lines that exist in the blame structure.
+ *
+ * @param blame The blame structure to query.
+ * @return The number of line.
+ */
+GIT_EXTERN(size_t) git_blame_linecount(git_blame *blame);
+
/**
* Gets the number of hunks that exist in the blame structure.
+ *
+ * @param blame The blame structure to query.
+ * @return The number of hunks.
*/
+GIT_EXTERN(size_t) git_blame_hunkcount(git_blame *blame);
+
+/**
+ * Gets the blame hunk at the given index.
+ *
+ * @param blame the blame structure to query
+ * @param index index of the hunk to retrieve
+ * @return the hunk at the given index, or NULL on error
+ */
+GIT_EXTERN(const git_blame_hunk *) git_blame_hunk_byindex(
+ git_blame *blame,
+ size_t index);
+
+/**
+ * Gets the hunk that relates to the given line number in the newest
+ * commit.
+ *
+ * @param blame the blame structure to query
+ * @param lineno the (1-based) line number to find a hunk for
+ * @return the hunk that contains the given line, or NULL on error
+ */
+GIT_EXTERN(const git_blame_hunk *) git_blame_hunk_byline(
+ git_blame *blame,
+ size_t lineno);
+
+/**
+ * Gets the information about the line in the blame.
+ *
+ * @param blame the blame structure to query
+ * @param idx the (1-based) line number
+ * @return the blamed line, or NULL on error
+ */
+GIT_EXTERN(const git_blame_line *) git_blame_line_byindex(
+ git_blame *blame,
+ size_t idx);
+
+#ifndef GIT_DEPRECATE_HARD
+/**
+ * Gets the number of hunks that exist in the blame structure.
+ *
+ * @param blame The blame structure to query.
+ * @return The number of hunks.
+ */
+
GIT_EXTERN(uint32_t) git_blame_get_hunk_count(git_blame *blame);
/**
@@ -213,9 +302,9 @@ GIT_EXTERN(uint32_t) git_blame_get_hunk_count(git_blame *blame);
* @param index index of the hunk to retrieve
* @return the hunk at the given index, or NULL on error
*/
-GIT_EXTERN(const git_blame_hunk*) git_blame_get_hunk_byindex(
- git_blame *blame,
- uint32_t index);
+GIT_EXTERN(const git_blame_hunk *) git_blame_get_hunk_byindex(
+ git_blame *blame,
+ uint32_t index);
/**
* Gets the hunk that relates to the given line number in the newest commit.
@@ -224,39 +313,58 @@ GIT_EXTERN(const git_blame_hunk*) git_blame_get_hunk_byindex(
* @param lineno the (1-based) line number to find a hunk for
* @return the hunk that contains the given line, or NULL on error
*/
-GIT_EXTERN(const git_blame_hunk*) git_blame_get_hunk_byline(
- git_blame *blame,
- size_t lineno);
+GIT_EXTERN(const git_blame_hunk *) git_blame_get_hunk_byline(
+ git_blame *blame,
+ size_t lineno);
+#endif
/**
- * Get the blame for a single file.
+ * Get the blame for a single file in the repository.
*
* @param out pointer that will receive the blame object
* @param repo repository whose history is to be walked
* @param path path to file to consider
- * @param options options for the blame operation. If NULL, this is treated as
- * though GIT_BLAME_OPTIONS_INIT were passed.
- * @return 0 on success, or an error code. (use git_error_last for information
- * about the error.)
+ * @param options options for the blame operation or NULL
+ * @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_blame_file(
- git_blame **out,
- git_repository *repo,
- const char *path,
- git_blame_options *options);
+ git_blame **out,
+ git_repository *repo,
+ const char *path,
+ git_blame_options *options);
+/**
+ * Get the blame for a single file in the repository, using the specified
+ * buffer contents as the uncommitted changes of the file (the working
+ * directory contents).
+ *
+ * @param out pointer that will receive the blame object
+ * @param repo repository whose history is to be walked
+ * @param path path to file to consider
+ * @param contents the uncommitted changes
+ * @param contents_len the length of the changes buffer
+ * @param options options for the blame operation or NULL
+ * @return 0 on success, or an error code
+ */
+GIT_EXTERN(int) git_blame_file_from_buffer(
+ git_blame **out,
+ git_repository *repo,
+ const char *path,
+ const char *contents,
+ size_t contents_len,
+ git_blame_options *options);
/**
- * Get blame data for a file that has been modified in memory. The `reference`
- * parameter is a pre-calculated blame for the in-odb history of the file. This
- * means that once a file blame is completed (which can be expensive), updating
- * the buffer blame is very fast.
+ * Get blame data for a file that has been modified in memory. The `blame`
+ * parameter is a pre-calculated blame for the in-odb history of the file.
+ * This means that once a file blame is completed (which can be expensive),
+ * updating the buffer blame is very fast.
*
- * Lines that differ between the buffer and the committed version are marked as
- * having a zero OID for their final_commit_id.
+ * Lines that differ between the buffer and the committed version are
+ * marked as having a zero OID for their final_commit_id.
*
* @param out pointer that will receive the resulting blame data
- * @param reference cached blame from the history of the file (usually the output
+ * @param base cached blame from the history of the file (usually the output
* from git_blame_file)
* @param buffer the (possibly) modified contents of the file
* @param buffer_len number of valid bytes in the buffer
@@ -264,10 +372,10 @@ GIT_EXTERN(int) git_blame_file(
* about the error)
*/
GIT_EXTERN(int) git_blame_buffer(
- git_blame **out,
- git_blame *reference,
- const char *buffer,
- size_t buffer_len);
+ git_blame **out,
+ git_blame *base,
+ const char *buffer,
+ size_t buffer_len);
/**
* Free memory allocated by git_blame_file or git_blame_buffer.
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/blob.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/blob.h
index 8fc7391..0ed1685 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/blob.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/blob.h
@@ -15,9 +15,13 @@
/**
* @file git2/blob.h
- * @brief Git blob load and write routines
+ * @brief A blob represents a file in a git repository.
* @defgroup git_blob Git blob load and write routines
* @ingroup Git
+ *
+ * A blob represents a file in a git repository. This is the raw data
+ * as it is stored in the repository itself. Blobs may be "filtered"
+ * to produce the on-disk content.
* @{
*/
GIT_BEGIN_DECL
@@ -25,12 +29,15 @@ GIT_BEGIN_DECL
/**
* Lookup a blob object from a repository.
*
- * @param blob pointer to the looked up blob
+ * @param[out] blob pointer to the looked up blob
* @param repo the repo to use when locating the blob.
* @param id identity of the blob to locate.
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_blob_lookup(git_blob **blob, git_repository *repo, const git_oid *id);
+GIT_EXTERN(int) git_blob_lookup(
+ git_blob **blob,
+ git_repository *repo,
+ const git_oid *id);
/**
* Lookup a blob object from a repository,
@@ -38,7 +45,7 @@ GIT_EXTERN(int) git_blob_lookup(git_blob **blob, git_repository *repo, const git
*
* @see git_object_lookup_prefix
*
- * @param blob pointer to the looked up blob
+ * @param[out] blob pointer to the looked up blob
* @param repo the repo to use when locating the blob.
* @param id identity of the blob to locate.
* @param len the length of the short identifier
@@ -84,7 +91,7 @@ GIT_EXTERN(git_repository *) git_blob_owner(const git_blob *blob);
* time.
*
* @param blob pointer to the blob
- * @return the pointer, or NULL on error
+ * @return @type `unsigned char *` the pointer, or NULL on error
*/
GIT_EXTERN(const void *) git_blob_rawcontent(const git_blob *blob);
@@ -92,12 +99,14 @@ GIT_EXTERN(const void *) git_blob_rawcontent(const git_blob *blob);
* Get the size in bytes of the contents of a blob
*
* @param blob pointer to the blob
- * @return size on bytes
+ * @return size in bytes
*/
GIT_EXTERN(git_object_size_t) git_blob_rawsize(const git_blob *blob);
/**
* Flags to control the functionality of `git_blob_filter`.
+ *
+ * @flags
*/
typedef enum {
/** When set, filters will not be applied to binary files. */
@@ -119,7 +128,7 @@ typedef enum {
* When set, filters will be loaded from a `.gitattributes` file
* in the specified commit.
*/
- GIT_BLOB_FILTER_ATTRIBUTES_FROM_COMMIT = (1 << 3),
+ GIT_BLOB_FILTER_ATTRIBUTES_FROM_COMMIT = (1 << 3)
} git_blob_filter_flag_t;
/**
@@ -128,16 +137,34 @@ typedef enum {
* Initialize with `GIT_BLOB_FILTER_OPTIONS_INIT`. Alternatively, you can
* use `git_blob_filter_options_init`.
*
+ * @options[version] GIT_BLOB_FILTER_OPTIONS_VERSION
+ * @options[init_macro] GIT_BLOB_FILTER_OPTIONS_INIT
+ * @options[init_function] git_blob_filter_options_init
*/
typedef struct {
+ /** Version number of the options structure. */
int version;
- /** Flags to control the filtering process, see `git_blob_filter_flag_t` above */
+ /**
+ * Flags to control the filtering process, see `git_blob_filter_flag_t` above.
+ *
+ * @type[flags] git_blob_filter_flag_t
+ */
uint32_t flags;
#ifdef GIT_DEPRECATE_HARD
+ /**
+ * Unused and reserved for ABI compatibility.
+ *
+ * @deprecated this value should not be set
+ */
void *reserved;
#else
+ /**
+ * This value is unused and reserved for API compatibility.
+ *
+ * @deprecated this value should not be set
+ */
git_oid *commit_id;
#endif
@@ -148,8 +175,18 @@ typedef struct {
git_oid attr_commit_id;
} git_blob_filter_options;
+/**
+ * The current version number for the `git_blob_filter_options` structure ABI.
+ */
#define GIT_BLOB_FILTER_OPTIONS_VERSION 1
-#define GIT_BLOB_FILTER_OPTIONS_INIT {GIT_BLOB_FILTER_OPTIONS_VERSION, GIT_BLOB_FILTER_CHECK_FOR_BINARY}
+
+/**
+ * The default values for `git_blob_filter_options`.
+ */
+#define GIT_BLOB_FILTER_OPTIONS_INIT { \
+ GIT_BLOB_FILTER_OPTIONS_VERSION, \
+ GIT_BLOB_FILTER_CHECK_FOR_BINARY \
+ }
/**
* Initialize git_blob_filter_options structure
@@ -158,10 +195,12 @@ typedef struct {
* to creating an instance with `GIT_BLOB_FILTER_OPTIONS_INIT`.
*
* @param opts The `git_blob_filter_options` struct to initialize.
- * @param version The struct version; pass `GIT_BLOB_FILTER_OPTIONS_VERSION`.
+ * @param version The struct version; pass GIT_BLOB_FILTER_OPTIONS_VERSION
* @return Zero on success; -1 on failure.
*/
-GIT_EXTERN(int) git_blob_filter_options_init(git_blob_filter_options *opts, unsigned int version);
+GIT_EXTERN(int) git_blob_filter_options_init(
+ git_blob_filter_options *opts,
+ unsigned int version);
/**
* Get a buffer with the filtered content of a blob.
@@ -171,7 +210,7 @@ GIT_EXTERN(int) git_blob_filter_options_init(git_blob_filter_options *opts, unsi
* CRLF filtering or other types of changes depending on the file
* attributes set for the blob and the content detected in it.
*
- * The output is written into a `git_buf` which the caller must free
+ * The output is written into a `git_buf` which the caller must dispose
* when done (via `git_buf_dispose`).
*
* If no filters need to be applied, then the `out` buffer will just
@@ -183,7 +222,7 @@ GIT_EXTERN(int) git_blob_filter_options_init(git_blob_filter_options *opts, unsi
* @param blob Pointer to the blob
* @param as_path Path used for file attribute lookups, etc.
* @param opts Options to use for filtering the blob
- * @return 0 on success or an error code
+ * @return @type[enum] git_error_code 0 on success or an error code
*/
GIT_EXTERN(int) git_blob_filter(
git_buf *out,
@@ -192,10 +231,10 @@ GIT_EXTERN(int) git_blob_filter(
git_blob_filter_options *opts);
/**
- * Read a file from the working folder of a repository
- * and write it to the Object Database as a loose blob
+ * Read a file from the working folder of a repository and write it
+ * to the object database.
*
- * @param id return the id of the written blob
+ * @param[out] id return the id of the written blob
* @param repo repository where the blob will be written.
* this repository cannot be bare
* @param relative_path file from which the blob will be created,
@@ -205,19 +244,23 @@ GIT_EXTERN(int) git_blob_filter(
GIT_EXTERN(int) git_blob_create_from_workdir(git_oid *id, git_repository *repo, const char *relative_path);
/**
- * Read a file from the filesystem and write its content
- * to the Object Database as a loose blob
+ * Read a file from the filesystem (not necessarily inside the
+ * working folder of the repository) and write it to the object
+ * database.
*
- * @param id return the id of the written blob
+ * @param[out] id return the id of the written blob
* @param repo repository where the blob will be written.
* this repository can be bare or not
* @param path file from which the blob will be created
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_blob_create_from_disk(git_oid *id, git_repository *repo, const char *path);
+GIT_EXTERN(int) git_blob_create_from_disk(
+ git_oid *id,
+ git_repository *repo,
+ const char *path);
/**
- * Create a stream to write a new blob into the object db
+ * Create a stream to write a new blob into the object database.
*
* This function may need to buffer the data on disk and will in
* general not be the right choice if you know the size of the data
@@ -234,7 +277,7 @@ GIT_EXTERN(int) git_blob_create_from_disk(git_oid *id, git_repository *repo, con
* what git filters should be applied to the object before it is written
* to the object database.
*
- * @param out the stream into which to write
+ * @param[out] out the stream into which to write
* @param repo Repository where the blob will be written.
* This repository can be bare or not.
* @param hintpath If not NULL, will be used to select data filters
@@ -247,11 +290,11 @@ GIT_EXTERN(int) git_blob_create_from_stream(
const char *hintpath);
/**
- * Close the stream and write the blob to the object db
+ * Close the stream and finalize writing the blob to the object database.
*
* The stream will be closed and freed.
*
- * @param out the id of the new blob
+ * @param[out] out the id of the new blob
* @param stream the stream to close
* @return 0 or an error code
*/
@@ -260,9 +303,9 @@ GIT_EXTERN(int) git_blob_create_from_stream_commit(
git_writestream *stream);
/**
- * Write an in-memory buffer to the ODB as a blob
+ * Write an in-memory buffer to the object database as a blob.
*
- * @param id return the id of the written blob
+ * @param[out] id return the id of the written blob
* @param repo repository where the blob will be written
* @param buffer data to be written into the blob
* @param len length of the data
@@ -272,24 +315,37 @@ GIT_EXTERN(int) git_blob_create_from_buffer(
git_oid *id, git_repository *repo, const void *buffer, size_t len);
/**
- * Determine if the blob content is most certainly binary or not.
+ * Determine if the blob content is most likely binary or not.
*
* The heuristic used to guess if a file is binary is taken from core git:
* Searching for NUL bytes and looking for a reasonable ratio of printable
* to non-printable characters among the first 8000 bytes.
*
* @param blob The blob which content should be analyzed
- * @return 1 if the content of the blob is detected
+ * @return @type bool 1 if the content of the blob is detected
* as binary; 0 otherwise.
*/
GIT_EXTERN(int) git_blob_is_binary(const git_blob *blob);
+/**
+ * Determine if the given content is most certainly binary or not;
+ * this is the same mechanism used by `git_blob_is_binary` but only
+ * looking at raw data.
+ *
+ * @param data The blob data which content should be analyzed
+ * @param len The length of the data
+ * @return 1 if the content of the blob is detected
+ * as binary; 0 otherwise.
+ */
+GIT_EXTERN(int) git_blob_data_is_binary(const char *data, size_t len);
+
/**
* Create an in-memory copy of a blob. The copy must be explicitly
* free'd or it will leak.
*
- * @param out Pointer to store the copy of the object
+ * @param[out] out Pointer to store the copy of the object
* @param source Original object to copy
+ * @return 0.
*/
GIT_EXTERN(int) git_blob_dup(git_blob **out, git_blob *source);
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/branch.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/branch.h
index 24ea7f7..56d737d 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/branch.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/branch.h
@@ -13,9 +13,15 @@
/**
* @file git2/branch.h
- * @brief Git branch parsing routines
+ * @brief Branch creation and handling
* @defgroup git_branch Git branch management
* @ingroup Git
+ *
+ * A branch is a specific type of reference, at any particular time,
+ * a git working directory typically is said to have a branch "checked out",
+ * meaning that commits that are created will be made "on" a branch.
+ * This occurs by updating the branch reference to point to the new
+ * commit. The checked out branch is indicated by the `HEAD` meta-ref.
* @{
*/
GIT_BEGIN_DECL
@@ -33,16 +39,13 @@ GIT_BEGIN_DECL
* See `git_tag_create()` for rules about valid names.
*
* @param out Pointer where to store the underlying reference.
- *
+ * @param repo the repository to create the branch in.
* @param branch_name Name for the branch; this name is
- * validated for consistency. It should also not conflict with
- * an already existing branch name.
- *
+ * validated for consistency. It should also not conflict with
+ * an already existing branch name.
* @param target Commit to which this branch should point. This object
- * must belong to the given `repo`.
- *
+ * must belong to the given `repo`.
* @param force Overwrite existing branch.
- *
* @return 0, GIT_EINVALIDSPEC or an error code.
* A proper reference is written in the refs/heads namespace
* pointing to the provided target commit.
@@ -61,15 +64,21 @@ GIT_EXTERN(int) git_branch_create(
* commit, which lets you specify which extended sha syntax string was
* specified by a user, allowing for more exact reflog messages.
*
- * See the documentation for `git_branch_create()`.
- *
- * @see git_branch_create
+ * @param ref_out Pointer where to store the underlying reference.
+ * @param repo the repository to create the branch in.
+ * @param branch_name Name for the branch; this name is
+ * validated for consistency. It should also not conflict with
+ * an already existing branch name.
+ * @param target Annotated commit to which this branch should point. This
+ * object must belong to the given `repo`.
+ * @param force Overwrite existing branch.
+ * @return 0, GIT_EINVALIDSPEC or an error code.
*/
GIT_EXTERN(int) git_branch_create_from_annotated(
git_reference **ref_out,
- git_repository *repository,
+ git_repository *repo,
const char *branch_name,
- const git_annotated_commit *commit,
+ const git_annotated_commit *target,
int force);
/**
@@ -127,8 +136,8 @@ GIT_EXTERN(void) git_branch_iterator_free(git_branch_iterator *iter);
* See `git_tag_create()` for rules about valid names.
*
* Note that if the move succeeds, the old reference object will not
- + be valid anymore, and should be freed immediately by the user using
- + `git_reference_free()`.
+ * be valid anymore, and should be freed immediately by the user using
+ * `git_reference_free()`.
*
* @param out New reference object for the updated name.
*
@@ -220,7 +229,7 @@ GIT_EXTERN(int) git_branch_upstream(
* @param branch the branch to configure
* @param branch_name remote-tracking or local branch to set as upstream.
*
- * @return 0 on success; GIT_ENOTFOUND if there's no branch named `branch_name`
+ * @return @type git_error_t 0 on success; GIT_ENOTFOUND if there's no branch named `branch_name`
* or an error code
*/
GIT_EXTERN(int) git_branch_set_upstream(
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/buffer.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/buffer.h
index 926f133..3fe4f85 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/buffer.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/buffer.h
@@ -11,9 +11,12 @@
/**
* @file git2/buffer.h
- * @brief Buffer export structure
- *
+ * @brief A data structure to return data to callers
* @ingroup Git
+ *
+ * The `git_buf` buffer is used to return arbitrary data - typically
+ * strings - to callers. Callers are responsible for freeing the memory
+ * in a buffer with the `git_buf_dispose` function.
* @{
*/
GIT_BEGIN_DECL
@@ -23,112 +26,51 @@ GIT_BEGIN_DECL
*
* Sometimes libgit2 wants to return an allocated data buffer to the
* caller and have the caller take responsibility for freeing that memory.
- * This can be awkward if the caller does not have easy access to the same
- * allocation functions that libgit2 is using. In those cases, libgit2
- * will fill in a `git_buf` and the caller can use `git_buf_dispose()` to
- * release it when they are done.
- *
- * A `git_buf` may also be used for the caller to pass in a reference to
- * a block of memory they hold. In this case, libgit2 will not resize or
- * free the memory, but will read from it as needed.
+ * To make ownership clear in these cases, libgit2 uses `git_buf` to
+ * return this data. Callers should use `git_buf_dispose()` to release
+ * the memory when they are done.
*
- * Some APIs may occasionally do something slightly unusual with a buffer,
- * such as setting `ptr` to a value that was passed in by the user. In
- * those cases, the behavior will be clearly documented by the API.
+ * A `git_buf` contains a pointer to a NUL-terminated C string, and
+ * the length of the string (not including the NUL terminator).
*/
typedef struct {
/**
- * The buffer contents.
- *
- * `ptr` points to the start of the allocated memory. If it is NULL,
- * then the `git_buf` is considered empty and libgit2 will feel free
- * to overwrite it with new data.
+ * The buffer contents. `ptr` points to the start of the buffer
+ * being returned. The buffer's length (in bytes) is specified
+ * by the `size` member of the structure, and contains a NUL
+ * terminator at position `(size + 1)`.
*/
- char *ptr;
+ char *ptr;
/**
- * `asize` holds the known total amount of allocated memory if the `ptr`
- * was allocated by libgit2. It may be larger than `size`. If `ptr`
- * was not allocated by libgit2 and should not be resized and/or freed,
- * then `asize` will be set to zero.
+ * This field is reserved and unused.
*/
- size_t asize;
+ size_t reserved;
/**
- * `size` holds the size (in bytes) of the data that is actually used.
+ * The length (in bytes) of the buffer pointed to by `ptr`,
+ * not including a NUL terminator.
*/
size_t size;
} git_buf;
/**
- * Static initializer for git_buf from static buffer
+ * Use to initialize a `git_buf` before passing it to a function that
+ * will populate it.
*/
-#define GIT_BUF_INIT_CONST(STR,LEN) { (char *)(STR), 0, (size_t)(LEN) }
+#define GIT_BUF_INIT { NULL, 0, 0 }
/**
* Free the memory referred to by the git_buf.
*
* Note that this does not free the `git_buf` itself, just the memory
- * pointed to by `buffer->ptr`. This will not free the memory if it looks
- * like it was not allocated internally, but it will clear the buffer back
- * to the empty state.
+ * pointed to by `buffer->ptr`.
*
* @param buffer The buffer to deallocate
*/
GIT_EXTERN(void) git_buf_dispose(git_buf *buffer);
-/**
- * Resize the buffer allocation to make more space.
- *
- * This will attempt to grow the buffer to accommodate the target size.
- *
- * If the buffer refers to memory that was not allocated by libgit2 (i.e.
- * the `asize` field is zero), then `ptr` will be replaced with a newly
- * allocated block of data. Be careful so that memory allocated by the
- * caller is not lost. As a special variant, if you pass `target_size` as
- * 0 and the memory is not allocated by libgit2, this will allocate a new
- * buffer of size `size` and copy the external data into it.
- *
- * Currently, this will never shrink a buffer, only expand it.
- *
- * If the allocation fails, this will return an error and the buffer will be
- * marked as invalid for future operations, invaliding the contents.
- *
- * @param buffer The buffer to be resized; may or may not be allocated yet
- * @param target_size The desired available size
- * @return 0 on success, -1 on allocation failure
- */
-GIT_EXTERN(int) git_buf_grow(git_buf *buffer, size_t target_size);
-
-/**
- * Set buffer to a copy of some raw data.
- *
- * @param buffer The buffer to set
- * @param data The data to copy into the buffer
- * @param datalen The length of the data to copy into the buffer
- * @return 0 on success, -1 on allocation failure
- */
-GIT_EXTERN(int) git_buf_set(
- git_buf *buffer, const void *data, size_t datalen);
-
-/**
-* Check quickly if buffer looks like it contains binary data
-*
-* @param buf Buffer to check
-* @return 1 if buffer looks like non-text data
-*/
-GIT_EXTERN(int) git_buf_is_binary(const git_buf *buf);
-
-/**
-* Check quickly if buffer contains a NUL byte
-*
-* @param buf Buffer to check
-* @return 1 if buffer contains a NUL byte
-*/
-GIT_EXTERN(int) git_buf_contains_nul(const git_buf *buf);
-
-GIT_END_DECL
-
/** @} */
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/cert.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/cert.h
index 0ed38ff..7b91b63 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/cert.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/cert.h
@@ -12,7 +12,7 @@
/**
* @file git2/cert.h
- * @brief Git certificate objects
+ * @brief TLS and SSH certificate handling
* @defgroup git_cert Certificate objects
* @ingroup Git
* @{
@@ -44,7 +44,7 @@ typedef enum git_cert_t {
* information about the certificate. This is used when using
* curl.
*/
- GIT_CERT_STRARRAY,
+ GIT_CERT_STRARRAY
} git_cert_t;
/**
@@ -82,7 +82,7 @@ typedef enum {
/** SHA-256 is available */
GIT_CERT_SSH_SHA256 = (1 << 2),
/** Raw hostkey is available */
- GIT_CERT_SSH_RAW = (1 << 3),
+ GIT_CERT_SSH_RAW = (1 << 3)
} git_cert_ssh_t;
typedef enum {
@@ -169,4 +169,5 @@ typedef struct {
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/checkout.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/checkout.h
index c7aeee4..bdea928 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/checkout.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/checkout.h
@@ -13,9 +13,13 @@
/**
* @file git2/checkout.h
- * @brief Git checkout routines
+ * @brief Update the contents of the working directory
* @defgroup git_checkout Git checkout routines
* @ingroup Git
+ *
+ * Update the contents of the working directory, or a subset of the
+ * files in the working directory, to point to the data in the index
+ * or a specific commit.
* @{
*/
GIT_BEGIN_DECL
@@ -31,17 +35,11 @@ GIT_BEGIN_DECL
* check out, the "baseline" tree of what was checked out previously, the
* working directory for actual files, and the index for staged changes.
*
- * You give checkout one of three strategies for update:
- *
- * - `GIT_CHECKOUT_NONE` is a dry-run strategy that checks for conflicts,
- * etc., but doesn't make any actual changes.
+ * You give checkout one of two strategies for update:
*
- * - `GIT_CHECKOUT_FORCE` is at the opposite extreme, taking any action to
- * make the working directory match the target (including potentially
- * discarding modified files).
- *
- * - `GIT_CHECKOUT_SAFE` is between these two options, it will only make
- * modifications that will not lose changes.
+ * - `GIT_CHECKOUT_SAFE` is the default, and similar to git's default,
+ * which will make modifications that will not lose changes in the
+ * working directory.
*
* | target == baseline | target != baseline |
* ---------------------|-----------------------|----------------------|
@@ -55,6 +53,10 @@ GIT_BEGIN_DECL
* baseline present | | |
* ---------------------|-----------------------|----------------------|
*
+ * - `GIT_CHECKOUT_FORCE` will take any action to make the working
+ * directory match the target (including potentially discarding
+ * modified files).
+ *
* To emulate `git checkout`, use `GIT_CHECKOUT_SAFE` with a checkout
* notification callback (see below) that displays information about dirty
* files. The default behavior will cancel checkout on conflicts.
@@ -69,6 +71,9 @@ GIT_BEGIN_DECL
*
* There are some additional flags to modify the behavior of checkout:
*
+ * - `GIT_CHECKOUT_DRY_RUN` is a dry-run strategy that checks for conflicts,
+ * etc., but doesn't make any actual changes.
+ *
* - GIT_CHECKOUT_ALLOW_CONFLICTS makes SAFE mode apply safe file updates
* even if there are conflicts (instead of cancelling the checkout).
*
@@ -102,29 +107,24 @@ GIT_BEGIN_DECL
* files or folders that fold to the same name on case insensitive
* filesystems. This can cause files to retain their existing names
* and write through existing symbolic links.
+ *
+ * @flags
*/
typedef enum {
- GIT_CHECKOUT_NONE = 0, /**< default is a dry run, no actual updates */
-
/**
* Allow safe updates that cannot overwrite uncommitted data.
- * If the uncommitted changes don't conflict with the checked out files,
- * the checkout will still proceed, leaving the changes intact.
- *
- * Mutually exclusive with GIT_CHECKOUT_FORCE.
- * GIT_CHECKOUT_FORCE takes precedence over GIT_CHECKOUT_SAFE.
+ * If the uncommitted changes don't conflict with the checked
+ * out files, the checkout will still proceed, leaving the
+ * changes intact.
*/
- GIT_CHECKOUT_SAFE = (1u << 0),
+ GIT_CHECKOUT_SAFE = 0,
/**
- * Allow all updates to force working directory to look like index.
- *
- * Mutually exclusive with GIT_CHECKOUT_SAFE.
- * GIT_CHECKOUT_FORCE takes precedence over GIT_CHECKOUT_SAFE.
+ * Allow all updates to force working directory to look like
+ * the index, potentially losing data in the process.
*/
GIT_CHECKOUT_FORCE = (1u << 1),
-
/** Allow checkout to recreate missing files */
GIT_CHECKOUT_RECREATE_MISSING = (1u << 2),
@@ -178,20 +178,31 @@ typedef enum {
GIT_CHECKOUT_DONT_WRITE_INDEX = (1u << 23),
/**
- * Show what would be done by a checkout. Stop after sending
- * notifications; don't update the working directory or index.
+ * Perform a "dry run", reporting what _would_ be done but
+ * without actually making changes in the working directory
+ * or the index.
*/
GIT_CHECKOUT_DRY_RUN = (1u << 24),
-
+
+ /** Include common ancestor data in zdiff3 format for conflicts */
+ GIT_CHECKOUT_CONFLICT_STYLE_ZDIFF3 = (1u << 25),
+
/**
+ * Do not do a checkout and do not fire callbacks; this is primarily
+ * useful only for internal functions that will perform the
+ * checkout themselves but need to pass checkout options into
+ * another function, for example, `git_clone`.
+ */
+ GIT_CHECKOUT_NONE = (1u << 30),
+
+ /*
* THE FOLLOWING OPTIONS ARE NOT YET IMPLEMENTED
*/
/** Recursively checkout submodules with same options (NOT IMPLEMENTED) */
GIT_CHECKOUT_UPDATE_SUBMODULES = (1u << 16),
/** Recursively checkout submodules if HEAD moved in super repo (NOT IMPLEMENTED) */
- GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED = (1u << 17),
-
+ GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED = (1u << 17)
} git_checkout_strategy_t;
/**
@@ -207,6 +218,8 @@ typedef enum {
* Notification callbacks are made prior to modifying any files on disk,
* so canceling on any notification will still happen prior to any files
* being modified.
+ *
+ * @flags
*/
typedef enum {
GIT_CHECKOUT_NOTIFY_NONE = 0,
@@ -248,7 +261,17 @@ typedef struct {
size_t chmod_calls;
} git_checkout_perfdata;
-/** Checkout notification callback function */
+/**
+ * Checkout notification callback function.
+ *
+ * @param why the notification reason
+ * @param path the path to the file being checked out
+ * @param baseline the baseline's diff file information
+ * @param target the checkout target diff file information
+ * @param workdir the working directory diff file information
+ * @param payload the user-supplied callback payload
+ * @return 0 on success, or an error code
+ */
typedef int GIT_CALLBACK(git_checkout_notify_cb)(
git_checkout_notify_t why,
const char *path,
@@ -257,14 +280,26 @@ typedef int GIT_CALLBACK(git_checkout_notify_cb)(
const git_diff_file *workdir,
void *payload);
-/** Checkout progress notification function */
+/**
+ * Checkout progress notification function.
+ *
+ * @param path the path to the file being checked out
+ * @param completed_steps number of checkout steps completed
+ * @param total_steps number of total steps in the checkout process
+ * @param payload the user-supplied callback payload
+ */
typedef void GIT_CALLBACK(git_checkout_progress_cb)(
const char *path,
size_t completed_steps,
size_t total_steps,
void *payload);
-/** Checkout perfdata notification function */
+/**
+ * Checkout performance data reporting function.
+ *
+ * @param perfdata the performance data for the checkout
+ * @param payload the user-supplied callback payload
+ */
typedef void GIT_CALLBACK(git_checkout_perfdata_cb)(
const git_checkout_perfdata *perfdata,
void *payload);
@@ -275,10 +310,18 @@ typedef void GIT_CALLBACK(git_checkout_perfdata_cb)(
* Initialize with `GIT_CHECKOUT_OPTIONS_INIT`. Alternatively, you can
* use `git_checkout_options_init`.
*
+ * @options[version] GIT_CHECKOUT_OPTIONS_VERSION
+ * @options[init_macro] GIT_CHECKOUT_OPTIONS_INIT
+ * @options[init_function] git_checkout_options_init
*/
typedef struct git_checkout_options {
unsigned int version; /**< The version */
+ /**
+ * Checkout strategy. Default is a safe checkout.
+ *
+ * @type[flags] git_checkout_strategy_t
+ */
unsigned int checkout_strategy; /**< default will be a safe checkout */
int disable_filters; /**< don't apply filters like CRLF conversion */
@@ -286,7 +329,13 @@ typedef struct git_checkout_options {
unsigned int file_mode; /**< default is 0644 or 0755 as dictated by blob */
int file_open_flags; /**< default is O_CREAT | O_TRUNC | O_WRONLY */
- unsigned int notify_flags; /**< see `git_checkout_notify_t` above */
+ /**
+ * Checkout notification flags specify what operations the notify
+ * callback is invoked for.
+ *
+ * @type[flags] git_checkout_notify_t
+ */
+ unsigned int notify_flags;
/**
* Optional callback to get notifications on specific file states.
@@ -341,8 +390,12 @@ typedef struct git_checkout_options {
void *perfdata_payload;
} git_checkout_options;
+
+/** Current version for the `git_checkout_options` structure */
#define GIT_CHECKOUT_OPTIONS_VERSION 1
-#define GIT_CHECKOUT_OPTIONS_INIT {GIT_CHECKOUT_OPTIONS_VERSION, GIT_CHECKOUT_SAFE}
+
+/** Static constructor for `git_checkout_options` */
+#define GIT_CHECKOUT_OPTIONS_INIT { GIT_CHECKOUT_OPTIONS_VERSION }
/**
* Initialize git_checkout_options structure
@@ -411,4 +464,5 @@ GIT_EXTERN(int) git_checkout_tree(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/cherrypick.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/cherrypick.h
index 0e6a252..e6cf99e 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/cherrypick.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/cherrypick.h
@@ -13,9 +13,12 @@
/**
* @file git2/cherrypick.h
- * @brief Git cherry-pick routines
+ * @brief Cherry-pick the contents of an individual commit
* @defgroup git_cherrypick Git cherry-pick routines
* @ingroup Git
+ *
+ * "Cherry-pick" will attempts to re-apply the changes in an
+ * individual commit to the current index and working directory.
* @{
*/
GIT_BEGIN_DECL
@@ -33,8 +36,13 @@ typedef struct {
git_checkout_options checkout_opts; /**< Options for the checkout */
} git_cherrypick_options;
+/** Current version for the `git_cherrypick_options` structure */
#define GIT_CHERRYPICK_OPTIONS_VERSION 1
-#define GIT_CHERRYPICK_OPTIONS_INIT {GIT_CHERRYPICK_OPTIONS_VERSION, 0, GIT_MERGE_OPTIONS_INIT, GIT_CHECKOUT_OPTIONS_INIT}
+
+/** Static constructor for `git_cherrypick_options` */
+#define GIT_CHERRYPICK_OPTIONS_INIT { \
+ GIT_CHERRYPICK_OPTIONS_VERSION, 0, \
+ GIT_MERGE_OPTIONS_INIT, GIT_CHECKOUT_OPTIONS_INIT }
/**
* Initialize git_cherrypick_options structure
@@ -89,4 +97,3 @@ GIT_EXTERN(int) git_cherrypick(
GIT_END_DECL
#endif
-
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/clone.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/clone.h
index 3c3ea26..b7a47ab 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/clone.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/clone.h
@@ -17,9 +17,13 @@
/**
* @file git2/clone.h
- * @brief Git cloning routines
+ * @brief Clone a remote repository to the local disk
* @defgroup git_clone Git cloning routines
* @ingroup Git
+ *
+ * Clone will take a remote repository - located on a remote server
+ * accessible by HTTPS or SSH, or a repository located elsewhere on
+ * the local disk - and place a copy in the given local path.
* @{
*/
GIT_BEGIN_DECL
@@ -49,7 +53,7 @@ typedef enum {
* Bypass the git-aware transport, but do not try to use
* hardlinks.
*/
- GIT_CLONE_LOCAL_NO_LINKS,
+ GIT_CLONE_LOCAL_NO_LINKS
} git_clone_local_t;
/**
@@ -59,7 +63,7 @@ typedef enum {
* Callers of git_clone may provide a function matching this signature to override
* the remote creation and customization process during a clone operation.
*
- * @param out the resulting remote
+ * @param[out] out the resulting remote
* @param repo the repository in which to create the remote
* @param name the remote's name
* @param url the remote's url
@@ -74,14 +78,14 @@ typedef int GIT_CALLBACK(git_remote_create_cb)(
void *payload);
/**
- * The signature of a function matchin git_repository_init, with an
- * aditional void * as callback payload.
+ * The signature of a function matching git_repository_init, with an
+ * additional void * as callback payload.
*
* Callers of git_clone my provide a function matching this signature
* to override the repository creation and customization process
* during a clone operation.
*
- * @param out the resulting repository
+ * @param[out] out the resulting repository
* @param path path in which to create the repository
* @param bare whether the repository is bare. This is the value from the clone options
* @param payload payload specified by the options
@@ -99,14 +103,17 @@ typedef int GIT_CALLBACK(git_repository_create_cb)(
* Initialize with `GIT_CLONE_OPTIONS_INIT`. Alternatively, you can
* use `git_clone_options_init`.
*
+ * @options[version] GIT_CLONE_OPTIONS_VERSION
+ * @options[init_macro] GIT_CLONE_OPTIONS_INIT
+ * @options[init_function] git_clone_options_init
*/
typedef struct git_clone_options {
unsigned int version;
/**
* These options are passed to the checkout step. To disable
- * checkout, set the `checkout_strategy` to
- * `GIT_CHECKOUT_NONE`.
+ * checkout, set the `checkout_strategy` to `GIT_CHECKOUT_NONE`
+ * or `GIT_CHECKOUT_DRY_RUN`.
*/
git_checkout_options checkout_opts;
@@ -163,10 +170,14 @@ typedef struct git_clone_options {
void *remote_cb_payload;
} git_clone_options;
+/** Current version for the `git_clone_options` structure */
#define GIT_CLONE_OPTIONS_VERSION 1
-#define GIT_CLONE_OPTIONS_INIT { GIT_CLONE_OPTIONS_VERSION, \
- { GIT_CHECKOUT_OPTIONS_VERSION, GIT_CHECKOUT_SAFE }, \
- GIT_FETCH_OPTIONS_INIT }
+
+/** Static constructor for `git_clone_options` */
+#define GIT_CLONE_OPTIONS_INIT \
+ { GIT_CLONE_OPTIONS_VERSION, \
+ GIT_CHECKOUT_OPTIONS_INIT, \
+ GIT_FETCH_OPTIONS_INIT }
/**
* Initialize git_clone_options structure
@@ -189,7 +200,11 @@ GIT_EXTERN(int) git_clone_options_init(
* git's defaults. You can use the options in the callback to
* customize how these are created.
*
- * @param out pointer that will receive the resulting repository object
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
+ * @param[out] out pointer that will receive the resulting repository object
* @param url the remote repository to clone
* @param local_path local directory to clone to
* @param options configuration options for the clone. If NULL, the
@@ -206,4 +221,5 @@ GIT_EXTERN(int) git_clone(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/commit.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/commit.h
index 4d74b89..b998e18 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/commit.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/commit.h
@@ -14,9 +14,13 @@
/**
* @file git2/commit.h
- * @brief Git commit parsing, formatting routines
+ * @brief A representation of a set of changes in the repository
* @defgroup git_commit Git commit parsing, formatting routines
* @ingroup Git
+ *
+ * A commit represents a set of changes made to the files within a
+ * repository, and metadata about who made the changes, and when the
+ * changes were made.
* @{
*/
GIT_BEGIN_DECL
@@ -380,7 +384,38 @@ GIT_EXTERN(int) git_commit_create(
*
* All other parameters remain the same as `git_commit_create()`.
*
- * @see git_commit_create
+ * @param id Pointer in which to store the OID of the newly created commit
+ *
+ * @param repo Repository where to store the commit
+ *
+ * @param update_ref If not NULL, name of the reference that
+ * will be updated to point to this commit. If the reference
+ * is not direct, it will be resolved to a direct reference.
+ * Use "HEAD" to update the HEAD of the current branch and
+ * make it point to this commit. If the reference doesn't
+ * exist yet, it will be created. If it does exist, the first
+ * parent must be the tip of this branch.
+ *
+ * @param author Signature with author and author time of commit
+ *
+ * @param committer Signature with committer and * commit time of commit
+ *
+ * @param message_encoding The encoding for the message in the
+ * commit, represented with a standard encoding name.
+ * E.g. "UTF-8". If NULL, no encoding header is written and
+ * UTF-8 is assumed.
+ *
+ * @param message Full message for this commit
+ *
+ * @param tree An instance of a `git_tree` object that will
+ * be used as the tree for the commit. This tree object must
+ * also be owned by the given `repo`.
+ *
+ * @param parent_count Number of parents for this commit
+ *
+ * @return 0 or an error code
+ * The created commit will be written to the Object Database and
+ * the given reference will be updated to point to it
*/
GIT_EXTERN(int) git_commit_create_v(
git_oid *id,
@@ -394,6 +429,52 @@ GIT_EXTERN(int) git_commit_create_v(
size_t parent_count,
...);
+typedef struct {
+ unsigned int version;
+
+ /**
+ * Flags for creating the commit.
+ *
+ * If `allow_empty_commit` is specified, a commit with no changes
+ * from the prior commit (and "empty" commit) is allowed. Otherwise,
+ * commit creation will be stopped.
+ */
+ unsigned int allow_empty_commit : 1;
+
+ /** The commit author, or NULL for the default. */
+ const git_signature *author;
+
+ /** The committer, or NULL for the default. */
+ const git_signature *committer;
+
+ /** Encoding for the commit message; leave NULL for default. */
+ const char *message_encoding;
+} git_commit_create_options;
+
+/** Current version for the `git_commit_create_options` structure */
+#define GIT_COMMIT_CREATE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_commit_create_options` */
+#define GIT_COMMIT_CREATE_OPTIONS_INIT { GIT_COMMIT_CREATE_OPTIONS_VERSION }
+
+/**
+ * Commits the staged changes in the repository; this is a near analog to
+ * `git commit -m message`.
+ *
+ * By default, empty commits are not allowed.
+ *
+ * @param id pointer to store the new commit's object id
+ * @param repo repository to commit changes in
+ * @param message the commit message
+ * @param opts options for creating the commit
+ * @return 0 on success, GIT_EUNCHANGED if there were no changes to commit, or an error code
+ */
+GIT_EXTERN(int) git_commit_create_from_stage(
+ git_oid *id,
+ git_repository *repo,
+ const char *message,
+ const git_commit_create_options *opts);
+
/**
* Amend an existing commit by replacing only non-NULL values.
*
@@ -413,7 +494,36 @@ GIT_EXTERN(int) git_commit_create_v(
*
* All parameters have the same meanings as in `git_commit_create()`.
*
- * @see git_commit_create
+ * @param id Pointer in which to store the OID of the newly created commit
+ *
+ * @param commit_to_amend The commit to amend
+ *
+ * @param update_ref If not NULL, name of the reference that
+ * will be updated to point to this commit. If the reference
+ * is not direct, it will be resolved to a direct reference.
+ * Use "HEAD" to update the HEAD of the current branch and
+ * make it point to this commit. If the reference doesn't
+ * exist yet, it will be created. If it does exist, the first
+ * parent must be the tip of this branch.
+ *
+ * @param author Signature with author and author time of commit
+ *
+ * @param committer Signature with committer and * commit time of commit
+ *
+ * @param message_encoding The encoding for the message in the
+ * commit, represented with a standard encoding name.
+ * E.g. "UTF-8". If NULL, no encoding header is written and
+ * UTF-8 is assumed.
+ *
+ * @param message Full message for this commit
+ *
+ * @param tree An instance of a `git_tree` object that will
+ * be used as the tree for the commit. This tree object must
+ * also be owned by the given `repo`.
+ *
+ * @return 0 or an error code
+ * The created commit will be written to the Object Database and
+ * the given reference will be updated to point to it
*/
GIT_EXTERN(int) git_commit_amend(
git_oid *id,
@@ -479,6 +589,7 @@ GIT_EXTERN(int) git_commit_create_buffer(
* to the commit and write it into the given repository.
*
* @param out the resulting commit id
+ * @param repo the repository to create the commit in.
* @param commit_content the content of the unsigned commit object
* @param signature the signature to add to the commit. Leave `NULL`
* to create a commit without adding a signature field.
@@ -499,6 +610,7 @@ GIT_EXTERN(int) git_commit_create_with_signature(
*
* @param out Pointer to store the copy of the commit
* @param source Original commit to copy
+ * @return 0
*/
GIT_EXTERN(int) git_commit_dup(git_commit **out, git_commit *source);
@@ -539,6 +651,25 @@ typedef int (*git_commit_create_cb)(
const git_commit *parents[],
void *payload);
+/** An array of commits returned from the library */
+typedef struct git_commitarray {
+ git_commit *const *commits;
+ size_t count;
+} git_commitarray;
+
+/**
+ * Free the commits contained in a commit array. This method should
+ * be called on `git_commitarray` objects that were provided by the
+ * library. Not doing so will result in a memory leak.
+ *
+ * This does not free the `git_commitarray` itself, since the library
+ * will never allocate that object directly itself.
+ *
+ * @param array The git_commitarray that contains commits to free
+ */
+GIT_EXTERN(void) git_commitarray_dispose(git_commitarray *array);
+
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/common.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/common.h
index 2ee8290..40a3903 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/common.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/common.h
@@ -11,7 +11,9 @@
#include
#ifdef __cplusplus
+ /** Start declarations in C mode for C++ compatibility */
# define GIT_BEGIN_DECL extern "C" {
+ /** End declarations in C mode */
# define GIT_END_DECL }
#else
/** Start declarations in C mode */
@@ -71,19 +73,19 @@ typedef size_t size_t;
# define GIT_FORMAT_PRINTF(a,b) /* empty */
#endif
-#if (defined(_WIN32)) && !defined(__CYGWIN__)
-#define GIT_WIN32 1
-#endif
-
#ifdef __amigaos4__
#include
#endif
/**
* @file git2/common.h
- * @brief Git common platform definitions
+ * @brief Base platform functionality
* @defgroup git_common Git common platform definitions
* @ingroup Git
+ *
+ * Common platform functionality including introspecting libgit2
+ * itself - information like how it was built, and the current
+ * running version.
* @{
*/
@@ -94,10 +96,10 @@ GIT_BEGIN_DECL
* environment variable). A semi-colon ";" is used on Windows and
* AmigaOS, and a colon ":" for all other systems.
*/
-#if defined(GIT_WIN32) || defined(AMIGA)
-#define GIT_PATH_LIST_SEPARATOR ';'
+#if (defined(_WIN32) && !defined(__CYGWIN__)) || defined(AMIGA)
+# define GIT_PATH_LIST_SEPARATOR ';'
#else
-#define GIT_PATH_LIST_SEPARATOR ':'
+# define GIT_PATH_LIST_SEPARATOR ':'
#endif
/**
@@ -105,11 +107,6 @@ GIT_BEGIN_DECL
*/
#define GIT_PATH_MAX 4096
-/**
- * The string representation of the null object ID.
- */
-#define GIT_OID_HEX_ZERO "0000000000000000000000000000000000000000"
-
/**
* Return the version of the libgit2 library
* being currently used.
@@ -122,53 +119,91 @@ GIT_BEGIN_DECL
GIT_EXTERN(int) git_libgit2_version(int *major, int *minor, int *rev);
/**
- * Combinations of these values describe the features with which libgit2
- * was compiled
+ * Return the prerelease state of the libgit2 library currently being
+ * used. For nightly builds during active development, this will be
+ * "alpha". Releases may have a "beta" or release candidate ("rc1",
+ * "rc2", etc) prerelease. For a final release, this function returns
+ * NULL.
+ *
+ * @return the name of the prerelease state or NULL
+ */
+GIT_EXTERN(const char *) git_libgit2_prerelease(void);
+
+/**
+ * Configurable features of libgit2; either optional settings (like
+ * threading), or features that can be enabled by one of a number of
+ * different backend "providers" (like HTTPS, which can be provided by
+ * OpenSSL, mbedTLS, or system libraries).
*/
typedef enum {
- /**
- * If set, libgit2 was built thread-aware and can be safely used from multiple
- * threads.
- */
- GIT_FEATURE_THREADS = (1 << 0),
- /**
- * If set, libgit2 was built with and linked against a TLS implementation.
- * Custom TLS streams may still be added by the user to support HTTPS
- * regardless of this.
- */
- GIT_FEATURE_HTTPS = (1 << 1),
- /**
- * If set, libgit2 was built with and linked against libssh2. A custom
- * transport may still be added by the user to support libssh2 regardless of
- * this.
- */
- GIT_FEATURE_SSH = (1 << 2),
- /**
- * If set, libgit2 was built with support for sub-second resolution in file
- * modification times.
- */
- GIT_FEATURE_NSEC = (1 << 3),
+ /**
+ * libgit2 is thread-aware and can be used from multiple threads
+ * (as described in the documentation).
+ */
+ GIT_FEATURE_THREADS = (1 << 0),
+
+ /** HTTPS remotes */
+ GIT_FEATURE_HTTPS = (1 << 1),
+
+ /** SSH remotes */
+ GIT_FEATURE_SSH = (1 << 2),
+
+ /** Sub-second resolution in index timestamps */
+ GIT_FEATURE_NSEC = (1 << 3),
+
+ /** HTTP parsing; always available */
+ GIT_FEATURE_HTTP_PARSER = (1 << 4),
+
+ /** Regular expression support; always available */
+ GIT_FEATURE_REGEX = (1 << 5),
+
+ /** Internationalization support for filename translation */
+ GIT_FEATURE_I18N = (1 << 6),
+
+ /** NTLM support over HTTPS */
+ GIT_FEATURE_AUTH_NTLM = (1 << 7),
+
+ /** Kerberos (SPNEGO) authentication support over HTTPS */
+ GIT_FEATURE_AUTH_NEGOTIATE = (1 << 8),
+
+ /** zlib support; always available */
+ GIT_FEATURE_COMPRESSION = (1 << 9),
+
+ /** SHA1 object support; always available */
+ GIT_FEATURE_SHA1 = (1 << 10),
+
+ /** SHA256 object support */
+ GIT_FEATURE_SHA256 = (1 << 11)
} git_feature_t;
/**
* Query compile time options for libgit2.
*
* @return A combination of GIT_FEATURE_* values.
+ */
+GIT_EXTERN(int) git_libgit2_features(void);
+
+/**
+ * Query the backend details for the compile-time feature in libgit2.
+ *
+ * This will return the "backend" for the feature, which is useful for
+ * things like HTTPS or SSH support, that can have multiple backends
+ * that could be compiled in.
*
- * - GIT_FEATURE_THREADS
- * Libgit2 was compiled with thread support. Note that thread support is
- * still to be seen as a 'work in progress' - basic object lookups are
- * believed to be threadsafe, but other operations may not be.
+ * For example, when libgit2 is compiled with dynamic OpenSSL support,
+ * the feature backend will be `openssl-dynamic`. The feature backend
+ * names reflect the compilation options specified to the build system
+ * (though in all lower case). The backend _may_ be "builtin" for
+ * features that are provided by libgit2 itself.
*
- * - GIT_FEATURE_HTTPS
- * Libgit2 supports the https:// protocol. This requires the openssl
- * library to be found when compiling libgit2.
+ * If the feature is not supported by the library, this API returns
+ * `NULL`.
*
- * - GIT_FEATURE_SSH
- * Libgit2 supports the SSH protocol for network operations. This requires
- * the libssh2 library to be found when compiling libgit2
+ * @param feature the feature to query details for
+ * @return the provider details, or NULL if the feature is not supported
*/
-GIT_EXTERN(int) git_libgit2_features(void);
+GIT_EXTERN(const char *) git_libgit2_feature_backend(
+ git_feature_t feature);
/**
* Global library options
@@ -211,7 +246,18 @@ typedef enum {
GIT_OPT_SET_ODB_PACKED_PRIORITY,
GIT_OPT_SET_ODB_LOOSE_PRIORITY,
GIT_OPT_GET_EXTENSIONS,
- GIT_OPT_SET_EXTENSIONS
+ GIT_OPT_SET_EXTENSIONS,
+ GIT_OPT_GET_OWNER_VALIDATION,
+ GIT_OPT_SET_OWNER_VALIDATION,
+ GIT_OPT_GET_HOMEDIR,
+ GIT_OPT_SET_HOMEDIR,
+ GIT_OPT_SET_SERVER_CONNECT_TIMEOUT,
+ GIT_OPT_GET_SERVER_CONNECT_TIMEOUT,
+ GIT_OPT_SET_SERVER_TIMEOUT,
+ GIT_OPT_GET_SERVER_TIMEOUT,
+ GIT_OPT_SET_USER_AGENT_PRODUCT,
+ GIT_OPT_GET_USER_AGENT_PRODUCT,
+ GIT_OPT_ADD_SSL_X509_CERT
} git_libgit2_opt_t;
/**
@@ -316,15 +362,52 @@ typedef enum {
* > - `path` is the location of a directory holding several
* > certificates, one per file.
* >
+ * > Calling `GIT_OPT_ADD_SSL_X509_CERT` may override the
+ * > data in `path`.
+ * >
* > Either parameter may be `NULL`, but not both.
*
+ * * opts(GIT_OPT_ADD_SSL_X509_CERT, const X509 *cert)
+ *
+ * > Add a raw X509 certificate into the SSL certs store.
+ * > This certificate is only used by libgit2 invocations
+ * > during the application lifetime and is not persisted
+ * > to disk. This certificate cannot be removed from the
+ * > application once is has been added.
+ * >
+ * > - `cert` is the raw X509 cert will be added to cert store.
+ *
* * opts(GIT_OPT_SET_USER_AGENT, const char *user_agent)
*
- * > Set the value of the User-Agent header. This value will be
- * > appended to "git/1.0", for compatibility with other git clients.
+ * > Set the value of the comment section of the User-Agent header.
+ * > This can be information about your product and its version.
+ * > By default this is "libgit2" followed by the libgit2 version.
+ * >
+ * > This value will be appended to User-Agent _product_, which
+ * > is typically set to "git/2.0".
+ * >
+ * > Set to the empty string ("") to not send any information in the
+ * > comment section, or set to NULL to restore the default.
+ *
+ * * opts(GIT_OPT_GET_USER_AGENT, git_buf *out)
+ *
+ * > Get the value of the User-Agent header.
+ * > The User-Agent is written to the `out` buffer.
+ *
+ * * opts(GIT_OPT_SET_USER_AGENT_PRODUCT, const char *user_agent_product)
+ *
+ * > Set the value of the product portion of the User-Agent header.
+ * > This defaults to "git/2.0", for compatibility with other git
+ * > clients. It is recommended to keep this as git/ for
+ * > compatibility with servers that do user-agent detection.
* >
- * > - `user_agent` is the value that will be delivered as the
- * > User-Agent header on HTTP requests.
+ * > Set to the empty string ("") to not send any user-agent string,
+ * > or set to NULL to restore the default.
+ *
+ * * opts(GIT_OPT_GET_USER_AGENT_PRODUCT, git_buf *out)
+ *
+ * > Get the value of the User-Agent product header.
+ * > The User-Agent product is written to the `out` buffer.
*
* * opts(GIT_OPT_SET_WINDOWS_SHAREMODE, unsigned long value)
*
@@ -360,11 +443,6 @@ typedef enum {
* >
* > - `ciphers` is the list of ciphers that are eanbled.
*
- * * opts(GIT_OPT_GET_USER_AGENT, git_buf *out)
- *
- * > Get the value of the User-Agent header.
- * > The User-Agent is written to the `out` buffer.
- *
* * opts(GIT_OPT_ENABLE_OFS_DELTA, int enabled)
*
* > Enable or disable the use of "offset deltas" when creating packfiles,
@@ -449,8 +527,43 @@ typedef enum {
* > to support repositories with the `noop` extension but does want
* > to support repositories with the `newext` extension.
*
+ * opts(GIT_OPT_GET_OWNER_VALIDATION, int *enabled)
+ * > Gets the owner validation setting for repository
+ * > directories.
+ *
+ * opts(GIT_OPT_SET_OWNER_VALIDATION, int enabled)
+ * > Set that repository directories should be owned by the current
+ * > user. The default is to validate ownership.
+ *
+ * opts(GIT_OPT_GET_HOMEDIR, git_buf *out)
+ * > Gets the current user's home directory, as it will be used
+ * > for file lookups. The path is written to the `out` buffer.
+ *
+ * opts(GIT_OPT_SET_HOMEDIR, const char *path)
+ * > Sets the directory used as the current user's home directory,
+ * > for file lookups.
+ * >
+ * > - `path` directory of home directory.
+ *
+ * opts(GIT_OPT_GET_SERVER_CONNECT_TIMEOUT, int *timeout)
+ * > Gets the timeout (in milliseconds) to attempt connections to
+ * > a remote server.
+ *
+ * opts(GIT_OPT_SET_SERVER_CONNECT_TIMEOUT, int timeout)
+ * > Sets the timeout (in milliseconds) to attempt connections to
+ * > a remote server. Set to 0 to use the system default. Note that
+ * > this may not be able to be configured longer than the system
+ * > default, typically 75 seconds.
+ *
+ * opts(GIT_OPT_GET_SERVER_TIMEOUT, int *timeout)
+ * > Gets the timeout (in milliseconds) for reading from and writing
+ * > to a remote server.
+ *
+ * opts(GIT_OPT_SET_SERVER_TIMEOUT, int timeout)
+ * > Sets the timeout (in milliseconds) for reading from and writing
+ * > to a remote server. Set to 0 to use the system default.
+ *
* @param option Option key
- * @param ... value to set the option
* @return 0 on success, <0 on failure
*/
GIT_EXTERN(int) git_libgit2_opts(int option, ...);
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/config.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/config.h
index 7c8e388..f9c2667 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/config.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/config.h
@@ -13,78 +13,134 @@
/**
* @file git2/config.h
- * @brief Git config management routines
+ * @brief Per-repository, per-user or per-system configuration
* @defgroup git_config Git config management routines
* @ingroup Git
+ *
+ * Git configuration affects the operation of the version control
+ * system, and can be specified on a per-repository basis, in user
+ * settings, or at the system level.
* @{
*/
GIT_BEGIN_DECL
/**
* Priority level of a config file.
+ *
* These priority levels correspond to the natural escalation logic
- * (from higher to lower) when searching for config entries in git.git.
+ * (from higher to lower) when reading or searching for config entries
+ * in git.git. Meaning that for the same key, the configuration in
+ * the local configuration is preferred over the configuration in
+ * the system configuration file.
+ *
+ * Callers can add their own custom configuration, beginning at the
+ * `GIT_CONFIG_LEVEL_APP` level.
+ *
+ * Writes, by default, occur in the highest priority level backend
+ * that is writable. This ordering can be overridden with
+ * `git_config_set_writeorder`.
*
* git_config_open_default() and git_repository_config() honor those
* priority levels as well.
+ *
+ * @see git_config_open_default
+ * @see git_repository_config
*/
typedef enum {
- /** System-wide on Windows, for compatibility with portable git */
+ /**
+ * System-wide on Windows, for compatibility with "Portable Git".
+ */
GIT_CONFIG_LEVEL_PROGRAMDATA = 1,
- /** System-wide configuration file; /etc/gitconfig on Linux systems */
+ /**
+ * System-wide configuration file; `/etc/gitconfig` on Linux.
+ */
GIT_CONFIG_LEVEL_SYSTEM = 2,
- /** XDG compatible configuration file; typically ~/.config/git/config */
+ /**
+ * XDG compatible configuration file; typically
+ * `~/.config/git/config`.
+ */
GIT_CONFIG_LEVEL_XDG = 3,
- /** User-specific configuration file (also called Global configuration
- * file); typically ~/.gitconfig
+ /**
+ * Global configuration file is the user-specific configuration;
+ * typically `~/.gitconfig`.
*/
GIT_CONFIG_LEVEL_GLOBAL = 4,
- /** Repository specific configuration file; $WORK_DIR/.git/config on
- * non-bare repos
+ /**
+ * Local configuration, the repository-specific configuration file;
+ * typically `$GIT_DIR/config`.
*/
GIT_CONFIG_LEVEL_LOCAL = 5,
- /** Application specific configuration file; freely defined by applications
+ /**
+ * Worktree-specific configuration; typically
+ * `$GIT_DIR/config.worktree`.
*/
- GIT_CONFIG_LEVEL_APP = 6,
+ GIT_CONFIG_LEVEL_WORKTREE = 6,
- /** Represents the highest level available config file (i.e. the most
- * specific config file available that actually is loaded)
+ /**
+ * Application-specific configuration file. Callers into libgit2
+ * can add their own configuration beginning at this level.
+ */
+ GIT_CONFIG_LEVEL_APP = 7,
+
+ /**
+ * Not a configuration level; callers can use this value when
+ * querying configuration levels to specify that they want to
+ * have data from the highest-level currently configuration.
+ * This can be used to indicate that callers want the most
+ * specific config file available that actually is loaded.
*/
- GIT_CONFIG_HIGHEST_LEVEL = -1,
+ GIT_CONFIG_HIGHEST_LEVEL = -1
} git_config_level_t;
/**
* An entry in a configuration file
*/
typedef struct git_config_entry {
- const char *name; /**< Name of the entry (normalised) */
- const char *value; /**< String value of the entry */
- unsigned int include_depth; /**< Depth of includes where this variable was found */
- git_config_level_t level; /**< Which config file this was found in */
- void GIT_CALLBACK(free)(struct git_config_entry *entry); /**< Free function for this entry */
- void *payload; /**< Opaque value for the free function. Do not read or write */
+ /** Name of the configuration entry (normalized). */
+ const char *name;
+
+ /** Literal (string) value of the entry. */
+ const char *value;
+
+ /** The type of backend that this entry exists in (eg, "file"). */
+ const char *backend_type;
+
+ /**
+ * The path to the origin of this entry. For config files, this is
+ * the path to the file.
+ */
+ const char *origin_path;
+
+ /** Depth of includes where this variable was found. */
+ unsigned int include_depth;
+
+ /** Configuration level for the file this was found in. */
+ git_config_level_t level;
} git_config_entry;
/**
- * Free a config entry
+ * Free a config entry.
+ *
+ * @param entry The entry to free.
*/
-GIT_EXTERN(void) git_config_entry_free(git_config_entry *);
+GIT_EXTERN(void) git_config_entry_free(git_config_entry *entry);
/**
- * A config enumeration callback
+ * A config enumeration callback.
*
* @param entry the entry currently being enumerated
* @param payload a user-specified pointer
+ * @return non-zero to terminate the iteration.
*/
typedef int GIT_CALLBACK(git_config_foreach_cb)(const git_config_entry *entry, void *payload);
/**
- * An opaque structure for a configuration iterator
+ * An opaque structure for a configuration iterator.
*/
typedef struct git_config_iterator git_config_iterator;
@@ -119,7 +175,7 @@ typedef struct {
* global configuration file.
*
* This method will not guess the path to the xdg compatible
- * config file (.config/git/config).
+ * config file (`.config/git/config`).
*
* @param out Pointer to a user-allocated git_buf in which to store the path
* @return 0 if a global configuration file has been found. Its path will be stored in `out`.
@@ -146,8 +202,8 @@ GIT_EXTERN(int) git_config_find_xdg(git_buf *out);
/**
* Locate the path to the system configuration file
*
- * If /etc/gitconfig doesn't exist, it will look for
- * %PROGRAMFILES%\Git\etc\gitconfig.
+ * If `/etc/gitconfig` doesn't exist, it will look for
+ * `%PROGRAMFILES%\Git\etc\gitconfig`.
*
* @param out Pointer to a user-allocated git_buf in which to store the path
* @return 0 if a system configuration file has been
@@ -158,7 +214,7 @@ GIT_EXTERN(int) git_config_find_system(git_buf *out);
/**
* Locate the path to the configuration file in ProgramData
*
- * Look for the file in %PROGRAMDATA%\Git\config used by portable git.
+ * Look for the file in `%PROGRAMDATA%\Git\config` used by portable git.
*
* @param out Pointer to a user-allocated git_buf in which to store the path
* @return 0 if a ProgramData configuration file has been
@@ -209,9 +265,9 @@ GIT_EXTERN(int) git_config_new(git_config **out);
* @param cfg the configuration to add the file to
* @param path path to the configuration file to add
* @param level the priority level of the backend
- * @param force replace config file at the given priority level
* @param repo optional repository to allow parsing of
* conditional includes
+ * @param force replace config file at the given priority level
* @return 0 on success, GIT_EEXISTS when adding more than one file
* for a given priority level (and force_replace set to 0),
* GIT_ENOTFOUND when the file doesn't exist or error code
@@ -269,9 +325,26 @@ GIT_EXTERN(int) git_config_open_level(
*
* @param out pointer in which to store the config object
* @param config the config object in which to look
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_open_global(git_config **out, git_config *config);
+/**
+ * Set the write order for configuration backends. By default, the
+ * write ordering does not match the read ordering; for example, the
+ * worktree configuration is a high-priority for reading, but is not
+ * written to unless explicitly chosen.
+ *
+ * @param cfg the configuration to change write order of
+ * @param levels the ordering of levels for writing
+ * @param len the length of the levels array
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_config_set_writeorder(
+ git_config *cfg,
+ git_config_level_t *levels,
+ size_t len);
+
/**
* Create a snapshot of the configuration
*
@@ -422,6 +495,7 @@ GIT_EXTERN(int) git_config_get_string_buf(git_buf *out, const git_config *cfg, c
* interested in. Use NULL to indicate all
* @param callback the function to be called on each value of the variable
* @param payload opaque pointer to pass to the callback
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_get_multivar_foreach(const git_config *cfg, const char *name, const char *regexp, git_config_foreach_cb callback, void *payload);
@@ -437,14 +511,15 @@ GIT_EXTERN(int) git_config_get_multivar_foreach(const git_config *cfg, const cha
* @param name the variable's name
* @param regexp regular expression to filter which variables we're
* interested in. Use NULL to indicate all
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_multivar_iterator_new(git_config_iterator **out, const git_config *cfg, const char *name, const char *regexp);
/**
* Return the current entry and advance the iterator
*
- * The pointers returned by this function are valid until the iterator
- * is freed.
+ * The pointers returned by this function are valid until the next call
+ * to `git_config_next` or until the iterator is freed.
*
* @param entry pointer to store the entry
* @param iter the iterator
@@ -515,6 +590,7 @@ GIT_EXTERN(int) git_config_set_string(git_config *cfg, const char *name, const c
* @param name the variable's name
* @param regexp a regular expression to indicate which values to replace
* @param value the new value.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_set_multivar(git_config *cfg, const char *name, const char *regexp, const char *value);
@@ -524,6 +600,7 @@ GIT_EXTERN(int) git_config_set_multivar(git_config *cfg, const char *name, const
*
* @param cfg the configuration
* @param name the variable to delete
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_delete_entry(git_config *cfg, const char *name);
@@ -568,7 +645,8 @@ GIT_EXTERN(int) git_config_foreach(
* `git_config_iterator_free` when done.
*
* @param out pointer to store the iterator
- * @param cfg where to ge the variables from
+ * @param cfg where to get the variables from
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_iterator_new(git_config_iterator **out, const git_config *cfg);
@@ -585,6 +663,7 @@ GIT_EXTERN(int) git_config_iterator_new(git_config_iterator **out, const git_con
* @param out pointer to store the iterator
* @param cfg where to ge the variables from
* @param regexp regular expression to match the names
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_iterator_glob_new(git_config_iterator **out, const git_config *cfg, const char *regexp);
@@ -662,6 +741,7 @@ GIT_EXTERN(int) git_config_get_mapped(
* @param maps array of `git_configmap` objects specifying the possible mappings
* @param map_n number of mapping objects in `maps`
* @param value value to parse
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_lookup_map_value(
int *out,
@@ -678,6 +758,7 @@ GIT_EXTERN(int) git_config_lookup_map_value(
*
* @param out place to store the result of the parsing
* @param value value to parse
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_parse_bool(int *out, const char *value);
@@ -690,6 +771,7 @@ GIT_EXTERN(int) git_config_parse_bool(int *out, const char *value);
*
* @param out place to store the result of the parsing
* @param value value to parse
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_parse_int32(int32_t *out, const char *value);
@@ -702,6 +784,7 @@ GIT_EXTERN(int) git_config_parse_int32(int32_t *out, const char *value);
*
* @param out place to store the result of the parsing
* @param value value to parse
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_parse_int64(int64_t *out, const char *value);
@@ -717,6 +800,7 @@ GIT_EXTERN(int) git_config_parse_int64(int64_t *out, const char *value);
*
* @param out placae to store the result of parsing
* @param value the path to evaluate
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_parse_path(git_buf *out, const char *value);
@@ -735,6 +819,7 @@ GIT_EXTERN(int) git_config_parse_path(git_buf *out, const char *value);
* @param regexp regular expression to match against config names (can be NULL)
* @param callback the function to call on each variable
* @param payload the data to pass to the callback
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_backend_foreach_match(
git_config_backend *backend,
@@ -763,4 +848,5 @@ GIT_EXTERN(int) git_config_lock(git_transaction **tx, git_config *cfg);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/credential.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/credential.h
index 9426a6e..33755ca 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/credential.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/credential.h
@@ -11,9 +11,12 @@
/**
* @file git2/credential.h
- * @brief Git authentication & credential management
+ * @brief Authentication and credential management
* @defgroup git_credential Authentication & credential management
* @ingroup Git
+ *
+ * Credentials specify how to authenticate to a remote system
+ * over HTTPS or SSH.
* @{
*/
GIT_BEGIN_DECL
@@ -75,7 +78,7 @@ typedef enum {
*
* @see git_credential_ssh_key_memory_new
*/
- GIT_CREDENTIAL_SSH_MEMORY = (1u << 6),
+ GIT_CREDENTIAL_SSH_MEMORY = (1u << 6)
} git_credential_t;
/**
@@ -119,7 +122,7 @@ typedef struct git_credential_ssh_custom git_credential_ssh_custom;
* an error. As such, it's easy to get in a loop if you fail to stop providing
* the same incorrect credentials.
*
- * @param out The newly created credential object.
+ * @param[out] out The newly created credential object.
* @param url The resource for which we are demanding a credential.
* @param username_from_url The username that was embedded in a "user\@host"
* remote url, or NULL if not included.
@@ -241,6 +244,18 @@ typedef struct _LIBSSH2_USERAUTH_KBDINT_PROMPT LIBSSH2_USERAUTH_KBDINT_PROMPT;
typedef struct _LIBSSH2_USERAUTH_KBDINT_RESPONSE LIBSSH2_USERAUTH_KBDINT_RESPONSE;
#endif
+/**
+ * Callback for interactive SSH credentials.
+ *
+ * @param name the name
+ * @param name_len the length of the name
+ * @param instruction the authentication instruction
+ * @param instruction_len the length of the instruction
+ * @param num_prompts the number of prompts
+ * @param prompts the prompts
+ * @param responses the responses
+ * @param abstract the abstract
+ */
typedef void GIT_CALLBACK(git_credential_ssh_interactive_cb)(
const char *name,
int name_len,
@@ -254,6 +269,7 @@ typedef void GIT_CALLBACK(git_credential_ssh_interactive_cb)(
* Create a new ssh keyboard-interactive based credential object.
* The supplied credential parameter will be internally duplicated.
*
+ * @param out The newly created credential object.
* @param username Username to use to authenticate.
* @param prompt_callback The callback method used for prompts.
* @param payload Additional data to pass to the callback.
@@ -277,6 +293,18 @@ GIT_EXTERN(int) git_credential_ssh_key_from_agent(
git_credential **out,
const char *username);
+/**
+ * Callback for credential signing.
+ *
+ * @param session the libssh2 session
+ * @param sig the signature
+ * @param sig_len the length of the signature
+ * @param data the data
+ * @param data_len the length of the data
+ * @param abstract the abstract
+ * @return 0 for success, < 0 to indicate an error, > 0 to indicate
+ * no credential was acquired
+ */
typedef int GIT_CALLBACK(git_credential_sign_cb)(
LIBSSH2_SESSION *session,
unsigned char **sig, size_t *sig_len,
@@ -311,4 +339,5 @@ GIT_EXTERN(int) git_credential_ssh_custom_new(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/credential_helpers.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/credential_helpers.h
index 9a70ecb..706558d 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/credential_helpers.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/credential_helpers.h
@@ -39,6 +39,7 @@ typedef struct git_credential_userpass_payload {
* @param allowed_types A bitmask stating which credential types are OK to return.
* @param payload The payload provided when specifying this callback. (This is
* interpreted as a `git_credential_userpass_payload*`.)
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_credential_userpass(
git_credential **out,
@@ -49,4 +50,5 @@ GIT_EXTERN(int) git_credential_userpass(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/deprecated.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/deprecated.h
index 37b9fa0..b8b0238 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/deprecated.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/deprecated.h
@@ -52,7 +52,7 @@
/**
* @file git2/deprecated.h
- * @brief libgit2 deprecated functions and values
+ * @brief Deprecated functions and values
* @ingroup Git
* @{
*/
@@ -69,15 +69,23 @@ GIT_BEGIN_DECL
*/
/**@{*/
+/** @deprecated use GIT_ATTR_VALUE_UNSPECIFIED */
#define GIT_ATTR_UNSPECIFIED_T GIT_ATTR_VALUE_UNSPECIFIED
+/** @deprecated use GIT_ATTR_VALUE_TRUE */
#define GIT_ATTR_TRUE_T GIT_ATTR_VALUE_TRUE
+/** @deprecated use GIT_ATTR_VALUE_FALSE */
#define GIT_ATTR_FALSE_T GIT_ATTR_VALUE_FALSE
+/** @deprecated use GIT_ATTR_VALUE_STRING */
#define GIT_ATTR_VALUE_T GIT_ATTR_VALUE_STRING
+/** @deprecated use GIT_ATTR_IS_TRUE */
#define GIT_ATTR_TRUE(attr) GIT_ATTR_IS_TRUE(attr)
+/** @deprecated use GIT_ATTR_IS_FALSE */
#define GIT_ATTR_FALSE(attr) GIT_ATTR_IS_FALSE(attr)
+/** @deprecated use GIT_ATTR_IS_UNSPECIFIED */
#define GIT_ATTR_UNSPECIFIED(attr) GIT_ATTR_IS_UNSPECIFIED(attr)
+/** @deprecated use git_attr_value_t */
typedef git_attr_value_t git_attr_t;
/**@}*/
@@ -93,6 +101,7 @@ typedef git_attr_value_t git_attr_t;
*/
/**@{*/
+/** @deprecated use GIT_BLOB_FILTER_ATTRIBUTES_FROM_HEAD */
#define GIT_BLOB_FILTER_ATTTRIBUTES_FROM_HEAD GIT_BLOB_FILTER_ATTRIBUTES_FROM_HEAD
GIT_EXTERN(int) git_blob_create_fromworkdir(git_oid *id, git_repository *repo, const char *relative_path);
@@ -285,11 +294,16 @@ typedef int (*git_commit_signing_cb)(
*/
/**@{*/
+/** @deprecated use GIT_CONFIGMAP_FALSE */
#define GIT_CVAR_FALSE GIT_CONFIGMAP_FALSE
+/** @deprecated use GIT_CONFIGMAP_TRUE */
#define GIT_CVAR_TRUE GIT_CONFIGMAP_TRUE
+/** @deprecated use GIT_CONFIGMAP_INT32 */
#define GIT_CVAR_INT32 GIT_CONFIGMAP_INT32
+/** @deprecated use GIT_CONFIGMAP_STRING */
#define GIT_CVAR_STRING GIT_CONFIGMAP_STRING
+/** @deprecated use git_cvar_map */
typedef git_configmap git_cvar_map;
/**@}*/
@@ -313,12 +327,13 @@ typedef enum {
GIT_DIFF_FORMAT_EMAIL_NONE = 0,
/** Don't insert "[PATCH]" in the subject header*/
- GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER = (1 << 0),
-
+ GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER = (1 << 0)
} git_diff_format_email_flags_t;
/**
* Options for controlling the formatting of the generated e-mail.
+ *
+ * @deprecated use `git_email_create_options`
*/
typedef struct {
unsigned int version;
@@ -345,7 +360,9 @@ typedef struct {
const git_signature *author;
} git_diff_format_email_options;
+/** @deprecated use `git_email_create_options` */
#define GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION 1
+/** @deprecated use `git_email_create_options` */
#define GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT {GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION, 0, 1, 1, NULL, NULL, NULL, NULL}
/**
@@ -401,40 +418,76 @@ GIT_EXTERN(int) git_diff_format_email_options_init(
*/
/**@{*/
+/** @deprecated use `GIT_ERROR_NONE` */
#define GITERR_NONE GIT_ERROR_NONE
+/** @deprecated use `GIT_ERROR_NOMEMORY` */
#define GITERR_NOMEMORY GIT_ERROR_NOMEMORY
+/** @deprecated use `GIT_ERROR_OS` */
#define GITERR_OS GIT_ERROR_OS
+/** @deprecated use `GIT_ERROR_INVALID` */
#define GITERR_INVALID GIT_ERROR_INVALID
+/** @deprecated use `GIT_ERROR_REFERENCE` */
#define GITERR_REFERENCE GIT_ERROR_REFERENCE
+/** @deprecated use `GIT_ERROR_ZLIB` */
#define GITERR_ZLIB GIT_ERROR_ZLIB
+/** @deprecated use `GIT_ERROR_REPOSITORY` */
#define GITERR_REPOSITORY GIT_ERROR_REPOSITORY
+/** @deprecated use `GIT_ERROR_CONFIG` */
#define GITERR_CONFIG GIT_ERROR_CONFIG
+/** @deprecated use `GIT_ERROR_REGEX` */
#define GITERR_REGEX GIT_ERROR_REGEX
+/** @deprecated use `GIT_ERROR_ODB` */
#define GITERR_ODB GIT_ERROR_ODB
+/** @deprecated use `GIT_ERROR_INDEX` */
#define GITERR_INDEX GIT_ERROR_INDEX
+/** @deprecated use `GIT_ERROR_OBJECT` */
#define GITERR_OBJECT GIT_ERROR_OBJECT
+/** @deprecated use `GIT_ERROR_NET` */
#define GITERR_NET GIT_ERROR_NET
+/** @deprecated use `GIT_ERROR_TAG` */
#define GITERR_TAG GIT_ERROR_TAG
+/** @deprecated use `GIT_ERROR_TREE` */
#define GITERR_TREE GIT_ERROR_TREE
+/** @deprecated use `GIT_ERROR_INDEXER` */
#define GITERR_INDEXER GIT_ERROR_INDEXER
+/** @deprecated use `GIT_ERROR_SSL` */
#define GITERR_SSL GIT_ERROR_SSL
+/** @deprecated use `GIT_ERROR_SUBMODULE` */
#define GITERR_SUBMODULE GIT_ERROR_SUBMODULE
+/** @deprecated use `GIT_ERROR_THREAD` */
#define GITERR_THREAD GIT_ERROR_THREAD
+/** @deprecated use `GIT_ERROR_STASH` */
#define GITERR_STASH GIT_ERROR_STASH
+/** @deprecated use `GIT_ERROR_CHECKOUT` */
#define GITERR_CHECKOUT GIT_ERROR_CHECKOUT
+/** @deprecated use `GIT_ERROR_FETCHHEAD` */
#define GITERR_FETCHHEAD GIT_ERROR_FETCHHEAD
+/** @deprecated use `GIT_ERROR_MERGE` */
#define GITERR_MERGE GIT_ERROR_MERGE
+/** @deprecated use `GIT_ERROR_SSH` */
#define GITERR_SSH GIT_ERROR_SSH
+/** @deprecated use `GIT_ERROR_FILTER` */
#define GITERR_FILTER GIT_ERROR_FILTER
+/** @deprecated use `GIT_ERROR_REVERT` */
#define GITERR_REVERT GIT_ERROR_REVERT
+/** @deprecated use `GIT_ERROR_CALLBACK` */
#define GITERR_CALLBACK GIT_ERROR_CALLBACK
+/** @deprecated use `GIT_ERROR_CHERRYPICK` */
#define GITERR_CHERRYPICK GIT_ERROR_CHERRYPICK
+/** @deprecated use `GIT_ERROR_DESCRIBE` */
#define GITERR_DESCRIBE GIT_ERROR_DESCRIBE
+/** @deprecated use `GIT_ERROR_REBASE` */
#define GITERR_REBASE GIT_ERROR_REBASE
+/** @deprecated use `GIT_ERROR_FILESYSTEM` */
#define GITERR_FILESYSTEM GIT_ERROR_FILESYSTEM
+/** @deprecated use `GIT_ERROR_PATCH` */
#define GITERR_PATCH GIT_ERROR_PATCH
+/** @deprecated use `GIT_ERROR_WORKTREE` */
#define GITERR_WORKTREE GIT_ERROR_WORKTREE
+/** @deprecated use `GIT_ERROR_SHA1` */
#define GITERR_SHA1 GIT_ERROR_SHA1
+/** @deprecated use `GIT_ERROR_SHA` */
+#define GIT_ERROR_SHA1 GIT_ERROR_SHA
/**
* Return the last `git_error` object that was generated for the
@@ -498,37 +551,63 @@ GIT_EXTERN(void) giterr_set_oom(void);
*/
/**@{*/
+/* The git_idxentry_extended_flag_t enum */
+/** @deprecated use `GIT_INDEX_ENTRY_NAMEMASK` */
#define GIT_IDXENTRY_NAMEMASK GIT_INDEX_ENTRY_NAMEMASK
+/** @deprecated use `GIT_INDEX_ENTRY_STAGEMASK` */
#define GIT_IDXENTRY_STAGEMASK GIT_INDEX_ENTRY_STAGEMASK
+/** @deprecated use `GIT_INDEX_ENTRY_STAGESHIFT` */
#define GIT_IDXENTRY_STAGESHIFT GIT_INDEX_ENTRY_STAGESHIFT
/* The git_indxentry_flag_t enum */
+/** @deprecated use `GIT_INDEX_ENTRY_EXTENDED` */
#define GIT_IDXENTRY_EXTENDED GIT_INDEX_ENTRY_EXTENDED
+/** @deprecated use `GIT_INDEX_ENTRY_VALID` */
#define GIT_IDXENTRY_VALID GIT_INDEX_ENTRY_VALID
+/** @deprecated use `GIT_INDEX_ENTRY_STAGE` */
#define GIT_IDXENTRY_STAGE(E) GIT_INDEX_ENTRY_STAGE(E)
+/** @deprecated use `GIT_INDEX_ENTRY_STAGE_SET` */
#define GIT_IDXENTRY_STAGE_SET(E,S) GIT_INDEX_ENTRY_STAGE_SET(E,S)
/* The git_idxentry_extended_flag_t enum */
+/** @deprecated use `GIT_INDEX_ENTRY_INTENT_TO_ADD` */
#define GIT_IDXENTRY_INTENT_TO_ADD GIT_INDEX_ENTRY_INTENT_TO_ADD
+/** @deprecated use `GIT_INDEX_ENTRY_SKIP_WORKTREE` */
#define GIT_IDXENTRY_SKIP_WORKTREE GIT_INDEX_ENTRY_SKIP_WORKTREE
+/** @deprecated use `GIT_INDEX_ENTRY_INTENT_TO_ADD | GIT_INDEX_ENTRY_SKIP_WORKTREE` */
#define GIT_IDXENTRY_EXTENDED_FLAGS (GIT_INDEX_ENTRY_INTENT_TO_ADD | GIT_INDEX_ENTRY_SKIP_WORKTREE)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_EXTENDED2 (1 << 15)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_UPDATE (1 << 0)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_REMOVE (1 << 1)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_UPTODATE (1 << 2)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_ADDED (1 << 3)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_HASHED (1 << 4)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_UNHASHED (1 << 5)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_WT_REMOVE (1 << 6)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_CONFLICTED (1 << 7)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_UNPACKED (1 << 8)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_NEW_SKIP_WORKTREE (1 << 9)
/* The git_index_capability_t enum */
+/** @deprecated use `GIT_INDEX_CAPABILITY_IGNORE_CASE` */
#define GIT_INDEXCAP_IGNORE_CASE GIT_INDEX_CAPABILITY_IGNORE_CASE
+/** @deprecated use `GIT_INDEX_CAPABILITY_NO_FILEMODE` */
#define GIT_INDEXCAP_NO_FILEMODE GIT_INDEX_CAPABILITY_NO_FILEMODE
+/** @deprecated use `GIT_INDEX_CAPABILITY_NO_SYMLINKS` */
#define GIT_INDEXCAP_NO_SYMLINKS GIT_INDEX_CAPABILITY_NO_SYMLINKS
+/** @deprecated use `GIT_INDEX_CAPABILITY_FROM_OWNER` */
#define GIT_INDEXCAP_FROM_OWNER GIT_INDEX_CAPABILITY_FROM_OWNER
GIT_EXTERN(int) git_index_add_frombuffer(
@@ -548,17 +627,28 @@ GIT_EXTERN(int) git_index_add_frombuffer(
*/
/**@{*/
+/** @deprecate use `git_object_t` */
#define git_otype git_object_t
+/** @deprecate use `GIT_OBJECT_ANY` */
#define GIT_OBJ_ANY GIT_OBJECT_ANY
+/** @deprecate use `GIT_OBJECT_INVALID` */
#define GIT_OBJ_BAD GIT_OBJECT_INVALID
+/** @deprecated this value is not public */
#define GIT_OBJ__EXT1 0
+/** @deprecate use `GIT_OBJECT_COMMIT` */
#define GIT_OBJ_COMMIT GIT_OBJECT_COMMIT
+/** @deprecate use `GIT_OBJECT_TREE` */
#define GIT_OBJ_TREE GIT_OBJECT_TREE
+/** @deprecate use `GIT_OBJECT_BLOB` */
#define GIT_OBJ_BLOB GIT_OBJECT_BLOB
+/** @deprecate use `GIT_OBJECT_TAG` */
#define GIT_OBJ_TAG GIT_OBJECT_TAG
+/** @deprecated this value is not public */
#define GIT_OBJ__EXT2 5
+/** @deprecate use `GIT_OBJECT_OFS_DELTA` */
#define GIT_OBJ_OFS_DELTA GIT_OBJECT_OFS_DELTA
+/** @deprecate use `GIT_OBJECT_REF_DELTA` */
#define GIT_OBJ_REF_DELTA GIT_OBJECT_REF_DELTA
/**
@@ -610,17 +700,27 @@ GIT_EXTERN(int) git_remote_is_valid_name(const char *remote_name);
/**@{*/
/** Basic type of any Git reference. */
+/** @deprecate use `git_reference_t` */
#define git_ref_t git_reference_t
+/** @deprecate use `git_reference_format_t` */
#define git_reference_normalize_t git_reference_format_t
+/** @deprecate use `GIT_REFERENCE_INVALID` */
#define GIT_REF_INVALID GIT_REFERENCE_INVALID
+/** @deprecate use `GIT_REFERENCE_DIRECT` */
#define GIT_REF_OID GIT_REFERENCE_DIRECT
+/** @deprecate use `GIT_REFERENCE_SYMBOLIC` */
#define GIT_REF_SYMBOLIC GIT_REFERENCE_SYMBOLIC
+/** @deprecate use `GIT_REFERENCE_ALL` */
#define GIT_REF_LISTALL GIT_REFERENCE_ALL
+/** @deprecate use `GIT_REFERENCE_FORMAT_NORMAL` */
#define GIT_REF_FORMAT_NORMAL GIT_REFERENCE_FORMAT_NORMAL
+/** @deprecate use `GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL` */
#define GIT_REF_FORMAT_ALLOW_ONELEVEL GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL
+/** @deprecate use `GIT_REFERENCE_FORMAT_REFSPEC_PATTERN` */
#define GIT_REF_FORMAT_REFSPEC_PATTERN GIT_REFERENCE_FORMAT_REFSPEC_PATTERN
+/** @deprecate use `GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND` */
#define GIT_REF_FORMAT_REFSPEC_SHORTHAND GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND
/**
@@ -661,8 +761,11 @@ GIT_EXTERN(int) git_tag_create_frombuffer(
typedef git_revspec_t git_revparse_mode_t;
+/** @deprecated use `GIT_REVSPEC_SINGLE` */
#define GIT_REVPARSE_SINGLE GIT_REVSPEC_SINGLE
+/** @deprecated use `GIT_REVSPEC_RANGE` */
#define GIT_REVPARSE_RANGE GIT_REVSPEC_RANGE
+/** @deprecated use `GIT_REVSPEC_MERGE_BASE` */
#define GIT_REVPARSE_MERGE_BASE GIT_REVSPEC_MERGE_BASE
/**@}*/
@@ -691,14 +794,22 @@ typedef git_credential_sign_cb git_cred_sign_cb;
typedef git_credential_ssh_interactive_cb git_cred_ssh_interactive_callback;
typedef git_credential_ssh_interactive_cb git_cred_ssh_interactive_cb;
+/** @deprecated use `git_credential_t` */
#define git_credtype_t git_credential_t
+/** @deprecated use `GIT_CREDENTIAL_USERPASS_PLAINTEXT` */
#define GIT_CREDTYPE_USERPASS_PLAINTEXT GIT_CREDENTIAL_USERPASS_PLAINTEXT
+/** @deprecated use `GIT_CREDENTIAL_SSH_KEY` */
#define GIT_CREDTYPE_SSH_KEY GIT_CREDENTIAL_SSH_KEY
+/** @deprecated use `GIT_CREDENTIAL_SSH_CUSTOM` */
#define GIT_CREDTYPE_SSH_CUSTOM GIT_CREDENTIAL_SSH_CUSTOM
+/** @deprecated use `GIT_CREDENTIAL_DEFAULT` */
#define GIT_CREDTYPE_DEFAULT GIT_CREDENTIAL_DEFAULT
+/** @deprecated use `GIT_CREDENTIAL_SSH_INTERACTIVE` */
#define GIT_CREDTYPE_SSH_INTERACTIVE GIT_CREDENTIAL_SSH_INTERACTIVE
+/** @deprecated use `GIT_CREDENTIAL_USERNAME` */
#define GIT_CREDTYPE_USERNAME GIT_CREDENTIAL_USERNAME
+/** @deprecated use `GIT_CREDENTIAL_SSH_MEMORY` */
#define GIT_CREDTYPE_SSH_MEMORY GIT_CREDENTIAL_SSH_MEMORY
GIT_EXTERN(void) git_cred_free(git_credential *cred);
@@ -775,6 +886,15 @@ typedef git_trace_cb git_trace_callback;
*/
/**@{*/
+#ifndef GIT_EXPERIMENTAL_SHA256
+/** Deprecated OID "raw size" definition */
+# define GIT_OID_RAWSZ GIT_OID_SHA1_SIZE
+/** Deprecated OID "hex size" definition */
+# define GIT_OID_HEXSZ GIT_OID_SHA1_HEXSIZE
+/** Deprecated OID "hex zero" definition */
+# define GIT_OID_HEX_ZERO GIT_OID_SHA1_HEXZERO
+#endif
+
GIT_EXTERN(int) git_oid_iszero(const git_oid *id);
/**@}*/
@@ -884,6 +1004,24 @@ GIT_EXTERN(void) git_strarray_free(git_strarray *array);
/**@}*/
+/** @name Deprecated Version Constants
+ *
+ * These constants are retained for backward compatibility. The newer
+ * versions of these constants should be preferred in all new code.
+ *
+ * There is no plan to remove these backward compatibility constants at
+ * this time.
+ */
+/**@{*/
+
+#define LIBGIT2_VER_MAJOR LIBGIT2_VERSION_MAJOR
+#define LIBGIT2_VER_MINOR LIBGIT2_VERSION_MINOR
+#define LIBGIT2_VER_REVISION LIBGIT2_VERSION_REVISION
+#define LIBGIT2_VER_PATCH LIBGIT2_VERSION_PATCH
+#define LIBGIT2_VER_PRERELEASE LIBGIT2_VERSION_PRERELEASE
+
+/**@}*/
+
/** @name Deprecated Options Initialization Functions
*
* These functions are retained for backward compatibility. The newer
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/describe.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/describe.h
index 1d2ca14..938c470 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/describe.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/describe.h
@@ -13,10 +13,14 @@
/**
* @file git2/describe.h
- * @brief Git describing routines
+ * @brief Describe a commit in reference to tags
* @defgroup git_describe Git describing routines
* @ingroup Git
* @{
+ *
+ * Describe a commit, showing information about how the current commit
+ * relates to the tags. This can be useful for showing how the current
+ * commit has changed from a particular tagged version of the repository.
*/
GIT_BEGIN_DECL
@@ -30,7 +34,7 @@ GIT_BEGIN_DECL
typedef enum {
GIT_DESCRIBE_DEFAULT,
GIT_DESCRIBE_TAGS,
- GIT_DESCRIBE_ALL,
+ GIT_DESCRIBE_ALL
} git_describe_strategy_t;
/**
@@ -60,10 +64,15 @@ typedef struct git_describe_options {
int show_commit_oid_as_fallback;
} git_describe_options;
+/** Default maximum candidate tags */
#define GIT_DESCRIBE_DEFAULT_MAX_CANDIDATES_TAGS 10
+/** Default abbreviated size */
#define GIT_DESCRIBE_DEFAULT_ABBREVIATED_SIZE 7
+/** Current version for the `git_describe_options` structure */
#define GIT_DESCRIBE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_describe_options` */
#define GIT_DESCRIBE_OPTIONS_INIT { \
GIT_DESCRIBE_OPTIONS_VERSION, \
GIT_DESCRIBE_DEFAULT_MAX_CANDIDATES_TAGS, \
@@ -110,7 +119,10 @@ typedef struct {
const char *dirty_suffix;
} git_describe_format_options;
+/** Current version for the `git_describe_format_options` structure */
#define GIT_DESCRIBE_FORMAT_OPTIONS_VERSION 1
+
+/** Static constructor for `git_describe_format_options` */
#define GIT_DESCRIBE_FORMAT_OPTIONS_INIT { \
GIT_DESCRIBE_FORMAT_OPTIONS_VERSION, \
GIT_DESCRIBE_DEFAULT_ABBREVIATED_SIZE, \
@@ -142,6 +154,7 @@ typedef struct git_describe_result git_describe_result;
* you're done with it.
* @param committish a committish to describe
* @param opts the lookup options (or NULL for defaults)
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_describe_commit(
git_describe_result **result,
@@ -152,13 +165,14 @@ GIT_EXTERN(int) git_describe_commit(
* Describe a commit
*
* Perform the describe operation on the current commit and the
- * worktree. After peforming describe on HEAD, a status is run and the
+ * worktree. After performing describe on HEAD, a status is run and the
* description is considered to be dirty if there are.
*
* @param out pointer to store the result. You must free this once
* you're done with it.
* @param repo the repository in which to perform the describe
* @param opts the lookup options (or NULL for defaults)
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_describe_workdir(
git_describe_result **out,
@@ -172,6 +186,7 @@ GIT_EXTERN(int) git_describe_workdir(
* @param result the result from `git_describe_commit()` or
* `git_describe_workdir()`.
* @param opts the formatting options (or NULL for defaults)
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_describe_format(
git_buf *out,
@@ -180,6 +195,8 @@ GIT_EXTERN(int) git_describe_format(
/**
* Free the describe result.
+ *
+ * @param result The result to free.
*/
GIT_EXTERN(void) git_describe_result_free(git_describe_result *result);
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/diff.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/diff.h
index a14c019..b12e8ab 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/diff.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/diff.h
@@ -15,7 +15,7 @@
/**
* @file git2/diff.h
- * @brief Git tree and file differencing routines.
+ * @brief Indicate the differences between two versions of the repository
* @ingroup Git
* @{
*/
@@ -170,7 +170,7 @@ typedef enum {
/** Include the necessary deflate / delta information so that `git-apply`
* can apply given diff information to binary files.
*/
- GIT_DIFF_SHOW_BINARY = (1u << 30),
+ GIT_DIFF_SHOW_BINARY = (1u << 30)
} git_diff_option_t;
/**
@@ -208,6 +208,7 @@ typedef enum {
GIT_DIFF_FLAG_NOT_BINARY = (1u << 1), /**< file(s) treated as text data */
GIT_DIFF_FLAG_VALID_ID = (1u << 2), /**< `id` value is known correct */
GIT_DIFF_FLAG_EXISTS = (1u << 3), /**< file exists at this side of the delta */
+ GIT_DIFF_FLAG_VALID_SIZE = (1u << 4) /**< file size value is known correct */
} git_diff_flag_t;
/**
@@ -231,7 +232,7 @@ typedef enum {
GIT_DELTA_UNTRACKED = 7, /**< entry is untracked item in workdir */
GIT_DELTA_TYPECHANGE = 8, /**< type of entry changed between old and new */
GIT_DELTA_UNREADABLE = 9, /**< entry is unreadable */
- GIT_DELTA_CONFLICTED = 10, /**< entry in the index is conflicted */
+ GIT_DELTA_CONFLICTED = 10 /**< entry in the index is conflicted */
} git_delta_t;
/**
@@ -273,7 +274,7 @@ typedef struct {
/**
* Represents the known length of the `id` field, when
- * converted to a hex string. It is generally `GIT_OID_HEXSZ`, unless this
+ * converted to a hex string. It is generally `GIT_OID_SHA1_HEXSIZE`, unless this
* delta was created from reading a patch file, in which case it may be
* abbreviated to something reasonable, like 7 characters.
*/
@@ -341,6 +342,12 @@ typedef struct {
* diff process continues.
* - returns 0, the delta is inserted into the diff, and the diff process
* continues.
+ *
+ * @param diff_so_far the diff structure as it currently exists
+ * @param delta_to_add the delta that is to be added
+ * @param matched_pathspec the pathspec
+ * @param payload the user-specified callback payload
+ * @return 0 on success, 1 to skip this delta, or an error code
*/
typedef int GIT_CALLBACK(git_diff_notify_cb)(
const git_diff *diff_so_far,
@@ -356,7 +363,8 @@ typedef int GIT_CALLBACK(git_diff_notify_cb)(
* @param diff_so_far The diff being generated.
* @param old_path The path to the old file or NULL.
* @param new_path The path to the new file or NULL.
- * @return Non-zero to abort the diff.
+ * @param payload the user-specified callback payload
+ * @return 0 or an error code
*/
typedef int GIT_CALLBACK(git_diff_progress_cb)(
const git_diff *diff_so_far,
@@ -420,6 +428,22 @@ typedef struct {
*/
uint32_t interhunk_lines;
+ /**
+ * The object ID type to emit in diffs; this is used by functions
+ * that operate without a repository - namely `git_diff_buffers`,
+ * or `git_diff_blobs` and `git_diff_blob_to_buffer` when one blob
+ * is `NULL`.
+ *
+ * This may be omitted (set to `0`). If a repository is available,
+ * the object ID format of the repository will be used. If no
+ * repository is available then the default is `GIT_OID_SHA`.
+ *
+ * If this is specified and a repository is available, then the
+ * specified `oid_type` must match the repository's object ID
+ * format.
+ */
+ git_oid_t oid_type;
+
/**
* The abbreviation length to use when formatting object ids.
* Defaults to the value of 'core.abbrev' from the config, or 7 if unset.
@@ -446,10 +470,10 @@ typedef struct {
const char *new_prefix;
} git_diff_options;
-/* The current version of the diff options structure */
+/** The current version of the diff options structure */
#define GIT_DIFF_OPTIONS_VERSION 1
-/* Stack initializer for diff options. Alternatively use
+/** Stack initializer for diff options. Alternatively use
* `git_diff_options_init` programmatic initialization.
*/
#define GIT_DIFF_OPTIONS_INIT \
@@ -475,12 +499,14 @@ GIT_EXTERN(int) git_diff_options_init(
* @param delta A pointer to the delta data for the file
* @param progress Goes from 0 to 1 over the diff
* @param payload User-specified pointer from foreach function
+ * @return 0 or an error code
*/
typedef int GIT_CALLBACK(git_diff_file_cb)(
const git_diff_delta *delta,
float progress,
void *payload);
+/** Maximum size of the hunk header */
#define GIT_DIFF_HUNK_HEADER_SIZE 128
/**
@@ -497,7 +523,7 @@ typedef enum {
GIT_DIFF_BINARY_LITERAL,
/** The binary data is the delta from one side to the other. */
- GIT_DIFF_BINARY_DELTA,
+ GIT_DIFF_BINARY_DELTA
} git_diff_binary_t;
/** The contents of one of the files in a binary diff. */
@@ -541,6 +567,11 @@ typedef struct {
/**
* When iterating over a diff, callback that will be made for
* binary content within the diff.
+ *
+ * @param delta the delta
+ * @param binary the binary content
+ * @param payload the user-specified callback payload
+ * @return 0 or an error code
*/
typedef int GIT_CALLBACK(git_diff_binary_cb)(
const git_diff_delta *delta,
@@ -567,6 +598,11 @@ typedef struct {
/**
* When iterating over a diff, callback that will be made per hunk.
+ *
+ * @param delta the delta
+ * @param hunk the hunk
+ * @param payload the user-specified callback payload
+ * @return 0 or an error code
*/
typedef int GIT_CALLBACK(git_diff_hunk_cb)(
const git_diff_delta *delta,
@@ -628,6 +664,12 @@ typedef struct {
* When printing a diff, callback that will be made to output each line
* of text. This uses some extra GIT_DIFF_LINE_... constants for output
* of lines of file and hunk headers.
+ *
+ * @param delta the delta that contains the line
+ * @param hunk the hunk that contains the line
+ * @param line the line in the diff
+ * @param payload the user-specified callback payload
+ * @return 0 or an error code
*/
typedef int GIT_CALLBACK(git_diff_line_cb)(
const git_diff_delta *delta, /**< delta that contains this data */
@@ -706,7 +748,7 @@ typedef enum {
* GIT_DIFF_INCLUDE_UNMODIFIED flag. If you do not want UNMODIFIED
* records in the final result, pass this flag to have them removed.
*/
- GIT_DIFF_FIND_REMOVE_UNMODIFIED = (1u << 16),
+ GIT_DIFF_FIND_REMOVE_UNMODIFIED = (1u << 16)
} git_diff_find_t;
/**
@@ -758,7 +800,7 @@ typedef struct {
uint16_t copy_threshold;
/**
- * Treshold below which similar files will be split into a delete/add pair.
+ * Threshold below which similar files will be split into a delete/add pair.
* This is equivalent to the last part of the -B option. Defaults to 60.
*/
uint16_t break_rewrite_threshold;
@@ -768,7 +810,7 @@ typedef struct {
*
* This is a little different from the `-l` option from Git because we
* will still process up to this many matches before abandoning the search.
- * Defaults to 200.
+ * Defaults to 1000.
*/
size_t rename_limit;
@@ -785,7 +827,10 @@ typedef struct {
git_diff_similarity_metric *metric;
} git_diff_find_options;
+/** Current version for the `git_diff_find_options` structure */
#define GIT_DIFF_FIND_OPTIONS_VERSION 1
+
+/** Static constructor for `git_diff_find_options` */
#define GIT_DIFF_FIND_OPTIONS_INIT {GIT_DIFF_FIND_OPTIONS_VERSION}
/**
@@ -831,6 +876,7 @@ GIT_EXTERN(void) git_diff_free(git_diff *diff);
* @param old_tree A git_tree object to diff from, or NULL for empty tree.
* @param new_tree A git_tree object to diff to, or NULL for empty tree.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_tree_to_tree(
git_diff **diff,
@@ -857,6 +903,7 @@ GIT_EXTERN(int) git_diff_tree_to_tree(
* @param old_tree A git_tree object to diff from, or NULL for empty tree.
* @param index The index to diff with; repo index used if NULL.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_tree_to_index(
git_diff **diff,
@@ -884,6 +931,7 @@ GIT_EXTERN(int) git_diff_tree_to_index(
* @param repo The repository.
* @param index The index to diff from; repo index used if NULL.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_index_to_workdir(
git_diff **diff,
@@ -913,6 +961,7 @@ GIT_EXTERN(int) git_diff_index_to_workdir(
* @param repo The repository containing the tree.
* @param old_tree A git_tree object to diff from, or NULL for empty tree.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_tree_to_workdir(
git_diff **diff,
@@ -932,6 +981,7 @@ GIT_EXTERN(int) git_diff_tree_to_workdir(
* @param repo The repository containing the tree.
* @param old_tree A git_tree object to diff from, or NULL for empty tree.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_tree_to_workdir_with_index(
git_diff **diff,
@@ -950,6 +1000,7 @@ GIT_EXTERN(int) git_diff_tree_to_workdir_with_index(
* @param old_index A git_index object to diff from.
* @param new_index A git_index object to diff to.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_index_to_index(
git_diff **diff,
@@ -970,6 +1021,7 @@ GIT_EXTERN(int) git_diff_index_to_index(
*
* @param onto Diff to merge into.
* @param from Diff to merge.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_merge(
git_diff *onto,
@@ -1107,7 +1159,7 @@ typedef enum {
GIT_DIFF_FORMAT_RAW = 3u, /**< like git diff --raw */
GIT_DIFF_FORMAT_NAME_ONLY = 4u, /**< like git diff --name-only */
GIT_DIFF_FORMAT_NAME_STATUS = 5u, /**< like git diff --name-status */
- GIT_DIFF_FORMAT_PATCH_ID = 6u, /**< git diff as used by git patch-id */
+ GIT_DIFF_FORMAT_PATCH_ID = 6u /**< git diff as used by git patch-id */
} git_diff_format_t;
/**
@@ -1145,9 +1197,8 @@ GIT_EXTERN(int) git_diff_to_buf(
/**@}*/
-
/*
- * Misc
+ * Low-level file comparison, invoking callbacks per difference.
*/
/**
@@ -1263,6 +1314,25 @@ GIT_EXTERN(int) git_diff_buffers(
git_diff_line_cb line_cb,
void *payload);
+/* Patch file parsing. */
+
+/**
+ * Options for parsing a diff / patch file.
+ */
+typedef struct {
+ unsigned int version;
+ git_oid_t oid_type;
+} git_diff_parse_options;
+
+/** The current version of the diff parse options structure */
+#define GIT_DIFF_PARSE_OPTIONS_VERSION 1
+
+/** Stack initializer for diff parse options. Alternatively use
+ * `git_diff_parse_options_init` programmatic initialization.
+ */
+#define GIT_DIFF_PARSE_OPTIONS_INIT \
+ { GIT_DIFF_PARSE_OPTIONS_VERSION, GIT_OID_DEFAULT }
+
/**
* Read the contents of a git patch file into a `git_diff` object.
*
@@ -1285,7 +1355,11 @@ GIT_EXTERN(int) git_diff_buffers(
GIT_EXTERN(int) git_diff_from_buffer(
git_diff **out,
const char *content,
- size_t content_len);
+ size_t content_len
+#ifdef GIT_EXPERIMENTAL_SHA256
+ , git_diff_parse_options *opts
+#endif
+ );
/**
* This is an opaque structure which is allocated by `git_diff_get_stats`.
@@ -1311,13 +1385,13 @@ typedef enum {
GIT_DIFF_STATS_NUMBER = (1u << 2),
/** Extended header information such as creations, renames and mode changes, equivalent of `--summary` */
- GIT_DIFF_STATS_INCLUDE_SUMMARY = (1u << 3),
+ GIT_DIFF_STATS_INCLUDE_SUMMARY = (1u << 3)
} git_diff_stats_format_t;
/**
* Accumulate diff statistics for all patches.
*
- * @param out Structure containg the diff statistics.
+ * @param out Structure containing the diff statistics.
* @param diff A git_diff generated by one of the above functions.
* @return 0 on success; non-zero on error
*/
@@ -1386,7 +1460,10 @@ typedef struct git_diff_patchid_options {
unsigned int version;
} git_diff_patchid_options;
+/** Current version for the `git_diff_patchid_options` structure */
#define GIT_DIFF_PATCHID_OPTIONS_VERSION 1
+
+/** Static constructor for `git_diff_patchid_options` */
#define GIT_DIFF_PATCHID_OPTIONS_INIT { GIT_DIFF_PATCHID_OPTIONS_VERSION }
/**
@@ -1424,8 +1501,7 @@ GIT_EXTERN(int) git_diff_patchid_options_init(
*/
GIT_EXTERN(int) git_diff_patchid(git_oid *out, git_diff *diff, git_diff_patchid_options *opts);
-GIT_END_DECL
-
/** @} */
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/email.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/email.h
index b56be5d..ad37e42 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/email.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/email.h
@@ -8,10 +8,11 @@
#define INCLUDE_git_email_h__
#include "common.h"
+#include "diff.h"
/**
* @file git2/email.h
- * @brief Git email formatting and application routines.
+ * @brief Produce email-ready patches
* @ingroup Git
* @{
*/
@@ -34,7 +35,7 @@ typedef enum {
GIT_EMAIL_CREATE_ALWAYS_NUMBER = (1u << 1),
/** Do not perform rename or similarity detection. */
- GIT_EMAIL_CREATE_NO_RENAMES = (1u << 2),
+ GIT_EMAIL_CREATE_NO_RENAMES = (1u << 2)
} git_email_create_flags_t;
/**
@@ -70,11 +71,14 @@ typedef struct {
size_t reroll_number;
} git_email_create_options;
-/*
+/** Current version for the `git_email_create_options` structure */
+#define GIT_EMAIL_CREATE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_email_create_options`
+ *
* By default, our options include rename detection and binary
* diffs to match `git format-patch`.
*/
-#define GIT_EMAIL_CREATE_OPTIONS_VERSION 1
#define GIT_EMAIL_CREATE_OPTIONS_INIT \
{ \
GIT_EMAIL_CREATE_OPTIONS_VERSION, \
@@ -83,30 +87,6 @@ typedef struct {
GIT_DIFF_FIND_OPTIONS_INIT \
}
-/**
- * Create a diff for a commit in mbox format for sending via email.
- *
- * @param out buffer to store the e-mail patch in
- * @param diff the changes to include in the email
- * @param patch_idx the patch index
- * @param patch_count the total number of patches that will be included
- * @param commit_id the commit id for this change
- * @param summary the commit message for this change
- * @param body optional text to include above the diffstat
- * @param author the person who authored this commit
- * @param opts email creation options
- */
-GIT_EXTERN(int) git_email_create_from_diff(
- git_buf *out,
- git_diff *diff,
- size_t patch_idx,
- size_t patch_count,
- const git_oid *commit_id,
- const char *summary,
- const char *body,
- const git_signature *author,
- const git_email_create_options *opts);
-
/**
* Create a diff for a commit in mbox format for sending via email.
* The commit must not be a merge commit.
@@ -114,14 +94,14 @@ GIT_EXTERN(int) git_email_create_from_diff(
* @param out buffer to store the e-mail patch in
* @param commit commit to create a patch for
* @param opts email creation options
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_email_create_from_commit(
git_buf *out,
git_commit *commit,
const git_email_create_options *opts);
-GIT_END_DECL
-
/** @} */
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/errors.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/errors.h
index de51582..1141390 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/errors.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/errors.h
@@ -11,7 +11,7 @@
/**
* @file git2/errors.h
- * @brief Git error handling routines and variables
+ * @brief Error handling routines and variables
* @ingroup Git
* @{
*/
@@ -19,25 +19,32 @@ GIT_BEGIN_DECL
/** Generic return codes */
typedef enum {
- GIT_OK = 0, /**< No error */
+ /**
+ * No error occurred; the call was successful.
+ */
+ GIT_OK = 0,
+
+ /**
+ * An error occurred; call `git_error_last` for more information.
+ */
+ GIT_ERROR = -1,
- GIT_ERROR = -1, /**< Generic error */
- GIT_ENOTFOUND = -3, /**< Requested object could not be found */
- GIT_EEXISTS = -4, /**< Object exists preventing operation */
- GIT_EAMBIGUOUS = -5, /**< More than one object matches */
- GIT_EBUFS = -6, /**< Output buffer too short to hold data */
+ GIT_ENOTFOUND = -3, /**< Requested object could not be found. */
+ GIT_EEXISTS = -4, /**< Object exists preventing operation. */
+ GIT_EAMBIGUOUS = -5, /**< More than one object matches. */
+ GIT_EBUFS = -6, /**< Output buffer too short to hold data. */
/**
* GIT_EUSER is a special error that is never generated by libgit2
* code. You can return it from a callback (e.g to stop an iteration)
* to know that it was generated by the callback and not by libgit2.
*/
- GIT_EUSER = -7,
+ GIT_EUSER = -7,
- GIT_EBAREREPO = -8, /**< Operation not allowed on bare repository */
- GIT_EUNBORNBRANCH = -9, /**< HEAD refers to branch with no commits */
- GIT_EUNMERGED = -10, /**< Merge in progress prevented operation */
- GIT_ENONFASTFORWARD = -11, /**< Reference was not fast-forwardable */
+ GIT_EBAREREPO = -8, /**< Operation not allowed on bare repository. */
+ GIT_EUNBORNBRANCH = -9, /**< HEAD refers to branch with no commits. */
+ GIT_EUNMERGED = -10, /**< Merge in progress prevented operation */
+ GIT_ENONFASTFORWARD = -11, /**< Reference was not fast-forwardable */
GIT_EINVALIDSPEC = -12, /**< Name/ref spec was not in a valid format */
GIT_ECONFLICT = -13, /**< Checkout conflicts prevented operation */
GIT_ELOCKED = -14, /**< Lock file prevented operation */
@@ -58,20 +65,17 @@ typedef enum {
GIT_EMISMATCH = -33, /**< Hashsum mismatch in object */
GIT_EINDEXDIRTY = -34, /**< Unsaved changes in the index would be overwritten */
GIT_EAPPLYFAIL = -35, /**< Patch application failed */
+ GIT_EOWNER = -36, /**< The object is not owned by the current user */
+ GIT_TIMEOUT = -37, /**< The operation timed out */
+ GIT_EUNCHANGED = -38, /**< There were no changes */
+ GIT_ENOTSUPPORTED = -39, /**< An option is not supported */
+ GIT_EREADONLY = -40 /**< The subject is read-only */
} git_error_code;
/**
- * Structure to store extra details of the last error that occurred.
- *
- * This is kept on a per-thread basis if GIT_THREADS was defined when the
- * library was build, otherwise one is kept globally for the library
+ * Error classes are the category of error. They reflect the area of the
+ * code where an error occurred.
*/
-typedef struct {
- char *message;
- int klass;
-} git_error;
-
-/** Error classes */
typedef enum {
GIT_ERROR_NONE = 0,
GIT_ERROR_NOMEMORY,
@@ -106,59 +110,45 @@ typedef enum {
GIT_ERROR_FILESYSTEM,
GIT_ERROR_PATCH,
GIT_ERROR_WORKTREE,
- GIT_ERROR_SHA1,
+ GIT_ERROR_SHA,
GIT_ERROR_HTTP,
- GIT_ERROR_INTERNAL
+ GIT_ERROR_INTERNAL,
+ GIT_ERROR_GRAFTS
} git_error_t;
/**
- * Return the last `git_error` object that was generated for the
- * current thread.
- *
- * The default behaviour of this function is to return NULL if no previous error has occurred.
- * However, libgit2's error strings are not cleared aggressively, so a prior
- * (unrelated) error may be returned. This can be avoided by only calling
- * this function if the prior call to a libgit2 API returned an error.
+ * Structure to store extra details of the last error that occurred.
*
- * @return A git_error object.
- */
-GIT_EXTERN(const git_error *) git_error_last(void);
-
-/**
- * Clear the last library error that occurred for this thread.
+ * This is kept on a per-thread basis if GIT_THREADS was defined when the
+ * library was build, otherwise one is kept globally for the library
*/
-GIT_EXTERN(void) git_error_clear(void);
+typedef struct {
+ char *message; /**< The error message for the last error. */
+ int klass; /**< The category of the last error. @type git_error_t */
+} git_error;
/**
- * Set the error message string for this thread.
+ * Return the last `git_error` object that was generated for the
+ * current thread.
*
- * This function is public so that custom ODB backends and the like can
- * relay an error message through libgit2. Most regular users of libgit2
- * will never need to call this function -- actually, calling it in most
- * circumstances (for example, calling from within a callback function)
- * will just end up having the value overwritten by libgit2 internals.
+ * This function will never return NULL.
*
- * This error message is stored in thread-local storage and only applies
- * to the particular thread that this libgit2 call is made from.
+ * Callers should not rely on this to determine whether an error has
+ * occurred. For error checking, callers should examine the return
+ * codes of libgit2 functions.
*
- * @param error_class One of the `git_error_t` enum above describing the
- * general subsystem that is responsible for the error.
- * @param string The formatted error message to keep
- * @return 0 on success or -1 on failure
- */
-GIT_EXTERN(int) git_error_set_str(int error_class, const char *string);
-
-/**
- * Set the error message to a special value for memory allocation failure.
+ * This call can only reliably report error messages when an error
+ * has occurred. (It may contain stale information if it is called
+ * after a different function that succeeds.)
+ *
+ * The memory for this object is managed by libgit2. It should not
+ * be freed.
*
- * The normal `git_error_set_str()` function attempts to `strdup()` the
- * string that is passed in. This is not a good idea when the error in
- * question is a memory allocation failure. That circumstance has a
- * special setter function that sets the error string to a known and
- * statically allocated internal value.
+ * @return A pointer to a `git_error` object that describes the error.
*/
-GIT_EXTERN(void) git_error_set_oom(void);
+GIT_EXTERN(const git_error *) git_error_last(void);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/experimental.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/experimental.h
new file mode 100644
index 0000000..543f62f
--- /dev/null
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/experimental.h
@@ -0,0 +1,13 @@
+/*
+ * Copyright (C) the libgit2 contributors. All rights reserved.
+ *
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
+ * a Linking Exception. For full terms see the included COPYING file.
+ */
+
+#ifndef INCLUDE_experimental_h__
+#define INCLUDE_experimental_h__
+
+/* #undef GIT_EXPERIMENTAL_SHA256 */
+
+#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/filter.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/filter.h
index 0465e5b..cf6c5f5 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/filter.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/filter.h
@@ -14,9 +14,15 @@
/**
* @file git2/filter.h
- * @brief Git filter APIs
- *
+ * @brief Filters modify files during checkout or commit
* @ingroup Git
+ *
+ * During checkout, filters update a file from a "canonical" state to
+ * a format appropriate for the local filesystem; during commit, filters
+ * produce the canonical state. For example, on Windows, the line ending
+ * filters _may_ take a canonical state (with Unix-style newlines) in
+ * the repository, and place the contents on-disk with Windows-style
+ * `\r\n` line endings.
* @{
*/
GIT_BEGIN_DECL
@@ -32,7 +38,7 @@ typedef enum {
GIT_FILTER_TO_WORKTREE = 0,
GIT_FILTER_SMUDGE = GIT_FILTER_TO_WORKTREE,
GIT_FILTER_TO_ODB = 1,
- GIT_FILTER_CLEAN = GIT_FILTER_TO_ODB,
+ GIT_FILTER_CLEAN = GIT_FILTER_TO_ODB
} git_filter_mode_t;
/**
@@ -54,7 +60,7 @@ typedef enum {
* Load attributes from `.gitattributes` in a given commit.
* This can only be specified in a `git_filter_options`.
*/
- GIT_FILTER_ATTRIBUTES_FROM_COMMIT = (1u << 3),
+ GIT_FILTER_ATTRIBUTES_FROM_COMMIT = (1u << 3)
} git_filter_flag_t;
/**
@@ -79,8 +85,11 @@ typedef struct {
git_oid attr_commit_id;
} git_filter_options;
- #define GIT_FILTER_OPTIONS_VERSION 1
- #define GIT_FILTER_OPTIONS_INIT {GIT_FILTER_OPTIONS_VERSION}
+/** Current version for the `git_filter_options` structure */
+#define GIT_FILTER_OPTIONS_VERSION 1
+
+/** Static constructor for `git_filter_options` */
+#define GIT_FILTER_OPTIONS_INIT {GIT_FILTER_OPTIONS_VERSION}
/**
* A filter that can transform file data
@@ -196,6 +205,7 @@ GIT_EXTERN(int) git_filter_list_apply_to_buffer(
* @param repo the repository in which to perform the filtering
* @param path the path of the file to filter, a relative path will be
* taken as relative to the workdir
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_filter_list_apply_to_file(
git_buf *out,
@@ -209,6 +219,7 @@ GIT_EXTERN(int) git_filter_list_apply_to_file(
* @param out buffer into which to store the filtered file
* @param filters the list of filters to apply
* @param blob the blob to filter
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_filter_list_apply_to_blob(
git_buf *out,
@@ -222,6 +233,7 @@ GIT_EXTERN(int) git_filter_list_apply_to_blob(
* @param buffer the buffer to filter
* @param len the size of the buffer
* @param target the stream into which the data will be written
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_filter_list_stream_buffer(
git_filter_list *filters,
@@ -237,6 +249,7 @@ GIT_EXTERN(int) git_filter_list_stream_buffer(
* @param path the path of the file to filter, a relative path will be
* taken as relative to the workdir
* @param target the stream into which the data will be written
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_filter_list_stream_file(
git_filter_list *filters,
@@ -250,6 +263,7 @@ GIT_EXTERN(int) git_filter_list_stream_file(
* @param filters the list of filters to apply
* @param blob the blob to filter
* @param target the stream into which the data will be written
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_filter_list_stream_blob(
git_filter_list *filters,
@@ -263,9 +277,7 @@ GIT_EXTERN(int) git_filter_list_stream_blob(
*/
GIT_EXTERN(void) git_filter_list_free(git_filter_list *filters);
-
-GIT_END_DECL
-
/** @} */
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/global.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/global.h
index 2a87e10..f15eb2d 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/global.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/global.h
@@ -9,6 +9,12 @@
#include "common.h"
+/**
+ * @file git2/global.h
+ * @brief libgit2 library initializer and shutdown functionality
+ * @ingroup Git
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -32,7 +38,7 @@ GIT_EXTERN(int) git_libgit2_init(void);
* many times as `git_libgit2_init()` was called - it will return the
* number of remainining initializations that have not been shutdown
* (after this one).
- *
+ *
* @return the number of remaining initializations of the library, or an
* error code.
*/
@@ -40,5 +46,6 @@ GIT_EXTERN(int) git_libgit2_shutdown(void);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/graph.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/graph.h
index 712ae47..1792020 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/graph.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/graph.h
@@ -13,7 +13,7 @@
/**
* @file git2/graph.h
- * @brief Git graph traversal routines
+ * @brief Graph traversal routines
* @defgroup git_revwalk Git graph traversal routines
* @ingroup Git
* @{
@@ -33,6 +33,7 @@ GIT_BEGIN_DECL
* @param repo the repository where the commits exist
* @param local the commit for local
* @param upstream the commit for upstream
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_graph_ahead_behind(size_t *ahead, size_t *behind, git_repository *repo, const git_oid *local, const git_oid *upstream);
@@ -60,8 +61,8 @@ GIT_EXTERN(int) git_graph_descendant_of(
*
* @param repo the repository where the commits exist
* @param commit a previously loaded commit
- * @param length the number of commits in the provided `descendant_array`
* @param descendant_array oids of the commits
+ * @param length the number of commits in the provided `descendant_array`
* @return 1 if the given commit is an ancestor of any of the given potential
* descendants, 0 if not, error code otherwise.
*/
@@ -73,4 +74,5 @@ GIT_EXTERN(int) git_graph_reachable_from_any(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/ignore.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/ignore.h
index f5143f3..730f221 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/ignore.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/ignore.h
@@ -10,6 +10,15 @@
#include "common.h"
#include "types.h"
+/**
+ * @file git2/ignore.h
+ * @brief Ignore particular untracked files
+ * @ingroup Git
+ * @{
+ *
+ * When examining the repository status, git can optionally ignore
+ * specified untracked files.
+ */
GIT_BEGIN_DECL
/**
@@ -29,7 +38,7 @@ GIT_BEGIN_DECL
* This would add three rules to the ignores.
*
* @param repo The repository to add ignore rules to.
- * @param rules Text of rules, a la the contents of a .gitignore file.
+ * @param rules Text of rules, the contents to add on a .gitignore file.
* It is okay to have multiple rules in the text; if so,
* each rule should be terminated with a newline.
* @return 0 on success
@@ -73,6 +82,7 @@ GIT_EXTERN(int) git_ignore_path_is_ignored(
git_repository *repo,
const char *path);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/index.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/index.h
index 532a520..0adff1a 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/index.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/index.h
@@ -15,9 +15,14 @@
/**
* @file git2/index.h
- * @brief Git index parsing and manipulation routines
+ * @brief Index (aka "cache" aka "staging area")
* @defgroup git_index Git index parsing and manipulation routines
* @ingroup Git
+ *
+ * The index (or "cache", or "staging area") is the contents of the
+ * next commit. In addition, the index stores other data, such as
+ * conflicts that occurred during the last merge operation, and
+ * the "treecache" to speed up various on-disk operations.
* @{
*/
GIT_BEGIN_DECL
@@ -77,8 +82,11 @@ typedef struct git_index_entry {
* data in the `flags`.
*/
+/** Mask for name length */
#define GIT_INDEX_ENTRY_NAMEMASK (0x0fff)
+/** Mask for index entry stage */
#define GIT_INDEX_ENTRY_STAGEMASK (0x3000)
+/** Shift bits for index entry */
#define GIT_INDEX_ENTRY_STAGESHIFT 12
/**
@@ -86,12 +94,20 @@ typedef struct git_index_entry {
*/
typedef enum {
GIT_INDEX_ENTRY_EXTENDED = (0x4000),
- GIT_INDEX_ENTRY_VALID = (0x8000),
+ GIT_INDEX_ENTRY_VALID = (0x8000)
} git_index_entry_flag_t;
+/**
+ * Macro to get the stage value (0 for the "main index", or a conflict
+ * value) from an index entry.
+ */
#define GIT_INDEX_ENTRY_STAGE(E) \
(((E)->flags & GIT_INDEX_ENTRY_STAGEMASK) >> GIT_INDEX_ENTRY_STAGESHIFT)
+/**
+ * Macro to set the stage value (0 for the "main index", or a conflict
+ * value) for an index entry.
+ */
#define GIT_INDEX_ENTRY_STAGE_SET(E,S) do { \
(E)->flags = ((E)->flags & ~GIT_INDEX_ENTRY_STAGEMASK) | \
(((S) & 0x03) << GIT_INDEX_ENTRY_STAGESHIFT); } while (0)
@@ -119,7 +135,7 @@ typedef enum {
GIT_INDEX_ENTRY_EXTENDED_FLAGS = (GIT_INDEX_ENTRY_INTENT_TO_ADD | GIT_INDEX_ENTRY_SKIP_WORKTREE),
- GIT_INDEX_ENTRY_UPTODATE = (1 << 2),
+ GIT_INDEX_ENTRY_UPTODATE = (1 << 2)
} git_index_entry_extended_flag_t;
/** Capabilities of system that affect index actions. */
@@ -127,11 +143,18 @@ typedef enum {
GIT_INDEX_CAPABILITY_IGNORE_CASE = 1,
GIT_INDEX_CAPABILITY_NO_FILEMODE = 2,
GIT_INDEX_CAPABILITY_NO_SYMLINKS = 4,
- GIT_INDEX_CAPABILITY_FROM_OWNER = -1,
+ GIT_INDEX_CAPABILITY_FROM_OWNER = -1
} git_index_capability_t;
-/** Callback for APIs that add/remove/update files matching pathspec */
+/**
+ * Callback for APIs that add/remove/update files matching pathspec
+ *
+ * @param path the path
+ * @param matched_pathspec the given pathspec
+ * @param payload the user-specified payload
+ * @return 0 to continue with the index operation, positive number to skip this file for the index operation, negative number on failure
+ */
typedef int GIT_CALLBACK(git_index_matched_path_cb)(
const char *path, const char *matched_pathspec, void *payload);
@@ -140,7 +163,7 @@ typedef enum {
GIT_INDEX_ADD_DEFAULT = 0,
GIT_INDEX_ADD_FORCE = (1u << 0),
GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH = (1u << 1),
- GIT_INDEX_ADD_CHECK_PATHSPEC = (1u << 2),
+ GIT_INDEX_ADD_CHECK_PATHSPEC = (1u << 2)
} git_index_add_option_t;
/** Git index stage states */
@@ -163,9 +186,77 @@ typedef enum {
GIT_INDEX_STAGE_OURS = 2,
/** The "theirs" side of a conflict. */
- GIT_INDEX_STAGE_THEIRS = 3,
+ GIT_INDEX_STAGE_THEIRS = 3
} git_index_stage_t;
+#ifdef GIT_EXPERIMENTAL_SHA256
+
+/**
+ * The options for opening or creating an index.
+ *
+ * Initialize with `GIT_INDEX_OPTIONS_INIT`. Alternatively, you can
+ * use `git_index_options_init`.
+ *
+ * @options[version] GIT_INDEX_OPTIONS_VERSION
+ * @options[init_macro] GIT_INDEX_OPTIONS_INIT
+ * @options[init_function] git_index_options_init
+ */
+typedef struct git_index_options {
+ unsigned int version; /**< The version */
+
+ /**
+ * The object ID type for the object IDs that exist in the index.
+ *
+ * If this is not specified, this defaults to `GIT_OID_SHA1`.
+ */
+ git_oid_t oid_type;
+} git_index_options;
+
+/** Current version for the `git_index_options` structure */
+#define GIT_INDEX_OPTIONS_VERSION 1
+
+/** Static constructor for `git_index_options` */
+#define GIT_INDEX_OPTIONS_INIT { GIT_INDEX_OPTIONS_VERSION }
+
+/**
+ * Initialize git_index_options structure
+ *
+ * Initializes a `git_index_options` with default values. Equivalent to creating
+ * an instance with GIT_INDEX_OPTIONS_INIT.
+ *
+ * @param opts The `git_index_options` struct to initialize.
+ * @param version The struct version; pass `GIT_INDEX_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_index_options_init(
+ git_index_options *opts,
+ unsigned int version);
+
+/**
+ * Creates a new bare Git index object, without a repository to back
+ * it. This index object is capable of storing SHA256 objects.
+ *
+ * @param index_out the pointer for the new index
+ * @param index_path the path to the index file in disk
+ * @param opts the options for opening the index, or NULL
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_index_open(
+ git_index **index_out,
+ const char *index_path,
+ const git_index_options *opts);
+
+/**
+ * Create an in-memory index object.
+ *
+ * @param index_out the pointer for the new index
+ * @param opts the options for opening the index, or NULL
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_index_new(git_index **index_out, const git_index_options *opts);
+
+#else
+
/**
* Create a new bare Git index object as a memory representation
* of the Git index file in 'index_path', without a repository
@@ -180,11 +271,11 @@ typedef enum {
*
* The index must be freed once it's no longer in use.
*
- * @param out the pointer for the new index
+ * @param index_out the pointer for the new index
* @param index_path the path to the index file in disk
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_index_open(git_index **out, const char *index_path);
+GIT_EXTERN(int) git_index_open(git_index **index_out, const char *index_path);
/**
* Create an in-memory index object.
@@ -194,10 +285,12 @@ GIT_EXTERN(int) git_index_open(git_index **out, const char *index_path);
*
* The index must be freed once it's no longer in use.
*
- * @param out the pointer for the new index
+ * @param index_out the pointer for the new index
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_index_new(git_index **out);
+GIT_EXTERN(int) git_index_new(git_index **index_out);
+
+#endif
/**
* Free an existing index object.
@@ -296,6 +389,7 @@ GIT_EXTERN(int) git_index_write(git_index *index);
*/
GIT_EXTERN(const char *) git_index_path(const git_index *index);
+#ifndef GIT_DEPRECATE_HARD
/**
* Get the checksum of the index
*
@@ -303,10 +397,12 @@ GIT_EXTERN(const char *) git_index_path(const git_index *index);
* last 20 bytes which are the checksum itself). In cases where the
* index does not exist on-disk, it will be zeroed out.
*
+ * @deprecated this function is deprecated with no replacement
* @param index an existing index object
* @return a pointer to the checksum of the index
*/
GIT_EXTERN(const git_oid *) git_index_checksum(git_index *index);
+#endif
/**
* Read a tree into the index file with stats
@@ -491,6 +587,7 @@ GIT_EXTERN(int) git_index_entry_is_conflict(const git_index_entry *entry);
*
* @param iterator_out The newly created iterator
* @param index The index to iterate
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_index_iterator_new(
git_index_iterator **iterator_out,
@@ -787,6 +884,7 @@ GIT_EXTERN(int) git_index_conflict_cleanup(git_index *index);
/**
* Determine if the index contains entries representing file conflicts.
*
+ * @param index An existing index object.
* @return 1 if at least one conflict is found, 0 otherwise.
*/
GIT_EXTERN(int) git_index_has_conflicts(const git_index *index);
@@ -811,6 +909,7 @@ GIT_EXTERN(int) git_index_conflict_iterator_new(
* @param ancestor_out Pointer to store the ancestor side of the conflict
* @param our_out Pointer to store our side of the conflict
* @param their_out Pointer to store their side of the conflict
+ * @param iterator The conflict iterator.
* @return 0 (no error), GIT_ITEROVER (iteration is done) or an error code
* (negative value)
*/
@@ -830,4 +929,5 @@ GIT_EXTERN(void) git_index_conflict_iterator_free(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/indexer.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/indexer.h
index a434d24..9aaedc3 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/indexer.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/indexer.h
@@ -4,13 +4,23 @@
* This file is part of libgit2, distributed under the GNU GPL v2 with
* a Linking Exception. For full terms see the included COPYING file.
*/
-#ifndef _INCLUDE_git_indexer_h__
-#define _INCLUDE_git_indexer_h__
+#ifndef INCLUDE_git_indexer_h__
+#define INCLUDE_git_indexer_h__
#include "common.h"
#include "types.h"
#include "oid.h"
+/**
+ * @file git2/indexer.h
+ * @brief Packfile indexing
+ * @ingroup Git
+ * @{
+ *
+ * Indexing is the operation of taking a packfile - which is simply a
+ * collection of unordered commits - and producing an "index" so that
+ * one can lookup a commit in the packfile by object ID.
+ */
GIT_BEGIN_DECL
/** A git indexer object */
@@ -53,6 +63,7 @@ typedef struct git_indexer_progress {
*
* @param stats Structure containing information about the state of the transfer
* @param payload Payload provided by caller
+ * @return 0 on success or an error code
*/
typedef int GIT_CALLBACK(git_indexer_progress_cb)(const git_indexer_progress *stats, void *payload);
@@ -62,6 +73,22 @@ typedef int GIT_CALLBACK(git_indexer_progress_cb)(const git_indexer_progress *st
typedef struct git_indexer_options {
unsigned int version;
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /** permissions to use creating packfile or 0 for defaults */
+ unsigned int mode;
+
+ /** the type of object ids in the packfile or 0 for SHA1 */
+ git_oid_t oid_type;
+
+ /**
+ * object database from which to read base objects when
+ * fixing thin packs. This can be NULL if there are no thin
+ * packs; if a thin pack is encountered, an error will be
+ * returned if there are bases missing.
+ */
+ git_odb *odb;
+#endif
+
/** progress_cb function to call with progress information */
git_indexer_progress_cb progress_cb;
@@ -72,7 +99,10 @@ typedef struct git_indexer_options {
unsigned char verify;
} git_indexer_options;
+/** Current version for the `git_indexer_options` structure */
#define GIT_INDEXER_OPTIONS_VERSION 1
+
+/** Static constructor for `git_indexer_options` */
#define GIT_INDEXER_OPTIONS_INIT { GIT_INDEXER_OPTIONS_VERSION }
/**
@@ -87,6 +117,20 @@ GIT_EXTERN(int) git_indexer_options_init(
git_indexer_options *opts,
unsigned int version);
+#ifdef GIT_EXPERIMENTAL_SHA256
+/**
+ * Create a new indexer instance
+ *
+ * @param out where to store the indexer instance
+ * @param path to the directory where the packfile should be stored
+ * @param opts the options to create the indexer with
+ * @return 0 or an error code.
+ */
+GIT_EXTERN(int) git_indexer_new(
+ git_indexer **out,
+ const char *path,
+ git_indexer_options *opts);
+#else
/**
* Create a new indexer instance
*
@@ -98,6 +142,7 @@ GIT_EXTERN(int) git_indexer_options_init(
* will be returned if there are bases missing)
* @param opts Optional structure containing additional options. See
* `git_indexer_options` above.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_indexer_new(
git_indexer **out,
@@ -105,6 +150,7 @@ GIT_EXTERN(int) git_indexer_new(
unsigned int mode,
git_odb *odb,
git_indexer_options *opts);
+#endif
/**
* Add data to the indexer
@@ -113,6 +159,7 @@ GIT_EXTERN(int) git_indexer_new(
* @param data the data to add
* @param size the size of the data in bytes
* @param stats stat storage
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_indexer_append(git_indexer *idx, const void *data, size_t size, git_indexer_progress *stats);
@@ -122,18 +169,35 @@ GIT_EXTERN(int) git_indexer_append(git_indexer *idx, const void *data, size_t si
* Resolve any pending deltas and write out the index file
*
* @param idx the indexer
+ * @param stats Stat storage.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_indexer_commit(git_indexer *idx, git_indexer_progress *stats);
+#ifndef GIT_DEPRECATE_HARD
/**
* Get the packfile's hash
*
* A packfile's name is derived from the sorted hashing of all object
* names. This is only correct after the index has been finalized.
*
+ * @deprecated use git_indexer_name
* @param idx the indexer instance
+ * @return the packfile's hash
*/
GIT_EXTERN(const git_oid *) git_indexer_hash(const git_indexer *idx);
+#endif
+
+/**
+ * Get the unique name for the resulting packfile.
+ *
+ * The packfile's name is derived from the packfile's content.
+ * This is only correct after the index has been finalized.
+ *
+ * @param idx the indexer instance
+ * @return a NUL terminated string for the packfile name
+ */
+GIT_EXTERN(const char *) git_indexer_name(const git_indexer *idx);
/**
* Free the indexer and its resources
@@ -142,6 +206,7 @@ GIT_EXTERN(const git_oid *) git_indexer_hash(const git_indexer *idx);
*/
GIT_EXTERN(void) git_indexer_free(git_indexer *idx);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/mailmap.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/mailmap.h
index 7c3f60f..fd6ae71 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/mailmap.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/mailmap.h
@@ -13,10 +13,15 @@
/**
* @file git2/mailmap.h
- * @brief Mailmap parsing routines
+ * @brief Mailmaps provide alternate email addresses for users
* @defgroup git_mailmap Git mailmap routines
* @ingroup Git
* @{
+ *
+ * A mailmap can be used to specify alternate email addresses for
+ * repository committers or authors. This allows systems to map
+ * commits made using different email addresses to the same logical
+ * person.
*/
GIT_BEGIN_DECL
@@ -112,4 +117,5 @@ GIT_EXTERN(int) git_mailmap_resolve_signature(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/merge.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/merge.h
index fc27c9d..be3b065 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/merge.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/merge.h
@@ -17,9 +17,12 @@
/**
* @file git2/merge.h
- * @brief Git merge routines
+ * @brief Merge re-joins diverging branches of history
* @defgroup git_merge Git merge routines
* @ingroup Git
+ *
+ * Merge will take two commits and attempt to produce a commit that
+ * includes the changes that were made in both branches.
* @{
*/
GIT_BEGIN_DECL
@@ -45,7 +48,10 @@ typedef struct {
unsigned int mode;
} git_merge_file_input;
+/** Current version for the `git_merge_file_input_options` structure */
#define GIT_MERGE_FILE_INPUT_VERSION 1
+
+/** Static constructor for `git_merge_file_input_options` */
#define GIT_MERGE_FILE_INPUT_INIT {GIT_MERGE_FILE_INPUT_VERSION}
/**
@@ -92,6 +98,14 @@ typedef enum {
* merge base to `git-merge-resolve`.
*/
GIT_MERGE_NO_RECURSIVE = (1 << 3),
+
+ /**
+ * Treat this merge as if it is to produce the virtual base
+ * of a recursive merge. This will ensure that there are
+ * no conflicts, any conflicting regions will keep conflict
+ * markers in the merge result.
+ */
+ GIT_MERGE_VIRTUAL_BASE = (1 << 4)
} git_merge_flag_t;
/**
@@ -127,7 +141,7 @@ typedef enum {
* which has the result of combining both files. The index will not
* record a conflict.
*/
- GIT_MERGE_FILE_FAVOR_UNION = 3,
+ GIT_MERGE_FILE_FAVOR_UNION = 3
} git_merge_file_favor_t;
/**
@@ -160,8 +174,19 @@ typedef enum {
/** Take extra time to find minimal diff */
GIT_MERGE_FILE_DIFF_MINIMAL = (1 << 7),
+
+ /** Create zdiff3 ("zealous diff3")-style files */
+ GIT_MERGE_FILE_STYLE_ZDIFF3 = (1 << 8),
+
+ /**
+ * Do not produce file conflicts when common regions have
+ * changed; keep the conflict markers in the file and accept
+ * that as the merge result.
+ */
+ GIT_MERGE_FILE_ACCEPT_CONFLICTS = (1 << 9)
} git_merge_file_flag_t;
+/** Default size for conflict markers */
#define GIT_MERGE_CONFLICT_MARKER_SIZE 7
/**
@@ -199,7 +224,10 @@ typedef struct {
unsigned short marker_size;
} git_merge_file_options;
+/** Current version for the `git_merge_file_options` structure */
#define GIT_MERGE_FILE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_merge_file_options` */
#define GIT_MERGE_FILE_OPTIONS_INIT {GIT_MERGE_FILE_OPTIONS_VERSION}
/**
@@ -294,7 +322,10 @@ typedef struct {
uint32_t file_flags;
} git_merge_options;
+/** Current version for the `git_merge_options` structure */
#define GIT_MERGE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_merge_options` */
#define GIT_MERGE_OPTIONS_INIT { \
GIT_MERGE_OPTIONS_VERSION, GIT_MERGE_FIND_RENAMES }
@@ -341,7 +372,7 @@ typedef enum {
* a valid commit. No merge can be performed, but the caller may wish
* to simply set HEAD to the target commit(s).
*/
- GIT_MERGE_ANALYSIS_UNBORN = (1 << 3),
+ GIT_MERGE_ANALYSIS_UNBORN = (1 << 3)
} git_merge_analysis_t;
/**
@@ -364,7 +395,7 @@ typedef enum {
* There is a `merge.ff=only` configuration setting, suggesting that
* the user only wants fast-forward merges.
*/
- GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY = (1 << 1),
+ GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY = (1 << 1)
} git_merge_preference_t;
/**
@@ -372,6 +403,7 @@ typedef enum {
* merging them into the HEAD of the repository.
*
* @param analysis_out analysis enumeration that the result is written into
+ * @param preference_out One of the `git_merge_preference_t` flag.
* @param repo the repository to merge
* @param their_heads the heads to merge into
* @param their_heads_len the number of heads to merge
@@ -389,6 +421,7 @@ GIT_EXTERN(int) git_merge_analysis(
* merging them into a reference.
*
* @param analysis_out analysis enumeration that the result is written into
+ * @param preference_out One of the `git_merge_preference_t` flag.
* @param repo the repository to merge
* @param our_ref the reference to perform the analysis from
* @param their_heads the heads to merge into
@@ -451,6 +484,37 @@ GIT_EXTERN(int) git_merge_base_many(
/**
* Find all merge bases given a list of commits
*
+ * This behaves similar to [`git merge-base`](https://git-scm.com/docs/git-merge-base#_discussion).
+ *
+ * Given three commits `a`, `b`, and `c`, `merge_base_many`
+ * will compute a hypothetical commit `m`, which is a merge between `b`
+ * and `c`.
+
+ * For example, with the following topology:
+ * ```text
+ * o---o---o---o---C
+ * /
+ * / o---o---o---B
+ * / /
+ * ---2---1---o---o---o---A
+ * ```
+ *
+ * the result of `merge_base_many` given `a`, `b`, and `c` is 1. This is
+ * because the equivalent topology with the imaginary merge commit `m`
+ * between `b` and `c` is:
+ * ```text
+ * o---o---o---o---o
+ * / \
+ * / o---o---o---o---M
+ * / /
+ * ---2---1---o---o---o---A
+ * ```
+ *
+ * and the result of `merge_base_many` given `a` and `m` is 1.
+ *
+ * If you're looking to recieve the common ancestor between all the
+ * given commits, use `merge_base_octopus`.
+ *
* @param out array in which to store the resulting ids
* @param repo the repository where the commits exist
* @param length The number of commits in the provided `input_array`
@@ -583,7 +647,7 @@ GIT_EXTERN(int) git_merge_commits(
* completes, resolve any conflicts and prepare a commit.
*
* For compatibility with git, the repository is put into a merging
- * state. Once the commit is done (or if the uses wishes to abort),
+ * state. Once the commit is done (or if the user wishes to abort),
* you should clear this state by calling
* `git_repository_state_cleanup()`.
*
@@ -603,4 +667,5 @@ GIT_EXTERN(int) git_merge(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/message.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/message.h
index 42ca3e5..874d027 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/message.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/message.h
@@ -12,7 +12,7 @@
/**
* @file git2/message.h
- * @brief Git message management routines
+ * @brief Commit messages
* @ingroup Git
* @{
*/
@@ -75,10 +75,12 @@ GIT_EXTERN(int) git_message_trailers(git_message_trailer_array *arr, const char
/**
* Clean's up any allocated memory in the git_message_trailer_array filled by
* a call to git_message_trailers.
+ *
+ * @param arr The trailer to free.
*/
GIT_EXTERN(void) git_message_trailer_array_free(git_message_trailer_array *arr);
/** @} */
GIT_END_DECL
-#endif /* INCLUDE_git_message_h__ */
+#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/net.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/net.h
index 8103eaf..93bdac4 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/net.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/net.h
@@ -13,12 +13,13 @@
/**
* @file git2/net.h
- * @brief Git networking declarations
+ * @brief Low-level networking functionality
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/** Default git protocol port number */
#define GIT_DEFAULT_PORT "9418"
/**
@@ -51,4 +52,5 @@ struct git_remote_head {
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/notes.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/notes.h
index c135881..3784d5f 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/notes.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/notes.h
@@ -11,7 +11,7 @@
/**
* @file git2/notes.h
- * @brief Git notes management routines
+ * @brief Notes are metadata attached to an object
* @defgroup git_note Git notes management routines
* @ingroup Git
* @{
@@ -21,13 +21,15 @@ GIT_BEGIN_DECL
/**
* Callback for git_note_foreach.
*
- * Receives:
- * - blob_id: Oid of the blob containing the message
- * - annotated_object_id: Oid of the git object being annotated
- * - payload: Payload data passed to `git_note_foreach`
+ * @param blob_id object id of the blob containing the message
+ * @param annotated_object_id the id of the object being annotated
+ * @param payload user-specified data to the foreach function
+ * @return 0 on success, or a negative number on failure
*/
typedef int GIT_CALLBACK(git_note_foreach_cb)(
- const git_oid *blob_id, const git_oid *annotated_object_id, void *payload);
+ const git_oid *blob_id,
+ const git_oid *annotated_object_id,
+ void *payload);
/**
* note iterator
@@ -303,4 +305,5 @@ GIT_EXTERN(int) git_note_foreach(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/object.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/object.h
index 984dbb7..8a50239 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/object.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/object.h
@@ -14,13 +14,14 @@
/**
* @file git2/object.h
- * @brief Git revision object management routines
+ * @brief Objects are blobs (files), trees (directories), commits, and annotated tags
* @defgroup git_object Git revision object management routines
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/** Maximum size of a git object */
#define GIT_OBJECT_SIZE_MAX UINT64_MAX
/**
@@ -53,18 +54,18 @@ GIT_EXTERN(int) git_object_lookup(
*
* The object obtained will be so that its identifier
* matches the first 'len' hexadecimal characters
- * (packets of 4 bits) of the given 'id'.
- * 'len' must be at least GIT_OID_MINPREFIXLEN, and
- * long enough to identify a unique object matching
- * the prefix; otherwise the method will fail.
+ * (packets of 4 bits) of the given `id`. `len` must be
+ * at least `GIT_OID_MINPREFIXLEN`, and long enough to
+ * identify a unique object matching the prefix; otherwise
+ * the method will fail.
*
* The generated reference is owned by the repository and
* should be closed with the `git_object_free` method
* instead of free'd manually.
*
- * The 'type' parameter must match the type of the object
+ * The `type` parameter must match the type of the object
* in the odb; the method will fail otherwise.
- * The special value 'GIT_OBJECT_ANY' may be passed to let
+ * The special value `GIT_OBJECT_ANY` may be passed to let
* the method guess the object's type.
*
* @param object_out pointer where to store the looked-up object
@@ -221,9 +222,58 @@ GIT_EXTERN(int) git_object_peel(
*
* @param dest Pointer to store the copy of the object
* @param source Original object to copy
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_object_dup(git_object **dest, git_object *source);
+#ifdef GIT_EXPERIMENTAL_SHA256
+/**
+ * Analyzes a buffer of raw object content and determines its validity.
+ * Tree, commit, and tag objects will be parsed and ensured that they
+ * are valid, parseable content. (Blobs are always valid by definition.)
+ * An error message will be set with an informative message if the object
+ * is not valid.
+ *
+ * @warning This function is experimental and its signature may change in
+ * the future.
+ *
+ * @param valid Output pointer to set with validity of the object content
+ * @param buf The contents to validate
+ * @param len The length of the buffer
+ * @param object_type The type of the object in the buffer
+ * @param oid_type The object ID type for the OIDs in the given buffer
+ * @return 0 on success or an error code
+ */
+GIT_EXTERN(int) git_object_rawcontent_is_valid(
+ int *valid,
+ const char *buf,
+ size_t len,
+ git_object_t object_type,
+ git_oid_t oid_type);
+#else
+/**
+ * Analyzes a buffer of raw object content and determines its validity.
+ * Tree, commit, and tag objects will be parsed and ensured that they
+ * are valid, parseable content. (Blobs are always valid by definition.)
+ * An error message will be set with an informative message if the object
+ * is not valid.
+ *
+ * @warning This function is experimental and its signature may change in
+ * the future.
+ *
+ * @param[out] valid Output pointer to set with validity of the object content
+ * @param buf The contents to validate
+ * @param len The length of the buffer
+ * @param object_type The type of the object in the buffer
+ * @return 0 on success or an error code
+ */
+GIT_EXTERN(int) git_object_rawcontent_is_valid(
+ int *valid,
+ const char *buf,
+ size_t len,
+ git_object_t object_type);
+#endif
+
/** @} */
GIT_END_DECL
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/odb.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/odb.h
index dd48455..e809c36 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/odb.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/odb.h
@@ -15,29 +15,91 @@
/**
* @file git2/odb.h
- * @brief Git object database routines
+ * @brief An object database manages the storage of git objects
* @defgroup git_odb Git object database routines
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/** Flags controlling the behavior of ODB lookup operations */
+typedef enum {
+ /**
+ * Don't call `git_odb_refresh` if the lookup fails. Useful when doing
+ * a batch of lookup operations for objects that may legitimately not
+ * exist. When using this flag, you may wish to manually call
+ * `git_odb_refresh` before processing a batch of objects.
+ */
+ GIT_ODB_LOOKUP_NO_REFRESH = (1 << 0)
+} git_odb_lookup_flags_t;
+
/**
* Function type for callbacks from git_odb_foreach.
+ *
+ * @param id an id of an object in the object database
+ * @param payload the payload from the initial call to git_odb_foreach
+ * @return 0 on success, or an error code
*/
typedef int GIT_CALLBACK(git_odb_foreach_cb)(const git_oid *id, void *payload);
+/** Options for configuring a loose object backend. */
+typedef struct {
+ unsigned int version; /**< version for the struct */
+
+ /**
+ * Type of object IDs to use for this object database, or
+ * 0 for default (currently SHA1).
+ */
+ git_oid_t oid_type;
+} git_odb_options;
+
+/** The current version of the diff options structure */
+#define GIT_ODB_OPTIONS_VERSION 1
+
+/**
+ * Stack initializer for odb options. Alternatively use
+ * `git_odb_options_init` programmatic initialization.
+ */
+#define GIT_ODB_OPTIONS_INIT { GIT_ODB_OPTIONS_VERSION }
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+
+/**
+ * Create a new object database with no backends.
+ *
+ * @param[out] odb location to store the database pointer, if opened.
+ * @param opts the options for this object database or NULL for defaults
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_new(git_odb **odb, const git_odb_options *opts);
+
+/**
+ * Create a new object database and automatically add loose and packed
+ * backends.
+ *
+ * @param[out] odb_out location to store the database pointer, if opened.
+ * Set to NULL if the open failed.
+ * @param objects_dir path of the backends' "objects" directory.
+ * @param opts the options for this object database or NULL for defaults
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_open(
+ git_odb **odb_out,
+ const char *objects_dir,
+ const git_odb_options *opts);
+
+#else
+
/**
* Create a new object database with no backends.
*
* Before the ODB can be used for read/writing, a custom database
* backend must be manually added using `git_odb_add_backend()`
*
- * @param out location to store the database pointer, if opened.
- * Set to NULL if the open failed.
+ * @param[out] odb location to store the database pointer, if opened.
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_new(git_odb **out);
+GIT_EXTERN(int) git_odb_new(git_odb **odb);
/**
* Create a new object database and automatically add
@@ -50,12 +112,13 @@ GIT_EXTERN(int) git_odb_new(git_odb **out);
* assuming `objects_dir` as the Objects folder which
* contains a 'pack/' folder with the corresponding data
*
- * @param out location to store the database pointer, if opened.
+ * @param[out] odb_out location to store the database pointer, if opened.
* Set to NULL if the open failed.
* @param objects_dir path of the backends' "objects" directory.
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_open(git_odb **out, const char *objects_dir);
+GIT_EXTERN(int) git_odb_open(git_odb **odb_out, const char *objects_dir);
+#endif
/**
* Add an on-disk alternate to an existing Object DB.
@@ -91,13 +154,13 @@ GIT_EXTERN(void) git_odb_free(git_odb *db);
* internally cached, so it should be closed
* by the user once it's no longer in use.
*
- * @param out pointer where to store the read object
+ * @param[out] obj pointer where to store the read object
* @param db database to search for the object in.
* @param id identity of the object to read.
* @return 0 if the object was read, GIT_ENOTFOUND if the object is
* not in the database.
*/
-GIT_EXTERN(int) git_odb_read(git_odb_object **out, git_odb *db, const git_oid *id);
+GIT_EXTERN(int) git_odb_read(git_odb_object **obj, git_odb *db, const git_oid *id);
/**
* Read an object from the database, given a prefix
@@ -106,7 +169,7 @@ GIT_EXTERN(int) git_odb_read(git_odb_object **out, git_odb *db, const git_oid *i
* This method queries all available ODB backends
* trying to match the 'len' first hexadecimal
* characters of the 'short_id'.
- * The remaining (GIT_OID_HEXSZ-len)*4 bits of
+ * The remaining (GIT_OID_SHA1_HEXSIZE-len)*4 bits of
* 'short_id' must be 0s.
* 'len' must be at least GIT_OID_MINPREFIXLEN,
* and the prefix must be long enough to identify
@@ -117,7 +180,7 @@ GIT_EXTERN(int) git_odb_read(git_odb_object **out, git_odb *db, const git_oid *i
* internally cached, so it should be closed
* by the user once it's no longer in use.
*
- * @param out pointer where to store the read object
+ * @param[out] obj pointer where to store the read object
* @param db database to search for the object in.
* @param short_id a prefix of the id of the object to read.
* @param len the length of the prefix
@@ -125,7 +188,7 @@ GIT_EXTERN(int) git_odb_read(git_odb_object **out, git_odb *db, const git_oid *i
* database. GIT_EAMBIGUOUS if the prefix is ambiguous
* (several objects match the prefix)
*/
-GIT_EXTERN(int) git_odb_read_prefix(git_odb_object **out, git_odb *db, const git_oid *short_id, size_t len);
+GIT_EXTERN(int) git_odb_read_prefix(git_odb_object **obj, git_odb *db, const git_oid *short_id, size_t len);
/**
* Read the header of an object from the database, without
@@ -137,8 +200,8 @@ GIT_EXTERN(int) git_odb_read_prefix(git_odb_object **out, git_odb *db, const git
* of an object, so the whole object will be read and then the
* header will be returned.
*
- * @param len_out pointer where to store the length
- * @param type_out pointer where to store the type
+ * @param[out] len_out pointer where to store the length
+ * @param[out] type_out pointer where to store the type
* @param db database to search for the object in.
* @param id identity of the object to read.
* @return 0 if the object was read, GIT_ENOTFOUND if the object is not
@@ -155,6 +218,17 @@ GIT_EXTERN(int) git_odb_read_header(size_t *len_out, git_object_t *type_out, git
*/
GIT_EXTERN(int) git_odb_exists(git_odb *db, const git_oid *id);
+/**
+ * Determine if the given object can be found in the object database, with
+ * extended options.
+ *
+ * @param db database to be searched for the given object.
+ * @param id the object to search for.
+ * @param flags flags affecting the lookup (see `git_odb_lookup_flags_t`)
+ * @return 1 if the object was found, 0 otherwise
+ */
+GIT_EXTERN(int) git_odb_exists_ext(git_odb *db, const git_oid *id, unsigned int flags);
+
/**
* Determine if an object can be found in the object database by an
* abbreviated object ID.
@@ -192,12 +266,13 @@ typedef struct git_odb_expand_id {
/**
* Determine if one or more objects can be found in the object database
- * by their abbreviated object ID and type. The given array will be
- * updated in place: for each abbreviated ID that is unique in the
- * database, and of the given type (if specified), the full object ID,
- * object ID length (`GIT_OID_HEXSZ`) and type will be written back to
- * the array. For IDs that are not found (or are ambiguous), the
- * array entry will be zeroed.
+ * by their abbreviated object ID and type.
+ *
+ * The given array will be updated in place: for each abbreviated ID that is
+ * unique in the database, and of the given type (if specified),
+ * the full object ID, object ID length (`GIT_OID_SHA1_HEXSIZE`) and type will be
+ * written back to the array. For IDs that are not found (or are ambiguous),
+ * the array entry will be zeroed.
*
* Note that since this function operates on multiple objects, the
* underlying database will not be asked to be reloaded if an object is
@@ -231,7 +306,7 @@ GIT_EXTERN(int) git_odb_expand_ids(
* @param db database to refresh
* @return 0 on success, error code otherwise
*/
-GIT_EXTERN(int) git_odb_refresh(struct git_odb *db);
+GIT_EXTERN(int) git_odb_refresh(git_odb *db);
/**
* List all objects available in the database
@@ -246,7 +321,10 @@ GIT_EXTERN(int) git_odb_refresh(struct git_odb *db);
* @param payload data to pass to the callback
* @return 0 on success, non-zero callback return value, or error code
*/
-GIT_EXTERN(int) git_odb_foreach(git_odb *db, git_odb_foreach_cb cb, void *payload);
+GIT_EXTERN(int) git_odb_foreach(
+ git_odb *db,
+ git_odb_foreach_cb cb,
+ void *payload);
/**
* Write an object directly into the ODB
@@ -261,7 +339,7 @@ GIT_EXTERN(int) git_odb_foreach(git_odb *db, git_odb_foreach_cb cb, void *payloa
*
* @param out pointer to store the OID result of the write
* @param odb object database where to store the object
- * @param data buffer with the data to store
+ * @param data @type `const unsigned char *` buffer with the data to store
* @param len size of the buffer
* @param type type of the data to store
* @return 0 or an error code
@@ -323,6 +401,11 @@ GIT_EXTERN(int) git_odb_stream_finalize_write(git_oid *out, git_odb_stream *stre
* Read from an odb stream
*
* Most backends don't implement streaming reads
+ *
+ * @param stream the stream
+ * @param buffer a user-allocated buffer to store the data in.
+ * @param len the buffer's length
+ * @return the number of bytes read if succeeded, error code otherwise
*/
GIT_EXTERN(int) git_odb_stream_read(git_odb_stream *stream, char *buffer, size_t len);
@@ -383,6 +466,7 @@ GIT_EXTERN(int) git_odb_open_rstream(
* Be aware that this is called inline with network and indexing operations,
* so performance may be affected.
* @param progress_payload payload for the progress callback
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_odb_write_pack(
git_odb_writepack **out,
@@ -400,23 +484,59 @@ GIT_EXTERN(int) git_odb_write_pack(
* exist).
*
* @param db object database where the `multi-pack-index` file will be written.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_odb_write_multi_pack_index(
git_odb *db);
+#ifdef GIT_EXPERIMENTAL_SHA256
+
/**
- * Determine the object-ID (sha1 hash) of a data buffer
+ * Generate the object ID (in SHA1 or SHA256 format) for a given data buffer.
*
- * The resulting SHA-1 OID will be the identifier for the data
- * buffer as if the data buffer it were to written to the ODB.
+ * @param[out] oid the resulting object ID.
+ * @param data data to hash
+ * @param len size of the data
+ * @param object_type of the data to hash
+ * @param oid_type the oid type to hash to
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_hash(
+ git_oid *oid,
+ const void *data,
+ size_t len,
+ git_object_t object_type,
+ git_oid_t oid_type);
+
+/**
+ * Determine the object ID of a file on disk.
+ *
+ * @param[out] oid oid structure the result is written into.
+ * @param path file to read and determine object id for
+ * @param object_type of the data to hash
+ * @param oid_type the oid type to hash to
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_hashfile(
+ git_oid *oid,
+ const char *path,
+ git_object_t object_type,
+ git_oid_t oid_type);
+#else
+
+/**
+ * Determine the object-ID (sha1 or sha256 hash) of a data buffer
+ *
+ * The resulting OID will be the identifier for the data buffer as if
+ * the data buffer it were to written to the ODB.
*
- * @param out the resulting object-ID.
+ * @param[out] oid the resulting object-ID.
* @param data data to hash
* @param len size of the data
- * @param type of the data to hash
+ * @param object_type of the data to hash
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_hash(git_oid *out, const void *data, size_t len, git_object_t type);
+GIT_EXTERN(int) git_odb_hash(git_oid *oid, const void *data, size_t len, git_object_t object_type);
/**
* Read a file from disk and fill a git_oid with the object id
@@ -426,12 +546,14 @@ GIT_EXTERN(int) git_odb_hash(git_oid *out, const void *data, size_t len, git_obj
* the `-w` flag, however, with the --no-filters flag.
* If you need filters, see git_repository_hashfile.
*
- * @param out oid structure the result is written into.
+ * @param[out] oid oid structure the result is written into.
* @param path file to read and determine object id for
- * @param type the type of the object that will be hashed
+ * @param object_type of the data to hash
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_hashfile(git_oid *out, const char *path, git_object_t type);
+GIT_EXTERN(int) git_odb_hashfile(git_oid *oid, const char *path, git_object_t object_type);
+
+#endif
/**
* Create a copy of an odb_object
@@ -476,7 +598,7 @@ GIT_EXTERN(const git_oid *) git_odb_object_id(git_odb_object *object);
* This pointer is owned by the object and shall not be free'd.
*
* @param object the object
- * @return a pointer to the data
+ * @return @type `const unsigned char *` a pointer to the data
*/
GIT_EXTERN(const void *) git_odb_object_data(git_odb_object *object);
@@ -556,7 +678,7 @@ GIT_EXTERN(int) git_odb_get_backend(git_odb_backend **out, git_odb *odb, size_t
/**
* Set the git commit-graph for the ODB.
*
- * After a successfull call, the ownership of the cgraph parameter will be
+ * After a successful call, the ownership of the cgraph parameter will be
* transferred to libgit2, and the caller should not free it.
*
* The commit-graph can also be unset by explicitly passing NULL as the cgraph
@@ -570,4 +692,5 @@ GIT_EXTERN(int) git_odb_set_commit_graph(git_odb *odb, git_commit_graph *cgraph)
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/odb_backend.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/odb_backend.h
index c593bac..88ca29f 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/odb_backend.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/odb_backend.h
@@ -13,46 +13,135 @@
/**
* @file git2/backend.h
- * @brief Git custom backend functions
+ * @brief Object database backends manage the storage of git objects
* @defgroup git_odb Git object database routines
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/** Options for configuring a packfile object backend. */
+typedef struct {
+ unsigned int version; /**< version for the struct */
+
+ /**
+ * Type of object IDs to use for this object database, or
+ * 0 for default (currently SHA1).
+ */
+ git_oid_t oid_type;
+} git_odb_backend_pack_options;
+
+/** The current version of the diff options structure */
+#define GIT_ODB_BACKEND_PACK_OPTIONS_VERSION 1
+
+/**
+ * Stack initializer for odb pack backend options. Alternatively use
+ * `git_odb_backend_pack_options_init` programmatic initialization.
+ */
+#define GIT_ODB_BACKEND_PACK_OPTIONS_INIT \
+ { GIT_ODB_BACKEND_PACK_OPTIONS_VERSION }
+
+typedef enum {
+ GIT_ODB_BACKEND_LOOSE_FSYNC = (1 << 0)
+} git_odb_backend_loose_flag_t;
+
+/** Options for configuring a loose object backend. */
+typedef struct {
+ unsigned int version; /**< version for the struct */
+
+ /** A combination of the `git_odb_backend_loose_flag_t` types. */
+ uint32_t flags;
+
+ /**
+ * zlib compression level to use (0-9), where 1 is the fastest
+ * at the expense of larger files, and 9 produces the best
+ * compression at the expense of speed. 0 indicates that no
+ * compression should be performed. -1 is the default (currently
+ * optimizing for speed).
+ */
+ int compression_level;
+
+ /** Permissions to use creating a directory or 0 for defaults */
+ unsigned int dir_mode;
+
+ /** Permissions to use creating a file or 0 for defaults */
+ unsigned int file_mode;
+
+ /**
+ * Type of object IDs to use for this object database, or
+ * 0 for default (currently SHA1).
+ */
+ git_oid_t oid_type;
+} git_odb_backend_loose_options;
+
+/** The current version of the diff options structure */
+#define GIT_ODB_BACKEND_LOOSE_OPTIONS_VERSION 1
+
+/**
+ * Stack initializer for odb loose backend options. Alternatively use
+ * `git_odb_backend_loose_options_init` programmatic initialization.
+ */
+#define GIT_ODB_BACKEND_LOOSE_OPTIONS_INIT \
+ { GIT_ODB_BACKEND_LOOSE_OPTIONS_VERSION, 0, -1 }
+
/*
* Constructors for in-box ODB backends.
*/
+#ifdef GIT_EXPERIMENTAL_SHA256
+
/**
- * Create a backend for the packfiles.
+ * Create a backend for a directory containing packfiles.
*
- * @param out location to store the odb backend pointer
+ * @param[out] out location to store the odb backend pointer
* @param objects_dir the Git repository's objects directory
+ * @param opts the options to use when creating the pack backend
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_backend_pack(
+ git_odb_backend **out,
+ const char *objects_dir,
+ const git_odb_backend_pack_options *opts);
+
+/**
+ * Create a backend for a single packfile.
*
+ * @param[out] out location to store the odb backend pointer
+ * @param index_file path to the packfile's .idx file
+ * @param opts the options to use when creating the pack backend
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_backend_pack(git_odb_backend **out, const char *objects_dir);
+GIT_EXTERN(int) git_odb_backend_one_pack(
+ git_odb_backend **out,
+ const char *index_file,
+ const git_odb_backend_pack_options *opts);
/**
* Create a backend for loose objects
*
- * @param out location to store the odb backend pointer
+ * @param[out] out location to store the odb backend pointer
* @param objects_dir the Git repository's objects directory
- * @param compression_level zlib compression level to use
- * @param do_fsync whether to do an fsync() after writing
- * @param dir_mode permissions to use creating a directory or 0 for defaults
- * @param file_mode permissions to use creating a file or 0 for defaults
+ * @param opts options for the loose object backend or NULL
*
* @return 0 or an error code
*/
GIT_EXTERN(int) git_odb_backend_loose(
git_odb_backend **out,
const char *objects_dir,
- int compression_level,
- int do_fsync,
- unsigned int dir_mode,
- unsigned int file_mode);
+ git_odb_backend_loose_options *opts);
+
+#else
+
+/**
+ * Create a backend for a directory containing packfiles.
+ *
+ * @param[out] out location to store the odb backend pointer
+ * @param objects_dir the Git repository's objects directory
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_backend_pack(
+ git_odb_backend **out,
+ const char *objects_dir);
/**
* Create a backend out of a single packfile
@@ -60,18 +149,40 @@ GIT_EXTERN(int) git_odb_backend_loose(
* This can be useful for inspecting the contents of a single
* packfile.
*
- * @param out location to store the odb backend pointer
+ * @param[out] out location to store the odb backend pointer
* @param index_file path to the packfile's .idx file
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_backend_one_pack(
+ git_odb_backend **out,
+ const char *index_file);
+
+/**
+ * Create a backend for loose objects
*
+ * @param[out] out location to store the odb backend pointer
+ * @param objects_dir the Git repository's objects directory
+ * @param compression_level zlib compression level (0-9), or -1 for the default
+ * @param do_fsync if non-zero, perform an fsync on write
+ * @param dir_mode permission to use when creating directories, or 0 for default
+ * @param file_mode permission to use when creating directories, or 0 for default
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_backend_one_pack(git_odb_backend **out, const char *index_file);
+GIT_EXTERN(int) git_odb_backend_loose(
+ git_odb_backend **out,
+ const char *objects_dir,
+ int compression_level,
+ int do_fsync,
+ unsigned int dir_mode,
+ unsigned int file_mode);
+
+#endif
/** Streaming mode */
typedef enum {
GIT_STREAM_RDONLY = (1 << 1),
GIT_STREAM_WRONLY = (1 << 2),
- GIT_STREAM_RW = (GIT_STREAM_RDONLY | GIT_STREAM_WRONLY),
+ GIT_STREAM_RW = (GIT_STREAM_RDONLY | GIT_STREAM_WRONLY)
} git_odb_stream_t;
/**
@@ -87,6 +198,10 @@ struct git_odb_stream {
unsigned int mode;
void *hash_ctx;
+#ifdef GIT_EXPERIMENTAL_SHA256
+ git_oid_t oid_type;
+#endif
+
git_object_size_t declared_size;
git_object_size_t received_bytes;
@@ -130,6 +245,7 @@ struct git_odb_writepack {
void GIT_CALLBACK(free)(git_odb_writepack *writepack);
};
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/oid.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/oid.h
index 549df4e..8539b4e 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/oid.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/oid.h
@@ -8,22 +8,92 @@
#define INCLUDE_git_oid_h__
#include "common.h"
-#include "types.h"
+#include "experimental.h"
/**
* @file git2/oid.h
- * @brief Git object id routines
+ * @brief Object IDs
* @defgroup git_oid Git object id routines
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
-/** Size (in bytes) of a raw/binary oid */
-#define GIT_OID_RAWSZ 20
+/** The type of object id. */
+typedef enum {
-/** Size (in bytes) of a hex formatted oid */
-#define GIT_OID_HEXSZ (GIT_OID_RAWSZ * 2)
+#ifdef GIT_EXPERIMENTAL_SHA256
+ GIT_OID_SHA1 = 1, /**< SHA1 */
+ GIT_OID_SHA256 = 2 /**< SHA256 */
+#else
+ GIT_OID_SHA1 = 1 /**< SHA1 */
+#endif
+
+} git_oid_t;
+
+/*
+ * SHA1 is currently the only supported object ID type.
+ */
+
+/** SHA1 is currently libgit2's default oid type. */
+#define GIT_OID_DEFAULT GIT_OID_SHA1
+
+/** Size (in bytes) of a raw/binary sha1 oid */
+#define GIT_OID_SHA1_SIZE 20
+/** Size (in bytes) of a hex formatted sha1 oid */
+#define GIT_OID_SHA1_HEXSIZE (GIT_OID_SHA1_SIZE * 2)
+
+/**
+ * The binary representation of the null sha1 object ID.
+ */
+#ifndef GIT_EXPERIMENTAL_SHA256
+# define GIT_OID_SHA1_ZERO { { 0 } }
+#else
+# define GIT_OID_SHA1_ZERO { GIT_OID_SHA1, { 0 } }
+#endif
+
+/**
+ * The string representation of the null sha1 object ID.
+ */
+#define GIT_OID_SHA1_HEXZERO "0000000000000000000000000000000000000000"
+
+/*
+ * Experimental SHA256 support is a breaking change to the API.
+ * This exists for application compatibility testing.
+ */
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+
+/** Size (in bytes) of a raw/binary sha256 oid */
+# define GIT_OID_SHA256_SIZE 32
+/** Size (in bytes) of a hex formatted sha256 oid */
+# define GIT_OID_SHA256_HEXSIZE (GIT_OID_SHA256_SIZE * 2)
+
+/**
+ * The binary representation of the null sha256 object ID.
+ */
+# define GIT_OID_SHA256_ZERO { GIT_OID_SHA256, { 0 } }
+
+/**
+ * The string representation of the null sha256 object ID.
+ */
+# define GIT_OID_SHA256_HEXZERO "0000000000000000000000000000000000000000000000000000000000000000"
+
+#endif
+
+/** Maximum possible object ID size in raw format */
+#ifdef GIT_EXPERIMENTAL_SHA256
+# define GIT_OID_MAX_SIZE GIT_OID_SHA256_SIZE
+#else
+# define GIT_OID_MAX_SIZE GIT_OID_SHA1_SIZE
+#endif
+
+/** Maximum possible object ID size in hex format */
+#ifdef GIT_EXPERIMENTAL_SHA256
+# define GIT_OID_MAX_HEXSIZE GIT_OID_SHA256_HEXSIZE
+#else
+# define GIT_OID_MAX_HEXSIZE GIT_OID_SHA1_HEXSIZE
+#endif
/** Minimum length (in number of hex characters,
* i.e. packets of 4 bits) of an oid prefix */
@@ -31,23 +101,43 @@ GIT_BEGIN_DECL
/** Unique identity of any object (commit, tree, blob, tag). */
typedef struct git_oid {
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /** type of object id */
+ unsigned char type;
+#endif
+
/** raw binary formatted id */
- unsigned char id[GIT_OID_RAWSZ];
+ unsigned char id[GIT_OID_MAX_SIZE];
} git_oid;
+#ifdef GIT_EXPERIMENTAL_SHA256
+
+GIT_EXTERN(int) git_oid_fromstr(git_oid *out, const char *str, git_oid_t type);
+GIT_EXTERN(int) git_oid_fromstrp(git_oid *out, const char *str, git_oid_t type);
+GIT_EXTERN(int) git_oid_fromstrn(git_oid *out, const char *str, size_t length, git_oid_t type);
+GIT_EXTERN(int) git_oid_fromraw(git_oid *out, const unsigned char *raw, git_oid_t type);
+
+#else
+
/**
* Parse a hex formatted object id into a git_oid.
*
+ * The appropriate number of bytes for the given object ID type will
+ * be read from the string - 40 bytes for SHA1, 64 bytes for SHA256.
+ * The given string need not be NUL terminated.
+ *
* @param out oid structure the result is written into.
* @param str input hex string; must be pointing at the start of
* the hex sequence and have at least the number of bytes
- * needed for an oid encoded in hex (40 bytes).
+ * needed for an oid encoded in hex (40 bytes for sha1,
+ * 256 bytes for sha256).
* @return 0 or an error code
*/
GIT_EXTERN(int) git_oid_fromstr(git_oid *out, const char *str);
/**
- * Parse a hex formatted null-terminated string into a git_oid.
+ * Parse a hex formatted NUL-terminated string into a git_oid.
*
* @param out oid structure the result is written into.
* @param str input hex string; must be null-terminated.
@@ -77,14 +167,17 @@ GIT_EXTERN(int) git_oid_fromstrn(git_oid *out, const char *str, size_t length);
*/
GIT_EXTERN(int) git_oid_fromraw(git_oid *out, const unsigned char *raw);
+#endif
+
/**
* Format a git_oid into a hex string.
*
* @param out output hex string; must be pointing at the start of
* the hex sequence and have at least the number of bytes
- * needed for an oid encoded in hex (40 bytes). Only the
- * oid digits are written; a '\\0' terminator must be added
- * by the caller if it is required.
+ * needed for an oid encoded in hex (40 bytes for SHA1,
+ * 64 bytes for SHA256). Only the oid digits are written;
+ * a '\\0' terminator must be added by the caller if it is
+ * required.
* @param id oid structure to format.
* @return 0 on success or error code
*/
@@ -94,7 +187,7 @@ GIT_EXTERN(int) git_oid_fmt(char *out, const git_oid *id);
* Format a git_oid into a partial hex string.
*
* @param out output hex string; you say how many bytes to write.
- * If the number of bytes is > GIT_OID_HEXSZ, extra bytes
+ * If the number of bytes is > GIT_OID_SHA1_HEXSIZE, extra bytes
* will be zeroed; if not, a '\0' terminator is NOT added.
* @param n number of characters to write into out string
* @param id oid structure to format.
@@ -110,9 +203,10 @@ GIT_EXTERN(int) git_oid_nfmt(char *out, size_t n, const git_oid *id);
*
* @param out output hex string; must be pointing at the start of
* the hex sequence and have at least the number of bytes
- * needed for an oid encoded in hex (41 bytes). Only the
- * oid digits are written; a '\\0' terminator must be added
- * by the caller if it is required.
+ * needed for an oid encoded in hex (41 bytes for SHA1,
+ * 65 bytes for SHA256). Only the oid digits are written;
+ * a '\\0' terminator must be added by the caller if it
+ * is required.
* @param id oid structure to format.
* @return 0 on success, non-zero callback return value, or error code
*/
@@ -127,14 +221,16 @@ GIT_EXTERN(int) git_oid_pathfmt(char *out, const git_oid *id);
* concurrent calls of the function.
*
* @param oid The oid structure to format
- * @return the c-string
+ * @return the c-string or NULL on failure
*/
GIT_EXTERN(char *) git_oid_tostr_s(const git_oid *oid);
/**
* Format a git_oid into a buffer as a hex format c-string.
*
- * If the buffer is smaller than GIT_OID_HEXSZ+1, then the resulting
+ * If the buffer is smaller than the size of a hex-formatted oid string
+ * plus an additional byte (GIT_OID_SHA_HEXSIZE + 1 for SHA1 or
+ * GIT_OID_SHA256_HEXSIZE + 1 for SHA256), then the resulting
* oid c-string will be truncated to n-1 characters (but will still be
* NUL-byte terminated).
*
@@ -210,6 +306,7 @@ GIT_EXTERN(int) git_oid_strcmp(const git_oid *id, const char *str);
/**
* Check is an oid is all zeros.
*
+ * @param id the object ID to check
* @return 1 if all zeros, 0 otherwise.
*/
GIT_EXTERN(int) git_oid_is_zero(const git_oid *id);
@@ -270,4 +367,5 @@ GIT_EXTERN(void) git_oid_shorten_free(git_oid_shorten *os);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/oidarray.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/oidarray.h
index 94fc58d..e79a559 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/oidarray.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/oidarray.h
@@ -10,6 +10,13 @@
#include "common.h"
#include "oid.h"
+/**
+ * @file git2/oidarray.h
+ * @brief An array of object IDs
+ * @defgroup git_oidarray Arrays of object IDs
+ * @ingroup Git
+ * @{
+ */
GIT_BEGIN_DECL
/** Array of object ids */
@@ -34,4 +41,3 @@ GIT_EXTERN(void) git_oidarray_dispose(git_oidarray *array);
GIT_END_DECL
#endif
-
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/pack.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/pack.h
index 3b9beb6..3837e04 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/pack.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/pack.h
@@ -51,7 +51,7 @@ GIT_BEGIN_DECL
*/
typedef enum {
GIT_PACKBUILDER_ADDING_OBJECTS = 0,
- GIT_PACKBUILDER_DELTAFICATION = 1,
+ GIT_PACKBUILDER_DELTAFICATION = 1
} git_packbuilder_stage_t;
/**
@@ -148,6 +148,7 @@ GIT_EXTERN(int) git_packbuilder_insert_recur(git_packbuilder *pb, const git_oid
*
* @param buf Buffer where to write the packfile
* @param pb The packbuilder
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_packbuilder_write_buf(git_buf *buf, git_packbuilder *pb);
@@ -169,15 +170,30 @@ GIT_EXTERN(int) git_packbuilder_write(
git_indexer_progress_cb progress_cb,
void *progress_cb_payload);
+#ifndef GIT_DEPRECATE_HARD
/**
-* Get the packfile's hash
-*
-* A packfile's name is derived from the sorted hashing of all object
-* names. This is only correct after the packfile has been written.
-*
-* @param pb The packbuilder object
-*/
+ * Get the packfile's hash
+ *
+ * A packfile's name is derived from the sorted hashing of all object
+ * names. This is only correct after the packfile has been written.
+ *
+ * @deprecated use git_packbuilder_name
+ * @param pb The packbuilder object
+ * @return 0 or an error code
+ */
GIT_EXTERN(const git_oid *) git_packbuilder_hash(git_packbuilder *pb);
+#endif
+
+/**
+ * Get the unique name for the resulting packfile.
+ *
+ * The packfile's name is derived from the packfile's content.
+ * This is only correct after the packfile has been written.
+ *
+ * @param pb the packbuilder instance
+ * @return a NUL terminated string for the packfile name
+ */
+GIT_EXTERN(const char *) git_packbuilder_name(git_packbuilder *pb);
/**
* Callback used to iterate over packed objects
@@ -217,7 +233,15 @@ GIT_EXTERN(size_t) git_packbuilder_object_count(git_packbuilder *pb);
*/
GIT_EXTERN(size_t) git_packbuilder_written(git_packbuilder *pb);
-/** Packbuilder progress notification function */
+/**
+ * Packbuilder progress notification function.
+ *
+ * @param stage the stage of the packbuilder
+ * @param current the current object
+ * @param total the total number of objects
+ * @param payload the callback payload
+ * @return 0 on success or an error code
+ */
typedef int GIT_CALLBACK(git_packbuilder_progress)(
int stage,
uint32_t current,
@@ -231,6 +255,9 @@ typedef int GIT_CALLBACK(git_packbuilder_progress)(
* @param progress_cb Function to call with progress information during
* pack building. Be aware that this is called inline with pack building
* operations, so performance may be affected.
+ * When progress_cb returns an error, the pack building process will be
+ * aborted and the error will be returned from the invoked function.
+ * `pb` must then be freed.
* @param progress_cb_payload Payload for progress callback.
* @return 0 or an error code
*/
@@ -248,4 +275,5 @@ GIT_EXTERN(void) git_packbuilder_free(git_packbuilder *pb);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/patch.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/patch.h
index fde9659..7824821 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/patch.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/patch.h
@@ -14,7 +14,7 @@
/**
* @file git2/patch.h
- * @brief Patch handling routines.
+ * @brief Patches store the textual diffs in a delta
* @ingroup Git
* @{
*/
@@ -139,17 +139,25 @@ GIT_EXTERN(int) git_patch_from_buffers(
/**
* Free a git_patch object.
+ *
+ * @param patch The patch to free.
*/
GIT_EXTERN(void) git_patch_free(git_patch *patch);
/**
* Get the delta associated with a patch. This delta points to internal
* data and you do not have to release it when you are done with it.
+ *
+ * @param patch The patch in which to get the delta.
+ * @return The delta associated with the patch.
*/
GIT_EXTERN(const git_diff_delta *) git_patch_get_delta(const git_patch *patch);
/**
* Get the number of hunks in a patch
+ *
+ * @param patch The patch in which to get the number of hunks.
+ * @return The number of hunks of the patch.
*/
GIT_EXTERN(size_t) git_patch_num_hunks(const git_patch *patch);
@@ -275,8 +283,7 @@ GIT_EXTERN(int) git_patch_to_buf(
git_buf *out,
git_patch *patch);
-GIT_END_DECL
-
/**@}*/
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/pathspec.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/pathspec.h
index 3299657..6f6918c 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/pathspec.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/pathspec.h
@@ -12,6 +12,13 @@
#include "strarray.h"
#include "diff.h"
+/**
+ * @file git2/pathspec.h
+ * @brief Specifiers for path matching
+ * @defgroup git_pathspec Specifiers for path matching
+ * @ingroup Git
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -69,7 +76,7 @@ typedef enum {
* just test if there were any matches at all or in combination with
* GIT_PATHSPEC_FIND_FAILURES to validate a pathspec.
*/
- GIT_PATHSPEC_FAILURES_ONLY = (1u << 5),
+ GIT_PATHSPEC_FAILURES_ONLY = (1u << 5)
} git_pathspec_flag_t;
/**
@@ -276,5 +283,7 @@ GIT_EXTERN(size_t) git_pathspec_match_list_failed_entrycount(
GIT_EXTERN(const char *) git_pathspec_match_list_failed_entry(
const git_pathspec_match_list *m, size_t pos);
+/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/proxy.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/proxy.h
index 653425d..195ab75 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/proxy.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/proxy.h
@@ -12,6 +12,12 @@
#include "cert.h"
#include "credential.h"
+/**
+ * @file git2/proxy.h
+ * @brief TLS proxies
+ * @ingroup Git
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -32,7 +38,7 @@ typedef enum {
/**
* Connect via the URL given in the options
*/
- GIT_PROXY_SPECIFIED,
+ GIT_PROXY_SPECIFIED
} git_proxy_t;
/**
@@ -78,7 +84,10 @@ typedef struct {
void *payload;
} git_proxy_options;
+/** Current version for the `git_proxy_options` structure */
#define GIT_PROXY_OPTIONS_VERSION 1
+
+/** Static constructor for `git_proxy_options` */
#define GIT_PROXY_OPTIONS_INIT {GIT_PROXY_OPTIONS_VERSION}
/**
@@ -93,6 +102,7 @@ typedef struct {
*/
GIT_EXTERN(int) git_proxy_options_init(git_proxy_options *opts, unsigned int version);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/rebase.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/rebase.h
index 11e452c..3fb3e57 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/rebase.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/rebase.h
@@ -17,8 +17,8 @@
/**
* @file git2/rebase.h
- * @brief Git rebase routines
- * @defgroup git_rebase Git merge routines
+ * @brief Rebase manipulates commits, placing them on a new parent
+ * @defgroup git_rebase Rebase manipulates commits, placing them on a new parent
* @ingroup Git
* @{
*/
@@ -67,10 +67,9 @@ typedef struct {
/**
* Options to control how files are written during `git_rebase_init`,
- * `git_rebase_next` and `git_rebase_abort`. Note that a minimum
- * strategy of `GIT_CHECKOUT_SAFE` is defaulted in `init` and `next`,
- * and a minimum strategy of `GIT_CHECKOUT_FORCE` is defaulted in
- * `abort` to match git semantics.
+ * `git_rebase_next` and `git_rebase_abort`. Note that during
+ * `abort`, these options will add an implied `GIT_CHECKOUT_FORCE`
+ * to match git semantics.
*/
git_checkout_options checkout_options;
@@ -152,10 +151,13 @@ typedef enum {
* No commit will be cherry-picked. The client should run the given
* command and (if successful) continue.
*/
- GIT_REBASE_OPERATION_EXEC,
+ GIT_REBASE_OPERATION_EXEC
} git_rebase_operation_t;
+/** Current version for the `git_rebase_options` structure */
#define GIT_REBASE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_rebase_options` */
#define GIT_REBASE_OPTIONS_INIT \
{ GIT_REBASE_OPTIONS_VERSION, 0, 0, NULL, GIT_MERGE_OPTIONS_INIT, \
GIT_CHECKOUT_OPTIONS_INIT, NULL, NULL }
@@ -242,6 +244,7 @@ GIT_EXTERN(int) git_rebase_open(
/**
* Gets the original `HEAD` ref name for merge rebases.
*
+ * @param rebase The in-progress rebase.
* @return The original `HEAD` ref name
*/
GIT_EXTERN(const char *) git_rebase_orig_head_name(git_rebase *rebase);
@@ -249,6 +252,7 @@ GIT_EXTERN(const char *) git_rebase_orig_head_name(git_rebase *rebase);
/**
* Gets the original `HEAD` id for merge rebases.
*
+ * @param rebase The in-progress rebase.
* @return The original `HEAD` id
*/
GIT_EXTERN(const git_oid *) git_rebase_orig_head_id(git_rebase *rebase);
@@ -256,6 +260,7 @@ GIT_EXTERN(const git_oid *) git_rebase_orig_head_id(git_rebase *rebase);
/**
* Gets the `onto` ref name for merge rebases.
*
+ * @param rebase The in-progress rebase.
* @return The `onto` ref name
*/
GIT_EXTERN(const char *) git_rebase_onto_name(git_rebase *rebase);
@@ -263,6 +268,7 @@ GIT_EXTERN(const char *) git_rebase_onto_name(git_rebase *rebase);
/**
* Gets the `onto` id for merge rebases.
*
+ * @param rebase The in-progress rebase.
* @return The `onto` id
*/
GIT_EXTERN(const git_oid *) git_rebase_onto_id(git_rebase *rebase);
@@ -322,6 +328,10 @@ GIT_EXTERN(int) git_rebase_next(
* This is only applicable for in-memory rebases; for rebases within
* a working directory, the changes were applied to the repository's
* index.
+ *
+ * @param index The result index of the last operation.
+ * @param rebase The in-progress rebase.
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_rebase_inmemory_index(
git_index **index,
@@ -388,4 +398,5 @@ GIT_EXTERN(void) git_rebase_free(git_rebase *rebase);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/refdb.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/refdb.h
index a315876..536ef10 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/refdb.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/refdb.h
@@ -14,8 +14,8 @@
/**
* @file git2/refdb.h
- * @brief Git custom refs backend functions
- * @defgroup git_refdb Git custom refs backend API
+ * @brief A database for references (branches and tags)
+ * @defgroup git_refdb A database for references (branches and tags)
* @ingroup Git
* @{
*/
@@ -52,6 +52,9 @@ GIT_EXTERN(int) git_refdb_open(git_refdb **out, git_repository *repo);
* Suggests that the given refdb compress or optimize its references.
* This mechanism is implementation specific. For on-disk reference
* databases, for example, this may pack all loose references.
+ *
+ * @param refdb The reference database to optimize.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_refdb_compress(git_refdb *refdb);
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/reflog.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/reflog.h
index c949a28..a0956c6 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/reflog.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/reflog.h
@@ -13,8 +13,8 @@
/**
* @file git2/reflog.h
- * @brief Git reflog management routines
- * @defgroup git_reflog Git reflog management routines
+ * @brief Reference logs store how references change
+ * @defgroup git_reflog Reference logs store how references change
* @ingroup Git
* @{
*/
@@ -31,7 +31,7 @@ GIT_BEGIN_DECL
* git_reflog_free().
*
* @param out pointer to reflog
- * @param repo the repostiory
+ * @param repo the repository
* @param name reference to look up
* @return 0 or an error code
*/
@@ -167,4 +167,5 @@ GIT_EXTERN(void) git_reflog_free(git_reflog *reflog);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/refs.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/refs.h
index 7ebb209..d820f2a 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/refs.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/refs.h
@@ -14,8 +14,8 @@
/**
* @file git2/refs.h
- * @brief Git reference management routines
- * @defgroup git_reference Git reference management routines
+ * @brief References point to a commit; generally these are branches and tags
+ * @defgroup git_reference References point to a commit; generally these are branches and tags
* @ingroup Git
* @{
*/
@@ -29,7 +29,7 @@ GIT_BEGIN_DECL
* The name will be checked for validity.
* See `git_reference_symbolic_create()` for rules about valid names.
*
- * @param out pointer to the looked-up reference
+ * @param[out] out pointer to the looked-up reference
* @param repo the repository to look up the reference
* @param name the long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)
* @return 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code.
@@ -57,7 +57,7 @@ GIT_EXTERN(int) git_reference_name_to_id(
/**
* Lookup a reference by DWIMing its short name
*
- * Apply the git precendence rules to the given shorthand to determine
+ * Apply the git precedence rules to the given shorthand to determine
* which reference the user is referring to.
*
* @param out pointer in which to store the reference
@@ -371,6 +371,7 @@ GIT_EXTERN(int) git_reference_set_target(
* reflog is enabled for the repository. We only rename
* the reflog if it exists.
*
+ * @param[out] new_ref The new reference
* @param ref The reference to rename
* @param new_name The new name for the reference
* @param force Overwrite an existing reference
@@ -406,6 +407,7 @@ GIT_EXTERN(int) git_reference_delete(git_reference *ref);
* This method removes the named reference from the repository without
* looking at its old value.
*
+ * @param repo The repository to remove the reference from
* @param name The reference to remove
* @return 0 or an error code
*/
@@ -518,7 +520,7 @@ GIT_EXTERN(int) git_reference_cmp(
/**
* Create an iterator for the repo's references
*
- * @param out pointer in which to store the iterator
+ * @param[out] out pointer in which to store the iterator
* @param repo the repository
* @return 0 or an error code
*/
@@ -543,7 +545,7 @@ GIT_EXTERN(int) git_reference_iterator_glob_new(
/**
* Get the next reference
*
- * @param out pointer in which to store the reference
+ * @param[out] out pointer in which to store the reference
* @param iter the iterator
* @return 0, GIT_ITEROVER if there are no more; or an error code
*/
@@ -686,7 +688,7 @@ typedef enum {
* so the `ONELEVEL` naming rules aren't enforced and 'master'
* becomes a valid name.
*/
- GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND = (1u << 2),
+ GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND = (1u << 2)
} git_reference_format_t;
/**
@@ -724,7 +726,7 @@ GIT_EXTERN(int) git_reference_normalize_name(
* If you pass `GIT_OBJECT_ANY` as the target type, then the object
* will be peeled until a non-tag object is met.
*
- * @param out Pointer to the peeled git_object
+ * @param[out] out Pointer to the peeled git_object
* @param ref The reference to be processed
* @param type The type of the requested object (GIT_OBJECT_COMMIT,
* GIT_OBJECT_TAG, GIT_OBJECT_TREE, GIT_OBJECT_BLOB or GIT_OBJECT_ANY).
@@ -768,4 +770,5 @@ GIT_EXTERN(const char *) git_reference_shorthand(const git_reference *ref);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/refspec.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/refspec.h
index eaf7747..49d5f89 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/refspec.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/refspec.h
@@ -14,8 +14,8 @@
/**
* @file git2/refspec.h
- * @brief Git refspec attributes
- * @defgroup git_refspec Git refspec attributes
+ * @brief Refspecs map local references to remote references
+ * @defgroup git_refspec Refspecs map local references to remote references
* @ingroup Git
* @{
*/
@@ -58,7 +58,7 @@ GIT_EXTERN(const char *) git_refspec_dst(const git_refspec *refspec);
* Get the refspec's string
*
* @param refspec the refspec
- * @returns the refspec's original string
+ * @return the refspec's original string
*/
GIT_EXTERN(const char *) git_refspec_string(const git_refspec *refspec);
@@ -79,7 +79,16 @@ GIT_EXTERN(int) git_refspec_force(const git_refspec *refspec);
GIT_EXTERN(git_direction) git_refspec_direction(const git_refspec *spec);
/**
- * Check if a refspec's source descriptor matches a reference
+ * Check if a refspec's source descriptor matches a negative reference
+ *
+ * @param refspec the refspec
+ * @param refname the name of the reference to check
+ * @return 1 if the refspec matches, 0 otherwise
+ */
+GIT_EXTERN(int) git_refspec_src_matches_negative(const git_refspec *refspec, const char *refname);
+
+/**
+ * Check if a refspec's source descriptor matches a reference
*
* @param refspec the refspec
* @param refname the name of the reference to check
@@ -116,6 +125,7 @@ GIT_EXTERN(int) git_refspec_transform(git_buf *out, const git_refspec *spec, con
*/
GIT_EXTERN(int) git_refspec_rtransform(git_buf *out, const git_refspec *spec, const char *name);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/remote.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/remote.h
index 4d57eaa..2472ded 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/remote.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/remote.h
@@ -19,8 +19,8 @@
/**
* @file git2/remote.h
- * @brief Git remote management functions
- * @defgroup git_remote remote management functions
+ * @brief Remotes are where local repositories fetch from and push to
+ * @defgroup git_remote Remotes are where local repositories fetch from and push to
* @ingroup Git
* @{
*/
@@ -41,6 +41,30 @@ GIT_EXTERN(int) git_remote_create(
const char *name,
const char *url);
+/**
+ * Remote redirection settings; whether redirects to another host
+ * are permitted. By default, git will follow a redirect on the
+ * initial request (`/info/refs`), but not subsequent requests.
+ */
+typedef enum {
+ /**
+ * Do not follow any off-site redirects at any stage of
+ * the fetch or push.
+ */
+ GIT_REMOTE_REDIRECT_NONE = (1 << 0),
+
+ /**
+ * Allow off-site redirects only upon the initial request.
+ * This is the default.
+ */
+ GIT_REMOTE_REDIRECT_INITIAL = (1 << 1),
+
+ /**
+ * Allow redirects at any stage in the fetch or push.
+ */
+ GIT_REMOTE_REDIRECT_ALL = (1 << 2)
+} git_remote_redirect_t;
+
/**
* Remote creation options flags
*/
@@ -49,9 +73,20 @@ typedef enum {
GIT_REMOTE_CREATE_SKIP_INSTEADOF = (1 << 0),
/** Don't build a fetchspec from the name if none is set */
- GIT_REMOTE_CREATE_SKIP_DEFAULT_FETCHSPEC = (1 << 1),
+ GIT_REMOTE_CREATE_SKIP_DEFAULT_FETCHSPEC = (1 << 1)
} git_remote_create_flags;
+/**
+ * How to handle reference updates.
+ */
+typedef enum {
+ /* Write the fetch results to FETCH_HEAD. */
+ GIT_REMOTE_UPDATE_FETCHHEAD = (1 << 0),
+
+ /* Report unchanged tips in the update_refs callback. */
+ GIT_REMOTE_UPDATE_REPORT_UNCHANGED = (1 << 1)
+} git_remote_update_flags;
+
/**
* Remote creation options structure
*
@@ -81,7 +116,10 @@ typedef struct git_remote_create_options {
unsigned int flags;
} git_remote_create_options;
+/** Current version for the `git_remote_create_options` structure */
#define GIT_REMOTE_CREATE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_remote_create_options` */
#define GIT_REMOTE_CREATE_OPTIONS_INIT {GIT_REMOTE_CREATE_OPTIONS_VERSION}
/**
@@ -211,9 +249,9 @@ GIT_EXTERN(const char *) git_remote_name(const git_remote *remote);
/**
* Get the remote's url
*
- * If url.*.insteadOf has been configured for this URL, it will
- * return the modified URL. If `git_remote_set_instance_pushurl`
- * has been called for this remote, then that URL will be returned.
+ * If url.*.insteadOf has been configured for this URL, it will return
+ * the modified URL. This function does not consider if a push url has
+ * been configured for this remote (use `git_remote_pushurl` if needed).
*
* @param remote the remote
* @return a pointer to the url
@@ -300,6 +338,7 @@ GIT_EXTERN(int) git_remote_add_fetch(git_repository *repo, const char *remote, c
*
* @param array pointer to the array in which to store the strings
* @param remote the remote to query
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_remote_get_fetch_refspecs(git_strarray *array, const git_remote *remote);
@@ -324,6 +363,7 @@ GIT_EXTERN(int) git_remote_add_push(git_repository *repo, const char *remote, co
*
* @param array pointer to the array in which to store the strings
* @param remote the remote to query
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_remote_get_push_refspecs(git_strarray *array, const git_remote *remote);
@@ -344,23 +384,6 @@ GIT_EXTERN(size_t) git_remote_refspec_count(const git_remote *remote);
*/
GIT_EXTERN(const git_refspec *)git_remote_get_refspec(const git_remote *remote, size_t n);
-/**
- * Open a connection to a remote
- *
- * The transport is selected based on the URL. The direction argument
- * is due to a limitation of the git protocol (over TCP or SSH) which
- * starts up a specific binary which can only do the one or the other.
- *
- * @param remote the remote to connect to
- * @param direction GIT_DIRECTION_FETCH if you want to fetch or
- * GIT_DIRECTION_PUSH if you want to push
- * @param callbacks the callbacks to use for this connection
- * @param proxy_opts proxy settings
- * @param custom_headers extra HTTP headers to use in this connection
- * @return 0 or an error code
- */
-GIT_EXTERN(int) git_remote_connect(git_remote *remote, git_direction direction, const git_remote_callbacks *callbacks, const git_proxy_options *proxy_opts, const git_strarray *custom_headers);
-
/**
* Get the remote repository's reference advertisement list
*
@@ -443,10 +466,18 @@ GIT_EXTERN(int) git_remote_list(git_strarray *out, git_repository *repo);
typedef enum git_remote_completion_t {
GIT_REMOTE_COMPLETION_DOWNLOAD,
GIT_REMOTE_COMPLETION_INDEXING,
- GIT_REMOTE_COMPLETION_ERROR,
+ GIT_REMOTE_COMPLETION_ERROR
} git_remote_completion_t;
-/** Push network progress notification function */
+/**
+ * Push network progress notification callback.
+ *
+ * @param current The number of objects pushed so far
+ * @param total The total number of objects to push
+ * @param bytes The number of bytes pushed
+ * @param payload The user-specified payload callback
+ * @return 0 or an error code to stop the transfer
+ */
typedef int GIT_CALLBACK(git_push_transfer_progress_cb)(
unsigned int current,
unsigned int total,
@@ -482,8 +513,12 @@ typedef struct {
* as commands to the destination.
* @param len number of elements in `updates`
* @param payload Payload provided by the caller
+ * @return 0 or an error code to stop the push
*/
-typedef int GIT_CALLBACK(git_push_negotiation)(const git_push_update **updates, size_t len, void *payload);
+typedef int GIT_CALLBACK(git_push_negotiation)(
+ const git_push_update **updates,
+ size_t len,
+ void *payload);
/**
* Callback used to inform of the update status from the remote.
@@ -548,7 +583,8 @@ struct git_remote_callbacks {
* Completion is called when different parts of the download
* process are done (currently unused).
*/
- int GIT_CALLBACK(completion)(git_remote_completion_t type, void *data);
+ int GIT_CALLBACK(completion)(git_remote_completion_t type,
+ void *data);
/**
* This will be called if the remote host requires
@@ -574,11 +610,22 @@ struct git_remote_callbacks {
*/
git_indexer_progress_cb transfer_progress;
+#ifdef GIT_DEPRECATE_HARD
+ void *reserved_update_tips;
+#else
/**
- * Each time a reference is updated locally, this function
- * will be called with information about it.
+ * Deprecated callback for reference updates, callers should
+ * set `update_refs` instead. This is retained for backward
+ * compatibility; if you specify both `update_refs` and
+ * `update_tips`, then only the `update_refs` function will
+ * be called.
+ *
+ * @deprecated the `update_refs` callback in this structure
+ * should be preferred
*/
- int GIT_CALLBACK(update_tips)(const char *refname, const git_oid *a, const git_oid *b, void *data);
+ int GIT_CALLBACK(update_tips)(const char *refname,
+ const git_oid *a, const git_oid *b, void *data);
+#endif
/**
* Function to call with progress information during pack
@@ -635,9 +682,25 @@ struct git_remote_callbacks {
*/
git_url_resolve_cb resolve_url;
#endif
+
+ /**
+ * Each time a reference is updated locally, this function
+ * will be called with information about it. This should be
+ * preferred over the `update_tips` callback in this
+ * structure.
+ */
+ int GIT_CALLBACK(update_refs)(
+ const char *refname,
+ const git_oid *a,
+ const git_oid *b,
+ git_refspec *spec,
+ void *data);
};
+/** Current version for the `git_remote_callbacks_options` structure */
#define GIT_REMOTE_CALLBACKS_VERSION 1
+
+/** Static constructor for `git_remote_callbacks_options` */
#define GIT_REMOTE_CALLBACKS_INIT {GIT_REMOTE_CALLBACKS_VERSION}
/**
@@ -665,7 +728,7 @@ typedef enum {
/**
* Force pruning off
*/
- GIT_FETCH_NO_PRUNE,
+ GIT_FETCH_NO_PRUNE
} git_fetch_prune_t;
/**
@@ -690,9 +753,18 @@ typedef enum {
/**
* Ask for the all the tags.
*/
- GIT_REMOTE_DOWNLOAD_TAGS_ALL,
+ GIT_REMOTE_DOWNLOAD_TAGS_ALL
} git_remote_autotag_option_t;
+/** Constants for fetch depth (shallowness of fetch). */
+typedef enum {
+ /** The fetch is "full" (not shallow). This is the default. */
+ GIT_FETCH_DEPTH_FULL = 0,
+
+ /** The fetch should "unshallow" and fetch missing data. */
+ GIT_FETCH_DEPTH_UNSHALLOW = 2147483647
+} git_fetch_depth_t;
+
/**
* Fetch options structure.
*
@@ -715,10 +787,9 @@ typedef struct {
git_fetch_prune_t prune;
/**
- * Whether to write the results to FETCH_HEAD. Defaults to
- * on. Leave this default in order to behave like git.
+ * How to handle reference updates; see `git_remote_update_flags`.
*/
- int update_fetchhead;
+ unsigned int update_fetchhead;
/**
* Determines how to behave regarding tags on the remote, such
@@ -734,15 +805,39 @@ typedef struct {
*/
git_proxy_options proxy_opts;
+ /**
+ * Depth of the fetch to perform, or `GIT_FETCH_DEPTH_FULL`
+ * (or `0`) for full history, or `GIT_FETCH_DEPTH_UNSHALLOW`
+ * to "unshallow" a shallow repository.
+ *
+ * The default is full (`GIT_FETCH_DEPTH_FULL` or `0`).
+ */
+ int depth;
+
+ /**
+ * Whether to allow off-site redirects. If this is not
+ * specified, the `http.followRedirects` configuration setting
+ * will be consulted.
+ */
+ git_remote_redirect_t follow_redirects;
+
/**
* Extra headers for this fetch operation
*/
git_strarray custom_headers;
} git_fetch_options;
+/** Current version for the `git_fetch_options` structure */
#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 }
+
+/** Static constructor for `git_fetch_options` */
+#define GIT_FETCH_OPTIONS_INIT { \
+ GIT_FETCH_OPTIONS_VERSION, \
+ GIT_REMOTE_CALLBACKS_INIT, \
+ GIT_FETCH_PRUNE_UNSPECIFIED, \
+ GIT_REMOTE_UPDATE_FETCHHEAD, \
+ GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED, \
+ GIT_PROXY_OPTIONS_INIT }
/**
* Initialize git_fetch_options structure
@@ -785,13 +880,28 @@ typedef struct {
*/
git_proxy_options proxy_opts;
+ /**
+ * Whether to allow off-site redirects. If this is not
+ * specified, the `http.followRedirects` configuration setting
+ * will be consulted.
+ */
+ git_remote_redirect_t follow_redirects;
+
/**
* Extra headers for this push operation
*/
git_strarray custom_headers;
+
+ /**
+ * "Push options" to deliver to the remote.
+ */
+ git_strarray remote_push_options;
} git_push_options;
+/** Current version for the `git_push_options` structure */
#define GIT_PUSH_OPTIONS_VERSION 1
+
+/** Static constructor for `git_push_options` */
#define GIT_PUSH_OPTIONS_INIT { GIT_PUSH_OPTIONS_VERSION, 1, GIT_REMOTE_CALLBACKS_INIT, GIT_PROXY_OPTIONS_INIT }
/**
@@ -809,7 +919,103 @@ GIT_EXTERN(int) git_push_options_init(
unsigned int version);
/**
- * Download and index the packfile
+ * Remote creation options structure
+ *
+ * Initialize with `GIT_REMOTE_CREATE_OPTIONS_INIT`. Alternatively, you can
+ * use `git_remote_create_options_init`.
+ *
+ */
+typedef struct {
+ unsigned int version;
+
+ /** Callbacks to use for this connection */
+ git_remote_callbacks callbacks;
+
+ /** HTTP Proxy settings */
+ git_proxy_options proxy_opts;
+
+ /**
+ * Whether to allow off-site redirects. If this is not
+ * specified, the `http.followRedirects` configuration setting
+ * will be consulted.
+ */
+ git_remote_redirect_t follow_redirects;
+
+ /** Extra HTTP headers to use in this connection */
+ git_strarray custom_headers;
+} git_remote_connect_options;
+
+/** Current version for the `git_remote_connect_options` structure */
+#define GIT_REMOTE_CONNECT_OPTIONS_VERSION 1
+
+/** Static constructor for `git_remote_connect_options` */
+#define GIT_REMOTE_CONNECT_OPTIONS_INIT { \
+ GIT_REMOTE_CONNECT_OPTIONS_VERSION, \
+ GIT_REMOTE_CALLBACKS_INIT, \
+ GIT_PROXY_OPTIONS_INIT }
+
+/**
+ * Initialize git_remote_connect_options structure.
+ *
+ * Initializes a `git_remote_connect_options` with default values.
+ * Equivalent to creating an instance with
+ * `GIT_REMOTE_CONNECT_OPTIONS_INIT`.
+ *
+ * @param opts The `git_remote_connect_options` struct to initialize.
+ * @param version The struct version; pass `GIT_REMOTE_CONNECT_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_remote_connect_options_init(
+ git_remote_connect_options *opts,
+ unsigned int version);
+
+/**
+ * Open a connection to a remote.
+ *
+ * The transport is selected based on the URL; the direction argument
+ * is due to a limitation of the git protocol which starts up a
+ * specific binary which can only do the one or the other.
+ *
+ * @param remote the remote to connect to
+ * @param direction GIT_DIRECTION_FETCH if you want to fetch or
+ * GIT_DIRECTION_PUSH if you want to push
+ * @param callbacks the callbacks to use for this connection
+ * @param proxy_opts proxy settings
+ * @param custom_headers extra HTTP headers to use in this connection
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_remote_connect(
+ git_remote *remote,
+ git_direction direction,
+ const git_remote_callbacks *callbacks,
+ const git_proxy_options *proxy_opts,
+ const git_strarray *custom_headers);
+
+/**
+ * Open a connection to a remote with extended options.
+ *
+ * The transport is selected based on the URL; the direction argument
+ * is due to a limitation of the git protocol which starts up a
+ * specific binary which can only do the one or the other.
+ *
+ * The given options structure will form the defaults for connection
+ * options and callback setup. Callers may override these defaults
+ * by specifying `git_fetch_options` or `git_push_options` in
+ * subsequent calls.
+ *
+ * @param remote the remote to connect to
+ * @param direction GIT_DIRECTION_FETCH if you want to fetch or
+ * GIT_DIRECTION_PUSH if you want to push
+ * @param opts the remote connection options
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_remote_connect_ext(
+ git_remote *remote,
+ git_direction direction,
+ const git_remote_connect_options *opts);
+
+/**
+ * Download and index the packfile.
*
* Connect to the remote if it hasn't been done yet, negotiate with
* the remote git which objects are missing, download and index the
@@ -818,19 +1024,31 @@ GIT_EXTERN(int) git_push_options_init(
* The .idx file will be created and both it and the packfile with be
* renamed to their final name.
*
+ * If options are specified and this remote is already connected then
+ * the existing remote connection options will be discarded and the
+ * remote will now use the new options.
+ *
* @param remote the remote
* @param refspecs the refspecs to use for this negotiation and
* download. Use NULL or an empty array to use the base refspecs
- * @param opts the options to use for this fetch
+ * @param opts the options to use for this fetch or NULL
* @return 0 or an error code
*/
- GIT_EXTERN(int) git_remote_download(git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts);
+ GIT_EXTERN(int) git_remote_download(
+ git_remote *remote,
+ const git_strarray *refspecs,
+ const git_fetch_options *opts);
/**
* Create a packfile and send it to the server
*
* Connect to the remote if it hasn't been done yet, negotiate with
- * the remote git which objects are missing, create a packfile with the missing objects and send it.
+ * the remote git which objects are missing, create a packfile with
+ * the missing objects and send it.
+ *
+ * If options are specified and this remote is already connected then
+ * the existing remote connection options will be discarded and the
+ * remote will now use the new options.
*
* @param remote the remote
* @param refspecs the refspecs to use for this negotiation and
@@ -838,39 +1056,49 @@ GIT_EXTERN(int) git_push_options_init(
* @param opts the options to use for this push
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_remote_upload(git_remote *remote, const git_strarray *refspecs, const git_push_options *opts);
+GIT_EXTERN(int) git_remote_upload(
+ git_remote *remote,
+ const git_strarray *refspecs,
+ const git_push_options *opts);
/**
- * Update the tips to the new state
+ * Update the tips to the new state.
+ *
+ * If callbacks are not specified then the callbacks specified to
+ * `git_remote_connect` will be used (if it was called).
*
* @param remote the remote to update
+ * @param callbacks pointer to the callback structure to use or NULL
+ * @param update_flags the git_remote_update_flags for these tips.
+ * @param download_tags what the behaviour for downloading tags is for this fetch. This is
+ * ignored for push. This must be the same value passed to `git_remote_download()`.
* @param reflog_message The message to insert into the reflogs. If
* NULL and fetching, the default is "fetch ", where is
* the name of the remote (or its url, for in-memory remotes). This
* parameter is ignored when pushing.
- * @param callbacks pointer to the callback structure to use
- * @param update_fetchhead whether to write to FETCH_HEAD. Pass 1 to behave like git.
- * @param download_tags what the behaviour for downloading tags is for this fetch. This is
- * ignored for push. This must be the same value passed to `git_remote_download()`.
* @return 0 or an error code
*/
GIT_EXTERN(int) git_remote_update_tips(
git_remote *remote,
const git_remote_callbacks *callbacks,
- int update_fetchhead,
+ unsigned int update_flags,
git_remote_autotag_option_t download_tags,
const char *reflog_message);
/**
- * Download new data and update tips
+ * Download new data and update tips.
*
* Convenience function to connect to a remote, download the data,
* disconnect and update the remote-tracking branches.
*
+ * If options are specified and this remote is already connected then
+ * the existing remote connection options will be discarded and the
+ * remote will now use the new options.
+ *
* @param remote the remote to fetch from
* @param refspecs the refspecs to use for this fetch. Pass NULL or an
* empty array to use the base refspecs.
- * @param opts options to use for this fetch
+ * @param opts options to use for this fetch or NULL
* @param reflog_message The message to insert into the reflogs. If NULL, the
* default is "fetch"
* @return 0 or an error code
@@ -882,30 +1110,42 @@ GIT_EXTERN(int) git_remote_fetch(
const char *reflog_message);
/**
- * Prune tracking refs that are no longer present on remote
+ * Prune tracking refs that are no longer present on remote.
+ *
+ * If callbacks are not specified then the callbacks specified to
+ * `git_remote_connect` will be used (if it was called).
*
* @param remote the remote to prune
* @param callbacks callbacks to use for this prune
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_remote_prune(git_remote *remote, const git_remote_callbacks *callbacks);
+GIT_EXTERN(int) git_remote_prune(
+ git_remote *remote,
+ const git_remote_callbacks *callbacks);
/**
- * Perform a push
+ * Perform a push.
*
- * Peform all the steps from a push.
+ * If options are specified and this remote is already connected then
+ * the existing remote connection options will be discarded and the
+ * remote will now use the new options.
*
* @param remote the remote to push to
* @param refspecs the refspecs to use for pushing. If NULL or an empty
* array, the configured refspecs will be used
* @param opts options to use for this push
+ * @return 0 or an error code.
*/
-GIT_EXTERN(int) git_remote_push(git_remote *remote,
- const git_strarray *refspecs,
- const git_push_options *opts);
+GIT_EXTERN(int) git_remote_push(
+ git_remote *remote,
+ const git_strarray *refspecs,
+ const git_push_options *opts);
/**
* Get the statistics structure that is filled in by the fetch operation.
+ *
+ * @param remote the remote to get statistics for
+ * @return the git_indexer_progress for the remote
*/
GIT_EXTERN(const git_indexer_progress *) git_remote_stats(git_remote *remote);
@@ -1005,4 +1245,5 @@ GIT_EXTERN(int) git_remote_default_branch(git_buf *out, git_remote *remote);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/repository.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/repository.h
index 8d1cffc..b203576 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/repository.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/repository.h
@@ -10,12 +10,14 @@
#include "common.h"
#include "types.h"
#include "oid.h"
+#include "odb.h"
#include "buffer.h"
+#include "commit.h"
/**
* @file git2/repository.h
- * @brief Git repository management routines
- * @defgroup git_repository Git repository management routines
+ * @brief The repository stores revisions for a source tree
+ * @defgroup git_repository The repository stores revisions for a source tree
* @ingroup Git
* @{
*/
@@ -30,7 +32,11 @@ GIT_BEGIN_DECL
* The method will automatically detect if 'path' is a normal
* or bare repository or fail is 'path' is neither.
*
- * @param out pointer to the repo which will be opened
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
+ * @param[out] out pointer to the repo which will be opened
* @param path the path to the repository
* @return 0 or an error code
*/
@@ -58,7 +64,9 @@ GIT_EXTERN(int) git_repository_open_from_worktree(git_repository **out, git_work
* @param odb the object database to wrap
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_repository_wrap_odb(git_repository **out, git_odb *odb);
+GIT_EXTERN(int) git_repository_wrap_odb(
+ git_repository **out,
+ git_odb *odb);
/**
* Look for a git repository and copy its path in the given buffer.
@@ -70,6 +78,10 @@ GIT_EXTERN(int) git_repository_wrap_odb(git_repository **out, git_odb *odb);
* The method will automatically detect if the repository is bare
* (if there is a repository).
*
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
* @param out A pointer to a user-allocated git_buf which will contain
* the found path.
*
@@ -141,13 +153,17 @@ typedef enum {
* `git_repository_open_ext` with this flag will error out if either
* $GIT_WORK_TREE or $GIT_COMMON_DIR is set.
*/
- GIT_REPOSITORY_OPEN_FROM_ENV = (1 << 4),
+ GIT_REPOSITORY_OPEN_FROM_ENV = (1 << 4)
} git_repository_open_flag_t;
/**
* Find and open a repository with extended controls.
*
- * @param out Pointer to the repo which will be opened. This can
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
+ * @param[out] out Pointer to the repo which will be opened. This can
* actually be NULL if you only want to use the error code to
* see if a repo at this path could be opened.
* @param path Path to open as git repository. If the flags
@@ -175,7 +191,11 @@ GIT_EXTERN(int) git_repository_open_ext(
* if you're e.g. hosting git repositories and need to access them
* efficiently
*
- * @param out Pointer to the repo which will be opened.
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
+ * @param[out] out Pointer to the repo which will be opened.
* @param bare_path Direct path to the bare repository
* @return 0 on success, or an error code
*/
@@ -200,7 +220,11 @@ GIT_EXTERN(void) git_repository_free(git_repository *repo);
* TODO:
* - Reinit the repository
*
- * @param out pointer to the repo which will be created or reinitialized
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
+ * @param[out] out pointer to the repo which will be created or reinitialized
* @param path the path to the repository
* @param is_bare if true, a Git repository without a working directory is
* created at the pointed path. If false, provided path will be
@@ -267,7 +291,7 @@ typedef enum {
* If an alternate workdir is specified, use relative paths for the gitdir
* and core.worktree.
*/
- GIT_REPOSITORY_INIT_RELATIVE_GITLINK = (1u << 6),
+ GIT_REPOSITORY_INIT_RELATIVE_GITLINK = (1u << 6)
} git_repository_init_flag_t;
/**
@@ -292,7 +316,7 @@ typedef enum {
/**
* Use "--shared=all" behavior, adding world readability.
*/
- GIT_REPOSITORY_INIT_SHARED_ALL = 0002777,
+ GIT_REPOSITORY_INIT_SHARED_ALL = 0002777
} git_repository_init_mode_t;
/**
@@ -351,9 +375,21 @@ typedef struct {
* pointing to this URL.
*/
const char *origin_url;
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /**
+ *
+ * Type of object IDs to use for this repository, or 0 for
+ * default (currently SHA1).
+ */
+ git_oid_t oid_type;
+#endif
} git_repository_init_options;
+/** Current version for the `git_repository_init_options` structure */
#define GIT_REPOSITORY_INIT_OPTIONS_VERSION 1
+
+/** Static constructor for `git_repository_init_options` */
#define GIT_REPOSITORY_INIT_OPTIONS_INIT {GIT_REPOSITORY_INIT_OPTIONS_VERSION}
/**
@@ -378,6 +414,10 @@ GIT_EXTERN(int) git_repository_init_options_init(
* auto-detect the case sensitivity of the file system and if the
* file system supports file mode bits correctly.
*
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
* @param out Pointer to the repo which will be created or reinitialized.
* @param repo_path The path to the repository.
* @param opts Pointer to git_repository_init_options struct.
@@ -395,7 +435,7 @@ GIT_EXTERN(int) git_repository_init_ext(
* `git_reference_free()` must be called when done with it to release the
* allocated memory and prevent a leak.
*
- * @param out pointer to the reference which will be retrieved
+ * @param[out] out pointer to the reference which will be retrieved
* @param repo a repository object
*
* @return 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing
@@ -456,7 +496,9 @@ GIT_EXTERN(int) git_repository_head_unborn(git_repository *repo);
* Check if a repository is empty
*
* An empty repository has just been initialized and contains no references
- * apart from HEAD, which must be pointing to the unborn master branch.
+ * apart from HEAD, which must be pointing to the unborn master branch,
+ * or the branch specified for the repository in the `init.defaultBranch`
+ * configuration variable.
*
* @param repo Repo to test
* @return 1 if the repository is empty, 0 if it isn't, error code
@@ -482,6 +524,7 @@ typedef enum {
GIT_REPOSITORY_ITEM_LOGS,
GIT_REPOSITORY_ITEM_MODULES,
GIT_REPOSITORY_ITEM_WORKTREES,
+ GIT_REPOSITORY_ITEM_WORKTREE_CONFIG,
GIT_REPOSITORY_ITEM__LAST
} git_repository_item_t;
@@ -525,7 +568,7 @@ GIT_EXTERN(const char *) git_repository_workdir(const git_repository *repo);
/**
* Get the path of the shared common directory for this repository.
- *
+ *
* If the repository is bare, it is the root directory for the repository.
* If the repository is a worktree, it is the parent repo's gitdir.
* Otherwise, it is the gitdir.
@@ -613,7 +656,7 @@ GIT_EXTERN(int) git_repository_config_snapshot(git_config **out, git_repository
* The ODB must be freed once it's no longer being used by
* the user.
*
- * @param out Pointer to store the loaded ODB
+ * @param[out] out Pointer to store the loaded ODB
* @param repo A repository object
* @return 0, or an error code
*/
@@ -629,7 +672,7 @@ GIT_EXTERN(int) git_repository_odb(git_odb **out, git_repository *repo);
* The refdb must be freed once it's no longer being used by
* the user.
*
- * @param out Pointer to store the loaded refdb
+ * @param[out] out Pointer to store the loaded refdb
* @param repo A repository object
* @return 0, or an error code
*/
@@ -645,7 +688,7 @@ GIT_EXTERN(int) git_repository_refdb(git_refdb **out, git_repository *repo);
* The index must be freed once it's no longer being used by
* the user.
*
- * @param out Pointer to store the loaded index
+ * @param[out] out Pointer to store the loaded index
* @param repo A repository object
* @return 0, or an error code
*/
@@ -673,6 +716,9 @@ GIT_EXTERN(int) git_repository_message(git_buf *out, git_repository *repo);
* Remove git's prepared message.
*
* Remove the message that `git_repository_message` retrieves.
+ *
+ * @param repo Repository to remove prepared message from.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_repository_message_remove(git_repository *repo);
@@ -808,19 +854,19 @@ GIT_EXTERN(int) git_repository_set_head(
* If the provided committish cannot be found in the repository, the HEAD
* is unaltered and GIT_ENOTFOUND is returned.
*
- * If the provided commitish cannot be peeled into a commit, the HEAD
+ * If the provided committish cannot be peeled into a commit, the HEAD
* is unaltered and -1 is returned.
*
* Otherwise, the HEAD will eventually be detached and will directly point to
* the peeled Commit.
*
* @param repo Repository pointer
- * @param commitish Object id of the Commit the HEAD should point to
+ * @param committish Object id of the Commit the HEAD should point to
* @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_repository_set_head_detached(
git_repository *repo,
- const git_oid *commitish);
+ const git_oid *committish);
/**
* Make the repository HEAD directly point to the Commit.
@@ -832,11 +878,13 @@ GIT_EXTERN(int) git_repository_set_head_detached(
*
* See the documentation for `git_repository_set_head_detached()`.
*
- * @see git_repository_set_head_detached
+ * @param repo Repository pointer
+ * @param committish annotated commit to point HEAD to
+ * @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_repository_set_head_detached_from_annotated(
git_repository *repo,
- const git_annotated_commit *commitish);
+ const git_annotated_commit *committish);
/**
* Detach the HEAD.
@@ -846,7 +894,7 @@ GIT_EXTERN(int) git_repository_set_head_detached_from_annotated(
* If the HEAD is already detached and points to a Tag, the HEAD is
* updated into making it point to the peeled Commit, and 0 is returned.
*
- * If the HEAD is already detached and points to a non commitish, the HEAD is
+ * If the HEAD is already detached and points to a non committish, the HEAD is
* unaltered, and -1 is returned.
*
* Otherwise, the HEAD will be detached and point to the peeled Commit.
@@ -876,7 +924,7 @@ typedef enum {
GIT_REPOSITORY_STATE_REBASE_INTERACTIVE,
GIT_REPOSITORY_STATE_REBASE_MERGE,
GIT_REPOSITORY_STATE_APPLY_MAILBOX,
- GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE,
+ GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE
} git_repository_state_t;
/**
@@ -925,9 +973,10 @@ GIT_EXTERN(int) git_repository_is_shallow(git_repository *repo);
* The memory is owned by the repository and must not be freed by the
* user.
*
- * @param name where to store the pointer to the name
- * @param email where to store the pointer to the email
+ * @param[out] name where to store the pointer to the name
+ * @param[out] email where to store the pointer to the email
* @param repo the repository
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_repository_ident(const char **name, const char **email, const git_repository *repo);
@@ -941,9 +990,30 @@ GIT_EXTERN(int) git_repository_ident(const char **name, const char **email, cons
* @param repo the repository to configure
* @param name the name to use for the reflog entries
* @param email the email to use for the reflog entries
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_repository_set_ident(git_repository *repo, const char *name, const char *email);
+/**
+ * Gets the object type used by this repository.
+ *
+ * @param repo the repository
+ * @return the object id type
+ */
+GIT_EXTERN(git_oid_t) git_repository_oid_type(git_repository *repo);
+
+/**
+ * Gets the parents of the next commit, given the current repository state.
+ * Generally, this is the HEAD commit, except when performing a merge, in
+ * which case it is two or more commits.
+ *
+ * @param commits a `git_commitarray` that will contain the commit parents
+ * @param repo the repository
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_repository_commit_parents(git_commitarray *commits, git_repository *repo);
+
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/reset.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/reset.h
index be25414..0123f7c 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/reset.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/reset.h
@@ -14,7 +14,7 @@
/**
* @file git2/reset.h
- * @brief Git reset management routines
+ * @brief Reset will update the local repository to a prior state
* @ingroup Git
* @{
*/
@@ -26,7 +26,7 @@ GIT_BEGIN_DECL
typedef enum {
GIT_RESET_SOFT = 1, /**< Move the head to the given commit */
GIT_RESET_MIXED = 2, /**< SOFT plus reset index to the commit */
- GIT_RESET_HARD = 3, /**< MIXED plus changes in working tree discarded */
+ GIT_RESET_HARD = 3 /**< MIXED plus changes in working tree discarded */
} git_reset_t;
/**
@@ -48,7 +48,7 @@ typedef enum {
*
* @param target Committish to which the Head should be moved to. This object
* must belong to the given `repo` and can either be a git_commit or a
- * git_tag. When a git_tag is being passed, it should be dereferencable
+ * git_tag. When a git_tag is being passed, it should be dereferenceable
* to a git_commit which oid will be used as the target of the branch.
*
* @param reset_type Kind of reset operation to perform.
@@ -75,11 +75,23 @@ GIT_EXTERN(int) git_reset(
*
* See the documentation for `git_reset()`.
*
- * @see git_reset
+ * @param repo Repository where to perform the reset operation.
+ *
+ * @param target Annotated commit to which the Head should be moved to.
+ * This object must belong to the given `repo`, it will be dereferenced
+ * to a git_commit which oid will be used as the target of the branch.
+ *
+ * @param reset_type Kind of reset operation to perform.
+ *
+ * @param checkout_opts Optional checkout options to be used for a HARD reset.
+ * The checkout_strategy field will be overridden (based on reset_type).
+ * This parameter can be used to propagate notify and progress callbacks.
+ *
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_reset_from_annotated(
git_repository *repo,
- const git_annotated_commit *commit,
+ const git_annotated_commit *target,
git_reset_t reset_type,
const git_checkout_options *checkout_opts);
@@ -108,4 +120,5 @@ GIT_EXTERN(int) git_reset_default(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/revert.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/revert.h
index 331e90d..ec51eca 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/revert.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/revert.h
@@ -13,8 +13,8 @@
/**
* @file git2/revert.h
- * @brief Git revert routines
- * @defgroup git_revert Git revert routines
+ * @brief Cherry-pick the inverse of a change to "undo" its effects
+ * @defgroup git_revert Cherry-pick the inverse of a change to "undo" its effects
* @ingroup Git
* @{
*/
@@ -33,8 +33,13 @@ typedef struct {
git_checkout_options checkout_opts; /**< Options for the checkout */
} git_revert_options;
+/** Current version for the `git_revert_options` structure */
#define GIT_REVERT_OPTIONS_VERSION 1
-#define GIT_REVERT_OPTIONS_INIT {GIT_REVERT_OPTIONS_VERSION, 0, GIT_MERGE_OPTIONS_INIT, GIT_CHECKOUT_OPTIONS_INIT}
+
+/** Static constructor for `git_revert_options` */
+#define GIT_REVERT_OPTIONS_INIT { \
+ GIT_REVERT_OPTIONS_VERSION, 0, \
+ GIT_MERGE_OPTIONS_INIT, GIT_CHECKOUT_OPTIONS_INIT }
/**
* Initialize git_revert_options structure
@@ -87,5 +92,5 @@ GIT_EXTERN(int) git_revert(
/** @} */
GIT_END_DECL
-#endif
+#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/revparse.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/revparse.h
index e14ddee..c14fe3d 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/revparse.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/revparse.h
@@ -12,8 +12,8 @@
/**
* @file git2/revparse.h
- * @brief Git revision parsing routines
- * @defgroup git_revparse Git revision parsing routines
+ * @brief Parse the textual revision information
+ * @defgroup git_revparse Parse the textual revision information
* @ingroup Git
* @{
*/
@@ -74,7 +74,7 @@ typedef enum {
/** The spec targeted a range of commits. */
GIT_REVSPEC_RANGE = 1 << 1,
/** The spec used the '...' operator, which invokes special semantics. */
- GIT_REVSPEC_MERGE_BASE = 1 << 2,
+ GIT_REVSPEC_MERGE_BASE = 1 << 2
} git_revspec_t;
/**
@@ -107,7 +107,7 @@ GIT_EXTERN(int) git_revparse(
git_repository *repo,
const char *spec);
-
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/revwalk.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/revwalk.h
index 98dcbf8..7c4ac54 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/revwalk.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/revwalk.h
@@ -13,8 +13,8 @@
/**
* @file git2/revwalk.h
- * @brief Git revision traversal routines
- * @defgroup git_revwalk Git revision traversal routines
+ * @brief Traverse (walk) the commit graph (revision history)
+ * @defgroup git_revwalk Traverse (walk) the commit graph (revision history)
* @ingroup Git
* @{
*/
@@ -49,7 +49,7 @@ typedef enum {
* order; this sorting mode can be combined with
* any of the above.
*/
- GIT_SORT_REVERSE = 1 << 2,
+ GIT_SORT_REVERSE = 1 << 2
} git_sort_t;
/**
@@ -249,6 +249,7 @@ GIT_EXTERN(int) git_revwalk_push_range(git_revwalk *walk, const char *range);
*
* No parents other than the first for each commit will be enqueued.
*
+ * @param walk The revision walker.
* @return 0 or an error code
*/
GIT_EXTERN(int) git_revwalk_simplify_first_parent(git_revwalk *walk);
@@ -277,6 +278,7 @@ GIT_EXTERN(git_repository *) git_revwalk_repository(git_revwalk *walk);
*
* @param commit_id oid of Commit
* @param payload User-specified pointer to data to be passed as data payload
+ * @return non-zero to hide the commmit and it parent.
*/
typedef int GIT_CALLBACK(git_revwalk_hide_cb)(
const git_oid *commit_id,
@@ -288,6 +290,7 @@ typedef int GIT_CALLBACK(git_revwalk_hide_cb)(
* @param walk the revision walker
* @param hide_cb callback function to hide a commit and its parents
* @param payload data payload to be passed to callback function
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_revwalk_add_hide_cb(
git_revwalk *walk,
@@ -296,4 +299,5 @@ GIT_EXTERN(int) git_revwalk_add_hide_cb(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/signature.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/signature.h
index b14f3ea..20ec24b 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/signature.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/signature.h
@@ -12,9 +12,13 @@
/**
* @file git2/signature.h
- * @brief Git signature creation
+ * @brief Signatures are the actor in a repository and when they acted
* @defgroup git_signature Git signature creation
* @ingroup Git
+ *
+ * Signatures contain the information about the actor (committer or
+ * author) in a repository, and the time that they performed the
+ * commit, or authoring.
* @{
*/
GIT_BEGIN_DECL
@@ -48,6 +52,42 @@ GIT_EXTERN(int) git_signature_new(git_signature **out, const char *name, const c
*/
GIT_EXTERN(int) git_signature_now(git_signature **out, const char *name, const char *email);
+/**
+ * Create a new author and/or committer signatures with default
+ * information based on the configuration and environment variables.
+ *
+ * If `author_out` is set, it will be populated with the author
+ * information. The `GIT_AUTHOR_NAME` and `GIT_AUTHOR_EMAIL`
+ * environment variables will be honored, and `user.name` and
+ * `user.email` configuration options will be honored if the
+ * environment variables are unset. For timestamps, `GIT_AUTHOR_DATE`
+ * will be used, otherwise the current time will be used.
+ *
+ * If `committer_out` is set, it will be populated with the
+ * committer information. The `GIT_COMMITTER_NAME` and
+ * `GIT_COMMITTER_EMAIL` environment variables will be honored,
+ * and `user.name` and `user.email` configuration options will
+ * be honored if the environment variables are unset. For timestamps,
+ * `GIT_COMMITTER_DATE` will be used, otherwise the current time will
+ * be used.
+ *
+ * If neither `GIT_AUTHOR_DATE` nor `GIT_COMMITTER_DATE` are set,
+ * both timestamps will be set to the same time.
+ *
+ * It will return `GIT_ENOTFOUND` if either the `user.name` or
+ * `user.email` are not set and there is no fallback from an environment
+ * variable. One of `author_out` or `committer_out` must be set.
+ *
+ * @param author_out pointer to set the author signature, or NULL
+ * @param committer_out pointer to set the committer signature, or NULL
+ * @param repo repository pointer
+ * @return 0 on success, GIT_ENOTFOUND if config is missing, or error code
+ */
+GIT_EXTERN(int) git_signature_default_from_env(
+ git_signature **author_out,
+ git_signature **committer_out,
+ git_repository *repo);
+
/**
* Create a new action signature with default user and now timestamp.
*
@@ -56,6 +96,10 @@ GIT_EXTERN(int) git_signature_now(git_signature **out, const char *name, const c
* based on that information. It will return GIT_ENOTFOUND if either the
* user.name or user.email are not set.
*
+ * Note that these do not examine environment variables, only the
+ * configuration files. Use `git_signature_default_from_env` to
+ * consider the environment variables.
+ *
* @param out new signature
* @param repo repository pointer
* @return 0 on success, GIT_ENOTFOUND if config is missing, or error code
@@ -71,7 +115,7 @@ GIT_EXTERN(int) git_signature_default(git_signature **out, git_repository *repo)
*
* @param out new signature
* @param buf signature string
- * @return 0 on success, or an error code
+ * @return 0 on success, GIT_EINVALID if the signature is not parseable, or an error code
*/
GIT_EXTERN(int) git_signature_from_buffer(git_signature **out, const char *buf);
@@ -100,4 +144,5 @@ GIT_EXTERN(void) git_signature_free(git_signature *sig);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/stash.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/stash.h
index 795920e..ad28c32 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/stash.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/stash.h
@@ -13,8 +13,13 @@
/**
* @file git2/stash.h
- * @brief Git stash management routines
+ * @brief Stashes stores some uncommitted state in the repository
* @ingroup Git
+ *
+ * Stashes stores some uncommitted state in the repository; generally
+ * this allows a user to stash some changes so that they can restore
+ * the working directory to an unmodified state. This can allow a
+ * developer to work on two different changes in parallel.
* @{
*/
GIT_BEGIN_DECL
@@ -45,6 +50,11 @@ typedef enum {
* the working directory
*/
GIT_STASH_INCLUDE_IGNORED = (1 << 2),
+
+ /**
+ * All changes in the index and working directory are left intact
+ */
+ GIT_STASH_KEEP_ALL = (1 << 3)
} git_stash_flags;
/**
@@ -52,15 +62,10 @@ typedef enum {
*
* @param out Object id of the commit containing the stashed state.
* This commit is also the target of the direct reference refs/stash.
- *
* @param repo The owning repository.
- *
* @param stasher The identity of the person performing the stashing.
- *
* @param message Optional description along with the stashed state.
- *
* @param flags Flags to control the stashing process. (see GIT_STASH_* above)
- *
* @return 0 on success, GIT_ENOTFOUND where there's nothing to stash,
* or error code.
*/
@@ -71,6 +76,63 @@ GIT_EXTERN(int) git_stash_save(
const char *message,
uint32_t flags);
+/**
+ * Stash save options structure
+ *
+ * Initialize with `GIT_STASH_SAVE_OPTIONS_INIT`. Alternatively, you can
+ * use `git_stash_save_options_init`.
+ *
+ */
+typedef struct git_stash_save_options {
+ unsigned int version;
+
+ /** Flags to control the stashing process. (see GIT_STASH_* above) */
+ uint32_t flags;
+
+ /** The identity of the person performing the stashing. */
+ const git_signature *stasher;
+
+ /** Optional description along with the stashed state. */
+ const char *message;
+
+ /** Optional paths that control which files are stashed. */
+ git_strarray paths;
+} git_stash_save_options;
+
+/** Current version for the `git_stash_save_options` structure */
+#define GIT_STASH_SAVE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_stash_save_options` */
+#define GIT_STASH_SAVE_OPTIONS_INIT { GIT_STASH_SAVE_OPTIONS_VERSION }
+
+/**
+ * Initialize git_stash_save_options structure
+ *
+ * Initializes a `git_stash_save_options` with default values. Equivalent to
+ * creating an instance with `GIT_STASH_SAVE_OPTIONS_INIT`.
+ *
+ * @param opts The `git_stash_save_options` struct to initialize.
+ * @param version The struct version; pass `GIT_STASH_SAVE_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_stash_save_options_init(
+ git_stash_save_options *opts, unsigned int version);
+
+/**
+ * Save the local modifications to a new stash, with options.
+ *
+ * @param out Object id of the commit containing the stashed state.
+ * This commit is also the target of the direct reference refs/stash.
+ * @param repo The owning repository.
+ * @param opts The stash options.
+ * @return 0 on success, GIT_ENOTFOUND where there's nothing to stash,
+ * or error code.
+ */
+GIT_EXTERN(int) git_stash_save_with_opts(
+ git_oid *out,
+ git_repository *repo,
+ const git_stash_save_options *opts);
+
/** Stash application flags. */
typedef enum {
GIT_STASH_APPLY_DEFAULT = 0,
@@ -78,7 +140,7 @@ typedef enum {
/* Try to reinstate not only the working tree's changes,
* but also the index's changes.
*/
- GIT_STASH_APPLY_REINSTATE_INDEX = (1 << 0),
+ GIT_STASH_APPLY_REINSTATE_INDEX = (1 << 0)
} git_stash_apply_flags;
/** Stash apply progression states */
@@ -104,13 +166,17 @@ typedef enum {
GIT_STASH_APPLY_PROGRESS_CHECKOUT_MODIFIED,
/** The stash was applied successfully. */
- GIT_STASH_APPLY_PROGRESS_DONE,
+ GIT_STASH_APPLY_PROGRESS_DONE
} git_stash_apply_progress_t;
/**
* Stash application progress notification function.
* Return 0 to continue processing, or a negative value to
* abort the stash application.
+ *
+ * @param progress the progress information
+ * @param payload the user-specified payload to the apply function
+ * @return 0 on success, -1 on error
*/
typedef int GIT_CALLBACK(git_stash_apply_progress_cb)(
git_stash_apply_progress_t progress,
@@ -137,7 +203,10 @@ typedef struct git_stash_apply_options {
void *progress_payload;
} git_stash_apply_options;
+/** Current version for the `git_stash_apply_options` structure */
#define GIT_STASH_APPLY_OPTIONS_VERSION 1
+
+/** Static constructor for `git_stash_apply_options` */
#define GIT_STASH_APPLY_OPTIONS_INIT { \
GIT_STASH_APPLY_OPTIONS_VERSION, \
GIT_STASH_APPLY_DEFAULT, \
@@ -171,8 +240,6 @@ GIT_EXTERN(int) git_stash_apply_options_init(
* GIT_EMERGECONFLICT and both the working directory and index will be left
* unmodified.
*
- * Note that a minimum checkout strategy of `GIT_CHECKOUT_SAFE` is implied.
- *
* @param repo The owning repository.
* @param index The position within the stash list. 0 points to the
* most recent stashed state.
@@ -257,4 +324,5 @@ GIT_EXTERN(int) git_stash_pop(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/status.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/status.h
index 543e3fa..e13783b 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/status.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/status.h
@@ -14,7 +14,7 @@
/**
* @file git2/status.h
- * @brief Git file status routines
+ * @brief Status indicates how a user has changed the working directory and index
* @defgroup git_status Git file status routines
* @ingroup Git
* @{
@@ -48,17 +48,16 @@ typedef enum {
GIT_STATUS_WT_UNREADABLE = (1u << 12),
GIT_STATUS_IGNORED = (1u << 14),
- GIT_STATUS_CONFLICTED = (1u << 15),
+ GIT_STATUS_CONFLICTED = (1u << 15)
} git_status_t;
/**
* Function pointer to receive status on individual files
*
- * `path` is the relative path to the file from the root of the repository.
- *
- * `status_flags` is a combination of `git_status_t` values that apply.
- *
- * `payload` is the value you passed to the foreach function as payload.
+ * @param path is the path to the file
+ * @param status_flags the `git_status_t` values for file's status
+ * @param payload the user-specified payload to the foreach function
+ * @return 0 on success, or a negative number on failure
*/
typedef int GIT_CALLBACK(git_status_cb)(
const char *path, unsigned int status_flags, void *payload);
@@ -87,7 +86,7 @@ typedef enum {
* Only gives status based on index to working directory comparison,
* not comparing the index to the HEAD.
*/
- GIT_STATUS_SHOW_WORKDIR_ONLY = 2,
+ GIT_STATUS_SHOW_WORKDIR_ONLY = 2
} git_status_show_t;
/**
@@ -204,9 +203,10 @@ typedef enum {
* Unreadable files will be detected and given the status
* untracked instead of unreadable.
*/
- GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED = (1u << 15),
+ GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED = (1u << 15)
} git_status_opt_t;
+/** Default `git_status_opt_t` values */
#define GIT_STATUS_OPT_DEFAULTS \
(GIT_STATUS_OPT_INCLUDE_IGNORED | \
GIT_STATUS_OPT_INCLUDE_UNTRACKED | \
@@ -227,13 +227,16 @@ typedef struct {
/**
* The `show` value is one of the `git_status_show_t` constants that
- * control which files to scan and in what order.
+ * control which files to scan and in what order. The default is
+ * `GIT_STATUS_SHOW_INDEX_AND_WORKDIR`.
*/
git_status_show_t show;
/**
* The `flags` value is an OR'ed combination of the
- * `git_status_opt_t` values above.
+ * `git_status_opt_t` values above. The default is
+ * `GIT_STATUS_OPT_DEFAULTS`, which matches git's default
+ * behavior.
*/
unsigned int flags;
@@ -250,9 +253,18 @@ typedef struct {
* working directory and index; defaults to HEAD.
*/
git_tree *baseline;
+
+ /**
+ * Threshold above which similar files will be considered renames.
+ * This is equivalent to the -M option. Defaults to 50.
+ */
+ uint16_t rename_threshold;
} git_status_options;
+/** Current version for the `git_status_options` structure */
#define GIT_STATUS_OPTIONS_VERSION 1
+
+/** Static constructor for `git_status_options` */
#define GIT_STATUS_OPTIONS_INIT {GIT_STATUS_OPTIONS_VERSION}
/**
@@ -440,4 +452,5 @@ GIT_EXTERN(int) git_status_should_ignore(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/stdint.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/stdint.h
index 6950427..4f532e1 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/stdint.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/stdint.h
@@ -1,37 +1,37 @@
-// ISO C9x compliant stdint.h for Microsoft Visual Studio
-// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
-//
-// Copyright (c) 2006-2008 Alexander Chemeris
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// 1. Redistributions of source code must retain the above copyright notice,
-// this list of conditions and the following disclaimer.
-//
-// 2. Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-//
-// 3. The name of the author may be used to endorse or promote products
-// derived from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#ifdef _MSC_VER // [
-
-#ifndef _MSC_STDINT_H_ // [
+/* ISO C9x compliant stdint.h for Microsoft Visual Studio
+ * Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
+ *
+ * Copyright (c) 2006-2008 Alexander Chemeris
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * 3. The name of the author may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+ * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ *******************************************************************************/
+
+#ifdef _MSC_VER /* [ */
+
+#ifndef _MSC_STDINT_H_ /* [ */
#define _MSC_STDINT_H_
#if _MSC_VER > 1000
@@ -40,10 +40,11 @@
#include
-// For Visual Studio 6 in C++ mode and for many Visual Studio versions when
-// compiling for ARM we should wrap include with 'extern "C++" {}'
-// or compiler give many errors like this:
-// error C2733: second C linkage of overloaded function 'wmemchr' not allowed
+/* For Visual Studio 6 in C++ mode and for many Visual Studio versions when
+ * compiling for ARM we should wrap include with 'extern "C++" {}'
+ * or compiler give many errors like this:
+ * error C2733: second C linkage of overloaded function 'wmemchr' not allowed
+*/
#ifdef __cplusplus
extern "C" {
#endif
@@ -52,7 +53,7 @@ extern "C" {
}
#endif
-// Define _W64 macros to mark types changing their size, like intptr_t.
+/* Define _W64 macros to mark types changing their size, like intptr_t. */
#ifndef _W64
# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
# define _W64 __w64
@@ -62,13 +63,14 @@ extern "C" {
#endif
-// 7.18.1 Integer types
-
-// 7.18.1.1 Exact-width integer types
-
-// Visual Studio 6 and Embedded Visual C++ 4 doesn't
-// realize that, e.g. char has the same size as __int8
-// so we give up on __intX for them.
+/* 7.18.1 Integer types
+ *
+ * 7.18.1.1 Exact-width integer types
+ *
+ * Visual Studio 6 and Embedded Visual C++ 4 doesn't
+ * realize that, e.g. char has the same size as __int8
+ * so we give up on __intX for them.
+ */
#if (_MSC_VER < 1300)
typedef signed char int8_t;
typedef signed short int16_t;
@@ -88,7 +90,7 @@ typedef signed __int64 int64_t;
typedef unsigned __int64 uint64_t;
-// 7.18.1.2 Minimum-width integer types
+/* 7.18.1.2 Minimum-width integer types */
typedef int8_t int_least8_t;
typedef int16_t int_least16_t;
typedef int32_t int_least32_t;
@@ -98,7 +100,7 @@ typedef uint16_t uint_least16_t;
typedef uint32_t uint_least32_t;
typedef uint64_t uint_least64_t;
-// 7.18.1.3 Fastest minimum-width integer types
+/* 7.18.1.3 Fastest minimum-width integer types */
typedef int8_t int_fast8_t;
typedef int16_t int_fast16_t;
typedef int32_t int_fast32_t;
@@ -108,25 +110,25 @@ typedef uint16_t uint_fast16_t;
typedef uint32_t uint_fast32_t;
typedef uint64_t uint_fast64_t;
-// 7.18.1.4 Integer types capable of holding object pointers
-#ifdef _WIN64 // [
+/* 7.18.1.4 Integer types capable of holding object pointers */
+#ifdef _WIN64 /* [ */
typedef signed __int64 intptr_t;
typedef unsigned __int64 uintptr_t;
-#else // _WIN64 ][
+#else /* _WIN64 ][ */
typedef _W64 signed int intptr_t;
typedef _W64 unsigned int uintptr_t;
-#endif // _WIN64 ]
+#endif /* _WIN64 ] */
-// 7.18.1.5 Greatest-width integer types
+/* 7.18.1.5 Greatest-width integer types */
typedef int64_t intmax_t;
typedef uint64_t uintmax_t;
-// 7.18.2 Limits of specified-width integer types
+/* 7.18.2 Limits of specified-width integer types */
-#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259
+#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) /* [ See footnote 220 at page 257 and footnote 221 at page 259 */
-// 7.18.2.1 Limits of exact-width integer types
+/* 7.18.2.1 Limits of exact-width integer types */
#define INT8_MIN ((int8_t)_I8_MIN)
#define INT8_MAX _I8_MAX
#define INT16_MIN ((int16_t)_I16_MIN)
@@ -140,7 +142,7 @@ typedef uint64_t uintmax_t;
#define UINT32_MAX _UI32_MAX
#define UINT64_MAX _UI64_MAX
-// 7.18.2.2 Limits of minimum-width integer types
+/* 7.18.2.2 Limits of minimum-width integer types */
#define INT_LEAST8_MIN INT8_MIN
#define INT_LEAST8_MAX INT8_MAX
#define INT_LEAST16_MIN INT16_MIN
@@ -154,7 +156,7 @@ typedef uint64_t uintmax_t;
#define UINT_LEAST32_MAX UINT32_MAX
#define UINT_LEAST64_MAX UINT64_MAX
-// 7.18.2.3 Limits of fastest minimum-width integer types
+/* 7.18.2.3 Limits of fastest minimum-width integer types */
#define INT_FAST8_MIN INT8_MIN
#define INT_FAST8_MAX INT8_MAX
#define INT_FAST16_MIN INT16_MIN
@@ -168,62 +170,62 @@ typedef uint64_t uintmax_t;
#define UINT_FAST32_MAX UINT32_MAX
#define UINT_FAST64_MAX UINT64_MAX
-// 7.18.2.4 Limits of integer types capable of holding object pointers
-#ifdef _WIN64 // [
+/* 7.18.2.4 Limits of integer types capable of holding object pointers */
+#ifdef _WIN64 /* [ */
# define INTPTR_MIN INT64_MIN
# define INTPTR_MAX INT64_MAX
# define UINTPTR_MAX UINT64_MAX
-#else // _WIN64 ][
+#else /* _WIN64 ][ */
# define INTPTR_MIN INT32_MIN
# define INTPTR_MAX INT32_MAX
# define UINTPTR_MAX UINT32_MAX
-#endif // _WIN64 ]
+#endif /* _WIN64 ] */
-// 7.18.2.5 Limits of greatest-width integer types
+/* 7.18.2.5 Limits of greatest-width integer types */
#define INTMAX_MIN INT64_MIN
#define INTMAX_MAX INT64_MAX
#define UINTMAX_MAX UINT64_MAX
-// 7.18.3 Limits of other integer types
+/* 7.18.3 Limits of other integer types */
-#ifdef _WIN64 // [
+#ifdef _WIN64 /* [ */
# define PTRDIFF_MIN _I64_MIN
# define PTRDIFF_MAX _I64_MAX
-#else // _WIN64 ][
+#else /* _WIN64 ][ */
# define PTRDIFF_MIN _I32_MIN
# define PTRDIFF_MAX _I32_MAX
-#endif // _WIN64 ]
+#endif /* _WIN64 ] */
#define SIG_ATOMIC_MIN INT_MIN
#define SIG_ATOMIC_MAX INT_MAX
-#ifndef SIZE_MAX // [
-# ifdef _WIN64 // [
+#ifndef SIZE_MAX /* [ */
+# ifdef _WIN64 /* [ */
# define SIZE_MAX _UI64_MAX
-# else // _WIN64 ][
+# else /* _WIN64 ][ */
# define SIZE_MAX _UI32_MAX
-# endif // _WIN64 ]
-#endif // SIZE_MAX ]
+# endif /* _WIN64 ] */
+#endif /* SIZE_MAX ] */
-// WCHAR_MIN and WCHAR_MAX are also defined in
-#ifndef WCHAR_MIN // [
+/* WCHAR_MIN and WCHAR_MAX are also defined in */
+#ifndef WCHAR_MIN /* [ */
# define WCHAR_MIN 0
-#endif // WCHAR_MIN ]
-#ifndef WCHAR_MAX // [
+#endif /* WCHAR_MIN ] */
+#ifndef WCHAR_MAX /* [ */
# define WCHAR_MAX _UI16_MAX
-#endif // WCHAR_MAX ]
+#endif /* WCHAR_MAX ] */
#define WINT_MIN 0
#define WINT_MAX _UI16_MAX
-#endif // __STDC_LIMIT_MACROS ]
+#endif /* __STDC_LIMIT_MACROS ] */
-// 7.18.4 Limits of other integer types
+/* 7.18.4 Limits of other integer types */
-#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260
+#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) /* [ See footnote 224 at page 260 */
-// 7.18.4.1 Macros for minimum-width integer constants
+/* 7.18.4.1 Macros for minimum-width integer constants */
#define INT8_C(val) val##i8
#define INT16_C(val) val##i16
@@ -235,13 +237,13 @@ typedef uint64_t uintmax_t;
#define UINT32_C(val) val##ui32
#define UINT64_C(val) val##ui64
-// 7.18.4.2 Macros for greatest-width integer constants
+/* 7.18.4.2 Macros for greatest-width integer constants */
#define INTMAX_C INT64_C
#define UINTMAX_C UINT64_C
-#endif // __STDC_CONSTANT_MACROS ]
+#endif /* __STDC_CONSTANT_MACROS ] */
-#endif // _MSC_STDINT_H_ ]
+#endif /* _MSC_STDINT_H_ ] */
-#endif // _MSC_VER ]
\ No newline at end of file
+#endif /* _MSC_VER ] */
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/strarray.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/strarray.h
index 0f657e6..dcb628a 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/strarray.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/strarray.h
@@ -11,8 +11,8 @@
/**
* @file git2/strarray.h
- * @brief Git string array routines
- * @defgroup git_strarray Git string array routines
+ * @brief An array of strings for the user to free
+ * @defgroup git_strarray An array of strings for the user to free
* @ingroup Git
* @{
*/
@@ -36,21 +36,7 @@ typedef struct git_strarray {
*/
GIT_EXTERN(void) git_strarray_dispose(git_strarray *array);
-/**
- * Copy a string array object from source to target.
- *
- * Note: target is overwritten and hence should be empty, otherwise its
- * contents are leaked. Call git_strarray_free() if necessary.
- *
- * @param tgt target
- * @param src source
- * @return 0 on success, < 0 on allocation failure
- */
-GIT_EXTERN(int) git_strarray_copy(git_strarray *tgt, const git_strarray *src);
-
-
/** @} */
GIT_END_DECL
#endif
-
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/submodule.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/submodule.h
index 29d8bc1..911b3ce 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/submodule.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/submodule.h
@@ -15,7 +15,7 @@
/**
* @file git2/submodule.h
- * @brief Git submodule management utilities
+ * @brief Submodules place another repository's contents within this one
*
* Submodule support in libgit2 builds a list of known submodules and keeps
* it in the repository. The list is built from the .gitmodules file, the
@@ -85,23 +85,30 @@ typedef enum {
GIT_SUBMODULE_STATUS_WD_MODIFIED = (1u << 10),
GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED = (1u << 11),
GIT_SUBMODULE_STATUS_WD_WD_MODIFIED = (1u << 12),
- GIT_SUBMODULE_STATUS_WD_UNTRACKED = (1u << 13),
+ GIT_SUBMODULE_STATUS_WD_UNTRACKED = (1u << 13)
} git_submodule_status_t;
+/** Submodule source bits */
#define GIT_SUBMODULE_STATUS__IN_FLAGS 0x000Fu
+/** Submodule index status */
#define GIT_SUBMODULE_STATUS__INDEX_FLAGS 0x0070u
+/** Submodule working directory status */
#define GIT_SUBMODULE_STATUS__WD_FLAGS 0x3F80u
+/** Whether the submodule is modified */
#define GIT_SUBMODULE_STATUS_IS_UNMODIFIED(S) \
(((S) & ~GIT_SUBMODULE_STATUS__IN_FLAGS) == 0)
+/** Whether the submodule is modified (in the index) */
#define GIT_SUBMODULE_STATUS_IS_INDEX_UNMODIFIED(S) \
(((S) & GIT_SUBMODULE_STATUS__INDEX_FLAGS) == 0)
+/** Whether the submodule is modified (in the working directory) */
#define GIT_SUBMODULE_STATUS_IS_WD_UNMODIFIED(S) \
(((S) & (GIT_SUBMODULE_STATUS__WD_FLAGS & \
~GIT_SUBMODULE_STATUS_WD_UNINITIALIZED)) == 0)
+/** Whether the submodule working directory is dirty */
#define GIT_SUBMODULE_STATUS_IS_WD_DIRTY(S) \
(((S) & (GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED | \
GIT_SUBMODULE_STATUS_WD_WD_MODIFIED | \
@@ -130,10 +137,8 @@ typedef struct git_submodule_update_options {
/**
* These options are passed to the checkout step. To disable
- * checkout, set the `checkout_strategy` to
- * `GIT_CHECKOUT_NONE`. Generally you will want the use
- * GIT_CHECKOUT_SAFE to update files in the working
- * directory.
+ * checkout, set the `checkout_strategy` to `GIT_CHECKOUT_NONE`
+ * or `GIT_CHECKOUT_DRY_RUN`.
*/
git_checkout_options checkout_opts;
@@ -152,11 +157,15 @@ typedef struct git_submodule_update_options {
int allow_fetch;
} git_submodule_update_options;
+/** Current version for the `git_submodule_update_options` structure */
#define GIT_SUBMODULE_UPDATE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_submodule_update_options` */
#define GIT_SUBMODULE_UPDATE_OPTIONS_INIT \
{ GIT_SUBMODULE_UPDATE_OPTIONS_VERSION, \
- { GIT_CHECKOUT_OPTIONS_VERSION, GIT_CHECKOUT_SAFE }, \
- GIT_FETCH_OPTIONS_INIT, 1 }
+ GIT_CHECKOUT_OPTIONS_INIT, \
+ GIT_FETCH_OPTIONS_INIT, \
+ 1 }
/**
* Initialize git_submodule_update_options structure
@@ -181,7 +190,7 @@ GIT_EXTERN(int) git_submodule_update_options_init(
* @param submodule Submodule object
* @param init If the submodule is not initialized, setting this flag to true
* will initialize the submodule before updating. Otherwise, this will
- * return an error if attempting to update an uninitialzed repository.
+ * return an error if attempting to update an uninitialized repository.
* but setting this to true forces them to be updated.
* @param options configuration options for the update. If NULL, the
* function works as though GIT_SUBMODULE_UPDATE_OPTIONS_INIT was passed.
@@ -229,6 +238,7 @@ GIT_EXTERN(int) git_submodule_lookup(
*
* @param out Pointer to store the copy of the submodule.
* @param source Original submodule to copy.
+ * @return 0
*/
GIT_EXTERN(int) git_submodule_dup(git_submodule **out, git_submodule *source);
@@ -320,6 +330,7 @@ GIT_EXTERN(int) git_submodule_clone(
* (but doesn't actually do the commit).
*
* @param submodule The submodule to finish adding.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_submodule_add_finalize(git_submodule *submodule);
@@ -529,7 +540,8 @@ GIT_EXTERN(int) git_submodule_set_update(
* Note that at this time, libgit2 does not honor this setting and the
* fetch functionality current ignores submodules.
*
- * @return 0 if fetchRecurseSubmodules is false, 1 if true
+ * @param submodule the submodule to examine
+ * @return the submodule recursion configuration
*/
GIT_EXTERN(git_submodule_recurse_t) git_submodule_fetch_recurse_submodules(
git_submodule *submodule);
@@ -541,7 +553,7 @@ GIT_EXTERN(git_submodule_recurse_t) git_submodule_fetch_recurse_submodules(
*
* @param repo the repository to affect
* @param name the submodule to configure
- * @param fetch_recurse_submodules Boolean value
+ * @param fetch_recurse_submodules the submodule recursion configuration
* @return old value for fetchRecurseSubmodules
*/
GIT_EXTERN(int) git_submodule_set_fetch_recurse_submodules(
@@ -589,6 +601,9 @@ GIT_EXTERN(int) git_submodule_repo_init(
* submodule config, acting like "git submodule sync". This is useful if
* you have altered the URL for the submodule (or it has been altered by a
* fetch of upstream changes) and you need to update your local repo.
+ *
+ * @param submodule The submodule to copy.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_submodule_sync(git_submodule *submodule);
@@ -660,4 +675,5 @@ GIT_EXTERN(int) git_submodule_location(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/alloc.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/alloc.h
index c295807..67506f2 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/alloc.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/alloc.h
@@ -10,6 +10,17 @@
#include "git2/common.h"
+/**
+ * @file git2/sys/alloc.h
+ * @brief Custom memory allocators
+ * @defgroup git_merge Git merge routines
+ * @ingroup Git
+ *
+ * Users can configure custom allocators; this is particularly
+ * interesting when running in constrained environments, when calling
+ * from another language, or during testing.
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -24,28 +35,6 @@ typedef struct {
/** Allocate `n` bytes of memory */
void * GIT_CALLBACK(gmalloc)(size_t n, const char *file, int line);
- /**
- * Allocate memory for an array of `nelem` elements, where each element
- * has a size of `elsize`. Returned memory shall be initialized to
- * all-zeroes
- */
- void * GIT_CALLBACK(gcalloc)(size_t nelem, size_t elsize, const char *file, int line);
-
- /** Allocate memory for the string `str` and duplicate its contents. */
- char * GIT_CALLBACK(gstrdup)(const char *str, const char *file, int line);
-
- /**
- * Equivalent to the `gstrdup` function, but only duplicating at most
- * `n + 1` bytes
- */
- char * GIT_CALLBACK(gstrndup)(const char *str, size_t n, const char *file, int line);
-
- /**
- * Equivalent to `gstrndup`, but will always duplicate exactly `n` bytes
- * of `str`. Thus, out of bounds reads at `str` may happen.
- */
- char * GIT_CALLBACK(gsubstrdup)(const char *str, size_t n, const char *file, int line);
-
/**
* This function shall deallocate the old object `ptr` and return a
* pointer to a new object that has the size specified by `size`. In
@@ -53,18 +42,6 @@ typedef struct {
*/
void * GIT_CALLBACK(grealloc)(void *ptr, size_t size, const char *file, int line);
- /**
- * This function shall be equivalent to `grealloc`, but allocating
- * `neleme * elsize` bytes.
- */
- void * GIT_CALLBACK(greallocarray)(void *ptr, size_t nelem, size_t elsize, const char *file, int line);
-
- /**
- * This function shall allocate a new array of `nelem` elements, where
- * each element has a size of `elsize` bytes.
- */
- void * GIT_CALLBACK(gmallocarray)(size_t nelem, size_t elsize, const char *file, int line);
-
/**
* This function shall free the memory pointed to by `ptr`. In case
* `ptr` is `NULL`, this shall be a no-op.
@@ -96,6 +73,7 @@ int git_stdalloc_init_allocator(git_allocator *allocator);
*/
int git_win32_crtdbg_init_allocator(git_allocator *allocator);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/commit.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/commit.h
index ba67106..a8253c0 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/commit.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/commit.h
@@ -14,7 +14,7 @@
/**
* @file git2/sys/commit.h
* @brief Low-level Git commit creation
- * @defgroup git_backend Git custom backend APIs
+ * @defgroup git_commit Low-level Git commit creation
* @ingroup Git
* @{
*/
@@ -29,7 +29,43 @@ GIT_BEGIN_DECL
* the `tree`, neither the `parents` list of `git_oid`s are checked for
* validity.
*
- * @see git_commit_create
+ * @param id Pointer in which to store the OID of the newly created commit
+ *
+ * @param repo Repository where to store the commit
+ *
+ * @param update_ref If not NULL, name of the reference that
+ * will be updated to point to this commit. If the reference
+ * is not direct, it will be resolved to a direct reference.
+ * Use "HEAD" to update the HEAD of the current branch and
+ * make it point to this commit. If the reference doesn't
+ * exist yet, it will be created. If it does exist, the first
+ * parent must be the tip of this branch.
+ *
+ * @param author Signature with author and author time of commit
+ *
+ * @param committer Signature with committer and * commit time of commit
+ *
+ * @param message_encoding The encoding for the message in the
+ * commit, represented with a standard encoding name.
+ * E.g. "UTF-8". If NULL, no encoding header is written and
+ * UTF-8 is assumed.
+ *
+ * @param message Full message for this commit
+ *
+ * @param tree An instance of a `git_tree` object that will
+ * be used as the tree for the commit. This tree object must
+ * also be owned by the given `repo`.
+ *
+ * @param parent_count Number of parents for this commit
+ *
+ * @param parents Array of `parent_count` pointers to `git_commit`
+ * objects that will be used as the parents for this commit. This
+ * array may be NULL if `parent_count` is 0 (root commit). All the
+ * given commits must be owned by the `repo`.
+ *
+ * @return 0 or an error code
+ * The created commit will be written to the Object Database and
+ * the given reference will be updated to point to it
*/
GIT_EXTERN(int) git_commit_create_from_ids(
git_oid *id,
@@ -49,6 +85,10 @@ GIT_EXTERN(int) git_commit_create_from_ids(
* This is invoked with the count of the number of parents processed so far
* along with the user supplied payload. This should return a git_oid of
* the next parent or NULL if all parents have been provided.
+ *
+ * @param idx the index of the parent
+ * @param payload the user-specified payload
+ * @return the object id of the parent, or NULL if there are no further parents
*/
typedef const git_oid * GIT_CALLBACK(git_commit_parent_callback)(size_t idx, void *payload);
@@ -61,7 +101,40 @@ typedef const git_oid * GIT_CALLBACK(git_commit_parent_callback)(size_t idx, voi
* with `parent_payload` and should return `git_oid` values or NULL to
* indicate that all parents are accounted for.
*
- * @see git_commit_create
+ * @param id Pointer in which to store the OID of the newly created commit
+ *
+ * @param repo Repository where to store the commit
+ *
+ * @param update_ref If not NULL, name of the reference that
+ * will be updated to point to this commit. If the reference
+ * is not direct, it will be resolved to a direct reference.
+ * Use "HEAD" to update the HEAD of the current branch and
+ * make it point to this commit. If the reference doesn't
+ * exist yet, it will be created. If it does exist, the first
+ * parent must be the tip of this branch.
+ *
+ * @param author Signature with author and author time of commit
+ *
+ * @param committer Signature with committer and * commit time of commit
+ *
+ * @param message_encoding The encoding for the message in the
+ * commit, represented with a standard encoding name.
+ * E.g. "UTF-8". If NULL, no encoding header is written and
+ * UTF-8 is assumed.
+ *
+ * @param message Full message for this commit
+ *
+ * @param tree An instance of a `git_tree` object that will
+ * be used as the tree for the commit. This tree object must
+ * also be owned by the given `repo`.
+ *
+ * @param parent_cb Callback to invoke to obtain parent information
+ *
+ * @param parent_payload User-specified payload to provide to the callback
+ *
+ * @return 0 or an error code
+ * The created commit will be written to the Object Database and
+ * the given reference will be updated to point to it
*/
GIT_EXTERN(int) git_commit_create_from_callback(
git_oid *id,
@@ -77,4 +150,5 @@ GIT_EXTERN(int) git_commit_create_from_callback(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/commit_graph.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/commit_graph.h
index f6c0fc4..ff547ef 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/commit_graph.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/commit_graph.h
@@ -12,13 +12,52 @@
/**
* @file git2/sys/commit_graph.h
- * @brief Git commit-graph
- * @defgroup git_commit_graph Git commit-graph APIs
+ * @brief Commit graphs store information about commit relationships
+ * @defgroup git_commit_graph Commit graphs
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/**
+ * Options structure for `git_commit_graph_open_new`.
+ *
+ * Initialize with `GIT_COMMIT_GRAPH_OPEN_OPTIONS_INIT`. Alternatively,
+ * you can use `git_commit_graph_open_options_init`.
+ */
+typedef struct {
+ unsigned int version;
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /** The object ID type that this commit graph contains. */
+ git_oid_t oid_type;
+#endif
+} git_commit_graph_open_options;
+
+/** Current version for the `git_commit_graph_open_options` structure */
+#define GIT_COMMIT_GRAPH_OPEN_OPTIONS_VERSION 1
+
+/** Static constructor for `git_commit_graph_open_options` */
+#define GIT_COMMIT_GRAPH_OPEN_OPTIONS_INIT { \
+ GIT_COMMIT_GRAPH_OPEN_OPTIONS_VERSION \
+ }
+
+/**
+ * Initialize git_commit_graph_open_options structure
+ *
+ * Initializes a `git_commit_graph_open_options` with default values.
+ * Equivalent to creating an instance with
+ * `GIT_COMMIT_GRAPH_OPEN_OPTIONS_INIT`.
+ *
+ * @param opts The `git_commit_graph_open_options` struct to initialize.
+ * @param version The struct version; pass `GIT_COMMIT_GRAPH_OPEN_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_commit_graph_open_options_init(
+ git_commit_graph_open_options *opts,
+ unsigned int version);
+
+
/**
* Opens a `git_commit_graph` from a path to an objects directory.
*
@@ -28,7 +67,13 @@ GIT_BEGIN_DECL
* @param objects_dir the path to a git objects directory.
* @return Zero on success; -1 on failure.
*/
-GIT_EXTERN(int) git_commit_graph_open(git_commit_graph **cgraph_out, const char *objects_dir);
+GIT_EXTERN(int) git_commit_graph_open(
+ git_commit_graph **cgraph_out,
+ const char *objects_dir
+#ifdef GIT_EXPERIMENTAL_SHA256
+ , const git_commit_graph_open_options *options
+#endif
+ );
/**
* Frees commit-graph data. This should only be called when memory allocated
@@ -40,50 +85,6 @@ GIT_EXTERN(int) git_commit_graph_open(git_commit_graph **cgraph_out, const char
*/
GIT_EXTERN(void) git_commit_graph_free(git_commit_graph *cgraph);
-/**
- * Create a new writer for `commit-graph` files.
- *
- * @param out Location to store the writer pointer.
- * @param objects_info_dir The `objects/info` directory.
- * The `commit-graph` file will be written in this directory.
- * @return 0 or an error code
- */
-GIT_EXTERN(int) git_commit_graph_writer_new(
- git_commit_graph_writer **out,
- const char *objects_info_dir);
-
-/**
- * Free the commit-graph writer and its resources.
- *
- * @param w The writer to free. If NULL no action is taken.
- */
-GIT_EXTERN(void) git_commit_graph_writer_free(git_commit_graph_writer *w);
-
-/**
- * Add an `.idx` file (associated to a packfile) to the writer.
- *
- * @param w The writer.
- * @param repo The repository that owns the `.idx` file.
- * @param idx_path The path of an `.idx` file.
- * @return 0 or an error code
- */
-GIT_EXTERN(int) git_commit_graph_writer_add_index_file(
- git_commit_graph_writer *w,
- git_repository *repo,
- const char *idx_path);
-
-/**
- * Add a revwalk to the writer. This will add all the commits from the revwalk
- * to the commit-graph.
- *
- * @param w The writer.
- * @param walk The git_revwalk.
- * @return 0 or an error code
- */
-GIT_EXTERN(int) git_commit_graph_writer_add_revwalk(
- git_commit_graph_writer *w,
- git_revwalk *walk);
-
/**
* The strategy to use when adding a new set of commits to a pre-existing
@@ -94,19 +95,23 @@ typedef enum {
* Do not split commit-graph files. The other split strategy-related option
* fields are ignored.
*/
- GIT_COMMIT_GRAPH_SPLIT_STRATEGY_SINGLE_FILE = 0,
+ GIT_COMMIT_GRAPH_SPLIT_STRATEGY_SINGLE_FILE = 0
} git_commit_graph_split_strategy_t;
/**
- * Options structure for
- * `git_commit_graph_writer_commit`/`git_commit_graph_writer_dump`.
+ * Options structure for `git_commit_graph_writer_new`.
*
- * Initialize with `GIT_COMMIT_GRAPH_WRITER_OPTIONS_INIT`. Alternatively, you
- * can use `git_commit_graph_writer_options_init`.
+ * Initialize with `GIT_COMMIT_GRAPH_WRITER_OPTIONS_INIT`. Alternatively,
+ * you can use `git_commit_graph_writer_options_init`.
*/
typedef struct {
unsigned int version;
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /** The object ID type that this commit graph contains. */
+ git_oid_t oid_type;
+#endif
+
/**
* The strategy to use when adding new commits to a pre-existing commit-graph
* chain.
@@ -126,7 +131,10 @@ typedef struct {
size_t max_commits;
} git_commit_graph_writer_options;
+/** Current version for the `git_commit_graph_writer_options` structure */
#define GIT_COMMIT_GRAPH_WRITER_OPTIONS_VERSION 1
+
+/** Static constructor for `git_commit_graph_writer_options` */
#define GIT_COMMIT_GRAPH_WRITER_OPTIONS_INIT { \
GIT_COMMIT_GRAPH_WRITER_OPTIONS_VERSION \
}
@@ -145,30 +153,73 @@ GIT_EXTERN(int) git_commit_graph_writer_options_init(
git_commit_graph_writer_options *opts,
unsigned int version);
+/**
+ * Create a new writer for `commit-graph` files.
+ *
+ * @param out Location to store the writer pointer.
+ * @param objects_info_dir The `objects/info` directory.
+ * The `commit-graph` file will be written in this directory.
+ * @param options The options for the commit graph writer.
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_commit_graph_writer_new(
+ git_commit_graph_writer **out,
+ const char *objects_info_dir,
+ const git_commit_graph_writer_options *options);
+
+/**
+ * Free the commit-graph writer and its resources.
+ *
+ * @param w The writer to free. If NULL no action is taken.
+ */
+GIT_EXTERN(void) git_commit_graph_writer_free(git_commit_graph_writer *w);
+
+/**
+ * Add an `.idx` file (associated to a packfile) to the writer.
+ *
+ * @param w The writer.
+ * @param repo The repository that owns the `.idx` file.
+ * @param idx_path The path of an `.idx` file.
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_commit_graph_writer_add_index_file(
+ git_commit_graph_writer *w,
+ git_repository *repo,
+ const char *idx_path);
+
+/**
+ * Add a revwalk to the writer. This will add all the commits from the revwalk
+ * to the commit-graph.
+ *
+ * @param w The writer.
+ * @param walk The git_revwalk.
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_commit_graph_writer_add_revwalk(
+ git_commit_graph_writer *w,
+ git_revwalk *walk);
+
/**
* Write a `commit-graph` file to a file.
*
* @param w The writer
- * @param opts Pointer to git_commit_graph_writer_options struct.
* @return 0 or an error code
*/
GIT_EXTERN(int) git_commit_graph_writer_commit(
- git_commit_graph_writer *w,
- git_commit_graph_writer_options *opts);
+ git_commit_graph_writer *w);
/**
* Dump the contents of the `commit-graph` to an in-memory buffer.
*
- * @param buffer Buffer where to store the contents of the `commit-graph`.
+ * @param[out] buffer Buffer where to store the contents of the `commit-graph`.
* @param w The writer.
- * @param opts Pointer to git_commit_graph_writer_options struct.
* @return 0 or an error code
*/
GIT_EXTERN(int) git_commit_graph_writer_dump(
git_buf *buffer,
- git_commit_graph_writer *w,
- git_commit_graph_writer_options *opts);
+ git_commit_graph_writer *w);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/config.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/config.h
index 0a9005e..cc4a399 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/config.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/config.h
@@ -13,13 +13,28 @@
/**
* @file git2/sys/config.h
- * @brief Git config backend routines
- * @defgroup git_backend Git custom backend APIs
+ * @brief Custom configuration database backends
+ * @defgroup git_backend Custom configuration database backends
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/**
+ * An entry in a configuration backend. This is provided so that
+ * backend implementors can have a mechanism to free their data.
+ */
+typedef struct git_config_backend_entry {
+ /** The base configuration entry */
+ struct git_config_entry entry;
+
+ /**
+ * Free function for this entry; for internal purposes. Callers
+ * should call `git_config_entry_free` to free data.
+ */
+ void GIT_CALLBACK(free)(struct git_config_backend_entry *entry);
+} git_config_backend_entry;
+
/**
* Every iterator must have this struct as its first element, so the
* API can talk to it. You'd define your iterator as
@@ -39,7 +54,7 @@ struct git_config_iterator {
* Return the current entry and advance the iterator. The
* memory belongs to the library.
*/
- int GIT_CALLBACK(next)(git_config_entry **entry, git_config_iterator *iter);
+ int GIT_CALLBACK(next)(git_config_backend_entry **entry, git_config_iterator *iter);
/**
* Free the iterator
@@ -59,7 +74,7 @@ struct git_config_backend {
/* Open means open the file/database and parse if necessary */
int GIT_CALLBACK(open)(struct git_config_backend *, git_config_level_t level, const git_repository *repo);
- int GIT_CALLBACK(get)(struct git_config_backend *, const char *key, git_config_entry **entry);
+ int GIT_CALLBACK(get)(struct git_config_backend *, const char *key, git_config_backend_entry **entry);
int GIT_CALLBACK(set)(struct git_config_backend *, const char *key, const char *value);
int GIT_CALLBACK(set_multivar)(git_config_backend *cfg, const char *name, const char *regexp, const char *value);
int GIT_CALLBACK(del)(struct git_config_backend *, const char *key);
@@ -83,7 +98,11 @@ struct git_config_backend {
int GIT_CALLBACK(unlock)(struct git_config_backend *, int success);
void GIT_CALLBACK(free)(struct git_config_backend *);
};
+
+/** Current version for the `git_config_backend_options` structure */
#define GIT_CONFIG_BACKEND_VERSION 1
+
+/** Static constructor for `git_config_backend_options` */
#define GIT_CONFIG_BACKEND_INIT {GIT_CONFIG_BACKEND_VERSION}
/**
@@ -125,6 +144,63 @@ GIT_EXTERN(int) git_config_add_backend(
const git_repository *repo,
int force);
+/** Options for in-memory configuration backends. */
+typedef struct {
+ unsigned int version;
+
+ /**
+ * The type of this backend (eg, "command line"). If this is
+ * NULL, then this will be "in-memory".
+ */
+ const char *backend_type;
+
+ /**
+ * The path to the origin; if this is NULL then it will be
+ * left unset in the resulting configuration entries.
+ */
+ const char *origin_path;
+} git_config_backend_memory_options;
+
+/** Current version for the `git_config_backend_memory_options` structure */
+#define GIT_CONFIG_BACKEND_MEMORY_OPTIONS_VERSION 1
+
+/** Static constructor for `git_config_backend_memory_options` */
+#define GIT_CONFIG_BACKEND_MEMORY_OPTIONS_INIT { GIT_CONFIG_BACKEND_MEMORY_OPTIONS_VERSION }
+
+
+/**
+ * Create an in-memory configuration backend from a string in standard
+ * git configuration file format.
+ *
+ * @param out the new backend
+ * @param cfg the configuration that is to be parsed
+ * @param len the length of the string pointed to by `cfg`
+ * @param opts the options to initialize this backend with, or NULL
+ * @return 0 on success or an error code
+ */
+extern int git_config_backend_from_string(
+ git_config_backend **out,
+ const char *cfg,
+ size_t len,
+ git_config_backend_memory_options *opts);
+
+/**
+ * Create an in-memory configuration backend from a list of name/value
+ * pairs.
+ *
+ * @param out the new backend
+ * @param values the configuration values to set (in "key=value" format)
+ * @param len the length of the values array
+ * @param opts the options to initialize this backend with, or NULL
+ * @return 0 on success or an error code
+ */
+extern int git_config_backend_from_values(
+ git_config_backend **out,
+ const char **values,
+ size_t len,
+ git_config_backend_memory_options *opts);
+
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/credential.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/credential.h
index bb4c9f9..0d573a3 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/credential.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/credential.h
@@ -11,9 +11,9 @@
#include "git2/credential.h"
/**
- * @file git2/sys/cred.h
- * @brief Git credentials low-level implementation
- * @defgroup git_credential Git credentials low-level implementation
+ * @file git2/sys/credential.h
+ * @brief Low-level credentials implementation
+ * @defgroup git_credential Low-level credentials implementation
* @ingroup Git
* @{
*/
@@ -85,6 +85,7 @@ struct git_credential_ssh_custom {
void *payload; /**< Payload passed to prompt_callback */
};
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/diff.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/diff.h
index aefd7b9..a398f54 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/diff.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/diff.h
@@ -15,7 +15,7 @@
/**
* @file git2/sys/diff.h
- * @brief Low-level Git diff utilities
+ * @brief Low-level diff utilities
* @ingroup Git
* @{
*/
@@ -33,6 +33,12 @@ GIT_BEGIN_DECL
* must pass a `git_buf *` value as the payload to the `git_diff_print`
* and/or `git_patch_print` function. The data will be appended to the
* buffer (after any existing content).
+ *
+ * @param delta the delta being processed
+ * @param hunk the hunk being processed
+ * @param line the line being processed
+ * @param payload the payload provided by the diff generator
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_diff_print_callback__to_buf(
const git_diff_delta *delta,
@@ -53,6 +59,12 @@ GIT_EXTERN(int) git_diff_print_callback__to_buf(
* value from `fopen()`) as the payload to the `git_diff_print`
* and/or `git_patch_print` function. If you pass NULL, this will write
* data to `stdout`.
+ *
+ * @param delta the delta being processed
+ * @param hunk the hunk being processed
+ * @param line the line being processed
+ * @param payload the payload provided by the diff generator
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_diff_print_callback__to_file_handle(
const git_diff_delta *delta,
@@ -70,7 +82,10 @@ typedef struct {
size_t oid_calculations; /**< Number of ID calculations */
} git_diff_perfdata;
+/** Current version for the `git_diff_perfdata_options` structure */
#define GIT_DIFF_PERFDATA_VERSION 1
+
+/** Static constructor for `git_diff_perfdata_options` */
#define GIT_DIFF_PERFDATA_INIT {GIT_DIFF_PERFDATA_VERSION,0,0}
/**
@@ -85,10 +100,15 @@ GIT_EXTERN(int) git_diff_get_perfdata(
/**
* Get performance data for diffs from a git_status_list
+ *
+ * @param out Structure to be filled with diff performance data
+ * @param status Diff to read performance data from
+ * @return 0 for success, <0 for error
*/
GIT_EXTERN(int) git_status_list_get_perfdata(
git_diff_perfdata *out, const git_status_list *status);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/email.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/email.h
index 6f4a286..26e792a 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/email.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/email.h
@@ -7,6 +7,11 @@
#ifndef INCLUDE_sys_git_email_h__
#define INCLUDE_sys_git_email_h__
+#include "git2/common.h"
+#include "git2/diff.h"
+#include "git2/email.h"
+#include "git2/types.h"
+
/**
* @file git2/sys/email.h
* @brief Advanced git email creation routines
@@ -28,6 +33,7 @@ GIT_BEGIN_DECL
* @param body optional text to include above the diffstat
* @param author the person who authored this commit
* @param opts email creation options
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_email_create_from_diff(
git_buf *out,
@@ -42,4 +48,5 @@ GIT_EXTERN(int) git_email_create_from_diff(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/errors.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/errors.h
new file mode 100644
index 0000000..44e8ecb
--- /dev/null
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/errors.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) the libgit2 contributors. All rights reserved.
+ *
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
+ * a Linking Exception. For full terms see the included COPYING file.
+ */
+
+#ifndef INCLUDE_sys_git_errors_h__
+#define INCLUDE_sys_git_errors_h__
+
+#include "git2/common.h"
+
+/**
+ * @file git2/sys/errors.h
+ * @brief Advanced error handling
+ * @ingroup Git
+ *
+ * Error handling for advanced consumers; those who use callbacks
+ * or those who create custom databases.
+ * @{
+ */
+GIT_BEGIN_DECL
+
+/**
+ * Clear the last library error that occurred for this thread.
+ */
+GIT_EXTERN(void) git_error_clear(void);
+
+/**
+ * Set the error message string for this thread, using `printf`-style
+ * formatting.
+ *
+ * This function is public so that custom ODB backends and the like can
+ * relay an error message through libgit2. Most regular users of libgit2
+ * will never need to call this function -- actually, calling it in most
+ * circumstances (for example, calling from within a callback function)
+ * will just end up having the value overwritten by libgit2 internals.
+ *
+ * This error message is stored in thread-local storage and only applies
+ * to the particular thread that this libgit2 call is made from.
+ *
+ * @param error_class One of the `git_error_t` enum above describing the
+ * general subsystem that is responsible for the error.
+ * @param fmt The `printf`-style format string; subsequent arguments must
+ * be the arguments for the format string.
+ */
+GIT_EXTERN(void) git_error_set(int error_class, const char *fmt, ...)
+ GIT_FORMAT_PRINTF(2, 3);
+
+/**
+ * Set the error message string for this thread. This function is like
+ * `git_error_set` but takes a static string instead of a `printf`-style
+ * format.
+ *
+ * @param error_class One of the `git_error_t` enum above describing the
+ * general subsystem that is responsible for the error.
+ * @param string The error message to keep
+ * @return 0 on success or -1 on failure
+ */
+GIT_EXTERN(int) git_error_set_str(int error_class, const char *string);
+
+/**
+ * Set the error message to a special value for memory allocation failure.
+ *
+ * The normal `git_error_set_str()` function attempts to `strdup()` the
+ * string that is passed in. This is not a good idea when the error in
+ * question is a memory allocation failure. That circumstance has a
+ * special setter function that sets the error string to a known and
+ * statically allocated internal value.
+ */
+GIT_EXTERN(void) git_error_set_oom(void);
+
+/** @} */
+GIT_END_DECL
+
+#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/filter.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/filter.h
index b375941..60466d1 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/filter.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/filter.h
@@ -11,8 +11,8 @@
/**
* @file git2/sys/filter.h
- * @brief Git filter backend and plugin routines
- * @defgroup git_backend Git custom backend APIs
+ * @brief Custom filter backends and plugins
+ * @defgroup git_backend Custom filter backends and plugins
* @ingroup Git
* @{
*/
@@ -26,7 +26,10 @@ GIT_BEGIN_DECL
*/
GIT_EXTERN(git_filter *) git_filter_lookup(const char *name);
+/** The "crlf" filter */
#define GIT_FILTER_CRLF "crlf"
+
+/** The "ident" filter */
#define GIT_FILTER_IDENT "ident"
/**
@@ -53,6 +56,12 @@ GIT_EXTERN(git_filter *) git_filter_lookup(const char *name);
* the filter list for you, but you can use this in combination with the
* `git_filter_lookup` and `git_filter_list_push` functions to assemble
* your own chains of filters.
+ *
+ * @param out the filter list
+ * @param repo the repository to use for configuration
+ * @param mode the filter mode (direction)
+ * @param options the options
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_filter_list_new(
git_filter_list **out,
@@ -72,6 +81,11 @@ GIT_EXTERN(int) git_filter_list_new(
* filter. Using this function, you can either pass in a payload if you
* know the expected payload format, or you can pass NULL. Some filters
* may fail with a NULL payload. Good luck!
+ *
+ * @param fl the filter list
+ * @param filter the filter to push
+ * @param payload the payload for the filter
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_filter_list_push(
git_filter_list *fl, git_filter *filter, void *payload);
@@ -96,17 +110,26 @@ typedef struct git_filter_source git_filter_source;
/**
* Get the repository that the source data is coming from.
+ *
+ * @param src the filter source
+ * @return the repository for the filter information
*/
GIT_EXTERN(git_repository *) git_filter_source_repo(const git_filter_source *src);
/**
* Get the path that the source data is coming from.
+ *
+ * @param src the filter source
+ * @return the path that is being filtered
*/
GIT_EXTERN(const char *) git_filter_source_path(const git_filter_source *src);
/**
* Get the file mode of the source file
* If the mode is unknown, this will return 0
+ *
+ * @param src the filter source
+ * @return the file mode for the file being filtered
*/
GIT_EXTERN(uint16_t) git_filter_source_filemode(const git_filter_source *src);
@@ -114,16 +137,25 @@ GIT_EXTERN(uint16_t) git_filter_source_filemode(const git_filter_source *src);
* Get the OID of the source
* If the OID is unknown (often the case with GIT_FILTER_CLEAN) then
* this will return NULL.
+ *
+ * @param src the filter source
+ * @return the object id of the file being filtered
*/
GIT_EXTERN(const git_oid *) git_filter_source_id(const git_filter_source *src);
/**
* Get the git_filter_mode_t to be used
+ *
+ * @param src the filter source
+ * @return the mode (direction) of the filter
*/
GIT_EXTERN(git_filter_mode_t) git_filter_source_mode(const git_filter_source *src);
/**
* Get the combination git_filter_flag_t options to be applied
+ *
+ * @param src the filter source
+ * @return the flags of the filter
*/
GIT_EXTERN(uint32_t) git_filter_source_flags(const git_filter_source *src);
@@ -137,6 +169,9 @@ GIT_EXTERN(uint32_t) git_filter_source_flags(const git_filter_source *src);
* before the first use of the filter, so you can defer expensive
* initialization operations (in case libgit2 is being used in a way that
* doesn't need the filter).
+ *
+ * @param self the filter to initialize
+ * @return 0 on success, negative number on failure
*/
typedef int GIT_CALLBACK(git_filter_init_fn)(git_filter *self);
@@ -149,6 +184,8 @@ typedef int GIT_CALLBACK(git_filter_init_fn)(git_filter *self);
* This may be called even if the `initialize` callback was not made.
*
* Typically this function will free the `git_filter` object itself.
+ *
+ * @param self the filter to shutdown
*/
typedef void GIT_CALLBACK(git_filter_shutdown_fn)(git_filter *self);
@@ -171,6 +208,12 @@ typedef void GIT_CALLBACK(git_filter_shutdown_fn)(git_filter *self);
* allocated (not stack), so that it doesn't go away before the `stream`
* callback can use it. If a filter allocates and assigns a value to the
* `payload`, it will need a `cleanup` callback to free the payload.
+ *
+ * @param self the filter check
+ * @param payload a data for future filter functions
+ * @param src the filter source
+ * @param attr_values the attribute values
+ * @return 0 on success or a negative value on error
*/
typedef int GIT_CALLBACK(git_filter_check_fn)(
git_filter *self,
@@ -191,6 +234,12 @@ typedef int GIT_CALLBACK(git_filter_check_fn)(
* The `payload` value will refer to any payload that was set by the
* `check` callback. It may be read from or written to as needed.
*
+ * @param self the filter check
+ * @param payload a data for future filter functions
+ * @param to the input buffer
+ * @param from the output buffer
+ * @param src the filter source
+ * @return 0 on success or a negative value on error
* @deprecated use git_filter_stream_fn
*/
typedef int GIT_CALLBACK(git_filter_apply_fn)(
@@ -209,6 +258,13 @@ typedef int GIT_CALLBACK(git_filter_apply_fn)(
* `git_writestream` that will the original data will be written to;
* with that data, the `git_writestream` will then perform the filter
* translation and stream the filtered data out to the `next` location.
+ *
+ * @param out the write stream
+ * @param self the filter
+ * @param payload a data for future filter functions
+ * @param src the filter source
+ * @param next the output stream
+ * @return 0 on success or a negative value on error
*/
typedef int GIT_CALLBACK(git_filter_stream_fn)(
git_writestream **out,
@@ -225,6 +281,9 @@ typedef int GIT_CALLBACK(git_filter_stream_fn)(
* `stream` callbacks allocated a `payload` to keep per-source filter
* state, use this callback to free that payload and release resources
* as required.
+ *
+ * @param self the filter
+ * @param payload a data for future filter functions
*/
typedef void GIT_CALLBACK(git_filter_cleanup_fn)(
git_filter *self,
@@ -291,7 +350,10 @@ struct git_filter {
git_filter_cleanup_fn cleanup;
};
+/** Current version for the `git_filter_options` structure */
#define GIT_FILTER_VERSION 1
+
+/** Static constructor for `git_filter_options` */
#define GIT_FILTER_INIT {GIT_FILTER_VERSION}
/**
@@ -300,7 +362,7 @@ struct git_filter {
*
* @param filter the `git_filter` struct to initialize.
* @param version Version the struct; pass `GIT_FILTER_VERSION`
- * @return Zero on success; -1 on failure.
+ * @return 0 on success; -1 on failure.
*/
GIT_EXTERN(int) git_filter_init(git_filter *filter, unsigned int version);
@@ -350,4 +412,5 @@ GIT_EXTERN(int) git_filter_unregister(const char *name);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/hashsig.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/hashsig.h
index 09c19ae..0d7be53 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/hashsig.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/hashsig.h
@@ -9,6 +9,16 @@
#include "git2/common.h"
+/**
+ * @file git2/sys/hashsig.h
+ * @brief Signatures for file similarity comparison
+ * @defgroup git_hashsig Git merge routines
+ * @ingroup Git
+ *
+ * Hash signatures are used for file similary comparison; this is
+ * used for git's rename handling.
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -101,6 +111,7 @@ GIT_EXTERN(int) git_hashsig_compare(
const git_hashsig *a,
const git_hashsig *b);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/index.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/index.h
index 1f6d93f..b3b86a0 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/index.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/index.h
@@ -12,8 +12,8 @@
/**
* @file git2/sys/index.h
- * @brief Low-level Git index manipulation routines
- * @defgroup git_backend Git custom backend APIs
+ * @brief Low-level index manipulation routines
+ * @defgroup git_index Low-level index manipulation routines
* @ingroup Git
* @{
*/
@@ -67,6 +67,7 @@ GIT_EXTERN(const git_index_name_entry *) git_index_name_get_byindex(
* @param ancestor the path of the file as it existed in the ancestor
* @param ours the path of the file as it existed in our tree
* @param theirs the path of the file as it existed in their tree
+ * @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_index_name_add(git_index *index,
const char *ancestor, const char *ours, const char *theirs);
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/mempack.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/mempack.h
index 17da590..be902be 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/mempack.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/mempack.h
@@ -15,8 +15,8 @@
/**
* @file git2/sys/mempack.h
- * @brief Custom ODB backend that permits packing objects in-memory
- * @defgroup git_backend Git custom backend APIs
+ * @brief A custom object database backend for storing objects in-memory
+ * @defgroup git_mempack A custom object database backend for storing objects in-memory
* @ingroup Git
* @{
*/
@@ -44,6 +44,26 @@ GIT_BEGIN_DECL
*/
GIT_EXTERN(int) git_mempack_new(git_odb_backend **out);
+/**
+ * Write a thin packfile with the objects in the memory store.
+ *
+ * A thin packfile is a packfile that does not contain its transitive closure of
+ * references. This is useful for efficiently distributing additions to a
+ * repository over the network, but also finds use in the efficient bulk
+ * addition of objects to a repository, locally.
+ *
+ * This operation performs the (shallow) insert operations into the
+ * `git_packbuilder`, but does not write the packfile to disk;
+ * see `git_packbuilder_write_buf`.
+ *
+ * It also does not reset the in-memory object database; see `git_mempack_reset`.
+ *
+ * @param backend The mempack backend
+ * @param pb The packbuilder to use to write the packfile
+ * @return 0 on success or an error code
+ */
+GIT_EXTERN(int) git_mempack_write_thin_pack(git_odb_backend *backend, git_packbuilder *pb);
+
/**
* Dump all the queued in-memory writes to a packfile.
*
@@ -82,6 +102,16 @@ GIT_EXTERN(int) git_mempack_dump(git_buf *pack, git_repository *repo, git_odb_ba
*/
GIT_EXTERN(int) git_mempack_reset(git_odb_backend *backend);
+/**
+ * Get the total number of objects in mempack
+ *
+ * @param count The count of objects in the mempack
+ * @param backend The mempack backend
+ * @return 0 on success, or -1 on error
+ */
+GIT_EXTERN(int) git_mempack_object_count(size_t *count, git_odb_backend *backend);
+
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/merge.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/merge.h
index ef4bc5a..a9f5220 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/merge.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/merge.h
@@ -14,13 +14,18 @@
/**
* @file git2/sys/merge.h
- * @brief Git merge driver backend and plugin routines
- * @defgroup git_merge Git merge driver APIs
+ * @brief Custom merge drivers
+ * @defgroup git_merge Custom merge drivers
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/**
+ * A "merge driver" is a mechanism that can be configured to handle
+ * conflict resolution for files changed in both the "ours" and "theirs"
+ * side of a merge.
+ */
typedef struct git_merge_driver git_merge_driver;
/**
@@ -31,8 +36,11 @@ typedef struct git_merge_driver git_merge_driver;
*/
GIT_EXTERN(git_merge_driver *) git_merge_driver_lookup(const char *name);
+/** The "text" merge driver */
#define GIT_MERGE_DRIVER_TEXT "text"
+/** The "binary" merge driver */
#define GIT_MERGE_DRIVER_BINARY "binary"
+/** The "union" merge driver */
#define GIT_MERGE_DRIVER_UNION "union"
/**
@@ -40,23 +48,48 @@ GIT_EXTERN(git_merge_driver *) git_merge_driver_lookup(const char *name);
*/
typedef struct git_merge_driver_source git_merge_driver_source;
-/** Get the repository that the source data is coming from. */
+/**
+ * Get the repository that the source data is coming from.
+ *
+ * @param src the merge driver source
+ * @return the repository
+ */
GIT_EXTERN(git_repository *) git_merge_driver_source_repo(
const git_merge_driver_source *src);
-/** Gets the ancestor of the file to merge. */
+/**
+ * Gets the ancestor of the file to merge.
+ *
+ * @param src the merge driver source
+ * @return the ancestor or NULL if there was no ancestor
+ */
GIT_EXTERN(const git_index_entry *) git_merge_driver_source_ancestor(
const git_merge_driver_source *src);
-/** Gets the ours side of the file to merge. */
+/**
+ * Gets the ours side of the file to merge.
+ *
+ * @param src the merge driver source
+ * @return the ours side or NULL if there was no ours side
+ */
GIT_EXTERN(const git_index_entry *) git_merge_driver_source_ours(
const git_merge_driver_source *src);
-/** Gets the theirs side of the file to merge. */
+/**
+ * Gets the theirs side of the file to merge.
+ *
+ * @param src the merge driver source
+ * @return the theirs side or NULL if there was no theirs side
+ */
GIT_EXTERN(const git_index_entry *) git_merge_driver_source_theirs(
const git_merge_driver_source *src);
-/** Gets the merge file options that the merge was invoked with */
+/**
+ * Gets the merge file options that the merge was invoked with.
+ *
+ * @param src the merge driver source
+ * @return the options
+ */
GIT_EXTERN(const git_merge_file_options *) git_merge_driver_source_file_options(
const git_merge_driver_source *src);
@@ -72,6 +105,9 @@ GIT_EXTERN(const git_merge_file_options *) git_merge_driver_source_file_options(
* right before the first use of the driver, so you can defer expensive
* initialization operations (in case libgit2 is being used in a way that
* doesn't need the merge driver).
+ *
+ * @param self the merge driver to initialize
+ * @return 0 on success, or a negative number on failure
*/
typedef int GIT_CALLBACK(git_merge_driver_init_fn)(git_merge_driver *self);
@@ -84,6 +120,8 @@ typedef int GIT_CALLBACK(git_merge_driver_init_fn)(git_merge_driver *self);
* This may be called even if the `initialize` callback was not made.
*
* Typically this function will free the `git_merge_driver` object itself.
+ *
+ * @param self the merge driver to shutdown
*/
typedef void GIT_CALLBACK(git_merge_driver_shutdown_fn)(git_merge_driver *self);
@@ -104,6 +142,14 @@ typedef void GIT_CALLBACK(git_merge_driver_shutdown_fn)(git_merge_driver *self);
* specified by the file's attributes.
*
* The `src` contains the data about the file to be merged.
+ *
+ * @param self the merge driver
+ * @param path_out the resolved path
+ * @param mode_out the resolved mode
+ * @param merged_out the merged output contents
+ * @param filter_name the filter that was invoked
+ * @param src the data about the unmerged file
+ * @return 0 on success, or an error code
*/
typedef int GIT_CALLBACK(git_merge_driver_apply_fn)(
git_merge_driver *self,
@@ -139,6 +185,7 @@ struct git_merge_driver {
git_merge_driver_apply_fn apply;
};
+/** The version for the `git_merge_driver` */
#define GIT_MERGE_DRIVER_VERSION 1
/**
@@ -179,4 +226,5 @@ GIT_EXTERN(int) git_merge_driver_unregister(const char *name);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/midx.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/midx.h
index e3d7498..b3a68af 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/midx.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/midx.h
@@ -11,14 +11,52 @@
#include "git2/types.h"
/**
- * @file git2/midx.h
- * @brief Git multi-pack-index routines
- * @defgroup git_midx Git multi-pack-index routines
+ * @file git2/sys/midx.h
+ * @brief Incremental multi-pack indexes
+ * @defgroup git_midx Incremental multi-pack indexes
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/**
+ * Options structure for `git_midx_writer_options`.
+ *
+ * Initialize with `GIT_MIDX_WRITER_OPTIONS_INIT`. Alternatively,
+ * you can use `git_midx_writer_options_init`.
+ */
+typedef struct {
+ unsigned int version;
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /** The object ID type that this commit graph contains. */
+ git_oid_t oid_type;
+#endif
+} git_midx_writer_options;
+
+/** Current version for the `git_midx_writer_options` structure */
+#define GIT_MIDX_WRITER_OPTIONS_VERSION 1
+
+/** Static constructor for `git_midx_writer_options` */
+#define GIT_MIDX_WRITER_OPTIONS_INIT { \
+ GIT_MIDX_WRITER_OPTIONS_VERSION \
+ }
+
+/**
+ * Initialize git_midx_writer_options structure
+ *
+ * Initializes a `git_midx_writer_options` with default values.
+ * Equivalent to creating an instance with
+ * `GIT_MIDX_WRITER_OPTIONS_INIT`.
+ *
+ * @param opts The `git_midx_writer_options` struct to initialize.
+ * @param version The struct version; pass `GIT_MIDX_WRITER_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_midx_writer_options_init(
+ git_midx_writer_options *opts,
+ unsigned int version);
+
/**
* Create a new writer for `multi-pack-index` files.
*
@@ -29,7 +67,11 @@ GIT_BEGIN_DECL
*/
GIT_EXTERN(int) git_midx_writer_new(
git_midx_writer **out,
- const char *pack_dir);
+ const char *pack_dir
+#ifdef GIT_EXPERIMENTAL_SHA256
+ , git_midx_writer_options *options
+#endif
+ );
/**
* Free the multi-pack-index writer and its resources.
@@ -71,4 +113,5 @@ GIT_EXTERN(int) git_midx_writer_dump(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/odb_backend.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/odb_backend.h
index 9ae0ed9..53d8d06 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/odb_backend.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/odb_backend.h
@@ -13,9 +13,9 @@
#include "git2/odb.h"
/**
- * @file git2/sys/backend.h
- * @brief Git custom backend implementors functions
- * @defgroup git_backend Git custom backend APIs
+ * @file git2/sys/odb_backend.h
+ * @brief Object database backends for custom object storage
+ * @defgroup git_backend Object database backends for custom object storage
* @ingroup Git
* @{
*/
@@ -36,7 +36,7 @@ struct git_odb_backend {
void **, size_t *, git_object_t *, git_odb_backend *, const git_oid *);
/* To find a unique object given a prefix of its oid. The oid given
- * must be so that the remaining (GIT_OID_HEXSZ - len)*4 bits are 0s.
+ * must be so that the remaining (GIT_OID_SHA1_HEXSIZE - len)*4 bits are 0s.
*/
int GIT_CALLBACK(read_prefix)(
git_oid *, void **, size_t *, git_object_t *,
@@ -69,11 +69,8 @@ struct git_odb_backend {
* If the backend implements a refreshing mechanism, it should be exposed
* through this endpoint. Each call to `git_odb_refresh()` will invoke it.
*
- * However, the backend implementation should try to stay up-to-date as much
- * as possible by itself as libgit2 will not automatically invoke
- * `git_odb_refresh()`. For instance, a potential strategy for the backend
- * implementation to achieve this could be to internally invoke this
- * endpoint on failed lookups (ie. `exists()`, `read()`, `read_header()`).
+ * The odb layer will automatically call this when needed on failed
+ * lookups (ie. `exists()`, `read()`, `read_header()`).
*/
int GIT_CALLBACK(refresh)(git_odb_backend *);
@@ -109,7 +106,10 @@ struct git_odb_backend {
void GIT_CALLBACK(free)(git_odb_backend *);
};
+/** Current version for the `git_odb_backend_options` structure */
#define GIT_ODB_BACKEND_VERSION 1
+
+/** Static constructor for `git_odb_backend_options` */
#define GIT_ODB_BACKEND_INIT {GIT_ODB_BACKEND_VERSION}
/**
@@ -170,6 +170,7 @@ GIT_EXTERN(void *) git_odb_backend_malloc(git_odb_backend *backend, size_t len);
#endif
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/openssl.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/openssl.h
index b41c55c..8b74a98 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/openssl.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/openssl.h
@@ -9,6 +9,12 @@
#include "git2/common.h"
+/**
+ * @file git2/sys/openssl.h
+ * @brief Custom OpenSSL functionality
+ * @defgroup git_openssl Custom OpenSSL functionality
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -33,6 +39,7 @@ GIT_BEGIN_DECL
*/
GIT_EXTERN(int) git_openssl_set_locking(void);
+/** @} */
GIT_END_DECL
-#endif
+#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/path.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/path.h
index 2a0c7e0..2963bca 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/path.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/path.h
@@ -10,6 +10,16 @@
#include "git2/common.h"
+/**
+ * @file git2/sys/path.h
+ * @brief Custom path handling
+ * @defgroup git_path Custom path handling
+ * @ingroup Git
+ *
+ * Merge will take two commits and attempt to produce a commit that
+ * includes the changes that were made in both branches.
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -59,6 +69,7 @@ typedef enum {
*/
GIT_EXTERN(int) git_path_is_gitfile(const char *path, size_t pathlen, git_path_gitfile gitfile, git_path_fs fs);
+/** @} */
GIT_END_DECL
-#endif /* INCLUDE_sys_git_path */
+#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/refdb_backend.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/refdb_backend.h
index c31e26d..813822a 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/refdb_backend.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/refdb_backend.h
@@ -12,9 +12,9 @@
#include "git2/oid.h"
/**
- * @file git2/refdb_backend.h
- * @brief Git custom refs backend functions
- * @defgroup git_refdb_backend Git custom refs backend API
+ * @file git2/sys/refdb_backend.h
+ * @brief Custom reference database backends for refs storage
+ * @defgroup git_refdb_backend Custom reference database backends for refs storage
* @ingroup Git
* @{
*/
@@ -65,9 +65,9 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg exists The implementation shall set this to `0` if a ref does
+ * @param exists The implementation shall set this to `0` if a ref does
* not exist, otherwise to `1`.
- * @arg ref_name The reference's name that should be checked for
+ * @param ref_name The reference's name that should be checked for
* existence.
* @return `0` on success, a negative error value code.
*/
@@ -81,9 +81,9 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg out The implementation shall set this to the allocated
+ * @param out The implementation shall set this to the allocated
* reference, if it could be found, otherwise to `NULL`.
- * @arg ref_name The reference's name that should be checked for
+ * @param ref_name The reference's name that should be checked for
* existence.
* @return `0` on success, `GIT_ENOTFOUND` if the reference does
* exist, otherwise a negative error code.
@@ -98,12 +98,12 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg out The implementation shall set this to the allocated
+ * @param out The implementation shall set this to the allocated
* reference iterator. A custom structure may be used with an
* embedded `git_reference_iterator` structure. Both `next`
* and `next_name` functions of `git_reference_iterator` need
* to be populated.
- * @arg glob A pattern to filter references by. If given, the iterator
+ * @param glob A pattern to filter references by. If given, the iterator
* shall only return references that match the glob when
* passed to `wildmatch`.
* @return `0` on success, otherwise a negative error code.
@@ -118,20 +118,20 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg ref The reference to persist. May either be a symbolic or
+ * @param ref The reference to persist. May either be a symbolic or
* direct reference.
- * @arg force Whether to write the reference if a reference with the
+ * @param force Whether to write the reference if a reference with the
* same name already exists.
- * @arg who The person updating the reference. Shall be used to create
+ * @param who The person updating the reference. Shall be used to create
* a reflog entry.
- * @arg message The message detailing what kind of reference update is
+ * @param message The message detailing what kind of reference update is
* performed. Shall be used to create a reflog entry.
- * @arg old If not `NULL` and `force` is not set, then the
+ * @param old If not `NULL` and `force` is not set, then the
* implementation needs to ensure that the reference is currently at
* the given OID before writing the new value. If both `old`
* and `old_target` are `NULL`, then the reference should not
* exist at the point of writing.
- * @arg old_target If not `NULL` and `force` is not set, then the
+ * @param old_target If not `NULL` and `force` is not set, then the
* implementation needs to ensure that the symbolic
* reference is currently at the given target before
* writing the new value. If both `old` and
@@ -149,15 +149,15 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg out The implementation shall set this to the newly created
+ * @param out The implementation shall set this to the newly created
* reference or `NULL` on error.
- * @arg old_name The current name of the reference that is to be renamed.
- * @arg new_name The new name that the old reference shall be renamed to.
- * @arg force Whether to write the reference if a reference with the
+ * @param old_name The current name of the reference that is to be renamed.
+ * @param new_name The new name that the old reference shall be renamed to.
+ * @param force Whether to write the reference if a reference with the
* target name already exists.
- * @arg who The person updating the reference. Shall be used to create
+ * @param who The person updating the reference. Shall be used to create
* a reflog entry.
- * @arg message The message detailing what kind of reference update is
+ * @param message The message detailing what kind of reference update is
* performed. Shall be used to create a reflog entry.
* @return `0` on success, otherwise a negative error code.
*/
@@ -173,11 +173,11 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg ref_name The name of the reference name that shall be deleted.
- * @arg old_id If not `NULL` and `force` is not set, then the
+ * @param ref_name The name of the reference name that shall be deleted.
+ * @param old_id If not `NULL` and `force` is not set, then the
* implementation needs to ensure that the reference is currently at
* the given OID before writing the new value.
- * @arg old_target If not `NULL` and `force` is not set, then the
+ * @param old_target If not `NULL` and `force` is not set, then the
* implementation needs to ensure that the symbolic
* reference is currently at the given target before
* writing the new value.
@@ -243,7 +243,7 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg reflog The complete reference log for a given reference. Note
+ * @param reflog The complete reference log for a given reference. Note
* that this may contain entries that have already been
* written to disk.
* @return `0` on success, a negative error code otherwise
@@ -255,8 +255,8 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg old_name The name of old reference whose reflog shall be renamed from.
- * @arg new_name The name of new reference whose reflog shall be renamed to.
+ * @param old_name The name of old reference whose reflog shall be renamed from.
+ * @param new_name The name of new reference whose reflog shall be renamed to.
* @return `0` on success, a negative error code otherwise
*/
int GIT_CALLBACK(reflog_rename)(git_refdb_backend *_backend, const char *old_name, const char *new_name);
@@ -266,7 +266,7 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg name The name of the reference whose reflog shall be deleted.
+ * @param name The name of the reference whose reflog shall be deleted.
* @return `0` on success, a negative error code otherwise
*/
int GIT_CALLBACK(reflog_delete)(git_refdb_backend *backend, const char *name);
@@ -277,9 +277,9 @@ struct git_refdb_backend {
* A refdb implementation may provide this function; if it is not
* provided, the transaction API will fail to work.
*
- * @arg payload_out Opaque parameter that will be passed verbosely to
+ * @param payload_out Opaque parameter that will be passed verbosely to
* `unlock`.
- * @arg refname Reference that shall be locked.
+ * @param refname Reference that shall be locked.
* @return `0` on success, a negative error code otherwise
*/
int GIT_CALLBACK(lock)(void **payload_out, git_refdb_backend *backend, const char *refname);
@@ -294,16 +294,16 @@ struct git_refdb_backend {
* A refdb implementation must provide this function if a `lock`
* implementation is provided.
*
- * @arg payload The payload returned by `lock`.
- * @arg success `1` if a reference should be updated, `2` if
+ * @param payload The payload returned by `lock`.
+ * @param success `1` if a reference should be updated, `2` if
* a reference should be deleted, `0` if the lock must be
* discarded.
- * @arg update_reflog `1` in case the reflog should be updated, `0`
+ * @param update_reflog `1` in case the reflog should be updated, `0`
* otherwise.
- * @arg ref The reference which should be unlocked.
- * @arg who The person updating the reference. Shall be used to create
+ * @param ref The reference which should be unlocked.
+ * @param who The person updating the reference. Shall be used to create
* a reflog entry in case `update_reflog` is set.
- * @arg message The message detailing what kind of reference update is
+ * @param message The message detailing what kind of reference update is
* performed. Shall be used to create a reflog entry in
* case `update_reflog` is set.
* @return `0` on success, a negative error code otherwise
@@ -312,7 +312,10 @@ struct git_refdb_backend {
const git_reference *ref, const git_signature *sig, const char *message);
};
+/** Current version for the `git_refdb_backend_options` structure */
#define GIT_REFDB_BACKEND_VERSION 1
+
+/** Static constructor for `git_refdb_backend_options` */
#define GIT_REFDB_BACKEND_INIT {GIT_REFDB_BACKEND_VERSION}
/**
@@ -356,6 +359,7 @@ GIT_EXTERN(int) git_refdb_set_backend(
git_refdb *refdb,
git_refdb_backend *backend);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/reflog.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/reflog.h
deleted file mode 100644
index c9d0041..0000000
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/reflog.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright (C) the libgit2 contributors. All rights reserved.
- *
- * This file is part of libgit2, distributed under the GNU GPL v2 with
- * a Linking Exception. For full terms see the included COPYING file.
- */
-#ifndef INCLUDE_sys_git_reflog_h__
-#define INCLUDE_sys_git_reflog_h__
-
-#include "git2/common.h"
-#include "git2/types.h"
-#include "git2/oid.h"
-
-GIT_BEGIN_DECL
-
-GIT_EXTERN(git_reflog_entry *) git_reflog_entry__alloc(void);
-GIT_EXTERN(void) git_reflog_entry__free(git_reflog_entry *entry);
-
-GIT_END_DECL
-
-#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/refs.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/refs.h
index d2ce2e0..e434e67 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/refs.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/refs.h
@@ -13,8 +13,8 @@
/**
* @file git2/sys/refs.h
- * @brief Low-level Git ref creation
- * @defgroup git_backend Git custom backend APIs
+ * @brief Low-level git reference creation
+ * @defgroup git_backend Low-level git reference creation
* @ingroup Git
* @{
*/
@@ -46,4 +46,5 @@ GIT_EXTERN(git_reference *) git_reference__alloc_symbolic(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/remote.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/remote.h
new file mode 100644
index 0000000..476965d
--- /dev/null
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/remote.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) the libgit2 contributors. All rights reserved.
+ *
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
+ * a Linking Exception. For full terms see the included COPYING file.
+ */
+
+#ifndef INCLUDE_sys_git_remote_h
+#define INCLUDE_sys_git_remote_h
+
+#include "git2/remote.h"
+
+/**
+ * @file git2/sys/remote.h
+ * @brief Low-level remote functionality for custom transports
+ * @defgroup git_remote Low-level remote functionality for custom transports
+ * @ingroup Git
+ * @{
+*/
+
+GIT_BEGIN_DECL
+
+/**
+ * A remote's capabilities.
+ */
+typedef enum {
+ /** Remote supports fetching an advertised object by ID. */
+ GIT_REMOTE_CAPABILITY_TIP_OID = (1 << 0),
+
+ /** Remote supports fetching an individual reachable object. */
+ GIT_REMOTE_CAPABILITY_REACHABLE_OID = (1 << 1),
+
+ /** Remote supports push options. */
+ GIT_REMOTE_CAPABILITY_PUSH_OPTIONS = (1 << 2),
+} git_remote_capability_t;
+
+/**
+ * Disposes libgit2-initialized fields from a git_remote_connect_options.
+ * This should only be used for git_remote_connect_options returned by
+ * git_transport_remote_connect_options.
+ *
+ * Note that this does not free the `git_remote_connect_options` itself, just
+ * the memory pointed to by it.
+ *
+ * @param opts The `git_remote_connect_options` struct to dispose.
+ */
+GIT_EXTERN(void) git_remote_connect_options_dispose(
+ git_remote_connect_options *opts);
+
+/** @} */
+GIT_END_DECL
+
+#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/repository.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/repository.h
index 892be66..026ac8a 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/repository.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/repository.h
@@ -9,16 +9,71 @@
#include "git2/common.h"
#include "git2/types.h"
+#include "git2/oid.h"
/**
* @file git2/sys/repository.h
- * @brief Git repository custom implementation routines
- * @defgroup git_backend Git custom backend APIs
+ * @brief Custom repository handling
+ * @defgroup git_repository Custom repository handling
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+#ifdef GIT_EXPERIMENTAL_SHA256
+
+/**
+ * The options for creating an repository from scratch.
+ *
+ * Initialize with `GIT_REPOSITORY_NEW_OPTIONS_INIT`. Alternatively,
+ * you can use `git_repository_new_options_init`.
+ *
+ * @options[version] GIT_REPOSITORY_NEW_OPTIONS_VERSION
+ * @options[init_macro] GIT_REPOSITORY_NEW_OPTIONS_INIT
+ * @options[init_function] git_repository_new_options_init
+ */
+typedef struct git_repository_new_options {
+ unsigned int version; /**< The version */
+
+ /**
+ * The object ID type for the object IDs that exist in the index.
+ *
+ * If this is not specified, this defaults to `GIT_OID_SHA1`.
+ */
+ git_oid_t oid_type;
+} git_repository_new_options;
+
+/** Current version for the `git_repository_new_options` structure */
+#define GIT_REPOSITORY_NEW_OPTIONS_VERSION 1
+
+/** Static constructor for `git_repository_new_options` */
+#define GIT_REPOSITORY_NEW_OPTIONS_INIT { GIT_REPOSITORY_NEW_OPTIONS_VERSION }
+
+/**
+ * Initialize git_repository_new_options structure
+ *
+ * Initializes a `git_repository_new_options` with default values.
+ * Equivalent to creating an instance with
+ * `GIT_REPOSITORY_NEW_OPTIONS_INIT`.
+ *
+ * @param opts The `git_repository_new_options` struct to initialize.
+ * @param version The struct version; pass `GIT_REPOSITORY_NEW_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_repository_new_options_init(
+ git_repository_new_options *opts,
+ unsigned int version);
+
+/**
+ * Create a new repository with no backends.
+ *
+ * @param[out] out The blank repository
+ * @param opts the options for repository creation, or NULL for defaults
+ * @return 0 on success, or an error code
+ */
+GIT_EXTERN(int) git_repository_new(git_repository **out, git_repository_new_options *opts);
+#else
+
/**
* Create a new repository with neither backends nor config object
*
@@ -29,11 +84,13 @@ GIT_BEGIN_DECL
* can fail to function properly: locations under $GIT_DIR, $GIT_COMMON_DIR,
* or $GIT_INFO_DIR are impacted.
*
- * @param out The blank repository
+ * @param[out] out The blank repository
* @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_repository_new(git_repository **out);
+#endif
+
/**
* Reset all the internal state in a repository.
*
@@ -156,6 +213,7 @@ GIT_EXTERN(int) git_repository_set_bare(git_repository *repo);
* and caches them so that subsequent calls to `git_submodule_lookup` are O(1).
*
* @param repo the repository whose submodules will be cached.
+ * @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_repository_submodule_cache_all(
git_repository *repo);
@@ -171,10 +229,12 @@ GIT_EXTERN(int) git_repository_submodule_cache_all(
* of these has changed, the cache might become invalid.
*
* @param repo the repository whose submodule cache will be cleared
+ * @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_repository_submodule_cache_clear(
git_repository *repo);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/stream.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/stream.h
index 6f93cc4..eabff68 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/stream.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/stream.h
@@ -11,8 +11,16 @@
#include "git2/types.h"
#include "git2/proxy.h"
+/**
+ * @file git2/sys/stream.h
+ * @brief Streaming file I/O functionality
+ * @defgroup git_stream Streaming file I/O functionality
+ * @ingroup Git
+ * @{
+ */
GIT_BEGIN_DECL
+/** Current version for the `git_stream` structures */
#define GIT_STREAM_VERSION 1
/**
@@ -29,8 +37,22 @@ GIT_BEGIN_DECL
typedef struct git_stream {
int version;
- int encrypted;
- int proxy_support;
+ unsigned int encrypted : 1,
+ proxy_support : 1;
+
+ /**
+ * Timeout for read and write operations; can be set to `0` to
+ * block indefinitely.
+ */
+ int timeout;
+
+ /**
+ * Timeout to connect to the remote server; can be set to `0`
+ * to use the system defaults. This can be shorter than the
+ * system default - often 75 seconds - but cannot be longer.
+ */
+ int connect_timeout;
+
int GIT_CALLBACK(connect)(struct git_stream *);
int GIT_CALLBACK(certificate)(git_cert **, struct git_stream *);
int GIT_CALLBACK(set_proxy)(struct git_stream *, const git_proxy_options *proxy_opts);
@@ -79,7 +101,7 @@ typedef enum {
GIT_STREAM_STANDARD = 1,
/** A TLS-encrypted socket. */
- GIT_STREAM_TLS = 2,
+ GIT_STREAM_TLS = 2
} git_stream_t;
/**
@@ -133,6 +155,7 @@ GIT_EXTERN(int) git_stream_register_tls(git_stream_cb ctor);
#endif
+/**@}*/
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/transport.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/transport.h
index fee3454..ad6765c 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/transport.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/sys/transport.h
@@ -9,46 +9,40 @@
#define INCLUDE_sys_git_transport_h
#include "git2/net.h"
+#include "git2/oidarray.h"
+#include "git2/proxy.h"
+#include "git2/remote.h"
+#include "git2/strarray.h"
#include "git2/transport.h"
#include "git2/types.h"
-#include "git2/strarray.h"
-#include "git2/proxy.h"
/**
* @file git2/sys/transport.h
- * @brief Git custom transport registration interfaces and functions
- * @defgroup git_transport Git custom transport registration
+ * @brief Custom transport registration interfaces and functions
+ * @defgroup git_transport Custom transport registration
* @ingroup Git
+ *
+ * Callers can override the default HTTPS or SSH implementation by
+ * specifying a custom transport.
* @{
*/
GIT_BEGIN_DECL
/**
- * Flags to pass to transport
- *
- * Currently unused.
+ * The negotiation state during a fetch smart transport negotiation.
*/
-typedef enum {
- GIT_TRANSPORTFLAGS_NONE = 0,
-} git_transport_flags_t;
+typedef struct {
+ const git_remote_head * const *refs;
+ size_t refs_len;
+ git_oid *shallow_roots;
+ size_t shallow_roots_len;
+ int depth;
+} git_fetch_negotiation;
struct git_transport {
unsigned int version; /**< The struct version */
- /** Set progress and error callbacks */
- int GIT_CALLBACK(set_callbacks)(
- git_transport *transport,
- git_transport_message_cb progress_cb,
- git_transport_message_cb error_cb,
- git_transport_certificate_check_cb certificate_check_cb,
- void *payload);
-
- /** Set custom headers for HTTP requests */
- int GIT_CALLBACK(set_custom_headers)(
- git_transport *transport,
- const git_strarray *custom_headers);
-
/**
* Connect the transport to the remote repository, using the given
* direction.
@@ -56,11 +50,39 @@ struct git_transport {
int GIT_CALLBACK(connect)(
git_transport *transport,
const char *url,
- git_credential_acquire_cb cred_acquire_cb,
- void *cred_acquire_payload,
- const git_proxy_options *proxy_opts,
int direction,
- int flags);
+ const git_remote_connect_options *connect_opts);
+
+ /**
+ * Resets the connect options for the given transport. This
+ * is useful for updating settings or callbacks for an already
+ * connected transport.
+ */
+ int GIT_CALLBACK(set_connect_opts)(
+ git_transport *transport,
+ const git_remote_connect_options *connect_opts);
+
+ /**
+ * Gets the capabilities for this remote repository.
+ *
+ * This function may be called after a successful call to
+ * `connect()`.
+ */
+ int GIT_CALLBACK(capabilities)(
+ unsigned int *capabilities,
+ git_transport *transport);
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /**
+ * Gets the object type for the remote repository.
+ *
+ * This function may be called after a successful call to
+ * `connect()`.
+ */
+ int GIT_CALLBACK(oid_type)(
+ git_oid_t *object_type,
+ git_transport *transport);
+#endif
/**
* Get the list of available references in the remote repository.
@@ -75,7 +97,9 @@ struct git_transport {
git_transport *transport);
/** Executes the push whose context is in the git_push object. */
- int GIT_CALLBACK(push)(git_transport *transport, git_push *push, const git_remote_callbacks *callbacks);
+ int GIT_CALLBACK(push)(
+ git_transport *transport,
+ git_push *push);
/**
* Negotiate a fetch with the remote repository.
@@ -87,8 +111,17 @@ 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);
+
+ /**
+ * Return the shallow roots of the remote.
+ *
+ * This function may be called after a successful call to
+ * `negotiate_fetch`.
+ */
+ int GIT_CALLBACK(shallow_roots)(
+ git_oidarray *out,
+ git_transport *transport);
/**
* Start downloading the packfile from the remote repository.
@@ -99,16 +132,11 @@ struct git_transport {
int GIT_CALLBACK(download_pack)(
git_transport *transport,
git_repository *repo,
- git_indexer_progress *stats,
- git_indexer_progress_cb progress_cb,
- void *progress_payload);
+ git_indexer_progress *stats);
/** Checks to see if the transport is connected */
int GIT_CALLBACK(is_connected)(git_transport *transport);
- /** Reads the flags value previously passed into connect() */
- int GIT_CALLBACK(read_flags)(git_transport *transport, int *flags);
-
/** Cancels any outstanding transport operation */
void GIT_CALLBACK(cancel)(git_transport *transport);
@@ -124,7 +152,10 @@ struct git_transport {
void GIT_CALLBACK(free)(git_transport *transport);
};
+/** Current version for the `git_transport` structure */
#define GIT_TRANSPORT_VERSION 1
+
+/** Static constructor for `git_transport` */
#define GIT_TRANSPORT_INIT {GIT_TRANSPORT_VERSION}
/**
@@ -270,14 +301,18 @@ GIT_EXTERN(int) git_transport_smart_certificate_check(git_transport *transport,
GIT_EXTERN(int) git_transport_smart_credentials(git_credential **out, git_transport *transport, const char *user, int methods);
/**
- * Get a copy of the proxy options
+ * Get a copy of the remote connect options
*
- * The url is copied and must be freed by the caller.
+ * All data is copied and must be freed by the caller by calling
+ * `git_remote_connect_options_dispose`.
*
* @param out options struct to fill
* @param transport the transport to extract the data from.
+ * @return 0 on success, or an error code
*/
-GIT_EXTERN(int) git_transport_smart_proxy_options(git_proxy_options *out, git_transport *transport);
+GIT_EXTERN(int) git_transport_remote_connect_options(
+ git_remote_connect_options *out,
+ git_transport *transport);
/*
*** End of base transport interface ***
@@ -289,7 +324,7 @@ typedef enum {
GIT_SERVICE_UPLOADPACK_LS = 1,
GIT_SERVICE_UPLOADPACK = 2,
GIT_SERVICE_RECEIVEPACK_LS = 3,
- GIT_SERVICE_RECEIVEPACK = 4,
+ GIT_SERVICE_RECEIVEPACK = 4
} git_smart_service_t;
typedef struct git_smart_subtransport git_smart_subtransport;
@@ -361,7 +396,14 @@ struct git_smart_subtransport {
void GIT_CALLBACK(free)(git_smart_subtransport *transport);
};
-/** A function which creates a new subtransport for the smart transport */
+/**
+ * A function that creates a new subtransport for the smart transport
+ *
+ * @param out the smart subtransport
+ * @param owner the transport owner
+ * @param param the input parameter
+ * @return 0 on success, or an error code
+ */
typedef int GIT_CALLBACK(git_smart_subtransport_cb)(
git_smart_subtransport **out,
git_transport *owner,
@@ -404,6 +446,7 @@ typedef struct git_smart_subtransport_definition {
*
* @param out The newly created subtransport
* @param owner The smart transport to own this subtransport
+ * @param param custom parameters for the subtransport
* @return 0 or an error code
*/
GIT_EXTERN(int) git_smart_subtransport_http(
@@ -416,6 +459,7 @@ GIT_EXTERN(int) git_smart_subtransport_http(
*
* @param out The newly created subtransport
* @param owner The smart transport to own this subtransport
+ * @param param custom parameters for the subtransport
* @return 0 or an error code
*/
GIT_EXTERN(int) git_smart_subtransport_git(
@@ -428,6 +472,7 @@ GIT_EXTERN(int) git_smart_subtransport_git(
*
* @param out The newly created subtransport
* @param owner The smart transport to own this subtransport
+ * @param param custom parameters for the subtransport
* @return 0 or an error code
*/
GIT_EXTERN(int) git_smart_subtransport_ssh(
@@ -437,4 +482,5 @@ GIT_EXTERN(int) git_smart_subtransport_ssh(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/tag.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/tag.h
index a392136..3b0c12e 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/tag.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/tag.h
@@ -15,7 +15,7 @@
/**
* @file git2/tag.h
- * @brief Git tag parsing routines
+ * @brief A (nearly) immutable pointer to a commit; useful for versioning
* @defgroup git_tag Git tag management
* @ingroup Git
* @{
@@ -335,6 +335,7 @@ typedef int GIT_CALLBACK(git_tag_foreach_cb)(const char *name, git_oid *oid, voi
* @param repo Repository
* @param callback Callback function
* @param payload Pointer to callback data (optional)
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_tag_foreach(
git_repository *repo,
@@ -362,6 +363,7 @@ GIT_EXTERN(int) git_tag_peel(
*
* @param out Pointer to store the copy of the tag
* @param source Original tag to copy
+ * @return 0
*/
GIT_EXTERN(int) git_tag_dup(git_tag **out, git_tag *source);
@@ -379,4 +381,5 @@ GIT_EXTERN(int) git_tag_name_is_valid(int *valid, const char *name);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/trace.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/trace.h
index 8cee3a9..62cb87c 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/trace.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/trace.h
@@ -12,8 +12,8 @@
/**
* @file git2/trace.h
- * @brief Git tracing configuration routines
- * @defgroup git_trace Git tracing configuration routines
+ * @brief Tracing functionality to introspect libgit2 in your application
+ * @defgroup git_trace Tracing functionality to introspect libgit2 in your application
* @ingroup Git
* @{
*/
@@ -48,8 +48,13 @@ typedef enum {
/**
* An instance for a tracing function
+ *
+ * @param level the trace level
+ * @param msg the trace message
*/
-typedef void GIT_CALLBACK(git_trace_cb)(git_trace_level_t level, const char *msg);
+typedef void GIT_CALLBACK(git_trace_cb)(
+ git_trace_level_t level,
+ const char *msg);
/**
* Sets the system tracing configuration to the specified level with the
@@ -64,4 +69,5 @@ GIT_EXTERN(int) git_trace_set(git_trace_level_t level, git_trace_cb cb);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/transaction.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/transaction.h
index 4938570..212d329 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/transaction.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/transaction.h
@@ -12,8 +12,8 @@
/**
* @file git2/transaction.h
- * @brief Git transactional reference routines
- * @defgroup git_transaction Git transactional reference routines
+ * @brief Transactional reference handling
+ * @defgroup git_transaction Transactional reference handling
* @ingroup Git
* @{
*/
@@ -118,4 +118,5 @@ GIT_EXTERN(void) git_transaction_free(git_transaction *tx);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/transport.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/transport.h
index 5a27de9..04a7390 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/transport.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/transport.h
@@ -15,8 +15,8 @@
/**
* @file git2/transport.h
- * @brief Git transport interfaces and functions
- * @defgroup git_transport interfaces and functions
+ * @brief Transports are the low-level mechanism to connect to a remote server
+ * @defgroup git_transport Transports are the low-level mechanism to connect to a remote server
* @ingroup Git
* @{
*/
@@ -30,10 +30,18 @@ GIT_BEGIN_DECL
* @param str The message from the transport
* @param len The length of the message
* @param payload Payload provided by the caller
+ * @return 0 on success or an error code
*/
typedef int GIT_CALLBACK(git_transport_message_cb)(const char *str, int len, void *payload);
-/** Signature of a function which creates a transport */
+/**
+ * Signature of a function which creates a transport.
+ *
+ * @param out the transport generate
+ * @param owner the owner for the transport
+ * @param param the param to the transport creation
+ * @return 0 on success or an error code
+ */
typedef int GIT_CALLBACK(git_transport_cb)(git_transport **out, git_remote *owner, void *param);
/** @} */
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/tree.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/tree.h
index f2289fc..b8e2de2 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/tree.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/tree.h
@@ -14,8 +14,8 @@
/**
* @file git2/tree.h
- * @brief Git tree parsing, loading routines
- * @defgroup git_tree Git tree parsing, loading routines
+ * @brief Trees are collections of files and folders to make up the repository hierarchy
+ * @defgroup git_tree Trees are collections of files and folders to make up the repository hierarchy
* @ingroup Git
* @{
*/
@@ -24,7 +24,7 @@ GIT_BEGIN_DECL
/**
* Lookup a tree object from the repository.
*
- * @param out Pointer to the looked up tree
+ * @param[out] out Pointer to the looked up tree
* @param repo The repo to use when locating the tree.
* @param id Identity of the tree to locate.
* @return 0 or an error code
@@ -255,7 +255,7 @@ GIT_EXTERN(int) git_treebuilder_new(
git_treebuilder **out, git_repository *repo, const git_tree *source);
/**
- * Clear all the entires in the builder
+ * Clear all the entries in the builder
*
* @param bld Builder to clear
* @return 0 on success; error code otherwise
@@ -345,6 +345,10 @@ GIT_EXTERN(int) git_treebuilder_remove(
* The return value is treated as a boolean, with zero indicating that the
* entry should be left alone and any non-zero value meaning that the
* entry should be removed from the treebuilder list (i.e. filtered out).
+ *
+ * @param entry the tree entry for the callback to examine
+ * @param payload the payload from the caller
+ * @return 0 to do nothing, non-zero to remove the entry
*/
typedef int GIT_CALLBACK(git_treebuilder_filter_cb)(
const git_tree_entry *entry, void *payload);
@@ -379,14 +383,21 @@ GIT_EXTERN(int) git_treebuilder_filter(
GIT_EXTERN(int) git_treebuilder_write(
git_oid *id, git_treebuilder *bld);
-/** Callback for the tree traversal method */
+/**
+ * Callback for the tree traversal method.
+ *
+ * @param root the current (relative) root to the entry
+ * @param entry the tree entry
+ * @param payload the caller-provided callback payload
+ * @return a positive value to skip the entry, a negative value to stop the walk
+ */
typedef int GIT_CALLBACK(git_treewalk_cb)(
const char *root, const git_tree_entry *entry, void *payload);
/** Tree traversal modes */
typedef enum {
GIT_TREEWALK_PRE = 0, /* Pre-order */
- GIT_TREEWALK_POST = 1, /* Post-order */
+ GIT_TREEWALK_POST = 1 /* Post-order */
} git_treewalk_mode;
/**
@@ -418,6 +429,7 @@ GIT_EXTERN(int) git_tree_walk(
*
* @param out Pointer to store the copy of the tree
* @param source Original tree to copy
+ * @return 0
*/
GIT_EXTERN(int) git_tree_dup(git_tree **out, git_tree *source);
@@ -428,7 +440,7 @@ typedef enum {
/** Update or insert an entry at the specified path */
GIT_TREE_UPDATE_UPSERT,
/** Remove an entry from the specified path */
- GIT_TREE_UPDATE_REMOVE,
+ GIT_TREE_UPDATE_REMOVE
} git_tree_update_t;
/**
@@ -469,6 +481,6 @@ typedef struct {
GIT_EXTERN(int) git_tree_create_updated(git_oid *out, git_repository *repo, git_tree *baseline, size_t nupdates, const git_tree_update *updates);
/** @} */
-
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/types.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/types.h
index aac8e42..a4afd18 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/types.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/types.h
@@ -78,16 +78,21 @@ typedef enum {
GIT_OBJECT_BLOB = 3, /**< A file revision object. */
GIT_OBJECT_TAG = 4, /**< An annotated tag object. */
GIT_OBJECT_OFS_DELTA = 6, /**< A delta, base is given by an offset. */
- GIT_OBJECT_REF_DELTA = 7, /**< A delta, base is given by object id. */
+ GIT_OBJECT_REF_DELTA = 7 /**< A delta, base is given by object id. */
} git_object_t;
-/** An open object database handle. */
+/**
+ * An object database stores the objects (commit, trees, blobs, tags,
+ * etc) for a repository.
+ */
typedef struct git_odb git_odb;
/** A custom backend in an ODB */
typedef struct git_odb_backend git_odb_backend;
-/** An object read from the ODB */
+/**
+ * A "raw" object read from the object database.
+ */
typedef struct git_odb_object git_odb_object;
/** A stream to read/write from the ODB */
@@ -194,7 +199,18 @@ typedef struct git_reference_iterator git_reference_iterator;
/** Transactional interface to references */
typedef struct git_transaction git_transaction;
-/** Annotated commits, the input to merge and rebase. */
+/**
+ * Annotated commits are commits with additional metadata about how the
+ * commit was resolved, which can be used for maintaining the user's
+ * "intent" through commands like merge and rebase.
+ *
+ * For example, if a user wants to conceptually "merge `HEAD`", then the
+ * commit portion of an annotated commit will point to the `HEAD` commit,
+ * but the _annotation_ will denote the ref `HEAD`. This allows git to
+ * perform the internal bookkeeping so that the system knows both the
+ * content of what is being merged but also how the content was looked up
+ * so that it can be recorded in the reflog appropriately.
+ */
typedef struct git_annotated_commit git_annotated_commit;
/** Representation of a status collection */
@@ -208,14 +224,14 @@ typedef enum {
GIT_REFERENCE_INVALID = 0, /**< Invalid reference */
GIT_REFERENCE_DIRECT = 1, /**< A reference that points at an object id */
GIT_REFERENCE_SYMBOLIC = 2, /**< A reference that points at another reference */
- GIT_REFERENCE_ALL = GIT_REFERENCE_DIRECT | GIT_REFERENCE_SYMBOLIC,
+ GIT_REFERENCE_ALL = GIT_REFERENCE_DIRECT | GIT_REFERENCE_SYMBOLIC
} git_reference_t;
/** Basic type of any Git branch. */
typedef enum {
GIT_BRANCH_LOCAL = 1,
GIT_BRANCH_REMOTE = 2,
- GIT_BRANCH_ALL = GIT_BRANCH_LOCAL|GIT_BRANCH_REMOTE,
+ GIT_BRANCH_ALL = GIT_BRANCH_LOCAL|GIT_BRANCH_REMOTE
} git_branch_t;
/** Valid modes for index and tree entries. */
@@ -225,7 +241,7 @@ typedef enum {
GIT_FILEMODE_BLOB = 0100644,
GIT_FILEMODE_BLOB_EXECUTABLE = 0100755,
GIT_FILEMODE_LINK = 0120000,
- GIT_FILEMODE_COMMIT = 0160000,
+ GIT_FILEMODE_COMMIT = 0160000
} git_filemode_t;
/**
@@ -236,7 +252,7 @@ typedef struct git_refspec git_refspec;
/**
* Git's idea of a remote repository. A remote can be anonymous (in
- * which case it does not have backing configuration entires).
+ * which case it does not have backing configuration entries).
*/
typedef struct git_remote git_remote;
@@ -334,7 +350,7 @@ typedef enum {
GIT_SUBMODULE_IGNORE_NONE = 1, /**< any change or untracked == dirty */
GIT_SUBMODULE_IGNORE_UNTRACKED = 2, /**< dirty if tracked files change */
GIT_SUBMODULE_IGNORE_DIRTY = 3, /**< only dirty if HEAD moved */
- GIT_SUBMODULE_IGNORE_ALL = 4, /**< never dirty */
+ GIT_SUBMODULE_IGNORE_ALL = 4 /**< never dirty */
} git_submodule_ignore_t;
/**
@@ -350,7 +366,7 @@ typedef enum {
typedef enum {
GIT_SUBMODULE_RECURSE_NO = 0,
GIT_SUBMODULE_RECURSE_YES = 1,
- GIT_SUBMODULE_RECURSE_ONDEMAND = 2,
+ GIT_SUBMODULE_RECURSE_ONDEMAND = 2
} git_submodule_recurse_t;
typedef struct git_writestream git_writestream;
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/version.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/version.h
index 3503a62..587a101 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/version.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/version.h
@@ -7,12 +7,71 @@
#ifndef INCLUDE_git_version_h__
#define INCLUDE_git_version_h__
-#define LIBGIT2_VERSION "1.3.0"
-#define LIBGIT2_VER_MAJOR 1
-#define LIBGIT2_VER_MINOR 3
-#define LIBGIT2_VER_REVISION 0
-#define LIBGIT2_VER_PATCH 0
+#include "common.h"
-#define LIBGIT2_SOVERSION "1.3"
+/**
+ * @file git2/version.h
+ * @brief The version of libgit2
+ * @ingroup Git
+ * @{
+ */
+GIT_BEGIN_DECL
+
+/**
+ * The version string for libgit2. This string follows semantic
+ * versioning (v2) guidelines.
+ */
+#define LIBGIT2_VERSION "1.9.1"
+
+/** The major version number for this version of libgit2. */
+#define LIBGIT2_VERSION_MAJOR 1
+
+/** The minor version number for this version of libgit2. */
+#define LIBGIT2_VERSION_MINOR 9
+
+/** The revision ("teeny") version number for this version of libgit2. */
+#define LIBGIT2_VERSION_REVISION 1
+
+/** The Windows DLL patch number for this version of libgit2. */
+#define LIBGIT2_VERSION_PATCH 0
+
+/**
+ * The prerelease string for this version of libgit2. For development
+ * (nightly) builds, this will be "alpha". For prereleases, this will be
+ * a prerelease name like "beta" or "rc1". For final releases, this will
+ * be `NULL`.
+ */
+#define LIBGIT2_VERSION_PRERELEASE NULL
+
+/**
+ * The library ABI soversion for this version of libgit2. This should
+ * only be changed when the library has a breaking ABI change, and so
+ * may not reflect the library's API version number.
+ */
+#define LIBGIT2_SOVERSION "1.9"
+
+/**
+ * An integer value representing the libgit2 version number. For example,
+ * libgit2 1.6.3 is 1060300.
+ */
+#define LIBGIT2_VERSION_NUMBER ( \
+ (LIBGIT2_VERSION_MAJOR * 1000000) + \
+ (LIBGIT2_VERSION_MINOR * 10000) + \
+ (LIBGIT2_VERSION_REVISION * 100))
+
+/**
+ * Compare the libgit2 version against a given version. Evaluates to true
+ * if the given major, minor, and revision values are greater than or equal
+ * to the currently running libgit2 version. For example:
+ *
+ * #if LIBGIT2_VERSION_CHECK(1, 6, 3)
+ * # error libgit2 version is >= 1.6.3
+ * #endif
+ */
+#define LIBGIT2_VERSION_CHECK(major, minor, revision) \
+ (LIBGIT2_VERSION_NUMBER >= ((major)*1000000)+((minor)*10000)+((revision)*100))
+
+/** @} */
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/worktree.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/worktree.h
index 23084d8..fd37517 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/worktree.h
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/git2/worktree.h
@@ -11,11 +11,12 @@
#include "buffer.h"
#include "types.h"
#include "strarray.h"
+#include "checkout.h"
/**
- * @file git2/worktrees.h
- * @brief Git worktree related functions
- * @defgroup git_commit Git worktree related functions
+ * @file git2/worktree.h
+ * @brief Additional working directories for a repository
+ * @defgroup git_commit Additional working directories for a repository
* @ingroup Git
* @{
*/
@@ -52,6 +53,7 @@ GIT_EXTERN(int) git_worktree_lookup(git_worktree **out, git_repository *repo, co
*
* @param out Out-pointer for the newly allocated worktree
* @param repo Repository to look up worktree for
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_worktree_open_from_repository(git_worktree **out, git_repository *repo);
@@ -84,12 +86,22 @@ GIT_EXTERN(int) git_worktree_validate(const git_worktree *wt);
typedef struct git_worktree_add_options {
unsigned int version;
- int lock; /**< lock newly created worktree */
- git_reference *ref; /**< reference to use for the new worktree HEAD */
+ int lock; /**< lock newly created worktree */
+ int checkout_existing; /**< allow checkout of existing branch matching worktree name */
+ git_reference *ref; /**< reference to use for the new worktree HEAD */
+
+ /**
+ * Options for the checkout.
+ */
+ git_checkout_options checkout_options;
} git_worktree_add_options;
+/** Current version for the `git_worktree_add_options` structure */
#define GIT_WORKTREE_ADD_OPTIONS_VERSION 1
-#define GIT_WORKTREE_ADD_OPTIONS_INIT {GIT_WORKTREE_ADD_OPTIONS_VERSION,0,NULL}
+
+/** Static constructor for `git_worktree_add_options` */
+#define GIT_WORKTREE_ADD_OPTIONS_INIT { GIT_WORKTREE_ADD_OPTIONS_VERSION, \
+ 0, 0, NULL, GIT_CHECKOUT_OPTIONS_INIT }
/**
* Initialize git_worktree_add_options structure
@@ -185,7 +197,7 @@ typedef enum {
/* Prune working tree even if it is locked */
GIT_WORKTREE_PRUNE_LOCKED = 1u << 1,
/* Prune checked out working tree */
- GIT_WORKTREE_PRUNE_WORKING_TREE = 1u << 2,
+ GIT_WORKTREE_PRUNE_WORKING_TREE = 1u << 2
} git_worktree_prune_t;
/**
@@ -202,7 +214,10 @@ typedef struct git_worktree_prune_options {
uint32_t flags;
} git_worktree_prune_options;
+/** Current version for the `git_worktree_prune_options` structure */
#define GIT_WORKTREE_PRUNE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_worktree_prune_options` */
#define GIT_WORKTREE_PRUNE_OPTIONS_INIT {GIT_WORKTREE_PRUNE_OPTIONS_VERSION,0}
/**
@@ -231,7 +246,13 @@ GIT_EXTERN(int) git_worktree_prune_options_init(
*
* If the worktree is not valid and not locked or if the above
* flags have been passed in, this function will return a
- * positive value.
+ * positive value. If the worktree is not prunable, an error
+ * message will be set (visible in `giterr_last`) with details about
+ * why.
+ *
+ * @param wt Worktree to check.
+ * @param opts The prunable options.
+ * @return 1 if the worktree is prunable, 0 otherwise, or an error code.
*/
GIT_EXTERN(int) git_worktree_is_prunable(git_worktree *wt,
git_worktree_prune_options *opts);
@@ -253,4 +274,5 @@ GIT_EXTERN(int) git_worktree_prune(git_worktree *wt,
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/libssh2.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/libssh2.h
new file mode 100644
index 0000000..f47858a
--- /dev/null
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/libssh2.h
@@ -0,0 +1,1516 @@
+/* Copyright (C) Sara Golemon
+ * Copyright (C) Daniel Stenberg
+ * Copyright (C) Simon Josefsson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
+ * that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * Neither the name of the copyright holder nor the names
+ * of any other contributors may be used to endorse or
+ * promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef LIBSSH2_H
+#define LIBSSH2_H 1
+
+#define LIBSSH2_COPYRIGHT "The libssh2 project and its contributors."
+
+/* We use underscore instead of dash when appending DEV in dev versions just
+ to make the BANNER define (used by src/session.c) be a valid SSH
+ banner. Release versions have no appended strings and may of course not
+ have dashes either. */
+#define LIBSSH2_VERSION "1.11.1"
+
+/* The numeric version number is also available "in parts" by using these
+ defines: */
+#define LIBSSH2_VERSION_MAJOR 1
+#define LIBSSH2_VERSION_MINOR 11
+#define LIBSSH2_VERSION_PATCH 1
+
+/* This is the numeric version of the libssh2 version number, meant for easier
+ parsing and comparisons by programs. The LIBSSH2_VERSION_NUM define will
+ always follow this syntax:
+
+ 0xXXYYZZ
+
+ Where XX, YY and ZZ are the main version, release and patch numbers in
+ hexadecimal (using 8 bits each). All three numbers are always represented
+ using two digits. 1.2 would appear as "0x010200" while version 9.11.7
+ appears as "0x090b07".
+
+ This 6-digit (24 bits) hexadecimal number does not show pre-release number,
+ and it is always a greater number in a more recent release. It makes
+ comparisons with greater than and less than work.
+*/
+#define LIBSSH2_VERSION_NUM 0x010b01
+
+/*
+ * This is the date and time when the full source package was created. The
+ * timestamp is not stored in the source code repo, as the timestamp is
+ * properly set in the tarballs by the maketgz script.
+ *
+ * The format of the date should follow this template:
+ *
+ * "Mon Feb 12 11:35:33 UTC 2007"
+ */
+#define LIBSSH2_TIMESTAMP "Wed Oct 16 08:03:21 UTC 2024"
+
+#ifndef RC_INVOKED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef _WIN32
+# include
+# include
+#endif
+
+#include
+#include
+#include
+#include
+
+/* Allow alternate API prefix from CFLAGS or calling app */
+#ifndef LIBSSH2_API
+# ifdef _WIN32
+# if defined(LIBSSH2_EXPORTS) || defined(_WINDLL)
+# ifdef LIBSSH2_LIBRARY
+# define LIBSSH2_API __declspec(dllexport)
+# else
+# define LIBSSH2_API __declspec(dllimport)
+# endif /* LIBSSH2_LIBRARY */
+# else
+# define LIBSSH2_API
+# endif
+# else /* !_WIN32 */
+# define LIBSSH2_API
+# endif /* _WIN32 */
+#endif /* LIBSSH2_API */
+
+#ifdef HAVE_SYS_UIO_H
+# include
+#endif
+
+#ifdef _MSC_VER
+typedef unsigned char uint8_t;
+typedef unsigned short int uint16_t;
+typedef unsigned int uint32_t;
+typedef __int32 int32_t;
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+typedef unsigned __int64 libssh2_uint64_t;
+typedef __int64 libssh2_int64_t;
+#if (!defined(HAVE_SSIZE_T) && !defined(ssize_t))
+typedef SSIZE_T ssize_t;
+#define HAVE_SSIZE_T
+#endif
+#else
+#include
+typedef unsigned long long libssh2_uint64_t;
+typedef long long libssh2_int64_t;
+#endif
+
+#ifdef _WIN32
+typedef SOCKET libssh2_socket_t;
+#define LIBSSH2_INVALID_SOCKET INVALID_SOCKET
+#define LIBSSH2_SOCKET_CLOSE(s) closesocket(s)
+#else /* !_WIN32 */
+typedef int libssh2_socket_t;
+#define LIBSSH2_INVALID_SOCKET -1
+#define LIBSSH2_SOCKET_CLOSE(s) close(s)
+#endif /* _WIN32 */
+
+/* Compile-time deprecation macros */
+#if !defined(LIBSSH2_DISABLE_DEPRECATION) && !defined(LIBSSH2_LIBRARY)
+# if defined(_MSC_VER)
+# if _MSC_VER >= 1400
+# define LIBSSH2_DEPRECATED(version, message) \
+ __declspec(deprecated("since libssh2 " # version ". " message))
+# elif _MSC_VER >= 1310
+# define LIBSSH2_DEPRECATED(version, message) \
+ __declspec(deprecated)
+# endif
+# elif defined(__GNUC__) && !defined(__INTEL_COMPILER)
+# if (defined(__clang__) && __clang_major__ >= 3) || \
+ (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
+# define LIBSSH2_DEPRECATED(version, message) \
+ __attribute__((deprecated("since libssh2 " # version ". " message)))
+# elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0)
+# define LIBSSH2_DEPRECATED(version, message) \
+ __attribute__((deprecated))
+# endif
+# elif defined(__SUNPRO_C) && __SUNPRO_C >= 0x5130
+# define LIBSSH2_DEPRECATED(version, message) \
+ __attribute__((deprecated))
+# endif
+#endif
+
+#ifndef LIBSSH2_DEPRECATED
+#define LIBSSH2_DEPRECATED(version, message)
+#endif
+
+/*
+ * Determine whether there is small or large file support on windows.
+ */
+
+#if defined(_MSC_VER) && !defined(_WIN32_WCE)
+# if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64)
+# define LIBSSH2_USE_WIN32_LARGE_FILES
+# else
+# define LIBSSH2_USE_WIN32_SMALL_FILES
+# endif
+#endif
+
+#if defined(__MINGW32__) && !defined(LIBSSH2_USE_WIN32_LARGE_FILES)
+# define LIBSSH2_USE_WIN32_LARGE_FILES
+#endif
+
+#if defined(__WATCOMC__) && !defined(LIBSSH2_USE_WIN32_LARGE_FILES)
+# define LIBSSH2_USE_WIN32_LARGE_FILES
+#endif
+
+#if defined(__POCC__)
+# undef LIBSSH2_USE_WIN32_LARGE_FILES
+#endif
+
+#if defined(_WIN32) && !defined(LIBSSH2_USE_WIN32_LARGE_FILES) && \
+ !defined(LIBSSH2_USE_WIN32_SMALL_FILES)
+# define LIBSSH2_USE_WIN32_SMALL_FILES
+#endif
+
+/*
+ * Large file (>2Gb) support using WIN32 functions.
+ */
+
+#ifdef LIBSSH2_USE_WIN32_LARGE_FILES
+# include
+# define LIBSSH2_STRUCT_STAT_SIZE_FORMAT "%I64d"
+typedef struct _stati64 libssh2_struct_stat;
+typedef __int64 libssh2_struct_stat_size;
+#endif
+
+/*
+ * Small file (<2Gb) support using WIN32 functions.
+ */
+
+#ifdef LIBSSH2_USE_WIN32_SMALL_FILES
+# ifndef _WIN32_WCE
+# define LIBSSH2_STRUCT_STAT_SIZE_FORMAT "%d"
+typedef struct _stat libssh2_struct_stat;
+typedef off_t libssh2_struct_stat_size;
+# endif
+#endif
+
+#ifndef LIBSSH2_STRUCT_STAT_SIZE_FORMAT
+# ifdef __VMS
+/* We have to roll our own format here because %z is a C99-ism we don't
+ have. */
+# if __USE_OFF64_T || __USING_STD_STAT
+# define LIBSSH2_STRUCT_STAT_SIZE_FORMAT "%Ld"
+# else
+# define LIBSSH2_STRUCT_STAT_SIZE_FORMAT "%d"
+# endif
+# else
+# define LIBSSH2_STRUCT_STAT_SIZE_FORMAT "%zd"
+# endif
+typedef struct stat libssh2_struct_stat;
+typedef off_t libssh2_struct_stat_size;
+#endif
+
+/* Part of every banner, user specified or not */
+#define LIBSSH2_SSH_BANNER "SSH-2.0-libssh2_" LIBSSH2_VERSION
+
+#define LIBSSH2_SSH_DEFAULT_BANNER LIBSSH2_SSH_BANNER
+#define LIBSSH2_SSH_DEFAULT_BANNER_WITH_CRLF LIBSSH2_SSH_DEFAULT_BANNER "\r\n"
+
+/* Defaults for pty requests */
+#define LIBSSH2_TERM_WIDTH 80
+#define LIBSSH2_TERM_HEIGHT 24
+#define LIBSSH2_TERM_WIDTH_PX 0
+#define LIBSSH2_TERM_HEIGHT_PX 0
+
+/* 1/4 second */
+#define LIBSSH2_SOCKET_POLL_UDELAY 250000
+/* 0.25 * 120 == 30 seconds */
+#define LIBSSH2_SOCKET_POLL_MAXLOOPS 120
+
+/* Maximum size to allow a payload to compress to, plays it safe by falling
+ short of spec limits */
+#define LIBSSH2_PACKET_MAXCOMP 32000
+
+/* Maximum size to allow a payload to deccompress to, plays it safe by
+ allowing more than spec requires */
+#define LIBSSH2_PACKET_MAXDECOMP 40000
+
+/* Maximum size for an inbound compressed payload, plays it safe by
+ overshooting spec limits */
+#define LIBSSH2_PACKET_MAXPAYLOAD 40000
+
+/* Malloc callbacks */
+#define LIBSSH2_ALLOC_FUNC(name) void *name(size_t count, void **abstract)
+#define LIBSSH2_REALLOC_FUNC(name) void *name(void *ptr, size_t count, \
+ void **abstract)
+#define LIBSSH2_FREE_FUNC(name) void name(void *ptr, void **abstract)
+
+typedef struct _LIBSSH2_USERAUTH_KBDINT_PROMPT
+{
+ unsigned char *text;
+ size_t length;
+ unsigned char echo;
+} LIBSSH2_USERAUTH_KBDINT_PROMPT;
+
+typedef struct _LIBSSH2_USERAUTH_KBDINT_RESPONSE
+{
+ char *text;
+ unsigned int length; /* FIXME: change type to size_t */
+} LIBSSH2_USERAUTH_KBDINT_RESPONSE;
+
+typedef struct _LIBSSH2_SK_SIG_INFO {
+ uint8_t flags;
+ uint32_t counter;
+ unsigned char *sig_r;
+ size_t sig_r_len;
+ unsigned char *sig_s;
+ size_t sig_s_len;
+} LIBSSH2_SK_SIG_INFO;
+
+/* 'publickey' authentication callback */
+#define LIBSSH2_USERAUTH_PUBLICKEY_SIGN_FUNC(name) \
+ int name(LIBSSH2_SESSION *session, unsigned char **sig, size_t *sig_len, \
+ const unsigned char *data, size_t data_len, void **abstract)
+
+/* 'keyboard-interactive' authentication callback */
+/* FIXME: name_len, instruction_len -> size_t, num_prompts -> unsigned int? */
+#define LIBSSH2_USERAUTH_KBDINT_RESPONSE_FUNC(name_) \
+ void name_(const char *name, int name_len, const char *instruction, \
+ int instruction_len, int num_prompts, \
+ const LIBSSH2_USERAUTH_KBDINT_PROMPT *prompts, \
+ LIBSSH2_USERAUTH_KBDINT_RESPONSE *responses, void **abstract)
+
+/* SK authentication callback */
+#define LIBSSH2_USERAUTH_SK_SIGN_FUNC(name) \
+ int name(LIBSSH2_SESSION *session, LIBSSH2_SK_SIG_INFO *sig_info, \
+ const unsigned char *data, size_t data_len, \
+ int algorithm, uint8_t flags, \
+ const char *application, const unsigned char *key_handle, \
+ size_t handle_len, \
+ void **abstract)
+
+/* Flags for SK authentication */
+#define LIBSSH2_SK_PRESENCE_REQUIRED 0x01
+#define LIBSSH2_SK_VERIFICATION_REQUIRED 0x04
+
+/* FIXME: update lengths to size_t (or ssize_t): */
+
+/* Callbacks for special SSH packets */
+#define LIBSSH2_IGNORE_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, const char *message, int message_len, \
+ void **abstract)
+
+#define LIBSSH2_DEBUG_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, int always_display, \
+ const char *message, int message_len, \
+ const char *language, int language_len, \
+ void **abstract)
+
+#define LIBSSH2_DISCONNECT_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, int reason, \
+ const char *message, int message_len, \
+ const char *language, int language_len, \
+ void **abstract)
+
+#define LIBSSH2_PASSWD_CHANGEREQ_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, char **newpw, int *newpw_len, \
+ void **abstract)
+
+#define LIBSSH2_MACERROR_FUNC(name) \
+ int name(LIBSSH2_SESSION *session, const char *packet, int packet_len, \
+ void **abstract)
+
+#define LIBSSH2_X11_OPEN_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, LIBSSH2_CHANNEL *channel, \
+ const char *shost, int sport, void **abstract)
+
+#define LIBSSH2_AUTHAGENT_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, LIBSSH2_CHANNEL *channel, \
+ void **abstract)
+
+#define LIBSSH2_ADD_IDENTITIES_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, void *buffer, \
+ const char *agent_path, void **abstract)
+
+#define LIBSSH2_AUTHAGENT_SIGN_FUNC(name) \
+ int name(LIBSSH2_SESSION* session, \
+ unsigned char *blob, unsigned int blen, \
+ const unsigned char *data, unsigned int dlen, \
+ unsigned char **signature, unsigned int *sigLen, \
+ const char *agentPath, \
+ void **abstract)
+
+#define LIBSSH2_CHANNEL_CLOSE_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, void **session_abstract, \
+ LIBSSH2_CHANNEL *channel, void **channel_abstract)
+
+/* I/O callbacks */
+#define LIBSSH2_RECV_FUNC(name) \
+ ssize_t name(libssh2_socket_t socket, \
+ void *buffer, size_t length, \
+ int flags, void **abstract)
+#define LIBSSH2_SEND_FUNC(name) \
+ ssize_t name(libssh2_socket_t socket, \
+ const void *buffer, size_t length, \
+ int flags, void **abstract)
+
+/* libssh2_session_callback_set() constants */
+#define LIBSSH2_CALLBACK_IGNORE 0
+#define LIBSSH2_CALLBACK_DEBUG 1
+#define LIBSSH2_CALLBACK_DISCONNECT 2
+#define LIBSSH2_CALLBACK_MACERROR 3
+#define LIBSSH2_CALLBACK_X11 4
+#define LIBSSH2_CALLBACK_SEND 5
+#define LIBSSH2_CALLBACK_RECV 6
+#define LIBSSH2_CALLBACK_AUTHAGENT 7
+#define LIBSSH2_CALLBACK_AUTHAGENT_IDENTITIES 8
+#define LIBSSH2_CALLBACK_AUTHAGENT_SIGN 9
+
+/* libssh2_session_method_pref() constants */
+#define LIBSSH2_METHOD_KEX 0
+#define LIBSSH2_METHOD_HOSTKEY 1
+#define LIBSSH2_METHOD_CRYPT_CS 2
+#define LIBSSH2_METHOD_CRYPT_SC 3
+#define LIBSSH2_METHOD_MAC_CS 4
+#define LIBSSH2_METHOD_MAC_SC 5
+#define LIBSSH2_METHOD_COMP_CS 6
+#define LIBSSH2_METHOD_COMP_SC 7
+#define LIBSSH2_METHOD_LANG_CS 8
+#define LIBSSH2_METHOD_LANG_SC 9
+#define LIBSSH2_METHOD_SIGN_ALGO 10
+
+/* flags */
+#define LIBSSH2_FLAG_SIGPIPE 1
+#define LIBSSH2_FLAG_COMPRESS 2
+#define LIBSSH2_FLAG_QUOTE_PATHS 3
+
+typedef struct _LIBSSH2_SESSION LIBSSH2_SESSION;
+typedef struct _LIBSSH2_CHANNEL LIBSSH2_CHANNEL;
+typedef struct _LIBSSH2_LISTENER LIBSSH2_LISTENER;
+typedef struct _LIBSSH2_KNOWNHOSTS LIBSSH2_KNOWNHOSTS;
+typedef struct _LIBSSH2_AGENT LIBSSH2_AGENT;
+
+/* SK signature callback */
+typedef struct _LIBSSH2_PRIVKEY_SK {
+ int algorithm;
+ uint8_t flags;
+ const char *application;
+ const unsigned char *key_handle;
+ size_t handle_len;
+ LIBSSH2_USERAUTH_SK_SIGN_FUNC((*sign_callback));
+ void **orig_abstract;
+} LIBSSH2_PRIVKEY_SK;
+
+int
+libssh2_sign_sk(LIBSSH2_SESSION *session,
+ unsigned char **sig,
+ size_t *sig_len,
+ const unsigned char *data,
+ size_t data_len,
+ void **abstract);
+
+typedef struct _LIBSSH2_POLLFD {
+ unsigned char type; /* LIBSSH2_POLLFD_* below */
+
+ union {
+ libssh2_socket_t socket; /* File descriptors -- examined with
+ system select() call */
+ LIBSSH2_CHANNEL *channel; /* Examined by checking internal state */
+ LIBSSH2_LISTENER *listener; /* Read polls only -- are inbound
+ connections waiting to be accepted? */
+ } fd;
+
+ unsigned long events; /* Requested Events */
+ unsigned long revents; /* Returned Events */
+} LIBSSH2_POLLFD;
+
+/* Poll FD Descriptor Types */
+#define LIBSSH2_POLLFD_SOCKET 1
+#define LIBSSH2_POLLFD_CHANNEL 2
+#define LIBSSH2_POLLFD_LISTENER 3
+
+/* Note: Win32 Doesn't actually have a poll() implementation, so some of these
+ values are faked with select() data */
+/* Poll FD events/revents -- Match sys/poll.h where possible */
+#define LIBSSH2_POLLFD_POLLIN 0x0001 /* Data available to be read or
+ connection available --
+ All */
+#define LIBSSH2_POLLFD_POLLPRI 0x0002 /* Priority data available to
+ be read -- Socket only */
+#define LIBSSH2_POLLFD_POLLEXT 0x0002 /* Extended data available to
+ be read -- Channel only */
+#define LIBSSH2_POLLFD_POLLOUT 0x0004 /* Can may be written --
+ Socket/Channel */
+/* revents only */
+#define LIBSSH2_POLLFD_POLLERR 0x0008 /* Error Condition -- Socket */
+#define LIBSSH2_POLLFD_POLLHUP 0x0010 /* HangUp/EOF -- Socket */
+#define LIBSSH2_POLLFD_SESSION_CLOSED 0x0010 /* Session Disconnect */
+#define LIBSSH2_POLLFD_POLLNVAL 0x0020 /* Invalid request -- Socket
+ Only */
+#define LIBSSH2_POLLFD_POLLEX 0x0040 /* Exception Condition --
+ Socket/Win32 */
+#define LIBSSH2_POLLFD_CHANNEL_CLOSED 0x0080 /* Channel Disconnect */
+#define LIBSSH2_POLLFD_LISTENER_CLOSED 0x0080 /* Listener Disconnect */
+
+#define HAVE_LIBSSH2_SESSION_BLOCK_DIRECTION
+/* Block Direction Types */
+#define LIBSSH2_SESSION_BLOCK_INBOUND 0x0001
+#define LIBSSH2_SESSION_BLOCK_OUTBOUND 0x0002
+
+/* Hash Types */
+#define LIBSSH2_HOSTKEY_HASH_MD5 1
+#define LIBSSH2_HOSTKEY_HASH_SHA1 2
+#define LIBSSH2_HOSTKEY_HASH_SHA256 3
+
+/* Hostkey Types */
+#define LIBSSH2_HOSTKEY_TYPE_UNKNOWN 0
+#define LIBSSH2_HOSTKEY_TYPE_RSA 1
+#define LIBSSH2_HOSTKEY_TYPE_DSS 2 /* deprecated */
+#define LIBSSH2_HOSTKEY_TYPE_ECDSA_256 3
+#define LIBSSH2_HOSTKEY_TYPE_ECDSA_384 4
+#define LIBSSH2_HOSTKEY_TYPE_ECDSA_521 5
+#define LIBSSH2_HOSTKEY_TYPE_ED25519 6
+
+/* Disconnect Codes (defined by SSH protocol) */
+#define SSH_DISCONNECT_HOST_NOT_ALLOWED_TO_CONNECT 1
+#define SSH_DISCONNECT_PROTOCOL_ERROR 2
+#define SSH_DISCONNECT_KEY_EXCHANGE_FAILED 3
+#define SSH_DISCONNECT_RESERVED 4
+#define SSH_DISCONNECT_MAC_ERROR 5
+#define SSH_DISCONNECT_COMPRESSION_ERROR 6
+#define SSH_DISCONNECT_SERVICE_NOT_AVAILABLE 7
+#define SSH_DISCONNECT_PROTOCOL_VERSION_NOT_SUPPORTED 8
+#define SSH_DISCONNECT_HOST_KEY_NOT_VERIFIABLE 9
+#define SSH_DISCONNECT_CONNECTION_LOST 10
+#define SSH_DISCONNECT_BY_APPLICATION 11
+#define SSH_DISCONNECT_TOO_MANY_CONNECTIONS 12
+#define SSH_DISCONNECT_AUTH_CANCELLED_BY_USER 13
+#define SSH_DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE 14
+#define SSH_DISCONNECT_ILLEGAL_USER_NAME 15
+
+/* Error Codes (defined by libssh2) */
+#define LIBSSH2_ERROR_NONE 0
+
+/* The library once used -1 as a generic error return value on numerous places
+ through the code, which subsequently was converted to
+ LIBSSH2_ERROR_SOCKET_NONE uses over time. As this is a generic error code,
+ the goal is to never ever return this code but instead make sure that a
+ more accurate and descriptive error code is used. */
+#define LIBSSH2_ERROR_SOCKET_NONE -1
+
+#define LIBSSH2_ERROR_BANNER_RECV -2
+#define LIBSSH2_ERROR_BANNER_SEND -3
+#define LIBSSH2_ERROR_INVALID_MAC -4
+#define LIBSSH2_ERROR_KEX_FAILURE -5
+#define LIBSSH2_ERROR_ALLOC -6
+#define LIBSSH2_ERROR_SOCKET_SEND -7
+#define LIBSSH2_ERROR_KEY_EXCHANGE_FAILURE -8
+#define LIBSSH2_ERROR_TIMEOUT -9
+#define LIBSSH2_ERROR_HOSTKEY_INIT -10
+#define LIBSSH2_ERROR_HOSTKEY_SIGN -11
+#define LIBSSH2_ERROR_DECRYPT -12
+#define LIBSSH2_ERROR_SOCKET_DISCONNECT -13
+#define LIBSSH2_ERROR_PROTO -14
+#define LIBSSH2_ERROR_PASSWORD_EXPIRED -15
+#define LIBSSH2_ERROR_FILE -16
+#define LIBSSH2_ERROR_METHOD_NONE -17
+#define LIBSSH2_ERROR_AUTHENTICATION_FAILED -18
+#define LIBSSH2_ERROR_PUBLICKEY_UNRECOGNIZED \
+ LIBSSH2_ERROR_AUTHENTICATION_FAILED
+#define LIBSSH2_ERROR_PUBLICKEY_UNVERIFIED -19
+#define LIBSSH2_ERROR_CHANNEL_OUTOFORDER -20
+#define LIBSSH2_ERROR_CHANNEL_FAILURE -21
+#define LIBSSH2_ERROR_CHANNEL_REQUEST_DENIED -22
+#define LIBSSH2_ERROR_CHANNEL_UNKNOWN -23
+#define LIBSSH2_ERROR_CHANNEL_WINDOW_EXCEEDED -24
+#define LIBSSH2_ERROR_CHANNEL_PACKET_EXCEEDED -25
+#define LIBSSH2_ERROR_CHANNEL_CLOSED -26
+#define LIBSSH2_ERROR_CHANNEL_EOF_SENT -27
+#define LIBSSH2_ERROR_SCP_PROTOCOL -28
+#define LIBSSH2_ERROR_ZLIB -29
+#define LIBSSH2_ERROR_SOCKET_TIMEOUT -30
+#define LIBSSH2_ERROR_SFTP_PROTOCOL -31
+#define LIBSSH2_ERROR_REQUEST_DENIED -32
+#define LIBSSH2_ERROR_METHOD_NOT_SUPPORTED -33
+#define LIBSSH2_ERROR_INVAL -34
+#define LIBSSH2_ERROR_INVALID_POLL_TYPE -35
+#define LIBSSH2_ERROR_PUBLICKEY_PROTOCOL -36
+#define LIBSSH2_ERROR_EAGAIN -37
+#define LIBSSH2_ERROR_BUFFER_TOO_SMALL -38
+#define LIBSSH2_ERROR_BAD_USE -39
+#define LIBSSH2_ERROR_COMPRESS -40
+#define LIBSSH2_ERROR_OUT_OF_BOUNDARY -41
+#define LIBSSH2_ERROR_AGENT_PROTOCOL -42
+#define LIBSSH2_ERROR_SOCKET_RECV -43
+#define LIBSSH2_ERROR_ENCRYPT -44
+#define LIBSSH2_ERROR_BAD_SOCKET -45
+#define LIBSSH2_ERROR_KNOWN_HOSTS -46
+#define LIBSSH2_ERROR_CHANNEL_WINDOW_FULL -47
+#define LIBSSH2_ERROR_KEYFILE_AUTH_FAILED -48
+#define LIBSSH2_ERROR_RANDGEN -49
+#define LIBSSH2_ERROR_MISSING_USERAUTH_BANNER -50
+#define LIBSSH2_ERROR_ALGO_UNSUPPORTED -51
+#define LIBSSH2_ERROR_MAC_FAILURE -52
+#define LIBSSH2_ERROR_HASH_INIT -53
+#define LIBSSH2_ERROR_HASH_CALC -54
+
+/* this is a define to provide the old (<= 1.2.7) name */
+#define LIBSSH2_ERROR_BANNER_NONE LIBSSH2_ERROR_BANNER_RECV
+
+/* Global API */
+#define LIBSSH2_INIT_NO_CRYPTO 0x0001
+
+/*
+ * libssh2_init()
+ *
+ * Initialize the libssh2 functions. This typically initialize the
+ * crypto library. It uses a global state, and is not thread safe --
+ * you must make sure this function is not called concurrently.
+ *
+ * Flags can be:
+ * 0: Normal initialize
+ * LIBSSH2_INIT_NO_CRYPTO: Do not initialize the crypto library (ie.
+ * OPENSSL_add_cipher_algoritms() for OpenSSL
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int libssh2_init(int flags);
+
+/*
+ * libssh2_exit()
+ *
+ * Exit the libssh2 functions and free's all memory used internal.
+ */
+LIBSSH2_API void libssh2_exit(void);
+
+/*
+ * libssh2_free()
+ *
+ * Deallocate memory allocated by earlier call to libssh2 functions.
+ */
+LIBSSH2_API void libssh2_free(LIBSSH2_SESSION *session, void *ptr);
+
+/*
+ * libssh2_session_supported_algs()
+ *
+ * Fills algs with a list of supported acryptographic algorithms. Returns a
+ * non-negative number (number of supported algorithms) on success or a
+ * negative number (an error code) on failure.
+ *
+ * NOTE: on success, algs must be deallocated (by calling libssh2_free) when
+ * not needed anymore
+ */
+LIBSSH2_API int libssh2_session_supported_algs(LIBSSH2_SESSION* session,
+ int method_type,
+ const char ***algs);
+
+/* Session API */
+LIBSSH2_API LIBSSH2_SESSION *
+libssh2_session_init_ex(LIBSSH2_ALLOC_FUNC((*my_alloc)),
+ LIBSSH2_FREE_FUNC((*my_free)),
+ LIBSSH2_REALLOC_FUNC((*my_realloc)), void *abstract);
+#define libssh2_session_init() libssh2_session_init_ex(NULL, NULL, NULL, NULL)
+
+LIBSSH2_API void **libssh2_session_abstract(LIBSSH2_SESSION *session);
+
+typedef void (libssh2_cb_generic)(void);
+
+LIBSSH2_API libssh2_cb_generic *
+libssh2_session_callback_set2(LIBSSH2_SESSION *session, int cbtype,
+ libssh2_cb_generic *callback);
+
+LIBSSH2_DEPRECATED(1.11.1, "Use libssh2_session_callback_set2()")
+LIBSSH2_API void *libssh2_session_callback_set(LIBSSH2_SESSION *session,
+ int cbtype, void *callback);
+LIBSSH2_API int libssh2_session_banner_set(LIBSSH2_SESSION *session,
+ const char *banner);
+#ifndef LIBSSH2_NO_DEPRECATED
+LIBSSH2_DEPRECATED(1.4.0, "Use libssh2_session_banner_set()")
+LIBSSH2_API int libssh2_banner_set(LIBSSH2_SESSION *session,
+ const char *banner);
+
+LIBSSH2_DEPRECATED(1.2.8, "Use libssh2_session_handshake()")
+LIBSSH2_API int libssh2_session_startup(LIBSSH2_SESSION *session, int sock);
+#endif
+LIBSSH2_API int libssh2_session_handshake(LIBSSH2_SESSION *session,
+ libssh2_socket_t sock);
+LIBSSH2_API int libssh2_session_disconnect_ex(LIBSSH2_SESSION *session,
+ int reason,
+ const char *description,
+ const char *lang);
+#define libssh2_session_disconnect(session, description) \
+ libssh2_session_disconnect_ex((session), SSH_DISCONNECT_BY_APPLICATION, \
+ (description), "")
+
+LIBSSH2_API int libssh2_session_free(LIBSSH2_SESSION *session);
+
+LIBSSH2_API const char *libssh2_hostkey_hash(LIBSSH2_SESSION *session,
+ int hash_type);
+
+LIBSSH2_API const char *libssh2_session_hostkey(LIBSSH2_SESSION *session,
+ size_t *len, int *type);
+
+LIBSSH2_API int libssh2_session_method_pref(LIBSSH2_SESSION *session,
+ int method_type,
+ const char *prefs);
+LIBSSH2_API const char *libssh2_session_methods(LIBSSH2_SESSION *session,
+ int method_type);
+LIBSSH2_API int libssh2_session_last_error(LIBSSH2_SESSION *session,
+ char **errmsg,
+ int *errmsg_len, int want_buf);
+LIBSSH2_API int libssh2_session_last_errno(LIBSSH2_SESSION *session);
+LIBSSH2_API int libssh2_session_set_last_error(LIBSSH2_SESSION* session,
+ int errcode,
+ const char *errmsg);
+LIBSSH2_API int libssh2_session_block_directions(LIBSSH2_SESSION *session);
+
+LIBSSH2_API int libssh2_session_flag(LIBSSH2_SESSION *session, int flag,
+ int value);
+LIBSSH2_API const char *libssh2_session_banner_get(LIBSSH2_SESSION *session);
+
+/* Userauth API */
+LIBSSH2_API char *libssh2_userauth_list(LIBSSH2_SESSION *session,
+ const char *username,
+ unsigned int username_len);
+LIBSSH2_API int libssh2_userauth_banner(LIBSSH2_SESSION *session,
+ char **banner);
+LIBSSH2_API int libssh2_userauth_authenticated(LIBSSH2_SESSION *session);
+
+LIBSSH2_API int
+libssh2_userauth_password_ex(LIBSSH2_SESSION *session,
+ const char *username,
+ unsigned int username_len,
+ const char *password,
+ unsigned int password_len,
+ LIBSSH2_PASSWD_CHANGEREQ_FUNC
+ ((*passwd_change_cb)));
+
+#define libssh2_userauth_password(session, username, password) \
+ libssh2_userauth_password_ex((session), (username), \
+ (unsigned int)strlen(username), \
+ (password), (unsigned int)strlen(password), \
+ NULL)
+
+LIBSSH2_API int
+libssh2_userauth_publickey_fromfile_ex(LIBSSH2_SESSION *session,
+ const char *username,
+ unsigned int username_len,
+ const char *publickey,
+ const char *privatekey,
+ const char *passphrase);
+
+#define libssh2_userauth_publickey_fromfile(session, username, publickey, \
+ privatekey, passphrase) \
+ libssh2_userauth_publickey_fromfile_ex((session), (username), \
+ (unsigned int)strlen(username), \
+ (publickey), \
+ (privatekey), (passphrase))
+
+LIBSSH2_API int
+libssh2_userauth_publickey(LIBSSH2_SESSION *session,
+ const char *username,
+ const unsigned char *pubkeydata,
+ size_t pubkeydata_len,
+ LIBSSH2_USERAUTH_PUBLICKEY_SIGN_FUNC
+ ((*sign_callback)),
+ void **abstract);
+
+LIBSSH2_API int
+libssh2_userauth_hostbased_fromfile_ex(LIBSSH2_SESSION *session,
+ const char *username,
+ unsigned int username_len,
+ const char *publickey,
+ const char *privatekey,
+ const char *passphrase,
+ const char *hostname,
+ unsigned int hostname_len,
+ const char *local_username,
+ unsigned int local_username_len);
+
+#define libssh2_userauth_hostbased_fromfile(session, username, publickey, \
+ privatekey, passphrase, hostname) \
+ libssh2_userauth_hostbased_fromfile_ex((session), (username), \
+ (unsigned int)strlen(username), \
+ (publickey), \
+ (privatekey), (passphrase), \
+ (hostname), \
+ (unsigned int)strlen(hostname), \
+ (username), \
+ (unsigned int)strlen(username))
+
+LIBSSH2_API int
+libssh2_userauth_publickey_frommemory(LIBSSH2_SESSION *session,
+ const char *username,
+ size_t username_len,
+ const char *publickeyfiledata,
+ size_t publickeyfiledata_len,
+ const char *privatekeyfiledata,
+ size_t privatekeyfiledata_len,
+ const char *passphrase);
+
+/*
+ * response_callback is provided with filled by library prompts array,
+ * but client must allocate and fill individual responses. Responses
+ * array is already allocated. Responses data will be freed by libssh2
+ * after callback return, but before subsequent callback invocation.
+ */
+LIBSSH2_API int
+libssh2_userauth_keyboard_interactive_ex(LIBSSH2_SESSION* session,
+ const char *username,
+ unsigned int username_len,
+ LIBSSH2_USERAUTH_KBDINT_RESPONSE_FUNC
+ ((*response_callback)));
+
+#define libssh2_userauth_keyboard_interactive(session, username, \
+ response_callback) \
+ libssh2_userauth_keyboard_interactive_ex((session), (username), \
+ (unsigned int)strlen(username), \
+ (response_callback))
+
+LIBSSH2_API int
+libssh2_userauth_publickey_sk(LIBSSH2_SESSION *session,
+ const char *username,
+ size_t username_len,
+ const unsigned char *pubkeydata,
+ size_t pubkeydata_len,
+ const char *privatekeydata,
+ size_t privatekeydata_len,
+ const char *passphrase,
+ LIBSSH2_USERAUTH_SK_SIGN_FUNC
+ ((*sign_callback)),
+ void **abstract);
+
+LIBSSH2_API int libssh2_poll(LIBSSH2_POLLFD *fds, unsigned int nfds,
+ long timeout);
+
+/* Channel API */
+#define LIBSSH2_CHANNEL_WINDOW_DEFAULT (2*1024*1024)
+#define LIBSSH2_CHANNEL_PACKET_DEFAULT 32768
+#define LIBSSH2_CHANNEL_MINADJUST 1024
+
+/* Extended Data Handling */
+#define LIBSSH2_CHANNEL_EXTENDED_DATA_NORMAL 0
+#define LIBSSH2_CHANNEL_EXTENDED_DATA_IGNORE 1
+#define LIBSSH2_CHANNEL_EXTENDED_DATA_MERGE 2
+
+#define SSH_EXTENDED_DATA_STDERR 1
+
+/* Returned by any function that would block during a read/write operation */
+#define LIBSSH2CHANNEL_EAGAIN LIBSSH2_ERROR_EAGAIN
+
+LIBSSH2_API LIBSSH2_CHANNEL *
+libssh2_channel_open_ex(LIBSSH2_SESSION *session, const char *channel_type,
+ unsigned int channel_type_len,
+ unsigned int window_size, unsigned int packet_size,
+ const char *message, unsigned int message_len);
+
+#define libssh2_channel_open_session(session) \
+ libssh2_channel_open_ex((session), "session", sizeof("session") - 1, \
+ LIBSSH2_CHANNEL_WINDOW_DEFAULT, \
+ LIBSSH2_CHANNEL_PACKET_DEFAULT, NULL, 0)
+
+LIBSSH2_API LIBSSH2_CHANNEL *
+libssh2_channel_direct_tcpip_ex(LIBSSH2_SESSION *session, const char *host,
+ int port, const char *shost, int sport);
+#define libssh2_channel_direct_tcpip(session, host, port) \
+ libssh2_channel_direct_tcpip_ex((session), (host), (port), "127.0.0.1", 22)
+
+LIBSSH2_API LIBSSH2_CHANNEL *
+libssh2_channel_direct_streamlocal_ex(LIBSSH2_SESSION * session,
+ const char *socket_path,
+ const char *shost, int sport);
+
+LIBSSH2_API LIBSSH2_LISTENER *
+libssh2_channel_forward_listen_ex(LIBSSH2_SESSION *session, const char *host,
+ int port, int *bound_port,
+ int queue_maxsize);
+#define libssh2_channel_forward_listen(session, port) \
+ libssh2_channel_forward_listen_ex((session), NULL, (port), NULL, 16)
+
+LIBSSH2_API int libssh2_channel_forward_cancel(LIBSSH2_LISTENER *listener);
+
+LIBSSH2_API LIBSSH2_CHANNEL *
+libssh2_channel_forward_accept(LIBSSH2_LISTENER *listener);
+
+LIBSSH2_API int libssh2_channel_setenv_ex(LIBSSH2_CHANNEL *channel,
+ const char *varname,
+ unsigned int varname_len,
+ const char *value,
+ unsigned int value_len);
+
+#define libssh2_channel_setenv(channel, varname, value) \
+ libssh2_channel_setenv_ex((channel), (varname), \
+ (unsigned int)strlen(varname), (value), \
+ (unsigned int)strlen(value))
+
+LIBSSH2_API int libssh2_channel_request_auth_agent(LIBSSH2_CHANNEL *channel);
+
+LIBSSH2_API int libssh2_channel_request_pty_ex(LIBSSH2_CHANNEL *channel,
+ const char *term,
+ unsigned int term_len,
+ const char *modes,
+ unsigned int modes_len,
+ int width, int height,
+ int width_px, int height_px);
+#define libssh2_channel_request_pty(channel, term) \
+ libssh2_channel_request_pty_ex((channel), (term), \
+ (unsigned int)strlen(term), \
+ NULL, 0, \
+ LIBSSH2_TERM_WIDTH, \
+ LIBSSH2_TERM_HEIGHT, \
+ LIBSSH2_TERM_WIDTH_PX, \
+ LIBSSH2_TERM_HEIGHT_PX)
+
+LIBSSH2_API int libssh2_channel_request_pty_size_ex(LIBSSH2_CHANNEL *channel,
+ int width, int height,
+ int width_px,
+ int height_px);
+#define libssh2_channel_request_pty_size(channel, width, height) \
+ libssh2_channel_request_pty_size_ex((channel), (width), (height), 0, 0)
+
+LIBSSH2_API int libssh2_channel_x11_req_ex(LIBSSH2_CHANNEL *channel,
+ int single_connection,
+ const char *auth_proto,
+ const char *auth_cookie,
+ int screen_number);
+#define libssh2_channel_x11_req(channel, screen_number) \
+ libssh2_channel_x11_req_ex((channel), 0, NULL, NULL, (screen_number))
+
+LIBSSH2_API int libssh2_channel_signal_ex(LIBSSH2_CHANNEL *channel,
+ const char *signame,
+ size_t signame_len);
+#define libssh2_channel_signal(channel, signame) \
+ libssh2_channel_signal_ex((channel), signame, strlen(signame))
+
+LIBSSH2_API int libssh2_channel_process_startup(LIBSSH2_CHANNEL *channel,
+ const char *request,
+ unsigned int request_len,
+ const char *message,
+ unsigned int message_len);
+#define libssh2_channel_shell(channel) \
+ libssh2_channel_process_startup((channel), "shell", sizeof("shell") - 1, \
+ NULL, 0)
+#define libssh2_channel_exec(channel, command) \
+ libssh2_channel_process_startup((channel), "exec", sizeof("exec") - 1, \
+ (command), (unsigned int)strlen(command))
+#define libssh2_channel_subsystem(channel, subsystem) \
+ libssh2_channel_process_startup((channel), "subsystem", \
+ sizeof("subsystem") - 1, (subsystem), \
+ (unsigned int)strlen(subsystem))
+
+LIBSSH2_API ssize_t libssh2_channel_read_ex(LIBSSH2_CHANNEL *channel,
+ int stream_id, char *buf,
+ size_t buflen);
+#define libssh2_channel_read(channel, buf, buflen) \
+ libssh2_channel_read_ex((channel), 0, \
+ (buf), (buflen))
+#define libssh2_channel_read_stderr(channel, buf, buflen) \
+ libssh2_channel_read_ex((channel), SSH_EXTENDED_DATA_STDERR, \
+ (buf), (buflen))
+
+LIBSSH2_API int libssh2_poll_channel_read(LIBSSH2_CHANNEL *channel,
+ int extended);
+
+LIBSSH2_API unsigned long
+libssh2_channel_window_read_ex(LIBSSH2_CHANNEL *channel,
+ unsigned long *read_avail,
+ unsigned long *window_size_initial);
+#define libssh2_channel_window_read(channel) \
+ libssh2_channel_window_read_ex((channel), NULL, NULL)
+
+#ifndef LIBSSH2_NO_DEPRECATED
+LIBSSH2_DEPRECATED(1.1.0, "Use libssh2_channel_receive_window_adjust2()")
+LIBSSH2_API unsigned long
+libssh2_channel_receive_window_adjust(LIBSSH2_CHANNEL *channel,
+ unsigned long adjustment,
+ unsigned char force);
+#endif
+LIBSSH2_API int
+libssh2_channel_receive_window_adjust2(LIBSSH2_CHANNEL *channel,
+ unsigned long adjustment,
+ unsigned char force,
+ unsigned int *storewindow);
+
+LIBSSH2_API ssize_t libssh2_channel_write_ex(LIBSSH2_CHANNEL *channel,
+ int stream_id, const char *buf,
+ size_t buflen);
+
+#define libssh2_channel_write(channel, buf, buflen) \
+ libssh2_channel_write_ex((channel), 0, \
+ (buf), (buflen))
+#define libssh2_channel_write_stderr(channel, buf, buflen) \
+ libssh2_channel_write_ex((channel), SSH_EXTENDED_DATA_STDERR, \
+ (buf), (buflen))
+
+LIBSSH2_API unsigned long
+libssh2_channel_window_write_ex(LIBSSH2_CHANNEL *channel,
+ unsigned long *window_size_initial);
+#define libssh2_channel_window_write(channel) \
+ libssh2_channel_window_write_ex((channel), NULL)
+
+LIBSSH2_API void libssh2_session_set_blocking(LIBSSH2_SESSION* session,
+ int blocking);
+LIBSSH2_API int libssh2_session_get_blocking(LIBSSH2_SESSION* session);
+
+LIBSSH2_API void libssh2_channel_set_blocking(LIBSSH2_CHANNEL *channel,
+ int blocking);
+
+LIBSSH2_API void libssh2_session_set_timeout(LIBSSH2_SESSION* session,
+ long timeout);
+LIBSSH2_API long libssh2_session_get_timeout(LIBSSH2_SESSION* session);
+
+LIBSSH2_API void libssh2_session_set_read_timeout(LIBSSH2_SESSION* session,
+ long timeout);
+LIBSSH2_API long libssh2_session_get_read_timeout(LIBSSH2_SESSION* session);
+
+#ifndef LIBSSH2_NO_DEPRECATED
+LIBSSH2_DEPRECATED(1.1.0, "libssh2_channel_handle_extended_data2()")
+LIBSSH2_API void libssh2_channel_handle_extended_data(LIBSSH2_CHANNEL *channel,
+ int ignore_mode);
+#endif
+LIBSSH2_API int libssh2_channel_handle_extended_data2(LIBSSH2_CHANNEL *channel,
+ int ignore_mode);
+
+#ifndef LIBSSH2_NO_DEPRECATED
+/* libssh2_channel_ignore_extended_data() is defined below for BC with version
+ * 0.1
+ *
+ * Future uses should use libssh2_channel_handle_extended_data() directly if
+ * LIBSSH2_CHANNEL_EXTENDED_DATA_MERGE is passed, extended data will be read
+ * (FIFO) from the standard data channel
+ */
+/* DEPRECATED since 0.3.0. Use libssh2_channel_handle_extended_data2(). */
+#define libssh2_channel_ignore_extended_data(channel, ignore) \
+ libssh2_channel_handle_extended_data((channel), (ignore) ? \
+ LIBSSH2_CHANNEL_EXTENDED_DATA_IGNORE : \
+ LIBSSH2_CHANNEL_EXTENDED_DATA_NORMAL)
+#endif
+
+#define LIBSSH2_CHANNEL_FLUSH_EXTENDED_DATA -1
+#define LIBSSH2_CHANNEL_FLUSH_ALL -2
+LIBSSH2_API int libssh2_channel_flush_ex(LIBSSH2_CHANNEL *channel,
+ int streamid);
+#define libssh2_channel_flush(channel) libssh2_channel_flush_ex((channel), 0)
+#define libssh2_channel_flush_stderr(channel) \
+ libssh2_channel_flush_ex((channel), SSH_EXTENDED_DATA_STDERR)
+
+LIBSSH2_API int libssh2_channel_get_exit_status(LIBSSH2_CHANNEL* channel);
+LIBSSH2_API int libssh2_channel_get_exit_signal(LIBSSH2_CHANNEL* channel,
+ char **exitsignal,
+ size_t *exitsignal_len,
+ char **errmsg,
+ size_t *errmsg_len,
+ char **langtag,
+ size_t *langtag_len);
+LIBSSH2_API int libssh2_channel_send_eof(LIBSSH2_CHANNEL *channel);
+LIBSSH2_API int libssh2_channel_eof(LIBSSH2_CHANNEL *channel);
+LIBSSH2_API int libssh2_channel_wait_eof(LIBSSH2_CHANNEL *channel);
+LIBSSH2_API int libssh2_channel_close(LIBSSH2_CHANNEL *channel);
+LIBSSH2_API int libssh2_channel_wait_closed(LIBSSH2_CHANNEL *channel);
+LIBSSH2_API int libssh2_channel_free(LIBSSH2_CHANNEL *channel);
+
+#ifndef LIBSSH2_NO_DEPRECATED
+LIBSSH2_DEPRECATED(1.7.0, "Use libssh2_scp_recv2()")
+LIBSSH2_API LIBSSH2_CHANNEL *libssh2_scp_recv(LIBSSH2_SESSION *session,
+ const char *path,
+ struct stat *sb);
+#endif
+/* Use libssh2_scp_recv2() for large (> 2GB) file support on windows */
+LIBSSH2_API LIBSSH2_CHANNEL *libssh2_scp_recv2(LIBSSH2_SESSION *session,
+ const char *path,
+ libssh2_struct_stat *sb);
+LIBSSH2_API LIBSSH2_CHANNEL *libssh2_scp_send_ex(LIBSSH2_SESSION *session,
+ const char *path, int mode,
+ size_t size, long mtime,
+ long atime);
+LIBSSH2_API LIBSSH2_CHANNEL *
+libssh2_scp_send64(LIBSSH2_SESSION *session, const char *path, int mode,
+ libssh2_int64_t size, time_t mtime, time_t atime);
+
+#define libssh2_scp_send(session, path, mode, size) \
+ libssh2_scp_send_ex((session), (path), (mode), (size), 0, 0)
+
+/* DEPRECATED */
+LIBSSH2_API int libssh2_base64_decode(LIBSSH2_SESSION *session, char **dest,
+ unsigned int *dest_len,
+ const char *src, unsigned int src_len);
+
+LIBSSH2_API
+const char *libssh2_version(int req_version_num);
+
+typedef enum {
+ libssh2_no_crypto = 0,
+ libssh2_openssl,
+ libssh2_gcrypt,
+ libssh2_mbedtls,
+ libssh2_wincng,
+ libssh2_os400qc3
+} libssh2_crypto_engine_t;
+
+LIBSSH2_API
+libssh2_crypto_engine_t libssh2_crypto_engine(void);
+
+#define HAVE_LIBSSH2_KNOWNHOST_API 0x010101 /* since 1.1.1 */
+#define HAVE_LIBSSH2_VERSION_API 0x010100 /* libssh2_version since 1.1 */
+#define HAVE_LIBSSH2_CRYPTOENGINE_API 0x011100 /* libssh2_crypto_engine
+ since 1.11 */
+
+struct libssh2_knownhost {
+ unsigned int magic; /* magic stored by the library */
+ void *node; /* handle to the internal representation of this host */
+ char *name; /* this is NULL if no plain text host name exists */
+ char *key; /* key in base64/printable format */
+ int typemask;
+};
+
+/*
+ * libssh2_knownhost_init()
+ *
+ * Init a collection of known hosts. Returns the pointer to a collection.
+ *
+ */
+LIBSSH2_API LIBSSH2_KNOWNHOSTS *
+libssh2_knownhost_init(LIBSSH2_SESSION *session);
+
+/*
+ * libssh2_knownhost_add()
+ *
+ * Add a host and its associated key to the collection of known hosts.
+ *
+ * The 'type' argument specifies on what format the given host and keys are:
+ *
+ * plain - ascii "hostname.domain.tld"
+ * sha1 - SHA1( ) base64-encoded!
+ * custom - another hash
+ *
+ * If 'sha1' is selected as type, the salt must be provided to the salt
+ * argument. This too base64 encoded.
+ *
+ * The SHA-1 hash is what OpenSSH can be told to use in known_hosts files. If
+ * a custom type is used, salt is ignored and you must provide the host
+ * pre-hashed when checking for it in the libssh2_knownhost_check() function.
+ *
+ * The keylen parameter may be omitted (zero) if the key is provided as a
+ * NULL-terminated base64-encoded string.
+ */
+
+/* host format (2 bits) */
+#define LIBSSH2_KNOWNHOST_TYPE_MASK 0xffff
+#define LIBSSH2_KNOWNHOST_TYPE_PLAIN 1
+#define LIBSSH2_KNOWNHOST_TYPE_SHA1 2 /* always base64 encoded */
+#define LIBSSH2_KNOWNHOST_TYPE_CUSTOM 3
+
+/* key format (2 bits) */
+#define LIBSSH2_KNOWNHOST_KEYENC_MASK (3<<16)
+#define LIBSSH2_KNOWNHOST_KEYENC_RAW (1<<16)
+#define LIBSSH2_KNOWNHOST_KEYENC_BASE64 (2<<16)
+
+/* type of key (4 bits) */
+#define LIBSSH2_KNOWNHOST_KEY_MASK (15<<18)
+#define LIBSSH2_KNOWNHOST_KEY_SHIFT 18
+#define LIBSSH2_KNOWNHOST_KEY_RSA1 (1<<18)
+#define LIBSSH2_KNOWNHOST_KEY_SSHRSA (2<<18)
+#define LIBSSH2_KNOWNHOST_KEY_SSHDSS (3<<18) /* deprecated */
+#define LIBSSH2_KNOWNHOST_KEY_ECDSA_256 (4<<18)
+#define LIBSSH2_KNOWNHOST_KEY_ECDSA_384 (5<<18)
+#define LIBSSH2_KNOWNHOST_KEY_ECDSA_521 (6<<18)
+#define LIBSSH2_KNOWNHOST_KEY_ED25519 (7<<18)
+#define LIBSSH2_KNOWNHOST_KEY_UNKNOWN (15<<18)
+
+LIBSSH2_API int
+libssh2_knownhost_add(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *host,
+ const char *salt,
+ const char *key, size_t keylen, int typemask,
+ struct libssh2_knownhost **store);
+
+/*
+ * libssh2_knownhost_addc()
+ *
+ * Add a host and its associated key to the collection of known hosts.
+ *
+ * Takes a comment argument that may be NULL. A NULL comment indicates
+ * there is no comment and the entry will end directly after the key
+ * when written out to a file. An empty string "" comment will indicate an
+ * empty comment which will cause a single space to be written after the key.
+ *
+ * The 'type' argument specifies on what format the given host and keys are:
+ *
+ * plain - ascii "hostname.domain.tld"
+ * sha1 - SHA1( ) base64-encoded!
+ * custom - another hash
+ *
+ * If 'sha1' is selected as type, the salt must be provided to the salt
+ * argument. This too base64 encoded.
+ *
+ * The SHA-1 hash is what OpenSSH can be told to use in known_hosts files.
+ * If a custom type is used, salt is ignored and you must provide the host
+ * pre-hashed when checking for it in the libssh2_knownhost_check() function.
+ *
+ * The keylen parameter may be omitted (zero) if the key is provided as a
+ * NULL-terminated base64-encoded string.
+ */
+
+LIBSSH2_API int
+libssh2_knownhost_addc(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *host,
+ const char *salt,
+ const char *key, size_t keylen,
+ const char *comment, size_t commentlen, int typemask,
+ struct libssh2_knownhost **store);
+
+/*
+ * libssh2_knownhost_check()
+ *
+ * Check a host and its associated key against the collection of known hosts.
+ *
+ * The type is the type/format of the given host name.
+ *
+ * plain - ascii "hostname.domain.tld"
+ * custom - prehashed base64 encoded. Note that this cannot use any salts.
+ *
+ *
+ * 'knownhost' may be set to NULL if you don't care about that info.
+ *
+ * Returns:
+ *
+ * LIBSSH2_KNOWNHOST_CHECK_* values, see below
+ *
+ */
+
+#define LIBSSH2_KNOWNHOST_CHECK_MATCH 0
+#define LIBSSH2_KNOWNHOST_CHECK_MISMATCH 1
+#define LIBSSH2_KNOWNHOST_CHECK_NOTFOUND 2
+#define LIBSSH2_KNOWNHOST_CHECK_FAILURE 3
+
+LIBSSH2_API int
+libssh2_knownhost_check(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *host, const char *key, size_t keylen,
+ int typemask,
+ struct libssh2_knownhost **knownhost);
+
+/* this function is identital to the above one, but also takes a port
+ argument that allows libssh2 to do a better check */
+LIBSSH2_API int
+libssh2_knownhost_checkp(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *host, int port,
+ const char *key, size_t keylen,
+ int typemask,
+ struct libssh2_knownhost **knownhost);
+
+/*
+ * libssh2_knownhost_del()
+ *
+ * Remove a host from the collection of known hosts. The 'entry' struct is
+ * retrieved by a call to libssh2_knownhost_check().
+ *
+ */
+LIBSSH2_API int
+libssh2_knownhost_del(LIBSSH2_KNOWNHOSTS *hosts,
+ struct libssh2_knownhost *entry);
+
+/*
+ * libssh2_knownhost_free()
+ *
+ * Free an entire collection of known hosts.
+ *
+ */
+LIBSSH2_API void
+libssh2_knownhost_free(LIBSSH2_KNOWNHOSTS *hosts);
+
+/*
+ * libssh2_knownhost_readline()
+ *
+ * Pass in a line of a file of 'type'. It makes libssh2 read this line.
+ *
+ * LIBSSH2_KNOWNHOST_FILE_OPENSSH is the only supported type.
+ *
+ */
+LIBSSH2_API int
+libssh2_knownhost_readline(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *line, size_t len, int type);
+
+/*
+ * libssh2_knownhost_readfile()
+ *
+ * Add hosts+key pairs from a given file.
+ *
+ * Returns a negative value for error or number of successfully added hosts.
+ *
+ * This implementation currently only knows one 'type' (openssh), all others
+ * are reserved for future use.
+ */
+
+#define LIBSSH2_KNOWNHOST_FILE_OPENSSH 1
+
+LIBSSH2_API int
+libssh2_knownhost_readfile(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *filename, int type);
+
+/*
+ * libssh2_knownhost_writeline()
+ *
+ * Ask libssh2 to convert a known host to an output line for storage.
+ *
+ * Note that this function returns LIBSSH2_ERROR_BUFFER_TOO_SMALL if the given
+ * output buffer is too small to hold the desired output.
+ *
+ * This implementation currently only knows one 'type' (openssh), all others
+ * are reserved for future use.
+ *
+ */
+LIBSSH2_API int
+libssh2_knownhost_writeline(LIBSSH2_KNOWNHOSTS *hosts,
+ struct libssh2_knownhost *known,
+ char *buffer, size_t buflen,
+ size_t *outlen, /* the amount of written data */
+ int type);
+
+/*
+ * libssh2_knownhost_writefile()
+ *
+ * Write hosts+key pairs to a given file.
+ *
+ * This implementation currently only knows one 'type' (openssh), all others
+ * are reserved for future use.
+ */
+
+LIBSSH2_API int
+libssh2_knownhost_writefile(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *filename, int type);
+
+/*
+ * libssh2_knownhost_get()
+ *
+ * Traverse the internal list of known hosts. Pass NULL to 'prev' to get
+ * the first one. Or pass a pointer to the previously returned one to get the
+ * next.
+ *
+ * Returns:
+ * 0 if a fine host was stored in 'store'
+ * 1 if end of hosts
+ * [negative] on errors
+ */
+LIBSSH2_API int
+libssh2_knownhost_get(LIBSSH2_KNOWNHOSTS *hosts,
+ struct libssh2_knownhost **store,
+ struct libssh2_knownhost *prev);
+
+#define HAVE_LIBSSH2_AGENT_API 0x010202 /* since 1.2.2 */
+
+struct libssh2_agent_publickey {
+ unsigned int magic; /* magic stored by the library */
+ void *node; /* handle to the internal representation of key */
+ unsigned char *blob; /* public key blob */
+ size_t blob_len; /* length of the public key blob */
+ char *comment; /* comment in printable format */
+};
+
+/*
+ * libssh2_agent_init()
+ *
+ * Init an ssh-agent handle. Returns the pointer to the handle.
+ *
+ */
+LIBSSH2_API LIBSSH2_AGENT *
+libssh2_agent_init(LIBSSH2_SESSION *session);
+
+/*
+ * libssh2_agent_connect()
+ *
+ * Connect to an ssh-agent.
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int
+libssh2_agent_connect(LIBSSH2_AGENT *agent);
+
+/*
+ * libssh2_agent_list_identities()
+ *
+ * Request an ssh-agent to list identities.
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int
+libssh2_agent_list_identities(LIBSSH2_AGENT *agent);
+
+/*
+ * libssh2_agent_get_identity()
+ *
+ * Traverse the internal list of public keys. Pass NULL to 'prev' to get
+ * the first one. Or pass a pointer to the previously returned one to get the
+ * next.
+ *
+ * Returns:
+ * 0 if a fine public key was stored in 'store'
+ * 1 if end of public keys
+ * [negative] on errors
+ */
+LIBSSH2_API int
+libssh2_agent_get_identity(LIBSSH2_AGENT *agent,
+ struct libssh2_agent_publickey **store,
+ struct libssh2_agent_publickey *prev);
+
+/*
+ * libssh2_agent_userauth()
+ *
+ * Do publickey user authentication with the help of ssh-agent.
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int
+libssh2_agent_userauth(LIBSSH2_AGENT *agent,
+ const char *username,
+ struct libssh2_agent_publickey *identity);
+
+/*
+ * libssh2_agent_sign()
+ *
+ * Sign a payload using a system-installed ssh-agent.
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int
+libssh2_agent_sign(LIBSSH2_AGENT *agent,
+ struct libssh2_agent_publickey *identity,
+ unsigned char **sig,
+ size_t *s_len,
+ const unsigned char *data,
+ size_t d_len,
+ const char *method,
+ unsigned int method_len);
+
+/*
+ * libssh2_agent_disconnect()
+ *
+ * Close a connection to an ssh-agent.
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int
+libssh2_agent_disconnect(LIBSSH2_AGENT *agent);
+
+/*
+ * libssh2_agent_free()
+ *
+ * Free an ssh-agent handle. This function also frees the internal
+ * collection of public keys.
+ */
+LIBSSH2_API void
+libssh2_agent_free(LIBSSH2_AGENT *agent);
+
+/*
+ * libssh2_agent_set_identity_path()
+ *
+ * Allows a custom agent identity socket path beyond SSH_AUTH_SOCK env
+ *
+ */
+LIBSSH2_API void
+libssh2_agent_set_identity_path(LIBSSH2_AGENT *agent,
+ const char *path);
+
+/*
+ * libssh2_agent_get_identity_path()
+ *
+ * Returns the custom agent identity socket path if set
+ *
+ */
+LIBSSH2_API const char *
+libssh2_agent_get_identity_path(LIBSSH2_AGENT *agent);
+
+/*
+ * libssh2_keepalive_config()
+ *
+ * Set how often keepalive messages should be sent. WANT_REPLY
+ * indicates whether the keepalive messages should request a response
+ * from the server. INTERVAL is number of seconds that can pass
+ * without any I/O, use 0 (the default) to disable keepalives. To
+ * avoid some busy-loop corner-cases, if you specify an interval of 1
+ * it will be treated as 2.
+ *
+ * Note that non-blocking applications are responsible for sending the
+ * keepalive messages using libssh2_keepalive_send().
+ */
+LIBSSH2_API void libssh2_keepalive_config(LIBSSH2_SESSION *session,
+ int want_reply,
+ unsigned int interval);
+
+/*
+ * libssh2_keepalive_send()
+ *
+ * Send a keepalive message if needed. SECONDS_TO_NEXT indicates how
+ * many seconds you can sleep after this call before you need to call
+ * it again. Returns 0 on success, or LIBSSH2_ERROR_SOCKET_SEND on
+ * I/O errors.
+ */
+LIBSSH2_API int libssh2_keepalive_send(LIBSSH2_SESSION *session,
+ int *seconds_to_next);
+
+/* NOTE NOTE NOTE
+ libssh2_trace() has no function in builds that aren't built with debug
+ enabled
+ */
+LIBSSH2_API int libssh2_trace(LIBSSH2_SESSION *session, int bitmask);
+#define LIBSSH2_TRACE_TRANS (1<<1)
+#define LIBSSH2_TRACE_KEX (1<<2)
+#define LIBSSH2_TRACE_AUTH (1<<3)
+#define LIBSSH2_TRACE_CONN (1<<4)
+#define LIBSSH2_TRACE_SCP (1<<5)
+#define LIBSSH2_TRACE_SFTP (1<<6)
+#define LIBSSH2_TRACE_ERROR (1<<7)
+#define LIBSSH2_TRACE_PUBLICKEY (1<<8)
+#define LIBSSH2_TRACE_SOCKET (1<<9)
+
+typedef void (*libssh2_trace_handler_func)(LIBSSH2_SESSION*,
+ void *,
+ const char *,
+ size_t);
+LIBSSH2_API int libssh2_trace_sethandler(LIBSSH2_SESSION *session,
+ void *context,
+ libssh2_trace_handler_func callback);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !RC_INVOKED */
+
+#endif /* LIBSSH2_H */
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/libssh2_publickey.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/libssh2_publickey.h
new file mode 100644
index 0000000..566acd6
--- /dev/null
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/libssh2_publickey.h
@@ -0,0 +1,128 @@
+/* Copyright (C) Sara Golemon
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
+ * that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * Neither the name of the copyright holder nor the names
+ * of any other contributors may be used to endorse or
+ * promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ */
+
+/* Note: This include file is only needed for using the
+ * publickey SUBSYSTEM which is not the same as publickey
+ * authentication. For authentication you only need libssh2.h
+ *
+ * For more information on the publickey subsystem,
+ * refer to IETF draft: secsh-publickey
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef LIBSSH2_PUBLICKEY_H
+#define LIBSSH2_PUBLICKEY_H 1
+
+#include "libssh2.h"
+
+typedef struct _LIBSSH2_PUBLICKEY LIBSSH2_PUBLICKEY;
+
+typedef struct _libssh2_publickey_attribute {
+ const char *name;
+ unsigned long name_len;
+ const char *value;
+ unsigned long value_len;
+ char mandatory;
+} libssh2_publickey_attribute;
+
+typedef struct _libssh2_publickey_list {
+ unsigned char *packet; /* For freeing */
+
+ const unsigned char *name;
+ unsigned long name_len;
+ const unsigned char *blob;
+ unsigned long blob_len;
+ unsigned long num_attrs;
+ libssh2_publickey_attribute *attrs; /* free me */
+} libssh2_publickey_list;
+
+/* Generally use the first macro here, but if both name and value are string
+ literals, you can use _fast() to take advantage of preprocessing */
+#define libssh2_publickey_attribute(name, value, mandatory) \
+ { (name), strlen(name), (value), strlen(value), (mandatory) },
+#define libssh2_publickey_attribute_fast(name, value, mandatory) \
+ { (name), sizeof(name) - 1, (value), sizeof(value) - 1, (mandatory) },
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Publickey Subsystem */
+LIBSSH2_API LIBSSH2_PUBLICKEY *
+libssh2_publickey_init(LIBSSH2_SESSION *session);
+
+LIBSSH2_API int
+libssh2_publickey_add_ex(LIBSSH2_PUBLICKEY *pkey,
+ const unsigned char *name,
+ unsigned long name_len,
+ const unsigned char *blob,
+ unsigned long blob_len, char overwrite,
+ unsigned long num_attrs,
+ const libssh2_publickey_attribute attrs[]);
+#define libssh2_publickey_add(pkey, name, blob, blob_len, overwrite, \
+ num_attrs, attrs) \
+ libssh2_publickey_add_ex((pkey), \
+ (name), strlen(name), \
+ (blob), (blob_len), \
+ (overwrite), (num_attrs), (attrs))
+
+LIBSSH2_API int libssh2_publickey_remove_ex(LIBSSH2_PUBLICKEY *pkey,
+ const unsigned char *name,
+ unsigned long name_len,
+ const unsigned char *blob,
+ unsigned long blob_len);
+#define libssh2_publickey_remove(pkey, name, blob, blob_len) \
+ libssh2_publickey_remove_ex((pkey), \
+ (name), strlen(name), \
+ (blob), (blob_len))
+
+LIBSSH2_API int
+libssh2_publickey_list_fetch(LIBSSH2_PUBLICKEY *pkey,
+ unsigned long *num_keys,
+ libssh2_publickey_list **pkey_list);
+LIBSSH2_API void
+libssh2_publickey_list_free(LIBSSH2_PUBLICKEY *pkey,
+ libssh2_publickey_list *pkey_list);
+
+LIBSSH2_API int libssh2_publickey_shutdown(LIBSSH2_PUBLICKEY *pkey);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* LIBSSH2_PUBLICKEY_H */
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/libssh2_sftp.h b/Clibgit2.xcframework/ios-arm64-simulator/Headers/libssh2_sftp.h
new file mode 100644
index 0000000..ab7b0af
--- /dev/null
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/libssh2_sftp.h
@@ -0,0 +1,382 @@
+/* Copyright (C) Sara Golemon
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
+ * that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * Neither the name of the copyright holder nor the names
+ * of any other contributors may be used to endorse or
+ * promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef LIBSSH2_SFTP_H
+#define LIBSSH2_SFTP_H 1
+
+#include "libssh2.h"
+
+#ifndef _WIN32
+#include
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Note: Version 6 was documented at the time of writing
+ * However it was marked as "DO NOT IMPLEMENT" due to pending changes
+ *
+ * Let's start with Version 3 (The version found in OpenSSH) and go from there
+ */
+#define LIBSSH2_SFTP_VERSION 3
+
+typedef struct _LIBSSH2_SFTP LIBSSH2_SFTP;
+typedef struct _LIBSSH2_SFTP_HANDLE LIBSSH2_SFTP_HANDLE;
+typedef struct _LIBSSH2_SFTP_ATTRIBUTES LIBSSH2_SFTP_ATTRIBUTES;
+typedef struct _LIBSSH2_SFTP_STATVFS LIBSSH2_SFTP_STATVFS;
+
+/* Flags for open_ex() */
+#define LIBSSH2_SFTP_OPENFILE 0
+#define LIBSSH2_SFTP_OPENDIR 1
+
+/* Flags for rename_ex() */
+#define LIBSSH2_SFTP_RENAME_OVERWRITE 0x00000001
+#define LIBSSH2_SFTP_RENAME_ATOMIC 0x00000002
+#define LIBSSH2_SFTP_RENAME_NATIVE 0x00000004
+
+/* Flags for stat_ex() */
+#define LIBSSH2_SFTP_STAT 0
+#define LIBSSH2_SFTP_LSTAT 1
+#define LIBSSH2_SFTP_SETSTAT 2
+
+/* Flags for symlink_ex() */
+#define LIBSSH2_SFTP_SYMLINK 0
+#define LIBSSH2_SFTP_READLINK 1
+#define LIBSSH2_SFTP_REALPATH 2
+
+/* Flags for sftp_mkdir() */
+#define LIBSSH2_SFTP_DEFAULT_MODE -1
+
+/* SFTP attribute flag bits */
+#define LIBSSH2_SFTP_ATTR_SIZE 0x00000001
+#define LIBSSH2_SFTP_ATTR_UIDGID 0x00000002
+#define LIBSSH2_SFTP_ATTR_PERMISSIONS 0x00000004
+#define LIBSSH2_SFTP_ATTR_ACMODTIME 0x00000008
+#define LIBSSH2_SFTP_ATTR_EXTENDED 0x80000000
+
+/* SFTP statvfs flag bits */
+#define LIBSSH2_SFTP_ST_RDONLY 0x00000001
+#define LIBSSH2_SFTP_ST_NOSUID 0x00000002
+
+struct _LIBSSH2_SFTP_ATTRIBUTES {
+ /* If flags & ATTR_* bit is set, then the value in this struct will be
+ * meaningful Otherwise it should be ignored
+ */
+ unsigned long flags;
+
+ libssh2_uint64_t filesize;
+ unsigned long uid, gid;
+ unsigned long permissions;
+ unsigned long atime, mtime;
+};
+
+struct _LIBSSH2_SFTP_STATVFS {
+ libssh2_uint64_t f_bsize; /* file system block size */
+ libssh2_uint64_t f_frsize; /* fragment size */
+ libssh2_uint64_t f_blocks; /* size of fs in f_frsize units */
+ libssh2_uint64_t f_bfree; /* # free blocks */
+ libssh2_uint64_t f_bavail; /* # free blocks for non-root */
+ libssh2_uint64_t f_files; /* # inodes */
+ libssh2_uint64_t f_ffree; /* # free inodes */
+ libssh2_uint64_t f_favail; /* # free inodes for non-root */
+ libssh2_uint64_t f_fsid; /* file system ID */
+ libssh2_uint64_t f_flag; /* mount flags */
+ libssh2_uint64_t f_namemax; /* maximum filename length */
+};
+
+/* SFTP filetypes */
+#define LIBSSH2_SFTP_TYPE_REGULAR 1
+#define LIBSSH2_SFTP_TYPE_DIRECTORY 2
+#define LIBSSH2_SFTP_TYPE_SYMLINK 3
+#define LIBSSH2_SFTP_TYPE_SPECIAL 4
+#define LIBSSH2_SFTP_TYPE_UNKNOWN 5
+#define LIBSSH2_SFTP_TYPE_SOCKET 6
+#define LIBSSH2_SFTP_TYPE_CHAR_DEVICE 7
+#define LIBSSH2_SFTP_TYPE_BLOCK_DEVICE 8
+#define LIBSSH2_SFTP_TYPE_FIFO 9
+
+/*
+ * Reproduce the POSIX file modes here for systems that are not POSIX
+ * compliant.
+ *
+ * These is used in "permissions" of "struct _LIBSSH2_SFTP_ATTRIBUTES"
+ */
+/* File type */
+#define LIBSSH2_SFTP_S_IFMT 0170000 /* type of file mask */
+#define LIBSSH2_SFTP_S_IFIFO 0010000 /* named pipe (fifo) */
+#define LIBSSH2_SFTP_S_IFCHR 0020000 /* character special */
+#define LIBSSH2_SFTP_S_IFDIR 0040000 /* directory */
+#define LIBSSH2_SFTP_S_IFBLK 0060000 /* block special */
+#define LIBSSH2_SFTP_S_IFREG 0100000 /* regular */
+#define LIBSSH2_SFTP_S_IFLNK 0120000 /* symbolic link */
+#define LIBSSH2_SFTP_S_IFSOCK 0140000 /* socket */
+
+/* File mode */
+/* Read, write, execute/search by owner */
+#define LIBSSH2_SFTP_S_IRWXU 0000700 /* RWX mask for owner */
+#define LIBSSH2_SFTP_S_IRUSR 0000400 /* R for owner */
+#define LIBSSH2_SFTP_S_IWUSR 0000200 /* W for owner */
+#define LIBSSH2_SFTP_S_IXUSR 0000100 /* X for owner */
+/* Read, write, execute/search by group */
+#define LIBSSH2_SFTP_S_IRWXG 0000070 /* RWX mask for group */
+#define LIBSSH2_SFTP_S_IRGRP 0000040 /* R for group */
+#define LIBSSH2_SFTP_S_IWGRP 0000020 /* W for group */
+#define LIBSSH2_SFTP_S_IXGRP 0000010 /* X for group */
+/* Read, write, execute/search by others */
+#define LIBSSH2_SFTP_S_IRWXO 0000007 /* RWX mask for other */
+#define LIBSSH2_SFTP_S_IROTH 0000004 /* R for other */
+#define LIBSSH2_SFTP_S_IWOTH 0000002 /* W for other */
+#define LIBSSH2_SFTP_S_IXOTH 0000001 /* X for other */
+
+/* macros to check for specific file types, added in 1.2.5 */
+#define LIBSSH2_SFTP_S_ISLNK(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFLNK)
+#define LIBSSH2_SFTP_S_ISREG(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFREG)
+#define LIBSSH2_SFTP_S_ISDIR(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFDIR)
+#define LIBSSH2_SFTP_S_ISCHR(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFCHR)
+#define LIBSSH2_SFTP_S_ISBLK(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFBLK)
+#define LIBSSH2_SFTP_S_ISFIFO(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFIFO)
+#define LIBSSH2_SFTP_S_ISSOCK(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFSOCK)
+
+/* SFTP File Transfer Flags -- (e.g. flags parameter to sftp_open())
+ * Danger will robinson... APPEND doesn't have any effect on OpenSSH servers */
+#define LIBSSH2_FXF_READ 0x00000001
+#define LIBSSH2_FXF_WRITE 0x00000002
+#define LIBSSH2_FXF_APPEND 0x00000004
+#define LIBSSH2_FXF_CREAT 0x00000008
+#define LIBSSH2_FXF_TRUNC 0x00000010
+#define LIBSSH2_FXF_EXCL 0x00000020
+
+/* SFTP Status Codes (returned by libssh2_sftp_last_error() ) */
+#define LIBSSH2_FX_OK 0UL
+#define LIBSSH2_FX_EOF 1UL
+#define LIBSSH2_FX_NO_SUCH_FILE 2UL
+#define LIBSSH2_FX_PERMISSION_DENIED 3UL
+#define LIBSSH2_FX_FAILURE 4UL
+#define LIBSSH2_FX_BAD_MESSAGE 5UL
+#define LIBSSH2_FX_NO_CONNECTION 6UL
+#define LIBSSH2_FX_CONNECTION_LOST 7UL
+#define LIBSSH2_FX_OP_UNSUPPORTED 8UL
+#define LIBSSH2_FX_INVALID_HANDLE 9UL
+#define LIBSSH2_FX_NO_SUCH_PATH 10UL
+#define LIBSSH2_FX_FILE_ALREADY_EXISTS 11UL
+#define LIBSSH2_FX_WRITE_PROTECT 12UL
+#define LIBSSH2_FX_NO_MEDIA 13UL
+#define LIBSSH2_FX_NO_SPACE_ON_FILESYSTEM 14UL
+#define LIBSSH2_FX_QUOTA_EXCEEDED 15UL
+#define LIBSSH2_FX_UNKNOWN_PRINCIPLE 16UL /* Initial mis-spelling */
+#define LIBSSH2_FX_UNKNOWN_PRINCIPAL 16UL
+#define LIBSSH2_FX_LOCK_CONFlICT 17UL /* Initial mis-spelling */
+#define LIBSSH2_FX_LOCK_CONFLICT 17UL
+#define LIBSSH2_FX_DIR_NOT_EMPTY 18UL
+#define LIBSSH2_FX_NOT_A_DIRECTORY 19UL
+#define LIBSSH2_FX_INVALID_FILENAME 20UL
+#define LIBSSH2_FX_LINK_LOOP 21UL
+
+/* Returned by any function that would block during a read/write operation */
+#define LIBSSH2SFTP_EAGAIN LIBSSH2_ERROR_EAGAIN
+
+/* SFTP API */
+LIBSSH2_API LIBSSH2_SFTP *libssh2_sftp_init(LIBSSH2_SESSION *session);
+LIBSSH2_API int libssh2_sftp_shutdown(LIBSSH2_SFTP *sftp);
+LIBSSH2_API unsigned long libssh2_sftp_last_error(LIBSSH2_SFTP *sftp);
+LIBSSH2_API LIBSSH2_CHANNEL *libssh2_sftp_get_channel(LIBSSH2_SFTP *sftp);
+
+/* File / Directory Ops */
+LIBSSH2_API LIBSSH2_SFTP_HANDLE *
+libssh2_sftp_open_ex(LIBSSH2_SFTP *sftp,
+ const char *filename,
+ unsigned int filename_len,
+ unsigned long flags,
+ long mode, int open_type);
+#define libssh2_sftp_open(sftp, filename, flags, mode) \
+ libssh2_sftp_open_ex((sftp), \
+ (filename), (unsigned int)strlen(filename), \
+ (flags), (mode), LIBSSH2_SFTP_OPENFILE)
+#define libssh2_sftp_opendir(sftp, path) \
+ libssh2_sftp_open_ex((sftp), \
+ (path), (unsigned int)strlen(path), \
+ 0, 0, LIBSSH2_SFTP_OPENDIR)
+LIBSSH2_API LIBSSH2_SFTP_HANDLE *
+libssh2_sftp_open_ex_r(LIBSSH2_SFTP *sftp,
+ const char *filename,
+ size_t filename_len,
+ unsigned long flags,
+ long mode, int open_type,
+ LIBSSH2_SFTP_ATTRIBUTES *attrs);
+#define libssh2_sftp_open_r(sftp, filename, flags, mode, attrs) \
+ libssh2_sftp_open_ex_r((sftp), (filename), strlen(filename), \
+ (flags), (mode), LIBSSH2_SFTP_OPENFILE, \
+ (attrs))
+
+LIBSSH2_API ssize_t libssh2_sftp_read(LIBSSH2_SFTP_HANDLE *handle,
+ char *buffer, size_t buffer_maxlen);
+
+LIBSSH2_API int libssh2_sftp_readdir_ex(LIBSSH2_SFTP_HANDLE *handle, \
+ char *buffer, size_t buffer_maxlen,
+ char *longentry,
+ size_t longentry_maxlen,
+ LIBSSH2_SFTP_ATTRIBUTES *attrs);
+#define libssh2_sftp_readdir(handle, buffer, buffer_maxlen, attrs) \
+ libssh2_sftp_readdir_ex((handle), (buffer), (buffer_maxlen), NULL, 0, \
+ (attrs))
+
+LIBSSH2_API ssize_t libssh2_sftp_write(LIBSSH2_SFTP_HANDLE *handle,
+ const char *buffer, size_t count);
+LIBSSH2_API int libssh2_sftp_fsync(LIBSSH2_SFTP_HANDLE *handle);
+
+LIBSSH2_API int libssh2_sftp_close_handle(LIBSSH2_SFTP_HANDLE *handle);
+#define libssh2_sftp_close(handle) libssh2_sftp_close_handle(handle)
+#define libssh2_sftp_closedir(handle) libssh2_sftp_close_handle(handle)
+
+LIBSSH2_API void libssh2_sftp_seek(LIBSSH2_SFTP_HANDLE *handle, size_t offset);
+LIBSSH2_API void libssh2_sftp_seek64(LIBSSH2_SFTP_HANDLE *handle,
+ libssh2_uint64_t offset);
+#define libssh2_sftp_rewind(handle) libssh2_sftp_seek64((handle), 0)
+
+LIBSSH2_API size_t libssh2_sftp_tell(LIBSSH2_SFTP_HANDLE *handle);
+LIBSSH2_API libssh2_uint64_t libssh2_sftp_tell64(LIBSSH2_SFTP_HANDLE *handle);
+
+LIBSSH2_API int libssh2_sftp_fstat_ex(LIBSSH2_SFTP_HANDLE *handle,
+ LIBSSH2_SFTP_ATTRIBUTES *attrs,
+ int setstat);
+#define libssh2_sftp_fstat(handle, attrs) \
+ libssh2_sftp_fstat_ex((handle), (attrs), 0)
+#define libssh2_sftp_fsetstat(handle, attrs) \
+ libssh2_sftp_fstat_ex((handle), (attrs), 1)
+
+/* Miscellaneous Ops */
+LIBSSH2_API int libssh2_sftp_rename_ex(LIBSSH2_SFTP *sftp,
+ const char *source_filename,
+ unsigned int srouce_filename_len,
+ const char *dest_filename,
+ unsigned int dest_filename_len,
+ long flags);
+#define libssh2_sftp_rename(sftp, sourcefile, destfile) \
+ libssh2_sftp_rename_ex((sftp), \
+ (sourcefile), (unsigned int)strlen(sourcefile), \
+ (destfile), (unsigned int)strlen(destfile), \
+ LIBSSH2_SFTP_RENAME_OVERWRITE | \
+ LIBSSH2_SFTP_RENAME_ATOMIC | \
+ LIBSSH2_SFTP_RENAME_NATIVE)
+
+LIBSSH2_API int libssh2_sftp_posix_rename_ex(LIBSSH2_SFTP *sftp,
+ const char *source_filename,
+ size_t srouce_filename_len,
+ const char *dest_filename,
+ size_t dest_filename_len);
+#define libssh2_sftp_posix_rename(sftp, sourcefile, destfile) \
+ libssh2_sftp_posix_rename_ex((sftp), (sourcefile), strlen(sourcefile), \
+ (destfile), strlen(destfile))
+
+LIBSSH2_API int libssh2_sftp_unlink_ex(LIBSSH2_SFTP *sftp,
+ const char *filename,
+ unsigned int filename_len);
+#define libssh2_sftp_unlink(sftp, filename) \
+ libssh2_sftp_unlink_ex((sftp), (filename), (unsigned int)strlen(filename))
+
+LIBSSH2_API int libssh2_sftp_fstatvfs(LIBSSH2_SFTP_HANDLE *handle,
+ LIBSSH2_SFTP_STATVFS *st);
+
+LIBSSH2_API int libssh2_sftp_statvfs(LIBSSH2_SFTP *sftp,
+ const char *path,
+ size_t path_len,
+ LIBSSH2_SFTP_STATVFS *st);
+
+LIBSSH2_API int libssh2_sftp_mkdir_ex(LIBSSH2_SFTP *sftp,
+ const char *path,
+ unsigned int path_len, long mode);
+#define libssh2_sftp_mkdir(sftp, path, mode) \
+ libssh2_sftp_mkdir_ex((sftp), (path), (unsigned int)strlen(path), (mode))
+
+LIBSSH2_API int libssh2_sftp_rmdir_ex(LIBSSH2_SFTP *sftp,
+ const char *path,
+ unsigned int path_len);
+#define libssh2_sftp_rmdir(sftp, path) \
+ libssh2_sftp_rmdir_ex((sftp), (path), (unsigned int)strlen(path))
+
+LIBSSH2_API int libssh2_sftp_stat_ex(LIBSSH2_SFTP *sftp,
+ const char *path,
+ unsigned int path_len,
+ int stat_type,
+ LIBSSH2_SFTP_ATTRIBUTES *attrs);
+#define libssh2_sftp_stat(sftp, path, attrs) \
+ libssh2_sftp_stat_ex((sftp), (path), (unsigned int)strlen(path), \
+ LIBSSH2_SFTP_STAT, (attrs))
+#define libssh2_sftp_lstat(sftp, path, attrs) \
+ libssh2_sftp_stat_ex((sftp), (path), (unsigned int)strlen(path), \
+ LIBSSH2_SFTP_LSTAT, (attrs))
+#define libssh2_sftp_setstat(sftp, path, attrs) \
+ libssh2_sftp_stat_ex((sftp), (path), (unsigned int)strlen(path), \
+ LIBSSH2_SFTP_SETSTAT, (attrs))
+
+LIBSSH2_API int libssh2_sftp_symlink_ex(LIBSSH2_SFTP *sftp,
+ const char *path,
+ unsigned int path_len,
+ char *target,
+ unsigned int target_len,
+ int link_type);
+#define libssh2_sftp_symlink(sftp, orig, linkpath) \
+ libssh2_sftp_symlink_ex((sftp), \
+ (orig), (unsigned int)strlen(orig), \
+ (linkpath), (unsigned int)strlen(linkpath), \
+ LIBSSH2_SFTP_SYMLINK)
+#define libssh2_sftp_readlink(sftp, path, target, maxlen) \
+ libssh2_sftp_symlink_ex((sftp), \
+ (path), (unsigned int)strlen(path), \
+ (target), (maxlen), \
+ LIBSSH2_SFTP_READLINK)
+#define libssh2_sftp_realpath(sftp, path, target, maxlen) \
+ libssh2_sftp_symlink_ex((sftp), \
+ (path), (unsigned int)strlen(path), \
+ (target), (maxlen), \
+ LIBSSH2_SFTP_REALPATH)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* LIBSSH2_SFTP_H */
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/Headers/module.modulemap b/Clibgit2.xcframework/ios-arm64-simulator/Headers/module.modulemap
index fe5729d..3a9a9ba 100644
--- a/Clibgit2.xcframework/ios-arm64-simulator/Headers/module.modulemap
+++ b/Clibgit2.xcframework/ios-arm64-simulator/Headers/module.modulemap
@@ -28,4 +28,13 @@ module Clibgit2 {
export *
module * { export * }
}
+
+ // Expose libssh2 headers
+ explicit module libssh2 {
+ header "libssh2.h"
+ header "libssh2_sftp.h"
+ header "libssh2_publickey.h"
+
+ export *
+ }
}
diff --git a/Clibgit2.xcframework/ios-arm64-simulator/libgit2_all.a b/Clibgit2.xcframework/ios-arm64-simulator/libgit2_all.a
index 2fb36a9..712e691 100644
Binary files a/Clibgit2.xcframework/ios-arm64-simulator/libgit2_all.a and b/Clibgit2.xcframework/ios-arm64-simulator/libgit2_all.a differ
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2.h b/Clibgit2.xcframework/ios-arm64/Headers/git2.h
index 2961cc3..3457e5f 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2.h
@@ -28,6 +28,7 @@
#include "git2/diff.h"
#include "git2/email.h"
#include "git2/errors.h"
+#include "git2/experimental.h"
#include "git2/filter.h"
#include "git2/global.h"
#include "git2/graph.h"
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/annotated_commit.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/annotated_commit.h
index 3b7103f..04f3b1c 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/annotated_commit.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/annotated_commit.h
@@ -13,9 +13,16 @@
/**
* @file git2/annotated_commit.h
- * @brief Git annotated commit routines
+ * @brief A commit and information about how it was looked up by the user.
* @defgroup git_annotated_commit Git annotated commit routines
* @ingroup Git
+ *
+ * An "annotated commit" is a commit that contains information about
+ * how the commit was resolved, which can be used for maintaining the
+ * user's "intent" through commands like merge and rebase. For example,
+ * if a user wants to "merge HEAD" then an annotated commit is used to
+ * both contain the HEAD commit _and_ the fact that it was resolved as
+ * the HEAD ref.
* @{
*/
GIT_BEGIN_DECL
@@ -25,7 +32,7 @@ GIT_BEGIN_DECL
* The resulting git_annotated_commit must be freed with
* `git_annotated_commit_free`.
*
- * @param out pointer to store the git_annotated_commit result in
+ * @param[out] out pointer to store the git_annotated_commit result in
* @param repo repository that contains the given reference
* @param ref reference to use to lookup the git_annotated_commit
* @return 0 on success or error code
@@ -40,7 +47,7 @@ GIT_EXTERN(int) git_annotated_commit_from_ref(
* The resulting git_annotated_commit must be freed with
* `git_annotated_commit_free`.
*
- * @param out pointer to store the git_annotated_commit result in
+ * @param[out] out pointer to store the git_annotated_commit result in
* @param repo repository that contains the given commit
* @param branch_name name of the (remote) branch
* @param remote_url url of the remote
@@ -67,7 +74,7 @@ GIT_EXTERN(int) git_annotated_commit_from_fetchhead(
* most specific function (eg `git_annotated_commit_from_ref`)
* instead of this one when that data is known.
*
- * @param out pointer to store the git_annotated_commit result in
+ * @param[out] out pointer to store the git_annotated_commit result in
* @param repo repository that contains the given commit
* @param id the commit object id to lookup
* @return 0 on success or error code
@@ -84,7 +91,7 @@ GIT_EXTERN(int) git_annotated_commit_lookup(
* http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for
* information on the syntax accepted.
*
- * @param out pointer to store the git_annotated_commit result in
+ * @param[out] out pointer to store the git_annotated_commit result in
* @param repo repository that contains the given commit
* @param revspec the extended sha syntax string to use to lookup the commit
* @return 0 on success or error code
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/apply.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/apply.h
index bc637df..7ab939d 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/apply.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/apply.h
@@ -14,9 +14,12 @@
/**
* @file git2/apply.h
- * @brief Git patch application routines
+ * @brief Apply patches to the working directory or index
* @defgroup git_apply Git patch application routines
* @ingroup Git
+ *
+ * Mechanisms to apply a patch to the index, the working directory,
+ * or both.
* @{
*/
GIT_BEGIN_DECL
@@ -32,6 +35,8 @@ GIT_BEGIN_DECL
*
* @param delta The delta to be applied
* @param payload User-specified payload
+ * @return 0 if the delta is applied, < 0 if the apply process will be aborted
+ * or > 0 if the delta will not be applied.
*/
typedef int GIT_CALLBACK(git_apply_delta_cb)(
const git_diff_delta *delta,
@@ -48,27 +53,44 @@ typedef int GIT_CALLBACK(git_apply_delta_cb)(
*
* @param hunk The hunk to be applied
* @param payload User-specified payload
+ * @return 0 if the hunk is applied, < 0 if the apply process will be aborted
+ * or > 0 if the hunk will not be applied.
*/
typedef int GIT_CALLBACK(git_apply_hunk_cb)(
const git_diff_hunk *hunk,
void *payload);
-/** Flags controlling the behavior of git_apply */
+/**
+ * Flags controlling the behavior of `git_apply`.
+ *
+ * When the callback:
+ * - returns < 0, the apply process will be aborted.
+ * - returns > 0, the hunk will not be applied, but the apply process
+ * continues
+ * - returns 0, the hunk is applied, and the apply process continues.
+ */
typedef enum {
/**
* Don't actually make changes, just test that the patch applies.
* This is the equivalent of `git apply --check`.
*/
- GIT_APPLY_CHECK = (1 << 0),
+ GIT_APPLY_CHECK = (1 << 0)
} git_apply_flags_t;
/**
- * Apply options structure
+ * Apply options structure.
+ *
+ * When the callback:
+ * - returns < 0, the apply process will be aborted.
+ * - returns > 0, the hunk will not be applied, but the apply process
+ * continues
+ * - returns 0, the hunk is applied, and the apply process continues.
*
* Initialize with `GIT_APPLY_OPTIONS_INIT`. Alternatively, you can
* use `git_apply_options_init`.
*
- * @see git_apply_to_tree, git_apply
+ * @see git_apply_to_tree
+ * @see git_apply
*/
typedef struct {
unsigned int version; /**< The version */
@@ -79,16 +101,29 @@ typedef struct {
/** When applying a patch, callback that will be made per hunk. */
git_apply_hunk_cb hunk_cb;
- /** Payload passed to both delta_cb & hunk_cb. */
+ /** Payload passed to both `delta_cb` & `hunk_cb`. */
void *payload;
- /** Bitmask of git_apply_flags_t */
+ /** Bitmask of `git_apply_flags_t` */
unsigned int flags;
} git_apply_options;
+/** Current version for the `git_apply_options` structure */
#define GIT_APPLY_OPTIONS_VERSION 1
+
+/** Static constructor for `git_apply_options` */
#define GIT_APPLY_OPTIONS_INIT {GIT_APPLY_OPTIONS_VERSION}
+/**
+ * Initialize git_apply_options structure
+ *
+ * Initialize a `git_apply_options` with default values. Equivalent to creating
+ * an instance with GIT_APPLY_OPTIONS_INIT.
+ *
+ * @param opts The `git_apply_options` struct to initialize.
+ * @param version The struct version; pass `GIT_APPLY_OPTIONS_VERSION`
+ * @return 0 on success or -1 on failure.
+ */
GIT_EXTERN(int) git_apply_options_init(git_apply_options *opts, unsigned int version);
/**
@@ -127,7 +162,7 @@ typedef enum {
* Apply the patch to both the working directory and the index.
* This is the equivalent of `git apply --index`.
*/
- GIT_APPLY_LOCATION_BOTH = 2,
+ GIT_APPLY_LOCATION_BOTH = 2
} git_apply_location_t;
/**
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/attr.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/attr.h
index 3891a0c..e5216fe 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/attr.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/attr.h
@@ -12,9 +12,13 @@
/**
* @file git2/attr.h
- * @brief Git attribute management routines
+ * @brief Attribute management routines
* @defgroup git_attr Git attribute management routines
* @ingroup Git
+ *
+ * Attributes specify additional information about how git should
+ * handle particular paths - for example, they may indicate whether
+ * a particular filter is applied, like LFS or line ending conversions.
* @{
*/
GIT_BEGIN_DECL
@@ -83,7 +87,7 @@ typedef enum {
GIT_ATTR_VALUE_UNSPECIFIED = 0, /**< The attribute has been left unspecified */
GIT_ATTR_VALUE_TRUE, /**< The attribute has been set */
GIT_ATTR_VALUE_FALSE, /**< The attribute has been unset */
- GIT_ATTR_VALUE_STRING, /**< This attribute has a value */
+ GIT_ATTR_VALUE_STRING /**< This attribute has a value */
} git_attr_value_t;
/**
@@ -114,16 +118,18 @@ GIT_EXTERN(git_attr_value_t) git_attr_value(const char *attr);
* use index only for creating archives or for a bare repo (if an
* index has been specified for the bare repo).
*/
+
+/** Examine attribute in working directory, then index */
#define GIT_ATTR_CHECK_FILE_THEN_INDEX 0
+/** Examine attribute in index, then working directory */
#define GIT_ATTR_CHECK_INDEX_THEN_FILE 1
-#define GIT_ATTR_CHECK_INDEX_ONLY 2
+/** Examine attributes only in the index */
+#define GIT_ATTR_CHECK_INDEX_ONLY 2
/**
* Check attribute flags: controlling extended attribute behavior.
*
* Normally, attribute checks include looking in the /etc (or system
- * equivalent) directory for a `gitattributes` file. Passing this
- * flag will cause attribute checks to ignore that file.
* equivalent) directory for a `gitattributes` file. Passing the
* `GIT_ATTR_CHECK_NO_SYSTEM` flag will cause attribute checks to
* ignore that file.
@@ -134,8 +140,12 @@ GIT_EXTERN(git_attr_value_t) git_attr_value(const char *attr);
* Passing the `GIT_ATTR_CHECK_INCLUDE_COMMIT` flag will use attributes
* from a `.gitattributes` file in a specific commit.
*/
+
+/** Ignore system attributes */
#define GIT_ATTR_CHECK_NO_SYSTEM (1 << 2)
+/** Honor `.gitattributes` in the HEAD revision */
#define GIT_ATTR_CHECK_INCLUDE_HEAD (1 << 3)
+/** Honor `.gitattributes` in a specific commit */
#define GIT_ATTR_CHECK_INCLUDE_COMMIT (1 << 4)
/**
@@ -160,7 +170,10 @@ typedef struct {
git_oid attr_commit_id;
} git_attr_options;
+/** Current version for the `git_attr_options` structure */
#define GIT_ATTR_OPTIONS_VERSION 1
+
+/** Static constructor for `git_attr_options` */
#define GIT_ATTR_OPTIONS_INIT {GIT_ATTR_OPTIONS_VERSION}
/**
@@ -177,6 +190,7 @@ typedef struct {
* not have to exist, but if it does not, then it will be
* treated as a plain file (not a directory).
* @param name The name of the attribute to look up.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_attr_get(
const char **value_out,
@@ -199,6 +213,7 @@ GIT_EXTERN(int) git_attr_get(
* not have to exist, but if it does not, then it will be
* treated as a plain file (not a directory).
* @param name The name of the attribute to look up.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_attr_get_ext(
const char **value_out,
@@ -235,6 +250,7 @@ GIT_EXTERN(int) git_attr_get_ext(
* it will be treated as a plain file (i.e. not a directory).
* @param num_attr The number of attributes being looked up
* @param names An array of num_attr strings containing attribute names.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_attr_get_many(
const char **values_out,
@@ -259,6 +275,7 @@ GIT_EXTERN(int) git_attr_get_many(
* it will be treated as a plain file (i.e. not a directory).
* @param num_attr The number of attributes being looked up
* @param names An array of num_attr strings containing attribute names.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_attr_get_many_ext(
const char **values_out,
@@ -344,11 +361,16 @@ GIT_EXTERN(int) git_attr_cache_flush(
* Add a macro definition.
*
* Macros will automatically be loaded from the top level `.gitattributes`
- * file of the repository (plus the build-in "binary" macro). This
+ * file of the repository (plus the built-in "binary" macro). This
* function allows you to add others. For example, to add the default
* macro, you would call:
*
* git_attr_add_macro(repo, "binary", "-diff -crlf");
+ *
+ * @param repo The repository to add the macro in.
+ * @param name The name of the macro.
+ * @param values The value for the macro.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_attr_add_macro(
git_repository *repo,
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/blame.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/blame.h
index d193ce1..f3e6692 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/blame.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/blame.h
@@ -13,9 +13,14 @@
/**
* @file git2/blame.h
- * @brief Git blame routines
+ * @brief Specify a file's most recent changes per-line
* @defgroup git_blame Git blame routines
* @ingroup Git
+ *
+ * Producing a "blame" (or "annotated history") decorates individual
+ * lines in a file with the commit that introduced that particular line
+ * of changes. This can be useful to indicate when and why a particular
+ * change was made.
* @{
*/
GIT_BEGIN_DECL
@@ -73,7 +78,7 @@ typedef enum {
GIT_BLAME_USE_MAILMAP = (1<<5),
/** Ignore whitespace differences */
- GIT_BLAME_IGNORE_WHITESPACE = (1<<6),
+ GIT_BLAME_IGNORE_WHITESPACE = (1<<6)
} git_blame_flag_t;
/**
@@ -87,7 +92,7 @@ typedef struct git_blame_options {
unsigned int version;
/** A combination of `git_blame_flag_t` */
- uint32_t flags;
+ unsigned int flags;
/**
* The lower bound on the number of alphanumeric characters that
@@ -122,7 +127,10 @@ typedef struct git_blame_options {
size_t max_line;
} git_blame_options;
+/** Current version for the `git_blame_options` structure */
#define GIT_BLAME_OPTIONS_VERSION 1
+
+/** Static constructor for `git_blame_options` */
#define GIT_BLAME_OPTIONS_INIT {GIT_BLAME_OPTIONS_VERSION}
/**
@@ -165,6 +173,13 @@ typedef struct git_blame_hunk {
*/
git_signature *final_signature;
+ /**
+ * The committer of `final_commit_id`. If `GIT_BLAME_USE_MAILMAP` has
+ * been specified, it will contain the canonical real name and email
+ * address.
+ */
+ git_signature *final_committer;
+
/**
* The OID of the commit where this hunk was found.
* This will usually be the same as `final_commit_id`, except when
@@ -190,6 +205,18 @@ typedef struct git_blame_hunk {
*/
git_signature *orig_signature;
+ /**
+ * The committer of `orig_commit_id`. If `GIT_BLAME_USE_MAILMAP` has
+ * been specified, it will contain the canonical real name and email
+ * address.
+ */
+ git_signature *orig_committer;
+
+ /*
+ * The summary of the commit.
+ */
+ const char *summary;
+
/**
* The 1 iff the hunk has been tracked to a boundary commit (the root,
* or the commit specified in git_blame_options.oldest_commit)
@@ -197,13 +224,75 @@ typedef struct git_blame_hunk {
char boundary;
} git_blame_hunk;
+/**
+ * Structure that represents a line in a blamed file.
+ */
+typedef struct git_blame_line {
+ const char *ptr;
+ size_t len;
+} git_blame_line;
/** Opaque structure to hold blame results */
typedef struct git_blame git_blame;
+/**
+ * Gets the number of lines that exist in the blame structure.
+ *
+ * @param blame The blame structure to query.
+ * @return The number of line.
+ */
+GIT_EXTERN(size_t) git_blame_linecount(git_blame *blame);
+
/**
* Gets the number of hunks that exist in the blame structure.
+ *
+ * @param blame The blame structure to query.
+ * @return The number of hunks.
*/
+GIT_EXTERN(size_t) git_blame_hunkcount(git_blame *blame);
+
+/**
+ * Gets the blame hunk at the given index.
+ *
+ * @param blame the blame structure to query
+ * @param index index of the hunk to retrieve
+ * @return the hunk at the given index, or NULL on error
+ */
+GIT_EXTERN(const git_blame_hunk *) git_blame_hunk_byindex(
+ git_blame *blame,
+ size_t index);
+
+/**
+ * Gets the hunk that relates to the given line number in the newest
+ * commit.
+ *
+ * @param blame the blame structure to query
+ * @param lineno the (1-based) line number to find a hunk for
+ * @return the hunk that contains the given line, or NULL on error
+ */
+GIT_EXTERN(const git_blame_hunk *) git_blame_hunk_byline(
+ git_blame *blame,
+ size_t lineno);
+
+/**
+ * Gets the information about the line in the blame.
+ *
+ * @param blame the blame structure to query
+ * @param idx the (1-based) line number
+ * @return the blamed line, or NULL on error
+ */
+GIT_EXTERN(const git_blame_line *) git_blame_line_byindex(
+ git_blame *blame,
+ size_t idx);
+
+#ifndef GIT_DEPRECATE_HARD
+/**
+ * Gets the number of hunks that exist in the blame structure.
+ *
+ * @param blame The blame structure to query.
+ * @return The number of hunks.
+ */
+
GIT_EXTERN(uint32_t) git_blame_get_hunk_count(git_blame *blame);
/**
@@ -213,9 +302,9 @@ GIT_EXTERN(uint32_t) git_blame_get_hunk_count(git_blame *blame);
* @param index index of the hunk to retrieve
* @return the hunk at the given index, or NULL on error
*/
-GIT_EXTERN(const git_blame_hunk*) git_blame_get_hunk_byindex(
- git_blame *blame,
- uint32_t index);
+GIT_EXTERN(const git_blame_hunk *) git_blame_get_hunk_byindex(
+ git_blame *blame,
+ uint32_t index);
/**
* Gets the hunk that relates to the given line number in the newest commit.
@@ -224,39 +313,58 @@ GIT_EXTERN(const git_blame_hunk*) git_blame_get_hunk_byindex(
* @param lineno the (1-based) line number to find a hunk for
* @return the hunk that contains the given line, or NULL on error
*/
-GIT_EXTERN(const git_blame_hunk*) git_blame_get_hunk_byline(
- git_blame *blame,
- size_t lineno);
+GIT_EXTERN(const git_blame_hunk *) git_blame_get_hunk_byline(
+ git_blame *blame,
+ size_t lineno);
+#endif
/**
- * Get the blame for a single file.
+ * Get the blame for a single file in the repository.
*
* @param out pointer that will receive the blame object
* @param repo repository whose history is to be walked
* @param path path to file to consider
- * @param options options for the blame operation. If NULL, this is treated as
- * though GIT_BLAME_OPTIONS_INIT were passed.
- * @return 0 on success, or an error code. (use git_error_last for information
- * about the error.)
+ * @param options options for the blame operation or NULL
+ * @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_blame_file(
- git_blame **out,
- git_repository *repo,
- const char *path,
- git_blame_options *options);
+ git_blame **out,
+ git_repository *repo,
+ const char *path,
+ git_blame_options *options);
+/**
+ * Get the blame for a single file in the repository, using the specified
+ * buffer contents as the uncommitted changes of the file (the working
+ * directory contents).
+ *
+ * @param out pointer that will receive the blame object
+ * @param repo repository whose history is to be walked
+ * @param path path to file to consider
+ * @param contents the uncommitted changes
+ * @param contents_len the length of the changes buffer
+ * @param options options for the blame operation or NULL
+ * @return 0 on success, or an error code
+ */
+GIT_EXTERN(int) git_blame_file_from_buffer(
+ git_blame **out,
+ git_repository *repo,
+ const char *path,
+ const char *contents,
+ size_t contents_len,
+ git_blame_options *options);
/**
- * Get blame data for a file that has been modified in memory. The `reference`
- * parameter is a pre-calculated blame for the in-odb history of the file. This
- * means that once a file blame is completed (which can be expensive), updating
- * the buffer blame is very fast.
+ * Get blame data for a file that has been modified in memory. The `blame`
+ * parameter is a pre-calculated blame for the in-odb history of the file.
+ * This means that once a file blame is completed (which can be expensive),
+ * updating the buffer blame is very fast.
*
- * Lines that differ between the buffer and the committed version are marked as
- * having a zero OID for their final_commit_id.
+ * Lines that differ between the buffer and the committed version are
+ * marked as having a zero OID for their final_commit_id.
*
* @param out pointer that will receive the resulting blame data
- * @param reference cached blame from the history of the file (usually the output
+ * @param base cached blame from the history of the file (usually the output
* from git_blame_file)
* @param buffer the (possibly) modified contents of the file
* @param buffer_len number of valid bytes in the buffer
@@ -264,10 +372,10 @@ GIT_EXTERN(int) git_blame_file(
* about the error)
*/
GIT_EXTERN(int) git_blame_buffer(
- git_blame **out,
- git_blame *reference,
- const char *buffer,
- size_t buffer_len);
+ git_blame **out,
+ git_blame *base,
+ const char *buffer,
+ size_t buffer_len);
/**
* Free memory allocated by git_blame_file or git_blame_buffer.
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/blob.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/blob.h
index 8fc7391..0ed1685 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/blob.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/blob.h
@@ -15,9 +15,13 @@
/**
* @file git2/blob.h
- * @brief Git blob load and write routines
+ * @brief A blob represents a file in a git repository.
* @defgroup git_blob Git blob load and write routines
* @ingroup Git
+ *
+ * A blob represents a file in a git repository. This is the raw data
+ * as it is stored in the repository itself. Blobs may be "filtered"
+ * to produce the on-disk content.
* @{
*/
GIT_BEGIN_DECL
@@ -25,12 +29,15 @@ GIT_BEGIN_DECL
/**
* Lookup a blob object from a repository.
*
- * @param blob pointer to the looked up blob
+ * @param[out] blob pointer to the looked up blob
* @param repo the repo to use when locating the blob.
* @param id identity of the blob to locate.
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_blob_lookup(git_blob **blob, git_repository *repo, const git_oid *id);
+GIT_EXTERN(int) git_blob_lookup(
+ git_blob **blob,
+ git_repository *repo,
+ const git_oid *id);
/**
* Lookup a blob object from a repository,
@@ -38,7 +45,7 @@ GIT_EXTERN(int) git_blob_lookup(git_blob **blob, git_repository *repo, const git
*
* @see git_object_lookup_prefix
*
- * @param blob pointer to the looked up blob
+ * @param[out] blob pointer to the looked up blob
* @param repo the repo to use when locating the blob.
* @param id identity of the blob to locate.
* @param len the length of the short identifier
@@ -84,7 +91,7 @@ GIT_EXTERN(git_repository *) git_blob_owner(const git_blob *blob);
* time.
*
* @param blob pointer to the blob
- * @return the pointer, or NULL on error
+ * @return @type `unsigned char *` the pointer, or NULL on error
*/
GIT_EXTERN(const void *) git_blob_rawcontent(const git_blob *blob);
@@ -92,12 +99,14 @@ GIT_EXTERN(const void *) git_blob_rawcontent(const git_blob *blob);
* Get the size in bytes of the contents of a blob
*
* @param blob pointer to the blob
- * @return size on bytes
+ * @return size in bytes
*/
GIT_EXTERN(git_object_size_t) git_blob_rawsize(const git_blob *blob);
/**
* Flags to control the functionality of `git_blob_filter`.
+ *
+ * @flags
*/
typedef enum {
/** When set, filters will not be applied to binary files. */
@@ -119,7 +128,7 @@ typedef enum {
* When set, filters will be loaded from a `.gitattributes` file
* in the specified commit.
*/
- GIT_BLOB_FILTER_ATTRIBUTES_FROM_COMMIT = (1 << 3),
+ GIT_BLOB_FILTER_ATTRIBUTES_FROM_COMMIT = (1 << 3)
} git_blob_filter_flag_t;
/**
@@ -128,16 +137,34 @@ typedef enum {
* Initialize with `GIT_BLOB_FILTER_OPTIONS_INIT`. Alternatively, you can
* use `git_blob_filter_options_init`.
*
+ * @options[version] GIT_BLOB_FILTER_OPTIONS_VERSION
+ * @options[init_macro] GIT_BLOB_FILTER_OPTIONS_INIT
+ * @options[init_function] git_blob_filter_options_init
*/
typedef struct {
+ /** Version number of the options structure. */
int version;
- /** Flags to control the filtering process, see `git_blob_filter_flag_t` above */
+ /**
+ * Flags to control the filtering process, see `git_blob_filter_flag_t` above.
+ *
+ * @type[flags] git_blob_filter_flag_t
+ */
uint32_t flags;
#ifdef GIT_DEPRECATE_HARD
+ /**
+ * Unused and reserved for ABI compatibility.
+ *
+ * @deprecated this value should not be set
+ */
void *reserved;
#else
+ /**
+ * This value is unused and reserved for API compatibility.
+ *
+ * @deprecated this value should not be set
+ */
git_oid *commit_id;
#endif
@@ -148,8 +175,18 @@ typedef struct {
git_oid attr_commit_id;
} git_blob_filter_options;
+/**
+ * The current version number for the `git_blob_filter_options` structure ABI.
+ */
#define GIT_BLOB_FILTER_OPTIONS_VERSION 1
-#define GIT_BLOB_FILTER_OPTIONS_INIT {GIT_BLOB_FILTER_OPTIONS_VERSION, GIT_BLOB_FILTER_CHECK_FOR_BINARY}
+
+/**
+ * The default values for `git_blob_filter_options`.
+ */
+#define GIT_BLOB_FILTER_OPTIONS_INIT { \
+ GIT_BLOB_FILTER_OPTIONS_VERSION, \
+ GIT_BLOB_FILTER_CHECK_FOR_BINARY \
+ }
/**
* Initialize git_blob_filter_options structure
@@ -158,10 +195,12 @@ typedef struct {
* to creating an instance with `GIT_BLOB_FILTER_OPTIONS_INIT`.
*
* @param opts The `git_blob_filter_options` struct to initialize.
- * @param version The struct version; pass `GIT_BLOB_FILTER_OPTIONS_VERSION`.
+ * @param version The struct version; pass GIT_BLOB_FILTER_OPTIONS_VERSION
* @return Zero on success; -1 on failure.
*/
-GIT_EXTERN(int) git_blob_filter_options_init(git_blob_filter_options *opts, unsigned int version);
+GIT_EXTERN(int) git_blob_filter_options_init(
+ git_blob_filter_options *opts,
+ unsigned int version);
/**
* Get a buffer with the filtered content of a blob.
@@ -171,7 +210,7 @@ GIT_EXTERN(int) git_blob_filter_options_init(git_blob_filter_options *opts, unsi
* CRLF filtering or other types of changes depending on the file
* attributes set for the blob and the content detected in it.
*
- * The output is written into a `git_buf` which the caller must free
+ * The output is written into a `git_buf` which the caller must dispose
* when done (via `git_buf_dispose`).
*
* If no filters need to be applied, then the `out` buffer will just
@@ -183,7 +222,7 @@ GIT_EXTERN(int) git_blob_filter_options_init(git_blob_filter_options *opts, unsi
* @param blob Pointer to the blob
* @param as_path Path used for file attribute lookups, etc.
* @param opts Options to use for filtering the blob
- * @return 0 on success or an error code
+ * @return @type[enum] git_error_code 0 on success or an error code
*/
GIT_EXTERN(int) git_blob_filter(
git_buf *out,
@@ -192,10 +231,10 @@ GIT_EXTERN(int) git_blob_filter(
git_blob_filter_options *opts);
/**
- * Read a file from the working folder of a repository
- * and write it to the Object Database as a loose blob
+ * Read a file from the working folder of a repository and write it
+ * to the object database.
*
- * @param id return the id of the written blob
+ * @param[out] id return the id of the written blob
* @param repo repository where the blob will be written.
* this repository cannot be bare
* @param relative_path file from which the blob will be created,
@@ -205,19 +244,23 @@ GIT_EXTERN(int) git_blob_filter(
GIT_EXTERN(int) git_blob_create_from_workdir(git_oid *id, git_repository *repo, const char *relative_path);
/**
- * Read a file from the filesystem and write its content
- * to the Object Database as a loose blob
+ * Read a file from the filesystem (not necessarily inside the
+ * working folder of the repository) and write it to the object
+ * database.
*
- * @param id return the id of the written blob
+ * @param[out] id return the id of the written blob
* @param repo repository where the blob will be written.
* this repository can be bare or not
* @param path file from which the blob will be created
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_blob_create_from_disk(git_oid *id, git_repository *repo, const char *path);
+GIT_EXTERN(int) git_blob_create_from_disk(
+ git_oid *id,
+ git_repository *repo,
+ const char *path);
/**
- * Create a stream to write a new blob into the object db
+ * Create a stream to write a new blob into the object database.
*
* This function may need to buffer the data on disk and will in
* general not be the right choice if you know the size of the data
@@ -234,7 +277,7 @@ GIT_EXTERN(int) git_blob_create_from_disk(git_oid *id, git_repository *repo, con
* what git filters should be applied to the object before it is written
* to the object database.
*
- * @param out the stream into which to write
+ * @param[out] out the stream into which to write
* @param repo Repository where the blob will be written.
* This repository can be bare or not.
* @param hintpath If not NULL, will be used to select data filters
@@ -247,11 +290,11 @@ GIT_EXTERN(int) git_blob_create_from_stream(
const char *hintpath);
/**
- * Close the stream and write the blob to the object db
+ * Close the stream and finalize writing the blob to the object database.
*
* The stream will be closed and freed.
*
- * @param out the id of the new blob
+ * @param[out] out the id of the new blob
* @param stream the stream to close
* @return 0 or an error code
*/
@@ -260,9 +303,9 @@ GIT_EXTERN(int) git_blob_create_from_stream_commit(
git_writestream *stream);
/**
- * Write an in-memory buffer to the ODB as a blob
+ * Write an in-memory buffer to the object database as a blob.
*
- * @param id return the id of the written blob
+ * @param[out] id return the id of the written blob
* @param repo repository where the blob will be written
* @param buffer data to be written into the blob
* @param len length of the data
@@ -272,24 +315,37 @@ GIT_EXTERN(int) git_blob_create_from_buffer(
git_oid *id, git_repository *repo, const void *buffer, size_t len);
/**
- * Determine if the blob content is most certainly binary or not.
+ * Determine if the blob content is most likely binary or not.
*
* The heuristic used to guess if a file is binary is taken from core git:
* Searching for NUL bytes and looking for a reasonable ratio of printable
* to non-printable characters among the first 8000 bytes.
*
* @param blob The blob which content should be analyzed
- * @return 1 if the content of the blob is detected
+ * @return @type bool 1 if the content of the blob is detected
* as binary; 0 otherwise.
*/
GIT_EXTERN(int) git_blob_is_binary(const git_blob *blob);
+/**
+ * Determine if the given content is most certainly binary or not;
+ * this is the same mechanism used by `git_blob_is_binary` but only
+ * looking at raw data.
+ *
+ * @param data The blob data which content should be analyzed
+ * @param len The length of the data
+ * @return 1 if the content of the blob is detected
+ * as binary; 0 otherwise.
+ */
+GIT_EXTERN(int) git_blob_data_is_binary(const char *data, size_t len);
+
/**
* Create an in-memory copy of a blob. The copy must be explicitly
* free'd or it will leak.
*
- * @param out Pointer to store the copy of the object
+ * @param[out] out Pointer to store the copy of the object
* @param source Original object to copy
+ * @return 0.
*/
GIT_EXTERN(int) git_blob_dup(git_blob **out, git_blob *source);
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/branch.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/branch.h
index 24ea7f7..56d737d 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/branch.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/branch.h
@@ -13,9 +13,15 @@
/**
* @file git2/branch.h
- * @brief Git branch parsing routines
+ * @brief Branch creation and handling
* @defgroup git_branch Git branch management
* @ingroup Git
+ *
+ * A branch is a specific type of reference, at any particular time,
+ * a git working directory typically is said to have a branch "checked out",
+ * meaning that commits that are created will be made "on" a branch.
+ * This occurs by updating the branch reference to point to the new
+ * commit. The checked out branch is indicated by the `HEAD` meta-ref.
* @{
*/
GIT_BEGIN_DECL
@@ -33,16 +39,13 @@ GIT_BEGIN_DECL
* See `git_tag_create()` for rules about valid names.
*
* @param out Pointer where to store the underlying reference.
- *
+ * @param repo the repository to create the branch in.
* @param branch_name Name for the branch; this name is
- * validated for consistency. It should also not conflict with
- * an already existing branch name.
- *
+ * validated for consistency. It should also not conflict with
+ * an already existing branch name.
* @param target Commit to which this branch should point. This object
- * must belong to the given `repo`.
- *
+ * must belong to the given `repo`.
* @param force Overwrite existing branch.
- *
* @return 0, GIT_EINVALIDSPEC or an error code.
* A proper reference is written in the refs/heads namespace
* pointing to the provided target commit.
@@ -61,15 +64,21 @@ GIT_EXTERN(int) git_branch_create(
* commit, which lets you specify which extended sha syntax string was
* specified by a user, allowing for more exact reflog messages.
*
- * See the documentation for `git_branch_create()`.
- *
- * @see git_branch_create
+ * @param ref_out Pointer where to store the underlying reference.
+ * @param repo the repository to create the branch in.
+ * @param branch_name Name for the branch; this name is
+ * validated for consistency. It should also not conflict with
+ * an already existing branch name.
+ * @param target Annotated commit to which this branch should point. This
+ * object must belong to the given `repo`.
+ * @param force Overwrite existing branch.
+ * @return 0, GIT_EINVALIDSPEC or an error code.
*/
GIT_EXTERN(int) git_branch_create_from_annotated(
git_reference **ref_out,
- git_repository *repository,
+ git_repository *repo,
const char *branch_name,
- const git_annotated_commit *commit,
+ const git_annotated_commit *target,
int force);
/**
@@ -127,8 +136,8 @@ GIT_EXTERN(void) git_branch_iterator_free(git_branch_iterator *iter);
* See `git_tag_create()` for rules about valid names.
*
* Note that if the move succeeds, the old reference object will not
- + be valid anymore, and should be freed immediately by the user using
- + `git_reference_free()`.
+ * be valid anymore, and should be freed immediately by the user using
+ * `git_reference_free()`.
*
* @param out New reference object for the updated name.
*
@@ -220,7 +229,7 @@ GIT_EXTERN(int) git_branch_upstream(
* @param branch the branch to configure
* @param branch_name remote-tracking or local branch to set as upstream.
*
- * @return 0 on success; GIT_ENOTFOUND if there's no branch named `branch_name`
+ * @return @type git_error_t 0 on success; GIT_ENOTFOUND if there's no branch named `branch_name`
* or an error code
*/
GIT_EXTERN(int) git_branch_set_upstream(
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/buffer.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/buffer.h
index 926f133..3fe4f85 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/buffer.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/buffer.h
@@ -11,9 +11,12 @@
/**
* @file git2/buffer.h
- * @brief Buffer export structure
- *
+ * @brief A data structure to return data to callers
* @ingroup Git
+ *
+ * The `git_buf` buffer is used to return arbitrary data - typically
+ * strings - to callers. Callers are responsible for freeing the memory
+ * in a buffer with the `git_buf_dispose` function.
* @{
*/
GIT_BEGIN_DECL
@@ -23,112 +26,51 @@ GIT_BEGIN_DECL
*
* Sometimes libgit2 wants to return an allocated data buffer to the
* caller and have the caller take responsibility for freeing that memory.
- * This can be awkward if the caller does not have easy access to the same
- * allocation functions that libgit2 is using. In those cases, libgit2
- * will fill in a `git_buf` and the caller can use `git_buf_dispose()` to
- * release it when they are done.
- *
- * A `git_buf` may also be used for the caller to pass in a reference to
- * a block of memory they hold. In this case, libgit2 will not resize or
- * free the memory, but will read from it as needed.
+ * To make ownership clear in these cases, libgit2 uses `git_buf` to
+ * return this data. Callers should use `git_buf_dispose()` to release
+ * the memory when they are done.
*
- * Some APIs may occasionally do something slightly unusual with a buffer,
- * such as setting `ptr` to a value that was passed in by the user. In
- * those cases, the behavior will be clearly documented by the API.
+ * A `git_buf` contains a pointer to a NUL-terminated C string, and
+ * the length of the string (not including the NUL terminator).
*/
typedef struct {
/**
- * The buffer contents.
- *
- * `ptr` points to the start of the allocated memory. If it is NULL,
- * then the `git_buf` is considered empty and libgit2 will feel free
- * to overwrite it with new data.
+ * The buffer contents. `ptr` points to the start of the buffer
+ * being returned. The buffer's length (in bytes) is specified
+ * by the `size` member of the structure, and contains a NUL
+ * terminator at position `(size + 1)`.
*/
- char *ptr;
+ char *ptr;
/**
- * `asize` holds the known total amount of allocated memory if the `ptr`
- * was allocated by libgit2. It may be larger than `size`. If `ptr`
- * was not allocated by libgit2 and should not be resized and/or freed,
- * then `asize` will be set to zero.
+ * This field is reserved and unused.
*/
- size_t asize;
+ size_t reserved;
/**
- * `size` holds the size (in bytes) of the data that is actually used.
+ * The length (in bytes) of the buffer pointed to by `ptr`,
+ * not including a NUL terminator.
*/
size_t size;
} git_buf;
/**
- * Static initializer for git_buf from static buffer
+ * Use to initialize a `git_buf` before passing it to a function that
+ * will populate it.
*/
-#define GIT_BUF_INIT_CONST(STR,LEN) { (char *)(STR), 0, (size_t)(LEN) }
+#define GIT_BUF_INIT { NULL, 0, 0 }
/**
* Free the memory referred to by the git_buf.
*
* Note that this does not free the `git_buf` itself, just the memory
- * pointed to by `buffer->ptr`. This will not free the memory if it looks
- * like it was not allocated internally, but it will clear the buffer back
- * to the empty state.
+ * pointed to by `buffer->ptr`.
*
* @param buffer The buffer to deallocate
*/
GIT_EXTERN(void) git_buf_dispose(git_buf *buffer);
-/**
- * Resize the buffer allocation to make more space.
- *
- * This will attempt to grow the buffer to accommodate the target size.
- *
- * If the buffer refers to memory that was not allocated by libgit2 (i.e.
- * the `asize` field is zero), then `ptr` will be replaced with a newly
- * allocated block of data. Be careful so that memory allocated by the
- * caller is not lost. As a special variant, if you pass `target_size` as
- * 0 and the memory is not allocated by libgit2, this will allocate a new
- * buffer of size `size` and copy the external data into it.
- *
- * Currently, this will never shrink a buffer, only expand it.
- *
- * If the allocation fails, this will return an error and the buffer will be
- * marked as invalid for future operations, invaliding the contents.
- *
- * @param buffer The buffer to be resized; may or may not be allocated yet
- * @param target_size The desired available size
- * @return 0 on success, -1 on allocation failure
- */
-GIT_EXTERN(int) git_buf_grow(git_buf *buffer, size_t target_size);
-
-/**
- * Set buffer to a copy of some raw data.
- *
- * @param buffer The buffer to set
- * @param data The data to copy into the buffer
- * @param datalen The length of the data to copy into the buffer
- * @return 0 on success, -1 on allocation failure
- */
-GIT_EXTERN(int) git_buf_set(
- git_buf *buffer, const void *data, size_t datalen);
-
-/**
-* Check quickly if buffer looks like it contains binary data
-*
-* @param buf Buffer to check
-* @return 1 if buffer looks like non-text data
-*/
-GIT_EXTERN(int) git_buf_is_binary(const git_buf *buf);
-
-/**
-* Check quickly if buffer contains a NUL byte
-*
-* @param buf Buffer to check
-* @return 1 if buffer contains a NUL byte
-*/
-GIT_EXTERN(int) git_buf_contains_nul(const git_buf *buf);
-
-GIT_END_DECL
-
/** @} */
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/cert.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/cert.h
index 0ed38ff..7b91b63 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/cert.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/cert.h
@@ -12,7 +12,7 @@
/**
* @file git2/cert.h
- * @brief Git certificate objects
+ * @brief TLS and SSH certificate handling
* @defgroup git_cert Certificate objects
* @ingroup Git
* @{
@@ -44,7 +44,7 @@ typedef enum git_cert_t {
* information about the certificate. This is used when using
* curl.
*/
- GIT_CERT_STRARRAY,
+ GIT_CERT_STRARRAY
} git_cert_t;
/**
@@ -82,7 +82,7 @@ typedef enum {
/** SHA-256 is available */
GIT_CERT_SSH_SHA256 = (1 << 2),
/** Raw hostkey is available */
- GIT_CERT_SSH_RAW = (1 << 3),
+ GIT_CERT_SSH_RAW = (1 << 3)
} git_cert_ssh_t;
typedef enum {
@@ -169,4 +169,5 @@ typedef struct {
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/checkout.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/checkout.h
index c7aeee4..bdea928 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/checkout.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/checkout.h
@@ -13,9 +13,13 @@
/**
* @file git2/checkout.h
- * @brief Git checkout routines
+ * @brief Update the contents of the working directory
* @defgroup git_checkout Git checkout routines
* @ingroup Git
+ *
+ * Update the contents of the working directory, or a subset of the
+ * files in the working directory, to point to the data in the index
+ * or a specific commit.
* @{
*/
GIT_BEGIN_DECL
@@ -31,17 +35,11 @@ GIT_BEGIN_DECL
* check out, the "baseline" tree of what was checked out previously, the
* working directory for actual files, and the index for staged changes.
*
- * You give checkout one of three strategies for update:
- *
- * - `GIT_CHECKOUT_NONE` is a dry-run strategy that checks for conflicts,
- * etc., but doesn't make any actual changes.
+ * You give checkout one of two strategies for update:
*
- * - `GIT_CHECKOUT_FORCE` is at the opposite extreme, taking any action to
- * make the working directory match the target (including potentially
- * discarding modified files).
- *
- * - `GIT_CHECKOUT_SAFE` is between these two options, it will only make
- * modifications that will not lose changes.
+ * - `GIT_CHECKOUT_SAFE` is the default, and similar to git's default,
+ * which will make modifications that will not lose changes in the
+ * working directory.
*
* | target == baseline | target != baseline |
* ---------------------|-----------------------|----------------------|
@@ -55,6 +53,10 @@ GIT_BEGIN_DECL
* baseline present | | |
* ---------------------|-----------------------|----------------------|
*
+ * - `GIT_CHECKOUT_FORCE` will take any action to make the working
+ * directory match the target (including potentially discarding
+ * modified files).
+ *
* To emulate `git checkout`, use `GIT_CHECKOUT_SAFE` with a checkout
* notification callback (see below) that displays information about dirty
* files. The default behavior will cancel checkout on conflicts.
@@ -69,6 +71,9 @@ GIT_BEGIN_DECL
*
* There are some additional flags to modify the behavior of checkout:
*
+ * - `GIT_CHECKOUT_DRY_RUN` is a dry-run strategy that checks for conflicts,
+ * etc., but doesn't make any actual changes.
+ *
* - GIT_CHECKOUT_ALLOW_CONFLICTS makes SAFE mode apply safe file updates
* even if there are conflicts (instead of cancelling the checkout).
*
@@ -102,29 +107,24 @@ GIT_BEGIN_DECL
* files or folders that fold to the same name on case insensitive
* filesystems. This can cause files to retain their existing names
* and write through existing symbolic links.
+ *
+ * @flags
*/
typedef enum {
- GIT_CHECKOUT_NONE = 0, /**< default is a dry run, no actual updates */
-
/**
* Allow safe updates that cannot overwrite uncommitted data.
- * If the uncommitted changes don't conflict with the checked out files,
- * the checkout will still proceed, leaving the changes intact.
- *
- * Mutually exclusive with GIT_CHECKOUT_FORCE.
- * GIT_CHECKOUT_FORCE takes precedence over GIT_CHECKOUT_SAFE.
+ * If the uncommitted changes don't conflict with the checked
+ * out files, the checkout will still proceed, leaving the
+ * changes intact.
*/
- GIT_CHECKOUT_SAFE = (1u << 0),
+ GIT_CHECKOUT_SAFE = 0,
/**
- * Allow all updates to force working directory to look like index.
- *
- * Mutually exclusive with GIT_CHECKOUT_SAFE.
- * GIT_CHECKOUT_FORCE takes precedence over GIT_CHECKOUT_SAFE.
+ * Allow all updates to force working directory to look like
+ * the index, potentially losing data in the process.
*/
GIT_CHECKOUT_FORCE = (1u << 1),
-
/** Allow checkout to recreate missing files */
GIT_CHECKOUT_RECREATE_MISSING = (1u << 2),
@@ -178,20 +178,31 @@ typedef enum {
GIT_CHECKOUT_DONT_WRITE_INDEX = (1u << 23),
/**
- * Show what would be done by a checkout. Stop after sending
- * notifications; don't update the working directory or index.
+ * Perform a "dry run", reporting what _would_ be done but
+ * without actually making changes in the working directory
+ * or the index.
*/
GIT_CHECKOUT_DRY_RUN = (1u << 24),
-
+
+ /** Include common ancestor data in zdiff3 format for conflicts */
+ GIT_CHECKOUT_CONFLICT_STYLE_ZDIFF3 = (1u << 25),
+
/**
+ * Do not do a checkout and do not fire callbacks; this is primarily
+ * useful only for internal functions that will perform the
+ * checkout themselves but need to pass checkout options into
+ * another function, for example, `git_clone`.
+ */
+ GIT_CHECKOUT_NONE = (1u << 30),
+
+ /*
* THE FOLLOWING OPTIONS ARE NOT YET IMPLEMENTED
*/
/** Recursively checkout submodules with same options (NOT IMPLEMENTED) */
GIT_CHECKOUT_UPDATE_SUBMODULES = (1u << 16),
/** Recursively checkout submodules if HEAD moved in super repo (NOT IMPLEMENTED) */
- GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED = (1u << 17),
-
+ GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED = (1u << 17)
} git_checkout_strategy_t;
/**
@@ -207,6 +218,8 @@ typedef enum {
* Notification callbacks are made prior to modifying any files on disk,
* so canceling on any notification will still happen prior to any files
* being modified.
+ *
+ * @flags
*/
typedef enum {
GIT_CHECKOUT_NOTIFY_NONE = 0,
@@ -248,7 +261,17 @@ typedef struct {
size_t chmod_calls;
} git_checkout_perfdata;
-/** Checkout notification callback function */
+/**
+ * Checkout notification callback function.
+ *
+ * @param why the notification reason
+ * @param path the path to the file being checked out
+ * @param baseline the baseline's diff file information
+ * @param target the checkout target diff file information
+ * @param workdir the working directory diff file information
+ * @param payload the user-supplied callback payload
+ * @return 0 on success, or an error code
+ */
typedef int GIT_CALLBACK(git_checkout_notify_cb)(
git_checkout_notify_t why,
const char *path,
@@ -257,14 +280,26 @@ typedef int GIT_CALLBACK(git_checkout_notify_cb)(
const git_diff_file *workdir,
void *payload);
-/** Checkout progress notification function */
+/**
+ * Checkout progress notification function.
+ *
+ * @param path the path to the file being checked out
+ * @param completed_steps number of checkout steps completed
+ * @param total_steps number of total steps in the checkout process
+ * @param payload the user-supplied callback payload
+ */
typedef void GIT_CALLBACK(git_checkout_progress_cb)(
const char *path,
size_t completed_steps,
size_t total_steps,
void *payload);
-/** Checkout perfdata notification function */
+/**
+ * Checkout performance data reporting function.
+ *
+ * @param perfdata the performance data for the checkout
+ * @param payload the user-supplied callback payload
+ */
typedef void GIT_CALLBACK(git_checkout_perfdata_cb)(
const git_checkout_perfdata *perfdata,
void *payload);
@@ -275,10 +310,18 @@ typedef void GIT_CALLBACK(git_checkout_perfdata_cb)(
* Initialize with `GIT_CHECKOUT_OPTIONS_INIT`. Alternatively, you can
* use `git_checkout_options_init`.
*
+ * @options[version] GIT_CHECKOUT_OPTIONS_VERSION
+ * @options[init_macro] GIT_CHECKOUT_OPTIONS_INIT
+ * @options[init_function] git_checkout_options_init
*/
typedef struct git_checkout_options {
unsigned int version; /**< The version */
+ /**
+ * Checkout strategy. Default is a safe checkout.
+ *
+ * @type[flags] git_checkout_strategy_t
+ */
unsigned int checkout_strategy; /**< default will be a safe checkout */
int disable_filters; /**< don't apply filters like CRLF conversion */
@@ -286,7 +329,13 @@ typedef struct git_checkout_options {
unsigned int file_mode; /**< default is 0644 or 0755 as dictated by blob */
int file_open_flags; /**< default is O_CREAT | O_TRUNC | O_WRONLY */
- unsigned int notify_flags; /**< see `git_checkout_notify_t` above */
+ /**
+ * Checkout notification flags specify what operations the notify
+ * callback is invoked for.
+ *
+ * @type[flags] git_checkout_notify_t
+ */
+ unsigned int notify_flags;
/**
* Optional callback to get notifications on specific file states.
@@ -341,8 +390,12 @@ typedef struct git_checkout_options {
void *perfdata_payload;
} git_checkout_options;
+
+/** Current version for the `git_checkout_options` structure */
#define GIT_CHECKOUT_OPTIONS_VERSION 1
-#define GIT_CHECKOUT_OPTIONS_INIT {GIT_CHECKOUT_OPTIONS_VERSION, GIT_CHECKOUT_SAFE}
+
+/** Static constructor for `git_checkout_options` */
+#define GIT_CHECKOUT_OPTIONS_INIT { GIT_CHECKOUT_OPTIONS_VERSION }
/**
* Initialize git_checkout_options structure
@@ -411,4 +464,5 @@ GIT_EXTERN(int) git_checkout_tree(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/cherrypick.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/cherrypick.h
index 0e6a252..e6cf99e 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/cherrypick.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/cherrypick.h
@@ -13,9 +13,12 @@
/**
* @file git2/cherrypick.h
- * @brief Git cherry-pick routines
+ * @brief Cherry-pick the contents of an individual commit
* @defgroup git_cherrypick Git cherry-pick routines
* @ingroup Git
+ *
+ * "Cherry-pick" will attempts to re-apply the changes in an
+ * individual commit to the current index and working directory.
* @{
*/
GIT_BEGIN_DECL
@@ -33,8 +36,13 @@ typedef struct {
git_checkout_options checkout_opts; /**< Options for the checkout */
} git_cherrypick_options;
+/** Current version for the `git_cherrypick_options` structure */
#define GIT_CHERRYPICK_OPTIONS_VERSION 1
-#define GIT_CHERRYPICK_OPTIONS_INIT {GIT_CHERRYPICK_OPTIONS_VERSION, 0, GIT_MERGE_OPTIONS_INIT, GIT_CHECKOUT_OPTIONS_INIT}
+
+/** Static constructor for `git_cherrypick_options` */
+#define GIT_CHERRYPICK_OPTIONS_INIT { \
+ GIT_CHERRYPICK_OPTIONS_VERSION, 0, \
+ GIT_MERGE_OPTIONS_INIT, GIT_CHECKOUT_OPTIONS_INIT }
/**
* Initialize git_cherrypick_options structure
@@ -89,4 +97,3 @@ GIT_EXTERN(int) git_cherrypick(
GIT_END_DECL
#endif
-
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/clone.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/clone.h
index 3c3ea26..b7a47ab 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/clone.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/clone.h
@@ -17,9 +17,13 @@
/**
* @file git2/clone.h
- * @brief Git cloning routines
+ * @brief Clone a remote repository to the local disk
* @defgroup git_clone Git cloning routines
* @ingroup Git
+ *
+ * Clone will take a remote repository - located on a remote server
+ * accessible by HTTPS or SSH, or a repository located elsewhere on
+ * the local disk - and place a copy in the given local path.
* @{
*/
GIT_BEGIN_DECL
@@ -49,7 +53,7 @@ typedef enum {
* Bypass the git-aware transport, but do not try to use
* hardlinks.
*/
- GIT_CLONE_LOCAL_NO_LINKS,
+ GIT_CLONE_LOCAL_NO_LINKS
} git_clone_local_t;
/**
@@ -59,7 +63,7 @@ typedef enum {
* Callers of git_clone may provide a function matching this signature to override
* the remote creation and customization process during a clone operation.
*
- * @param out the resulting remote
+ * @param[out] out the resulting remote
* @param repo the repository in which to create the remote
* @param name the remote's name
* @param url the remote's url
@@ -74,14 +78,14 @@ typedef int GIT_CALLBACK(git_remote_create_cb)(
void *payload);
/**
- * The signature of a function matchin git_repository_init, with an
- * aditional void * as callback payload.
+ * The signature of a function matching git_repository_init, with an
+ * additional void * as callback payload.
*
* Callers of git_clone my provide a function matching this signature
* to override the repository creation and customization process
* during a clone operation.
*
- * @param out the resulting repository
+ * @param[out] out the resulting repository
* @param path path in which to create the repository
* @param bare whether the repository is bare. This is the value from the clone options
* @param payload payload specified by the options
@@ -99,14 +103,17 @@ typedef int GIT_CALLBACK(git_repository_create_cb)(
* Initialize with `GIT_CLONE_OPTIONS_INIT`. Alternatively, you can
* use `git_clone_options_init`.
*
+ * @options[version] GIT_CLONE_OPTIONS_VERSION
+ * @options[init_macro] GIT_CLONE_OPTIONS_INIT
+ * @options[init_function] git_clone_options_init
*/
typedef struct git_clone_options {
unsigned int version;
/**
* These options are passed to the checkout step. To disable
- * checkout, set the `checkout_strategy` to
- * `GIT_CHECKOUT_NONE`.
+ * checkout, set the `checkout_strategy` to `GIT_CHECKOUT_NONE`
+ * or `GIT_CHECKOUT_DRY_RUN`.
*/
git_checkout_options checkout_opts;
@@ -163,10 +170,14 @@ typedef struct git_clone_options {
void *remote_cb_payload;
} git_clone_options;
+/** Current version for the `git_clone_options` structure */
#define GIT_CLONE_OPTIONS_VERSION 1
-#define GIT_CLONE_OPTIONS_INIT { GIT_CLONE_OPTIONS_VERSION, \
- { GIT_CHECKOUT_OPTIONS_VERSION, GIT_CHECKOUT_SAFE }, \
- GIT_FETCH_OPTIONS_INIT }
+
+/** Static constructor for `git_clone_options` */
+#define GIT_CLONE_OPTIONS_INIT \
+ { GIT_CLONE_OPTIONS_VERSION, \
+ GIT_CHECKOUT_OPTIONS_INIT, \
+ GIT_FETCH_OPTIONS_INIT }
/**
* Initialize git_clone_options structure
@@ -189,7 +200,11 @@ GIT_EXTERN(int) git_clone_options_init(
* git's defaults. You can use the options in the callback to
* customize how these are created.
*
- * @param out pointer that will receive the resulting repository object
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
+ * @param[out] out pointer that will receive the resulting repository object
* @param url the remote repository to clone
* @param local_path local directory to clone to
* @param options configuration options for the clone. If NULL, the
@@ -206,4 +221,5 @@ GIT_EXTERN(int) git_clone(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/commit.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/commit.h
index 4d74b89..b998e18 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/commit.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/commit.h
@@ -14,9 +14,13 @@
/**
* @file git2/commit.h
- * @brief Git commit parsing, formatting routines
+ * @brief A representation of a set of changes in the repository
* @defgroup git_commit Git commit parsing, formatting routines
* @ingroup Git
+ *
+ * A commit represents a set of changes made to the files within a
+ * repository, and metadata about who made the changes, and when the
+ * changes were made.
* @{
*/
GIT_BEGIN_DECL
@@ -380,7 +384,38 @@ GIT_EXTERN(int) git_commit_create(
*
* All other parameters remain the same as `git_commit_create()`.
*
- * @see git_commit_create
+ * @param id Pointer in which to store the OID of the newly created commit
+ *
+ * @param repo Repository where to store the commit
+ *
+ * @param update_ref If not NULL, name of the reference that
+ * will be updated to point to this commit. If the reference
+ * is not direct, it will be resolved to a direct reference.
+ * Use "HEAD" to update the HEAD of the current branch and
+ * make it point to this commit. If the reference doesn't
+ * exist yet, it will be created. If it does exist, the first
+ * parent must be the tip of this branch.
+ *
+ * @param author Signature with author and author time of commit
+ *
+ * @param committer Signature with committer and * commit time of commit
+ *
+ * @param message_encoding The encoding for the message in the
+ * commit, represented with a standard encoding name.
+ * E.g. "UTF-8". If NULL, no encoding header is written and
+ * UTF-8 is assumed.
+ *
+ * @param message Full message for this commit
+ *
+ * @param tree An instance of a `git_tree` object that will
+ * be used as the tree for the commit. This tree object must
+ * also be owned by the given `repo`.
+ *
+ * @param parent_count Number of parents for this commit
+ *
+ * @return 0 or an error code
+ * The created commit will be written to the Object Database and
+ * the given reference will be updated to point to it
*/
GIT_EXTERN(int) git_commit_create_v(
git_oid *id,
@@ -394,6 +429,52 @@ GIT_EXTERN(int) git_commit_create_v(
size_t parent_count,
...);
+typedef struct {
+ unsigned int version;
+
+ /**
+ * Flags for creating the commit.
+ *
+ * If `allow_empty_commit` is specified, a commit with no changes
+ * from the prior commit (and "empty" commit) is allowed. Otherwise,
+ * commit creation will be stopped.
+ */
+ unsigned int allow_empty_commit : 1;
+
+ /** The commit author, or NULL for the default. */
+ const git_signature *author;
+
+ /** The committer, or NULL for the default. */
+ const git_signature *committer;
+
+ /** Encoding for the commit message; leave NULL for default. */
+ const char *message_encoding;
+} git_commit_create_options;
+
+/** Current version for the `git_commit_create_options` structure */
+#define GIT_COMMIT_CREATE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_commit_create_options` */
+#define GIT_COMMIT_CREATE_OPTIONS_INIT { GIT_COMMIT_CREATE_OPTIONS_VERSION }
+
+/**
+ * Commits the staged changes in the repository; this is a near analog to
+ * `git commit -m message`.
+ *
+ * By default, empty commits are not allowed.
+ *
+ * @param id pointer to store the new commit's object id
+ * @param repo repository to commit changes in
+ * @param message the commit message
+ * @param opts options for creating the commit
+ * @return 0 on success, GIT_EUNCHANGED if there were no changes to commit, or an error code
+ */
+GIT_EXTERN(int) git_commit_create_from_stage(
+ git_oid *id,
+ git_repository *repo,
+ const char *message,
+ const git_commit_create_options *opts);
+
/**
* Amend an existing commit by replacing only non-NULL values.
*
@@ -413,7 +494,36 @@ GIT_EXTERN(int) git_commit_create_v(
*
* All parameters have the same meanings as in `git_commit_create()`.
*
- * @see git_commit_create
+ * @param id Pointer in which to store the OID of the newly created commit
+ *
+ * @param commit_to_amend The commit to amend
+ *
+ * @param update_ref If not NULL, name of the reference that
+ * will be updated to point to this commit. If the reference
+ * is not direct, it will be resolved to a direct reference.
+ * Use "HEAD" to update the HEAD of the current branch and
+ * make it point to this commit. If the reference doesn't
+ * exist yet, it will be created. If it does exist, the first
+ * parent must be the tip of this branch.
+ *
+ * @param author Signature with author and author time of commit
+ *
+ * @param committer Signature with committer and * commit time of commit
+ *
+ * @param message_encoding The encoding for the message in the
+ * commit, represented with a standard encoding name.
+ * E.g. "UTF-8". If NULL, no encoding header is written and
+ * UTF-8 is assumed.
+ *
+ * @param message Full message for this commit
+ *
+ * @param tree An instance of a `git_tree` object that will
+ * be used as the tree for the commit. This tree object must
+ * also be owned by the given `repo`.
+ *
+ * @return 0 or an error code
+ * The created commit will be written to the Object Database and
+ * the given reference will be updated to point to it
*/
GIT_EXTERN(int) git_commit_amend(
git_oid *id,
@@ -479,6 +589,7 @@ GIT_EXTERN(int) git_commit_create_buffer(
* to the commit and write it into the given repository.
*
* @param out the resulting commit id
+ * @param repo the repository to create the commit in.
* @param commit_content the content of the unsigned commit object
* @param signature the signature to add to the commit. Leave `NULL`
* to create a commit without adding a signature field.
@@ -499,6 +610,7 @@ GIT_EXTERN(int) git_commit_create_with_signature(
*
* @param out Pointer to store the copy of the commit
* @param source Original commit to copy
+ * @return 0
*/
GIT_EXTERN(int) git_commit_dup(git_commit **out, git_commit *source);
@@ -539,6 +651,25 @@ typedef int (*git_commit_create_cb)(
const git_commit *parents[],
void *payload);
+/** An array of commits returned from the library */
+typedef struct git_commitarray {
+ git_commit *const *commits;
+ size_t count;
+} git_commitarray;
+
+/**
+ * Free the commits contained in a commit array. This method should
+ * be called on `git_commitarray` objects that were provided by the
+ * library. Not doing so will result in a memory leak.
+ *
+ * This does not free the `git_commitarray` itself, since the library
+ * will never allocate that object directly itself.
+ *
+ * @param array The git_commitarray that contains commits to free
+ */
+GIT_EXTERN(void) git_commitarray_dispose(git_commitarray *array);
+
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/common.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/common.h
index 2ee8290..40a3903 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/common.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/common.h
@@ -11,7 +11,9 @@
#include
#ifdef __cplusplus
+ /** Start declarations in C mode for C++ compatibility */
# define GIT_BEGIN_DECL extern "C" {
+ /** End declarations in C mode */
# define GIT_END_DECL }
#else
/** Start declarations in C mode */
@@ -71,19 +73,19 @@ typedef size_t size_t;
# define GIT_FORMAT_PRINTF(a,b) /* empty */
#endif
-#if (defined(_WIN32)) && !defined(__CYGWIN__)
-#define GIT_WIN32 1
-#endif
-
#ifdef __amigaos4__
#include
#endif
/**
* @file git2/common.h
- * @brief Git common platform definitions
+ * @brief Base platform functionality
* @defgroup git_common Git common platform definitions
* @ingroup Git
+ *
+ * Common platform functionality including introspecting libgit2
+ * itself - information like how it was built, and the current
+ * running version.
* @{
*/
@@ -94,10 +96,10 @@ GIT_BEGIN_DECL
* environment variable). A semi-colon ";" is used on Windows and
* AmigaOS, and a colon ":" for all other systems.
*/
-#if defined(GIT_WIN32) || defined(AMIGA)
-#define GIT_PATH_LIST_SEPARATOR ';'
+#if (defined(_WIN32) && !defined(__CYGWIN__)) || defined(AMIGA)
+# define GIT_PATH_LIST_SEPARATOR ';'
#else
-#define GIT_PATH_LIST_SEPARATOR ':'
+# define GIT_PATH_LIST_SEPARATOR ':'
#endif
/**
@@ -105,11 +107,6 @@ GIT_BEGIN_DECL
*/
#define GIT_PATH_MAX 4096
-/**
- * The string representation of the null object ID.
- */
-#define GIT_OID_HEX_ZERO "0000000000000000000000000000000000000000"
-
/**
* Return the version of the libgit2 library
* being currently used.
@@ -122,53 +119,91 @@ GIT_BEGIN_DECL
GIT_EXTERN(int) git_libgit2_version(int *major, int *minor, int *rev);
/**
- * Combinations of these values describe the features with which libgit2
- * was compiled
+ * Return the prerelease state of the libgit2 library currently being
+ * used. For nightly builds during active development, this will be
+ * "alpha". Releases may have a "beta" or release candidate ("rc1",
+ * "rc2", etc) prerelease. For a final release, this function returns
+ * NULL.
+ *
+ * @return the name of the prerelease state or NULL
+ */
+GIT_EXTERN(const char *) git_libgit2_prerelease(void);
+
+/**
+ * Configurable features of libgit2; either optional settings (like
+ * threading), or features that can be enabled by one of a number of
+ * different backend "providers" (like HTTPS, which can be provided by
+ * OpenSSL, mbedTLS, or system libraries).
*/
typedef enum {
- /**
- * If set, libgit2 was built thread-aware and can be safely used from multiple
- * threads.
- */
- GIT_FEATURE_THREADS = (1 << 0),
- /**
- * If set, libgit2 was built with and linked against a TLS implementation.
- * Custom TLS streams may still be added by the user to support HTTPS
- * regardless of this.
- */
- GIT_FEATURE_HTTPS = (1 << 1),
- /**
- * If set, libgit2 was built with and linked against libssh2. A custom
- * transport may still be added by the user to support libssh2 regardless of
- * this.
- */
- GIT_FEATURE_SSH = (1 << 2),
- /**
- * If set, libgit2 was built with support for sub-second resolution in file
- * modification times.
- */
- GIT_FEATURE_NSEC = (1 << 3),
+ /**
+ * libgit2 is thread-aware and can be used from multiple threads
+ * (as described in the documentation).
+ */
+ GIT_FEATURE_THREADS = (1 << 0),
+
+ /** HTTPS remotes */
+ GIT_FEATURE_HTTPS = (1 << 1),
+
+ /** SSH remotes */
+ GIT_FEATURE_SSH = (1 << 2),
+
+ /** Sub-second resolution in index timestamps */
+ GIT_FEATURE_NSEC = (1 << 3),
+
+ /** HTTP parsing; always available */
+ GIT_FEATURE_HTTP_PARSER = (1 << 4),
+
+ /** Regular expression support; always available */
+ GIT_FEATURE_REGEX = (1 << 5),
+
+ /** Internationalization support for filename translation */
+ GIT_FEATURE_I18N = (1 << 6),
+
+ /** NTLM support over HTTPS */
+ GIT_FEATURE_AUTH_NTLM = (1 << 7),
+
+ /** Kerberos (SPNEGO) authentication support over HTTPS */
+ GIT_FEATURE_AUTH_NEGOTIATE = (1 << 8),
+
+ /** zlib support; always available */
+ GIT_FEATURE_COMPRESSION = (1 << 9),
+
+ /** SHA1 object support; always available */
+ GIT_FEATURE_SHA1 = (1 << 10),
+
+ /** SHA256 object support */
+ GIT_FEATURE_SHA256 = (1 << 11)
} git_feature_t;
/**
* Query compile time options for libgit2.
*
* @return A combination of GIT_FEATURE_* values.
+ */
+GIT_EXTERN(int) git_libgit2_features(void);
+
+/**
+ * Query the backend details for the compile-time feature in libgit2.
+ *
+ * This will return the "backend" for the feature, which is useful for
+ * things like HTTPS or SSH support, that can have multiple backends
+ * that could be compiled in.
*
- * - GIT_FEATURE_THREADS
- * Libgit2 was compiled with thread support. Note that thread support is
- * still to be seen as a 'work in progress' - basic object lookups are
- * believed to be threadsafe, but other operations may not be.
+ * For example, when libgit2 is compiled with dynamic OpenSSL support,
+ * the feature backend will be `openssl-dynamic`. The feature backend
+ * names reflect the compilation options specified to the build system
+ * (though in all lower case). The backend _may_ be "builtin" for
+ * features that are provided by libgit2 itself.
*
- * - GIT_FEATURE_HTTPS
- * Libgit2 supports the https:// protocol. This requires the openssl
- * library to be found when compiling libgit2.
+ * If the feature is not supported by the library, this API returns
+ * `NULL`.
*
- * - GIT_FEATURE_SSH
- * Libgit2 supports the SSH protocol for network operations. This requires
- * the libssh2 library to be found when compiling libgit2
+ * @param feature the feature to query details for
+ * @return the provider details, or NULL if the feature is not supported
*/
-GIT_EXTERN(int) git_libgit2_features(void);
+GIT_EXTERN(const char *) git_libgit2_feature_backend(
+ git_feature_t feature);
/**
* Global library options
@@ -211,7 +246,18 @@ typedef enum {
GIT_OPT_SET_ODB_PACKED_PRIORITY,
GIT_OPT_SET_ODB_LOOSE_PRIORITY,
GIT_OPT_GET_EXTENSIONS,
- GIT_OPT_SET_EXTENSIONS
+ GIT_OPT_SET_EXTENSIONS,
+ GIT_OPT_GET_OWNER_VALIDATION,
+ GIT_OPT_SET_OWNER_VALIDATION,
+ GIT_OPT_GET_HOMEDIR,
+ GIT_OPT_SET_HOMEDIR,
+ GIT_OPT_SET_SERVER_CONNECT_TIMEOUT,
+ GIT_OPT_GET_SERVER_CONNECT_TIMEOUT,
+ GIT_OPT_SET_SERVER_TIMEOUT,
+ GIT_OPT_GET_SERVER_TIMEOUT,
+ GIT_OPT_SET_USER_AGENT_PRODUCT,
+ GIT_OPT_GET_USER_AGENT_PRODUCT,
+ GIT_OPT_ADD_SSL_X509_CERT
} git_libgit2_opt_t;
/**
@@ -316,15 +362,52 @@ typedef enum {
* > - `path` is the location of a directory holding several
* > certificates, one per file.
* >
+ * > Calling `GIT_OPT_ADD_SSL_X509_CERT` may override the
+ * > data in `path`.
+ * >
* > Either parameter may be `NULL`, but not both.
*
+ * * opts(GIT_OPT_ADD_SSL_X509_CERT, const X509 *cert)
+ *
+ * > Add a raw X509 certificate into the SSL certs store.
+ * > This certificate is only used by libgit2 invocations
+ * > during the application lifetime and is not persisted
+ * > to disk. This certificate cannot be removed from the
+ * > application once is has been added.
+ * >
+ * > - `cert` is the raw X509 cert will be added to cert store.
+ *
* * opts(GIT_OPT_SET_USER_AGENT, const char *user_agent)
*
- * > Set the value of the User-Agent header. This value will be
- * > appended to "git/1.0", for compatibility with other git clients.
+ * > Set the value of the comment section of the User-Agent header.
+ * > This can be information about your product and its version.
+ * > By default this is "libgit2" followed by the libgit2 version.
+ * >
+ * > This value will be appended to User-Agent _product_, which
+ * > is typically set to "git/2.0".
+ * >
+ * > Set to the empty string ("") to not send any information in the
+ * > comment section, or set to NULL to restore the default.
+ *
+ * * opts(GIT_OPT_GET_USER_AGENT, git_buf *out)
+ *
+ * > Get the value of the User-Agent header.
+ * > The User-Agent is written to the `out` buffer.
+ *
+ * * opts(GIT_OPT_SET_USER_AGENT_PRODUCT, const char *user_agent_product)
+ *
+ * > Set the value of the product portion of the User-Agent header.
+ * > This defaults to "git/2.0", for compatibility with other git
+ * > clients. It is recommended to keep this as git/ for
+ * > compatibility with servers that do user-agent detection.
* >
- * > - `user_agent` is the value that will be delivered as the
- * > User-Agent header on HTTP requests.
+ * > Set to the empty string ("") to not send any user-agent string,
+ * > or set to NULL to restore the default.
+ *
+ * * opts(GIT_OPT_GET_USER_AGENT_PRODUCT, git_buf *out)
+ *
+ * > Get the value of the User-Agent product header.
+ * > The User-Agent product is written to the `out` buffer.
*
* * opts(GIT_OPT_SET_WINDOWS_SHAREMODE, unsigned long value)
*
@@ -360,11 +443,6 @@ typedef enum {
* >
* > - `ciphers` is the list of ciphers that are eanbled.
*
- * * opts(GIT_OPT_GET_USER_AGENT, git_buf *out)
- *
- * > Get the value of the User-Agent header.
- * > The User-Agent is written to the `out` buffer.
- *
* * opts(GIT_OPT_ENABLE_OFS_DELTA, int enabled)
*
* > Enable or disable the use of "offset deltas" when creating packfiles,
@@ -449,8 +527,43 @@ typedef enum {
* > to support repositories with the `noop` extension but does want
* > to support repositories with the `newext` extension.
*
+ * opts(GIT_OPT_GET_OWNER_VALIDATION, int *enabled)
+ * > Gets the owner validation setting for repository
+ * > directories.
+ *
+ * opts(GIT_OPT_SET_OWNER_VALIDATION, int enabled)
+ * > Set that repository directories should be owned by the current
+ * > user. The default is to validate ownership.
+ *
+ * opts(GIT_OPT_GET_HOMEDIR, git_buf *out)
+ * > Gets the current user's home directory, as it will be used
+ * > for file lookups. The path is written to the `out` buffer.
+ *
+ * opts(GIT_OPT_SET_HOMEDIR, const char *path)
+ * > Sets the directory used as the current user's home directory,
+ * > for file lookups.
+ * >
+ * > - `path` directory of home directory.
+ *
+ * opts(GIT_OPT_GET_SERVER_CONNECT_TIMEOUT, int *timeout)
+ * > Gets the timeout (in milliseconds) to attempt connections to
+ * > a remote server.
+ *
+ * opts(GIT_OPT_SET_SERVER_CONNECT_TIMEOUT, int timeout)
+ * > Sets the timeout (in milliseconds) to attempt connections to
+ * > a remote server. Set to 0 to use the system default. Note that
+ * > this may not be able to be configured longer than the system
+ * > default, typically 75 seconds.
+ *
+ * opts(GIT_OPT_GET_SERVER_TIMEOUT, int *timeout)
+ * > Gets the timeout (in milliseconds) for reading from and writing
+ * > to a remote server.
+ *
+ * opts(GIT_OPT_SET_SERVER_TIMEOUT, int timeout)
+ * > Sets the timeout (in milliseconds) for reading from and writing
+ * > to a remote server. Set to 0 to use the system default.
+ *
* @param option Option key
- * @param ... value to set the option
* @return 0 on success, <0 on failure
*/
GIT_EXTERN(int) git_libgit2_opts(int option, ...);
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/config.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/config.h
index 7c8e388..f9c2667 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/config.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/config.h
@@ -13,78 +13,134 @@
/**
* @file git2/config.h
- * @brief Git config management routines
+ * @brief Per-repository, per-user or per-system configuration
* @defgroup git_config Git config management routines
* @ingroup Git
+ *
+ * Git configuration affects the operation of the version control
+ * system, and can be specified on a per-repository basis, in user
+ * settings, or at the system level.
* @{
*/
GIT_BEGIN_DECL
/**
* Priority level of a config file.
+ *
* These priority levels correspond to the natural escalation logic
- * (from higher to lower) when searching for config entries in git.git.
+ * (from higher to lower) when reading or searching for config entries
+ * in git.git. Meaning that for the same key, the configuration in
+ * the local configuration is preferred over the configuration in
+ * the system configuration file.
+ *
+ * Callers can add their own custom configuration, beginning at the
+ * `GIT_CONFIG_LEVEL_APP` level.
+ *
+ * Writes, by default, occur in the highest priority level backend
+ * that is writable. This ordering can be overridden with
+ * `git_config_set_writeorder`.
*
* git_config_open_default() and git_repository_config() honor those
* priority levels as well.
+ *
+ * @see git_config_open_default
+ * @see git_repository_config
*/
typedef enum {
- /** System-wide on Windows, for compatibility with portable git */
+ /**
+ * System-wide on Windows, for compatibility with "Portable Git".
+ */
GIT_CONFIG_LEVEL_PROGRAMDATA = 1,
- /** System-wide configuration file; /etc/gitconfig on Linux systems */
+ /**
+ * System-wide configuration file; `/etc/gitconfig` on Linux.
+ */
GIT_CONFIG_LEVEL_SYSTEM = 2,
- /** XDG compatible configuration file; typically ~/.config/git/config */
+ /**
+ * XDG compatible configuration file; typically
+ * `~/.config/git/config`.
+ */
GIT_CONFIG_LEVEL_XDG = 3,
- /** User-specific configuration file (also called Global configuration
- * file); typically ~/.gitconfig
+ /**
+ * Global configuration file is the user-specific configuration;
+ * typically `~/.gitconfig`.
*/
GIT_CONFIG_LEVEL_GLOBAL = 4,
- /** Repository specific configuration file; $WORK_DIR/.git/config on
- * non-bare repos
+ /**
+ * Local configuration, the repository-specific configuration file;
+ * typically `$GIT_DIR/config`.
*/
GIT_CONFIG_LEVEL_LOCAL = 5,
- /** Application specific configuration file; freely defined by applications
+ /**
+ * Worktree-specific configuration; typically
+ * `$GIT_DIR/config.worktree`.
*/
- GIT_CONFIG_LEVEL_APP = 6,
+ GIT_CONFIG_LEVEL_WORKTREE = 6,
- /** Represents the highest level available config file (i.e. the most
- * specific config file available that actually is loaded)
+ /**
+ * Application-specific configuration file. Callers into libgit2
+ * can add their own configuration beginning at this level.
+ */
+ GIT_CONFIG_LEVEL_APP = 7,
+
+ /**
+ * Not a configuration level; callers can use this value when
+ * querying configuration levels to specify that they want to
+ * have data from the highest-level currently configuration.
+ * This can be used to indicate that callers want the most
+ * specific config file available that actually is loaded.
*/
- GIT_CONFIG_HIGHEST_LEVEL = -1,
+ GIT_CONFIG_HIGHEST_LEVEL = -1
} git_config_level_t;
/**
* An entry in a configuration file
*/
typedef struct git_config_entry {
- const char *name; /**< Name of the entry (normalised) */
- const char *value; /**< String value of the entry */
- unsigned int include_depth; /**< Depth of includes where this variable was found */
- git_config_level_t level; /**< Which config file this was found in */
- void GIT_CALLBACK(free)(struct git_config_entry *entry); /**< Free function for this entry */
- void *payload; /**< Opaque value for the free function. Do not read or write */
+ /** Name of the configuration entry (normalized). */
+ const char *name;
+
+ /** Literal (string) value of the entry. */
+ const char *value;
+
+ /** The type of backend that this entry exists in (eg, "file"). */
+ const char *backend_type;
+
+ /**
+ * The path to the origin of this entry. For config files, this is
+ * the path to the file.
+ */
+ const char *origin_path;
+
+ /** Depth of includes where this variable was found. */
+ unsigned int include_depth;
+
+ /** Configuration level for the file this was found in. */
+ git_config_level_t level;
} git_config_entry;
/**
- * Free a config entry
+ * Free a config entry.
+ *
+ * @param entry The entry to free.
*/
-GIT_EXTERN(void) git_config_entry_free(git_config_entry *);
+GIT_EXTERN(void) git_config_entry_free(git_config_entry *entry);
/**
- * A config enumeration callback
+ * A config enumeration callback.
*
* @param entry the entry currently being enumerated
* @param payload a user-specified pointer
+ * @return non-zero to terminate the iteration.
*/
typedef int GIT_CALLBACK(git_config_foreach_cb)(const git_config_entry *entry, void *payload);
/**
- * An opaque structure for a configuration iterator
+ * An opaque structure for a configuration iterator.
*/
typedef struct git_config_iterator git_config_iterator;
@@ -119,7 +175,7 @@ typedef struct {
* global configuration file.
*
* This method will not guess the path to the xdg compatible
- * config file (.config/git/config).
+ * config file (`.config/git/config`).
*
* @param out Pointer to a user-allocated git_buf in which to store the path
* @return 0 if a global configuration file has been found. Its path will be stored in `out`.
@@ -146,8 +202,8 @@ GIT_EXTERN(int) git_config_find_xdg(git_buf *out);
/**
* Locate the path to the system configuration file
*
- * If /etc/gitconfig doesn't exist, it will look for
- * %PROGRAMFILES%\Git\etc\gitconfig.
+ * If `/etc/gitconfig` doesn't exist, it will look for
+ * `%PROGRAMFILES%\Git\etc\gitconfig`.
*
* @param out Pointer to a user-allocated git_buf in which to store the path
* @return 0 if a system configuration file has been
@@ -158,7 +214,7 @@ GIT_EXTERN(int) git_config_find_system(git_buf *out);
/**
* Locate the path to the configuration file in ProgramData
*
- * Look for the file in %PROGRAMDATA%\Git\config used by portable git.
+ * Look for the file in `%PROGRAMDATA%\Git\config` used by portable git.
*
* @param out Pointer to a user-allocated git_buf in which to store the path
* @return 0 if a ProgramData configuration file has been
@@ -209,9 +265,9 @@ GIT_EXTERN(int) git_config_new(git_config **out);
* @param cfg the configuration to add the file to
* @param path path to the configuration file to add
* @param level the priority level of the backend
- * @param force replace config file at the given priority level
* @param repo optional repository to allow parsing of
* conditional includes
+ * @param force replace config file at the given priority level
* @return 0 on success, GIT_EEXISTS when adding more than one file
* for a given priority level (and force_replace set to 0),
* GIT_ENOTFOUND when the file doesn't exist or error code
@@ -269,9 +325,26 @@ GIT_EXTERN(int) git_config_open_level(
*
* @param out pointer in which to store the config object
* @param config the config object in which to look
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_open_global(git_config **out, git_config *config);
+/**
+ * Set the write order for configuration backends. By default, the
+ * write ordering does not match the read ordering; for example, the
+ * worktree configuration is a high-priority for reading, but is not
+ * written to unless explicitly chosen.
+ *
+ * @param cfg the configuration to change write order of
+ * @param levels the ordering of levels for writing
+ * @param len the length of the levels array
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_config_set_writeorder(
+ git_config *cfg,
+ git_config_level_t *levels,
+ size_t len);
+
/**
* Create a snapshot of the configuration
*
@@ -422,6 +495,7 @@ GIT_EXTERN(int) git_config_get_string_buf(git_buf *out, const git_config *cfg, c
* interested in. Use NULL to indicate all
* @param callback the function to be called on each value of the variable
* @param payload opaque pointer to pass to the callback
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_get_multivar_foreach(const git_config *cfg, const char *name, const char *regexp, git_config_foreach_cb callback, void *payload);
@@ -437,14 +511,15 @@ GIT_EXTERN(int) git_config_get_multivar_foreach(const git_config *cfg, const cha
* @param name the variable's name
* @param regexp regular expression to filter which variables we're
* interested in. Use NULL to indicate all
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_multivar_iterator_new(git_config_iterator **out, const git_config *cfg, const char *name, const char *regexp);
/**
* Return the current entry and advance the iterator
*
- * The pointers returned by this function are valid until the iterator
- * is freed.
+ * The pointers returned by this function are valid until the next call
+ * to `git_config_next` or until the iterator is freed.
*
* @param entry pointer to store the entry
* @param iter the iterator
@@ -515,6 +590,7 @@ GIT_EXTERN(int) git_config_set_string(git_config *cfg, const char *name, const c
* @param name the variable's name
* @param regexp a regular expression to indicate which values to replace
* @param value the new value.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_set_multivar(git_config *cfg, const char *name, const char *regexp, const char *value);
@@ -524,6 +600,7 @@ GIT_EXTERN(int) git_config_set_multivar(git_config *cfg, const char *name, const
*
* @param cfg the configuration
* @param name the variable to delete
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_delete_entry(git_config *cfg, const char *name);
@@ -568,7 +645,8 @@ GIT_EXTERN(int) git_config_foreach(
* `git_config_iterator_free` when done.
*
* @param out pointer to store the iterator
- * @param cfg where to ge the variables from
+ * @param cfg where to get the variables from
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_iterator_new(git_config_iterator **out, const git_config *cfg);
@@ -585,6 +663,7 @@ GIT_EXTERN(int) git_config_iterator_new(git_config_iterator **out, const git_con
* @param out pointer to store the iterator
* @param cfg where to ge the variables from
* @param regexp regular expression to match the names
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_iterator_glob_new(git_config_iterator **out, const git_config *cfg, const char *regexp);
@@ -662,6 +741,7 @@ GIT_EXTERN(int) git_config_get_mapped(
* @param maps array of `git_configmap` objects specifying the possible mappings
* @param map_n number of mapping objects in `maps`
* @param value value to parse
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_lookup_map_value(
int *out,
@@ -678,6 +758,7 @@ GIT_EXTERN(int) git_config_lookup_map_value(
*
* @param out place to store the result of the parsing
* @param value value to parse
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_parse_bool(int *out, const char *value);
@@ -690,6 +771,7 @@ GIT_EXTERN(int) git_config_parse_bool(int *out, const char *value);
*
* @param out place to store the result of the parsing
* @param value value to parse
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_parse_int32(int32_t *out, const char *value);
@@ -702,6 +784,7 @@ GIT_EXTERN(int) git_config_parse_int32(int32_t *out, const char *value);
*
* @param out place to store the result of the parsing
* @param value value to parse
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_parse_int64(int64_t *out, const char *value);
@@ -717,6 +800,7 @@ GIT_EXTERN(int) git_config_parse_int64(int64_t *out, const char *value);
*
* @param out placae to store the result of parsing
* @param value the path to evaluate
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_parse_path(git_buf *out, const char *value);
@@ -735,6 +819,7 @@ GIT_EXTERN(int) git_config_parse_path(git_buf *out, const char *value);
* @param regexp regular expression to match against config names (can be NULL)
* @param callback the function to call on each variable
* @param payload the data to pass to the callback
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_backend_foreach_match(
git_config_backend *backend,
@@ -763,4 +848,5 @@ GIT_EXTERN(int) git_config_lock(git_transaction **tx, git_config *cfg);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/credential.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/credential.h
index 9426a6e..33755ca 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/credential.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/credential.h
@@ -11,9 +11,12 @@
/**
* @file git2/credential.h
- * @brief Git authentication & credential management
+ * @brief Authentication and credential management
* @defgroup git_credential Authentication & credential management
* @ingroup Git
+ *
+ * Credentials specify how to authenticate to a remote system
+ * over HTTPS or SSH.
* @{
*/
GIT_BEGIN_DECL
@@ -75,7 +78,7 @@ typedef enum {
*
* @see git_credential_ssh_key_memory_new
*/
- GIT_CREDENTIAL_SSH_MEMORY = (1u << 6),
+ GIT_CREDENTIAL_SSH_MEMORY = (1u << 6)
} git_credential_t;
/**
@@ -119,7 +122,7 @@ typedef struct git_credential_ssh_custom git_credential_ssh_custom;
* an error. As such, it's easy to get in a loop if you fail to stop providing
* the same incorrect credentials.
*
- * @param out The newly created credential object.
+ * @param[out] out The newly created credential object.
* @param url The resource for which we are demanding a credential.
* @param username_from_url The username that was embedded in a "user\@host"
* remote url, or NULL if not included.
@@ -241,6 +244,18 @@ typedef struct _LIBSSH2_USERAUTH_KBDINT_PROMPT LIBSSH2_USERAUTH_KBDINT_PROMPT;
typedef struct _LIBSSH2_USERAUTH_KBDINT_RESPONSE LIBSSH2_USERAUTH_KBDINT_RESPONSE;
#endif
+/**
+ * Callback for interactive SSH credentials.
+ *
+ * @param name the name
+ * @param name_len the length of the name
+ * @param instruction the authentication instruction
+ * @param instruction_len the length of the instruction
+ * @param num_prompts the number of prompts
+ * @param prompts the prompts
+ * @param responses the responses
+ * @param abstract the abstract
+ */
typedef void GIT_CALLBACK(git_credential_ssh_interactive_cb)(
const char *name,
int name_len,
@@ -254,6 +269,7 @@ typedef void GIT_CALLBACK(git_credential_ssh_interactive_cb)(
* Create a new ssh keyboard-interactive based credential object.
* The supplied credential parameter will be internally duplicated.
*
+ * @param out The newly created credential object.
* @param username Username to use to authenticate.
* @param prompt_callback The callback method used for prompts.
* @param payload Additional data to pass to the callback.
@@ -277,6 +293,18 @@ GIT_EXTERN(int) git_credential_ssh_key_from_agent(
git_credential **out,
const char *username);
+/**
+ * Callback for credential signing.
+ *
+ * @param session the libssh2 session
+ * @param sig the signature
+ * @param sig_len the length of the signature
+ * @param data the data
+ * @param data_len the length of the data
+ * @param abstract the abstract
+ * @return 0 for success, < 0 to indicate an error, > 0 to indicate
+ * no credential was acquired
+ */
typedef int GIT_CALLBACK(git_credential_sign_cb)(
LIBSSH2_SESSION *session,
unsigned char **sig, size_t *sig_len,
@@ -311,4 +339,5 @@ GIT_EXTERN(int) git_credential_ssh_custom_new(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/credential_helpers.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/credential_helpers.h
index 9a70ecb..706558d 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/credential_helpers.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/credential_helpers.h
@@ -39,6 +39,7 @@ typedef struct git_credential_userpass_payload {
* @param allowed_types A bitmask stating which credential types are OK to return.
* @param payload The payload provided when specifying this callback. (This is
* interpreted as a `git_credential_userpass_payload*`.)
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_credential_userpass(
git_credential **out,
@@ -49,4 +50,5 @@ GIT_EXTERN(int) git_credential_userpass(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/deprecated.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/deprecated.h
index 37b9fa0..b8b0238 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/deprecated.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/deprecated.h
@@ -52,7 +52,7 @@
/**
* @file git2/deprecated.h
- * @brief libgit2 deprecated functions and values
+ * @brief Deprecated functions and values
* @ingroup Git
* @{
*/
@@ -69,15 +69,23 @@ GIT_BEGIN_DECL
*/
/**@{*/
+/** @deprecated use GIT_ATTR_VALUE_UNSPECIFIED */
#define GIT_ATTR_UNSPECIFIED_T GIT_ATTR_VALUE_UNSPECIFIED
+/** @deprecated use GIT_ATTR_VALUE_TRUE */
#define GIT_ATTR_TRUE_T GIT_ATTR_VALUE_TRUE
+/** @deprecated use GIT_ATTR_VALUE_FALSE */
#define GIT_ATTR_FALSE_T GIT_ATTR_VALUE_FALSE
+/** @deprecated use GIT_ATTR_VALUE_STRING */
#define GIT_ATTR_VALUE_T GIT_ATTR_VALUE_STRING
+/** @deprecated use GIT_ATTR_IS_TRUE */
#define GIT_ATTR_TRUE(attr) GIT_ATTR_IS_TRUE(attr)
+/** @deprecated use GIT_ATTR_IS_FALSE */
#define GIT_ATTR_FALSE(attr) GIT_ATTR_IS_FALSE(attr)
+/** @deprecated use GIT_ATTR_IS_UNSPECIFIED */
#define GIT_ATTR_UNSPECIFIED(attr) GIT_ATTR_IS_UNSPECIFIED(attr)
+/** @deprecated use git_attr_value_t */
typedef git_attr_value_t git_attr_t;
/**@}*/
@@ -93,6 +101,7 @@ typedef git_attr_value_t git_attr_t;
*/
/**@{*/
+/** @deprecated use GIT_BLOB_FILTER_ATTRIBUTES_FROM_HEAD */
#define GIT_BLOB_FILTER_ATTTRIBUTES_FROM_HEAD GIT_BLOB_FILTER_ATTRIBUTES_FROM_HEAD
GIT_EXTERN(int) git_blob_create_fromworkdir(git_oid *id, git_repository *repo, const char *relative_path);
@@ -285,11 +294,16 @@ typedef int (*git_commit_signing_cb)(
*/
/**@{*/
+/** @deprecated use GIT_CONFIGMAP_FALSE */
#define GIT_CVAR_FALSE GIT_CONFIGMAP_FALSE
+/** @deprecated use GIT_CONFIGMAP_TRUE */
#define GIT_CVAR_TRUE GIT_CONFIGMAP_TRUE
+/** @deprecated use GIT_CONFIGMAP_INT32 */
#define GIT_CVAR_INT32 GIT_CONFIGMAP_INT32
+/** @deprecated use GIT_CONFIGMAP_STRING */
#define GIT_CVAR_STRING GIT_CONFIGMAP_STRING
+/** @deprecated use git_cvar_map */
typedef git_configmap git_cvar_map;
/**@}*/
@@ -313,12 +327,13 @@ typedef enum {
GIT_DIFF_FORMAT_EMAIL_NONE = 0,
/** Don't insert "[PATCH]" in the subject header*/
- GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER = (1 << 0),
-
+ GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER = (1 << 0)
} git_diff_format_email_flags_t;
/**
* Options for controlling the formatting of the generated e-mail.
+ *
+ * @deprecated use `git_email_create_options`
*/
typedef struct {
unsigned int version;
@@ -345,7 +360,9 @@ typedef struct {
const git_signature *author;
} git_diff_format_email_options;
+/** @deprecated use `git_email_create_options` */
#define GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION 1
+/** @deprecated use `git_email_create_options` */
#define GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT {GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION, 0, 1, 1, NULL, NULL, NULL, NULL}
/**
@@ -401,40 +418,76 @@ GIT_EXTERN(int) git_diff_format_email_options_init(
*/
/**@{*/
+/** @deprecated use `GIT_ERROR_NONE` */
#define GITERR_NONE GIT_ERROR_NONE
+/** @deprecated use `GIT_ERROR_NOMEMORY` */
#define GITERR_NOMEMORY GIT_ERROR_NOMEMORY
+/** @deprecated use `GIT_ERROR_OS` */
#define GITERR_OS GIT_ERROR_OS
+/** @deprecated use `GIT_ERROR_INVALID` */
#define GITERR_INVALID GIT_ERROR_INVALID
+/** @deprecated use `GIT_ERROR_REFERENCE` */
#define GITERR_REFERENCE GIT_ERROR_REFERENCE
+/** @deprecated use `GIT_ERROR_ZLIB` */
#define GITERR_ZLIB GIT_ERROR_ZLIB
+/** @deprecated use `GIT_ERROR_REPOSITORY` */
#define GITERR_REPOSITORY GIT_ERROR_REPOSITORY
+/** @deprecated use `GIT_ERROR_CONFIG` */
#define GITERR_CONFIG GIT_ERROR_CONFIG
+/** @deprecated use `GIT_ERROR_REGEX` */
#define GITERR_REGEX GIT_ERROR_REGEX
+/** @deprecated use `GIT_ERROR_ODB` */
#define GITERR_ODB GIT_ERROR_ODB
+/** @deprecated use `GIT_ERROR_INDEX` */
#define GITERR_INDEX GIT_ERROR_INDEX
+/** @deprecated use `GIT_ERROR_OBJECT` */
#define GITERR_OBJECT GIT_ERROR_OBJECT
+/** @deprecated use `GIT_ERROR_NET` */
#define GITERR_NET GIT_ERROR_NET
+/** @deprecated use `GIT_ERROR_TAG` */
#define GITERR_TAG GIT_ERROR_TAG
+/** @deprecated use `GIT_ERROR_TREE` */
#define GITERR_TREE GIT_ERROR_TREE
+/** @deprecated use `GIT_ERROR_INDEXER` */
#define GITERR_INDEXER GIT_ERROR_INDEXER
+/** @deprecated use `GIT_ERROR_SSL` */
#define GITERR_SSL GIT_ERROR_SSL
+/** @deprecated use `GIT_ERROR_SUBMODULE` */
#define GITERR_SUBMODULE GIT_ERROR_SUBMODULE
+/** @deprecated use `GIT_ERROR_THREAD` */
#define GITERR_THREAD GIT_ERROR_THREAD
+/** @deprecated use `GIT_ERROR_STASH` */
#define GITERR_STASH GIT_ERROR_STASH
+/** @deprecated use `GIT_ERROR_CHECKOUT` */
#define GITERR_CHECKOUT GIT_ERROR_CHECKOUT
+/** @deprecated use `GIT_ERROR_FETCHHEAD` */
#define GITERR_FETCHHEAD GIT_ERROR_FETCHHEAD
+/** @deprecated use `GIT_ERROR_MERGE` */
#define GITERR_MERGE GIT_ERROR_MERGE
+/** @deprecated use `GIT_ERROR_SSH` */
#define GITERR_SSH GIT_ERROR_SSH
+/** @deprecated use `GIT_ERROR_FILTER` */
#define GITERR_FILTER GIT_ERROR_FILTER
+/** @deprecated use `GIT_ERROR_REVERT` */
#define GITERR_REVERT GIT_ERROR_REVERT
+/** @deprecated use `GIT_ERROR_CALLBACK` */
#define GITERR_CALLBACK GIT_ERROR_CALLBACK
+/** @deprecated use `GIT_ERROR_CHERRYPICK` */
#define GITERR_CHERRYPICK GIT_ERROR_CHERRYPICK
+/** @deprecated use `GIT_ERROR_DESCRIBE` */
#define GITERR_DESCRIBE GIT_ERROR_DESCRIBE
+/** @deprecated use `GIT_ERROR_REBASE` */
#define GITERR_REBASE GIT_ERROR_REBASE
+/** @deprecated use `GIT_ERROR_FILESYSTEM` */
#define GITERR_FILESYSTEM GIT_ERROR_FILESYSTEM
+/** @deprecated use `GIT_ERROR_PATCH` */
#define GITERR_PATCH GIT_ERROR_PATCH
+/** @deprecated use `GIT_ERROR_WORKTREE` */
#define GITERR_WORKTREE GIT_ERROR_WORKTREE
+/** @deprecated use `GIT_ERROR_SHA1` */
#define GITERR_SHA1 GIT_ERROR_SHA1
+/** @deprecated use `GIT_ERROR_SHA` */
+#define GIT_ERROR_SHA1 GIT_ERROR_SHA
/**
* Return the last `git_error` object that was generated for the
@@ -498,37 +551,63 @@ GIT_EXTERN(void) giterr_set_oom(void);
*/
/**@{*/
+/* The git_idxentry_extended_flag_t enum */
+/** @deprecated use `GIT_INDEX_ENTRY_NAMEMASK` */
#define GIT_IDXENTRY_NAMEMASK GIT_INDEX_ENTRY_NAMEMASK
+/** @deprecated use `GIT_INDEX_ENTRY_STAGEMASK` */
#define GIT_IDXENTRY_STAGEMASK GIT_INDEX_ENTRY_STAGEMASK
+/** @deprecated use `GIT_INDEX_ENTRY_STAGESHIFT` */
#define GIT_IDXENTRY_STAGESHIFT GIT_INDEX_ENTRY_STAGESHIFT
/* The git_indxentry_flag_t enum */
+/** @deprecated use `GIT_INDEX_ENTRY_EXTENDED` */
#define GIT_IDXENTRY_EXTENDED GIT_INDEX_ENTRY_EXTENDED
+/** @deprecated use `GIT_INDEX_ENTRY_VALID` */
#define GIT_IDXENTRY_VALID GIT_INDEX_ENTRY_VALID
+/** @deprecated use `GIT_INDEX_ENTRY_STAGE` */
#define GIT_IDXENTRY_STAGE(E) GIT_INDEX_ENTRY_STAGE(E)
+/** @deprecated use `GIT_INDEX_ENTRY_STAGE_SET` */
#define GIT_IDXENTRY_STAGE_SET(E,S) GIT_INDEX_ENTRY_STAGE_SET(E,S)
/* The git_idxentry_extended_flag_t enum */
+/** @deprecated use `GIT_INDEX_ENTRY_INTENT_TO_ADD` */
#define GIT_IDXENTRY_INTENT_TO_ADD GIT_INDEX_ENTRY_INTENT_TO_ADD
+/** @deprecated use `GIT_INDEX_ENTRY_SKIP_WORKTREE` */
#define GIT_IDXENTRY_SKIP_WORKTREE GIT_INDEX_ENTRY_SKIP_WORKTREE
+/** @deprecated use `GIT_INDEX_ENTRY_INTENT_TO_ADD | GIT_INDEX_ENTRY_SKIP_WORKTREE` */
#define GIT_IDXENTRY_EXTENDED_FLAGS (GIT_INDEX_ENTRY_INTENT_TO_ADD | GIT_INDEX_ENTRY_SKIP_WORKTREE)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_EXTENDED2 (1 << 15)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_UPDATE (1 << 0)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_REMOVE (1 << 1)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_UPTODATE (1 << 2)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_ADDED (1 << 3)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_HASHED (1 << 4)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_UNHASHED (1 << 5)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_WT_REMOVE (1 << 6)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_CONFLICTED (1 << 7)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_UNPACKED (1 << 8)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_NEW_SKIP_WORKTREE (1 << 9)
/* The git_index_capability_t enum */
+/** @deprecated use `GIT_INDEX_CAPABILITY_IGNORE_CASE` */
#define GIT_INDEXCAP_IGNORE_CASE GIT_INDEX_CAPABILITY_IGNORE_CASE
+/** @deprecated use `GIT_INDEX_CAPABILITY_NO_FILEMODE` */
#define GIT_INDEXCAP_NO_FILEMODE GIT_INDEX_CAPABILITY_NO_FILEMODE
+/** @deprecated use `GIT_INDEX_CAPABILITY_NO_SYMLINKS` */
#define GIT_INDEXCAP_NO_SYMLINKS GIT_INDEX_CAPABILITY_NO_SYMLINKS
+/** @deprecated use `GIT_INDEX_CAPABILITY_FROM_OWNER` */
#define GIT_INDEXCAP_FROM_OWNER GIT_INDEX_CAPABILITY_FROM_OWNER
GIT_EXTERN(int) git_index_add_frombuffer(
@@ -548,17 +627,28 @@ GIT_EXTERN(int) git_index_add_frombuffer(
*/
/**@{*/
+/** @deprecate use `git_object_t` */
#define git_otype git_object_t
+/** @deprecate use `GIT_OBJECT_ANY` */
#define GIT_OBJ_ANY GIT_OBJECT_ANY
+/** @deprecate use `GIT_OBJECT_INVALID` */
#define GIT_OBJ_BAD GIT_OBJECT_INVALID
+/** @deprecated this value is not public */
#define GIT_OBJ__EXT1 0
+/** @deprecate use `GIT_OBJECT_COMMIT` */
#define GIT_OBJ_COMMIT GIT_OBJECT_COMMIT
+/** @deprecate use `GIT_OBJECT_TREE` */
#define GIT_OBJ_TREE GIT_OBJECT_TREE
+/** @deprecate use `GIT_OBJECT_BLOB` */
#define GIT_OBJ_BLOB GIT_OBJECT_BLOB
+/** @deprecate use `GIT_OBJECT_TAG` */
#define GIT_OBJ_TAG GIT_OBJECT_TAG
+/** @deprecated this value is not public */
#define GIT_OBJ__EXT2 5
+/** @deprecate use `GIT_OBJECT_OFS_DELTA` */
#define GIT_OBJ_OFS_DELTA GIT_OBJECT_OFS_DELTA
+/** @deprecate use `GIT_OBJECT_REF_DELTA` */
#define GIT_OBJ_REF_DELTA GIT_OBJECT_REF_DELTA
/**
@@ -610,17 +700,27 @@ GIT_EXTERN(int) git_remote_is_valid_name(const char *remote_name);
/**@{*/
/** Basic type of any Git reference. */
+/** @deprecate use `git_reference_t` */
#define git_ref_t git_reference_t
+/** @deprecate use `git_reference_format_t` */
#define git_reference_normalize_t git_reference_format_t
+/** @deprecate use `GIT_REFERENCE_INVALID` */
#define GIT_REF_INVALID GIT_REFERENCE_INVALID
+/** @deprecate use `GIT_REFERENCE_DIRECT` */
#define GIT_REF_OID GIT_REFERENCE_DIRECT
+/** @deprecate use `GIT_REFERENCE_SYMBOLIC` */
#define GIT_REF_SYMBOLIC GIT_REFERENCE_SYMBOLIC
+/** @deprecate use `GIT_REFERENCE_ALL` */
#define GIT_REF_LISTALL GIT_REFERENCE_ALL
+/** @deprecate use `GIT_REFERENCE_FORMAT_NORMAL` */
#define GIT_REF_FORMAT_NORMAL GIT_REFERENCE_FORMAT_NORMAL
+/** @deprecate use `GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL` */
#define GIT_REF_FORMAT_ALLOW_ONELEVEL GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL
+/** @deprecate use `GIT_REFERENCE_FORMAT_REFSPEC_PATTERN` */
#define GIT_REF_FORMAT_REFSPEC_PATTERN GIT_REFERENCE_FORMAT_REFSPEC_PATTERN
+/** @deprecate use `GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND` */
#define GIT_REF_FORMAT_REFSPEC_SHORTHAND GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND
/**
@@ -661,8 +761,11 @@ GIT_EXTERN(int) git_tag_create_frombuffer(
typedef git_revspec_t git_revparse_mode_t;
+/** @deprecated use `GIT_REVSPEC_SINGLE` */
#define GIT_REVPARSE_SINGLE GIT_REVSPEC_SINGLE
+/** @deprecated use `GIT_REVSPEC_RANGE` */
#define GIT_REVPARSE_RANGE GIT_REVSPEC_RANGE
+/** @deprecated use `GIT_REVSPEC_MERGE_BASE` */
#define GIT_REVPARSE_MERGE_BASE GIT_REVSPEC_MERGE_BASE
/**@}*/
@@ -691,14 +794,22 @@ typedef git_credential_sign_cb git_cred_sign_cb;
typedef git_credential_ssh_interactive_cb git_cred_ssh_interactive_callback;
typedef git_credential_ssh_interactive_cb git_cred_ssh_interactive_cb;
+/** @deprecated use `git_credential_t` */
#define git_credtype_t git_credential_t
+/** @deprecated use `GIT_CREDENTIAL_USERPASS_PLAINTEXT` */
#define GIT_CREDTYPE_USERPASS_PLAINTEXT GIT_CREDENTIAL_USERPASS_PLAINTEXT
+/** @deprecated use `GIT_CREDENTIAL_SSH_KEY` */
#define GIT_CREDTYPE_SSH_KEY GIT_CREDENTIAL_SSH_KEY
+/** @deprecated use `GIT_CREDENTIAL_SSH_CUSTOM` */
#define GIT_CREDTYPE_SSH_CUSTOM GIT_CREDENTIAL_SSH_CUSTOM
+/** @deprecated use `GIT_CREDENTIAL_DEFAULT` */
#define GIT_CREDTYPE_DEFAULT GIT_CREDENTIAL_DEFAULT
+/** @deprecated use `GIT_CREDENTIAL_SSH_INTERACTIVE` */
#define GIT_CREDTYPE_SSH_INTERACTIVE GIT_CREDENTIAL_SSH_INTERACTIVE
+/** @deprecated use `GIT_CREDENTIAL_USERNAME` */
#define GIT_CREDTYPE_USERNAME GIT_CREDENTIAL_USERNAME
+/** @deprecated use `GIT_CREDENTIAL_SSH_MEMORY` */
#define GIT_CREDTYPE_SSH_MEMORY GIT_CREDENTIAL_SSH_MEMORY
GIT_EXTERN(void) git_cred_free(git_credential *cred);
@@ -775,6 +886,15 @@ typedef git_trace_cb git_trace_callback;
*/
/**@{*/
+#ifndef GIT_EXPERIMENTAL_SHA256
+/** Deprecated OID "raw size" definition */
+# define GIT_OID_RAWSZ GIT_OID_SHA1_SIZE
+/** Deprecated OID "hex size" definition */
+# define GIT_OID_HEXSZ GIT_OID_SHA1_HEXSIZE
+/** Deprecated OID "hex zero" definition */
+# define GIT_OID_HEX_ZERO GIT_OID_SHA1_HEXZERO
+#endif
+
GIT_EXTERN(int) git_oid_iszero(const git_oid *id);
/**@}*/
@@ -884,6 +1004,24 @@ GIT_EXTERN(void) git_strarray_free(git_strarray *array);
/**@}*/
+/** @name Deprecated Version Constants
+ *
+ * These constants are retained for backward compatibility. The newer
+ * versions of these constants should be preferred in all new code.
+ *
+ * There is no plan to remove these backward compatibility constants at
+ * this time.
+ */
+/**@{*/
+
+#define LIBGIT2_VER_MAJOR LIBGIT2_VERSION_MAJOR
+#define LIBGIT2_VER_MINOR LIBGIT2_VERSION_MINOR
+#define LIBGIT2_VER_REVISION LIBGIT2_VERSION_REVISION
+#define LIBGIT2_VER_PATCH LIBGIT2_VERSION_PATCH
+#define LIBGIT2_VER_PRERELEASE LIBGIT2_VERSION_PRERELEASE
+
+/**@}*/
+
/** @name Deprecated Options Initialization Functions
*
* These functions are retained for backward compatibility. The newer
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/describe.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/describe.h
index 1d2ca14..938c470 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/describe.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/describe.h
@@ -13,10 +13,14 @@
/**
* @file git2/describe.h
- * @brief Git describing routines
+ * @brief Describe a commit in reference to tags
* @defgroup git_describe Git describing routines
* @ingroup Git
* @{
+ *
+ * Describe a commit, showing information about how the current commit
+ * relates to the tags. This can be useful for showing how the current
+ * commit has changed from a particular tagged version of the repository.
*/
GIT_BEGIN_DECL
@@ -30,7 +34,7 @@ GIT_BEGIN_DECL
typedef enum {
GIT_DESCRIBE_DEFAULT,
GIT_DESCRIBE_TAGS,
- GIT_DESCRIBE_ALL,
+ GIT_DESCRIBE_ALL
} git_describe_strategy_t;
/**
@@ -60,10 +64,15 @@ typedef struct git_describe_options {
int show_commit_oid_as_fallback;
} git_describe_options;
+/** Default maximum candidate tags */
#define GIT_DESCRIBE_DEFAULT_MAX_CANDIDATES_TAGS 10
+/** Default abbreviated size */
#define GIT_DESCRIBE_DEFAULT_ABBREVIATED_SIZE 7
+/** Current version for the `git_describe_options` structure */
#define GIT_DESCRIBE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_describe_options` */
#define GIT_DESCRIBE_OPTIONS_INIT { \
GIT_DESCRIBE_OPTIONS_VERSION, \
GIT_DESCRIBE_DEFAULT_MAX_CANDIDATES_TAGS, \
@@ -110,7 +119,10 @@ typedef struct {
const char *dirty_suffix;
} git_describe_format_options;
+/** Current version for the `git_describe_format_options` structure */
#define GIT_DESCRIBE_FORMAT_OPTIONS_VERSION 1
+
+/** Static constructor for `git_describe_format_options` */
#define GIT_DESCRIBE_FORMAT_OPTIONS_INIT { \
GIT_DESCRIBE_FORMAT_OPTIONS_VERSION, \
GIT_DESCRIBE_DEFAULT_ABBREVIATED_SIZE, \
@@ -142,6 +154,7 @@ typedef struct git_describe_result git_describe_result;
* you're done with it.
* @param committish a committish to describe
* @param opts the lookup options (or NULL for defaults)
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_describe_commit(
git_describe_result **result,
@@ -152,13 +165,14 @@ GIT_EXTERN(int) git_describe_commit(
* Describe a commit
*
* Perform the describe operation on the current commit and the
- * worktree. After peforming describe on HEAD, a status is run and the
+ * worktree. After performing describe on HEAD, a status is run and the
* description is considered to be dirty if there are.
*
* @param out pointer to store the result. You must free this once
* you're done with it.
* @param repo the repository in which to perform the describe
* @param opts the lookup options (or NULL for defaults)
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_describe_workdir(
git_describe_result **out,
@@ -172,6 +186,7 @@ GIT_EXTERN(int) git_describe_workdir(
* @param result the result from `git_describe_commit()` or
* `git_describe_workdir()`.
* @param opts the formatting options (or NULL for defaults)
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_describe_format(
git_buf *out,
@@ -180,6 +195,8 @@ GIT_EXTERN(int) git_describe_format(
/**
* Free the describe result.
+ *
+ * @param result The result to free.
*/
GIT_EXTERN(void) git_describe_result_free(git_describe_result *result);
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/diff.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/diff.h
index a14c019..b12e8ab 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/diff.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/diff.h
@@ -15,7 +15,7 @@
/**
* @file git2/diff.h
- * @brief Git tree and file differencing routines.
+ * @brief Indicate the differences between two versions of the repository
* @ingroup Git
* @{
*/
@@ -170,7 +170,7 @@ typedef enum {
/** Include the necessary deflate / delta information so that `git-apply`
* can apply given diff information to binary files.
*/
- GIT_DIFF_SHOW_BINARY = (1u << 30),
+ GIT_DIFF_SHOW_BINARY = (1u << 30)
} git_diff_option_t;
/**
@@ -208,6 +208,7 @@ typedef enum {
GIT_DIFF_FLAG_NOT_BINARY = (1u << 1), /**< file(s) treated as text data */
GIT_DIFF_FLAG_VALID_ID = (1u << 2), /**< `id` value is known correct */
GIT_DIFF_FLAG_EXISTS = (1u << 3), /**< file exists at this side of the delta */
+ GIT_DIFF_FLAG_VALID_SIZE = (1u << 4) /**< file size value is known correct */
} git_diff_flag_t;
/**
@@ -231,7 +232,7 @@ typedef enum {
GIT_DELTA_UNTRACKED = 7, /**< entry is untracked item in workdir */
GIT_DELTA_TYPECHANGE = 8, /**< type of entry changed between old and new */
GIT_DELTA_UNREADABLE = 9, /**< entry is unreadable */
- GIT_DELTA_CONFLICTED = 10, /**< entry in the index is conflicted */
+ GIT_DELTA_CONFLICTED = 10 /**< entry in the index is conflicted */
} git_delta_t;
/**
@@ -273,7 +274,7 @@ typedef struct {
/**
* Represents the known length of the `id` field, when
- * converted to a hex string. It is generally `GIT_OID_HEXSZ`, unless this
+ * converted to a hex string. It is generally `GIT_OID_SHA1_HEXSIZE`, unless this
* delta was created from reading a patch file, in which case it may be
* abbreviated to something reasonable, like 7 characters.
*/
@@ -341,6 +342,12 @@ typedef struct {
* diff process continues.
* - returns 0, the delta is inserted into the diff, and the diff process
* continues.
+ *
+ * @param diff_so_far the diff structure as it currently exists
+ * @param delta_to_add the delta that is to be added
+ * @param matched_pathspec the pathspec
+ * @param payload the user-specified callback payload
+ * @return 0 on success, 1 to skip this delta, or an error code
*/
typedef int GIT_CALLBACK(git_diff_notify_cb)(
const git_diff *diff_so_far,
@@ -356,7 +363,8 @@ typedef int GIT_CALLBACK(git_diff_notify_cb)(
* @param diff_so_far The diff being generated.
* @param old_path The path to the old file or NULL.
* @param new_path The path to the new file or NULL.
- * @return Non-zero to abort the diff.
+ * @param payload the user-specified callback payload
+ * @return 0 or an error code
*/
typedef int GIT_CALLBACK(git_diff_progress_cb)(
const git_diff *diff_so_far,
@@ -420,6 +428,22 @@ typedef struct {
*/
uint32_t interhunk_lines;
+ /**
+ * The object ID type to emit in diffs; this is used by functions
+ * that operate without a repository - namely `git_diff_buffers`,
+ * or `git_diff_blobs` and `git_diff_blob_to_buffer` when one blob
+ * is `NULL`.
+ *
+ * This may be omitted (set to `0`). If a repository is available,
+ * the object ID format of the repository will be used. If no
+ * repository is available then the default is `GIT_OID_SHA`.
+ *
+ * If this is specified and a repository is available, then the
+ * specified `oid_type` must match the repository's object ID
+ * format.
+ */
+ git_oid_t oid_type;
+
/**
* The abbreviation length to use when formatting object ids.
* Defaults to the value of 'core.abbrev' from the config, or 7 if unset.
@@ -446,10 +470,10 @@ typedef struct {
const char *new_prefix;
} git_diff_options;
-/* The current version of the diff options structure */
+/** The current version of the diff options structure */
#define GIT_DIFF_OPTIONS_VERSION 1
-/* Stack initializer for diff options. Alternatively use
+/** Stack initializer for diff options. Alternatively use
* `git_diff_options_init` programmatic initialization.
*/
#define GIT_DIFF_OPTIONS_INIT \
@@ -475,12 +499,14 @@ GIT_EXTERN(int) git_diff_options_init(
* @param delta A pointer to the delta data for the file
* @param progress Goes from 0 to 1 over the diff
* @param payload User-specified pointer from foreach function
+ * @return 0 or an error code
*/
typedef int GIT_CALLBACK(git_diff_file_cb)(
const git_diff_delta *delta,
float progress,
void *payload);
+/** Maximum size of the hunk header */
#define GIT_DIFF_HUNK_HEADER_SIZE 128
/**
@@ -497,7 +523,7 @@ typedef enum {
GIT_DIFF_BINARY_LITERAL,
/** The binary data is the delta from one side to the other. */
- GIT_DIFF_BINARY_DELTA,
+ GIT_DIFF_BINARY_DELTA
} git_diff_binary_t;
/** The contents of one of the files in a binary diff. */
@@ -541,6 +567,11 @@ typedef struct {
/**
* When iterating over a diff, callback that will be made for
* binary content within the diff.
+ *
+ * @param delta the delta
+ * @param binary the binary content
+ * @param payload the user-specified callback payload
+ * @return 0 or an error code
*/
typedef int GIT_CALLBACK(git_diff_binary_cb)(
const git_diff_delta *delta,
@@ -567,6 +598,11 @@ typedef struct {
/**
* When iterating over a diff, callback that will be made per hunk.
+ *
+ * @param delta the delta
+ * @param hunk the hunk
+ * @param payload the user-specified callback payload
+ * @return 0 or an error code
*/
typedef int GIT_CALLBACK(git_diff_hunk_cb)(
const git_diff_delta *delta,
@@ -628,6 +664,12 @@ typedef struct {
* When printing a diff, callback that will be made to output each line
* of text. This uses some extra GIT_DIFF_LINE_... constants for output
* of lines of file and hunk headers.
+ *
+ * @param delta the delta that contains the line
+ * @param hunk the hunk that contains the line
+ * @param line the line in the diff
+ * @param payload the user-specified callback payload
+ * @return 0 or an error code
*/
typedef int GIT_CALLBACK(git_diff_line_cb)(
const git_diff_delta *delta, /**< delta that contains this data */
@@ -706,7 +748,7 @@ typedef enum {
* GIT_DIFF_INCLUDE_UNMODIFIED flag. If you do not want UNMODIFIED
* records in the final result, pass this flag to have them removed.
*/
- GIT_DIFF_FIND_REMOVE_UNMODIFIED = (1u << 16),
+ GIT_DIFF_FIND_REMOVE_UNMODIFIED = (1u << 16)
} git_diff_find_t;
/**
@@ -758,7 +800,7 @@ typedef struct {
uint16_t copy_threshold;
/**
- * Treshold below which similar files will be split into a delete/add pair.
+ * Threshold below which similar files will be split into a delete/add pair.
* This is equivalent to the last part of the -B option. Defaults to 60.
*/
uint16_t break_rewrite_threshold;
@@ -768,7 +810,7 @@ typedef struct {
*
* This is a little different from the `-l` option from Git because we
* will still process up to this many matches before abandoning the search.
- * Defaults to 200.
+ * Defaults to 1000.
*/
size_t rename_limit;
@@ -785,7 +827,10 @@ typedef struct {
git_diff_similarity_metric *metric;
} git_diff_find_options;
+/** Current version for the `git_diff_find_options` structure */
#define GIT_DIFF_FIND_OPTIONS_VERSION 1
+
+/** Static constructor for `git_diff_find_options` */
#define GIT_DIFF_FIND_OPTIONS_INIT {GIT_DIFF_FIND_OPTIONS_VERSION}
/**
@@ -831,6 +876,7 @@ GIT_EXTERN(void) git_diff_free(git_diff *diff);
* @param old_tree A git_tree object to diff from, or NULL for empty tree.
* @param new_tree A git_tree object to diff to, or NULL for empty tree.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_tree_to_tree(
git_diff **diff,
@@ -857,6 +903,7 @@ GIT_EXTERN(int) git_diff_tree_to_tree(
* @param old_tree A git_tree object to diff from, or NULL for empty tree.
* @param index The index to diff with; repo index used if NULL.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_tree_to_index(
git_diff **diff,
@@ -884,6 +931,7 @@ GIT_EXTERN(int) git_diff_tree_to_index(
* @param repo The repository.
* @param index The index to diff from; repo index used if NULL.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_index_to_workdir(
git_diff **diff,
@@ -913,6 +961,7 @@ GIT_EXTERN(int) git_diff_index_to_workdir(
* @param repo The repository containing the tree.
* @param old_tree A git_tree object to diff from, or NULL for empty tree.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_tree_to_workdir(
git_diff **diff,
@@ -932,6 +981,7 @@ GIT_EXTERN(int) git_diff_tree_to_workdir(
* @param repo The repository containing the tree.
* @param old_tree A git_tree object to diff from, or NULL for empty tree.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_tree_to_workdir_with_index(
git_diff **diff,
@@ -950,6 +1000,7 @@ GIT_EXTERN(int) git_diff_tree_to_workdir_with_index(
* @param old_index A git_index object to diff from.
* @param new_index A git_index object to diff to.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_index_to_index(
git_diff **diff,
@@ -970,6 +1021,7 @@ GIT_EXTERN(int) git_diff_index_to_index(
*
* @param onto Diff to merge into.
* @param from Diff to merge.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_merge(
git_diff *onto,
@@ -1107,7 +1159,7 @@ typedef enum {
GIT_DIFF_FORMAT_RAW = 3u, /**< like git diff --raw */
GIT_DIFF_FORMAT_NAME_ONLY = 4u, /**< like git diff --name-only */
GIT_DIFF_FORMAT_NAME_STATUS = 5u, /**< like git diff --name-status */
- GIT_DIFF_FORMAT_PATCH_ID = 6u, /**< git diff as used by git patch-id */
+ GIT_DIFF_FORMAT_PATCH_ID = 6u /**< git diff as used by git patch-id */
} git_diff_format_t;
/**
@@ -1145,9 +1197,8 @@ GIT_EXTERN(int) git_diff_to_buf(
/**@}*/
-
/*
- * Misc
+ * Low-level file comparison, invoking callbacks per difference.
*/
/**
@@ -1263,6 +1314,25 @@ GIT_EXTERN(int) git_diff_buffers(
git_diff_line_cb line_cb,
void *payload);
+/* Patch file parsing. */
+
+/**
+ * Options for parsing a diff / patch file.
+ */
+typedef struct {
+ unsigned int version;
+ git_oid_t oid_type;
+} git_diff_parse_options;
+
+/** The current version of the diff parse options structure */
+#define GIT_DIFF_PARSE_OPTIONS_VERSION 1
+
+/** Stack initializer for diff parse options. Alternatively use
+ * `git_diff_parse_options_init` programmatic initialization.
+ */
+#define GIT_DIFF_PARSE_OPTIONS_INIT \
+ { GIT_DIFF_PARSE_OPTIONS_VERSION, GIT_OID_DEFAULT }
+
/**
* Read the contents of a git patch file into a `git_diff` object.
*
@@ -1285,7 +1355,11 @@ GIT_EXTERN(int) git_diff_buffers(
GIT_EXTERN(int) git_diff_from_buffer(
git_diff **out,
const char *content,
- size_t content_len);
+ size_t content_len
+#ifdef GIT_EXPERIMENTAL_SHA256
+ , git_diff_parse_options *opts
+#endif
+ );
/**
* This is an opaque structure which is allocated by `git_diff_get_stats`.
@@ -1311,13 +1385,13 @@ typedef enum {
GIT_DIFF_STATS_NUMBER = (1u << 2),
/** Extended header information such as creations, renames and mode changes, equivalent of `--summary` */
- GIT_DIFF_STATS_INCLUDE_SUMMARY = (1u << 3),
+ GIT_DIFF_STATS_INCLUDE_SUMMARY = (1u << 3)
} git_diff_stats_format_t;
/**
* Accumulate diff statistics for all patches.
*
- * @param out Structure containg the diff statistics.
+ * @param out Structure containing the diff statistics.
* @param diff A git_diff generated by one of the above functions.
* @return 0 on success; non-zero on error
*/
@@ -1386,7 +1460,10 @@ typedef struct git_diff_patchid_options {
unsigned int version;
} git_diff_patchid_options;
+/** Current version for the `git_diff_patchid_options` structure */
#define GIT_DIFF_PATCHID_OPTIONS_VERSION 1
+
+/** Static constructor for `git_diff_patchid_options` */
#define GIT_DIFF_PATCHID_OPTIONS_INIT { GIT_DIFF_PATCHID_OPTIONS_VERSION }
/**
@@ -1424,8 +1501,7 @@ GIT_EXTERN(int) git_diff_patchid_options_init(
*/
GIT_EXTERN(int) git_diff_patchid(git_oid *out, git_diff *diff, git_diff_patchid_options *opts);
-GIT_END_DECL
-
/** @} */
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/email.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/email.h
index b56be5d..ad37e42 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/email.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/email.h
@@ -8,10 +8,11 @@
#define INCLUDE_git_email_h__
#include "common.h"
+#include "diff.h"
/**
* @file git2/email.h
- * @brief Git email formatting and application routines.
+ * @brief Produce email-ready patches
* @ingroup Git
* @{
*/
@@ -34,7 +35,7 @@ typedef enum {
GIT_EMAIL_CREATE_ALWAYS_NUMBER = (1u << 1),
/** Do not perform rename or similarity detection. */
- GIT_EMAIL_CREATE_NO_RENAMES = (1u << 2),
+ GIT_EMAIL_CREATE_NO_RENAMES = (1u << 2)
} git_email_create_flags_t;
/**
@@ -70,11 +71,14 @@ typedef struct {
size_t reroll_number;
} git_email_create_options;
-/*
+/** Current version for the `git_email_create_options` structure */
+#define GIT_EMAIL_CREATE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_email_create_options`
+ *
* By default, our options include rename detection and binary
* diffs to match `git format-patch`.
*/
-#define GIT_EMAIL_CREATE_OPTIONS_VERSION 1
#define GIT_EMAIL_CREATE_OPTIONS_INIT \
{ \
GIT_EMAIL_CREATE_OPTIONS_VERSION, \
@@ -83,30 +87,6 @@ typedef struct {
GIT_DIFF_FIND_OPTIONS_INIT \
}
-/**
- * Create a diff for a commit in mbox format for sending via email.
- *
- * @param out buffer to store the e-mail patch in
- * @param diff the changes to include in the email
- * @param patch_idx the patch index
- * @param patch_count the total number of patches that will be included
- * @param commit_id the commit id for this change
- * @param summary the commit message for this change
- * @param body optional text to include above the diffstat
- * @param author the person who authored this commit
- * @param opts email creation options
- */
-GIT_EXTERN(int) git_email_create_from_diff(
- git_buf *out,
- git_diff *diff,
- size_t patch_idx,
- size_t patch_count,
- const git_oid *commit_id,
- const char *summary,
- const char *body,
- const git_signature *author,
- const git_email_create_options *opts);
-
/**
* Create a diff for a commit in mbox format for sending via email.
* The commit must not be a merge commit.
@@ -114,14 +94,14 @@ GIT_EXTERN(int) git_email_create_from_diff(
* @param out buffer to store the e-mail patch in
* @param commit commit to create a patch for
* @param opts email creation options
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_email_create_from_commit(
git_buf *out,
git_commit *commit,
const git_email_create_options *opts);
-GIT_END_DECL
-
/** @} */
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/errors.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/errors.h
index de51582..1141390 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/errors.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/errors.h
@@ -11,7 +11,7 @@
/**
* @file git2/errors.h
- * @brief Git error handling routines and variables
+ * @brief Error handling routines and variables
* @ingroup Git
* @{
*/
@@ -19,25 +19,32 @@ GIT_BEGIN_DECL
/** Generic return codes */
typedef enum {
- GIT_OK = 0, /**< No error */
+ /**
+ * No error occurred; the call was successful.
+ */
+ GIT_OK = 0,
+
+ /**
+ * An error occurred; call `git_error_last` for more information.
+ */
+ GIT_ERROR = -1,
- GIT_ERROR = -1, /**< Generic error */
- GIT_ENOTFOUND = -3, /**< Requested object could not be found */
- GIT_EEXISTS = -4, /**< Object exists preventing operation */
- GIT_EAMBIGUOUS = -5, /**< More than one object matches */
- GIT_EBUFS = -6, /**< Output buffer too short to hold data */
+ GIT_ENOTFOUND = -3, /**< Requested object could not be found. */
+ GIT_EEXISTS = -4, /**< Object exists preventing operation. */
+ GIT_EAMBIGUOUS = -5, /**< More than one object matches. */
+ GIT_EBUFS = -6, /**< Output buffer too short to hold data. */
/**
* GIT_EUSER is a special error that is never generated by libgit2
* code. You can return it from a callback (e.g to stop an iteration)
* to know that it was generated by the callback and not by libgit2.
*/
- GIT_EUSER = -7,
+ GIT_EUSER = -7,
- GIT_EBAREREPO = -8, /**< Operation not allowed on bare repository */
- GIT_EUNBORNBRANCH = -9, /**< HEAD refers to branch with no commits */
- GIT_EUNMERGED = -10, /**< Merge in progress prevented operation */
- GIT_ENONFASTFORWARD = -11, /**< Reference was not fast-forwardable */
+ GIT_EBAREREPO = -8, /**< Operation not allowed on bare repository. */
+ GIT_EUNBORNBRANCH = -9, /**< HEAD refers to branch with no commits. */
+ GIT_EUNMERGED = -10, /**< Merge in progress prevented operation */
+ GIT_ENONFASTFORWARD = -11, /**< Reference was not fast-forwardable */
GIT_EINVALIDSPEC = -12, /**< Name/ref spec was not in a valid format */
GIT_ECONFLICT = -13, /**< Checkout conflicts prevented operation */
GIT_ELOCKED = -14, /**< Lock file prevented operation */
@@ -58,20 +65,17 @@ typedef enum {
GIT_EMISMATCH = -33, /**< Hashsum mismatch in object */
GIT_EINDEXDIRTY = -34, /**< Unsaved changes in the index would be overwritten */
GIT_EAPPLYFAIL = -35, /**< Patch application failed */
+ GIT_EOWNER = -36, /**< The object is not owned by the current user */
+ GIT_TIMEOUT = -37, /**< The operation timed out */
+ GIT_EUNCHANGED = -38, /**< There were no changes */
+ GIT_ENOTSUPPORTED = -39, /**< An option is not supported */
+ GIT_EREADONLY = -40 /**< The subject is read-only */
} git_error_code;
/**
- * Structure to store extra details of the last error that occurred.
- *
- * This is kept on a per-thread basis if GIT_THREADS was defined when the
- * library was build, otherwise one is kept globally for the library
+ * Error classes are the category of error. They reflect the area of the
+ * code where an error occurred.
*/
-typedef struct {
- char *message;
- int klass;
-} git_error;
-
-/** Error classes */
typedef enum {
GIT_ERROR_NONE = 0,
GIT_ERROR_NOMEMORY,
@@ -106,59 +110,45 @@ typedef enum {
GIT_ERROR_FILESYSTEM,
GIT_ERROR_PATCH,
GIT_ERROR_WORKTREE,
- GIT_ERROR_SHA1,
+ GIT_ERROR_SHA,
GIT_ERROR_HTTP,
- GIT_ERROR_INTERNAL
+ GIT_ERROR_INTERNAL,
+ GIT_ERROR_GRAFTS
} git_error_t;
/**
- * Return the last `git_error` object that was generated for the
- * current thread.
- *
- * The default behaviour of this function is to return NULL if no previous error has occurred.
- * However, libgit2's error strings are not cleared aggressively, so a prior
- * (unrelated) error may be returned. This can be avoided by only calling
- * this function if the prior call to a libgit2 API returned an error.
+ * Structure to store extra details of the last error that occurred.
*
- * @return A git_error object.
- */
-GIT_EXTERN(const git_error *) git_error_last(void);
-
-/**
- * Clear the last library error that occurred for this thread.
+ * This is kept on a per-thread basis if GIT_THREADS was defined when the
+ * library was build, otherwise one is kept globally for the library
*/
-GIT_EXTERN(void) git_error_clear(void);
+typedef struct {
+ char *message; /**< The error message for the last error. */
+ int klass; /**< The category of the last error. @type git_error_t */
+} git_error;
/**
- * Set the error message string for this thread.
+ * Return the last `git_error` object that was generated for the
+ * current thread.
*
- * This function is public so that custom ODB backends and the like can
- * relay an error message through libgit2. Most regular users of libgit2
- * will never need to call this function -- actually, calling it in most
- * circumstances (for example, calling from within a callback function)
- * will just end up having the value overwritten by libgit2 internals.
+ * This function will never return NULL.
*
- * This error message is stored in thread-local storage and only applies
- * to the particular thread that this libgit2 call is made from.
+ * Callers should not rely on this to determine whether an error has
+ * occurred. For error checking, callers should examine the return
+ * codes of libgit2 functions.
*
- * @param error_class One of the `git_error_t` enum above describing the
- * general subsystem that is responsible for the error.
- * @param string The formatted error message to keep
- * @return 0 on success or -1 on failure
- */
-GIT_EXTERN(int) git_error_set_str(int error_class, const char *string);
-
-/**
- * Set the error message to a special value for memory allocation failure.
+ * This call can only reliably report error messages when an error
+ * has occurred. (It may contain stale information if it is called
+ * after a different function that succeeds.)
+ *
+ * The memory for this object is managed by libgit2. It should not
+ * be freed.
*
- * The normal `git_error_set_str()` function attempts to `strdup()` the
- * string that is passed in. This is not a good idea when the error in
- * question is a memory allocation failure. That circumstance has a
- * special setter function that sets the error string to a known and
- * statically allocated internal value.
+ * @return A pointer to a `git_error` object that describes the error.
*/
-GIT_EXTERN(void) git_error_set_oom(void);
+GIT_EXTERN(const git_error *) git_error_last(void);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/experimental.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/experimental.h
new file mode 100644
index 0000000..543f62f
--- /dev/null
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/experimental.h
@@ -0,0 +1,13 @@
+/*
+ * Copyright (C) the libgit2 contributors. All rights reserved.
+ *
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
+ * a Linking Exception. For full terms see the included COPYING file.
+ */
+
+#ifndef INCLUDE_experimental_h__
+#define INCLUDE_experimental_h__
+
+/* #undef GIT_EXPERIMENTAL_SHA256 */
+
+#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/filter.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/filter.h
index 0465e5b..cf6c5f5 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/filter.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/filter.h
@@ -14,9 +14,15 @@
/**
* @file git2/filter.h
- * @brief Git filter APIs
- *
+ * @brief Filters modify files during checkout or commit
* @ingroup Git
+ *
+ * During checkout, filters update a file from a "canonical" state to
+ * a format appropriate for the local filesystem; during commit, filters
+ * produce the canonical state. For example, on Windows, the line ending
+ * filters _may_ take a canonical state (with Unix-style newlines) in
+ * the repository, and place the contents on-disk with Windows-style
+ * `\r\n` line endings.
* @{
*/
GIT_BEGIN_DECL
@@ -32,7 +38,7 @@ typedef enum {
GIT_FILTER_TO_WORKTREE = 0,
GIT_FILTER_SMUDGE = GIT_FILTER_TO_WORKTREE,
GIT_FILTER_TO_ODB = 1,
- GIT_FILTER_CLEAN = GIT_FILTER_TO_ODB,
+ GIT_FILTER_CLEAN = GIT_FILTER_TO_ODB
} git_filter_mode_t;
/**
@@ -54,7 +60,7 @@ typedef enum {
* Load attributes from `.gitattributes` in a given commit.
* This can only be specified in a `git_filter_options`.
*/
- GIT_FILTER_ATTRIBUTES_FROM_COMMIT = (1u << 3),
+ GIT_FILTER_ATTRIBUTES_FROM_COMMIT = (1u << 3)
} git_filter_flag_t;
/**
@@ -79,8 +85,11 @@ typedef struct {
git_oid attr_commit_id;
} git_filter_options;
- #define GIT_FILTER_OPTIONS_VERSION 1
- #define GIT_FILTER_OPTIONS_INIT {GIT_FILTER_OPTIONS_VERSION}
+/** Current version for the `git_filter_options` structure */
+#define GIT_FILTER_OPTIONS_VERSION 1
+
+/** Static constructor for `git_filter_options` */
+#define GIT_FILTER_OPTIONS_INIT {GIT_FILTER_OPTIONS_VERSION}
/**
* A filter that can transform file data
@@ -196,6 +205,7 @@ GIT_EXTERN(int) git_filter_list_apply_to_buffer(
* @param repo the repository in which to perform the filtering
* @param path the path of the file to filter, a relative path will be
* taken as relative to the workdir
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_filter_list_apply_to_file(
git_buf *out,
@@ -209,6 +219,7 @@ GIT_EXTERN(int) git_filter_list_apply_to_file(
* @param out buffer into which to store the filtered file
* @param filters the list of filters to apply
* @param blob the blob to filter
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_filter_list_apply_to_blob(
git_buf *out,
@@ -222,6 +233,7 @@ GIT_EXTERN(int) git_filter_list_apply_to_blob(
* @param buffer the buffer to filter
* @param len the size of the buffer
* @param target the stream into which the data will be written
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_filter_list_stream_buffer(
git_filter_list *filters,
@@ -237,6 +249,7 @@ GIT_EXTERN(int) git_filter_list_stream_buffer(
* @param path the path of the file to filter, a relative path will be
* taken as relative to the workdir
* @param target the stream into which the data will be written
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_filter_list_stream_file(
git_filter_list *filters,
@@ -250,6 +263,7 @@ GIT_EXTERN(int) git_filter_list_stream_file(
* @param filters the list of filters to apply
* @param blob the blob to filter
* @param target the stream into which the data will be written
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_filter_list_stream_blob(
git_filter_list *filters,
@@ -263,9 +277,7 @@ GIT_EXTERN(int) git_filter_list_stream_blob(
*/
GIT_EXTERN(void) git_filter_list_free(git_filter_list *filters);
-
-GIT_END_DECL
-
/** @} */
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/global.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/global.h
index 2a87e10..f15eb2d 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/global.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/global.h
@@ -9,6 +9,12 @@
#include "common.h"
+/**
+ * @file git2/global.h
+ * @brief libgit2 library initializer and shutdown functionality
+ * @ingroup Git
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -32,7 +38,7 @@ GIT_EXTERN(int) git_libgit2_init(void);
* many times as `git_libgit2_init()` was called - it will return the
* number of remainining initializations that have not been shutdown
* (after this one).
- *
+ *
* @return the number of remaining initializations of the library, or an
* error code.
*/
@@ -40,5 +46,6 @@ GIT_EXTERN(int) git_libgit2_shutdown(void);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/graph.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/graph.h
index 712ae47..1792020 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/graph.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/graph.h
@@ -13,7 +13,7 @@
/**
* @file git2/graph.h
- * @brief Git graph traversal routines
+ * @brief Graph traversal routines
* @defgroup git_revwalk Git graph traversal routines
* @ingroup Git
* @{
@@ -33,6 +33,7 @@ GIT_BEGIN_DECL
* @param repo the repository where the commits exist
* @param local the commit for local
* @param upstream the commit for upstream
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_graph_ahead_behind(size_t *ahead, size_t *behind, git_repository *repo, const git_oid *local, const git_oid *upstream);
@@ -60,8 +61,8 @@ GIT_EXTERN(int) git_graph_descendant_of(
*
* @param repo the repository where the commits exist
* @param commit a previously loaded commit
- * @param length the number of commits in the provided `descendant_array`
* @param descendant_array oids of the commits
+ * @param length the number of commits in the provided `descendant_array`
* @return 1 if the given commit is an ancestor of any of the given potential
* descendants, 0 if not, error code otherwise.
*/
@@ -73,4 +74,5 @@ GIT_EXTERN(int) git_graph_reachable_from_any(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/ignore.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/ignore.h
index f5143f3..730f221 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/ignore.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/ignore.h
@@ -10,6 +10,15 @@
#include "common.h"
#include "types.h"
+/**
+ * @file git2/ignore.h
+ * @brief Ignore particular untracked files
+ * @ingroup Git
+ * @{
+ *
+ * When examining the repository status, git can optionally ignore
+ * specified untracked files.
+ */
GIT_BEGIN_DECL
/**
@@ -29,7 +38,7 @@ GIT_BEGIN_DECL
* This would add three rules to the ignores.
*
* @param repo The repository to add ignore rules to.
- * @param rules Text of rules, a la the contents of a .gitignore file.
+ * @param rules Text of rules, the contents to add on a .gitignore file.
* It is okay to have multiple rules in the text; if so,
* each rule should be terminated with a newline.
* @return 0 on success
@@ -73,6 +82,7 @@ GIT_EXTERN(int) git_ignore_path_is_ignored(
git_repository *repo,
const char *path);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/index.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/index.h
index 532a520..0adff1a 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/index.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/index.h
@@ -15,9 +15,14 @@
/**
* @file git2/index.h
- * @brief Git index parsing and manipulation routines
+ * @brief Index (aka "cache" aka "staging area")
* @defgroup git_index Git index parsing and manipulation routines
* @ingroup Git
+ *
+ * The index (or "cache", or "staging area") is the contents of the
+ * next commit. In addition, the index stores other data, such as
+ * conflicts that occurred during the last merge operation, and
+ * the "treecache" to speed up various on-disk operations.
* @{
*/
GIT_BEGIN_DECL
@@ -77,8 +82,11 @@ typedef struct git_index_entry {
* data in the `flags`.
*/
+/** Mask for name length */
#define GIT_INDEX_ENTRY_NAMEMASK (0x0fff)
+/** Mask for index entry stage */
#define GIT_INDEX_ENTRY_STAGEMASK (0x3000)
+/** Shift bits for index entry */
#define GIT_INDEX_ENTRY_STAGESHIFT 12
/**
@@ -86,12 +94,20 @@ typedef struct git_index_entry {
*/
typedef enum {
GIT_INDEX_ENTRY_EXTENDED = (0x4000),
- GIT_INDEX_ENTRY_VALID = (0x8000),
+ GIT_INDEX_ENTRY_VALID = (0x8000)
} git_index_entry_flag_t;
+/**
+ * Macro to get the stage value (0 for the "main index", or a conflict
+ * value) from an index entry.
+ */
#define GIT_INDEX_ENTRY_STAGE(E) \
(((E)->flags & GIT_INDEX_ENTRY_STAGEMASK) >> GIT_INDEX_ENTRY_STAGESHIFT)
+/**
+ * Macro to set the stage value (0 for the "main index", or a conflict
+ * value) for an index entry.
+ */
#define GIT_INDEX_ENTRY_STAGE_SET(E,S) do { \
(E)->flags = ((E)->flags & ~GIT_INDEX_ENTRY_STAGEMASK) | \
(((S) & 0x03) << GIT_INDEX_ENTRY_STAGESHIFT); } while (0)
@@ -119,7 +135,7 @@ typedef enum {
GIT_INDEX_ENTRY_EXTENDED_FLAGS = (GIT_INDEX_ENTRY_INTENT_TO_ADD | GIT_INDEX_ENTRY_SKIP_WORKTREE),
- GIT_INDEX_ENTRY_UPTODATE = (1 << 2),
+ GIT_INDEX_ENTRY_UPTODATE = (1 << 2)
} git_index_entry_extended_flag_t;
/** Capabilities of system that affect index actions. */
@@ -127,11 +143,18 @@ typedef enum {
GIT_INDEX_CAPABILITY_IGNORE_CASE = 1,
GIT_INDEX_CAPABILITY_NO_FILEMODE = 2,
GIT_INDEX_CAPABILITY_NO_SYMLINKS = 4,
- GIT_INDEX_CAPABILITY_FROM_OWNER = -1,
+ GIT_INDEX_CAPABILITY_FROM_OWNER = -1
} git_index_capability_t;
-/** Callback for APIs that add/remove/update files matching pathspec */
+/**
+ * Callback for APIs that add/remove/update files matching pathspec
+ *
+ * @param path the path
+ * @param matched_pathspec the given pathspec
+ * @param payload the user-specified payload
+ * @return 0 to continue with the index operation, positive number to skip this file for the index operation, negative number on failure
+ */
typedef int GIT_CALLBACK(git_index_matched_path_cb)(
const char *path, const char *matched_pathspec, void *payload);
@@ -140,7 +163,7 @@ typedef enum {
GIT_INDEX_ADD_DEFAULT = 0,
GIT_INDEX_ADD_FORCE = (1u << 0),
GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH = (1u << 1),
- GIT_INDEX_ADD_CHECK_PATHSPEC = (1u << 2),
+ GIT_INDEX_ADD_CHECK_PATHSPEC = (1u << 2)
} git_index_add_option_t;
/** Git index stage states */
@@ -163,9 +186,77 @@ typedef enum {
GIT_INDEX_STAGE_OURS = 2,
/** The "theirs" side of a conflict. */
- GIT_INDEX_STAGE_THEIRS = 3,
+ GIT_INDEX_STAGE_THEIRS = 3
} git_index_stage_t;
+#ifdef GIT_EXPERIMENTAL_SHA256
+
+/**
+ * The options for opening or creating an index.
+ *
+ * Initialize with `GIT_INDEX_OPTIONS_INIT`. Alternatively, you can
+ * use `git_index_options_init`.
+ *
+ * @options[version] GIT_INDEX_OPTIONS_VERSION
+ * @options[init_macro] GIT_INDEX_OPTIONS_INIT
+ * @options[init_function] git_index_options_init
+ */
+typedef struct git_index_options {
+ unsigned int version; /**< The version */
+
+ /**
+ * The object ID type for the object IDs that exist in the index.
+ *
+ * If this is not specified, this defaults to `GIT_OID_SHA1`.
+ */
+ git_oid_t oid_type;
+} git_index_options;
+
+/** Current version for the `git_index_options` structure */
+#define GIT_INDEX_OPTIONS_VERSION 1
+
+/** Static constructor for `git_index_options` */
+#define GIT_INDEX_OPTIONS_INIT { GIT_INDEX_OPTIONS_VERSION }
+
+/**
+ * Initialize git_index_options structure
+ *
+ * Initializes a `git_index_options` with default values. Equivalent to creating
+ * an instance with GIT_INDEX_OPTIONS_INIT.
+ *
+ * @param opts The `git_index_options` struct to initialize.
+ * @param version The struct version; pass `GIT_INDEX_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_index_options_init(
+ git_index_options *opts,
+ unsigned int version);
+
+/**
+ * Creates a new bare Git index object, without a repository to back
+ * it. This index object is capable of storing SHA256 objects.
+ *
+ * @param index_out the pointer for the new index
+ * @param index_path the path to the index file in disk
+ * @param opts the options for opening the index, or NULL
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_index_open(
+ git_index **index_out,
+ const char *index_path,
+ const git_index_options *opts);
+
+/**
+ * Create an in-memory index object.
+ *
+ * @param index_out the pointer for the new index
+ * @param opts the options for opening the index, or NULL
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_index_new(git_index **index_out, const git_index_options *opts);
+
+#else
+
/**
* Create a new bare Git index object as a memory representation
* of the Git index file in 'index_path', without a repository
@@ -180,11 +271,11 @@ typedef enum {
*
* The index must be freed once it's no longer in use.
*
- * @param out the pointer for the new index
+ * @param index_out the pointer for the new index
* @param index_path the path to the index file in disk
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_index_open(git_index **out, const char *index_path);
+GIT_EXTERN(int) git_index_open(git_index **index_out, const char *index_path);
/**
* Create an in-memory index object.
@@ -194,10 +285,12 @@ GIT_EXTERN(int) git_index_open(git_index **out, const char *index_path);
*
* The index must be freed once it's no longer in use.
*
- * @param out the pointer for the new index
+ * @param index_out the pointer for the new index
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_index_new(git_index **out);
+GIT_EXTERN(int) git_index_new(git_index **index_out);
+
+#endif
/**
* Free an existing index object.
@@ -296,6 +389,7 @@ GIT_EXTERN(int) git_index_write(git_index *index);
*/
GIT_EXTERN(const char *) git_index_path(const git_index *index);
+#ifndef GIT_DEPRECATE_HARD
/**
* Get the checksum of the index
*
@@ -303,10 +397,12 @@ GIT_EXTERN(const char *) git_index_path(const git_index *index);
* last 20 bytes which are the checksum itself). In cases where the
* index does not exist on-disk, it will be zeroed out.
*
+ * @deprecated this function is deprecated with no replacement
* @param index an existing index object
* @return a pointer to the checksum of the index
*/
GIT_EXTERN(const git_oid *) git_index_checksum(git_index *index);
+#endif
/**
* Read a tree into the index file with stats
@@ -491,6 +587,7 @@ GIT_EXTERN(int) git_index_entry_is_conflict(const git_index_entry *entry);
*
* @param iterator_out The newly created iterator
* @param index The index to iterate
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_index_iterator_new(
git_index_iterator **iterator_out,
@@ -787,6 +884,7 @@ GIT_EXTERN(int) git_index_conflict_cleanup(git_index *index);
/**
* Determine if the index contains entries representing file conflicts.
*
+ * @param index An existing index object.
* @return 1 if at least one conflict is found, 0 otherwise.
*/
GIT_EXTERN(int) git_index_has_conflicts(const git_index *index);
@@ -811,6 +909,7 @@ GIT_EXTERN(int) git_index_conflict_iterator_new(
* @param ancestor_out Pointer to store the ancestor side of the conflict
* @param our_out Pointer to store our side of the conflict
* @param their_out Pointer to store their side of the conflict
+ * @param iterator The conflict iterator.
* @return 0 (no error), GIT_ITEROVER (iteration is done) or an error code
* (negative value)
*/
@@ -830,4 +929,5 @@ GIT_EXTERN(void) git_index_conflict_iterator_free(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/indexer.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/indexer.h
index a434d24..9aaedc3 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/indexer.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/indexer.h
@@ -4,13 +4,23 @@
* This file is part of libgit2, distributed under the GNU GPL v2 with
* a Linking Exception. For full terms see the included COPYING file.
*/
-#ifndef _INCLUDE_git_indexer_h__
-#define _INCLUDE_git_indexer_h__
+#ifndef INCLUDE_git_indexer_h__
+#define INCLUDE_git_indexer_h__
#include "common.h"
#include "types.h"
#include "oid.h"
+/**
+ * @file git2/indexer.h
+ * @brief Packfile indexing
+ * @ingroup Git
+ * @{
+ *
+ * Indexing is the operation of taking a packfile - which is simply a
+ * collection of unordered commits - and producing an "index" so that
+ * one can lookup a commit in the packfile by object ID.
+ */
GIT_BEGIN_DECL
/** A git indexer object */
@@ -53,6 +63,7 @@ typedef struct git_indexer_progress {
*
* @param stats Structure containing information about the state of the transfer
* @param payload Payload provided by caller
+ * @return 0 on success or an error code
*/
typedef int GIT_CALLBACK(git_indexer_progress_cb)(const git_indexer_progress *stats, void *payload);
@@ -62,6 +73,22 @@ typedef int GIT_CALLBACK(git_indexer_progress_cb)(const git_indexer_progress *st
typedef struct git_indexer_options {
unsigned int version;
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /** permissions to use creating packfile or 0 for defaults */
+ unsigned int mode;
+
+ /** the type of object ids in the packfile or 0 for SHA1 */
+ git_oid_t oid_type;
+
+ /**
+ * object database from which to read base objects when
+ * fixing thin packs. This can be NULL if there are no thin
+ * packs; if a thin pack is encountered, an error will be
+ * returned if there are bases missing.
+ */
+ git_odb *odb;
+#endif
+
/** progress_cb function to call with progress information */
git_indexer_progress_cb progress_cb;
@@ -72,7 +99,10 @@ typedef struct git_indexer_options {
unsigned char verify;
} git_indexer_options;
+/** Current version for the `git_indexer_options` structure */
#define GIT_INDEXER_OPTIONS_VERSION 1
+
+/** Static constructor for `git_indexer_options` */
#define GIT_INDEXER_OPTIONS_INIT { GIT_INDEXER_OPTIONS_VERSION }
/**
@@ -87,6 +117,20 @@ GIT_EXTERN(int) git_indexer_options_init(
git_indexer_options *opts,
unsigned int version);
+#ifdef GIT_EXPERIMENTAL_SHA256
+/**
+ * Create a new indexer instance
+ *
+ * @param out where to store the indexer instance
+ * @param path to the directory where the packfile should be stored
+ * @param opts the options to create the indexer with
+ * @return 0 or an error code.
+ */
+GIT_EXTERN(int) git_indexer_new(
+ git_indexer **out,
+ const char *path,
+ git_indexer_options *opts);
+#else
/**
* Create a new indexer instance
*
@@ -98,6 +142,7 @@ GIT_EXTERN(int) git_indexer_options_init(
* will be returned if there are bases missing)
* @param opts Optional structure containing additional options. See
* `git_indexer_options` above.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_indexer_new(
git_indexer **out,
@@ -105,6 +150,7 @@ GIT_EXTERN(int) git_indexer_new(
unsigned int mode,
git_odb *odb,
git_indexer_options *opts);
+#endif
/**
* Add data to the indexer
@@ -113,6 +159,7 @@ GIT_EXTERN(int) git_indexer_new(
* @param data the data to add
* @param size the size of the data in bytes
* @param stats stat storage
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_indexer_append(git_indexer *idx, const void *data, size_t size, git_indexer_progress *stats);
@@ -122,18 +169,35 @@ GIT_EXTERN(int) git_indexer_append(git_indexer *idx, const void *data, size_t si
* Resolve any pending deltas and write out the index file
*
* @param idx the indexer
+ * @param stats Stat storage.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_indexer_commit(git_indexer *idx, git_indexer_progress *stats);
+#ifndef GIT_DEPRECATE_HARD
/**
* Get the packfile's hash
*
* A packfile's name is derived from the sorted hashing of all object
* names. This is only correct after the index has been finalized.
*
+ * @deprecated use git_indexer_name
* @param idx the indexer instance
+ * @return the packfile's hash
*/
GIT_EXTERN(const git_oid *) git_indexer_hash(const git_indexer *idx);
+#endif
+
+/**
+ * Get the unique name for the resulting packfile.
+ *
+ * The packfile's name is derived from the packfile's content.
+ * This is only correct after the index has been finalized.
+ *
+ * @param idx the indexer instance
+ * @return a NUL terminated string for the packfile name
+ */
+GIT_EXTERN(const char *) git_indexer_name(const git_indexer *idx);
/**
* Free the indexer and its resources
@@ -142,6 +206,7 @@ GIT_EXTERN(const git_oid *) git_indexer_hash(const git_indexer *idx);
*/
GIT_EXTERN(void) git_indexer_free(git_indexer *idx);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/mailmap.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/mailmap.h
index 7c3f60f..fd6ae71 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/mailmap.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/mailmap.h
@@ -13,10 +13,15 @@
/**
* @file git2/mailmap.h
- * @brief Mailmap parsing routines
+ * @brief Mailmaps provide alternate email addresses for users
* @defgroup git_mailmap Git mailmap routines
* @ingroup Git
* @{
+ *
+ * A mailmap can be used to specify alternate email addresses for
+ * repository committers or authors. This allows systems to map
+ * commits made using different email addresses to the same logical
+ * person.
*/
GIT_BEGIN_DECL
@@ -112,4 +117,5 @@ GIT_EXTERN(int) git_mailmap_resolve_signature(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/merge.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/merge.h
index fc27c9d..be3b065 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/merge.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/merge.h
@@ -17,9 +17,12 @@
/**
* @file git2/merge.h
- * @brief Git merge routines
+ * @brief Merge re-joins diverging branches of history
* @defgroup git_merge Git merge routines
* @ingroup Git
+ *
+ * Merge will take two commits and attempt to produce a commit that
+ * includes the changes that were made in both branches.
* @{
*/
GIT_BEGIN_DECL
@@ -45,7 +48,10 @@ typedef struct {
unsigned int mode;
} git_merge_file_input;
+/** Current version for the `git_merge_file_input_options` structure */
#define GIT_MERGE_FILE_INPUT_VERSION 1
+
+/** Static constructor for `git_merge_file_input_options` */
#define GIT_MERGE_FILE_INPUT_INIT {GIT_MERGE_FILE_INPUT_VERSION}
/**
@@ -92,6 +98,14 @@ typedef enum {
* merge base to `git-merge-resolve`.
*/
GIT_MERGE_NO_RECURSIVE = (1 << 3),
+
+ /**
+ * Treat this merge as if it is to produce the virtual base
+ * of a recursive merge. This will ensure that there are
+ * no conflicts, any conflicting regions will keep conflict
+ * markers in the merge result.
+ */
+ GIT_MERGE_VIRTUAL_BASE = (1 << 4)
} git_merge_flag_t;
/**
@@ -127,7 +141,7 @@ typedef enum {
* which has the result of combining both files. The index will not
* record a conflict.
*/
- GIT_MERGE_FILE_FAVOR_UNION = 3,
+ GIT_MERGE_FILE_FAVOR_UNION = 3
} git_merge_file_favor_t;
/**
@@ -160,8 +174,19 @@ typedef enum {
/** Take extra time to find minimal diff */
GIT_MERGE_FILE_DIFF_MINIMAL = (1 << 7),
+
+ /** Create zdiff3 ("zealous diff3")-style files */
+ GIT_MERGE_FILE_STYLE_ZDIFF3 = (1 << 8),
+
+ /**
+ * Do not produce file conflicts when common regions have
+ * changed; keep the conflict markers in the file and accept
+ * that as the merge result.
+ */
+ GIT_MERGE_FILE_ACCEPT_CONFLICTS = (1 << 9)
} git_merge_file_flag_t;
+/** Default size for conflict markers */
#define GIT_MERGE_CONFLICT_MARKER_SIZE 7
/**
@@ -199,7 +224,10 @@ typedef struct {
unsigned short marker_size;
} git_merge_file_options;
+/** Current version for the `git_merge_file_options` structure */
#define GIT_MERGE_FILE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_merge_file_options` */
#define GIT_MERGE_FILE_OPTIONS_INIT {GIT_MERGE_FILE_OPTIONS_VERSION}
/**
@@ -294,7 +322,10 @@ typedef struct {
uint32_t file_flags;
} git_merge_options;
+/** Current version for the `git_merge_options` structure */
#define GIT_MERGE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_merge_options` */
#define GIT_MERGE_OPTIONS_INIT { \
GIT_MERGE_OPTIONS_VERSION, GIT_MERGE_FIND_RENAMES }
@@ -341,7 +372,7 @@ typedef enum {
* a valid commit. No merge can be performed, but the caller may wish
* to simply set HEAD to the target commit(s).
*/
- GIT_MERGE_ANALYSIS_UNBORN = (1 << 3),
+ GIT_MERGE_ANALYSIS_UNBORN = (1 << 3)
} git_merge_analysis_t;
/**
@@ -364,7 +395,7 @@ typedef enum {
* There is a `merge.ff=only` configuration setting, suggesting that
* the user only wants fast-forward merges.
*/
- GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY = (1 << 1),
+ GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY = (1 << 1)
} git_merge_preference_t;
/**
@@ -372,6 +403,7 @@ typedef enum {
* merging them into the HEAD of the repository.
*
* @param analysis_out analysis enumeration that the result is written into
+ * @param preference_out One of the `git_merge_preference_t` flag.
* @param repo the repository to merge
* @param their_heads the heads to merge into
* @param their_heads_len the number of heads to merge
@@ -389,6 +421,7 @@ GIT_EXTERN(int) git_merge_analysis(
* merging them into a reference.
*
* @param analysis_out analysis enumeration that the result is written into
+ * @param preference_out One of the `git_merge_preference_t` flag.
* @param repo the repository to merge
* @param our_ref the reference to perform the analysis from
* @param their_heads the heads to merge into
@@ -451,6 +484,37 @@ GIT_EXTERN(int) git_merge_base_many(
/**
* Find all merge bases given a list of commits
*
+ * This behaves similar to [`git merge-base`](https://git-scm.com/docs/git-merge-base#_discussion).
+ *
+ * Given three commits `a`, `b`, and `c`, `merge_base_many`
+ * will compute a hypothetical commit `m`, which is a merge between `b`
+ * and `c`.
+
+ * For example, with the following topology:
+ * ```text
+ * o---o---o---o---C
+ * /
+ * / o---o---o---B
+ * / /
+ * ---2---1---o---o---o---A
+ * ```
+ *
+ * the result of `merge_base_many` given `a`, `b`, and `c` is 1. This is
+ * because the equivalent topology with the imaginary merge commit `m`
+ * between `b` and `c` is:
+ * ```text
+ * o---o---o---o---o
+ * / \
+ * / o---o---o---o---M
+ * / /
+ * ---2---1---o---o---o---A
+ * ```
+ *
+ * and the result of `merge_base_many` given `a` and `m` is 1.
+ *
+ * If you're looking to recieve the common ancestor between all the
+ * given commits, use `merge_base_octopus`.
+ *
* @param out array in which to store the resulting ids
* @param repo the repository where the commits exist
* @param length The number of commits in the provided `input_array`
@@ -583,7 +647,7 @@ GIT_EXTERN(int) git_merge_commits(
* completes, resolve any conflicts and prepare a commit.
*
* For compatibility with git, the repository is put into a merging
- * state. Once the commit is done (or if the uses wishes to abort),
+ * state. Once the commit is done (or if the user wishes to abort),
* you should clear this state by calling
* `git_repository_state_cleanup()`.
*
@@ -603,4 +667,5 @@ GIT_EXTERN(int) git_merge(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/message.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/message.h
index 42ca3e5..874d027 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/message.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/message.h
@@ -12,7 +12,7 @@
/**
* @file git2/message.h
- * @brief Git message management routines
+ * @brief Commit messages
* @ingroup Git
* @{
*/
@@ -75,10 +75,12 @@ GIT_EXTERN(int) git_message_trailers(git_message_trailer_array *arr, const char
/**
* Clean's up any allocated memory in the git_message_trailer_array filled by
* a call to git_message_trailers.
+ *
+ * @param arr The trailer to free.
*/
GIT_EXTERN(void) git_message_trailer_array_free(git_message_trailer_array *arr);
/** @} */
GIT_END_DECL
-#endif /* INCLUDE_git_message_h__ */
+#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/net.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/net.h
index 8103eaf..93bdac4 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/net.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/net.h
@@ -13,12 +13,13 @@
/**
* @file git2/net.h
- * @brief Git networking declarations
+ * @brief Low-level networking functionality
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/** Default git protocol port number */
#define GIT_DEFAULT_PORT "9418"
/**
@@ -51,4 +52,5 @@ struct git_remote_head {
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/notes.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/notes.h
index c135881..3784d5f 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/notes.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/notes.h
@@ -11,7 +11,7 @@
/**
* @file git2/notes.h
- * @brief Git notes management routines
+ * @brief Notes are metadata attached to an object
* @defgroup git_note Git notes management routines
* @ingroup Git
* @{
@@ -21,13 +21,15 @@ GIT_BEGIN_DECL
/**
* Callback for git_note_foreach.
*
- * Receives:
- * - blob_id: Oid of the blob containing the message
- * - annotated_object_id: Oid of the git object being annotated
- * - payload: Payload data passed to `git_note_foreach`
+ * @param blob_id object id of the blob containing the message
+ * @param annotated_object_id the id of the object being annotated
+ * @param payload user-specified data to the foreach function
+ * @return 0 on success, or a negative number on failure
*/
typedef int GIT_CALLBACK(git_note_foreach_cb)(
- const git_oid *blob_id, const git_oid *annotated_object_id, void *payload);
+ const git_oid *blob_id,
+ const git_oid *annotated_object_id,
+ void *payload);
/**
* note iterator
@@ -303,4 +305,5 @@ GIT_EXTERN(int) git_note_foreach(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/object.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/object.h
index 984dbb7..8a50239 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/object.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/object.h
@@ -14,13 +14,14 @@
/**
* @file git2/object.h
- * @brief Git revision object management routines
+ * @brief Objects are blobs (files), trees (directories), commits, and annotated tags
* @defgroup git_object Git revision object management routines
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/** Maximum size of a git object */
#define GIT_OBJECT_SIZE_MAX UINT64_MAX
/**
@@ -53,18 +54,18 @@ GIT_EXTERN(int) git_object_lookup(
*
* The object obtained will be so that its identifier
* matches the first 'len' hexadecimal characters
- * (packets of 4 bits) of the given 'id'.
- * 'len' must be at least GIT_OID_MINPREFIXLEN, and
- * long enough to identify a unique object matching
- * the prefix; otherwise the method will fail.
+ * (packets of 4 bits) of the given `id`. `len` must be
+ * at least `GIT_OID_MINPREFIXLEN`, and long enough to
+ * identify a unique object matching the prefix; otherwise
+ * the method will fail.
*
* The generated reference is owned by the repository and
* should be closed with the `git_object_free` method
* instead of free'd manually.
*
- * The 'type' parameter must match the type of the object
+ * The `type` parameter must match the type of the object
* in the odb; the method will fail otherwise.
- * The special value 'GIT_OBJECT_ANY' may be passed to let
+ * The special value `GIT_OBJECT_ANY` may be passed to let
* the method guess the object's type.
*
* @param object_out pointer where to store the looked-up object
@@ -221,9 +222,58 @@ GIT_EXTERN(int) git_object_peel(
*
* @param dest Pointer to store the copy of the object
* @param source Original object to copy
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_object_dup(git_object **dest, git_object *source);
+#ifdef GIT_EXPERIMENTAL_SHA256
+/**
+ * Analyzes a buffer of raw object content and determines its validity.
+ * Tree, commit, and tag objects will be parsed and ensured that they
+ * are valid, parseable content. (Blobs are always valid by definition.)
+ * An error message will be set with an informative message if the object
+ * is not valid.
+ *
+ * @warning This function is experimental and its signature may change in
+ * the future.
+ *
+ * @param valid Output pointer to set with validity of the object content
+ * @param buf The contents to validate
+ * @param len The length of the buffer
+ * @param object_type The type of the object in the buffer
+ * @param oid_type The object ID type for the OIDs in the given buffer
+ * @return 0 on success or an error code
+ */
+GIT_EXTERN(int) git_object_rawcontent_is_valid(
+ int *valid,
+ const char *buf,
+ size_t len,
+ git_object_t object_type,
+ git_oid_t oid_type);
+#else
+/**
+ * Analyzes a buffer of raw object content and determines its validity.
+ * Tree, commit, and tag objects will be parsed and ensured that they
+ * are valid, parseable content. (Blobs are always valid by definition.)
+ * An error message will be set with an informative message if the object
+ * is not valid.
+ *
+ * @warning This function is experimental and its signature may change in
+ * the future.
+ *
+ * @param[out] valid Output pointer to set with validity of the object content
+ * @param buf The contents to validate
+ * @param len The length of the buffer
+ * @param object_type The type of the object in the buffer
+ * @return 0 on success or an error code
+ */
+GIT_EXTERN(int) git_object_rawcontent_is_valid(
+ int *valid,
+ const char *buf,
+ size_t len,
+ git_object_t object_type);
+#endif
+
/** @} */
GIT_END_DECL
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/odb.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/odb.h
index dd48455..e809c36 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/odb.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/odb.h
@@ -15,29 +15,91 @@
/**
* @file git2/odb.h
- * @brief Git object database routines
+ * @brief An object database manages the storage of git objects
* @defgroup git_odb Git object database routines
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/** Flags controlling the behavior of ODB lookup operations */
+typedef enum {
+ /**
+ * Don't call `git_odb_refresh` if the lookup fails. Useful when doing
+ * a batch of lookup operations for objects that may legitimately not
+ * exist. When using this flag, you may wish to manually call
+ * `git_odb_refresh` before processing a batch of objects.
+ */
+ GIT_ODB_LOOKUP_NO_REFRESH = (1 << 0)
+} git_odb_lookup_flags_t;
+
/**
* Function type for callbacks from git_odb_foreach.
+ *
+ * @param id an id of an object in the object database
+ * @param payload the payload from the initial call to git_odb_foreach
+ * @return 0 on success, or an error code
*/
typedef int GIT_CALLBACK(git_odb_foreach_cb)(const git_oid *id, void *payload);
+/** Options for configuring a loose object backend. */
+typedef struct {
+ unsigned int version; /**< version for the struct */
+
+ /**
+ * Type of object IDs to use for this object database, or
+ * 0 for default (currently SHA1).
+ */
+ git_oid_t oid_type;
+} git_odb_options;
+
+/** The current version of the diff options structure */
+#define GIT_ODB_OPTIONS_VERSION 1
+
+/**
+ * Stack initializer for odb options. Alternatively use
+ * `git_odb_options_init` programmatic initialization.
+ */
+#define GIT_ODB_OPTIONS_INIT { GIT_ODB_OPTIONS_VERSION }
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+
+/**
+ * Create a new object database with no backends.
+ *
+ * @param[out] odb location to store the database pointer, if opened.
+ * @param opts the options for this object database or NULL for defaults
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_new(git_odb **odb, const git_odb_options *opts);
+
+/**
+ * Create a new object database and automatically add loose and packed
+ * backends.
+ *
+ * @param[out] odb_out location to store the database pointer, if opened.
+ * Set to NULL if the open failed.
+ * @param objects_dir path of the backends' "objects" directory.
+ * @param opts the options for this object database or NULL for defaults
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_open(
+ git_odb **odb_out,
+ const char *objects_dir,
+ const git_odb_options *opts);
+
+#else
+
/**
* Create a new object database with no backends.
*
* Before the ODB can be used for read/writing, a custom database
* backend must be manually added using `git_odb_add_backend()`
*
- * @param out location to store the database pointer, if opened.
- * Set to NULL if the open failed.
+ * @param[out] odb location to store the database pointer, if opened.
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_new(git_odb **out);
+GIT_EXTERN(int) git_odb_new(git_odb **odb);
/**
* Create a new object database and automatically add
@@ -50,12 +112,13 @@ GIT_EXTERN(int) git_odb_new(git_odb **out);
* assuming `objects_dir` as the Objects folder which
* contains a 'pack/' folder with the corresponding data
*
- * @param out location to store the database pointer, if opened.
+ * @param[out] odb_out location to store the database pointer, if opened.
* Set to NULL if the open failed.
* @param objects_dir path of the backends' "objects" directory.
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_open(git_odb **out, const char *objects_dir);
+GIT_EXTERN(int) git_odb_open(git_odb **odb_out, const char *objects_dir);
+#endif
/**
* Add an on-disk alternate to an existing Object DB.
@@ -91,13 +154,13 @@ GIT_EXTERN(void) git_odb_free(git_odb *db);
* internally cached, so it should be closed
* by the user once it's no longer in use.
*
- * @param out pointer where to store the read object
+ * @param[out] obj pointer where to store the read object
* @param db database to search for the object in.
* @param id identity of the object to read.
* @return 0 if the object was read, GIT_ENOTFOUND if the object is
* not in the database.
*/
-GIT_EXTERN(int) git_odb_read(git_odb_object **out, git_odb *db, const git_oid *id);
+GIT_EXTERN(int) git_odb_read(git_odb_object **obj, git_odb *db, const git_oid *id);
/**
* Read an object from the database, given a prefix
@@ -106,7 +169,7 @@ GIT_EXTERN(int) git_odb_read(git_odb_object **out, git_odb *db, const git_oid *i
* This method queries all available ODB backends
* trying to match the 'len' first hexadecimal
* characters of the 'short_id'.
- * The remaining (GIT_OID_HEXSZ-len)*4 bits of
+ * The remaining (GIT_OID_SHA1_HEXSIZE-len)*4 bits of
* 'short_id' must be 0s.
* 'len' must be at least GIT_OID_MINPREFIXLEN,
* and the prefix must be long enough to identify
@@ -117,7 +180,7 @@ GIT_EXTERN(int) git_odb_read(git_odb_object **out, git_odb *db, const git_oid *i
* internally cached, so it should be closed
* by the user once it's no longer in use.
*
- * @param out pointer where to store the read object
+ * @param[out] obj pointer where to store the read object
* @param db database to search for the object in.
* @param short_id a prefix of the id of the object to read.
* @param len the length of the prefix
@@ -125,7 +188,7 @@ GIT_EXTERN(int) git_odb_read(git_odb_object **out, git_odb *db, const git_oid *i
* database. GIT_EAMBIGUOUS if the prefix is ambiguous
* (several objects match the prefix)
*/
-GIT_EXTERN(int) git_odb_read_prefix(git_odb_object **out, git_odb *db, const git_oid *short_id, size_t len);
+GIT_EXTERN(int) git_odb_read_prefix(git_odb_object **obj, git_odb *db, const git_oid *short_id, size_t len);
/**
* Read the header of an object from the database, without
@@ -137,8 +200,8 @@ GIT_EXTERN(int) git_odb_read_prefix(git_odb_object **out, git_odb *db, const git
* of an object, so the whole object will be read and then the
* header will be returned.
*
- * @param len_out pointer where to store the length
- * @param type_out pointer where to store the type
+ * @param[out] len_out pointer where to store the length
+ * @param[out] type_out pointer where to store the type
* @param db database to search for the object in.
* @param id identity of the object to read.
* @return 0 if the object was read, GIT_ENOTFOUND if the object is not
@@ -155,6 +218,17 @@ GIT_EXTERN(int) git_odb_read_header(size_t *len_out, git_object_t *type_out, git
*/
GIT_EXTERN(int) git_odb_exists(git_odb *db, const git_oid *id);
+/**
+ * Determine if the given object can be found in the object database, with
+ * extended options.
+ *
+ * @param db database to be searched for the given object.
+ * @param id the object to search for.
+ * @param flags flags affecting the lookup (see `git_odb_lookup_flags_t`)
+ * @return 1 if the object was found, 0 otherwise
+ */
+GIT_EXTERN(int) git_odb_exists_ext(git_odb *db, const git_oid *id, unsigned int flags);
+
/**
* Determine if an object can be found in the object database by an
* abbreviated object ID.
@@ -192,12 +266,13 @@ typedef struct git_odb_expand_id {
/**
* Determine if one or more objects can be found in the object database
- * by their abbreviated object ID and type. The given array will be
- * updated in place: for each abbreviated ID that is unique in the
- * database, and of the given type (if specified), the full object ID,
- * object ID length (`GIT_OID_HEXSZ`) and type will be written back to
- * the array. For IDs that are not found (or are ambiguous), the
- * array entry will be zeroed.
+ * by their abbreviated object ID and type.
+ *
+ * The given array will be updated in place: for each abbreviated ID that is
+ * unique in the database, and of the given type (if specified),
+ * the full object ID, object ID length (`GIT_OID_SHA1_HEXSIZE`) and type will be
+ * written back to the array. For IDs that are not found (or are ambiguous),
+ * the array entry will be zeroed.
*
* Note that since this function operates on multiple objects, the
* underlying database will not be asked to be reloaded if an object is
@@ -231,7 +306,7 @@ GIT_EXTERN(int) git_odb_expand_ids(
* @param db database to refresh
* @return 0 on success, error code otherwise
*/
-GIT_EXTERN(int) git_odb_refresh(struct git_odb *db);
+GIT_EXTERN(int) git_odb_refresh(git_odb *db);
/**
* List all objects available in the database
@@ -246,7 +321,10 @@ GIT_EXTERN(int) git_odb_refresh(struct git_odb *db);
* @param payload data to pass to the callback
* @return 0 on success, non-zero callback return value, or error code
*/
-GIT_EXTERN(int) git_odb_foreach(git_odb *db, git_odb_foreach_cb cb, void *payload);
+GIT_EXTERN(int) git_odb_foreach(
+ git_odb *db,
+ git_odb_foreach_cb cb,
+ void *payload);
/**
* Write an object directly into the ODB
@@ -261,7 +339,7 @@ GIT_EXTERN(int) git_odb_foreach(git_odb *db, git_odb_foreach_cb cb, void *payloa
*
* @param out pointer to store the OID result of the write
* @param odb object database where to store the object
- * @param data buffer with the data to store
+ * @param data @type `const unsigned char *` buffer with the data to store
* @param len size of the buffer
* @param type type of the data to store
* @return 0 or an error code
@@ -323,6 +401,11 @@ GIT_EXTERN(int) git_odb_stream_finalize_write(git_oid *out, git_odb_stream *stre
* Read from an odb stream
*
* Most backends don't implement streaming reads
+ *
+ * @param stream the stream
+ * @param buffer a user-allocated buffer to store the data in.
+ * @param len the buffer's length
+ * @return the number of bytes read if succeeded, error code otherwise
*/
GIT_EXTERN(int) git_odb_stream_read(git_odb_stream *stream, char *buffer, size_t len);
@@ -383,6 +466,7 @@ GIT_EXTERN(int) git_odb_open_rstream(
* Be aware that this is called inline with network and indexing operations,
* so performance may be affected.
* @param progress_payload payload for the progress callback
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_odb_write_pack(
git_odb_writepack **out,
@@ -400,23 +484,59 @@ GIT_EXTERN(int) git_odb_write_pack(
* exist).
*
* @param db object database where the `multi-pack-index` file will be written.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_odb_write_multi_pack_index(
git_odb *db);
+#ifdef GIT_EXPERIMENTAL_SHA256
+
/**
- * Determine the object-ID (sha1 hash) of a data buffer
+ * Generate the object ID (in SHA1 or SHA256 format) for a given data buffer.
*
- * The resulting SHA-1 OID will be the identifier for the data
- * buffer as if the data buffer it were to written to the ODB.
+ * @param[out] oid the resulting object ID.
+ * @param data data to hash
+ * @param len size of the data
+ * @param object_type of the data to hash
+ * @param oid_type the oid type to hash to
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_hash(
+ git_oid *oid,
+ const void *data,
+ size_t len,
+ git_object_t object_type,
+ git_oid_t oid_type);
+
+/**
+ * Determine the object ID of a file on disk.
+ *
+ * @param[out] oid oid structure the result is written into.
+ * @param path file to read and determine object id for
+ * @param object_type of the data to hash
+ * @param oid_type the oid type to hash to
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_hashfile(
+ git_oid *oid,
+ const char *path,
+ git_object_t object_type,
+ git_oid_t oid_type);
+#else
+
+/**
+ * Determine the object-ID (sha1 or sha256 hash) of a data buffer
+ *
+ * The resulting OID will be the identifier for the data buffer as if
+ * the data buffer it were to written to the ODB.
*
- * @param out the resulting object-ID.
+ * @param[out] oid the resulting object-ID.
* @param data data to hash
* @param len size of the data
- * @param type of the data to hash
+ * @param object_type of the data to hash
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_hash(git_oid *out, const void *data, size_t len, git_object_t type);
+GIT_EXTERN(int) git_odb_hash(git_oid *oid, const void *data, size_t len, git_object_t object_type);
/**
* Read a file from disk and fill a git_oid with the object id
@@ -426,12 +546,14 @@ GIT_EXTERN(int) git_odb_hash(git_oid *out, const void *data, size_t len, git_obj
* the `-w` flag, however, with the --no-filters flag.
* If you need filters, see git_repository_hashfile.
*
- * @param out oid structure the result is written into.
+ * @param[out] oid oid structure the result is written into.
* @param path file to read and determine object id for
- * @param type the type of the object that will be hashed
+ * @param object_type of the data to hash
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_hashfile(git_oid *out, const char *path, git_object_t type);
+GIT_EXTERN(int) git_odb_hashfile(git_oid *oid, const char *path, git_object_t object_type);
+
+#endif
/**
* Create a copy of an odb_object
@@ -476,7 +598,7 @@ GIT_EXTERN(const git_oid *) git_odb_object_id(git_odb_object *object);
* This pointer is owned by the object and shall not be free'd.
*
* @param object the object
- * @return a pointer to the data
+ * @return @type `const unsigned char *` a pointer to the data
*/
GIT_EXTERN(const void *) git_odb_object_data(git_odb_object *object);
@@ -556,7 +678,7 @@ GIT_EXTERN(int) git_odb_get_backend(git_odb_backend **out, git_odb *odb, size_t
/**
* Set the git commit-graph for the ODB.
*
- * After a successfull call, the ownership of the cgraph parameter will be
+ * After a successful call, the ownership of the cgraph parameter will be
* transferred to libgit2, and the caller should not free it.
*
* The commit-graph can also be unset by explicitly passing NULL as the cgraph
@@ -570,4 +692,5 @@ GIT_EXTERN(int) git_odb_set_commit_graph(git_odb *odb, git_commit_graph *cgraph)
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/odb_backend.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/odb_backend.h
index c593bac..88ca29f 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/odb_backend.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/odb_backend.h
@@ -13,46 +13,135 @@
/**
* @file git2/backend.h
- * @brief Git custom backend functions
+ * @brief Object database backends manage the storage of git objects
* @defgroup git_odb Git object database routines
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/** Options for configuring a packfile object backend. */
+typedef struct {
+ unsigned int version; /**< version for the struct */
+
+ /**
+ * Type of object IDs to use for this object database, or
+ * 0 for default (currently SHA1).
+ */
+ git_oid_t oid_type;
+} git_odb_backend_pack_options;
+
+/** The current version of the diff options structure */
+#define GIT_ODB_BACKEND_PACK_OPTIONS_VERSION 1
+
+/**
+ * Stack initializer for odb pack backend options. Alternatively use
+ * `git_odb_backend_pack_options_init` programmatic initialization.
+ */
+#define GIT_ODB_BACKEND_PACK_OPTIONS_INIT \
+ { GIT_ODB_BACKEND_PACK_OPTIONS_VERSION }
+
+typedef enum {
+ GIT_ODB_BACKEND_LOOSE_FSYNC = (1 << 0)
+} git_odb_backend_loose_flag_t;
+
+/** Options for configuring a loose object backend. */
+typedef struct {
+ unsigned int version; /**< version for the struct */
+
+ /** A combination of the `git_odb_backend_loose_flag_t` types. */
+ uint32_t flags;
+
+ /**
+ * zlib compression level to use (0-9), where 1 is the fastest
+ * at the expense of larger files, and 9 produces the best
+ * compression at the expense of speed. 0 indicates that no
+ * compression should be performed. -1 is the default (currently
+ * optimizing for speed).
+ */
+ int compression_level;
+
+ /** Permissions to use creating a directory or 0 for defaults */
+ unsigned int dir_mode;
+
+ /** Permissions to use creating a file or 0 for defaults */
+ unsigned int file_mode;
+
+ /**
+ * Type of object IDs to use for this object database, or
+ * 0 for default (currently SHA1).
+ */
+ git_oid_t oid_type;
+} git_odb_backend_loose_options;
+
+/** The current version of the diff options structure */
+#define GIT_ODB_BACKEND_LOOSE_OPTIONS_VERSION 1
+
+/**
+ * Stack initializer for odb loose backend options. Alternatively use
+ * `git_odb_backend_loose_options_init` programmatic initialization.
+ */
+#define GIT_ODB_BACKEND_LOOSE_OPTIONS_INIT \
+ { GIT_ODB_BACKEND_LOOSE_OPTIONS_VERSION, 0, -1 }
+
/*
* Constructors for in-box ODB backends.
*/
+#ifdef GIT_EXPERIMENTAL_SHA256
+
/**
- * Create a backend for the packfiles.
+ * Create a backend for a directory containing packfiles.
*
- * @param out location to store the odb backend pointer
+ * @param[out] out location to store the odb backend pointer
* @param objects_dir the Git repository's objects directory
+ * @param opts the options to use when creating the pack backend
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_backend_pack(
+ git_odb_backend **out,
+ const char *objects_dir,
+ const git_odb_backend_pack_options *opts);
+
+/**
+ * Create a backend for a single packfile.
*
+ * @param[out] out location to store the odb backend pointer
+ * @param index_file path to the packfile's .idx file
+ * @param opts the options to use when creating the pack backend
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_backend_pack(git_odb_backend **out, const char *objects_dir);
+GIT_EXTERN(int) git_odb_backend_one_pack(
+ git_odb_backend **out,
+ const char *index_file,
+ const git_odb_backend_pack_options *opts);
/**
* Create a backend for loose objects
*
- * @param out location to store the odb backend pointer
+ * @param[out] out location to store the odb backend pointer
* @param objects_dir the Git repository's objects directory
- * @param compression_level zlib compression level to use
- * @param do_fsync whether to do an fsync() after writing
- * @param dir_mode permissions to use creating a directory or 0 for defaults
- * @param file_mode permissions to use creating a file or 0 for defaults
+ * @param opts options for the loose object backend or NULL
*
* @return 0 or an error code
*/
GIT_EXTERN(int) git_odb_backend_loose(
git_odb_backend **out,
const char *objects_dir,
- int compression_level,
- int do_fsync,
- unsigned int dir_mode,
- unsigned int file_mode);
+ git_odb_backend_loose_options *opts);
+
+#else
+
+/**
+ * Create a backend for a directory containing packfiles.
+ *
+ * @param[out] out location to store the odb backend pointer
+ * @param objects_dir the Git repository's objects directory
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_backend_pack(
+ git_odb_backend **out,
+ const char *objects_dir);
/**
* Create a backend out of a single packfile
@@ -60,18 +149,40 @@ GIT_EXTERN(int) git_odb_backend_loose(
* This can be useful for inspecting the contents of a single
* packfile.
*
- * @param out location to store the odb backend pointer
+ * @param[out] out location to store the odb backend pointer
* @param index_file path to the packfile's .idx file
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_backend_one_pack(
+ git_odb_backend **out,
+ const char *index_file);
+
+/**
+ * Create a backend for loose objects
*
+ * @param[out] out location to store the odb backend pointer
+ * @param objects_dir the Git repository's objects directory
+ * @param compression_level zlib compression level (0-9), or -1 for the default
+ * @param do_fsync if non-zero, perform an fsync on write
+ * @param dir_mode permission to use when creating directories, or 0 for default
+ * @param file_mode permission to use when creating directories, or 0 for default
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_backend_one_pack(git_odb_backend **out, const char *index_file);
+GIT_EXTERN(int) git_odb_backend_loose(
+ git_odb_backend **out,
+ const char *objects_dir,
+ int compression_level,
+ int do_fsync,
+ unsigned int dir_mode,
+ unsigned int file_mode);
+
+#endif
/** Streaming mode */
typedef enum {
GIT_STREAM_RDONLY = (1 << 1),
GIT_STREAM_WRONLY = (1 << 2),
- GIT_STREAM_RW = (GIT_STREAM_RDONLY | GIT_STREAM_WRONLY),
+ GIT_STREAM_RW = (GIT_STREAM_RDONLY | GIT_STREAM_WRONLY)
} git_odb_stream_t;
/**
@@ -87,6 +198,10 @@ struct git_odb_stream {
unsigned int mode;
void *hash_ctx;
+#ifdef GIT_EXPERIMENTAL_SHA256
+ git_oid_t oid_type;
+#endif
+
git_object_size_t declared_size;
git_object_size_t received_bytes;
@@ -130,6 +245,7 @@ struct git_odb_writepack {
void GIT_CALLBACK(free)(git_odb_writepack *writepack);
};
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/oid.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/oid.h
index 549df4e..8539b4e 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/oid.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/oid.h
@@ -8,22 +8,92 @@
#define INCLUDE_git_oid_h__
#include "common.h"
-#include "types.h"
+#include "experimental.h"
/**
* @file git2/oid.h
- * @brief Git object id routines
+ * @brief Object IDs
* @defgroup git_oid Git object id routines
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
-/** Size (in bytes) of a raw/binary oid */
-#define GIT_OID_RAWSZ 20
+/** The type of object id. */
+typedef enum {
-/** Size (in bytes) of a hex formatted oid */
-#define GIT_OID_HEXSZ (GIT_OID_RAWSZ * 2)
+#ifdef GIT_EXPERIMENTAL_SHA256
+ GIT_OID_SHA1 = 1, /**< SHA1 */
+ GIT_OID_SHA256 = 2 /**< SHA256 */
+#else
+ GIT_OID_SHA1 = 1 /**< SHA1 */
+#endif
+
+} git_oid_t;
+
+/*
+ * SHA1 is currently the only supported object ID type.
+ */
+
+/** SHA1 is currently libgit2's default oid type. */
+#define GIT_OID_DEFAULT GIT_OID_SHA1
+
+/** Size (in bytes) of a raw/binary sha1 oid */
+#define GIT_OID_SHA1_SIZE 20
+/** Size (in bytes) of a hex formatted sha1 oid */
+#define GIT_OID_SHA1_HEXSIZE (GIT_OID_SHA1_SIZE * 2)
+
+/**
+ * The binary representation of the null sha1 object ID.
+ */
+#ifndef GIT_EXPERIMENTAL_SHA256
+# define GIT_OID_SHA1_ZERO { { 0 } }
+#else
+# define GIT_OID_SHA1_ZERO { GIT_OID_SHA1, { 0 } }
+#endif
+
+/**
+ * The string representation of the null sha1 object ID.
+ */
+#define GIT_OID_SHA1_HEXZERO "0000000000000000000000000000000000000000"
+
+/*
+ * Experimental SHA256 support is a breaking change to the API.
+ * This exists for application compatibility testing.
+ */
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+
+/** Size (in bytes) of a raw/binary sha256 oid */
+# define GIT_OID_SHA256_SIZE 32
+/** Size (in bytes) of a hex formatted sha256 oid */
+# define GIT_OID_SHA256_HEXSIZE (GIT_OID_SHA256_SIZE * 2)
+
+/**
+ * The binary representation of the null sha256 object ID.
+ */
+# define GIT_OID_SHA256_ZERO { GIT_OID_SHA256, { 0 } }
+
+/**
+ * The string representation of the null sha256 object ID.
+ */
+# define GIT_OID_SHA256_HEXZERO "0000000000000000000000000000000000000000000000000000000000000000"
+
+#endif
+
+/** Maximum possible object ID size in raw format */
+#ifdef GIT_EXPERIMENTAL_SHA256
+# define GIT_OID_MAX_SIZE GIT_OID_SHA256_SIZE
+#else
+# define GIT_OID_MAX_SIZE GIT_OID_SHA1_SIZE
+#endif
+
+/** Maximum possible object ID size in hex format */
+#ifdef GIT_EXPERIMENTAL_SHA256
+# define GIT_OID_MAX_HEXSIZE GIT_OID_SHA256_HEXSIZE
+#else
+# define GIT_OID_MAX_HEXSIZE GIT_OID_SHA1_HEXSIZE
+#endif
/** Minimum length (in number of hex characters,
* i.e. packets of 4 bits) of an oid prefix */
@@ -31,23 +101,43 @@ GIT_BEGIN_DECL
/** Unique identity of any object (commit, tree, blob, tag). */
typedef struct git_oid {
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /** type of object id */
+ unsigned char type;
+#endif
+
/** raw binary formatted id */
- unsigned char id[GIT_OID_RAWSZ];
+ unsigned char id[GIT_OID_MAX_SIZE];
} git_oid;
+#ifdef GIT_EXPERIMENTAL_SHA256
+
+GIT_EXTERN(int) git_oid_fromstr(git_oid *out, const char *str, git_oid_t type);
+GIT_EXTERN(int) git_oid_fromstrp(git_oid *out, const char *str, git_oid_t type);
+GIT_EXTERN(int) git_oid_fromstrn(git_oid *out, const char *str, size_t length, git_oid_t type);
+GIT_EXTERN(int) git_oid_fromraw(git_oid *out, const unsigned char *raw, git_oid_t type);
+
+#else
+
/**
* Parse a hex formatted object id into a git_oid.
*
+ * The appropriate number of bytes for the given object ID type will
+ * be read from the string - 40 bytes for SHA1, 64 bytes for SHA256.
+ * The given string need not be NUL terminated.
+ *
* @param out oid structure the result is written into.
* @param str input hex string; must be pointing at the start of
* the hex sequence and have at least the number of bytes
- * needed for an oid encoded in hex (40 bytes).
+ * needed for an oid encoded in hex (40 bytes for sha1,
+ * 256 bytes for sha256).
* @return 0 or an error code
*/
GIT_EXTERN(int) git_oid_fromstr(git_oid *out, const char *str);
/**
- * Parse a hex formatted null-terminated string into a git_oid.
+ * Parse a hex formatted NUL-terminated string into a git_oid.
*
* @param out oid structure the result is written into.
* @param str input hex string; must be null-terminated.
@@ -77,14 +167,17 @@ GIT_EXTERN(int) git_oid_fromstrn(git_oid *out, const char *str, size_t length);
*/
GIT_EXTERN(int) git_oid_fromraw(git_oid *out, const unsigned char *raw);
+#endif
+
/**
* Format a git_oid into a hex string.
*
* @param out output hex string; must be pointing at the start of
* the hex sequence and have at least the number of bytes
- * needed for an oid encoded in hex (40 bytes). Only the
- * oid digits are written; a '\\0' terminator must be added
- * by the caller if it is required.
+ * needed for an oid encoded in hex (40 bytes for SHA1,
+ * 64 bytes for SHA256). Only the oid digits are written;
+ * a '\\0' terminator must be added by the caller if it is
+ * required.
* @param id oid structure to format.
* @return 0 on success or error code
*/
@@ -94,7 +187,7 @@ GIT_EXTERN(int) git_oid_fmt(char *out, const git_oid *id);
* Format a git_oid into a partial hex string.
*
* @param out output hex string; you say how many bytes to write.
- * If the number of bytes is > GIT_OID_HEXSZ, extra bytes
+ * If the number of bytes is > GIT_OID_SHA1_HEXSIZE, extra bytes
* will be zeroed; if not, a '\0' terminator is NOT added.
* @param n number of characters to write into out string
* @param id oid structure to format.
@@ -110,9 +203,10 @@ GIT_EXTERN(int) git_oid_nfmt(char *out, size_t n, const git_oid *id);
*
* @param out output hex string; must be pointing at the start of
* the hex sequence and have at least the number of bytes
- * needed for an oid encoded in hex (41 bytes). Only the
- * oid digits are written; a '\\0' terminator must be added
- * by the caller if it is required.
+ * needed for an oid encoded in hex (41 bytes for SHA1,
+ * 65 bytes for SHA256). Only the oid digits are written;
+ * a '\\0' terminator must be added by the caller if it
+ * is required.
* @param id oid structure to format.
* @return 0 on success, non-zero callback return value, or error code
*/
@@ -127,14 +221,16 @@ GIT_EXTERN(int) git_oid_pathfmt(char *out, const git_oid *id);
* concurrent calls of the function.
*
* @param oid The oid structure to format
- * @return the c-string
+ * @return the c-string or NULL on failure
*/
GIT_EXTERN(char *) git_oid_tostr_s(const git_oid *oid);
/**
* Format a git_oid into a buffer as a hex format c-string.
*
- * If the buffer is smaller than GIT_OID_HEXSZ+1, then the resulting
+ * If the buffer is smaller than the size of a hex-formatted oid string
+ * plus an additional byte (GIT_OID_SHA_HEXSIZE + 1 for SHA1 or
+ * GIT_OID_SHA256_HEXSIZE + 1 for SHA256), then the resulting
* oid c-string will be truncated to n-1 characters (but will still be
* NUL-byte terminated).
*
@@ -210,6 +306,7 @@ GIT_EXTERN(int) git_oid_strcmp(const git_oid *id, const char *str);
/**
* Check is an oid is all zeros.
*
+ * @param id the object ID to check
* @return 1 if all zeros, 0 otherwise.
*/
GIT_EXTERN(int) git_oid_is_zero(const git_oid *id);
@@ -270,4 +367,5 @@ GIT_EXTERN(void) git_oid_shorten_free(git_oid_shorten *os);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/oidarray.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/oidarray.h
index 94fc58d..e79a559 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/oidarray.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/oidarray.h
@@ -10,6 +10,13 @@
#include "common.h"
#include "oid.h"
+/**
+ * @file git2/oidarray.h
+ * @brief An array of object IDs
+ * @defgroup git_oidarray Arrays of object IDs
+ * @ingroup Git
+ * @{
+ */
GIT_BEGIN_DECL
/** Array of object ids */
@@ -34,4 +41,3 @@ GIT_EXTERN(void) git_oidarray_dispose(git_oidarray *array);
GIT_END_DECL
#endif
-
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/pack.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/pack.h
index 3b9beb6..3837e04 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/pack.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/pack.h
@@ -51,7 +51,7 @@ GIT_BEGIN_DECL
*/
typedef enum {
GIT_PACKBUILDER_ADDING_OBJECTS = 0,
- GIT_PACKBUILDER_DELTAFICATION = 1,
+ GIT_PACKBUILDER_DELTAFICATION = 1
} git_packbuilder_stage_t;
/**
@@ -148,6 +148,7 @@ GIT_EXTERN(int) git_packbuilder_insert_recur(git_packbuilder *pb, const git_oid
*
* @param buf Buffer where to write the packfile
* @param pb The packbuilder
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_packbuilder_write_buf(git_buf *buf, git_packbuilder *pb);
@@ -169,15 +170,30 @@ GIT_EXTERN(int) git_packbuilder_write(
git_indexer_progress_cb progress_cb,
void *progress_cb_payload);
+#ifndef GIT_DEPRECATE_HARD
/**
-* Get the packfile's hash
-*
-* A packfile's name is derived from the sorted hashing of all object
-* names. This is only correct after the packfile has been written.
-*
-* @param pb The packbuilder object
-*/
+ * Get the packfile's hash
+ *
+ * A packfile's name is derived from the sorted hashing of all object
+ * names. This is only correct after the packfile has been written.
+ *
+ * @deprecated use git_packbuilder_name
+ * @param pb The packbuilder object
+ * @return 0 or an error code
+ */
GIT_EXTERN(const git_oid *) git_packbuilder_hash(git_packbuilder *pb);
+#endif
+
+/**
+ * Get the unique name for the resulting packfile.
+ *
+ * The packfile's name is derived from the packfile's content.
+ * This is only correct after the packfile has been written.
+ *
+ * @param pb the packbuilder instance
+ * @return a NUL terminated string for the packfile name
+ */
+GIT_EXTERN(const char *) git_packbuilder_name(git_packbuilder *pb);
/**
* Callback used to iterate over packed objects
@@ -217,7 +233,15 @@ GIT_EXTERN(size_t) git_packbuilder_object_count(git_packbuilder *pb);
*/
GIT_EXTERN(size_t) git_packbuilder_written(git_packbuilder *pb);
-/** Packbuilder progress notification function */
+/**
+ * Packbuilder progress notification function.
+ *
+ * @param stage the stage of the packbuilder
+ * @param current the current object
+ * @param total the total number of objects
+ * @param payload the callback payload
+ * @return 0 on success or an error code
+ */
typedef int GIT_CALLBACK(git_packbuilder_progress)(
int stage,
uint32_t current,
@@ -231,6 +255,9 @@ typedef int GIT_CALLBACK(git_packbuilder_progress)(
* @param progress_cb Function to call with progress information during
* pack building. Be aware that this is called inline with pack building
* operations, so performance may be affected.
+ * When progress_cb returns an error, the pack building process will be
+ * aborted and the error will be returned from the invoked function.
+ * `pb` must then be freed.
* @param progress_cb_payload Payload for progress callback.
* @return 0 or an error code
*/
@@ -248,4 +275,5 @@ GIT_EXTERN(void) git_packbuilder_free(git_packbuilder *pb);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/patch.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/patch.h
index fde9659..7824821 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/patch.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/patch.h
@@ -14,7 +14,7 @@
/**
* @file git2/patch.h
- * @brief Patch handling routines.
+ * @brief Patches store the textual diffs in a delta
* @ingroup Git
* @{
*/
@@ -139,17 +139,25 @@ GIT_EXTERN(int) git_patch_from_buffers(
/**
* Free a git_patch object.
+ *
+ * @param patch The patch to free.
*/
GIT_EXTERN(void) git_patch_free(git_patch *patch);
/**
* Get the delta associated with a patch. This delta points to internal
* data and you do not have to release it when you are done with it.
+ *
+ * @param patch The patch in which to get the delta.
+ * @return The delta associated with the patch.
*/
GIT_EXTERN(const git_diff_delta *) git_patch_get_delta(const git_patch *patch);
/**
* Get the number of hunks in a patch
+ *
+ * @param patch The patch in which to get the number of hunks.
+ * @return The number of hunks of the patch.
*/
GIT_EXTERN(size_t) git_patch_num_hunks(const git_patch *patch);
@@ -275,8 +283,7 @@ GIT_EXTERN(int) git_patch_to_buf(
git_buf *out,
git_patch *patch);
-GIT_END_DECL
-
/**@}*/
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/pathspec.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/pathspec.h
index 3299657..6f6918c 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/pathspec.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/pathspec.h
@@ -12,6 +12,13 @@
#include "strarray.h"
#include "diff.h"
+/**
+ * @file git2/pathspec.h
+ * @brief Specifiers for path matching
+ * @defgroup git_pathspec Specifiers for path matching
+ * @ingroup Git
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -69,7 +76,7 @@ typedef enum {
* just test if there were any matches at all or in combination with
* GIT_PATHSPEC_FIND_FAILURES to validate a pathspec.
*/
- GIT_PATHSPEC_FAILURES_ONLY = (1u << 5),
+ GIT_PATHSPEC_FAILURES_ONLY = (1u << 5)
} git_pathspec_flag_t;
/**
@@ -276,5 +283,7 @@ GIT_EXTERN(size_t) git_pathspec_match_list_failed_entrycount(
GIT_EXTERN(const char *) git_pathspec_match_list_failed_entry(
const git_pathspec_match_list *m, size_t pos);
+/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/proxy.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/proxy.h
index 653425d..195ab75 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/proxy.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/proxy.h
@@ -12,6 +12,12 @@
#include "cert.h"
#include "credential.h"
+/**
+ * @file git2/proxy.h
+ * @brief TLS proxies
+ * @ingroup Git
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -32,7 +38,7 @@ typedef enum {
/**
* Connect via the URL given in the options
*/
- GIT_PROXY_SPECIFIED,
+ GIT_PROXY_SPECIFIED
} git_proxy_t;
/**
@@ -78,7 +84,10 @@ typedef struct {
void *payload;
} git_proxy_options;
+/** Current version for the `git_proxy_options` structure */
#define GIT_PROXY_OPTIONS_VERSION 1
+
+/** Static constructor for `git_proxy_options` */
#define GIT_PROXY_OPTIONS_INIT {GIT_PROXY_OPTIONS_VERSION}
/**
@@ -93,6 +102,7 @@ typedef struct {
*/
GIT_EXTERN(int) git_proxy_options_init(git_proxy_options *opts, unsigned int version);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/rebase.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/rebase.h
index 11e452c..3fb3e57 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/rebase.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/rebase.h
@@ -17,8 +17,8 @@
/**
* @file git2/rebase.h
- * @brief Git rebase routines
- * @defgroup git_rebase Git merge routines
+ * @brief Rebase manipulates commits, placing them on a new parent
+ * @defgroup git_rebase Rebase manipulates commits, placing them on a new parent
* @ingroup Git
* @{
*/
@@ -67,10 +67,9 @@ typedef struct {
/**
* Options to control how files are written during `git_rebase_init`,
- * `git_rebase_next` and `git_rebase_abort`. Note that a minimum
- * strategy of `GIT_CHECKOUT_SAFE` is defaulted in `init` and `next`,
- * and a minimum strategy of `GIT_CHECKOUT_FORCE` is defaulted in
- * `abort` to match git semantics.
+ * `git_rebase_next` and `git_rebase_abort`. Note that during
+ * `abort`, these options will add an implied `GIT_CHECKOUT_FORCE`
+ * to match git semantics.
*/
git_checkout_options checkout_options;
@@ -152,10 +151,13 @@ typedef enum {
* No commit will be cherry-picked. The client should run the given
* command and (if successful) continue.
*/
- GIT_REBASE_OPERATION_EXEC,
+ GIT_REBASE_OPERATION_EXEC
} git_rebase_operation_t;
+/** Current version for the `git_rebase_options` structure */
#define GIT_REBASE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_rebase_options` */
#define GIT_REBASE_OPTIONS_INIT \
{ GIT_REBASE_OPTIONS_VERSION, 0, 0, NULL, GIT_MERGE_OPTIONS_INIT, \
GIT_CHECKOUT_OPTIONS_INIT, NULL, NULL }
@@ -242,6 +244,7 @@ GIT_EXTERN(int) git_rebase_open(
/**
* Gets the original `HEAD` ref name for merge rebases.
*
+ * @param rebase The in-progress rebase.
* @return The original `HEAD` ref name
*/
GIT_EXTERN(const char *) git_rebase_orig_head_name(git_rebase *rebase);
@@ -249,6 +252,7 @@ GIT_EXTERN(const char *) git_rebase_orig_head_name(git_rebase *rebase);
/**
* Gets the original `HEAD` id for merge rebases.
*
+ * @param rebase The in-progress rebase.
* @return The original `HEAD` id
*/
GIT_EXTERN(const git_oid *) git_rebase_orig_head_id(git_rebase *rebase);
@@ -256,6 +260,7 @@ GIT_EXTERN(const git_oid *) git_rebase_orig_head_id(git_rebase *rebase);
/**
* Gets the `onto` ref name for merge rebases.
*
+ * @param rebase The in-progress rebase.
* @return The `onto` ref name
*/
GIT_EXTERN(const char *) git_rebase_onto_name(git_rebase *rebase);
@@ -263,6 +268,7 @@ GIT_EXTERN(const char *) git_rebase_onto_name(git_rebase *rebase);
/**
* Gets the `onto` id for merge rebases.
*
+ * @param rebase The in-progress rebase.
* @return The `onto` id
*/
GIT_EXTERN(const git_oid *) git_rebase_onto_id(git_rebase *rebase);
@@ -322,6 +328,10 @@ GIT_EXTERN(int) git_rebase_next(
* This is only applicable for in-memory rebases; for rebases within
* a working directory, the changes were applied to the repository's
* index.
+ *
+ * @param index The result index of the last operation.
+ * @param rebase The in-progress rebase.
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_rebase_inmemory_index(
git_index **index,
@@ -388,4 +398,5 @@ GIT_EXTERN(void) git_rebase_free(git_rebase *rebase);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/refdb.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/refdb.h
index a315876..536ef10 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/refdb.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/refdb.h
@@ -14,8 +14,8 @@
/**
* @file git2/refdb.h
- * @brief Git custom refs backend functions
- * @defgroup git_refdb Git custom refs backend API
+ * @brief A database for references (branches and tags)
+ * @defgroup git_refdb A database for references (branches and tags)
* @ingroup Git
* @{
*/
@@ -52,6 +52,9 @@ GIT_EXTERN(int) git_refdb_open(git_refdb **out, git_repository *repo);
* Suggests that the given refdb compress or optimize its references.
* This mechanism is implementation specific. For on-disk reference
* databases, for example, this may pack all loose references.
+ *
+ * @param refdb The reference database to optimize.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_refdb_compress(git_refdb *refdb);
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/reflog.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/reflog.h
index c949a28..a0956c6 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/reflog.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/reflog.h
@@ -13,8 +13,8 @@
/**
* @file git2/reflog.h
- * @brief Git reflog management routines
- * @defgroup git_reflog Git reflog management routines
+ * @brief Reference logs store how references change
+ * @defgroup git_reflog Reference logs store how references change
* @ingroup Git
* @{
*/
@@ -31,7 +31,7 @@ GIT_BEGIN_DECL
* git_reflog_free().
*
* @param out pointer to reflog
- * @param repo the repostiory
+ * @param repo the repository
* @param name reference to look up
* @return 0 or an error code
*/
@@ -167,4 +167,5 @@ GIT_EXTERN(void) git_reflog_free(git_reflog *reflog);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/refs.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/refs.h
index 7ebb209..d820f2a 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/refs.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/refs.h
@@ -14,8 +14,8 @@
/**
* @file git2/refs.h
- * @brief Git reference management routines
- * @defgroup git_reference Git reference management routines
+ * @brief References point to a commit; generally these are branches and tags
+ * @defgroup git_reference References point to a commit; generally these are branches and tags
* @ingroup Git
* @{
*/
@@ -29,7 +29,7 @@ GIT_BEGIN_DECL
* The name will be checked for validity.
* See `git_reference_symbolic_create()` for rules about valid names.
*
- * @param out pointer to the looked-up reference
+ * @param[out] out pointer to the looked-up reference
* @param repo the repository to look up the reference
* @param name the long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)
* @return 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code.
@@ -57,7 +57,7 @@ GIT_EXTERN(int) git_reference_name_to_id(
/**
* Lookup a reference by DWIMing its short name
*
- * Apply the git precendence rules to the given shorthand to determine
+ * Apply the git precedence rules to the given shorthand to determine
* which reference the user is referring to.
*
* @param out pointer in which to store the reference
@@ -371,6 +371,7 @@ GIT_EXTERN(int) git_reference_set_target(
* reflog is enabled for the repository. We only rename
* the reflog if it exists.
*
+ * @param[out] new_ref The new reference
* @param ref The reference to rename
* @param new_name The new name for the reference
* @param force Overwrite an existing reference
@@ -406,6 +407,7 @@ GIT_EXTERN(int) git_reference_delete(git_reference *ref);
* This method removes the named reference from the repository without
* looking at its old value.
*
+ * @param repo The repository to remove the reference from
* @param name The reference to remove
* @return 0 or an error code
*/
@@ -518,7 +520,7 @@ GIT_EXTERN(int) git_reference_cmp(
/**
* Create an iterator for the repo's references
*
- * @param out pointer in which to store the iterator
+ * @param[out] out pointer in which to store the iterator
* @param repo the repository
* @return 0 or an error code
*/
@@ -543,7 +545,7 @@ GIT_EXTERN(int) git_reference_iterator_glob_new(
/**
* Get the next reference
*
- * @param out pointer in which to store the reference
+ * @param[out] out pointer in which to store the reference
* @param iter the iterator
* @return 0, GIT_ITEROVER if there are no more; or an error code
*/
@@ -686,7 +688,7 @@ typedef enum {
* so the `ONELEVEL` naming rules aren't enforced and 'master'
* becomes a valid name.
*/
- GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND = (1u << 2),
+ GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND = (1u << 2)
} git_reference_format_t;
/**
@@ -724,7 +726,7 @@ GIT_EXTERN(int) git_reference_normalize_name(
* If you pass `GIT_OBJECT_ANY` as the target type, then the object
* will be peeled until a non-tag object is met.
*
- * @param out Pointer to the peeled git_object
+ * @param[out] out Pointer to the peeled git_object
* @param ref The reference to be processed
* @param type The type of the requested object (GIT_OBJECT_COMMIT,
* GIT_OBJECT_TAG, GIT_OBJECT_TREE, GIT_OBJECT_BLOB or GIT_OBJECT_ANY).
@@ -768,4 +770,5 @@ GIT_EXTERN(const char *) git_reference_shorthand(const git_reference *ref);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/refspec.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/refspec.h
index eaf7747..49d5f89 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/refspec.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/refspec.h
@@ -14,8 +14,8 @@
/**
* @file git2/refspec.h
- * @brief Git refspec attributes
- * @defgroup git_refspec Git refspec attributes
+ * @brief Refspecs map local references to remote references
+ * @defgroup git_refspec Refspecs map local references to remote references
* @ingroup Git
* @{
*/
@@ -58,7 +58,7 @@ GIT_EXTERN(const char *) git_refspec_dst(const git_refspec *refspec);
* Get the refspec's string
*
* @param refspec the refspec
- * @returns the refspec's original string
+ * @return the refspec's original string
*/
GIT_EXTERN(const char *) git_refspec_string(const git_refspec *refspec);
@@ -79,7 +79,16 @@ GIT_EXTERN(int) git_refspec_force(const git_refspec *refspec);
GIT_EXTERN(git_direction) git_refspec_direction(const git_refspec *spec);
/**
- * Check if a refspec's source descriptor matches a reference
+ * Check if a refspec's source descriptor matches a negative reference
+ *
+ * @param refspec the refspec
+ * @param refname the name of the reference to check
+ * @return 1 if the refspec matches, 0 otherwise
+ */
+GIT_EXTERN(int) git_refspec_src_matches_negative(const git_refspec *refspec, const char *refname);
+
+/**
+ * Check if a refspec's source descriptor matches a reference
*
* @param refspec the refspec
* @param refname the name of the reference to check
@@ -116,6 +125,7 @@ GIT_EXTERN(int) git_refspec_transform(git_buf *out, const git_refspec *spec, con
*/
GIT_EXTERN(int) git_refspec_rtransform(git_buf *out, const git_refspec *spec, const char *name);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/remote.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/remote.h
index 4d57eaa..2472ded 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/remote.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/remote.h
@@ -19,8 +19,8 @@
/**
* @file git2/remote.h
- * @brief Git remote management functions
- * @defgroup git_remote remote management functions
+ * @brief Remotes are where local repositories fetch from and push to
+ * @defgroup git_remote Remotes are where local repositories fetch from and push to
* @ingroup Git
* @{
*/
@@ -41,6 +41,30 @@ GIT_EXTERN(int) git_remote_create(
const char *name,
const char *url);
+/**
+ * Remote redirection settings; whether redirects to another host
+ * are permitted. By default, git will follow a redirect on the
+ * initial request (`/info/refs`), but not subsequent requests.
+ */
+typedef enum {
+ /**
+ * Do not follow any off-site redirects at any stage of
+ * the fetch or push.
+ */
+ GIT_REMOTE_REDIRECT_NONE = (1 << 0),
+
+ /**
+ * Allow off-site redirects only upon the initial request.
+ * This is the default.
+ */
+ GIT_REMOTE_REDIRECT_INITIAL = (1 << 1),
+
+ /**
+ * Allow redirects at any stage in the fetch or push.
+ */
+ GIT_REMOTE_REDIRECT_ALL = (1 << 2)
+} git_remote_redirect_t;
+
/**
* Remote creation options flags
*/
@@ -49,9 +73,20 @@ typedef enum {
GIT_REMOTE_CREATE_SKIP_INSTEADOF = (1 << 0),
/** Don't build a fetchspec from the name if none is set */
- GIT_REMOTE_CREATE_SKIP_DEFAULT_FETCHSPEC = (1 << 1),
+ GIT_REMOTE_CREATE_SKIP_DEFAULT_FETCHSPEC = (1 << 1)
} git_remote_create_flags;
+/**
+ * How to handle reference updates.
+ */
+typedef enum {
+ /* Write the fetch results to FETCH_HEAD. */
+ GIT_REMOTE_UPDATE_FETCHHEAD = (1 << 0),
+
+ /* Report unchanged tips in the update_refs callback. */
+ GIT_REMOTE_UPDATE_REPORT_UNCHANGED = (1 << 1)
+} git_remote_update_flags;
+
/**
* Remote creation options structure
*
@@ -81,7 +116,10 @@ typedef struct git_remote_create_options {
unsigned int flags;
} git_remote_create_options;
+/** Current version for the `git_remote_create_options` structure */
#define GIT_REMOTE_CREATE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_remote_create_options` */
#define GIT_REMOTE_CREATE_OPTIONS_INIT {GIT_REMOTE_CREATE_OPTIONS_VERSION}
/**
@@ -211,9 +249,9 @@ GIT_EXTERN(const char *) git_remote_name(const git_remote *remote);
/**
* Get the remote's url
*
- * If url.*.insteadOf has been configured for this URL, it will
- * return the modified URL. If `git_remote_set_instance_pushurl`
- * has been called for this remote, then that URL will be returned.
+ * If url.*.insteadOf has been configured for this URL, it will return
+ * the modified URL. This function does not consider if a push url has
+ * been configured for this remote (use `git_remote_pushurl` if needed).
*
* @param remote the remote
* @return a pointer to the url
@@ -300,6 +338,7 @@ GIT_EXTERN(int) git_remote_add_fetch(git_repository *repo, const char *remote, c
*
* @param array pointer to the array in which to store the strings
* @param remote the remote to query
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_remote_get_fetch_refspecs(git_strarray *array, const git_remote *remote);
@@ -324,6 +363,7 @@ GIT_EXTERN(int) git_remote_add_push(git_repository *repo, const char *remote, co
*
* @param array pointer to the array in which to store the strings
* @param remote the remote to query
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_remote_get_push_refspecs(git_strarray *array, const git_remote *remote);
@@ -344,23 +384,6 @@ GIT_EXTERN(size_t) git_remote_refspec_count(const git_remote *remote);
*/
GIT_EXTERN(const git_refspec *)git_remote_get_refspec(const git_remote *remote, size_t n);
-/**
- * Open a connection to a remote
- *
- * The transport is selected based on the URL. The direction argument
- * is due to a limitation of the git protocol (over TCP or SSH) which
- * starts up a specific binary which can only do the one or the other.
- *
- * @param remote the remote to connect to
- * @param direction GIT_DIRECTION_FETCH if you want to fetch or
- * GIT_DIRECTION_PUSH if you want to push
- * @param callbacks the callbacks to use for this connection
- * @param proxy_opts proxy settings
- * @param custom_headers extra HTTP headers to use in this connection
- * @return 0 or an error code
- */
-GIT_EXTERN(int) git_remote_connect(git_remote *remote, git_direction direction, const git_remote_callbacks *callbacks, const git_proxy_options *proxy_opts, const git_strarray *custom_headers);
-
/**
* Get the remote repository's reference advertisement list
*
@@ -443,10 +466,18 @@ GIT_EXTERN(int) git_remote_list(git_strarray *out, git_repository *repo);
typedef enum git_remote_completion_t {
GIT_REMOTE_COMPLETION_DOWNLOAD,
GIT_REMOTE_COMPLETION_INDEXING,
- GIT_REMOTE_COMPLETION_ERROR,
+ GIT_REMOTE_COMPLETION_ERROR
} git_remote_completion_t;
-/** Push network progress notification function */
+/**
+ * Push network progress notification callback.
+ *
+ * @param current The number of objects pushed so far
+ * @param total The total number of objects to push
+ * @param bytes The number of bytes pushed
+ * @param payload The user-specified payload callback
+ * @return 0 or an error code to stop the transfer
+ */
typedef int GIT_CALLBACK(git_push_transfer_progress_cb)(
unsigned int current,
unsigned int total,
@@ -482,8 +513,12 @@ typedef struct {
* as commands to the destination.
* @param len number of elements in `updates`
* @param payload Payload provided by the caller
+ * @return 0 or an error code to stop the push
*/
-typedef int GIT_CALLBACK(git_push_negotiation)(const git_push_update **updates, size_t len, void *payload);
+typedef int GIT_CALLBACK(git_push_negotiation)(
+ const git_push_update **updates,
+ size_t len,
+ void *payload);
/**
* Callback used to inform of the update status from the remote.
@@ -548,7 +583,8 @@ struct git_remote_callbacks {
* Completion is called when different parts of the download
* process are done (currently unused).
*/
- int GIT_CALLBACK(completion)(git_remote_completion_t type, void *data);
+ int GIT_CALLBACK(completion)(git_remote_completion_t type,
+ void *data);
/**
* This will be called if the remote host requires
@@ -574,11 +610,22 @@ struct git_remote_callbacks {
*/
git_indexer_progress_cb transfer_progress;
+#ifdef GIT_DEPRECATE_HARD
+ void *reserved_update_tips;
+#else
/**
- * Each time a reference is updated locally, this function
- * will be called with information about it.
+ * Deprecated callback for reference updates, callers should
+ * set `update_refs` instead. This is retained for backward
+ * compatibility; if you specify both `update_refs` and
+ * `update_tips`, then only the `update_refs` function will
+ * be called.
+ *
+ * @deprecated the `update_refs` callback in this structure
+ * should be preferred
*/
- int GIT_CALLBACK(update_tips)(const char *refname, const git_oid *a, const git_oid *b, void *data);
+ int GIT_CALLBACK(update_tips)(const char *refname,
+ const git_oid *a, const git_oid *b, void *data);
+#endif
/**
* Function to call with progress information during pack
@@ -635,9 +682,25 @@ struct git_remote_callbacks {
*/
git_url_resolve_cb resolve_url;
#endif
+
+ /**
+ * Each time a reference is updated locally, this function
+ * will be called with information about it. This should be
+ * preferred over the `update_tips` callback in this
+ * structure.
+ */
+ int GIT_CALLBACK(update_refs)(
+ const char *refname,
+ const git_oid *a,
+ const git_oid *b,
+ git_refspec *spec,
+ void *data);
};
+/** Current version for the `git_remote_callbacks_options` structure */
#define GIT_REMOTE_CALLBACKS_VERSION 1
+
+/** Static constructor for `git_remote_callbacks_options` */
#define GIT_REMOTE_CALLBACKS_INIT {GIT_REMOTE_CALLBACKS_VERSION}
/**
@@ -665,7 +728,7 @@ typedef enum {
/**
* Force pruning off
*/
- GIT_FETCH_NO_PRUNE,
+ GIT_FETCH_NO_PRUNE
} git_fetch_prune_t;
/**
@@ -690,9 +753,18 @@ typedef enum {
/**
* Ask for the all the tags.
*/
- GIT_REMOTE_DOWNLOAD_TAGS_ALL,
+ GIT_REMOTE_DOWNLOAD_TAGS_ALL
} git_remote_autotag_option_t;
+/** Constants for fetch depth (shallowness of fetch). */
+typedef enum {
+ /** The fetch is "full" (not shallow). This is the default. */
+ GIT_FETCH_DEPTH_FULL = 0,
+
+ /** The fetch should "unshallow" and fetch missing data. */
+ GIT_FETCH_DEPTH_UNSHALLOW = 2147483647
+} git_fetch_depth_t;
+
/**
* Fetch options structure.
*
@@ -715,10 +787,9 @@ typedef struct {
git_fetch_prune_t prune;
/**
- * Whether to write the results to FETCH_HEAD. Defaults to
- * on. Leave this default in order to behave like git.
+ * How to handle reference updates; see `git_remote_update_flags`.
*/
- int update_fetchhead;
+ unsigned int update_fetchhead;
/**
* Determines how to behave regarding tags on the remote, such
@@ -734,15 +805,39 @@ typedef struct {
*/
git_proxy_options proxy_opts;
+ /**
+ * Depth of the fetch to perform, or `GIT_FETCH_DEPTH_FULL`
+ * (or `0`) for full history, or `GIT_FETCH_DEPTH_UNSHALLOW`
+ * to "unshallow" a shallow repository.
+ *
+ * The default is full (`GIT_FETCH_DEPTH_FULL` or `0`).
+ */
+ int depth;
+
+ /**
+ * Whether to allow off-site redirects. If this is not
+ * specified, the `http.followRedirects` configuration setting
+ * will be consulted.
+ */
+ git_remote_redirect_t follow_redirects;
+
/**
* Extra headers for this fetch operation
*/
git_strarray custom_headers;
} git_fetch_options;
+/** Current version for the `git_fetch_options` structure */
#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 }
+
+/** Static constructor for `git_fetch_options` */
+#define GIT_FETCH_OPTIONS_INIT { \
+ GIT_FETCH_OPTIONS_VERSION, \
+ GIT_REMOTE_CALLBACKS_INIT, \
+ GIT_FETCH_PRUNE_UNSPECIFIED, \
+ GIT_REMOTE_UPDATE_FETCHHEAD, \
+ GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED, \
+ GIT_PROXY_OPTIONS_INIT }
/**
* Initialize git_fetch_options structure
@@ -785,13 +880,28 @@ typedef struct {
*/
git_proxy_options proxy_opts;
+ /**
+ * Whether to allow off-site redirects. If this is not
+ * specified, the `http.followRedirects` configuration setting
+ * will be consulted.
+ */
+ git_remote_redirect_t follow_redirects;
+
/**
* Extra headers for this push operation
*/
git_strarray custom_headers;
+
+ /**
+ * "Push options" to deliver to the remote.
+ */
+ git_strarray remote_push_options;
} git_push_options;
+/** Current version for the `git_push_options` structure */
#define GIT_PUSH_OPTIONS_VERSION 1
+
+/** Static constructor for `git_push_options` */
#define GIT_PUSH_OPTIONS_INIT { GIT_PUSH_OPTIONS_VERSION, 1, GIT_REMOTE_CALLBACKS_INIT, GIT_PROXY_OPTIONS_INIT }
/**
@@ -809,7 +919,103 @@ GIT_EXTERN(int) git_push_options_init(
unsigned int version);
/**
- * Download and index the packfile
+ * Remote creation options structure
+ *
+ * Initialize with `GIT_REMOTE_CREATE_OPTIONS_INIT`. Alternatively, you can
+ * use `git_remote_create_options_init`.
+ *
+ */
+typedef struct {
+ unsigned int version;
+
+ /** Callbacks to use for this connection */
+ git_remote_callbacks callbacks;
+
+ /** HTTP Proxy settings */
+ git_proxy_options proxy_opts;
+
+ /**
+ * Whether to allow off-site redirects. If this is not
+ * specified, the `http.followRedirects` configuration setting
+ * will be consulted.
+ */
+ git_remote_redirect_t follow_redirects;
+
+ /** Extra HTTP headers to use in this connection */
+ git_strarray custom_headers;
+} git_remote_connect_options;
+
+/** Current version for the `git_remote_connect_options` structure */
+#define GIT_REMOTE_CONNECT_OPTIONS_VERSION 1
+
+/** Static constructor for `git_remote_connect_options` */
+#define GIT_REMOTE_CONNECT_OPTIONS_INIT { \
+ GIT_REMOTE_CONNECT_OPTIONS_VERSION, \
+ GIT_REMOTE_CALLBACKS_INIT, \
+ GIT_PROXY_OPTIONS_INIT }
+
+/**
+ * Initialize git_remote_connect_options structure.
+ *
+ * Initializes a `git_remote_connect_options` with default values.
+ * Equivalent to creating an instance with
+ * `GIT_REMOTE_CONNECT_OPTIONS_INIT`.
+ *
+ * @param opts The `git_remote_connect_options` struct to initialize.
+ * @param version The struct version; pass `GIT_REMOTE_CONNECT_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_remote_connect_options_init(
+ git_remote_connect_options *opts,
+ unsigned int version);
+
+/**
+ * Open a connection to a remote.
+ *
+ * The transport is selected based on the URL; the direction argument
+ * is due to a limitation of the git protocol which starts up a
+ * specific binary which can only do the one or the other.
+ *
+ * @param remote the remote to connect to
+ * @param direction GIT_DIRECTION_FETCH if you want to fetch or
+ * GIT_DIRECTION_PUSH if you want to push
+ * @param callbacks the callbacks to use for this connection
+ * @param proxy_opts proxy settings
+ * @param custom_headers extra HTTP headers to use in this connection
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_remote_connect(
+ git_remote *remote,
+ git_direction direction,
+ const git_remote_callbacks *callbacks,
+ const git_proxy_options *proxy_opts,
+ const git_strarray *custom_headers);
+
+/**
+ * Open a connection to a remote with extended options.
+ *
+ * The transport is selected based on the URL; the direction argument
+ * is due to a limitation of the git protocol which starts up a
+ * specific binary which can only do the one or the other.
+ *
+ * The given options structure will form the defaults for connection
+ * options and callback setup. Callers may override these defaults
+ * by specifying `git_fetch_options` or `git_push_options` in
+ * subsequent calls.
+ *
+ * @param remote the remote to connect to
+ * @param direction GIT_DIRECTION_FETCH if you want to fetch or
+ * GIT_DIRECTION_PUSH if you want to push
+ * @param opts the remote connection options
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_remote_connect_ext(
+ git_remote *remote,
+ git_direction direction,
+ const git_remote_connect_options *opts);
+
+/**
+ * Download and index the packfile.
*
* Connect to the remote if it hasn't been done yet, negotiate with
* the remote git which objects are missing, download and index the
@@ -818,19 +1024,31 @@ GIT_EXTERN(int) git_push_options_init(
* The .idx file will be created and both it and the packfile with be
* renamed to their final name.
*
+ * If options are specified and this remote is already connected then
+ * the existing remote connection options will be discarded and the
+ * remote will now use the new options.
+ *
* @param remote the remote
* @param refspecs the refspecs to use for this negotiation and
* download. Use NULL or an empty array to use the base refspecs
- * @param opts the options to use for this fetch
+ * @param opts the options to use for this fetch or NULL
* @return 0 or an error code
*/
- GIT_EXTERN(int) git_remote_download(git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts);
+ GIT_EXTERN(int) git_remote_download(
+ git_remote *remote,
+ const git_strarray *refspecs,
+ const git_fetch_options *opts);
/**
* Create a packfile and send it to the server
*
* Connect to the remote if it hasn't been done yet, negotiate with
- * the remote git which objects are missing, create a packfile with the missing objects and send it.
+ * the remote git which objects are missing, create a packfile with
+ * the missing objects and send it.
+ *
+ * If options are specified and this remote is already connected then
+ * the existing remote connection options will be discarded and the
+ * remote will now use the new options.
*
* @param remote the remote
* @param refspecs the refspecs to use for this negotiation and
@@ -838,39 +1056,49 @@ GIT_EXTERN(int) git_push_options_init(
* @param opts the options to use for this push
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_remote_upload(git_remote *remote, const git_strarray *refspecs, const git_push_options *opts);
+GIT_EXTERN(int) git_remote_upload(
+ git_remote *remote,
+ const git_strarray *refspecs,
+ const git_push_options *opts);
/**
- * Update the tips to the new state
+ * Update the tips to the new state.
+ *
+ * If callbacks are not specified then the callbacks specified to
+ * `git_remote_connect` will be used (if it was called).
*
* @param remote the remote to update
+ * @param callbacks pointer to the callback structure to use or NULL
+ * @param update_flags the git_remote_update_flags for these tips.
+ * @param download_tags what the behaviour for downloading tags is for this fetch. This is
+ * ignored for push. This must be the same value passed to `git_remote_download()`.
* @param reflog_message The message to insert into the reflogs. If
* NULL and fetching, the default is "fetch ", where is
* the name of the remote (or its url, for in-memory remotes). This
* parameter is ignored when pushing.
- * @param callbacks pointer to the callback structure to use
- * @param update_fetchhead whether to write to FETCH_HEAD. Pass 1 to behave like git.
- * @param download_tags what the behaviour for downloading tags is for this fetch. This is
- * ignored for push. This must be the same value passed to `git_remote_download()`.
* @return 0 or an error code
*/
GIT_EXTERN(int) git_remote_update_tips(
git_remote *remote,
const git_remote_callbacks *callbacks,
- int update_fetchhead,
+ unsigned int update_flags,
git_remote_autotag_option_t download_tags,
const char *reflog_message);
/**
- * Download new data and update tips
+ * Download new data and update tips.
*
* Convenience function to connect to a remote, download the data,
* disconnect and update the remote-tracking branches.
*
+ * If options are specified and this remote is already connected then
+ * the existing remote connection options will be discarded and the
+ * remote will now use the new options.
+ *
* @param remote the remote to fetch from
* @param refspecs the refspecs to use for this fetch. Pass NULL or an
* empty array to use the base refspecs.
- * @param opts options to use for this fetch
+ * @param opts options to use for this fetch or NULL
* @param reflog_message The message to insert into the reflogs. If NULL, the
* default is "fetch"
* @return 0 or an error code
@@ -882,30 +1110,42 @@ GIT_EXTERN(int) git_remote_fetch(
const char *reflog_message);
/**
- * Prune tracking refs that are no longer present on remote
+ * Prune tracking refs that are no longer present on remote.
+ *
+ * If callbacks are not specified then the callbacks specified to
+ * `git_remote_connect` will be used (if it was called).
*
* @param remote the remote to prune
* @param callbacks callbacks to use for this prune
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_remote_prune(git_remote *remote, const git_remote_callbacks *callbacks);
+GIT_EXTERN(int) git_remote_prune(
+ git_remote *remote,
+ const git_remote_callbacks *callbacks);
/**
- * Perform a push
+ * Perform a push.
*
- * Peform all the steps from a push.
+ * If options are specified and this remote is already connected then
+ * the existing remote connection options will be discarded and the
+ * remote will now use the new options.
*
* @param remote the remote to push to
* @param refspecs the refspecs to use for pushing. If NULL or an empty
* array, the configured refspecs will be used
* @param opts options to use for this push
+ * @return 0 or an error code.
*/
-GIT_EXTERN(int) git_remote_push(git_remote *remote,
- const git_strarray *refspecs,
- const git_push_options *opts);
+GIT_EXTERN(int) git_remote_push(
+ git_remote *remote,
+ const git_strarray *refspecs,
+ const git_push_options *opts);
/**
* Get the statistics structure that is filled in by the fetch operation.
+ *
+ * @param remote the remote to get statistics for
+ * @return the git_indexer_progress for the remote
*/
GIT_EXTERN(const git_indexer_progress *) git_remote_stats(git_remote *remote);
@@ -1005,4 +1245,5 @@ GIT_EXTERN(int) git_remote_default_branch(git_buf *out, git_remote *remote);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/repository.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/repository.h
index 8d1cffc..b203576 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/repository.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/repository.h
@@ -10,12 +10,14 @@
#include "common.h"
#include "types.h"
#include "oid.h"
+#include "odb.h"
#include "buffer.h"
+#include "commit.h"
/**
* @file git2/repository.h
- * @brief Git repository management routines
- * @defgroup git_repository Git repository management routines
+ * @brief The repository stores revisions for a source tree
+ * @defgroup git_repository The repository stores revisions for a source tree
* @ingroup Git
* @{
*/
@@ -30,7 +32,11 @@ GIT_BEGIN_DECL
* The method will automatically detect if 'path' is a normal
* or bare repository or fail is 'path' is neither.
*
- * @param out pointer to the repo which will be opened
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
+ * @param[out] out pointer to the repo which will be opened
* @param path the path to the repository
* @return 0 or an error code
*/
@@ -58,7 +64,9 @@ GIT_EXTERN(int) git_repository_open_from_worktree(git_repository **out, git_work
* @param odb the object database to wrap
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_repository_wrap_odb(git_repository **out, git_odb *odb);
+GIT_EXTERN(int) git_repository_wrap_odb(
+ git_repository **out,
+ git_odb *odb);
/**
* Look for a git repository and copy its path in the given buffer.
@@ -70,6 +78,10 @@ GIT_EXTERN(int) git_repository_wrap_odb(git_repository **out, git_odb *odb);
* The method will automatically detect if the repository is bare
* (if there is a repository).
*
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
* @param out A pointer to a user-allocated git_buf which will contain
* the found path.
*
@@ -141,13 +153,17 @@ typedef enum {
* `git_repository_open_ext` with this flag will error out if either
* $GIT_WORK_TREE or $GIT_COMMON_DIR is set.
*/
- GIT_REPOSITORY_OPEN_FROM_ENV = (1 << 4),
+ GIT_REPOSITORY_OPEN_FROM_ENV = (1 << 4)
} git_repository_open_flag_t;
/**
* Find and open a repository with extended controls.
*
- * @param out Pointer to the repo which will be opened. This can
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
+ * @param[out] out Pointer to the repo which will be opened. This can
* actually be NULL if you only want to use the error code to
* see if a repo at this path could be opened.
* @param path Path to open as git repository. If the flags
@@ -175,7 +191,11 @@ GIT_EXTERN(int) git_repository_open_ext(
* if you're e.g. hosting git repositories and need to access them
* efficiently
*
- * @param out Pointer to the repo which will be opened.
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
+ * @param[out] out Pointer to the repo which will be opened.
* @param bare_path Direct path to the bare repository
* @return 0 on success, or an error code
*/
@@ -200,7 +220,11 @@ GIT_EXTERN(void) git_repository_free(git_repository *repo);
* TODO:
* - Reinit the repository
*
- * @param out pointer to the repo which will be created or reinitialized
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
+ * @param[out] out pointer to the repo which will be created or reinitialized
* @param path the path to the repository
* @param is_bare if true, a Git repository without a working directory is
* created at the pointed path. If false, provided path will be
@@ -267,7 +291,7 @@ typedef enum {
* If an alternate workdir is specified, use relative paths for the gitdir
* and core.worktree.
*/
- GIT_REPOSITORY_INIT_RELATIVE_GITLINK = (1u << 6),
+ GIT_REPOSITORY_INIT_RELATIVE_GITLINK = (1u << 6)
} git_repository_init_flag_t;
/**
@@ -292,7 +316,7 @@ typedef enum {
/**
* Use "--shared=all" behavior, adding world readability.
*/
- GIT_REPOSITORY_INIT_SHARED_ALL = 0002777,
+ GIT_REPOSITORY_INIT_SHARED_ALL = 0002777
} git_repository_init_mode_t;
/**
@@ -351,9 +375,21 @@ typedef struct {
* pointing to this URL.
*/
const char *origin_url;
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /**
+ *
+ * Type of object IDs to use for this repository, or 0 for
+ * default (currently SHA1).
+ */
+ git_oid_t oid_type;
+#endif
} git_repository_init_options;
+/** Current version for the `git_repository_init_options` structure */
#define GIT_REPOSITORY_INIT_OPTIONS_VERSION 1
+
+/** Static constructor for `git_repository_init_options` */
#define GIT_REPOSITORY_INIT_OPTIONS_INIT {GIT_REPOSITORY_INIT_OPTIONS_VERSION}
/**
@@ -378,6 +414,10 @@ GIT_EXTERN(int) git_repository_init_options_init(
* auto-detect the case sensitivity of the file system and if the
* file system supports file mode bits correctly.
*
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
* @param out Pointer to the repo which will be created or reinitialized.
* @param repo_path The path to the repository.
* @param opts Pointer to git_repository_init_options struct.
@@ -395,7 +435,7 @@ GIT_EXTERN(int) git_repository_init_ext(
* `git_reference_free()` must be called when done with it to release the
* allocated memory and prevent a leak.
*
- * @param out pointer to the reference which will be retrieved
+ * @param[out] out pointer to the reference which will be retrieved
* @param repo a repository object
*
* @return 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing
@@ -456,7 +496,9 @@ GIT_EXTERN(int) git_repository_head_unborn(git_repository *repo);
* Check if a repository is empty
*
* An empty repository has just been initialized and contains no references
- * apart from HEAD, which must be pointing to the unborn master branch.
+ * apart from HEAD, which must be pointing to the unborn master branch,
+ * or the branch specified for the repository in the `init.defaultBranch`
+ * configuration variable.
*
* @param repo Repo to test
* @return 1 if the repository is empty, 0 if it isn't, error code
@@ -482,6 +524,7 @@ typedef enum {
GIT_REPOSITORY_ITEM_LOGS,
GIT_REPOSITORY_ITEM_MODULES,
GIT_REPOSITORY_ITEM_WORKTREES,
+ GIT_REPOSITORY_ITEM_WORKTREE_CONFIG,
GIT_REPOSITORY_ITEM__LAST
} git_repository_item_t;
@@ -525,7 +568,7 @@ GIT_EXTERN(const char *) git_repository_workdir(const git_repository *repo);
/**
* Get the path of the shared common directory for this repository.
- *
+ *
* If the repository is bare, it is the root directory for the repository.
* If the repository is a worktree, it is the parent repo's gitdir.
* Otherwise, it is the gitdir.
@@ -613,7 +656,7 @@ GIT_EXTERN(int) git_repository_config_snapshot(git_config **out, git_repository
* The ODB must be freed once it's no longer being used by
* the user.
*
- * @param out Pointer to store the loaded ODB
+ * @param[out] out Pointer to store the loaded ODB
* @param repo A repository object
* @return 0, or an error code
*/
@@ -629,7 +672,7 @@ GIT_EXTERN(int) git_repository_odb(git_odb **out, git_repository *repo);
* The refdb must be freed once it's no longer being used by
* the user.
*
- * @param out Pointer to store the loaded refdb
+ * @param[out] out Pointer to store the loaded refdb
* @param repo A repository object
* @return 0, or an error code
*/
@@ -645,7 +688,7 @@ GIT_EXTERN(int) git_repository_refdb(git_refdb **out, git_repository *repo);
* The index must be freed once it's no longer being used by
* the user.
*
- * @param out Pointer to store the loaded index
+ * @param[out] out Pointer to store the loaded index
* @param repo A repository object
* @return 0, or an error code
*/
@@ -673,6 +716,9 @@ GIT_EXTERN(int) git_repository_message(git_buf *out, git_repository *repo);
* Remove git's prepared message.
*
* Remove the message that `git_repository_message` retrieves.
+ *
+ * @param repo Repository to remove prepared message from.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_repository_message_remove(git_repository *repo);
@@ -808,19 +854,19 @@ GIT_EXTERN(int) git_repository_set_head(
* If the provided committish cannot be found in the repository, the HEAD
* is unaltered and GIT_ENOTFOUND is returned.
*
- * If the provided commitish cannot be peeled into a commit, the HEAD
+ * If the provided committish cannot be peeled into a commit, the HEAD
* is unaltered and -1 is returned.
*
* Otherwise, the HEAD will eventually be detached and will directly point to
* the peeled Commit.
*
* @param repo Repository pointer
- * @param commitish Object id of the Commit the HEAD should point to
+ * @param committish Object id of the Commit the HEAD should point to
* @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_repository_set_head_detached(
git_repository *repo,
- const git_oid *commitish);
+ const git_oid *committish);
/**
* Make the repository HEAD directly point to the Commit.
@@ -832,11 +878,13 @@ GIT_EXTERN(int) git_repository_set_head_detached(
*
* See the documentation for `git_repository_set_head_detached()`.
*
- * @see git_repository_set_head_detached
+ * @param repo Repository pointer
+ * @param committish annotated commit to point HEAD to
+ * @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_repository_set_head_detached_from_annotated(
git_repository *repo,
- const git_annotated_commit *commitish);
+ const git_annotated_commit *committish);
/**
* Detach the HEAD.
@@ -846,7 +894,7 @@ GIT_EXTERN(int) git_repository_set_head_detached_from_annotated(
* If the HEAD is already detached and points to a Tag, the HEAD is
* updated into making it point to the peeled Commit, and 0 is returned.
*
- * If the HEAD is already detached and points to a non commitish, the HEAD is
+ * If the HEAD is already detached and points to a non committish, the HEAD is
* unaltered, and -1 is returned.
*
* Otherwise, the HEAD will be detached and point to the peeled Commit.
@@ -876,7 +924,7 @@ typedef enum {
GIT_REPOSITORY_STATE_REBASE_INTERACTIVE,
GIT_REPOSITORY_STATE_REBASE_MERGE,
GIT_REPOSITORY_STATE_APPLY_MAILBOX,
- GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE,
+ GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE
} git_repository_state_t;
/**
@@ -925,9 +973,10 @@ GIT_EXTERN(int) git_repository_is_shallow(git_repository *repo);
* The memory is owned by the repository and must not be freed by the
* user.
*
- * @param name where to store the pointer to the name
- * @param email where to store the pointer to the email
+ * @param[out] name where to store the pointer to the name
+ * @param[out] email where to store the pointer to the email
* @param repo the repository
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_repository_ident(const char **name, const char **email, const git_repository *repo);
@@ -941,9 +990,30 @@ GIT_EXTERN(int) git_repository_ident(const char **name, const char **email, cons
* @param repo the repository to configure
* @param name the name to use for the reflog entries
* @param email the email to use for the reflog entries
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_repository_set_ident(git_repository *repo, const char *name, const char *email);
+/**
+ * Gets the object type used by this repository.
+ *
+ * @param repo the repository
+ * @return the object id type
+ */
+GIT_EXTERN(git_oid_t) git_repository_oid_type(git_repository *repo);
+
+/**
+ * Gets the parents of the next commit, given the current repository state.
+ * Generally, this is the HEAD commit, except when performing a merge, in
+ * which case it is two or more commits.
+ *
+ * @param commits a `git_commitarray` that will contain the commit parents
+ * @param repo the repository
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_repository_commit_parents(git_commitarray *commits, git_repository *repo);
+
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/reset.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/reset.h
index be25414..0123f7c 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/reset.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/reset.h
@@ -14,7 +14,7 @@
/**
* @file git2/reset.h
- * @brief Git reset management routines
+ * @brief Reset will update the local repository to a prior state
* @ingroup Git
* @{
*/
@@ -26,7 +26,7 @@ GIT_BEGIN_DECL
typedef enum {
GIT_RESET_SOFT = 1, /**< Move the head to the given commit */
GIT_RESET_MIXED = 2, /**< SOFT plus reset index to the commit */
- GIT_RESET_HARD = 3, /**< MIXED plus changes in working tree discarded */
+ GIT_RESET_HARD = 3 /**< MIXED plus changes in working tree discarded */
} git_reset_t;
/**
@@ -48,7 +48,7 @@ typedef enum {
*
* @param target Committish to which the Head should be moved to. This object
* must belong to the given `repo` and can either be a git_commit or a
- * git_tag. When a git_tag is being passed, it should be dereferencable
+ * git_tag. When a git_tag is being passed, it should be dereferenceable
* to a git_commit which oid will be used as the target of the branch.
*
* @param reset_type Kind of reset operation to perform.
@@ -75,11 +75,23 @@ GIT_EXTERN(int) git_reset(
*
* See the documentation for `git_reset()`.
*
- * @see git_reset
+ * @param repo Repository where to perform the reset operation.
+ *
+ * @param target Annotated commit to which the Head should be moved to.
+ * This object must belong to the given `repo`, it will be dereferenced
+ * to a git_commit which oid will be used as the target of the branch.
+ *
+ * @param reset_type Kind of reset operation to perform.
+ *
+ * @param checkout_opts Optional checkout options to be used for a HARD reset.
+ * The checkout_strategy field will be overridden (based on reset_type).
+ * This parameter can be used to propagate notify and progress callbacks.
+ *
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_reset_from_annotated(
git_repository *repo,
- const git_annotated_commit *commit,
+ const git_annotated_commit *target,
git_reset_t reset_type,
const git_checkout_options *checkout_opts);
@@ -108,4 +120,5 @@ GIT_EXTERN(int) git_reset_default(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/revert.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/revert.h
index 331e90d..ec51eca 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/revert.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/revert.h
@@ -13,8 +13,8 @@
/**
* @file git2/revert.h
- * @brief Git revert routines
- * @defgroup git_revert Git revert routines
+ * @brief Cherry-pick the inverse of a change to "undo" its effects
+ * @defgroup git_revert Cherry-pick the inverse of a change to "undo" its effects
* @ingroup Git
* @{
*/
@@ -33,8 +33,13 @@ typedef struct {
git_checkout_options checkout_opts; /**< Options for the checkout */
} git_revert_options;
+/** Current version for the `git_revert_options` structure */
#define GIT_REVERT_OPTIONS_VERSION 1
-#define GIT_REVERT_OPTIONS_INIT {GIT_REVERT_OPTIONS_VERSION, 0, GIT_MERGE_OPTIONS_INIT, GIT_CHECKOUT_OPTIONS_INIT}
+
+/** Static constructor for `git_revert_options` */
+#define GIT_REVERT_OPTIONS_INIT { \
+ GIT_REVERT_OPTIONS_VERSION, 0, \
+ GIT_MERGE_OPTIONS_INIT, GIT_CHECKOUT_OPTIONS_INIT }
/**
* Initialize git_revert_options structure
@@ -87,5 +92,5 @@ GIT_EXTERN(int) git_revert(
/** @} */
GIT_END_DECL
-#endif
+#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/revparse.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/revparse.h
index e14ddee..c14fe3d 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/revparse.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/revparse.h
@@ -12,8 +12,8 @@
/**
* @file git2/revparse.h
- * @brief Git revision parsing routines
- * @defgroup git_revparse Git revision parsing routines
+ * @brief Parse the textual revision information
+ * @defgroup git_revparse Parse the textual revision information
* @ingroup Git
* @{
*/
@@ -74,7 +74,7 @@ typedef enum {
/** The spec targeted a range of commits. */
GIT_REVSPEC_RANGE = 1 << 1,
/** The spec used the '...' operator, which invokes special semantics. */
- GIT_REVSPEC_MERGE_BASE = 1 << 2,
+ GIT_REVSPEC_MERGE_BASE = 1 << 2
} git_revspec_t;
/**
@@ -107,7 +107,7 @@ GIT_EXTERN(int) git_revparse(
git_repository *repo,
const char *spec);
-
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/revwalk.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/revwalk.h
index 98dcbf8..7c4ac54 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/revwalk.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/revwalk.h
@@ -13,8 +13,8 @@
/**
* @file git2/revwalk.h
- * @brief Git revision traversal routines
- * @defgroup git_revwalk Git revision traversal routines
+ * @brief Traverse (walk) the commit graph (revision history)
+ * @defgroup git_revwalk Traverse (walk) the commit graph (revision history)
* @ingroup Git
* @{
*/
@@ -49,7 +49,7 @@ typedef enum {
* order; this sorting mode can be combined with
* any of the above.
*/
- GIT_SORT_REVERSE = 1 << 2,
+ GIT_SORT_REVERSE = 1 << 2
} git_sort_t;
/**
@@ -249,6 +249,7 @@ GIT_EXTERN(int) git_revwalk_push_range(git_revwalk *walk, const char *range);
*
* No parents other than the first for each commit will be enqueued.
*
+ * @param walk The revision walker.
* @return 0 or an error code
*/
GIT_EXTERN(int) git_revwalk_simplify_first_parent(git_revwalk *walk);
@@ -277,6 +278,7 @@ GIT_EXTERN(git_repository *) git_revwalk_repository(git_revwalk *walk);
*
* @param commit_id oid of Commit
* @param payload User-specified pointer to data to be passed as data payload
+ * @return non-zero to hide the commmit and it parent.
*/
typedef int GIT_CALLBACK(git_revwalk_hide_cb)(
const git_oid *commit_id,
@@ -288,6 +290,7 @@ typedef int GIT_CALLBACK(git_revwalk_hide_cb)(
* @param walk the revision walker
* @param hide_cb callback function to hide a commit and its parents
* @param payload data payload to be passed to callback function
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_revwalk_add_hide_cb(
git_revwalk *walk,
@@ -296,4 +299,5 @@ GIT_EXTERN(int) git_revwalk_add_hide_cb(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/signature.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/signature.h
index b14f3ea..20ec24b 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/signature.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/signature.h
@@ -12,9 +12,13 @@
/**
* @file git2/signature.h
- * @brief Git signature creation
+ * @brief Signatures are the actor in a repository and when they acted
* @defgroup git_signature Git signature creation
* @ingroup Git
+ *
+ * Signatures contain the information about the actor (committer or
+ * author) in a repository, and the time that they performed the
+ * commit, or authoring.
* @{
*/
GIT_BEGIN_DECL
@@ -48,6 +52,42 @@ GIT_EXTERN(int) git_signature_new(git_signature **out, const char *name, const c
*/
GIT_EXTERN(int) git_signature_now(git_signature **out, const char *name, const char *email);
+/**
+ * Create a new author and/or committer signatures with default
+ * information based on the configuration and environment variables.
+ *
+ * If `author_out` is set, it will be populated with the author
+ * information. The `GIT_AUTHOR_NAME` and `GIT_AUTHOR_EMAIL`
+ * environment variables will be honored, and `user.name` and
+ * `user.email` configuration options will be honored if the
+ * environment variables are unset. For timestamps, `GIT_AUTHOR_DATE`
+ * will be used, otherwise the current time will be used.
+ *
+ * If `committer_out` is set, it will be populated with the
+ * committer information. The `GIT_COMMITTER_NAME` and
+ * `GIT_COMMITTER_EMAIL` environment variables will be honored,
+ * and `user.name` and `user.email` configuration options will
+ * be honored if the environment variables are unset. For timestamps,
+ * `GIT_COMMITTER_DATE` will be used, otherwise the current time will
+ * be used.
+ *
+ * If neither `GIT_AUTHOR_DATE` nor `GIT_COMMITTER_DATE` are set,
+ * both timestamps will be set to the same time.
+ *
+ * It will return `GIT_ENOTFOUND` if either the `user.name` or
+ * `user.email` are not set and there is no fallback from an environment
+ * variable. One of `author_out` or `committer_out` must be set.
+ *
+ * @param author_out pointer to set the author signature, or NULL
+ * @param committer_out pointer to set the committer signature, or NULL
+ * @param repo repository pointer
+ * @return 0 on success, GIT_ENOTFOUND if config is missing, or error code
+ */
+GIT_EXTERN(int) git_signature_default_from_env(
+ git_signature **author_out,
+ git_signature **committer_out,
+ git_repository *repo);
+
/**
* Create a new action signature with default user and now timestamp.
*
@@ -56,6 +96,10 @@ GIT_EXTERN(int) git_signature_now(git_signature **out, const char *name, const c
* based on that information. It will return GIT_ENOTFOUND if either the
* user.name or user.email are not set.
*
+ * Note that these do not examine environment variables, only the
+ * configuration files. Use `git_signature_default_from_env` to
+ * consider the environment variables.
+ *
* @param out new signature
* @param repo repository pointer
* @return 0 on success, GIT_ENOTFOUND if config is missing, or error code
@@ -71,7 +115,7 @@ GIT_EXTERN(int) git_signature_default(git_signature **out, git_repository *repo)
*
* @param out new signature
* @param buf signature string
- * @return 0 on success, or an error code
+ * @return 0 on success, GIT_EINVALID if the signature is not parseable, or an error code
*/
GIT_EXTERN(int) git_signature_from_buffer(git_signature **out, const char *buf);
@@ -100,4 +144,5 @@ GIT_EXTERN(void) git_signature_free(git_signature *sig);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/stash.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/stash.h
index 795920e..ad28c32 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/stash.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/stash.h
@@ -13,8 +13,13 @@
/**
* @file git2/stash.h
- * @brief Git stash management routines
+ * @brief Stashes stores some uncommitted state in the repository
* @ingroup Git
+ *
+ * Stashes stores some uncommitted state in the repository; generally
+ * this allows a user to stash some changes so that they can restore
+ * the working directory to an unmodified state. This can allow a
+ * developer to work on two different changes in parallel.
* @{
*/
GIT_BEGIN_DECL
@@ -45,6 +50,11 @@ typedef enum {
* the working directory
*/
GIT_STASH_INCLUDE_IGNORED = (1 << 2),
+
+ /**
+ * All changes in the index and working directory are left intact
+ */
+ GIT_STASH_KEEP_ALL = (1 << 3)
} git_stash_flags;
/**
@@ -52,15 +62,10 @@ typedef enum {
*
* @param out Object id of the commit containing the stashed state.
* This commit is also the target of the direct reference refs/stash.
- *
* @param repo The owning repository.
- *
* @param stasher The identity of the person performing the stashing.
- *
* @param message Optional description along with the stashed state.
- *
* @param flags Flags to control the stashing process. (see GIT_STASH_* above)
- *
* @return 0 on success, GIT_ENOTFOUND where there's nothing to stash,
* or error code.
*/
@@ -71,6 +76,63 @@ GIT_EXTERN(int) git_stash_save(
const char *message,
uint32_t flags);
+/**
+ * Stash save options structure
+ *
+ * Initialize with `GIT_STASH_SAVE_OPTIONS_INIT`. Alternatively, you can
+ * use `git_stash_save_options_init`.
+ *
+ */
+typedef struct git_stash_save_options {
+ unsigned int version;
+
+ /** Flags to control the stashing process. (see GIT_STASH_* above) */
+ uint32_t flags;
+
+ /** The identity of the person performing the stashing. */
+ const git_signature *stasher;
+
+ /** Optional description along with the stashed state. */
+ const char *message;
+
+ /** Optional paths that control which files are stashed. */
+ git_strarray paths;
+} git_stash_save_options;
+
+/** Current version for the `git_stash_save_options` structure */
+#define GIT_STASH_SAVE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_stash_save_options` */
+#define GIT_STASH_SAVE_OPTIONS_INIT { GIT_STASH_SAVE_OPTIONS_VERSION }
+
+/**
+ * Initialize git_stash_save_options structure
+ *
+ * Initializes a `git_stash_save_options` with default values. Equivalent to
+ * creating an instance with `GIT_STASH_SAVE_OPTIONS_INIT`.
+ *
+ * @param opts The `git_stash_save_options` struct to initialize.
+ * @param version The struct version; pass `GIT_STASH_SAVE_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_stash_save_options_init(
+ git_stash_save_options *opts, unsigned int version);
+
+/**
+ * Save the local modifications to a new stash, with options.
+ *
+ * @param out Object id of the commit containing the stashed state.
+ * This commit is also the target of the direct reference refs/stash.
+ * @param repo The owning repository.
+ * @param opts The stash options.
+ * @return 0 on success, GIT_ENOTFOUND where there's nothing to stash,
+ * or error code.
+ */
+GIT_EXTERN(int) git_stash_save_with_opts(
+ git_oid *out,
+ git_repository *repo,
+ const git_stash_save_options *opts);
+
/** Stash application flags. */
typedef enum {
GIT_STASH_APPLY_DEFAULT = 0,
@@ -78,7 +140,7 @@ typedef enum {
/* Try to reinstate not only the working tree's changes,
* but also the index's changes.
*/
- GIT_STASH_APPLY_REINSTATE_INDEX = (1 << 0),
+ GIT_STASH_APPLY_REINSTATE_INDEX = (1 << 0)
} git_stash_apply_flags;
/** Stash apply progression states */
@@ -104,13 +166,17 @@ typedef enum {
GIT_STASH_APPLY_PROGRESS_CHECKOUT_MODIFIED,
/** The stash was applied successfully. */
- GIT_STASH_APPLY_PROGRESS_DONE,
+ GIT_STASH_APPLY_PROGRESS_DONE
} git_stash_apply_progress_t;
/**
* Stash application progress notification function.
* Return 0 to continue processing, or a negative value to
* abort the stash application.
+ *
+ * @param progress the progress information
+ * @param payload the user-specified payload to the apply function
+ * @return 0 on success, -1 on error
*/
typedef int GIT_CALLBACK(git_stash_apply_progress_cb)(
git_stash_apply_progress_t progress,
@@ -137,7 +203,10 @@ typedef struct git_stash_apply_options {
void *progress_payload;
} git_stash_apply_options;
+/** Current version for the `git_stash_apply_options` structure */
#define GIT_STASH_APPLY_OPTIONS_VERSION 1
+
+/** Static constructor for `git_stash_apply_options` */
#define GIT_STASH_APPLY_OPTIONS_INIT { \
GIT_STASH_APPLY_OPTIONS_VERSION, \
GIT_STASH_APPLY_DEFAULT, \
@@ -171,8 +240,6 @@ GIT_EXTERN(int) git_stash_apply_options_init(
* GIT_EMERGECONFLICT and both the working directory and index will be left
* unmodified.
*
- * Note that a minimum checkout strategy of `GIT_CHECKOUT_SAFE` is implied.
- *
* @param repo The owning repository.
* @param index The position within the stash list. 0 points to the
* most recent stashed state.
@@ -257,4 +324,5 @@ GIT_EXTERN(int) git_stash_pop(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/status.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/status.h
index 543e3fa..e13783b 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/status.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/status.h
@@ -14,7 +14,7 @@
/**
* @file git2/status.h
- * @brief Git file status routines
+ * @brief Status indicates how a user has changed the working directory and index
* @defgroup git_status Git file status routines
* @ingroup Git
* @{
@@ -48,17 +48,16 @@ typedef enum {
GIT_STATUS_WT_UNREADABLE = (1u << 12),
GIT_STATUS_IGNORED = (1u << 14),
- GIT_STATUS_CONFLICTED = (1u << 15),
+ GIT_STATUS_CONFLICTED = (1u << 15)
} git_status_t;
/**
* Function pointer to receive status on individual files
*
- * `path` is the relative path to the file from the root of the repository.
- *
- * `status_flags` is a combination of `git_status_t` values that apply.
- *
- * `payload` is the value you passed to the foreach function as payload.
+ * @param path is the path to the file
+ * @param status_flags the `git_status_t` values for file's status
+ * @param payload the user-specified payload to the foreach function
+ * @return 0 on success, or a negative number on failure
*/
typedef int GIT_CALLBACK(git_status_cb)(
const char *path, unsigned int status_flags, void *payload);
@@ -87,7 +86,7 @@ typedef enum {
* Only gives status based on index to working directory comparison,
* not comparing the index to the HEAD.
*/
- GIT_STATUS_SHOW_WORKDIR_ONLY = 2,
+ GIT_STATUS_SHOW_WORKDIR_ONLY = 2
} git_status_show_t;
/**
@@ -204,9 +203,10 @@ typedef enum {
* Unreadable files will be detected and given the status
* untracked instead of unreadable.
*/
- GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED = (1u << 15),
+ GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED = (1u << 15)
} git_status_opt_t;
+/** Default `git_status_opt_t` values */
#define GIT_STATUS_OPT_DEFAULTS \
(GIT_STATUS_OPT_INCLUDE_IGNORED | \
GIT_STATUS_OPT_INCLUDE_UNTRACKED | \
@@ -227,13 +227,16 @@ typedef struct {
/**
* The `show` value is one of the `git_status_show_t` constants that
- * control which files to scan and in what order.
+ * control which files to scan and in what order. The default is
+ * `GIT_STATUS_SHOW_INDEX_AND_WORKDIR`.
*/
git_status_show_t show;
/**
* The `flags` value is an OR'ed combination of the
- * `git_status_opt_t` values above.
+ * `git_status_opt_t` values above. The default is
+ * `GIT_STATUS_OPT_DEFAULTS`, which matches git's default
+ * behavior.
*/
unsigned int flags;
@@ -250,9 +253,18 @@ typedef struct {
* working directory and index; defaults to HEAD.
*/
git_tree *baseline;
+
+ /**
+ * Threshold above which similar files will be considered renames.
+ * This is equivalent to the -M option. Defaults to 50.
+ */
+ uint16_t rename_threshold;
} git_status_options;
+/** Current version for the `git_status_options` structure */
#define GIT_STATUS_OPTIONS_VERSION 1
+
+/** Static constructor for `git_status_options` */
#define GIT_STATUS_OPTIONS_INIT {GIT_STATUS_OPTIONS_VERSION}
/**
@@ -440,4 +452,5 @@ GIT_EXTERN(int) git_status_should_ignore(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/stdint.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/stdint.h
index 6950427..4f532e1 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/stdint.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/stdint.h
@@ -1,37 +1,37 @@
-// ISO C9x compliant stdint.h for Microsoft Visual Studio
-// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
-//
-// Copyright (c) 2006-2008 Alexander Chemeris
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// 1. Redistributions of source code must retain the above copyright notice,
-// this list of conditions and the following disclaimer.
-//
-// 2. Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-//
-// 3. The name of the author may be used to endorse or promote products
-// derived from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#ifdef _MSC_VER // [
-
-#ifndef _MSC_STDINT_H_ // [
+/* ISO C9x compliant stdint.h for Microsoft Visual Studio
+ * Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
+ *
+ * Copyright (c) 2006-2008 Alexander Chemeris
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * 3. The name of the author may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+ * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ *******************************************************************************/
+
+#ifdef _MSC_VER /* [ */
+
+#ifndef _MSC_STDINT_H_ /* [ */
#define _MSC_STDINT_H_
#if _MSC_VER > 1000
@@ -40,10 +40,11 @@
#include
-// For Visual Studio 6 in C++ mode and for many Visual Studio versions when
-// compiling for ARM we should wrap include with 'extern "C++" {}'
-// or compiler give many errors like this:
-// error C2733: second C linkage of overloaded function 'wmemchr' not allowed
+/* For Visual Studio 6 in C++ mode and for many Visual Studio versions when
+ * compiling for ARM we should wrap include with 'extern "C++" {}'
+ * or compiler give many errors like this:
+ * error C2733: second C linkage of overloaded function 'wmemchr' not allowed
+*/
#ifdef __cplusplus
extern "C" {
#endif
@@ -52,7 +53,7 @@ extern "C" {
}
#endif
-// Define _W64 macros to mark types changing their size, like intptr_t.
+/* Define _W64 macros to mark types changing their size, like intptr_t. */
#ifndef _W64
# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
# define _W64 __w64
@@ -62,13 +63,14 @@ extern "C" {
#endif
-// 7.18.1 Integer types
-
-// 7.18.1.1 Exact-width integer types
-
-// Visual Studio 6 and Embedded Visual C++ 4 doesn't
-// realize that, e.g. char has the same size as __int8
-// so we give up on __intX for them.
+/* 7.18.1 Integer types
+ *
+ * 7.18.1.1 Exact-width integer types
+ *
+ * Visual Studio 6 and Embedded Visual C++ 4 doesn't
+ * realize that, e.g. char has the same size as __int8
+ * so we give up on __intX for them.
+ */
#if (_MSC_VER < 1300)
typedef signed char int8_t;
typedef signed short int16_t;
@@ -88,7 +90,7 @@ typedef signed __int64 int64_t;
typedef unsigned __int64 uint64_t;
-// 7.18.1.2 Minimum-width integer types
+/* 7.18.1.2 Minimum-width integer types */
typedef int8_t int_least8_t;
typedef int16_t int_least16_t;
typedef int32_t int_least32_t;
@@ -98,7 +100,7 @@ typedef uint16_t uint_least16_t;
typedef uint32_t uint_least32_t;
typedef uint64_t uint_least64_t;
-// 7.18.1.3 Fastest minimum-width integer types
+/* 7.18.1.3 Fastest minimum-width integer types */
typedef int8_t int_fast8_t;
typedef int16_t int_fast16_t;
typedef int32_t int_fast32_t;
@@ -108,25 +110,25 @@ typedef uint16_t uint_fast16_t;
typedef uint32_t uint_fast32_t;
typedef uint64_t uint_fast64_t;
-// 7.18.1.4 Integer types capable of holding object pointers
-#ifdef _WIN64 // [
+/* 7.18.1.4 Integer types capable of holding object pointers */
+#ifdef _WIN64 /* [ */
typedef signed __int64 intptr_t;
typedef unsigned __int64 uintptr_t;
-#else // _WIN64 ][
+#else /* _WIN64 ][ */
typedef _W64 signed int intptr_t;
typedef _W64 unsigned int uintptr_t;
-#endif // _WIN64 ]
+#endif /* _WIN64 ] */
-// 7.18.1.5 Greatest-width integer types
+/* 7.18.1.5 Greatest-width integer types */
typedef int64_t intmax_t;
typedef uint64_t uintmax_t;
-// 7.18.2 Limits of specified-width integer types
+/* 7.18.2 Limits of specified-width integer types */
-#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259
+#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) /* [ See footnote 220 at page 257 and footnote 221 at page 259 */
-// 7.18.2.1 Limits of exact-width integer types
+/* 7.18.2.1 Limits of exact-width integer types */
#define INT8_MIN ((int8_t)_I8_MIN)
#define INT8_MAX _I8_MAX
#define INT16_MIN ((int16_t)_I16_MIN)
@@ -140,7 +142,7 @@ typedef uint64_t uintmax_t;
#define UINT32_MAX _UI32_MAX
#define UINT64_MAX _UI64_MAX
-// 7.18.2.2 Limits of minimum-width integer types
+/* 7.18.2.2 Limits of minimum-width integer types */
#define INT_LEAST8_MIN INT8_MIN
#define INT_LEAST8_MAX INT8_MAX
#define INT_LEAST16_MIN INT16_MIN
@@ -154,7 +156,7 @@ typedef uint64_t uintmax_t;
#define UINT_LEAST32_MAX UINT32_MAX
#define UINT_LEAST64_MAX UINT64_MAX
-// 7.18.2.3 Limits of fastest minimum-width integer types
+/* 7.18.2.3 Limits of fastest minimum-width integer types */
#define INT_FAST8_MIN INT8_MIN
#define INT_FAST8_MAX INT8_MAX
#define INT_FAST16_MIN INT16_MIN
@@ -168,62 +170,62 @@ typedef uint64_t uintmax_t;
#define UINT_FAST32_MAX UINT32_MAX
#define UINT_FAST64_MAX UINT64_MAX
-// 7.18.2.4 Limits of integer types capable of holding object pointers
-#ifdef _WIN64 // [
+/* 7.18.2.4 Limits of integer types capable of holding object pointers */
+#ifdef _WIN64 /* [ */
# define INTPTR_MIN INT64_MIN
# define INTPTR_MAX INT64_MAX
# define UINTPTR_MAX UINT64_MAX
-#else // _WIN64 ][
+#else /* _WIN64 ][ */
# define INTPTR_MIN INT32_MIN
# define INTPTR_MAX INT32_MAX
# define UINTPTR_MAX UINT32_MAX
-#endif // _WIN64 ]
+#endif /* _WIN64 ] */
-// 7.18.2.5 Limits of greatest-width integer types
+/* 7.18.2.5 Limits of greatest-width integer types */
#define INTMAX_MIN INT64_MIN
#define INTMAX_MAX INT64_MAX
#define UINTMAX_MAX UINT64_MAX
-// 7.18.3 Limits of other integer types
+/* 7.18.3 Limits of other integer types */
-#ifdef _WIN64 // [
+#ifdef _WIN64 /* [ */
# define PTRDIFF_MIN _I64_MIN
# define PTRDIFF_MAX _I64_MAX
-#else // _WIN64 ][
+#else /* _WIN64 ][ */
# define PTRDIFF_MIN _I32_MIN
# define PTRDIFF_MAX _I32_MAX
-#endif // _WIN64 ]
+#endif /* _WIN64 ] */
#define SIG_ATOMIC_MIN INT_MIN
#define SIG_ATOMIC_MAX INT_MAX
-#ifndef SIZE_MAX // [
-# ifdef _WIN64 // [
+#ifndef SIZE_MAX /* [ */
+# ifdef _WIN64 /* [ */
# define SIZE_MAX _UI64_MAX
-# else // _WIN64 ][
+# else /* _WIN64 ][ */
# define SIZE_MAX _UI32_MAX
-# endif // _WIN64 ]
-#endif // SIZE_MAX ]
+# endif /* _WIN64 ] */
+#endif /* SIZE_MAX ] */
-// WCHAR_MIN and WCHAR_MAX are also defined in
-#ifndef WCHAR_MIN // [
+/* WCHAR_MIN and WCHAR_MAX are also defined in */
+#ifndef WCHAR_MIN /* [ */
# define WCHAR_MIN 0
-#endif // WCHAR_MIN ]
-#ifndef WCHAR_MAX // [
+#endif /* WCHAR_MIN ] */
+#ifndef WCHAR_MAX /* [ */
# define WCHAR_MAX _UI16_MAX
-#endif // WCHAR_MAX ]
+#endif /* WCHAR_MAX ] */
#define WINT_MIN 0
#define WINT_MAX _UI16_MAX
-#endif // __STDC_LIMIT_MACROS ]
+#endif /* __STDC_LIMIT_MACROS ] */
-// 7.18.4 Limits of other integer types
+/* 7.18.4 Limits of other integer types */
-#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260
+#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) /* [ See footnote 224 at page 260 */
-// 7.18.4.1 Macros for minimum-width integer constants
+/* 7.18.4.1 Macros for minimum-width integer constants */
#define INT8_C(val) val##i8
#define INT16_C(val) val##i16
@@ -235,13 +237,13 @@ typedef uint64_t uintmax_t;
#define UINT32_C(val) val##ui32
#define UINT64_C(val) val##ui64
-// 7.18.4.2 Macros for greatest-width integer constants
+/* 7.18.4.2 Macros for greatest-width integer constants */
#define INTMAX_C INT64_C
#define UINTMAX_C UINT64_C
-#endif // __STDC_CONSTANT_MACROS ]
+#endif /* __STDC_CONSTANT_MACROS ] */
-#endif // _MSC_STDINT_H_ ]
+#endif /* _MSC_STDINT_H_ ] */
-#endif // _MSC_VER ]
\ No newline at end of file
+#endif /* _MSC_VER ] */
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/strarray.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/strarray.h
index 0f657e6..dcb628a 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/strarray.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/strarray.h
@@ -11,8 +11,8 @@
/**
* @file git2/strarray.h
- * @brief Git string array routines
- * @defgroup git_strarray Git string array routines
+ * @brief An array of strings for the user to free
+ * @defgroup git_strarray An array of strings for the user to free
* @ingroup Git
* @{
*/
@@ -36,21 +36,7 @@ typedef struct git_strarray {
*/
GIT_EXTERN(void) git_strarray_dispose(git_strarray *array);
-/**
- * Copy a string array object from source to target.
- *
- * Note: target is overwritten and hence should be empty, otherwise its
- * contents are leaked. Call git_strarray_free() if necessary.
- *
- * @param tgt target
- * @param src source
- * @return 0 on success, < 0 on allocation failure
- */
-GIT_EXTERN(int) git_strarray_copy(git_strarray *tgt, const git_strarray *src);
-
-
/** @} */
GIT_END_DECL
#endif
-
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/submodule.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/submodule.h
index 29d8bc1..911b3ce 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/submodule.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/submodule.h
@@ -15,7 +15,7 @@
/**
* @file git2/submodule.h
- * @brief Git submodule management utilities
+ * @brief Submodules place another repository's contents within this one
*
* Submodule support in libgit2 builds a list of known submodules and keeps
* it in the repository. The list is built from the .gitmodules file, the
@@ -85,23 +85,30 @@ typedef enum {
GIT_SUBMODULE_STATUS_WD_MODIFIED = (1u << 10),
GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED = (1u << 11),
GIT_SUBMODULE_STATUS_WD_WD_MODIFIED = (1u << 12),
- GIT_SUBMODULE_STATUS_WD_UNTRACKED = (1u << 13),
+ GIT_SUBMODULE_STATUS_WD_UNTRACKED = (1u << 13)
} git_submodule_status_t;
+/** Submodule source bits */
#define GIT_SUBMODULE_STATUS__IN_FLAGS 0x000Fu
+/** Submodule index status */
#define GIT_SUBMODULE_STATUS__INDEX_FLAGS 0x0070u
+/** Submodule working directory status */
#define GIT_SUBMODULE_STATUS__WD_FLAGS 0x3F80u
+/** Whether the submodule is modified */
#define GIT_SUBMODULE_STATUS_IS_UNMODIFIED(S) \
(((S) & ~GIT_SUBMODULE_STATUS__IN_FLAGS) == 0)
+/** Whether the submodule is modified (in the index) */
#define GIT_SUBMODULE_STATUS_IS_INDEX_UNMODIFIED(S) \
(((S) & GIT_SUBMODULE_STATUS__INDEX_FLAGS) == 0)
+/** Whether the submodule is modified (in the working directory) */
#define GIT_SUBMODULE_STATUS_IS_WD_UNMODIFIED(S) \
(((S) & (GIT_SUBMODULE_STATUS__WD_FLAGS & \
~GIT_SUBMODULE_STATUS_WD_UNINITIALIZED)) == 0)
+/** Whether the submodule working directory is dirty */
#define GIT_SUBMODULE_STATUS_IS_WD_DIRTY(S) \
(((S) & (GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED | \
GIT_SUBMODULE_STATUS_WD_WD_MODIFIED | \
@@ -130,10 +137,8 @@ typedef struct git_submodule_update_options {
/**
* These options are passed to the checkout step. To disable
- * checkout, set the `checkout_strategy` to
- * `GIT_CHECKOUT_NONE`. Generally you will want the use
- * GIT_CHECKOUT_SAFE to update files in the working
- * directory.
+ * checkout, set the `checkout_strategy` to `GIT_CHECKOUT_NONE`
+ * or `GIT_CHECKOUT_DRY_RUN`.
*/
git_checkout_options checkout_opts;
@@ -152,11 +157,15 @@ typedef struct git_submodule_update_options {
int allow_fetch;
} git_submodule_update_options;
+/** Current version for the `git_submodule_update_options` structure */
#define GIT_SUBMODULE_UPDATE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_submodule_update_options` */
#define GIT_SUBMODULE_UPDATE_OPTIONS_INIT \
{ GIT_SUBMODULE_UPDATE_OPTIONS_VERSION, \
- { GIT_CHECKOUT_OPTIONS_VERSION, GIT_CHECKOUT_SAFE }, \
- GIT_FETCH_OPTIONS_INIT, 1 }
+ GIT_CHECKOUT_OPTIONS_INIT, \
+ GIT_FETCH_OPTIONS_INIT, \
+ 1 }
/**
* Initialize git_submodule_update_options structure
@@ -181,7 +190,7 @@ GIT_EXTERN(int) git_submodule_update_options_init(
* @param submodule Submodule object
* @param init If the submodule is not initialized, setting this flag to true
* will initialize the submodule before updating. Otherwise, this will
- * return an error if attempting to update an uninitialzed repository.
+ * return an error if attempting to update an uninitialized repository.
* but setting this to true forces them to be updated.
* @param options configuration options for the update. If NULL, the
* function works as though GIT_SUBMODULE_UPDATE_OPTIONS_INIT was passed.
@@ -229,6 +238,7 @@ GIT_EXTERN(int) git_submodule_lookup(
*
* @param out Pointer to store the copy of the submodule.
* @param source Original submodule to copy.
+ * @return 0
*/
GIT_EXTERN(int) git_submodule_dup(git_submodule **out, git_submodule *source);
@@ -320,6 +330,7 @@ GIT_EXTERN(int) git_submodule_clone(
* (but doesn't actually do the commit).
*
* @param submodule The submodule to finish adding.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_submodule_add_finalize(git_submodule *submodule);
@@ -529,7 +540,8 @@ GIT_EXTERN(int) git_submodule_set_update(
* Note that at this time, libgit2 does not honor this setting and the
* fetch functionality current ignores submodules.
*
- * @return 0 if fetchRecurseSubmodules is false, 1 if true
+ * @param submodule the submodule to examine
+ * @return the submodule recursion configuration
*/
GIT_EXTERN(git_submodule_recurse_t) git_submodule_fetch_recurse_submodules(
git_submodule *submodule);
@@ -541,7 +553,7 @@ GIT_EXTERN(git_submodule_recurse_t) git_submodule_fetch_recurse_submodules(
*
* @param repo the repository to affect
* @param name the submodule to configure
- * @param fetch_recurse_submodules Boolean value
+ * @param fetch_recurse_submodules the submodule recursion configuration
* @return old value for fetchRecurseSubmodules
*/
GIT_EXTERN(int) git_submodule_set_fetch_recurse_submodules(
@@ -589,6 +601,9 @@ GIT_EXTERN(int) git_submodule_repo_init(
* submodule config, acting like "git submodule sync". This is useful if
* you have altered the URL for the submodule (or it has been altered by a
* fetch of upstream changes) and you need to update your local repo.
+ *
+ * @param submodule The submodule to copy.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_submodule_sync(git_submodule *submodule);
@@ -660,4 +675,5 @@ GIT_EXTERN(int) git_submodule_location(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/alloc.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/alloc.h
index c295807..67506f2 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/alloc.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/alloc.h
@@ -10,6 +10,17 @@
#include "git2/common.h"
+/**
+ * @file git2/sys/alloc.h
+ * @brief Custom memory allocators
+ * @defgroup git_merge Git merge routines
+ * @ingroup Git
+ *
+ * Users can configure custom allocators; this is particularly
+ * interesting when running in constrained environments, when calling
+ * from another language, or during testing.
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -24,28 +35,6 @@ typedef struct {
/** Allocate `n` bytes of memory */
void * GIT_CALLBACK(gmalloc)(size_t n, const char *file, int line);
- /**
- * Allocate memory for an array of `nelem` elements, where each element
- * has a size of `elsize`. Returned memory shall be initialized to
- * all-zeroes
- */
- void * GIT_CALLBACK(gcalloc)(size_t nelem, size_t elsize, const char *file, int line);
-
- /** Allocate memory for the string `str` and duplicate its contents. */
- char * GIT_CALLBACK(gstrdup)(const char *str, const char *file, int line);
-
- /**
- * Equivalent to the `gstrdup` function, but only duplicating at most
- * `n + 1` bytes
- */
- char * GIT_CALLBACK(gstrndup)(const char *str, size_t n, const char *file, int line);
-
- /**
- * Equivalent to `gstrndup`, but will always duplicate exactly `n` bytes
- * of `str`. Thus, out of bounds reads at `str` may happen.
- */
- char * GIT_CALLBACK(gsubstrdup)(const char *str, size_t n, const char *file, int line);
-
/**
* This function shall deallocate the old object `ptr` and return a
* pointer to a new object that has the size specified by `size`. In
@@ -53,18 +42,6 @@ typedef struct {
*/
void * GIT_CALLBACK(grealloc)(void *ptr, size_t size, const char *file, int line);
- /**
- * This function shall be equivalent to `grealloc`, but allocating
- * `neleme * elsize` bytes.
- */
- void * GIT_CALLBACK(greallocarray)(void *ptr, size_t nelem, size_t elsize, const char *file, int line);
-
- /**
- * This function shall allocate a new array of `nelem` elements, where
- * each element has a size of `elsize` bytes.
- */
- void * GIT_CALLBACK(gmallocarray)(size_t nelem, size_t elsize, const char *file, int line);
-
/**
* This function shall free the memory pointed to by `ptr`. In case
* `ptr` is `NULL`, this shall be a no-op.
@@ -96,6 +73,7 @@ int git_stdalloc_init_allocator(git_allocator *allocator);
*/
int git_win32_crtdbg_init_allocator(git_allocator *allocator);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/commit.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/commit.h
index ba67106..a8253c0 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/commit.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/commit.h
@@ -14,7 +14,7 @@
/**
* @file git2/sys/commit.h
* @brief Low-level Git commit creation
- * @defgroup git_backend Git custom backend APIs
+ * @defgroup git_commit Low-level Git commit creation
* @ingroup Git
* @{
*/
@@ -29,7 +29,43 @@ GIT_BEGIN_DECL
* the `tree`, neither the `parents` list of `git_oid`s are checked for
* validity.
*
- * @see git_commit_create
+ * @param id Pointer in which to store the OID of the newly created commit
+ *
+ * @param repo Repository where to store the commit
+ *
+ * @param update_ref If not NULL, name of the reference that
+ * will be updated to point to this commit. If the reference
+ * is not direct, it will be resolved to a direct reference.
+ * Use "HEAD" to update the HEAD of the current branch and
+ * make it point to this commit. If the reference doesn't
+ * exist yet, it will be created. If it does exist, the first
+ * parent must be the tip of this branch.
+ *
+ * @param author Signature with author and author time of commit
+ *
+ * @param committer Signature with committer and * commit time of commit
+ *
+ * @param message_encoding The encoding for the message in the
+ * commit, represented with a standard encoding name.
+ * E.g. "UTF-8". If NULL, no encoding header is written and
+ * UTF-8 is assumed.
+ *
+ * @param message Full message for this commit
+ *
+ * @param tree An instance of a `git_tree` object that will
+ * be used as the tree for the commit. This tree object must
+ * also be owned by the given `repo`.
+ *
+ * @param parent_count Number of parents for this commit
+ *
+ * @param parents Array of `parent_count` pointers to `git_commit`
+ * objects that will be used as the parents for this commit. This
+ * array may be NULL if `parent_count` is 0 (root commit). All the
+ * given commits must be owned by the `repo`.
+ *
+ * @return 0 or an error code
+ * The created commit will be written to the Object Database and
+ * the given reference will be updated to point to it
*/
GIT_EXTERN(int) git_commit_create_from_ids(
git_oid *id,
@@ -49,6 +85,10 @@ GIT_EXTERN(int) git_commit_create_from_ids(
* This is invoked with the count of the number of parents processed so far
* along with the user supplied payload. This should return a git_oid of
* the next parent or NULL if all parents have been provided.
+ *
+ * @param idx the index of the parent
+ * @param payload the user-specified payload
+ * @return the object id of the parent, or NULL if there are no further parents
*/
typedef const git_oid * GIT_CALLBACK(git_commit_parent_callback)(size_t idx, void *payload);
@@ -61,7 +101,40 @@ typedef const git_oid * GIT_CALLBACK(git_commit_parent_callback)(size_t idx, voi
* with `parent_payload` and should return `git_oid` values or NULL to
* indicate that all parents are accounted for.
*
- * @see git_commit_create
+ * @param id Pointer in which to store the OID of the newly created commit
+ *
+ * @param repo Repository where to store the commit
+ *
+ * @param update_ref If not NULL, name of the reference that
+ * will be updated to point to this commit. If the reference
+ * is not direct, it will be resolved to a direct reference.
+ * Use "HEAD" to update the HEAD of the current branch and
+ * make it point to this commit. If the reference doesn't
+ * exist yet, it will be created. If it does exist, the first
+ * parent must be the tip of this branch.
+ *
+ * @param author Signature with author and author time of commit
+ *
+ * @param committer Signature with committer and * commit time of commit
+ *
+ * @param message_encoding The encoding for the message in the
+ * commit, represented with a standard encoding name.
+ * E.g. "UTF-8". If NULL, no encoding header is written and
+ * UTF-8 is assumed.
+ *
+ * @param message Full message for this commit
+ *
+ * @param tree An instance of a `git_tree` object that will
+ * be used as the tree for the commit. This tree object must
+ * also be owned by the given `repo`.
+ *
+ * @param parent_cb Callback to invoke to obtain parent information
+ *
+ * @param parent_payload User-specified payload to provide to the callback
+ *
+ * @return 0 or an error code
+ * The created commit will be written to the Object Database and
+ * the given reference will be updated to point to it
*/
GIT_EXTERN(int) git_commit_create_from_callback(
git_oid *id,
@@ -77,4 +150,5 @@ GIT_EXTERN(int) git_commit_create_from_callback(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/commit_graph.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/commit_graph.h
index f6c0fc4..ff547ef 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/commit_graph.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/commit_graph.h
@@ -12,13 +12,52 @@
/**
* @file git2/sys/commit_graph.h
- * @brief Git commit-graph
- * @defgroup git_commit_graph Git commit-graph APIs
+ * @brief Commit graphs store information about commit relationships
+ * @defgroup git_commit_graph Commit graphs
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/**
+ * Options structure for `git_commit_graph_open_new`.
+ *
+ * Initialize with `GIT_COMMIT_GRAPH_OPEN_OPTIONS_INIT`. Alternatively,
+ * you can use `git_commit_graph_open_options_init`.
+ */
+typedef struct {
+ unsigned int version;
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /** The object ID type that this commit graph contains. */
+ git_oid_t oid_type;
+#endif
+} git_commit_graph_open_options;
+
+/** Current version for the `git_commit_graph_open_options` structure */
+#define GIT_COMMIT_GRAPH_OPEN_OPTIONS_VERSION 1
+
+/** Static constructor for `git_commit_graph_open_options` */
+#define GIT_COMMIT_GRAPH_OPEN_OPTIONS_INIT { \
+ GIT_COMMIT_GRAPH_OPEN_OPTIONS_VERSION \
+ }
+
+/**
+ * Initialize git_commit_graph_open_options structure
+ *
+ * Initializes a `git_commit_graph_open_options` with default values.
+ * Equivalent to creating an instance with
+ * `GIT_COMMIT_GRAPH_OPEN_OPTIONS_INIT`.
+ *
+ * @param opts The `git_commit_graph_open_options` struct to initialize.
+ * @param version The struct version; pass `GIT_COMMIT_GRAPH_OPEN_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_commit_graph_open_options_init(
+ git_commit_graph_open_options *opts,
+ unsigned int version);
+
+
/**
* Opens a `git_commit_graph` from a path to an objects directory.
*
@@ -28,7 +67,13 @@ GIT_BEGIN_DECL
* @param objects_dir the path to a git objects directory.
* @return Zero on success; -1 on failure.
*/
-GIT_EXTERN(int) git_commit_graph_open(git_commit_graph **cgraph_out, const char *objects_dir);
+GIT_EXTERN(int) git_commit_graph_open(
+ git_commit_graph **cgraph_out,
+ const char *objects_dir
+#ifdef GIT_EXPERIMENTAL_SHA256
+ , const git_commit_graph_open_options *options
+#endif
+ );
/**
* Frees commit-graph data. This should only be called when memory allocated
@@ -40,50 +85,6 @@ GIT_EXTERN(int) git_commit_graph_open(git_commit_graph **cgraph_out, const char
*/
GIT_EXTERN(void) git_commit_graph_free(git_commit_graph *cgraph);
-/**
- * Create a new writer for `commit-graph` files.
- *
- * @param out Location to store the writer pointer.
- * @param objects_info_dir The `objects/info` directory.
- * The `commit-graph` file will be written in this directory.
- * @return 0 or an error code
- */
-GIT_EXTERN(int) git_commit_graph_writer_new(
- git_commit_graph_writer **out,
- const char *objects_info_dir);
-
-/**
- * Free the commit-graph writer and its resources.
- *
- * @param w The writer to free. If NULL no action is taken.
- */
-GIT_EXTERN(void) git_commit_graph_writer_free(git_commit_graph_writer *w);
-
-/**
- * Add an `.idx` file (associated to a packfile) to the writer.
- *
- * @param w The writer.
- * @param repo The repository that owns the `.idx` file.
- * @param idx_path The path of an `.idx` file.
- * @return 0 or an error code
- */
-GIT_EXTERN(int) git_commit_graph_writer_add_index_file(
- git_commit_graph_writer *w,
- git_repository *repo,
- const char *idx_path);
-
-/**
- * Add a revwalk to the writer. This will add all the commits from the revwalk
- * to the commit-graph.
- *
- * @param w The writer.
- * @param walk The git_revwalk.
- * @return 0 or an error code
- */
-GIT_EXTERN(int) git_commit_graph_writer_add_revwalk(
- git_commit_graph_writer *w,
- git_revwalk *walk);
-
/**
* The strategy to use when adding a new set of commits to a pre-existing
@@ -94,19 +95,23 @@ typedef enum {
* Do not split commit-graph files. The other split strategy-related option
* fields are ignored.
*/
- GIT_COMMIT_GRAPH_SPLIT_STRATEGY_SINGLE_FILE = 0,
+ GIT_COMMIT_GRAPH_SPLIT_STRATEGY_SINGLE_FILE = 0
} git_commit_graph_split_strategy_t;
/**
- * Options structure for
- * `git_commit_graph_writer_commit`/`git_commit_graph_writer_dump`.
+ * Options structure for `git_commit_graph_writer_new`.
*
- * Initialize with `GIT_COMMIT_GRAPH_WRITER_OPTIONS_INIT`. Alternatively, you
- * can use `git_commit_graph_writer_options_init`.
+ * Initialize with `GIT_COMMIT_GRAPH_WRITER_OPTIONS_INIT`. Alternatively,
+ * you can use `git_commit_graph_writer_options_init`.
*/
typedef struct {
unsigned int version;
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /** The object ID type that this commit graph contains. */
+ git_oid_t oid_type;
+#endif
+
/**
* The strategy to use when adding new commits to a pre-existing commit-graph
* chain.
@@ -126,7 +131,10 @@ typedef struct {
size_t max_commits;
} git_commit_graph_writer_options;
+/** Current version for the `git_commit_graph_writer_options` structure */
#define GIT_COMMIT_GRAPH_WRITER_OPTIONS_VERSION 1
+
+/** Static constructor for `git_commit_graph_writer_options` */
#define GIT_COMMIT_GRAPH_WRITER_OPTIONS_INIT { \
GIT_COMMIT_GRAPH_WRITER_OPTIONS_VERSION \
}
@@ -145,30 +153,73 @@ GIT_EXTERN(int) git_commit_graph_writer_options_init(
git_commit_graph_writer_options *opts,
unsigned int version);
+/**
+ * Create a new writer for `commit-graph` files.
+ *
+ * @param out Location to store the writer pointer.
+ * @param objects_info_dir The `objects/info` directory.
+ * The `commit-graph` file will be written in this directory.
+ * @param options The options for the commit graph writer.
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_commit_graph_writer_new(
+ git_commit_graph_writer **out,
+ const char *objects_info_dir,
+ const git_commit_graph_writer_options *options);
+
+/**
+ * Free the commit-graph writer and its resources.
+ *
+ * @param w The writer to free. If NULL no action is taken.
+ */
+GIT_EXTERN(void) git_commit_graph_writer_free(git_commit_graph_writer *w);
+
+/**
+ * Add an `.idx` file (associated to a packfile) to the writer.
+ *
+ * @param w The writer.
+ * @param repo The repository that owns the `.idx` file.
+ * @param idx_path The path of an `.idx` file.
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_commit_graph_writer_add_index_file(
+ git_commit_graph_writer *w,
+ git_repository *repo,
+ const char *idx_path);
+
+/**
+ * Add a revwalk to the writer. This will add all the commits from the revwalk
+ * to the commit-graph.
+ *
+ * @param w The writer.
+ * @param walk The git_revwalk.
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_commit_graph_writer_add_revwalk(
+ git_commit_graph_writer *w,
+ git_revwalk *walk);
+
/**
* Write a `commit-graph` file to a file.
*
* @param w The writer
- * @param opts Pointer to git_commit_graph_writer_options struct.
* @return 0 or an error code
*/
GIT_EXTERN(int) git_commit_graph_writer_commit(
- git_commit_graph_writer *w,
- git_commit_graph_writer_options *opts);
+ git_commit_graph_writer *w);
/**
* Dump the contents of the `commit-graph` to an in-memory buffer.
*
- * @param buffer Buffer where to store the contents of the `commit-graph`.
+ * @param[out] buffer Buffer where to store the contents of the `commit-graph`.
* @param w The writer.
- * @param opts Pointer to git_commit_graph_writer_options struct.
* @return 0 or an error code
*/
GIT_EXTERN(int) git_commit_graph_writer_dump(
git_buf *buffer,
- git_commit_graph_writer *w,
- git_commit_graph_writer_options *opts);
+ git_commit_graph_writer *w);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/config.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/config.h
index 0a9005e..cc4a399 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/config.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/config.h
@@ -13,13 +13,28 @@
/**
* @file git2/sys/config.h
- * @brief Git config backend routines
- * @defgroup git_backend Git custom backend APIs
+ * @brief Custom configuration database backends
+ * @defgroup git_backend Custom configuration database backends
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/**
+ * An entry in a configuration backend. This is provided so that
+ * backend implementors can have a mechanism to free their data.
+ */
+typedef struct git_config_backend_entry {
+ /** The base configuration entry */
+ struct git_config_entry entry;
+
+ /**
+ * Free function for this entry; for internal purposes. Callers
+ * should call `git_config_entry_free` to free data.
+ */
+ void GIT_CALLBACK(free)(struct git_config_backend_entry *entry);
+} git_config_backend_entry;
+
/**
* Every iterator must have this struct as its first element, so the
* API can talk to it. You'd define your iterator as
@@ -39,7 +54,7 @@ struct git_config_iterator {
* Return the current entry and advance the iterator. The
* memory belongs to the library.
*/
- int GIT_CALLBACK(next)(git_config_entry **entry, git_config_iterator *iter);
+ int GIT_CALLBACK(next)(git_config_backend_entry **entry, git_config_iterator *iter);
/**
* Free the iterator
@@ -59,7 +74,7 @@ struct git_config_backend {
/* Open means open the file/database and parse if necessary */
int GIT_CALLBACK(open)(struct git_config_backend *, git_config_level_t level, const git_repository *repo);
- int GIT_CALLBACK(get)(struct git_config_backend *, const char *key, git_config_entry **entry);
+ int GIT_CALLBACK(get)(struct git_config_backend *, const char *key, git_config_backend_entry **entry);
int GIT_CALLBACK(set)(struct git_config_backend *, const char *key, const char *value);
int GIT_CALLBACK(set_multivar)(git_config_backend *cfg, const char *name, const char *regexp, const char *value);
int GIT_CALLBACK(del)(struct git_config_backend *, const char *key);
@@ -83,7 +98,11 @@ struct git_config_backend {
int GIT_CALLBACK(unlock)(struct git_config_backend *, int success);
void GIT_CALLBACK(free)(struct git_config_backend *);
};
+
+/** Current version for the `git_config_backend_options` structure */
#define GIT_CONFIG_BACKEND_VERSION 1
+
+/** Static constructor for `git_config_backend_options` */
#define GIT_CONFIG_BACKEND_INIT {GIT_CONFIG_BACKEND_VERSION}
/**
@@ -125,6 +144,63 @@ GIT_EXTERN(int) git_config_add_backend(
const git_repository *repo,
int force);
+/** Options for in-memory configuration backends. */
+typedef struct {
+ unsigned int version;
+
+ /**
+ * The type of this backend (eg, "command line"). If this is
+ * NULL, then this will be "in-memory".
+ */
+ const char *backend_type;
+
+ /**
+ * The path to the origin; if this is NULL then it will be
+ * left unset in the resulting configuration entries.
+ */
+ const char *origin_path;
+} git_config_backend_memory_options;
+
+/** Current version for the `git_config_backend_memory_options` structure */
+#define GIT_CONFIG_BACKEND_MEMORY_OPTIONS_VERSION 1
+
+/** Static constructor for `git_config_backend_memory_options` */
+#define GIT_CONFIG_BACKEND_MEMORY_OPTIONS_INIT { GIT_CONFIG_BACKEND_MEMORY_OPTIONS_VERSION }
+
+
+/**
+ * Create an in-memory configuration backend from a string in standard
+ * git configuration file format.
+ *
+ * @param out the new backend
+ * @param cfg the configuration that is to be parsed
+ * @param len the length of the string pointed to by `cfg`
+ * @param opts the options to initialize this backend with, or NULL
+ * @return 0 on success or an error code
+ */
+extern int git_config_backend_from_string(
+ git_config_backend **out,
+ const char *cfg,
+ size_t len,
+ git_config_backend_memory_options *opts);
+
+/**
+ * Create an in-memory configuration backend from a list of name/value
+ * pairs.
+ *
+ * @param out the new backend
+ * @param values the configuration values to set (in "key=value" format)
+ * @param len the length of the values array
+ * @param opts the options to initialize this backend with, or NULL
+ * @return 0 on success or an error code
+ */
+extern int git_config_backend_from_values(
+ git_config_backend **out,
+ const char **values,
+ size_t len,
+ git_config_backend_memory_options *opts);
+
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/credential.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/credential.h
index bb4c9f9..0d573a3 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/credential.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/credential.h
@@ -11,9 +11,9 @@
#include "git2/credential.h"
/**
- * @file git2/sys/cred.h
- * @brief Git credentials low-level implementation
- * @defgroup git_credential Git credentials low-level implementation
+ * @file git2/sys/credential.h
+ * @brief Low-level credentials implementation
+ * @defgroup git_credential Low-level credentials implementation
* @ingroup Git
* @{
*/
@@ -85,6 +85,7 @@ struct git_credential_ssh_custom {
void *payload; /**< Payload passed to prompt_callback */
};
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/diff.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/diff.h
index aefd7b9..a398f54 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/diff.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/diff.h
@@ -15,7 +15,7 @@
/**
* @file git2/sys/diff.h
- * @brief Low-level Git diff utilities
+ * @brief Low-level diff utilities
* @ingroup Git
* @{
*/
@@ -33,6 +33,12 @@ GIT_BEGIN_DECL
* must pass a `git_buf *` value as the payload to the `git_diff_print`
* and/or `git_patch_print` function. The data will be appended to the
* buffer (after any existing content).
+ *
+ * @param delta the delta being processed
+ * @param hunk the hunk being processed
+ * @param line the line being processed
+ * @param payload the payload provided by the diff generator
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_diff_print_callback__to_buf(
const git_diff_delta *delta,
@@ -53,6 +59,12 @@ GIT_EXTERN(int) git_diff_print_callback__to_buf(
* value from `fopen()`) as the payload to the `git_diff_print`
* and/or `git_patch_print` function. If you pass NULL, this will write
* data to `stdout`.
+ *
+ * @param delta the delta being processed
+ * @param hunk the hunk being processed
+ * @param line the line being processed
+ * @param payload the payload provided by the diff generator
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_diff_print_callback__to_file_handle(
const git_diff_delta *delta,
@@ -70,7 +82,10 @@ typedef struct {
size_t oid_calculations; /**< Number of ID calculations */
} git_diff_perfdata;
+/** Current version for the `git_diff_perfdata_options` structure */
#define GIT_DIFF_PERFDATA_VERSION 1
+
+/** Static constructor for `git_diff_perfdata_options` */
#define GIT_DIFF_PERFDATA_INIT {GIT_DIFF_PERFDATA_VERSION,0,0}
/**
@@ -85,10 +100,15 @@ GIT_EXTERN(int) git_diff_get_perfdata(
/**
* Get performance data for diffs from a git_status_list
+ *
+ * @param out Structure to be filled with diff performance data
+ * @param status Diff to read performance data from
+ * @return 0 for success, <0 for error
*/
GIT_EXTERN(int) git_status_list_get_perfdata(
git_diff_perfdata *out, const git_status_list *status);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/email.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/email.h
index 6f4a286..26e792a 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/email.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/email.h
@@ -7,6 +7,11 @@
#ifndef INCLUDE_sys_git_email_h__
#define INCLUDE_sys_git_email_h__
+#include "git2/common.h"
+#include "git2/diff.h"
+#include "git2/email.h"
+#include "git2/types.h"
+
/**
* @file git2/sys/email.h
* @brief Advanced git email creation routines
@@ -28,6 +33,7 @@ GIT_BEGIN_DECL
* @param body optional text to include above the diffstat
* @param author the person who authored this commit
* @param opts email creation options
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_email_create_from_diff(
git_buf *out,
@@ -42,4 +48,5 @@ GIT_EXTERN(int) git_email_create_from_diff(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/errors.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/errors.h
new file mode 100644
index 0000000..44e8ecb
--- /dev/null
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/errors.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) the libgit2 contributors. All rights reserved.
+ *
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
+ * a Linking Exception. For full terms see the included COPYING file.
+ */
+
+#ifndef INCLUDE_sys_git_errors_h__
+#define INCLUDE_sys_git_errors_h__
+
+#include "git2/common.h"
+
+/**
+ * @file git2/sys/errors.h
+ * @brief Advanced error handling
+ * @ingroup Git
+ *
+ * Error handling for advanced consumers; those who use callbacks
+ * or those who create custom databases.
+ * @{
+ */
+GIT_BEGIN_DECL
+
+/**
+ * Clear the last library error that occurred for this thread.
+ */
+GIT_EXTERN(void) git_error_clear(void);
+
+/**
+ * Set the error message string for this thread, using `printf`-style
+ * formatting.
+ *
+ * This function is public so that custom ODB backends and the like can
+ * relay an error message through libgit2. Most regular users of libgit2
+ * will never need to call this function -- actually, calling it in most
+ * circumstances (for example, calling from within a callback function)
+ * will just end up having the value overwritten by libgit2 internals.
+ *
+ * This error message is stored in thread-local storage and only applies
+ * to the particular thread that this libgit2 call is made from.
+ *
+ * @param error_class One of the `git_error_t` enum above describing the
+ * general subsystem that is responsible for the error.
+ * @param fmt The `printf`-style format string; subsequent arguments must
+ * be the arguments for the format string.
+ */
+GIT_EXTERN(void) git_error_set(int error_class, const char *fmt, ...)
+ GIT_FORMAT_PRINTF(2, 3);
+
+/**
+ * Set the error message string for this thread. This function is like
+ * `git_error_set` but takes a static string instead of a `printf`-style
+ * format.
+ *
+ * @param error_class One of the `git_error_t` enum above describing the
+ * general subsystem that is responsible for the error.
+ * @param string The error message to keep
+ * @return 0 on success or -1 on failure
+ */
+GIT_EXTERN(int) git_error_set_str(int error_class, const char *string);
+
+/**
+ * Set the error message to a special value for memory allocation failure.
+ *
+ * The normal `git_error_set_str()` function attempts to `strdup()` the
+ * string that is passed in. This is not a good idea when the error in
+ * question is a memory allocation failure. That circumstance has a
+ * special setter function that sets the error string to a known and
+ * statically allocated internal value.
+ */
+GIT_EXTERN(void) git_error_set_oom(void);
+
+/** @} */
+GIT_END_DECL
+
+#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/filter.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/filter.h
index b375941..60466d1 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/filter.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/filter.h
@@ -11,8 +11,8 @@
/**
* @file git2/sys/filter.h
- * @brief Git filter backend and plugin routines
- * @defgroup git_backend Git custom backend APIs
+ * @brief Custom filter backends and plugins
+ * @defgroup git_backend Custom filter backends and plugins
* @ingroup Git
* @{
*/
@@ -26,7 +26,10 @@ GIT_BEGIN_DECL
*/
GIT_EXTERN(git_filter *) git_filter_lookup(const char *name);
+/** The "crlf" filter */
#define GIT_FILTER_CRLF "crlf"
+
+/** The "ident" filter */
#define GIT_FILTER_IDENT "ident"
/**
@@ -53,6 +56,12 @@ GIT_EXTERN(git_filter *) git_filter_lookup(const char *name);
* the filter list for you, but you can use this in combination with the
* `git_filter_lookup` and `git_filter_list_push` functions to assemble
* your own chains of filters.
+ *
+ * @param out the filter list
+ * @param repo the repository to use for configuration
+ * @param mode the filter mode (direction)
+ * @param options the options
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_filter_list_new(
git_filter_list **out,
@@ -72,6 +81,11 @@ GIT_EXTERN(int) git_filter_list_new(
* filter. Using this function, you can either pass in a payload if you
* know the expected payload format, or you can pass NULL. Some filters
* may fail with a NULL payload. Good luck!
+ *
+ * @param fl the filter list
+ * @param filter the filter to push
+ * @param payload the payload for the filter
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_filter_list_push(
git_filter_list *fl, git_filter *filter, void *payload);
@@ -96,17 +110,26 @@ typedef struct git_filter_source git_filter_source;
/**
* Get the repository that the source data is coming from.
+ *
+ * @param src the filter source
+ * @return the repository for the filter information
*/
GIT_EXTERN(git_repository *) git_filter_source_repo(const git_filter_source *src);
/**
* Get the path that the source data is coming from.
+ *
+ * @param src the filter source
+ * @return the path that is being filtered
*/
GIT_EXTERN(const char *) git_filter_source_path(const git_filter_source *src);
/**
* Get the file mode of the source file
* If the mode is unknown, this will return 0
+ *
+ * @param src the filter source
+ * @return the file mode for the file being filtered
*/
GIT_EXTERN(uint16_t) git_filter_source_filemode(const git_filter_source *src);
@@ -114,16 +137,25 @@ GIT_EXTERN(uint16_t) git_filter_source_filemode(const git_filter_source *src);
* Get the OID of the source
* If the OID is unknown (often the case with GIT_FILTER_CLEAN) then
* this will return NULL.
+ *
+ * @param src the filter source
+ * @return the object id of the file being filtered
*/
GIT_EXTERN(const git_oid *) git_filter_source_id(const git_filter_source *src);
/**
* Get the git_filter_mode_t to be used
+ *
+ * @param src the filter source
+ * @return the mode (direction) of the filter
*/
GIT_EXTERN(git_filter_mode_t) git_filter_source_mode(const git_filter_source *src);
/**
* Get the combination git_filter_flag_t options to be applied
+ *
+ * @param src the filter source
+ * @return the flags of the filter
*/
GIT_EXTERN(uint32_t) git_filter_source_flags(const git_filter_source *src);
@@ -137,6 +169,9 @@ GIT_EXTERN(uint32_t) git_filter_source_flags(const git_filter_source *src);
* before the first use of the filter, so you can defer expensive
* initialization operations (in case libgit2 is being used in a way that
* doesn't need the filter).
+ *
+ * @param self the filter to initialize
+ * @return 0 on success, negative number on failure
*/
typedef int GIT_CALLBACK(git_filter_init_fn)(git_filter *self);
@@ -149,6 +184,8 @@ typedef int GIT_CALLBACK(git_filter_init_fn)(git_filter *self);
* This may be called even if the `initialize` callback was not made.
*
* Typically this function will free the `git_filter` object itself.
+ *
+ * @param self the filter to shutdown
*/
typedef void GIT_CALLBACK(git_filter_shutdown_fn)(git_filter *self);
@@ -171,6 +208,12 @@ typedef void GIT_CALLBACK(git_filter_shutdown_fn)(git_filter *self);
* allocated (not stack), so that it doesn't go away before the `stream`
* callback can use it. If a filter allocates and assigns a value to the
* `payload`, it will need a `cleanup` callback to free the payload.
+ *
+ * @param self the filter check
+ * @param payload a data for future filter functions
+ * @param src the filter source
+ * @param attr_values the attribute values
+ * @return 0 on success or a negative value on error
*/
typedef int GIT_CALLBACK(git_filter_check_fn)(
git_filter *self,
@@ -191,6 +234,12 @@ typedef int GIT_CALLBACK(git_filter_check_fn)(
* The `payload` value will refer to any payload that was set by the
* `check` callback. It may be read from or written to as needed.
*
+ * @param self the filter check
+ * @param payload a data for future filter functions
+ * @param to the input buffer
+ * @param from the output buffer
+ * @param src the filter source
+ * @return 0 on success or a negative value on error
* @deprecated use git_filter_stream_fn
*/
typedef int GIT_CALLBACK(git_filter_apply_fn)(
@@ -209,6 +258,13 @@ typedef int GIT_CALLBACK(git_filter_apply_fn)(
* `git_writestream` that will the original data will be written to;
* with that data, the `git_writestream` will then perform the filter
* translation and stream the filtered data out to the `next` location.
+ *
+ * @param out the write stream
+ * @param self the filter
+ * @param payload a data for future filter functions
+ * @param src the filter source
+ * @param next the output stream
+ * @return 0 on success or a negative value on error
*/
typedef int GIT_CALLBACK(git_filter_stream_fn)(
git_writestream **out,
@@ -225,6 +281,9 @@ typedef int GIT_CALLBACK(git_filter_stream_fn)(
* `stream` callbacks allocated a `payload` to keep per-source filter
* state, use this callback to free that payload and release resources
* as required.
+ *
+ * @param self the filter
+ * @param payload a data for future filter functions
*/
typedef void GIT_CALLBACK(git_filter_cleanup_fn)(
git_filter *self,
@@ -291,7 +350,10 @@ struct git_filter {
git_filter_cleanup_fn cleanup;
};
+/** Current version for the `git_filter_options` structure */
#define GIT_FILTER_VERSION 1
+
+/** Static constructor for `git_filter_options` */
#define GIT_FILTER_INIT {GIT_FILTER_VERSION}
/**
@@ -300,7 +362,7 @@ struct git_filter {
*
* @param filter the `git_filter` struct to initialize.
* @param version Version the struct; pass `GIT_FILTER_VERSION`
- * @return Zero on success; -1 on failure.
+ * @return 0 on success; -1 on failure.
*/
GIT_EXTERN(int) git_filter_init(git_filter *filter, unsigned int version);
@@ -350,4 +412,5 @@ GIT_EXTERN(int) git_filter_unregister(const char *name);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/hashsig.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/hashsig.h
index 09c19ae..0d7be53 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/hashsig.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/hashsig.h
@@ -9,6 +9,16 @@
#include "git2/common.h"
+/**
+ * @file git2/sys/hashsig.h
+ * @brief Signatures for file similarity comparison
+ * @defgroup git_hashsig Git merge routines
+ * @ingroup Git
+ *
+ * Hash signatures are used for file similary comparison; this is
+ * used for git's rename handling.
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -101,6 +111,7 @@ GIT_EXTERN(int) git_hashsig_compare(
const git_hashsig *a,
const git_hashsig *b);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/index.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/index.h
index 1f6d93f..b3b86a0 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/index.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/index.h
@@ -12,8 +12,8 @@
/**
* @file git2/sys/index.h
- * @brief Low-level Git index manipulation routines
- * @defgroup git_backend Git custom backend APIs
+ * @brief Low-level index manipulation routines
+ * @defgroup git_index Low-level index manipulation routines
* @ingroup Git
* @{
*/
@@ -67,6 +67,7 @@ GIT_EXTERN(const git_index_name_entry *) git_index_name_get_byindex(
* @param ancestor the path of the file as it existed in the ancestor
* @param ours the path of the file as it existed in our tree
* @param theirs the path of the file as it existed in their tree
+ * @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_index_name_add(git_index *index,
const char *ancestor, const char *ours, const char *theirs);
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/mempack.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/mempack.h
index 17da590..be902be 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/mempack.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/mempack.h
@@ -15,8 +15,8 @@
/**
* @file git2/sys/mempack.h
- * @brief Custom ODB backend that permits packing objects in-memory
- * @defgroup git_backend Git custom backend APIs
+ * @brief A custom object database backend for storing objects in-memory
+ * @defgroup git_mempack A custom object database backend for storing objects in-memory
* @ingroup Git
* @{
*/
@@ -44,6 +44,26 @@ GIT_BEGIN_DECL
*/
GIT_EXTERN(int) git_mempack_new(git_odb_backend **out);
+/**
+ * Write a thin packfile with the objects in the memory store.
+ *
+ * A thin packfile is a packfile that does not contain its transitive closure of
+ * references. This is useful for efficiently distributing additions to a
+ * repository over the network, but also finds use in the efficient bulk
+ * addition of objects to a repository, locally.
+ *
+ * This operation performs the (shallow) insert operations into the
+ * `git_packbuilder`, but does not write the packfile to disk;
+ * see `git_packbuilder_write_buf`.
+ *
+ * It also does not reset the in-memory object database; see `git_mempack_reset`.
+ *
+ * @param backend The mempack backend
+ * @param pb The packbuilder to use to write the packfile
+ * @return 0 on success or an error code
+ */
+GIT_EXTERN(int) git_mempack_write_thin_pack(git_odb_backend *backend, git_packbuilder *pb);
+
/**
* Dump all the queued in-memory writes to a packfile.
*
@@ -82,6 +102,16 @@ GIT_EXTERN(int) git_mempack_dump(git_buf *pack, git_repository *repo, git_odb_ba
*/
GIT_EXTERN(int) git_mempack_reset(git_odb_backend *backend);
+/**
+ * Get the total number of objects in mempack
+ *
+ * @param count The count of objects in the mempack
+ * @param backend The mempack backend
+ * @return 0 on success, or -1 on error
+ */
+GIT_EXTERN(int) git_mempack_object_count(size_t *count, git_odb_backend *backend);
+
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/merge.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/merge.h
index ef4bc5a..a9f5220 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/merge.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/merge.h
@@ -14,13 +14,18 @@
/**
* @file git2/sys/merge.h
- * @brief Git merge driver backend and plugin routines
- * @defgroup git_merge Git merge driver APIs
+ * @brief Custom merge drivers
+ * @defgroup git_merge Custom merge drivers
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/**
+ * A "merge driver" is a mechanism that can be configured to handle
+ * conflict resolution for files changed in both the "ours" and "theirs"
+ * side of a merge.
+ */
typedef struct git_merge_driver git_merge_driver;
/**
@@ -31,8 +36,11 @@ typedef struct git_merge_driver git_merge_driver;
*/
GIT_EXTERN(git_merge_driver *) git_merge_driver_lookup(const char *name);
+/** The "text" merge driver */
#define GIT_MERGE_DRIVER_TEXT "text"
+/** The "binary" merge driver */
#define GIT_MERGE_DRIVER_BINARY "binary"
+/** The "union" merge driver */
#define GIT_MERGE_DRIVER_UNION "union"
/**
@@ -40,23 +48,48 @@ GIT_EXTERN(git_merge_driver *) git_merge_driver_lookup(const char *name);
*/
typedef struct git_merge_driver_source git_merge_driver_source;
-/** Get the repository that the source data is coming from. */
+/**
+ * Get the repository that the source data is coming from.
+ *
+ * @param src the merge driver source
+ * @return the repository
+ */
GIT_EXTERN(git_repository *) git_merge_driver_source_repo(
const git_merge_driver_source *src);
-/** Gets the ancestor of the file to merge. */
+/**
+ * Gets the ancestor of the file to merge.
+ *
+ * @param src the merge driver source
+ * @return the ancestor or NULL if there was no ancestor
+ */
GIT_EXTERN(const git_index_entry *) git_merge_driver_source_ancestor(
const git_merge_driver_source *src);
-/** Gets the ours side of the file to merge. */
+/**
+ * Gets the ours side of the file to merge.
+ *
+ * @param src the merge driver source
+ * @return the ours side or NULL if there was no ours side
+ */
GIT_EXTERN(const git_index_entry *) git_merge_driver_source_ours(
const git_merge_driver_source *src);
-/** Gets the theirs side of the file to merge. */
+/**
+ * Gets the theirs side of the file to merge.
+ *
+ * @param src the merge driver source
+ * @return the theirs side or NULL if there was no theirs side
+ */
GIT_EXTERN(const git_index_entry *) git_merge_driver_source_theirs(
const git_merge_driver_source *src);
-/** Gets the merge file options that the merge was invoked with */
+/**
+ * Gets the merge file options that the merge was invoked with.
+ *
+ * @param src the merge driver source
+ * @return the options
+ */
GIT_EXTERN(const git_merge_file_options *) git_merge_driver_source_file_options(
const git_merge_driver_source *src);
@@ -72,6 +105,9 @@ GIT_EXTERN(const git_merge_file_options *) git_merge_driver_source_file_options(
* right before the first use of the driver, so you can defer expensive
* initialization operations (in case libgit2 is being used in a way that
* doesn't need the merge driver).
+ *
+ * @param self the merge driver to initialize
+ * @return 0 on success, or a negative number on failure
*/
typedef int GIT_CALLBACK(git_merge_driver_init_fn)(git_merge_driver *self);
@@ -84,6 +120,8 @@ typedef int GIT_CALLBACK(git_merge_driver_init_fn)(git_merge_driver *self);
* This may be called even if the `initialize` callback was not made.
*
* Typically this function will free the `git_merge_driver` object itself.
+ *
+ * @param self the merge driver to shutdown
*/
typedef void GIT_CALLBACK(git_merge_driver_shutdown_fn)(git_merge_driver *self);
@@ -104,6 +142,14 @@ typedef void GIT_CALLBACK(git_merge_driver_shutdown_fn)(git_merge_driver *self);
* specified by the file's attributes.
*
* The `src` contains the data about the file to be merged.
+ *
+ * @param self the merge driver
+ * @param path_out the resolved path
+ * @param mode_out the resolved mode
+ * @param merged_out the merged output contents
+ * @param filter_name the filter that was invoked
+ * @param src the data about the unmerged file
+ * @return 0 on success, or an error code
*/
typedef int GIT_CALLBACK(git_merge_driver_apply_fn)(
git_merge_driver *self,
@@ -139,6 +185,7 @@ struct git_merge_driver {
git_merge_driver_apply_fn apply;
};
+/** The version for the `git_merge_driver` */
#define GIT_MERGE_DRIVER_VERSION 1
/**
@@ -179,4 +226,5 @@ GIT_EXTERN(int) git_merge_driver_unregister(const char *name);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/midx.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/midx.h
index e3d7498..b3a68af 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/midx.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/midx.h
@@ -11,14 +11,52 @@
#include "git2/types.h"
/**
- * @file git2/midx.h
- * @brief Git multi-pack-index routines
- * @defgroup git_midx Git multi-pack-index routines
+ * @file git2/sys/midx.h
+ * @brief Incremental multi-pack indexes
+ * @defgroup git_midx Incremental multi-pack indexes
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/**
+ * Options structure for `git_midx_writer_options`.
+ *
+ * Initialize with `GIT_MIDX_WRITER_OPTIONS_INIT`. Alternatively,
+ * you can use `git_midx_writer_options_init`.
+ */
+typedef struct {
+ unsigned int version;
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /** The object ID type that this commit graph contains. */
+ git_oid_t oid_type;
+#endif
+} git_midx_writer_options;
+
+/** Current version for the `git_midx_writer_options` structure */
+#define GIT_MIDX_WRITER_OPTIONS_VERSION 1
+
+/** Static constructor for `git_midx_writer_options` */
+#define GIT_MIDX_WRITER_OPTIONS_INIT { \
+ GIT_MIDX_WRITER_OPTIONS_VERSION \
+ }
+
+/**
+ * Initialize git_midx_writer_options structure
+ *
+ * Initializes a `git_midx_writer_options` with default values.
+ * Equivalent to creating an instance with
+ * `GIT_MIDX_WRITER_OPTIONS_INIT`.
+ *
+ * @param opts The `git_midx_writer_options` struct to initialize.
+ * @param version The struct version; pass `GIT_MIDX_WRITER_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_midx_writer_options_init(
+ git_midx_writer_options *opts,
+ unsigned int version);
+
/**
* Create a new writer for `multi-pack-index` files.
*
@@ -29,7 +67,11 @@ GIT_BEGIN_DECL
*/
GIT_EXTERN(int) git_midx_writer_new(
git_midx_writer **out,
- const char *pack_dir);
+ const char *pack_dir
+#ifdef GIT_EXPERIMENTAL_SHA256
+ , git_midx_writer_options *options
+#endif
+ );
/**
* Free the multi-pack-index writer and its resources.
@@ -71,4 +113,5 @@ GIT_EXTERN(int) git_midx_writer_dump(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/odb_backend.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/odb_backend.h
index 9ae0ed9..53d8d06 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/odb_backend.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/odb_backend.h
@@ -13,9 +13,9 @@
#include "git2/odb.h"
/**
- * @file git2/sys/backend.h
- * @brief Git custom backend implementors functions
- * @defgroup git_backend Git custom backend APIs
+ * @file git2/sys/odb_backend.h
+ * @brief Object database backends for custom object storage
+ * @defgroup git_backend Object database backends for custom object storage
* @ingroup Git
* @{
*/
@@ -36,7 +36,7 @@ struct git_odb_backend {
void **, size_t *, git_object_t *, git_odb_backend *, const git_oid *);
/* To find a unique object given a prefix of its oid. The oid given
- * must be so that the remaining (GIT_OID_HEXSZ - len)*4 bits are 0s.
+ * must be so that the remaining (GIT_OID_SHA1_HEXSIZE - len)*4 bits are 0s.
*/
int GIT_CALLBACK(read_prefix)(
git_oid *, void **, size_t *, git_object_t *,
@@ -69,11 +69,8 @@ struct git_odb_backend {
* If the backend implements a refreshing mechanism, it should be exposed
* through this endpoint. Each call to `git_odb_refresh()` will invoke it.
*
- * However, the backend implementation should try to stay up-to-date as much
- * as possible by itself as libgit2 will not automatically invoke
- * `git_odb_refresh()`. For instance, a potential strategy for the backend
- * implementation to achieve this could be to internally invoke this
- * endpoint on failed lookups (ie. `exists()`, `read()`, `read_header()`).
+ * The odb layer will automatically call this when needed on failed
+ * lookups (ie. `exists()`, `read()`, `read_header()`).
*/
int GIT_CALLBACK(refresh)(git_odb_backend *);
@@ -109,7 +106,10 @@ struct git_odb_backend {
void GIT_CALLBACK(free)(git_odb_backend *);
};
+/** Current version for the `git_odb_backend_options` structure */
#define GIT_ODB_BACKEND_VERSION 1
+
+/** Static constructor for `git_odb_backend_options` */
#define GIT_ODB_BACKEND_INIT {GIT_ODB_BACKEND_VERSION}
/**
@@ -170,6 +170,7 @@ GIT_EXTERN(void *) git_odb_backend_malloc(git_odb_backend *backend, size_t len);
#endif
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/openssl.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/openssl.h
index b41c55c..8b74a98 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/openssl.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/openssl.h
@@ -9,6 +9,12 @@
#include "git2/common.h"
+/**
+ * @file git2/sys/openssl.h
+ * @brief Custom OpenSSL functionality
+ * @defgroup git_openssl Custom OpenSSL functionality
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -33,6 +39,7 @@ GIT_BEGIN_DECL
*/
GIT_EXTERN(int) git_openssl_set_locking(void);
+/** @} */
GIT_END_DECL
-#endif
+#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/path.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/path.h
index 2a0c7e0..2963bca 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/path.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/path.h
@@ -10,6 +10,16 @@
#include "git2/common.h"
+/**
+ * @file git2/sys/path.h
+ * @brief Custom path handling
+ * @defgroup git_path Custom path handling
+ * @ingroup Git
+ *
+ * Merge will take two commits and attempt to produce a commit that
+ * includes the changes that were made in both branches.
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -59,6 +69,7 @@ typedef enum {
*/
GIT_EXTERN(int) git_path_is_gitfile(const char *path, size_t pathlen, git_path_gitfile gitfile, git_path_fs fs);
+/** @} */
GIT_END_DECL
-#endif /* INCLUDE_sys_git_path */
+#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/refdb_backend.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/refdb_backend.h
index c31e26d..813822a 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/refdb_backend.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/refdb_backend.h
@@ -12,9 +12,9 @@
#include "git2/oid.h"
/**
- * @file git2/refdb_backend.h
- * @brief Git custom refs backend functions
- * @defgroup git_refdb_backend Git custom refs backend API
+ * @file git2/sys/refdb_backend.h
+ * @brief Custom reference database backends for refs storage
+ * @defgroup git_refdb_backend Custom reference database backends for refs storage
* @ingroup Git
* @{
*/
@@ -65,9 +65,9 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg exists The implementation shall set this to `0` if a ref does
+ * @param exists The implementation shall set this to `0` if a ref does
* not exist, otherwise to `1`.
- * @arg ref_name The reference's name that should be checked for
+ * @param ref_name The reference's name that should be checked for
* existence.
* @return `0` on success, a negative error value code.
*/
@@ -81,9 +81,9 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg out The implementation shall set this to the allocated
+ * @param out The implementation shall set this to the allocated
* reference, if it could be found, otherwise to `NULL`.
- * @arg ref_name The reference's name that should be checked for
+ * @param ref_name The reference's name that should be checked for
* existence.
* @return `0` on success, `GIT_ENOTFOUND` if the reference does
* exist, otherwise a negative error code.
@@ -98,12 +98,12 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg out The implementation shall set this to the allocated
+ * @param out The implementation shall set this to the allocated
* reference iterator. A custom structure may be used with an
* embedded `git_reference_iterator` structure. Both `next`
* and `next_name` functions of `git_reference_iterator` need
* to be populated.
- * @arg glob A pattern to filter references by. If given, the iterator
+ * @param glob A pattern to filter references by. If given, the iterator
* shall only return references that match the glob when
* passed to `wildmatch`.
* @return `0` on success, otherwise a negative error code.
@@ -118,20 +118,20 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg ref The reference to persist. May either be a symbolic or
+ * @param ref The reference to persist. May either be a symbolic or
* direct reference.
- * @arg force Whether to write the reference if a reference with the
+ * @param force Whether to write the reference if a reference with the
* same name already exists.
- * @arg who The person updating the reference. Shall be used to create
+ * @param who The person updating the reference. Shall be used to create
* a reflog entry.
- * @arg message The message detailing what kind of reference update is
+ * @param message The message detailing what kind of reference update is
* performed. Shall be used to create a reflog entry.
- * @arg old If not `NULL` and `force` is not set, then the
+ * @param old If not `NULL` and `force` is not set, then the
* implementation needs to ensure that the reference is currently at
* the given OID before writing the new value. If both `old`
* and `old_target` are `NULL`, then the reference should not
* exist at the point of writing.
- * @arg old_target If not `NULL` and `force` is not set, then the
+ * @param old_target If not `NULL` and `force` is not set, then the
* implementation needs to ensure that the symbolic
* reference is currently at the given target before
* writing the new value. If both `old` and
@@ -149,15 +149,15 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg out The implementation shall set this to the newly created
+ * @param out The implementation shall set this to the newly created
* reference or `NULL` on error.
- * @arg old_name The current name of the reference that is to be renamed.
- * @arg new_name The new name that the old reference shall be renamed to.
- * @arg force Whether to write the reference if a reference with the
+ * @param old_name The current name of the reference that is to be renamed.
+ * @param new_name The new name that the old reference shall be renamed to.
+ * @param force Whether to write the reference if a reference with the
* target name already exists.
- * @arg who The person updating the reference. Shall be used to create
+ * @param who The person updating the reference. Shall be used to create
* a reflog entry.
- * @arg message The message detailing what kind of reference update is
+ * @param message The message detailing what kind of reference update is
* performed. Shall be used to create a reflog entry.
* @return `0` on success, otherwise a negative error code.
*/
@@ -173,11 +173,11 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg ref_name The name of the reference name that shall be deleted.
- * @arg old_id If not `NULL` and `force` is not set, then the
+ * @param ref_name The name of the reference name that shall be deleted.
+ * @param old_id If not `NULL` and `force` is not set, then the
* implementation needs to ensure that the reference is currently at
* the given OID before writing the new value.
- * @arg old_target If not `NULL` and `force` is not set, then the
+ * @param old_target If not `NULL` and `force` is not set, then the
* implementation needs to ensure that the symbolic
* reference is currently at the given target before
* writing the new value.
@@ -243,7 +243,7 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg reflog The complete reference log for a given reference. Note
+ * @param reflog The complete reference log for a given reference. Note
* that this may contain entries that have already been
* written to disk.
* @return `0` on success, a negative error code otherwise
@@ -255,8 +255,8 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg old_name The name of old reference whose reflog shall be renamed from.
- * @arg new_name The name of new reference whose reflog shall be renamed to.
+ * @param old_name The name of old reference whose reflog shall be renamed from.
+ * @param new_name The name of new reference whose reflog shall be renamed to.
* @return `0` on success, a negative error code otherwise
*/
int GIT_CALLBACK(reflog_rename)(git_refdb_backend *_backend, const char *old_name, const char *new_name);
@@ -266,7 +266,7 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg name The name of the reference whose reflog shall be deleted.
+ * @param name The name of the reference whose reflog shall be deleted.
* @return `0` on success, a negative error code otherwise
*/
int GIT_CALLBACK(reflog_delete)(git_refdb_backend *backend, const char *name);
@@ -277,9 +277,9 @@ struct git_refdb_backend {
* A refdb implementation may provide this function; if it is not
* provided, the transaction API will fail to work.
*
- * @arg payload_out Opaque parameter that will be passed verbosely to
+ * @param payload_out Opaque parameter that will be passed verbosely to
* `unlock`.
- * @arg refname Reference that shall be locked.
+ * @param refname Reference that shall be locked.
* @return `0` on success, a negative error code otherwise
*/
int GIT_CALLBACK(lock)(void **payload_out, git_refdb_backend *backend, const char *refname);
@@ -294,16 +294,16 @@ struct git_refdb_backend {
* A refdb implementation must provide this function if a `lock`
* implementation is provided.
*
- * @arg payload The payload returned by `lock`.
- * @arg success `1` if a reference should be updated, `2` if
+ * @param payload The payload returned by `lock`.
+ * @param success `1` if a reference should be updated, `2` if
* a reference should be deleted, `0` if the lock must be
* discarded.
- * @arg update_reflog `1` in case the reflog should be updated, `0`
+ * @param update_reflog `1` in case the reflog should be updated, `0`
* otherwise.
- * @arg ref The reference which should be unlocked.
- * @arg who The person updating the reference. Shall be used to create
+ * @param ref The reference which should be unlocked.
+ * @param who The person updating the reference. Shall be used to create
* a reflog entry in case `update_reflog` is set.
- * @arg message The message detailing what kind of reference update is
+ * @param message The message detailing what kind of reference update is
* performed. Shall be used to create a reflog entry in
* case `update_reflog` is set.
* @return `0` on success, a negative error code otherwise
@@ -312,7 +312,10 @@ struct git_refdb_backend {
const git_reference *ref, const git_signature *sig, const char *message);
};
+/** Current version for the `git_refdb_backend_options` structure */
#define GIT_REFDB_BACKEND_VERSION 1
+
+/** Static constructor for `git_refdb_backend_options` */
#define GIT_REFDB_BACKEND_INIT {GIT_REFDB_BACKEND_VERSION}
/**
@@ -356,6 +359,7 @@ GIT_EXTERN(int) git_refdb_set_backend(
git_refdb *refdb,
git_refdb_backend *backend);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/reflog.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/reflog.h
deleted file mode 100644
index c9d0041..0000000
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/reflog.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright (C) the libgit2 contributors. All rights reserved.
- *
- * This file is part of libgit2, distributed under the GNU GPL v2 with
- * a Linking Exception. For full terms see the included COPYING file.
- */
-#ifndef INCLUDE_sys_git_reflog_h__
-#define INCLUDE_sys_git_reflog_h__
-
-#include "git2/common.h"
-#include "git2/types.h"
-#include "git2/oid.h"
-
-GIT_BEGIN_DECL
-
-GIT_EXTERN(git_reflog_entry *) git_reflog_entry__alloc(void);
-GIT_EXTERN(void) git_reflog_entry__free(git_reflog_entry *entry);
-
-GIT_END_DECL
-
-#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/refs.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/refs.h
index d2ce2e0..e434e67 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/refs.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/refs.h
@@ -13,8 +13,8 @@
/**
* @file git2/sys/refs.h
- * @brief Low-level Git ref creation
- * @defgroup git_backend Git custom backend APIs
+ * @brief Low-level git reference creation
+ * @defgroup git_backend Low-level git reference creation
* @ingroup Git
* @{
*/
@@ -46,4 +46,5 @@ GIT_EXTERN(git_reference *) git_reference__alloc_symbolic(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/remote.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/remote.h
new file mode 100644
index 0000000..476965d
--- /dev/null
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/remote.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) the libgit2 contributors. All rights reserved.
+ *
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
+ * a Linking Exception. For full terms see the included COPYING file.
+ */
+
+#ifndef INCLUDE_sys_git_remote_h
+#define INCLUDE_sys_git_remote_h
+
+#include "git2/remote.h"
+
+/**
+ * @file git2/sys/remote.h
+ * @brief Low-level remote functionality for custom transports
+ * @defgroup git_remote Low-level remote functionality for custom transports
+ * @ingroup Git
+ * @{
+*/
+
+GIT_BEGIN_DECL
+
+/**
+ * A remote's capabilities.
+ */
+typedef enum {
+ /** Remote supports fetching an advertised object by ID. */
+ GIT_REMOTE_CAPABILITY_TIP_OID = (1 << 0),
+
+ /** Remote supports fetching an individual reachable object. */
+ GIT_REMOTE_CAPABILITY_REACHABLE_OID = (1 << 1),
+
+ /** Remote supports push options. */
+ GIT_REMOTE_CAPABILITY_PUSH_OPTIONS = (1 << 2),
+} git_remote_capability_t;
+
+/**
+ * Disposes libgit2-initialized fields from a git_remote_connect_options.
+ * This should only be used for git_remote_connect_options returned by
+ * git_transport_remote_connect_options.
+ *
+ * Note that this does not free the `git_remote_connect_options` itself, just
+ * the memory pointed to by it.
+ *
+ * @param opts The `git_remote_connect_options` struct to dispose.
+ */
+GIT_EXTERN(void) git_remote_connect_options_dispose(
+ git_remote_connect_options *opts);
+
+/** @} */
+GIT_END_DECL
+
+#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/repository.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/repository.h
index 892be66..026ac8a 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/repository.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/repository.h
@@ -9,16 +9,71 @@
#include "git2/common.h"
#include "git2/types.h"
+#include "git2/oid.h"
/**
* @file git2/sys/repository.h
- * @brief Git repository custom implementation routines
- * @defgroup git_backend Git custom backend APIs
+ * @brief Custom repository handling
+ * @defgroup git_repository Custom repository handling
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+#ifdef GIT_EXPERIMENTAL_SHA256
+
+/**
+ * The options for creating an repository from scratch.
+ *
+ * Initialize with `GIT_REPOSITORY_NEW_OPTIONS_INIT`. Alternatively,
+ * you can use `git_repository_new_options_init`.
+ *
+ * @options[version] GIT_REPOSITORY_NEW_OPTIONS_VERSION
+ * @options[init_macro] GIT_REPOSITORY_NEW_OPTIONS_INIT
+ * @options[init_function] git_repository_new_options_init
+ */
+typedef struct git_repository_new_options {
+ unsigned int version; /**< The version */
+
+ /**
+ * The object ID type for the object IDs that exist in the index.
+ *
+ * If this is not specified, this defaults to `GIT_OID_SHA1`.
+ */
+ git_oid_t oid_type;
+} git_repository_new_options;
+
+/** Current version for the `git_repository_new_options` structure */
+#define GIT_REPOSITORY_NEW_OPTIONS_VERSION 1
+
+/** Static constructor for `git_repository_new_options` */
+#define GIT_REPOSITORY_NEW_OPTIONS_INIT { GIT_REPOSITORY_NEW_OPTIONS_VERSION }
+
+/**
+ * Initialize git_repository_new_options structure
+ *
+ * Initializes a `git_repository_new_options` with default values.
+ * Equivalent to creating an instance with
+ * `GIT_REPOSITORY_NEW_OPTIONS_INIT`.
+ *
+ * @param opts The `git_repository_new_options` struct to initialize.
+ * @param version The struct version; pass `GIT_REPOSITORY_NEW_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_repository_new_options_init(
+ git_repository_new_options *opts,
+ unsigned int version);
+
+/**
+ * Create a new repository with no backends.
+ *
+ * @param[out] out The blank repository
+ * @param opts the options for repository creation, or NULL for defaults
+ * @return 0 on success, or an error code
+ */
+GIT_EXTERN(int) git_repository_new(git_repository **out, git_repository_new_options *opts);
+#else
+
/**
* Create a new repository with neither backends nor config object
*
@@ -29,11 +84,13 @@ GIT_BEGIN_DECL
* can fail to function properly: locations under $GIT_DIR, $GIT_COMMON_DIR,
* or $GIT_INFO_DIR are impacted.
*
- * @param out The blank repository
+ * @param[out] out The blank repository
* @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_repository_new(git_repository **out);
+#endif
+
/**
* Reset all the internal state in a repository.
*
@@ -156,6 +213,7 @@ GIT_EXTERN(int) git_repository_set_bare(git_repository *repo);
* and caches them so that subsequent calls to `git_submodule_lookup` are O(1).
*
* @param repo the repository whose submodules will be cached.
+ * @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_repository_submodule_cache_all(
git_repository *repo);
@@ -171,10 +229,12 @@ GIT_EXTERN(int) git_repository_submodule_cache_all(
* of these has changed, the cache might become invalid.
*
* @param repo the repository whose submodule cache will be cleared
+ * @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_repository_submodule_cache_clear(
git_repository *repo);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/stream.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/stream.h
index 6f93cc4..eabff68 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/stream.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/stream.h
@@ -11,8 +11,16 @@
#include "git2/types.h"
#include "git2/proxy.h"
+/**
+ * @file git2/sys/stream.h
+ * @brief Streaming file I/O functionality
+ * @defgroup git_stream Streaming file I/O functionality
+ * @ingroup Git
+ * @{
+ */
GIT_BEGIN_DECL
+/** Current version for the `git_stream` structures */
#define GIT_STREAM_VERSION 1
/**
@@ -29,8 +37,22 @@ GIT_BEGIN_DECL
typedef struct git_stream {
int version;
- int encrypted;
- int proxy_support;
+ unsigned int encrypted : 1,
+ proxy_support : 1;
+
+ /**
+ * Timeout for read and write operations; can be set to `0` to
+ * block indefinitely.
+ */
+ int timeout;
+
+ /**
+ * Timeout to connect to the remote server; can be set to `0`
+ * to use the system defaults. This can be shorter than the
+ * system default - often 75 seconds - but cannot be longer.
+ */
+ int connect_timeout;
+
int GIT_CALLBACK(connect)(struct git_stream *);
int GIT_CALLBACK(certificate)(git_cert **, struct git_stream *);
int GIT_CALLBACK(set_proxy)(struct git_stream *, const git_proxy_options *proxy_opts);
@@ -79,7 +101,7 @@ typedef enum {
GIT_STREAM_STANDARD = 1,
/** A TLS-encrypted socket. */
- GIT_STREAM_TLS = 2,
+ GIT_STREAM_TLS = 2
} git_stream_t;
/**
@@ -133,6 +155,7 @@ GIT_EXTERN(int) git_stream_register_tls(git_stream_cb ctor);
#endif
+/**@}*/
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/transport.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/transport.h
index fee3454..ad6765c 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/transport.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/sys/transport.h
@@ -9,46 +9,40 @@
#define INCLUDE_sys_git_transport_h
#include "git2/net.h"
+#include "git2/oidarray.h"
+#include "git2/proxy.h"
+#include "git2/remote.h"
+#include "git2/strarray.h"
#include "git2/transport.h"
#include "git2/types.h"
-#include "git2/strarray.h"
-#include "git2/proxy.h"
/**
* @file git2/sys/transport.h
- * @brief Git custom transport registration interfaces and functions
- * @defgroup git_transport Git custom transport registration
+ * @brief Custom transport registration interfaces and functions
+ * @defgroup git_transport Custom transport registration
* @ingroup Git
+ *
+ * Callers can override the default HTTPS or SSH implementation by
+ * specifying a custom transport.
* @{
*/
GIT_BEGIN_DECL
/**
- * Flags to pass to transport
- *
- * Currently unused.
+ * The negotiation state during a fetch smart transport negotiation.
*/
-typedef enum {
- GIT_TRANSPORTFLAGS_NONE = 0,
-} git_transport_flags_t;
+typedef struct {
+ const git_remote_head * const *refs;
+ size_t refs_len;
+ git_oid *shallow_roots;
+ size_t shallow_roots_len;
+ int depth;
+} git_fetch_negotiation;
struct git_transport {
unsigned int version; /**< The struct version */
- /** Set progress and error callbacks */
- int GIT_CALLBACK(set_callbacks)(
- git_transport *transport,
- git_transport_message_cb progress_cb,
- git_transport_message_cb error_cb,
- git_transport_certificate_check_cb certificate_check_cb,
- void *payload);
-
- /** Set custom headers for HTTP requests */
- int GIT_CALLBACK(set_custom_headers)(
- git_transport *transport,
- const git_strarray *custom_headers);
-
/**
* Connect the transport to the remote repository, using the given
* direction.
@@ -56,11 +50,39 @@ struct git_transport {
int GIT_CALLBACK(connect)(
git_transport *transport,
const char *url,
- git_credential_acquire_cb cred_acquire_cb,
- void *cred_acquire_payload,
- const git_proxy_options *proxy_opts,
int direction,
- int flags);
+ const git_remote_connect_options *connect_opts);
+
+ /**
+ * Resets the connect options for the given transport. This
+ * is useful for updating settings or callbacks for an already
+ * connected transport.
+ */
+ int GIT_CALLBACK(set_connect_opts)(
+ git_transport *transport,
+ const git_remote_connect_options *connect_opts);
+
+ /**
+ * Gets the capabilities for this remote repository.
+ *
+ * This function may be called after a successful call to
+ * `connect()`.
+ */
+ int GIT_CALLBACK(capabilities)(
+ unsigned int *capabilities,
+ git_transport *transport);
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /**
+ * Gets the object type for the remote repository.
+ *
+ * This function may be called after a successful call to
+ * `connect()`.
+ */
+ int GIT_CALLBACK(oid_type)(
+ git_oid_t *object_type,
+ git_transport *transport);
+#endif
/**
* Get the list of available references in the remote repository.
@@ -75,7 +97,9 @@ struct git_transport {
git_transport *transport);
/** Executes the push whose context is in the git_push object. */
- int GIT_CALLBACK(push)(git_transport *transport, git_push *push, const git_remote_callbacks *callbacks);
+ int GIT_CALLBACK(push)(
+ git_transport *transport,
+ git_push *push);
/**
* Negotiate a fetch with the remote repository.
@@ -87,8 +111,17 @@ 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);
+
+ /**
+ * Return the shallow roots of the remote.
+ *
+ * This function may be called after a successful call to
+ * `negotiate_fetch`.
+ */
+ int GIT_CALLBACK(shallow_roots)(
+ git_oidarray *out,
+ git_transport *transport);
/**
* Start downloading the packfile from the remote repository.
@@ -99,16 +132,11 @@ struct git_transport {
int GIT_CALLBACK(download_pack)(
git_transport *transport,
git_repository *repo,
- git_indexer_progress *stats,
- git_indexer_progress_cb progress_cb,
- void *progress_payload);
+ git_indexer_progress *stats);
/** Checks to see if the transport is connected */
int GIT_CALLBACK(is_connected)(git_transport *transport);
- /** Reads the flags value previously passed into connect() */
- int GIT_CALLBACK(read_flags)(git_transport *transport, int *flags);
-
/** Cancels any outstanding transport operation */
void GIT_CALLBACK(cancel)(git_transport *transport);
@@ -124,7 +152,10 @@ struct git_transport {
void GIT_CALLBACK(free)(git_transport *transport);
};
+/** Current version for the `git_transport` structure */
#define GIT_TRANSPORT_VERSION 1
+
+/** Static constructor for `git_transport` */
#define GIT_TRANSPORT_INIT {GIT_TRANSPORT_VERSION}
/**
@@ -270,14 +301,18 @@ GIT_EXTERN(int) git_transport_smart_certificate_check(git_transport *transport,
GIT_EXTERN(int) git_transport_smart_credentials(git_credential **out, git_transport *transport, const char *user, int methods);
/**
- * Get a copy of the proxy options
+ * Get a copy of the remote connect options
*
- * The url is copied and must be freed by the caller.
+ * All data is copied and must be freed by the caller by calling
+ * `git_remote_connect_options_dispose`.
*
* @param out options struct to fill
* @param transport the transport to extract the data from.
+ * @return 0 on success, or an error code
*/
-GIT_EXTERN(int) git_transport_smart_proxy_options(git_proxy_options *out, git_transport *transport);
+GIT_EXTERN(int) git_transport_remote_connect_options(
+ git_remote_connect_options *out,
+ git_transport *transport);
/*
*** End of base transport interface ***
@@ -289,7 +324,7 @@ typedef enum {
GIT_SERVICE_UPLOADPACK_LS = 1,
GIT_SERVICE_UPLOADPACK = 2,
GIT_SERVICE_RECEIVEPACK_LS = 3,
- GIT_SERVICE_RECEIVEPACK = 4,
+ GIT_SERVICE_RECEIVEPACK = 4
} git_smart_service_t;
typedef struct git_smart_subtransport git_smart_subtransport;
@@ -361,7 +396,14 @@ struct git_smart_subtransport {
void GIT_CALLBACK(free)(git_smart_subtransport *transport);
};
-/** A function which creates a new subtransport for the smart transport */
+/**
+ * A function that creates a new subtransport for the smart transport
+ *
+ * @param out the smart subtransport
+ * @param owner the transport owner
+ * @param param the input parameter
+ * @return 0 on success, or an error code
+ */
typedef int GIT_CALLBACK(git_smart_subtransport_cb)(
git_smart_subtransport **out,
git_transport *owner,
@@ -404,6 +446,7 @@ typedef struct git_smart_subtransport_definition {
*
* @param out The newly created subtransport
* @param owner The smart transport to own this subtransport
+ * @param param custom parameters for the subtransport
* @return 0 or an error code
*/
GIT_EXTERN(int) git_smart_subtransport_http(
@@ -416,6 +459,7 @@ GIT_EXTERN(int) git_smart_subtransport_http(
*
* @param out The newly created subtransport
* @param owner The smart transport to own this subtransport
+ * @param param custom parameters for the subtransport
* @return 0 or an error code
*/
GIT_EXTERN(int) git_smart_subtransport_git(
@@ -428,6 +472,7 @@ GIT_EXTERN(int) git_smart_subtransport_git(
*
* @param out The newly created subtransport
* @param owner The smart transport to own this subtransport
+ * @param param custom parameters for the subtransport
* @return 0 or an error code
*/
GIT_EXTERN(int) git_smart_subtransport_ssh(
@@ -437,4 +482,5 @@ GIT_EXTERN(int) git_smart_subtransport_ssh(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/tag.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/tag.h
index a392136..3b0c12e 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/tag.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/tag.h
@@ -15,7 +15,7 @@
/**
* @file git2/tag.h
- * @brief Git tag parsing routines
+ * @brief A (nearly) immutable pointer to a commit; useful for versioning
* @defgroup git_tag Git tag management
* @ingroup Git
* @{
@@ -335,6 +335,7 @@ typedef int GIT_CALLBACK(git_tag_foreach_cb)(const char *name, git_oid *oid, voi
* @param repo Repository
* @param callback Callback function
* @param payload Pointer to callback data (optional)
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_tag_foreach(
git_repository *repo,
@@ -362,6 +363,7 @@ GIT_EXTERN(int) git_tag_peel(
*
* @param out Pointer to store the copy of the tag
* @param source Original tag to copy
+ * @return 0
*/
GIT_EXTERN(int) git_tag_dup(git_tag **out, git_tag *source);
@@ -379,4 +381,5 @@ GIT_EXTERN(int) git_tag_name_is_valid(int *valid, const char *name);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/trace.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/trace.h
index 8cee3a9..62cb87c 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/trace.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/trace.h
@@ -12,8 +12,8 @@
/**
* @file git2/trace.h
- * @brief Git tracing configuration routines
- * @defgroup git_trace Git tracing configuration routines
+ * @brief Tracing functionality to introspect libgit2 in your application
+ * @defgroup git_trace Tracing functionality to introspect libgit2 in your application
* @ingroup Git
* @{
*/
@@ -48,8 +48,13 @@ typedef enum {
/**
* An instance for a tracing function
+ *
+ * @param level the trace level
+ * @param msg the trace message
*/
-typedef void GIT_CALLBACK(git_trace_cb)(git_trace_level_t level, const char *msg);
+typedef void GIT_CALLBACK(git_trace_cb)(
+ git_trace_level_t level,
+ const char *msg);
/**
* Sets the system tracing configuration to the specified level with the
@@ -64,4 +69,5 @@ GIT_EXTERN(int) git_trace_set(git_trace_level_t level, git_trace_cb cb);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/transaction.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/transaction.h
index 4938570..212d329 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/transaction.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/transaction.h
@@ -12,8 +12,8 @@
/**
* @file git2/transaction.h
- * @brief Git transactional reference routines
- * @defgroup git_transaction Git transactional reference routines
+ * @brief Transactional reference handling
+ * @defgroup git_transaction Transactional reference handling
* @ingroup Git
* @{
*/
@@ -118,4 +118,5 @@ GIT_EXTERN(void) git_transaction_free(git_transaction *tx);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/transport.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/transport.h
index 5a27de9..04a7390 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/transport.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/transport.h
@@ -15,8 +15,8 @@
/**
* @file git2/transport.h
- * @brief Git transport interfaces and functions
- * @defgroup git_transport interfaces and functions
+ * @brief Transports are the low-level mechanism to connect to a remote server
+ * @defgroup git_transport Transports are the low-level mechanism to connect to a remote server
* @ingroup Git
* @{
*/
@@ -30,10 +30,18 @@ GIT_BEGIN_DECL
* @param str The message from the transport
* @param len The length of the message
* @param payload Payload provided by the caller
+ * @return 0 on success or an error code
*/
typedef int GIT_CALLBACK(git_transport_message_cb)(const char *str, int len, void *payload);
-/** Signature of a function which creates a transport */
+/**
+ * Signature of a function which creates a transport.
+ *
+ * @param out the transport generate
+ * @param owner the owner for the transport
+ * @param param the param to the transport creation
+ * @return 0 on success or an error code
+ */
typedef int GIT_CALLBACK(git_transport_cb)(git_transport **out, git_remote *owner, void *param);
/** @} */
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/tree.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/tree.h
index f2289fc..b8e2de2 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/tree.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/tree.h
@@ -14,8 +14,8 @@
/**
* @file git2/tree.h
- * @brief Git tree parsing, loading routines
- * @defgroup git_tree Git tree parsing, loading routines
+ * @brief Trees are collections of files and folders to make up the repository hierarchy
+ * @defgroup git_tree Trees are collections of files and folders to make up the repository hierarchy
* @ingroup Git
* @{
*/
@@ -24,7 +24,7 @@ GIT_BEGIN_DECL
/**
* Lookup a tree object from the repository.
*
- * @param out Pointer to the looked up tree
+ * @param[out] out Pointer to the looked up tree
* @param repo The repo to use when locating the tree.
* @param id Identity of the tree to locate.
* @return 0 or an error code
@@ -255,7 +255,7 @@ GIT_EXTERN(int) git_treebuilder_new(
git_treebuilder **out, git_repository *repo, const git_tree *source);
/**
- * Clear all the entires in the builder
+ * Clear all the entries in the builder
*
* @param bld Builder to clear
* @return 0 on success; error code otherwise
@@ -345,6 +345,10 @@ GIT_EXTERN(int) git_treebuilder_remove(
* The return value is treated as a boolean, with zero indicating that the
* entry should be left alone and any non-zero value meaning that the
* entry should be removed from the treebuilder list (i.e. filtered out).
+ *
+ * @param entry the tree entry for the callback to examine
+ * @param payload the payload from the caller
+ * @return 0 to do nothing, non-zero to remove the entry
*/
typedef int GIT_CALLBACK(git_treebuilder_filter_cb)(
const git_tree_entry *entry, void *payload);
@@ -379,14 +383,21 @@ GIT_EXTERN(int) git_treebuilder_filter(
GIT_EXTERN(int) git_treebuilder_write(
git_oid *id, git_treebuilder *bld);
-/** Callback for the tree traversal method */
+/**
+ * Callback for the tree traversal method.
+ *
+ * @param root the current (relative) root to the entry
+ * @param entry the tree entry
+ * @param payload the caller-provided callback payload
+ * @return a positive value to skip the entry, a negative value to stop the walk
+ */
typedef int GIT_CALLBACK(git_treewalk_cb)(
const char *root, const git_tree_entry *entry, void *payload);
/** Tree traversal modes */
typedef enum {
GIT_TREEWALK_PRE = 0, /* Pre-order */
- GIT_TREEWALK_POST = 1, /* Post-order */
+ GIT_TREEWALK_POST = 1 /* Post-order */
} git_treewalk_mode;
/**
@@ -418,6 +429,7 @@ GIT_EXTERN(int) git_tree_walk(
*
* @param out Pointer to store the copy of the tree
* @param source Original tree to copy
+ * @return 0
*/
GIT_EXTERN(int) git_tree_dup(git_tree **out, git_tree *source);
@@ -428,7 +440,7 @@ typedef enum {
/** Update or insert an entry at the specified path */
GIT_TREE_UPDATE_UPSERT,
/** Remove an entry from the specified path */
- GIT_TREE_UPDATE_REMOVE,
+ GIT_TREE_UPDATE_REMOVE
} git_tree_update_t;
/**
@@ -469,6 +481,6 @@ typedef struct {
GIT_EXTERN(int) git_tree_create_updated(git_oid *out, git_repository *repo, git_tree *baseline, size_t nupdates, const git_tree_update *updates);
/** @} */
-
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/types.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/types.h
index aac8e42..a4afd18 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/types.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/types.h
@@ -78,16 +78,21 @@ typedef enum {
GIT_OBJECT_BLOB = 3, /**< A file revision object. */
GIT_OBJECT_TAG = 4, /**< An annotated tag object. */
GIT_OBJECT_OFS_DELTA = 6, /**< A delta, base is given by an offset. */
- GIT_OBJECT_REF_DELTA = 7, /**< A delta, base is given by object id. */
+ GIT_OBJECT_REF_DELTA = 7 /**< A delta, base is given by object id. */
} git_object_t;
-/** An open object database handle. */
+/**
+ * An object database stores the objects (commit, trees, blobs, tags,
+ * etc) for a repository.
+ */
typedef struct git_odb git_odb;
/** A custom backend in an ODB */
typedef struct git_odb_backend git_odb_backend;
-/** An object read from the ODB */
+/**
+ * A "raw" object read from the object database.
+ */
typedef struct git_odb_object git_odb_object;
/** A stream to read/write from the ODB */
@@ -194,7 +199,18 @@ typedef struct git_reference_iterator git_reference_iterator;
/** Transactional interface to references */
typedef struct git_transaction git_transaction;
-/** Annotated commits, the input to merge and rebase. */
+/**
+ * Annotated commits are commits with additional metadata about how the
+ * commit was resolved, which can be used for maintaining the user's
+ * "intent" through commands like merge and rebase.
+ *
+ * For example, if a user wants to conceptually "merge `HEAD`", then the
+ * commit portion of an annotated commit will point to the `HEAD` commit,
+ * but the _annotation_ will denote the ref `HEAD`. This allows git to
+ * perform the internal bookkeeping so that the system knows both the
+ * content of what is being merged but also how the content was looked up
+ * so that it can be recorded in the reflog appropriately.
+ */
typedef struct git_annotated_commit git_annotated_commit;
/** Representation of a status collection */
@@ -208,14 +224,14 @@ typedef enum {
GIT_REFERENCE_INVALID = 0, /**< Invalid reference */
GIT_REFERENCE_DIRECT = 1, /**< A reference that points at an object id */
GIT_REFERENCE_SYMBOLIC = 2, /**< A reference that points at another reference */
- GIT_REFERENCE_ALL = GIT_REFERENCE_DIRECT | GIT_REFERENCE_SYMBOLIC,
+ GIT_REFERENCE_ALL = GIT_REFERENCE_DIRECT | GIT_REFERENCE_SYMBOLIC
} git_reference_t;
/** Basic type of any Git branch. */
typedef enum {
GIT_BRANCH_LOCAL = 1,
GIT_BRANCH_REMOTE = 2,
- GIT_BRANCH_ALL = GIT_BRANCH_LOCAL|GIT_BRANCH_REMOTE,
+ GIT_BRANCH_ALL = GIT_BRANCH_LOCAL|GIT_BRANCH_REMOTE
} git_branch_t;
/** Valid modes for index and tree entries. */
@@ -225,7 +241,7 @@ typedef enum {
GIT_FILEMODE_BLOB = 0100644,
GIT_FILEMODE_BLOB_EXECUTABLE = 0100755,
GIT_FILEMODE_LINK = 0120000,
- GIT_FILEMODE_COMMIT = 0160000,
+ GIT_FILEMODE_COMMIT = 0160000
} git_filemode_t;
/**
@@ -236,7 +252,7 @@ typedef struct git_refspec git_refspec;
/**
* Git's idea of a remote repository. A remote can be anonymous (in
- * which case it does not have backing configuration entires).
+ * which case it does not have backing configuration entries).
*/
typedef struct git_remote git_remote;
@@ -334,7 +350,7 @@ typedef enum {
GIT_SUBMODULE_IGNORE_NONE = 1, /**< any change or untracked == dirty */
GIT_SUBMODULE_IGNORE_UNTRACKED = 2, /**< dirty if tracked files change */
GIT_SUBMODULE_IGNORE_DIRTY = 3, /**< only dirty if HEAD moved */
- GIT_SUBMODULE_IGNORE_ALL = 4, /**< never dirty */
+ GIT_SUBMODULE_IGNORE_ALL = 4 /**< never dirty */
} git_submodule_ignore_t;
/**
@@ -350,7 +366,7 @@ typedef enum {
typedef enum {
GIT_SUBMODULE_RECURSE_NO = 0,
GIT_SUBMODULE_RECURSE_YES = 1,
- GIT_SUBMODULE_RECURSE_ONDEMAND = 2,
+ GIT_SUBMODULE_RECURSE_ONDEMAND = 2
} git_submodule_recurse_t;
typedef struct git_writestream git_writestream;
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/version.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/version.h
index 3503a62..587a101 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/version.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/version.h
@@ -7,12 +7,71 @@
#ifndef INCLUDE_git_version_h__
#define INCLUDE_git_version_h__
-#define LIBGIT2_VERSION "1.3.0"
-#define LIBGIT2_VER_MAJOR 1
-#define LIBGIT2_VER_MINOR 3
-#define LIBGIT2_VER_REVISION 0
-#define LIBGIT2_VER_PATCH 0
+#include "common.h"
-#define LIBGIT2_SOVERSION "1.3"
+/**
+ * @file git2/version.h
+ * @brief The version of libgit2
+ * @ingroup Git
+ * @{
+ */
+GIT_BEGIN_DECL
+
+/**
+ * The version string for libgit2. This string follows semantic
+ * versioning (v2) guidelines.
+ */
+#define LIBGIT2_VERSION "1.9.1"
+
+/** The major version number for this version of libgit2. */
+#define LIBGIT2_VERSION_MAJOR 1
+
+/** The minor version number for this version of libgit2. */
+#define LIBGIT2_VERSION_MINOR 9
+
+/** The revision ("teeny") version number for this version of libgit2. */
+#define LIBGIT2_VERSION_REVISION 1
+
+/** The Windows DLL patch number for this version of libgit2. */
+#define LIBGIT2_VERSION_PATCH 0
+
+/**
+ * The prerelease string for this version of libgit2. For development
+ * (nightly) builds, this will be "alpha". For prereleases, this will be
+ * a prerelease name like "beta" or "rc1". For final releases, this will
+ * be `NULL`.
+ */
+#define LIBGIT2_VERSION_PRERELEASE NULL
+
+/**
+ * The library ABI soversion for this version of libgit2. This should
+ * only be changed when the library has a breaking ABI change, and so
+ * may not reflect the library's API version number.
+ */
+#define LIBGIT2_SOVERSION "1.9"
+
+/**
+ * An integer value representing the libgit2 version number. For example,
+ * libgit2 1.6.3 is 1060300.
+ */
+#define LIBGIT2_VERSION_NUMBER ( \
+ (LIBGIT2_VERSION_MAJOR * 1000000) + \
+ (LIBGIT2_VERSION_MINOR * 10000) + \
+ (LIBGIT2_VERSION_REVISION * 100))
+
+/**
+ * Compare the libgit2 version against a given version. Evaluates to true
+ * if the given major, minor, and revision values are greater than or equal
+ * to the currently running libgit2 version. For example:
+ *
+ * #if LIBGIT2_VERSION_CHECK(1, 6, 3)
+ * # error libgit2 version is >= 1.6.3
+ * #endif
+ */
+#define LIBGIT2_VERSION_CHECK(major, minor, revision) \
+ (LIBGIT2_VERSION_NUMBER >= ((major)*1000000)+((minor)*10000)+((revision)*100))
+
+/** @} */
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/git2/worktree.h b/Clibgit2.xcframework/ios-arm64/Headers/git2/worktree.h
index 23084d8..fd37517 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/git2/worktree.h
+++ b/Clibgit2.xcframework/ios-arm64/Headers/git2/worktree.h
@@ -11,11 +11,12 @@
#include "buffer.h"
#include "types.h"
#include "strarray.h"
+#include "checkout.h"
/**
- * @file git2/worktrees.h
- * @brief Git worktree related functions
- * @defgroup git_commit Git worktree related functions
+ * @file git2/worktree.h
+ * @brief Additional working directories for a repository
+ * @defgroup git_commit Additional working directories for a repository
* @ingroup Git
* @{
*/
@@ -52,6 +53,7 @@ GIT_EXTERN(int) git_worktree_lookup(git_worktree **out, git_repository *repo, co
*
* @param out Out-pointer for the newly allocated worktree
* @param repo Repository to look up worktree for
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_worktree_open_from_repository(git_worktree **out, git_repository *repo);
@@ -84,12 +86,22 @@ GIT_EXTERN(int) git_worktree_validate(const git_worktree *wt);
typedef struct git_worktree_add_options {
unsigned int version;
- int lock; /**< lock newly created worktree */
- git_reference *ref; /**< reference to use for the new worktree HEAD */
+ int lock; /**< lock newly created worktree */
+ int checkout_existing; /**< allow checkout of existing branch matching worktree name */
+ git_reference *ref; /**< reference to use for the new worktree HEAD */
+
+ /**
+ * Options for the checkout.
+ */
+ git_checkout_options checkout_options;
} git_worktree_add_options;
+/** Current version for the `git_worktree_add_options` structure */
#define GIT_WORKTREE_ADD_OPTIONS_VERSION 1
-#define GIT_WORKTREE_ADD_OPTIONS_INIT {GIT_WORKTREE_ADD_OPTIONS_VERSION,0,NULL}
+
+/** Static constructor for `git_worktree_add_options` */
+#define GIT_WORKTREE_ADD_OPTIONS_INIT { GIT_WORKTREE_ADD_OPTIONS_VERSION, \
+ 0, 0, NULL, GIT_CHECKOUT_OPTIONS_INIT }
/**
* Initialize git_worktree_add_options structure
@@ -185,7 +197,7 @@ typedef enum {
/* Prune working tree even if it is locked */
GIT_WORKTREE_PRUNE_LOCKED = 1u << 1,
/* Prune checked out working tree */
- GIT_WORKTREE_PRUNE_WORKING_TREE = 1u << 2,
+ GIT_WORKTREE_PRUNE_WORKING_TREE = 1u << 2
} git_worktree_prune_t;
/**
@@ -202,7 +214,10 @@ typedef struct git_worktree_prune_options {
uint32_t flags;
} git_worktree_prune_options;
+/** Current version for the `git_worktree_prune_options` structure */
#define GIT_WORKTREE_PRUNE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_worktree_prune_options` */
#define GIT_WORKTREE_PRUNE_OPTIONS_INIT {GIT_WORKTREE_PRUNE_OPTIONS_VERSION,0}
/**
@@ -231,7 +246,13 @@ GIT_EXTERN(int) git_worktree_prune_options_init(
*
* If the worktree is not valid and not locked or if the above
* flags have been passed in, this function will return a
- * positive value.
+ * positive value. If the worktree is not prunable, an error
+ * message will be set (visible in `giterr_last`) with details about
+ * why.
+ *
+ * @param wt Worktree to check.
+ * @param opts The prunable options.
+ * @return 1 if the worktree is prunable, 0 otherwise, or an error code.
*/
GIT_EXTERN(int) git_worktree_is_prunable(git_worktree *wt,
git_worktree_prune_options *opts);
@@ -253,4 +274,5 @@ GIT_EXTERN(int) git_worktree_prune(git_worktree *wt,
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/libssh2.h b/Clibgit2.xcframework/ios-arm64/Headers/libssh2.h
new file mode 100644
index 0000000..f47858a
--- /dev/null
+++ b/Clibgit2.xcframework/ios-arm64/Headers/libssh2.h
@@ -0,0 +1,1516 @@
+/* Copyright (C) Sara Golemon
+ * Copyright (C) Daniel Stenberg
+ * Copyright (C) Simon Josefsson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
+ * that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * Neither the name of the copyright holder nor the names
+ * of any other contributors may be used to endorse or
+ * promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef LIBSSH2_H
+#define LIBSSH2_H 1
+
+#define LIBSSH2_COPYRIGHT "The libssh2 project and its contributors."
+
+/* We use underscore instead of dash when appending DEV in dev versions just
+ to make the BANNER define (used by src/session.c) be a valid SSH
+ banner. Release versions have no appended strings and may of course not
+ have dashes either. */
+#define LIBSSH2_VERSION "1.11.1"
+
+/* The numeric version number is also available "in parts" by using these
+ defines: */
+#define LIBSSH2_VERSION_MAJOR 1
+#define LIBSSH2_VERSION_MINOR 11
+#define LIBSSH2_VERSION_PATCH 1
+
+/* This is the numeric version of the libssh2 version number, meant for easier
+ parsing and comparisons by programs. The LIBSSH2_VERSION_NUM define will
+ always follow this syntax:
+
+ 0xXXYYZZ
+
+ Where XX, YY and ZZ are the main version, release and patch numbers in
+ hexadecimal (using 8 bits each). All three numbers are always represented
+ using two digits. 1.2 would appear as "0x010200" while version 9.11.7
+ appears as "0x090b07".
+
+ This 6-digit (24 bits) hexadecimal number does not show pre-release number,
+ and it is always a greater number in a more recent release. It makes
+ comparisons with greater than and less than work.
+*/
+#define LIBSSH2_VERSION_NUM 0x010b01
+
+/*
+ * This is the date and time when the full source package was created. The
+ * timestamp is not stored in the source code repo, as the timestamp is
+ * properly set in the tarballs by the maketgz script.
+ *
+ * The format of the date should follow this template:
+ *
+ * "Mon Feb 12 11:35:33 UTC 2007"
+ */
+#define LIBSSH2_TIMESTAMP "Wed Oct 16 08:03:21 UTC 2024"
+
+#ifndef RC_INVOKED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef _WIN32
+# include
+# include
+#endif
+
+#include
+#include
+#include
+#include
+
+/* Allow alternate API prefix from CFLAGS or calling app */
+#ifndef LIBSSH2_API
+# ifdef _WIN32
+# if defined(LIBSSH2_EXPORTS) || defined(_WINDLL)
+# ifdef LIBSSH2_LIBRARY
+# define LIBSSH2_API __declspec(dllexport)
+# else
+# define LIBSSH2_API __declspec(dllimport)
+# endif /* LIBSSH2_LIBRARY */
+# else
+# define LIBSSH2_API
+# endif
+# else /* !_WIN32 */
+# define LIBSSH2_API
+# endif /* _WIN32 */
+#endif /* LIBSSH2_API */
+
+#ifdef HAVE_SYS_UIO_H
+# include
+#endif
+
+#ifdef _MSC_VER
+typedef unsigned char uint8_t;
+typedef unsigned short int uint16_t;
+typedef unsigned int uint32_t;
+typedef __int32 int32_t;
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+typedef unsigned __int64 libssh2_uint64_t;
+typedef __int64 libssh2_int64_t;
+#if (!defined(HAVE_SSIZE_T) && !defined(ssize_t))
+typedef SSIZE_T ssize_t;
+#define HAVE_SSIZE_T
+#endif
+#else
+#include
+typedef unsigned long long libssh2_uint64_t;
+typedef long long libssh2_int64_t;
+#endif
+
+#ifdef _WIN32
+typedef SOCKET libssh2_socket_t;
+#define LIBSSH2_INVALID_SOCKET INVALID_SOCKET
+#define LIBSSH2_SOCKET_CLOSE(s) closesocket(s)
+#else /* !_WIN32 */
+typedef int libssh2_socket_t;
+#define LIBSSH2_INVALID_SOCKET -1
+#define LIBSSH2_SOCKET_CLOSE(s) close(s)
+#endif /* _WIN32 */
+
+/* Compile-time deprecation macros */
+#if !defined(LIBSSH2_DISABLE_DEPRECATION) && !defined(LIBSSH2_LIBRARY)
+# if defined(_MSC_VER)
+# if _MSC_VER >= 1400
+# define LIBSSH2_DEPRECATED(version, message) \
+ __declspec(deprecated("since libssh2 " # version ". " message))
+# elif _MSC_VER >= 1310
+# define LIBSSH2_DEPRECATED(version, message) \
+ __declspec(deprecated)
+# endif
+# elif defined(__GNUC__) && !defined(__INTEL_COMPILER)
+# if (defined(__clang__) && __clang_major__ >= 3) || \
+ (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
+# define LIBSSH2_DEPRECATED(version, message) \
+ __attribute__((deprecated("since libssh2 " # version ". " message)))
+# elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0)
+# define LIBSSH2_DEPRECATED(version, message) \
+ __attribute__((deprecated))
+# endif
+# elif defined(__SUNPRO_C) && __SUNPRO_C >= 0x5130
+# define LIBSSH2_DEPRECATED(version, message) \
+ __attribute__((deprecated))
+# endif
+#endif
+
+#ifndef LIBSSH2_DEPRECATED
+#define LIBSSH2_DEPRECATED(version, message)
+#endif
+
+/*
+ * Determine whether there is small or large file support on windows.
+ */
+
+#if defined(_MSC_VER) && !defined(_WIN32_WCE)
+# if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64)
+# define LIBSSH2_USE_WIN32_LARGE_FILES
+# else
+# define LIBSSH2_USE_WIN32_SMALL_FILES
+# endif
+#endif
+
+#if defined(__MINGW32__) && !defined(LIBSSH2_USE_WIN32_LARGE_FILES)
+# define LIBSSH2_USE_WIN32_LARGE_FILES
+#endif
+
+#if defined(__WATCOMC__) && !defined(LIBSSH2_USE_WIN32_LARGE_FILES)
+# define LIBSSH2_USE_WIN32_LARGE_FILES
+#endif
+
+#if defined(__POCC__)
+# undef LIBSSH2_USE_WIN32_LARGE_FILES
+#endif
+
+#if defined(_WIN32) && !defined(LIBSSH2_USE_WIN32_LARGE_FILES) && \
+ !defined(LIBSSH2_USE_WIN32_SMALL_FILES)
+# define LIBSSH2_USE_WIN32_SMALL_FILES
+#endif
+
+/*
+ * Large file (>2Gb) support using WIN32 functions.
+ */
+
+#ifdef LIBSSH2_USE_WIN32_LARGE_FILES
+# include
+# define LIBSSH2_STRUCT_STAT_SIZE_FORMAT "%I64d"
+typedef struct _stati64 libssh2_struct_stat;
+typedef __int64 libssh2_struct_stat_size;
+#endif
+
+/*
+ * Small file (<2Gb) support using WIN32 functions.
+ */
+
+#ifdef LIBSSH2_USE_WIN32_SMALL_FILES
+# ifndef _WIN32_WCE
+# define LIBSSH2_STRUCT_STAT_SIZE_FORMAT "%d"
+typedef struct _stat libssh2_struct_stat;
+typedef off_t libssh2_struct_stat_size;
+# endif
+#endif
+
+#ifndef LIBSSH2_STRUCT_STAT_SIZE_FORMAT
+# ifdef __VMS
+/* We have to roll our own format here because %z is a C99-ism we don't
+ have. */
+# if __USE_OFF64_T || __USING_STD_STAT
+# define LIBSSH2_STRUCT_STAT_SIZE_FORMAT "%Ld"
+# else
+# define LIBSSH2_STRUCT_STAT_SIZE_FORMAT "%d"
+# endif
+# else
+# define LIBSSH2_STRUCT_STAT_SIZE_FORMAT "%zd"
+# endif
+typedef struct stat libssh2_struct_stat;
+typedef off_t libssh2_struct_stat_size;
+#endif
+
+/* Part of every banner, user specified or not */
+#define LIBSSH2_SSH_BANNER "SSH-2.0-libssh2_" LIBSSH2_VERSION
+
+#define LIBSSH2_SSH_DEFAULT_BANNER LIBSSH2_SSH_BANNER
+#define LIBSSH2_SSH_DEFAULT_BANNER_WITH_CRLF LIBSSH2_SSH_DEFAULT_BANNER "\r\n"
+
+/* Defaults for pty requests */
+#define LIBSSH2_TERM_WIDTH 80
+#define LIBSSH2_TERM_HEIGHT 24
+#define LIBSSH2_TERM_WIDTH_PX 0
+#define LIBSSH2_TERM_HEIGHT_PX 0
+
+/* 1/4 second */
+#define LIBSSH2_SOCKET_POLL_UDELAY 250000
+/* 0.25 * 120 == 30 seconds */
+#define LIBSSH2_SOCKET_POLL_MAXLOOPS 120
+
+/* Maximum size to allow a payload to compress to, plays it safe by falling
+ short of spec limits */
+#define LIBSSH2_PACKET_MAXCOMP 32000
+
+/* Maximum size to allow a payload to deccompress to, plays it safe by
+ allowing more than spec requires */
+#define LIBSSH2_PACKET_MAXDECOMP 40000
+
+/* Maximum size for an inbound compressed payload, plays it safe by
+ overshooting spec limits */
+#define LIBSSH2_PACKET_MAXPAYLOAD 40000
+
+/* Malloc callbacks */
+#define LIBSSH2_ALLOC_FUNC(name) void *name(size_t count, void **abstract)
+#define LIBSSH2_REALLOC_FUNC(name) void *name(void *ptr, size_t count, \
+ void **abstract)
+#define LIBSSH2_FREE_FUNC(name) void name(void *ptr, void **abstract)
+
+typedef struct _LIBSSH2_USERAUTH_KBDINT_PROMPT
+{
+ unsigned char *text;
+ size_t length;
+ unsigned char echo;
+} LIBSSH2_USERAUTH_KBDINT_PROMPT;
+
+typedef struct _LIBSSH2_USERAUTH_KBDINT_RESPONSE
+{
+ char *text;
+ unsigned int length; /* FIXME: change type to size_t */
+} LIBSSH2_USERAUTH_KBDINT_RESPONSE;
+
+typedef struct _LIBSSH2_SK_SIG_INFO {
+ uint8_t flags;
+ uint32_t counter;
+ unsigned char *sig_r;
+ size_t sig_r_len;
+ unsigned char *sig_s;
+ size_t sig_s_len;
+} LIBSSH2_SK_SIG_INFO;
+
+/* 'publickey' authentication callback */
+#define LIBSSH2_USERAUTH_PUBLICKEY_SIGN_FUNC(name) \
+ int name(LIBSSH2_SESSION *session, unsigned char **sig, size_t *sig_len, \
+ const unsigned char *data, size_t data_len, void **abstract)
+
+/* 'keyboard-interactive' authentication callback */
+/* FIXME: name_len, instruction_len -> size_t, num_prompts -> unsigned int? */
+#define LIBSSH2_USERAUTH_KBDINT_RESPONSE_FUNC(name_) \
+ void name_(const char *name, int name_len, const char *instruction, \
+ int instruction_len, int num_prompts, \
+ const LIBSSH2_USERAUTH_KBDINT_PROMPT *prompts, \
+ LIBSSH2_USERAUTH_KBDINT_RESPONSE *responses, void **abstract)
+
+/* SK authentication callback */
+#define LIBSSH2_USERAUTH_SK_SIGN_FUNC(name) \
+ int name(LIBSSH2_SESSION *session, LIBSSH2_SK_SIG_INFO *sig_info, \
+ const unsigned char *data, size_t data_len, \
+ int algorithm, uint8_t flags, \
+ const char *application, const unsigned char *key_handle, \
+ size_t handle_len, \
+ void **abstract)
+
+/* Flags for SK authentication */
+#define LIBSSH2_SK_PRESENCE_REQUIRED 0x01
+#define LIBSSH2_SK_VERIFICATION_REQUIRED 0x04
+
+/* FIXME: update lengths to size_t (or ssize_t): */
+
+/* Callbacks for special SSH packets */
+#define LIBSSH2_IGNORE_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, const char *message, int message_len, \
+ void **abstract)
+
+#define LIBSSH2_DEBUG_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, int always_display, \
+ const char *message, int message_len, \
+ const char *language, int language_len, \
+ void **abstract)
+
+#define LIBSSH2_DISCONNECT_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, int reason, \
+ const char *message, int message_len, \
+ const char *language, int language_len, \
+ void **abstract)
+
+#define LIBSSH2_PASSWD_CHANGEREQ_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, char **newpw, int *newpw_len, \
+ void **abstract)
+
+#define LIBSSH2_MACERROR_FUNC(name) \
+ int name(LIBSSH2_SESSION *session, const char *packet, int packet_len, \
+ void **abstract)
+
+#define LIBSSH2_X11_OPEN_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, LIBSSH2_CHANNEL *channel, \
+ const char *shost, int sport, void **abstract)
+
+#define LIBSSH2_AUTHAGENT_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, LIBSSH2_CHANNEL *channel, \
+ void **abstract)
+
+#define LIBSSH2_ADD_IDENTITIES_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, void *buffer, \
+ const char *agent_path, void **abstract)
+
+#define LIBSSH2_AUTHAGENT_SIGN_FUNC(name) \
+ int name(LIBSSH2_SESSION* session, \
+ unsigned char *blob, unsigned int blen, \
+ const unsigned char *data, unsigned int dlen, \
+ unsigned char **signature, unsigned int *sigLen, \
+ const char *agentPath, \
+ void **abstract)
+
+#define LIBSSH2_CHANNEL_CLOSE_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, void **session_abstract, \
+ LIBSSH2_CHANNEL *channel, void **channel_abstract)
+
+/* I/O callbacks */
+#define LIBSSH2_RECV_FUNC(name) \
+ ssize_t name(libssh2_socket_t socket, \
+ void *buffer, size_t length, \
+ int flags, void **abstract)
+#define LIBSSH2_SEND_FUNC(name) \
+ ssize_t name(libssh2_socket_t socket, \
+ const void *buffer, size_t length, \
+ int flags, void **abstract)
+
+/* libssh2_session_callback_set() constants */
+#define LIBSSH2_CALLBACK_IGNORE 0
+#define LIBSSH2_CALLBACK_DEBUG 1
+#define LIBSSH2_CALLBACK_DISCONNECT 2
+#define LIBSSH2_CALLBACK_MACERROR 3
+#define LIBSSH2_CALLBACK_X11 4
+#define LIBSSH2_CALLBACK_SEND 5
+#define LIBSSH2_CALLBACK_RECV 6
+#define LIBSSH2_CALLBACK_AUTHAGENT 7
+#define LIBSSH2_CALLBACK_AUTHAGENT_IDENTITIES 8
+#define LIBSSH2_CALLBACK_AUTHAGENT_SIGN 9
+
+/* libssh2_session_method_pref() constants */
+#define LIBSSH2_METHOD_KEX 0
+#define LIBSSH2_METHOD_HOSTKEY 1
+#define LIBSSH2_METHOD_CRYPT_CS 2
+#define LIBSSH2_METHOD_CRYPT_SC 3
+#define LIBSSH2_METHOD_MAC_CS 4
+#define LIBSSH2_METHOD_MAC_SC 5
+#define LIBSSH2_METHOD_COMP_CS 6
+#define LIBSSH2_METHOD_COMP_SC 7
+#define LIBSSH2_METHOD_LANG_CS 8
+#define LIBSSH2_METHOD_LANG_SC 9
+#define LIBSSH2_METHOD_SIGN_ALGO 10
+
+/* flags */
+#define LIBSSH2_FLAG_SIGPIPE 1
+#define LIBSSH2_FLAG_COMPRESS 2
+#define LIBSSH2_FLAG_QUOTE_PATHS 3
+
+typedef struct _LIBSSH2_SESSION LIBSSH2_SESSION;
+typedef struct _LIBSSH2_CHANNEL LIBSSH2_CHANNEL;
+typedef struct _LIBSSH2_LISTENER LIBSSH2_LISTENER;
+typedef struct _LIBSSH2_KNOWNHOSTS LIBSSH2_KNOWNHOSTS;
+typedef struct _LIBSSH2_AGENT LIBSSH2_AGENT;
+
+/* SK signature callback */
+typedef struct _LIBSSH2_PRIVKEY_SK {
+ int algorithm;
+ uint8_t flags;
+ const char *application;
+ const unsigned char *key_handle;
+ size_t handle_len;
+ LIBSSH2_USERAUTH_SK_SIGN_FUNC((*sign_callback));
+ void **orig_abstract;
+} LIBSSH2_PRIVKEY_SK;
+
+int
+libssh2_sign_sk(LIBSSH2_SESSION *session,
+ unsigned char **sig,
+ size_t *sig_len,
+ const unsigned char *data,
+ size_t data_len,
+ void **abstract);
+
+typedef struct _LIBSSH2_POLLFD {
+ unsigned char type; /* LIBSSH2_POLLFD_* below */
+
+ union {
+ libssh2_socket_t socket; /* File descriptors -- examined with
+ system select() call */
+ LIBSSH2_CHANNEL *channel; /* Examined by checking internal state */
+ LIBSSH2_LISTENER *listener; /* Read polls only -- are inbound
+ connections waiting to be accepted? */
+ } fd;
+
+ unsigned long events; /* Requested Events */
+ unsigned long revents; /* Returned Events */
+} LIBSSH2_POLLFD;
+
+/* Poll FD Descriptor Types */
+#define LIBSSH2_POLLFD_SOCKET 1
+#define LIBSSH2_POLLFD_CHANNEL 2
+#define LIBSSH2_POLLFD_LISTENER 3
+
+/* Note: Win32 Doesn't actually have a poll() implementation, so some of these
+ values are faked with select() data */
+/* Poll FD events/revents -- Match sys/poll.h where possible */
+#define LIBSSH2_POLLFD_POLLIN 0x0001 /* Data available to be read or
+ connection available --
+ All */
+#define LIBSSH2_POLLFD_POLLPRI 0x0002 /* Priority data available to
+ be read -- Socket only */
+#define LIBSSH2_POLLFD_POLLEXT 0x0002 /* Extended data available to
+ be read -- Channel only */
+#define LIBSSH2_POLLFD_POLLOUT 0x0004 /* Can may be written --
+ Socket/Channel */
+/* revents only */
+#define LIBSSH2_POLLFD_POLLERR 0x0008 /* Error Condition -- Socket */
+#define LIBSSH2_POLLFD_POLLHUP 0x0010 /* HangUp/EOF -- Socket */
+#define LIBSSH2_POLLFD_SESSION_CLOSED 0x0010 /* Session Disconnect */
+#define LIBSSH2_POLLFD_POLLNVAL 0x0020 /* Invalid request -- Socket
+ Only */
+#define LIBSSH2_POLLFD_POLLEX 0x0040 /* Exception Condition --
+ Socket/Win32 */
+#define LIBSSH2_POLLFD_CHANNEL_CLOSED 0x0080 /* Channel Disconnect */
+#define LIBSSH2_POLLFD_LISTENER_CLOSED 0x0080 /* Listener Disconnect */
+
+#define HAVE_LIBSSH2_SESSION_BLOCK_DIRECTION
+/* Block Direction Types */
+#define LIBSSH2_SESSION_BLOCK_INBOUND 0x0001
+#define LIBSSH2_SESSION_BLOCK_OUTBOUND 0x0002
+
+/* Hash Types */
+#define LIBSSH2_HOSTKEY_HASH_MD5 1
+#define LIBSSH2_HOSTKEY_HASH_SHA1 2
+#define LIBSSH2_HOSTKEY_HASH_SHA256 3
+
+/* Hostkey Types */
+#define LIBSSH2_HOSTKEY_TYPE_UNKNOWN 0
+#define LIBSSH2_HOSTKEY_TYPE_RSA 1
+#define LIBSSH2_HOSTKEY_TYPE_DSS 2 /* deprecated */
+#define LIBSSH2_HOSTKEY_TYPE_ECDSA_256 3
+#define LIBSSH2_HOSTKEY_TYPE_ECDSA_384 4
+#define LIBSSH2_HOSTKEY_TYPE_ECDSA_521 5
+#define LIBSSH2_HOSTKEY_TYPE_ED25519 6
+
+/* Disconnect Codes (defined by SSH protocol) */
+#define SSH_DISCONNECT_HOST_NOT_ALLOWED_TO_CONNECT 1
+#define SSH_DISCONNECT_PROTOCOL_ERROR 2
+#define SSH_DISCONNECT_KEY_EXCHANGE_FAILED 3
+#define SSH_DISCONNECT_RESERVED 4
+#define SSH_DISCONNECT_MAC_ERROR 5
+#define SSH_DISCONNECT_COMPRESSION_ERROR 6
+#define SSH_DISCONNECT_SERVICE_NOT_AVAILABLE 7
+#define SSH_DISCONNECT_PROTOCOL_VERSION_NOT_SUPPORTED 8
+#define SSH_DISCONNECT_HOST_KEY_NOT_VERIFIABLE 9
+#define SSH_DISCONNECT_CONNECTION_LOST 10
+#define SSH_DISCONNECT_BY_APPLICATION 11
+#define SSH_DISCONNECT_TOO_MANY_CONNECTIONS 12
+#define SSH_DISCONNECT_AUTH_CANCELLED_BY_USER 13
+#define SSH_DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE 14
+#define SSH_DISCONNECT_ILLEGAL_USER_NAME 15
+
+/* Error Codes (defined by libssh2) */
+#define LIBSSH2_ERROR_NONE 0
+
+/* The library once used -1 as a generic error return value on numerous places
+ through the code, which subsequently was converted to
+ LIBSSH2_ERROR_SOCKET_NONE uses over time. As this is a generic error code,
+ the goal is to never ever return this code but instead make sure that a
+ more accurate and descriptive error code is used. */
+#define LIBSSH2_ERROR_SOCKET_NONE -1
+
+#define LIBSSH2_ERROR_BANNER_RECV -2
+#define LIBSSH2_ERROR_BANNER_SEND -3
+#define LIBSSH2_ERROR_INVALID_MAC -4
+#define LIBSSH2_ERROR_KEX_FAILURE -5
+#define LIBSSH2_ERROR_ALLOC -6
+#define LIBSSH2_ERROR_SOCKET_SEND -7
+#define LIBSSH2_ERROR_KEY_EXCHANGE_FAILURE -8
+#define LIBSSH2_ERROR_TIMEOUT -9
+#define LIBSSH2_ERROR_HOSTKEY_INIT -10
+#define LIBSSH2_ERROR_HOSTKEY_SIGN -11
+#define LIBSSH2_ERROR_DECRYPT -12
+#define LIBSSH2_ERROR_SOCKET_DISCONNECT -13
+#define LIBSSH2_ERROR_PROTO -14
+#define LIBSSH2_ERROR_PASSWORD_EXPIRED -15
+#define LIBSSH2_ERROR_FILE -16
+#define LIBSSH2_ERROR_METHOD_NONE -17
+#define LIBSSH2_ERROR_AUTHENTICATION_FAILED -18
+#define LIBSSH2_ERROR_PUBLICKEY_UNRECOGNIZED \
+ LIBSSH2_ERROR_AUTHENTICATION_FAILED
+#define LIBSSH2_ERROR_PUBLICKEY_UNVERIFIED -19
+#define LIBSSH2_ERROR_CHANNEL_OUTOFORDER -20
+#define LIBSSH2_ERROR_CHANNEL_FAILURE -21
+#define LIBSSH2_ERROR_CHANNEL_REQUEST_DENIED -22
+#define LIBSSH2_ERROR_CHANNEL_UNKNOWN -23
+#define LIBSSH2_ERROR_CHANNEL_WINDOW_EXCEEDED -24
+#define LIBSSH2_ERROR_CHANNEL_PACKET_EXCEEDED -25
+#define LIBSSH2_ERROR_CHANNEL_CLOSED -26
+#define LIBSSH2_ERROR_CHANNEL_EOF_SENT -27
+#define LIBSSH2_ERROR_SCP_PROTOCOL -28
+#define LIBSSH2_ERROR_ZLIB -29
+#define LIBSSH2_ERROR_SOCKET_TIMEOUT -30
+#define LIBSSH2_ERROR_SFTP_PROTOCOL -31
+#define LIBSSH2_ERROR_REQUEST_DENIED -32
+#define LIBSSH2_ERROR_METHOD_NOT_SUPPORTED -33
+#define LIBSSH2_ERROR_INVAL -34
+#define LIBSSH2_ERROR_INVALID_POLL_TYPE -35
+#define LIBSSH2_ERROR_PUBLICKEY_PROTOCOL -36
+#define LIBSSH2_ERROR_EAGAIN -37
+#define LIBSSH2_ERROR_BUFFER_TOO_SMALL -38
+#define LIBSSH2_ERROR_BAD_USE -39
+#define LIBSSH2_ERROR_COMPRESS -40
+#define LIBSSH2_ERROR_OUT_OF_BOUNDARY -41
+#define LIBSSH2_ERROR_AGENT_PROTOCOL -42
+#define LIBSSH2_ERROR_SOCKET_RECV -43
+#define LIBSSH2_ERROR_ENCRYPT -44
+#define LIBSSH2_ERROR_BAD_SOCKET -45
+#define LIBSSH2_ERROR_KNOWN_HOSTS -46
+#define LIBSSH2_ERROR_CHANNEL_WINDOW_FULL -47
+#define LIBSSH2_ERROR_KEYFILE_AUTH_FAILED -48
+#define LIBSSH2_ERROR_RANDGEN -49
+#define LIBSSH2_ERROR_MISSING_USERAUTH_BANNER -50
+#define LIBSSH2_ERROR_ALGO_UNSUPPORTED -51
+#define LIBSSH2_ERROR_MAC_FAILURE -52
+#define LIBSSH2_ERROR_HASH_INIT -53
+#define LIBSSH2_ERROR_HASH_CALC -54
+
+/* this is a define to provide the old (<= 1.2.7) name */
+#define LIBSSH2_ERROR_BANNER_NONE LIBSSH2_ERROR_BANNER_RECV
+
+/* Global API */
+#define LIBSSH2_INIT_NO_CRYPTO 0x0001
+
+/*
+ * libssh2_init()
+ *
+ * Initialize the libssh2 functions. This typically initialize the
+ * crypto library. It uses a global state, and is not thread safe --
+ * you must make sure this function is not called concurrently.
+ *
+ * Flags can be:
+ * 0: Normal initialize
+ * LIBSSH2_INIT_NO_CRYPTO: Do not initialize the crypto library (ie.
+ * OPENSSL_add_cipher_algoritms() for OpenSSL
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int libssh2_init(int flags);
+
+/*
+ * libssh2_exit()
+ *
+ * Exit the libssh2 functions and free's all memory used internal.
+ */
+LIBSSH2_API void libssh2_exit(void);
+
+/*
+ * libssh2_free()
+ *
+ * Deallocate memory allocated by earlier call to libssh2 functions.
+ */
+LIBSSH2_API void libssh2_free(LIBSSH2_SESSION *session, void *ptr);
+
+/*
+ * libssh2_session_supported_algs()
+ *
+ * Fills algs with a list of supported acryptographic algorithms. Returns a
+ * non-negative number (number of supported algorithms) on success or a
+ * negative number (an error code) on failure.
+ *
+ * NOTE: on success, algs must be deallocated (by calling libssh2_free) when
+ * not needed anymore
+ */
+LIBSSH2_API int libssh2_session_supported_algs(LIBSSH2_SESSION* session,
+ int method_type,
+ const char ***algs);
+
+/* Session API */
+LIBSSH2_API LIBSSH2_SESSION *
+libssh2_session_init_ex(LIBSSH2_ALLOC_FUNC((*my_alloc)),
+ LIBSSH2_FREE_FUNC((*my_free)),
+ LIBSSH2_REALLOC_FUNC((*my_realloc)), void *abstract);
+#define libssh2_session_init() libssh2_session_init_ex(NULL, NULL, NULL, NULL)
+
+LIBSSH2_API void **libssh2_session_abstract(LIBSSH2_SESSION *session);
+
+typedef void (libssh2_cb_generic)(void);
+
+LIBSSH2_API libssh2_cb_generic *
+libssh2_session_callback_set2(LIBSSH2_SESSION *session, int cbtype,
+ libssh2_cb_generic *callback);
+
+LIBSSH2_DEPRECATED(1.11.1, "Use libssh2_session_callback_set2()")
+LIBSSH2_API void *libssh2_session_callback_set(LIBSSH2_SESSION *session,
+ int cbtype, void *callback);
+LIBSSH2_API int libssh2_session_banner_set(LIBSSH2_SESSION *session,
+ const char *banner);
+#ifndef LIBSSH2_NO_DEPRECATED
+LIBSSH2_DEPRECATED(1.4.0, "Use libssh2_session_banner_set()")
+LIBSSH2_API int libssh2_banner_set(LIBSSH2_SESSION *session,
+ const char *banner);
+
+LIBSSH2_DEPRECATED(1.2.8, "Use libssh2_session_handshake()")
+LIBSSH2_API int libssh2_session_startup(LIBSSH2_SESSION *session, int sock);
+#endif
+LIBSSH2_API int libssh2_session_handshake(LIBSSH2_SESSION *session,
+ libssh2_socket_t sock);
+LIBSSH2_API int libssh2_session_disconnect_ex(LIBSSH2_SESSION *session,
+ int reason,
+ const char *description,
+ const char *lang);
+#define libssh2_session_disconnect(session, description) \
+ libssh2_session_disconnect_ex((session), SSH_DISCONNECT_BY_APPLICATION, \
+ (description), "")
+
+LIBSSH2_API int libssh2_session_free(LIBSSH2_SESSION *session);
+
+LIBSSH2_API const char *libssh2_hostkey_hash(LIBSSH2_SESSION *session,
+ int hash_type);
+
+LIBSSH2_API const char *libssh2_session_hostkey(LIBSSH2_SESSION *session,
+ size_t *len, int *type);
+
+LIBSSH2_API int libssh2_session_method_pref(LIBSSH2_SESSION *session,
+ int method_type,
+ const char *prefs);
+LIBSSH2_API const char *libssh2_session_methods(LIBSSH2_SESSION *session,
+ int method_type);
+LIBSSH2_API int libssh2_session_last_error(LIBSSH2_SESSION *session,
+ char **errmsg,
+ int *errmsg_len, int want_buf);
+LIBSSH2_API int libssh2_session_last_errno(LIBSSH2_SESSION *session);
+LIBSSH2_API int libssh2_session_set_last_error(LIBSSH2_SESSION* session,
+ int errcode,
+ const char *errmsg);
+LIBSSH2_API int libssh2_session_block_directions(LIBSSH2_SESSION *session);
+
+LIBSSH2_API int libssh2_session_flag(LIBSSH2_SESSION *session, int flag,
+ int value);
+LIBSSH2_API const char *libssh2_session_banner_get(LIBSSH2_SESSION *session);
+
+/* Userauth API */
+LIBSSH2_API char *libssh2_userauth_list(LIBSSH2_SESSION *session,
+ const char *username,
+ unsigned int username_len);
+LIBSSH2_API int libssh2_userauth_banner(LIBSSH2_SESSION *session,
+ char **banner);
+LIBSSH2_API int libssh2_userauth_authenticated(LIBSSH2_SESSION *session);
+
+LIBSSH2_API int
+libssh2_userauth_password_ex(LIBSSH2_SESSION *session,
+ const char *username,
+ unsigned int username_len,
+ const char *password,
+ unsigned int password_len,
+ LIBSSH2_PASSWD_CHANGEREQ_FUNC
+ ((*passwd_change_cb)));
+
+#define libssh2_userauth_password(session, username, password) \
+ libssh2_userauth_password_ex((session), (username), \
+ (unsigned int)strlen(username), \
+ (password), (unsigned int)strlen(password), \
+ NULL)
+
+LIBSSH2_API int
+libssh2_userauth_publickey_fromfile_ex(LIBSSH2_SESSION *session,
+ const char *username,
+ unsigned int username_len,
+ const char *publickey,
+ const char *privatekey,
+ const char *passphrase);
+
+#define libssh2_userauth_publickey_fromfile(session, username, publickey, \
+ privatekey, passphrase) \
+ libssh2_userauth_publickey_fromfile_ex((session), (username), \
+ (unsigned int)strlen(username), \
+ (publickey), \
+ (privatekey), (passphrase))
+
+LIBSSH2_API int
+libssh2_userauth_publickey(LIBSSH2_SESSION *session,
+ const char *username,
+ const unsigned char *pubkeydata,
+ size_t pubkeydata_len,
+ LIBSSH2_USERAUTH_PUBLICKEY_SIGN_FUNC
+ ((*sign_callback)),
+ void **abstract);
+
+LIBSSH2_API int
+libssh2_userauth_hostbased_fromfile_ex(LIBSSH2_SESSION *session,
+ const char *username,
+ unsigned int username_len,
+ const char *publickey,
+ const char *privatekey,
+ const char *passphrase,
+ const char *hostname,
+ unsigned int hostname_len,
+ const char *local_username,
+ unsigned int local_username_len);
+
+#define libssh2_userauth_hostbased_fromfile(session, username, publickey, \
+ privatekey, passphrase, hostname) \
+ libssh2_userauth_hostbased_fromfile_ex((session), (username), \
+ (unsigned int)strlen(username), \
+ (publickey), \
+ (privatekey), (passphrase), \
+ (hostname), \
+ (unsigned int)strlen(hostname), \
+ (username), \
+ (unsigned int)strlen(username))
+
+LIBSSH2_API int
+libssh2_userauth_publickey_frommemory(LIBSSH2_SESSION *session,
+ const char *username,
+ size_t username_len,
+ const char *publickeyfiledata,
+ size_t publickeyfiledata_len,
+ const char *privatekeyfiledata,
+ size_t privatekeyfiledata_len,
+ const char *passphrase);
+
+/*
+ * response_callback is provided with filled by library prompts array,
+ * but client must allocate and fill individual responses. Responses
+ * array is already allocated. Responses data will be freed by libssh2
+ * after callback return, but before subsequent callback invocation.
+ */
+LIBSSH2_API int
+libssh2_userauth_keyboard_interactive_ex(LIBSSH2_SESSION* session,
+ const char *username,
+ unsigned int username_len,
+ LIBSSH2_USERAUTH_KBDINT_RESPONSE_FUNC
+ ((*response_callback)));
+
+#define libssh2_userauth_keyboard_interactive(session, username, \
+ response_callback) \
+ libssh2_userauth_keyboard_interactive_ex((session), (username), \
+ (unsigned int)strlen(username), \
+ (response_callback))
+
+LIBSSH2_API int
+libssh2_userauth_publickey_sk(LIBSSH2_SESSION *session,
+ const char *username,
+ size_t username_len,
+ const unsigned char *pubkeydata,
+ size_t pubkeydata_len,
+ const char *privatekeydata,
+ size_t privatekeydata_len,
+ const char *passphrase,
+ LIBSSH2_USERAUTH_SK_SIGN_FUNC
+ ((*sign_callback)),
+ void **abstract);
+
+LIBSSH2_API int libssh2_poll(LIBSSH2_POLLFD *fds, unsigned int nfds,
+ long timeout);
+
+/* Channel API */
+#define LIBSSH2_CHANNEL_WINDOW_DEFAULT (2*1024*1024)
+#define LIBSSH2_CHANNEL_PACKET_DEFAULT 32768
+#define LIBSSH2_CHANNEL_MINADJUST 1024
+
+/* Extended Data Handling */
+#define LIBSSH2_CHANNEL_EXTENDED_DATA_NORMAL 0
+#define LIBSSH2_CHANNEL_EXTENDED_DATA_IGNORE 1
+#define LIBSSH2_CHANNEL_EXTENDED_DATA_MERGE 2
+
+#define SSH_EXTENDED_DATA_STDERR 1
+
+/* Returned by any function that would block during a read/write operation */
+#define LIBSSH2CHANNEL_EAGAIN LIBSSH2_ERROR_EAGAIN
+
+LIBSSH2_API LIBSSH2_CHANNEL *
+libssh2_channel_open_ex(LIBSSH2_SESSION *session, const char *channel_type,
+ unsigned int channel_type_len,
+ unsigned int window_size, unsigned int packet_size,
+ const char *message, unsigned int message_len);
+
+#define libssh2_channel_open_session(session) \
+ libssh2_channel_open_ex((session), "session", sizeof("session") - 1, \
+ LIBSSH2_CHANNEL_WINDOW_DEFAULT, \
+ LIBSSH2_CHANNEL_PACKET_DEFAULT, NULL, 0)
+
+LIBSSH2_API LIBSSH2_CHANNEL *
+libssh2_channel_direct_tcpip_ex(LIBSSH2_SESSION *session, const char *host,
+ int port, const char *shost, int sport);
+#define libssh2_channel_direct_tcpip(session, host, port) \
+ libssh2_channel_direct_tcpip_ex((session), (host), (port), "127.0.0.1", 22)
+
+LIBSSH2_API LIBSSH2_CHANNEL *
+libssh2_channel_direct_streamlocal_ex(LIBSSH2_SESSION * session,
+ const char *socket_path,
+ const char *shost, int sport);
+
+LIBSSH2_API LIBSSH2_LISTENER *
+libssh2_channel_forward_listen_ex(LIBSSH2_SESSION *session, const char *host,
+ int port, int *bound_port,
+ int queue_maxsize);
+#define libssh2_channel_forward_listen(session, port) \
+ libssh2_channel_forward_listen_ex((session), NULL, (port), NULL, 16)
+
+LIBSSH2_API int libssh2_channel_forward_cancel(LIBSSH2_LISTENER *listener);
+
+LIBSSH2_API LIBSSH2_CHANNEL *
+libssh2_channel_forward_accept(LIBSSH2_LISTENER *listener);
+
+LIBSSH2_API int libssh2_channel_setenv_ex(LIBSSH2_CHANNEL *channel,
+ const char *varname,
+ unsigned int varname_len,
+ const char *value,
+ unsigned int value_len);
+
+#define libssh2_channel_setenv(channel, varname, value) \
+ libssh2_channel_setenv_ex((channel), (varname), \
+ (unsigned int)strlen(varname), (value), \
+ (unsigned int)strlen(value))
+
+LIBSSH2_API int libssh2_channel_request_auth_agent(LIBSSH2_CHANNEL *channel);
+
+LIBSSH2_API int libssh2_channel_request_pty_ex(LIBSSH2_CHANNEL *channel,
+ const char *term,
+ unsigned int term_len,
+ const char *modes,
+ unsigned int modes_len,
+ int width, int height,
+ int width_px, int height_px);
+#define libssh2_channel_request_pty(channel, term) \
+ libssh2_channel_request_pty_ex((channel), (term), \
+ (unsigned int)strlen(term), \
+ NULL, 0, \
+ LIBSSH2_TERM_WIDTH, \
+ LIBSSH2_TERM_HEIGHT, \
+ LIBSSH2_TERM_WIDTH_PX, \
+ LIBSSH2_TERM_HEIGHT_PX)
+
+LIBSSH2_API int libssh2_channel_request_pty_size_ex(LIBSSH2_CHANNEL *channel,
+ int width, int height,
+ int width_px,
+ int height_px);
+#define libssh2_channel_request_pty_size(channel, width, height) \
+ libssh2_channel_request_pty_size_ex((channel), (width), (height), 0, 0)
+
+LIBSSH2_API int libssh2_channel_x11_req_ex(LIBSSH2_CHANNEL *channel,
+ int single_connection,
+ const char *auth_proto,
+ const char *auth_cookie,
+ int screen_number);
+#define libssh2_channel_x11_req(channel, screen_number) \
+ libssh2_channel_x11_req_ex((channel), 0, NULL, NULL, (screen_number))
+
+LIBSSH2_API int libssh2_channel_signal_ex(LIBSSH2_CHANNEL *channel,
+ const char *signame,
+ size_t signame_len);
+#define libssh2_channel_signal(channel, signame) \
+ libssh2_channel_signal_ex((channel), signame, strlen(signame))
+
+LIBSSH2_API int libssh2_channel_process_startup(LIBSSH2_CHANNEL *channel,
+ const char *request,
+ unsigned int request_len,
+ const char *message,
+ unsigned int message_len);
+#define libssh2_channel_shell(channel) \
+ libssh2_channel_process_startup((channel), "shell", sizeof("shell") - 1, \
+ NULL, 0)
+#define libssh2_channel_exec(channel, command) \
+ libssh2_channel_process_startup((channel), "exec", sizeof("exec") - 1, \
+ (command), (unsigned int)strlen(command))
+#define libssh2_channel_subsystem(channel, subsystem) \
+ libssh2_channel_process_startup((channel), "subsystem", \
+ sizeof("subsystem") - 1, (subsystem), \
+ (unsigned int)strlen(subsystem))
+
+LIBSSH2_API ssize_t libssh2_channel_read_ex(LIBSSH2_CHANNEL *channel,
+ int stream_id, char *buf,
+ size_t buflen);
+#define libssh2_channel_read(channel, buf, buflen) \
+ libssh2_channel_read_ex((channel), 0, \
+ (buf), (buflen))
+#define libssh2_channel_read_stderr(channel, buf, buflen) \
+ libssh2_channel_read_ex((channel), SSH_EXTENDED_DATA_STDERR, \
+ (buf), (buflen))
+
+LIBSSH2_API int libssh2_poll_channel_read(LIBSSH2_CHANNEL *channel,
+ int extended);
+
+LIBSSH2_API unsigned long
+libssh2_channel_window_read_ex(LIBSSH2_CHANNEL *channel,
+ unsigned long *read_avail,
+ unsigned long *window_size_initial);
+#define libssh2_channel_window_read(channel) \
+ libssh2_channel_window_read_ex((channel), NULL, NULL)
+
+#ifndef LIBSSH2_NO_DEPRECATED
+LIBSSH2_DEPRECATED(1.1.0, "Use libssh2_channel_receive_window_adjust2()")
+LIBSSH2_API unsigned long
+libssh2_channel_receive_window_adjust(LIBSSH2_CHANNEL *channel,
+ unsigned long adjustment,
+ unsigned char force);
+#endif
+LIBSSH2_API int
+libssh2_channel_receive_window_adjust2(LIBSSH2_CHANNEL *channel,
+ unsigned long adjustment,
+ unsigned char force,
+ unsigned int *storewindow);
+
+LIBSSH2_API ssize_t libssh2_channel_write_ex(LIBSSH2_CHANNEL *channel,
+ int stream_id, const char *buf,
+ size_t buflen);
+
+#define libssh2_channel_write(channel, buf, buflen) \
+ libssh2_channel_write_ex((channel), 0, \
+ (buf), (buflen))
+#define libssh2_channel_write_stderr(channel, buf, buflen) \
+ libssh2_channel_write_ex((channel), SSH_EXTENDED_DATA_STDERR, \
+ (buf), (buflen))
+
+LIBSSH2_API unsigned long
+libssh2_channel_window_write_ex(LIBSSH2_CHANNEL *channel,
+ unsigned long *window_size_initial);
+#define libssh2_channel_window_write(channel) \
+ libssh2_channel_window_write_ex((channel), NULL)
+
+LIBSSH2_API void libssh2_session_set_blocking(LIBSSH2_SESSION* session,
+ int blocking);
+LIBSSH2_API int libssh2_session_get_blocking(LIBSSH2_SESSION* session);
+
+LIBSSH2_API void libssh2_channel_set_blocking(LIBSSH2_CHANNEL *channel,
+ int blocking);
+
+LIBSSH2_API void libssh2_session_set_timeout(LIBSSH2_SESSION* session,
+ long timeout);
+LIBSSH2_API long libssh2_session_get_timeout(LIBSSH2_SESSION* session);
+
+LIBSSH2_API void libssh2_session_set_read_timeout(LIBSSH2_SESSION* session,
+ long timeout);
+LIBSSH2_API long libssh2_session_get_read_timeout(LIBSSH2_SESSION* session);
+
+#ifndef LIBSSH2_NO_DEPRECATED
+LIBSSH2_DEPRECATED(1.1.0, "libssh2_channel_handle_extended_data2()")
+LIBSSH2_API void libssh2_channel_handle_extended_data(LIBSSH2_CHANNEL *channel,
+ int ignore_mode);
+#endif
+LIBSSH2_API int libssh2_channel_handle_extended_data2(LIBSSH2_CHANNEL *channel,
+ int ignore_mode);
+
+#ifndef LIBSSH2_NO_DEPRECATED
+/* libssh2_channel_ignore_extended_data() is defined below for BC with version
+ * 0.1
+ *
+ * Future uses should use libssh2_channel_handle_extended_data() directly if
+ * LIBSSH2_CHANNEL_EXTENDED_DATA_MERGE is passed, extended data will be read
+ * (FIFO) from the standard data channel
+ */
+/* DEPRECATED since 0.3.0. Use libssh2_channel_handle_extended_data2(). */
+#define libssh2_channel_ignore_extended_data(channel, ignore) \
+ libssh2_channel_handle_extended_data((channel), (ignore) ? \
+ LIBSSH2_CHANNEL_EXTENDED_DATA_IGNORE : \
+ LIBSSH2_CHANNEL_EXTENDED_DATA_NORMAL)
+#endif
+
+#define LIBSSH2_CHANNEL_FLUSH_EXTENDED_DATA -1
+#define LIBSSH2_CHANNEL_FLUSH_ALL -2
+LIBSSH2_API int libssh2_channel_flush_ex(LIBSSH2_CHANNEL *channel,
+ int streamid);
+#define libssh2_channel_flush(channel) libssh2_channel_flush_ex((channel), 0)
+#define libssh2_channel_flush_stderr(channel) \
+ libssh2_channel_flush_ex((channel), SSH_EXTENDED_DATA_STDERR)
+
+LIBSSH2_API int libssh2_channel_get_exit_status(LIBSSH2_CHANNEL* channel);
+LIBSSH2_API int libssh2_channel_get_exit_signal(LIBSSH2_CHANNEL* channel,
+ char **exitsignal,
+ size_t *exitsignal_len,
+ char **errmsg,
+ size_t *errmsg_len,
+ char **langtag,
+ size_t *langtag_len);
+LIBSSH2_API int libssh2_channel_send_eof(LIBSSH2_CHANNEL *channel);
+LIBSSH2_API int libssh2_channel_eof(LIBSSH2_CHANNEL *channel);
+LIBSSH2_API int libssh2_channel_wait_eof(LIBSSH2_CHANNEL *channel);
+LIBSSH2_API int libssh2_channel_close(LIBSSH2_CHANNEL *channel);
+LIBSSH2_API int libssh2_channel_wait_closed(LIBSSH2_CHANNEL *channel);
+LIBSSH2_API int libssh2_channel_free(LIBSSH2_CHANNEL *channel);
+
+#ifndef LIBSSH2_NO_DEPRECATED
+LIBSSH2_DEPRECATED(1.7.0, "Use libssh2_scp_recv2()")
+LIBSSH2_API LIBSSH2_CHANNEL *libssh2_scp_recv(LIBSSH2_SESSION *session,
+ const char *path,
+ struct stat *sb);
+#endif
+/* Use libssh2_scp_recv2() for large (> 2GB) file support on windows */
+LIBSSH2_API LIBSSH2_CHANNEL *libssh2_scp_recv2(LIBSSH2_SESSION *session,
+ const char *path,
+ libssh2_struct_stat *sb);
+LIBSSH2_API LIBSSH2_CHANNEL *libssh2_scp_send_ex(LIBSSH2_SESSION *session,
+ const char *path, int mode,
+ size_t size, long mtime,
+ long atime);
+LIBSSH2_API LIBSSH2_CHANNEL *
+libssh2_scp_send64(LIBSSH2_SESSION *session, const char *path, int mode,
+ libssh2_int64_t size, time_t mtime, time_t atime);
+
+#define libssh2_scp_send(session, path, mode, size) \
+ libssh2_scp_send_ex((session), (path), (mode), (size), 0, 0)
+
+/* DEPRECATED */
+LIBSSH2_API int libssh2_base64_decode(LIBSSH2_SESSION *session, char **dest,
+ unsigned int *dest_len,
+ const char *src, unsigned int src_len);
+
+LIBSSH2_API
+const char *libssh2_version(int req_version_num);
+
+typedef enum {
+ libssh2_no_crypto = 0,
+ libssh2_openssl,
+ libssh2_gcrypt,
+ libssh2_mbedtls,
+ libssh2_wincng,
+ libssh2_os400qc3
+} libssh2_crypto_engine_t;
+
+LIBSSH2_API
+libssh2_crypto_engine_t libssh2_crypto_engine(void);
+
+#define HAVE_LIBSSH2_KNOWNHOST_API 0x010101 /* since 1.1.1 */
+#define HAVE_LIBSSH2_VERSION_API 0x010100 /* libssh2_version since 1.1 */
+#define HAVE_LIBSSH2_CRYPTOENGINE_API 0x011100 /* libssh2_crypto_engine
+ since 1.11 */
+
+struct libssh2_knownhost {
+ unsigned int magic; /* magic stored by the library */
+ void *node; /* handle to the internal representation of this host */
+ char *name; /* this is NULL if no plain text host name exists */
+ char *key; /* key in base64/printable format */
+ int typemask;
+};
+
+/*
+ * libssh2_knownhost_init()
+ *
+ * Init a collection of known hosts. Returns the pointer to a collection.
+ *
+ */
+LIBSSH2_API LIBSSH2_KNOWNHOSTS *
+libssh2_knownhost_init(LIBSSH2_SESSION *session);
+
+/*
+ * libssh2_knownhost_add()
+ *
+ * Add a host and its associated key to the collection of known hosts.
+ *
+ * The 'type' argument specifies on what format the given host and keys are:
+ *
+ * plain - ascii "hostname.domain.tld"
+ * sha1 - SHA1( ) base64-encoded!
+ * custom - another hash
+ *
+ * If 'sha1' is selected as type, the salt must be provided to the salt
+ * argument. This too base64 encoded.
+ *
+ * The SHA-1 hash is what OpenSSH can be told to use in known_hosts files. If
+ * a custom type is used, salt is ignored and you must provide the host
+ * pre-hashed when checking for it in the libssh2_knownhost_check() function.
+ *
+ * The keylen parameter may be omitted (zero) if the key is provided as a
+ * NULL-terminated base64-encoded string.
+ */
+
+/* host format (2 bits) */
+#define LIBSSH2_KNOWNHOST_TYPE_MASK 0xffff
+#define LIBSSH2_KNOWNHOST_TYPE_PLAIN 1
+#define LIBSSH2_KNOWNHOST_TYPE_SHA1 2 /* always base64 encoded */
+#define LIBSSH2_KNOWNHOST_TYPE_CUSTOM 3
+
+/* key format (2 bits) */
+#define LIBSSH2_KNOWNHOST_KEYENC_MASK (3<<16)
+#define LIBSSH2_KNOWNHOST_KEYENC_RAW (1<<16)
+#define LIBSSH2_KNOWNHOST_KEYENC_BASE64 (2<<16)
+
+/* type of key (4 bits) */
+#define LIBSSH2_KNOWNHOST_KEY_MASK (15<<18)
+#define LIBSSH2_KNOWNHOST_KEY_SHIFT 18
+#define LIBSSH2_KNOWNHOST_KEY_RSA1 (1<<18)
+#define LIBSSH2_KNOWNHOST_KEY_SSHRSA (2<<18)
+#define LIBSSH2_KNOWNHOST_KEY_SSHDSS (3<<18) /* deprecated */
+#define LIBSSH2_KNOWNHOST_KEY_ECDSA_256 (4<<18)
+#define LIBSSH2_KNOWNHOST_KEY_ECDSA_384 (5<<18)
+#define LIBSSH2_KNOWNHOST_KEY_ECDSA_521 (6<<18)
+#define LIBSSH2_KNOWNHOST_KEY_ED25519 (7<<18)
+#define LIBSSH2_KNOWNHOST_KEY_UNKNOWN (15<<18)
+
+LIBSSH2_API int
+libssh2_knownhost_add(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *host,
+ const char *salt,
+ const char *key, size_t keylen, int typemask,
+ struct libssh2_knownhost **store);
+
+/*
+ * libssh2_knownhost_addc()
+ *
+ * Add a host and its associated key to the collection of known hosts.
+ *
+ * Takes a comment argument that may be NULL. A NULL comment indicates
+ * there is no comment and the entry will end directly after the key
+ * when written out to a file. An empty string "" comment will indicate an
+ * empty comment which will cause a single space to be written after the key.
+ *
+ * The 'type' argument specifies on what format the given host and keys are:
+ *
+ * plain - ascii "hostname.domain.tld"
+ * sha1 - SHA1( ) base64-encoded!
+ * custom - another hash
+ *
+ * If 'sha1' is selected as type, the salt must be provided to the salt
+ * argument. This too base64 encoded.
+ *
+ * The SHA-1 hash is what OpenSSH can be told to use in known_hosts files.
+ * If a custom type is used, salt is ignored and you must provide the host
+ * pre-hashed when checking for it in the libssh2_knownhost_check() function.
+ *
+ * The keylen parameter may be omitted (zero) if the key is provided as a
+ * NULL-terminated base64-encoded string.
+ */
+
+LIBSSH2_API int
+libssh2_knownhost_addc(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *host,
+ const char *salt,
+ const char *key, size_t keylen,
+ const char *comment, size_t commentlen, int typemask,
+ struct libssh2_knownhost **store);
+
+/*
+ * libssh2_knownhost_check()
+ *
+ * Check a host and its associated key against the collection of known hosts.
+ *
+ * The type is the type/format of the given host name.
+ *
+ * plain - ascii "hostname.domain.tld"
+ * custom - prehashed base64 encoded. Note that this cannot use any salts.
+ *
+ *
+ * 'knownhost' may be set to NULL if you don't care about that info.
+ *
+ * Returns:
+ *
+ * LIBSSH2_KNOWNHOST_CHECK_* values, see below
+ *
+ */
+
+#define LIBSSH2_KNOWNHOST_CHECK_MATCH 0
+#define LIBSSH2_KNOWNHOST_CHECK_MISMATCH 1
+#define LIBSSH2_KNOWNHOST_CHECK_NOTFOUND 2
+#define LIBSSH2_KNOWNHOST_CHECK_FAILURE 3
+
+LIBSSH2_API int
+libssh2_knownhost_check(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *host, const char *key, size_t keylen,
+ int typemask,
+ struct libssh2_knownhost **knownhost);
+
+/* this function is identital to the above one, but also takes a port
+ argument that allows libssh2 to do a better check */
+LIBSSH2_API int
+libssh2_knownhost_checkp(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *host, int port,
+ const char *key, size_t keylen,
+ int typemask,
+ struct libssh2_knownhost **knownhost);
+
+/*
+ * libssh2_knownhost_del()
+ *
+ * Remove a host from the collection of known hosts. The 'entry' struct is
+ * retrieved by a call to libssh2_knownhost_check().
+ *
+ */
+LIBSSH2_API int
+libssh2_knownhost_del(LIBSSH2_KNOWNHOSTS *hosts,
+ struct libssh2_knownhost *entry);
+
+/*
+ * libssh2_knownhost_free()
+ *
+ * Free an entire collection of known hosts.
+ *
+ */
+LIBSSH2_API void
+libssh2_knownhost_free(LIBSSH2_KNOWNHOSTS *hosts);
+
+/*
+ * libssh2_knownhost_readline()
+ *
+ * Pass in a line of a file of 'type'. It makes libssh2 read this line.
+ *
+ * LIBSSH2_KNOWNHOST_FILE_OPENSSH is the only supported type.
+ *
+ */
+LIBSSH2_API int
+libssh2_knownhost_readline(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *line, size_t len, int type);
+
+/*
+ * libssh2_knownhost_readfile()
+ *
+ * Add hosts+key pairs from a given file.
+ *
+ * Returns a negative value for error or number of successfully added hosts.
+ *
+ * This implementation currently only knows one 'type' (openssh), all others
+ * are reserved for future use.
+ */
+
+#define LIBSSH2_KNOWNHOST_FILE_OPENSSH 1
+
+LIBSSH2_API int
+libssh2_knownhost_readfile(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *filename, int type);
+
+/*
+ * libssh2_knownhost_writeline()
+ *
+ * Ask libssh2 to convert a known host to an output line for storage.
+ *
+ * Note that this function returns LIBSSH2_ERROR_BUFFER_TOO_SMALL if the given
+ * output buffer is too small to hold the desired output.
+ *
+ * This implementation currently only knows one 'type' (openssh), all others
+ * are reserved for future use.
+ *
+ */
+LIBSSH2_API int
+libssh2_knownhost_writeline(LIBSSH2_KNOWNHOSTS *hosts,
+ struct libssh2_knownhost *known,
+ char *buffer, size_t buflen,
+ size_t *outlen, /* the amount of written data */
+ int type);
+
+/*
+ * libssh2_knownhost_writefile()
+ *
+ * Write hosts+key pairs to a given file.
+ *
+ * This implementation currently only knows one 'type' (openssh), all others
+ * are reserved for future use.
+ */
+
+LIBSSH2_API int
+libssh2_knownhost_writefile(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *filename, int type);
+
+/*
+ * libssh2_knownhost_get()
+ *
+ * Traverse the internal list of known hosts. Pass NULL to 'prev' to get
+ * the first one. Or pass a pointer to the previously returned one to get the
+ * next.
+ *
+ * Returns:
+ * 0 if a fine host was stored in 'store'
+ * 1 if end of hosts
+ * [negative] on errors
+ */
+LIBSSH2_API int
+libssh2_knownhost_get(LIBSSH2_KNOWNHOSTS *hosts,
+ struct libssh2_knownhost **store,
+ struct libssh2_knownhost *prev);
+
+#define HAVE_LIBSSH2_AGENT_API 0x010202 /* since 1.2.2 */
+
+struct libssh2_agent_publickey {
+ unsigned int magic; /* magic stored by the library */
+ void *node; /* handle to the internal representation of key */
+ unsigned char *blob; /* public key blob */
+ size_t blob_len; /* length of the public key blob */
+ char *comment; /* comment in printable format */
+};
+
+/*
+ * libssh2_agent_init()
+ *
+ * Init an ssh-agent handle. Returns the pointer to the handle.
+ *
+ */
+LIBSSH2_API LIBSSH2_AGENT *
+libssh2_agent_init(LIBSSH2_SESSION *session);
+
+/*
+ * libssh2_agent_connect()
+ *
+ * Connect to an ssh-agent.
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int
+libssh2_agent_connect(LIBSSH2_AGENT *agent);
+
+/*
+ * libssh2_agent_list_identities()
+ *
+ * Request an ssh-agent to list identities.
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int
+libssh2_agent_list_identities(LIBSSH2_AGENT *agent);
+
+/*
+ * libssh2_agent_get_identity()
+ *
+ * Traverse the internal list of public keys. Pass NULL to 'prev' to get
+ * the first one. Or pass a pointer to the previously returned one to get the
+ * next.
+ *
+ * Returns:
+ * 0 if a fine public key was stored in 'store'
+ * 1 if end of public keys
+ * [negative] on errors
+ */
+LIBSSH2_API int
+libssh2_agent_get_identity(LIBSSH2_AGENT *agent,
+ struct libssh2_agent_publickey **store,
+ struct libssh2_agent_publickey *prev);
+
+/*
+ * libssh2_agent_userauth()
+ *
+ * Do publickey user authentication with the help of ssh-agent.
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int
+libssh2_agent_userauth(LIBSSH2_AGENT *agent,
+ const char *username,
+ struct libssh2_agent_publickey *identity);
+
+/*
+ * libssh2_agent_sign()
+ *
+ * Sign a payload using a system-installed ssh-agent.
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int
+libssh2_agent_sign(LIBSSH2_AGENT *agent,
+ struct libssh2_agent_publickey *identity,
+ unsigned char **sig,
+ size_t *s_len,
+ const unsigned char *data,
+ size_t d_len,
+ const char *method,
+ unsigned int method_len);
+
+/*
+ * libssh2_agent_disconnect()
+ *
+ * Close a connection to an ssh-agent.
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int
+libssh2_agent_disconnect(LIBSSH2_AGENT *agent);
+
+/*
+ * libssh2_agent_free()
+ *
+ * Free an ssh-agent handle. This function also frees the internal
+ * collection of public keys.
+ */
+LIBSSH2_API void
+libssh2_agent_free(LIBSSH2_AGENT *agent);
+
+/*
+ * libssh2_agent_set_identity_path()
+ *
+ * Allows a custom agent identity socket path beyond SSH_AUTH_SOCK env
+ *
+ */
+LIBSSH2_API void
+libssh2_agent_set_identity_path(LIBSSH2_AGENT *agent,
+ const char *path);
+
+/*
+ * libssh2_agent_get_identity_path()
+ *
+ * Returns the custom agent identity socket path if set
+ *
+ */
+LIBSSH2_API const char *
+libssh2_agent_get_identity_path(LIBSSH2_AGENT *agent);
+
+/*
+ * libssh2_keepalive_config()
+ *
+ * Set how often keepalive messages should be sent. WANT_REPLY
+ * indicates whether the keepalive messages should request a response
+ * from the server. INTERVAL is number of seconds that can pass
+ * without any I/O, use 0 (the default) to disable keepalives. To
+ * avoid some busy-loop corner-cases, if you specify an interval of 1
+ * it will be treated as 2.
+ *
+ * Note that non-blocking applications are responsible for sending the
+ * keepalive messages using libssh2_keepalive_send().
+ */
+LIBSSH2_API void libssh2_keepalive_config(LIBSSH2_SESSION *session,
+ int want_reply,
+ unsigned int interval);
+
+/*
+ * libssh2_keepalive_send()
+ *
+ * Send a keepalive message if needed. SECONDS_TO_NEXT indicates how
+ * many seconds you can sleep after this call before you need to call
+ * it again. Returns 0 on success, or LIBSSH2_ERROR_SOCKET_SEND on
+ * I/O errors.
+ */
+LIBSSH2_API int libssh2_keepalive_send(LIBSSH2_SESSION *session,
+ int *seconds_to_next);
+
+/* NOTE NOTE NOTE
+ libssh2_trace() has no function in builds that aren't built with debug
+ enabled
+ */
+LIBSSH2_API int libssh2_trace(LIBSSH2_SESSION *session, int bitmask);
+#define LIBSSH2_TRACE_TRANS (1<<1)
+#define LIBSSH2_TRACE_KEX (1<<2)
+#define LIBSSH2_TRACE_AUTH (1<<3)
+#define LIBSSH2_TRACE_CONN (1<<4)
+#define LIBSSH2_TRACE_SCP (1<<5)
+#define LIBSSH2_TRACE_SFTP (1<<6)
+#define LIBSSH2_TRACE_ERROR (1<<7)
+#define LIBSSH2_TRACE_PUBLICKEY (1<<8)
+#define LIBSSH2_TRACE_SOCKET (1<<9)
+
+typedef void (*libssh2_trace_handler_func)(LIBSSH2_SESSION*,
+ void *,
+ const char *,
+ size_t);
+LIBSSH2_API int libssh2_trace_sethandler(LIBSSH2_SESSION *session,
+ void *context,
+ libssh2_trace_handler_func callback);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !RC_INVOKED */
+
+#endif /* LIBSSH2_H */
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/libssh2_publickey.h b/Clibgit2.xcframework/ios-arm64/Headers/libssh2_publickey.h
new file mode 100644
index 0000000..566acd6
--- /dev/null
+++ b/Clibgit2.xcframework/ios-arm64/Headers/libssh2_publickey.h
@@ -0,0 +1,128 @@
+/* Copyright (C) Sara Golemon
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
+ * that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * Neither the name of the copyright holder nor the names
+ * of any other contributors may be used to endorse or
+ * promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ */
+
+/* Note: This include file is only needed for using the
+ * publickey SUBSYSTEM which is not the same as publickey
+ * authentication. For authentication you only need libssh2.h
+ *
+ * For more information on the publickey subsystem,
+ * refer to IETF draft: secsh-publickey
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef LIBSSH2_PUBLICKEY_H
+#define LIBSSH2_PUBLICKEY_H 1
+
+#include "libssh2.h"
+
+typedef struct _LIBSSH2_PUBLICKEY LIBSSH2_PUBLICKEY;
+
+typedef struct _libssh2_publickey_attribute {
+ const char *name;
+ unsigned long name_len;
+ const char *value;
+ unsigned long value_len;
+ char mandatory;
+} libssh2_publickey_attribute;
+
+typedef struct _libssh2_publickey_list {
+ unsigned char *packet; /* For freeing */
+
+ const unsigned char *name;
+ unsigned long name_len;
+ const unsigned char *blob;
+ unsigned long blob_len;
+ unsigned long num_attrs;
+ libssh2_publickey_attribute *attrs; /* free me */
+} libssh2_publickey_list;
+
+/* Generally use the first macro here, but if both name and value are string
+ literals, you can use _fast() to take advantage of preprocessing */
+#define libssh2_publickey_attribute(name, value, mandatory) \
+ { (name), strlen(name), (value), strlen(value), (mandatory) },
+#define libssh2_publickey_attribute_fast(name, value, mandatory) \
+ { (name), sizeof(name) - 1, (value), sizeof(value) - 1, (mandatory) },
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Publickey Subsystem */
+LIBSSH2_API LIBSSH2_PUBLICKEY *
+libssh2_publickey_init(LIBSSH2_SESSION *session);
+
+LIBSSH2_API int
+libssh2_publickey_add_ex(LIBSSH2_PUBLICKEY *pkey,
+ const unsigned char *name,
+ unsigned long name_len,
+ const unsigned char *blob,
+ unsigned long blob_len, char overwrite,
+ unsigned long num_attrs,
+ const libssh2_publickey_attribute attrs[]);
+#define libssh2_publickey_add(pkey, name, blob, blob_len, overwrite, \
+ num_attrs, attrs) \
+ libssh2_publickey_add_ex((pkey), \
+ (name), strlen(name), \
+ (blob), (blob_len), \
+ (overwrite), (num_attrs), (attrs))
+
+LIBSSH2_API int libssh2_publickey_remove_ex(LIBSSH2_PUBLICKEY *pkey,
+ const unsigned char *name,
+ unsigned long name_len,
+ const unsigned char *blob,
+ unsigned long blob_len);
+#define libssh2_publickey_remove(pkey, name, blob, blob_len) \
+ libssh2_publickey_remove_ex((pkey), \
+ (name), strlen(name), \
+ (blob), (blob_len))
+
+LIBSSH2_API int
+libssh2_publickey_list_fetch(LIBSSH2_PUBLICKEY *pkey,
+ unsigned long *num_keys,
+ libssh2_publickey_list **pkey_list);
+LIBSSH2_API void
+libssh2_publickey_list_free(LIBSSH2_PUBLICKEY *pkey,
+ libssh2_publickey_list *pkey_list);
+
+LIBSSH2_API int libssh2_publickey_shutdown(LIBSSH2_PUBLICKEY *pkey);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* LIBSSH2_PUBLICKEY_H */
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/libssh2_sftp.h b/Clibgit2.xcframework/ios-arm64/Headers/libssh2_sftp.h
new file mode 100644
index 0000000..ab7b0af
--- /dev/null
+++ b/Clibgit2.xcframework/ios-arm64/Headers/libssh2_sftp.h
@@ -0,0 +1,382 @@
+/* Copyright (C) Sara Golemon
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
+ * that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * Neither the name of the copyright holder nor the names
+ * of any other contributors may be used to endorse or
+ * promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef LIBSSH2_SFTP_H
+#define LIBSSH2_SFTP_H 1
+
+#include "libssh2.h"
+
+#ifndef _WIN32
+#include
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Note: Version 6 was documented at the time of writing
+ * However it was marked as "DO NOT IMPLEMENT" due to pending changes
+ *
+ * Let's start with Version 3 (The version found in OpenSSH) and go from there
+ */
+#define LIBSSH2_SFTP_VERSION 3
+
+typedef struct _LIBSSH2_SFTP LIBSSH2_SFTP;
+typedef struct _LIBSSH2_SFTP_HANDLE LIBSSH2_SFTP_HANDLE;
+typedef struct _LIBSSH2_SFTP_ATTRIBUTES LIBSSH2_SFTP_ATTRIBUTES;
+typedef struct _LIBSSH2_SFTP_STATVFS LIBSSH2_SFTP_STATVFS;
+
+/* Flags for open_ex() */
+#define LIBSSH2_SFTP_OPENFILE 0
+#define LIBSSH2_SFTP_OPENDIR 1
+
+/* Flags for rename_ex() */
+#define LIBSSH2_SFTP_RENAME_OVERWRITE 0x00000001
+#define LIBSSH2_SFTP_RENAME_ATOMIC 0x00000002
+#define LIBSSH2_SFTP_RENAME_NATIVE 0x00000004
+
+/* Flags for stat_ex() */
+#define LIBSSH2_SFTP_STAT 0
+#define LIBSSH2_SFTP_LSTAT 1
+#define LIBSSH2_SFTP_SETSTAT 2
+
+/* Flags for symlink_ex() */
+#define LIBSSH2_SFTP_SYMLINK 0
+#define LIBSSH2_SFTP_READLINK 1
+#define LIBSSH2_SFTP_REALPATH 2
+
+/* Flags for sftp_mkdir() */
+#define LIBSSH2_SFTP_DEFAULT_MODE -1
+
+/* SFTP attribute flag bits */
+#define LIBSSH2_SFTP_ATTR_SIZE 0x00000001
+#define LIBSSH2_SFTP_ATTR_UIDGID 0x00000002
+#define LIBSSH2_SFTP_ATTR_PERMISSIONS 0x00000004
+#define LIBSSH2_SFTP_ATTR_ACMODTIME 0x00000008
+#define LIBSSH2_SFTP_ATTR_EXTENDED 0x80000000
+
+/* SFTP statvfs flag bits */
+#define LIBSSH2_SFTP_ST_RDONLY 0x00000001
+#define LIBSSH2_SFTP_ST_NOSUID 0x00000002
+
+struct _LIBSSH2_SFTP_ATTRIBUTES {
+ /* If flags & ATTR_* bit is set, then the value in this struct will be
+ * meaningful Otherwise it should be ignored
+ */
+ unsigned long flags;
+
+ libssh2_uint64_t filesize;
+ unsigned long uid, gid;
+ unsigned long permissions;
+ unsigned long atime, mtime;
+};
+
+struct _LIBSSH2_SFTP_STATVFS {
+ libssh2_uint64_t f_bsize; /* file system block size */
+ libssh2_uint64_t f_frsize; /* fragment size */
+ libssh2_uint64_t f_blocks; /* size of fs in f_frsize units */
+ libssh2_uint64_t f_bfree; /* # free blocks */
+ libssh2_uint64_t f_bavail; /* # free blocks for non-root */
+ libssh2_uint64_t f_files; /* # inodes */
+ libssh2_uint64_t f_ffree; /* # free inodes */
+ libssh2_uint64_t f_favail; /* # free inodes for non-root */
+ libssh2_uint64_t f_fsid; /* file system ID */
+ libssh2_uint64_t f_flag; /* mount flags */
+ libssh2_uint64_t f_namemax; /* maximum filename length */
+};
+
+/* SFTP filetypes */
+#define LIBSSH2_SFTP_TYPE_REGULAR 1
+#define LIBSSH2_SFTP_TYPE_DIRECTORY 2
+#define LIBSSH2_SFTP_TYPE_SYMLINK 3
+#define LIBSSH2_SFTP_TYPE_SPECIAL 4
+#define LIBSSH2_SFTP_TYPE_UNKNOWN 5
+#define LIBSSH2_SFTP_TYPE_SOCKET 6
+#define LIBSSH2_SFTP_TYPE_CHAR_DEVICE 7
+#define LIBSSH2_SFTP_TYPE_BLOCK_DEVICE 8
+#define LIBSSH2_SFTP_TYPE_FIFO 9
+
+/*
+ * Reproduce the POSIX file modes here for systems that are not POSIX
+ * compliant.
+ *
+ * These is used in "permissions" of "struct _LIBSSH2_SFTP_ATTRIBUTES"
+ */
+/* File type */
+#define LIBSSH2_SFTP_S_IFMT 0170000 /* type of file mask */
+#define LIBSSH2_SFTP_S_IFIFO 0010000 /* named pipe (fifo) */
+#define LIBSSH2_SFTP_S_IFCHR 0020000 /* character special */
+#define LIBSSH2_SFTP_S_IFDIR 0040000 /* directory */
+#define LIBSSH2_SFTP_S_IFBLK 0060000 /* block special */
+#define LIBSSH2_SFTP_S_IFREG 0100000 /* regular */
+#define LIBSSH2_SFTP_S_IFLNK 0120000 /* symbolic link */
+#define LIBSSH2_SFTP_S_IFSOCK 0140000 /* socket */
+
+/* File mode */
+/* Read, write, execute/search by owner */
+#define LIBSSH2_SFTP_S_IRWXU 0000700 /* RWX mask for owner */
+#define LIBSSH2_SFTP_S_IRUSR 0000400 /* R for owner */
+#define LIBSSH2_SFTP_S_IWUSR 0000200 /* W for owner */
+#define LIBSSH2_SFTP_S_IXUSR 0000100 /* X for owner */
+/* Read, write, execute/search by group */
+#define LIBSSH2_SFTP_S_IRWXG 0000070 /* RWX mask for group */
+#define LIBSSH2_SFTP_S_IRGRP 0000040 /* R for group */
+#define LIBSSH2_SFTP_S_IWGRP 0000020 /* W for group */
+#define LIBSSH2_SFTP_S_IXGRP 0000010 /* X for group */
+/* Read, write, execute/search by others */
+#define LIBSSH2_SFTP_S_IRWXO 0000007 /* RWX mask for other */
+#define LIBSSH2_SFTP_S_IROTH 0000004 /* R for other */
+#define LIBSSH2_SFTP_S_IWOTH 0000002 /* W for other */
+#define LIBSSH2_SFTP_S_IXOTH 0000001 /* X for other */
+
+/* macros to check for specific file types, added in 1.2.5 */
+#define LIBSSH2_SFTP_S_ISLNK(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFLNK)
+#define LIBSSH2_SFTP_S_ISREG(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFREG)
+#define LIBSSH2_SFTP_S_ISDIR(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFDIR)
+#define LIBSSH2_SFTP_S_ISCHR(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFCHR)
+#define LIBSSH2_SFTP_S_ISBLK(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFBLK)
+#define LIBSSH2_SFTP_S_ISFIFO(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFIFO)
+#define LIBSSH2_SFTP_S_ISSOCK(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFSOCK)
+
+/* SFTP File Transfer Flags -- (e.g. flags parameter to sftp_open())
+ * Danger will robinson... APPEND doesn't have any effect on OpenSSH servers */
+#define LIBSSH2_FXF_READ 0x00000001
+#define LIBSSH2_FXF_WRITE 0x00000002
+#define LIBSSH2_FXF_APPEND 0x00000004
+#define LIBSSH2_FXF_CREAT 0x00000008
+#define LIBSSH2_FXF_TRUNC 0x00000010
+#define LIBSSH2_FXF_EXCL 0x00000020
+
+/* SFTP Status Codes (returned by libssh2_sftp_last_error() ) */
+#define LIBSSH2_FX_OK 0UL
+#define LIBSSH2_FX_EOF 1UL
+#define LIBSSH2_FX_NO_SUCH_FILE 2UL
+#define LIBSSH2_FX_PERMISSION_DENIED 3UL
+#define LIBSSH2_FX_FAILURE 4UL
+#define LIBSSH2_FX_BAD_MESSAGE 5UL
+#define LIBSSH2_FX_NO_CONNECTION 6UL
+#define LIBSSH2_FX_CONNECTION_LOST 7UL
+#define LIBSSH2_FX_OP_UNSUPPORTED 8UL
+#define LIBSSH2_FX_INVALID_HANDLE 9UL
+#define LIBSSH2_FX_NO_SUCH_PATH 10UL
+#define LIBSSH2_FX_FILE_ALREADY_EXISTS 11UL
+#define LIBSSH2_FX_WRITE_PROTECT 12UL
+#define LIBSSH2_FX_NO_MEDIA 13UL
+#define LIBSSH2_FX_NO_SPACE_ON_FILESYSTEM 14UL
+#define LIBSSH2_FX_QUOTA_EXCEEDED 15UL
+#define LIBSSH2_FX_UNKNOWN_PRINCIPLE 16UL /* Initial mis-spelling */
+#define LIBSSH2_FX_UNKNOWN_PRINCIPAL 16UL
+#define LIBSSH2_FX_LOCK_CONFlICT 17UL /* Initial mis-spelling */
+#define LIBSSH2_FX_LOCK_CONFLICT 17UL
+#define LIBSSH2_FX_DIR_NOT_EMPTY 18UL
+#define LIBSSH2_FX_NOT_A_DIRECTORY 19UL
+#define LIBSSH2_FX_INVALID_FILENAME 20UL
+#define LIBSSH2_FX_LINK_LOOP 21UL
+
+/* Returned by any function that would block during a read/write operation */
+#define LIBSSH2SFTP_EAGAIN LIBSSH2_ERROR_EAGAIN
+
+/* SFTP API */
+LIBSSH2_API LIBSSH2_SFTP *libssh2_sftp_init(LIBSSH2_SESSION *session);
+LIBSSH2_API int libssh2_sftp_shutdown(LIBSSH2_SFTP *sftp);
+LIBSSH2_API unsigned long libssh2_sftp_last_error(LIBSSH2_SFTP *sftp);
+LIBSSH2_API LIBSSH2_CHANNEL *libssh2_sftp_get_channel(LIBSSH2_SFTP *sftp);
+
+/* File / Directory Ops */
+LIBSSH2_API LIBSSH2_SFTP_HANDLE *
+libssh2_sftp_open_ex(LIBSSH2_SFTP *sftp,
+ const char *filename,
+ unsigned int filename_len,
+ unsigned long flags,
+ long mode, int open_type);
+#define libssh2_sftp_open(sftp, filename, flags, mode) \
+ libssh2_sftp_open_ex((sftp), \
+ (filename), (unsigned int)strlen(filename), \
+ (flags), (mode), LIBSSH2_SFTP_OPENFILE)
+#define libssh2_sftp_opendir(sftp, path) \
+ libssh2_sftp_open_ex((sftp), \
+ (path), (unsigned int)strlen(path), \
+ 0, 0, LIBSSH2_SFTP_OPENDIR)
+LIBSSH2_API LIBSSH2_SFTP_HANDLE *
+libssh2_sftp_open_ex_r(LIBSSH2_SFTP *sftp,
+ const char *filename,
+ size_t filename_len,
+ unsigned long flags,
+ long mode, int open_type,
+ LIBSSH2_SFTP_ATTRIBUTES *attrs);
+#define libssh2_sftp_open_r(sftp, filename, flags, mode, attrs) \
+ libssh2_sftp_open_ex_r((sftp), (filename), strlen(filename), \
+ (flags), (mode), LIBSSH2_SFTP_OPENFILE, \
+ (attrs))
+
+LIBSSH2_API ssize_t libssh2_sftp_read(LIBSSH2_SFTP_HANDLE *handle,
+ char *buffer, size_t buffer_maxlen);
+
+LIBSSH2_API int libssh2_sftp_readdir_ex(LIBSSH2_SFTP_HANDLE *handle, \
+ char *buffer, size_t buffer_maxlen,
+ char *longentry,
+ size_t longentry_maxlen,
+ LIBSSH2_SFTP_ATTRIBUTES *attrs);
+#define libssh2_sftp_readdir(handle, buffer, buffer_maxlen, attrs) \
+ libssh2_sftp_readdir_ex((handle), (buffer), (buffer_maxlen), NULL, 0, \
+ (attrs))
+
+LIBSSH2_API ssize_t libssh2_sftp_write(LIBSSH2_SFTP_HANDLE *handle,
+ const char *buffer, size_t count);
+LIBSSH2_API int libssh2_sftp_fsync(LIBSSH2_SFTP_HANDLE *handle);
+
+LIBSSH2_API int libssh2_sftp_close_handle(LIBSSH2_SFTP_HANDLE *handle);
+#define libssh2_sftp_close(handle) libssh2_sftp_close_handle(handle)
+#define libssh2_sftp_closedir(handle) libssh2_sftp_close_handle(handle)
+
+LIBSSH2_API void libssh2_sftp_seek(LIBSSH2_SFTP_HANDLE *handle, size_t offset);
+LIBSSH2_API void libssh2_sftp_seek64(LIBSSH2_SFTP_HANDLE *handle,
+ libssh2_uint64_t offset);
+#define libssh2_sftp_rewind(handle) libssh2_sftp_seek64((handle), 0)
+
+LIBSSH2_API size_t libssh2_sftp_tell(LIBSSH2_SFTP_HANDLE *handle);
+LIBSSH2_API libssh2_uint64_t libssh2_sftp_tell64(LIBSSH2_SFTP_HANDLE *handle);
+
+LIBSSH2_API int libssh2_sftp_fstat_ex(LIBSSH2_SFTP_HANDLE *handle,
+ LIBSSH2_SFTP_ATTRIBUTES *attrs,
+ int setstat);
+#define libssh2_sftp_fstat(handle, attrs) \
+ libssh2_sftp_fstat_ex((handle), (attrs), 0)
+#define libssh2_sftp_fsetstat(handle, attrs) \
+ libssh2_sftp_fstat_ex((handle), (attrs), 1)
+
+/* Miscellaneous Ops */
+LIBSSH2_API int libssh2_sftp_rename_ex(LIBSSH2_SFTP *sftp,
+ const char *source_filename,
+ unsigned int srouce_filename_len,
+ const char *dest_filename,
+ unsigned int dest_filename_len,
+ long flags);
+#define libssh2_sftp_rename(sftp, sourcefile, destfile) \
+ libssh2_sftp_rename_ex((sftp), \
+ (sourcefile), (unsigned int)strlen(sourcefile), \
+ (destfile), (unsigned int)strlen(destfile), \
+ LIBSSH2_SFTP_RENAME_OVERWRITE | \
+ LIBSSH2_SFTP_RENAME_ATOMIC | \
+ LIBSSH2_SFTP_RENAME_NATIVE)
+
+LIBSSH2_API int libssh2_sftp_posix_rename_ex(LIBSSH2_SFTP *sftp,
+ const char *source_filename,
+ size_t srouce_filename_len,
+ const char *dest_filename,
+ size_t dest_filename_len);
+#define libssh2_sftp_posix_rename(sftp, sourcefile, destfile) \
+ libssh2_sftp_posix_rename_ex((sftp), (sourcefile), strlen(sourcefile), \
+ (destfile), strlen(destfile))
+
+LIBSSH2_API int libssh2_sftp_unlink_ex(LIBSSH2_SFTP *sftp,
+ const char *filename,
+ unsigned int filename_len);
+#define libssh2_sftp_unlink(sftp, filename) \
+ libssh2_sftp_unlink_ex((sftp), (filename), (unsigned int)strlen(filename))
+
+LIBSSH2_API int libssh2_sftp_fstatvfs(LIBSSH2_SFTP_HANDLE *handle,
+ LIBSSH2_SFTP_STATVFS *st);
+
+LIBSSH2_API int libssh2_sftp_statvfs(LIBSSH2_SFTP *sftp,
+ const char *path,
+ size_t path_len,
+ LIBSSH2_SFTP_STATVFS *st);
+
+LIBSSH2_API int libssh2_sftp_mkdir_ex(LIBSSH2_SFTP *sftp,
+ const char *path,
+ unsigned int path_len, long mode);
+#define libssh2_sftp_mkdir(sftp, path, mode) \
+ libssh2_sftp_mkdir_ex((sftp), (path), (unsigned int)strlen(path), (mode))
+
+LIBSSH2_API int libssh2_sftp_rmdir_ex(LIBSSH2_SFTP *sftp,
+ const char *path,
+ unsigned int path_len);
+#define libssh2_sftp_rmdir(sftp, path) \
+ libssh2_sftp_rmdir_ex((sftp), (path), (unsigned int)strlen(path))
+
+LIBSSH2_API int libssh2_sftp_stat_ex(LIBSSH2_SFTP *sftp,
+ const char *path,
+ unsigned int path_len,
+ int stat_type,
+ LIBSSH2_SFTP_ATTRIBUTES *attrs);
+#define libssh2_sftp_stat(sftp, path, attrs) \
+ libssh2_sftp_stat_ex((sftp), (path), (unsigned int)strlen(path), \
+ LIBSSH2_SFTP_STAT, (attrs))
+#define libssh2_sftp_lstat(sftp, path, attrs) \
+ libssh2_sftp_stat_ex((sftp), (path), (unsigned int)strlen(path), \
+ LIBSSH2_SFTP_LSTAT, (attrs))
+#define libssh2_sftp_setstat(sftp, path, attrs) \
+ libssh2_sftp_stat_ex((sftp), (path), (unsigned int)strlen(path), \
+ LIBSSH2_SFTP_SETSTAT, (attrs))
+
+LIBSSH2_API int libssh2_sftp_symlink_ex(LIBSSH2_SFTP *sftp,
+ const char *path,
+ unsigned int path_len,
+ char *target,
+ unsigned int target_len,
+ int link_type);
+#define libssh2_sftp_symlink(sftp, orig, linkpath) \
+ libssh2_sftp_symlink_ex((sftp), \
+ (orig), (unsigned int)strlen(orig), \
+ (linkpath), (unsigned int)strlen(linkpath), \
+ LIBSSH2_SFTP_SYMLINK)
+#define libssh2_sftp_readlink(sftp, path, target, maxlen) \
+ libssh2_sftp_symlink_ex((sftp), \
+ (path), (unsigned int)strlen(path), \
+ (target), (maxlen), \
+ LIBSSH2_SFTP_READLINK)
+#define libssh2_sftp_realpath(sftp, path, target, maxlen) \
+ libssh2_sftp_symlink_ex((sftp), \
+ (path), (unsigned int)strlen(path), \
+ (target), (maxlen), \
+ LIBSSH2_SFTP_REALPATH)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* LIBSSH2_SFTP_H */
diff --git a/Clibgit2.xcframework/ios-arm64/Headers/module.modulemap b/Clibgit2.xcframework/ios-arm64/Headers/module.modulemap
index fe5729d..3a9a9ba 100644
--- a/Clibgit2.xcframework/ios-arm64/Headers/module.modulemap
+++ b/Clibgit2.xcframework/ios-arm64/Headers/module.modulemap
@@ -28,4 +28,13 @@ module Clibgit2 {
export *
module * { export * }
}
+
+ // Expose libssh2 headers
+ explicit module libssh2 {
+ header "libssh2.h"
+ header "libssh2_sftp.h"
+ header "libssh2_publickey.h"
+
+ export *
+ }
}
diff --git a/Clibgit2.xcframework/ios-arm64/libgit2_all.a b/Clibgit2.xcframework/ios-arm64/libgit2_all.a
index c133b68..9e5cd47 100644
Binary files a/Clibgit2.xcframework/ios-arm64/libgit2_all.a and b/Clibgit2.xcframework/ios-arm64/libgit2_all.a differ
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2.h
index 2961cc3..3457e5f 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2.h
@@ -28,6 +28,7 @@
#include "git2/diff.h"
#include "git2/email.h"
#include "git2/errors.h"
+#include "git2/experimental.h"
#include "git2/filter.h"
#include "git2/global.h"
#include "git2/graph.h"
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/annotated_commit.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/annotated_commit.h
index 3b7103f..04f3b1c 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/annotated_commit.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/annotated_commit.h
@@ -13,9 +13,16 @@
/**
* @file git2/annotated_commit.h
- * @brief Git annotated commit routines
+ * @brief A commit and information about how it was looked up by the user.
* @defgroup git_annotated_commit Git annotated commit routines
* @ingroup Git
+ *
+ * An "annotated commit" is a commit that contains information about
+ * how the commit was resolved, which can be used for maintaining the
+ * user's "intent" through commands like merge and rebase. For example,
+ * if a user wants to "merge HEAD" then an annotated commit is used to
+ * both contain the HEAD commit _and_ the fact that it was resolved as
+ * the HEAD ref.
* @{
*/
GIT_BEGIN_DECL
@@ -25,7 +32,7 @@ GIT_BEGIN_DECL
* The resulting git_annotated_commit must be freed with
* `git_annotated_commit_free`.
*
- * @param out pointer to store the git_annotated_commit result in
+ * @param[out] out pointer to store the git_annotated_commit result in
* @param repo repository that contains the given reference
* @param ref reference to use to lookup the git_annotated_commit
* @return 0 on success or error code
@@ -40,7 +47,7 @@ GIT_EXTERN(int) git_annotated_commit_from_ref(
* The resulting git_annotated_commit must be freed with
* `git_annotated_commit_free`.
*
- * @param out pointer to store the git_annotated_commit result in
+ * @param[out] out pointer to store the git_annotated_commit result in
* @param repo repository that contains the given commit
* @param branch_name name of the (remote) branch
* @param remote_url url of the remote
@@ -67,7 +74,7 @@ GIT_EXTERN(int) git_annotated_commit_from_fetchhead(
* most specific function (eg `git_annotated_commit_from_ref`)
* instead of this one when that data is known.
*
- * @param out pointer to store the git_annotated_commit result in
+ * @param[out] out pointer to store the git_annotated_commit result in
* @param repo repository that contains the given commit
* @param id the commit object id to lookup
* @return 0 on success or error code
@@ -84,7 +91,7 @@ GIT_EXTERN(int) git_annotated_commit_lookup(
* http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for
* information on the syntax accepted.
*
- * @param out pointer to store the git_annotated_commit result in
+ * @param[out] out pointer to store the git_annotated_commit result in
* @param repo repository that contains the given commit
* @param revspec the extended sha syntax string to use to lookup the commit
* @return 0 on success or error code
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/apply.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/apply.h
index bc637df..7ab939d 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/apply.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/apply.h
@@ -14,9 +14,12 @@
/**
* @file git2/apply.h
- * @brief Git patch application routines
+ * @brief Apply patches to the working directory or index
* @defgroup git_apply Git patch application routines
* @ingroup Git
+ *
+ * Mechanisms to apply a patch to the index, the working directory,
+ * or both.
* @{
*/
GIT_BEGIN_DECL
@@ -32,6 +35,8 @@ GIT_BEGIN_DECL
*
* @param delta The delta to be applied
* @param payload User-specified payload
+ * @return 0 if the delta is applied, < 0 if the apply process will be aborted
+ * or > 0 if the delta will not be applied.
*/
typedef int GIT_CALLBACK(git_apply_delta_cb)(
const git_diff_delta *delta,
@@ -48,27 +53,44 @@ typedef int GIT_CALLBACK(git_apply_delta_cb)(
*
* @param hunk The hunk to be applied
* @param payload User-specified payload
+ * @return 0 if the hunk is applied, < 0 if the apply process will be aborted
+ * or > 0 if the hunk will not be applied.
*/
typedef int GIT_CALLBACK(git_apply_hunk_cb)(
const git_diff_hunk *hunk,
void *payload);
-/** Flags controlling the behavior of git_apply */
+/**
+ * Flags controlling the behavior of `git_apply`.
+ *
+ * When the callback:
+ * - returns < 0, the apply process will be aborted.
+ * - returns > 0, the hunk will not be applied, but the apply process
+ * continues
+ * - returns 0, the hunk is applied, and the apply process continues.
+ */
typedef enum {
/**
* Don't actually make changes, just test that the patch applies.
* This is the equivalent of `git apply --check`.
*/
- GIT_APPLY_CHECK = (1 << 0),
+ GIT_APPLY_CHECK = (1 << 0)
} git_apply_flags_t;
/**
- * Apply options structure
+ * Apply options structure.
+ *
+ * When the callback:
+ * - returns < 0, the apply process will be aborted.
+ * - returns > 0, the hunk will not be applied, but the apply process
+ * continues
+ * - returns 0, the hunk is applied, and the apply process continues.
*
* Initialize with `GIT_APPLY_OPTIONS_INIT`. Alternatively, you can
* use `git_apply_options_init`.
*
- * @see git_apply_to_tree, git_apply
+ * @see git_apply_to_tree
+ * @see git_apply
*/
typedef struct {
unsigned int version; /**< The version */
@@ -79,16 +101,29 @@ typedef struct {
/** When applying a patch, callback that will be made per hunk. */
git_apply_hunk_cb hunk_cb;
- /** Payload passed to both delta_cb & hunk_cb. */
+ /** Payload passed to both `delta_cb` & `hunk_cb`. */
void *payload;
- /** Bitmask of git_apply_flags_t */
+ /** Bitmask of `git_apply_flags_t` */
unsigned int flags;
} git_apply_options;
+/** Current version for the `git_apply_options` structure */
#define GIT_APPLY_OPTIONS_VERSION 1
+
+/** Static constructor for `git_apply_options` */
#define GIT_APPLY_OPTIONS_INIT {GIT_APPLY_OPTIONS_VERSION}
+/**
+ * Initialize git_apply_options structure
+ *
+ * Initialize a `git_apply_options` with default values. Equivalent to creating
+ * an instance with GIT_APPLY_OPTIONS_INIT.
+ *
+ * @param opts The `git_apply_options` struct to initialize.
+ * @param version The struct version; pass `GIT_APPLY_OPTIONS_VERSION`
+ * @return 0 on success or -1 on failure.
+ */
GIT_EXTERN(int) git_apply_options_init(git_apply_options *opts, unsigned int version);
/**
@@ -127,7 +162,7 @@ typedef enum {
* Apply the patch to both the working directory and the index.
* This is the equivalent of `git apply --index`.
*/
- GIT_APPLY_LOCATION_BOTH = 2,
+ GIT_APPLY_LOCATION_BOTH = 2
} git_apply_location_t;
/**
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/attr.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/attr.h
index 3891a0c..e5216fe 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/attr.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/attr.h
@@ -12,9 +12,13 @@
/**
* @file git2/attr.h
- * @brief Git attribute management routines
+ * @brief Attribute management routines
* @defgroup git_attr Git attribute management routines
* @ingroup Git
+ *
+ * Attributes specify additional information about how git should
+ * handle particular paths - for example, they may indicate whether
+ * a particular filter is applied, like LFS or line ending conversions.
* @{
*/
GIT_BEGIN_DECL
@@ -83,7 +87,7 @@ typedef enum {
GIT_ATTR_VALUE_UNSPECIFIED = 0, /**< The attribute has been left unspecified */
GIT_ATTR_VALUE_TRUE, /**< The attribute has been set */
GIT_ATTR_VALUE_FALSE, /**< The attribute has been unset */
- GIT_ATTR_VALUE_STRING, /**< This attribute has a value */
+ GIT_ATTR_VALUE_STRING /**< This attribute has a value */
} git_attr_value_t;
/**
@@ -114,16 +118,18 @@ GIT_EXTERN(git_attr_value_t) git_attr_value(const char *attr);
* use index only for creating archives or for a bare repo (if an
* index has been specified for the bare repo).
*/
+
+/** Examine attribute in working directory, then index */
#define GIT_ATTR_CHECK_FILE_THEN_INDEX 0
+/** Examine attribute in index, then working directory */
#define GIT_ATTR_CHECK_INDEX_THEN_FILE 1
-#define GIT_ATTR_CHECK_INDEX_ONLY 2
+/** Examine attributes only in the index */
+#define GIT_ATTR_CHECK_INDEX_ONLY 2
/**
* Check attribute flags: controlling extended attribute behavior.
*
* Normally, attribute checks include looking in the /etc (or system
- * equivalent) directory for a `gitattributes` file. Passing this
- * flag will cause attribute checks to ignore that file.
* equivalent) directory for a `gitattributes` file. Passing the
* `GIT_ATTR_CHECK_NO_SYSTEM` flag will cause attribute checks to
* ignore that file.
@@ -134,8 +140,12 @@ GIT_EXTERN(git_attr_value_t) git_attr_value(const char *attr);
* Passing the `GIT_ATTR_CHECK_INCLUDE_COMMIT` flag will use attributes
* from a `.gitattributes` file in a specific commit.
*/
+
+/** Ignore system attributes */
#define GIT_ATTR_CHECK_NO_SYSTEM (1 << 2)
+/** Honor `.gitattributes` in the HEAD revision */
#define GIT_ATTR_CHECK_INCLUDE_HEAD (1 << 3)
+/** Honor `.gitattributes` in a specific commit */
#define GIT_ATTR_CHECK_INCLUDE_COMMIT (1 << 4)
/**
@@ -160,7 +170,10 @@ typedef struct {
git_oid attr_commit_id;
} git_attr_options;
+/** Current version for the `git_attr_options` structure */
#define GIT_ATTR_OPTIONS_VERSION 1
+
+/** Static constructor for `git_attr_options` */
#define GIT_ATTR_OPTIONS_INIT {GIT_ATTR_OPTIONS_VERSION}
/**
@@ -177,6 +190,7 @@ typedef struct {
* not have to exist, but if it does not, then it will be
* treated as a plain file (not a directory).
* @param name The name of the attribute to look up.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_attr_get(
const char **value_out,
@@ -199,6 +213,7 @@ GIT_EXTERN(int) git_attr_get(
* not have to exist, but if it does not, then it will be
* treated as a plain file (not a directory).
* @param name The name of the attribute to look up.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_attr_get_ext(
const char **value_out,
@@ -235,6 +250,7 @@ GIT_EXTERN(int) git_attr_get_ext(
* it will be treated as a plain file (i.e. not a directory).
* @param num_attr The number of attributes being looked up
* @param names An array of num_attr strings containing attribute names.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_attr_get_many(
const char **values_out,
@@ -259,6 +275,7 @@ GIT_EXTERN(int) git_attr_get_many(
* it will be treated as a plain file (i.e. not a directory).
* @param num_attr The number of attributes being looked up
* @param names An array of num_attr strings containing attribute names.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_attr_get_many_ext(
const char **values_out,
@@ -344,11 +361,16 @@ GIT_EXTERN(int) git_attr_cache_flush(
* Add a macro definition.
*
* Macros will automatically be loaded from the top level `.gitattributes`
- * file of the repository (plus the build-in "binary" macro). This
+ * file of the repository (plus the built-in "binary" macro). This
* function allows you to add others. For example, to add the default
* macro, you would call:
*
* git_attr_add_macro(repo, "binary", "-diff -crlf");
+ *
+ * @param repo The repository to add the macro in.
+ * @param name The name of the macro.
+ * @param values The value for the macro.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_attr_add_macro(
git_repository *repo,
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/blame.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/blame.h
index d193ce1..f3e6692 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/blame.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/blame.h
@@ -13,9 +13,14 @@
/**
* @file git2/blame.h
- * @brief Git blame routines
+ * @brief Specify a file's most recent changes per-line
* @defgroup git_blame Git blame routines
* @ingroup Git
+ *
+ * Producing a "blame" (or "annotated history") decorates individual
+ * lines in a file with the commit that introduced that particular line
+ * of changes. This can be useful to indicate when and why a particular
+ * change was made.
* @{
*/
GIT_BEGIN_DECL
@@ -73,7 +78,7 @@ typedef enum {
GIT_BLAME_USE_MAILMAP = (1<<5),
/** Ignore whitespace differences */
- GIT_BLAME_IGNORE_WHITESPACE = (1<<6),
+ GIT_BLAME_IGNORE_WHITESPACE = (1<<6)
} git_blame_flag_t;
/**
@@ -87,7 +92,7 @@ typedef struct git_blame_options {
unsigned int version;
/** A combination of `git_blame_flag_t` */
- uint32_t flags;
+ unsigned int flags;
/**
* The lower bound on the number of alphanumeric characters that
@@ -122,7 +127,10 @@ typedef struct git_blame_options {
size_t max_line;
} git_blame_options;
+/** Current version for the `git_blame_options` structure */
#define GIT_BLAME_OPTIONS_VERSION 1
+
+/** Static constructor for `git_blame_options` */
#define GIT_BLAME_OPTIONS_INIT {GIT_BLAME_OPTIONS_VERSION}
/**
@@ -165,6 +173,13 @@ typedef struct git_blame_hunk {
*/
git_signature *final_signature;
+ /**
+ * The committer of `final_commit_id`. If `GIT_BLAME_USE_MAILMAP` has
+ * been specified, it will contain the canonical real name and email
+ * address.
+ */
+ git_signature *final_committer;
+
/**
* The OID of the commit where this hunk was found.
* This will usually be the same as `final_commit_id`, except when
@@ -190,6 +205,18 @@ typedef struct git_blame_hunk {
*/
git_signature *orig_signature;
+ /**
+ * The committer of `orig_commit_id`. If `GIT_BLAME_USE_MAILMAP` has
+ * been specified, it will contain the canonical real name and email
+ * address.
+ */
+ git_signature *orig_committer;
+
+ /*
+ * The summary of the commit.
+ */
+ const char *summary;
+
/**
* The 1 iff the hunk has been tracked to a boundary commit (the root,
* or the commit specified in git_blame_options.oldest_commit)
@@ -197,13 +224,75 @@ typedef struct git_blame_hunk {
char boundary;
} git_blame_hunk;
+/**
+ * Structure that represents a line in a blamed file.
+ */
+typedef struct git_blame_line {
+ const char *ptr;
+ size_t len;
+} git_blame_line;
/** Opaque structure to hold blame results */
typedef struct git_blame git_blame;
+/**
+ * Gets the number of lines that exist in the blame structure.
+ *
+ * @param blame The blame structure to query.
+ * @return The number of line.
+ */
+GIT_EXTERN(size_t) git_blame_linecount(git_blame *blame);
+
/**
* Gets the number of hunks that exist in the blame structure.
+ *
+ * @param blame The blame structure to query.
+ * @return The number of hunks.
*/
+GIT_EXTERN(size_t) git_blame_hunkcount(git_blame *blame);
+
+/**
+ * Gets the blame hunk at the given index.
+ *
+ * @param blame the blame structure to query
+ * @param index index of the hunk to retrieve
+ * @return the hunk at the given index, or NULL on error
+ */
+GIT_EXTERN(const git_blame_hunk *) git_blame_hunk_byindex(
+ git_blame *blame,
+ size_t index);
+
+/**
+ * Gets the hunk that relates to the given line number in the newest
+ * commit.
+ *
+ * @param blame the blame structure to query
+ * @param lineno the (1-based) line number to find a hunk for
+ * @return the hunk that contains the given line, or NULL on error
+ */
+GIT_EXTERN(const git_blame_hunk *) git_blame_hunk_byline(
+ git_blame *blame,
+ size_t lineno);
+
+/**
+ * Gets the information about the line in the blame.
+ *
+ * @param blame the blame structure to query
+ * @param idx the (1-based) line number
+ * @return the blamed line, or NULL on error
+ */
+GIT_EXTERN(const git_blame_line *) git_blame_line_byindex(
+ git_blame *blame,
+ size_t idx);
+
+#ifndef GIT_DEPRECATE_HARD
+/**
+ * Gets the number of hunks that exist in the blame structure.
+ *
+ * @param blame The blame structure to query.
+ * @return The number of hunks.
+ */
+
GIT_EXTERN(uint32_t) git_blame_get_hunk_count(git_blame *blame);
/**
@@ -213,9 +302,9 @@ GIT_EXTERN(uint32_t) git_blame_get_hunk_count(git_blame *blame);
* @param index index of the hunk to retrieve
* @return the hunk at the given index, or NULL on error
*/
-GIT_EXTERN(const git_blame_hunk*) git_blame_get_hunk_byindex(
- git_blame *blame,
- uint32_t index);
+GIT_EXTERN(const git_blame_hunk *) git_blame_get_hunk_byindex(
+ git_blame *blame,
+ uint32_t index);
/**
* Gets the hunk that relates to the given line number in the newest commit.
@@ -224,39 +313,58 @@ GIT_EXTERN(const git_blame_hunk*) git_blame_get_hunk_byindex(
* @param lineno the (1-based) line number to find a hunk for
* @return the hunk that contains the given line, or NULL on error
*/
-GIT_EXTERN(const git_blame_hunk*) git_blame_get_hunk_byline(
- git_blame *blame,
- size_t lineno);
+GIT_EXTERN(const git_blame_hunk *) git_blame_get_hunk_byline(
+ git_blame *blame,
+ size_t lineno);
+#endif
/**
- * Get the blame for a single file.
+ * Get the blame for a single file in the repository.
*
* @param out pointer that will receive the blame object
* @param repo repository whose history is to be walked
* @param path path to file to consider
- * @param options options for the blame operation. If NULL, this is treated as
- * though GIT_BLAME_OPTIONS_INIT were passed.
- * @return 0 on success, or an error code. (use git_error_last for information
- * about the error.)
+ * @param options options for the blame operation or NULL
+ * @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_blame_file(
- git_blame **out,
- git_repository *repo,
- const char *path,
- git_blame_options *options);
+ git_blame **out,
+ git_repository *repo,
+ const char *path,
+ git_blame_options *options);
+/**
+ * Get the blame for a single file in the repository, using the specified
+ * buffer contents as the uncommitted changes of the file (the working
+ * directory contents).
+ *
+ * @param out pointer that will receive the blame object
+ * @param repo repository whose history is to be walked
+ * @param path path to file to consider
+ * @param contents the uncommitted changes
+ * @param contents_len the length of the changes buffer
+ * @param options options for the blame operation or NULL
+ * @return 0 on success, or an error code
+ */
+GIT_EXTERN(int) git_blame_file_from_buffer(
+ git_blame **out,
+ git_repository *repo,
+ const char *path,
+ const char *contents,
+ size_t contents_len,
+ git_blame_options *options);
/**
- * Get blame data for a file that has been modified in memory. The `reference`
- * parameter is a pre-calculated blame for the in-odb history of the file. This
- * means that once a file blame is completed (which can be expensive), updating
- * the buffer blame is very fast.
+ * Get blame data for a file that has been modified in memory. The `blame`
+ * parameter is a pre-calculated blame for the in-odb history of the file.
+ * This means that once a file blame is completed (which can be expensive),
+ * updating the buffer blame is very fast.
*
- * Lines that differ between the buffer and the committed version are marked as
- * having a zero OID for their final_commit_id.
+ * Lines that differ between the buffer and the committed version are
+ * marked as having a zero OID for their final_commit_id.
*
* @param out pointer that will receive the resulting blame data
- * @param reference cached blame from the history of the file (usually the output
+ * @param base cached blame from the history of the file (usually the output
* from git_blame_file)
* @param buffer the (possibly) modified contents of the file
* @param buffer_len number of valid bytes in the buffer
@@ -264,10 +372,10 @@ GIT_EXTERN(int) git_blame_file(
* about the error)
*/
GIT_EXTERN(int) git_blame_buffer(
- git_blame **out,
- git_blame *reference,
- const char *buffer,
- size_t buffer_len);
+ git_blame **out,
+ git_blame *base,
+ const char *buffer,
+ size_t buffer_len);
/**
* Free memory allocated by git_blame_file or git_blame_buffer.
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/blob.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/blob.h
index 8fc7391..0ed1685 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/blob.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/blob.h
@@ -15,9 +15,13 @@
/**
* @file git2/blob.h
- * @brief Git blob load and write routines
+ * @brief A blob represents a file in a git repository.
* @defgroup git_blob Git blob load and write routines
* @ingroup Git
+ *
+ * A blob represents a file in a git repository. This is the raw data
+ * as it is stored in the repository itself. Blobs may be "filtered"
+ * to produce the on-disk content.
* @{
*/
GIT_BEGIN_DECL
@@ -25,12 +29,15 @@ GIT_BEGIN_DECL
/**
* Lookup a blob object from a repository.
*
- * @param blob pointer to the looked up blob
+ * @param[out] blob pointer to the looked up blob
* @param repo the repo to use when locating the blob.
* @param id identity of the blob to locate.
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_blob_lookup(git_blob **blob, git_repository *repo, const git_oid *id);
+GIT_EXTERN(int) git_blob_lookup(
+ git_blob **blob,
+ git_repository *repo,
+ const git_oid *id);
/**
* Lookup a blob object from a repository,
@@ -38,7 +45,7 @@ GIT_EXTERN(int) git_blob_lookup(git_blob **blob, git_repository *repo, const git
*
* @see git_object_lookup_prefix
*
- * @param blob pointer to the looked up blob
+ * @param[out] blob pointer to the looked up blob
* @param repo the repo to use when locating the blob.
* @param id identity of the blob to locate.
* @param len the length of the short identifier
@@ -84,7 +91,7 @@ GIT_EXTERN(git_repository *) git_blob_owner(const git_blob *blob);
* time.
*
* @param blob pointer to the blob
- * @return the pointer, or NULL on error
+ * @return @type `unsigned char *` the pointer, or NULL on error
*/
GIT_EXTERN(const void *) git_blob_rawcontent(const git_blob *blob);
@@ -92,12 +99,14 @@ GIT_EXTERN(const void *) git_blob_rawcontent(const git_blob *blob);
* Get the size in bytes of the contents of a blob
*
* @param blob pointer to the blob
- * @return size on bytes
+ * @return size in bytes
*/
GIT_EXTERN(git_object_size_t) git_blob_rawsize(const git_blob *blob);
/**
* Flags to control the functionality of `git_blob_filter`.
+ *
+ * @flags
*/
typedef enum {
/** When set, filters will not be applied to binary files. */
@@ -119,7 +128,7 @@ typedef enum {
* When set, filters will be loaded from a `.gitattributes` file
* in the specified commit.
*/
- GIT_BLOB_FILTER_ATTRIBUTES_FROM_COMMIT = (1 << 3),
+ GIT_BLOB_FILTER_ATTRIBUTES_FROM_COMMIT = (1 << 3)
} git_blob_filter_flag_t;
/**
@@ -128,16 +137,34 @@ typedef enum {
* Initialize with `GIT_BLOB_FILTER_OPTIONS_INIT`. Alternatively, you can
* use `git_blob_filter_options_init`.
*
+ * @options[version] GIT_BLOB_FILTER_OPTIONS_VERSION
+ * @options[init_macro] GIT_BLOB_FILTER_OPTIONS_INIT
+ * @options[init_function] git_blob_filter_options_init
*/
typedef struct {
+ /** Version number of the options structure. */
int version;
- /** Flags to control the filtering process, see `git_blob_filter_flag_t` above */
+ /**
+ * Flags to control the filtering process, see `git_blob_filter_flag_t` above.
+ *
+ * @type[flags] git_blob_filter_flag_t
+ */
uint32_t flags;
#ifdef GIT_DEPRECATE_HARD
+ /**
+ * Unused and reserved for ABI compatibility.
+ *
+ * @deprecated this value should not be set
+ */
void *reserved;
#else
+ /**
+ * This value is unused and reserved for API compatibility.
+ *
+ * @deprecated this value should not be set
+ */
git_oid *commit_id;
#endif
@@ -148,8 +175,18 @@ typedef struct {
git_oid attr_commit_id;
} git_blob_filter_options;
+/**
+ * The current version number for the `git_blob_filter_options` structure ABI.
+ */
#define GIT_BLOB_FILTER_OPTIONS_VERSION 1
-#define GIT_BLOB_FILTER_OPTIONS_INIT {GIT_BLOB_FILTER_OPTIONS_VERSION, GIT_BLOB_FILTER_CHECK_FOR_BINARY}
+
+/**
+ * The default values for `git_blob_filter_options`.
+ */
+#define GIT_BLOB_FILTER_OPTIONS_INIT { \
+ GIT_BLOB_FILTER_OPTIONS_VERSION, \
+ GIT_BLOB_FILTER_CHECK_FOR_BINARY \
+ }
/**
* Initialize git_blob_filter_options structure
@@ -158,10 +195,12 @@ typedef struct {
* to creating an instance with `GIT_BLOB_FILTER_OPTIONS_INIT`.
*
* @param opts The `git_blob_filter_options` struct to initialize.
- * @param version The struct version; pass `GIT_BLOB_FILTER_OPTIONS_VERSION`.
+ * @param version The struct version; pass GIT_BLOB_FILTER_OPTIONS_VERSION
* @return Zero on success; -1 on failure.
*/
-GIT_EXTERN(int) git_blob_filter_options_init(git_blob_filter_options *opts, unsigned int version);
+GIT_EXTERN(int) git_blob_filter_options_init(
+ git_blob_filter_options *opts,
+ unsigned int version);
/**
* Get a buffer with the filtered content of a blob.
@@ -171,7 +210,7 @@ GIT_EXTERN(int) git_blob_filter_options_init(git_blob_filter_options *opts, unsi
* CRLF filtering or other types of changes depending on the file
* attributes set for the blob and the content detected in it.
*
- * The output is written into a `git_buf` which the caller must free
+ * The output is written into a `git_buf` which the caller must dispose
* when done (via `git_buf_dispose`).
*
* If no filters need to be applied, then the `out` buffer will just
@@ -183,7 +222,7 @@ GIT_EXTERN(int) git_blob_filter_options_init(git_blob_filter_options *opts, unsi
* @param blob Pointer to the blob
* @param as_path Path used for file attribute lookups, etc.
* @param opts Options to use for filtering the blob
- * @return 0 on success or an error code
+ * @return @type[enum] git_error_code 0 on success or an error code
*/
GIT_EXTERN(int) git_blob_filter(
git_buf *out,
@@ -192,10 +231,10 @@ GIT_EXTERN(int) git_blob_filter(
git_blob_filter_options *opts);
/**
- * Read a file from the working folder of a repository
- * and write it to the Object Database as a loose blob
+ * Read a file from the working folder of a repository and write it
+ * to the object database.
*
- * @param id return the id of the written blob
+ * @param[out] id return the id of the written blob
* @param repo repository where the blob will be written.
* this repository cannot be bare
* @param relative_path file from which the blob will be created,
@@ -205,19 +244,23 @@ GIT_EXTERN(int) git_blob_filter(
GIT_EXTERN(int) git_blob_create_from_workdir(git_oid *id, git_repository *repo, const char *relative_path);
/**
- * Read a file from the filesystem and write its content
- * to the Object Database as a loose blob
+ * Read a file from the filesystem (not necessarily inside the
+ * working folder of the repository) and write it to the object
+ * database.
*
- * @param id return the id of the written blob
+ * @param[out] id return the id of the written blob
* @param repo repository where the blob will be written.
* this repository can be bare or not
* @param path file from which the blob will be created
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_blob_create_from_disk(git_oid *id, git_repository *repo, const char *path);
+GIT_EXTERN(int) git_blob_create_from_disk(
+ git_oid *id,
+ git_repository *repo,
+ const char *path);
/**
- * Create a stream to write a new blob into the object db
+ * Create a stream to write a new blob into the object database.
*
* This function may need to buffer the data on disk and will in
* general not be the right choice if you know the size of the data
@@ -234,7 +277,7 @@ GIT_EXTERN(int) git_blob_create_from_disk(git_oid *id, git_repository *repo, con
* what git filters should be applied to the object before it is written
* to the object database.
*
- * @param out the stream into which to write
+ * @param[out] out the stream into which to write
* @param repo Repository where the blob will be written.
* This repository can be bare or not.
* @param hintpath If not NULL, will be used to select data filters
@@ -247,11 +290,11 @@ GIT_EXTERN(int) git_blob_create_from_stream(
const char *hintpath);
/**
- * Close the stream and write the blob to the object db
+ * Close the stream and finalize writing the blob to the object database.
*
* The stream will be closed and freed.
*
- * @param out the id of the new blob
+ * @param[out] out the id of the new blob
* @param stream the stream to close
* @return 0 or an error code
*/
@@ -260,9 +303,9 @@ GIT_EXTERN(int) git_blob_create_from_stream_commit(
git_writestream *stream);
/**
- * Write an in-memory buffer to the ODB as a blob
+ * Write an in-memory buffer to the object database as a blob.
*
- * @param id return the id of the written blob
+ * @param[out] id return the id of the written blob
* @param repo repository where the blob will be written
* @param buffer data to be written into the blob
* @param len length of the data
@@ -272,24 +315,37 @@ GIT_EXTERN(int) git_blob_create_from_buffer(
git_oid *id, git_repository *repo, const void *buffer, size_t len);
/**
- * Determine if the blob content is most certainly binary or not.
+ * Determine if the blob content is most likely binary or not.
*
* The heuristic used to guess if a file is binary is taken from core git:
* Searching for NUL bytes and looking for a reasonable ratio of printable
* to non-printable characters among the first 8000 bytes.
*
* @param blob The blob which content should be analyzed
- * @return 1 if the content of the blob is detected
+ * @return @type bool 1 if the content of the blob is detected
* as binary; 0 otherwise.
*/
GIT_EXTERN(int) git_blob_is_binary(const git_blob *blob);
+/**
+ * Determine if the given content is most certainly binary or not;
+ * this is the same mechanism used by `git_blob_is_binary` but only
+ * looking at raw data.
+ *
+ * @param data The blob data which content should be analyzed
+ * @param len The length of the data
+ * @return 1 if the content of the blob is detected
+ * as binary; 0 otherwise.
+ */
+GIT_EXTERN(int) git_blob_data_is_binary(const char *data, size_t len);
+
/**
* Create an in-memory copy of a blob. The copy must be explicitly
* free'd or it will leak.
*
- * @param out Pointer to store the copy of the object
+ * @param[out] out Pointer to store the copy of the object
* @param source Original object to copy
+ * @return 0.
*/
GIT_EXTERN(int) git_blob_dup(git_blob **out, git_blob *source);
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/branch.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/branch.h
index 24ea7f7..56d737d 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/branch.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/branch.h
@@ -13,9 +13,15 @@
/**
* @file git2/branch.h
- * @brief Git branch parsing routines
+ * @brief Branch creation and handling
* @defgroup git_branch Git branch management
* @ingroup Git
+ *
+ * A branch is a specific type of reference, at any particular time,
+ * a git working directory typically is said to have a branch "checked out",
+ * meaning that commits that are created will be made "on" a branch.
+ * This occurs by updating the branch reference to point to the new
+ * commit. The checked out branch is indicated by the `HEAD` meta-ref.
* @{
*/
GIT_BEGIN_DECL
@@ -33,16 +39,13 @@ GIT_BEGIN_DECL
* See `git_tag_create()` for rules about valid names.
*
* @param out Pointer where to store the underlying reference.
- *
+ * @param repo the repository to create the branch in.
* @param branch_name Name for the branch; this name is
- * validated for consistency. It should also not conflict with
- * an already existing branch name.
- *
+ * validated for consistency. It should also not conflict with
+ * an already existing branch name.
* @param target Commit to which this branch should point. This object
- * must belong to the given `repo`.
- *
+ * must belong to the given `repo`.
* @param force Overwrite existing branch.
- *
* @return 0, GIT_EINVALIDSPEC or an error code.
* A proper reference is written in the refs/heads namespace
* pointing to the provided target commit.
@@ -61,15 +64,21 @@ GIT_EXTERN(int) git_branch_create(
* commit, which lets you specify which extended sha syntax string was
* specified by a user, allowing for more exact reflog messages.
*
- * See the documentation for `git_branch_create()`.
- *
- * @see git_branch_create
+ * @param ref_out Pointer where to store the underlying reference.
+ * @param repo the repository to create the branch in.
+ * @param branch_name Name for the branch; this name is
+ * validated for consistency. It should also not conflict with
+ * an already existing branch name.
+ * @param target Annotated commit to which this branch should point. This
+ * object must belong to the given `repo`.
+ * @param force Overwrite existing branch.
+ * @return 0, GIT_EINVALIDSPEC or an error code.
*/
GIT_EXTERN(int) git_branch_create_from_annotated(
git_reference **ref_out,
- git_repository *repository,
+ git_repository *repo,
const char *branch_name,
- const git_annotated_commit *commit,
+ const git_annotated_commit *target,
int force);
/**
@@ -127,8 +136,8 @@ GIT_EXTERN(void) git_branch_iterator_free(git_branch_iterator *iter);
* See `git_tag_create()` for rules about valid names.
*
* Note that if the move succeeds, the old reference object will not
- + be valid anymore, and should be freed immediately by the user using
- + `git_reference_free()`.
+ * be valid anymore, and should be freed immediately by the user using
+ * `git_reference_free()`.
*
* @param out New reference object for the updated name.
*
@@ -220,7 +229,7 @@ GIT_EXTERN(int) git_branch_upstream(
* @param branch the branch to configure
* @param branch_name remote-tracking or local branch to set as upstream.
*
- * @return 0 on success; GIT_ENOTFOUND if there's no branch named `branch_name`
+ * @return @type git_error_t 0 on success; GIT_ENOTFOUND if there's no branch named `branch_name`
* or an error code
*/
GIT_EXTERN(int) git_branch_set_upstream(
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/buffer.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/buffer.h
index 926f133..3fe4f85 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/buffer.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/buffer.h
@@ -11,9 +11,12 @@
/**
* @file git2/buffer.h
- * @brief Buffer export structure
- *
+ * @brief A data structure to return data to callers
* @ingroup Git
+ *
+ * The `git_buf` buffer is used to return arbitrary data - typically
+ * strings - to callers. Callers are responsible for freeing the memory
+ * in a buffer with the `git_buf_dispose` function.
* @{
*/
GIT_BEGIN_DECL
@@ -23,112 +26,51 @@ GIT_BEGIN_DECL
*
* Sometimes libgit2 wants to return an allocated data buffer to the
* caller and have the caller take responsibility for freeing that memory.
- * This can be awkward if the caller does not have easy access to the same
- * allocation functions that libgit2 is using. In those cases, libgit2
- * will fill in a `git_buf` and the caller can use `git_buf_dispose()` to
- * release it when they are done.
- *
- * A `git_buf` may also be used for the caller to pass in a reference to
- * a block of memory they hold. In this case, libgit2 will not resize or
- * free the memory, but will read from it as needed.
+ * To make ownership clear in these cases, libgit2 uses `git_buf` to
+ * return this data. Callers should use `git_buf_dispose()` to release
+ * the memory when they are done.
*
- * Some APIs may occasionally do something slightly unusual with a buffer,
- * such as setting `ptr` to a value that was passed in by the user. In
- * those cases, the behavior will be clearly documented by the API.
+ * A `git_buf` contains a pointer to a NUL-terminated C string, and
+ * the length of the string (not including the NUL terminator).
*/
typedef struct {
/**
- * The buffer contents.
- *
- * `ptr` points to the start of the allocated memory. If it is NULL,
- * then the `git_buf` is considered empty and libgit2 will feel free
- * to overwrite it with new data.
+ * The buffer contents. `ptr` points to the start of the buffer
+ * being returned. The buffer's length (in bytes) is specified
+ * by the `size` member of the structure, and contains a NUL
+ * terminator at position `(size + 1)`.
*/
- char *ptr;
+ char *ptr;
/**
- * `asize` holds the known total amount of allocated memory if the `ptr`
- * was allocated by libgit2. It may be larger than `size`. If `ptr`
- * was not allocated by libgit2 and should not be resized and/or freed,
- * then `asize` will be set to zero.
+ * This field is reserved and unused.
*/
- size_t asize;
+ size_t reserved;
/**
- * `size` holds the size (in bytes) of the data that is actually used.
+ * The length (in bytes) of the buffer pointed to by `ptr`,
+ * not including a NUL terminator.
*/
size_t size;
} git_buf;
/**
- * Static initializer for git_buf from static buffer
+ * Use to initialize a `git_buf` before passing it to a function that
+ * will populate it.
*/
-#define GIT_BUF_INIT_CONST(STR,LEN) { (char *)(STR), 0, (size_t)(LEN) }
+#define GIT_BUF_INIT { NULL, 0, 0 }
/**
* Free the memory referred to by the git_buf.
*
* Note that this does not free the `git_buf` itself, just the memory
- * pointed to by `buffer->ptr`. This will not free the memory if it looks
- * like it was not allocated internally, but it will clear the buffer back
- * to the empty state.
+ * pointed to by `buffer->ptr`.
*
* @param buffer The buffer to deallocate
*/
GIT_EXTERN(void) git_buf_dispose(git_buf *buffer);
-/**
- * Resize the buffer allocation to make more space.
- *
- * This will attempt to grow the buffer to accommodate the target size.
- *
- * If the buffer refers to memory that was not allocated by libgit2 (i.e.
- * the `asize` field is zero), then `ptr` will be replaced with a newly
- * allocated block of data. Be careful so that memory allocated by the
- * caller is not lost. As a special variant, if you pass `target_size` as
- * 0 and the memory is not allocated by libgit2, this will allocate a new
- * buffer of size `size` and copy the external data into it.
- *
- * Currently, this will never shrink a buffer, only expand it.
- *
- * If the allocation fails, this will return an error and the buffer will be
- * marked as invalid for future operations, invaliding the contents.
- *
- * @param buffer The buffer to be resized; may or may not be allocated yet
- * @param target_size The desired available size
- * @return 0 on success, -1 on allocation failure
- */
-GIT_EXTERN(int) git_buf_grow(git_buf *buffer, size_t target_size);
-
-/**
- * Set buffer to a copy of some raw data.
- *
- * @param buffer The buffer to set
- * @param data The data to copy into the buffer
- * @param datalen The length of the data to copy into the buffer
- * @return 0 on success, -1 on allocation failure
- */
-GIT_EXTERN(int) git_buf_set(
- git_buf *buffer, const void *data, size_t datalen);
-
-/**
-* Check quickly if buffer looks like it contains binary data
-*
-* @param buf Buffer to check
-* @return 1 if buffer looks like non-text data
-*/
-GIT_EXTERN(int) git_buf_is_binary(const git_buf *buf);
-
-/**
-* Check quickly if buffer contains a NUL byte
-*
-* @param buf Buffer to check
-* @return 1 if buffer contains a NUL byte
-*/
-GIT_EXTERN(int) git_buf_contains_nul(const git_buf *buf);
-
-GIT_END_DECL
-
/** @} */
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/cert.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/cert.h
index 0ed38ff..7b91b63 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/cert.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/cert.h
@@ -12,7 +12,7 @@
/**
* @file git2/cert.h
- * @brief Git certificate objects
+ * @brief TLS and SSH certificate handling
* @defgroup git_cert Certificate objects
* @ingroup Git
* @{
@@ -44,7 +44,7 @@ typedef enum git_cert_t {
* information about the certificate. This is used when using
* curl.
*/
- GIT_CERT_STRARRAY,
+ GIT_CERT_STRARRAY
} git_cert_t;
/**
@@ -82,7 +82,7 @@ typedef enum {
/** SHA-256 is available */
GIT_CERT_SSH_SHA256 = (1 << 2),
/** Raw hostkey is available */
- GIT_CERT_SSH_RAW = (1 << 3),
+ GIT_CERT_SSH_RAW = (1 << 3)
} git_cert_ssh_t;
typedef enum {
@@ -169,4 +169,5 @@ typedef struct {
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/checkout.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/checkout.h
index c7aeee4..bdea928 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/checkout.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/checkout.h
@@ -13,9 +13,13 @@
/**
* @file git2/checkout.h
- * @brief Git checkout routines
+ * @brief Update the contents of the working directory
* @defgroup git_checkout Git checkout routines
* @ingroup Git
+ *
+ * Update the contents of the working directory, or a subset of the
+ * files in the working directory, to point to the data in the index
+ * or a specific commit.
* @{
*/
GIT_BEGIN_DECL
@@ -31,17 +35,11 @@ GIT_BEGIN_DECL
* check out, the "baseline" tree of what was checked out previously, the
* working directory for actual files, and the index for staged changes.
*
- * You give checkout one of three strategies for update:
- *
- * - `GIT_CHECKOUT_NONE` is a dry-run strategy that checks for conflicts,
- * etc., but doesn't make any actual changes.
+ * You give checkout one of two strategies for update:
*
- * - `GIT_CHECKOUT_FORCE` is at the opposite extreme, taking any action to
- * make the working directory match the target (including potentially
- * discarding modified files).
- *
- * - `GIT_CHECKOUT_SAFE` is between these two options, it will only make
- * modifications that will not lose changes.
+ * - `GIT_CHECKOUT_SAFE` is the default, and similar to git's default,
+ * which will make modifications that will not lose changes in the
+ * working directory.
*
* | target == baseline | target != baseline |
* ---------------------|-----------------------|----------------------|
@@ -55,6 +53,10 @@ GIT_BEGIN_DECL
* baseline present | | |
* ---------------------|-----------------------|----------------------|
*
+ * - `GIT_CHECKOUT_FORCE` will take any action to make the working
+ * directory match the target (including potentially discarding
+ * modified files).
+ *
* To emulate `git checkout`, use `GIT_CHECKOUT_SAFE` with a checkout
* notification callback (see below) that displays information about dirty
* files. The default behavior will cancel checkout on conflicts.
@@ -69,6 +71,9 @@ GIT_BEGIN_DECL
*
* There are some additional flags to modify the behavior of checkout:
*
+ * - `GIT_CHECKOUT_DRY_RUN` is a dry-run strategy that checks for conflicts,
+ * etc., but doesn't make any actual changes.
+ *
* - GIT_CHECKOUT_ALLOW_CONFLICTS makes SAFE mode apply safe file updates
* even if there are conflicts (instead of cancelling the checkout).
*
@@ -102,29 +107,24 @@ GIT_BEGIN_DECL
* files or folders that fold to the same name on case insensitive
* filesystems. This can cause files to retain their existing names
* and write through existing symbolic links.
+ *
+ * @flags
*/
typedef enum {
- GIT_CHECKOUT_NONE = 0, /**< default is a dry run, no actual updates */
-
/**
* Allow safe updates that cannot overwrite uncommitted data.
- * If the uncommitted changes don't conflict with the checked out files,
- * the checkout will still proceed, leaving the changes intact.
- *
- * Mutually exclusive with GIT_CHECKOUT_FORCE.
- * GIT_CHECKOUT_FORCE takes precedence over GIT_CHECKOUT_SAFE.
+ * If the uncommitted changes don't conflict with the checked
+ * out files, the checkout will still proceed, leaving the
+ * changes intact.
*/
- GIT_CHECKOUT_SAFE = (1u << 0),
+ GIT_CHECKOUT_SAFE = 0,
/**
- * Allow all updates to force working directory to look like index.
- *
- * Mutually exclusive with GIT_CHECKOUT_SAFE.
- * GIT_CHECKOUT_FORCE takes precedence over GIT_CHECKOUT_SAFE.
+ * Allow all updates to force working directory to look like
+ * the index, potentially losing data in the process.
*/
GIT_CHECKOUT_FORCE = (1u << 1),
-
/** Allow checkout to recreate missing files */
GIT_CHECKOUT_RECREATE_MISSING = (1u << 2),
@@ -178,20 +178,31 @@ typedef enum {
GIT_CHECKOUT_DONT_WRITE_INDEX = (1u << 23),
/**
- * Show what would be done by a checkout. Stop after sending
- * notifications; don't update the working directory or index.
+ * Perform a "dry run", reporting what _would_ be done but
+ * without actually making changes in the working directory
+ * or the index.
*/
GIT_CHECKOUT_DRY_RUN = (1u << 24),
-
+
+ /** Include common ancestor data in zdiff3 format for conflicts */
+ GIT_CHECKOUT_CONFLICT_STYLE_ZDIFF3 = (1u << 25),
+
/**
+ * Do not do a checkout and do not fire callbacks; this is primarily
+ * useful only for internal functions that will perform the
+ * checkout themselves but need to pass checkout options into
+ * another function, for example, `git_clone`.
+ */
+ GIT_CHECKOUT_NONE = (1u << 30),
+
+ /*
* THE FOLLOWING OPTIONS ARE NOT YET IMPLEMENTED
*/
/** Recursively checkout submodules with same options (NOT IMPLEMENTED) */
GIT_CHECKOUT_UPDATE_SUBMODULES = (1u << 16),
/** Recursively checkout submodules if HEAD moved in super repo (NOT IMPLEMENTED) */
- GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED = (1u << 17),
-
+ GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED = (1u << 17)
} git_checkout_strategy_t;
/**
@@ -207,6 +218,8 @@ typedef enum {
* Notification callbacks are made prior to modifying any files on disk,
* so canceling on any notification will still happen prior to any files
* being modified.
+ *
+ * @flags
*/
typedef enum {
GIT_CHECKOUT_NOTIFY_NONE = 0,
@@ -248,7 +261,17 @@ typedef struct {
size_t chmod_calls;
} git_checkout_perfdata;
-/** Checkout notification callback function */
+/**
+ * Checkout notification callback function.
+ *
+ * @param why the notification reason
+ * @param path the path to the file being checked out
+ * @param baseline the baseline's diff file information
+ * @param target the checkout target diff file information
+ * @param workdir the working directory diff file information
+ * @param payload the user-supplied callback payload
+ * @return 0 on success, or an error code
+ */
typedef int GIT_CALLBACK(git_checkout_notify_cb)(
git_checkout_notify_t why,
const char *path,
@@ -257,14 +280,26 @@ typedef int GIT_CALLBACK(git_checkout_notify_cb)(
const git_diff_file *workdir,
void *payload);
-/** Checkout progress notification function */
+/**
+ * Checkout progress notification function.
+ *
+ * @param path the path to the file being checked out
+ * @param completed_steps number of checkout steps completed
+ * @param total_steps number of total steps in the checkout process
+ * @param payload the user-supplied callback payload
+ */
typedef void GIT_CALLBACK(git_checkout_progress_cb)(
const char *path,
size_t completed_steps,
size_t total_steps,
void *payload);
-/** Checkout perfdata notification function */
+/**
+ * Checkout performance data reporting function.
+ *
+ * @param perfdata the performance data for the checkout
+ * @param payload the user-supplied callback payload
+ */
typedef void GIT_CALLBACK(git_checkout_perfdata_cb)(
const git_checkout_perfdata *perfdata,
void *payload);
@@ -275,10 +310,18 @@ typedef void GIT_CALLBACK(git_checkout_perfdata_cb)(
* Initialize with `GIT_CHECKOUT_OPTIONS_INIT`. Alternatively, you can
* use `git_checkout_options_init`.
*
+ * @options[version] GIT_CHECKOUT_OPTIONS_VERSION
+ * @options[init_macro] GIT_CHECKOUT_OPTIONS_INIT
+ * @options[init_function] git_checkout_options_init
*/
typedef struct git_checkout_options {
unsigned int version; /**< The version */
+ /**
+ * Checkout strategy. Default is a safe checkout.
+ *
+ * @type[flags] git_checkout_strategy_t
+ */
unsigned int checkout_strategy; /**< default will be a safe checkout */
int disable_filters; /**< don't apply filters like CRLF conversion */
@@ -286,7 +329,13 @@ typedef struct git_checkout_options {
unsigned int file_mode; /**< default is 0644 or 0755 as dictated by blob */
int file_open_flags; /**< default is O_CREAT | O_TRUNC | O_WRONLY */
- unsigned int notify_flags; /**< see `git_checkout_notify_t` above */
+ /**
+ * Checkout notification flags specify what operations the notify
+ * callback is invoked for.
+ *
+ * @type[flags] git_checkout_notify_t
+ */
+ unsigned int notify_flags;
/**
* Optional callback to get notifications on specific file states.
@@ -341,8 +390,12 @@ typedef struct git_checkout_options {
void *perfdata_payload;
} git_checkout_options;
+
+/** Current version for the `git_checkout_options` structure */
#define GIT_CHECKOUT_OPTIONS_VERSION 1
-#define GIT_CHECKOUT_OPTIONS_INIT {GIT_CHECKOUT_OPTIONS_VERSION, GIT_CHECKOUT_SAFE}
+
+/** Static constructor for `git_checkout_options` */
+#define GIT_CHECKOUT_OPTIONS_INIT { GIT_CHECKOUT_OPTIONS_VERSION }
/**
* Initialize git_checkout_options structure
@@ -411,4 +464,5 @@ GIT_EXTERN(int) git_checkout_tree(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/cherrypick.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/cherrypick.h
index 0e6a252..e6cf99e 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/cherrypick.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/cherrypick.h
@@ -13,9 +13,12 @@
/**
* @file git2/cherrypick.h
- * @brief Git cherry-pick routines
+ * @brief Cherry-pick the contents of an individual commit
* @defgroup git_cherrypick Git cherry-pick routines
* @ingroup Git
+ *
+ * "Cherry-pick" will attempts to re-apply the changes in an
+ * individual commit to the current index and working directory.
* @{
*/
GIT_BEGIN_DECL
@@ -33,8 +36,13 @@ typedef struct {
git_checkout_options checkout_opts; /**< Options for the checkout */
} git_cherrypick_options;
+/** Current version for the `git_cherrypick_options` structure */
#define GIT_CHERRYPICK_OPTIONS_VERSION 1
-#define GIT_CHERRYPICK_OPTIONS_INIT {GIT_CHERRYPICK_OPTIONS_VERSION, 0, GIT_MERGE_OPTIONS_INIT, GIT_CHECKOUT_OPTIONS_INIT}
+
+/** Static constructor for `git_cherrypick_options` */
+#define GIT_CHERRYPICK_OPTIONS_INIT { \
+ GIT_CHERRYPICK_OPTIONS_VERSION, 0, \
+ GIT_MERGE_OPTIONS_INIT, GIT_CHECKOUT_OPTIONS_INIT }
/**
* Initialize git_cherrypick_options structure
@@ -89,4 +97,3 @@ GIT_EXTERN(int) git_cherrypick(
GIT_END_DECL
#endif
-
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/clone.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/clone.h
index 3c3ea26..b7a47ab 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/clone.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/clone.h
@@ -17,9 +17,13 @@
/**
* @file git2/clone.h
- * @brief Git cloning routines
+ * @brief Clone a remote repository to the local disk
* @defgroup git_clone Git cloning routines
* @ingroup Git
+ *
+ * Clone will take a remote repository - located on a remote server
+ * accessible by HTTPS or SSH, or a repository located elsewhere on
+ * the local disk - and place a copy in the given local path.
* @{
*/
GIT_BEGIN_DECL
@@ -49,7 +53,7 @@ typedef enum {
* Bypass the git-aware transport, but do not try to use
* hardlinks.
*/
- GIT_CLONE_LOCAL_NO_LINKS,
+ GIT_CLONE_LOCAL_NO_LINKS
} git_clone_local_t;
/**
@@ -59,7 +63,7 @@ typedef enum {
* Callers of git_clone may provide a function matching this signature to override
* the remote creation and customization process during a clone operation.
*
- * @param out the resulting remote
+ * @param[out] out the resulting remote
* @param repo the repository in which to create the remote
* @param name the remote's name
* @param url the remote's url
@@ -74,14 +78,14 @@ typedef int GIT_CALLBACK(git_remote_create_cb)(
void *payload);
/**
- * The signature of a function matchin git_repository_init, with an
- * aditional void * as callback payload.
+ * The signature of a function matching git_repository_init, with an
+ * additional void * as callback payload.
*
* Callers of git_clone my provide a function matching this signature
* to override the repository creation and customization process
* during a clone operation.
*
- * @param out the resulting repository
+ * @param[out] out the resulting repository
* @param path path in which to create the repository
* @param bare whether the repository is bare. This is the value from the clone options
* @param payload payload specified by the options
@@ -99,14 +103,17 @@ typedef int GIT_CALLBACK(git_repository_create_cb)(
* Initialize with `GIT_CLONE_OPTIONS_INIT`. Alternatively, you can
* use `git_clone_options_init`.
*
+ * @options[version] GIT_CLONE_OPTIONS_VERSION
+ * @options[init_macro] GIT_CLONE_OPTIONS_INIT
+ * @options[init_function] git_clone_options_init
*/
typedef struct git_clone_options {
unsigned int version;
/**
* These options are passed to the checkout step. To disable
- * checkout, set the `checkout_strategy` to
- * `GIT_CHECKOUT_NONE`.
+ * checkout, set the `checkout_strategy` to `GIT_CHECKOUT_NONE`
+ * or `GIT_CHECKOUT_DRY_RUN`.
*/
git_checkout_options checkout_opts;
@@ -163,10 +170,14 @@ typedef struct git_clone_options {
void *remote_cb_payload;
} git_clone_options;
+/** Current version for the `git_clone_options` structure */
#define GIT_CLONE_OPTIONS_VERSION 1
-#define GIT_CLONE_OPTIONS_INIT { GIT_CLONE_OPTIONS_VERSION, \
- { GIT_CHECKOUT_OPTIONS_VERSION, GIT_CHECKOUT_SAFE }, \
- GIT_FETCH_OPTIONS_INIT }
+
+/** Static constructor for `git_clone_options` */
+#define GIT_CLONE_OPTIONS_INIT \
+ { GIT_CLONE_OPTIONS_VERSION, \
+ GIT_CHECKOUT_OPTIONS_INIT, \
+ GIT_FETCH_OPTIONS_INIT }
/**
* Initialize git_clone_options structure
@@ -189,7 +200,11 @@ GIT_EXTERN(int) git_clone_options_init(
* git's defaults. You can use the options in the callback to
* customize how these are created.
*
- * @param out pointer that will receive the resulting repository object
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
+ * @param[out] out pointer that will receive the resulting repository object
* @param url the remote repository to clone
* @param local_path local directory to clone to
* @param options configuration options for the clone. If NULL, the
@@ -206,4 +221,5 @@ GIT_EXTERN(int) git_clone(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/commit.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/commit.h
index 4d74b89..b998e18 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/commit.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/commit.h
@@ -14,9 +14,13 @@
/**
* @file git2/commit.h
- * @brief Git commit parsing, formatting routines
+ * @brief A representation of a set of changes in the repository
* @defgroup git_commit Git commit parsing, formatting routines
* @ingroup Git
+ *
+ * A commit represents a set of changes made to the files within a
+ * repository, and metadata about who made the changes, and when the
+ * changes were made.
* @{
*/
GIT_BEGIN_DECL
@@ -380,7 +384,38 @@ GIT_EXTERN(int) git_commit_create(
*
* All other parameters remain the same as `git_commit_create()`.
*
- * @see git_commit_create
+ * @param id Pointer in which to store the OID of the newly created commit
+ *
+ * @param repo Repository where to store the commit
+ *
+ * @param update_ref If not NULL, name of the reference that
+ * will be updated to point to this commit. If the reference
+ * is not direct, it will be resolved to a direct reference.
+ * Use "HEAD" to update the HEAD of the current branch and
+ * make it point to this commit. If the reference doesn't
+ * exist yet, it will be created. If it does exist, the first
+ * parent must be the tip of this branch.
+ *
+ * @param author Signature with author and author time of commit
+ *
+ * @param committer Signature with committer and * commit time of commit
+ *
+ * @param message_encoding The encoding for the message in the
+ * commit, represented with a standard encoding name.
+ * E.g. "UTF-8". If NULL, no encoding header is written and
+ * UTF-8 is assumed.
+ *
+ * @param message Full message for this commit
+ *
+ * @param tree An instance of a `git_tree` object that will
+ * be used as the tree for the commit. This tree object must
+ * also be owned by the given `repo`.
+ *
+ * @param parent_count Number of parents for this commit
+ *
+ * @return 0 or an error code
+ * The created commit will be written to the Object Database and
+ * the given reference will be updated to point to it
*/
GIT_EXTERN(int) git_commit_create_v(
git_oid *id,
@@ -394,6 +429,52 @@ GIT_EXTERN(int) git_commit_create_v(
size_t parent_count,
...);
+typedef struct {
+ unsigned int version;
+
+ /**
+ * Flags for creating the commit.
+ *
+ * If `allow_empty_commit` is specified, a commit with no changes
+ * from the prior commit (and "empty" commit) is allowed. Otherwise,
+ * commit creation will be stopped.
+ */
+ unsigned int allow_empty_commit : 1;
+
+ /** The commit author, or NULL for the default. */
+ const git_signature *author;
+
+ /** The committer, or NULL for the default. */
+ const git_signature *committer;
+
+ /** Encoding for the commit message; leave NULL for default. */
+ const char *message_encoding;
+} git_commit_create_options;
+
+/** Current version for the `git_commit_create_options` structure */
+#define GIT_COMMIT_CREATE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_commit_create_options` */
+#define GIT_COMMIT_CREATE_OPTIONS_INIT { GIT_COMMIT_CREATE_OPTIONS_VERSION }
+
+/**
+ * Commits the staged changes in the repository; this is a near analog to
+ * `git commit -m message`.
+ *
+ * By default, empty commits are not allowed.
+ *
+ * @param id pointer to store the new commit's object id
+ * @param repo repository to commit changes in
+ * @param message the commit message
+ * @param opts options for creating the commit
+ * @return 0 on success, GIT_EUNCHANGED if there were no changes to commit, or an error code
+ */
+GIT_EXTERN(int) git_commit_create_from_stage(
+ git_oid *id,
+ git_repository *repo,
+ const char *message,
+ const git_commit_create_options *opts);
+
/**
* Amend an existing commit by replacing only non-NULL values.
*
@@ -413,7 +494,36 @@ GIT_EXTERN(int) git_commit_create_v(
*
* All parameters have the same meanings as in `git_commit_create()`.
*
- * @see git_commit_create
+ * @param id Pointer in which to store the OID of the newly created commit
+ *
+ * @param commit_to_amend The commit to amend
+ *
+ * @param update_ref If not NULL, name of the reference that
+ * will be updated to point to this commit. If the reference
+ * is not direct, it will be resolved to a direct reference.
+ * Use "HEAD" to update the HEAD of the current branch and
+ * make it point to this commit. If the reference doesn't
+ * exist yet, it will be created. If it does exist, the first
+ * parent must be the tip of this branch.
+ *
+ * @param author Signature with author and author time of commit
+ *
+ * @param committer Signature with committer and * commit time of commit
+ *
+ * @param message_encoding The encoding for the message in the
+ * commit, represented with a standard encoding name.
+ * E.g. "UTF-8". If NULL, no encoding header is written and
+ * UTF-8 is assumed.
+ *
+ * @param message Full message for this commit
+ *
+ * @param tree An instance of a `git_tree` object that will
+ * be used as the tree for the commit. This tree object must
+ * also be owned by the given `repo`.
+ *
+ * @return 0 or an error code
+ * The created commit will be written to the Object Database and
+ * the given reference will be updated to point to it
*/
GIT_EXTERN(int) git_commit_amend(
git_oid *id,
@@ -479,6 +589,7 @@ GIT_EXTERN(int) git_commit_create_buffer(
* to the commit and write it into the given repository.
*
* @param out the resulting commit id
+ * @param repo the repository to create the commit in.
* @param commit_content the content of the unsigned commit object
* @param signature the signature to add to the commit. Leave `NULL`
* to create a commit without adding a signature field.
@@ -499,6 +610,7 @@ GIT_EXTERN(int) git_commit_create_with_signature(
*
* @param out Pointer to store the copy of the commit
* @param source Original commit to copy
+ * @return 0
*/
GIT_EXTERN(int) git_commit_dup(git_commit **out, git_commit *source);
@@ -539,6 +651,25 @@ typedef int (*git_commit_create_cb)(
const git_commit *parents[],
void *payload);
+/** An array of commits returned from the library */
+typedef struct git_commitarray {
+ git_commit *const *commits;
+ size_t count;
+} git_commitarray;
+
+/**
+ * Free the commits contained in a commit array. This method should
+ * be called on `git_commitarray` objects that were provided by the
+ * library. Not doing so will result in a memory leak.
+ *
+ * This does not free the `git_commitarray` itself, since the library
+ * will never allocate that object directly itself.
+ *
+ * @param array The git_commitarray that contains commits to free
+ */
+GIT_EXTERN(void) git_commitarray_dispose(git_commitarray *array);
+
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/common.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/common.h
index 2ee8290..40a3903 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/common.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/common.h
@@ -11,7 +11,9 @@
#include
#ifdef __cplusplus
+ /** Start declarations in C mode for C++ compatibility */
# define GIT_BEGIN_DECL extern "C" {
+ /** End declarations in C mode */
# define GIT_END_DECL }
#else
/** Start declarations in C mode */
@@ -71,19 +73,19 @@ typedef size_t size_t;
# define GIT_FORMAT_PRINTF(a,b) /* empty */
#endif
-#if (defined(_WIN32)) && !defined(__CYGWIN__)
-#define GIT_WIN32 1
-#endif
-
#ifdef __amigaos4__
#include
#endif
/**
* @file git2/common.h
- * @brief Git common platform definitions
+ * @brief Base platform functionality
* @defgroup git_common Git common platform definitions
* @ingroup Git
+ *
+ * Common platform functionality including introspecting libgit2
+ * itself - information like how it was built, and the current
+ * running version.
* @{
*/
@@ -94,10 +96,10 @@ GIT_BEGIN_DECL
* environment variable). A semi-colon ";" is used on Windows and
* AmigaOS, and a colon ":" for all other systems.
*/
-#if defined(GIT_WIN32) || defined(AMIGA)
-#define GIT_PATH_LIST_SEPARATOR ';'
+#if (defined(_WIN32) && !defined(__CYGWIN__)) || defined(AMIGA)
+# define GIT_PATH_LIST_SEPARATOR ';'
#else
-#define GIT_PATH_LIST_SEPARATOR ':'
+# define GIT_PATH_LIST_SEPARATOR ':'
#endif
/**
@@ -105,11 +107,6 @@ GIT_BEGIN_DECL
*/
#define GIT_PATH_MAX 4096
-/**
- * The string representation of the null object ID.
- */
-#define GIT_OID_HEX_ZERO "0000000000000000000000000000000000000000"
-
/**
* Return the version of the libgit2 library
* being currently used.
@@ -122,53 +119,91 @@ GIT_BEGIN_DECL
GIT_EXTERN(int) git_libgit2_version(int *major, int *minor, int *rev);
/**
- * Combinations of these values describe the features with which libgit2
- * was compiled
+ * Return the prerelease state of the libgit2 library currently being
+ * used. For nightly builds during active development, this will be
+ * "alpha". Releases may have a "beta" or release candidate ("rc1",
+ * "rc2", etc) prerelease. For a final release, this function returns
+ * NULL.
+ *
+ * @return the name of the prerelease state or NULL
+ */
+GIT_EXTERN(const char *) git_libgit2_prerelease(void);
+
+/**
+ * Configurable features of libgit2; either optional settings (like
+ * threading), or features that can be enabled by one of a number of
+ * different backend "providers" (like HTTPS, which can be provided by
+ * OpenSSL, mbedTLS, or system libraries).
*/
typedef enum {
- /**
- * If set, libgit2 was built thread-aware and can be safely used from multiple
- * threads.
- */
- GIT_FEATURE_THREADS = (1 << 0),
- /**
- * If set, libgit2 was built with and linked against a TLS implementation.
- * Custom TLS streams may still be added by the user to support HTTPS
- * regardless of this.
- */
- GIT_FEATURE_HTTPS = (1 << 1),
- /**
- * If set, libgit2 was built with and linked against libssh2. A custom
- * transport may still be added by the user to support libssh2 regardless of
- * this.
- */
- GIT_FEATURE_SSH = (1 << 2),
- /**
- * If set, libgit2 was built with support for sub-second resolution in file
- * modification times.
- */
- GIT_FEATURE_NSEC = (1 << 3),
+ /**
+ * libgit2 is thread-aware and can be used from multiple threads
+ * (as described in the documentation).
+ */
+ GIT_FEATURE_THREADS = (1 << 0),
+
+ /** HTTPS remotes */
+ GIT_FEATURE_HTTPS = (1 << 1),
+
+ /** SSH remotes */
+ GIT_FEATURE_SSH = (1 << 2),
+
+ /** Sub-second resolution in index timestamps */
+ GIT_FEATURE_NSEC = (1 << 3),
+
+ /** HTTP parsing; always available */
+ GIT_FEATURE_HTTP_PARSER = (1 << 4),
+
+ /** Regular expression support; always available */
+ GIT_FEATURE_REGEX = (1 << 5),
+
+ /** Internationalization support for filename translation */
+ GIT_FEATURE_I18N = (1 << 6),
+
+ /** NTLM support over HTTPS */
+ GIT_FEATURE_AUTH_NTLM = (1 << 7),
+
+ /** Kerberos (SPNEGO) authentication support over HTTPS */
+ GIT_FEATURE_AUTH_NEGOTIATE = (1 << 8),
+
+ /** zlib support; always available */
+ GIT_FEATURE_COMPRESSION = (1 << 9),
+
+ /** SHA1 object support; always available */
+ GIT_FEATURE_SHA1 = (1 << 10),
+
+ /** SHA256 object support */
+ GIT_FEATURE_SHA256 = (1 << 11)
} git_feature_t;
/**
* Query compile time options for libgit2.
*
* @return A combination of GIT_FEATURE_* values.
+ */
+GIT_EXTERN(int) git_libgit2_features(void);
+
+/**
+ * Query the backend details for the compile-time feature in libgit2.
+ *
+ * This will return the "backend" for the feature, which is useful for
+ * things like HTTPS or SSH support, that can have multiple backends
+ * that could be compiled in.
*
- * - GIT_FEATURE_THREADS
- * Libgit2 was compiled with thread support. Note that thread support is
- * still to be seen as a 'work in progress' - basic object lookups are
- * believed to be threadsafe, but other operations may not be.
+ * For example, when libgit2 is compiled with dynamic OpenSSL support,
+ * the feature backend will be `openssl-dynamic`. The feature backend
+ * names reflect the compilation options specified to the build system
+ * (though in all lower case). The backend _may_ be "builtin" for
+ * features that are provided by libgit2 itself.
*
- * - GIT_FEATURE_HTTPS
- * Libgit2 supports the https:// protocol. This requires the openssl
- * library to be found when compiling libgit2.
+ * If the feature is not supported by the library, this API returns
+ * `NULL`.
*
- * - GIT_FEATURE_SSH
- * Libgit2 supports the SSH protocol for network operations. This requires
- * the libssh2 library to be found when compiling libgit2
+ * @param feature the feature to query details for
+ * @return the provider details, or NULL if the feature is not supported
*/
-GIT_EXTERN(int) git_libgit2_features(void);
+GIT_EXTERN(const char *) git_libgit2_feature_backend(
+ git_feature_t feature);
/**
* Global library options
@@ -211,7 +246,18 @@ typedef enum {
GIT_OPT_SET_ODB_PACKED_PRIORITY,
GIT_OPT_SET_ODB_LOOSE_PRIORITY,
GIT_OPT_GET_EXTENSIONS,
- GIT_OPT_SET_EXTENSIONS
+ GIT_OPT_SET_EXTENSIONS,
+ GIT_OPT_GET_OWNER_VALIDATION,
+ GIT_OPT_SET_OWNER_VALIDATION,
+ GIT_OPT_GET_HOMEDIR,
+ GIT_OPT_SET_HOMEDIR,
+ GIT_OPT_SET_SERVER_CONNECT_TIMEOUT,
+ GIT_OPT_GET_SERVER_CONNECT_TIMEOUT,
+ GIT_OPT_SET_SERVER_TIMEOUT,
+ GIT_OPT_GET_SERVER_TIMEOUT,
+ GIT_OPT_SET_USER_AGENT_PRODUCT,
+ GIT_OPT_GET_USER_AGENT_PRODUCT,
+ GIT_OPT_ADD_SSL_X509_CERT
} git_libgit2_opt_t;
/**
@@ -316,15 +362,52 @@ typedef enum {
* > - `path` is the location of a directory holding several
* > certificates, one per file.
* >
+ * > Calling `GIT_OPT_ADD_SSL_X509_CERT` may override the
+ * > data in `path`.
+ * >
* > Either parameter may be `NULL`, but not both.
*
+ * * opts(GIT_OPT_ADD_SSL_X509_CERT, const X509 *cert)
+ *
+ * > Add a raw X509 certificate into the SSL certs store.
+ * > This certificate is only used by libgit2 invocations
+ * > during the application lifetime and is not persisted
+ * > to disk. This certificate cannot be removed from the
+ * > application once is has been added.
+ * >
+ * > - `cert` is the raw X509 cert will be added to cert store.
+ *
* * opts(GIT_OPT_SET_USER_AGENT, const char *user_agent)
*
- * > Set the value of the User-Agent header. This value will be
- * > appended to "git/1.0", for compatibility with other git clients.
+ * > Set the value of the comment section of the User-Agent header.
+ * > This can be information about your product and its version.
+ * > By default this is "libgit2" followed by the libgit2 version.
+ * >
+ * > This value will be appended to User-Agent _product_, which
+ * > is typically set to "git/2.0".
+ * >
+ * > Set to the empty string ("") to not send any information in the
+ * > comment section, or set to NULL to restore the default.
+ *
+ * * opts(GIT_OPT_GET_USER_AGENT, git_buf *out)
+ *
+ * > Get the value of the User-Agent header.
+ * > The User-Agent is written to the `out` buffer.
+ *
+ * * opts(GIT_OPT_SET_USER_AGENT_PRODUCT, const char *user_agent_product)
+ *
+ * > Set the value of the product portion of the User-Agent header.
+ * > This defaults to "git/2.0", for compatibility with other git
+ * > clients. It is recommended to keep this as git/ for
+ * > compatibility with servers that do user-agent detection.
* >
- * > - `user_agent` is the value that will be delivered as the
- * > User-Agent header on HTTP requests.
+ * > Set to the empty string ("") to not send any user-agent string,
+ * > or set to NULL to restore the default.
+ *
+ * * opts(GIT_OPT_GET_USER_AGENT_PRODUCT, git_buf *out)
+ *
+ * > Get the value of the User-Agent product header.
+ * > The User-Agent product is written to the `out` buffer.
*
* * opts(GIT_OPT_SET_WINDOWS_SHAREMODE, unsigned long value)
*
@@ -360,11 +443,6 @@ typedef enum {
* >
* > - `ciphers` is the list of ciphers that are eanbled.
*
- * * opts(GIT_OPT_GET_USER_AGENT, git_buf *out)
- *
- * > Get the value of the User-Agent header.
- * > The User-Agent is written to the `out` buffer.
- *
* * opts(GIT_OPT_ENABLE_OFS_DELTA, int enabled)
*
* > Enable or disable the use of "offset deltas" when creating packfiles,
@@ -449,8 +527,43 @@ typedef enum {
* > to support repositories with the `noop` extension but does want
* > to support repositories with the `newext` extension.
*
+ * opts(GIT_OPT_GET_OWNER_VALIDATION, int *enabled)
+ * > Gets the owner validation setting for repository
+ * > directories.
+ *
+ * opts(GIT_OPT_SET_OWNER_VALIDATION, int enabled)
+ * > Set that repository directories should be owned by the current
+ * > user. The default is to validate ownership.
+ *
+ * opts(GIT_OPT_GET_HOMEDIR, git_buf *out)
+ * > Gets the current user's home directory, as it will be used
+ * > for file lookups. The path is written to the `out` buffer.
+ *
+ * opts(GIT_OPT_SET_HOMEDIR, const char *path)
+ * > Sets the directory used as the current user's home directory,
+ * > for file lookups.
+ * >
+ * > - `path` directory of home directory.
+ *
+ * opts(GIT_OPT_GET_SERVER_CONNECT_TIMEOUT, int *timeout)
+ * > Gets the timeout (in milliseconds) to attempt connections to
+ * > a remote server.
+ *
+ * opts(GIT_OPT_SET_SERVER_CONNECT_TIMEOUT, int timeout)
+ * > Sets the timeout (in milliseconds) to attempt connections to
+ * > a remote server. Set to 0 to use the system default. Note that
+ * > this may not be able to be configured longer than the system
+ * > default, typically 75 seconds.
+ *
+ * opts(GIT_OPT_GET_SERVER_TIMEOUT, int *timeout)
+ * > Gets the timeout (in milliseconds) for reading from and writing
+ * > to a remote server.
+ *
+ * opts(GIT_OPT_SET_SERVER_TIMEOUT, int timeout)
+ * > Sets the timeout (in milliseconds) for reading from and writing
+ * > to a remote server. Set to 0 to use the system default.
+ *
* @param option Option key
- * @param ... value to set the option
* @return 0 on success, <0 on failure
*/
GIT_EXTERN(int) git_libgit2_opts(int option, ...);
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/config.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/config.h
index 7c8e388..f9c2667 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/config.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/config.h
@@ -13,78 +13,134 @@
/**
* @file git2/config.h
- * @brief Git config management routines
+ * @brief Per-repository, per-user or per-system configuration
* @defgroup git_config Git config management routines
* @ingroup Git
+ *
+ * Git configuration affects the operation of the version control
+ * system, and can be specified on a per-repository basis, in user
+ * settings, or at the system level.
* @{
*/
GIT_BEGIN_DECL
/**
* Priority level of a config file.
+ *
* These priority levels correspond to the natural escalation logic
- * (from higher to lower) when searching for config entries in git.git.
+ * (from higher to lower) when reading or searching for config entries
+ * in git.git. Meaning that for the same key, the configuration in
+ * the local configuration is preferred over the configuration in
+ * the system configuration file.
+ *
+ * Callers can add their own custom configuration, beginning at the
+ * `GIT_CONFIG_LEVEL_APP` level.
+ *
+ * Writes, by default, occur in the highest priority level backend
+ * that is writable. This ordering can be overridden with
+ * `git_config_set_writeorder`.
*
* git_config_open_default() and git_repository_config() honor those
* priority levels as well.
+ *
+ * @see git_config_open_default
+ * @see git_repository_config
*/
typedef enum {
- /** System-wide on Windows, for compatibility with portable git */
+ /**
+ * System-wide on Windows, for compatibility with "Portable Git".
+ */
GIT_CONFIG_LEVEL_PROGRAMDATA = 1,
- /** System-wide configuration file; /etc/gitconfig on Linux systems */
+ /**
+ * System-wide configuration file; `/etc/gitconfig` on Linux.
+ */
GIT_CONFIG_LEVEL_SYSTEM = 2,
- /** XDG compatible configuration file; typically ~/.config/git/config */
+ /**
+ * XDG compatible configuration file; typically
+ * `~/.config/git/config`.
+ */
GIT_CONFIG_LEVEL_XDG = 3,
- /** User-specific configuration file (also called Global configuration
- * file); typically ~/.gitconfig
+ /**
+ * Global configuration file is the user-specific configuration;
+ * typically `~/.gitconfig`.
*/
GIT_CONFIG_LEVEL_GLOBAL = 4,
- /** Repository specific configuration file; $WORK_DIR/.git/config on
- * non-bare repos
+ /**
+ * Local configuration, the repository-specific configuration file;
+ * typically `$GIT_DIR/config`.
*/
GIT_CONFIG_LEVEL_LOCAL = 5,
- /** Application specific configuration file; freely defined by applications
+ /**
+ * Worktree-specific configuration; typically
+ * `$GIT_DIR/config.worktree`.
*/
- GIT_CONFIG_LEVEL_APP = 6,
+ GIT_CONFIG_LEVEL_WORKTREE = 6,
- /** Represents the highest level available config file (i.e. the most
- * specific config file available that actually is loaded)
+ /**
+ * Application-specific configuration file. Callers into libgit2
+ * can add their own configuration beginning at this level.
+ */
+ GIT_CONFIG_LEVEL_APP = 7,
+
+ /**
+ * Not a configuration level; callers can use this value when
+ * querying configuration levels to specify that they want to
+ * have data from the highest-level currently configuration.
+ * This can be used to indicate that callers want the most
+ * specific config file available that actually is loaded.
*/
- GIT_CONFIG_HIGHEST_LEVEL = -1,
+ GIT_CONFIG_HIGHEST_LEVEL = -1
} git_config_level_t;
/**
* An entry in a configuration file
*/
typedef struct git_config_entry {
- const char *name; /**< Name of the entry (normalised) */
- const char *value; /**< String value of the entry */
- unsigned int include_depth; /**< Depth of includes where this variable was found */
- git_config_level_t level; /**< Which config file this was found in */
- void GIT_CALLBACK(free)(struct git_config_entry *entry); /**< Free function for this entry */
- void *payload; /**< Opaque value for the free function. Do not read or write */
+ /** Name of the configuration entry (normalized). */
+ const char *name;
+
+ /** Literal (string) value of the entry. */
+ const char *value;
+
+ /** The type of backend that this entry exists in (eg, "file"). */
+ const char *backend_type;
+
+ /**
+ * The path to the origin of this entry. For config files, this is
+ * the path to the file.
+ */
+ const char *origin_path;
+
+ /** Depth of includes where this variable was found. */
+ unsigned int include_depth;
+
+ /** Configuration level for the file this was found in. */
+ git_config_level_t level;
} git_config_entry;
/**
- * Free a config entry
+ * Free a config entry.
+ *
+ * @param entry The entry to free.
*/
-GIT_EXTERN(void) git_config_entry_free(git_config_entry *);
+GIT_EXTERN(void) git_config_entry_free(git_config_entry *entry);
/**
- * A config enumeration callback
+ * A config enumeration callback.
*
* @param entry the entry currently being enumerated
* @param payload a user-specified pointer
+ * @return non-zero to terminate the iteration.
*/
typedef int GIT_CALLBACK(git_config_foreach_cb)(const git_config_entry *entry, void *payload);
/**
- * An opaque structure for a configuration iterator
+ * An opaque structure for a configuration iterator.
*/
typedef struct git_config_iterator git_config_iterator;
@@ -119,7 +175,7 @@ typedef struct {
* global configuration file.
*
* This method will not guess the path to the xdg compatible
- * config file (.config/git/config).
+ * config file (`.config/git/config`).
*
* @param out Pointer to a user-allocated git_buf in which to store the path
* @return 0 if a global configuration file has been found. Its path will be stored in `out`.
@@ -146,8 +202,8 @@ GIT_EXTERN(int) git_config_find_xdg(git_buf *out);
/**
* Locate the path to the system configuration file
*
- * If /etc/gitconfig doesn't exist, it will look for
- * %PROGRAMFILES%\Git\etc\gitconfig.
+ * If `/etc/gitconfig` doesn't exist, it will look for
+ * `%PROGRAMFILES%\Git\etc\gitconfig`.
*
* @param out Pointer to a user-allocated git_buf in which to store the path
* @return 0 if a system configuration file has been
@@ -158,7 +214,7 @@ GIT_EXTERN(int) git_config_find_system(git_buf *out);
/**
* Locate the path to the configuration file in ProgramData
*
- * Look for the file in %PROGRAMDATA%\Git\config used by portable git.
+ * Look for the file in `%PROGRAMDATA%\Git\config` used by portable git.
*
* @param out Pointer to a user-allocated git_buf in which to store the path
* @return 0 if a ProgramData configuration file has been
@@ -209,9 +265,9 @@ GIT_EXTERN(int) git_config_new(git_config **out);
* @param cfg the configuration to add the file to
* @param path path to the configuration file to add
* @param level the priority level of the backend
- * @param force replace config file at the given priority level
* @param repo optional repository to allow parsing of
* conditional includes
+ * @param force replace config file at the given priority level
* @return 0 on success, GIT_EEXISTS when adding more than one file
* for a given priority level (and force_replace set to 0),
* GIT_ENOTFOUND when the file doesn't exist or error code
@@ -269,9 +325,26 @@ GIT_EXTERN(int) git_config_open_level(
*
* @param out pointer in which to store the config object
* @param config the config object in which to look
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_open_global(git_config **out, git_config *config);
+/**
+ * Set the write order for configuration backends. By default, the
+ * write ordering does not match the read ordering; for example, the
+ * worktree configuration is a high-priority for reading, but is not
+ * written to unless explicitly chosen.
+ *
+ * @param cfg the configuration to change write order of
+ * @param levels the ordering of levels for writing
+ * @param len the length of the levels array
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_config_set_writeorder(
+ git_config *cfg,
+ git_config_level_t *levels,
+ size_t len);
+
/**
* Create a snapshot of the configuration
*
@@ -422,6 +495,7 @@ GIT_EXTERN(int) git_config_get_string_buf(git_buf *out, const git_config *cfg, c
* interested in. Use NULL to indicate all
* @param callback the function to be called on each value of the variable
* @param payload opaque pointer to pass to the callback
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_get_multivar_foreach(const git_config *cfg, const char *name, const char *regexp, git_config_foreach_cb callback, void *payload);
@@ -437,14 +511,15 @@ GIT_EXTERN(int) git_config_get_multivar_foreach(const git_config *cfg, const cha
* @param name the variable's name
* @param regexp regular expression to filter which variables we're
* interested in. Use NULL to indicate all
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_multivar_iterator_new(git_config_iterator **out, const git_config *cfg, const char *name, const char *regexp);
/**
* Return the current entry and advance the iterator
*
- * The pointers returned by this function are valid until the iterator
- * is freed.
+ * The pointers returned by this function are valid until the next call
+ * to `git_config_next` or until the iterator is freed.
*
* @param entry pointer to store the entry
* @param iter the iterator
@@ -515,6 +590,7 @@ GIT_EXTERN(int) git_config_set_string(git_config *cfg, const char *name, const c
* @param name the variable's name
* @param regexp a regular expression to indicate which values to replace
* @param value the new value.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_set_multivar(git_config *cfg, const char *name, const char *regexp, const char *value);
@@ -524,6 +600,7 @@ GIT_EXTERN(int) git_config_set_multivar(git_config *cfg, const char *name, const
*
* @param cfg the configuration
* @param name the variable to delete
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_delete_entry(git_config *cfg, const char *name);
@@ -568,7 +645,8 @@ GIT_EXTERN(int) git_config_foreach(
* `git_config_iterator_free` when done.
*
* @param out pointer to store the iterator
- * @param cfg where to ge the variables from
+ * @param cfg where to get the variables from
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_iterator_new(git_config_iterator **out, const git_config *cfg);
@@ -585,6 +663,7 @@ GIT_EXTERN(int) git_config_iterator_new(git_config_iterator **out, const git_con
* @param out pointer to store the iterator
* @param cfg where to ge the variables from
* @param regexp regular expression to match the names
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_iterator_glob_new(git_config_iterator **out, const git_config *cfg, const char *regexp);
@@ -662,6 +741,7 @@ GIT_EXTERN(int) git_config_get_mapped(
* @param maps array of `git_configmap` objects specifying the possible mappings
* @param map_n number of mapping objects in `maps`
* @param value value to parse
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_lookup_map_value(
int *out,
@@ -678,6 +758,7 @@ GIT_EXTERN(int) git_config_lookup_map_value(
*
* @param out place to store the result of the parsing
* @param value value to parse
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_parse_bool(int *out, const char *value);
@@ -690,6 +771,7 @@ GIT_EXTERN(int) git_config_parse_bool(int *out, const char *value);
*
* @param out place to store the result of the parsing
* @param value value to parse
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_parse_int32(int32_t *out, const char *value);
@@ -702,6 +784,7 @@ GIT_EXTERN(int) git_config_parse_int32(int32_t *out, const char *value);
*
* @param out place to store the result of the parsing
* @param value value to parse
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_parse_int64(int64_t *out, const char *value);
@@ -717,6 +800,7 @@ GIT_EXTERN(int) git_config_parse_int64(int64_t *out, const char *value);
*
* @param out placae to store the result of parsing
* @param value the path to evaluate
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_parse_path(git_buf *out, const char *value);
@@ -735,6 +819,7 @@ GIT_EXTERN(int) git_config_parse_path(git_buf *out, const char *value);
* @param regexp regular expression to match against config names (can be NULL)
* @param callback the function to call on each variable
* @param payload the data to pass to the callback
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_backend_foreach_match(
git_config_backend *backend,
@@ -763,4 +848,5 @@ GIT_EXTERN(int) git_config_lock(git_transaction **tx, git_config *cfg);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/credential.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/credential.h
index 9426a6e..33755ca 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/credential.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/credential.h
@@ -11,9 +11,12 @@
/**
* @file git2/credential.h
- * @brief Git authentication & credential management
+ * @brief Authentication and credential management
* @defgroup git_credential Authentication & credential management
* @ingroup Git
+ *
+ * Credentials specify how to authenticate to a remote system
+ * over HTTPS or SSH.
* @{
*/
GIT_BEGIN_DECL
@@ -75,7 +78,7 @@ typedef enum {
*
* @see git_credential_ssh_key_memory_new
*/
- GIT_CREDENTIAL_SSH_MEMORY = (1u << 6),
+ GIT_CREDENTIAL_SSH_MEMORY = (1u << 6)
} git_credential_t;
/**
@@ -119,7 +122,7 @@ typedef struct git_credential_ssh_custom git_credential_ssh_custom;
* an error. As such, it's easy to get in a loop if you fail to stop providing
* the same incorrect credentials.
*
- * @param out The newly created credential object.
+ * @param[out] out The newly created credential object.
* @param url The resource for which we are demanding a credential.
* @param username_from_url The username that was embedded in a "user\@host"
* remote url, or NULL if not included.
@@ -241,6 +244,18 @@ typedef struct _LIBSSH2_USERAUTH_KBDINT_PROMPT LIBSSH2_USERAUTH_KBDINT_PROMPT;
typedef struct _LIBSSH2_USERAUTH_KBDINT_RESPONSE LIBSSH2_USERAUTH_KBDINT_RESPONSE;
#endif
+/**
+ * Callback for interactive SSH credentials.
+ *
+ * @param name the name
+ * @param name_len the length of the name
+ * @param instruction the authentication instruction
+ * @param instruction_len the length of the instruction
+ * @param num_prompts the number of prompts
+ * @param prompts the prompts
+ * @param responses the responses
+ * @param abstract the abstract
+ */
typedef void GIT_CALLBACK(git_credential_ssh_interactive_cb)(
const char *name,
int name_len,
@@ -254,6 +269,7 @@ typedef void GIT_CALLBACK(git_credential_ssh_interactive_cb)(
* Create a new ssh keyboard-interactive based credential object.
* The supplied credential parameter will be internally duplicated.
*
+ * @param out The newly created credential object.
* @param username Username to use to authenticate.
* @param prompt_callback The callback method used for prompts.
* @param payload Additional data to pass to the callback.
@@ -277,6 +293,18 @@ GIT_EXTERN(int) git_credential_ssh_key_from_agent(
git_credential **out,
const char *username);
+/**
+ * Callback for credential signing.
+ *
+ * @param session the libssh2 session
+ * @param sig the signature
+ * @param sig_len the length of the signature
+ * @param data the data
+ * @param data_len the length of the data
+ * @param abstract the abstract
+ * @return 0 for success, < 0 to indicate an error, > 0 to indicate
+ * no credential was acquired
+ */
typedef int GIT_CALLBACK(git_credential_sign_cb)(
LIBSSH2_SESSION *session,
unsigned char **sig, size_t *sig_len,
@@ -311,4 +339,5 @@ GIT_EXTERN(int) git_credential_ssh_custom_new(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/credential_helpers.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/credential_helpers.h
index 9a70ecb..706558d 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/credential_helpers.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/credential_helpers.h
@@ -39,6 +39,7 @@ typedef struct git_credential_userpass_payload {
* @param allowed_types A bitmask stating which credential types are OK to return.
* @param payload The payload provided when specifying this callback. (This is
* interpreted as a `git_credential_userpass_payload*`.)
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_credential_userpass(
git_credential **out,
@@ -49,4 +50,5 @@ GIT_EXTERN(int) git_credential_userpass(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/deprecated.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/deprecated.h
index 37b9fa0..b8b0238 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/deprecated.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/deprecated.h
@@ -52,7 +52,7 @@
/**
* @file git2/deprecated.h
- * @brief libgit2 deprecated functions and values
+ * @brief Deprecated functions and values
* @ingroup Git
* @{
*/
@@ -69,15 +69,23 @@ GIT_BEGIN_DECL
*/
/**@{*/
+/** @deprecated use GIT_ATTR_VALUE_UNSPECIFIED */
#define GIT_ATTR_UNSPECIFIED_T GIT_ATTR_VALUE_UNSPECIFIED
+/** @deprecated use GIT_ATTR_VALUE_TRUE */
#define GIT_ATTR_TRUE_T GIT_ATTR_VALUE_TRUE
+/** @deprecated use GIT_ATTR_VALUE_FALSE */
#define GIT_ATTR_FALSE_T GIT_ATTR_VALUE_FALSE
+/** @deprecated use GIT_ATTR_VALUE_STRING */
#define GIT_ATTR_VALUE_T GIT_ATTR_VALUE_STRING
+/** @deprecated use GIT_ATTR_IS_TRUE */
#define GIT_ATTR_TRUE(attr) GIT_ATTR_IS_TRUE(attr)
+/** @deprecated use GIT_ATTR_IS_FALSE */
#define GIT_ATTR_FALSE(attr) GIT_ATTR_IS_FALSE(attr)
+/** @deprecated use GIT_ATTR_IS_UNSPECIFIED */
#define GIT_ATTR_UNSPECIFIED(attr) GIT_ATTR_IS_UNSPECIFIED(attr)
+/** @deprecated use git_attr_value_t */
typedef git_attr_value_t git_attr_t;
/**@}*/
@@ -93,6 +101,7 @@ typedef git_attr_value_t git_attr_t;
*/
/**@{*/
+/** @deprecated use GIT_BLOB_FILTER_ATTRIBUTES_FROM_HEAD */
#define GIT_BLOB_FILTER_ATTTRIBUTES_FROM_HEAD GIT_BLOB_FILTER_ATTRIBUTES_FROM_HEAD
GIT_EXTERN(int) git_blob_create_fromworkdir(git_oid *id, git_repository *repo, const char *relative_path);
@@ -285,11 +294,16 @@ typedef int (*git_commit_signing_cb)(
*/
/**@{*/
+/** @deprecated use GIT_CONFIGMAP_FALSE */
#define GIT_CVAR_FALSE GIT_CONFIGMAP_FALSE
+/** @deprecated use GIT_CONFIGMAP_TRUE */
#define GIT_CVAR_TRUE GIT_CONFIGMAP_TRUE
+/** @deprecated use GIT_CONFIGMAP_INT32 */
#define GIT_CVAR_INT32 GIT_CONFIGMAP_INT32
+/** @deprecated use GIT_CONFIGMAP_STRING */
#define GIT_CVAR_STRING GIT_CONFIGMAP_STRING
+/** @deprecated use git_cvar_map */
typedef git_configmap git_cvar_map;
/**@}*/
@@ -313,12 +327,13 @@ typedef enum {
GIT_DIFF_FORMAT_EMAIL_NONE = 0,
/** Don't insert "[PATCH]" in the subject header*/
- GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER = (1 << 0),
-
+ GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER = (1 << 0)
} git_diff_format_email_flags_t;
/**
* Options for controlling the formatting of the generated e-mail.
+ *
+ * @deprecated use `git_email_create_options`
*/
typedef struct {
unsigned int version;
@@ -345,7 +360,9 @@ typedef struct {
const git_signature *author;
} git_diff_format_email_options;
+/** @deprecated use `git_email_create_options` */
#define GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION 1
+/** @deprecated use `git_email_create_options` */
#define GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT {GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION, 0, 1, 1, NULL, NULL, NULL, NULL}
/**
@@ -401,40 +418,76 @@ GIT_EXTERN(int) git_diff_format_email_options_init(
*/
/**@{*/
+/** @deprecated use `GIT_ERROR_NONE` */
#define GITERR_NONE GIT_ERROR_NONE
+/** @deprecated use `GIT_ERROR_NOMEMORY` */
#define GITERR_NOMEMORY GIT_ERROR_NOMEMORY
+/** @deprecated use `GIT_ERROR_OS` */
#define GITERR_OS GIT_ERROR_OS
+/** @deprecated use `GIT_ERROR_INVALID` */
#define GITERR_INVALID GIT_ERROR_INVALID
+/** @deprecated use `GIT_ERROR_REFERENCE` */
#define GITERR_REFERENCE GIT_ERROR_REFERENCE
+/** @deprecated use `GIT_ERROR_ZLIB` */
#define GITERR_ZLIB GIT_ERROR_ZLIB
+/** @deprecated use `GIT_ERROR_REPOSITORY` */
#define GITERR_REPOSITORY GIT_ERROR_REPOSITORY
+/** @deprecated use `GIT_ERROR_CONFIG` */
#define GITERR_CONFIG GIT_ERROR_CONFIG
+/** @deprecated use `GIT_ERROR_REGEX` */
#define GITERR_REGEX GIT_ERROR_REGEX
+/** @deprecated use `GIT_ERROR_ODB` */
#define GITERR_ODB GIT_ERROR_ODB
+/** @deprecated use `GIT_ERROR_INDEX` */
#define GITERR_INDEX GIT_ERROR_INDEX
+/** @deprecated use `GIT_ERROR_OBJECT` */
#define GITERR_OBJECT GIT_ERROR_OBJECT
+/** @deprecated use `GIT_ERROR_NET` */
#define GITERR_NET GIT_ERROR_NET
+/** @deprecated use `GIT_ERROR_TAG` */
#define GITERR_TAG GIT_ERROR_TAG
+/** @deprecated use `GIT_ERROR_TREE` */
#define GITERR_TREE GIT_ERROR_TREE
+/** @deprecated use `GIT_ERROR_INDEXER` */
#define GITERR_INDEXER GIT_ERROR_INDEXER
+/** @deprecated use `GIT_ERROR_SSL` */
#define GITERR_SSL GIT_ERROR_SSL
+/** @deprecated use `GIT_ERROR_SUBMODULE` */
#define GITERR_SUBMODULE GIT_ERROR_SUBMODULE
+/** @deprecated use `GIT_ERROR_THREAD` */
#define GITERR_THREAD GIT_ERROR_THREAD
+/** @deprecated use `GIT_ERROR_STASH` */
#define GITERR_STASH GIT_ERROR_STASH
+/** @deprecated use `GIT_ERROR_CHECKOUT` */
#define GITERR_CHECKOUT GIT_ERROR_CHECKOUT
+/** @deprecated use `GIT_ERROR_FETCHHEAD` */
#define GITERR_FETCHHEAD GIT_ERROR_FETCHHEAD
+/** @deprecated use `GIT_ERROR_MERGE` */
#define GITERR_MERGE GIT_ERROR_MERGE
+/** @deprecated use `GIT_ERROR_SSH` */
#define GITERR_SSH GIT_ERROR_SSH
+/** @deprecated use `GIT_ERROR_FILTER` */
#define GITERR_FILTER GIT_ERROR_FILTER
+/** @deprecated use `GIT_ERROR_REVERT` */
#define GITERR_REVERT GIT_ERROR_REVERT
+/** @deprecated use `GIT_ERROR_CALLBACK` */
#define GITERR_CALLBACK GIT_ERROR_CALLBACK
+/** @deprecated use `GIT_ERROR_CHERRYPICK` */
#define GITERR_CHERRYPICK GIT_ERROR_CHERRYPICK
+/** @deprecated use `GIT_ERROR_DESCRIBE` */
#define GITERR_DESCRIBE GIT_ERROR_DESCRIBE
+/** @deprecated use `GIT_ERROR_REBASE` */
#define GITERR_REBASE GIT_ERROR_REBASE
+/** @deprecated use `GIT_ERROR_FILESYSTEM` */
#define GITERR_FILESYSTEM GIT_ERROR_FILESYSTEM
+/** @deprecated use `GIT_ERROR_PATCH` */
#define GITERR_PATCH GIT_ERROR_PATCH
+/** @deprecated use `GIT_ERROR_WORKTREE` */
#define GITERR_WORKTREE GIT_ERROR_WORKTREE
+/** @deprecated use `GIT_ERROR_SHA1` */
#define GITERR_SHA1 GIT_ERROR_SHA1
+/** @deprecated use `GIT_ERROR_SHA` */
+#define GIT_ERROR_SHA1 GIT_ERROR_SHA
/**
* Return the last `git_error` object that was generated for the
@@ -498,37 +551,63 @@ GIT_EXTERN(void) giterr_set_oom(void);
*/
/**@{*/
+/* The git_idxentry_extended_flag_t enum */
+/** @deprecated use `GIT_INDEX_ENTRY_NAMEMASK` */
#define GIT_IDXENTRY_NAMEMASK GIT_INDEX_ENTRY_NAMEMASK
+/** @deprecated use `GIT_INDEX_ENTRY_STAGEMASK` */
#define GIT_IDXENTRY_STAGEMASK GIT_INDEX_ENTRY_STAGEMASK
+/** @deprecated use `GIT_INDEX_ENTRY_STAGESHIFT` */
#define GIT_IDXENTRY_STAGESHIFT GIT_INDEX_ENTRY_STAGESHIFT
/* The git_indxentry_flag_t enum */
+/** @deprecated use `GIT_INDEX_ENTRY_EXTENDED` */
#define GIT_IDXENTRY_EXTENDED GIT_INDEX_ENTRY_EXTENDED
+/** @deprecated use `GIT_INDEX_ENTRY_VALID` */
#define GIT_IDXENTRY_VALID GIT_INDEX_ENTRY_VALID
+/** @deprecated use `GIT_INDEX_ENTRY_STAGE` */
#define GIT_IDXENTRY_STAGE(E) GIT_INDEX_ENTRY_STAGE(E)
+/** @deprecated use `GIT_INDEX_ENTRY_STAGE_SET` */
#define GIT_IDXENTRY_STAGE_SET(E,S) GIT_INDEX_ENTRY_STAGE_SET(E,S)
/* The git_idxentry_extended_flag_t enum */
+/** @deprecated use `GIT_INDEX_ENTRY_INTENT_TO_ADD` */
#define GIT_IDXENTRY_INTENT_TO_ADD GIT_INDEX_ENTRY_INTENT_TO_ADD
+/** @deprecated use `GIT_INDEX_ENTRY_SKIP_WORKTREE` */
#define GIT_IDXENTRY_SKIP_WORKTREE GIT_INDEX_ENTRY_SKIP_WORKTREE
+/** @deprecated use `GIT_INDEX_ENTRY_INTENT_TO_ADD | GIT_INDEX_ENTRY_SKIP_WORKTREE` */
#define GIT_IDXENTRY_EXTENDED_FLAGS (GIT_INDEX_ENTRY_INTENT_TO_ADD | GIT_INDEX_ENTRY_SKIP_WORKTREE)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_EXTENDED2 (1 << 15)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_UPDATE (1 << 0)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_REMOVE (1 << 1)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_UPTODATE (1 << 2)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_ADDED (1 << 3)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_HASHED (1 << 4)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_UNHASHED (1 << 5)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_WT_REMOVE (1 << 6)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_CONFLICTED (1 << 7)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_UNPACKED (1 << 8)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_NEW_SKIP_WORKTREE (1 << 9)
/* The git_index_capability_t enum */
+/** @deprecated use `GIT_INDEX_CAPABILITY_IGNORE_CASE` */
#define GIT_INDEXCAP_IGNORE_CASE GIT_INDEX_CAPABILITY_IGNORE_CASE
+/** @deprecated use `GIT_INDEX_CAPABILITY_NO_FILEMODE` */
#define GIT_INDEXCAP_NO_FILEMODE GIT_INDEX_CAPABILITY_NO_FILEMODE
+/** @deprecated use `GIT_INDEX_CAPABILITY_NO_SYMLINKS` */
#define GIT_INDEXCAP_NO_SYMLINKS GIT_INDEX_CAPABILITY_NO_SYMLINKS
+/** @deprecated use `GIT_INDEX_CAPABILITY_FROM_OWNER` */
#define GIT_INDEXCAP_FROM_OWNER GIT_INDEX_CAPABILITY_FROM_OWNER
GIT_EXTERN(int) git_index_add_frombuffer(
@@ -548,17 +627,28 @@ GIT_EXTERN(int) git_index_add_frombuffer(
*/
/**@{*/
+/** @deprecate use `git_object_t` */
#define git_otype git_object_t
+/** @deprecate use `GIT_OBJECT_ANY` */
#define GIT_OBJ_ANY GIT_OBJECT_ANY
+/** @deprecate use `GIT_OBJECT_INVALID` */
#define GIT_OBJ_BAD GIT_OBJECT_INVALID
+/** @deprecated this value is not public */
#define GIT_OBJ__EXT1 0
+/** @deprecate use `GIT_OBJECT_COMMIT` */
#define GIT_OBJ_COMMIT GIT_OBJECT_COMMIT
+/** @deprecate use `GIT_OBJECT_TREE` */
#define GIT_OBJ_TREE GIT_OBJECT_TREE
+/** @deprecate use `GIT_OBJECT_BLOB` */
#define GIT_OBJ_BLOB GIT_OBJECT_BLOB
+/** @deprecate use `GIT_OBJECT_TAG` */
#define GIT_OBJ_TAG GIT_OBJECT_TAG
+/** @deprecated this value is not public */
#define GIT_OBJ__EXT2 5
+/** @deprecate use `GIT_OBJECT_OFS_DELTA` */
#define GIT_OBJ_OFS_DELTA GIT_OBJECT_OFS_DELTA
+/** @deprecate use `GIT_OBJECT_REF_DELTA` */
#define GIT_OBJ_REF_DELTA GIT_OBJECT_REF_DELTA
/**
@@ -610,17 +700,27 @@ GIT_EXTERN(int) git_remote_is_valid_name(const char *remote_name);
/**@{*/
/** Basic type of any Git reference. */
+/** @deprecate use `git_reference_t` */
#define git_ref_t git_reference_t
+/** @deprecate use `git_reference_format_t` */
#define git_reference_normalize_t git_reference_format_t
+/** @deprecate use `GIT_REFERENCE_INVALID` */
#define GIT_REF_INVALID GIT_REFERENCE_INVALID
+/** @deprecate use `GIT_REFERENCE_DIRECT` */
#define GIT_REF_OID GIT_REFERENCE_DIRECT
+/** @deprecate use `GIT_REFERENCE_SYMBOLIC` */
#define GIT_REF_SYMBOLIC GIT_REFERENCE_SYMBOLIC
+/** @deprecate use `GIT_REFERENCE_ALL` */
#define GIT_REF_LISTALL GIT_REFERENCE_ALL
+/** @deprecate use `GIT_REFERENCE_FORMAT_NORMAL` */
#define GIT_REF_FORMAT_NORMAL GIT_REFERENCE_FORMAT_NORMAL
+/** @deprecate use `GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL` */
#define GIT_REF_FORMAT_ALLOW_ONELEVEL GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL
+/** @deprecate use `GIT_REFERENCE_FORMAT_REFSPEC_PATTERN` */
#define GIT_REF_FORMAT_REFSPEC_PATTERN GIT_REFERENCE_FORMAT_REFSPEC_PATTERN
+/** @deprecate use `GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND` */
#define GIT_REF_FORMAT_REFSPEC_SHORTHAND GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND
/**
@@ -661,8 +761,11 @@ GIT_EXTERN(int) git_tag_create_frombuffer(
typedef git_revspec_t git_revparse_mode_t;
+/** @deprecated use `GIT_REVSPEC_SINGLE` */
#define GIT_REVPARSE_SINGLE GIT_REVSPEC_SINGLE
+/** @deprecated use `GIT_REVSPEC_RANGE` */
#define GIT_REVPARSE_RANGE GIT_REVSPEC_RANGE
+/** @deprecated use `GIT_REVSPEC_MERGE_BASE` */
#define GIT_REVPARSE_MERGE_BASE GIT_REVSPEC_MERGE_BASE
/**@}*/
@@ -691,14 +794,22 @@ typedef git_credential_sign_cb git_cred_sign_cb;
typedef git_credential_ssh_interactive_cb git_cred_ssh_interactive_callback;
typedef git_credential_ssh_interactive_cb git_cred_ssh_interactive_cb;
+/** @deprecated use `git_credential_t` */
#define git_credtype_t git_credential_t
+/** @deprecated use `GIT_CREDENTIAL_USERPASS_PLAINTEXT` */
#define GIT_CREDTYPE_USERPASS_PLAINTEXT GIT_CREDENTIAL_USERPASS_PLAINTEXT
+/** @deprecated use `GIT_CREDENTIAL_SSH_KEY` */
#define GIT_CREDTYPE_SSH_KEY GIT_CREDENTIAL_SSH_KEY
+/** @deprecated use `GIT_CREDENTIAL_SSH_CUSTOM` */
#define GIT_CREDTYPE_SSH_CUSTOM GIT_CREDENTIAL_SSH_CUSTOM
+/** @deprecated use `GIT_CREDENTIAL_DEFAULT` */
#define GIT_CREDTYPE_DEFAULT GIT_CREDENTIAL_DEFAULT
+/** @deprecated use `GIT_CREDENTIAL_SSH_INTERACTIVE` */
#define GIT_CREDTYPE_SSH_INTERACTIVE GIT_CREDENTIAL_SSH_INTERACTIVE
+/** @deprecated use `GIT_CREDENTIAL_USERNAME` */
#define GIT_CREDTYPE_USERNAME GIT_CREDENTIAL_USERNAME
+/** @deprecated use `GIT_CREDENTIAL_SSH_MEMORY` */
#define GIT_CREDTYPE_SSH_MEMORY GIT_CREDENTIAL_SSH_MEMORY
GIT_EXTERN(void) git_cred_free(git_credential *cred);
@@ -775,6 +886,15 @@ typedef git_trace_cb git_trace_callback;
*/
/**@{*/
+#ifndef GIT_EXPERIMENTAL_SHA256
+/** Deprecated OID "raw size" definition */
+# define GIT_OID_RAWSZ GIT_OID_SHA1_SIZE
+/** Deprecated OID "hex size" definition */
+# define GIT_OID_HEXSZ GIT_OID_SHA1_HEXSIZE
+/** Deprecated OID "hex zero" definition */
+# define GIT_OID_HEX_ZERO GIT_OID_SHA1_HEXZERO
+#endif
+
GIT_EXTERN(int) git_oid_iszero(const git_oid *id);
/**@}*/
@@ -884,6 +1004,24 @@ GIT_EXTERN(void) git_strarray_free(git_strarray *array);
/**@}*/
+/** @name Deprecated Version Constants
+ *
+ * These constants are retained for backward compatibility. The newer
+ * versions of these constants should be preferred in all new code.
+ *
+ * There is no plan to remove these backward compatibility constants at
+ * this time.
+ */
+/**@{*/
+
+#define LIBGIT2_VER_MAJOR LIBGIT2_VERSION_MAJOR
+#define LIBGIT2_VER_MINOR LIBGIT2_VERSION_MINOR
+#define LIBGIT2_VER_REVISION LIBGIT2_VERSION_REVISION
+#define LIBGIT2_VER_PATCH LIBGIT2_VERSION_PATCH
+#define LIBGIT2_VER_PRERELEASE LIBGIT2_VERSION_PRERELEASE
+
+/**@}*/
+
/** @name Deprecated Options Initialization Functions
*
* These functions are retained for backward compatibility. The newer
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/describe.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/describe.h
index 1d2ca14..938c470 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/describe.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/describe.h
@@ -13,10 +13,14 @@
/**
* @file git2/describe.h
- * @brief Git describing routines
+ * @brief Describe a commit in reference to tags
* @defgroup git_describe Git describing routines
* @ingroup Git
* @{
+ *
+ * Describe a commit, showing information about how the current commit
+ * relates to the tags. This can be useful for showing how the current
+ * commit has changed from a particular tagged version of the repository.
*/
GIT_BEGIN_DECL
@@ -30,7 +34,7 @@ GIT_BEGIN_DECL
typedef enum {
GIT_DESCRIBE_DEFAULT,
GIT_DESCRIBE_TAGS,
- GIT_DESCRIBE_ALL,
+ GIT_DESCRIBE_ALL
} git_describe_strategy_t;
/**
@@ -60,10 +64,15 @@ typedef struct git_describe_options {
int show_commit_oid_as_fallback;
} git_describe_options;
+/** Default maximum candidate tags */
#define GIT_DESCRIBE_DEFAULT_MAX_CANDIDATES_TAGS 10
+/** Default abbreviated size */
#define GIT_DESCRIBE_DEFAULT_ABBREVIATED_SIZE 7
+/** Current version for the `git_describe_options` structure */
#define GIT_DESCRIBE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_describe_options` */
#define GIT_DESCRIBE_OPTIONS_INIT { \
GIT_DESCRIBE_OPTIONS_VERSION, \
GIT_DESCRIBE_DEFAULT_MAX_CANDIDATES_TAGS, \
@@ -110,7 +119,10 @@ typedef struct {
const char *dirty_suffix;
} git_describe_format_options;
+/** Current version for the `git_describe_format_options` structure */
#define GIT_DESCRIBE_FORMAT_OPTIONS_VERSION 1
+
+/** Static constructor for `git_describe_format_options` */
#define GIT_DESCRIBE_FORMAT_OPTIONS_INIT { \
GIT_DESCRIBE_FORMAT_OPTIONS_VERSION, \
GIT_DESCRIBE_DEFAULT_ABBREVIATED_SIZE, \
@@ -142,6 +154,7 @@ typedef struct git_describe_result git_describe_result;
* you're done with it.
* @param committish a committish to describe
* @param opts the lookup options (or NULL for defaults)
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_describe_commit(
git_describe_result **result,
@@ -152,13 +165,14 @@ GIT_EXTERN(int) git_describe_commit(
* Describe a commit
*
* Perform the describe operation on the current commit and the
- * worktree. After peforming describe on HEAD, a status is run and the
+ * worktree. After performing describe on HEAD, a status is run and the
* description is considered to be dirty if there are.
*
* @param out pointer to store the result. You must free this once
* you're done with it.
* @param repo the repository in which to perform the describe
* @param opts the lookup options (or NULL for defaults)
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_describe_workdir(
git_describe_result **out,
@@ -172,6 +186,7 @@ GIT_EXTERN(int) git_describe_workdir(
* @param result the result from `git_describe_commit()` or
* `git_describe_workdir()`.
* @param opts the formatting options (or NULL for defaults)
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_describe_format(
git_buf *out,
@@ -180,6 +195,8 @@ GIT_EXTERN(int) git_describe_format(
/**
* Free the describe result.
+ *
+ * @param result The result to free.
*/
GIT_EXTERN(void) git_describe_result_free(git_describe_result *result);
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/diff.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/diff.h
index a14c019..b12e8ab 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/diff.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/diff.h
@@ -15,7 +15,7 @@
/**
* @file git2/diff.h
- * @brief Git tree and file differencing routines.
+ * @brief Indicate the differences between two versions of the repository
* @ingroup Git
* @{
*/
@@ -170,7 +170,7 @@ typedef enum {
/** Include the necessary deflate / delta information so that `git-apply`
* can apply given diff information to binary files.
*/
- GIT_DIFF_SHOW_BINARY = (1u << 30),
+ GIT_DIFF_SHOW_BINARY = (1u << 30)
} git_diff_option_t;
/**
@@ -208,6 +208,7 @@ typedef enum {
GIT_DIFF_FLAG_NOT_BINARY = (1u << 1), /**< file(s) treated as text data */
GIT_DIFF_FLAG_VALID_ID = (1u << 2), /**< `id` value is known correct */
GIT_DIFF_FLAG_EXISTS = (1u << 3), /**< file exists at this side of the delta */
+ GIT_DIFF_FLAG_VALID_SIZE = (1u << 4) /**< file size value is known correct */
} git_diff_flag_t;
/**
@@ -231,7 +232,7 @@ typedef enum {
GIT_DELTA_UNTRACKED = 7, /**< entry is untracked item in workdir */
GIT_DELTA_TYPECHANGE = 8, /**< type of entry changed between old and new */
GIT_DELTA_UNREADABLE = 9, /**< entry is unreadable */
- GIT_DELTA_CONFLICTED = 10, /**< entry in the index is conflicted */
+ GIT_DELTA_CONFLICTED = 10 /**< entry in the index is conflicted */
} git_delta_t;
/**
@@ -273,7 +274,7 @@ typedef struct {
/**
* Represents the known length of the `id` field, when
- * converted to a hex string. It is generally `GIT_OID_HEXSZ`, unless this
+ * converted to a hex string. It is generally `GIT_OID_SHA1_HEXSIZE`, unless this
* delta was created from reading a patch file, in which case it may be
* abbreviated to something reasonable, like 7 characters.
*/
@@ -341,6 +342,12 @@ typedef struct {
* diff process continues.
* - returns 0, the delta is inserted into the diff, and the diff process
* continues.
+ *
+ * @param diff_so_far the diff structure as it currently exists
+ * @param delta_to_add the delta that is to be added
+ * @param matched_pathspec the pathspec
+ * @param payload the user-specified callback payload
+ * @return 0 on success, 1 to skip this delta, or an error code
*/
typedef int GIT_CALLBACK(git_diff_notify_cb)(
const git_diff *diff_so_far,
@@ -356,7 +363,8 @@ typedef int GIT_CALLBACK(git_diff_notify_cb)(
* @param diff_so_far The diff being generated.
* @param old_path The path to the old file or NULL.
* @param new_path The path to the new file or NULL.
- * @return Non-zero to abort the diff.
+ * @param payload the user-specified callback payload
+ * @return 0 or an error code
*/
typedef int GIT_CALLBACK(git_diff_progress_cb)(
const git_diff *diff_so_far,
@@ -420,6 +428,22 @@ typedef struct {
*/
uint32_t interhunk_lines;
+ /**
+ * The object ID type to emit in diffs; this is used by functions
+ * that operate without a repository - namely `git_diff_buffers`,
+ * or `git_diff_blobs` and `git_diff_blob_to_buffer` when one blob
+ * is `NULL`.
+ *
+ * This may be omitted (set to `0`). If a repository is available,
+ * the object ID format of the repository will be used. If no
+ * repository is available then the default is `GIT_OID_SHA`.
+ *
+ * If this is specified and a repository is available, then the
+ * specified `oid_type` must match the repository's object ID
+ * format.
+ */
+ git_oid_t oid_type;
+
/**
* The abbreviation length to use when formatting object ids.
* Defaults to the value of 'core.abbrev' from the config, or 7 if unset.
@@ -446,10 +470,10 @@ typedef struct {
const char *new_prefix;
} git_diff_options;
-/* The current version of the diff options structure */
+/** The current version of the diff options structure */
#define GIT_DIFF_OPTIONS_VERSION 1
-/* Stack initializer for diff options. Alternatively use
+/** Stack initializer for diff options. Alternatively use
* `git_diff_options_init` programmatic initialization.
*/
#define GIT_DIFF_OPTIONS_INIT \
@@ -475,12 +499,14 @@ GIT_EXTERN(int) git_diff_options_init(
* @param delta A pointer to the delta data for the file
* @param progress Goes from 0 to 1 over the diff
* @param payload User-specified pointer from foreach function
+ * @return 0 or an error code
*/
typedef int GIT_CALLBACK(git_diff_file_cb)(
const git_diff_delta *delta,
float progress,
void *payload);
+/** Maximum size of the hunk header */
#define GIT_DIFF_HUNK_HEADER_SIZE 128
/**
@@ -497,7 +523,7 @@ typedef enum {
GIT_DIFF_BINARY_LITERAL,
/** The binary data is the delta from one side to the other. */
- GIT_DIFF_BINARY_DELTA,
+ GIT_DIFF_BINARY_DELTA
} git_diff_binary_t;
/** The contents of one of the files in a binary diff. */
@@ -541,6 +567,11 @@ typedef struct {
/**
* When iterating over a diff, callback that will be made for
* binary content within the diff.
+ *
+ * @param delta the delta
+ * @param binary the binary content
+ * @param payload the user-specified callback payload
+ * @return 0 or an error code
*/
typedef int GIT_CALLBACK(git_diff_binary_cb)(
const git_diff_delta *delta,
@@ -567,6 +598,11 @@ typedef struct {
/**
* When iterating over a diff, callback that will be made per hunk.
+ *
+ * @param delta the delta
+ * @param hunk the hunk
+ * @param payload the user-specified callback payload
+ * @return 0 or an error code
*/
typedef int GIT_CALLBACK(git_diff_hunk_cb)(
const git_diff_delta *delta,
@@ -628,6 +664,12 @@ typedef struct {
* When printing a diff, callback that will be made to output each line
* of text. This uses some extra GIT_DIFF_LINE_... constants for output
* of lines of file and hunk headers.
+ *
+ * @param delta the delta that contains the line
+ * @param hunk the hunk that contains the line
+ * @param line the line in the diff
+ * @param payload the user-specified callback payload
+ * @return 0 or an error code
*/
typedef int GIT_CALLBACK(git_diff_line_cb)(
const git_diff_delta *delta, /**< delta that contains this data */
@@ -706,7 +748,7 @@ typedef enum {
* GIT_DIFF_INCLUDE_UNMODIFIED flag. If you do not want UNMODIFIED
* records in the final result, pass this flag to have them removed.
*/
- GIT_DIFF_FIND_REMOVE_UNMODIFIED = (1u << 16),
+ GIT_DIFF_FIND_REMOVE_UNMODIFIED = (1u << 16)
} git_diff_find_t;
/**
@@ -758,7 +800,7 @@ typedef struct {
uint16_t copy_threshold;
/**
- * Treshold below which similar files will be split into a delete/add pair.
+ * Threshold below which similar files will be split into a delete/add pair.
* This is equivalent to the last part of the -B option. Defaults to 60.
*/
uint16_t break_rewrite_threshold;
@@ -768,7 +810,7 @@ typedef struct {
*
* This is a little different from the `-l` option from Git because we
* will still process up to this many matches before abandoning the search.
- * Defaults to 200.
+ * Defaults to 1000.
*/
size_t rename_limit;
@@ -785,7 +827,10 @@ typedef struct {
git_diff_similarity_metric *metric;
} git_diff_find_options;
+/** Current version for the `git_diff_find_options` structure */
#define GIT_DIFF_FIND_OPTIONS_VERSION 1
+
+/** Static constructor for `git_diff_find_options` */
#define GIT_DIFF_FIND_OPTIONS_INIT {GIT_DIFF_FIND_OPTIONS_VERSION}
/**
@@ -831,6 +876,7 @@ GIT_EXTERN(void) git_diff_free(git_diff *diff);
* @param old_tree A git_tree object to diff from, or NULL for empty tree.
* @param new_tree A git_tree object to diff to, or NULL for empty tree.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_tree_to_tree(
git_diff **diff,
@@ -857,6 +903,7 @@ GIT_EXTERN(int) git_diff_tree_to_tree(
* @param old_tree A git_tree object to diff from, or NULL for empty tree.
* @param index The index to diff with; repo index used if NULL.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_tree_to_index(
git_diff **diff,
@@ -884,6 +931,7 @@ GIT_EXTERN(int) git_diff_tree_to_index(
* @param repo The repository.
* @param index The index to diff from; repo index used if NULL.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_index_to_workdir(
git_diff **diff,
@@ -913,6 +961,7 @@ GIT_EXTERN(int) git_diff_index_to_workdir(
* @param repo The repository containing the tree.
* @param old_tree A git_tree object to diff from, or NULL for empty tree.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_tree_to_workdir(
git_diff **diff,
@@ -932,6 +981,7 @@ GIT_EXTERN(int) git_diff_tree_to_workdir(
* @param repo The repository containing the tree.
* @param old_tree A git_tree object to diff from, or NULL for empty tree.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_tree_to_workdir_with_index(
git_diff **diff,
@@ -950,6 +1000,7 @@ GIT_EXTERN(int) git_diff_tree_to_workdir_with_index(
* @param old_index A git_index object to diff from.
* @param new_index A git_index object to diff to.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_index_to_index(
git_diff **diff,
@@ -970,6 +1021,7 @@ GIT_EXTERN(int) git_diff_index_to_index(
*
* @param onto Diff to merge into.
* @param from Diff to merge.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_merge(
git_diff *onto,
@@ -1107,7 +1159,7 @@ typedef enum {
GIT_DIFF_FORMAT_RAW = 3u, /**< like git diff --raw */
GIT_DIFF_FORMAT_NAME_ONLY = 4u, /**< like git diff --name-only */
GIT_DIFF_FORMAT_NAME_STATUS = 5u, /**< like git diff --name-status */
- GIT_DIFF_FORMAT_PATCH_ID = 6u, /**< git diff as used by git patch-id */
+ GIT_DIFF_FORMAT_PATCH_ID = 6u /**< git diff as used by git patch-id */
} git_diff_format_t;
/**
@@ -1145,9 +1197,8 @@ GIT_EXTERN(int) git_diff_to_buf(
/**@}*/
-
/*
- * Misc
+ * Low-level file comparison, invoking callbacks per difference.
*/
/**
@@ -1263,6 +1314,25 @@ GIT_EXTERN(int) git_diff_buffers(
git_diff_line_cb line_cb,
void *payload);
+/* Patch file parsing. */
+
+/**
+ * Options for parsing a diff / patch file.
+ */
+typedef struct {
+ unsigned int version;
+ git_oid_t oid_type;
+} git_diff_parse_options;
+
+/** The current version of the diff parse options structure */
+#define GIT_DIFF_PARSE_OPTIONS_VERSION 1
+
+/** Stack initializer for diff parse options. Alternatively use
+ * `git_diff_parse_options_init` programmatic initialization.
+ */
+#define GIT_DIFF_PARSE_OPTIONS_INIT \
+ { GIT_DIFF_PARSE_OPTIONS_VERSION, GIT_OID_DEFAULT }
+
/**
* Read the contents of a git patch file into a `git_diff` object.
*
@@ -1285,7 +1355,11 @@ GIT_EXTERN(int) git_diff_buffers(
GIT_EXTERN(int) git_diff_from_buffer(
git_diff **out,
const char *content,
- size_t content_len);
+ size_t content_len
+#ifdef GIT_EXPERIMENTAL_SHA256
+ , git_diff_parse_options *opts
+#endif
+ );
/**
* This is an opaque structure which is allocated by `git_diff_get_stats`.
@@ -1311,13 +1385,13 @@ typedef enum {
GIT_DIFF_STATS_NUMBER = (1u << 2),
/** Extended header information such as creations, renames and mode changes, equivalent of `--summary` */
- GIT_DIFF_STATS_INCLUDE_SUMMARY = (1u << 3),
+ GIT_DIFF_STATS_INCLUDE_SUMMARY = (1u << 3)
} git_diff_stats_format_t;
/**
* Accumulate diff statistics for all patches.
*
- * @param out Structure containg the diff statistics.
+ * @param out Structure containing the diff statistics.
* @param diff A git_diff generated by one of the above functions.
* @return 0 on success; non-zero on error
*/
@@ -1386,7 +1460,10 @@ typedef struct git_diff_patchid_options {
unsigned int version;
} git_diff_patchid_options;
+/** Current version for the `git_diff_patchid_options` structure */
#define GIT_DIFF_PATCHID_OPTIONS_VERSION 1
+
+/** Static constructor for `git_diff_patchid_options` */
#define GIT_DIFF_PATCHID_OPTIONS_INIT { GIT_DIFF_PATCHID_OPTIONS_VERSION }
/**
@@ -1424,8 +1501,7 @@ GIT_EXTERN(int) git_diff_patchid_options_init(
*/
GIT_EXTERN(int) git_diff_patchid(git_oid *out, git_diff *diff, git_diff_patchid_options *opts);
-GIT_END_DECL
-
/** @} */
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/email.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/email.h
index b56be5d..ad37e42 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/email.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/email.h
@@ -8,10 +8,11 @@
#define INCLUDE_git_email_h__
#include "common.h"
+#include "diff.h"
/**
* @file git2/email.h
- * @brief Git email formatting and application routines.
+ * @brief Produce email-ready patches
* @ingroup Git
* @{
*/
@@ -34,7 +35,7 @@ typedef enum {
GIT_EMAIL_CREATE_ALWAYS_NUMBER = (1u << 1),
/** Do not perform rename or similarity detection. */
- GIT_EMAIL_CREATE_NO_RENAMES = (1u << 2),
+ GIT_EMAIL_CREATE_NO_RENAMES = (1u << 2)
} git_email_create_flags_t;
/**
@@ -70,11 +71,14 @@ typedef struct {
size_t reroll_number;
} git_email_create_options;
-/*
+/** Current version for the `git_email_create_options` structure */
+#define GIT_EMAIL_CREATE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_email_create_options`
+ *
* By default, our options include rename detection and binary
* diffs to match `git format-patch`.
*/
-#define GIT_EMAIL_CREATE_OPTIONS_VERSION 1
#define GIT_EMAIL_CREATE_OPTIONS_INIT \
{ \
GIT_EMAIL_CREATE_OPTIONS_VERSION, \
@@ -83,30 +87,6 @@ typedef struct {
GIT_DIFF_FIND_OPTIONS_INIT \
}
-/**
- * Create a diff for a commit in mbox format for sending via email.
- *
- * @param out buffer to store the e-mail patch in
- * @param diff the changes to include in the email
- * @param patch_idx the patch index
- * @param patch_count the total number of patches that will be included
- * @param commit_id the commit id for this change
- * @param summary the commit message for this change
- * @param body optional text to include above the diffstat
- * @param author the person who authored this commit
- * @param opts email creation options
- */
-GIT_EXTERN(int) git_email_create_from_diff(
- git_buf *out,
- git_diff *diff,
- size_t patch_idx,
- size_t patch_count,
- const git_oid *commit_id,
- const char *summary,
- const char *body,
- const git_signature *author,
- const git_email_create_options *opts);
-
/**
* Create a diff for a commit in mbox format for sending via email.
* The commit must not be a merge commit.
@@ -114,14 +94,14 @@ GIT_EXTERN(int) git_email_create_from_diff(
* @param out buffer to store the e-mail patch in
* @param commit commit to create a patch for
* @param opts email creation options
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_email_create_from_commit(
git_buf *out,
git_commit *commit,
const git_email_create_options *opts);
-GIT_END_DECL
-
/** @} */
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/errors.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/errors.h
index de51582..1141390 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/errors.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/errors.h
@@ -11,7 +11,7 @@
/**
* @file git2/errors.h
- * @brief Git error handling routines and variables
+ * @brief Error handling routines and variables
* @ingroup Git
* @{
*/
@@ -19,25 +19,32 @@ GIT_BEGIN_DECL
/** Generic return codes */
typedef enum {
- GIT_OK = 0, /**< No error */
+ /**
+ * No error occurred; the call was successful.
+ */
+ GIT_OK = 0,
+
+ /**
+ * An error occurred; call `git_error_last` for more information.
+ */
+ GIT_ERROR = -1,
- GIT_ERROR = -1, /**< Generic error */
- GIT_ENOTFOUND = -3, /**< Requested object could not be found */
- GIT_EEXISTS = -4, /**< Object exists preventing operation */
- GIT_EAMBIGUOUS = -5, /**< More than one object matches */
- GIT_EBUFS = -6, /**< Output buffer too short to hold data */
+ GIT_ENOTFOUND = -3, /**< Requested object could not be found. */
+ GIT_EEXISTS = -4, /**< Object exists preventing operation. */
+ GIT_EAMBIGUOUS = -5, /**< More than one object matches. */
+ GIT_EBUFS = -6, /**< Output buffer too short to hold data. */
/**
* GIT_EUSER is a special error that is never generated by libgit2
* code. You can return it from a callback (e.g to stop an iteration)
* to know that it was generated by the callback and not by libgit2.
*/
- GIT_EUSER = -7,
+ GIT_EUSER = -7,
- GIT_EBAREREPO = -8, /**< Operation not allowed on bare repository */
- GIT_EUNBORNBRANCH = -9, /**< HEAD refers to branch with no commits */
- GIT_EUNMERGED = -10, /**< Merge in progress prevented operation */
- GIT_ENONFASTFORWARD = -11, /**< Reference was not fast-forwardable */
+ GIT_EBAREREPO = -8, /**< Operation not allowed on bare repository. */
+ GIT_EUNBORNBRANCH = -9, /**< HEAD refers to branch with no commits. */
+ GIT_EUNMERGED = -10, /**< Merge in progress prevented operation */
+ GIT_ENONFASTFORWARD = -11, /**< Reference was not fast-forwardable */
GIT_EINVALIDSPEC = -12, /**< Name/ref spec was not in a valid format */
GIT_ECONFLICT = -13, /**< Checkout conflicts prevented operation */
GIT_ELOCKED = -14, /**< Lock file prevented operation */
@@ -58,20 +65,17 @@ typedef enum {
GIT_EMISMATCH = -33, /**< Hashsum mismatch in object */
GIT_EINDEXDIRTY = -34, /**< Unsaved changes in the index would be overwritten */
GIT_EAPPLYFAIL = -35, /**< Patch application failed */
+ GIT_EOWNER = -36, /**< The object is not owned by the current user */
+ GIT_TIMEOUT = -37, /**< The operation timed out */
+ GIT_EUNCHANGED = -38, /**< There were no changes */
+ GIT_ENOTSUPPORTED = -39, /**< An option is not supported */
+ GIT_EREADONLY = -40 /**< The subject is read-only */
} git_error_code;
/**
- * Structure to store extra details of the last error that occurred.
- *
- * This is kept on a per-thread basis if GIT_THREADS was defined when the
- * library was build, otherwise one is kept globally for the library
+ * Error classes are the category of error. They reflect the area of the
+ * code where an error occurred.
*/
-typedef struct {
- char *message;
- int klass;
-} git_error;
-
-/** Error classes */
typedef enum {
GIT_ERROR_NONE = 0,
GIT_ERROR_NOMEMORY,
@@ -106,59 +110,45 @@ typedef enum {
GIT_ERROR_FILESYSTEM,
GIT_ERROR_PATCH,
GIT_ERROR_WORKTREE,
- GIT_ERROR_SHA1,
+ GIT_ERROR_SHA,
GIT_ERROR_HTTP,
- GIT_ERROR_INTERNAL
+ GIT_ERROR_INTERNAL,
+ GIT_ERROR_GRAFTS
} git_error_t;
/**
- * Return the last `git_error` object that was generated for the
- * current thread.
- *
- * The default behaviour of this function is to return NULL if no previous error has occurred.
- * However, libgit2's error strings are not cleared aggressively, so a prior
- * (unrelated) error may be returned. This can be avoided by only calling
- * this function if the prior call to a libgit2 API returned an error.
+ * Structure to store extra details of the last error that occurred.
*
- * @return A git_error object.
- */
-GIT_EXTERN(const git_error *) git_error_last(void);
-
-/**
- * Clear the last library error that occurred for this thread.
+ * This is kept on a per-thread basis if GIT_THREADS was defined when the
+ * library was build, otherwise one is kept globally for the library
*/
-GIT_EXTERN(void) git_error_clear(void);
+typedef struct {
+ char *message; /**< The error message for the last error. */
+ int klass; /**< The category of the last error. @type git_error_t */
+} git_error;
/**
- * Set the error message string for this thread.
+ * Return the last `git_error` object that was generated for the
+ * current thread.
*
- * This function is public so that custom ODB backends and the like can
- * relay an error message through libgit2. Most regular users of libgit2
- * will never need to call this function -- actually, calling it in most
- * circumstances (for example, calling from within a callback function)
- * will just end up having the value overwritten by libgit2 internals.
+ * This function will never return NULL.
*
- * This error message is stored in thread-local storage and only applies
- * to the particular thread that this libgit2 call is made from.
+ * Callers should not rely on this to determine whether an error has
+ * occurred. For error checking, callers should examine the return
+ * codes of libgit2 functions.
*
- * @param error_class One of the `git_error_t` enum above describing the
- * general subsystem that is responsible for the error.
- * @param string The formatted error message to keep
- * @return 0 on success or -1 on failure
- */
-GIT_EXTERN(int) git_error_set_str(int error_class, const char *string);
-
-/**
- * Set the error message to a special value for memory allocation failure.
+ * This call can only reliably report error messages when an error
+ * has occurred. (It may contain stale information if it is called
+ * after a different function that succeeds.)
+ *
+ * The memory for this object is managed by libgit2. It should not
+ * be freed.
*
- * The normal `git_error_set_str()` function attempts to `strdup()` the
- * string that is passed in. This is not a good idea when the error in
- * question is a memory allocation failure. That circumstance has a
- * special setter function that sets the error string to a known and
- * statically allocated internal value.
+ * @return A pointer to a `git_error` object that describes the error.
*/
-GIT_EXTERN(void) git_error_set_oom(void);
+GIT_EXTERN(const git_error *) git_error_last(void);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/experimental.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/experimental.h
new file mode 100644
index 0000000..543f62f
--- /dev/null
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/experimental.h
@@ -0,0 +1,13 @@
+/*
+ * Copyright (C) the libgit2 contributors. All rights reserved.
+ *
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
+ * a Linking Exception. For full terms see the included COPYING file.
+ */
+
+#ifndef INCLUDE_experimental_h__
+#define INCLUDE_experimental_h__
+
+/* #undef GIT_EXPERIMENTAL_SHA256 */
+
+#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/filter.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/filter.h
index 0465e5b..cf6c5f5 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/filter.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/filter.h
@@ -14,9 +14,15 @@
/**
* @file git2/filter.h
- * @brief Git filter APIs
- *
+ * @brief Filters modify files during checkout or commit
* @ingroup Git
+ *
+ * During checkout, filters update a file from a "canonical" state to
+ * a format appropriate for the local filesystem; during commit, filters
+ * produce the canonical state. For example, on Windows, the line ending
+ * filters _may_ take a canonical state (with Unix-style newlines) in
+ * the repository, and place the contents on-disk with Windows-style
+ * `\r\n` line endings.
* @{
*/
GIT_BEGIN_DECL
@@ -32,7 +38,7 @@ typedef enum {
GIT_FILTER_TO_WORKTREE = 0,
GIT_FILTER_SMUDGE = GIT_FILTER_TO_WORKTREE,
GIT_FILTER_TO_ODB = 1,
- GIT_FILTER_CLEAN = GIT_FILTER_TO_ODB,
+ GIT_FILTER_CLEAN = GIT_FILTER_TO_ODB
} git_filter_mode_t;
/**
@@ -54,7 +60,7 @@ typedef enum {
* Load attributes from `.gitattributes` in a given commit.
* This can only be specified in a `git_filter_options`.
*/
- GIT_FILTER_ATTRIBUTES_FROM_COMMIT = (1u << 3),
+ GIT_FILTER_ATTRIBUTES_FROM_COMMIT = (1u << 3)
} git_filter_flag_t;
/**
@@ -79,8 +85,11 @@ typedef struct {
git_oid attr_commit_id;
} git_filter_options;
- #define GIT_FILTER_OPTIONS_VERSION 1
- #define GIT_FILTER_OPTIONS_INIT {GIT_FILTER_OPTIONS_VERSION}
+/** Current version for the `git_filter_options` structure */
+#define GIT_FILTER_OPTIONS_VERSION 1
+
+/** Static constructor for `git_filter_options` */
+#define GIT_FILTER_OPTIONS_INIT {GIT_FILTER_OPTIONS_VERSION}
/**
* A filter that can transform file data
@@ -196,6 +205,7 @@ GIT_EXTERN(int) git_filter_list_apply_to_buffer(
* @param repo the repository in which to perform the filtering
* @param path the path of the file to filter, a relative path will be
* taken as relative to the workdir
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_filter_list_apply_to_file(
git_buf *out,
@@ -209,6 +219,7 @@ GIT_EXTERN(int) git_filter_list_apply_to_file(
* @param out buffer into which to store the filtered file
* @param filters the list of filters to apply
* @param blob the blob to filter
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_filter_list_apply_to_blob(
git_buf *out,
@@ -222,6 +233,7 @@ GIT_EXTERN(int) git_filter_list_apply_to_blob(
* @param buffer the buffer to filter
* @param len the size of the buffer
* @param target the stream into which the data will be written
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_filter_list_stream_buffer(
git_filter_list *filters,
@@ -237,6 +249,7 @@ GIT_EXTERN(int) git_filter_list_stream_buffer(
* @param path the path of the file to filter, a relative path will be
* taken as relative to the workdir
* @param target the stream into which the data will be written
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_filter_list_stream_file(
git_filter_list *filters,
@@ -250,6 +263,7 @@ GIT_EXTERN(int) git_filter_list_stream_file(
* @param filters the list of filters to apply
* @param blob the blob to filter
* @param target the stream into which the data will be written
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_filter_list_stream_blob(
git_filter_list *filters,
@@ -263,9 +277,7 @@ GIT_EXTERN(int) git_filter_list_stream_blob(
*/
GIT_EXTERN(void) git_filter_list_free(git_filter_list *filters);
-
-GIT_END_DECL
-
/** @} */
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/global.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/global.h
index 2a87e10..f15eb2d 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/global.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/global.h
@@ -9,6 +9,12 @@
#include "common.h"
+/**
+ * @file git2/global.h
+ * @brief libgit2 library initializer and shutdown functionality
+ * @ingroup Git
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -32,7 +38,7 @@ GIT_EXTERN(int) git_libgit2_init(void);
* many times as `git_libgit2_init()` was called - it will return the
* number of remainining initializations that have not been shutdown
* (after this one).
- *
+ *
* @return the number of remaining initializations of the library, or an
* error code.
*/
@@ -40,5 +46,6 @@ GIT_EXTERN(int) git_libgit2_shutdown(void);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/graph.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/graph.h
index 712ae47..1792020 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/graph.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/graph.h
@@ -13,7 +13,7 @@
/**
* @file git2/graph.h
- * @brief Git graph traversal routines
+ * @brief Graph traversal routines
* @defgroup git_revwalk Git graph traversal routines
* @ingroup Git
* @{
@@ -33,6 +33,7 @@ GIT_BEGIN_DECL
* @param repo the repository where the commits exist
* @param local the commit for local
* @param upstream the commit for upstream
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_graph_ahead_behind(size_t *ahead, size_t *behind, git_repository *repo, const git_oid *local, const git_oid *upstream);
@@ -60,8 +61,8 @@ GIT_EXTERN(int) git_graph_descendant_of(
*
* @param repo the repository where the commits exist
* @param commit a previously loaded commit
- * @param length the number of commits in the provided `descendant_array`
* @param descendant_array oids of the commits
+ * @param length the number of commits in the provided `descendant_array`
* @return 1 if the given commit is an ancestor of any of the given potential
* descendants, 0 if not, error code otherwise.
*/
@@ -73,4 +74,5 @@ GIT_EXTERN(int) git_graph_reachable_from_any(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/ignore.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/ignore.h
index f5143f3..730f221 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/ignore.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/ignore.h
@@ -10,6 +10,15 @@
#include "common.h"
#include "types.h"
+/**
+ * @file git2/ignore.h
+ * @brief Ignore particular untracked files
+ * @ingroup Git
+ * @{
+ *
+ * When examining the repository status, git can optionally ignore
+ * specified untracked files.
+ */
GIT_BEGIN_DECL
/**
@@ -29,7 +38,7 @@ GIT_BEGIN_DECL
* This would add three rules to the ignores.
*
* @param repo The repository to add ignore rules to.
- * @param rules Text of rules, a la the contents of a .gitignore file.
+ * @param rules Text of rules, the contents to add on a .gitignore file.
* It is okay to have multiple rules in the text; if so,
* each rule should be terminated with a newline.
* @return 0 on success
@@ -73,6 +82,7 @@ GIT_EXTERN(int) git_ignore_path_is_ignored(
git_repository *repo,
const char *path);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/index.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/index.h
index 532a520..0adff1a 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/index.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/index.h
@@ -15,9 +15,14 @@
/**
* @file git2/index.h
- * @brief Git index parsing and manipulation routines
+ * @brief Index (aka "cache" aka "staging area")
* @defgroup git_index Git index parsing and manipulation routines
* @ingroup Git
+ *
+ * The index (or "cache", or "staging area") is the contents of the
+ * next commit. In addition, the index stores other data, such as
+ * conflicts that occurred during the last merge operation, and
+ * the "treecache" to speed up various on-disk operations.
* @{
*/
GIT_BEGIN_DECL
@@ -77,8 +82,11 @@ typedef struct git_index_entry {
* data in the `flags`.
*/
+/** Mask for name length */
#define GIT_INDEX_ENTRY_NAMEMASK (0x0fff)
+/** Mask for index entry stage */
#define GIT_INDEX_ENTRY_STAGEMASK (0x3000)
+/** Shift bits for index entry */
#define GIT_INDEX_ENTRY_STAGESHIFT 12
/**
@@ -86,12 +94,20 @@ typedef struct git_index_entry {
*/
typedef enum {
GIT_INDEX_ENTRY_EXTENDED = (0x4000),
- GIT_INDEX_ENTRY_VALID = (0x8000),
+ GIT_INDEX_ENTRY_VALID = (0x8000)
} git_index_entry_flag_t;
+/**
+ * Macro to get the stage value (0 for the "main index", or a conflict
+ * value) from an index entry.
+ */
#define GIT_INDEX_ENTRY_STAGE(E) \
(((E)->flags & GIT_INDEX_ENTRY_STAGEMASK) >> GIT_INDEX_ENTRY_STAGESHIFT)
+/**
+ * Macro to set the stage value (0 for the "main index", or a conflict
+ * value) for an index entry.
+ */
#define GIT_INDEX_ENTRY_STAGE_SET(E,S) do { \
(E)->flags = ((E)->flags & ~GIT_INDEX_ENTRY_STAGEMASK) | \
(((S) & 0x03) << GIT_INDEX_ENTRY_STAGESHIFT); } while (0)
@@ -119,7 +135,7 @@ typedef enum {
GIT_INDEX_ENTRY_EXTENDED_FLAGS = (GIT_INDEX_ENTRY_INTENT_TO_ADD | GIT_INDEX_ENTRY_SKIP_WORKTREE),
- GIT_INDEX_ENTRY_UPTODATE = (1 << 2),
+ GIT_INDEX_ENTRY_UPTODATE = (1 << 2)
} git_index_entry_extended_flag_t;
/** Capabilities of system that affect index actions. */
@@ -127,11 +143,18 @@ typedef enum {
GIT_INDEX_CAPABILITY_IGNORE_CASE = 1,
GIT_INDEX_CAPABILITY_NO_FILEMODE = 2,
GIT_INDEX_CAPABILITY_NO_SYMLINKS = 4,
- GIT_INDEX_CAPABILITY_FROM_OWNER = -1,
+ GIT_INDEX_CAPABILITY_FROM_OWNER = -1
} git_index_capability_t;
-/** Callback for APIs that add/remove/update files matching pathspec */
+/**
+ * Callback for APIs that add/remove/update files matching pathspec
+ *
+ * @param path the path
+ * @param matched_pathspec the given pathspec
+ * @param payload the user-specified payload
+ * @return 0 to continue with the index operation, positive number to skip this file for the index operation, negative number on failure
+ */
typedef int GIT_CALLBACK(git_index_matched_path_cb)(
const char *path, const char *matched_pathspec, void *payload);
@@ -140,7 +163,7 @@ typedef enum {
GIT_INDEX_ADD_DEFAULT = 0,
GIT_INDEX_ADD_FORCE = (1u << 0),
GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH = (1u << 1),
- GIT_INDEX_ADD_CHECK_PATHSPEC = (1u << 2),
+ GIT_INDEX_ADD_CHECK_PATHSPEC = (1u << 2)
} git_index_add_option_t;
/** Git index stage states */
@@ -163,9 +186,77 @@ typedef enum {
GIT_INDEX_STAGE_OURS = 2,
/** The "theirs" side of a conflict. */
- GIT_INDEX_STAGE_THEIRS = 3,
+ GIT_INDEX_STAGE_THEIRS = 3
} git_index_stage_t;
+#ifdef GIT_EXPERIMENTAL_SHA256
+
+/**
+ * The options for opening or creating an index.
+ *
+ * Initialize with `GIT_INDEX_OPTIONS_INIT`. Alternatively, you can
+ * use `git_index_options_init`.
+ *
+ * @options[version] GIT_INDEX_OPTIONS_VERSION
+ * @options[init_macro] GIT_INDEX_OPTIONS_INIT
+ * @options[init_function] git_index_options_init
+ */
+typedef struct git_index_options {
+ unsigned int version; /**< The version */
+
+ /**
+ * The object ID type for the object IDs that exist in the index.
+ *
+ * If this is not specified, this defaults to `GIT_OID_SHA1`.
+ */
+ git_oid_t oid_type;
+} git_index_options;
+
+/** Current version for the `git_index_options` structure */
+#define GIT_INDEX_OPTIONS_VERSION 1
+
+/** Static constructor for `git_index_options` */
+#define GIT_INDEX_OPTIONS_INIT { GIT_INDEX_OPTIONS_VERSION }
+
+/**
+ * Initialize git_index_options structure
+ *
+ * Initializes a `git_index_options` with default values. Equivalent to creating
+ * an instance with GIT_INDEX_OPTIONS_INIT.
+ *
+ * @param opts The `git_index_options` struct to initialize.
+ * @param version The struct version; pass `GIT_INDEX_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_index_options_init(
+ git_index_options *opts,
+ unsigned int version);
+
+/**
+ * Creates a new bare Git index object, without a repository to back
+ * it. This index object is capable of storing SHA256 objects.
+ *
+ * @param index_out the pointer for the new index
+ * @param index_path the path to the index file in disk
+ * @param opts the options for opening the index, or NULL
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_index_open(
+ git_index **index_out,
+ const char *index_path,
+ const git_index_options *opts);
+
+/**
+ * Create an in-memory index object.
+ *
+ * @param index_out the pointer for the new index
+ * @param opts the options for opening the index, or NULL
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_index_new(git_index **index_out, const git_index_options *opts);
+
+#else
+
/**
* Create a new bare Git index object as a memory representation
* of the Git index file in 'index_path', without a repository
@@ -180,11 +271,11 @@ typedef enum {
*
* The index must be freed once it's no longer in use.
*
- * @param out the pointer for the new index
+ * @param index_out the pointer for the new index
* @param index_path the path to the index file in disk
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_index_open(git_index **out, const char *index_path);
+GIT_EXTERN(int) git_index_open(git_index **index_out, const char *index_path);
/**
* Create an in-memory index object.
@@ -194,10 +285,12 @@ GIT_EXTERN(int) git_index_open(git_index **out, const char *index_path);
*
* The index must be freed once it's no longer in use.
*
- * @param out the pointer for the new index
+ * @param index_out the pointer for the new index
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_index_new(git_index **out);
+GIT_EXTERN(int) git_index_new(git_index **index_out);
+
+#endif
/**
* Free an existing index object.
@@ -296,6 +389,7 @@ GIT_EXTERN(int) git_index_write(git_index *index);
*/
GIT_EXTERN(const char *) git_index_path(const git_index *index);
+#ifndef GIT_DEPRECATE_HARD
/**
* Get the checksum of the index
*
@@ -303,10 +397,12 @@ GIT_EXTERN(const char *) git_index_path(const git_index *index);
* last 20 bytes which are the checksum itself). In cases where the
* index does not exist on-disk, it will be zeroed out.
*
+ * @deprecated this function is deprecated with no replacement
* @param index an existing index object
* @return a pointer to the checksum of the index
*/
GIT_EXTERN(const git_oid *) git_index_checksum(git_index *index);
+#endif
/**
* Read a tree into the index file with stats
@@ -491,6 +587,7 @@ GIT_EXTERN(int) git_index_entry_is_conflict(const git_index_entry *entry);
*
* @param iterator_out The newly created iterator
* @param index The index to iterate
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_index_iterator_new(
git_index_iterator **iterator_out,
@@ -787,6 +884,7 @@ GIT_EXTERN(int) git_index_conflict_cleanup(git_index *index);
/**
* Determine if the index contains entries representing file conflicts.
*
+ * @param index An existing index object.
* @return 1 if at least one conflict is found, 0 otherwise.
*/
GIT_EXTERN(int) git_index_has_conflicts(const git_index *index);
@@ -811,6 +909,7 @@ GIT_EXTERN(int) git_index_conflict_iterator_new(
* @param ancestor_out Pointer to store the ancestor side of the conflict
* @param our_out Pointer to store our side of the conflict
* @param their_out Pointer to store their side of the conflict
+ * @param iterator The conflict iterator.
* @return 0 (no error), GIT_ITEROVER (iteration is done) or an error code
* (negative value)
*/
@@ -830,4 +929,5 @@ GIT_EXTERN(void) git_index_conflict_iterator_free(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/indexer.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/indexer.h
index a434d24..9aaedc3 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/indexer.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/indexer.h
@@ -4,13 +4,23 @@
* This file is part of libgit2, distributed under the GNU GPL v2 with
* a Linking Exception. For full terms see the included COPYING file.
*/
-#ifndef _INCLUDE_git_indexer_h__
-#define _INCLUDE_git_indexer_h__
+#ifndef INCLUDE_git_indexer_h__
+#define INCLUDE_git_indexer_h__
#include "common.h"
#include "types.h"
#include "oid.h"
+/**
+ * @file git2/indexer.h
+ * @brief Packfile indexing
+ * @ingroup Git
+ * @{
+ *
+ * Indexing is the operation of taking a packfile - which is simply a
+ * collection of unordered commits - and producing an "index" so that
+ * one can lookup a commit in the packfile by object ID.
+ */
GIT_BEGIN_DECL
/** A git indexer object */
@@ -53,6 +63,7 @@ typedef struct git_indexer_progress {
*
* @param stats Structure containing information about the state of the transfer
* @param payload Payload provided by caller
+ * @return 0 on success or an error code
*/
typedef int GIT_CALLBACK(git_indexer_progress_cb)(const git_indexer_progress *stats, void *payload);
@@ -62,6 +73,22 @@ typedef int GIT_CALLBACK(git_indexer_progress_cb)(const git_indexer_progress *st
typedef struct git_indexer_options {
unsigned int version;
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /** permissions to use creating packfile or 0 for defaults */
+ unsigned int mode;
+
+ /** the type of object ids in the packfile or 0 for SHA1 */
+ git_oid_t oid_type;
+
+ /**
+ * object database from which to read base objects when
+ * fixing thin packs. This can be NULL if there are no thin
+ * packs; if a thin pack is encountered, an error will be
+ * returned if there are bases missing.
+ */
+ git_odb *odb;
+#endif
+
/** progress_cb function to call with progress information */
git_indexer_progress_cb progress_cb;
@@ -72,7 +99,10 @@ typedef struct git_indexer_options {
unsigned char verify;
} git_indexer_options;
+/** Current version for the `git_indexer_options` structure */
#define GIT_INDEXER_OPTIONS_VERSION 1
+
+/** Static constructor for `git_indexer_options` */
#define GIT_INDEXER_OPTIONS_INIT { GIT_INDEXER_OPTIONS_VERSION }
/**
@@ -87,6 +117,20 @@ GIT_EXTERN(int) git_indexer_options_init(
git_indexer_options *opts,
unsigned int version);
+#ifdef GIT_EXPERIMENTAL_SHA256
+/**
+ * Create a new indexer instance
+ *
+ * @param out where to store the indexer instance
+ * @param path to the directory where the packfile should be stored
+ * @param opts the options to create the indexer with
+ * @return 0 or an error code.
+ */
+GIT_EXTERN(int) git_indexer_new(
+ git_indexer **out,
+ const char *path,
+ git_indexer_options *opts);
+#else
/**
* Create a new indexer instance
*
@@ -98,6 +142,7 @@ GIT_EXTERN(int) git_indexer_options_init(
* will be returned if there are bases missing)
* @param opts Optional structure containing additional options. See
* `git_indexer_options` above.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_indexer_new(
git_indexer **out,
@@ -105,6 +150,7 @@ GIT_EXTERN(int) git_indexer_new(
unsigned int mode,
git_odb *odb,
git_indexer_options *opts);
+#endif
/**
* Add data to the indexer
@@ -113,6 +159,7 @@ GIT_EXTERN(int) git_indexer_new(
* @param data the data to add
* @param size the size of the data in bytes
* @param stats stat storage
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_indexer_append(git_indexer *idx, const void *data, size_t size, git_indexer_progress *stats);
@@ -122,18 +169,35 @@ GIT_EXTERN(int) git_indexer_append(git_indexer *idx, const void *data, size_t si
* Resolve any pending deltas and write out the index file
*
* @param idx the indexer
+ * @param stats Stat storage.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_indexer_commit(git_indexer *idx, git_indexer_progress *stats);
+#ifndef GIT_DEPRECATE_HARD
/**
* Get the packfile's hash
*
* A packfile's name is derived from the sorted hashing of all object
* names. This is only correct after the index has been finalized.
*
+ * @deprecated use git_indexer_name
* @param idx the indexer instance
+ * @return the packfile's hash
*/
GIT_EXTERN(const git_oid *) git_indexer_hash(const git_indexer *idx);
+#endif
+
+/**
+ * Get the unique name for the resulting packfile.
+ *
+ * The packfile's name is derived from the packfile's content.
+ * This is only correct after the index has been finalized.
+ *
+ * @param idx the indexer instance
+ * @return a NUL terminated string for the packfile name
+ */
+GIT_EXTERN(const char *) git_indexer_name(const git_indexer *idx);
/**
* Free the indexer and its resources
@@ -142,6 +206,7 @@ GIT_EXTERN(const git_oid *) git_indexer_hash(const git_indexer *idx);
*/
GIT_EXTERN(void) git_indexer_free(git_indexer *idx);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/mailmap.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/mailmap.h
index 7c3f60f..fd6ae71 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/mailmap.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/mailmap.h
@@ -13,10 +13,15 @@
/**
* @file git2/mailmap.h
- * @brief Mailmap parsing routines
+ * @brief Mailmaps provide alternate email addresses for users
* @defgroup git_mailmap Git mailmap routines
* @ingroup Git
* @{
+ *
+ * A mailmap can be used to specify alternate email addresses for
+ * repository committers or authors. This allows systems to map
+ * commits made using different email addresses to the same logical
+ * person.
*/
GIT_BEGIN_DECL
@@ -112,4 +117,5 @@ GIT_EXTERN(int) git_mailmap_resolve_signature(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/merge.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/merge.h
index fc27c9d..be3b065 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/merge.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/merge.h
@@ -17,9 +17,12 @@
/**
* @file git2/merge.h
- * @brief Git merge routines
+ * @brief Merge re-joins diverging branches of history
* @defgroup git_merge Git merge routines
* @ingroup Git
+ *
+ * Merge will take two commits and attempt to produce a commit that
+ * includes the changes that were made in both branches.
* @{
*/
GIT_BEGIN_DECL
@@ -45,7 +48,10 @@ typedef struct {
unsigned int mode;
} git_merge_file_input;
+/** Current version for the `git_merge_file_input_options` structure */
#define GIT_MERGE_FILE_INPUT_VERSION 1
+
+/** Static constructor for `git_merge_file_input_options` */
#define GIT_MERGE_FILE_INPUT_INIT {GIT_MERGE_FILE_INPUT_VERSION}
/**
@@ -92,6 +98,14 @@ typedef enum {
* merge base to `git-merge-resolve`.
*/
GIT_MERGE_NO_RECURSIVE = (1 << 3),
+
+ /**
+ * Treat this merge as if it is to produce the virtual base
+ * of a recursive merge. This will ensure that there are
+ * no conflicts, any conflicting regions will keep conflict
+ * markers in the merge result.
+ */
+ GIT_MERGE_VIRTUAL_BASE = (1 << 4)
} git_merge_flag_t;
/**
@@ -127,7 +141,7 @@ typedef enum {
* which has the result of combining both files. The index will not
* record a conflict.
*/
- GIT_MERGE_FILE_FAVOR_UNION = 3,
+ GIT_MERGE_FILE_FAVOR_UNION = 3
} git_merge_file_favor_t;
/**
@@ -160,8 +174,19 @@ typedef enum {
/** Take extra time to find minimal diff */
GIT_MERGE_FILE_DIFF_MINIMAL = (1 << 7),
+
+ /** Create zdiff3 ("zealous diff3")-style files */
+ GIT_MERGE_FILE_STYLE_ZDIFF3 = (1 << 8),
+
+ /**
+ * Do not produce file conflicts when common regions have
+ * changed; keep the conflict markers in the file and accept
+ * that as the merge result.
+ */
+ GIT_MERGE_FILE_ACCEPT_CONFLICTS = (1 << 9)
} git_merge_file_flag_t;
+/** Default size for conflict markers */
#define GIT_MERGE_CONFLICT_MARKER_SIZE 7
/**
@@ -199,7 +224,10 @@ typedef struct {
unsigned short marker_size;
} git_merge_file_options;
+/** Current version for the `git_merge_file_options` structure */
#define GIT_MERGE_FILE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_merge_file_options` */
#define GIT_MERGE_FILE_OPTIONS_INIT {GIT_MERGE_FILE_OPTIONS_VERSION}
/**
@@ -294,7 +322,10 @@ typedef struct {
uint32_t file_flags;
} git_merge_options;
+/** Current version for the `git_merge_options` structure */
#define GIT_MERGE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_merge_options` */
#define GIT_MERGE_OPTIONS_INIT { \
GIT_MERGE_OPTIONS_VERSION, GIT_MERGE_FIND_RENAMES }
@@ -341,7 +372,7 @@ typedef enum {
* a valid commit. No merge can be performed, but the caller may wish
* to simply set HEAD to the target commit(s).
*/
- GIT_MERGE_ANALYSIS_UNBORN = (1 << 3),
+ GIT_MERGE_ANALYSIS_UNBORN = (1 << 3)
} git_merge_analysis_t;
/**
@@ -364,7 +395,7 @@ typedef enum {
* There is a `merge.ff=only` configuration setting, suggesting that
* the user only wants fast-forward merges.
*/
- GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY = (1 << 1),
+ GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY = (1 << 1)
} git_merge_preference_t;
/**
@@ -372,6 +403,7 @@ typedef enum {
* merging them into the HEAD of the repository.
*
* @param analysis_out analysis enumeration that the result is written into
+ * @param preference_out One of the `git_merge_preference_t` flag.
* @param repo the repository to merge
* @param their_heads the heads to merge into
* @param their_heads_len the number of heads to merge
@@ -389,6 +421,7 @@ GIT_EXTERN(int) git_merge_analysis(
* merging them into a reference.
*
* @param analysis_out analysis enumeration that the result is written into
+ * @param preference_out One of the `git_merge_preference_t` flag.
* @param repo the repository to merge
* @param our_ref the reference to perform the analysis from
* @param their_heads the heads to merge into
@@ -451,6 +484,37 @@ GIT_EXTERN(int) git_merge_base_many(
/**
* Find all merge bases given a list of commits
*
+ * This behaves similar to [`git merge-base`](https://git-scm.com/docs/git-merge-base#_discussion).
+ *
+ * Given three commits `a`, `b`, and `c`, `merge_base_many`
+ * will compute a hypothetical commit `m`, which is a merge between `b`
+ * and `c`.
+
+ * For example, with the following topology:
+ * ```text
+ * o---o---o---o---C
+ * /
+ * / o---o---o---B
+ * / /
+ * ---2---1---o---o---o---A
+ * ```
+ *
+ * the result of `merge_base_many` given `a`, `b`, and `c` is 1. This is
+ * because the equivalent topology with the imaginary merge commit `m`
+ * between `b` and `c` is:
+ * ```text
+ * o---o---o---o---o
+ * / \
+ * / o---o---o---o---M
+ * / /
+ * ---2---1---o---o---o---A
+ * ```
+ *
+ * and the result of `merge_base_many` given `a` and `m` is 1.
+ *
+ * If you're looking to recieve the common ancestor between all the
+ * given commits, use `merge_base_octopus`.
+ *
* @param out array in which to store the resulting ids
* @param repo the repository where the commits exist
* @param length The number of commits in the provided `input_array`
@@ -583,7 +647,7 @@ GIT_EXTERN(int) git_merge_commits(
* completes, resolve any conflicts and prepare a commit.
*
* For compatibility with git, the repository is put into a merging
- * state. Once the commit is done (or if the uses wishes to abort),
+ * state. Once the commit is done (or if the user wishes to abort),
* you should clear this state by calling
* `git_repository_state_cleanup()`.
*
@@ -603,4 +667,5 @@ GIT_EXTERN(int) git_merge(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/message.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/message.h
index 42ca3e5..874d027 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/message.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/message.h
@@ -12,7 +12,7 @@
/**
* @file git2/message.h
- * @brief Git message management routines
+ * @brief Commit messages
* @ingroup Git
* @{
*/
@@ -75,10 +75,12 @@ GIT_EXTERN(int) git_message_trailers(git_message_trailer_array *arr, const char
/**
* Clean's up any allocated memory in the git_message_trailer_array filled by
* a call to git_message_trailers.
+ *
+ * @param arr The trailer to free.
*/
GIT_EXTERN(void) git_message_trailer_array_free(git_message_trailer_array *arr);
/** @} */
GIT_END_DECL
-#endif /* INCLUDE_git_message_h__ */
+#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/net.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/net.h
index 8103eaf..93bdac4 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/net.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/net.h
@@ -13,12 +13,13 @@
/**
* @file git2/net.h
- * @brief Git networking declarations
+ * @brief Low-level networking functionality
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/** Default git protocol port number */
#define GIT_DEFAULT_PORT "9418"
/**
@@ -51,4 +52,5 @@ struct git_remote_head {
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/notes.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/notes.h
index c135881..3784d5f 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/notes.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/notes.h
@@ -11,7 +11,7 @@
/**
* @file git2/notes.h
- * @brief Git notes management routines
+ * @brief Notes are metadata attached to an object
* @defgroup git_note Git notes management routines
* @ingroup Git
* @{
@@ -21,13 +21,15 @@ GIT_BEGIN_DECL
/**
* Callback for git_note_foreach.
*
- * Receives:
- * - blob_id: Oid of the blob containing the message
- * - annotated_object_id: Oid of the git object being annotated
- * - payload: Payload data passed to `git_note_foreach`
+ * @param blob_id object id of the blob containing the message
+ * @param annotated_object_id the id of the object being annotated
+ * @param payload user-specified data to the foreach function
+ * @return 0 on success, or a negative number on failure
*/
typedef int GIT_CALLBACK(git_note_foreach_cb)(
- const git_oid *blob_id, const git_oid *annotated_object_id, void *payload);
+ const git_oid *blob_id,
+ const git_oid *annotated_object_id,
+ void *payload);
/**
* note iterator
@@ -303,4 +305,5 @@ GIT_EXTERN(int) git_note_foreach(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/object.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/object.h
index 984dbb7..8a50239 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/object.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/object.h
@@ -14,13 +14,14 @@
/**
* @file git2/object.h
- * @brief Git revision object management routines
+ * @brief Objects are blobs (files), trees (directories), commits, and annotated tags
* @defgroup git_object Git revision object management routines
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/** Maximum size of a git object */
#define GIT_OBJECT_SIZE_MAX UINT64_MAX
/**
@@ -53,18 +54,18 @@ GIT_EXTERN(int) git_object_lookup(
*
* The object obtained will be so that its identifier
* matches the first 'len' hexadecimal characters
- * (packets of 4 bits) of the given 'id'.
- * 'len' must be at least GIT_OID_MINPREFIXLEN, and
- * long enough to identify a unique object matching
- * the prefix; otherwise the method will fail.
+ * (packets of 4 bits) of the given `id`. `len` must be
+ * at least `GIT_OID_MINPREFIXLEN`, and long enough to
+ * identify a unique object matching the prefix; otherwise
+ * the method will fail.
*
* The generated reference is owned by the repository and
* should be closed with the `git_object_free` method
* instead of free'd manually.
*
- * The 'type' parameter must match the type of the object
+ * The `type` parameter must match the type of the object
* in the odb; the method will fail otherwise.
- * The special value 'GIT_OBJECT_ANY' may be passed to let
+ * The special value `GIT_OBJECT_ANY` may be passed to let
* the method guess the object's type.
*
* @param object_out pointer where to store the looked-up object
@@ -221,9 +222,58 @@ GIT_EXTERN(int) git_object_peel(
*
* @param dest Pointer to store the copy of the object
* @param source Original object to copy
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_object_dup(git_object **dest, git_object *source);
+#ifdef GIT_EXPERIMENTAL_SHA256
+/**
+ * Analyzes a buffer of raw object content and determines its validity.
+ * Tree, commit, and tag objects will be parsed and ensured that they
+ * are valid, parseable content. (Blobs are always valid by definition.)
+ * An error message will be set with an informative message if the object
+ * is not valid.
+ *
+ * @warning This function is experimental and its signature may change in
+ * the future.
+ *
+ * @param valid Output pointer to set with validity of the object content
+ * @param buf The contents to validate
+ * @param len The length of the buffer
+ * @param object_type The type of the object in the buffer
+ * @param oid_type The object ID type for the OIDs in the given buffer
+ * @return 0 on success or an error code
+ */
+GIT_EXTERN(int) git_object_rawcontent_is_valid(
+ int *valid,
+ const char *buf,
+ size_t len,
+ git_object_t object_type,
+ git_oid_t oid_type);
+#else
+/**
+ * Analyzes a buffer of raw object content and determines its validity.
+ * Tree, commit, and tag objects will be parsed and ensured that they
+ * are valid, parseable content. (Blobs are always valid by definition.)
+ * An error message will be set with an informative message if the object
+ * is not valid.
+ *
+ * @warning This function is experimental and its signature may change in
+ * the future.
+ *
+ * @param[out] valid Output pointer to set with validity of the object content
+ * @param buf The contents to validate
+ * @param len The length of the buffer
+ * @param object_type The type of the object in the buffer
+ * @return 0 on success or an error code
+ */
+GIT_EXTERN(int) git_object_rawcontent_is_valid(
+ int *valid,
+ const char *buf,
+ size_t len,
+ git_object_t object_type);
+#endif
+
/** @} */
GIT_END_DECL
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/odb.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/odb.h
index dd48455..e809c36 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/odb.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/odb.h
@@ -15,29 +15,91 @@
/**
* @file git2/odb.h
- * @brief Git object database routines
+ * @brief An object database manages the storage of git objects
* @defgroup git_odb Git object database routines
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/** Flags controlling the behavior of ODB lookup operations */
+typedef enum {
+ /**
+ * Don't call `git_odb_refresh` if the lookup fails. Useful when doing
+ * a batch of lookup operations for objects that may legitimately not
+ * exist. When using this flag, you may wish to manually call
+ * `git_odb_refresh` before processing a batch of objects.
+ */
+ GIT_ODB_LOOKUP_NO_REFRESH = (1 << 0)
+} git_odb_lookup_flags_t;
+
/**
* Function type for callbacks from git_odb_foreach.
+ *
+ * @param id an id of an object in the object database
+ * @param payload the payload from the initial call to git_odb_foreach
+ * @return 0 on success, or an error code
*/
typedef int GIT_CALLBACK(git_odb_foreach_cb)(const git_oid *id, void *payload);
+/** Options for configuring a loose object backend. */
+typedef struct {
+ unsigned int version; /**< version for the struct */
+
+ /**
+ * Type of object IDs to use for this object database, or
+ * 0 for default (currently SHA1).
+ */
+ git_oid_t oid_type;
+} git_odb_options;
+
+/** The current version of the diff options structure */
+#define GIT_ODB_OPTIONS_VERSION 1
+
+/**
+ * Stack initializer for odb options. Alternatively use
+ * `git_odb_options_init` programmatic initialization.
+ */
+#define GIT_ODB_OPTIONS_INIT { GIT_ODB_OPTIONS_VERSION }
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+
+/**
+ * Create a new object database with no backends.
+ *
+ * @param[out] odb location to store the database pointer, if opened.
+ * @param opts the options for this object database or NULL for defaults
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_new(git_odb **odb, const git_odb_options *opts);
+
+/**
+ * Create a new object database and automatically add loose and packed
+ * backends.
+ *
+ * @param[out] odb_out location to store the database pointer, if opened.
+ * Set to NULL if the open failed.
+ * @param objects_dir path of the backends' "objects" directory.
+ * @param opts the options for this object database or NULL for defaults
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_open(
+ git_odb **odb_out,
+ const char *objects_dir,
+ const git_odb_options *opts);
+
+#else
+
/**
* Create a new object database with no backends.
*
* Before the ODB can be used for read/writing, a custom database
* backend must be manually added using `git_odb_add_backend()`
*
- * @param out location to store the database pointer, if opened.
- * Set to NULL if the open failed.
+ * @param[out] odb location to store the database pointer, if opened.
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_new(git_odb **out);
+GIT_EXTERN(int) git_odb_new(git_odb **odb);
/**
* Create a new object database and automatically add
@@ -50,12 +112,13 @@ GIT_EXTERN(int) git_odb_new(git_odb **out);
* assuming `objects_dir` as the Objects folder which
* contains a 'pack/' folder with the corresponding data
*
- * @param out location to store the database pointer, if opened.
+ * @param[out] odb_out location to store the database pointer, if opened.
* Set to NULL if the open failed.
* @param objects_dir path of the backends' "objects" directory.
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_open(git_odb **out, const char *objects_dir);
+GIT_EXTERN(int) git_odb_open(git_odb **odb_out, const char *objects_dir);
+#endif
/**
* Add an on-disk alternate to an existing Object DB.
@@ -91,13 +154,13 @@ GIT_EXTERN(void) git_odb_free(git_odb *db);
* internally cached, so it should be closed
* by the user once it's no longer in use.
*
- * @param out pointer where to store the read object
+ * @param[out] obj pointer where to store the read object
* @param db database to search for the object in.
* @param id identity of the object to read.
* @return 0 if the object was read, GIT_ENOTFOUND if the object is
* not in the database.
*/
-GIT_EXTERN(int) git_odb_read(git_odb_object **out, git_odb *db, const git_oid *id);
+GIT_EXTERN(int) git_odb_read(git_odb_object **obj, git_odb *db, const git_oid *id);
/**
* Read an object from the database, given a prefix
@@ -106,7 +169,7 @@ GIT_EXTERN(int) git_odb_read(git_odb_object **out, git_odb *db, const git_oid *i
* This method queries all available ODB backends
* trying to match the 'len' first hexadecimal
* characters of the 'short_id'.
- * The remaining (GIT_OID_HEXSZ-len)*4 bits of
+ * The remaining (GIT_OID_SHA1_HEXSIZE-len)*4 bits of
* 'short_id' must be 0s.
* 'len' must be at least GIT_OID_MINPREFIXLEN,
* and the prefix must be long enough to identify
@@ -117,7 +180,7 @@ GIT_EXTERN(int) git_odb_read(git_odb_object **out, git_odb *db, const git_oid *i
* internally cached, so it should be closed
* by the user once it's no longer in use.
*
- * @param out pointer where to store the read object
+ * @param[out] obj pointer where to store the read object
* @param db database to search for the object in.
* @param short_id a prefix of the id of the object to read.
* @param len the length of the prefix
@@ -125,7 +188,7 @@ GIT_EXTERN(int) git_odb_read(git_odb_object **out, git_odb *db, const git_oid *i
* database. GIT_EAMBIGUOUS if the prefix is ambiguous
* (several objects match the prefix)
*/
-GIT_EXTERN(int) git_odb_read_prefix(git_odb_object **out, git_odb *db, const git_oid *short_id, size_t len);
+GIT_EXTERN(int) git_odb_read_prefix(git_odb_object **obj, git_odb *db, const git_oid *short_id, size_t len);
/**
* Read the header of an object from the database, without
@@ -137,8 +200,8 @@ GIT_EXTERN(int) git_odb_read_prefix(git_odb_object **out, git_odb *db, const git
* of an object, so the whole object will be read and then the
* header will be returned.
*
- * @param len_out pointer where to store the length
- * @param type_out pointer where to store the type
+ * @param[out] len_out pointer where to store the length
+ * @param[out] type_out pointer where to store the type
* @param db database to search for the object in.
* @param id identity of the object to read.
* @return 0 if the object was read, GIT_ENOTFOUND if the object is not
@@ -155,6 +218,17 @@ GIT_EXTERN(int) git_odb_read_header(size_t *len_out, git_object_t *type_out, git
*/
GIT_EXTERN(int) git_odb_exists(git_odb *db, const git_oid *id);
+/**
+ * Determine if the given object can be found in the object database, with
+ * extended options.
+ *
+ * @param db database to be searched for the given object.
+ * @param id the object to search for.
+ * @param flags flags affecting the lookup (see `git_odb_lookup_flags_t`)
+ * @return 1 if the object was found, 0 otherwise
+ */
+GIT_EXTERN(int) git_odb_exists_ext(git_odb *db, const git_oid *id, unsigned int flags);
+
/**
* Determine if an object can be found in the object database by an
* abbreviated object ID.
@@ -192,12 +266,13 @@ typedef struct git_odb_expand_id {
/**
* Determine if one or more objects can be found in the object database
- * by their abbreviated object ID and type. The given array will be
- * updated in place: for each abbreviated ID that is unique in the
- * database, and of the given type (if specified), the full object ID,
- * object ID length (`GIT_OID_HEXSZ`) and type will be written back to
- * the array. For IDs that are not found (or are ambiguous), the
- * array entry will be zeroed.
+ * by their abbreviated object ID and type.
+ *
+ * The given array will be updated in place: for each abbreviated ID that is
+ * unique in the database, and of the given type (if specified),
+ * the full object ID, object ID length (`GIT_OID_SHA1_HEXSIZE`) and type will be
+ * written back to the array. For IDs that are not found (or are ambiguous),
+ * the array entry will be zeroed.
*
* Note that since this function operates on multiple objects, the
* underlying database will not be asked to be reloaded if an object is
@@ -231,7 +306,7 @@ GIT_EXTERN(int) git_odb_expand_ids(
* @param db database to refresh
* @return 0 on success, error code otherwise
*/
-GIT_EXTERN(int) git_odb_refresh(struct git_odb *db);
+GIT_EXTERN(int) git_odb_refresh(git_odb *db);
/**
* List all objects available in the database
@@ -246,7 +321,10 @@ GIT_EXTERN(int) git_odb_refresh(struct git_odb *db);
* @param payload data to pass to the callback
* @return 0 on success, non-zero callback return value, or error code
*/
-GIT_EXTERN(int) git_odb_foreach(git_odb *db, git_odb_foreach_cb cb, void *payload);
+GIT_EXTERN(int) git_odb_foreach(
+ git_odb *db,
+ git_odb_foreach_cb cb,
+ void *payload);
/**
* Write an object directly into the ODB
@@ -261,7 +339,7 @@ GIT_EXTERN(int) git_odb_foreach(git_odb *db, git_odb_foreach_cb cb, void *payloa
*
* @param out pointer to store the OID result of the write
* @param odb object database where to store the object
- * @param data buffer with the data to store
+ * @param data @type `const unsigned char *` buffer with the data to store
* @param len size of the buffer
* @param type type of the data to store
* @return 0 or an error code
@@ -323,6 +401,11 @@ GIT_EXTERN(int) git_odb_stream_finalize_write(git_oid *out, git_odb_stream *stre
* Read from an odb stream
*
* Most backends don't implement streaming reads
+ *
+ * @param stream the stream
+ * @param buffer a user-allocated buffer to store the data in.
+ * @param len the buffer's length
+ * @return the number of bytes read if succeeded, error code otherwise
*/
GIT_EXTERN(int) git_odb_stream_read(git_odb_stream *stream, char *buffer, size_t len);
@@ -383,6 +466,7 @@ GIT_EXTERN(int) git_odb_open_rstream(
* Be aware that this is called inline with network and indexing operations,
* so performance may be affected.
* @param progress_payload payload for the progress callback
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_odb_write_pack(
git_odb_writepack **out,
@@ -400,23 +484,59 @@ GIT_EXTERN(int) git_odb_write_pack(
* exist).
*
* @param db object database where the `multi-pack-index` file will be written.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_odb_write_multi_pack_index(
git_odb *db);
+#ifdef GIT_EXPERIMENTAL_SHA256
+
/**
- * Determine the object-ID (sha1 hash) of a data buffer
+ * Generate the object ID (in SHA1 or SHA256 format) for a given data buffer.
*
- * The resulting SHA-1 OID will be the identifier for the data
- * buffer as if the data buffer it were to written to the ODB.
+ * @param[out] oid the resulting object ID.
+ * @param data data to hash
+ * @param len size of the data
+ * @param object_type of the data to hash
+ * @param oid_type the oid type to hash to
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_hash(
+ git_oid *oid,
+ const void *data,
+ size_t len,
+ git_object_t object_type,
+ git_oid_t oid_type);
+
+/**
+ * Determine the object ID of a file on disk.
+ *
+ * @param[out] oid oid structure the result is written into.
+ * @param path file to read and determine object id for
+ * @param object_type of the data to hash
+ * @param oid_type the oid type to hash to
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_hashfile(
+ git_oid *oid,
+ const char *path,
+ git_object_t object_type,
+ git_oid_t oid_type);
+#else
+
+/**
+ * Determine the object-ID (sha1 or sha256 hash) of a data buffer
+ *
+ * The resulting OID will be the identifier for the data buffer as if
+ * the data buffer it were to written to the ODB.
*
- * @param out the resulting object-ID.
+ * @param[out] oid the resulting object-ID.
* @param data data to hash
* @param len size of the data
- * @param type of the data to hash
+ * @param object_type of the data to hash
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_hash(git_oid *out, const void *data, size_t len, git_object_t type);
+GIT_EXTERN(int) git_odb_hash(git_oid *oid, const void *data, size_t len, git_object_t object_type);
/**
* Read a file from disk and fill a git_oid with the object id
@@ -426,12 +546,14 @@ GIT_EXTERN(int) git_odb_hash(git_oid *out, const void *data, size_t len, git_obj
* the `-w` flag, however, with the --no-filters flag.
* If you need filters, see git_repository_hashfile.
*
- * @param out oid structure the result is written into.
+ * @param[out] oid oid structure the result is written into.
* @param path file to read and determine object id for
- * @param type the type of the object that will be hashed
+ * @param object_type of the data to hash
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_hashfile(git_oid *out, const char *path, git_object_t type);
+GIT_EXTERN(int) git_odb_hashfile(git_oid *oid, const char *path, git_object_t object_type);
+
+#endif
/**
* Create a copy of an odb_object
@@ -476,7 +598,7 @@ GIT_EXTERN(const git_oid *) git_odb_object_id(git_odb_object *object);
* This pointer is owned by the object and shall not be free'd.
*
* @param object the object
- * @return a pointer to the data
+ * @return @type `const unsigned char *` a pointer to the data
*/
GIT_EXTERN(const void *) git_odb_object_data(git_odb_object *object);
@@ -556,7 +678,7 @@ GIT_EXTERN(int) git_odb_get_backend(git_odb_backend **out, git_odb *odb, size_t
/**
* Set the git commit-graph for the ODB.
*
- * After a successfull call, the ownership of the cgraph parameter will be
+ * After a successful call, the ownership of the cgraph parameter will be
* transferred to libgit2, and the caller should not free it.
*
* The commit-graph can also be unset by explicitly passing NULL as the cgraph
@@ -570,4 +692,5 @@ GIT_EXTERN(int) git_odb_set_commit_graph(git_odb *odb, git_commit_graph *cgraph)
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/odb_backend.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/odb_backend.h
index c593bac..88ca29f 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/odb_backend.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/odb_backend.h
@@ -13,46 +13,135 @@
/**
* @file git2/backend.h
- * @brief Git custom backend functions
+ * @brief Object database backends manage the storage of git objects
* @defgroup git_odb Git object database routines
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/** Options for configuring a packfile object backend. */
+typedef struct {
+ unsigned int version; /**< version for the struct */
+
+ /**
+ * Type of object IDs to use for this object database, or
+ * 0 for default (currently SHA1).
+ */
+ git_oid_t oid_type;
+} git_odb_backend_pack_options;
+
+/** The current version of the diff options structure */
+#define GIT_ODB_BACKEND_PACK_OPTIONS_VERSION 1
+
+/**
+ * Stack initializer for odb pack backend options. Alternatively use
+ * `git_odb_backend_pack_options_init` programmatic initialization.
+ */
+#define GIT_ODB_BACKEND_PACK_OPTIONS_INIT \
+ { GIT_ODB_BACKEND_PACK_OPTIONS_VERSION }
+
+typedef enum {
+ GIT_ODB_BACKEND_LOOSE_FSYNC = (1 << 0)
+} git_odb_backend_loose_flag_t;
+
+/** Options for configuring a loose object backend. */
+typedef struct {
+ unsigned int version; /**< version for the struct */
+
+ /** A combination of the `git_odb_backend_loose_flag_t` types. */
+ uint32_t flags;
+
+ /**
+ * zlib compression level to use (0-9), where 1 is the fastest
+ * at the expense of larger files, and 9 produces the best
+ * compression at the expense of speed. 0 indicates that no
+ * compression should be performed. -1 is the default (currently
+ * optimizing for speed).
+ */
+ int compression_level;
+
+ /** Permissions to use creating a directory or 0 for defaults */
+ unsigned int dir_mode;
+
+ /** Permissions to use creating a file or 0 for defaults */
+ unsigned int file_mode;
+
+ /**
+ * Type of object IDs to use for this object database, or
+ * 0 for default (currently SHA1).
+ */
+ git_oid_t oid_type;
+} git_odb_backend_loose_options;
+
+/** The current version of the diff options structure */
+#define GIT_ODB_BACKEND_LOOSE_OPTIONS_VERSION 1
+
+/**
+ * Stack initializer for odb loose backend options. Alternatively use
+ * `git_odb_backend_loose_options_init` programmatic initialization.
+ */
+#define GIT_ODB_BACKEND_LOOSE_OPTIONS_INIT \
+ { GIT_ODB_BACKEND_LOOSE_OPTIONS_VERSION, 0, -1 }
+
/*
* Constructors for in-box ODB backends.
*/
+#ifdef GIT_EXPERIMENTAL_SHA256
+
/**
- * Create a backend for the packfiles.
+ * Create a backend for a directory containing packfiles.
*
- * @param out location to store the odb backend pointer
+ * @param[out] out location to store the odb backend pointer
* @param objects_dir the Git repository's objects directory
+ * @param opts the options to use when creating the pack backend
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_backend_pack(
+ git_odb_backend **out,
+ const char *objects_dir,
+ const git_odb_backend_pack_options *opts);
+
+/**
+ * Create a backend for a single packfile.
*
+ * @param[out] out location to store the odb backend pointer
+ * @param index_file path to the packfile's .idx file
+ * @param opts the options to use when creating the pack backend
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_backend_pack(git_odb_backend **out, const char *objects_dir);
+GIT_EXTERN(int) git_odb_backend_one_pack(
+ git_odb_backend **out,
+ const char *index_file,
+ const git_odb_backend_pack_options *opts);
/**
* Create a backend for loose objects
*
- * @param out location to store the odb backend pointer
+ * @param[out] out location to store the odb backend pointer
* @param objects_dir the Git repository's objects directory
- * @param compression_level zlib compression level to use
- * @param do_fsync whether to do an fsync() after writing
- * @param dir_mode permissions to use creating a directory or 0 for defaults
- * @param file_mode permissions to use creating a file or 0 for defaults
+ * @param opts options for the loose object backend or NULL
*
* @return 0 or an error code
*/
GIT_EXTERN(int) git_odb_backend_loose(
git_odb_backend **out,
const char *objects_dir,
- int compression_level,
- int do_fsync,
- unsigned int dir_mode,
- unsigned int file_mode);
+ git_odb_backend_loose_options *opts);
+
+#else
+
+/**
+ * Create a backend for a directory containing packfiles.
+ *
+ * @param[out] out location to store the odb backend pointer
+ * @param objects_dir the Git repository's objects directory
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_backend_pack(
+ git_odb_backend **out,
+ const char *objects_dir);
/**
* Create a backend out of a single packfile
@@ -60,18 +149,40 @@ GIT_EXTERN(int) git_odb_backend_loose(
* This can be useful for inspecting the contents of a single
* packfile.
*
- * @param out location to store the odb backend pointer
+ * @param[out] out location to store the odb backend pointer
* @param index_file path to the packfile's .idx file
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_backend_one_pack(
+ git_odb_backend **out,
+ const char *index_file);
+
+/**
+ * Create a backend for loose objects
*
+ * @param[out] out location to store the odb backend pointer
+ * @param objects_dir the Git repository's objects directory
+ * @param compression_level zlib compression level (0-9), or -1 for the default
+ * @param do_fsync if non-zero, perform an fsync on write
+ * @param dir_mode permission to use when creating directories, or 0 for default
+ * @param file_mode permission to use when creating directories, or 0 for default
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_backend_one_pack(git_odb_backend **out, const char *index_file);
+GIT_EXTERN(int) git_odb_backend_loose(
+ git_odb_backend **out,
+ const char *objects_dir,
+ int compression_level,
+ int do_fsync,
+ unsigned int dir_mode,
+ unsigned int file_mode);
+
+#endif
/** Streaming mode */
typedef enum {
GIT_STREAM_RDONLY = (1 << 1),
GIT_STREAM_WRONLY = (1 << 2),
- GIT_STREAM_RW = (GIT_STREAM_RDONLY | GIT_STREAM_WRONLY),
+ GIT_STREAM_RW = (GIT_STREAM_RDONLY | GIT_STREAM_WRONLY)
} git_odb_stream_t;
/**
@@ -87,6 +198,10 @@ struct git_odb_stream {
unsigned int mode;
void *hash_ctx;
+#ifdef GIT_EXPERIMENTAL_SHA256
+ git_oid_t oid_type;
+#endif
+
git_object_size_t declared_size;
git_object_size_t received_bytes;
@@ -130,6 +245,7 @@ struct git_odb_writepack {
void GIT_CALLBACK(free)(git_odb_writepack *writepack);
};
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/oid.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/oid.h
index 549df4e..8539b4e 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/oid.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/oid.h
@@ -8,22 +8,92 @@
#define INCLUDE_git_oid_h__
#include "common.h"
-#include "types.h"
+#include "experimental.h"
/**
* @file git2/oid.h
- * @brief Git object id routines
+ * @brief Object IDs
* @defgroup git_oid Git object id routines
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
-/** Size (in bytes) of a raw/binary oid */
-#define GIT_OID_RAWSZ 20
+/** The type of object id. */
+typedef enum {
-/** Size (in bytes) of a hex formatted oid */
-#define GIT_OID_HEXSZ (GIT_OID_RAWSZ * 2)
+#ifdef GIT_EXPERIMENTAL_SHA256
+ GIT_OID_SHA1 = 1, /**< SHA1 */
+ GIT_OID_SHA256 = 2 /**< SHA256 */
+#else
+ GIT_OID_SHA1 = 1 /**< SHA1 */
+#endif
+
+} git_oid_t;
+
+/*
+ * SHA1 is currently the only supported object ID type.
+ */
+
+/** SHA1 is currently libgit2's default oid type. */
+#define GIT_OID_DEFAULT GIT_OID_SHA1
+
+/** Size (in bytes) of a raw/binary sha1 oid */
+#define GIT_OID_SHA1_SIZE 20
+/** Size (in bytes) of a hex formatted sha1 oid */
+#define GIT_OID_SHA1_HEXSIZE (GIT_OID_SHA1_SIZE * 2)
+
+/**
+ * The binary representation of the null sha1 object ID.
+ */
+#ifndef GIT_EXPERIMENTAL_SHA256
+# define GIT_OID_SHA1_ZERO { { 0 } }
+#else
+# define GIT_OID_SHA1_ZERO { GIT_OID_SHA1, { 0 } }
+#endif
+
+/**
+ * The string representation of the null sha1 object ID.
+ */
+#define GIT_OID_SHA1_HEXZERO "0000000000000000000000000000000000000000"
+
+/*
+ * Experimental SHA256 support is a breaking change to the API.
+ * This exists for application compatibility testing.
+ */
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+
+/** Size (in bytes) of a raw/binary sha256 oid */
+# define GIT_OID_SHA256_SIZE 32
+/** Size (in bytes) of a hex formatted sha256 oid */
+# define GIT_OID_SHA256_HEXSIZE (GIT_OID_SHA256_SIZE * 2)
+
+/**
+ * The binary representation of the null sha256 object ID.
+ */
+# define GIT_OID_SHA256_ZERO { GIT_OID_SHA256, { 0 } }
+
+/**
+ * The string representation of the null sha256 object ID.
+ */
+# define GIT_OID_SHA256_HEXZERO "0000000000000000000000000000000000000000000000000000000000000000"
+
+#endif
+
+/** Maximum possible object ID size in raw format */
+#ifdef GIT_EXPERIMENTAL_SHA256
+# define GIT_OID_MAX_SIZE GIT_OID_SHA256_SIZE
+#else
+# define GIT_OID_MAX_SIZE GIT_OID_SHA1_SIZE
+#endif
+
+/** Maximum possible object ID size in hex format */
+#ifdef GIT_EXPERIMENTAL_SHA256
+# define GIT_OID_MAX_HEXSIZE GIT_OID_SHA256_HEXSIZE
+#else
+# define GIT_OID_MAX_HEXSIZE GIT_OID_SHA1_HEXSIZE
+#endif
/** Minimum length (in number of hex characters,
* i.e. packets of 4 bits) of an oid prefix */
@@ -31,23 +101,43 @@ GIT_BEGIN_DECL
/** Unique identity of any object (commit, tree, blob, tag). */
typedef struct git_oid {
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /** type of object id */
+ unsigned char type;
+#endif
+
/** raw binary formatted id */
- unsigned char id[GIT_OID_RAWSZ];
+ unsigned char id[GIT_OID_MAX_SIZE];
} git_oid;
+#ifdef GIT_EXPERIMENTAL_SHA256
+
+GIT_EXTERN(int) git_oid_fromstr(git_oid *out, const char *str, git_oid_t type);
+GIT_EXTERN(int) git_oid_fromstrp(git_oid *out, const char *str, git_oid_t type);
+GIT_EXTERN(int) git_oid_fromstrn(git_oid *out, const char *str, size_t length, git_oid_t type);
+GIT_EXTERN(int) git_oid_fromraw(git_oid *out, const unsigned char *raw, git_oid_t type);
+
+#else
+
/**
* Parse a hex formatted object id into a git_oid.
*
+ * The appropriate number of bytes for the given object ID type will
+ * be read from the string - 40 bytes for SHA1, 64 bytes for SHA256.
+ * The given string need not be NUL terminated.
+ *
* @param out oid structure the result is written into.
* @param str input hex string; must be pointing at the start of
* the hex sequence and have at least the number of bytes
- * needed for an oid encoded in hex (40 bytes).
+ * needed for an oid encoded in hex (40 bytes for sha1,
+ * 256 bytes for sha256).
* @return 0 or an error code
*/
GIT_EXTERN(int) git_oid_fromstr(git_oid *out, const char *str);
/**
- * Parse a hex formatted null-terminated string into a git_oid.
+ * Parse a hex formatted NUL-terminated string into a git_oid.
*
* @param out oid structure the result is written into.
* @param str input hex string; must be null-terminated.
@@ -77,14 +167,17 @@ GIT_EXTERN(int) git_oid_fromstrn(git_oid *out, const char *str, size_t length);
*/
GIT_EXTERN(int) git_oid_fromraw(git_oid *out, const unsigned char *raw);
+#endif
+
/**
* Format a git_oid into a hex string.
*
* @param out output hex string; must be pointing at the start of
* the hex sequence and have at least the number of bytes
- * needed for an oid encoded in hex (40 bytes). Only the
- * oid digits are written; a '\\0' terminator must be added
- * by the caller if it is required.
+ * needed for an oid encoded in hex (40 bytes for SHA1,
+ * 64 bytes for SHA256). Only the oid digits are written;
+ * a '\\0' terminator must be added by the caller if it is
+ * required.
* @param id oid structure to format.
* @return 0 on success or error code
*/
@@ -94,7 +187,7 @@ GIT_EXTERN(int) git_oid_fmt(char *out, const git_oid *id);
* Format a git_oid into a partial hex string.
*
* @param out output hex string; you say how many bytes to write.
- * If the number of bytes is > GIT_OID_HEXSZ, extra bytes
+ * If the number of bytes is > GIT_OID_SHA1_HEXSIZE, extra bytes
* will be zeroed; if not, a '\0' terminator is NOT added.
* @param n number of characters to write into out string
* @param id oid structure to format.
@@ -110,9 +203,10 @@ GIT_EXTERN(int) git_oid_nfmt(char *out, size_t n, const git_oid *id);
*
* @param out output hex string; must be pointing at the start of
* the hex sequence and have at least the number of bytes
- * needed for an oid encoded in hex (41 bytes). Only the
- * oid digits are written; a '\\0' terminator must be added
- * by the caller if it is required.
+ * needed for an oid encoded in hex (41 bytes for SHA1,
+ * 65 bytes for SHA256). Only the oid digits are written;
+ * a '\\0' terminator must be added by the caller if it
+ * is required.
* @param id oid structure to format.
* @return 0 on success, non-zero callback return value, or error code
*/
@@ -127,14 +221,16 @@ GIT_EXTERN(int) git_oid_pathfmt(char *out, const git_oid *id);
* concurrent calls of the function.
*
* @param oid The oid structure to format
- * @return the c-string
+ * @return the c-string or NULL on failure
*/
GIT_EXTERN(char *) git_oid_tostr_s(const git_oid *oid);
/**
* Format a git_oid into a buffer as a hex format c-string.
*
- * If the buffer is smaller than GIT_OID_HEXSZ+1, then the resulting
+ * If the buffer is smaller than the size of a hex-formatted oid string
+ * plus an additional byte (GIT_OID_SHA_HEXSIZE + 1 for SHA1 or
+ * GIT_OID_SHA256_HEXSIZE + 1 for SHA256), then the resulting
* oid c-string will be truncated to n-1 characters (but will still be
* NUL-byte terminated).
*
@@ -210,6 +306,7 @@ GIT_EXTERN(int) git_oid_strcmp(const git_oid *id, const char *str);
/**
* Check is an oid is all zeros.
*
+ * @param id the object ID to check
* @return 1 if all zeros, 0 otherwise.
*/
GIT_EXTERN(int) git_oid_is_zero(const git_oid *id);
@@ -270,4 +367,5 @@ GIT_EXTERN(void) git_oid_shorten_free(git_oid_shorten *os);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/oidarray.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/oidarray.h
index 94fc58d..e79a559 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/oidarray.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/oidarray.h
@@ -10,6 +10,13 @@
#include "common.h"
#include "oid.h"
+/**
+ * @file git2/oidarray.h
+ * @brief An array of object IDs
+ * @defgroup git_oidarray Arrays of object IDs
+ * @ingroup Git
+ * @{
+ */
GIT_BEGIN_DECL
/** Array of object ids */
@@ -34,4 +41,3 @@ GIT_EXTERN(void) git_oidarray_dispose(git_oidarray *array);
GIT_END_DECL
#endif
-
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/pack.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/pack.h
index 3b9beb6..3837e04 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/pack.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/pack.h
@@ -51,7 +51,7 @@ GIT_BEGIN_DECL
*/
typedef enum {
GIT_PACKBUILDER_ADDING_OBJECTS = 0,
- GIT_PACKBUILDER_DELTAFICATION = 1,
+ GIT_PACKBUILDER_DELTAFICATION = 1
} git_packbuilder_stage_t;
/**
@@ -148,6 +148,7 @@ GIT_EXTERN(int) git_packbuilder_insert_recur(git_packbuilder *pb, const git_oid
*
* @param buf Buffer where to write the packfile
* @param pb The packbuilder
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_packbuilder_write_buf(git_buf *buf, git_packbuilder *pb);
@@ -169,15 +170,30 @@ GIT_EXTERN(int) git_packbuilder_write(
git_indexer_progress_cb progress_cb,
void *progress_cb_payload);
+#ifndef GIT_DEPRECATE_HARD
/**
-* Get the packfile's hash
-*
-* A packfile's name is derived from the sorted hashing of all object
-* names. This is only correct after the packfile has been written.
-*
-* @param pb The packbuilder object
-*/
+ * Get the packfile's hash
+ *
+ * A packfile's name is derived from the sorted hashing of all object
+ * names. This is only correct after the packfile has been written.
+ *
+ * @deprecated use git_packbuilder_name
+ * @param pb The packbuilder object
+ * @return 0 or an error code
+ */
GIT_EXTERN(const git_oid *) git_packbuilder_hash(git_packbuilder *pb);
+#endif
+
+/**
+ * Get the unique name for the resulting packfile.
+ *
+ * The packfile's name is derived from the packfile's content.
+ * This is only correct after the packfile has been written.
+ *
+ * @param pb the packbuilder instance
+ * @return a NUL terminated string for the packfile name
+ */
+GIT_EXTERN(const char *) git_packbuilder_name(git_packbuilder *pb);
/**
* Callback used to iterate over packed objects
@@ -217,7 +233,15 @@ GIT_EXTERN(size_t) git_packbuilder_object_count(git_packbuilder *pb);
*/
GIT_EXTERN(size_t) git_packbuilder_written(git_packbuilder *pb);
-/** Packbuilder progress notification function */
+/**
+ * Packbuilder progress notification function.
+ *
+ * @param stage the stage of the packbuilder
+ * @param current the current object
+ * @param total the total number of objects
+ * @param payload the callback payload
+ * @return 0 on success or an error code
+ */
typedef int GIT_CALLBACK(git_packbuilder_progress)(
int stage,
uint32_t current,
@@ -231,6 +255,9 @@ typedef int GIT_CALLBACK(git_packbuilder_progress)(
* @param progress_cb Function to call with progress information during
* pack building. Be aware that this is called inline with pack building
* operations, so performance may be affected.
+ * When progress_cb returns an error, the pack building process will be
+ * aborted and the error will be returned from the invoked function.
+ * `pb` must then be freed.
* @param progress_cb_payload Payload for progress callback.
* @return 0 or an error code
*/
@@ -248,4 +275,5 @@ GIT_EXTERN(void) git_packbuilder_free(git_packbuilder *pb);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/patch.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/patch.h
index fde9659..7824821 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/patch.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/patch.h
@@ -14,7 +14,7 @@
/**
* @file git2/patch.h
- * @brief Patch handling routines.
+ * @brief Patches store the textual diffs in a delta
* @ingroup Git
* @{
*/
@@ -139,17 +139,25 @@ GIT_EXTERN(int) git_patch_from_buffers(
/**
* Free a git_patch object.
+ *
+ * @param patch The patch to free.
*/
GIT_EXTERN(void) git_patch_free(git_patch *patch);
/**
* Get the delta associated with a patch. This delta points to internal
* data and you do not have to release it when you are done with it.
+ *
+ * @param patch The patch in which to get the delta.
+ * @return The delta associated with the patch.
*/
GIT_EXTERN(const git_diff_delta *) git_patch_get_delta(const git_patch *patch);
/**
* Get the number of hunks in a patch
+ *
+ * @param patch The patch in which to get the number of hunks.
+ * @return The number of hunks of the patch.
*/
GIT_EXTERN(size_t) git_patch_num_hunks(const git_patch *patch);
@@ -275,8 +283,7 @@ GIT_EXTERN(int) git_patch_to_buf(
git_buf *out,
git_patch *patch);
-GIT_END_DECL
-
/**@}*/
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/pathspec.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/pathspec.h
index 3299657..6f6918c 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/pathspec.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/pathspec.h
@@ -12,6 +12,13 @@
#include "strarray.h"
#include "diff.h"
+/**
+ * @file git2/pathspec.h
+ * @brief Specifiers for path matching
+ * @defgroup git_pathspec Specifiers for path matching
+ * @ingroup Git
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -69,7 +76,7 @@ typedef enum {
* just test if there were any matches at all or in combination with
* GIT_PATHSPEC_FIND_FAILURES to validate a pathspec.
*/
- GIT_PATHSPEC_FAILURES_ONLY = (1u << 5),
+ GIT_PATHSPEC_FAILURES_ONLY = (1u << 5)
} git_pathspec_flag_t;
/**
@@ -276,5 +283,7 @@ GIT_EXTERN(size_t) git_pathspec_match_list_failed_entrycount(
GIT_EXTERN(const char *) git_pathspec_match_list_failed_entry(
const git_pathspec_match_list *m, size_t pos);
+/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/proxy.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/proxy.h
index 653425d..195ab75 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/proxy.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/proxy.h
@@ -12,6 +12,12 @@
#include "cert.h"
#include "credential.h"
+/**
+ * @file git2/proxy.h
+ * @brief TLS proxies
+ * @ingroup Git
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -32,7 +38,7 @@ typedef enum {
/**
* Connect via the URL given in the options
*/
- GIT_PROXY_SPECIFIED,
+ GIT_PROXY_SPECIFIED
} git_proxy_t;
/**
@@ -78,7 +84,10 @@ typedef struct {
void *payload;
} git_proxy_options;
+/** Current version for the `git_proxy_options` structure */
#define GIT_PROXY_OPTIONS_VERSION 1
+
+/** Static constructor for `git_proxy_options` */
#define GIT_PROXY_OPTIONS_INIT {GIT_PROXY_OPTIONS_VERSION}
/**
@@ -93,6 +102,7 @@ typedef struct {
*/
GIT_EXTERN(int) git_proxy_options_init(git_proxy_options *opts, unsigned int version);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/rebase.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/rebase.h
index 11e452c..3fb3e57 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/rebase.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/rebase.h
@@ -17,8 +17,8 @@
/**
* @file git2/rebase.h
- * @brief Git rebase routines
- * @defgroup git_rebase Git merge routines
+ * @brief Rebase manipulates commits, placing them on a new parent
+ * @defgroup git_rebase Rebase manipulates commits, placing them on a new parent
* @ingroup Git
* @{
*/
@@ -67,10 +67,9 @@ typedef struct {
/**
* Options to control how files are written during `git_rebase_init`,
- * `git_rebase_next` and `git_rebase_abort`. Note that a minimum
- * strategy of `GIT_CHECKOUT_SAFE` is defaulted in `init` and `next`,
- * and a minimum strategy of `GIT_CHECKOUT_FORCE` is defaulted in
- * `abort` to match git semantics.
+ * `git_rebase_next` and `git_rebase_abort`. Note that during
+ * `abort`, these options will add an implied `GIT_CHECKOUT_FORCE`
+ * to match git semantics.
*/
git_checkout_options checkout_options;
@@ -152,10 +151,13 @@ typedef enum {
* No commit will be cherry-picked. The client should run the given
* command and (if successful) continue.
*/
- GIT_REBASE_OPERATION_EXEC,
+ GIT_REBASE_OPERATION_EXEC
} git_rebase_operation_t;
+/** Current version for the `git_rebase_options` structure */
#define GIT_REBASE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_rebase_options` */
#define GIT_REBASE_OPTIONS_INIT \
{ GIT_REBASE_OPTIONS_VERSION, 0, 0, NULL, GIT_MERGE_OPTIONS_INIT, \
GIT_CHECKOUT_OPTIONS_INIT, NULL, NULL }
@@ -242,6 +244,7 @@ GIT_EXTERN(int) git_rebase_open(
/**
* Gets the original `HEAD` ref name for merge rebases.
*
+ * @param rebase The in-progress rebase.
* @return The original `HEAD` ref name
*/
GIT_EXTERN(const char *) git_rebase_orig_head_name(git_rebase *rebase);
@@ -249,6 +252,7 @@ GIT_EXTERN(const char *) git_rebase_orig_head_name(git_rebase *rebase);
/**
* Gets the original `HEAD` id for merge rebases.
*
+ * @param rebase The in-progress rebase.
* @return The original `HEAD` id
*/
GIT_EXTERN(const git_oid *) git_rebase_orig_head_id(git_rebase *rebase);
@@ -256,6 +260,7 @@ GIT_EXTERN(const git_oid *) git_rebase_orig_head_id(git_rebase *rebase);
/**
* Gets the `onto` ref name for merge rebases.
*
+ * @param rebase The in-progress rebase.
* @return The `onto` ref name
*/
GIT_EXTERN(const char *) git_rebase_onto_name(git_rebase *rebase);
@@ -263,6 +268,7 @@ GIT_EXTERN(const char *) git_rebase_onto_name(git_rebase *rebase);
/**
* Gets the `onto` id for merge rebases.
*
+ * @param rebase The in-progress rebase.
* @return The `onto` id
*/
GIT_EXTERN(const git_oid *) git_rebase_onto_id(git_rebase *rebase);
@@ -322,6 +328,10 @@ GIT_EXTERN(int) git_rebase_next(
* This is only applicable for in-memory rebases; for rebases within
* a working directory, the changes were applied to the repository's
* index.
+ *
+ * @param index The result index of the last operation.
+ * @param rebase The in-progress rebase.
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_rebase_inmemory_index(
git_index **index,
@@ -388,4 +398,5 @@ GIT_EXTERN(void) git_rebase_free(git_rebase *rebase);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/refdb.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/refdb.h
index a315876..536ef10 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/refdb.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/refdb.h
@@ -14,8 +14,8 @@
/**
* @file git2/refdb.h
- * @brief Git custom refs backend functions
- * @defgroup git_refdb Git custom refs backend API
+ * @brief A database for references (branches and tags)
+ * @defgroup git_refdb A database for references (branches and tags)
* @ingroup Git
* @{
*/
@@ -52,6 +52,9 @@ GIT_EXTERN(int) git_refdb_open(git_refdb **out, git_repository *repo);
* Suggests that the given refdb compress or optimize its references.
* This mechanism is implementation specific. For on-disk reference
* databases, for example, this may pack all loose references.
+ *
+ * @param refdb The reference database to optimize.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_refdb_compress(git_refdb *refdb);
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/reflog.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/reflog.h
index c949a28..a0956c6 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/reflog.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/reflog.h
@@ -13,8 +13,8 @@
/**
* @file git2/reflog.h
- * @brief Git reflog management routines
- * @defgroup git_reflog Git reflog management routines
+ * @brief Reference logs store how references change
+ * @defgroup git_reflog Reference logs store how references change
* @ingroup Git
* @{
*/
@@ -31,7 +31,7 @@ GIT_BEGIN_DECL
* git_reflog_free().
*
* @param out pointer to reflog
- * @param repo the repostiory
+ * @param repo the repository
* @param name reference to look up
* @return 0 or an error code
*/
@@ -167,4 +167,5 @@ GIT_EXTERN(void) git_reflog_free(git_reflog *reflog);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/refs.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/refs.h
index 7ebb209..d820f2a 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/refs.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/refs.h
@@ -14,8 +14,8 @@
/**
* @file git2/refs.h
- * @brief Git reference management routines
- * @defgroup git_reference Git reference management routines
+ * @brief References point to a commit; generally these are branches and tags
+ * @defgroup git_reference References point to a commit; generally these are branches and tags
* @ingroup Git
* @{
*/
@@ -29,7 +29,7 @@ GIT_BEGIN_DECL
* The name will be checked for validity.
* See `git_reference_symbolic_create()` for rules about valid names.
*
- * @param out pointer to the looked-up reference
+ * @param[out] out pointer to the looked-up reference
* @param repo the repository to look up the reference
* @param name the long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)
* @return 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code.
@@ -57,7 +57,7 @@ GIT_EXTERN(int) git_reference_name_to_id(
/**
* Lookup a reference by DWIMing its short name
*
- * Apply the git precendence rules to the given shorthand to determine
+ * Apply the git precedence rules to the given shorthand to determine
* which reference the user is referring to.
*
* @param out pointer in which to store the reference
@@ -371,6 +371,7 @@ GIT_EXTERN(int) git_reference_set_target(
* reflog is enabled for the repository. We only rename
* the reflog if it exists.
*
+ * @param[out] new_ref The new reference
* @param ref The reference to rename
* @param new_name The new name for the reference
* @param force Overwrite an existing reference
@@ -406,6 +407,7 @@ GIT_EXTERN(int) git_reference_delete(git_reference *ref);
* This method removes the named reference from the repository without
* looking at its old value.
*
+ * @param repo The repository to remove the reference from
* @param name The reference to remove
* @return 0 or an error code
*/
@@ -518,7 +520,7 @@ GIT_EXTERN(int) git_reference_cmp(
/**
* Create an iterator for the repo's references
*
- * @param out pointer in which to store the iterator
+ * @param[out] out pointer in which to store the iterator
* @param repo the repository
* @return 0 or an error code
*/
@@ -543,7 +545,7 @@ GIT_EXTERN(int) git_reference_iterator_glob_new(
/**
* Get the next reference
*
- * @param out pointer in which to store the reference
+ * @param[out] out pointer in which to store the reference
* @param iter the iterator
* @return 0, GIT_ITEROVER if there are no more; or an error code
*/
@@ -686,7 +688,7 @@ typedef enum {
* so the `ONELEVEL` naming rules aren't enforced and 'master'
* becomes a valid name.
*/
- GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND = (1u << 2),
+ GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND = (1u << 2)
} git_reference_format_t;
/**
@@ -724,7 +726,7 @@ GIT_EXTERN(int) git_reference_normalize_name(
* If you pass `GIT_OBJECT_ANY` as the target type, then the object
* will be peeled until a non-tag object is met.
*
- * @param out Pointer to the peeled git_object
+ * @param[out] out Pointer to the peeled git_object
* @param ref The reference to be processed
* @param type The type of the requested object (GIT_OBJECT_COMMIT,
* GIT_OBJECT_TAG, GIT_OBJECT_TREE, GIT_OBJECT_BLOB or GIT_OBJECT_ANY).
@@ -768,4 +770,5 @@ GIT_EXTERN(const char *) git_reference_shorthand(const git_reference *ref);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/refspec.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/refspec.h
index eaf7747..49d5f89 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/refspec.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/refspec.h
@@ -14,8 +14,8 @@
/**
* @file git2/refspec.h
- * @brief Git refspec attributes
- * @defgroup git_refspec Git refspec attributes
+ * @brief Refspecs map local references to remote references
+ * @defgroup git_refspec Refspecs map local references to remote references
* @ingroup Git
* @{
*/
@@ -58,7 +58,7 @@ GIT_EXTERN(const char *) git_refspec_dst(const git_refspec *refspec);
* Get the refspec's string
*
* @param refspec the refspec
- * @returns the refspec's original string
+ * @return the refspec's original string
*/
GIT_EXTERN(const char *) git_refspec_string(const git_refspec *refspec);
@@ -79,7 +79,16 @@ GIT_EXTERN(int) git_refspec_force(const git_refspec *refspec);
GIT_EXTERN(git_direction) git_refspec_direction(const git_refspec *spec);
/**
- * Check if a refspec's source descriptor matches a reference
+ * Check if a refspec's source descriptor matches a negative reference
+ *
+ * @param refspec the refspec
+ * @param refname the name of the reference to check
+ * @return 1 if the refspec matches, 0 otherwise
+ */
+GIT_EXTERN(int) git_refspec_src_matches_negative(const git_refspec *refspec, const char *refname);
+
+/**
+ * Check if a refspec's source descriptor matches a reference
*
* @param refspec the refspec
* @param refname the name of the reference to check
@@ -116,6 +125,7 @@ GIT_EXTERN(int) git_refspec_transform(git_buf *out, const git_refspec *spec, con
*/
GIT_EXTERN(int) git_refspec_rtransform(git_buf *out, const git_refspec *spec, const char *name);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/remote.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/remote.h
index 4d57eaa..2472ded 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/remote.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/remote.h
@@ -19,8 +19,8 @@
/**
* @file git2/remote.h
- * @brief Git remote management functions
- * @defgroup git_remote remote management functions
+ * @brief Remotes are where local repositories fetch from and push to
+ * @defgroup git_remote Remotes are where local repositories fetch from and push to
* @ingroup Git
* @{
*/
@@ -41,6 +41,30 @@ GIT_EXTERN(int) git_remote_create(
const char *name,
const char *url);
+/**
+ * Remote redirection settings; whether redirects to another host
+ * are permitted. By default, git will follow a redirect on the
+ * initial request (`/info/refs`), but not subsequent requests.
+ */
+typedef enum {
+ /**
+ * Do not follow any off-site redirects at any stage of
+ * the fetch or push.
+ */
+ GIT_REMOTE_REDIRECT_NONE = (1 << 0),
+
+ /**
+ * Allow off-site redirects only upon the initial request.
+ * This is the default.
+ */
+ GIT_REMOTE_REDIRECT_INITIAL = (1 << 1),
+
+ /**
+ * Allow redirects at any stage in the fetch or push.
+ */
+ GIT_REMOTE_REDIRECT_ALL = (1 << 2)
+} git_remote_redirect_t;
+
/**
* Remote creation options flags
*/
@@ -49,9 +73,20 @@ typedef enum {
GIT_REMOTE_CREATE_SKIP_INSTEADOF = (1 << 0),
/** Don't build a fetchspec from the name if none is set */
- GIT_REMOTE_CREATE_SKIP_DEFAULT_FETCHSPEC = (1 << 1),
+ GIT_REMOTE_CREATE_SKIP_DEFAULT_FETCHSPEC = (1 << 1)
} git_remote_create_flags;
+/**
+ * How to handle reference updates.
+ */
+typedef enum {
+ /* Write the fetch results to FETCH_HEAD. */
+ GIT_REMOTE_UPDATE_FETCHHEAD = (1 << 0),
+
+ /* Report unchanged tips in the update_refs callback. */
+ GIT_REMOTE_UPDATE_REPORT_UNCHANGED = (1 << 1)
+} git_remote_update_flags;
+
/**
* Remote creation options structure
*
@@ -81,7 +116,10 @@ typedef struct git_remote_create_options {
unsigned int flags;
} git_remote_create_options;
+/** Current version for the `git_remote_create_options` structure */
#define GIT_REMOTE_CREATE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_remote_create_options` */
#define GIT_REMOTE_CREATE_OPTIONS_INIT {GIT_REMOTE_CREATE_OPTIONS_VERSION}
/**
@@ -211,9 +249,9 @@ GIT_EXTERN(const char *) git_remote_name(const git_remote *remote);
/**
* Get the remote's url
*
- * If url.*.insteadOf has been configured for this URL, it will
- * return the modified URL. If `git_remote_set_instance_pushurl`
- * has been called for this remote, then that URL will be returned.
+ * If url.*.insteadOf has been configured for this URL, it will return
+ * the modified URL. This function does not consider if a push url has
+ * been configured for this remote (use `git_remote_pushurl` if needed).
*
* @param remote the remote
* @return a pointer to the url
@@ -300,6 +338,7 @@ GIT_EXTERN(int) git_remote_add_fetch(git_repository *repo, const char *remote, c
*
* @param array pointer to the array in which to store the strings
* @param remote the remote to query
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_remote_get_fetch_refspecs(git_strarray *array, const git_remote *remote);
@@ -324,6 +363,7 @@ GIT_EXTERN(int) git_remote_add_push(git_repository *repo, const char *remote, co
*
* @param array pointer to the array in which to store the strings
* @param remote the remote to query
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_remote_get_push_refspecs(git_strarray *array, const git_remote *remote);
@@ -344,23 +384,6 @@ GIT_EXTERN(size_t) git_remote_refspec_count(const git_remote *remote);
*/
GIT_EXTERN(const git_refspec *)git_remote_get_refspec(const git_remote *remote, size_t n);
-/**
- * Open a connection to a remote
- *
- * The transport is selected based on the URL. The direction argument
- * is due to a limitation of the git protocol (over TCP or SSH) which
- * starts up a specific binary which can only do the one or the other.
- *
- * @param remote the remote to connect to
- * @param direction GIT_DIRECTION_FETCH if you want to fetch or
- * GIT_DIRECTION_PUSH if you want to push
- * @param callbacks the callbacks to use for this connection
- * @param proxy_opts proxy settings
- * @param custom_headers extra HTTP headers to use in this connection
- * @return 0 or an error code
- */
-GIT_EXTERN(int) git_remote_connect(git_remote *remote, git_direction direction, const git_remote_callbacks *callbacks, const git_proxy_options *proxy_opts, const git_strarray *custom_headers);
-
/**
* Get the remote repository's reference advertisement list
*
@@ -443,10 +466,18 @@ GIT_EXTERN(int) git_remote_list(git_strarray *out, git_repository *repo);
typedef enum git_remote_completion_t {
GIT_REMOTE_COMPLETION_DOWNLOAD,
GIT_REMOTE_COMPLETION_INDEXING,
- GIT_REMOTE_COMPLETION_ERROR,
+ GIT_REMOTE_COMPLETION_ERROR
} git_remote_completion_t;
-/** Push network progress notification function */
+/**
+ * Push network progress notification callback.
+ *
+ * @param current The number of objects pushed so far
+ * @param total The total number of objects to push
+ * @param bytes The number of bytes pushed
+ * @param payload The user-specified payload callback
+ * @return 0 or an error code to stop the transfer
+ */
typedef int GIT_CALLBACK(git_push_transfer_progress_cb)(
unsigned int current,
unsigned int total,
@@ -482,8 +513,12 @@ typedef struct {
* as commands to the destination.
* @param len number of elements in `updates`
* @param payload Payload provided by the caller
+ * @return 0 or an error code to stop the push
*/
-typedef int GIT_CALLBACK(git_push_negotiation)(const git_push_update **updates, size_t len, void *payload);
+typedef int GIT_CALLBACK(git_push_negotiation)(
+ const git_push_update **updates,
+ size_t len,
+ void *payload);
/**
* Callback used to inform of the update status from the remote.
@@ -548,7 +583,8 @@ struct git_remote_callbacks {
* Completion is called when different parts of the download
* process are done (currently unused).
*/
- int GIT_CALLBACK(completion)(git_remote_completion_t type, void *data);
+ int GIT_CALLBACK(completion)(git_remote_completion_t type,
+ void *data);
/**
* This will be called if the remote host requires
@@ -574,11 +610,22 @@ struct git_remote_callbacks {
*/
git_indexer_progress_cb transfer_progress;
+#ifdef GIT_DEPRECATE_HARD
+ void *reserved_update_tips;
+#else
/**
- * Each time a reference is updated locally, this function
- * will be called with information about it.
+ * Deprecated callback for reference updates, callers should
+ * set `update_refs` instead. This is retained for backward
+ * compatibility; if you specify both `update_refs` and
+ * `update_tips`, then only the `update_refs` function will
+ * be called.
+ *
+ * @deprecated the `update_refs` callback in this structure
+ * should be preferred
*/
- int GIT_CALLBACK(update_tips)(const char *refname, const git_oid *a, const git_oid *b, void *data);
+ int GIT_CALLBACK(update_tips)(const char *refname,
+ const git_oid *a, const git_oid *b, void *data);
+#endif
/**
* Function to call with progress information during pack
@@ -635,9 +682,25 @@ struct git_remote_callbacks {
*/
git_url_resolve_cb resolve_url;
#endif
+
+ /**
+ * Each time a reference is updated locally, this function
+ * will be called with information about it. This should be
+ * preferred over the `update_tips` callback in this
+ * structure.
+ */
+ int GIT_CALLBACK(update_refs)(
+ const char *refname,
+ const git_oid *a,
+ const git_oid *b,
+ git_refspec *spec,
+ void *data);
};
+/** Current version for the `git_remote_callbacks_options` structure */
#define GIT_REMOTE_CALLBACKS_VERSION 1
+
+/** Static constructor for `git_remote_callbacks_options` */
#define GIT_REMOTE_CALLBACKS_INIT {GIT_REMOTE_CALLBACKS_VERSION}
/**
@@ -665,7 +728,7 @@ typedef enum {
/**
* Force pruning off
*/
- GIT_FETCH_NO_PRUNE,
+ GIT_FETCH_NO_PRUNE
} git_fetch_prune_t;
/**
@@ -690,9 +753,18 @@ typedef enum {
/**
* Ask for the all the tags.
*/
- GIT_REMOTE_DOWNLOAD_TAGS_ALL,
+ GIT_REMOTE_DOWNLOAD_TAGS_ALL
} git_remote_autotag_option_t;
+/** Constants for fetch depth (shallowness of fetch). */
+typedef enum {
+ /** The fetch is "full" (not shallow). This is the default. */
+ GIT_FETCH_DEPTH_FULL = 0,
+
+ /** The fetch should "unshallow" and fetch missing data. */
+ GIT_FETCH_DEPTH_UNSHALLOW = 2147483647
+} git_fetch_depth_t;
+
/**
* Fetch options structure.
*
@@ -715,10 +787,9 @@ typedef struct {
git_fetch_prune_t prune;
/**
- * Whether to write the results to FETCH_HEAD. Defaults to
- * on. Leave this default in order to behave like git.
+ * How to handle reference updates; see `git_remote_update_flags`.
*/
- int update_fetchhead;
+ unsigned int update_fetchhead;
/**
* Determines how to behave regarding tags on the remote, such
@@ -734,15 +805,39 @@ typedef struct {
*/
git_proxy_options proxy_opts;
+ /**
+ * Depth of the fetch to perform, or `GIT_FETCH_DEPTH_FULL`
+ * (or `0`) for full history, or `GIT_FETCH_DEPTH_UNSHALLOW`
+ * to "unshallow" a shallow repository.
+ *
+ * The default is full (`GIT_FETCH_DEPTH_FULL` or `0`).
+ */
+ int depth;
+
+ /**
+ * Whether to allow off-site redirects. If this is not
+ * specified, the `http.followRedirects` configuration setting
+ * will be consulted.
+ */
+ git_remote_redirect_t follow_redirects;
+
/**
* Extra headers for this fetch operation
*/
git_strarray custom_headers;
} git_fetch_options;
+/** Current version for the `git_fetch_options` structure */
#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 }
+
+/** Static constructor for `git_fetch_options` */
+#define GIT_FETCH_OPTIONS_INIT { \
+ GIT_FETCH_OPTIONS_VERSION, \
+ GIT_REMOTE_CALLBACKS_INIT, \
+ GIT_FETCH_PRUNE_UNSPECIFIED, \
+ GIT_REMOTE_UPDATE_FETCHHEAD, \
+ GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED, \
+ GIT_PROXY_OPTIONS_INIT }
/**
* Initialize git_fetch_options structure
@@ -785,13 +880,28 @@ typedef struct {
*/
git_proxy_options proxy_opts;
+ /**
+ * Whether to allow off-site redirects. If this is not
+ * specified, the `http.followRedirects` configuration setting
+ * will be consulted.
+ */
+ git_remote_redirect_t follow_redirects;
+
/**
* Extra headers for this push operation
*/
git_strarray custom_headers;
+
+ /**
+ * "Push options" to deliver to the remote.
+ */
+ git_strarray remote_push_options;
} git_push_options;
+/** Current version for the `git_push_options` structure */
#define GIT_PUSH_OPTIONS_VERSION 1
+
+/** Static constructor for `git_push_options` */
#define GIT_PUSH_OPTIONS_INIT { GIT_PUSH_OPTIONS_VERSION, 1, GIT_REMOTE_CALLBACKS_INIT, GIT_PROXY_OPTIONS_INIT }
/**
@@ -809,7 +919,103 @@ GIT_EXTERN(int) git_push_options_init(
unsigned int version);
/**
- * Download and index the packfile
+ * Remote creation options structure
+ *
+ * Initialize with `GIT_REMOTE_CREATE_OPTIONS_INIT`. Alternatively, you can
+ * use `git_remote_create_options_init`.
+ *
+ */
+typedef struct {
+ unsigned int version;
+
+ /** Callbacks to use for this connection */
+ git_remote_callbacks callbacks;
+
+ /** HTTP Proxy settings */
+ git_proxy_options proxy_opts;
+
+ /**
+ * Whether to allow off-site redirects. If this is not
+ * specified, the `http.followRedirects` configuration setting
+ * will be consulted.
+ */
+ git_remote_redirect_t follow_redirects;
+
+ /** Extra HTTP headers to use in this connection */
+ git_strarray custom_headers;
+} git_remote_connect_options;
+
+/** Current version for the `git_remote_connect_options` structure */
+#define GIT_REMOTE_CONNECT_OPTIONS_VERSION 1
+
+/** Static constructor for `git_remote_connect_options` */
+#define GIT_REMOTE_CONNECT_OPTIONS_INIT { \
+ GIT_REMOTE_CONNECT_OPTIONS_VERSION, \
+ GIT_REMOTE_CALLBACKS_INIT, \
+ GIT_PROXY_OPTIONS_INIT }
+
+/**
+ * Initialize git_remote_connect_options structure.
+ *
+ * Initializes a `git_remote_connect_options` with default values.
+ * Equivalent to creating an instance with
+ * `GIT_REMOTE_CONNECT_OPTIONS_INIT`.
+ *
+ * @param opts The `git_remote_connect_options` struct to initialize.
+ * @param version The struct version; pass `GIT_REMOTE_CONNECT_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_remote_connect_options_init(
+ git_remote_connect_options *opts,
+ unsigned int version);
+
+/**
+ * Open a connection to a remote.
+ *
+ * The transport is selected based on the URL; the direction argument
+ * is due to a limitation of the git protocol which starts up a
+ * specific binary which can only do the one or the other.
+ *
+ * @param remote the remote to connect to
+ * @param direction GIT_DIRECTION_FETCH if you want to fetch or
+ * GIT_DIRECTION_PUSH if you want to push
+ * @param callbacks the callbacks to use for this connection
+ * @param proxy_opts proxy settings
+ * @param custom_headers extra HTTP headers to use in this connection
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_remote_connect(
+ git_remote *remote,
+ git_direction direction,
+ const git_remote_callbacks *callbacks,
+ const git_proxy_options *proxy_opts,
+ const git_strarray *custom_headers);
+
+/**
+ * Open a connection to a remote with extended options.
+ *
+ * The transport is selected based on the URL; the direction argument
+ * is due to a limitation of the git protocol which starts up a
+ * specific binary which can only do the one or the other.
+ *
+ * The given options structure will form the defaults for connection
+ * options and callback setup. Callers may override these defaults
+ * by specifying `git_fetch_options` or `git_push_options` in
+ * subsequent calls.
+ *
+ * @param remote the remote to connect to
+ * @param direction GIT_DIRECTION_FETCH if you want to fetch or
+ * GIT_DIRECTION_PUSH if you want to push
+ * @param opts the remote connection options
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_remote_connect_ext(
+ git_remote *remote,
+ git_direction direction,
+ const git_remote_connect_options *opts);
+
+/**
+ * Download and index the packfile.
*
* Connect to the remote if it hasn't been done yet, negotiate with
* the remote git which objects are missing, download and index the
@@ -818,19 +1024,31 @@ GIT_EXTERN(int) git_push_options_init(
* The .idx file will be created and both it and the packfile with be
* renamed to their final name.
*
+ * If options are specified and this remote is already connected then
+ * the existing remote connection options will be discarded and the
+ * remote will now use the new options.
+ *
* @param remote the remote
* @param refspecs the refspecs to use for this negotiation and
* download. Use NULL or an empty array to use the base refspecs
- * @param opts the options to use for this fetch
+ * @param opts the options to use for this fetch or NULL
* @return 0 or an error code
*/
- GIT_EXTERN(int) git_remote_download(git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts);
+ GIT_EXTERN(int) git_remote_download(
+ git_remote *remote,
+ const git_strarray *refspecs,
+ const git_fetch_options *opts);
/**
* Create a packfile and send it to the server
*
* Connect to the remote if it hasn't been done yet, negotiate with
- * the remote git which objects are missing, create a packfile with the missing objects and send it.
+ * the remote git which objects are missing, create a packfile with
+ * the missing objects and send it.
+ *
+ * If options are specified and this remote is already connected then
+ * the existing remote connection options will be discarded and the
+ * remote will now use the new options.
*
* @param remote the remote
* @param refspecs the refspecs to use for this negotiation and
@@ -838,39 +1056,49 @@ GIT_EXTERN(int) git_push_options_init(
* @param opts the options to use for this push
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_remote_upload(git_remote *remote, const git_strarray *refspecs, const git_push_options *opts);
+GIT_EXTERN(int) git_remote_upload(
+ git_remote *remote,
+ const git_strarray *refspecs,
+ const git_push_options *opts);
/**
- * Update the tips to the new state
+ * Update the tips to the new state.
+ *
+ * If callbacks are not specified then the callbacks specified to
+ * `git_remote_connect` will be used (if it was called).
*
* @param remote the remote to update
+ * @param callbacks pointer to the callback structure to use or NULL
+ * @param update_flags the git_remote_update_flags for these tips.
+ * @param download_tags what the behaviour for downloading tags is for this fetch. This is
+ * ignored for push. This must be the same value passed to `git_remote_download()`.
* @param reflog_message The message to insert into the reflogs. If
* NULL and fetching, the default is "fetch ", where is
* the name of the remote (or its url, for in-memory remotes). This
* parameter is ignored when pushing.
- * @param callbacks pointer to the callback structure to use
- * @param update_fetchhead whether to write to FETCH_HEAD. Pass 1 to behave like git.
- * @param download_tags what the behaviour for downloading tags is for this fetch. This is
- * ignored for push. This must be the same value passed to `git_remote_download()`.
* @return 0 or an error code
*/
GIT_EXTERN(int) git_remote_update_tips(
git_remote *remote,
const git_remote_callbacks *callbacks,
- int update_fetchhead,
+ unsigned int update_flags,
git_remote_autotag_option_t download_tags,
const char *reflog_message);
/**
- * Download new data and update tips
+ * Download new data and update tips.
*
* Convenience function to connect to a remote, download the data,
* disconnect and update the remote-tracking branches.
*
+ * If options are specified and this remote is already connected then
+ * the existing remote connection options will be discarded and the
+ * remote will now use the new options.
+ *
* @param remote the remote to fetch from
* @param refspecs the refspecs to use for this fetch. Pass NULL or an
* empty array to use the base refspecs.
- * @param opts options to use for this fetch
+ * @param opts options to use for this fetch or NULL
* @param reflog_message The message to insert into the reflogs. If NULL, the
* default is "fetch"
* @return 0 or an error code
@@ -882,30 +1110,42 @@ GIT_EXTERN(int) git_remote_fetch(
const char *reflog_message);
/**
- * Prune tracking refs that are no longer present on remote
+ * Prune tracking refs that are no longer present on remote.
+ *
+ * If callbacks are not specified then the callbacks specified to
+ * `git_remote_connect` will be used (if it was called).
*
* @param remote the remote to prune
* @param callbacks callbacks to use for this prune
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_remote_prune(git_remote *remote, const git_remote_callbacks *callbacks);
+GIT_EXTERN(int) git_remote_prune(
+ git_remote *remote,
+ const git_remote_callbacks *callbacks);
/**
- * Perform a push
+ * Perform a push.
*
- * Peform all the steps from a push.
+ * If options are specified and this remote is already connected then
+ * the existing remote connection options will be discarded and the
+ * remote will now use the new options.
*
* @param remote the remote to push to
* @param refspecs the refspecs to use for pushing. If NULL or an empty
* array, the configured refspecs will be used
* @param opts options to use for this push
+ * @return 0 or an error code.
*/
-GIT_EXTERN(int) git_remote_push(git_remote *remote,
- const git_strarray *refspecs,
- const git_push_options *opts);
+GIT_EXTERN(int) git_remote_push(
+ git_remote *remote,
+ const git_strarray *refspecs,
+ const git_push_options *opts);
/**
* Get the statistics structure that is filled in by the fetch operation.
+ *
+ * @param remote the remote to get statistics for
+ * @return the git_indexer_progress for the remote
*/
GIT_EXTERN(const git_indexer_progress *) git_remote_stats(git_remote *remote);
@@ -1005,4 +1245,5 @@ GIT_EXTERN(int) git_remote_default_branch(git_buf *out, git_remote *remote);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/repository.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/repository.h
index 8d1cffc..b203576 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/repository.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/repository.h
@@ -10,12 +10,14 @@
#include "common.h"
#include "types.h"
#include "oid.h"
+#include "odb.h"
#include "buffer.h"
+#include "commit.h"
/**
* @file git2/repository.h
- * @brief Git repository management routines
- * @defgroup git_repository Git repository management routines
+ * @brief The repository stores revisions for a source tree
+ * @defgroup git_repository The repository stores revisions for a source tree
* @ingroup Git
* @{
*/
@@ -30,7 +32,11 @@ GIT_BEGIN_DECL
* The method will automatically detect if 'path' is a normal
* or bare repository or fail is 'path' is neither.
*
- * @param out pointer to the repo which will be opened
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
+ * @param[out] out pointer to the repo which will be opened
* @param path the path to the repository
* @return 0 or an error code
*/
@@ -58,7 +64,9 @@ GIT_EXTERN(int) git_repository_open_from_worktree(git_repository **out, git_work
* @param odb the object database to wrap
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_repository_wrap_odb(git_repository **out, git_odb *odb);
+GIT_EXTERN(int) git_repository_wrap_odb(
+ git_repository **out,
+ git_odb *odb);
/**
* Look for a git repository and copy its path in the given buffer.
@@ -70,6 +78,10 @@ GIT_EXTERN(int) git_repository_wrap_odb(git_repository **out, git_odb *odb);
* The method will automatically detect if the repository is bare
* (if there is a repository).
*
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
* @param out A pointer to a user-allocated git_buf which will contain
* the found path.
*
@@ -141,13 +153,17 @@ typedef enum {
* `git_repository_open_ext` with this flag will error out if either
* $GIT_WORK_TREE or $GIT_COMMON_DIR is set.
*/
- GIT_REPOSITORY_OPEN_FROM_ENV = (1 << 4),
+ GIT_REPOSITORY_OPEN_FROM_ENV = (1 << 4)
} git_repository_open_flag_t;
/**
* Find and open a repository with extended controls.
*
- * @param out Pointer to the repo which will be opened. This can
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
+ * @param[out] out Pointer to the repo which will be opened. This can
* actually be NULL if you only want to use the error code to
* see if a repo at this path could be opened.
* @param path Path to open as git repository. If the flags
@@ -175,7 +191,11 @@ GIT_EXTERN(int) git_repository_open_ext(
* if you're e.g. hosting git repositories and need to access them
* efficiently
*
- * @param out Pointer to the repo which will be opened.
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
+ * @param[out] out Pointer to the repo which will be opened.
* @param bare_path Direct path to the bare repository
* @return 0 on success, or an error code
*/
@@ -200,7 +220,11 @@ GIT_EXTERN(void) git_repository_free(git_repository *repo);
* TODO:
* - Reinit the repository
*
- * @param out pointer to the repo which will be created or reinitialized
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
+ * @param[out] out pointer to the repo which will be created or reinitialized
* @param path the path to the repository
* @param is_bare if true, a Git repository without a working directory is
* created at the pointed path. If false, provided path will be
@@ -267,7 +291,7 @@ typedef enum {
* If an alternate workdir is specified, use relative paths for the gitdir
* and core.worktree.
*/
- GIT_REPOSITORY_INIT_RELATIVE_GITLINK = (1u << 6),
+ GIT_REPOSITORY_INIT_RELATIVE_GITLINK = (1u << 6)
} git_repository_init_flag_t;
/**
@@ -292,7 +316,7 @@ typedef enum {
/**
* Use "--shared=all" behavior, adding world readability.
*/
- GIT_REPOSITORY_INIT_SHARED_ALL = 0002777,
+ GIT_REPOSITORY_INIT_SHARED_ALL = 0002777
} git_repository_init_mode_t;
/**
@@ -351,9 +375,21 @@ typedef struct {
* pointing to this URL.
*/
const char *origin_url;
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /**
+ *
+ * Type of object IDs to use for this repository, or 0 for
+ * default (currently SHA1).
+ */
+ git_oid_t oid_type;
+#endif
} git_repository_init_options;
+/** Current version for the `git_repository_init_options` structure */
#define GIT_REPOSITORY_INIT_OPTIONS_VERSION 1
+
+/** Static constructor for `git_repository_init_options` */
#define GIT_REPOSITORY_INIT_OPTIONS_INIT {GIT_REPOSITORY_INIT_OPTIONS_VERSION}
/**
@@ -378,6 +414,10 @@ GIT_EXTERN(int) git_repository_init_options_init(
* auto-detect the case sensitivity of the file system and if the
* file system supports file mode bits correctly.
*
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
* @param out Pointer to the repo which will be created or reinitialized.
* @param repo_path The path to the repository.
* @param opts Pointer to git_repository_init_options struct.
@@ -395,7 +435,7 @@ GIT_EXTERN(int) git_repository_init_ext(
* `git_reference_free()` must be called when done with it to release the
* allocated memory and prevent a leak.
*
- * @param out pointer to the reference which will be retrieved
+ * @param[out] out pointer to the reference which will be retrieved
* @param repo a repository object
*
* @return 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing
@@ -456,7 +496,9 @@ GIT_EXTERN(int) git_repository_head_unborn(git_repository *repo);
* Check if a repository is empty
*
* An empty repository has just been initialized and contains no references
- * apart from HEAD, which must be pointing to the unborn master branch.
+ * apart from HEAD, which must be pointing to the unborn master branch,
+ * or the branch specified for the repository in the `init.defaultBranch`
+ * configuration variable.
*
* @param repo Repo to test
* @return 1 if the repository is empty, 0 if it isn't, error code
@@ -482,6 +524,7 @@ typedef enum {
GIT_REPOSITORY_ITEM_LOGS,
GIT_REPOSITORY_ITEM_MODULES,
GIT_REPOSITORY_ITEM_WORKTREES,
+ GIT_REPOSITORY_ITEM_WORKTREE_CONFIG,
GIT_REPOSITORY_ITEM__LAST
} git_repository_item_t;
@@ -525,7 +568,7 @@ GIT_EXTERN(const char *) git_repository_workdir(const git_repository *repo);
/**
* Get the path of the shared common directory for this repository.
- *
+ *
* If the repository is bare, it is the root directory for the repository.
* If the repository is a worktree, it is the parent repo's gitdir.
* Otherwise, it is the gitdir.
@@ -613,7 +656,7 @@ GIT_EXTERN(int) git_repository_config_snapshot(git_config **out, git_repository
* The ODB must be freed once it's no longer being used by
* the user.
*
- * @param out Pointer to store the loaded ODB
+ * @param[out] out Pointer to store the loaded ODB
* @param repo A repository object
* @return 0, or an error code
*/
@@ -629,7 +672,7 @@ GIT_EXTERN(int) git_repository_odb(git_odb **out, git_repository *repo);
* The refdb must be freed once it's no longer being used by
* the user.
*
- * @param out Pointer to store the loaded refdb
+ * @param[out] out Pointer to store the loaded refdb
* @param repo A repository object
* @return 0, or an error code
*/
@@ -645,7 +688,7 @@ GIT_EXTERN(int) git_repository_refdb(git_refdb **out, git_repository *repo);
* The index must be freed once it's no longer being used by
* the user.
*
- * @param out Pointer to store the loaded index
+ * @param[out] out Pointer to store the loaded index
* @param repo A repository object
* @return 0, or an error code
*/
@@ -673,6 +716,9 @@ GIT_EXTERN(int) git_repository_message(git_buf *out, git_repository *repo);
* Remove git's prepared message.
*
* Remove the message that `git_repository_message` retrieves.
+ *
+ * @param repo Repository to remove prepared message from.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_repository_message_remove(git_repository *repo);
@@ -808,19 +854,19 @@ GIT_EXTERN(int) git_repository_set_head(
* If the provided committish cannot be found in the repository, the HEAD
* is unaltered and GIT_ENOTFOUND is returned.
*
- * If the provided commitish cannot be peeled into a commit, the HEAD
+ * If the provided committish cannot be peeled into a commit, the HEAD
* is unaltered and -1 is returned.
*
* Otherwise, the HEAD will eventually be detached and will directly point to
* the peeled Commit.
*
* @param repo Repository pointer
- * @param commitish Object id of the Commit the HEAD should point to
+ * @param committish Object id of the Commit the HEAD should point to
* @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_repository_set_head_detached(
git_repository *repo,
- const git_oid *commitish);
+ const git_oid *committish);
/**
* Make the repository HEAD directly point to the Commit.
@@ -832,11 +878,13 @@ GIT_EXTERN(int) git_repository_set_head_detached(
*
* See the documentation for `git_repository_set_head_detached()`.
*
- * @see git_repository_set_head_detached
+ * @param repo Repository pointer
+ * @param committish annotated commit to point HEAD to
+ * @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_repository_set_head_detached_from_annotated(
git_repository *repo,
- const git_annotated_commit *commitish);
+ const git_annotated_commit *committish);
/**
* Detach the HEAD.
@@ -846,7 +894,7 @@ GIT_EXTERN(int) git_repository_set_head_detached_from_annotated(
* If the HEAD is already detached and points to a Tag, the HEAD is
* updated into making it point to the peeled Commit, and 0 is returned.
*
- * If the HEAD is already detached and points to a non commitish, the HEAD is
+ * If the HEAD is already detached and points to a non committish, the HEAD is
* unaltered, and -1 is returned.
*
* Otherwise, the HEAD will be detached and point to the peeled Commit.
@@ -876,7 +924,7 @@ typedef enum {
GIT_REPOSITORY_STATE_REBASE_INTERACTIVE,
GIT_REPOSITORY_STATE_REBASE_MERGE,
GIT_REPOSITORY_STATE_APPLY_MAILBOX,
- GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE,
+ GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE
} git_repository_state_t;
/**
@@ -925,9 +973,10 @@ GIT_EXTERN(int) git_repository_is_shallow(git_repository *repo);
* The memory is owned by the repository and must not be freed by the
* user.
*
- * @param name where to store the pointer to the name
- * @param email where to store the pointer to the email
+ * @param[out] name where to store the pointer to the name
+ * @param[out] email where to store the pointer to the email
* @param repo the repository
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_repository_ident(const char **name, const char **email, const git_repository *repo);
@@ -941,9 +990,30 @@ GIT_EXTERN(int) git_repository_ident(const char **name, const char **email, cons
* @param repo the repository to configure
* @param name the name to use for the reflog entries
* @param email the email to use for the reflog entries
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_repository_set_ident(git_repository *repo, const char *name, const char *email);
+/**
+ * Gets the object type used by this repository.
+ *
+ * @param repo the repository
+ * @return the object id type
+ */
+GIT_EXTERN(git_oid_t) git_repository_oid_type(git_repository *repo);
+
+/**
+ * Gets the parents of the next commit, given the current repository state.
+ * Generally, this is the HEAD commit, except when performing a merge, in
+ * which case it is two or more commits.
+ *
+ * @param commits a `git_commitarray` that will contain the commit parents
+ * @param repo the repository
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_repository_commit_parents(git_commitarray *commits, git_repository *repo);
+
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/reset.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/reset.h
index be25414..0123f7c 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/reset.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/reset.h
@@ -14,7 +14,7 @@
/**
* @file git2/reset.h
- * @brief Git reset management routines
+ * @brief Reset will update the local repository to a prior state
* @ingroup Git
* @{
*/
@@ -26,7 +26,7 @@ GIT_BEGIN_DECL
typedef enum {
GIT_RESET_SOFT = 1, /**< Move the head to the given commit */
GIT_RESET_MIXED = 2, /**< SOFT plus reset index to the commit */
- GIT_RESET_HARD = 3, /**< MIXED plus changes in working tree discarded */
+ GIT_RESET_HARD = 3 /**< MIXED plus changes in working tree discarded */
} git_reset_t;
/**
@@ -48,7 +48,7 @@ typedef enum {
*
* @param target Committish to which the Head should be moved to. This object
* must belong to the given `repo` and can either be a git_commit or a
- * git_tag. When a git_tag is being passed, it should be dereferencable
+ * git_tag. When a git_tag is being passed, it should be dereferenceable
* to a git_commit which oid will be used as the target of the branch.
*
* @param reset_type Kind of reset operation to perform.
@@ -75,11 +75,23 @@ GIT_EXTERN(int) git_reset(
*
* See the documentation for `git_reset()`.
*
- * @see git_reset
+ * @param repo Repository where to perform the reset operation.
+ *
+ * @param target Annotated commit to which the Head should be moved to.
+ * This object must belong to the given `repo`, it will be dereferenced
+ * to a git_commit which oid will be used as the target of the branch.
+ *
+ * @param reset_type Kind of reset operation to perform.
+ *
+ * @param checkout_opts Optional checkout options to be used for a HARD reset.
+ * The checkout_strategy field will be overridden (based on reset_type).
+ * This parameter can be used to propagate notify and progress callbacks.
+ *
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_reset_from_annotated(
git_repository *repo,
- const git_annotated_commit *commit,
+ const git_annotated_commit *target,
git_reset_t reset_type,
const git_checkout_options *checkout_opts);
@@ -108,4 +120,5 @@ GIT_EXTERN(int) git_reset_default(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/revert.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/revert.h
index 331e90d..ec51eca 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/revert.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/revert.h
@@ -13,8 +13,8 @@
/**
* @file git2/revert.h
- * @brief Git revert routines
- * @defgroup git_revert Git revert routines
+ * @brief Cherry-pick the inverse of a change to "undo" its effects
+ * @defgroup git_revert Cherry-pick the inverse of a change to "undo" its effects
* @ingroup Git
* @{
*/
@@ -33,8 +33,13 @@ typedef struct {
git_checkout_options checkout_opts; /**< Options for the checkout */
} git_revert_options;
+/** Current version for the `git_revert_options` structure */
#define GIT_REVERT_OPTIONS_VERSION 1
-#define GIT_REVERT_OPTIONS_INIT {GIT_REVERT_OPTIONS_VERSION, 0, GIT_MERGE_OPTIONS_INIT, GIT_CHECKOUT_OPTIONS_INIT}
+
+/** Static constructor for `git_revert_options` */
+#define GIT_REVERT_OPTIONS_INIT { \
+ GIT_REVERT_OPTIONS_VERSION, 0, \
+ GIT_MERGE_OPTIONS_INIT, GIT_CHECKOUT_OPTIONS_INIT }
/**
* Initialize git_revert_options structure
@@ -87,5 +92,5 @@ GIT_EXTERN(int) git_revert(
/** @} */
GIT_END_DECL
-#endif
+#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/revparse.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/revparse.h
index e14ddee..c14fe3d 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/revparse.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/revparse.h
@@ -12,8 +12,8 @@
/**
* @file git2/revparse.h
- * @brief Git revision parsing routines
- * @defgroup git_revparse Git revision parsing routines
+ * @brief Parse the textual revision information
+ * @defgroup git_revparse Parse the textual revision information
* @ingroup Git
* @{
*/
@@ -74,7 +74,7 @@ typedef enum {
/** The spec targeted a range of commits. */
GIT_REVSPEC_RANGE = 1 << 1,
/** The spec used the '...' operator, which invokes special semantics. */
- GIT_REVSPEC_MERGE_BASE = 1 << 2,
+ GIT_REVSPEC_MERGE_BASE = 1 << 2
} git_revspec_t;
/**
@@ -107,7 +107,7 @@ GIT_EXTERN(int) git_revparse(
git_repository *repo,
const char *spec);
-
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/revwalk.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/revwalk.h
index 98dcbf8..7c4ac54 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/revwalk.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/revwalk.h
@@ -13,8 +13,8 @@
/**
* @file git2/revwalk.h
- * @brief Git revision traversal routines
- * @defgroup git_revwalk Git revision traversal routines
+ * @brief Traverse (walk) the commit graph (revision history)
+ * @defgroup git_revwalk Traverse (walk) the commit graph (revision history)
* @ingroup Git
* @{
*/
@@ -49,7 +49,7 @@ typedef enum {
* order; this sorting mode can be combined with
* any of the above.
*/
- GIT_SORT_REVERSE = 1 << 2,
+ GIT_SORT_REVERSE = 1 << 2
} git_sort_t;
/**
@@ -249,6 +249,7 @@ GIT_EXTERN(int) git_revwalk_push_range(git_revwalk *walk, const char *range);
*
* No parents other than the first for each commit will be enqueued.
*
+ * @param walk The revision walker.
* @return 0 or an error code
*/
GIT_EXTERN(int) git_revwalk_simplify_first_parent(git_revwalk *walk);
@@ -277,6 +278,7 @@ GIT_EXTERN(git_repository *) git_revwalk_repository(git_revwalk *walk);
*
* @param commit_id oid of Commit
* @param payload User-specified pointer to data to be passed as data payload
+ * @return non-zero to hide the commmit and it parent.
*/
typedef int GIT_CALLBACK(git_revwalk_hide_cb)(
const git_oid *commit_id,
@@ -288,6 +290,7 @@ typedef int GIT_CALLBACK(git_revwalk_hide_cb)(
* @param walk the revision walker
* @param hide_cb callback function to hide a commit and its parents
* @param payload data payload to be passed to callback function
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_revwalk_add_hide_cb(
git_revwalk *walk,
@@ -296,4 +299,5 @@ GIT_EXTERN(int) git_revwalk_add_hide_cb(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/signature.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/signature.h
index b14f3ea..20ec24b 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/signature.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/signature.h
@@ -12,9 +12,13 @@
/**
* @file git2/signature.h
- * @brief Git signature creation
+ * @brief Signatures are the actor in a repository and when they acted
* @defgroup git_signature Git signature creation
* @ingroup Git
+ *
+ * Signatures contain the information about the actor (committer or
+ * author) in a repository, and the time that they performed the
+ * commit, or authoring.
* @{
*/
GIT_BEGIN_DECL
@@ -48,6 +52,42 @@ GIT_EXTERN(int) git_signature_new(git_signature **out, const char *name, const c
*/
GIT_EXTERN(int) git_signature_now(git_signature **out, const char *name, const char *email);
+/**
+ * Create a new author and/or committer signatures with default
+ * information based on the configuration and environment variables.
+ *
+ * If `author_out` is set, it will be populated with the author
+ * information. The `GIT_AUTHOR_NAME` and `GIT_AUTHOR_EMAIL`
+ * environment variables will be honored, and `user.name` and
+ * `user.email` configuration options will be honored if the
+ * environment variables are unset. For timestamps, `GIT_AUTHOR_DATE`
+ * will be used, otherwise the current time will be used.
+ *
+ * If `committer_out` is set, it will be populated with the
+ * committer information. The `GIT_COMMITTER_NAME` and
+ * `GIT_COMMITTER_EMAIL` environment variables will be honored,
+ * and `user.name` and `user.email` configuration options will
+ * be honored if the environment variables are unset. For timestamps,
+ * `GIT_COMMITTER_DATE` will be used, otherwise the current time will
+ * be used.
+ *
+ * If neither `GIT_AUTHOR_DATE` nor `GIT_COMMITTER_DATE` are set,
+ * both timestamps will be set to the same time.
+ *
+ * It will return `GIT_ENOTFOUND` if either the `user.name` or
+ * `user.email` are not set and there is no fallback from an environment
+ * variable. One of `author_out` or `committer_out` must be set.
+ *
+ * @param author_out pointer to set the author signature, or NULL
+ * @param committer_out pointer to set the committer signature, or NULL
+ * @param repo repository pointer
+ * @return 0 on success, GIT_ENOTFOUND if config is missing, or error code
+ */
+GIT_EXTERN(int) git_signature_default_from_env(
+ git_signature **author_out,
+ git_signature **committer_out,
+ git_repository *repo);
+
/**
* Create a new action signature with default user and now timestamp.
*
@@ -56,6 +96,10 @@ GIT_EXTERN(int) git_signature_now(git_signature **out, const char *name, const c
* based on that information. It will return GIT_ENOTFOUND if either the
* user.name or user.email are not set.
*
+ * Note that these do not examine environment variables, only the
+ * configuration files. Use `git_signature_default_from_env` to
+ * consider the environment variables.
+ *
* @param out new signature
* @param repo repository pointer
* @return 0 on success, GIT_ENOTFOUND if config is missing, or error code
@@ -71,7 +115,7 @@ GIT_EXTERN(int) git_signature_default(git_signature **out, git_repository *repo)
*
* @param out new signature
* @param buf signature string
- * @return 0 on success, or an error code
+ * @return 0 on success, GIT_EINVALID if the signature is not parseable, or an error code
*/
GIT_EXTERN(int) git_signature_from_buffer(git_signature **out, const char *buf);
@@ -100,4 +144,5 @@ GIT_EXTERN(void) git_signature_free(git_signature *sig);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/stash.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/stash.h
index 795920e..ad28c32 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/stash.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/stash.h
@@ -13,8 +13,13 @@
/**
* @file git2/stash.h
- * @brief Git stash management routines
+ * @brief Stashes stores some uncommitted state in the repository
* @ingroup Git
+ *
+ * Stashes stores some uncommitted state in the repository; generally
+ * this allows a user to stash some changes so that they can restore
+ * the working directory to an unmodified state. This can allow a
+ * developer to work on two different changes in parallel.
* @{
*/
GIT_BEGIN_DECL
@@ -45,6 +50,11 @@ typedef enum {
* the working directory
*/
GIT_STASH_INCLUDE_IGNORED = (1 << 2),
+
+ /**
+ * All changes in the index and working directory are left intact
+ */
+ GIT_STASH_KEEP_ALL = (1 << 3)
} git_stash_flags;
/**
@@ -52,15 +62,10 @@ typedef enum {
*
* @param out Object id of the commit containing the stashed state.
* This commit is also the target of the direct reference refs/stash.
- *
* @param repo The owning repository.
- *
* @param stasher The identity of the person performing the stashing.
- *
* @param message Optional description along with the stashed state.
- *
* @param flags Flags to control the stashing process. (see GIT_STASH_* above)
- *
* @return 0 on success, GIT_ENOTFOUND where there's nothing to stash,
* or error code.
*/
@@ -71,6 +76,63 @@ GIT_EXTERN(int) git_stash_save(
const char *message,
uint32_t flags);
+/**
+ * Stash save options structure
+ *
+ * Initialize with `GIT_STASH_SAVE_OPTIONS_INIT`. Alternatively, you can
+ * use `git_stash_save_options_init`.
+ *
+ */
+typedef struct git_stash_save_options {
+ unsigned int version;
+
+ /** Flags to control the stashing process. (see GIT_STASH_* above) */
+ uint32_t flags;
+
+ /** The identity of the person performing the stashing. */
+ const git_signature *stasher;
+
+ /** Optional description along with the stashed state. */
+ const char *message;
+
+ /** Optional paths that control which files are stashed. */
+ git_strarray paths;
+} git_stash_save_options;
+
+/** Current version for the `git_stash_save_options` structure */
+#define GIT_STASH_SAVE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_stash_save_options` */
+#define GIT_STASH_SAVE_OPTIONS_INIT { GIT_STASH_SAVE_OPTIONS_VERSION }
+
+/**
+ * Initialize git_stash_save_options structure
+ *
+ * Initializes a `git_stash_save_options` with default values. Equivalent to
+ * creating an instance with `GIT_STASH_SAVE_OPTIONS_INIT`.
+ *
+ * @param opts The `git_stash_save_options` struct to initialize.
+ * @param version The struct version; pass `GIT_STASH_SAVE_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_stash_save_options_init(
+ git_stash_save_options *opts, unsigned int version);
+
+/**
+ * Save the local modifications to a new stash, with options.
+ *
+ * @param out Object id of the commit containing the stashed state.
+ * This commit is also the target of the direct reference refs/stash.
+ * @param repo The owning repository.
+ * @param opts The stash options.
+ * @return 0 on success, GIT_ENOTFOUND where there's nothing to stash,
+ * or error code.
+ */
+GIT_EXTERN(int) git_stash_save_with_opts(
+ git_oid *out,
+ git_repository *repo,
+ const git_stash_save_options *opts);
+
/** Stash application flags. */
typedef enum {
GIT_STASH_APPLY_DEFAULT = 0,
@@ -78,7 +140,7 @@ typedef enum {
/* Try to reinstate not only the working tree's changes,
* but also the index's changes.
*/
- GIT_STASH_APPLY_REINSTATE_INDEX = (1 << 0),
+ GIT_STASH_APPLY_REINSTATE_INDEX = (1 << 0)
} git_stash_apply_flags;
/** Stash apply progression states */
@@ -104,13 +166,17 @@ typedef enum {
GIT_STASH_APPLY_PROGRESS_CHECKOUT_MODIFIED,
/** The stash was applied successfully. */
- GIT_STASH_APPLY_PROGRESS_DONE,
+ GIT_STASH_APPLY_PROGRESS_DONE
} git_stash_apply_progress_t;
/**
* Stash application progress notification function.
* Return 0 to continue processing, or a negative value to
* abort the stash application.
+ *
+ * @param progress the progress information
+ * @param payload the user-specified payload to the apply function
+ * @return 0 on success, -1 on error
*/
typedef int GIT_CALLBACK(git_stash_apply_progress_cb)(
git_stash_apply_progress_t progress,
@@ -137,7 +203,10 @@ typedef struct git_stash_apply_options {
void *progress_payload;
} git_stash_apply_options;
+/** Current version for the `git_stash_apply_options` structure */
#define GIT_STASH_APPLY_OPTIONS_VERSION 1
+
+/** Static constructor for `git_stash_apply_options` */
#define GIT_STASH_APPLY_OPTIONS_INIT { \
GIT_STASH_APPLY_OPTIONS_VERSION, \
GIT_STASH_APPLY_DEFAULT, \
@@ -171,8 +240,6 @@ GIT_EXTERN(int) git_stash_apply_options_init(
* GIT_EMERGECONFLICT and both the working directory and index will be left
* unmodified.
*
- * Note that a minimum checkout strategy of `GIT_CHECKOUT_SAFE` is implied.
- *
* @param repo The owning repository.
* @param index The position within the stash list. 0 points to the
* most recent stashed state.
@@ -257,4 +324,5 @@ GIT_EXTERN(int) git_stash_pop(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/status.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/status.h
index 543e3fa..e13783b 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/status.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/status.h
@@ -14,7 +14,7 @@
/**
* @file git2/status.h
- * @brief Git file status routines
+ * @brief Status indicates how a user has changed the working directory and index
* @defgroup git_status Git file status routines
* @ingroup Git
* @{
@@ -48,17 +48,16 @@ typedef enum {
GIT_STATUS_WT_UNREADABLE = (1u << 12),
GIT_STATUS_IGNORED = (1u << 14),
- GIT_STATUS_CONFLICTED = (1u << 15),
+ GIT_STATUS_CONFLICTED = (1u << 15)
} git_status_t;
/**
* Function pointer to receive status on individual files
*
- * `path` is the relative path to the file from the root of the repository.
- *
- * `status_flags` is a combination of `git_status_t` values that apply.
- *
- * `payload` is the value you passed to the foreach function as payload.
+ * @param path is the path to the file
+ * @param status_flags the `git_status_t` values for file's status
+ * @param payload the user-specified payload to the foreach function
+ * @return 0 on success, or a negative number on failure
*/
typedef int GIT_CALLBACK(git_status_cb)(
const char *path, unsigned int status_flags, void *payload);
@@ -87,7 +86,7 @@ typedef enum {
* Only gives status based on index to working directory comparison,
* not comparing the index to the HEAD.
*/
- GIT_STATUS_SHOW_WORKDIR_ONLY = 2,
+ GIT_STATUS_SHOW_WORKDIR_ONLY = 2
} git_status_show_t;
/**
@@ -204,9 +203,10 @@ typedef enum {
* Unreadable files will be detected and given the status
* untracked instead of unreadable.
*/
- GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED = (1u << 15),
+ GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED = (1u << 15)
} git_status_opt_t;
+/** Default `git_status_opt_t` values */
#define GIT_STATUS_OPT_DEFAULTS \
(GIT_STATUS_OPT_INCLUDE_IGNORED | \
GIT_STATUS_OPT_INCLUDE_UNTRACKED | \
@@ -227,13 +227,16 @@ typedef struct {
/**
* The `show` value is one of the `git_status_show_t` constants that
- * control which files to scan and in what order.
+ * control which files to scan and in what order. The default is
+ * `GIT_STATUS_SHOW_INDEX_AND_WORKDIR`.
*/
git_status_show_t show;
/**
* The `flags` value is an OR'ed combination of the
- * `git_status_opt_t` values above.
+ * `git_status_opt_t` values above. The default is
+ * `GIT_STATUS_OPT_DEFAULTS`, which matches git's default
+ * behavior.
*/
unsigned int flags;
@@ -250,9 +253,18 @@ typedef struct {
* working directory and index; defaults to HEAD.
*/
git_tree *baseline;
+
+ /**
+ * Threshold above which similar files will be considered renames.
+ * This is equivalent to the -M option. Defaults to 50.
+ */
+ uint16_t rename_threshold;
} git_status_options;
+/** Current version for the `git_status_options` structure */
#define GIT_STATUS_OPTIONS_VERSION 1
+
+/** Static constructor for `git_status_options` */
#define GIT_STATUS_OPTIONS_INIT {GIT_STATUS_OPTIONS_VERSION}
/**
@@ -440,4 +452,5 @@ GIT_EXTERN(int) git_status_should_ignore(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/stdint.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/stdint.h
index 6950427..4f532e1 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/stdint.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/stdint.h
@@ -1,37 +1,37 @@
-// ISO C9x compliant stdint.h for Microsoft Visual Studio
-// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
-//
-// Copyright (c) 2006-2008 Alexander Chemeris
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// 1. Redistributions of source code must retain the above copyright notice,
-// this list of conditions and the following disclaimer.
-//
-// 2. Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-//
-// 3. The name of the author may be used to endorse or promote products
-// derived from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#ifdef _MSC_VER // [
-
-#ifndef _MSC_STDINT_H_ // [
+/* ISO C9x compliant stdint.h for Microsoft Visual Studio
+ * Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
+ *
+ * Copyright (c) 2006-2008 Alexander Chemeris
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * 3. The name of the author may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+ * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ *******************************************************************************/
+
+#ifdef _MSC_VER /* [ */
+
+#ifndef _MSC_STDINT_H_ /* [ */
#define _MSC_STDINT_H_
#if _MSC_VER > 1000
@@ -40,10 +40,11 @@
#include
-// For Visual Studio 6 in C++ mode and for many Visual Studio versions when
-// compiling for ARM we should wrap include with 'extern "C++" {}'
-// or compiler give many errors like this:
-// error C2733: second C linkage of overloaded function 'wmemchr' not allowed
+/* For Visual Studio 6 in C++ mode and for many Visual Studio versions when
+ * compiling for ARM we should wrap include with 'extern "C++" {}'
+ * or compiler give many errors like this:
+ * error C2733: second C linkage of overloaded function 'wmemchr' not allowed
+*/
#ifdef __cplusplus
extern "C" {
#endif
@@ -52,7 +53,7 @@ extern "C" {
}
#endif
-// Define _W64 macros to mark types changing their size, like intptr_t.
+/* Define _W64 macros to mark types changing their size, like intptr_t. */
#ifndef _W64
# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
# define _W64 __w64
@@ -62,13 +63,14 @@ extern "C" {
#endif
-// 7.18.1 Integer types
-
-// 7.18.1.1 Exact-width integer types
-
-// Visual Studio 6 and Embedded Visual C++ 4 doesn't
-// realize that, e.g. char has the same size as __int8
-// so we give up on __intX for them.
+/* 7.18.1 Integer types
+ *
+ * 7.18.1.1 Exact-width integer types
+ *
+ * Visual Studio 6 and Embedded Visual C++ 4 doesn't
+ * realize that, e.g. char has the same size as __int8
+ * so we give up on __intX for them.
+ */
#if (_MSC_VER < 1300)
typedef signed char int8_t;
typedef signed short int16_t;
@@ -88,7 +90,7 @@ typedef signed __int64 int64_t;
typedef unsigned __int64 uint64_t;
-// 7.18.1.2 Minimum-width integer types
+/* 7.18.1.2 Minimum-width integer types */
typedef int8_t int_least8_t;
typedef int16_t int_least16_t;
typedef int32_t int_least32_t;
@@ -98,7 +100,7 @@ typedef uint16_t uint_least16_t;
typedef uint32_t uint_least32_t;
typedef uint64_t uint_least64_t;
-// 7.18.1.3 Fastest minimum-width integer types
+/* 7.18.1.3 Fastest minimum-width integer types */
typedef int8_t int_fast8_t;
typedef int16_t int_fast16_t;
typedef int32_t int_fast32_t;
@@ -108,25 +110,25 @@ typedef uint16_t uint_fast16_t;
typedef uint32_t uint_fast32_t;
typedef uint64_t uint_fast64_t;
-// 7.18.1.4 Integer types capable of holding object pointers
-#ifdef _WIN64 // [
+/* 7.18.1.4 Integer types capable of holding object pointers */
+#ifdef _WIN64 /* [ */
typedef signed __int64 intptr_t;
typedef unsigned __int64 uintptr_t;
-#else // _WIN64 ][
+#else /* _WIN64 ][ */
typedef _W64 signed int intptr_t;
typedef _W64 unsigned int uintptr_t;
-#endif // _WIN64 ]
+#endif /* _WIN64 ] */
-// 7.18.1.5 Greatest-width integer types
+/* 7.18.1.5 Greatest-width integer types */
typedef int64_t intmax_t;
typedef uint64_t uintmax_t;
-// 7.18.2 Limits of specified-width integer types
+/* 7.18.2 Limits of specified-width integer types */
-#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259
+#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) /* [ See footnote 220 at page 257 and footnote 221 at page 259 */
-// 7.18.2.1 Limits of exact-width integer types
+/* 7.18.2.1 Limits of exact-width integer types */
#define INT8_MIN ((int8_t)_I8_MIN)
#define INT8_MAX _I8_MAX
#define INT16_MIN ((int16_t)_I16_MIN)
@@ -140,7 +142,7 @@ typedef uint64_t uintmax_t;
#define UINT32_MAX _UI32_MAX
#define UINT64_MAX _UI64_MAX
-// 7.18.2.2 Limits of minimum-width integer types
+/* 7.18.2.2 Limits of minimum-width integer types */
#define INT_LEAST8_MIN INT8_MIN
#define INT_LEAST8_MAX INT8_MAX
#define INT_LEAST16_MIN INT16_MIN
@@ -154,7 +156,7 @@ typedef uint64_t uintmax_t;
#define UINT_LEAST32_MAX UINT32_MAX
#define UINT_LEAST64_MAX UINT64_MAX
-// 7.18.2.3 Limits of fastest minimum-width integer types
+/* 7.18.2.3 Limits of fastest minimum-width integer types */
#define INT_FAST8_MIN INT8_MIN
#define INT_FAST8_MAX INT8_MAX
#define INT_FAST16_MIN INT16_MIN
@@ -168,62 +170,62 @@ typedef uint64_t uintmax_t;
#define UINT_FAST32_MAX UINT32_MAX
#define UINT_FAST64_MAX UINT64_MAX
-// 7.18.2.4 Limits of integer types capable of holding object pointers
-#ifdef _WIN64 // [
+/* 7.18.2.4 Limits of integer types capable of holding object pointers */
+#ifdef _WIN64 /* [ */
# define INTPTR_MIN INT64_MIN
# define INTPTR_MAX INT64_MAX
# define UINTPTR_MAX UINT64_MAX
-#else // _WIN64 ][
+#else /* _WIN64 ][ */
# define INTPTR_MIN INT32_MIN
# define INTPTR_MAX INT32_MAX
# define UINTPTR_MAX UINT32_MAX
-#endif // _WIN64 ]
+#endif /* _WIN64 ] */
-// 7.18.2.5 Limits of greatest-width integer types
+/* 7.18.2.5 Limits of greatest-width integer types */
#define INTMAX_MIN INT64_MIN
#define INTMAX_MAX INT64_MAX
#define UINTMAX_MAX UINT64_MAX
-// 7.18.3 Limits of other integer types
+/* 7.18.3 Limits of other integer types */
-#ifdef _WIN64 // [
+#ifdef _WIN64 /* [ */
# define PTRDIFF_MIN _I64_MIN
# define PTRDIFF_MAX _I64_MAX
-#else // _WIN64 ][
+#else /* _WIN64 ][ */
# define PTRDIFF_MIN _I32_MIN
# define PTRDIFF_MAX _I32_MAX
-#endif // _WIN64 ]
+#endif /* _WIN64 ] */
#define SIG_ATOMIC_MIN INT_MIN
#define SIG_ATOMIC_MAX INT_MAX
-#ifndef SIZE_MAX // [
-# ifdef _WIN64 // [
+#ifndef SIZE_MAX /* [ */
+# ifdef _WIN64 /* [ */
# define SIZE_MAX _UI64_MAX
-# else // _WIN64 ][
+# else /* _WIN64 ][ */
# define SIZE_MAX _UI32_MAX
-# endif // _WIN64 ]
-#endif // SIZE_MAX ]
+# endif /* _WIN64 ] */
+#endif /* SIZE_MAX ] */
-// WCHAR_MIN and WCHAR_MAX are also defined in
-#ifndef WCHAR_MIN // [
+/* WCHAR_MIN and WCHAR_MAX are also defined in */
+#ifndef WCHAR_MIN /* [ */
# define WCHAR_MIN 0
-#endif // WCHAR_MIN ]
-#ifndef WCHAR_MAX // [
+#endif /* WCHAR_MIN ] */
+#ifndef WCHAR_MAX /* [ */
# define WCHAR_MAX _UI16_MAX
-#endif // WCHAR_MAX ]
+#endif /* WCHAR_MAX ] */
#define WINT_MIN 0
#define WINT_MAX _UI16_MAX
-#endif // __STDC_LIMIT_MACROS ]
+#endif /* __STDC_LIMIT_MACROS ] */
-// 7.18.4 Limits of other integer types
+/* 7.18.4 Limits of other integer types */
-#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260
+#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) /* [ See footnote 224 at page 260 */
-// 7.18.4.1 Macros for minimum-width integer constants
+/* 7.18.4.1 Macros for minimum-width integer constants */
#define INT8_C(val) val##i8
#define INT16_C(val) val##i16
@@ -235,13 +237,13 @@ typedef uint64_t uintmax_t;
#define UINT32_C(val) val##ui32
#define UINT64_C(val) val##ui64
-// 7.18.4.2 Macros for greatest-width integer constants
+/* 7.18.4.2 Macros for greatest-width integer constants */
#define INTMAX_C INT64_C
#define UINTMAX_C UINT64_C
-#endif // __STDC_CONSTANT_MACROS ]
+#endif /* __STDC_CONSTANT_MACROS ] */
-#endif // _MSC_STDINT_H_ ]
+#endif /* _MSC_STDINT_H_ ] */
-#endif // _MSC_VER ]
\ No newline at end of file
+#endif /* _MSC_VER ] */
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/strarray.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/strarray.h
index 0f657e6..dcb628a 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/strarray.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/strarray.h
@@ -11,8 +11,8 @@
/**
* @file git2/strarray.h
- * @brief Git string array routines
- * @defgroup git_strarray Git string array routines
+ * @brief An array of strings for the user to free
+ * @defgroup git_strarray An array of strings for the user to free
* @ingroup Git
* @{
*/
@@ -36,21 +36,7 @@ typedef struct git_strarray {
*/
GIT_EXTERN(void) git_strarray_dispose(git_strarray *array);
-/**
- * Copy a string array object from source to target.
- *
- * Note: target is overwritten and hence should be empty, otherwise its
- * contents are leaked. Call git_strarray_free() if necessary.
- *
- * @param tgt target
- * @param src source
- * @return 0 on success, < 0 on allocation failure
- */
-GIT_EXTERN(int) git_strarray_copy(git_strarray *tgt, const git_strarray *src);
-
-
/** @} */
GIT_END_DECL
#endif
-
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/submodule.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/submodule.h
index 29d8bc1..911b3ce 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/submodule.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/submodule.h
@@ -15,7 +15,7 @@
/**
* @file git2/submodule.h
- * @brief Git submodule management utilities
+ * @brief Submodules place another repository's contents within this one
*
* Submodule support in libgit2 builds a list of known submodules and keeps
* it in the repository. The list is built from the .gitmodules file, the
@@ -85,23 +85,30 @@ typedef enum {
GIT_SUBMODULE_STATUS_WD_MODIFIED = (1u << 10),
GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED = (1u << 11),
GIT_SUBMODULE_STATUS_WD_WD_MODIFIED = (1u << 12),
- GIT_SUBMODULE_STATUS_WD_UNTRACKED = (1u << 13),
+ GIT_SUBMODULE_STATUS_WD_UNTRACKED = (1u << 13)
} git_submodule_status_t;
+/** Submodule source bits */
#define GIT_SUBMODULE_STATUS__IN_FLAGS 0x000Fu
+/** Submodule index status */
#define GIT_SUBMODULE_STATUS__INDEX_FLAGS 0x0070u
+/** Submodule working directory status */
#define GIT_SUBMODULE_STATUS__WD_FLAGS 0x3F80u
+/** Whether the submodule is modified */
#define GIT_SUBMODULE_STATUS_IS_UNMODIFIED(S) \
(((S) & ~GIT_SUBMODULE_STATUS__IN_FLAGS) == 0)
+/** Whether the submodule is modified (in the index) */
#define GIT_SUBMODULE_STATUS_IS_INDEX_UNMODIFIED(S) \
(((S) & GIT_SUBMODULE_STATUS__INDEX_FLAGS) == 0)
+/** Whether the submodule is modified (in the working directory) */
#define GIT_SUBMODULE_STATUS_IS_WD_UNMODIFIED(S) \
(((S) & (GIT_SUBMODULE_STATUS__WD_FLAGS & \
~GIT_SUBMODULE_STATUS_WD_UNINITIALIZED)) == 0)
+/** Whether the submodule working directory is dirty */
#define GIT_SUBMODULE_STATUS_IS_WD_DIRTY(S) \
(((S) & (GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED | \
GIT_SUBMODULE_STATUS_WD_WD_MODIFIED | \
@@ -130,10 +137,8 @@ typedef struct git_submodule_update_options {
/**
* These options are passed to the checkout step. To disable
- * checkout, set the `checkout_strategy` to
- * `GIT_CHECKOUT_NONE`. Generally you will want the use
- * GIT_CHECKOUT_SAFE to update files in the working
- * directory.
+ * checkout, set the `checkout_strategy` to `GIT_CHECKOUT_NONE`
+ * or `GIT_CHECKOUT_DRY_RUN`.
*/
git_checkout_options checkout_opts;
@@ -152,11 +157,15 @@ typedef struct git_submodule_update_options {
int allow_fetch;
} git_submodule_update_options;
+/** Current version for the `git_submodule_update_options` structure */
#define GIT_SUBMODULE_UPDATE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_submodule_update_options` */
#define GIT_SUBMODULE_UPDATE_OPTIONS_INIT \
{ GIT_SUBMODULE_UPDATE_OPTIONS_VERSION, \
- { GIT_CHECKOUT_OPTIONS_VERSION, GIT_CHECKOUT_SAFE }, \
- GIT_FETCH_OPTIONS_INIT, 1 }
+ GIT_CHECKOUT_OPTIONS_INIT, \
+ GIT_FETCH_OPTIONS_INIT, \
+ 1 }
/**
* Initialize git_submodule_update_options structure
@@ -181,7 +190,7 @@ GIT_EXTERN(int) git_submodule_update_options_init(
* @param submodule Submodule object
* @param init If the submodule is not initialized, setting this flag to true
* will initialize the submodule before updating. Otherwise, this will
- * return an error if attempting to update an uninitialzed repository.
+ * return an error if attempting to update an uninitialized repository.
* but setting this to true forces them to be updated.
* @param options configuration options for the update. If NULL, the
* function works as though GIT_SUBMODULE_UPDATE_OPTIONS_INIT was passed.
@@ -229,6 +238,7 @@ GIT_EXTERN(int) git_submodule_lookup(
*
* @param out Pointer to store the copy of the submodule.
* @param source Original submodule to copy.
+ * @return 0
*/
GIT_EXTERN(int) git_submodule_dup(git_submodule **out, git_submodule *source);
@@ -320,6 +330,7 @@ GIT_EXTERN(int) git_submodule_clone(
* (but doesn't actually do the commit).
*
* @param submodule The submodule to finish adding.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_submodule_add_finalize(git_submodule *submodule);
@@ -529,7 +540,8 @@ GIT_EXTERN(int) git_submodule_set_update(
* Note that at this time, libgit2 does not honor this setting and the
* fetch functionality current ignores submodules.
*
- * @return 0 if fetchRecurseSubmodules is false, 1 if true
+ * @param submodule the submodule to examine
+ * @return the submodule recursion configuration
*/
GIT_EXTERN(git_submodule_recurse_t) git_submodule_fetch_recurse_submodules(
git_submodule *submodule);
@@ -541,7 +553,7 @@ GIT_EXTERN(git_submodule_recurse_t) git_submodule_fetch_recurse_submodules(
*
* @param repo the repository to affect
* @param name the submodule to configure
- * @param fetch_recurse_submodules Boolean value
+ * @param fetch_recurse_submodules the submodule recursion configuration
* @return old value for fetchRecurseSubmodules
*/
GIT_EXTERN(int) git_submodule_set_fetch_recurse_submodules(
@@ -589,6 +601,9 @@ GIT_EXTERN(int) git_submodule_repo_init(
* submodule config, acting like "git submodule sync". This is useful if
* you have altered the URL for the submodule (or it has been altered by a
* fetch of upstream changes) and you need to update your local repo.
+ *
+ * @param submodule The submodule to copy.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_submodule_sync(git_submodule *submodule);
@@ -660,4 +675,5 @@ GIT_EXTERN(int) git_submodule_location(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/alloc.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/alloc.h
index c295807..67506f2 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/alloc.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/alloc.h
@@ -10,6 +10,17 @@
#include "git2/common.h"
+/**
+ * @file git2/sys/alloc.h
+ * @brief Custom memory allocators
+ * @defgroup git_merge Git merge routines
+ * @ingroup Git
+ *
+ * Users can configure custom allocators; this is particularly
+ * interesting when running in constrained environments, when calling
+ * from another language, or during testing.
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -24,28 +35,6 @@ typedef struct {
/** Allocate `n` bytes of memory */
void * GIT_CALLBACK(gmalloc)(size_t n, const char *file, int line);
- /**
- * Allocate memory for an array of `nelem` elements, where each element
- * has a size of `elsize`. Returned memory shall be initialized to
- * all-zeroes
- */
- void * GIT_CALLBACK(gcalloc)(size_t nelem, size_t elsize, const char *file, int line);
-
- /** Allocate memory for the string `str` and duplicate its contents. */
- char * GIT_CALLBACK(gstrdup)(const char *str, const char *file, int line);
-
- /**
- * Equivalent to the `gstrdup` function, but only duplicating at most
- * `n + 1` bytes
- */
- char * GIT_CALLBACK(gstrndup)(const char *str, size_t n, const char *file, int line);
-
- /**
- * Equivalent to `gstrndup`, but will always duplicate exactly `n` bytes
- * of `str`. Thus, out of bounds reads at `str` may happen.
- */
- char * GIT_CALLBACK(gsubstrdup)(const char *str, size_t n, const char *file, int line);
-
/**
* This function shall deallocate the old object `ptr` and return a
* pointer to a new object that has the size specified by `size`. In
@@ -53,18 +42,6 @@ typedef struct {
*/
void * GIT_CALLBACK(grealloc)(void *ptr, size_t size, const char *file, int line);
- /**
- * This function shall be equivalent to `grealloc`, but allocating
- * `neleme * elsize` bytes.
- */
- void * GIT_CALLBACK(greallocarray)(void *ptr, size_t nelem, size_t elsize, const char *file, int line);
-
- /**
- * This function shall allocate a new array of `nelem` elements, where
- * each element has a size of `elsize` bytes.
- */
- void * GIT_CALLBACK(gmallocarray)(size_t nelem, size_t elsize, const char *file, int line);
-
/**
* This function shall free the memory pointed to by `ptr`. In case
* `ptr` is `NULL`, this shall be a no-op.
@@ -96,6 +73,7 @@ int git_stdalloc_init_allocator(git_allocator *allocator);
*/
int git_win32_crtdbg_init_allocator(git_allocator *allocator);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/commit.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/commit.h
index ba67106..a8253c0 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/commit.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/commit.h
@@ -14,7 +14,7 @@
/**
* @file git2/sys/commit.h
* @brief Low-level Git commit creation
- * @defgroup git_backend Git custom backend APIs
+ * @defgroup git_commit Low-level Git commit creation
* @ingroup Git
* @{
*/
@@ -29,7 +29,43 @@ GIT_BEGIN_DECL
* the `tree`, neither the `parents` list of `git_oid`s are checked for
* validity.
*
- * @see git_commit_create
+ * @param id Pointer in which to store the OID of the newly created commit
+ *
+ * @param repo Repository where to store the commit
+ *
+ * @param update_ref If not NULL, name of the reference that
+ * will be updated to point to this commit. If the reference
+ * is not direct, it will be resolved to a direct reference.
+ * Use "HEAD" to update the HEAD of the current branch and
+ * make it point to this commit. If the reference doesn't
+ * exist yet, it will be created. If it does exist, the first
+ * parent must be the tip of this branch.
+ *
+ * @param author Signature with author and author time of commit
+ *
+ * @param committer Signature with committer and * commit time of commit
+ *
+ * @param message_encoding The encoding for the message in the
+ * commit, represented with a standard encoding name.
+ * E.g. "UTF-8". If NULL, no encoding header is written and
+ * UTF-8 is assumed.
+ *
+ * @param message Full message for this commit
+ *
+ * @param tree An instance of a `git_tree` object that will
+ * be used as the tree for the commit. This tree object must
+ * also be owned by the given `repo`.
+ *
+ * @param parent_count Number of parents for this commit
+ *
+ * @param parents Array of `parent_count` pointers to `git_commit`
+ * objects that will be used as the parents for this commit. This
+ * array may be NULL if `parent_count` is 0 (root commit). All the
+ * given commits must be owned by the `repo`.
+ *
+ * @return 0 or an error code
+ * The created commit will be written to the Object Database and
+ * the given reference will be updated to point to it
*/
GIT_EXTERN(int) git_commit_create_from_ids(
git_oid *id,
@@ -49,6 +85,10 @@ GIT_EXTERN(int) git_commit_create_from_ids(
* This is invoked with the count of the number of parents processed so far
* along with the user supplied payload. This should return a git_oid of
* the next parent or NULL if all parents have been provided.
+ *
+ * @param idx the index of the parent
+ * @param payload the user-specified payload
+ * @return the object id of the parent, or NULL if there are no further parents
*/
typedef const git_oid * GIT_CALLBACK(git_commit_parent_callback)(size_t idx, void *payload);
@@ -61,7 +101,40 @@ typedef const git_oid * GIT_CALLBACK(git_commit_parent_callback)(size_t idx, voi
* with `parent_payload` and should return `git_oid` values or NULL to
* indicate that all parents are accounted for.
*
- * @see git_commit_create
+ * @param id Pointer in which to store the OID of the newly created commit
+ *
+ * @param repo Repository where to store the commit
+ *
+ * @param update_ref If not NULL, name of the reference that
+ * will be updated to point to this commit. If the reference
+ * is not direct, it will be resolved to a direct reference.
+ * Use "HEAD" to update the HEAD of the current branch and
+ * make it point to this commit. If the reference doesn't
+ * exist yet, it will be created. If it does exist, the first
+ * parent must be the tip of this branch.
+ *
+ * @param author Signature with author and author time of commit
+ *
+ * @param committer Signature with committer and * commit time of commit
+ *
+ * @param message_encoding The encoding for the message in the
+ * commit, represented with a standard encoding name.
+ * E.g. "UTF-8". If NULL, no encoding header is written and
+ * UTF-8 is assumed.
+ *
+ * @param message Full message for this commit
+ *
+ * @param tree An instance of a `git_tree` object that will
+ * be used as the tree for the commit. This tree object must
+ * also be owned by the given `repo`.
+ *
+ * @param parent_cb Callback to invoke to obtain parent information
+ *
+ * @param parent_payload User-specified payload to provide to the callback
+ *
+ * @return 0 or an error code
+ * The created commit will be written to the Object Database and
+ * the given reference will be updated to point to it
*/
GIT_EXTERN(int) git_commit_create_from_callback(
git_oid *id,
@@ -77,4 +150,5 @@ GIT_EXTERN(int) git_commit_create_from_callback(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/commit_graph.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/commit_graph.h
index f6c0fc4..ff547ef 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/commit_graph.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/commit_graph.h
@@ -12,13 +12,52 @@
/**
* @file git2/sys/commit_graph.h
- * @brief Git commit-graph
- * @defgroup git_commit_graph Git commit-graph APIs
+ * @brief Commit graphs store information about commit relationships
+ * @defgroup git_commit_graph Commit graphs
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/**
+ * Options structure for `git_commit_graph_open_new`.
+ *
+ * Initialize with `GIT_COMMIT_GRAPH_OPEN_OPTIONS_INIT`. Alternatively,
+ * you can use `git_commit_graph_open_options_init`.
+ */
+typedef struct {
+ unsigned int version;
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /** The object ID type that this commit graph contains. */
+ git_oid_t oid_type;
+#endif
+} git_commit_graph_open_options;
+
+/** Current version for the `git_commit_graph_open_options` structure */
+#define GIT_COMMIT_GRAPH_OPEN_OPTIONS_VERSION 1
+
+/** Static constructor for `git_commit_graph_open_options` */
+#define GIT_COMMIT_GRAPH_OPEN_OPTIONS_INIT { \
+ GIT_COMMIT_GRAPH_OPEN_OPTIONS_VERSION \
+ }
+
+/**
+ * Initialize git_commit_graph_open_options structure
+ *
+ * Initializes a `git_commit_graph_open_options` with default values.
+ * Equivalent to creating an instance with
+ * `GIT_COMMIT_GRAPH_OPEN_OPTIONS_INIT`.
+ *
+ * @param opts The `git_commit_graph_open_options` struct to initialize.
+ * @param version The struct version; pass `GIT_COMMIT_GRAPH_OPEN_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_commit_graph_open_options_init(
+ git_commit_graph_open_options *opts,
+ unsigned int version);
+
+
/**
* Opens a `git_commit_graph` from a path to an objects directory.
*
@@ -28,7 +67,13 @@ GIT_BEGIN_DECL
* @param objects_dir the path to a git objects directory.
* @return Zero on success; -1 on failure.
*/
-GIT_EXTERN(int) git_commit_graph_open(git_commit_graph **cgraph_out, const char *objects_dir);
+GIT_EXTERN(int) git_commit_graph_open(
+ git_commit_graph **cgraph_out,
+ const char *objects_dir
+#ifdef GIT_EXPERIMENTAL_SHA256
+ , const git_commit_graph_open_options *options
+#endif
+ );
/**
* Frees commit-graph data. This should only be called when memory allocated
@@ -40,50 +85,6 @@ GIT_EXTERN(int) git_commit_graph_open(git_commit_graph **cgraph_out, const char
*/
GIT_EXTERN(void) git_commit_graph_free(git_commit_graph *cgraph);
-/**
- * Create a new writer for `commit-graph` files.
- *
- * @param out Location to store the writer pointer.
- * @param objects_info_dir The `objects/info` directory.
- * The `commit-graph` file will be written in this directory.
- * @return 0 or an error code
- */
-GIT_EXTERN(int) git_commit_graph_writer_new(
- git_commit_graph_writer **out,
- const char *objects_info_dir);
-
-/**
- * Free the commit-graph writer and its resources.
- *
- * @param w The writer to free. If NULL no action is taken.
- */
-GIT_EXTERN(void) git_commit_graph_writer_free(git_commit_graph_writer *w);
-
-/**
- * Add an `.idx` file (associated to a packfile) to the writer.
- *
- * @param w The writer.
- * @param repo The repository that owns the `.idx` file.
- * @param idx_path The path of an `.idx` file.
- * @return 0 or an error code
- */
-GIT_EXTERN(int) git_commit_graph_writer_add_index_file(
- git_commit_graph_writer *w,
- git_repository *repo,
- const char *idx_path);
-
-/**
- * Add a revwalk to the writer. This will add all the commits from the revwalk
- * to the commit-graph.
- *
- * @param w The writer.
- * @param walk The git_revwalk.
- * @return 0 or an error code
- */
-GIT_EXTERN(int) git_commit_graph_writer_add_revwalk(
- git_commit_graph_writer *w,
- git_revwalk *walk);
-
/**
* The strategy to use when adding a new set of commits to a pre-existing
@@ -94,19 +95,23 @@ typedef enum {
* Do not split commit-graph files. The other split strategy-related option
* fields are ignored.
*/
- GIT_COMMIT_GRAPH_SPLIT_STRATEGY_SINGLE_FILE = 0,
+ GIT_COMMIT_GRAPH_SPLIT_STRATEGY_SINGLE_FILE = 0
} git_commit_graph_split_strategy_t;
/**
- * Options structure for
- * `git_commit_graph_writer_commit`/`git_commit_graph_writer_dump`.
+ * Options structure for `git_commit_graph_writer_new`.
*
- * Initialize with `GIT_COMMIT_GRAPH_WRITER_OPTIONS_INIT`. Alternatively, you
- * can use `git_commit_graph_writer_options_init`.
+ * Initialize with `GIT_COMMIT_GRAPH_WRITER_OPTIONS_INIT`. Alternatively,
+ * you can use `git_commit_graph_writer_options_init`.
*/
typedef struct {
unsigned int version;
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /** The object ID type that this commit graph contains. */
+ git_oid_t oid_type;
+#endif
+
/**
* The strategy to use when adding new commits to a pre-existing commit-graph
* chain.
@@ -126,7 +131,10 @@ typedef struct {
size_t max_commits;
} git_commit_graph_writer_options;
+/** Current version for the `git_commit_graph_writer_options` structure */
#define GIT_COMMIT_GRAPH_WRITER_OPTIONS_VERSION 1
+
+/** Static constructor for `git_commit_graph_writer_options` */
#define GIT_COMMIT_GRAPH_WRITER_OPTIONS_INIT { \
GIT_COMMIT_GRAPH_WRITER_OPTIONS_VERSION \
}
@@ -145,30 +153,73 @@ GIT_EXTERN(int) git_commit_graph_writer_options_init(
git_commit_graph_writer_options *opts,
unsigned int version);
+/**
+ * Create a new writer for `commit-graph` files.
+ *
+ * @param out Location to store the writer pointer.
+ * @param objects_info_dir The `objects/info` directory.
+ * The `commit-graph` file will be written in this directory.
+ * @param options The options for the commit graph writer.
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_commit_graph_writer_new(
+ git_commit_graph_writer **out,
+ const char *objects_info_dir,
+ const git_commit_graph_writer_options *options);
+
+/**
+ * Free the commit-graph writer and its resources.
+ *
+ * @param w The writer to free. If NULL no action is taken.
+ */
+GIT_EXTERN(void) git_commit_graph_writer_free(git_commit_graph_writer *w);
+
+/**
+ * Add an `.idx` file (associated to a packfile) to the writer.
+ *
+ * @param w The writer.
+ * @param repo The repository that owns the `.idx` file.
+ * @param idx_path The path of an `.idx` file.
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_commit_graph_writer_add_index_file(
+ git_commit_graph_writer *w,
+ git_repository *repo,
+ const char *idx_path);
+
+/**
+ * Add a revwalk to the writer. This will add all the commits from the revwalk
+ * to the commit-graph.
+ *
+ * @param w The writer.
+ * @param walk The git_revwalk.
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_commit_graph_writer_add_revwalk(
+ git_commit_graph_writer *w,
+ git_revwalk *walk);
+
/**
* Write a `commit-graph` file to a file.
*
* @param w The writer
- * @param opts Pointer to git_commit_graph_writer_options struct.
* @return 0 or an error code
*/
GIT_EXTERN(int) git_commit_graph_writer_commit(
- git_commit_graph_writer *w,
- git_commit_graph_writer_options *opts);
+ git_commit_graph_writer *w);
/**
* Dump the contents of the `commit-graph` to an in-memory buffer.
*
- * @param buffer Buffer where to store the contents of the `commit-graph`.
+ * @param[out] buffer Buffer where to store the contents of the `commit-graph`.
* @param w The writer.
- * @param opts Pointer to git_commit_graph_writer_options struct.
* @return 0 or an error code
*/
GIT_EXTERN(int) git_commit_graph_writer_dump(
git_buf *buffer,
- git_commit_graph_writer *w,
- git_commit_graph_writer_options *opts);
+ git_commit_graph_writer *w);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/config.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/config.h
index 0a9005e..cc4a399 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/config.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/config.h
@@ -13,13 +13,28 @@
/**
* @file git2/sys/config.h
- * @brief Git config backend routines
- * @defgroup git_backend Git custom backend APIs
+ * @brief Custom configuration database backends
+ * @defgroup git_backend Custom configuration database backends
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/**
+ * An entry in a configuration backend. This is provided so that
+ * backend implementors can have a mechanism to free their data.
+ */
+typedef struct git_config_backend_entry {
+ /** The base configuration entry */
+ struct git_config_entry entry;
+
+ /**
+ * Free function for this entry; for internal purposes. Callers
+ * should call `git_config_entry_free` to free data.
+ */
+ void GIT_CALLBACK(free)(struct git_config_backend_entry *entry);
+} git_config_backend_entry;
+
/**
* Every iterator must have this struct as its first element, so the
* API can talk to it. You'd define your iterator as
@@ -39,7 +54,7 @@ struct git_config_iterator {
* Return the current entry and advance the iterator. The
* memory belongs to the library.
*/
- int GIT_CALLBACK(next)(git_config_entry **entry, git_config_iterator *iter);
+ int GIT_CALLBACK(next)(git_config_backend_entry **entry, git_config_iterator *iter);
/**
* Free the iterator
@@ -59,7 +74,7 @@ struct git_config_backend {
/* Open means open the file/database and parse if necessary */
int GIT_CALLBACK(open)(struct git_config_backend *, git_config_level_t level, const git_repository *repo);
- int GIT_CALLBACK(get)(struct git_config_backend *, const char *key, git_config_entry **entry);
+ int GIT_CALLBACK(get)(struct git_config_backend *, const char *key, git_config_backend_entry **entry);
int GIT_CALLBACK(set)(struct git_config_backend *, const char *key, const char *value);
int GIT_CALLBACK(set_multivar)(git_config_backend *cfg, const char *name, const char *regexp, const char *value);
int GIT_CALLBACK(del)(struct git_config_backend *, const char *key);
@@ -83,7 +98,11 @@ struct git_config_backend {
int GIT_CALLBACK(unlock)(struct git_config_backend *, int success);
void GIT_CALLBACK(free)(struct git_config_backend *);
};
+
+/** Current version for the `git_config_backend_options` structure */
#define GIT_CONFIG_BACKEND_VERSION 1
+
+/** Static constructor for `git_config_backend_options` */
#define GIT_CONFIG_BACKEND_INIT {GIT_CONFIG_BACKEND_VERSION}
/**
@@ -125,6 +144,63 @@ GIT_EXTERN(int) git_config_add_backend(
const git_repository *repo,
int force);
+/** Options for in-memory configuration backends. */
+typedef struct {
+ unsigned int version;
+
+ /**
+ * The type of this backend (eg, "command line"). If this is
+ * NULL, then this will be "in-memory".
+ */
+ const char *backend_type;
+
+ /**
+ * The path to the origin; if this is NULL then it will be
+ * left unset in the resulting configuration entries.
+ */
+ const char *origin_path;
+} git_config_backend_memory_options;
+
+/** Current version for the `git_config_backend_memory_options` structure */
+#define GIT_CONFIG_BACKEND_MEMORY_OPTIONS_VERSION 1
+
+/** Static constructor for `git_config_backend_memory_options` */
+#define GIT_CONFIG_BACKEND_MEMORY_OPTIONS_INIT { GIT_CONFIG_BACKEND_MEMORY_OPTIONS_VERSION }
+
+
+/**
+ * Create an in-memory configuration backend from a string in standard
+ * git configuration file format.
+ *
+ * @param out the new backend
+ * @param cfg the configuration that is to be parsed
+ * @param len the length of the string pointed to by `cfg`
+ * @param opts the options to initialize this backend with, or NULL
+ * @return 0 on success or an error code
+ */
+extern int git_config_backend_from_string(
+ git_config_backend **out,
+ const char *cfg,
+ size_t len,
+ git_config_backend_memory_options *opts);
+
+/**
+ * Create an in-memory configuration backend from a list of name/value
+ * pairs.
+ *
+ * @param out the new backend
+ * @param values the configuration values to set (in "key=value" format)
+ * @param len the length of the values array
+ * @param opts the options to initialize this backend with, or NULL
+ * @return 0 on success or an error code
+ */
+extern int git_config_backend_from_values(
+ git_config_backend **out,
+ const char **values,
+ size_t len,
+ git_config_backend_memory_options *opts);
+
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/credential.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/credential.h
index bb4c9f9..0d573a3 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/credential.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/credential.h
@@ -11,9 +11,9 @@
#include "git2/credential.h"
/**
- * @file git2/sys/cred.h
- * @brief Git credentials low-level implementation
- * @defgroup git_credential Git credentials low-level implementation
+ * @file git2/sys/credential.h
+ * @brief Low-level credentials implementation
+ * @defgroup git_credential Low-level credentials implementation
* @ingroup Git
* @{
*/
@@ -85,6 +85,7 @@ struct git_credential_ssh_custom {
void *payload; /**< Payload passed to prompt_callback */
};
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/diff.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/diff.h
index aefd7b9..a398f54 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/diff.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/diff.h
@@ -15,7 +15,7 @@
/**
* @file git2/sys/diff.h
- * @brief Low-level Git diff utilities
+ * @brief Low-level diff utilities
* @ingroup Git
* @{
*/
@@ -33,6 +33,12 @@ GIT_BEGIN_DECL
* must pass a `git_buf *` value as the payload to the `git_diff_print`
* and/or `git_patch_print` function. The data will be appended to the
* buffer (after any existing content).
+ *
+ * @param delta the delta being processed
+ * @param hunk the hunk being processed
+ * @param line the line being processed
+ * @param payload the payload provided by the diff generator
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_diff_print_callback__to_buf(
const git_diff_delta *delta,
@@ -53,6 +59,12 @@ GIT_EXTERN(int) git_diff_print_callback__to_buf(
* value from `fopen()`) as the payload to the `git_diff_print`
* and/or `git_patch_print` function. If you pass NULL, this will write
* data to `stdout`.
+ *
+ * @param delta the delta being processed
+ * @param hunk the hunk being processed
+ * @param line the line being processed
+ * @param payload the payload provided by the diff generator
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_diff_print_callback__to_file_handle(
const git_diff_delta *delta,
@@ -70,7 +82,10 @@ typedef struct {
size_t oid_calculations; /**< Number of ID calculations */
} git_diff_perfdata;
+/** Current version for the `git_diff_perfdata_options` structure */
#define GIT_DIFF_PERFDATA_VERSION 1
+
+/** Static constructor for `git_diff_perfdata_options` */
#define GIT_DIFF_PERFDATA_INIT {GIT_DIFF_PERFDATA_VERSION,0,0}
/**
@@ -85,10 +100,15 @@ GIT_EXTERN(int) git_diff_get_perfdata(
/**
* Get performance data for diffs from a git_status_list
+ *
+ * @param out Structure to be filled with diff performance data
+ * @param status Diff to read performance data from
+ * @return 0 for success, <0 for error
*/
GIT_EXTERN(int) git_status_list_get_perfdata(
git_diff_perfdata *out, const git_status_list *status);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/email.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/email.h
index 6f4a286..26e792a 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/email.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/email.h
@@ -7,6 +7,11 @@
#ifndef INCLUDE_sys_git_email_h__
#define INCLUDE_sys_git_email_h__
+#include "git2/common.h"
+#include "git2/diff.h"
+#include "git2/email.h"
+#include "git2/types.h"
+
/**
* @file git2/sys/email.h
* @brief Advanced git email creation routines
@@ -28,6 +33,7 @@ GIT_BEGIN_DECL
* @param body optional text to include above the diffstat
* @param author the person who authored this commit
* @param opts email creation options
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_email_create_from_diff(
git_buf *out,
@@ -42,4 +48,5 @@ GIT_EXTERN(int) git_email_create_from_diff(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/errors.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/errors.h
new file mode 100644
index 0000000..44e8ecb
--- /dev/null
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/errors.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) the libgit2 contributors. All rights reserved.
+ *
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
+ * a Linking Exception. For full terms see the included COPYING file.
+ */
+
+#ifndef INCLUDE_sys_git_errors_h__
+#define INCLUDE_sys_git_errors_h__
+
+#include "git2/common.h"
+
+/**
+ * @file git2/sys/errors.h
+ * @brief Advanced error handling
+ * @ingroup Git
+ *
+ * Error handling for advanced consumers; those who use callbacks
+ * or those who create custom databases.
+ * @{
+ */
+GIT_BEGIN_DECL
+
+/**
+ * Clear the last library error that occurred for this thread.
+ */
+GIT_EXTERN(void) git_error_clear(void);
+
+/**
+ * Set the error message string for this thread, using `printf`-style
+ * formatting.
+ *
+ * This function is public so that custom ODB backends and the like can
+ * relay an error message through libgit2. Most regular users of libgit2
+ * will never need to call this function -- actually, calling it in most
+ * circumstances (for example, calling from within a callback function)
+ * will just end up having the value overwritten by libgit2 internals.
+ *
+ * This error message is stored in thread-local storage and only applies
+ * to the particular thread that this libgit2 call is made from.
+ *
+ * @param error_class One of the `git_error_t` enum above describing the
+ * general subsystem that is responsible for the error.
+ * @param fmt The `printf`-style format string; subsequent arguments must
+ * be the arguments for the format string.
+ */
+GIT_EXTERN(void) git_error_set(int error_class, const char *fmt, ...)
+ GIT_FORMAT_PRINTF(2, 3);
+
+/**
+ * Set the error message string for this thread. This function is like
+ * `git_error_set` but takes a static string instead of a `printf`-style
+ * format.
+ *
+ * @param error_class One of the `git_error_t` enum above describing the
+ * general subsystem that is responsible for the error.
+ * @param string The error message to keep
+ * @return 0 on success or -1 on failure
+ */
+GIT_EXTERN(int) git_error_set_str(int error_class, const char *string);
+
+/**
+ * Set the error message to a special value for memory allocation failure.
+ *
+ * The normal `git_error_set_str()` function attempts to `strdup()` the
+ * string that is passed in. This is not a good idea when the error in
+ * question is a memory allocation failure. That circumstance has a
+ * special setter function that sets the error string to a known and
+ * statically allocated internal value.
+ */
+GIT_EXTERN(void) git_error_set_oom(void);
+
+/** @} */
+GIT_END_DECL
+
+#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/filter.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/filter.h
index b375941..60466d1 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/filter.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/filter.h
@@ -11,8 +11,8 @@
/**
* @file git2/sys/filter.h
- * @brief Git filter backend and plugin routines
- * @defgroup git_backend Git custom backend APIs
+ * @brief Custom filter backends and plugins
+ * @defgroup git_backend Custom filter backends and plugins
* @ingroup Git
* @{
*/
@@ -26,7 +26,10 @@ GIT_BEGIN_DECL
*/
GIT_EXTERN(git_filter *) git_filter_lookup(const char *name);
+/** The "crlf" filter */
#define GIT_FILTER_CRLF "crlf"
+
+/** The "ident" filter */
#define GIT_FILTER_IDENT "ident"
/**
@@ -53,6 +56,12 @@ GIT_EXTERN(git_filter *) git_filter_lookup(const char *name);
* the filter list for you, but you can use this in combination with the
* `git_filter_lookup` and `git_filter_list_push` functions to assemble
* your own chains of filters.
+ *
+ * @param out the filter list
+ * @param repo the repository to use for configuration
+ * @param mode the filter mode (direction)
+ * @param options the options
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_filter_list_new(
git_filter_list **out,
@@ -72,6 +81,11 @@ GIT_EXTERN(int) git_filter_list_new(
* filter. Using this function, you can either pass in a payload if you
* know the expected payload format, or you can pass NULL. Some filters
* may fail with a NULL payload. Good luck!
+ *
+ * @param fl the filter list
+ * @param filter the filter to push
+ * @param payload the payload for the filter
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_filter_list_push(
git_filter_list *fl, git_filter *filter, void *payload);
@@ -96,17 +110,26 @@ typedef struct git_filter_source git_filter_source;
/**
* Get the repository that the source data is coming from.
+ *
+ * @param src the filter source
+ * @return the repository for the filter information
*/
GIT_EXTERN(git_repository *) git_filter_source_repo(const git_filter_source *src);
/**
* Get the path that the source data is coming from.
+ *
+ * @param src the filter source
+ * @return the path that is being filtered
*/
GIT_EXTERN(const char *) git_filter_source_path(const git_filter_source *src);
/**
* Get the file mode of the source file
* If the mode is unknown, this will return 0
+ *
+ * @param src the filter source
+ * @return the file mode for the file being filtered
*/
GIT_EXTERN(uint16_t) git_filter_source_filemode(const git_filter_source *src);
@@ -114,16 +137,25 @@ GIT_EXTERN(uint16_t) git_filter_source_filemode(const git_filter_source *src);
* Get the OID of the source
* If the OID is unknown (often the case with GIT_FILTER_CLEAN) then
* this will return NULL.
+ *
+ * @param src the filter source
+ * @return the object id of the file being filtered
*/
GIT_EXTERN(const git_oid *) git_filter_source_id(const git_filter_source *src);
/**
* Get the git_filter_mode_t to be used
+ *
+ * @param src the filter source
+ * @return the mode (direction) of the filter
*/
GIT_EXTERN(git_filter_mode_t) git_filter_source_mode(const git_filter_source *src);
/**
* Get the combination git_filter_flag_t options to be applied
+ *
+ * @param src the filter source
+ * @return the flags of the filter
*/
GIT_EXTERN(uint32_t) git_filter_source_flags(const git_filter_source *src);
@@ -137,6 +169,9 @@ GIT_EXTERN(uint32_t) git_filter_source_flags(const git_filter_source *src);
* before the first use of the filter, so you can defer expensive
* initialization operations (in case libgit2 is being used in a way that
* doesn't need the filter).
+ *
+ * @param self the filter to initialize
+ * @return 0 on success, negative number on failure
*/
typedef int GIT_CALLBACK(git_filter_init_fn)(git_filter *self);
@@ -149,6 +184,8 @@ typedef int GIT_CALLBACK(git_filter_init_fn)(git_filter *self);
* This may be called even if the `initialize` callback was not made.
*
* Typically this function will free the `git_filter` object itself.
+ *
+ * @param self the filter to shutdown
*/
typedef void GIT_CALLBACK(git_filter_shutdown_fn)(git_filter *self);
@@ -171,6 +208,12 @@ typedef void GIT_CALLBACK(git_filter_shutdown_fn)(git_filter *self);
* allocated (not stack), so that it doesn't go away before the `stream`
* callback can use it. If a filter allocates and assigns a value to the
* `payload`, it will need a `cleanup` callback to free the payload.
+ *
+ * @param self the filter check
+ * @param payload a data for future filter functions
+ * @param src the filter source
+ * @param attr_values the attribute values
+ * @return 0 on success or a negative value on error
*/
typedef int GIT_CALLBACK(git_filter_check_fn)(
git_filter *self,
@@ -191,6 +234,12 @@ typedef int GIT_CALLBACK(git_filter_check_fn)(
* The `payload` value will refer to any payload that was set by the
* `check` callback. It may be read from or written to as needed.
*
+ * @param self the filter check
+ * @param payload a data for future filter functions
+ * @param to the input buffer
+ * @param from the output buffer
+ * @param src the filter source
+ * @return 0 on success or a negative value on error
* @deprecated use git_filter_stream_fn
*/
typedef int GIT_CALLBACK(git_filter_apply_fn)(
@@ -209,6 +258,13 @@ typedef int GIT_CALLBACK(git_filter_apply_fn)(
* `git_writestream` that will the original data will be written to;
* with that data, the `git_writestream` will then perform the filter
* translation and stream the filtered data out to the `next` location.
+ *
+ * @param out the write stream
+ * @param self the filter
+ * @param payload a data for future filter functions
+ * @param src the filter source
+ * @param next the output stream
+ * @return 0 on success or a negative value on error
*/
typedef int GIT_CALLBACK(git_filter_stream_fn)(
git_writestream **out,
@@ -225,6 +281,9 @@ typedef int GIT_CALLBACK(git_filter_stream_fn)(
* `stream` callbacks allocated a `payload` to keep per-source filter
* state, use this callback to free that payload and release resources
* as required.
+ *
+ * @param self the filter
+ * @param payload a data for future filter functions
*/
typedef void GIT_CALLBACK(git_filter_cleanup_fn)(
git_filter *self,
@@ -291,7 +350,10 @@ struct git_filter {
git_filter_cleanup_fn cleanup;
};
+/** Current version for the `git_filter_options` structure */
#define GIT_FILTER_VERSION 1
+
+/** Static constructor for `git_filter_options` */
#define GIT_FILTER_INIT {GIT_FILTER_VERSION}
/**
@@ -300,7 +362,7 @@ struct git_filter {
*
* @param filter the `git_filter` struct to initialize.
* @param version Version the struct; pass `GIT_FILTER_VERSION`
- * @return Zero on success; -1 on failure.
+ * @return 0 on success; -1 on failure.
*/
GIT_EXTERN(int) git_filter_init(git_filter *filter, unsigned int version);
@@ -350,4 +412,5 @@ GIT_EXTERN(int) git_filter_unregister(const char *name);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/hashsig.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/hashsig.h
index 09c19ae..0d7be53 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/hashsig.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/hashsig.h
@@ -9,6 +9,16 @@
#include "git2/common.h"
+/**
+ * @file git2/sys/hashsig.h
+ * @brief Signatures for file similarity comparison
+ * @defgroup git_hashsig Git merge routines
+ * @ingroup Git
+ *
+ * Hash signatures are used for file similary comparison; this is
+ * used for git's rename handling.
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -101,6 +111,7 @@ GIT_EXTERN(int) git_hashsig_compare(
const git_hashsig *a,
const git_hashsig *b);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/index.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/index.h
index 1f6d93f..b3b86a0 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/index.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/index.h
@@ -12,8 +12,8 @@
/**
* @file git2/sys/index.h
- * @brief Low-level Git index manipulation routines
- * @defgroup git_backend Git custom backend APIs
+ * @brief Low-level index manipulation routines
+ * @defgroup git_index Low-level index manipulation routines
* @ingroup Git
* @{
*/
@@ -67,6 +67,7 @@ GIT_EXTERN(const git_index_name_entry *) git_index_name_get_byindex(
* @param ancestor the path of the file as it existed in the ancestor
* @param ours the path of the file as it existed in our tree
* @param theirs the path of the file as it existed in their tree
+ * @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_index_name_add(git_index *index,
const char *ancestor, const char *ours, const char *theirs);
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/mempack.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/mempack.h
index 17da590..be902be 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/mempack.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/mempack.h
@@ -15,8 +15,8 @@
/**
* @file git2/sys/mempack.h
- * @brief Custom ODB backend that permits packing objects in-memory
- * @defgroup git_backend Git custom backend APIs
+ * @brief A custom object database backend for storing objects in-memory
+ * @defgroup git_mempack A custom object database backend for storing objects in-memory
* @ingroup Git
* @{
*/
@@ -44,6 +44,26 @@ GIT_BEGIN_DECL
*/
GIT_EXTERN(int) git_mempack_new(git_odb_backend **out);
+/**
+ * Write a thin packfile with the objects in the memory store.
+ *
+ * A thin packfile is a packfile that does not contain its transitive closure of
+ * references. This is useful for efficiently distributing additions to a
+ * repository over the network, but also finds use in the efficient bulk
+ * addition of objects to a repository, locally.
+ *
+ * This operation performs the (shallow) insert operations into the
+ * `git_packbuilder`, but does not write the packfile to disk;
+ * see `git_packbuilder_write_buf`.
+ *
+ * It also does not reset the in-memory object database; see `git_mempack_reset`.
+ *
+ * @param backend The mempack backend
+ * @param pb The packbuilder to use to write the packfile
+ * @return 0 on success or an error code
+ */
+GIT_EXTERN(int) git_mempack_write_thin_pack(git_odb_backend *backend, git_packbuilder *pb);
+
/**
* Dump all the queued in-memory writes to a packfile.
*
@@ -82,6 +102,16 @@ GIT_EXTERN(int) git_mempack_dump(git_buf *pack, git_repository *repo, git_odb_ba
*/
GIT_EXTERN(int) git_mempack_reset(git_odb_backend *backend);
+/**
+ * Get the total number of objects in mempack
+ *
+ * @param count The count of objects in the mempack
+ * @param backend The mempack backend
+ * @return 0 on success, or -1 on error
+ */
+GIT_EXTERN(int) git_mempack_object_count(size_t *count, git_odb_backend *backend);
+
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/merge.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/merge.h
index ef4bc5a..a9f5220 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/merge.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/merge.h
@@ -14,13 +14,18 @@
/**
* @file git2/sys/merge.h
- * @brief Git merge driver backend and plugin routines
- * @defgroup git_merge Git merge driver APIs
+ * @brief Custom merge drivers
+ * @defgroup git_merge Custom merge drivers
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/**
+ * A "merge driver" is a mechanism that can be configured to handle
+ * conflict resolution for files changed in both the "ours" and "theirs"
+ * side of a merge.
+ */
typedef struct git_merge_driver git_merge_driver;
/**
@@ -31,8 +36,11 @@ typedef struct git_merge_driver git_merge_driver;
*/
GIT_EXTERN(git_merge_driver *) git_merge_driver_lookup(const char *name);
+/** The "text" merge driver */
#define GIT_MERGE_DRIVER_TEXT "text"
+/** The "binary" merge driver */
#define GIT_MERGE_DRIVER_BINARY "binary"
+/** The "union" merge driver */
#define GIT_MERGE_DRIVER_UNION "union"
/**
@@ -40,23 +48,48 @@ GIT_EXTERN(git_merge_driver *) git_merge_driver_lookup(const char *name);
*/
typedef struct git_merge_driver_source git_merge_driver_source;
-/** Get the repository that the source data is coming from. */
+/**
+ * Get the repository that the source data is coming from.
+ *
+ * @param src the merge driver source
+ * @return the repository
+ */
GIT_EXTERN(git_repository *) git_merge_driver_source_repo(
const git_merge_driver_source *src);
-/** Gets the ancestor of the file to merge. */
+/**
+ * Gets the ancestor of the file to merge.
+ *
+ * @param src the merge driver source
+ * @return the ancestor or NULL if there was no ancestor
+ */
GIT_EXTERN(const git_index_entry *) git_merge_driver_source_ancestor(
const git_merge_driver_source *src);
-/** Gets the ours side of the file to merge. */
+/**
+ * Gets the ours side of the file to merge.
+ *
+ * @param src the merge driver source
+ * @return the ours side or NULL if there was no ours side
+ */
GIT_EXTERN(const git_index_entry *) git_merge_driver_source_ours(
const git_merge_driver_source *src);
-/** Gets the theirs side of the file to merge. */
+/**
+ * Gets the theirs side of the file to merge.
+ *
+ * @param src the merge driver source
+ * @return the theirs side or NULL if there was no theirs side
+ */
GIT_EXTERN(const git_index_entry *) git_merge_driver_source_theirs(
const git_merge_driver_source *src);
-/** Gets the merge file options that the merge was invoked with */
+/**
+ * Gets the merge file options that the merge was invoked with.
+ *
+ * @param src the merge driver source
+ * @return the options
+ */
GIT_EXTERN(const git_merge_file_options *) git_merge_driver_source_file_options(
const git_merge_driver_source *src);
@@ -72,6 +105,9 @@ GIT_EXTERN(const git_merge_file_options *) git_merge_driver_source_file_options(
* right before the first use of the driver, so you can defer expensive
* initialization operations (in case libgit2 is being used in a way that
* doesn't need the merge driver).
+ *
+ * @param self the merge driver to initialize
+ * @return 0 on success, or a negative number on failure
*/
typedef int GIT_CALLBACK(git_merge_driver_init_fn)(git_merge_driver *self);
@@ -84,6 +120,8 @@ typedef int GIT_CALLBACK(git_merge_driver_init_fn)(git_merge_driver *self);
* This may be called even if the `initialize` callback was not made.
*
* Typically this function will free the `git_merge_driver` object itself.
+ *
+ * @param self the merge driver to shutdown
*/
typedef void GIT_CALLBACK(git_merge_driver_shutdown_fn)(git_merge_driver *self);
@@ -104,6 +142,14 @@ typedef void GIT_CALLBACK(git_merge_driver_shutdown_fn)(git_merge_driver *self);
* specified by the file's attributes.
*
* The `src` contains the data about the file to be merged.
+ *
+ * @param self the merge driver
+ * @param path_out the resolved path
+ * @param mode_out the resolved mode
+ * @param merged_out the merged output contents
+ * @param filter_name the filter that was invoked
+ * @param src the data about the unmerged file
+ * @return 0 on success, or an error code
*/
typedef int GIT_CALLBACK(git_merge_driver_apply_fn)(
git_merge_driver *self,
@@ -139,6 +185,7 @@ struct git_merge_driver {
git_merge_driver_apply_fn apply;
};
+/** The version for the `git_merge_driver` */
#define GIT_MERGE_DRIVER_VERSION 1
/**
@@ -179,4 +226,5 @@ GIT_EXTERN(int) git_merge_driver_unregister(const char *name);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/midx.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/midx.h
index e3d7498..b3a68af 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/midx.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/midx.h
@@ -11,14 +11,52 @@
#include "git2/types.h"
/**
- * @file git2/midx.h
- * @brief Git multi-pack-index routines
- * @defgroup git_midx Git multi-pack-index routines
+ * @file git2/sys/midx.h
+ * @brief Incremental multi-pack indexes
+ * @defgroup git_midx Incremental multi-pack indexes
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/**
+ * Options structure for `git_midx_writer_options`.
+ *
+ * Initialize with `GIT_MIDX_WRITER_OPTIONS_INIT`. Alternatively,
+ * you can use `git_midx_writer_options_init`.
+ */
+typedef struct {
+ unsigned int version;
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /** The object ID type that this commit graph contains. */
+ git_oid_t oid_type;
+#endif
+} git_midx_writer_options;
+
+/** Current version for the `git_midx_writer_options` structure */
+#define GIT_MIDX_WRITER_OPTIONS_VERSION 1
+
+/** Static constructor for `git_midx_writer_options` */
+#define GIT_MIDX_WRITER_OPTIONS_INIT { \
+ GIT_MIDX_WRITER_OPTIONS_VERSION \
+ }
+
+/**
+ * Initialize git_midx_writer_options structure
+ *
+ * Initializes a `git_midx_writer_options` with default values.
+ * Equivalent to creating an instance with
+ * `GIT_MIDX_WRITER_OPTIONS_INIT`.
+ *
+ * @param opts The `git_midx_writer_options` struct to initialize.
+ * @param version The struct version; pass `GIT_MIDX_WRITER_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_midx_writer_options_init(
+ git_midx_writer_options *opts,
+ unsigned int version);
+
/**
* Create a new writer for `multi-pack-index` files.
*
@@ -29,7 +67,11 @@ GIT_BEGIN_DECL
*/
GIT_EXTERN(int) git_midx_writer_new(
git_midx_writer **out,
- const char *pack_dir);
+ const char *pack_dir
+#ifdef GIT_EXPERIMENTAL_SHA256
+ , git_midx_writer_options *options
+#endif
+ );
/**
* Free the multi-pack-index writer and its resources.
@@ -71,4 +113,5 @@ GIT_EXTERN(int) git_midx_writer_dump(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/odb_backend.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/odb_backend.h
index 9ae0ed9..53d8d06 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/odb_backend.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/odb_backend.h
@@ -13,9 +13,9 @@
#include "git2/odb.h"
/**
- * @file git2/sys/backend.h
- * @brief Git custom backend implementors functions
- * @defgroup git_backend Git custom backend APIs
+ * @file git2/sys/odb_backend.h
+ * @brief Object database backends for custom object storage
+ * @defgroup git_backend Object database backends for custom object storage
* @ingroup Git
* @{
*/
@@ -36,7 +36,7 @@ struct git_odb_backend {
void **, size_t *, git_object_t *, git_odb_backend *, const git_oid *);
/* To find a unique object given a prefix of its oid. The oid given
- * must be so that the remaining (GIT_OID_HEXSZ - len)*4 bits are 0s.
+ * must be so that the remaining (GIT_OID_SHA1_HEXSIZE - len)*4 bits are 0s.
*/
int GIT_CALLBACK(read_prefix)(
git_oid *, void **, size_t *, git_object_t *,
@@ -69,11 +69,8 @@ struct git_odb_backend {
* If the backend implements a refreshing mechanism, it should be exposed
* through this endpoint. Each call to `git_odb_refresh()` will invoke it.
*
- * However, the backend implementation should try to stay up-to-date as much
- * as possible by itself as libgit2 will not automatically invoke
- * `git_odb_refresh()`. For instance, a potential strategy for the backend
- * implementation to achieve this could be to internally invoke this
- * endpoint on failed lookups (ie. `exists()`, `read()`, `read_header()`).
+ * The odb layer will automatically call this when needed on failed
+ * lookups (ie. `exists()`, `read()`, `read_header()`).
*/
int GIT_CALLBACK(refresh)(git_odb_backend *);
@@ -109,7 +106,10 @@ struct git_odb_backend {
void GIT_CALLBACK(free)(git_odb_backend *);
};
+/** Current version for the `git_odb_backend_options` structure */
#define GIT_ODB_BACKEND_VERSION 1
+
+/** Static constructor for `git_odb_backend_options` */
#define GIT_ODB_BACKEND_INIT {GIT_ODB_BACKEND_VERSION}
/**
@@ -170,6 +170,7 @@ GIT_EXTERN(void *) git_odb_backend_malloc(git_odb_backend *backend, size_t len);
#endif
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/openssl.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/openssl.h
index b41c55c..8b74a98 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/openssl.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/openssl.h
@@ -9,6 +9,12 @@
#include "git2/common.h"
+/**
+ * @file git2/sys/openssl.h
+ * @brief Custom OpenSSL functionality
+ * @defgroup git_openssl Custom OpenSSL functionality
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -33,6 +39,7 @@ GIT_BEGIN_DECL
*/
GIT_EXTERN(int) git_openssl_set_locking(void);
+/** @} */
GIT_END_DECL
-#endif
+#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/path.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/path.h
index 2a0c7e0..2963bca 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/path.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/path.h
@@ -10,6 +10,16 @@
#include "git2/common.h"
+/**
+ * @file git2/sys/path.h
+ * @brief Custom path handling
+ * @defgroup git_path Custom path handling
+ * @ingroup Git
+ *
+ * Merge will take two commits and attempt to produce a commit that
+ * includes the changes that were made in both branches.
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -59,6 +69,7 @@ typedef enum {
*/
GIT_EXTERN(int) git_path_is_gitfile(const char *path, size_t pathlen, git_path_gitfile gitfile, git_path_fs fs);
+/** @} */
GIT_END_DECL
-#endif /* INCLUDE_sys_git_path */
+#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/refdb_backend.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/refdb_backend.h
index c31e26d..813822a 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/refdb_backend.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/refdb_backend.h
@@ -12,9 +12,9 @@
#include "git2/oid.h"
/**
- * @file git2/refdb_backend.h
- * @brief Git custom refs backend functions
- * @defgroup git_refdb_backend Git custom refs backend API
+ * @file git2/sys/refdb_backend.h
+ * @brief Custom reference database backends for refs storage
+ * @defgroup git_refdb_backend Custom reference database backends for refs storage
* @ingroup Git
* @{
*/
@@ -65,9 +65,9 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg exists The implementation shall set this to `0` if a ref does
+ * @param exists The implementation shall set this to `0` if a ref does
* not exist, otherwise to `1`.
- * @arg ref_name The reference's name that should be checked for
+ * @param ref_name The reference's name that should be checked for
* existence.
* @return `0` on success, a negative error value code.
*/
@@ -81,9 +81,9 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg out The implementation shall set this to the allocated
+ * @param out The implementation shall set this to the allocated
* reference, if it could be found, otherwise to `NULL`.
- * @arg ref_name The reference's name that should be checked for
+ * @param ref_name The reference's name that should be checked for
* existence.
* @return `0` on success, `GIT_ENOTFOUND` if the reference does
* exist, otherwise a negative error code.
@@ -98,12 +98,12 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg out The implementation shall set this to the allocated
+ * @param out The implementation shall set this to the allocated
* reference iterator. A custom structure may be used with an
* embedded `git_reference_iterator` structure. Both `next`
* and `next_name` functions of `git_reference_iterator` need
* to be populated.
- * @arg glob A pattern to filter references by. If given, the iterator
+ * @param glob A pattern to filter references by. If given, the iterator
* shall only return references that match the glob when
* passed to `wildmatch`.
* @return `0` on success, otherwise a negative error code.
@@ -118,20 +118,20 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg ref The reference to persist. May either be a symbolic or
+ * @param ref The reference to persist. May either be a symbolic or
* direct reference.
- * @arg force Whether to write the reference if a reference with the
+ * @param force Whether to write the reference if a reference with the
* same name already exists.
- * @arg who The person updating the reference. Shall be used to create
+ * @param who The person updating the reference. Shall be used to create
* a reflog entry.
- * @arg message The message detailing what kind of reference update is
+ * @param message The message detailing what kind of reference update is
* performed. Shall be used to create a reflog entry.
- * @arg old If not `NULL` and `force` is not set, then the
+ * @param old If not `NULL` and `force` is not set, then the
* implementation needs to ensure that the reference is currently at
* the given OID before writing the new value. If both `old`
* and `old_target` are `NULL`, then the reference should not
* exist at the point of writing.
- * @arg old_target If not `NULL` and `force` is not set, then the
+ * @param old_target If not `NULL` and `force` is not set, then the
* implementation needs to ensure that the symbolic
* reference is currently at the given target before
* writing the new value. If both `old` and
@@ -149,15 +149,15 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg out The implementation shall set this to the newly created
+ * @param out The implementation shall set this to the newly created
* reference or `NULL` on error.
- * @arg old_name The current name of the reference that is to be renamed.
- * @arg new_name The new name that the old reference shall be renamed to.
- * @arg force Whether to write the reference if a reference with the
+ * @param old_name The current name of the reference that is to be renamed.
+ * @param new_name The new name that the old reference shall be renamed to.
+ * @param force Whether to write the reference if a reference with the
* target name already exists.
- * @arg who The person updating the reference. Shall be used to create
+ * @param who The person updating the reference. Shall be used to create
* a reflog entry.
- * @arg message The message detailing what kind of reference update is
+ * @param message The message detailing what kind of reference update is
* performed. Shall be used to create a reflog entry.
* @return `0` on success, otherwise a negative error code.
*/
@@ -173,11 +173,11 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg ref_name The name of the reference name that shall be deleted.
- * @arg old_id If not `NULL` and `force` is not set, then the
+ * @param ref_name The name of the reference name that shall be deleted.
+ * @param old_id If not `NULL` and `force` is not set, then the
* implementation needs to ensure that the reference is currently at
* the given OID before writing the new value.
- * @arg old_target If not `NULL` and `force` is not set, then the
+ * @param old_target If not `NULL` and `force` is not set, then the
* implementation needs to ensure that the symbolic
* reference is currently at the given target before
* writing the new value.
@@ -243,7 +243,7 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg reflog The complete reference log for a given reference. Note
+ * @param reflog The complete reference log for a given reference. Note
* that this may contain entries that have already been
* written to disk.
* @return `0` on success, a negative error code otherwise
@@ -255,8 +255,8 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg old_name The name of old reference whose reflog shall be renamed from.
- * @arg new_name The name of new reference whose reflog shall be renamed to.
+ * @param old_name The name of old reference whose reflog shall be renamed from.
+ * @param new_name The name of new reference whose reflog shall be renamed to.
* @return `0` on success, a negative error code otherwise
*/
int GIT_CALLBACK(reflog_rename)(git_refdb_backend *_backend, const char *old_name, const char *new_name);
@@ -266,7 +266,7 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg name The name of the reference whose reflog shall be deleted.
+ * @param name The name of the reference whose reflog shall be deleted.
* @return `0` on success, a negative error code otherwise
*/
int GIT_CALLBACK(reflog_delete)(git_refdb_backend *backend, const char *name);
@@ -277,9 +277,9 @@ struct git_refdb_backend {
* A refdb implementation may provide this function; if it is not
* provided, the transaction API will fail to work.
*
- * @arg payload_out Opaque parameter that will be passed verbosely to
+ * @param payload_out Opaque parameter that will be passed verbosely to
* `unlock`.
- * @arg refname Reference that shall be locked.
+ * @param refname Reference that shall be locked.
* @return `0` on success, a negative error code otherwise
*/
int GIT_CALLBACK(lock)(void **payload_out, git_refdb_backend *backend, const char *refname);
@@ -294,16 +294,16 @@ struct git_refdb_backend {
* A refdb implementation must provide this function if a `lock`
* implementation is provided.
*
- * @arg payload The payload returned by `lock`.
- * @arg success `1` if a reference should be updated, `2` if
+ * @param payload The payload returned by `lock`.
+ * @param success `1` if a reference should be updated, `2` if
* a reference should be deleted, `0` if the lock must be
* discarded.
- * @arg update_reflog `1` in case the reflog should be updated, `0`
+ * @param update_reflog `1` in case the reflog should be updated, `0`
* otherwise.
- * @arg ref The reference which should be unlocked.
- * @arg who The person updating the reference. Shall be used to create
+ * @param ref The reference which should be unlocked.
+ * @param who The person updating the reference. Shall be used to create
* a reflog entry in case `update_reflog` is set.
- * @arg message The message detailing what kind of reference update is
+ * @param message The message detailing what kind of reference update is
* performed. Shall be used to create a reflog entry in
* case `update_reflog` is set.
* @return `0` on success, a negative error code otherwise
@@ -312,7 +312,10 @@ struct git_refdb_backend {
const git_reference *ref, const git_signature *sig, const char *message);
};
+/** Current version for the `git_refdb_backend_options` structure */
#define GIT_REFDB_BACKEND_VERSION 1
+
+/** Static constructor for `git_refdb_backend_options` */
#define GIT_REFDB_BACKEND_INIT {GIT_REFDB_BACKEND_VERSION}
/**
@@ -356,6 +359,7 @@ GIT_EXTERN(int) git_refdb_set_backend(
git_refdb *refdb,
git_refdb_backend *backend);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/reflog.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/reflog.h
deleted file mode 100644
index c9d0041..0000000
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/reflog.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright (C) the libgit2 contributors. All rights reserved.
- *
- * This file is part of libgit2, distributed under the GNU GPL v2 with
- * a Linking Exception. For full terms see the included COPYING file.
- */
-#ifndef INCLUDE_sys_git_reflog_h__
-#define INCLUDE_sys_git_reflog_h__
-
-#include "git2/common.h"
-#include "git2/types.h"
-#include "git2/oid.h"
-
-GIT_BEGIN_DECL
-
-GIT_EXTERN(git_reflog_entry *) git_reflog_entry__alloc(void);
-GIT_EXTERN(void) git_reflog_entry__free(git_reflog_entry *entry);
-
-GIT_END_DECL
-
-#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/refs.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/refs.h
index d2ce2e0..e434e67 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/refs.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/refs.h
@@ -13,8 +13,8 @@
/**
* @file git2/sys/refs.h
- * @brief Low-level Git ref creation
- * @defgroup git_backend Git custom backend APIs
+ * @brief Low-level git reference creation
+ * @defgroup git_backend Low-level git reference creation
* @ingroup Git
* @{
*/
@@ -46,4 +46,5 @@ GIT_EXTERN(git_reference *) git_reference__alloc_symbolic(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/remote.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/remote.h
new file mode 100644
index 0000000..476965d
--- /dev/null
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/remote.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) the libgit2 contributors. All rights reserved.
+ *
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
+ * a Linking Exception. For full terms see the included COPYING file.
+ */
+
+#ifndef INCLUDE_sys_git_remote_h
+#define INCLUDE_sys_git_remote_h
+
+#include "git2/remote.h"
+
+/**
+ * @file git2/sys/remote.h
+ * @brief Low-level remote functionality for custom transports
+ * @defgroup git_remote Low-level remote functionality for custom transports
+ * @ingroup Git
+ * @{
+*/
+
+GIT_BEGIN_DECL
+
+/**
+ * A remote's capabilities.
+ */
+typedef enum {
+ /** Remote supports fetching an advertised object by ID. */
+ GIT_REMOTE_CAPABILITY_TIP_OID = (1 << 0),
+
+ /** Remote supports fetching an individual reachable object. */
+ GIT_REMOTE_CAPABILITY_REACHABLE_OID = (1 << 1),
+
+ /** Remote supports push options. */
+ GIT_REMOTE_CAPABILITY_PUSH_OPTIONS = (1 << 2),
+} git_remote_capability_t;
+
+/**
+ * Disposes libgit2-initialized fields from a git_remote_connect_options.
+ * This should only be used for git_remote_connect_options returned by
+ * git_transport_remote_connect_options.
+ *
+ * Note that this does not free the `git_remote_connect_options` itself, just
+ * the memory pointed to by it.
+ *
+ * @param opts The `git_remote_connect_options` struct to dispose.
+ */
+GIT_EXTERN(void) git_remote_connect_options_dispose(
+ git_remote_connect_options *opts);
+
+/** @} */
+GIT_END_DECL
+
+#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/repository.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/repository.h
index 892be66..026ac8a 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/repository.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/repository.h
@@ -9,16 +9,71 @@
#include "git2/common.h"
#include "git2/types.h"
+#include "git2/oid.h"
/**
* @file git2/sys/repository.h
- * @brief Git repository custom implementation routines
- * @defgroup git_backend Git custom backend APIs
+ * @brief Custom repository handling
+ * @defgroup git_repository Custom repository handling
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+#ifdef GIT_EXPERIMENTAL_SHA256
+
+/**
+ * The options for creating an repository from scratch.
+ *
+ * Initialize with `GIT_REPOSITORY_NEW_OPTIONS_INIT`. Alternatively,
+ * you can use `git_repository_new_options_init`.
+ *
+ * @options[version] GIT_REPOSITORY_NEW_OPTIONS_VERSION
+ * @options[init_macro] GIT_REPOSITORY_NEW_OPTIONS_INIT
+ * @options[init_function] git_repository_new_options_init
+ */
+typedef struct git_repository_new_options {
+ unsigned int version; /**< The version */
+
+ /**
+ * The object ID type for the object IDs that exist in the index.
+ *
+ * If this is not specified, this defaults to `GIT_OID_SHA1`.
+ */
+ git_oid_t oid_type;
+} git_repository_new_options;
+
+/** Current version for the `git_repository_new_options` structure */
+#define GIT_REPOSITORY_NEW_OPTIONS_VERSION 1
+
+/** Static constructor for `git_repository_new_options` */
+#define GIT_REPOSITORY_NEW_OPTIONS_INIT { GIT_REPOSITORY_NEW_OPTIONS_VERSION }
+
+/**
+ * Initialize git_repository_new_options structure
+ *
+ * Initializes a `git_repository_new_options` with default values.
+ * Equivalent to creating an instance with
+ * `GIT_REPOSITORY_NEW_OPTIONS_INIT`.
+ *
+ * @param opts The `git_repository_new_options` struct to initialize.
+ * @param version The struct version; pass `GIT_REPOSITORY_NEW_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_repository_new_options_init(
+ git_repository_new_options *opts,
+ unsigned int version);
+
+/**
+ * Create a new repository with no backends.
+ *
+ * @param[out] out The blank repository
+ * @param opts the options for repository creation, or NULL for defaults
+ * @return 0 on success, or an error code
+ */
+GIT_EXTERN(int) git_repository_new(git_repository **out, git_repository_new_options *opts);
+#else
+
/**
* Create a new repository with neither backends nor config object
*
@@ -29,11 +84,13 @@ GIT_BEGIN_DECL
* can fail to function properly: locations under $GIT_DIR, $GIT_COMMON_DIR,
* or $GIT_INFO_DIR are impacted.
*
- * @param out The blank repository
+ * @param[out] out The blank repository
* @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_repository_new(git_repository **out);
+#endif
+
/**
* Reset all the internal state in a repository.
*
@@ -156,6 +213,7 @@ GIT_EXTERN(int) git_repository_set_bare(git_repository *repo);
* and caches them so that subsequent calls to `git_submodule_lookup` are O(1).
*
* @param repo the repository whose submodules will be cached.
+ * @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_repository_submodule_cache_all(
git_repository *repo);
@@ -171,10 +229,12 @@ GIT_EXTERN(int) git_repository_submodule_cache_all(
* of these has changed, the cache might become invalid.
*
* @param repo the repository whose submodule cache will be cleared
+ * @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_repository_submodule_cache_clear(
git_repository *repo);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/stream.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/stream.h
index 6f93cc4..eabff68 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/stream.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/stream.h
@@ -11,8 +11,16 @@
#include "git2/types.h"
#include "git2/proxy.h"
+/**
+ * @file git2/sys/stream.h
+ * @brief Streaming file I/O functionality
+ * @defgroup git_stream Streaming file I/O functionality
+ * @ingroup Git
+ * @{
+ */
GIT_BEGIN_DECL
+/** Current version for the `git_stream` structures */
#define GIT_STREAM_VERSION 1
/**
@@ -29,8 +37,22 @@ GIT_BEGIN_DECL
typedef struct git_stream {
int version;
- int encrypted;
- int proxy_support;
+ unsigned int encrypted : 1,
+ proxy_support : 1;
+
+ /**
+ * Timeout for read and write operations; can be set to `0` to
+ * block indefinitely.
+ */
+ int timeout;
+
+ /**
+ * Timeout to connect to the remote server; can be set to `0`
+ * to use the system defaults. This can be shorter than the
+ * system default - often 75 seconds - but cannot be longer.
+ */
+ int connect_timeout;
+
int GIT_CALLBACK(connect)(struct git_stream *);
int GIT_CALLBACK(certificate)(git_cert **, struct git_stream *);
int GIT_CALLBACK(set_proxy)(struct git_stream *, const git_proxy_options *proxy_opts);
@@ -79,7 +101,7 @@ typedef enum {
GIT_STREAM_STANDARD = 1,
/** A TLS-encrypted socket. */
- GIT_STREAM_TLS = 2,
+ GIT_STREAM_TLS = 2
} git_stream_t;
/**
@@ -133,6 +155,7 @@ GIT_EXTERN(int) git_stream_register_tls(git_stream_cb ctor);
#endif
+/**@}*/
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/transport.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/transport.h
index fee3454..ad6765c 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/transport.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/sys/transport.h
@@ -9,46 +9,40 @@
#define INCLUDE_sys_git_transport_h
#include "git2/net.h"
+#include "git2/oidarray.h"
+#include "git2/proxy.h"
+#include "git2/remote.h"
+#include "git2/strarray.h"
#include "git2/transport.h"
#include "git2/types.h"
-#include "git2/strarray.h"
-#include "git2/proxy.h"
/**
* @file git2/sys/transport.h
- * @brief Git custom transport registration interfaces and functions
- * @defgroup git_transport Git custom transport registration
+ * @brief Custom transport registration interfaces and functions
+ * @defgroup git_transport Custom transport registration
* @ingroup Git
+ *
+ * Callers can override the default HTTPS or SSH implementation by
+ * specifying a custom transport.
* @{
*/
GIT_BEGIN_DECL
/**
- * Flags to pass to transport
- *
- * Currently unused.
+ * The negotiation state during a fetch smart transport negotiation.
*/
-typedef enum {
- GIT_TRANSPORTFLAGS_NONE = 0,
-} git_transport_flags_t;
+typedef struct {
+ const git_remote_head * const *refs;
+ size_t refs_len;
+ git_oid *shallow_roots;
+ size_t shallow_roots_len;
+ int depth;
+} git_fetch_negotiation;
struct git_transport {
unsigned int version; /**< The struct version */
- /** Set progress and error callbacks */
- int GIT_CALLBACK(set_callbacks)(
- git_transport *transport,
- git_transport_message_cb progress_cb,
- git_transport_message_cb error_cb,
- git_transport_certificate_check_cb certificate_check_cb,
- void *payload);
-
- /** Set custom headers for HTTP requests */
- int GIT_CALLBACK(set_custom_headers)(
- git_transport *transport,
- const git_strarray *custom_headers);
-
/**
* Connect the transport to the remote repository, using the given
* direction.
@@ -56,11 +50,39 @@ struct git_transport {
int GIT_CALLBACK(connect)(
git_transport *transport,
const char *url,
- git_credential_acquire_cb cred_acquire_cb,
- void *cred_acquire_payload,
- const git_proxy_options *proxy_opts,
int direction,
- int flags);
+ const git_remote_connect_options *connect_opts);
+
+ /**
+ * Resets the connect options for the given transport. This
+ * is useful for updating settings or callbacks for an already
+ * connected transport.
+ */
+ int GIT_CALLBACK(set_connect_opts)(
+ git_transport *transport,
+ const git_remote_connect_options *connect_opts);
+
+ /**
+ * Gets the capabilities for this remote repository.
+ *
+ * This function may be called after a successful call to
+ * `connect()`.
+ */
+ int GIT_CALLBACK(capabilities)(
+ unsigned int *capabilities,
+ git_transport *transport);
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /**
+ * Gets the object type for the remote repository.
+ *
+ * This function may be called after a successful call to
+ * `connect()`.
+ */
+ int GIT_CALLBACK(oid_type)(
+ git_oid_t *object_type,
+ git_transport *transport);
+#endif
/**
* Get the list of available references in the remote repository.
@@ -75,7 +97,9 @@ struct git_transport {
git_transport *transport);
/** Executes the push whose context is in the git_push object. */
- int GIT_CALLBACK(push)(git_transport *transport, git_push *push, const git_remote_callbacks *callbacks);
+ int GIT_CALLBACK(push)(
+ git_transport *transport,
+ git_push *push);
/**
* Negotiate a fetch with the remote repository.
@@ -87,8 +111,17 @@ 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);
+
+ /**
+ * Return the shallow roots of the remote.
+ *
+ * This function may be called after a successful call to
+ * `negotiate_fetch`.
+ */
+ int GIT_CALLBACK(shallow_roots)(
+ git_oidarray *out,
+ git_transport *transport);
/**
* Start downloading the packfile from the remote repository.
@@ -99,16 +132,11 @@ struct git_transport {
int GIT_CALLBACK(download_pack)(
git_transport *transport,
git_repository *repo,
- git_indexer_progress *stats,
- git_indexer_progress_cb progress_cb,
- void *progress_payload);
+ git_indexer_progress *stats);
/** Checks to see if the transport is connected */
int GIT_CALLBACK(is_connected)(git_transport *transport);
- /** Reads the flags value previously passed into connect() */
- int GIT_CALLBACK(read_flags)(git_transport *transport, int *flags);
-
/** Cancels any outstanding transport operation */
void GIT_CALLBACK(cancel)(git_transport *transport);
@@ -124,7 +152,10 @@ struct git_transport {
void GIT_CALLBACK(free)(git_transport *transport);
};
+/** Current version for the `git_transport` structure */
#define GIT_TRANSPORT_VERSION 1
+
+/** Static constructor for `git_transport` */
#define GIT_TRANSPORT_INIT {GIT_TRANSPORT_VERSION}
/**
@@ -270,14 +301,18 @@ GIT_EXTERN(int) git_transport_smart_certificate_check(git_transport *transport,
GIT_EXTERN(int) git_transport_smart_credentials(git_credential **out, git_transport *transport, const char *user, int methods);
/**
- * Get a copy of the proxy options
+ * Get a copy of the remote connect options
*
- * The url is copied and must be freed by the caller.
+ * All data is copied and must be freed by the caller by calling
+ * `git_remote_connect_options_dispose`.
*
* @param out options struct to fill
* @param transport the transport to extract the data from.
+ * @return 0 on success, or an error code
*/
-GIT_EXTERN(int) git_transport_smart_proxy_options(git_proxy_options *out, git_transport *transport);
+GIT_EXTERN(int) git_transport_remote_connect_options(
+ git_remote_connect_options *out,
+ git_transport *transport);
/*
*** End of base transport interface ***
@@ -289,7 +324,7 @@ typedef enum {
GIT_SERVICE_UPLOADPACK_LS = 1,
GIT_SERVICE_UPLOADPACK = 2,
GIT_SERVICE_RECEIVEPACK_LS = 3,
- GIT_SERVICE_RECEIVEPACK = 4,
+ GIT_SERVICE_RECEIVEPACK = 4
} git_smart_service_t;
typedef struct git_smart_subtransport git_smart_subtransport;
@@ -361,7 +396,14 @@ struct git_smart_subtransport {
void GIT_CALLBACK(free)(git_smart_subtransport *transport);
};
-/** A function which creates a new subtransport for the smart transport */
+/**
+ * A function that creates a new subtransport for the smart transport
+ *
+ * @param out the smart subtransport
+ * @param owner the transport owner
+ * @param param the input parameter
+ * @return 0 on success, or an error code
+ */
typedef int GIT_CALLBACK(git_smart_subtransport_cb)(
git_smart_subtransport **out,
git_transport *owner,
@@ -404,6 +446,7 @@ typedef struct git_smart_subtransport_definition {
*
* @param out The newly created subtransport
* @param owner The smart transport to own this subtransport
+ * @param param custom parameters for the subtransport
* @return 0 or an error code
*/
GIT_EXTERN(int) git_smart_subtransport_http(
@@ -416,6 +459,7 @@ GIT_EXTERN(int) git_smart_subtransport_http(
*
* @param out The newly created subtransport
* @param owner The smart transport to own this subtransport
+ * @param param custom parameters for the subtransport
* @return 0 or an error code
*/
GIT_EXTERN(int) git_smart_subtransport_git(
@@ -428,6 +472,7 @@ GIT_EXTERN(int) git_smart_subtransport_git(
*
* @param out The newly created subtransport
* @param owner The smart transport to own this subtransport
+ * @param param custom parameters for the subtransport
* @return 0 or an error code
*/
GIT_EXTERN(int) git_smart_subtransport_ssh(
@@ -437,4 +482,5 @@ GIT_EXTERN(int) git_smart_subtransport_ssh(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/tag.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/tag.h
index a392136..3b0c12e 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/tag.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/tag.h
@@ -15,7 +15,7 @@
/**
* @file git2/tag.h
- * @brief Git tag parsing routines
+ * @brief A (nearly) immutable pointer to a commit; useful for versioning
* @defgroup git_tag Git tag management
* @ingroup Git
* @{
@@ -335,6 +335,7 @@ typedef int GIT_CALLBACK(git_tag_foreach_cb)(const char *name, git_oid *oid, voi
* @param repo Repository
* @param callback Callback function
* @param payload Pointer to callback data (optional)
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_tag_foreach(
git_repository *repo,
@@ -362,6 +363,7 @@ GIT_EXTERN(int) git_tag_peel(
*
* @param out Pointer to store the copy of the tag
* @param source Original tag to copy
+ * @return 0
*/
GIT_EXTERN(int) git_tag_dup(git_tag **out, git_tag *source);
@@ -379,4 +381,5 @@ GIT_EXTERN(int) git_tag_name_is_valid(int *valid, const char *name);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/trace.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/trace.h
index 8cee3a9..62cb87c 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/trace.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/trace.h
@@ -12,8 +12,8 @@
/**
* @file git2/trace.h
- * @brief Git tracing configuration routines
- * @defgroup git_trace Git tracing configuration routines
+ * @brief Tracing functionality to introspect libgit2 in your application
+ * @defgroup git_trace Tracing functionality to introspect libgit2 in your application
* @ingroup Git
* @{
*/
@@ -48,8 +48,13 @@ typedef enum {
/**
* An instance for a tracing function
+ *
+ * @param level the trace level
+ * @param msg the trace message
*/
-typedef void GIT_CALLBACK(git_trace_cb)(git_trace_level_t level, const char *msg);
+typedef void GIT_CALLBACK(git_trace_cb)(
+ git_trace_level_t level,
+ const char *msg);
/**
* Sets the system tracing configuration to the specified level with the
@@ -64,4 +69,5 @@ GIT_EXTERN(int) git_trace_set(git_trace_level_t level, git_trace_cb cb);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/transaction.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/transaction.h
index 4938570..212d329 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/transaction.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/transaction.h
@@ -12,8 +12,8 @@
/**
* @file git2/transaction.h
- * @brief Git transactional reference routines
- * @defgroup git_transaction Git transactional reference routines
+ * @brief Transactional reference handling
+ * @defgroup git_transaction Transactional reference handling
* @ingroup Git
* @{
*/
@@ -118,4 +118,5 @@ GIT_EXTERN(void) git_transaction_free(git_transaction *tx);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/transport.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/transport.h
index 5a27de9..04a7390 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/transport.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/transport.h
@@ -15,8 +15,8 @@
/**
* @file git2/transport.h
- * @brief Git transport interfaces and functions
- * @defgroup git_transport interfaces and functions
+ * @brief Transports are the low-level mechanism to connect to a remote server
+ * @defgroup git_transport Transports are the low-level mechanism to connect to a remote server
* @ingroup Git
* @{
*/
@@ -30,10 +30,18 @@ GIT_BEGIN_DECL
* @param str The message from the transport
* @param len The length of the message
* @param payload Payload provided by the caller
+ * @return 0 on success or an error code
*/
typedef int GIT_CALLBACK(git_transport_message_cb)(const char *str, int len, void *payload);
-/** Signature of a function which creates a transport */
+/**
+ * Signature of a function which creates a transport.
+ *
+ * @param out the transport generate
+ * @param owner the owner for the transport
+ * @param param the param to the transport creation
+ * @return 0 on success or an error code
+ */
typedef int GIT_CALLBACK(git_transport_cb)(git_transport **out, git_remote *owner, void *param);
/** @} */
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/tree.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/tree.h
index f2289fc..b8e2de2 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/tree.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/tree.h
@@ -14,8 +14,8 @@
/**
* @file git2/tree.h
- * @brief Git tree parsing, loading routines
- * @defgroup git_tree Git tree parsing, loading routines
+ * @brief Trees are collections of files and folders to make up the repository hierarchy
+ * @defgroup git_tree Trees are collections of files and folders to make up the repository hierarchy
* @ingroup Git
* @{
*/
@@ -24,7 +24,7 @@ GIT_BEGIN_DECL
/**
* Lookup a tree object from the repository.
*
- * @param out Pointer to the looked up tree
+ * @param[out] out Pointer to the looked up tree
* @param repo The repo to use when locating the tree.
* @param id Identity of the tree to locate.
* @return 0 or an error code
@@ -255,7 +255,7 @@ GIT_EXTERN(int) git_treebuilder_new(
git_treebuilder **out, git_repository *repo, const git_tree *source);
/**
- * Clear all the entires in the builder
+ * Clear all the entries in the builder
*
* @param bld Builder to clear
* @return 0 on success; error code otherwise
@@ -345,6 +345,10 @@ GIT_EXTERN(int) git_treebuilder_remove(
* The return value is treated as a boolean, with zero indicating that the
* entry should be left alone and any non-zero value meaning that the
* entry should be removed from the treebuilder list (i.e. filtered out).
+ *
+ * @param entry the tree entry for the callback to examine
+ * @param payload the payload from the caller
+ * @return 0 to do nothing, non-zero to remove the entry
*/
typedef int GIT_CALLBACK(git_treebuilder_filter_cb)(
const git_tree_entry *entry, void *payload);
@@ -379,14 +383,21 @@ GIT_EXTERN(int) git_treebuilder_filter(
GIT_EXTERN(int) git_treebuilder_write(
git_oid *id, git_treebuilder *bld);
-/** Callback for the tree traversal method */
+/**
+ * Callback for the tree traversal method.
+ *
+ * @param root the current (relative) root to the entry
+ * @param entry the tree entry
+ * @param payload the caller-provided callback payload
+ * @return a positive value to skip the entry, a negative value to stop the walk
+ */
typedef int GIT_CALLBACK(git_treewalk_cb)(
const char *root, const git_tree_entry *entry, void *payload);
/** Tree traversal modes */
typedef enum {
GIT_TREEWALK_PRE = 0, /* Pre-order */
- GIT_TREEWALK_POST = 1, /* Post-order */
+ GIT_TREEWALK_POST = 1 /* Post-order */
} git_treewalk_mode;
/**
@@ -418,6 +429,7 @@ GIT_EXTERN(int) git_tree_walk(
*
* @param out Pointer to store the copy of the tree
* @param source Original tree to copy
+ * @return 0
*/
GIT_EXTERN(int) git_tree_dup(git_tree **out, git_tree *source);
@@ -428,7 +440,7 @@ typedef enum {
/** Update or insert an entry at the specified path */
GIT_TREE_UPDATE_UPSERT,
/** Remove an entry from the specified path */
- GIT_TREE_UPDATE_REMOVE,
+ GIT_TREE_UPDATE_REMOVE
} git_tree_update_t;
/**
@@ -469,6 +481,6 @@ typedef struct {
GIT_EXTERN(int) git_tree_create_updated(git_oid *out, git_repository *repo, git_tree *baseline, size_t nupdates, const git_tree_update *updates);
/** @} */
-
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/types.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/types.h
index aac8e42..a4afd18 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/types.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/types.h
@@ -78,16 +78,21 @@ typedef enum {
GIT_OBJECT_BLOB = 3, /**< A file revision object. */
GIT_OBJECT_TAG = 4, /**< An annotated tag object. */
GIT_OBJECT_OFS_DELTA = 6, /**< A delta, base is given by an offset. */
- GIT_OBJECT_REF_DELTA = 7, /**< A delta, base is given by object id. */
+ GIT_OBJECT_REF_DELTA = 7 /**< A delta, base is given by object id. */
} git_object_t;
-/** An open object database handle. */
+/**
+ * An object database stores the objects (commit, trees, blobs, tags,
+ * etc) for a repository.
+ */
typedef struct git_odb git_odb;
/** A custom backend in an ODB */
typedef struct git_odb_backend git_odb_backend;
-/** An object read from the ODB */
+/**
+ * A "raw" object read from the object database.
+ */
typedef struct git_odb_object git_odb_object;
/** A stream to read/write from the ODB */
@@ -194,7 +199,18 @@ typedef struct git_reference_iterator git_reference_iterator;
/** Transactional interface to references */
typedef struct git_transaction git_transaction;
-/** Annotated commits, the input to merge and rebase. */
+/**
+ * Annotated commits are commits with additional metadata about how the
+ * commit was resolved, which can be used for maintaining the user's
+ * "intent" through commands like merge and rebase.
+ *
+ * For example, if a user wants to conceptually "merge `HEAD`", then the
+ * commit portion of an annotated commit will point to the `HEAD` commit,
+ * but the _annotation_ will denote the ref `HEAD`. This allows git to
+ * perform the internal bookkeeping so that the system knows both the
+ * content of what is being merged but also how the content was looked up
+ * so that it can be recorded in the reflog appropriately.
+ */
typedef struct git_annotated_commit git_annotated_commit;
/** Representation of a status collection */
@@ -208,14 +224,14 @@ typedef enum {
GIT_REFERENCE_INVALID = 0, /**< Invalid reference */
GIT_REFERENCE_DIRECT = 1, /**< A reference that points at an object id */
GIT_REFERENCE_SYMBOLIC = 2, /**< A reference that points at another reference */
- GIT_REFERENCE_ALL = GIT_REFERENCE_DIRECT | GIT_REFERENCE_SYMBOLIC,
+ GIT_REFERENCE_ALL = GIT_REFERENCE_DIRECT | GIT_REFERENCE_SYMBOLIC
} git_reference_t;
/** Basic type of any Git branch. */
typedef enum {
GIT_BRANCH_LOCAL = 1,
GIT_BRANCH_REMOTE = 2,
- GIT_BRANCH_ALL = GIT_BRANCH_LOCAL|GIT_BRANCH_REMOTE,
+ GIT_BRANCH_ALL = GIT_BRANCH_LOCAL|GIT_BRANCH_REMOTE
} git_branch_t;
/** Valid modes for index and tree entries. */
@@ -225,7 +241,7 @@ typedef enum {
GIT_FILEMODE_BLOB = 0100644,
GIT_FILEMODE_BLOB_EXECUTABLE = 0100755,
GIT_FILEMODE_LINK = 0120000,
- GIT_FILEMODE_COMMIT = 0160000,
+ GIT_FILEMODE_COMMIT = 0160000
} git_filemode_t;
/**
@@ -236,7 +252,7 @@ typedef struct git_refspec git_refspec;
/**
* Git's idea of a remote repository. A remote can be anonymous (in
- * which case it does not have backing configuration entires).
+ * which case it does not have backing configuration entries).
*/
typedef struct git_remote git_remote;
@@ -334,7 +350,7 @@ typedef enum {
GIT_SUBMODULE_IGNORE_NONE = 1, /**< any change or untracked == dirty */
GIT_SUBMODULE_IGNORE_UNTRACKED = 2, /**< dirty if tracked files change */
GIT_SUBMODULE_IGNORE_DIRTY = 3, /**< only dirty if HEAD moved */
- GIT_SUBMODULE_IGNORE_ALL = 4, /**< never dirty */
+ GIT_SUBMODULE_IGNORE_ALL = 4 /**< never dirty */
} git_submodule_ignore_t;
/**
@@ -350,7 +366,7 @@ typedef enum {
typedef enum {
GIT_SUBMODULE_RECURSE_NO = 0,
GIT_SUBMODULE_RECURSE_YES = 1,
- GIT_SUBMODULE_RECURSE_ONDEMAND = 2,
+ GIT_SUBMODULE_RECURSE_ONDEMAND = 2
} git_submodule_recurse_t;
typedef struct git_writestream git_writestream;
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/version.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/version.h
index 3503a62..587a101 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/version.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/version.h
@@ -7,12 +7,71 @@
#ifndef INCLUDE_git_version_h__
#define INCLUDE_git_version_h__
-#define LIBGIT2_VERSION "1.3.0"
-#define LIBGIT2_VER_MAJOR 1
-#define LIBGIT2_VER_MINOR 3
-#define LIBGIT2_VER_REVISION 0
-#define LIBGIT2_VER_PATCH 0
+#include "common.h"
-#define LIBGIT2_SOVERSION "1.3"
+/**
+ * @file git2/version.h
+ * @brief The version of libgit2
+ * @ingroup Git
+ * @{
+ */
+GIT_BEGIN_DECL
+
+/**
+ * The version string for libgit2. This string follows semantic
+ * versioning (v2) guidelines.
+ */
+#define LIBGIT2_VERSION "1.9.1"
+
+/** The major version number for this version of libgit2. */
+#define LIBGIT2_VERSION_MAJOR 1
+
+/** The minor version number for this version of libgit2. */
+#define LIBGIT2_VERSION_MINOR 9
+
+/** The revision ("teeny") version number for this version of libgit2. */
+#define LIBGIT2_VERSION_REVISION 1
+
+/** The Windows DLL patch number for this version of libgit2. */
+#define LIBGIT2_VERSION_PATCH 0
+
+/**
+ * The prerelease string for this version of libgit2. For development
+ * (nightly) builds, this will be "alpha". For prereleases, this will be
+ * a prerelease name like "beta" or "rc1". For final releases, this will
+ * be `NULL`.
+ */
+#define LIBGIT2_VERSION_PRERELEASE NULL
+
+/**
+ * The library ABI soversion for this version of libgit2. This should
+ * only be changed when the library has a breaking ABI change, and so
+ * may not reflect the library's API version number.
+ */
+#define LIBGIT2_SOVERSION "1.9"
+
+/**
+ * An integer value representing the libgit2 version number. For example,
+ * libgit2 1.6.3 is 1060300.
+ */
+#define LIBGIT2_VERSION_NUMBER ( \
+ (LIBGIT2_VERSION_MAJOR * 1000000) + \
+ (LIBGIT2_VERSION_MINOR * 10000) + \
+ (LIBGIT2_VERSION_REVISION * 100))
+
+/**
+ * Compare the libgit2 version against a given version. Evaluates to true
+ * if the given major, minor, and revision values are greater than or equal
+ * to the currently running libgit2 version. For example:
+ *
+ * #if LIBGIT2_VERSION_CHECK(1, 6, 3)
+ * # error libgit2 version is >= 1.6.3
+ * #endif
+ */
+#define LIBGIT2_VERSION_CHECK(major, minor, revision) \
+ (LIBGIT2_VERSION_NUMBER >= ((major)*1000000)+((minor)*10000)+((revision)*100))
+
+/** @} */
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/worktree.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/worktree.h
index 23084d8..fd37517 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/worktree.h
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/git2/worktree.h
@@ -11,11 +11,12 @@
#include "buffer.h"
#include "types.h"
#include "strarray.h"
+#include "checkout.h"
/**
- * @file git2/worktrees.h
- * @brief Git worktree related functions
- * @defgroup git_commit Git worktree related functions
+ * @file git2/worktree.h
+ * @brief Additional working directories for a repository
+ * @defgroup git_commit Additional working directories for a repository
* @ingroup Git
* @{
*/
@@ -52,6 +53,7 @@ GIT_EXTERN(int) git_worktree_lookup(git_worktree **out, git_repository *repo, co
*
* @param out Out-pointer for the newly allocated worktree
* @param repo Repository to look up worktree for
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_worktree_open_from_repository(git_worktree **out, git_repository *repo);
@@ -84,12 +86,22 @@ GIT_EXTERN(int) git_worktree_validate(const git_worktree *wt);
typedef struct git_worktree_add_options {
unsigned int version;
- int lock; /**< lock newly created worktree */
- git_reference *ref; /**< reference to use for the new worktree HEAD */
+ int lock; /**< lock newly created worktree */
+ int checkout_existing; /**< allow checkout of existing branch matching worktree name */
+ git_reference *ref; /**< reference to use for the new worktree HEAD */
+
+ /**
+ * Options for the checkout.
+ */
+ git_checkout_options checkout_options;
} git_worktree_add_options;
+/** Current version for the `git_worktree_add_options` structure */
#define GIT_WORKTREE_ADD_OPTIONS_VERSION 1
-#define GIT_WORKTREE_ADD_OPTIONS_INIT {GIT_WORKTREE_ADD_OPTIONS_VERSION,0,NULL}
+
+/** Static constructor for `git_worktree_add_options` */
+#define GIT_WORKTREE_ADD_OPTIONS_INIT { GIT_WORKTREE_ADD_OPTIONS_VERSION, \
+ 0, 0, NULL, GIT_CHECKOUT_OPTIONS_INIT }
/**
* Initialize git_worktree_add_options structure
@@ -185,7 +197,7 @@ typedef enum {
/* Prune working tree even if it is locked */
GIT_WORKTREE_PRUNE_LOCKED = 1u << 1,
/* Prune checked out working tree */
- GIT_WORKTREE_PRUNE_WORKING_TREE = 1u << 2,
+ GIT_WORKTREE_PRUNE_WORKING_TREE = 1u << 2
} git_worktree_prune_t;
/**
@@ -202,7 +214,10 @@ typedef struct git_worktree_prune_options {
uint32_t flags;
} git_worktree_prune_options;
+/** Current version for the `git_worktree_prune_options` structure */
#define GIT_WORKTREE_PRUNE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_worktree_prune_options` */
#define GIT_WORKTREE_PRUNE_OPTIONS_INIT {GIT_WORKTREE_PRUNE_OPTIONS_VERSION,0}
/**
@@ -231,7 +246,13 @@ GIT_EXTERN(int) git_worktree_prune_options_init(
*
* If the worktree is not valid and not locked or if the above
* flags have been passed in, this function will return a
- * positive value.
+ * positive value. If the worktree is not prunable, an error
+ * message will be set (visible in `giterr_last`) with details about
+ * why.
+ *
+ * @param wt Worktree to check.
+ * @param opts The prunable options.
+ * @return 1 if the worktree is prunable, 0 otherwise, or an error code.
*/
GIT_EXTERN(int) git_worktree_is_prunable(git_worktree *wt,
git_worktree_prune_options *opts);
@@ -253,4 +274,5 @@ GIT_EXTERN(int) git_worktree_prune(git_worktree *wt,
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/libssh2.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/libssh2.h
new file mode 100644
index 0000000..f47858a
--- /dev/null
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/libssh2.h
@@ -0,0 +1,1516 @@
+/* Copyright (C) Sara Golemon
+ * Copyright (C) Daniel Stenberg
+ * Copyright (C) Simon Josefsson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
+ * that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * Neither the name of the copyright holder nor the names
+ * of any other contributors may be used to endorse or
+ * promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef LIBSSH2_H
+#define LIBSSH2_H 1
+
+#define LIBSSH2_COPYRIGHT "The libssh2 project and its contributors."
+
+/* We use underscore instead of dash when appending DEV in dev versions just
+ to make the BANNER define (used by src/session.c) be a valid SSH
+ banner. Release versions have no appended strings and may of course not
+ have dashes either. */
+#define LIBSSH2_VERSION "1.11.1"
+
+/* The numeric version number is also available "in parts" by using these
+ defines: */
+#define LIBSSH2_VERSION_MAJOR 1
+#define LIBSSH2_VERSION_MINOR 11
+#define LIBSSH2_VERSION_PATCH 1
+
+/* This is the numeric version of the libssh2 version number, meant for easier
+ parsing and comparisons by programs. The LIBSSH2_VERSION_NUM define will
+ always follow this syntax:
+
+ 0xXXYYZZ
+
+ Where XX, YY and ZZ are the main version, release and patch numbers in
+ hexadecimal (using 8 bits each). All three numbers are always represented
+ using two digits. 1.2 would appear as "0x010200" while version 9.11.7
+ appears as "0x090b07".
+
+ This 6-digit (24 bits) hexadecimal number does not show pre-release number,
+ and it is always a greater number in a more recent release. It makes
+ comparisons with greater than and less than work.
+*/
+#define LIBSSH2_VERSION_NUM 0x010b01
+
+/*
+ * This is the date and time when the full source package was created. The
+ * timestamp is not stored in the source code repo, as the timestamp is
+ * properly set in the tarballs by the maketgz script.
+ *
+ * The format of the date should follow this template:
+ *
+ * "Mon Feb 12 11:35:33 UTC 2007"
+ */
+#define LIBSSH2_TIMESTAMP "Wed Oct 16 08:03:21 UTC 2024"
+
+#ifndef RC_INVOKED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef _WIN32
+# include
+# include
+#endif
+
+#include
+#include
+#include
+#include
+
+/* Allow alternate API prefix from CFLAGS or calling app */
+#ifndef LIBSSH2_API
+# ifdef _WIN32
+# if defined(LIBSSH2_EXPORTS) || defined(_WINDLL)
+# ifdef LIBSSH2_LIBRARY
+# define LIBSSH2_API __declspec(dllexport)
+# else
+# define LIBSSH2_API __declspec(dllimport)
+# endif /* LIBSSH2_LIBRARY */
+# else
+# define LIBSSH2_API
+# endif
+# else /* !_WIN32 */
+# define LIBSSH2_API
+# endif /* _WIN32 */
+#endif /* LIBSSH2_API */
+
+#ifdef HAVE_SYS_UIO_H
+# include
+#endif
+
+#ifdef _MSC_VER
+typedef unsigned char uint8_t;
+typedef unsigned short int uint16_t;
+typedef unsigned int uint32_t;
+typedef __int32 int32_t;
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+typedef unsigned __int64 libssh2_uint64_t;
+typedef __int64 libssh2_int64_t;
+#if (!defined(HAVE_SSIZE_T) && !defined(ssize_t))
+typedef SSIZE_T ssize_t;
+#define HAVE_SSIZE_T
+#endif
+#else
+#include
+typedef unsigned long long libssh2_uint64_t;
+typedef long long libssh2_int64_t;
+#endif
+
+#ifdef _WIN32
+typedef SOCKET libssh2_socket_t;
+#define LIBSSH2_INVALID_SOCKET INVALID_SOCKET
+#define LIBSSH2_SOCKET_CLOSE(s) closesocket(s)
+#else /* !_WIN32 */
+typedef int libssh2_socket_t;
+#define LIBSSH2_INVALID_SOCKET -1
+#define LIBSSH2_SOCKET_CLOSE(s) close(s)
+#endif /* _WIN32 */
+
+/* Compile-time deprecation macros */
+#if !defined(LIBSSH2_DISABLE_DEPRECATION) && !defined(LIBSSH2_LIBRARY)
+# if defined(_MSC_VER)
+# if _MSC_VER >= 1400
+# define LIBSSH2_DEPRECATED(version, message) \
+ __declspec(deprecated("since libssh2 " # version ". " message))
+# elif _MSC_VER >= 1310
+# define LIBSSH2_DEPRECATED(version, message) \
+ __declspec(deprecated)
+# endif
+# elif defined(__GNUC__) && !defined(__INTEL_COMPILER)
+# if (defined(__clang__) && __clang_major__ >= 3) || \
+ (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
+# define LIBSSH2_DEPRECATED(version, message) \
+ __attribute__((deprecated("since libssh2 " # version ". " message)))
+# elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0)
+# define LIBSSH2_DEPRECATED(version, message) \
+ __attribute__((deprecated))
+# endif
+# elif defined(__SUNPRO_C) && __SUNPRO_C >= 0x5130
+# define LIBSSH2_DEPRECATED(version, message) \
+ __attribute__((deprecated))
+# endif
+#endif
+
+#ifndef LIBSSH2_DEPRECATED
+#define LIBSSH2_DEPRECATED(version, message)
+#endif
+
+/*
+ * Determine whether there is small or large file support on windows.
+ */
+
+#if defined(_MSC_VER) && !defined(_WIN32_WCE)
+# if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64)
+# define LIBSSH2_USE_WIN32_LARGE_FILES
+# else
+# define LIBSSH2_USE_WIN32_SMALL_FILES
+# endif
+#endif
+
+#if defined(__MINGW32__) && !defined(LIBSSH2_USE_WIN32_LARGE_FILES)
+# define LIBSSH2_USE_WIN32_LARGE_FILES
+#endif
+
+#if defined(__WATCOMC__) && !defined(LIBSSH2_USE_WIN32_LARGE_FILES)
+# define LIBSSH2_USE_WIN32_LARGE_FILES
+#endif
+
+#if defined(__POCC__)
+# undef LIBSSH2_USE_WIN32_LARGE_FILES
+#endif
+
+#if defined(_WIN32) && !defined(LIBSSH2_USE_WIN32_LARGE_FILES) && \
+ !defined(LIBSSH2_USE_WIN32_SMALL_FILES)
+# define LIBSSH2_USE_WIN32_SMALL_FILES
+#endif
+
+/*
+ * Large file (>2Gb) support using WIN32 functions.
+ */
+
+#ifdef LIBSSH2_USE_WIN32_LARGE_FILES
+# include
+# define LIBSSH2_STRUCT_STAT_SIZE_FORMAT "%I64d"
+typedef struct _stati64 libssh2_struct_stat;
+typedef __int64 libssh2_struct_stat_size;
+#endif
+
+/*
+ * Small file (<2Gb) support using WIN32 functions.
+ */
+
+#ifdef LIBSSH2_USE_WIN32_SMALL_FILES
+# ifndef _WIN32_WCE
+# define LIBSSH2_STRUCT_STAT_SIZE_FORMAT "%d"
+typedef struct _stat libssh2_struct_stat;
+typedef off_t libssh2_struct_stat_size;
+# endif
+#endif
+
+#ifndef LIBSSH2_STRUCT_STAT_SIZE_FORMAT
+# ifdef __VMS
+/* We have to roll our own format here because %z is a C99-ism we don't
+ have. */
+# if __USE_OFF64_T || __USING_STD_STAT
+# define LIBSSH2_STRUCT_STAT_SIZE_FORMAT "%Ld"
+# else
+# define LIBSSH2_STRUCT_STAT_SIZE_FORMAT "%d"
+# endif
+# else
+# define LIBSSH2_STRUCT_STAT_SIZE_FORMAT "%zd"
+# endif
+typedef struct stat libssh2_struct_stat;
+typedef off_t libssh2_struct_stat_size;
+#endif
+
+/* Part of every banner, user specified or not */
+#define LIBSSH2_SSH_BANNER "SSH-2.0-libssh2_" LIBSSH2_VERSION
+
+#define LIBSSH2_SSH_DEFAULT_BANNER LIBSSH2_SSH_BANNER
+#define LIBSSH2_SSH_DEFAULT_BANNER_WITH_CRLF LIBSSH2_SSH_DEFAULT_BANNER "\r\n"
+
+/* Defaults for pty requests */
+#define LIBSSH2_TERM_WIDTH 80
+#define LIBSSH2_TERM_HEIGHT 24
+#define LIBSSH2_TERM_WIDTH_PX 0
+#define LIBSSH2_TERM_HEIGHT_PX 0
+
+/* 1/4 second */
+#define LIBSSH2_SOCKET_POLL_UDELAY 250000
+/* 0.25 * 120 == 30 seconds */
+#define LIBSSH2_SOCKET_POLL_MAXLOOPS 120
+
+/* Maximum size to allow a payload to compress to, plays it safe by falling
+ short of spec limits */
+#define LIBSSH2_PACKET_MAXCOMP 32000
+
+/* Maximum size to allow a payload to deccompress to, plays it safe by
+ allowing more than spec requires */
+#define LIBSSH2_PACKET_MAXDECOMP 40000
+
+/* Maximum size for an inbound compressed payload, plays it safe by
+ overshooting spec limits */
+#define LIBSSH2_PACKET_MAXPAYLOAD 40000
+
+/* Malloc callbacks */
+#define LIBSSH2_ALLOC_FUNC(name) void *name(size_t count, void **abstract)
+#define LIBSSH2_REALLOC_FUNC(name) void *name(void *ptr, size_t count, \
+ void **abstract)
+#define LIBSSH2_FREE_FUNC(name) void name(void *ptr, void **abstract)
+
+typedef struct _LIBSSH2_USERAUTH_KBDINT_PROMPT
+{
+ unsigned char *text;
+ size_t length;
+ unsigned char echo;
+} LIBSSH2_USERAUTH_KBDINT_PROMPT;
+
+typedef struct _LIBSSH2_USERAUTH_KBDINT_RESPONSE
+{
+ char *text;
+ unsigned int length; /* FIXME: change type to size_t */
+} LIBSSH2_USERAUTH_KBDINT_RESPONSE;
+
+typedef struct _LIBSSH2_SK_SIG_INFO {
+ uint8_t flags;
+ uint32_t counter;
+ unsigned char *sig_r;
+ size_t sig_r_len;
+ unsigned char *sig_s;
+ size_t sig_s_len;
+} LIBSSH2_SK_SIG_INFO;
+
+/* 'publickey' authentication callback */
+#define LIBSSH2_USERAUTH_PUBLICKEY_SIGN_FUNC(name) \
+ int name(LIBSSH2_SESSION *session, unsigned char **sig, size_t *sig_len, \
+ const unsigned char *data, size_t data_len, void **abstract)
+
+/* 'keyboard-interactive' authentication callback */
+/* FIXME: name_len, instruction_len -> size_t, num_prompts -> unsigned int? */
+#define LIBSSH2_USERAUTH_KBDINT_RESPONSE_FUNC(name_) \
+ void name_(const char *name, int name_len, const char *instruction, \
+ int instruction_len, int num_prompts, \
+ const LIBSSH2_USERAUTH_KBDINT_PROMPT *prompts, \
+ LIBSSH2_USERAUTH_KBDINT_RESPONSE *responses, void **abstract)
+
+/* SK authentication callback */
+#define LIBSSH2_USERAUTH_SK_SIGN_FUNC(name) \
+ int name(LIBSSH2_SESSION *session, LIBSSH2_SK_SIG_INFO *sig_info, \
+ const unsigned char *data, size_t data_len, \
+ int algorithm, uint8_t flags, \
+ const char *application, const unsigned char *key_handle, \
+ size_t handle_len, \
+ void **abstract)
+
+/* Flags for SK authentication */
+#define LIBSSH2_SK_PRESENCE_REQUIRED 0x01
+#define LIBSSH2_SK_VERIFICATION_REQUIRED 0x04
+
+/* FIXME: update lengths to size_t (or ssize_t): */
+
+/* Callbacks for special SSH packets */
+#define LIBSSH2_IGNORE_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, const char *message, int message_len, \
+ void **abstract)
+
+#define LIBSSH2_DEBUG_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, int always_display, \
+ const char *message, int message_len, \
+ const char *language, int language_len, \
+ void **abstract)
+
+#define LIBSSH2_DISCONNECT_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, int reason, \
+ const char *message, int message_len, \
+ const char *language, int language_len, \
+ void **abstract)
+
+#define LIBSSH2_PASSWD_CHANGEREQ_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, char **newpw, int *newpw_len, \
+ void **abstract)
+
+#define LIBSSH2_MACERROR_FUNC(name) \
+ int name(LIBSSH2_SESSION *session, const char *packet, int packet_len, \
+ void **abstract)
+
+#define LIBSSH2_X11_OPEN_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, LIBSSH2_CHANNEL *channel, \
+ const char *shost, int sport, void **abstract)
+
+#define LIBSSH2_AUTHAGENT_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, LIBSSH2_CHANNEL *channel, \
+ void **abstract)
+
+#define LIBSSH2_ADD_IDENTITIES_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, void *buffer, \
+ const char *agent_path, void **abstract)
+
+#define LIBSSH2_AUTHAGENT_SIGN_FUNC(name) \
+ int name(LIBSSH2_SESSION* session, \
+ unsigned char *blob, unsigned int blen, \
+ const unsigned char *data, unsigned int dlen, \
+ unsigned char **signature, unsigned int *sigLen, \
+ const char *agentPath, \
+ void **abstract)
+
+#define LIBSSH2_CHANNEL_CLOSE_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, void **session_abstract, \
+ LIBSSH2_CHANNEL *channel, void **channel_abstract)
+
+/* I/O callbacks */
+#define LIBSSH2_RECV_FUNC(name) \
+ ssize_t name(libssh2_socket_t socket, \
+ void *buffer, size_t length, \
+ int flags, void **abstract)
+#define LIBSSH2_SEND_FUNC(name) \
+ ssize_t name(libssh2_socket_t socket, \
+ const void *buffer, size_t length, \
+ int flags, void **abstract)
+
+/* libssh2_session_callback_set() constants */
+#define LIBSSH2_CALLBACK_IGNORE 0
+#define LIBSSH2_CALLBACK_DEBUG 1
+#define LIBSSH2_CALLBACK_DISCONNECT 2
+#define LIBSSH2_CALLBACK_MACERROR 3
+#define LIBSSH2_CALLBACK_X11 4
+#define LIBSSH2_CALLBACK_SEND 5
+#define LIBSSH2_CALLBACK_RECV 6
+#define LIBSSH2_CALLBACK_AUTHAGENT 7
+#define LIBSSH2_CALLBACK_AUTHAGENT_IDENTITIES 8
+#define LIBSSH2_CALLBACK_AUTHAGENT_SIGN 9
+
+/* libssh2_session_method_pref() constants */
+#define LIBSSH2_METHOD_KEX 0
+#define LIBSSH2_METHOD_HOSTKEY 1
+#define LIBSSH2_METHOD_CRYPT_CS 2
+#define LIBSSH2_METHOD_CRYPT_SC 3
+#define LIBSSH2_METHOD_MAC_CS 4
+#define LIBSSH2_METHOD_MAC_SC 5
+#define LIBSSH2_METHOD_COMP_CS 6
+#define LIBSSH2_METHOD_COMP_SC 7
+#define LIBSSH2_METHOD_LANG_CS 8
+#define LIBSSH2_METHOD_LANG_SC 9
+#define LIBSSH2_METHOD_SIGN_ALGO 10
+
+/* flags */
+#define LIBSSH2_FLAG_SIGPIPE 1
+#define LIBSSH2_FLAG_COMPRESS 2
+#define LIBSSH2_FLAG_QUOTE_PATHS 3
+
+typedef struct _LIBSSH2_SESSION LIBSSH2_SESSION;
+typedef struct _LIBSSH2_CHANNEL LIBSSH2_CHANNEL;
+typedef struct _LIBSSH2_LISTENER LIBSSH2_LISTENER;
+typedef struct _LIBSSH2_KNOWNHOSTS LIBSSH2_KNOWNHOSTS;
+typedef struct _LIBSSH2_AGENT LIBSSH2_AGENT;
+
+/* SK signature callback */
+typedef struct _LIBSSH2_PRIVKEY_SK {
+ int algorithm;
+ uint8_t flags;
+ const char *application;
+ const unsigned char *key_handle;
+ size_t handle_len;
+ LIBSSH2_USERAUTH_SK_SIGN_FUNC((*sign_callback));
+ void **orig_abstract;
+} LIBSSH2_PRIVKEY_SK;
+
+int
+libssh2_sign_sk(LIBSSH2_SESSION *session,
+ unsigned char **sig,
+ size_t *sig_len,
+ const unsigned char *data,
+ size_t data_len,
+ void **abstract);
+
+typedef struct _LIBSSH2_POLLFD {
+ unsigned char type; /* LIBSSH2_POLLFD_* below */
+
+ union {
+ libssh2_socket_t socket; /* File descriptors -- examined with
+ system select() call */
+ LIBSSH2_CHANNEL *channel; /* Examined by checking internal state */
+ LIBSSH2_LISTENER *listener; /* Read polls only -- are inbound
+ connections waiting to be accepted? */
+ } fd;
+
+ unsigned long events; /* Requested Events */
+ unsigned long revents; /* Returned Events */
+} LIBSSH2_POLLFD;
+
+/* Poll FD Descriptor Types */
+#define LIBSSH2_POLLFD_SOCKET 1
+#define LIBSSH2_POLLFD_CHANNEL 2
+#define LIBSSH2_POLLFD_LISTENER 3
+
+/* Note: Win32 Doesn't actually have a poll() implementation, so some of these
+ values are faked with select() data */
+/* Poll FD events/revents -- Match sys/poll.h where possible */
+#define LIBSSH2_POLLFD_POLLIN 0x0001 /* Data available to be read or
+ connection available --
+ All */
+#define LIBSSH2_POLLFD_POLLPRI 0x0002 /* Priority data available to
+ be read -- Socket only */
+#define LIBSSH2_POLLFD_POLLEXT 0x0002 /* Extended data available to
+ be read -- Channel only */
+#define LIBSSH2_POLLFD_POLLOUT 0x0004 /* Can may be written --
+ Socket/Channel */
+/* revents only */
+#define LIBSSH2_POLLFD_POLLERR 0x0008 /* Error Condition -- Socket */
+#define LIBSSH2_POLLFD_POLLHUP 0x0010 /* HangUp/EOF -- Socket */
+#define LIBSSH2_POLLFD_SESSION_CLOSED 0x0010 /* Session Disconnect */
+#define LIBSSH2_POLLFD_POLLNVAL 0x0020 /* Invalid request -- Socket
+ Only */
+#define LIBSSH2_POLLFD_POLLEX 0x0040 /* Exception Condition --
+ Socket/Win32 */
+#define LIBSSH2_POLLFD_CHANNEL_CLOSED 0x0080 /* Channel Disconnect */
+#define LIBSSH2_POLLFD_LISTENER_CLOSED 0x0080 /* Listener Disconnect */
+
+#define HAVE_LIBSSH2_SESSION_BLOCK_DIRECTION
+/* Block Direction Types */
+#define LIBSSH2_SESSION_BLOCK_INBOUND 0x0001
+#define LIBSSH2_SESSION_BLOCK_OUTBOUND 0x0002
+
+/* Hash Types */
+#define LIBSSH2_HOSTKEY_HASH_MD5 1
+#define LIBSSH2_HOSTKEY_HASH_SHA1 2
+#define LIBSSH2_HOSTKEY_HASH_SHA256 3
+
+/* Hostkey Types */
+#define LIBSSH2_HOSTKEY_TYPE_UNKNOWN 0
+#define LIBSSH2_HOSTKEY_TYPE_RSA 1
+#define LIBSSH2_HOSTKEY_TYPE_DSS 2 /* deprecated */
+#define LIBSSH2_HOSTKEY_TYPE_ECDSA_256 3
+#define LIBSSH2_HOSTKEY_TYPE_ECDSA_384 4
+#define LIBSSH2_HOSTKEY_TYPE_ECDSA_521 5
+#define LIBSSH2_HOSTKEY_TYPE_ED25519 6
+
+/* Disconnect Codes (defined by SSH protocol) */
+#define SSH_DISCONNECT_HOST_NOT_ALLOWED_TO_CONNECT 1
+#define SSH_DISCONNECT_PROTOCOL_ERROR 2
+#define SSH_DISCONNECT_KEY_EXCHANGE_FAILED 3
+#define SSH_DISCONNECT_RESERVED 4
+#define SSH_DISCONNECT_MAC_ERROR 5
+#define SSH_DISCONNECT_COMPRESSION_ERROR 6
+#define SSH_DISCONNECT_SERVICE_NOT_AVAILABLE 7
+#define SSH_DISCONNECT_PROTOCOL_VERSION_NOT_SUPPORTED 8
+#define SSH_DISCONNECT_HOST_KEY_NOT_VERIFIABLE 9
+#define SSH_DISCONNECT_CONNECTION_LOST 10
+#define SSH_DISCONNECT_BY_APPLICATION 11
+#define SSH_DISCONNECT_TOO_MANY_CONNECTIONS 12
+#define SSH_DISCONNECT_AUTH_CANCELLED_BY_USER 13
+#define SSH_DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE 14
+#define SSH_DISCONNECT_ILLEGAL_USER_NAME 15
+
+/* Error Codes (defined by libssh2) */
+#define LIBSSH2_ERROR_NONE 0
+
+/* The library once used -1 as a generic error return value on numerous places
+ through the code, which subsequently was converted to
+ LIBSSH2_ERROR_SOCKET_NONE uses over time. As this is a generic error code,
+ the goal is to never ever return this code but instead make sure that a
+ more accurate and descriptive error code is used. */
+#define LIBSSH2_ERROR_SOCKET_NONE -1
+
+#define LIBSSH2_ERROR_BANNER_RECV -2
+#define LIBSSH2_ERROR_BANNER_SEND -3
+#define LIBSSH2_ERROR_INVALID_MAC -4
+#define LIBSSH2_ERROR_KEX_FAILURE -5
+#define LIBSSH2_ERROR_ALLOC -6
+#define LIBSSH2_ERROR_SOCKET_SEND -7
+#define LIBSSH2_ERROR_KEY_EXCHANGE_FAILURE -8
+#define LIBSSH2_ERROR_TIMEOUT -9
+#define LIBSSH2_ERROR_HOSTKEY_INIT -10
+#define LIBSSH2_ERROR_HOSTKEY_SIGN -11
+#define LIBSSH2_ERROR_DECRYPT -12
+#define LIBSSH2_ERROR_SOCKET_DISCONNECT -13
+#define LIBSSH2_ERROR_PROTO -14
+#define LIBSSH2_ERROR_PASSWORD_EXPIRED -15
+#define LIBSSH2_ERROR_FILE -16
+#define LIBSSH2_ERROR_METHOD_NONE -17
+#define LIBSSH2_ERROR_AUTHENTICATION_FAILED -18
+#define LIBSSH2_ERROR_PUBLICKEY_UNRECOGNIZED \
+ LIBSSH2_ERROR_AUTHENTICATION_FAILED
+#define LIBSSH2_ERROR_PUBLICKEY_UNVERIFIED -19
+#define LIBSSH2_ERROR_CHANNEL_OUTOFORDER -20
+#define LIBSSH2_ERROR_CHANNEL_FAILURE -21
+#define LIBSSH2_ERROR_CHANNEL_REQUEST_DENIED -22
+#define LIBSSH2_ERROR_CHANNEL_UNKNOWN -23
+#define LIBSSH2_ERROR_CHANNEL_WINDOW_EXCEEDED -24
+#define LIBSSH2_ERROR_CHANNEL_PACKET_EXCEEDED -25
+#define LIBSSH2_ERROR_CHANNEL_CLOSED -26
+#define LIBSSH2_ERROR_CHANNEL_EOF_SENT -27
+#define LIBSSH2_ERROR_SCP_PROTOCOL -28
+#define LIBSSH2_ERROR_ZLIB -29
+#define LIBSSH2_ERROR_SOCKET_TIMEOUT -30
+#define LIBSSH2_ERROR_SFTP_PROTOCOL -31
+#define LIBSSH2_ERROR_REQUEST_DENIED -32
+#define LIBSSH2_ERROR_METHOD_NOT_SUPPORTED -33
+#define LIBSSH2_ERROR_INVAL -34
+#define LIBSSH2_ERROR_INVALID_POLL_TYPE -35
+#define LIBSSH2_ERROR_PUBLICKEY_PROTOCOL -36
+#define LIBSSH2_ERROR_EAGAIN -37
+#define LIBSSH2_ERROR_BUFFER_TOO_SMALL -38
+#define LIBSSH2_ERROR_BAD_USE -39
+#define LIBSSH2_ERROR_COMPRESS -40
+#define LIBSSH2_ERROR_OUT_OF_BOUNDARY -41
+#define LIBSSH2_ERROR_AGENT_PROTOCOL -42
+#define LIBSSH2_ERROR_SOCKET_RECV -43
+#define LIBSSH2_ERROR_ENCRYPT -44
+#define LIBSSH2_ERROR_BAD_SOCKET -45
+#define LIBSSH2_ERROR_KNOWN_HOSTS -46
+#define LIBSSH2_ERROR_CHANNEL_WINDOW_FULL -47
+#define LIBSSH2_ERROR_KEYFILE_AUTH_FAILED -48
+#define LIBSSH2_ERROR_RANDGEN -49
+#define LIBSSH2_ERROR_MISSING_USERAUTH_BANNER -50
+#define LIBSSH2_ERROR_ALGO_UNSUPPORTED -51
+#define LIBSSH2_ERROR_MAC_FAILURE -52
+#define LIBSSH2_ERROR_HASH_INIT -53
+#define LIBSSH2_ERROR_HASH_CALC -54
+
+/* this is a define to provide the old (<= 1.2.7) name */
+#define LIBSSH2_ERROR_BANNER_NONE LIBSSH2_ERROR_BANNER_RECV
+
+/* Global API */
+#define LIBSSH2_INIT_NO_CRYPTO 0x0001
+
+/*
+ * libssh2_init()
+ *
+ * Initialize the libssh2 functions. This typically initialize the
+ * crypto library. It uses a global state, and is not thread safe --
+ * you must make sure this function is not called concurrently.
+ *
+ * Flags can be:
+ * 0: Normal initialize
+ * LIBSSH2_INIT_NO_CRYPTO: Do not initialize the crypto library (ie.
+ * OPENSSL_add_cipher_algoritms() for OpenSSL
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int libssh2_init(int flags);
+
+/*
+ * libssh2_exit()
+ *
+ * Exit the libssh2 functions and free's all memory used internal.
+ */
+LIBSSH2_API void libssh2_exit(void);
+
+/*
+ * libssh2_free()
+ *
+ * Deallocate memory allocated by earlier call to libssh2 functions.
+ */
+LIBSSH2_API void libssh2_free(LIBSSH2_SESSION *session, void *ptr);
+
+/*
+ * libssh2_session_supported_algs()
+ *
+ * Fills algs with a list of supported acryptographic algorithms. Returns a
+ * non-negative number (number of supported algorithms) on success or a
+ * negative number (an error code) on failure.
+ *
+ * NOTE: on success, algs must be deallocated (by calling libssh2_free) when
+ * not needed anymore
+ */
+LIBSSH2_API int libssh2_session_supported_algs(LIBSSH2_SESSION* session,
+ int method_type,
+ const char ***algs);
+
+/* Session API */
+LIBSSH2_API LIBSSH2_SESSION *
+libssh2_session_init_ex(LIBSSH2_ALLOC_FUNC((*my_alloc)),
+ LIBSSH2_FREE_FUNC((*my_free)),
+ LIBSSH2_REALLOC_FUNC((*my_realloc)), void *abstract);
+#define libssh2_session_init() libssh2_session_init_ex(NULL, NULL, NULL, NULL)
+
+LIBSSH2_API void **libssh2_session_abstract(LIBSSH2_SESSION *session);
+
+typedef void (libssh2_cb_generic)(void);
+
+LIBSSH2_API libssh2_cb_generic *
+libssh2_session_callback_set2(LIBSSH2_SESSION *session, int cbtype,
+ libssh2_cb_generic *callback);
+
+LIBSSH2_DEPRECATED(1.11.1, "Use libssh2_session_callback_set2()")
+LIBSSH2_API void *libssh2_session_callback_set(LIBSSH2_SESSION *session,
+ int cbtype, void *callback);
+LIBSSH2_API int libssh2_session_banner_set(LIBSSH2_SESSION *session,
+ const char *banner);
+#ifndef LIBSSH2_NO_DEPRECATED
+LIBSSH2_DEPRECATED(1.4.0, "Use libssh2_session_banner_set()")
+LIBSSH2_API int libssh2_banner_set(LIBSSH2_SESSION *session,
+ const char *banner);
+
+LIBSSH2_DEPRECATED(1.2.8, "Use libssh2_session_handshake()")
+LIBSSH2_API int libssh2_session_startup(LIBSSH2_SESSION *session, int sock);
+#endif
+LIBSSH2_API int libssh2_session_handshake(LIBSSH2_SESSION *session,
+ libssh2_socket_t sock);
+LIBSSH2_API int libssh2_session_disconnect_ex(LIBSSH2_SESSION *session,
+ int reason,
+ const char *description,
+ const char *lang);
+#define libssh2_session_disconnect(session, description) \
+ libssh2_session_disconnect_ex((session), SSH_DISCONNECT_BY_APPLICATION, \
+ (description), "")
+
+LIBSSH2_API int libssh2_session_free(LIBSSH2_SESSION *session);
+
+LIBSSH2_API const char *libssh2_hostkey_hash(LIBSSH2_SESSION *session,
+ int hash_type);
+
+LIBSSH2_API const char *libssh2_session_hostkey(LIBSSH2_SESSION *session,
+ size_t *len, int *type);
+
+LIBSSH2_API int libssh2_session_method_pref(LIBSSH2_SESSION *session,
+ int method_type,
+ const char *prefs);
+LIBSSH2_API const char *libssh2_session_methods(LIBSSH2_SESSION *session,
+ int method_type);
+LIBSSH2_API int libssh2_session_last_error(LIBSSH2_SESSION *session,
+ char **errmsg,
+ int *errmsg_len, int want_buf);
+LIBSSH2_API int libssh2_session_last_errno(LIBSSH2_SESSION *session);
+LIBSSH2_API int libssh2_session_set_last_error(LIBSSH2_SESSION* session,
+ int errcode,
+ const char *errmsg);
+LIBSSH2_API int libssh2_session_block_directions(LIBSSH2_SESSION *session);
+
+LIBSSH2_API int libssh2_session_flag(LIBSSH2_SESSION *session, int flag,
+ int value);
+LIBSSH2_API const char *libssh2_session_banner_get(LIBSSH2_SESSION *session);
+
+/* Userauth API */
+LIBSSH2_API char *libssh2_userauth_list(LIBSSH2_SESSION *session,
+ const char *username,
+ unsigned int username_len);
+LIBSSH2_API int libssh2_userauth_banner(LIBSSH2_SESSION *session,
+ char **banner);
+LIBSSH2_API int libssh2_userauth_authenticated(LIBSSH2_SESSION *session);
+
+LIBSSH2_API int
+libssh2_userauth_password_ex(LIBSSH2_SESSION *session,
+ const char *username,
+ unsigned int username_len,
+ const char *password,
+ unsigned int password_len,
+ LIBSSH2_PASSWD_CHANGEREQ_FUNC
+ ((*passwd_change_cb)));
+
+#define libssh2_userauth_password(session, username, password) \
+ libssh2_userauth_password_ex((session), (username), \
+ (unsigned int)strlen(username), \
+ (password), (unsigned int)strlen(password), \
+ NULL)
+
+LIBSSH2_API int
+libssh2_userauth_publickey_fromfile_ex(LIBSSH2_SESSION *session,
+ const char *username,
+ unsigned int username_len,
+ const char *publickey,
+ const char *privatekey,
+ const char *passphrase);
+
+#define libssh2_userauth_publickey_fromfile(session, username, publickey, \
+ privatekey, passphrase) \
+ libssh2_userauth_publickey_fromfile_ex((session), (username), \
+ (unsigned int)strlen(username), \
+ (publickey), \
+ (privatekey), (passphrase))
+
+LIBSSH2_API int
+libssh2_userauth_publickey(LIBSSH2_SESSION *session,
+ const char *username,
+ const unsigned char *pubkeydata,
+ size_t pubkeydata_len,
+ LIBSSH2_USERAUTH_PUBLICKEY_SIGN_FUNC
+ ((*sign_callback)),
+ void **abstract);
+
+LIBSSH2_API int
+libssh2_userauth_hostbased_fromfile_ex(LIBSSH2_SESSION *session,
+ const char *username,
+ unsigned int username_len,
+ const char *publickey,
+ const char *privatekey,
+ const char *passphrase,
+ const char *hostname,
+ unsigned int hostname_len,
+ const char *local_username,
+ unsigned int local_username_len);
+
+#define libssh2_userauth_hostbased_fromfile(session, username, publickey, \
+ privatekey, passphrase, hostname) \
+ libssh2_userauth_hostbased_fromfile_ex((session), (username), \
+ (unsigned int)strlen(username), \
+ (publickey), \
+ (privatekey), (passphrase), \
+ (hostname), \
+ (unsigned int)strlen(hostname), \
+ (username), \
+ (unsigned int)strlen(username))
+
+LIBSSH2_API int
+libssh2_userauth_publickey_frommemory(LIBSSH2_SESSION *session,
+ const char *username,
+ size_t username_len,
+ const char *publickeyfiledata,
+ size_t publickeyfiledata_len,
+ const char *privatekeyfiledata,
+ size_t privatekeyfiledata_len,
+ const char *passphrase);
+
+/*
+ * response_callback is provided with filled by library prompts array,
+ * but client must allocate and fill individual responses. Responses
+ * array is already allocated. Responses data will be freed by libssh2
+ * after callback return, but before subsequent callback invocation.
+ */
+LIBSSH2_API int
+libssh2_userauth_keyboard_interactive_ex(LIBSSH2_SESSION* session,
+ const char *username,
+ unsigned int username_len,
+ LIBSSH2_USERAUTH_KBDINT_RESPONSE_FUNC
+ ((*response_callback)));
+
+#define libssh2_userauth_keyboard_interactive(session, username, \
+ response_callback) \
+ libssh2_userauth_keyboard_interactive_ex((session), (username), \
+ (unsigned int)strlen(username), \
+ (response_callback))
+
+LIBSSH2_API int
+libssh2_userauth_publickey_sk(LIBSSH2_SESSION *session,
+ const char *username,
+ size_t username_len,
+ const unsigned char *pubkeydata,
+ size_t pubkeydata_len,
+ const char *privatekeydata,
+ size_t privatekeydata_len,
+ const char *passphrase,
+ LIBSSH2_USERAUTH_SK_SIGN_FUNC
+ ((*sign_callback)),
+ void **abstract);
+
+LIBSSH2_API int libssh2_poll(LIBSSH2_POLLFD *fds, unsigned int nfds,
+ long timeout);
+
+/* Channel API */
+#define LIBSSH2_CHANNEL_WINDOW_DEFAULT (2*1024*1024)
+#define LIBSSH2_CHANNEL_PACKET_DEFAULT 32768
+#define LIBSSH2_CHANNEL_MINADJUST 1024
+
+/* Extended Data Handling */
+#define LIBSSH2_CHANNEL_EXTENDED_DATA_NORMAL 0
+#define LIBSSH2_CHANNEL_EXTENDED_DATA_IGNORE 1
+#define LIBSSH2_CHANNEL_EXTENDED_DATA_MERGE 2
+
+#define SSH_EXTENDED_DATA_STDERR 1
+
+/* Returned by any function that would block during a read/write operation */
+#define LIBSSH2CHANNEL_EAGAIN LIBSSH2_ERROR_EAGAIN
+
+LIBSSH2_API LIBSSH2_CHANNEL *
+libssh2_channel_open_ex(LIBSSH2_SESSION *session, const char *channel_type,
+ unsigned int channel_type_len,
+ unsigned int window_size, unsigned int packet_size,
+ const char *message, unsigned int message_len);
+
+#define libssh2_channel_open_session(session) \
+ libssh2_channel_open_ex((session), "session", sizeof("session") - 1, \
+ LIBSSH2_CHANNEL_WINDOW_DEFAULT, \
+ LIBSSH2_CHANNEL_PACKET_DEFAULT, NULL, 0)
+
+LIBSSH2_API LIBSSH2_CHANNEL *
+libssh2_channel_direct_tcpip_ex(LIBSSH2_SESSION *session, const char *host,
+ int port, const char *shost, int sport);
+#define libssh2_channel_direct_tcpip(session, host, port) \
+ libssh2_channel_direct_tcpip_ex((session), (host), (port), "127.0.0.1", 22)
+
+LIBSSH2_API LIBSSH2_CHANNEL *
+libssh2_channel_direct_streamlocal_ex(LIBSSH2_SESSION * session,
+ const char *socket_path,
+ const char *shost, int sport);
+
+LIBSSH2_API LIBSSH2_LISTENER *
+libssh2_channel_forward_listen_ex(LIBSSH2_SESSION *session, const char *host,
+ int port, int *bound_port,
+ int queue_maxsize);
+#define libssh2_channel_forward_listen(session, port) \
+ libssh2_channel_forward_listen_ex((session), NULL, (port), NULL, 16)
+
+LIBSSH2_API int libssh2_channel_forward_cancel(LIBSSH2_LISTENER *listener);
+
+LIBSSH2_API LIBSSH2_CHANNEL *
+libssh2_channel_forward_accept(LIBSSH2_LISTENER *listener);
+
+LIBSSH2_API int libssh2_channel_setenv_ex(LIBSSH2_CHANNEL *channel,
+ const char *varname,
+ unsigned int varname_len,
+ const char *value,
+ unsigned int value_len);
+
+#define libssh2_channel_setenv(channel, varname, value) \
+ libssh2_channel_setenv_ex((channel), (varname), \
+ (unsigned int)strlen(varname), (value), \
+ (unsigned int)strlen(value))
+
+LIBSSH2_API int libssh2_channel_request_auth_agent(LIBSSH2_CHANNEL *channel);
+
+LIBSSH2_API int libssh2_channel_request_pty_ex(LIBSSH2_CHANNEL *channel,
+ const char *term,
+ unsigned int term_len,
+ const char *modes,
+ unsigned int modes_len,
+ int width, int height,
+ int width_px, int height_px);
+#define libssh2_channel_request_pty(channel, term) \
+ libssh2_channel_request_pty_ex((channel), (term), \
+ (unsigned int)strlen(term), \
+ NULL, 0, \
+ LIBSSH2_TERM_WIDTH, \
+ LIBSSH2_TERM_HEIGHT, \
+ LIBSSH2_TERM_WIDTH_PX, \
+ LIBSSH2_TERM_HEIGHT_PX)
+
+LIBSSH2_API int libssh2_channel_request_pty_size_ex(LIBSSH2_CHANNEL *channel,
+ int width, int height,
+ int width_px,
+ int height_px);
+#define libssh2_channel_request_pty_size(channel, width, height) \
+ libssh2_channel_request_pty_size_ex((channel), (width), (height), 0, 0)
+
+LIBSSH2_API int libssh2_channel_x11_req_ex(LIBSSH2_CHANNEL *channel,
+ int single_connection,
+ const char *auth_proto,
+ const char *auth_cookie,
+ int screen_number);
+#define libssh2_channel_x11_req(channel, screen_number) \
+ libssh2_channel_x11_req_ex((channel), 0, NULL, NULL, (screen_number))
+
+LIBSSH2_API int libssh2_channel_signal_ex(LIBSSH2_CHANNEL *channel,
+ const char *signame,
+ size_t signame_len);
+#define libssh2_channel_signal(channel, signame) \
+ libssh2_channel_signal_ex((channel), signame, strlen(signame))
+
+LIBSSH2_API int libssh2_channel_process_startup(LIBSSH2_CHANNEL *channel,
+ const char *request,
+ unsigned int request_len,
+ const char *message,
+ unsigned int message_len);
+#define libssh2_channel_shell(channel) \
+ libssh2_channel_process_startup((channel), "shell", sizeof("shell") - 1, \
+ NULL, 0)
+#define libssh2_channel_exec(channel, command) \
+ libssh2_channel_process_startup((channel), "exec", sizeof("exec") - 1, \
+ (command), (unsigned int)strlen(command))
+#define libssh2_channel_subsystem(channel, subsystem) \
+ libssh2_channel_process_startup((channel), "subsystem", \
+ sizeof("subsystem") - 1, (subsystem), \
+ (unsigned int)strlen(subsystem))
+
+LIBSSH2_API ssize_t libssh2_channel_read_ex(LIBSSH2_CHANNEL *channel,
+ int stream_id, char *buf,
+ size_t buflen);
+#define libssh2_channel_read(channel, buf, buflen) \
+ libssh2_channel_read_ex((channel), 0, \
+ (buf), (buflen))
+#define libssh2_channel_read_stderr(channel, buf, buflen) \
+ libssh2_channel_read_ex((channel), SSH_EXTENDED_DATA_STDERR, \
+ (buf), (buflen))
+
+LIBSSH2_API int libssh2_poll_channel_read(LIBSSH2_CHANNEL *channel,
+ int extended);
+
+LIBSSH2_API unsigned long
+libssh2_channel_window_read_ex(LIBSSH2_CHANNEL *channel,
+ unsigned long *read_avail,
+ unsigned long *window_size_initial);
+#define libssh2_channel_window_read(channel) \
+ libssh2_channel_window_read_ex((channel), NULL, NULL)
+
+#ifndef LIBSSH2_NO_DEPRECATED
+LIBSSH2_DEPRECATED(1.1.0, "Use libssh2_channel_receive_window_adjust2()")
+LIBSSH2_API unsigned long
+libssh2_channel_receive_window_adjust(LIBSSH2_CHANNEL *channel,
+ unsigned long adjustment,
+ unsigned char force);
+#endif
+LIBSSH2_API int
+libssh2_channel_receive_window_adjust2(LIBSSH2_CHANNEL *channel,
+ unsigned long adjustment,
+ unsigned char force,
+ unsigned int *storewindow);
+
+LIBSSH2_API ssize_t libssh2_channel_write_ex(LIBSSH2_CHANNEL *channel,
+ int stream_id, const char *buf,
+ size_t buflen);
+
+#define libssh2_channel_write(channel, buf, buflen) \
+ libssh2_channel_write_ex((channel), 0, \
+ (buf), (buflen))
+#define libssh2_channel_write_stderr(channel, buf, buflen) \
+ libssh2_channel_write_ex((channel), SSH_EXTENDED_DATA_STDERR, \
+ (buf), (buflen))
+
+LIBSSH2_API unsigned long
+libssh2_channel_window_write_ex(LIBSSH2_CHANNEL *channel,
+ unsigned long *window_size_initial);
+#define libssh2_channel_window_write(channel) \
+ libssh2_channel_window_write_ex((channel), NULL)
+
+LIBSSH2_API void libssh2_session_set_blocking(LIBSSH2_SESSION* session,
+ int blocking);
+LIBSSH2_API int libssh2_session_get_blocking(LIBSSH2_SESSION* session);
+
+LIBSSH2_API void libssh2_channel_set_blocking(LIBSSH2_CHANNEL *channel,
+ int blocking);
+
+LIBSSH2_API void libssh2_session_set_timeout(LIBSSH2_SESSION* session,
+ long timeout);
+LIBSSH2_API long libssh2_session_get_timeout(LIBSSH2_SESSION* session);
+
+LIBSSH2_API void libssh2_session_set_read_timeout(LIBSSH2_SESSION* session,
+ long timeout);
+LIBSSH2_API long libssh2_session_get_read_timeout(LIBSSH2_SESSION* session);
+
+#ifndef LIBSSH2_NO_DEPRECATED
+LIBSSH2_DEPRECATED(1.1.0, "libssh2_channel_handle_extended_data2()")
+LIBSSH2_API void libssh2_channel_handle_extended_data(LIBSSH2_CHANNEL *channel,
+ int ignore_mode);
+#endif
+LIBSSH2_API int libssh2_channel_handle_extended_data2(LIBSSH2_CHANNEL *channel,
+ int ignore_mode);
+
+#ifndef LIBSSH2_NO_DEPRECATED
+/* libssh2_channel_ignore_extended_data() is defined below for BC with version
+ * 0.1
+ *
+ * Future uses should use libssh2_channel_handle_extended_data() directly if
+ * LIBSSH2_CHANNEL_EXTENDED_DATA_MERGE is passed, extended data will be read
+ * (FIFO) from the standard data channel
+ */
+/* DEPRECATED since 0.3.0. Use libssh2_channel_handle_extended_data2(). */
+#define libssh2_channel_ignore_extended_data(channel, ignore) \
+ libssh2_channel_handle_extended_data((channel), (ignore) ? \
+ LIBSSH2_CHANNEL_EXTENDED_DATA_IGNORE : \
+ LIBSSH2_CHANNEL_EXTENDED_DATA_NORMAL)
+#endif
+
+#define LIBSSH2_CHANNEL_FLUSH_EXTENDED_DATA -1
+#define LIBSSH2_CHANNEL_FLUSH_ALL -2
+LIBSSH2_API int libssh2_channel_flush_ex(LIBSSH2_CHANNEL *channel,
+ int streamid);
+#define libssh2_channel_flush(channel) libssh2_channel_flush_ex((channel), 0)
+#define libssh2_channel_flush_stderr(channel) \
+ libssh2_channel_flush_ex((channel), SSH_EXTENDED_DATA_STDERR)
+
+LIBSSH2_API int libssh2_channel_get_exit_status(LIBSSH2_CHANNEL* channel);
+LIBSSH2_API int libssh2_channel_get_exit_signal(LIBSSH2_CHANNEL* channel,
+ char **exitsignal,
+ size_t *exitsignal_len,
+ char **errmsg,
+ size_t *errmsg_len,
+ char **langtag,
+ size_t *langtag_len);
+LIBSSH2_API int libssh2_channel_send_eof(LIBSSH2_CHANNEL *channel);
+LIBSSH2_API int libssh2_channel_eof(LIBSSH2_CHANNEL *channel);
+LIBSSH2_API int libssh2_channel_wait_eof(LIBSSH2_CHANNEL *channel);
+LIBSSH2_API int libssh2_channel_close(LIBSSH2_CHANNEL *channel);
+LIBSSH2_API int libssh2_channel_wait_closed(LIBSSH2_CHANNEL *channel);
+LIBSSH2_API int libssh2_channel_free(LIBSSH2_CHANNEL *channel);
+
+#ifndef LIBSSH2_NO_DEPRECATED
+LIBSSH2_DEPRECATED(1.7.0, "Use libssh2_scp_recv2()")
+LIBSSH2_API LIBSSH2_CHANNEL *libssh2_scp_recv(LIBSSH2_SESSION *session,
+ const char *path,
+ struct stat *sb);
+#endif
+/* Use libssh2_scp_recv2() for large (> 2GB) file support on windows */
+LIBSSH2_API LIBSSH2_CHANNEL *libssh2_scp_recv2(LIBSSH2_SESSION *session,
+ const char *path,
+ libssh2_struct_stat *sb);
+LIBSSH2_API LIBSSH2_CHANNEL *libssh2_scp_send_ex(LIBSSH2_SESSION *session,
+ const char *path, int mode,
+ size_t size, long mtime,
+ long atime);
+LIBSSH2_API LIBSSH2_CHANNEL *
+libssh2_scp_send64(LIBSSH2_SESSION *session, const char *path, int mode,
+ libssh2_int64_t size, time_t mtime, time_t atime);
+
+#define libssh2_scp_send(session, path, mode, size) \
+ libssh2_scp_send_ex((session), (path), (mode), (size), 0, 0)
+
+/* DEPRECATED */
+LIBSSH2_API int libssh2_base64_decode(LIBSSH2_SESSION *session, char **dest,
+ unsigned int *dest_len,
+ const char *src, unsigned int src_len);
+
+LIBSSH2_API
+const char *libssh2_version(int req_version_num);
+
+typedef enum {
+ libssh2_no_crypto = 0,
+ libssh2_openssl,
+ libssh2_gcrypt,
+ libssh2_mbedtls,
+ libssh2_wincng,
+ libssh2_os400qc3
+} libssh2_crypto_engine_t;
+
+LIBSSH2_API
+libssh2_crypto_engine_t libssh2_crypto_engine(void);
+
+#define HAVE_LIBSSH2_KNOWNHOST_API 0x010101 /* since 1.1.1 */
+#define HAVE_LIBSSH2_VERSION_API 0x010100 /* libssh2_version since 1.1 */
+#define HAVE_LIBSSH2_CRYPTOENGINE_API 0x011100 /* libssh2_crypto_engine
+ since 1.11 */
+
+struct libssh2_knownhost {
+ unsigned int magic; /* magic stored by the library */
+ void *node; /* handle to the internal representation of this host */
+ char *name; /* this is NULL if no plain text host name exists */
+ char *key; /* key in base64/printable format */
+ int typemask;
+};
+
+/*
+ * libssh2_knownhost_init()
+ *
+ * Init a collection of known hosts. Returns the pointer to a collection.
+ *
+ */
+LIBSSH2_API LIBSSH2_KNOWNHOSTS *
+libssh2_knownhost_init(LIBSSH2_SESSION *session);
+
+/*
+ * libssh2_knownhost_add()
+ *
+ * Add a host and its associated key to the collection of known hosts.
+ *
+ * The 'type' argument specifies on what format the given host and keys are:
+ *
+ * plain - ascii "hostname.domain.tld"
+ * sha1 - SHA1( ) base64-encoded!
+ * custom - another hash
+ *
+ * If 'sha1' is selected as type, the salt must be provided to the salt
+ * argument. This too base64 encoded.
+ *
+ * The SHA-1 hash is what OpenSSH can be told to use in known_hosts files. If
+ * a custom type is used, salt is ignored and you must provide the host
+ * pre-hashed when checking for it in the libssh2_knownhost_check() function.
+ *
+ * The keylen parameter may be omitted (zero) if the key is provided as a
+ * NULL-terminated base64-encoded string.
+ */
+
+/* host format (2 bits) */
+#define LIBSSH2_KNOWNHOST_TYPE_MASK 0xffff
+#define LIBSSH2_KNOWNHOST_TYPE_PLAIN 1
+#define LIBSSH2_KNOWNHOST_TYPE_SHA1 2 /* always base64 encoded */
+#define LIBSSH2_KNOWNHOST_TYPE_CUSTOM 3
+
+/* key format (2 bits) */
+#define LIBSSH2_KNOWNHOST_KEYENC_MASK (3<<16)
+#define LIBSSH2_KNOWNHOST_KEYENC_RAW (1<<16)
+#define LIBSSH2_KNOWNHOST_KEYENC_BASE64 (2<<16)
+
+/* type of key (4 bits) */
+#define LIBSSH2_KNOWNHOST_KEY_MASK (15<<18)
+#define LIBSSH2_KNOWNHOST_KEY_SHIFT 18
+#define LIBSSH2_KNOWNHOST_KEY_RSA1 (1<<18)
+#define LIBSSH2_KNOWNHOST_KEY_SSHRSA (2<<18)
+#define LIBSSH2_KNOWNHOST_KEY_SSHDSS (3<<18) /* deprecated */
+#define LIBSSH2_KNOWNHOST_KEY_ECDSA_256 (4<<18)
+#define LIBSSH2_KNOWNHOST_KEY_ECDSA_384 (5<<18)
+#define LIBSSH2_KNOWNHOST_KEY_ECDSA_521 (6<<18)
+#define LIBSSH2_KNOWNHOST_KEY_ED25519 (7<<18)
+#define LIBSSH2_KNOWNHOST_KEY_UNKNOWN (15<<18)
+
+LIBSSH2_API int
+libssh2_knownhost_add(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *host,
+ const char *salt,
+ const char *key, size_t keylen, int typemask,
+ struct libssh2_knownhost **store);
+
+/*
+ * libssh2_knownhost_addc()
+ *
+ * Add a host and its associated key to the collection of known hosts.
+ *
+ * Takes a comment argument that may be NULL. A NULL comment indicates
+ * there is no comment and the entry will end directly after the key
+ * when written out to a file. An empty string "" comment will indicate an
+ * empty comment which will cause a single space to be written after the key.
+ *
+ * The 'type' argument specifies on what format the given host and keys are:
+ *
+ * plain - ascii "hostname.domain.tld"
+ * sha1 - SHA1( ) base64-encoded!
+ * custom - another hash
+ *
+ * If 'sha1' is selected as type, the salt must be provided to the salt
+ * argument. This too base64 encoded.
+ *
+ * The SHA-1 hash is what OpenSSH can be told to use in known_hosts files.
+ * If a custom type is used, salt is ignored and you must provide the host
+ * pre-hashed when checking for it in the libssh2_knownhost_check() function.
+ *
+ * The keylen parameter may be omitted (zero) if the key is provided as a
+ * NULL-terminated base64-encoded string.
+ */
+
+LIBSSH2_API int
+libssh2_knownhost_addc(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *host,
+ const char *salt,
+ const char *key, size_t keylen,
+ const char *comment, size_t commentlen, int typemask,
+ struct libssh2_knownhost **store);
+
+/*
+ * libssh2_knownhost_check()
+ *
+ * Check a host and its associated key against the collection of known hosts.
+ *
+ * The type is the type/format of the given host name.
+ *
+ * plain - ascii "hostname.domain.tld"
+ * custom - prehashed base64 encoded. Note that this cannot use any salts.
+ *
+ *
+ * 'knownhost' may be set to NULL if you don't care about that info.
+ *
+ * Returns:
+ *
+ * LIBSSH2_KNOWNHOST_CHECK_* values, see below
+ *
+ */
+
+#define LIBSSH2_KNOWNHOST_CHECK_MATCH 0
+#define LIBSSH2_KNOWNHOST_CHECK_MISMATCH 1
+#define LIBSSH2_KNOWNHOST_CHECK_NOTFOUND 2
+#define LIBSSH2_KNOWNHOST_CHECK_FAILURE 3
+
+LIBSSH2_API int
+libssh2_knownhost_check(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *host, const char *key, size_t keylen,
+ int typemask,
+ struct libssh2_knownhost **knownhost);
+
+/* this function is identital to the above one, but also takes a port
+ argument that allows libssh2 to do a better check */
+LIBSSH2_API int
+libssh2_knownhost_checkp(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *host, int port,
+ const char *key, size_t keylen,
+ int typemask,
+ struct libssh2_knownhost **knownhost);
+
+/*
+ * libssh2_knownhost_del()
+ *
+ * Remove a host from the collection of known hosts. The 'entry' struct is
+ * retrieved by a call to libssh2_knownhost_check().
+ *
+ */
+LIBSSH2_API int
+libssh2_knownhost_del(LIBSSH2_KNOWNHOSTS *hosts,
+ struct libssh2_knownhost *entry);
+
+/*
+ * libssh2_knownhost_free()
+ *
+ * Free an entire collection of known hosts.
+ *
+ */
+LIBSSH2_API void
+libssh2_knownhost_free(LIBSSH2_KNOWNHOSTS *hosts);
+
+/*
+ * libssh2_knownhost_readline()
+ *
+ * Pass in a line of a file of 'type'. It makes libssh2 read this line.
+ *
+ * LIBSSH2_KNOWNHOST_FILE_OPENSSH is the only supported type.
+ *
+ */
+LIBSSH2_API int
+libssh2_knownhost_readline(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *line, size_t len, int type);
+
+/*
+ * libssh2_knownhost_readfile()
+ *
+ * Add hosts+key pairs from a given file.
+ *
+ * Returns a negative value for error or number of successfully added hosts.
+ *
+ * This implementation currently only knows one 'type' (openssh), all others
+ * are reserved for future use.
+ */
+
+#define LIBSSH2_KNOWNHOST_FILE_OPENSSH 1
+
+LIBSSH2_API int
+libssh2_knownhost_readfile(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *filename, int type);
+
+/*
+ * libssh2_knownhost_writeline()
+ *
+ * Ask libssh2 to convert a known host to an output line for storage.
+ *
+ * Note that this function returns LIBSSH2_ERROR_BUFFER_TOO_SMALL if the given
+ * output buffer is too small to hold the desired output.
+ *
+ * This implementation currently only knows one 'type' (openssh), all others
+ * are reserved for future use.
+ *
+ */
+LIBSSH2_API int
+libssh2_knownhost_writeline(LIBSSH2_KNOWNHOSTS *hosts,
+ struct libssh2_knownhost *known,
+ char *buffer, size_t buflen,
+ size_t *outlen, /* the amount of written data */
+ int type);
+
+/*
+ * libssh2_knownhost_writefile()
+ *
+ * Write hosts+key pairs to a given file.
+ *
+ * This implementation currently only knows one 'type' (openssh), all others
+ * are reserved for future use.
+ */
+
+LIBSSH2_API int
+libssh2_knownhost_writefile(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *filename, int type);
+
+/*
+ * libssh2_knownhost_get()
+ *
+ * Traverse the internal list of known hosts. Pass NULL to 'prev' to get
+ * the first one. Or pass a pointer to the previously returned one to get the
+ * next.
+ *
+ * Returns:
+ * 0 if a fine host was stored in 'store'
+ * 1 if end of hosts
+ * [negative] on errors
+ */
+LIBSSH2_API int
+libssh2_knownhost_get(LIBSSH2_KNOWNHOSTS *hosts,
+ struct libssh2_knownhost **store,
+ struct libssh2_knownhost *prev);
+
+#define HAVE_LIBSSH2_AGENT_API 0x010202 /* since 1.2.2 */
+
+struct libssh2_agent_publickey {
+ unsigned int magic; /* magic stored by the library */
+ void *node; /* handle to the internal representation of key */
+ unsigned char *blob; /* public key blob */
+ size_t blob_len; /* length of the public key blob */
+ char *comment; /* comment in printable format */
+};
+
+/*
+ * libssh2_agent_init()
+ *
+ * Init an ssh-agent handle. Returns the pointer to the handle.
+ *
+ */
+LIBSSH2_API LIBSSH2_AGENT *
+libssh2_agent_init(LIBSSH2_SESSION *session);
+
+/*
+ * libssh2_agent_connect()
+ *
+ * Connect to an ssh-agent.
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int
+libssh2_agent_connect(LIBSSH2_AGENT *agent);
+
+/*
+ * libssh2_agent_list_identities()
+ *
+ * Request an ssh-agent to list identities.
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int
+libssh2_agent_list_identities(LIBSSH2_AGENT *agent);
+
+/*
+ * libssh2_agent_get_identity()
+ *
+ * Traverse the internal list of public keys. Pass NULL to 'prev' to get
+ * the first one. Or pass a pointer to the previously returned one to get the
+ * next.
+ *
+ * Returns:
+ * 0 if a fine public key was stored in 'store'
+ * 1 if end of public keys
+ * [negative] on errors
+ */
+LIBSSH2_API int
+libssh2_agent_get_identity(LIBSSH2_AGENT *agent,
+ struct libssh2_agent_publickey **store,
+ struct libssh2_agent_publickey *prev);
+
+/*
+ * libssh2_agent_userauth()
+ *
+ * Do publickey user authentication with the help of ssh-agent.
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int
+libssh2_agent_userauth(LIBSSH2_AGENT *agent,
+ const char *username,
+ struct libssh2_agent_publickey *identity);
+
+/*
+ * libssh2_agent_sign()
+ *
+ * Sign a payload using a system-installed ssh-agent.
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int
+libssh2_agent_sign(LIBSSH2_AGENT *agent,
+ struct libssh2_agent_publickey *identity,
+ unsigned char **sig,
+ size_t *s_len,
+ const unsigned char *data,
+ size_t d_len,
+ const char *method,
+ unsigned int method_len);
+
+/*
+ * libssh2_agent_disconnect()
+ *
+ * Close a connection to an ssh-agent.
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int
+libssh2_agent_disconnect(LIBSSH2_AGENT *agent);
+
+/*
+ * libssh2_agent_free()
+ *
+ * Free an ssh-agent handle. This function also frees the internal
+ * collection of public keys.
+ */
+LIBSSH2_API void
+libssh2_agent_free(LIBSSH2_AGENT *agent);
+
+/*
+ * libssh2_agent_set_identity_path()
+ *
+ * Allows a custom agent identity socket path beyond SSH_AUTH_SOCK env
+ *
+ */
+LIBSSH2_API void
+libssh2_agent_set_identity_path(LIBSSH2_AGENT *agent,
+ const char *path);
+
+/*
+ * libssh2_agent_get_identity_path()
+ *
+ * Returns the custom agent identity socket path if set
+ *
+ */
+LIBSSH2_API const char *
+libssh2_agent_get_identity_path(LIBSSH2_AGENT *agent);
+
+/*
+ * libssh2_keepalive_config()
+ *
+ * Set how often keepalive messages should be sent. WANT_REPLY
+ * indicates whether the keepalive messages should request a response
+ * from the server. INTERVAL is number of seconds that can pass
+ * without any I/O, use 0 (the default) to disable keepalives. To
+ * avoid some busy-loop corner-cases, if you specify an interval of 1
+ * it will be treated as 2.
+ *
+ * Note that non-blocking applications are responsible for sending the
+ * keepalive messages using libssh2_keepalive_send().
+ */
+LIBSSH2_API void libssh2_keepalive_config(LIBSSH2_SESSION *session,
+ int want_reply,
+ unsigned int interval);
+
+/*
+ * libssh2_keepalive_send()
+ *
+ * Send a keepalive message if needed. SECONDS_TO_NEXT indicates how
+ * many seconds you can sleep after this call before you need to call
+ * it again. Returns 0 on success, or LIBSSH2_ERROR_SOCKET_SEND on
+ * I/O errors.
+ */
+LIBSSH2_API int libssh2_keepalive_send(LIBSSH2_SESSION *session,
+ int *seconds_to_next);
+
+/* NOTE NOTE NOTE
+ libssh2_trace() has no function in builds that aren't built with debug
+ enabled
+ */
+LIBSSH2_API int libssh2_trace(LIBSSH2_SESSION *session, int bitmask);
+#define LIBSSH2_TRACE_TRANS (1<<1)
+#define LIBSSH2_TRACE_KEX (1<<2)
+#define LIBSSH2_TRACE_AUTH (1<<3)
+#define LIBSSH2_TRACE_CONN (1<<4)
+#define LIBSSH2_TRACE_SCP (1<<5)
+#define LIBSSH2_TRACE_SFTP (1<<6)
+#define LIBSSH2_TRACE_ERROR (1<<7)
+#define LIBSSH2_TRACE_PUBLICKEY (1<<8)
+#define LIBSSH2_TRACE_SOCKET (1<<9)
+
+typedef void (*libssh2_trace_handler_func)(LIBSSH2_SESSION*,
+ void *,
+ const char *,
+ size_t);
+LIBSSH2_API int libssh2_trace_sethandler(LIBSSH2_SESSION *session,
+ void *context,
+ libssh2_trace_handler_func callback);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !RC_INVOKED */
+
+#endif /* LIBSSH2_H */
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/libssh2_publickey.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/libssh2_publickey.h
new file mode 100644
index 0000000..566acd6
--- /dev/null
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/libssh2_publickey.h
@@ -0,0 +1,128 @@
+/* Copyright (C) Sara Golemon
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
+ * that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * Neither the name of the copyright holder nor the names
+ * of any other contributors may be used to endorse or
+ * promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ */
+
+/* Note: This include file is only needed for using the
+ * publickey SUBSYSTEM which is not the same as publickey
+ * authentication. For authentication you only need libssh2.h
+ *
+ * For more information on the publickey subsystem,
+ * refer to IETF draft: secsh-publickey
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef LIBSSH2_PUBLICKEY_H
+#define LIBSSH2_PUBLICKEY_H 1
+
+#include "libssh2.h"
+
+typedef struct _LIBSSH2_PUBLICKEY LIBSSH2_PUBLICKEY;
+
+typedef struct _libssh2_publickey_attribute {
+ const char *name;
+ unsigned long name_len;
+ const char *value;
+ unsigned long value_len;
+ char mandatory;
+} libssh2_publickey_attribute;
+
+typedef struct _libssh2_publickey_list {
+ unsigned char *packet; /* For freeing */
+
+ const unsigned char *name;
+ unsigned long name_len;
+ const unsigned char *blob;
+ unsigned long blob_len;
+ unsigned long num_attrs;
+ libssh2_publickey_attribute *attrs; /* free me */
+} libssh2_publickey_list;
+
+/* Generally use the first macro here, but if both name and value are string
+ literals, you can use _fast() to take advantage of preprocessing */
+#define libssh2_publickey_attribute(name, value, mandatory) \
+ { (name), strlen(name), (value), strlen(value), (mandatory) },
+#define libssh2_publickey_attribute_fast(name, value, mandatory) \
+ { (name), sizeof(name) - 1, (value), sizeof(value) - 1, (mandatory) },
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Publickey Subsystem */
+LIBSSH2_API LIBSSH2_PUBLICKEY *
+libssh2_publickey_init(LIBSSH2_SESSION *session);
+
+LIBSSH2_API int
+libssh2_publickey_add_ex(LIBSSH2_PUBLICKEY *pkey,
+ const unsigned char *name,
+ unsigned long name_len,
+ const unsigned char *blob,
+ unsigned long blob_len, char overwrite,
+ unsigned long num_attrs,
+ const libssh2_publickey_attribute attrs[]);
+#define libssh2_publickey_add(pkey, name, blob, blob_len, overwrite, \
+ num_attrs, attrs) \
+ libssh2_publickey_add_ex((pkey), \
+ (name), strlen(name), \
+ (blob), (blob_len), \
+ (overwrite), (num_attrs), (attrs))
+
+LIBSSH2_API int libssh2_publickey_remove_ex(LIBSSH2_PUBLICKEY *pkey,
+ const unsigned char *name,
+ unsigned long name_len,
+ const unsigned char *blob,
+ unsigned long blob_len);
+#define libssh2_publickey_remove(pkey, name, blob, blob_len) \
+ libssh2_publickey_remove_ex((pkey), \
+ (name), strlen(name), \
+ (blob), (blob_len))
+
+LIBSSH2_API int
+libssh2_publickey_list_fetch(LIBSSH2_PUBLICKEY *pkey,
+ unsigned long *num_keys,
+ libssh2_publickey_list **pkey_list);
+LIBSSH2_API void
+libssh2_publickey_list_free(LIBSSH2_PUBLICKEY *pkey,
+ libssh2_publickey_list *pkey_list);
+
+LIBSSH2_API int libssh2_publickey_shutdown(LIBSSH2_PUBLICKEY *pkey);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* LIBSSH2_PUBLICKEY_H */
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/libssh2_sftp.h b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/libssh2_sftp.h
new file mode 100644
index 0000000..ab7b0af
--- /dev/null
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/libssh2_sftp.h
@@ -0,0 +1,382 @@
+/* Copyright (C) Sara Golemon
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
+ * that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * Neither the name of the copyright holder nor the names
+ * of any other contributors may be used to endorse or
+ * promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef LIBSSH2_SFTP_H
+#define LIBSSH2_SFTP_H 1
+
+#include "libssh2.h"
+
+#ifndef _WIN32
+#include
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Note: Version 6 was documented at the time of writing
+ * However it was marked as "DO NOT IMPLEMENT" due to pending changes
+ *
+ * Let's start with Version 3 (The version found in OpenSSH) and go from there
+ */
+#define LIBSSH2_SFTP_VERSION 3
+
+typedef struct _LIBSSH2_SFTP LIBSSH2_SFTP;
+typedef struct _LIBSSH2_SFTP_HANDLE LIBSSH2_SFTP_HANDLE;
+typedef struct _LIBSSH2_SFTP_ATTRIBUTES LIBSSH2_SFTP_ATTRIBUTES;
+typedef struct _LIBSSH2_SFTP_STATVFS LIBSSH2_SFTP_STATVFS;
+
+/* Flags for open_ex() */
+#define LIBSSH2_SFTP_OPENFILE 0
+#define LIBSSH2_SFTP_OPENDIR 1
+
+/* Flags for rename_ex() */
+#define LIBSSH2_SFTP_RENAME_OVERWRITE 0x00000001
+#define LIBSSH2_SFTP_RENAME_ATOMIC 0x00000002
+#define LIBSSH2_SFTP_RENAME_NATIVE 0x00000004
+
+/* Flags for stat_ex() */
+#define LIBSSH2_SFTP_STAT 0
+#define LIBSSH2_SFTP_LSTAT 1
+#define LIBSSH2_SFTP_SETSTAT 2
+
+/* Flags for symlink_ex() */
+#define LIBSSH2_SFTP_SYMLINK 0
+#define LIBSSH2_SFTP_READLINK 1
+#define LIBSSH2_SFTP_REALPATH 2
+
+/* Flags for sftp_mkdir() */
+#define LIBSSH2_SFTP_DEFAULT_MODE -1
+
+/* SFTP attribute flag bits */
+#define LIBSSH2_SFTP_ATTR_SIZE 0x00000001
+#define LIBSSH2_SFTP_ATTR_UIDGID 0x00000002
+#define LIBSSH2_SFTP_ATTR_PERMISSIONS 0x00000004
+#define LIBSSH2_SFTP_ATTR_ACMODTIME 0x00000008
+#define LIBSSH2_SFTP_ATTR_EXTENDED 0x80000000
+
+/* SFTP statvfs flag bits */
+#define LIBSSH2_SFTP_ST_RDONLY 0x00000001
+#define LIBSSH2_SFTP_ST_NOSUID 0x00000002
+
+struct _LIBSSH2_SFTP_ATTRIBUTES {
+ /* If flags & ATTR_* bit is set, then the value in this struct will be
+ * meaningful Otherwise it should be ignored
+ */
+ unsigned long flags;
+
+ libssh2_uint64_t filesize;
+ unsigned long uid, gid;
+ unsigned long permissions;
+ unsigned long atime, mtime;
+};
+
+struct _LIBSSH2_SFTP_STATVFS {
+ libssh2_uint64_t f_bsize; /* file system block size */
+ libssh2_uint64_t f_frsize; /* fragment size */
+ libssh2_uint64_t f_blocks; /* size of fs in f_frsize units */
+ libssh2_uint64_t f_bfree; /* # free blocks */
+ libssh2_uint64_t f_bavail; /* # free blocks for non-root */
+ libssh2_uint64_t f_files; /* # inodes */
+ libssh2_uint64_t f_ffree; /* # free inodes */
+ libssh2_uint64_t f_favail; /* # free inodes for non-root */
+ libssh2_uint64_t f_fsid; /* file system ID */
+ libssh2_uint64_t f_flag; /* mount flags */
+ libssh2_uint64_t f_namemax; /* maximum filename length */
+};
+
+/* SFTP filetypes */
+#define LIBSSH2_SFTP_TYPE_REGULAR 1
+#define LIBSSH2_SFTP_TYPE_DIRECTORY 2
+#define LIBSSH2_SFTP_TYPE_SYMLINK 3
+#define LIBSSH2_SFTP_TYPE_SPECIAL 4
+#define LIBSSH2_SFTP_TYPE_UNKNOWN 5
+#define LIBSSH2_SFTP_TYPE_SOCKET 6
+#define LIBSSH2_SFTP_TYPE_CHAR_DEVICE 7
+#define LIBSSH2_SFTP_TYPE_BLOCK_DEVICE 8
+#define LIBSSH2_SFTP_TYPE_FIFO 9
+
+/*
+ * Reproduce the POSIX file modes here for systems that are not POSIX
+ * compliant.
+ *
+ * These is used in "permissions" of "struct _LIBSSH2_SFTP_ATTRIBUTES"
+ */
+/* File type */
+#define LIBSSH2_SFTP_S_IFMT 0170000 /* type of file mask */
+#define LIBSSH2_SFTP_S_IFIFO 0010000 /* named pipe (fifo) */
+#define LIBSSH2_SFTP_S_IFCHR 0020000 /* character special */
+#define LIBSSH2_SFTP_S_IFDIR 0040000 /* directory */
+#define LIBSSH2_SFTP_S_IFBLK 0060000 /* block special */
+#define LIBSSH2_SFTP_S_IFREG 0100000 /* regular */
+#define LIBSSH2_SFTP_S_IFLNK 0120000 /* symbolic link */
+#define LIBSSH2_SFTP_S_IFSOCK 0140000 /* socket */
+
+/* File mode */
+/* Read, write, execute/search by owner */
+#define LIBSSH2_SFTP_S_IRWXU 0000700 /* RWX mask for owner */
+#define LIBSSH2_SFTP_S_IRUSR 0000400 /* R for owner */
+#define LIBSSH2_SFTP_S_IWUSR 0000200 /* W for owner */
+#define LIBSSH2_SFTP_S_IXUSR 0000100 /* X for owner */
+/* Read, write, execute/search by group */
+#define LIBSSH2_SFTP_S_IRWXG 0000070 /* RWX mask for group */
+#define LIBSSH2_SFTP_S_IRGRP 0000040 /* R for group */
+#define LIBSSH2_SFTP_S_IWGRP 0000020 /* W for group */
+#define LIBSSH2_SFTP_S_IXGRP 0000010 /* X for group */
+/* Read, write, execute/search by others */
+#define LIBSSH2_SFTP_S_IRWXO 0000007 /* RWX mask for other */
+#define LIBSSH2_SFTP_S_IROTH 0000004 /* R for other */
+#define LIBSSH2_SFTP_S_IWOTH 0000002 /* W for other */
+#define LIBSSH2_SFTP_S_IXOTH 0000001 /* X for other */
+
+/* macros to check for specific file types, added in 1.2.5 */
+#define LIBSSH2_SFTP_S_ISLNK(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFLNK)
+#define LIBSSH2_SFTP_S_ISREG(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFREG)
+#define LIBSSH2_SFTP_S_ISDIR(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFDIR)
+#define LIBSSH2_SFTP_S_ISCHR(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFCHR)
+#define LIBSSH2_SFTP_S_ISBLK(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFBLK)
+#define LIBSSH2_SFTP_S_ISFIFO(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFIFO)
+#define LIBSSH2_SFTP_S_ISSOCK(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFSOCK)
+
+/* SFTP File Transfer Flags -- (e.g. flags parameter to sftp_open())
+ * Danger will robinson... APPEND doesn't have any effect on OpenSSH servers */
+#define LIBSSH2_FXF_READ 0x00000001
+#define LIBSSH2_FXF_WRITE 0x00000002
+#define LIBSSH2_FXF_APPEND 0x00000004
+#define LIBSSH2_FXF_CREAT 0x00000008
+#define LIBSSH2_FXF_TRUNC 0x00000010
+#define LIBSSH2_FXF_EXCL 0x00000020
+
+/* SFTP Status Codes (returned by libssh2_sftp_last_error() ) */
+#define LIBSSH2_FX_OK 0UL
+#define LIBSSH2_FX_EOF 1UL
+#define LIBSSH2_FX_NO_SUCH_FILE 2UL
+#define LIBSSH2_FX_PERMISSION_DENIED 3UL
+#define LIBSSH2_FX_FAILURE 4UL
+#define LIBSSH2_FX_BAD_MESSAGE 5UL
+#define LIBSSH2_FX_NO_CONNECTION 6UL
+#define LIBSSH2_FX_CONNECTION_LOST 7UL
+#define LIBSSH2_FX_OP_UNSUPPORTED 8UL
+#define LIBSSH2_FX_INVALID_HANDLE 9UL
+#define LIBSSH2_FX_NO_SUCH_PATH 10UL
+#define LIBSSH2_FX_FILE_ALREADY_EXISTS 11UL
+#define LIBSSH2_FX_WRITE_PROTECT 12UL
+#define LIBSSH2_FX_NO_MEDIA 13UL
+#define LIBSSH2_FX_NO_SPACE_ON_FILESYSTEM 14UL
+#define LIBSSH2_FX_QUOTA_EXCEEDED 15UL
+#define LIBSSH2_FX_UNKNOWN_PRINCIPLE 16UL /* Initial mis-spelling */
+#define LIBSSH2_FX_UNKNOWN_PRINCIPAL 16UL
+#define LIBSSH2_FX_LOCK_CONFlICT 17UL /* Initial mis-spelling */
+#define LIBSSH2_FX_LOCK_CONFLICT 17UL
+#define LIBSSH2_FX_DIR_NOT_EMPTY 18UL
+#define LIBSSH2_FX_NOT_A_DIRECTORY 19UL
+#define LIBSSH2_FX_INVALID_FILENAME 20UL
+#define LIBSSH2_FX_LINK_LOOP 21UL
+
+/* Returned by any function that would block during a read/write operation */
+#define LIBSSH2SFTP_EAGAIN LIBSSH2_ERROR_EAGAIN
+
+/* SFTP API */
+LIBSSH2_API LIBSSH2_SFTP *libssh2_sftp_init(LIBSSH2_SESSION *session);
+LIBSSH2_API int libssh2_sftp_shutdown(LIBSSH2_SFTP *sftp);
+LIBSSH2_API unsigned long libssh2_sftp_last_error(LIBSSH2_SFTP *sftp);
+LIBSSH2_API LIBSSH2_CHANNEL *libssh2_sftp_get_channel(LIBSSH2_SFTP *sftp);
+
+/* File / Directory Ops */
+LIBSSH2_API LIBSSH2_SFTP_HANDLE *
+libssh2_sftp_open_ex(LIBSSH2_SFTP *sftp,
+ const char *filename,
+ unsigned int filename_len,
+ unsigned long flags,
+ long mode, int open_type);
+#define libssh2_sftp_open(sftp, filename, flags, mode) \
+ libssh2_sftp_open_ex((sftp), \
+ (filename), (unsigned int)strlen(filename), \
+ (flags), (mode), LIBSSH2_SFTP_OPENFILE)
+#define libssh2_sftp_opendir(sftp, path) \
+ libssh2_sftp_open_ex((sftp), \
+ (path), (unsigned int)strlen(path), \
+ 0, 0, LIBSSH2_SFTP_OPENDIR)
+LIBSSH2_API LIBSSH2_SFTP_HANDLE *
+libssh2_sftp_open_ex_r(LIBSSH2_SFTP *sftp,
+ const char *filename,
+ size_t filename_len,
+ unsigned long flags,
+ long mode, int open_type,
+ LIBSSH2_SFTP_ATTRIBUTES *attrs);
+#define libssh2_sftp_open_r(sftp, filename, flags, mode, attrs) \
+ libssh2_sftp_open_ex_r((sftp), (filename), strlen(filename), \
+ (flags), (mode), LIBSSH2_SFTP_OPENFILE, \
+ (attrs))
+
+LIBSSH2_API ssize_t libssh2_sftp_read(LIBSSH2_SFTP_HANDLE *handle,
+ char *buffer, size_t buffer_maxlen);
+
+LIBSSH2_API int libssh2_sftp_readdir_ex(LIBSSH2_SFTP_HANDLE *handle, \
+ char *buffer, size_t buffer_maxlen,
+ char *longentry,
+ size_t longentry_maxlen,
+ LIBSSH2_SFTP_ATTRIBUTES *attrs);
+#define libssh2_sftp_readdir(handle, buffer, buffer_maxlen, attrs) \
+ libssh2_sftp_readdir_ex((handle), (buffer), (buffer_maxlen), NULL, 0, \
+ (attrs))
+
+LIBSSH2_API ssize_t libssh2_sftp_write(LIBSSH2_SFTP_HANDLE *handle,
+ const char *buffer, size_t count);
+LIBSSH2_API int libssh2_sftp_fsync(LIBSSH2_SFTP_HANDLE *handle);
+
+LIBSSH2_API int libssh2_sftp_close_handle(LIBSSH2_SFTP_HANDLE *handle);
+#define libssh2_sftp_close(handle) libssh2_sftp_close_handle(handle)
+#define libssh2_sftp_closedir(handle) libssh2_sftp_close_handle(handle)
+
+LIBSSH2_API void libssh2_sftp_seek(LIBSSH2_SFTP_HANDLE *handle, size_t offset);
+LIBSSH2_API void libssh2_sftp_seek64(LIBSSH2_SFTP_HANDLE *handle,
+ libssh2_uint64_t offset);
+#define libssh2_sftp_rewind(handle) libssh2_sftp_seek64((handle), 0)
+
+LIBSSH2_API size_t libssh2_sftp_tell(LIBSSH2_SFTP_HANDLE *handle);
+LIBSSH2_API libssh2_uint64_t libssh2_sftp_tell64(LIBSSH2_SFTP_HANDLE *handle);
+
+LIBSSH2_API int libssh2_sftp_fstat_ex(LIBSSH2_SFTP_HANDLE *handle,
+ LIBSSH2_SFTP_ATTRIBUTES *attrs,
+ int setstat);
+#define libssh2_sftp_fstat(handle, attrs) \
+ libssh2_sftp_fstat_ex((handle), (attrs), 0)
+#define libssh2_sftp_fsetstat(handle, attrs) \
+ libssh2_sftp_fstat_ex((handle), (attrs), 1)
+
+/* Miscellaneous Ops */
+LIBSSH2_API int libssh2_sftp_rename_ex(LIBSSH2_SFTP *sftp,
+ const char *source_filename,
+ unsigned int srouce_filename_len,
+ const char *dest_filename,
+ unsigned int dest_filename_len,
+ long flags);
+#define libssh2_sftp_rename(sftp, sourcefile, destfile) \
+ libssh2_sftp_rename_ex((sftp), \
+ (sourcefile), (unsigned int)strlen(sourcefile), \
+ (destfile), (unsigned int)strlen(destfile), \
+ LIBSSH2_SFTP_RENAME_OVERWRITE | \
+ LIBSSH2_SFTP_RENAME_ATOMIC | \
+ LIBSSH2_SFTP_RENAME_NATIVE)
+
+LIBSSH2_API int libssh2_sftp_posix_rename_ex(LIBSSH2_SFTP *sftp,
+ const char *source_filename,
+ size_t srouce_filename_len,
+ const char *dest_filename,
+ size_t dest_filename_len);
+#define libssh2_sftp_posix_rename(sftp, sourcefile, destfile) \
+ libssh2_sftp_posix_rename_ex((sftp), (sourcefile), strlen(sourcefile), \
+ (destfile), strlen(destfile))
+
+LIBSSH2_API int libssh2_sftp_unlink_ex(LIBSSH2_SFTP *sftp,
+ const char *filename,
+ unsigned int filename_len);
+#define libssh2_sftp_unlink(sftp, filename) \
+ libssh2_sftp_unlink_ex((sftp), (filename), (unsigned int)strlen(filename))
+
+LIBSSH2_API int libssh2_sftp_fstatvfs(LIBSSH2_SFTP_HANDLE *handle,
+ LIBSSH2_SFTP_STATVFS *st);
+
+LIBSSH2_API int libssh2_sftp_statvfs(LIBSSH2_SFTP *sftp,
+ const char *path,
+ size_t path_len,
+ LIBSSH2_SFTP_STATVFS *st);
+
+LIBSSH2_API int libssh2_sftp_mkdir_ex(LIBSSH2_SFTP *sftp,
+ const char *path,
+ unsigned int path_len, long mode);
+#define libssh2_sftp_mkdir(sftp, path, mode) \
+ libssh2_sftp_mkdir_ex((sftp), (path), (unsigned int)strlen(path), (mode))
+
+LIBSSH2_API int libssh2_sftp_rmdir_ex(LIBSSH2_SFTP *sftp,
+ const char *path,
+ unsigned int path_len);
+#define libssh2_sftp_rmdir(sftp, path) \
+ libssh2_sftp_rmdir_ex((sftp), (path), (unsigned int)strlen(path))
+
+LIBSSH2_API int libssh2_sftp_stat_ex(LIBSSH2_SFTP *sftp,
+ const char *path,
+ unsigned int path_len,
+ int stat_type,
+ LIBSSH2_SFTP_ATTRIBUTES *attrs);
+#define libssh2_sftp_stat(sftp, path, attrs) \
+ libssh2_sftp_stat_ex((sftp), (path), (unsigned int)strlen(path), \
+ LIBSSH2_SFTP_STAT, (attrs))
+#define libssh2_sftp_lstat(sftp, path, attrs) \
+ libssh2_sftp_stat_ex((sftp), (path), (unsigned int)strlen(path), \
+ LIBSSH2_SFTP_LSTAT, (attrs))
+#define libssh2_sftp_setstat(sftp, path, attrs) \
+ libssh2_sftp_stat_ex((sftp), (path), (unsigned int)strlen(path), \
+ LIBSSH2_SFTP_SETSTAT, (attrs))
+
+LIBSSH2_API int libssh2_sftp_symlink_ex(LIBSSH2_SFTP *sftp,
+ const char *path,
+ unsigned int path_len,
+ char *target,
+ unsigned int target_len,
+ int link_type);
+#define libssh2_sftp_symlink(sftp, orig, linkpath) \
+ libssh2_sftp_symlink_ex((sftp), \
+ (orig), (unsigned int)strlen(orig), \
+ (linkpath), (unsigned int)strlen(linkpath), \
+ LIBSSH2_SFTP_SYMLINK)
+#define libssh2_sftp_readlink(sftp, path, target, maxlen) \
+ libssh2_sftp_symlink_ex((sftp), \
+ (path), (unsigned int)strlen(path), \
+ (target), (maxlen), \
+ LIBSSH2_SFTP_READLINK)
+#define libssh2_sftp_realpath(sftp, path, target, maxlen) \
+ libssh2_sftp_symlink_ex((sftp), \
+ (path), (unsigned int)strlen(path), \
+ (target), (maxlen), \
+ LIBSSH2_SFTP_REALPATH)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* LIBSSH2_SFTP_H */
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/module.modulemap b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/module.modulemap
index fe5729d..3a9a9ba 100644
--- a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/module.modulemap
+++ b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/Headers/module.modulemap
@@ -28,4 +28,13 @@ module Clibgit2 {
export *
module * { export * }
}
+
+ // Expose libssh2 headers
+ explicit module libssh2 {
+ header "libssh2.h"
+ header "libssh2_sftp.h"
+ header "libssh2_publickey.h"
+
+ export *
+ }
}
diff --git a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/libgit2_all.a b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/libgit2_all.a
index 3f527fb..765a929 100644
Binary files a/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/libgit2_all.a and b/Clibgit2.xcframework/ios-arm64_x86_64-maccatalyst/libgit2_all.a differ
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2.h
index 2961cc3..3457e5f 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2.h
@@ -28,6 +28,7 @@
#include "git2/diff.h"
#include "git2/email.h"
#include "git2/errors.h"
+#include "git2/experimental.h"
#include "git2/filter.h"
#include "git2/global.h"
#include "git2/graph.h"
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/annotated_commit.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/annotated_commit.h
index 3b7103f..04f3b1c 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/annotated_commit.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/annotated_commit.h
@@ -13,9 +13,16 @@
/**
* @file git2/annotated_commit.h
- * @brief Git annotated commit routines
+ * @brief A commit and information about how it was looked up by the user.
* @defgroup git_annotated_commit Git annotated commit routines
* @ingroup Git
+ *
+ * An "annotated commit" is a commit that contains information about
+ * how the commit was resolved, which can be used for maintaining the
+ * user's "intent" through commands like merge and rebase. For example,
+ * if a user wants to "merge HEAD" then an annotated commit is used to
+ * both contain the HEAD commit _and_ the fact that it was resolved as
+ * the HEAD ref.
* @{
*/
GIT_BEGIN_DECL
@@ -25,7 +32,7 @@ GIT_BEGIN_DECL
* The resulting git_annotated_commit must be freed with
* `git_annotated_commit_free`.
*
- * @param out pointer to store the git_annotated_commit result in
+ * @param[out] out pointer to store the git_annotated_commit result in
* @param repo repository that contains the given reference
* @param ref reference to use to lookup the git_annotated_commit
* @return 0 on success or error code
@@ -40,7 +47,7 @@ GIT_EXTERN(int) git_annotated_commit_from_ref(
* The resulting git_annotated_commit must be freed with
* `git_annotated_commit_free`.
*
- * @param out pointer to store the git_annotated_commit result in
+ * @param[out] out pointer to store the git_annotated_commit result in
* @param repo repository that contains the given commit
* @param branch_name name of the (remote) branch
* @param remote_url url of the remote
@@ -67,7 +74,7 @@ GIT_EXTERN(int) git_annotated_commit_from_fetchhead(
* most specific function (eg `git_annotated_commit_from_ref`)
* instead of this one when that data is known.
*
- * @param out pointer to store the git_annotated_commit result in
+ * @param[out] out pointer to store the git_annotated_commit result in
* @param repo repository that contains the given commit
* @param id the commit object id to lookup
* @return 0 on success or error code
@@ -84,7 +91,7 @@ GIT_EXTERN(int) git_annotated_commit_lookup(
* http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for
* information on the syntax accepted.
*
- * @param out pointer to store the git_annotated_commit result in
+ * @param[out] out pointer to store the git_annotated_commit result in
* @param repo repository that contains the given commit
* @param revspec the extended sha syntax string to use to lookup the commit
* @return 0 on success or error code
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/apply.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/apply.h
index bc637df..7ab939d 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/apply.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/apply.h
@@ -14,9 +14,12 @@
/**
* @file git2/apply.h
- * @brief Git patch application routines
+ * @brief Apply patches to the working directory or index
* @defgroup git_apply Git patch application routines
* @ingroup Git
+ *
+ * Mechanisms to apply a patch to the index, the working directory,
+ * or both.
* @{
*/
GIT_BEGIN_DECL
@@ -32,6 +35,8 @@ GIT_BEGIN_DECL
*
* @param delta The delta to be applied
* @param payload User-specified payload
+ * @return 0 if the delta is applied, < 0 if the apply process will be aborted
+ * or > 0 if the delta will not be applied.
*/
typedef int GIT_CALLBACK(git_apply_delta_cb)(
const git_diff_delta *delta,
@@ -48,27 +53,44 @@ typedef int GIT_CALLBACK(git_apply_delta_cb)(
*
* @param hunk The hunk to be applied
* @param payload User-specified payload
+ * @return 0 if the hunk is applied, < 0 if the apply process will be aborted
+ * or > 0 if the hunk will not be applied.
*/
typedef int GIT_CALLBACK(git_apply_hunk_cb)(
const git_diff_hunk *hunk,
void *payload);
-/** Flags controlling the behavior of git_apply */
+/**
+ * Flags controlling the behavior of `git_apply`.
+ *
+ * When the callback:
+ * - returns < 0, the apply process will be aborted.
+ * - returns > 0, the hunk will not be applied, but the apply process
+ * continues
+ * - returns 0, the hunk is applied, and the apply process continues.
+ */
typedef enum {
/**
* Don't actually make changes, just test that the patch applies.
* This is the equivalent of `git apply --check`.
*/
- GIT_APPLY_CHECK = (1 << 0),
+ GIT_APPLY_CHECK = (1 << 0)
} git_apply_flags_t;
/**
- * Apply options structure
+ * Apply options structure.
+ *
+ * When the callback:
+ * - returns < 0, the apply process will be aborted.
+ * - returns > 0, the hunk will not be applied, but the apply process
+ * continues
+ * - returns 0, the hunk is applied, and the apply process continues.
*
* Initialize with `GIT_APPLY_OPTIONS_INIT`. Alternatively, you can
* use `git_apply_options_init`.
*
- * @see git_apply_to_tree, git_apply
+ * @see git_apply_to_tree
+ * @see git_apply
*/
typedef struct {
unsigned int version; /**< The version */
@@ -79,16 +101,29 @@ typedef struct {
/** When applying a patch, callback that will be made per hunk. */
git_apply_hunk_cb hunk_cb;
- /** Payload passed to both delta_cb & hunk_cb. */
+ /** Payload passed to both `delta_cb` & `hunk_cb`. */
void *payload;
- /** Bitmask of git_apply_flags_t */
+ /** Bitmask of `git_apply_flags_t` */
unsigned int flags;
} git_apply_options;
+/** Current version for the `git_apply_options` structure */
#define GIT_APPLY_OPTIONS_VERSION 1
+
+/** Static constructor for `git_apply_options` */
#define GIT_APPLY_OPTIONS_INIT {GIT_APPLY_OPTIONS_VERSION}
+/**
+ * Initialize git_apply_options structure
+ *
+ * Initialize a `git_apply_options` with default values. Equivalent to creating
+ * an instance with GIT_APPLY_OPTIONS_INIT.
+ *
+ * @param opts The `git_apply_options` struct to initialize.
+ * @param version The struct version; pass `GIT_APPLY_OPTIONS_VERSION`
+ * @return 0 on success or -1 on failure.
+ */
GIT_EXTERN(int) git_apply_options_init(git_apply_options *opts, unsigned int version);
/**
@@ -127,7 +162,7 @@ typedef enum {
* Apply the patch to both the working directory and the index.
* This is the equivalent of `git apply --index`.
*/
- GIT_APPLY_LOCATION_BOTH = 2,
+ GIT_APPLY_LOCATION_BOTH = 2
} git_apply_location_t;
/**
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/attr.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/attr.h
index 3891a0c..e5216fe 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/attr.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/attr.h
@@ -12,9 +12,13 @@
/**
* @file git2/attr.h
- * @brief Git attribute management routines
+ * @brief Attribute management routines
* @defgroup git_attr Git attribute management routines
* @ingroup Git
+ *
+ * Attributes specify additional information about how git should
+ * handle particular paths - for example, they may indicate whether
+ * a particular filter is applied, like LFS or line ending conversions.
* @{
*/
GIT_BEGIN_DECL
@@ -83,7 +87,7 @@ typedef enum {
GIT_ATTR_VALUE_UNSPECIFIED = 0, /**< The attribute has been left unspecified */
GIT_ATTR_VALUE_TRUE, /**< The attribute has been set */
GIT_ATTR_VALUE_FALSE, /**< The attribute has been unset */
- GIT_ATTR_VALUE_STRING, /**< This attribute has a value */
+ GIT_ATTR_VALUE_STRING /**< This attribute has a value */
} git_attr_value_t;
/**
@@ -114,16 +118,18 @@ GIT_EXTERN(git_attr_value_t) git_attr_value(const char *attr);
* use index only for creating archives or for a bare repo (if an
* index has been specified for the bare repo).
*/
+
+/** Examine attribute in working directory, then index */
#define GIT_ATTR_CHECK_FILE_THEN_INDEX 0
+/** Examine attribute in index, then working directory */
#define GIT_ATTR_CHECK_INDEX_THEN_FILE 1
-#define GIT_ATTR_CHECK_INDEX_ONLY 2
+/** Examine attributes only in the index */
+#define GIT_ATTR_CHECK_INDEX_ONLY 2
/**
* Check attribute flags: controlling extended attribute behavior.
*
* Normally, attribute checks include looking in the /etc (or system
- * equivalent) directory for a `gitattributes` file. Passing this
- * flag will cause attribute checks to ignore that file.
* equivalent) directory for a `gitattributes` file. Passing the
* `GIT_ATTR_CHECK_NO_SYSTEM` flag will cause attribute checks to
* ignore that file.
@@ -134,8 +140,12 @@ GIT_EXTERN(git_attr_value_t) git_attr_value(const char *attr);
* Passing the `GIT_ATTR_CHECK_INCLUDE_COMMIT` flag will use attributes
* from a `.gitattributes` file in a specific commit.
*/
+
+/** Ignore system attributes */
#define GIT_ATTR_CHECK_NO_SYSTEM (1 << 2)
+/** Honor `.gitattributes` in the HEAD revision */
#define GIT_ATTR_CHECK_INCLUDE_HEAD (1 << 3)
+/** Honor `.gitattributes` in a specific commit */
#define GIT_ATTR_CHECK_INCLUDE_COMMIT (1 << 4)
/**
@@ -160,7 +170,10 @@ typedef struct {
git_oid attr_commit_id;
} git_attr_options;
+/** Current version for the `git_attr_options` structure */
#define GIT_ATTR_OPTIONS_VERSION 1
+
+/** Static constructor for `git_attr_options` */
#define GIT_ATTR_OPTIONS_INIT {GIT_ATTR_OPTIONS_VERSION}
/**
@@ -177,6 +190,7 @@ typedef struct {
* not have to exist, but if it does not, then it will be
* treated as a plain file (not a directory).
* @param name The name of the attribute to look up.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_attr_get(
const char **value_out,
@@ -199,6 +213,7 @@ GIT_EXTERN(int) git_attr_get(
* not have to exist, but if it does not, then it will be
* treated as a plain file (not a directory).
* @param name The name of the attribute to look up.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_attr_get_ext(
const char **value_out,
@@ -235,6 +250,7 @@ GIT_EXTERN(int) git_attr_get_ext(
* it will be treated as a plain file (i.e. not a directory).
* @param num_attr The number of attributes being looked up
* @param names An array of num_attr strings containing attribute names.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_attr_get_many(
const char **values_out,
@@ -259,6 +275,7 @@ GIT_EXTERN(int) git_attr_get_many(
* it will be treated as a plain file (i.e. not a directory).
* @param num_attr The number of attributes being looked up
* @param names An array of num_attr strings containing attribute names.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_attr_get_many_ext(
const char **values_out,
@@ -344,11 +361,16 @@ GIT_EXTERN(int) git_attr_cache_flush(
* Add a macro definition.
*
* Macros will automatically be loaded from the top level `.gitattributes`
- * file of the repository (plus the build-in "binary" macro). This
+ * file of the repository (plus the built-in "binary" macro). This
* function allows you to add others. For example, to add the default
* macro, you would call:
*
* git_attr_add_macro(repo, "binary", "-diff -crlf");
+ *
+ * @param repo The repository to add the macro in.
+ * @param name The name of the macro.
+ * @param values The value for the macro.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_attr_add_macro(
git_repository *repo,
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/blame.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/blame.h
index d193ce1..f3e6692 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/blame.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/blame.h
@@ -13,9 +13,14 @@
/**
* @file git2/blame.h
- * @brief Git blame routines
+ * @brief Specify a file's most recent changes per-line
* @defgroup git_blame Git blame routines
* @ingroup Git
+ *
+ * Producing a "blame" (or "annotated history") decorates individual
+ * lines in a file with the commit that introduced that particular line
+ * of changes. This can be useful to indicate when and why a particular
+ * change was made.
* @{
*/
GIT_BEGIN_DECL
@@ -73,7 +78,7 @@ typedef enum {
GIT_BLAME_USE_MAILMAP = (1<<5),
/** Ignore whitespace differences */
- GIT_BLAME_IGNORE_WHITESPACE = (1<<6),
+ GIT_BLAME_IGNORE_WHITESPACE = (1<<6)
} git_blame_flag_t;
/**
@@ -87,7 +92,7 @@ typedef struct git_blame_options {
unsigned int version;
/** A combination of `git_blame_flag_t` */
- uint32_t flags;
+ unsigned int flags;
/**
* The lower bound on the number of alphanumeric characters that
@@ -122,7 +127,10 @@ typedef struct git_blame_options {
size_t max_line;
} git_blame_options;
+/** Current version for the `git_blame_options` structure */
#define GIT_BLAME_OPTIONS_VERSION 1
+
+/** Static constructor for `git_blame_options` */
#define GIT_BLAME_OPTIONS_INIT {GIT_BLAME_OPTIONS_VERSION}
/**
@@ -165,6 +173,13 @@ typedef struct git_blame_hunk {
*/
git_signature *final_signature;
+ /**
+ * The committer of `final_commit_id`. If `GIT_BLAME_USE_MAILMAP` has
+ * been specified, it will contain the canonical real name and email
+ * address.
+ */
+ git_signature *final_committer;
+
/**
* The OID of the commit where this hunk was found.
* This will usually be the same as `final_commit_id`, except when
@@ -190,6 +205,18 @@ typedef struct git_blame_hunk {
*/
git_signature *orig_signature;
+ /**
+ * The committer of `orig_commit_id`. If `GIT_BLAME_USE_MAILMAP` has
+ * been specified, it will contain the canonical real name and email
+ * address.
+ */
+ git_signature *orig_committer;
+
+ /*
+ * The summary of the commit.
+ */
+ const char *summary;
+
/**
* The 1 iff the hunk has been tracked to a boundary commit (the root,
* or the commit specified in git_blame_options.oldest_commit)
@@ -197,13 +224,75 @@ typedef struct git_blame_hunk {
char boundary;
} git_blame_hunk;
+/**
+ * Structure that represents a line in a blamed file.
+ */
+typedef struct git_blame_line {
+ const char *ptr;
+ size_t len;
+} git_blame_line;
/** Opaque structure to hold blame results */
typedef struct git_blame git_blame;
+/**
+ * Gets the number of lines that exist in the blame structure.
+ *
+ * @param blame The blame structure to query.
+ * @return The number of line.
+ */
+GIT_EXTERN(size_t) git_blame_linecount(git_blame *blame);
+
/**
* Gets the number of hunks that exist in the blame structure.
+ *
+ * @param blame The blame structure to query.
+ * @return The number of hunks.
*/
+GIT_EXTERN(size_t) git_blame_hunkcount(git_blame *blame);
+
+/**
+ * Gets the blame hunk at the given index.
+ *
+ * @param blame the blame structure to query
+ * @param index index of the hunk to retrieve
+ * @return the hunk at the given index, or NULL on error
+ */
+GIT_EXTERN(const git_blame_hunk *) git_blame_hunk_byindex(
+ git_blame *blame,
+ size_t index);
+
+/**
+ * Gets the hunk that relates to the given line number in the newest
+ * commit.
+ *
+ * @param blame the blame structure to query
+ * @param lineno the (1-based) line number to find a hunk for
+ * @return the hunk that contains the given line, or NULL on error
+ */
+GIT_EXTERN(const git_blame_hunk *) git_blame_hunk_byline(
+ git_blame *blame,
+ size_t lineno);
+
+/**
+ * Gets the information about the line in the blame.
+ *
+ * @param blame the blame structure to query
+ * @param idx the (1-based) line number
+ * @return the blamed line, or NULL on error
+ */
+GIT_EXTERN(const git_blame_line *) git_blame_line_byindex(
+ git_blame *blame,
+ size_t idx);
+
+#ifndef GIT_DEPRECATE_HARD
+/**
+ * Gets the number of hunks that exist in the blame structure.
+ *
+ * @param blame The blame structure to query.
+ * @return The number of hunks.
+ */
+
GIT_EXTERN(uint32_t) git_blame_get_hunk_count(git_blame *blame);
/**
@@ -213,9 +302,9 @@ GIT_EXTERN(uint32_t) git_blame_get_hunk_count(git_blame *blame);
* @param index index of the hunk to retrieve
* @return the hunk at the given index, or NULL on error
*/
-GIT_EXTERN(const git_blame_hunk*) git_blame_get_hunk_byindex(
- git_blame *blame,
- uint32_t index);
+GIT_EXTERN(const git_blame_hunk *) git_blame_get_hunk_byindex(
+ git_blame *blame,
+ uint32_t index);
/**
* Gets the hunk that relates to the given line number in the newest commit.
@@ -224,39 +313,58 @@ GIT_EXTERN(const git_blame_hunk*) git_blame_get_hunk_byindex(
* @param lineno the (1-based) line number to find a hunk for
* @return the hunk that contains the given line, or NULL on error
*/
-GIT_EXTERN(const git_blame_hunk*) git_blame_get_hunk_byline(
- git_blame *blame,
- size_t lineno);
+GIT_EXTERN(const git_blame_hunk *) git_blame_get_hunk_byline(
+ git_blame *blame,
+ size_t lineno);
+#endif
/**
- * Get the blame for a single file.
+ * Get the blame for a single file in the repository.
*
* @param out pointer that will receive the blame object
* @param repo repository whose history is to be walked
* @param path path to file to consider
- * @param options options for the blame operation. If NULL, this is treated as
- * though GIT_BLAME_OPTIONS_INIT were passed.
- * @return 0 on success, or an error code. (use git_error_last for information
- * about the error.)
+ * @param options options for the blame operation or NULL
+ * @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_blame_file(
- git_blame **out,
- git_repository *repo,
- const char *path,
- git_blame_options *options);
+ git_blame **out,
+ git_repository *repo,
+ const char *path,
+ git_blame_options *options);
+/**
+ * Get the blame for a single file in the repository, using the specified
+ * buffer contents as the uncommitted changes of the file (the working
+ * directory contents).
+ *
+ * @param out pointer that will receive the blame object
+ * @param repo repository whose history is to be walked
+ * @param path path to file to consider
+ * @param contents the uncommitted changes
+ * @param contents_len the length of the changes buffer
+ * @param options options for the blame operation or NULL
+ * @return 0 on success, or an error code
+ */
+GIT_EXTERN(int) git_blame_file_from_buffer(
+ git_blame **out,
+ git_repository *repo,
+ const char *path,
+ const char *contents,
+ size_t contents_len,
+ git_blame_options *options);
/**
- * Get blame data for a file that has been modified in memory. The `reference`
- * parameter is a pre-calculated blame for the in-odb history of the file. This
- * means that once a file blame is completed (which can be expensive), updating
- * the buffer blame is very fast.
+ * Get blame data for a file that has been modified in memory. The `blame`
+ * parameter is a pre-calculated blame for the in-odb history of the file.
+ * This means that once a file blame is completed (which can be expensive),
+ * updating the buffer blame is very fast.
*
- * Lines that differ between the buffer and the committed version are marked as
- * having a zero OID for their final_commit_id.
+ * Lines that differ between the buffer and the committed version are
+ * marked as having a zero OID for their final_commit_id.
*
* @param out pointer that will receive the resulting blame data
- * @param reference cached blame from the history of the file (usually the output
+ * @param base cached blame from the history of the file (usually the output
* from git_blame_file)
* @param buffer the (possibly) modified contents of the file
* @param buffer_len number of valid bytes in the buffer
@@ -264,10 +372,10 @@ GIT_EXTERN(int) git_blame_file(
* about the error)
*/
GIT_EXTERN(int) git_blame_buffer(
- git_blame **out,
- git_blame *reference,
- const char *buffer,
- size_t buffer_len);
+ git_blame **out,
+ git_blame *base,
+ const char *buffer,
+ size_t buffer_len);
/**
* Free memory allocated by git_blame_file or git_blame_buffer.
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/blob.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/blob.h
index 8fc7391..0ed1685 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/blob.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/blob.h
@@ -15,9 +15,13 @@
/**
* @file git2/blob.h
- * @brief Git blob load and write routines
+ * @brief A blob represents a file in a git repository.
* @defgroup git_blob Git blob load and write routines
* @ingroup Git
+ *
+ * A blob represents a file in a git repository. This is the raw data
+ * as it is stored in the repository itself. Blobs may be "filtered"
+ * to produce the on-disk content.
* @{
*/
GIT_BEGIN_DECL
@@ -25,12 +29,15 @@ GIT_BEGIN_DECL
/**
* Lookup a blob object from a repository.
*
- * @param blob pointer to the looked up blob
+ * @param[out] blob pointer to the looked up blob
* @param repo the repo to use when locating the blob.
* @param id identity of the blob to locate.
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_blob_lookup(git_blob **blob, git_repository *repo, const git_oid *id);
+GIT_EXTERN(int) git_blob_lookup(
+ git_blob **blob,
+ git_repository *repo,
+ const git_oid *id);
/**
* Lookup a blob object from a repository,
@@ -38,7 +45,7 @@ GIT_EXTERN(int) git_blob_lookup(git_blob **blob, git_repository *repo, const git
*
* @see git_object_lookup_prefix
*
- * @param blob pointer to the looked up blob
+ * @param[out] blob pointer to the looked up blob
* @param repo the repo to use when locating the blob.
* @param id identity of the blob to locate.
* @param len the length of the short identifier
@@ -84,7 +91,7 @@ GIT_EXTERN(git_repository *) git_blob_owner(const git_blob *blob);
* time.
*
* @param blob pointer to the blob
- * @return the pointer, or NULL on error
+ * @return @type `unsigned char *` the pointer, or NULL on error
*/
GIT_EXTERN(const void *) git_blob_rawcontent(const git_blob *blob);
@@ -92,12 +99,14 @@ GIT_EXTERN(const void *) git_blob_rawcontent(const git_blob *blob);
* Get the size in bytes of the contents of a blob
*
* @param blob pointer to the blob
- * @return size on bytes
+ * @return size in bytes
*/
GIT_EXTERN(git_object_size_t) git_blob_rawsize(const git_blob *blob);
/**
* Flags to control the functionality of `git_blob_filter`.
+ *
+ * @flags
*/
typedef enum {
/** When set, filters will not be applied to binary files. */
@@ -119,7 +128,7 @@ typedef enum {
* When set, filters will be loaded from a `.gitattributes` file
* in the specified commit.
*/
- GIT_BLOB_FILTER_ATTRIBUTES_FROM_COMMIT = (1 << 3),
+ GIT_BLOB_FILTER_ATTRIBUTES_FROM_COMMIT = (1 << 3)
} git_blob_filter_flag_t;
/**
@@ -128,16 +137,34 @@ typedef enum {
* Initialize with `GIT_BLOB_FILTER_OPTIONS_INIT`. Alternatively, you can
* use `git_blob_filter_options_init`.
*
+ * @options[version] GIT_BLOB_FILTER_OPTIONS_VERSION
+ * @options[init_macro] GIT_BLOB_FILTER_OPTIONS_INIT
+ * @options[init_function] git_blob_filter_options_init
*/
typedef struct {
+ /** Version number of the options structure. */
int version;
- /** Flags to control the filtering process, see `git_blob_filter_flag_t` above */
+ /**
+ * Flags to control the filtering process, see `git_blob_filter_flag_t` above.
+ *
+ * @type[flags] git_blob_filter_flag_t
+ */
uint32_t flags;
#ifdef GIT_DEPRECATE_HARD
+ /**
+ * Unused and reserved for ABI compatibility.
+ *
+ * @deprecated this value should not be set
+ */
void *reserved;
#else
+ /**
+ * This value is unused and reserved for API compatibility.
+ *
+ * @deprecated this value should not be set
+ */
git_oid *commit_id;
#endif
@@ -148,8 +175,18 @@ typedef struct {
git_oid attr_commit_id;
} git_blob_filter_options;
+/**
+ * The current version number for the `git_blob_filter_options` structure ABI.
+ */
#define GIT_BLOB_FILTER_OPTIONS_VERSION 1
-#define GIT_BLOB_FILTER_OPTIONS_INIT {GIT_BLOB_FILTER_OPTIONS_VERSION, GIT_BLOB_FILTER_CHECK_FOR_BINARY}
+
+/**
+ * The default values for `git_blob_filter_options`.
+ */
+#define GIT_BLOB_FILTER_OPTIONS_INIT { \
+ GIT_BLOB_FILTER_OPTIONS_VERSION, \
+ GIT_BLOB_FILTER_CHECK_FOR_BINARY \
+ }
/**
* Initialize git_blob_filter_options structure
@@ -158,10 +195,12 @@ typedef struct {
* to creating an instance with `GIT_BLOB_FILTER_OPTIONS_INIT`.
*
* @param opts The `git_blob_filter_options` struct to initialize.
- * @param version The struct version; pass `GIT_BLOB_FILTER_OPTIONS_VERSION`.
+ * @param version The struct version; pass GIT_BLOB_FILTER_OPTIONS_VERSION
* @return Zero on success; -1 on failure.
*/
-GIT_EXTERN(int) git_blob_filter_options_init(git_blob_filter_options *opts, unsigned int version);
+GIT_EXTERN(int) git_blob_filter_options_init(
+ git_blob_filter_options *opts,
+ unsigned int version);
/**
* Get a buffer with the filtered content of a blob.
@@ -171,7 +210,7 @@ GIT_EXTERN(int) git_blob_filter_options_init(git_blob_filter_options *opts, unsi
* CRLF filtering or other types of changes depending on the file
* attributes set for the blob and the content detected in it.
*
- * The output is written into a `git_buf` which the caller must free
+ * The output is written into a `git_buf` which the caller must dispose
* when done (via `git_buf_dispose`).
*
* If no filters need to be applied, then the `out` buffer will just
@@ -183,7 +222,7 @@ GIT_EXTERN(int) git_blob_filter_options_init(git_blob_filter_options *opts, unsi
* @param blob Pointer to the blob
* @param as_path Path used for file attribute lookups, etc.
* @param opts Options to use for filtering the blob
- * @return 0 on success or an error code
+ * @return @type[enum] git_error_code 0 on success or an error code
*/
GIT_EXTERN(int) git_blob_filter(
git_buf *out,
@@ -192,10 +231,10 @@ GIT_EXTERN(int) git_blob_filter(
git_blob_filter_options *opts);
/**
- * Read a file from the working folder of a repository
- * and write it to the Object Database as a loose blob
+ * Read a file from the working folder of a repository and write it
+ * to the object database.
*
- * @param id return the id of the written blob
+ * @param[out] id return the id of the written blob
* @param repo repository where the blob will be written.
* this repository cannot be bare
* @param relative_path file from which the blob will be created,
@@ -205,19 +244,23 @@ GIT_EXTERN(int) git_blob_filter(
GIT_EXTERN(int) git_blob_create_from_workdir(git_oid *id, git_repository *repo, const char *relative_path);
/**
- * Read a file from the filesystem and write its content
- * to the Object Database as a loose blob
+ * Read a file from the filesystem (not necessarily inside the
+ * working folder of the repository) and write it to the object
+ * database.
*
- * @param id return the id of the written blob
+ * @param[out] id return the id of the written blob
* @param repo repository where the blob will be written.
* this repository can be bare or not
* @param path file from which the blob will be created
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_blob_create_from_disk(git_oid *id, git_repository *repo, const char *path);
+GIT_EXTERN(int) git_blob_create_from_disk(
+ git_oid *id,
+ git_repository *repo,
+ const char *path);
/**
- * Create a stream to write a new blob into the object db
+ * Create a stream to write a new blob into the object database.
*
* This function may need to buffer the data on disk and will in
* general not be the right choice if you know the size of the data
@@ -234,7 +277,7 @@ GIT_EXTERN(int) git_blob_create_from_disk(git_oid *id, git_repository *repo, con
* what git filters should be applied to the object before it is written
* to the object database.
*
- * @param out the stream into which to write
+ * @param[out] out the stream into which to write
* @param repo Repository where the blob will be written.
* This repository can be bare or not.
* @param hintpath If not NULL, will be used to select data filters
@@ -247,11 +290,11 @@ GIT_EXTERN(int) git_blob_create_from_stream(
const char *hintpath);
/**
- * Close the stream and write the blob to the object db
+ * Close the stream and finalize writing the blob to the object database.
*
* The stream will be closed and freed.
*
- * @param out the id of the new blob
+ * @param[out] out the id of the new blob
* @param stream the stream to close
* @return 0 or an error code
*/
@@ -260,9 +303,9 @@ GIT_EXTERN(int) git_blob_create_from_stream_commit(
git_writestream *stream);
/**
- * Write an in-memory buffer to the ODB as a blob
+ * Write an in-memory buffer to the object database as a blob.
*
- * @param id return the id of the written blob
+ * @param[out] id return the id of the written blob
* @param repo repository where the blob will be written
* @param buffer data to be written into the blob
* @param len length of the data
@@ -272,24 +315,37 @@ GIT_EXTERN(int) git_blob_create_from_buffer(
git_oid *id, git_repository *repo, const void *buffer, size_t len);
/**
- * Determine if the blob content is most certainly binary or not.
+ * Determine if the blob content is most likely binary or not.
*
* The heuristic used to guess if a file is binary is taken from core git:
* Searching for NUL bytes and looking for a reasonable ratio of printable
* to non-printable characters among the first 8000 bytes.
*
* @param blob The blob which content should be analyzed
- * @return 1 if the content of the blob is detected
+ * @return @type bool 1 if the content of the blob is detected
* as binary; 0 otherwise.
*/
GIT_EXTERN(int) git_blob_is_binary(const git_blob *blob);
+/**
+ * Determine if the given content is most certainly binary or not;
+ * this is the same mechanism used by `git_blob_is_binary` but only
+ * looking at raw data.
+ *
+ * @param data The blob data which content should be analyzed
+ * @param len The length of the data
+ * @return 1 if the content of the blob is detected
+ * as binary; 0 otherwise.
+ */
+GIT_EXTERN(int) git_blob_data_is_binary(const char *data, size_t len);
+
/**
* Create an in-memory copy of a blob. The copy must be explicitly
* free'd or it will leak.
*
- * @param out Pointer to store the copy of the object
+ * @param[out] out Pointer to store the copy of the object
* @param source Original object to copy
+ * @return 0.
*/
GIT_EXTERN(int) git_blob_dup(git_blob **out, git_blob *source);
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/branch.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/branch.h
index 24ea7f7..56d737d 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/branch.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/branch.h
@@ -13,9 +13,15 @@
/**
* @file git2/branch.h
- * @brief Git branch parsing routines
+ * @brief Branch creation and handling
* @defgroup git_branch Git branch management
* @ingroup Git
+ *
+ * A branch is a specific type of reference, at any particular time,
+ * a git working directory typically is said to have a branch "checked out",
+ * meaning that commits that are created will be made "on" a branch.
+ * This occurs by updating the branch reference to point to the new
+ * commit. The checked out branch is indicated by the `HEAD` meta-ref.
* @{
*/
GIT_BEGIN_DECL
@@ -33,16 +39,13 @@ GIT_BEGIN_DECL
* See `git_tag_create()` for rules about valid names.
*
* @param out Pointer where to store the underlying reference.
- *
+ * @param repo the repository to create the branch in.
* @param branch_name Name for the branch; this name is
- * validated for consistency. It should also not conflict with
- * an already existing branch name.
- *
+ * validated for consistency. It should also not conflict with
+ * an already existing branch name.
* @param target Commit to which this branch should point. This object
- * must belong to the given `repo`.
- *
+ * must belong to the given `repo`.
* @param force Overwrite existing branch.
- *
* @return 0, GIT_EINVALIDSPEC or an error code.
* A proper reference is written in the refs/heads namespace
* pointing to the provided target commit.
@@ -61,15 +64,21 @@ GIT_EXTERN(int) git_branch_create(
* commit, which lets you specify which extended sha syntax string was
* specified by a user, allowing for more exact reflog messages.
*
- * See the documentation for `git_branch_create()`.
- *
- * @see git_branch_create
+ * @param ref_out Pointer where to store the underlying reference.
+ * @param repo the repository to create the branch in.
+ * @param branch_name Name for the branch; this name is
+ * validated for consistency. It should also not conflict with
+ * an already existing branch name.
+ * @param target Annotated commit to which this branch should point. This
+ * object must belong to the given `repo`.
+ * @param force Overwrite existing branch.
+ * @return 0, GIT_EINVALIDSPEC or an error code.
*/
GIT_EXTERN(int) git_branch_create_from_annotated(
git_reference **ref_out,
- git_repository *repository,
+ git_repository *repo,
const char *branch_name,
- const git_annotated_commit *commit,
+ const git_annotated_commit *target,
int force);
/**
@@ -127,8 +136,8 @@ GIT_EXTERN(void) git_branch_iterator_free(git_branch_iterator *iter);
* See `git_tag_create()` for rules about valid names.
*
* Note that if the move succeeds, the old reference object will not
- + be valid anymore, and should be freed immediately by the user using
- + `git_reference_free()`.
+ * be valid anymore, and should be freed immediately by the user using
+ * `git_reference_free()`.
*
* @param out New reference object for the updated name.
*
@@ -220,7 +229,7 @@ GIT_EXTERN(int) git_branch_upstream(
* @param branch the branch to configure
* @param branch_name remote-tracking or local branch to set as upstream.
*
- * @return 0 on success; GIT_ENOTFOUND if there's no branch named `branch_name`
+ * @return @type git_error_t 0 on success; GIT_ENOTFOUND if there's no branch named `branch_name`
* or an error code
*/
GIT_EXTERN(int) git_branch_set_upstream(
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/buffer.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/buffer.h
index 926f133..3fe4f85 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/buffer.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/buffer.h
@@ -11,9 +11,12 @@
/**
* @file git2/buffer.h
- * @brief Buffer export structure
- *
+ * @brief A data structure to return data to callers
* @ingroup Git
+ *
+ * The `git_buf` buffer is used to return arbitrary data - typically
+ * strings - to callers. Callers are responsible for freeing the memory
+ * in a buffer with the `git_buf_dispose` function.
* @{
*/
GIT_BEGIN_DECL
@@ -23,112 +26,51 @@ GIT_BEGIN_DECL
*
* Sometimes libgit2 wants to return an allocated data buffer to the
* caller and have the caller take responsibility for freeing that memory.
- * This can be awkward if the caller does not have easy access to the same
- * allocation functions that libgit2 is using. In those cases, libgit2
- * will fill in a `git_buf` and the caller can use `git_buf_dispose()` to
- * release it when they are done.
- *
- * A `git_buf` may also be used for the caller to pass in a reference to
- * a block of memory they hold. In this case, libgit2 will not resize or
- * free the memory, but will read from it as needed.
+ * To make ownership clear in these cases, libgit2 uses `git_buf` to
+ * return this data. Callers should use `git_buf_dispose()` to release
+ * the memory when they are done.
*
- * Some APIs may occasionally do something slightly unusual with a buffer,
- * such as setting `ptr` to a value that was passed in by the user. In
- * those cases, the behavior will be clearly documented by the API.
+ * A `git_buf` contains a pointer to a NUL-terminated C string, and
+ * the length of the string (not including the NUL terminator).
*/
typedef struct {
/**
- * The buffer contents.
- *
- * `ptr` points to the start of the allocated memory. If it is NULL,
- * then the `git_buf` is considered empty and libgit2 will feel free
- * to overwrite it with new data.
+ * The buffer contents. `ptr` points to the start of the buffer
+ * being returned. The buffer's length (in bytes) is specified
+ * by the `size` member of the structure, and contains a NUL
+ * terminator at position `(size + 1)`.
*/
- char *ptr;
+ char *ptr;
/**
- * `asize` holds the known total amount of allocated memory if the `ptr`
- * was allocated by libgit2. It may be larger than `size`. If `ptr`
- * was not allocated by libgit2 and should not be resized and/or freed,
- * then `asize` will be set to zero.
+ * This field is reserved and unused.
*/
- size_t asize;
+ size_t reserved;
/**
- * `size` holds the size (in bytes) of the data that is actually used.
+ * The length (in bytes) of the buffer pointed to by `ptr`,
+ * not including a NUL terminator.
*/
size_t size;
} git_buf;
/**
- * Static initializer for git_buf from static buffer
+ * Use to initialize a `git_buf` before passing it to a function that
+ * will populate it.
*/
-#define GIT_BUF_INIT_CONST(STR,LEN) { (char *)(STR), 0, (size_t)(LEN) }
+#define GIT_BUF_INIT { NULL, 0, 0 }
/**
* Free the memory referred to by the git_buf.
*
* Note that this does not free the `git_buf` itself, just the memory
- * pointed to by `buffer->ptr`. This will not free the memory if it looks
- * like it was not allocated internally, but it will clear the buffer back
- * to the empty state.
+ * pointed to by `buffer->ptr`.
*
* @param buffer The buffer to deallocate
*/
GIT_EXTERN(void) git_buf_dispose(git_buf *buffer);
-/**
- * Resize the buffer allocation to make more space.
- *
- * This will attempt to grow the buffer to accommodate the target size.
- *
- * If the buffer refers to memory that was not allocated by libgit2 (i.e.
- * the `asize` field is zero), then `ptr` will be replaced with a newly
- * allocated block of data. Be careful so that memory allocated by the
- * caller is not lost. As a special variant, if you pass `target_size` as
- * 0 and the memory is not allocated by libgit2, this will allocate a new
- * buffer of size `size` and copy the external data into it.
- *
- * Currently, this will never shrink a buffer, only expand it.
- *
- * If the allocation fails, this will return an error and the buffer will be
- * marked as invalid for future operations, invaliding the contents.
- *
- * @param buffer The buffer to be resized; may or may not be allocated yet
- * @param target_size The desired available size
- * @return 0 on success, -1 on allocation failure
- */
-GIT_EXTERN(int) git_buf_grow(git_buf *buffer, size_t target_size);
-
-/**
- * Set buffer to a copy of some raw data.
- *
- * @param buffer The buffer to set
- * @param data The data to copy into the buffer
- * @param datalen The length of the data to copy into the buffer
- * @return 0 on success, -1 on allocation failure
- */
-GIT_EXTERN(int) git_buf_set(
- git_buf *buffer, const void *data, size_t datalen);
-
-/**
-* Check quickly if buffer looks like it contains binary data
-*
-* @param buf Buffer to check
-* @return 1 if buffer looks like non-text data
-*/
-GIT_EXTERN(int) git_buf_is_binary(const git_buf *buf);
-
-/**
-* Check quickly if buffer contains a NUL byte
-*
-* @param buf Buffer to check
-* @return 1 if buffer contains a NUL byte
-*/
-GIT_EXTERN(int) git_buf_contains_nul(const git_buf *buf);
-
-GIT_END_DECL
-
/** @} */
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/cert.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/cert.h
index 0ed38ff..7b91b63 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/cert.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/cert.h
@@ -12,7 +12,7 @@
/**
* @file git2/cert.h
- * @brief Git certificate objects
+ * @brief TLS and SSH certificate handling
* @defgroup git_cert Certificate objects
* @ingroup Git
* @{
@@ -44,7 +44,7 @@ typedef enum git_cert_t {
* information about the certificate. This is used when using
* curl.
*/
- GIT_CERT_STRARRAY,
+ GIT_CERT_STRARRAY
} git_cert_t;
/**
@@ -82,7 +82,7 @@ typedef enum {
/** SHA-256 is available */
GIT_CERT_SSH_SHA256 = (1 << 2),
/** Raw hostkey is available */
- GIT_CERT_SSH_RAW = (1 << 3),
+ GIT_CERT_SSH_RAW = (1 << 3)
} git_cert_ssh_t;
typedef enum {
@@ -169,4 +169,5 @@ typedef struct {
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/checkout.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/checkout.h
index c7aeee4..bdea928 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/checkout.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/checkout.h
@@ -13,9 +13,13 @@
/**
* @file git2/checkout.h
- * @brief Git checkout routines
+ * @brief Update the contents of the working directory
* @defgroup git_checkout Git checkout routines
* @ingroup Git
+ *
+ * Update the contents of the working directory, or a subset of the
+ * files in the working directory, to point to the data in the index
+ * or a specific commit.
* @{
*/
GIT_BEGIN_DECL
@@ -31,17 +35,11 @@ GIT_BEGIN_DECL
* check out, the "baseline" tree of what was checked out previously, the
* working directory for actual files, and the index for staged changes.
*
- * You give checkout one of three strategies for update:
- *
- * - `GIT_CHECKOUT_NONE` is a dry-run strategy that checks for conflicts,
- * etc., but doesn't make any actual changes.
+ * You give checkout one of two strategies for update:
*
- * - `GIT_CHECKOUT_FORCE` is at the opposite extreme, taking any action to
- * make the working directory match the target (including potentially
- * discarding modified files).
- *
- * - `GIT_CHECKOUT_SAFE` is between these two options, it will only make
- * modifications that will not lose changes.
+ * - `GIT_CHECKOUT_SAFE` is the default, and similar to git's default,
+ * which will make modifications that will not lose changes in the
+ * working directory.
*
* | target == baseline | target != baseline |
* ---------------------|-----------------------|----------------------|
@@ -55,6 +53,10 @@ GIT_BEGIN_DECL
* baseline present | | |
* ---------------------|-----------------------|----------------------|
*
+ * - `GIT_CHECKOUT_FORCE` will take any action to make the working
+ * directory match the target (including potentially discarding
+ * modified files).
+ *
* To emulate `git checkout`, use `GIT_CHECKOUT_SAFE` with a checkout
* notification callback (see below) that displays information about dirty
* files. The default behavior will cancel checkout on conflicts.
@@ -69,6 +71,9 @@ GIT_BEGIN_DECL
*
* There are some additional flags to modify the behavior of checkout:
*
+ * - `GIT_CHECKOUT_DRY_RUN` is a dry-run strategy that checks for conflicts,
+ * etc., but doesn't make any actual changes.
+ *
* - GIT_CHECKOUT_ALLOW_CONFLICTS makes SAFE mode apply safe file updates
* even if there are conflicts (instead of cancelling the checkout).
*
@@ -102,29 +107,24 @@ GIT_BEGIN_DECL
* files or folders that fold to the same name on case insensitive
* filesystems. This can cause files to retain their existing names
* and write through existing symbolic links.
+ *
+ * @flags
*/
typedef enum {
- GIT_CHECKOUT_NONE = 0, /**< default is a dry run, no actual updates */
-
/**
* Allow safe updates that cannot overwrite uncommitted data.
- * If the uncommitted changes don't conflict with the checked out files,
- * the checkout will still proceed, leaving the changes intact.
- *
- * Mutually exclusive with GIT_CHECKOUT_FORCE.
- * GIT_CHECKOUT_FORCE takes precedence over GIT_CHECKOUT_SAFE.
+ * If the uncommitted changes don't conflict with the checked
+ * out files, the checkout will still proceed, leaving the
+ * changes intact.
*/
- GIT_CHECKOUT_SAFE = (1u << 0),
+ GIT_CHECKOUT_SAFE = 0,
/**
- * Allow all updates to force working directory to look like index.
- *
- * Mutually exclusive with GIT_CHECKOUT_SAFE.
- * GIT_CHECKOUT_FORCE takes precedence over GIT_CHECKOUT_SAFE.
+ * Allow all updates to force working directory to look like
+ * the index, potentially losing data in the process.
*/
GIT_CHECKOUT_FORCE = (1u << 1),
-
/** Allow checkout to recreate missing files */
GIT_CHECKOUT_RECREATE_MISSING = (1u << 2),
@@ -178,20 +178,31 @@ typedef enum {
GIT_CHECKOUT_DONT_WRITE_INDEX = (1u << 23),
/**
- * Show what would be done by a checkout. Stop after sending
- * notifications; don't update the working directory or index.
+ * Perform a "dry run", reporting what _would_ be done but
+ * without actually making changes in the working directory
+ * or the index.
*/
GIT_CHECKOUT_DRY_RUN = (1u << 24),
-
+
+ /** Include common ancestor data in zdiff3 format for conflicts */
+ GIT_CHECKOUT_CONFLICT_STYLE_ZDIFF3 = (1u << 25),
+
/**
+ * Do not do a checkout and do not fire callbacks; this is primarily
+ * useful only for internal functions that will perform the
+ * checkout themselves but need to pass checkout options into
+ * another function, for example, `git_clone`.
+ */
+ GIT_CHECKOUT_NONE = (1u << 30),
+
+ /*
* THE FOLLOWING OPTIONS ARE NOT YET IMPLEMENTED
*/
/** Recursively checkout submodules with same options (NOT IMPLEMENTED) */
GIT_CHECKOUT_UPDATE_SUBMODULES = (1u << 16),
/** Recursively checkout submodules if HEAD moved in super repo (NOT IMPLEMENTED) */
- GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED = (1u << 17),
-
+ GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED = (1u << 17)
} git_checkout_strategy_t;
/**
@@ -207,6 +218,8 @@ typedef enum {
* Notification callbacks are made prior to modifying any files on disk,
* so canceling on any notification will still happen prior to any files
* being modified.
+ *
+ * @flags
*/
typedef enum {
GIT_CHECKOUT_NOTIFY_NONE = 0,
@@ -248,7 +261,17 @@ typedef struct {
size_t chmod_calls;
} git_checkout_perfdata;
-/** Checkout notification callback function */
+/**
+ * Checkout notification callback function.
+ *
+ * @param why the notification reason
+ * @param path the path to the file being checked out
+ * @param baseline the baseline's diff file information
+ * @param target the checkout target diff file information
+ * @param workdir the working directory diff file information
+ * @param payload the user-supplied callback payload
+ * @return 0 on success, or an error code
+ */
typedef int GIT_CALLBACK(git_checkout_notify_cb)(
git_checkout_notify_t why,
const char *path,
@@ -257,14 +280,26 @@ typedef int GIT_CALLBACK(git_checkout_notify_cb)(
const git_diff_file *workdir,
void *payload);
-/** Checkout progress notification function */
+/**
+ * Checkout progress notification function.
+ *
+ * @param path the path to the file being checked out
+ * @param completed_steps number of checkout steps completed
+ * @param total_steps number of total steps in the checkout process
+ * @param payload the user-supplied callback payload
+ */
typedef void GIT_CALLBACK(git_checkout_progress_cb)(
const char *path,
size_t completed_steps,
size_t total_steps,
void *payload);
-/** Checkout perfdata notification function */
+/**
+ * Checkout performance data reporting function.
+ *
+ * @param perfdata the performance data for the checkout
+ * @param payload the user-supplied callback payload
+ */
typedef void GIT_CALLBACK(git_checkout_perfdata_cb)(
const git_checkout_perfdata *perfdata,
void *payload);
@@ -275,10 +310,18 @@ typedef void GIT_CALLBACK(git_checkout_perfdata_cb)(
* Initialize with `GIT_CHECKOUT_OPTIONS_INIT`. Alternatively, you can
* use `git_checkout_options_init`.
*
+ * @options[version] GIT_CHECKOUT_OPTIONS_VERSION
+ * @options[init_macro] GIT_CHECKOUT_OPTIONS_INIT
+ * @options[init_function] git_checkout_options_init
*/
typedef struct git_checkout_options {
unsigned int version; /**< The version */
+ /**
+ * Checkout strategy. Default is a safe checkout.
+ *
+ * @type[flags] git_checkout_strategy_t
+ */
unsigned int checkout_strategy; /**< default will be a safe checkout */
int disable_filters; /**< don't apply filters like CRLF conversion */
@@ -286,7 +329,13 @@ typedef struct git_checkout_options {
unsigned int file_mode; /**< default is 0644 or 0755 as dictated by blob */
int file_open_flags; /**< default is O_CREAT | O_TRUNC | O_WRONLY */
- unsigned int notify_flags; /**< see `git_checkout_notify_t` above */
+ /**
+ * Checkout notification flags specify what operations the notify
+ * callback is invoked for.
+ *
+ * @type[flags] git_checkout_notify_t
+ */
+ unsigned int notify_flags;
/**
* Optional callback to get notifications on specific file states.
@@ -341,8 +390,12 @@ typedef struct git_checkout_options {
void *perfdata_payload;
} git_checkout_options;
+
+/** Current version for the `git_checkout_options` structure */
#define GIT_CHECKOUT_OPTIONS_VERSION 1
-#define GIT_CHECKOUT_OPTIONS_INIT {GIT_CHECKOUT_OPTIONS_VERSION, GIT_CHECKOUT_SAFE}
+
+/** Static constructor for `git_checkout_options` */
+#define GIT_CHECKOUT_OPTIONS_INIT { GIT_CHECKOUT_OPTIONS_VERSION }
/**
* Initialize git_checkout_options structure
@@ -411,4 +464,5 @@ GIT_EXTERN(int) git_checkout_tree(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/cherrypick.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/cherrypick.h
index 0e6a252..e6cf99e 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/cherrypick.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/cherrypick.h
@@ -13,9 +13,12 @@
/**
* @file git2/cherrypick.h
- * @brief Git cherry-pick routines
+ * @brief Cherry-pick the contents of an individual commit
* @defgroup git_cherrypick Git cherry-pick routines
* @ingroup Git
+ *
+ * "Cherry-pick" will attempts to re-apply the changes in an
+ * individual commit to the current index and working directory.
* @{
*/
GIT_BEGIN_DECL
@@ -33,8 +36,13 @@ typedef struct {
git_checkout_options checkout_opts; /**< Options for the checkout */
} git_cherrypick_options;
+/** Current version for the `git_cherrypick_options` structure */
#define GIT_CHERRYPICK_OPTIONS_VERSION 1
-#define GIT_CHERRYPICK_OPTIONS_INIT {GIT_CHERRYPICK_OPTIONS_VERSION, 0, GIT_MERGE_OPTIONS_INIT, GIT_CHECKOUT_OPTIONS_INIT}
+
+/** Static constructor for `git_cherrypick_options` */
+#define GIT_CHERRYPICK_OPTIONS_INIT { \
+ GIT_CHERRYPICK_OPTIONS_VERSION, 0, \
+ GIT_MERGE_OPTIONS_INIT, GIT_CHECKOUT_OPTIONS_INIT }
/**
* Initialize git_cherrypick_options structure
@@ -89,4 +97,3 @@ GIT_EXTERN(int) git_cherrypick(
GIT_END_DECL
#endif
-
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/clone.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/clone.h
index 3c3ea26..b7a47ab 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/clone.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/clone.h
@@ -17,9 +17,13 @@
/**
* @file git2/clone.h
- * @brief Git cloning routines
+ * @brief Clone a remote repository to the local disk
* @defgroup git_clone Git cloning routines
* @ingroup Git
+ *
+ * Clone will take a remote repository - located on a remote server
+ * accessible by HTTPS or SSH, or a repository located elsewhere on
+ * the local disk - and place a copy in the given local path.
* @{
*/
GIT_BEGIN_DECL
@@ -49,7 +53,7 @@ typedef enum {
* Bypass the git-aware transport, but do not try to use
* hardlinks.
*/
- GIT_CLONE_LOCAL_NO_LINKS,
+ GIT_CLONE_LOCAL_NO_LINKS
} git_clone_local_t;
/**
@@ -59,7 +63,7 @@ typedef enum {
* Callers of git_clone may provide a function matching this signature to override
* the remote creation and customization process during a clone operation.
*
- * @param out the resulting remote
+ * @param[out] out the resulting remote
* @param repo the repository in which to create the remote
* @param name the remote's name
* @param url the remote's url
@@ -74,14 +78,14 @@ typedef int GIT_CALLBACK(git_remote_create_cb)(
void *payload);
/**
- * The signature of a function matchin git_repository_init, with an
- * aditional void * as callback payload.
+ * The signature of a function matching git_repository_init, with an
+ * additional void * as callback payload.
*
* Callers of git_clone my provide a function matching this signature
* to override the repository creation and customization process
* during a clone operation.
*
- * @param out the resulting repository
+ * @param[out] out the resulting repository
* @param path path in which to create the repository
* @param bare whether the repository is bare. This is the value from the clone options
* @param payload payload specified by the options
@@ -99,14 +103,17 @@ typedef int GIT_CALLBACK(git_repository_create_cb)(
* Initialize with `GIT_CLONE_OPTIONS_INIT`. Alternatively, you can
* use `git_clone_options_init`.
*
+ * @options[version] GIT_CLONE_OPTIONS_VERSION
+ * @options[init_macro] GIT_CLONE_OPTIONS_INIT
+ * @options[init_function] git_clone_options_init
*/
typedef struct git_clone_options {
unsigned int version;
/**
* These options are passed to the checkout step. To disable
- * checkout, set the `checkout_strategy` to
- * `GIT_CHECKOUT_NONE`.
+ * checkout, set the `checkout_strategy` to `GIT_CHECKOUT_NONE`
+ * or `GIT_CHECKOUT_DRY_RUN`.
*/
git_checkout_options checkout_opts;
@@ -163,10 +170,14 @@ typedef struct git_clone_options {
void *remote_cb_payload;
} git_clone_options;
+/** Current version for the `git_clone_options` structure */
#define GIT_CLONE_OPTIONS_VERSION 1
-#define GIT_CLONE_OPTIONS_INIT { GIT_CLONE_OPTIONS_VERSION, \
- { GIT_CHECKOUT_OPTIONS_VERSION, GIT_CHECKOUT_SAFE }, \
- GIT_FETCH_OPTIONS_INIT }
+
+/** Static constructor for `git_clone_options` */
+#define GIT_CLONE_OPTIONS_INIT \
+ { GIT_CLONE_OPTIONS_VERSION, \
+ GIT_CHECKOUT_OPTIONS_INIT, \
+ GIT_FETCH_OPTIONS_INIT }
/**
* Initialize git_clone_options structure
@@ -189,7 +200,11 @@ GIT_EXTERN(int) git_clone_options_init(
* git's defaults. You can use the options in the callback to
* customize how these are created.
*
- * @param out pointer that will receive the resulting repository object
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
+ * @param[out] out pointer that will receive the resulting repository object
* @param url the remote repository to clone
* @param local_path local directory to clone to
* @param options configuration options for the clone. If NULL, the
@@ -206,4 +221,5 @@ GIT_EXTERN(int) git_clone(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/commit.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/commit.h
index 4d74b89..b998e18 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/commit.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/commit.h
@@ -14,9 +14,13 @@
/**
* @file git2/commit.h
- * @brief Git commit parsing, formatting routines
+ * @brief A representation of a set of changes in the repository
* @defgroup git_commit Git commit parsing, formatting routines
* @ingroup Git
+ *
+ * A commit represents a set of changes made to the files within a
+ * repository, and metadata about who made the changes, and when the
+ * changes were made.
* @{
*/
GIT_BEGIN_DECL
@@ -380,7 +384,38 @@ GIT_EXTERN(int) git_commit_create(
*
* All other parameters remain the same as `git_commit_create()`.
*
- * @see git_commit_create
+ * @param id Pointer in which to store the OID of the newly created commit
+ *
+ * @param repo Repository where to store the commit
+ *
+ * @param update_ref If not NULL, name of the reference that
+ * will be updated to point to this commit. If the reference
+ * is not direct, it will be resolved to a direct reference.
+ * Use "HEAD" to update the HEAD of the current branch and
+ * make it point to this commit. If the reference doesn't
+ * exist yet, it will be created. If it does exist, the first
+ * parent must be the tip of this branch.
+ *
+ * @param author Signature with author and author time of commit
+ *
+ * @param committer Signature with committer and * commit time of commit
+ *
+ * @param message_encoding The encoding for the message in the
+ * commit, represented with a standard encoding name.
+ * E.g. "UTF-8". If NULL, no encoding header is written and
+ * UTF-8 is assumed.
+ *
+ * @param message Full message for this commit
+ *
+ * @param tree An instance of a `git_tree` object that will
+ * be used as the tree for the commit. This tree object must
+ * also be owned by the given `repo`.
+ *
+ * @param parent_count Number of parents for this commit
+ *
+ * @return 0 or an error code
+ * The created commit will be written to the Object Database and
+ * the given reference will be updated to point to it
*/
GIT_EXTERN(int) git_commit_create_v(
git_oid *id,
@@ -394,6 +429,52 @@ GIT_EXTERN(int) git_commit_create_v(
size_t parent_count,
...);
+typedef struct {
+ unsigned int version;
+
+ /**
+ * Flags for creating the commit.
+ *
+ * If `allow_empty_commit` is specified, a commit with no changes
+ * from the prior commit (and "empty" commit) is allowed. Otherwise,
+ * commit creation will be stopped.
+ */
+ unsigned int allow_empty_commit : 1;
+
+ /** The commit author, or NULL for the default. */
+ const git_signature *author;
+
+ /** The committer, or NULL for the default. */
+ const git_signature *committer;
+
+ /** Encoding for the commit message; leave NULL for default. */
+ const char *message_encoding;
+} git_commit_create_options;
+
+/** Current version for the `git_commit_create_options` structure */
+#define GIT_COMMIT_CREATE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_commit_create_options` */
+#define GIT_COMMIT_CREATE_OPTIONS_INIT { GIT_COMMIT_CREATE_OPTIONS_VERSION }
+
+/**
+ * Commits the staged changes in the repository; this is a near analog to
+ * `git commit -m message`.
+ *
+ * By default, empty commits are not allowed.
+ *
+ * @param id pointer to store the new commit's object id
+ * @param repo repository to commit changes in
+ * @param message the commit message
+ * @param opts options for creating the commit
+ * @return 0 on success, GIT_EUNCHANGED if there were no changes to commit, or an error code
+ */
+GIT_EXTERN(int) git_commit_create_from_stage(
+ git_oid *id,
+ git_repository *repo,
+ const char *message,
+ const git_commit_create_options *opts);
+
/**
* Amend an existing commit by replacing only non-NULL values.
*
@@ -413,7 +494,36 @@ GIT_EXTERN(int) git_commit_create_v(
*
* All parameters have the same meanings as in `git_commit_create()`.
*
- * @see git_commit_create
+ * @param id Pointer in which to store the OID of the newly created commit
+ *
+ * @param commit_to_amend The commit to amend
+ *
+ * @param update_ref If not NULL, name of the reference that
+ * will be updated to point to this commit. If the reference
+ * is not direct, it will be resolved to a direct reference.
+ * Use "HEAD" to update the HEAD of the current branch and
+ * make it point to this commit. If the reference doesn't
+ * exist yet, it will be created. If it does exist, the first
+ * parent must be the tip of this branch.
+ *
+ * @param author Signature with author and author time of commit
+ *
+ * @param committer Signature with committer and * commit time of commit
+ *
+ * @param message_encoding The encoding for the message in the
+ * commit, represented with a standard encoding name.
+ * E.g. "UTF-8". If NULL, no encoding header is written and
+ * UTF-8 is assumed.
+ *
+ * @param message Full message for this commit
+ *
+ * @param tree An instance of a `git_tree` object that will
+ * be used as the tree for the commit. This tree object must
+ * also be owned by the given `repo`.
+ *
+ * @return 0 or an error code
+ * The created commit will be written to the Object Database and
+ * the given reference will be updated to point to it
*/
GIT_EXTERN(int) git_commit_amend(
git_oid *id,
@@ -479,6 +589,7 @@ GIT_EXTERN(int) git_commit_create_buffer(
* to the commit and write it into the given repository.
*
* @param out the resulting commit id
+ * @param repo the repository to create the commit in.
* @param commit_content the content of the unsigned commit object
* @param signature the signature to add to the commit. Leave `NULL`
* to create a commit without adding a signature field.
@@ -499,6 +610,7 @@ GIT_EXTERN(int) git_commit_create_with_signature(
*
* @param out Pointer to store the copy of the commit
* @param source Original commit to copy
+ * @return 0
*/
GIT_EXTERN(int) git_commit_dup(git_commit **out, git_commit *source);
@@ -539,6 +651,25 @@ typedef int (*git_commit_create_cb)(
const git_commit *parents[],
void *payload);
+/** An array of commits returned from the library */
+typedef struct git_commitarray {
+ git_commit *const *commits;
+ size_t count;
+} git_commitarray;
+
+/**
+ * Free the commits contained in a commit array. This method should
+ * be called on `git_commitarray` objects that were provided by the
+ * library. Not doing so will result in a memory leak.
+ *
+ * This does not free the `git_commitarray` itself, since the library
+ * will never allocate that object directly itself.
+ *
+ * @param array The git_commitarray that contains commits to free
+ */
+GIT_EXTERN(void) git_commitarray_dispose(git_commitarray *array);
+
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/common.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/common.h
index 2ee8290..40a3903 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/common.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/common.h
@@ -11,7 +11,9 @@
#include
#ifdef __cplusplus
+ /** Start declarations in C mode for C++ compatibility */
# define GIT_BEGIN_DECL extern "C" {
+ /** End declarations in C mode */
# define GIT_END_DECL }
#else
/** Start declarations in C mode */
@@ -71,19 +73,19 @@ typedef size_t size_t;
# define GIT_FORMAT_PRINTF(a,b) /* empty */
#endif
-#if (defined(_WIN32)) && !defined(__CYGWIN__)
-#define GIT_WIN32 1
-#endif
-
#ifdef __amigaos4__
#include
#endif
/**
* @file git2/common.h
- * @brief Git common platform definitions
+ * @brief Base platform functionality
* @defgroup git_common Git common platform definitions
* @ingroup Git
+ *
+ * Common platform functionality including introspecting libgit2
+ * itself - information like how it was built, and the current
+ * running version.
* @{
*/
@@ -94,10 +96,10 @@ GIT_BEGIN_DECL
* environment variable). A semi-colon ";" is used on Windows and
* AmigaOS, and a colon ":" for all other systems.
*/
-#if defined(GIT_WIN32) || defined(AMIGA)
-#define GIT_PATH_LIST_SEPARATOR ';'
+#if (defined(_WIN32) && !defined(__CYGWIN__)) || defined(AMIGA)
+# define GIT_PATH_LIST_SEPARATOR ';'
#else
-#define GIT_PATH_LIST_SEPARATOR ':'
+# define GIT_PATH_LIST_SEPARATOR ':'
#endif
/**
@@ -105,11 +107,6 @@ GIT_BEGIN_DECL
*/
#define GIT_PATH_MAX 4096
-/**
- * The string representation of the null object ID.
- */
-#define GIT_OID_HEX_ZERO "0000000000000000000000000000000000000000"
-
/**
* Return the version of the libgit2 library
* being currently used.
@@ -122,53 +119,91 @@ GIT_BEGIN_DECL
GIT_EXTERN(int) git_libgit2_version(int *major, int *minor, int *rev);
/**
- * Combinations of these values describe the features with which libgit2
- * was compiled
+ * Return the prerelease state of the libgit2 library currently being
+ * used. For nightly builds during active development, this will be
+ * "alpha". Releases may have a "beta" or release candidate ("rc1",
+ * "rc2", etc) prerelease. For a final release, this function returns
+ * NULL.
+ *
+ * @return the name of the prerelease state or NULL
+ */
+GIT_EXTERN(const char *) git_libgit2_prerelease(void);
+
+/**
+ * Configurable features of libgit2; either optional settings (like
+ * threading), or features that can be enabled by one of a number of
+ * different backend "providers" (like HTTPS, which can be provided by
+ * OpenSSL, mbedTLS, or system libraries).
*/
typedef enum {
- /**
- * If set, libgit2 was built thread-aware and can be safely used from multiple
- * threads.
- */
- GIT_FEATURE_THREADS = (1 << 0),
- /**
- * If set, libgit2 was built with and linked against a TLS implementation.
- * Custom TLS streams may still be added by the user to support HTTPS
- * regardless of this.
- */
- GIT_FEATURE_HTTPS = (1 << 1),
- /**
- * If set, libgit2 was built with and linked against libssh2. A custom
- * transport may still be added by the user to support libssh2 regardless of
- * this.
- */
- GIT_FEATURE_SSH = (1 << 2),
- /**
- * If set, libgit2 was built with support for sub-second resolution in file
- * modification times.
- */
- GIT_FEATURE_NSEC = (1 << 3),
+ /**
+ * libgit2 is thread-aware and can be used from multiple threads
+ * (as described in the documentation).
+ */
+ GIT_FEATURE_THREADS = (1 << 0),
+
+ /** HTTPS remotes */
+ GIT_FEATURE_HTTPS = (1 << 1),
+
+ /** SSH remotes */
+ GIT_FEATURE_SSH = (1 << 2),
+
+ /** Sub-second resolution in index timestamps */
+ GIT_FEATURE_NSEC = (1 << 3),
+
+ /** HTTP parsing; always available */
+ GIT_FEATURE_HTTP_PARSER = (1 << 4),
+
+ /** Regular expression support; always available */
+ GIT_FEATURE_REGEX = (1 << 5),
+
+ /** Internationalization support for filename translation */
+ GIT_FEATURE_I18N = (1 << 6),
+
+ /** NTLM support over HTTPS */
+ GIT_FEATURE_AUTH_NTLM = (1 << 7),
+
+ /** Kerberos (SPNEGO) authentication support over HTTPS */
+ GIT_FEATURE_AUTH_NEGOTIATE = (1 << 8),
+
+ /** zlib support; always available */
+ GIT_FEATURE_COMPRESSION = (1 << 9),
+
+ /** SHA1 object support; always available */
+ GIT_FEATURE_SHA1 = (1 << 10),
+
+ /** SHA256 object support */
+ GIT_FEATURE_SHA256 = (1 << 11)
} git_feature_t;
/**
* Query compile time options for libgit2.
*
* @return A combination of GIT_FEATURE_* values.
+ */
+GIT_EXTERN(int) git_libgit2_features(void);
+
+/**
+ * Query the backend details for the compile-time feature in libgit2.
+ *
+ * This will return the "backend" for the feature, which is useful for
+ * things like HTTPS or SSH support, that can have multiple backends
+ * that could be compiled in.
*
- * - GIT_FEATURE_THREADS
- * Libgit2 was compiled with thread support. Note that thread support is
- * still to be seen as a 'work in progress' - basic object lookups are
- * believed to be threadsafe, but other operations may not be.
+ * For example, when libgit2 is compiled with dynamic OpenSSL support,
+ * the feature backend will be `openssl-dynamic`. The feature backend
+ * names reflect the compilation options specified to the build system
+ * (though in all lower case). The backend _may_ be "builtin" for
+ * features that are provided by libgit2 itself.
*
- * - GIT_FEATURE_HTTPS
- * Libgit2 supports the https:// protocol. This requires the openssl
- * library to be found when compiling libgit2.
+ * If the feature is not supported by the library, this API returns
+ * `NULL`.
*
- * - GIT_FEATURE_SSH
- * Libgit2 supports the SSH protocol for network operations. This requires
- * the libssh2 library to be found when compiling libgit2
+ * @param feature the feature to query details for
+ * @return the provider details, or NULL if the feature is not supported
*/
-GIT_EXTERN(int) git_libgit2_features(void);
+GIT_EXTERN(const char *) git_libgit2_feature_backend(
+ git_feature_t feature);
/**
* Global library options
@@ -211,7 +246,18 @@ typedef enum {
GIT_OPT_SET_ODB_PACKED_PRIORITY,
GIT_OPT_SET_ODB_LOOSE_PRIORITY,
GIT_OPT_GET_EXTENSIONS,
- GIT_OPT_SET_EXTENSIONS
+ GIT_OPT_SET_EXTENSIONS,
+ GIT_OPT_GET_OWNER_VALIDATION,
+ GIT_OPT_SET_OWNER_VALIDATION,
+ GIT_OPT_GET_HOMEDIR,
+ GIT_OPT_SET_HOMEDIR,
+ GIT_OPT_SET_SERVER_CONNECT_TIMEOUT,
+ GIT_OPT_GET_SERVER_CONNECT_TIMEOUT,
+ GIT_OPT_SET_SERVER_TIMEOUT,
+ GIT_OPT_GET_SERVER_TIMEOUT,
+ GIT_OPT_SET_USER_AGENT_PRODUCT,
+ GIT_OPT_GET_USER_AGENT_PRODUCT,
+ GIT_OPT_ADD_SSL_X509_CERT
} git_libgit2_opt_t;
/**
@@ -316,15 +362,52 @@ typedef enum {
* > - `path` is the location of a directory holding several
* > certificates, one per file.
* >
+ * > Calling `GIT_OPT_ADD_SSL_X509_CERT` may override the
+ * > data in `path`.
+ * >
* > Either parameter may be `NULL`, but not both.
*
+ * * opts(GIT_OPT_ADD_SSL_X509_CERT, const X509 *cert)
+ *
+ * > Add a raw X509 certificate into the SSL certs store.
+ * > This certificate is only used by libgit2 invocations
+ * > during the application lifetime and is not persisted
+ * > to disk. This certificate cannot be removed from the
+ * > application once is has been added.
+ * >
+ * > - `cert` is the raw X509 cert will be added to cert store.
+ *
* * opts(GIT_OPT_SET_USER_AGENT, const char *user_agent)
*
- * > Set the value of the User-Agent header. This value will be
- * > appended to "git/1.0", for compatibility with other git clients.
+ * > Set the value of the comment section of the User-Agent header.
+ * > This can be information about your product and its version.
+ * > By default this is "libgit2" followed by the libgit2 version.
+ * >
+ * > This value will be appended to User-Agent _product_, which
+ * > is typically set to "git/2.0".
+ * >
+ * > Set to the empty string ("") to not send any information in the
+ * > comment section, or set to NULL to restore the default.
+ *
+ * * opts(GIT_OPT_GET_USER_AGENT, git_buf *out)
+ *
+ * > Get the value of the User-Agent header.
+ * > The User-Agent is written to the `out` buffer.
+ *
+ * * opts(GIT_OPT_SET_USER_AGENT_PRODUCT, const char *user_agent_product)
+ *
+ * > Set the value of the product portion of the User-Agent header.
+ * > This defaults to "git/2.0", for compatibility with other git
+ * > clients. It is recommended to keep this as git/ for
+ * > compatibility with servers that do user-agent detection.
* >
- * > - `user_agent` is the value that will be delivered as the
- * > User-Agent header on HTTP requests.
+ * > Set to the empty string ("") to not send any user-agent string,
+ * > or set to NULL to restore the default.
+ *
+ * * opts(GIT_OPT_GET_USER_AGENT_PRODUCT, git_buf *out)
+ *
+ * > Get the value of the User-Agent product header.
+ * > The User-Agent product is written to the `out` buffer.
*
* * opts(GIT_OPT_SET_WINDOWS_SHAREMODE, unsigned long value)
*
@@ -360,11 +443,6 @@ typedef enum {
* >
* > - `ciphers` is the list of ciphers that are eanbled.
*
- * * opts(GIT_OPT_GET_USER_AGENT, git_buf *out)
- *
- * > Get the value of the User-Agent header.
- * > The User-Agent is written to the `out` buffer.
- *
* * opts(GIT_OPT_ENABLE_OFS_DELTA, int enabled)
*
* > Enable or disable the use of "offset deltas" when creating packfiles,
@@ -449,8 +527,43 @@ typedef enum {
* > to support repositories with the `noop` extension but does want
* > to support repositories with the `newext` extension.
*
+ * opts(GIT_OPT_GET_OWNER_VALIDATION, int *enabled)
+ * > Gets the owner validation setting for repository
+ * > directories.
+ *
+ * opts(GIT_OPT_SET_OWNER_VALIDATION, int enabled)
+ * > Set that repository directories should be owned by the current
+ * > user. The default is to validate ownership.
+ *
+ * opts(GIT_OPT_GET_HOMEDIR, git_buf *out)
+ * > Gets the current user's home directory, as it will be used
+ * > for file lookups. The path is written to the `out` buffer.
+ *
+ * opts(GIT_OPT_SET_HOMEDIR, const char *path)
+ * > Sets the directory used as the current user's home directory,
+ * > for file lookups.
+ * >
+ * > - `path` directory of home directory.
+ *
+ * opts(GIT_OPT_GET_SERVER_CONNECT_TIMEOUT, int *timeout)
+ * > Gets the timeout (in milliseconds) to attempt connections to
+ * > a remote server.
+ *
+ * opts(GIT_OPT_SET_SERVER_CONNECT_TIMEOUT, int timeout)
+ * > Sets the timeout (in milliseconds) to attempt connections to
+ * > a remote server. Set to 0 to use the system default. Note that
+ * > this may not be able to be configured longer than the system
+ * > default, typically 75 seconds.
+ *
+ * opts(GIT_OPT_GET_SERVER_TIMEOUT, int *timeout)
+ * > Gets the timeout (in milliseconds) for reading from and writing
+ * > to a remote server.
+ *
+ * opts(GIT_OPT_SET_SERVER_TIMEOUT, int timeout)
+ * > Sets the timeout (in milliseconds) for reading from and writing
+ * > to a remote server. Set to 0 to use the system default.
+ *
* @param option Option key
- * @param ... value to set the option
* @return 0 on success, <0 on failure
*/
GIT_EXTERN(int) git_libgit2_opts(int option, ...);
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/config.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/config.h
index 7c8e388..f9c2667 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/config.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/config.h
@@ -13,78 +13,134 @@
/**
* @file git2/config.h
- * @brief Git config management routines
+ * @brief Per-repository, per-user or per-system configuration
* @defgroup git_config Git config management routines
* @ingroup Git
+ *
+ * Git configuration affects the operation of the version control
+ * system, and can be specified on a per-repository basis, in user
+ * settings, or at the system level.
* @{
*/
GIT_BEGIN_DECL
/**
* Priority level of a config file.
+ *
* These priority levels correspond to the natural escalation logic
- * (from higher to lower) when searching for config entries in git.git.
+ * (from higher to lower) when reading or searching for config entries
+ * in git.git. Meaning that for the same key, the configuration in
+ * the local configuration is preferred over the configuration in
+ * the system configuration file.
+ *
+ * Callers can add their own custom configuration, beginning at the
+ * `GIT_CONFIG_LEVEL_APP` level.
+ *
+ * Writes, by default, occur in the highest priority level backend
+ * that is writable. This ordering can be overridden with
+ * `git_config_set_writeorder`.
*
* git_config_open_default() and git_repository_config() honor those
* priority levels as well.
+ *
+ * @see git_config_open_default
+ * @see git_repository_config
*/
typedef enum {
- /** System-wide on Windows, for compatibility with portable git */
+ /**
+ * System-wide on Windows, for compatibility with "Portable Git".
+ */
GIT_CONFIG_LEVEL_PROGRAMDATA = 1,
- /** System-wide configuration file; /etc/gitconfig on Linux systems */
+ /**
+ * System-wide configuration file; `/etc/gitconfig` on Linux.
+ */
GIT_CONFIG_LEVEL_SYSTEM = 2,
- /** XDG compatible configuration file; typically ~/.config/git/config */
+ /**
+ * XDG compatible configuration file; typically
+ * `~/.config/git/config`.
+ */
GIT_CONFIG_LEVEL_XDG = 3,
- /** User-specific configuration file (also called Global configuration
- * file); typically ~/.gitconfig
+ /**
+ * Global configuration file is the user-specific configuration;
+ * typically `~/.gitconfig`.
*/
GIT_CONFIG_LEVEL_GLOBAL = 4,
- /** Repository specific configuration file; $WORK_DIR/.git/config on
- * non-bare repos
+ /**
+ * Local configuration, the repository-specific configuration file;
+ * typically `$GIT_DIR/config`.
*/
GIT_CONFIG_LEVEL_LOCAL = 5,
- /** Application specific configuration file; freely defined by applications
+ /**
+ * Worktree-specific configuration; typically
+ * `$GIT_DIR/config.worktree`.
*/
- GIT_CONFIG_LEVEL_APP = 6,
+ GIT_CONFIG_LEVEL_WORKTREE = 6,
- /** Represents the highest level available config file (i.e. the most
- * specific config file available that actually is loaded)
+ /**
+ * Application-specific configuration file. Callers into libgit2
+ * can add their own configuration beginning at this level.
+ */
+ GIT_CONFIG_LEVEL_APP = 7,
+
+ /**
+ * Not a configuration level; callers can use this value when
+ * querying configuration levels to specify that they want to
+ * have data from the highest-level currently configuration.
+ * This can be used to indicate that callers want the most
+ * specific config file available that actually is loaded.
*/
- GIT_CONFIG_HIGHEST_LEVEL = -1,
+ GIT_CONFIG_HIGHEST_LEVEL = -1
} git_config_level_t;
/**
* An entry in a configuration file
*/
typedef struct git_config_entry {
- const char *name; /**< Name of the entry (normalised) */
- const char *value; /**< String value of the entry */
- unsigned int include_depth; /**< Depth of includes where this variable was found */
- git_config_level_t level; /**< Which config file this was found in */
- void GIT_CALLBACK(free)(struct git_config_entry *entry); /**< Free function for this entry */
- void *payload; /**< Opaque value for the free function. Do not read or write */
+ /** Name of the configuration entry (normalized). */
+ const char *name;
+
+ /** Literal (string) value of the entry. */
+ const char *value;
+
+ /** The type of backend that this entry exists in (eg, "file"). */
+ const char *backend_type;
+
+ /**
+ * The path to the origin of this entry. For config files, this is
+ * the path to the file.
+ */
+ const char *origin_path;
+
+ /** Depth of includes where this variable was found. */
+ unsigned int include_depth;
+
+ /** Configuration level for the file this was found in. */
+ git_config_level_t level;
} git_config_entry;
/**
- * Free a config entry
+ * Free a config entry.
+ *
+ * @param entry The entry to free.
*/
-GIT_EXTERN(void) git_config_entry_free(git_config_entry *);
+GIT_EXTERN(void) git_config_entry_free(git_config_entry *entry);
/**
- * A config enumeration callback
+ * A config enumeration callback.
*
* @param entry the entry currently being enumerated
* @param payload a user-specified pointer
+ * @return non-zero to terminate the iteration.
*/
typedef int GIT_CALLBACK(git_config_foreach_cb)(const git_config_entry *entry, void *payload);
/**
- * An opaque structure for a configuration iterator
+ * An opaque structure for a configuration iterator.
*/
typedef struct git_config_iterator git_config_iterator;
@@ -119,7 +175,7 @@ typedef struct {
* global configuration file.
*
* This method will not guess the path to the xdg compatible
- * config file (.config/git/config).
+ * config file (`.config/git/config`).
*
* @param out Pointer to a user-allocated git_buf in which to store the path
* @return 0 if a global configuration file has been found. Its path will be stored in `out`.
@@ -146,8 +202,8 @@ GIT_EXTERN(int) git_config_find_xdg(git_buf *out);
/**
* Locate the path to the system configuration file
*
- * If /etc/gitconfig doesn't exist, it will look for
- * %PROGRAMFILES%\Git\etc\gitconfig.
+ * If `/etc/gitconfig` doesn't exist, it will look for
+ * `%PROGRAMFILES%\Git\etc\gitconfig`.
*
* @param out Pointer to a user-allocated git_buf in which to store the path
* @return 0 if a system configuration file has been
@@ -158,7 +214,7 @@ GIT_EXTERN(int) git_config_find_system(git_buf *out);
/**
* Locate the path to the configuration file in ProgramData
*
- * Look for the file in %PROGRAMDATA%\Git\config used by portable git.
+ * Look for the file in `%PROGRAMDATA%\Git\config` used by portable git.
*
* @param out Pointer to a user-allocated git_buf in which to store the path
* @return 0 if a ProgramData configuration file has been
@@ -209,9 +265,9 @@ GIT_EXTERN(int) git_config_new(git_config **out);
* @param cfg the configuration to add the file to
* @param path path to the configuration file to add
* @param level the priority level of the backend
- * @param force replace config file at the given priority level
* @param repo optional repository to allow parsing of
* conditional includes
+ * @param force replace config file at the given priority level
* @return 0 on success, GIT_EEXISTS when adding more than one file
* for a given priority level (and force_replace set to 0),
* GIT_ENOTFOUND when the file doesn't exist or error code
@@ -269,9 +325,26 @@ GIT_EXTERN(int) git_config_open_level(
*
* @param out pointer in which to store the config object
* @param config the config object in which to look
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_open_global(git_config **out, git_config *config);
+/**
+ * Set the write order for configuration backends. By default, the
+ * write ordering does not match the read ordering; for example, the
+ * worktree configuration is a high-priority for reading, but is not
+ * written to unless explicitly chosen.
+ *
+ * @param cfg the configuration to change write order of
+ * @param levels the ordering of levels for writing
+ * @param len the length of the levels array
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_config_set_writeorder(
+ git_config *cfg,
+ git_config_level_t *levels,
+ size_t len);
+
/**
* Create a snapshot of the configuration
*
@@ -422,6 +495,7 @@ GIT_EXTERN(int) git_config_get_string_buf(git_buf *out, const git_config *cfg, c
* interested in. Use NULL to indicate all
* @param callback the function to be called on each value of the variable
* @param payload opaque pointer to pass to the callback
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_get_multivar_foreach(const git_config *cfg, const char *name, const char *regexp, git_config_foreach_cb callback, void *payload);
@@ -437,14 +511,15 @@ GIT_EXTERN(int) git_config_get_multivar_foreach(const git_config *cfg, const cha
* @param name the variable's name
* @param regexp regular expression to filter which variables we're
* interested in. Use NULL to indicate all
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_multivar_iterator_new(git_config_iterator **out, const git_config *cfg, const char *name, const char *regexp);
/**
* Return the current entry and advance the iterator
*
- * The pointers returned by this function are valid until the iterator
- * is freed.
+ * The pointers returned by this function are valid until the next call
+ * to `git_config_next` or until the iterator is freed.
*
* @param entry pointer to store the entry
* @param iter the iterator
@@ -515,6 +590,7 @@ GIT_EXTERN(int) git_config_set_string(git_config *cfg, const char *name, const c
* @param name the variable's name
* @param regexp a regular expression to indicate which values to replace
* @param value the new value.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_set_multivar(git_config *cfg, const char *name, const char *regexp, const char *value);
@@ -524,6 +600,7 @@ GIT_EXTERN(int) git_config_set_multivar(git_config *cfg, const char *name, const
*
* @param cfg the configuration
* @param name the variable to delete
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_delete_entry(git_config *cfg, const char *name);
@@ -568,7 +645,8 @@ GIT_EXTERN(int) git_config_foreach(
* `git_config_iterator_free` when done.
*
* @param out pointer to store the iterator
- * @param cfg where to ge the variables from
+ * @param cfg where to get the variables from
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_iterator_new(git_config_iterator **out, const git_config *cfg);
@@ -585,6 +663,7 @@ GIT_EXTERN(int) git_config_iterator_new(git_config_iterator **out, const git_con
* @param out pointer to store the iterator
* @param cfg where to ge the variables from
* @param regexp regular expression to match the names
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_iterator_glob_new(git_config_iterator **out, const git_config *cfg, const char *regexp);
@@ -662,6 +741,7 @@ GIT_EXTERN(int) git_config_get_mapped(
* @param maps array of `git_configmap` objects specifying the possible mappings
* @param map_n number of mapping objects in `maps`
* @param value value to parse
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_lookup_map_value(
int *out,
@@ -678,6 +758,7 @@ GIT_EXTERN(int) git_config_lookup_map_value(
*
* @param out place to store the result of the parsing
* @param value value to parse
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_parse_bool(int *out, const char *value);
@@ -690,6 +771,7 @@ GIT_EXTERN(int) git_config_parse_bool(int *out, const char *value);
*
* @param out place to store the result of the parsing
* @param value value to parse
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_parse_int32(int32_t *out, const char *value);
@@ -702,6 +784,7 @@ GIT_EXTERN(int) git_config_parse_int32(int32_t *out, const char *value);
*
* @param out place to store the result of the parsing
* @param value value to parse
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_parse_int64(int64_t *out, const char *value);
@@ -717,6 +800,7 @@ GIT_EXTERN(int) git_config_parse_int64(int64_t *out, const char *value);
*
* @param out placae to store the result of parsing
* @param value the path to evaluate
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_parse_path(git_buf *out, const char *value);
@@ -735,6 +819,7 @@ GIT_EXTERN(int) git_config_parse_path(git_buf *out, const char *value);
* @param regexp regular expression to match against config names (can be NULL)
* @param callback the function to call on each variable
* @param payload the data to pass to the callback
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_config_backend_foreach_match(
git_config_backend *backend,
@@ -763,4 +848,5 @@ GIT_EXTERN(int) git_config_lock(git_transaction **tx, git_config *cfg);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/credential.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/credential.h
index 9426a6e..33755ca 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/credential.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/credential.h
@@ -11,9 +11,12 @@
/**
* @file git2/credential.h
- * @brief Git authentication & credential management
+ * @brief Authentication and credential management
* @defgroup git_credential Authentication & credential management
* @ingroup Git
+ *
+ * Credentials specify how to authenticate to a remote system
+ * over HTTPS or SSH.
* @{
*/
GIT_BEGIN_DECL
@@ -75,7 +78,7 @@ typedef enum {
*
* @see git_credential_ssh_key_memory_new
*/
- GIT_CREDENTIAL_SSH_MEMORY = (1u << 6),
+ GIT_CREDENTIAL_SSH_MEMORY = (1u << 6)
} git_credential_t;
/**
@@ -119,7 +122,7 @@ typedef struct git_credential_ssh_custom git_credential_ssh_custom;
* an error. As such, it's easy to get in a loop if you fail to stop providing
* the same incorrect credentials.
*
- * @param out The newly created credential object.
+ * @param[out] out The newly created credential object.
* @param url The resource for which we are demanding a credential.
* @param username_from_url The username that was embedded in a "user\@host"
* remote url, or NULL if not included.
@@ -241,6 +244,18 @@ typedef struct _LIBSSH2_USERAUTH_KBDINT_PROMPT LIBSSH2_USERAUTH_KBDINT_PROMPT;
typedef struct _LIBSSH2_USERAUTH_KBDINT_RESPONSE LIBSSH2_USERAUTH_KBDINT_RESPONSE;
#endif
+/**
+ * Callback for interactive SSH credentials.
+ *
+ * @param name the name
+ * @param name_len the length of the name
+ * @param instruction the authentication instruction
+ * @param instruction_len the length of the instruction
+ * @param num_prompts the number of prompts
+ * @param prompts the prompts
+ * @param responses the responses
+ * @param abstract the abstract
+ */
typedef void GIT_CALLBACK(git_credential_ssh_interactive_cb)(
const char *name,
int name_len,
@@ -254,6 +269,7 @@ typedef void GIT_CALLBACK(git_credential_ssh_interactive_cb)(
* Create a new ssh keyboard-interactive based credential object.
* The supplied credential parameter will be internally duplicated.
*
+ * @param out The newly created credential object.
* @param username Username to use to authenticate.
* @param prompt_callback The callback method used for prompts.
* @param payload Additional data to pass to the callback.
@@ -277,6 +293,18 @@ GIT_EXTERN(int) git_credential_ssh_key_from_agent(
git_credential **out,
const char *username);
+/**
+ * Callback for credential signing.
+ *
+ * @param session the libssh2 session
+ * @param sig the signature
+ * @param sig_len the length of the signature
+ * @param data the data
+ * @param data_len the length of the data
+ * @param abstract the abstract
+ * @return 0 for success, < 0 to indicate an error, > 0 to indicate
+ * no credential was acquired
+ */
typedef int GIT_CALLBACK(git_credential_sign_cb)(
LIBSSH2_SESSION *session,
unsigned char **sig, size_t *sig_len,
@@ -311,4 +339,5 @@ GIT_EXTERN(int) git_credential_ssh_custom_new(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/credential_helpers.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/credential_helpers.h
index 9a70ecb..706558d 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/credential_helpers.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/credential_helpers.h
@@ -39,6 +39,7 @@ typedef struct git_credential_userpass_payload {
* @param allowed_types A bitmask stating which credential types are OK to return.
* @param payload The payload provided when specifying this callback. (This is
* interpreted as a `git_credential_userpass_payload*`.)
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_credential_userpass(
git_credential **out,
@@ -49,4 +50,5 @@ GIT_EXTERN(int) git_credential_userpass(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/deprecated.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/deprecated.h
index 37b9fa0..b8b0238 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/deprecated.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/deprecated.h
@@ -52,7 +52,7 @@
/**
* @file git2/deprecated.h
- * @brief libgit2 deprecated functions and values
+ * @brief Deprecated functions and values
* @ingroup Git
* @{
*/
@@ -69,15 +69,23 @@ GIT_BEGIN_DECL
*/
/**@{*/
+/** @deprecated use GIT_ATTR_VALUE_UNSPECIFIED */
#define GIT_ATTR_UNSPECIFIED_T GIT_ATTR_VALUE_UNSPECIFIED
+/** @deprecated use GIT_ATTR_VALUE_TRUE */
#define GIT_ATTR_TRUE_T GIT_ATTR_VALUE_TRUE
+/** @deprecated use GIT_ATTR_VALUE_FALSE */
#define GIT_ATTR_FALSE_T GIT_ATTR_VALUE_FALSE
+/** @deprecated use GIT_ATTR_VALUE_STRING */
#define GIT_ATTR_VALUE_T GIT_ATTR_VALUE_STRING
+/** @deprecated use GIT_ATTR_IS_TRUE */
#define GIT_ATTR_TRUE(attr) GIT_ATTR_IS_TRUE(attr)
+/** @deprecated use GIT_ATTR_IS_FALSE */
#define GIT_ATTR_FALSE(attr) GIT_ATTR_IS_FALSE(attr)
+/** @deprecated use GIT_ATTR_IS_UNSPECIFIED */
#define GIT_ATTR_UNSPECIFIED(attr) GIT_ATTR_IS_UNSPECIFIED(attr)
+/** @deprecated use git_attr_value_t */
typedef git_attr_value_t git_attr_t;
/**@}*/
@@ -93,6 +101,7 @@ typedef git_attr_value_t git_attr_t;
*/
/**@{*/
+/** @deprecated use GIT_BLOB_FILTER_ATTRIBUTES_FROM_HEAD */
#define GIT_BLOB_FILTER_ATTTRIBUTES_FROM_HEAD GIT_BLOB_FILTER_ATTRIBUTES_FROM_HEAD
GIT_EXTERN(int) git_blob_create_fromworkdir(git_oid *id, git_repository *repo, const char *relative_path);
@@ -285,11 +294,16 @@ typedef int (*git_commit_signing_cb)(
*/
/**@{*/
+/** @deprecated use GIT_CONFIGMAP_FALSE */
#define GIT_CVAR_FALSE GIT_CONFIGMAP_FALSE
+/** @deprecated use GIT_CONFIGMAP_TRUE */
#define GIT_CVAR_TRUE GIT_CONFIGMAP_TRUE
+/** @deprecated use GIT_CONFIGMAP_INT32 */
#define GIT_CVAR_INT32 GIT_CONFIGMAP_INT32
+/** @deprecated use GIT_CONFIGMAP_STRING */
#define GIT_CVAR_STRING GIT_CONFIGMAP_STRING
+/** @deprecated use git_cvar_map */
typedef git_configmap git_cvar_map;
/**@}*/
@@ -313,12 +327,13 @@ typedef enum {
GIT_DIFF_FORMAT_EMAIL_NONE = 0,
/** Don't insert "[PATCH]" in the subject header*/
- GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER = (1 << 0),
-
+ GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER = (1 << 0)
} git_diff_format_email_flags_t;
/**
* Options for controlling the formatting of the generated e-mail.
+ *
+ * @deprecated use `git_email_create_options`
*/
typedef struct {
unsigned int version;
@@ -345,7 +360,9 @@ typedef struct {
const git_signature *author;
} git_diff_format_email_options;
+/** @deprecated use `git_email_create_options` */
#define GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION 1
+/** @deprecated use `git_email_create_options` */
#define GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT {GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION, 0, 1, 1, NULL, NULL, NULL, NULL}
/**
@@ -401,40 +418,76 @@ GIT_EXTERN(int) git_diff_format_email_options_init(
*/
/**@{*/
+/** @deprecated use `GIT_ERROR_NONE` */
#define GITERR_NONE GIT_ERROR_NONE
+/** @deprecated use `GIT_ERROR_NOMEMORY` */
#define GITERR_NOMEMORY GIT_ERROR_NOMEMORY
+/** @deprecated use `GIT_ERROR_OS` */
#define GITERR_OS GIT_ERROR_OS
+/** @deprecated use `GIT_ERROR_INVALID` */
#define GITERR_INVALID GIT_ERROR_INVALID
+/** @deprecated use `GIT_ERROR_REFERENCE` */
#define GITERR_REFERENCE GIT_ERROR_REFERENCE
+/** @deprecated use `GIT_ERROR_ZLIB` */
#define GITERR_ZLIB GIT_ERROR_ZLIB
+/** @deprecated use `GIT_ERROR_REPOSITORY` */
#define GITERR_REPOSITORY GIT_ERROR_REPOSITORY
+/** @deprecated use `GIT_ERROR_CONFIG` */
#define GITERR_CONFIG GIT_ERROR_CONFIG
+/** @deprecated use `GIT_ERROR_REGEX` */
#define GITERR_REGEX GIT_ERROR_REGEX
+/** @deprecated use `GIT_ERROR_ODB` */
#define GITERR_ODB GIT_ERROR_ODB
+/** @deprecated use `GIT_ERROR_INDEX` */
#define GITERR_INDEX GIT_ERROR_INDEX
+/** @deprecated use `GIT_ERROR_OBJECT` */
#define GITERR_OBJECT GIT_ERROR_OBJECT
+/** @deprecated use `GIT_ERROR_NET` */
#define GITERR_NET GIT_ERROR_NET
+/** @deprecated use `GIT_ERROR_TAG` */
#define GITERR_TAG GIT_ERROR_TAG
+/** @deprecated use `GIT_ERROR_TREE` */
#define GITERR_TREE GIT_ERROR_TREE
+/** @deprecated use `GIT_ERROR_INDEXER` */
#define GITERR_INDEXER GIT_ERROR_INDEXER
+/** @deprecated use `GIT_ERROR_SSL` */
#define GITERR_SSL GIT_ERROR_SSL
+/** @deprecated use `GIT_ERROR_SUBMODULE` */
#define GITERR_SUBMODULE GIT_ERROR_SUBMODULE
+/** @deprecated use `GIT_ERROR_THREAD` */
#define GITERR_THREAD GIT_ERROR_THREAD
+/** @deprecated use `GIT_ERROR_STASH` */
#define GITERR_STASH GIT_ERROR_STASH
+/** @deprecated use `GIT_ERROR_CHECKOUT` */
#define GITERR_CHECKOUT GIT_ERROR_CHECKOUT
+/** @deprecated use `GIT_ERROR_FETCHHEAD` */
#define GITERR_FETCHHEAD GIT_ERROR_FETCHHEAD
+/** @deprecated use `GIT_ERROR_MERGE` */
#define GITERR_MERGE GIT_ERROR_MERGE
+/** @deprecated use `GIT_ERROR_SSH` */
#define GITERR_SSH GIT_ERROR_SSH
+/** @deprecated use `GIT_ERROR_FILTER` */
#define GITERR_FILTER GIT_ERROR_FILTER
+/** @deprecated use `GIT_ERROR_REVERT` */
#define GITERR_REVERT GIT_ERROR_REVERT
+/** @deprecated use `GIT_ERROR_CALLBACK` */
#define GITERR_CALLBACK GIT_ERROR_CALLBACK
+/** @deprecated use `GIT_ERROR_CHERRYPICK` */
#define GITERR_CHERRYPICK GIT_ERROR_CHERRYPICK
+/** @deprecated use `GIT_ERROR_DESCRIBE` */
#define GITERR_DESCRIBE GIT_ERROR_DESCRIBE
+/** @deprecated use `GIT_ERROR_REBASE` */
#define GITERR_REBASE GIT_ERROR_REBASE
+/** @deprecated use `GIT_ERROR_FILESYSTEM` */
#define GITERR_FILESYSTEM GIT_ERROR_FILESYSTEM
+/** @deprecated use `GIT_ERROR_PATCH` */
#define GITERR_PATCH GIT_ERROR_PATCH
+/** @deprecated use `GIT_ERROR_WORKTREE` */
#define GITERR_WORKTREE GIT_ERROR_WORKTREE
+/** @deprecated use `GIT_ERROR_SHA1` */
#define GITERR_SHA1 GIT_ERROR_SHA1
+/** @deprecated use `GIT_ERROR_SHA` */
+#define GIT_ERROR_SHA1 GIT_ERROR_SHA
/**
* Return the last `git_error` object that was generated for the
@@ -498,37 +551,63 @@ GIT_EXTERN(void) giterr_set_oom(void);
*/
/**@{*/
+/* The git_idxentry_extended_flag_t enum */
+/** @deprecated use `GIT_INDEX_ENTRY_NAMEMASK` */
#define GIT_IDXENTRY_NAMEMASK GIT_INDEX_ENTRY_NAMEMASK
+/** @deprecated use `GIT_INDEX_ENTRY_STAGEMASK` */
#define GIT_IDXENTRY_STAGEMASK GIT_INDEX_ENTRY_STAGEMASK
+/** @deprecated use `GIT_INDEX_ENTRY_STAGESHIFT` */
#define GIT_IDXENTRY_STAGESHIFT GIT_INDEX_ENTRY_STAGESHIFT
/* The git_indxentry_flag_t enum */
+/** @deprecated use `GIT_INDEX_ENTRY_EXTENDED` */
#define GIT_IDXENTRY_EXTENDED GIT_INDEX_ENTRY_EXTENDED
+/** @deprecated use `GIT_INDEX_ENTRY_VALID` */
#define GIT_IDXENTRY_VALID GIT_INDEX_ENTRY_VALID
+/** @deprecated use `GIT_INDEX_ENTRY_STAGE` */
#define GIT_IDXENTRY_STAGE(E) GIT_INDEX_ENTRY_STAGE(E)
+/** @deprecated use `GIT_INDEX_ENTRY_STAGE_SET` */
#define GIT_IDXENTRY_STAGE_SET(E,S) GIT_INDEX_ENTRY_STAGE_SET(E,S)
/* The git_idxentry_extended_flag_t enum */
+/** @deprecated use `GIT_INDEX_ENTRY_INTENT_TO_ADD` */
#define GIT_IDXENTRY_INTENT_TO_ADD GIT_INDEX_ENTRY_INTENT_TO_ADD
+/** @deprecated use `GIT_INDEX_ENTRY_SKIP_WORKTREE` */
#define GIT_IDXENTRY_SKIP_WORKTREE GIT_INDEX_ENTRY_SKIP_WORKTREE
+/** @deprecated use `GIT_INDEX_ENTRY_INTENT_TO_ADD | GIT_INDEX_ENTRY_SKIP_WORKTREE` */
#define GIT_IDXENTRY_EXTENDED_FLAGS (GIT_INDEX_ENTRY_INTENT_TO_ADD | GIT_INDEX_ENTRY_SKIP_WORKTREE)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_EXTENDED2 (1 << 15)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_UPDATE (1 << 0)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_REMOVE (1 << 1)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_UPTODATE (1 << 2)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_ADDED (1 << 3)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_HASHED (1 << 4)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_UNHASHED (1 << 5)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_WT_REMOVE (1 << 6)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_CONFLICTED (1 << 7)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_UNPACKED (1 << 8)
+/** @deprecated this value is not public */
#define GIT_IDXENTRY_NEW_SKIP_WORKTREE (1 << 9)
/* The git_index_capability_t enum */
+/** @deprecated use `GIT_INDEX_CAPABILITY_IGNORE_CASE` */
#define GIT_INDEXCAP_IGNORE_CASE GIT_INDEX_CAPABILITY_IGNORE_CASE
+/** @deprecated use `GIT_INDEX_CAPABILITY_NO_FILEMODE` */
#define GIT_INDEXCAP_NO_FILEMODE GIT_INDEX_CAPABILITY_NO_FILEMODE
+/** @deprecated use `GIT_INDEX_CAPABILITY_NO_SYMLINKS` */
#define GIT_INDEXCAP_NO_SYMLINKS GIT_INDEX_CAPABILITY_NO_SYMLINKS
+/** @deprecated use `GIT_INDEX_CAPABILITY_FROM_OWNER` */
#define GIT_INDEXCAP_FROM_OWNER GIT_INDEX_CAPABILITY_FROM_OWNER
GIT_EXTERN(int) git_index_add_frombuffer(
@@ -548,17 +627,28 @@ GIT_EXTERN(int) git_index_add_frombuffer(
*/
/**@{*/
+/** @deprecate use `git_object_t` */
#define git_otype git_object_t
+/** @deprecate use `GIT_OBJECT_ANY` */
#define GIT_OBJ_ANY GIT_OBJECT_ANY
+/** @deprecate use `GIT_OBJECT_INVALID` */
#define GIT_OBJ_BAD GIT_OBJECT_INVALID
+/** @deprecated this value is not public */
#define GIT_OBJ__EXT1 0
+/** @deprecate use `GIT_OBJECT_COMMIT` */
#define GIT_OBJ_COMMIT GIT_OBJECT_COMMIT
+/** @deprecate use `GIT_OBJECT_TREE` */
#define GIT_OBJ_TREE GIT_OBJECT_TREE
+/** @deprecate use `GIT_OBJECT_BLOB` */
#define GIT_OBJ_BLOB GIT_OBJECT_BLOB
+/** @deprecate use `GIT_OBJECT_TAG` */
#define GIT_OBJ_TAG GIT_OBJECT_TAG
+/** @deprecated this value is not public */
#define GIT_OBJ__EXT2 5
+/** @deprecate use `GIT_OBJECT_OFS_DELTA` */
#define GIT_OBJ_OFS_DELTA GIT_OBJECT_OFS_DELTA
+/** @deprecate use `GIT_OBJECT_REF_DELTA` */
#define GIT_OBJ_REF_DELTA GIT_OBJECT_REF_DELTA
/**
@@ -610,17 +700,27 @@ GIT_EXTERN(int) git_remote_is_valid_name(const char *remote_name);
/**@{*/
/** Basic type of any Git reference. */
+/** @deprecate use `git_reference_t` */
#define git_ref_t git_reference_t
+/** @deprecate use `git_reference_format_t` */
#define git_reference_normalize_t git_reference_format_t
+/** @deprecate use `GIT_REFERENCE_INVALID` */
#define GIT_REF_INVALID GIT_REFERENCE_INVALID
+/** @deprecate use `GIT_REFERENCE_DIRECT` */
#define GIT_REF_OID GIT_REFERENCE_DIRECT
+/** @deprecate use `GIT_REFERENCE_SYMBOLIC` */
#define GIT_REF_SYMBOLIC GIT_REFERENCE_SYMBOLIC
+/** @deprecate use `GIT_REFERENCE_ALL` */
#define GIT_REF_LISTALL GIT_REFERENCE_ALL
+/** @deprecate use `GIT_REFERENCE_FORMAT_NORMAL` */
#define GIT_REF_FORMAT_NORMAL GIT_REFERENCE_FORMAT_NORMAL
+/** @deprecate use `GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL` */
#define GIT_REF_FORMAT_ALLOW_ONELEVEL GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL
+/** @deprecate use `GIT_REFERENCE_FORMAT_REFSPEC_PATTERN` */
#define GIT_REF_FORMAT_REFSPEC_PATTERN GIT_REFERENCE_FORMAT_REFSPEC_PATTERN
+/** @deprecate use `GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND` */
#define GIT_REF_FORMAT_REFSPEC_SHORTHAND GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND
/**
@@ -661,8 +761,11 @@ GIT_EXTERN(int) git_tag_create_frombuffer(
typedef git_revspec_t git_revparse_mode_t;
+/** @deprecated use `GIT_REVSPEC_SINGLE` */
#define GIT_REVPARSE_SINGLE GIT_REVSPEC_SINGLE
+/** @deprecated use `GIT_REVSPEC_RANGE` */
#define GIT_REVPARSE_RANGE GIT_REVSPEC_RANGE
+/** @deprecated use `GIT_REVSPEC_MERGE_BASE` */
#define GIT_REVPARSE_MERGE_BASE GIT_REVSPEC_MERGE_BASE
/**@}*/
@@ -691,14 +794,22 @@ typedef git_credential_sign_cb git_cred_sign_cb;
typedef git_credential_ssh_interactive_cb git_cred_ssh_interactive_callback;
typedef git_credential_ssh_interactive_cb git_cred_ssh_interactive_cb;
+/** @deprecated use `git_credential_t` */
#define git_credtype_t git_credential_t
+/** @deprecated use `GIT_CREDENTIAL_USERPASS_PLAINTEXT` */
#define GIT_CREDTYPE_USERPASS_PLAINTEXT GIT_CREDENTIAL_USERPASS_PLAINTEXT
+/** @deprecated use `GIT_CREDENTIAL_SSH_KEY` */
#define GIT_CREDTYPE_SSH_KEY GIT_CREDENTIAL_SSH_KEY
+/** @deprecated use `GIT_CREDENTIAL_SSH_CUSTOM` */
#define GIT_CREDTYPE_SSH_CUSTOM GIT_CREDENTIAL_SSH_CUSTOM
+/** @deprecated use `GIT_CREDENTIAL_DEFAULT` */
#define GIT_CREDTYPE_DEFAULT GIT_CREDENTIAL_DEFAULT
+/** @deprecated use `GIT_CREDENTIAL_SSH_INTERACTIVE` */
#define GIT_CREDTYPE_SSH_INTERACTIVE GIT_CREDENTIAL_SSH_INTERACTIVE
+/** @deprecated use `GIT_CREDENTIAL_USERNAME` */
#define GIT_CREDTYPE_USERNAME GIT_CREDENTIAL_USERNAME
+/** @deprecated use `GIT_CREDENTIAL_SSH_MEMORY` */
#define GIT_CREDTYPE_SSH_MEMORY GIT_CREDENTIAL_SSH_MEMORY
GIT_EXTERN(void) git_cred_free(git_credential *cred);
@@ -775,6 +886,15 @@ typedef git_trace_cb git_trace_callback;
*/
/**@{*/
+#ifndef GIT_EXPERIMENTAL_SHA256
+/** Deprecated OID "raw size" definition */
+# define GIT_OID_RAWSZ GIT_OID_SHA1_SIZE
+/** Deprecated OID "hex size" definition */
+# define GIT_OID_HEXSZ GIT_OID_SHA1_HEXSIZE
+/** Deprecated OID "hex zero" definition */
+# define GIT_OID_HEX_ZERO GIT_OID_SHA1_HEXZERO
+#endif
+
GIT_EXTERN(int) git_oid_iszero(const git_oid *id);
/**@}*/
@@ -884,6 +1004,24 @@ GIT_EXTERN(void) git_strarray_free(git_strarray *array);
/**@}*/
+/** @name Deprecated Version Constants
+ *
+ * These constants are retained for backward compatibility. The newer
+ * versions of these constants should be preferred in all new code.
+ *
+ * There is no plan to remove these backward compatibility constants at
+ * this time.
+ */
+/**@{*/
+
+#define LIBGIT2_VER_MAJOR LIBGIT2_VERSION_MAJOR
+#define LIBGIT2_VER_MINOR LIBGIT2_VERSION_MINOR
+#define LIBGIT2_VER_REVISION LIBGIT2_VERSION_REVISION
+#define LIBGIT2_VER_PATCH LIBGIT2_VERSION_PATCH
+#define LIBGIT2_VER_PRERELEASE LIBGIT2_VERSION_PRERELEASE
+
+/**@}*/
+
/** @name Deprecated Options Initialization Functions
*
* These functions are retained for backward compatibility. The newer
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/describe.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/describe.h
index 1d2ca14..938c470 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/describe.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/describe.h
@@ -13,10 +13,14 @@
/**
* @file git2/describe.h
- * @brief Git describing routines
+ * @brief Describe a commit in reference to tags
* @defgroup git_describe Git describing routines
* @ingroup Git
* @{
+ *
+ * Describe a commit, showing information about how the current commit
+ * relates to the tags. This can be useful for showing how the current
+ * commit has changed from a particular tagged version of the repository.
*/
GIT_BEGIN_DECL
@@ -30,7 +34,7 @@ GIT_BEGIN_DECL
typedef enum {
GIT_DESCRIBE_DEFAULT,
GIT_DESCRIBE_TAGS,
- GIT_DESCRIBE_ALL,
+ GIT_DESCRIBE_ALL
} git_describe_strategy_t;
/**
@@ -60,10 +64,15 @@ typedef struct git_describe_options {
int show_commit_oid_as_fallback;
} git_describe_options;
+/** Default maximum candidate tags */
#define GIT_DESCRIBE_DEFAULT_MAX_CANDIDATES_TAGS 10
+/** Default abbreviated size */
#define GIT_DESCRIBE_DEFAULT_ABBREVIATED_SIZE 7
+/** Current version for the `git_describe_options` structure */
#define GIT_DESCRIBE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_describe_options` */
#define GIT_DESCRIBE_OPTIONS_INIT { \
GIT_DESCRIBE_OPTIONS_VERSION, \
GIT_DESCRIBE_DEFAULT_MAX_CANDIDATES_TAGS, \
@@ -110,7 +119,10 @@ typedef struct {
const char *dirty_suffix;
} git_describe_format_options;
+/** Current version for the `git_describe_format_options` structure */
#define GIT_DESCRIBE_FORMAT_OPTIONS_VERSION 1
+
+/** Static constructor for `git_describe_format_options` */
#define GIT_DESCRIBE_FORMAT_OPTIONS_INIT { \
GIT_DESCRIBE_FORMAT_OPTIONS_VERSION, \
GIT_DESCRIBE_DEFAULT_ABBREVIATED_SIZE, \
@@ -142,6 +154,7 @@ typedef struct git_describe_result git_describe_result;
* you're done with it.
* @param committish a committish to describe
* @param opts the lookup options (or NULL for defaults)
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_describe_commit(
git_describe_result **result,
@@ -152,13 +165,14 @@ GIT_EXTERN(int) git_describe_commit(
* Describe a commit
*
* Perform the describe operation on the current commit and the
- * worktree. After peforming describe on HEAD, a status is run and the
+ * worktree. After performing describe on HEAD, a status is run and the
* description is considered to be dirty if there are.
*
* @param out pointer to store the result. You must free this once
* you're done with it.
* @param repo the repository in which to perform the describe
* @param opts the lookup options (or NULL for defaults)
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_describe_workdir(
git_describe_result **out,
@@ -172,6 +186,7 @@ GIT_EXTERN(int) git_describe_workdir(
* @param result the result from `git_describe_commit()` or
* `git_describe_workdir()`.
* @param opts the formatting options (or NULL for defaults)
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_describe_format(
git_buf *out,
@@ -180,6 +195,8 @@ GIT_EXTERN(int) git_describe_format(
/**
* Free the describe result.
+ *
+ * @param result The result to free.
*/
GIT_EXTERN(void) git_describe_result_free(git_describe_result *result);
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/diff.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/diff.h
index a14c019..b12e8ab 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/diff.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/diff.h
@@ -15,7 +15,7 @@
/**
* @file git2/diff.h
- * @brief Git tree and file differencing routines.
+ * @brief Indicate the differences between two versions of the repository
* @ingroup Git
* @{
*/
@@ -170,7 +170,7 @@ typedef enum {
/** Include the necessary deflate / delta information so that `git-apply`
* can apply given diff information to binary files.
*/
- GIT_DIFF_SHOW_BINARY = (1u << 30),
+ GIT_DIFF_SHOW_BINARY = (1u << 30)
} git_diff_option_t;
/**
@@ -208,6 +208,7 @@ typedef enum {
GIT_DIFF_FLAG_NOT_BINARY = (1u << 1), /**< file(s) treated as text data */
GIT_DIFF_FLAG_VALID_ID = (1u << 2), /**< `id` value is known correct */
GIT_DIFF_FLAG_EXISTS = (1u << 3), /**< file exists at this side of the delta */
+ GIT_DIFF_FLAG_VALID_SIZE = (1u << 4) /**< file size value is known correct */
} git_diff_flag_t;
/**
@@ -231,7 +232,7 @@ typedef enum {
GIT_DELTA_UNTRACKED = 7, /**< entry is untracked item in workdir */
GIT_DELTA_TYPECHANGE = 8, /**< type of entry changed between old and new */
GIT_DELTA_UNREADABLE = 9, /**< entry is unreadable */
- GIT_DELTA_CONFLICTED = 10, /**< entry in the index is conflicted */
+ GIT_DELTA_CONFLICTED = 10 /**< entry in the index is conflicted */
} git_delta_t;
/**
@@ -273,7 +274,7 @@ typedef struct {
/**
* Represents the known length of the `id` field, when
- * converted to a hex string. It is generally `GIT_OID_HEXSZ`, unless this
+ * converted to a hex string. It is generally `GIT_OID_SHA1_HEXSIZE`, unless this
* delta was created from reading a patch file, in which case it may be
* abbreviated to something reasonable, like 7 characters.
*/
@@ -341,6 +342,12 @@ typedef struct {
* diff process continues.
* - returns 0, the delta is inserted into the diff, and the diff process
* continues.
+ *
+ * @param diff_so_far the diff structure as it currently exists
+ * @param delta_to_add the delta that is to be added
+ * @param matched_pathspec the pathspec
+ * @param payload the user-specified callback payload
+ * @return 0 on success, 1 to skip this delta, or an error code
*/
typedef int GIT_CALLBACK(git_diff_notify_cb)(
const git_diff *diff_so_far,
@@ -356,7 +363,8 @@ typedef int GIT_CALLBACK(git_diff_notify_cb)(
* @param diff_so_far The diff being generated.
* @param old_path The path to the old file or NULL.
* @param new_path The path to the new file or NULL.
- * @return Non-zero to abort the diff.
+ * @param payload the user-specified callback payload
+ * @return 0 or an error code
*/
typedef int GIT_CALLBACK(git_diff_progress_cb)(
const git_diff *diff_so_far,
@@ -420,6 +428,22 @@ typedef struct {
*/
uint32_t interhunk_lines;
+ /**
+ * The object ID type to emit in diffs; this is used by functions
+ * that operate without a repository - namely `git_diff_buffers`,
+ * or `git_diff_blobs` and `git_diff_blob_to_buffer` when one blob
+ * is `NULL`.
+ *
+ * This may be omitted (set to `0`). If a repository is available,
+ * the object ID format of the repository will be used. If no
+ * repository is available then the default is `GIT_OID_SHA`.
+ *
+ * If this is specified and a repository is available, then the
+ * specified `oid_type` must match the repository's object ID
+ * format.
+ */
+ git_oid_t oid_type;
+
/**
* The abbreviation length to use when formatting object ids.
* Defaults to the value of 'core.abbrev' from the config, or 7 if unset.
@@ -446,10 +470,10 @@ typedef struct {
const char *new_prefix;
} git_diff_options;
-/* The current version of the diff options structure */
+/** The current version of the diff options structure */
#define GIT_DIFF_OPTIONS_VERSION 1
-/* Stack initializer for diff options. Alternatively use
+/** Stack initializer for diff options. Alternatively use
* `git_diff_options_init` programmatic initialization.
*/
#define GIT_DIFF_OPTIONS_INIT \
@@ -475,12 +499,14 @@ GIT_EXTERN(int) git_diff_options_init(
* @param delta A pointer to the delta data for the file
* @param progress Goes from 0 to 1 over the diff
* @param payload User-specified pointer from foreach function
+ * @return 0 or an error code
*/
typedef int GIT_CALLBACK(git_diff_file_cb)(
const git_diff_delta *delta,
float progress,
void *payload);
+/** Maximum size of the hunk header */
#define GIT_DIFF_HUNK_HEADER_SIZE 128
/**
@@ -497,7 +523,7 @@ typedef enum {
GIT_DIFF_BINARY_LITERAL,
/** The binary data is the delta from one side to the other. */
- GIT_DIFF_BINARY_DELTA,
+ GIT_DIFF_BINARY_DELTA
} git_diff_binary_t;
/** The contents of one of the files in a binary diff. */
@@ -541,6 +567,11 @@ typedef struct {
/**
* When iterating over a diff, callback that will be made for
* binary content within the diff.
+ *
+ * @param delta the delta
+ * @param binary the binary content
+ * @param payload the user-specified callback payload
+ * @return 0 or an error code
*/
typedef int GIT_CALLBACK(git_diff_binary_cb)(
const git_diff_delta *delta,
@@ -567,6 +598,11 @@ typedef struct {
/**
* When iterating over a diff, callback that will be made per hunk.
+ *
+ * @param delta the delta
+ * @param hunk the hunk
+ * @param payload the user-specified callback payload
+ * @return 0 or an error code
*/
typedef int GIT_CALLBACK(git_diff_hunk_cb)(
const git_diff_delta *delta,
@@ -628,6 +664,12 @@ typedef struct {
* When printing a diff, callback that will be made to output each line
* of text. This uses some extra GIT_DIFF_LINE_... constants for output
* of lines of file and hunk headers.
+ *
+ * @param delta the delta that contains the line
+ * @param hunk the hunk that contains the line
+ * @param line the line in the diff
+ * @param payload the user-specified callback payload
+ * @return 0 or an error code
*/
typedef int GIT_CALLBACK(git_diff_line_cb)(
const git_diff_delta *delta, /**< delta that contains this data */
@@ -706,7 +748,7 @@ typedef enum {
* GIT_DIFF_INCLUDE_UNMODIFIED flag. If you do not want UNMODIFIED
* records in the final result, pass this flag to have them removed.
*/
- GIT_DIFF_FIND_REMOVE_UNMODIFIED = (1u << 16),
+ GIT_DIFF_FIND_REMOVE_UNMODIFIED = (1u << 16)
} git_diff_find_t;
/**
@@ -758,7 +800,7 @@ typedef struct {
uint16_t copy_threshold;
/**
- * Treshold below which similar files will be split into a delete/add pair.
+ * Threshold below which similar files will be split into a delete/add pair.
* This is equivalent to the last part of the -B option. Defaults to 60.
*/
uint16_t break_rewrite_threshold;
@@ -768,7 +810,7 @@ typedef struct {
*
* This is a little different from the `-l` option from Git because we
* will still process up to this many matches before abandoning the search.
- * Defaults to 200.
+ * Defaults to 1000.
*/
size_t rename_limit;
@@ -785,7 +827,10 @@ typedef struct {
git_diff_similarity_metric *metric;
} git_diff_find_options;
+/** Current version for the `git_diff_find_options` structure */
#define GIT_DIFF_FIND_OPTIONS_VERSION 1
+
+/** Static constructor for `git_diff_find_options` */
#define GIT_DIFF_FIND_OPTIONS_INIT {GIT_DIFF_FIND_OPTIONS_VERSION}
/**
@@ -831,6 +876,7 @@ GIT_EXTERN(void) git_diff_free(git_diff *diff);
* @param old_tree A git_tree object to diff from, or NULL for empty tree.
* @param new_tree A git_tree object to diff to, or NULL for empty tree.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_tree_to_tree(
git_diff **diff,
@@ -857,6 +903,7 @@ GIT_EXTERN(int) git_diff_tree_to_tree(
* @param old_tree A git_tree object to diff from, or NULL for empty tree.
* @param index The index to diff with; repo index used if NULL.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_tree_to_index(
git_diff **diff,
@@ -884,6 +931,7 @@ GIT_EXTERN(int) git_diff_tree_to_index(
* @param repo The repository.
* @param index The index to diff from; repo index used if NULL.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_index_to_workdir(
git_diff **diff,
@@ -913,6 +961,7 @@ GIT_EXTERN(int) git_diff_index_to_workdir(
* @param repo The repository containing the tree.
* @param old_tree A git_tree object to diff from, or NULL for empty tree.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_tree_to_workdir(
git_diff **diff,
@@ -932,6 +981,7 @@ GIT_EXTERN(int) git_diff_tree_to_workdir(
* @param repo The repository containing the tree.
* @param old_tree A git_tree object to diff from, or NULL for empty tree.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_tree_to_workdir_with_index(
git_diff **diff,
@@ -950,6 +1000,7 @@ GIT_EXTERN(int) git_diff_tree_to_workdir_with_index(
* @param old_index A git_index object to diff from.
* @param new_index A git_index object to diff to.
* @param opts Structure with options to influence diff or NULL for defaults.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_index_to_index(
git_diff **diff,
@@ -970,6 +1021,7 @@ GIT_EXTERN(int) git_diff_index_to_index(
*
* @param onto Diff to merge into.
* @param from Diff to merge.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_diff_merge(
git_diff *onto,
@@ -1107,7 +1159,7 @@ typedef enum {
GIT_DIFF_FORMAT_RAW = 3u, /**< like git diff --raw */
GIT_DIFF_FORMAT_NAME_ONLY = 4u, /**< like git diff --name-only */
GIT_DIFF_FORMAT_NAME_STATUS = 5u, /**< like git diff --name-status */
- GIT_DIFF_FORMAT_PATCH_ID = 6u, /**< git diff as used by git patch-id */
+ GIT_DIFF_FORMAT_PATCH_ID = 6u /**< git diff as used by git patch-id */
} git_diff_format_t;
/**
@@ -1145,9 +1197,8 @@ GIT_EXTERN(int) git_diff_to_buf(
/**@}*/
-
/*
- * Misc
+ * Low-level file comparison, invoking callbacks per difference.
*/
/**
@@ -1263,6 +1314,25 @@ GIT_EXTERN(int) git_diff_buffers(
git_diff_line_cb line_cb,
void *payload);
+/* Patch file parsing. */
+
+/**
+ * Options for parsing a diff / patch file.
+ */
+typedef struct {
+ unsigned int version;
+ git_oid_t oid_type;
+} git_diff_parse_options;
+
+/** The current version of the diff parse options structure */
+#define GIT_DIFF_PARSE_OPTIONS_VERSION 1
+
+/** Stack initializer for diff parse options. Alternatively use
+ * `git_diff_parse_options_init` programmatic initialization.
+ */
+#define GIT_DIFF_PARSE_OPTIONS_INIT \
+ { GIT_DIFF_PARSE_OPTIONS_VERSION, GIT_OID_DEFAULT }
+
/**
* Read the contents of a git patch file into a `git_diff` object.
*
@@ -1285,7 +1355,11 @@ GIT_EXTERN(int) git_diff_buffers(
GIT_EXTERN(int) git_diff_from_buffer(
git_diff **out,
const char *content,
- size_t content_len);
+ size_t content_len
+#ifdef GIT_EXPERIMENTAL_SHA256
+ , git_diff_parse_options *opts
+#endif
+ );
/**
* This is an opaque structure which is allocated by `git_diff_get_stats`.
@@ -1311,13 +1385,13 @@ typedef enum {
GIT_DIFF_STATS_NUMBER = (1u << 2),
/** Extended header information such as creations, renames and mode changes, equivalent of `--summary` */
- GIT_DIFF_STATS_INCLUDE_SUMMARY = (1u << 3),
+ GIT_DIFF_STATS_INCLUDE_SUMMARY = (1u << 3)
} git_diff_stats_format_t;
/**
* Accumulate diff statistics for all patches.
*
- * @param out Structure containg the diff statistics.
+ * @param out Structure containing the diff statistics.
* @param diff A git_diff generated by one of the above functions.
* @return 0 on success; non-zero on error
*/
@@ -1386,7 +1460,10 @@ typedef struct git_diff_patchid_options {
unsigned int version;
} git_diff_patchid_options;
+/** Current version for the `git_diff_patchid_options` structure */
#define GIT_DIFF_PATCHID_OPTIONS_VERSION 1
+
+/** Static constructor for `git_diff_patchid_options` */
#define GIT_DIFF_PATCHID_OPTIONS_INIT { GIT_DIFF_PATCHID_OPTIONS_VERSION }
/**
@@ -1424,8 +1501,7 @@ GIT_EXTERN(int) git_diff_patchid_options_init(
*/
GIT_EXTERN(int) git_diff_patchid(git_oid *out, git_diff *diff, git_diff_patchid_options *opts);
-GIT_END_DECL
-
/** @} */
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/email.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/email.h
index b56be5d..ad37e42 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/email.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/email.h
@@ -8,10 +8,11 @@
#define INCLUDE_git_email_h__
#include "common.h"
+#include "diff.h"
/**
* @file git2/email.h
- * @brief Git email formatting and application routines.
+ * @brief Produce email-ready patches
* @ingroup Git
* @{
*/
@@ -34,7 +35,7 @@ typedef enum {
GIT_EMAIL_CREATE_ALWAYS_NUMBER = (1u << 1),
/** Do not perform rename or similarity detection. */
- GIT_EMAIL_CREATE_NO_RENAMES = (1u << 2),
+ GIT_EMAIL_CREATE_NO_RENAMES = (1u << 2)
} git_email_create_flags_t;
/**
@@ -70,11 +71,14 @@ typedef struct {
size_t reroll_number;
} git_email_create_options;
-/*
+/** Current version for the `git_email_create_options` structure */
+#define GIT_EMAIL_CREATE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_email_create_options`
+ *
* By default, our options include rename detection and binary
* diffs to match `git format-patch`.
*/
-#define GIT_EMAIL_CREATE_OPTIONS_VERSION 1
#define GIT_EMAIL_CREATE_OPTIONS_INIT \
{ \
GIT_EMAIL_CREATE_OPTIONS_VERSION, \
@@ -83,30 +87,6 @@ typedef struct {
GIT_DIFF_FIND_OPTIONS_INIT \
}
-/**
- * Create a diff for a commit in mbox format for sending via email.
- *
- * @param out buffer to store the e-mail patch in
- * @param diff the changes to include in the email
- * @param patch_idx the patch index
- * @param patch_count the total number of patches that will be included
- * @param commit_id the commit id for this change
- * @param summary the commit message for this change
- * @param body optional text to include above the diffstat
- * @param author the person who authored this commit
- * @param opts email creation options
- */
-GIT_EXTERN(int) git_email_create_from_diff(
- git_buf *out,
- git_diff *diff,
- size_t patch_idx,
- size_t patch_count,
- const git_oid *commit_id,
- const char *summary,
- const char *body,
- const git_signature *author,
- const git_email_create_options *opts);
-
/**
* Create a diff for a commit in mbox format for sending via email.
* The commit must not be a merge commit.
@@ -114,14 +94,14 @@ GIT_EXTERN(int) git_email_create_from_diff(
* @param out buffer to store the e-mail patch in
* @param commit commit to create a patch for
* @param opts email creation options
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_email_create_from_commit(
git_buf *out,
git_commit *commit,
const git_email_create_options *opts);
-GIT_END_DECL
-
/** @} */
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/errors.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/errors.h
index de51582..1141390 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/errors.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/errors.h
@@ -11,7 +11,7 @@
/**
* @file git2/errors.h
- * @brief Git error handling routines and variables
+ * @brief Error handling routines and variables
* @ingroup Git
* @{
*/
@@ -19,25 +19,32 @@ GIT_BEGIN_DECL
/** Generic return codes */
typedef enum {
- GIT_OK = 0, /**< No error */
+ /**
+ * No error occurred; the call was successful.
+ */
+ GIT_OK = 0,
+
+ /**
+ * An error occurred; call `git_error_last` for more information.
+ */
+ GIT_ERROR = -1,
- GIT_ERROR = -1, /**< Generic error */
- GIT_ENOTFOUND = -3, /**< Requested object could not be found */
- GIT_EEXISTS = -4, /**< Object exists preventing operation */
- GIT_EAMBIGUOUS = -5, /**< More than one object matches */
- GIT_EBUFS = -6, /**< Output buffer too short to hold data */
+ GIT_ENOTFOUND = -3, /**< Requested object could not be found. */
+ GIT_EEXISTS = -4, /**< Object exists preventing operation. */
+ GIT_EAMBIGUOUS = -5, /**< More than one object matches. */
+ GIT_EBUFS = -6, /**< Output buffer too short to hold data. */
/**
* GIT_EUSER is a special error that is never generated by libgit2
* code. You can return it from a callback (e.g to stop an iteration)
* to know that it was generated by the callback and not by libgit2.
*/
- GIT_EUSER = -7,
+ GIT_EUSER = -7,
- GIT_EBAREREPO = -8, /**< Operation not allowed on bare repository */
- GIT_EUNBORNBRANCH = -9, /**< HEAD refers to branch with no commits */
- GIT_EUNMERGED = -10, /**< Merge in progress prevented operation */
- GIT_ENONFASTFORWARD = -11, /**< Reference was not fast-forwardable */
+ GIT_EBAREREPO = -8, /**< Operation not allowed on bare repository. */
+ GIT_EUNBORNBRANCH = -9, /**< HEAD refers to branch with no commits. */
+ GIT_EUNMERGED = -10, /**< Merge in progress prevented operation */
+ GIT_ENONFASTFORWARD = -11, /**< Reference was not fast-forwardable */
GIT_EINVALIDSPEC = -12, /**< Name/ref spec was not in a valid format */
GIT_ECONFLICT = -13, /**< Checkout conflicts prevented operation */
GIT_ELOCKED = -14, /**< Lock file prevented operation */
@@ -58,20 +65,17 @@ typedef enum {
GIT_EMISMATCH = -33, /**< Hashsum mismatch in object */
GIT_EINDEXDIRTY = -34, /**< Unsaved changes in the index would be overwritten */
GIT_EAPPLYFAIL = -35, /**< Patch application failed */
+ GIT_EOWNER = -36, /**< The object is not owned by the current user */
+ GIT_TIMEOUT = -37, /**< The operation timed out */
+ GIT_EUNCHANGED = -38, /**< There were no changes */
+ GIT_ENOTSUPPORTED = -39, /**< An option is not supported */
+ GIT_EREADONLY = -40 /**< The subject is read-only */
} git_error_code;
/**
- * Structure to store extra details of the last error that occurred.
- *
- * This is kept on a per-thread basis if GIT_THREADS was defined when the
- * library was build, otherwise one is kept globally for the library
+ * Error classes are the category of error. They reflect the area of the
+ * code where an error occurred.
*/
-typedef struct {
- char *message;
- int klass;
-} git_error;
-
-/** Error classes */
typedef enum {
GIT_ERROR_NONE = 0,
GIT_ERROR_NOMEMORY,
@@ -106,59 +110,45 @@ typedef enum {
GIT_ERROR_FILESYSTEM,
GIT_ERROR_PATCH,
GIT_ERROR_WORKTREE,
- GIT_ERROR_SHA1,
+ GIT_ERROR_SHA,
GIT_ERROR_HTTP,
- GIT_ERROR_INTERNAL
+ GIT_ERROR_INTERNAL,
+ GIT_ERROR_GRAFTS
} git_error_t;
/**
- * Return the last `git_error` object that was generated for the
- * current thread.
- *
- * The default behaviour of this function is to return NULL if no previous error has occurred.
- * However, libgit2's error strings are not cleared aggressively, so a prior
- * (unrelated) error may be returned. This can be avoided by only calling
- * this function if the prior call to a libgit2 API returned an error.
+ * Structure to store extra details of the last error that occurred.
*
- * @return A git_error object.
- */
-GIT_EXTERN(const git_error *) git_error_last(void);
-
-/**
- * Clear the last library error that occurred for this thread.
+ * This is kept on a per-thread basis if GIT_THREADS was defined when the
+ * library was build, otherwise one is kept globally for the library
*/
-GIT_EXTERN(void) git_error_clear(void);
+typedef struct {
+ char *message; /**< The error message for the last error. */
+ int klass; /**< The category of the last error. @type git_error_t */
+} git_error;
/**
- * Set the error message string for this thread.
+ * Return the last `git_error` object that was generated for the
+ * current thread.
*
- * This function is public so that custom ODB backends and the like can
- * relay an error message through libgit2. Most regular users of libgit2
- * will never need to call this function -- actually, calling it in most
- * circumstances (for example, calling from within a callback function)
- * will just end up having the value overwritten by libgit2 internals.
+ * This function will never return NULL.
*
- * This error message is stored in thread-local storage and only applies
- * to the particular thread that this libgit2 call is made from.
+ * Callers should not rely on this to determine whether an error has
+ * occurred. For error checking, callers should examine the return
+ * codes of libgit2 functions.
*
- * @param error_class One of the `git_error_t` enum above describing the
- * general subsystem that is responsible for the error.
- * @param string The formatted error message to keep
- * @return 0 on success or -1 on failure
- */
-GIT_EXTERN(int) git_error_set_str(int error_class, const char *string);
-
-/**
- * Set the error message to a special value for memory allocation failure.
+ * This call can only reliably report error messages when an error
+ * has occurred. (It may contain stale information if it is called
+ * after a different function that succeeds.)
+ *
+ * The memory for this object is managed by libgit2. It should not
+ * be freed.
*
- * The normal `git_error_set_str()` function attempts to `strdup()` the
- * string that is passed in. This is not a good idea when the error in
- * question is a memory allocation failure. That circumstance has a
- * special setter function that sets the error string to a known and
- * statically allocated internal value.
+ * @return A pointer to a `git_error` object that describes the error.
*/
-GIT_EXTERN(void) git_error_set_oom(void);
+GIT_EXTERN(const git_error *) git_error_last(void);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/experimental.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/experimental.h
new file mode 100644
index 0000000..543f62f
--- /dev/null
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/experimental.h
@@ -0,0 +1,13 @@
+/*
+ * Copyright (C) the libgit2 contributors. All rights reserved.
+ *
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
+ * a Linking Exception. For full terms see the included COPYING file.
+ */
+
+#ifndef INCLUDE_experimental_h__
+#define INCLUDE_experimental_h__
+
+/* #undef GIT_EXPERIMENTAL_SHA256 */
+
+#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/filter.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/filter.h
index 0465e5b..cf6c5f5 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/filter.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/filter.h
@@ -14,9 +14,15 @@
/**
* @file git2/filter.h
- * @brief Git filter APIs
- *
+ * @brief Filters modify files during checkout or commit
* @ingroup Git
+ *
+ * During checkout, filters update a file from a "canonical" state to
+ * a format appropriate for the local filesystem; during commit, filters
+ * produce the canonical state. For example, on Windows, the line ending
+ * filters _may_ take a canonical state (with Unix-style newlines) in
+ * the repository, and place the contents on-disk with Windows-style
+ * `\r\n` line endings.
* @{
*/
GIT_BEGIN_DECL
@@ -32,7 +38,7 @@ typedef enum {
GIT_FILTER_TO_WORKTREE = 0,
GIT_FILTER_SMUDGE = GIT_FILTER_TO_WORKTREE,
GIT_FILTER_TO_ODB = 1,
- GIT_FILTER_CLEAN = GIT_FILTER_TO_ODB,
+ GIT_FILTER_CLEAN = GIT_FILTER_TO_ODB
} git_filter_mode_t;
/**
@@ -54,7 +60,7 @@ typedef enum {
* Load attributes from `.gitattributes` in a given commit.
* This can only be specified in a `git_filter_options`.
*/
- GIT_FILTER_ATTRIBUTES_FROM_COMMIT = (1u << 3),
+ GIT_FILTER_ATTRIBUTES_FROM_COMMIT = (1u << 3)
} git_filter_flag_t;
/**
@@ -79,8 +85,11 @@ typedef struct {
git_oid attr_commit_id;
} git_filter_options;
- #define GIT_FILTER_OPTIONS_VERSION 1
- #define GIT_FILTER_OPTIONS_INIT {GIT_FILTER_OPTIONS_VERSION}
+/** Current version for the `git_filter_options` structure */
+#define GIT_FILTER_OPTIONS_VERSION 1
+
+/** Static constructor for `git_filter_options` */
+#define GIT_FILTER_OPTIONS_INIT {GIT_FILTER_OPTIONS_VERSION}
/**
* A filter that can transform file data
@@ -196,6 +205,7 @@ GIT_EXTERN(int) git_filter_list_apply_to_buffer(
* @param repo the repository in which to perform the filtering
* @param path the path of the file to filter, a relative path will be
* taken as relative to the workdir
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_filter_list_apply_to_file(
git_buf *out,
@@ -209,6 +219,7 @@ GIT_EXTERN(int) git_filter_list_apply_to_file(
* @param out buffer into which to store the filtered file
* @param filters the list of filters to apply
* @param blob the blob to filter
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_filter_list_apply_to_blob(
git_buf *out,
@@ -222,6 +233,7 @@ GIT_EXTERN(int) git_filter_list_apply_to_blob(
* @param buffer the buffer to filter
* @param len the size of the buffer
* @param target the stream into which the data will be written
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_filter_list_stream_buffer(
git_filter_list *filters,
@@ -237,6 +249,7 @@ GIT_EXTERN(int) git_filter_list_stream_buffer(
* @param path the path of the file to filter, a relative path will be
* taken as relative to the workdir
* @param target the stream into which the data will be written
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_filter_list_stream_file(
git_filter_list *filters,
@@ -250,6 +263,7 @@ GIT_EXTERN(int) git_filter_list_stream_file(
* @param filters the list of filters to apply
* @param blob the blob to filter
* @param target the stream into which the data will be written
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_filter_list_stream_blob(
git_filter_list *filters,
@@ -263,9 +277,7 @@ GIT_EXTERN(int) git_filter_list_stream_blob(
*/
GIT_EXTERN(void) git_filter_list_free(git_filter_list *filters);
-
-GIT_END_DECL
-
/** @} */
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/global.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/global.h
index 2a87e10..f15eb2d 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/global.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/global.h
@@ -9,6 +9,12 @@
#include "common.h"
+/**
+ * @file git2/global.h
+ * @brief libgit2 library initializer and shutdown functionality
+ * @ingroup Git
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -32,7 +38,7 @@ GIT_EXTERN(int) git_libgit2_init(void);
* many times as `git_libgit2_init()` was called - it will return the
* number of remainining initializations that have not been shutdown
* (after this one).
- *
+ *
* @return the number of remaining initializations of the library, or an
* error code.
*/
@@ -40,5 +46,6 @@ GIT_EXTERN(int) git_libgit2_shutdown(void);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/graph.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/graph.h
index 712ae47..1792020 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/graph.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/graph.h
@@ -13,7 +13,7 @@
/**
* @file git2/graph.h
- * @brief Git graph traversal routines
+ * @brief Graph traversal routines
* @defgroup git_revwalk Git graph traversal routines
* @ingroup Git
* @{
@@ -33,6 +33,7 @@ GIT_BEGIN_DECL
* @param repo the repository where the commits exist
* @param local the commit for local
* @param upstream the commit for upstream
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_graph_ahead_behind(size_t *ahead, size_t *behind, git_repository *repo, const git_oid *local, const git_oid *upstream);
@@ -60,8 +61,8 @@ GIT_EXTERN(int) git_graph_descendant_of(
*
* @param repo the repository where the commits exist
* @param commit a previously loaded commit
- * @param length the number of commits in the provided `descendant_array`
* @param descendant_array oids of the commits
+ * @param length the number of commits in the provided `descendant_array`
* @return 1 if the given commit is an ancestor of any of the given potential
* descendants, 0 if not, error code otherwise.
*/
@@ -73,4 +74,5 @@ GIT_EXTERN(int) git_graph_reachable_from_any(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/ignore.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/ignore.h
index f5143f3..730f221 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/ignore.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/ignore.h
@@ -10,6 +10,15 @@
#include "common.h"
#include "types.h"
+/**
+ * @file git2/ignore.h
+ * @brief Ignore particular untracked files
+ * @ingroup Git
+ * @{
+ *
+ * When examining the repository status, git can optionally ignore
+ * specified untracked files.
+ */
GIT_BEGIN_DECL
/**
@@ -29,7 +38,7 @@ GIT_BEGIN_DECL
* This would add three rules to the ignores.
*
* @param repo The repository to add ignore rules to.
- * @param rules Text of rules, a la the contents of a .gitignore file.
+ * @param rules Text of rules, the contents to add on a .gitignore file.
* It is okay to have multiple rules in the text; if so,
* each rule should be terminated with a newline.
* @return 0 on success
@@ -73,6 +82,7 @@ GIT_EXTERN(int) git_ignore_path_is_ignored(
git_repository *repo,
const char *path);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/index.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/index.h
index 532a520..0adff1a 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/index.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/index.h
@@ -15,9 +15,14 @@
/**
* @file git2/index.h
- * @brief Git index parsing and manipulation routines
+ * @brief Index (aka "cache" aka "staging area")
* @defgroup git_index Git index parsing and manipulation routines
* @ingroup Git
+ *
+ * The index (or "cache", or "staging area") is the contents of the
+ * next commit. In addition, the index stores other data, such as
+ * conflicts that occurred during the last merge operation, and
+ * the "treecache" to speed up various on-disk operations.
* @{
*/
GIT_BEGIN_DECL
@@ -77,8 +82,11 @@ typedef struct git_index_entry {
* data in the `flags`.
*/
+/** Mask for name length */
#define GIT_INDEX_ENTRY_NAMEMASK (0x0fff)
+/** Mask for index entry stage */
#define GIT_INDEX_ENTRY_STAGEMASK (0x3000)
+/** Shift bits for index entry */
#define GIT_INDEX_ENTRY_STAGESHIFT 12
/**
@@ -86,12 +94,20 @@ typedef struct git_index_entry {
*/
typedef enum {
GIT_INDEX_ENTRY_EXTENDED = (0x4000),
- GIT_INDEX_ENTRY_VALID = (0x8000),
+ GIT_INDEX_ENTRY_VALID = (0x8000)
} git_index_entry_flag_t;
+/**
+ * Macro to get the stage value (0 for the "main index", or a conflict
+ * value) from an index entry.
+ */
#define GIT_INDEX_ENTRY_STAGE(E) \
(((E)->flags & GIT_INDEX_ENTRY_STAGEMASK) >> GIT_INDEX_ENTRY_STAGESHIFT)
+/**
+ * Macro to set the stage value (0 for the "main index", or a conflict
+ * value) for an index entry.
+ */
#define GIT_INDEX_ENTRY_STAGE_SET(E,S) do { \
(E)->flags = ((E)->flags & ~GIT_INDEX_ENTRY_STAGEMASK) | \
(((S) & 0x03) << GIT_INDEX_ENTRY_STAGESHIFT); } while (0)
@@ -119,7 +135,7 @@ typedef enum {
GIT_INDEX_ENTRY_EXTENDED_FLAGS = (GIT_INDEX_ENTRY_INTENT_TO_ADD | GIT_INDEX_ENTRY_SKIP_WORKTREE),
- GIT_INDEX_ENTRY_UPTODATE = (1 << 2),
+ GIT_INDEX_ENTRY_UPTODATE = (1 << 2)
} git_index_entry_extended_flag_t;
/** Capabilities of system that affect index actions. */
@@ -127,11 +143,18 @@ typedef enum {
GIT_INDEX_CAPABILITY_IGNORE_CASE = 1,
GIT_INDEX_CAPABILITY_NO_FILEMODE = 2,
GIT_INDEX_CAPABILITY_NO_SYMLINKS = 4,
- GIT_INDEX_CAPABILITY_FROM_OWNER = -1,
+ GIT_INDEX_CAPABILITY_FROM_OWNER = -1
} git_index_capability_t;
-/** Callback for APIs that add/remove/update files matching pathspec */
+/**
+ * Callback for APIs that add/remove/update files matching pathspec
+ *
+ * @param path the path
+ * @param matched_pathspec the given pathspec
+ * @param payload the user-specified payload
+ * @return 0 to continue with the index operation, positive number to skip this file for the index operation, negative number on failure
+ */
typedef int GIT_CALLBACK(git_index_matched_path_cb)(
const char *path, const char *matched_pathspec, void *payload);
@@ -140,7 +163,7 @@ typedef enum {
GIT_INDEX_ADD_DEFAULT = 0,
GIT_INDEX_ADD_FORCE = (1u << 0),
GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH = (1u << 1),
- GIT_INDEX_ADD_CHECK_PATHSPEC = (1u << 2),
+ GIT_INDEX_ADD_CHECK_PATHSPEC = (1u << 2)
} git_index_add_option_t;
/** Git index stage states */
@@ -163,9 +186,77 @@ typedef enum {
GIT_INDEX_STAGE_OURS = 2,
/** The "theirs" side of a conflict. */
- GIT_INDEX_STAGE_THEIRS = 3,
+ GIT_INDEX_STAGE_THEIRS = 3
} git_index_stage_t;
+#ifdef GIT_EXPERIMENTAL_SHA256
+
+/**
+ * The options for opening or creating an index.
+ *
+ * Initialize with `GIT_INDEX_OPTIONS_INIT`. Alternatively, you can
+ * use `git_index_options_init`.
+ *
+ * @options[version] GIT_INDEX_OPTIONS_VERSION
+ * @options[init_macro] GIT_INDEX_OPTIONS_INIT
+ * @options[init_function] git_index_options_init
+ */
+typedef struct git_index_options {
+ unsigned int version; /**< The version */
+
+ /**
+ * The object ID type for the object IDs that exist in the index.
+ *
+ * If this is not specified, this defaults to `GIT_OID_SHA1`.
+ */
+ git_oid_t oid_type;
+} git_index_options;
+
+/** Current version for the `git_index_options` structure */
+#define GIT_INDEX_OPTIONS_VERSION 1
+
+/** Static constructor for `git_index_options` */
+#define GIT_INDEX_OPTIONS_INIT { GIT_INDEX_OPTIONS_VERSION }
+
+/**
+ * Initialize git_index_options structure
+ *
+ * Initializes a `git_index_options` with default values. Equivalent to creating
+ * an instance with GIT_INDEX_OPTIONS_INIT.
+ *
+ * @param opts The `git_index_options` struct to initialize.
+ * @param version The struct version; pass `GIT_INDEX_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_index_options_init(
+ git_index_options *opts,
+ unsigned int version);
+
+/**
+ * Creates a new bare Git index object, without a repository to back
+ * it. This index object is capable of storing SHA256 objects.
+ *
+ * @param index_out the pointer for the new index
+ * @param index_path the path to the index file in disk
+ * @param opts the options for opening the index, or NULL
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_index_open(
+ git_index **index_out,
+ const char *index_path,
+ const git_index_options *opts);
+
+/**
+ * Create an in-memory index object.
+ *
+ * @param index_out the pointer for the new index
+ * @param opts the options for opening the index, or NULL
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_index_new(git_index **index_out, const git_index_options *opts);
+
+#else
+
/**
* Create a new bare Git index object as a memory representation
* of the Git index file in 'index_path', without a repository
@@ -180,11 +271,11 @@ typedef enum {
*
* The index must be freed once it's no longer in use.
*
- * @param out the pointer for the new index
+ * @param index_out the pointer for the new index
* @param index_path the path to the index file in disk
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_index_open(git_index **out, const char *index_path);
+GIT_EXTERN(int) git_index_open(git_index **index_out, const char *index_path);
/**
* Create an in-memory index object.
@@ -194,10 +285,12 @@ GIT_EXTERN(int) git_index_open(git_index **out, const char *index_path);
*
* The index must be freed once it's no longer in use.
*
- * @param out the pointer for the new index
+ * @param index_out the pointer for the new index
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_index_new(git_index **out);
+GIT_EXTERN(int) git_index_new(git_index **index_out);
+
+#endif
/**
* Free an existing index object.
@@ -296,6 +389,7 @@ GIT_EXTERN(int) git_index_write(git_index *index);
*/
GIT_EXTERN(const char *) git_index_path(const git_index *index);
+#ifndef GIT_DEPRECATE_HARD
/**
* Get the checksum of the index
*
@@ -303,10 +397,12 @@ GIT_EXTERN(const char *) git_index_path(const git_index *index);
* last 20 bytes which are the checksum itself). In cases where the
* index does not exist on-disk, it will be zeroed out.
*
+ * @deprecated this function is deprecated with no replacement
* @param index an existing index object
* @return a pointer to the checksum of the index
*/
GIT_EXTERN(const git_oid *) git_index_checksum(git_index *index);
+#endif
/**
* Read a tree into the index file with stats
@@ -491,6 +587,7 @@ GIT_EXTERN(int) git_index_entry_is_conflict(const git_index_entry *entry);
*
* @param iterator_out The newly created iterator
* @param index The index to iterate
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_index_iterator_new(
git_index_iterator **iterator_out,
@@ -787,6 +884,7 @@ GIT_EXTERN(int) git_index_conflict_cleanup(git_index *index);
/**
* Determine if the index contains entries representing file conflicts.
*
+ * @param index An existing index object.
* @return 1 if at least one conflict is found, 0 otherwise.
*/
GIT_EXTERN(int) git_index_has_conflicts(const git_index *index);
@@ -811,6 +909,7 @@ GIT_EXTERN(int) git_index_conflict_iterator_new(
* @param ancestor_out Pointer to store the ancestor side of the conflict
* @param our_out Pointer to store our side of the conflict
* @param their_out Pointer to store their side of the conflict
+ * @param iterator The conflict iterator.
* @return 0 (no error), GIT_ITEROVER (iteration is done) or an error code
* (negative value)
*/
@@ -830,4 +929,5 @@ GIT_EXTERN(void) git_index_conflict_iterator_free(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/indexer.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/indexer.h
index a434d24..9aaedc3 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/indexer.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/indexer.h
@@ -4,13 +4,23 @@
* This file is part of libgit2, distributed under the GNU GPL v2 with
* a Linking Exception. For full terms see the included COPYING file.
*/
-#ifndef _INCLUDE_git_indexer_h__
-#define _INCLUDE_git_indexer_h__
+#ifndef INCLUDE_git_indexer_h__
+#define INCLUDE_git_indexer_h__
#include "common.h"
#include "types.h"
#include "oid.h"
+/**
+ * @file git2/indexer.h
+ * @brief Packfile indexing
+ * @ingroup Git
+ * @{
+ *
+ * Indexing is the operation of taking a packfile - which is simply a
+ * collection of unordered commits - and producing an "index" so that
+ * one can lookup a commit in the packfile by object ID.
+ */
GIT_BEGIN_DECL
/** A git indexer object */
@@ -53,6 +63,7 @@ typedef struct git_indexer_progress {
*
* @param stats Structure containing information about the state of the transfer
* @param payload Payload provided by caller
+ * @return 0 on success or an error code
*/
typedef int GIT_CALLBACK(git_indexer_progress_cb)(const git_indexer_progress *stats, void *payload);
@@ -62,6 +73,22 @@ typedef int GIT_CALLBACK(git_indexer_progress_cb)(const git_indexer_progress *st
typedef struct git_indexer_options {
unsigned int version;
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /** permissions to use creating packfile or 0 for defaults */
+ unsigned int mode;
+
+ /** the type of object ids in the packfile or 0 for SHA1 */
+ git_oid_t oid_type;
+
+ /**
+ * object database from which to read base objects when
+ * fixing thin packs. This can be NULL if there are no thin
+ * packs; if a thin pack is encountered, an error will be
+ * returned if there are bases missing.
+ */
+ git_odb *odb;
+#endif
+
/** progress_cb function to call with progress information */
git_indexer_progress_cb progress_cb;
@@ -72,7 +99,10 @@ typedef struct git_indexer_options {
unsigned char verify;
} git_indexer_options;
+/** Current version for the `git_indexer_options` structure */
#define GIT_INDEXER_OPTIONS_VERSION 1
+
+/** Static constructor for `git_indexer_options` */
#define GIT_INDEXER_OPTIONS_INIT { GIT_INDEXER_OPTIONS_VERSION }
/**
@@ -87,6 +117,20 @@ GIT_EXTERN(int) git_indexer_options_init(
git_indexer_options *opts,
unsigned int version);
+#ifdef GIT_EXPERIMENTAL_SHA256
+/**
+ * Create a new indexer instance
+ *
+ * @param out where to store the indexer instance
+ * @param path to the directory where the packfile should be stored
+ * @param opts the options to create the indexer with
+ * @return 0 or an error code.
+ */
+GIT_EXTERN(int) git_indexer_new(
+ git_indexer **out,
+ const char *path,
+ git_indexer_options *opts);
+#else
/**
* Create a new indexer instance
*
@@ -98,6 +142,7 @@ GIT_EXTERN(int) git_indexer_options_init(
* will be returned if there are bases missing)
* @param opts Optional structure containing additional options. See
* `git_indexer_options` above.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_indexer_new(
git_indexer **out,
@@ -105,6 +150,7 @@ GIT_EXTERN(int) git_indexer_new(
unsigned int mode,
git_odb *odb,
git_indexer_options *opts);
+#endif
/**
* Add data to the indexer
@@ -113,6 +159,7 @@ GIT_EXTERN(int) git_indexer_new(
* @param data the data to add
* @param size the size of the data in bytes
* @param stats stat storage
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_indexer_append(git_indexer *idx, const void *data, size_t size, git_indexer_progress *stats);
@@ -122,18 +169,35 @@ GIT_EXTERN(int) git_indexer_append(git_indexer *idx, const void *data, size_t si
* Resolve any pending deltas and write out the index file
*
* @param idx the indexer
+ * @param stats Stat storage.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_indexer_commit(git_indexer *idx, git_indexer_progress *stats);
+#ifndef GIT_DEPRECATE_HARD
/**
* Get the packfile's hash
*
* A packfile's name is derived from the sorted hashing of all object
* names. This is only correct after the index has been finalized.
*
+ * @deprecated use git_indexer_name
* @param idx the indexer instance
+ * @return the packfile's hash
*/
GIT_EXTERN(const git_oid *) git_indexer_hash(const git_indexer *idx);
+#endif
+
+/**
+ * Get the unique name for the resulting packfile.
+ *
+ * The packfile's name is derived from the packfile's content.
+ * This is only correct after the index has been finalized.
+ *
+ * @param idx the indexer instance
+ * @return a NUL terminated string for the packfile name
+ */
+GIT_EXTERN(const char *) git_indexer_name(const git_indexer *idx);
/**
* Free the indexer and its resources
@@ -142,6 +206,7 @@ GIT_EXTERN(const git_oid *) git_indexer_hash(const git_indexer *idx);
*/
GIT_EXTERN(void) git_indexer_free(git_indexer *idx);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/mailmap.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/mailmap.h
index 7c3f60f..fd6ae71 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/mailmap.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/mailmap.h
@@ -13,10 +13,15 @@
/**
* @file git2/mailmap.h
- * @brief Mailmap parsing routines
+ * @brief Mailmaps provide alternate email addresses for users
* @defgroup git_mailmap Git mailmap routines
* @ingroup Git
* @{
+ *
+ * A mailmap can be used to specify alternate email addresses for
+ * repository committers or authors. This allows systems to map
+ * commits made using different email addresses to the same logical
+ * person.
*/
GIT_BEGIN_DECL
@@ -112,4 +117,5 @@ GIT_EXTERN(int) git_mailmap_resolve_signature(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/merge.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/merge.h
index fc27c9d..be3b065 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/merge.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/merge.h
@@ -17,9 +17,12 @@
/**
* @file git2/merge.h
- * @brief Git merge routines
+ * @brief Merge re-joins diverging branches of history
* @defgroup git_merge Git merge routines
* @ingroup Git
+ *
+ * Merge will take two commits and attempt to produce a commit that
+ * includes the changes that were made in both branches.
* @{
*/
GIT_BEGIN_DECL
@@ -45,7 +48,10 @@ typedef struct {
unsigned int mode;
} git_merge_file_input;
+/** Current version for the `git_merge_file_input_options` structure */
#define GIT_MERGE_FILE_INPUT_VERSION 1
+
+/** Static constructor for `git_merge_file_input_options` */
#define GIT_MERGE_FILE_INPUT_INIT {GIT_MERGE_FILE_INPUT_VERSION}
/**
@@ -92,6 +98,14 @@ typedef enum {
* merge base to `git-merge-resolve`.
*/
GIT_MERGE_NO_RECURSIVE = (1 << 3),
+
+ /**
+ * Treat this merge as if it is to produce the virtual base
+ * of a recursive merge. This will ensure that there are
+ * no conflicts, any conflicting regions will keep conflict
+ * markers in the merge result.
+ */
+ GIT_MERGE_VIRTUAL_BASE = (1 << 4)
} git_merge_flag_t;
/**
@@ -127,7 +141,7 @@ typedef enum {
* which has the result of combining both files. The index will not
* record a conflict.
*/
- GIT_MERGE_FILE_FAVOR_UNION = 3,
+ GIT_MERGE_FILE_FAVOR_UNION = 3
} git_merge_file_favor_t;
/**
@@ -160,8 +174,19 @@ typedef enum {
/** Take extra time to find minimal diff */
GIT_MERGE_FILE_DIFF_MINIMAL = (1 << 7),
+
+ /** Create zdiff3 ("zealous diff3")-style files */
+ GIT_MERGE_FILE_STYLE_ZDIFF3 = (1 << 8),
+
+ /**
+ * Do not produce file conflicts when common regions have
+ * changed; keep the conflict markers in the file and accept
+ * that as the merge result.
+ */
+ GIT_MERGE_FILE_ACCEPT_CONFLICTS = (1 << 9)
} git_merge_file_flag_t;
+/** Default size for conflict markers */
#define GIT_MERGE_CONFLICT_MARKER_SIZE 7
/**
@@ -199,7 +224,10 @@ typedef struct {
unsigned short marker_size;
} git_merge_file_options;
+/** Current version for the `git_merge_file_options` structure */
#define GIT_MERGE_FILE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_merge_file_options` */
#define GIT_MERGE_FILE_OPTIONS_INIT {GIT_MERGE_FILE_OPTIONS_VERSION}
/**
@@ -294,7 +322,10 @@ typedef struct {
uint32_t file_flags;
} git_merge_options;
+/** Current version for the `git_merge_options` structure */
#define GIT_MERGE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_merge_options` */
#define GIT_MERGE_OPTIONS_INIT { \
GIT_MERGE_OPTIONS_VERSION, GIT_MERGE_FIND_RENAMES }
@@ -341,7 +372,7 @@ typedef enum {
* a valid commit. No merge can be performed, but the caller may wish
* to simply set HEAD to the target commit(s).
*/
- GIT_MERGE_ANALYSIS_UNBORN = (1 << 3),
+ GIT_MERGE_ANALYSIS_UNBORN = (1 << 3)
} git_merge_analysis_t;
/**
@@ -364,7 +395,7 @@ typedef enum {
* There is a `merge.ff=only` configuration setting, suggesting that
* the user only wants fast-forward merges.
*/
- GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY = (1 << 1),
+ GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY = (1 << 1)
} git_merge_preference_t;
/**
@@ -372,6 +403,7 @@ typedef enum {
* merging them into the HEAD of the repository.
*
* @param analysis_out analysis enumeration that the result is written into
+ * @param preference_out One of the `git_merge_preference_t` flag.
* @param repo the repository to merge
* @param their_heads the heads to merge into
* @param their_heads_len the number of heads to merge
@@ -389,6 +421,7 @@ GIT_EXTERN(int) git_merge_analysis(
* merging them into a reference.
*
* @param analysis_out analysis enumeration that the result is written into
+ * @param preference_out One of the `git_merge_preference_t` flag.
* @param repo the repository to merge
* @param our_ref the reference to perform the analysis from
* @param their_heads the heads to merge into
@@ -451,6 +484,37 @@ GIT_EXTERN(int) git_merge_base_many(
/**
* Find all merge bases given a list of commits
*
+ * This behaves similar to [`git merge-base`](https://git-scm.com/docs/git-merge-base#_discussion).
+ *
+ * Given three commits `a`, `b`, and `c`, `merge_base_many`
+ * will compute a hypothetical commit `m`, which is a merge between `b`
+ * and `c`.
+
+ * For example, with the following topology:
+ * ```text
+ * o---o---o---o---C
+ * /
+ * / o---o---o---B
+ * / /
+ * ---2---1---o---o---o---A
+ * ```
+ *
+ * the result of `merge_base_many` given `a`, `b`, and `c` is 1. This is
+ * because the equivalent topology with the imaginary merge commit `m`
+ * between `b` and `c` is:
+ * ```text
+ * o---o---o---o---o
+ * / \
+ * / o---o---o---o---M
+ * / /
+ * ---2---1---o---o---o---A
+ * ```
+ *
+ * and the result of `merge_base_many` given `a` and `m` is 1.
+ *
+ * If you're looking to recieve the common ancestor between all the
+ * given commits, use `merge_base_octopus`.
+ *
* @param out array in which to store the resulting ids
* @param repo the repository where the commits exist
* @param length The number of commits in the provided `input_array`
@@ -583,7 +647,7 @@ GIT_EXTERN(int) git_merge_commits(
* completes, resolve any conflicts and prepare a commit.
*
* For compatibility with git, the repository is put into a merging
- * state. Once the commit is done (or if the uses wishes to abort),
+ * state. Once the commit is done (or if the user wishes to abort),
* you should clear this state by calling
* `git_repository_state_cleanup()`.
*
@@ -603,4 +667,5 @@ GIT_EXTERN(int) git_merge(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/message.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/message.h
index 42ca3e5..874d027 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/message.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/message.h
@@ -12,7 +12,7 @@
/**
* @file git2/message.h
- * @brief Git message management routines
+ * @brief Commit messages
* @ingroup Git
* @{
*/
@@ -75,10 +75,12 @@ GIT_EXTERN(int) git_message_trailers(git_message_trailer_array *arr, const char
/**
* Clean's up any allocated memory in the git_message_trailer_array filled by
* a call to git_message_trailers.
+ *
+ * @param arr The trailer to free.
*/
GIT_EXTERN(void) git_message_trailer_array_free(git_message_trailer_array *arr);
/** @} */
GIT_END_DECL
-#endif /* INCLUDE_git_message_h__ */
+#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/net.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/net.h
index 8103eaf..93bdac4 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/net.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/net.h
@@ -13,12 +13,13 @@
/**
* @file git2/net.h
- * @brief Git networking declarations
+ * @brief Low-level networking functionality
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/** Default git protocol port number */
#define GIT_DEFAULT_PORT "9418"
/**
@@ -51,4 +52,5 @@ struct git_remote_head {
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/notes.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/notes.h
index c135881..3784d5f 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/notes.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/notes.h
@@ -11,7 +11,7 @@
/**
* @file git2/notes.h
- * @brief Git notes management routines
+ * @brief Notes are metadata attached to an object
* @defgroup git_note Git notes management routines
* @ingroup Git
* @{
@@ -21,13 +21,15 @@ GIT_BEGIN_DECL
/**
* Callback for git_note_foreach.
*
- * Receives:
- * - blob_id: Oid of the blob containing the message
- * - annotated_object_id: Oid of the git object being annotated
- * - payload: Payload data passed to `git_note_foreach`
+ * @param blob_id object id of the blob containing the message
+ * @param annotated_object_id the id of the object being annotated
+ * @param payload user-specified data to the foreach function
+ * @return 0 on success, or a negative number on failure
*/
typedef int GIT_CALLBACK(git_note_foreach_cb)(
- const git_oid *blob_id, const git_oid *annotated_object_id, void *payload);
+ const git_oid *blob_id,
+ const git_oid *annotated_object_id,
+ void *payload);
/**
* note iterator
@@ -303,4 +305,5 @@ GIT_EXTERN(int) git_note_foreach(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/object.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/object.h
index 984dbb7..8a50239 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/object.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/object.h
@@ -14,13 +14,14 @@
/**
* @file git2/object.h
- * @brief Git revision object management routines
+ * @brief Objects are blobs (files), trees (directories), commits, and annotated tags
* @defgroup git_object Git revision object management routines
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/** Maximum size of a git object */
#define GIT_OBJECT_SIZE_MAX UINT64_MAX
/**
@@ -53,18 +54,18 @@ GIT_EXTERN(int) git_object_lookup(
*
* The object obtained will be so that its identifier
* matches the first 'len' hexadecimal characters
- * (packets of 4 bits) of the given 'id'.
- * 'len' must be at least GIT_OID_MINPREFIXLEN, and
- * long enough to identify a unique object matching
- * the prefix; otherwise the method will fail.
+ * (packets of 4 bits) of the given `id`. `len` must be
+ * at least `GIT_OID_MINPREFIXLEN`, and long enough to
+ * identify a unique object matching the prefix; otherwise
+ * the method will fail.
*
* The generated reference is owned by the repository and
* should be closed with the `git_object_free` method
* instead of free'd manually.
*
- * The 'type' parameter must match the type of the object
+ * The `type` parameter must match the type of the object
* in the odb; the method will fail otherwise.
- * The special value 'GIT_OBJECT_ANY' may be passed to let
+ * The special value `GIT_OBJECT_ANY` may be passed to let
* the method guess the object's type.
*
* @param object_out pointer where to store the looked-up object
@@ -221,9 +222,58 @@ GIT_EXTERN(int) git_object_peel(
*
* @param dest Pointer to store the copy of the object
* @param source Original object to copy
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_object_dup(git_object **dest, git_object *source);
+#ifdef GIT_EXPERIMENTAL_SHA256
+/**
+ * Analyzes a buffer of raw object content and determines its validity.
+ * Tree, commit, and tag objects will be parsed and ensured that they
+ * are valid, parseable content. (Blobs are always valid by definition.)
+ * An error message will be set with an informative message if the object
+ * is not valid.
+ *
+ * @warning This function is experimental and its signature may change in
+ * the future.
+ *
+ * @param valid Output pointer to set with validity of the object content
+ * @param buf The contents to validate
+ * @param len The length of the buffer
+ * @param object_type The type of the object in the buffer
+ * @param oid_type The object ID type for the OIDs in the given buffer
+ * @return 0 on success or an error code
+ */
+GIT_EXTERN(int) git_object_rawcontent_is_valid(
+ int *valid,
+ const char *buf,
+ size_t len,
+ git_object_t object_type,
+ git_oid_t oid_type);
+#else
+/**
+ * Analyzes a buffer of raw object content and determines its validity.
+ * Tree, commit, and tag objects will be parsed and ensured that they
+ * are valid, parseable content. (Blobs are always valid by definition.)
+ * An error message will be set with an informative message if the object
+ * is not valid.
+ *
+ * @warning This function is experimental and its signature may change in
+ * the future.
+ *
+ * @param[out] valid Output pointer to set with validity of the object content
+ * @param buf The contents to validate
+ * @param len The length of the buffer
+ * @param object_type The type of the object in the buffer
+ * @return 0 on success or an error code
+ */
+GIT_EXTERN(int) git_object_rawcontent_is_valid(
+ int *valid,
+ const char *buf,
+ size_t len,
+ git_object_t object_type);
+#endif
+
/** @} */
GIT_END_DECL
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/odb.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/odb.h
index dd48455..e809c36 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/odb.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/odb.h
@@ -15,29 +15,91 @@
/**
* @file git2/odb.h
- * @brief Git object database routines
+ * @brief An object database manages the storage of git objects
* @defgroup git_odb Git object database routines
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/** Flags controlling the behavior of ODB lookup operations */
+typedef enum {
+ /**
+ * Don't call `git_odb_refresh` if the lookup fails. Useful when doing
+ * a batch of lookup operations for objects that may legitimately not
+ * exist. When using this flag, you may wish to manually call
+ * `git_odb_refresh` before processing a batch of objects.
+ */
+ GIT_ODB_LOOKUP_NO_REFRESH = (1 << 0)
+} git_odb_lookup_flags_t;
+
/**
* Function type for callbacks from git_odb_foreach.
+ *
+ * @param id an id of an object in the object database
+ * @param payload the payload from the initial call to git_odb_foreach
+ * @return 0 on success, or an error code
*/
typedef int GIT_CALLBACK(git_odb_foreach_cb)(const git_oid *id, void *payload);
+/** Options for configuring a loose object backend. */
+typedef struct {
+ unsigned int version; /**< version for the struct */
+
+ /**
+ * Type of object IDs to use for this object database, or
+ * 0 for default (currently SHA1).
+ */
+ git_oid_t oid_type;
+} git_odb_options;
+
+/** The current version of the diff options structure */
+#define GIT_ODB_OPTIONS_VERSION 1
+
+/**
+ * Stack initializer for odb options. Alternatively use
+ * `git_odb_options_init` programmatic initialization.
+ */
+#define GIT_ODB_OPTIONS_INIT { GIT_ODB_OPTIONS_VERSION }
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+
+/**
+ * Create a new object database with no backends.
+ *
+ * @param[out] odb location to store the database pointer, if opened.
+ * @param opts the options for this object database or NULL for defaults
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_new(git_odb **odb, const git_odb_options *opts);
+
+/**
+ * Create a new object database and automatically add loose and packed
+ * backends.
+ *
+ * @param[out] odb_out location to store the database pointer, if opened.
+ * Set to NULL if the open failed.
+ * @param objects_dir path of the backends' "objects" directory.
+ * @param opts the options for this object database or NULL for defaults
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_open(
+ git_odb **odb_out,
+ const char *objects_dir,
+ const git_odb_options *opts);
+
+#else
+
/**
* Create a new object database with no backends.
*
* Before the ODB can be used for read/writing, a custom database
* backend must be manually added using `git_odb_add_backend()`
*
- * @param out location to store the database pointer, if opened.
- * Set to NULL if the open failed.
+ * @param[out] odb location to store the database pointer, if opened.
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_new(git_odb **out);
+GIT_EXTERN(int) git_odb_new(git_odb **odb);
/**
* Create a new object database and automatically add
@@ -50,12 +112,13 @@ GIT_EXTERN(int) git_odb_new(git_odb **out);
* assuming `objects_dir` as the Objects folder which
* contains a 'pack/' folder with the corresponding data
*
- * @param out location to store the database pointer, if opened.
+ * @param[out] odb_out location to store the database pointer, if opened.
* Set to NULL if the open failed.
* @param objects_dir path of the backends' "objects" directory.
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_open(git_odb **out, const char *objects_dir);
+GIT_EXTERN(int) git_odb_open(git_odb **odb_out, const char *objects_dir);
+#endif
/**
* Add an on-disk alternate to an existing Object DB.
@@ -91,13 +154,13 @@ GIT_EXTERN(void) git_odb_free(git_odb *db);
* internally cached, so it should be closed
* by the user once it's no longer in use.
*
- * @param out pointer where to store the read object
+ * @param[out] obj pointer where to store the read object
* @param db database to search for the object in.
* @param id identity of the object to read.
* @return 0 if the object was read, GIT_ENOTFOUND if the object is
* not in the database.
*/
-GIT_EXTERN(int) git_odb_read(git_odb_object **out, git_odb *db, const git_oid *id);
+GIT_EXTERN(int) git_odb_read(git_odb_object **obj, git_odb *db, const git_oid *id);
/**
* Read an object from the database, given a prefix
@@ -106,7 +169,7 @@ GIT_EXTERN(int) git_odb_read(git_odb_object **out, git_odb *db, const git_oid *i
* This method queries all available ODB backends
* trying to match the 'len' first hexadecimal
* characters of the 'short_id'.
- * The remaining (GIT_OID_HEXSZ-len)*4 bits of
+ * The remaining (GIT_OID_SHA1_HEXSIZE-len)*4 bits of
* 'short_id' must be 0s.
* 'len' must be at least GIT_OID_MINPREFIXLEN,
* and the prefix must be long enough to identify
@@ -117,7 +180,7 @@ GIT_EXTERN(int) git_odb_read(git_odb_object **out, git_odb *db, const git_oid *i
* internally cached, so it should be closed
* by the user once it's no longer in use.
*
- * @param out pointer where to store the read object
+ * @param[out] obj pointer where to store the read object
* @param db database to search for the object in.
* @param short_id a prefix of the id of the object to read.
* @param len the length of the prefix
@@ -125,7 +188,7 @@ GIT_EXTERN(int) git_odb_read(git_odb_object **out, git_odb *db, const git_oid *i
* database. GIT_EAMBIGUOUS if the prefix is ambiguous
* (several objects match the prefix)
*/
-GIT_EXTERN(int) git_odb_read_prefix(git_odb_object **out, git_odb *db, const git_oid *short_id, size_t len);
+GIT_EXTERN(int) git_odb_read_prefix(git_odb_object **obj, git_odb *db, const git_oid *short_id, size_t len);
/**
* Read the header of an object from the database, without
@@ -137,8 +200,8 @@ GIT_EXTERN(int) git_odb_read_prefix(git_odb_object **out, git_odb *db, const git
* of an object, so the whole object will be read and then the
* header will be returned.
*
- * @param len_out pointer where to store the length
- * @param type_out pointer where to store the type
+ * @param[out] len_out pointer where to store the length
+ * @param[out] type_out pointer where to store the type
* @param db database to search for the object in.
* @param id identity of the object to read.
* @return 0 if the object was read, GIT_ENOTFOUND if the object is not
@@ -155,6 +218,17 @@ GIT_EXTERN(int) git_odb_read_header(size_t *len_out, git_object_t *type_out, git
*/
GIT_EXTERN(int) git_odb_exists(git_odb *db, const git_oid *id);
+/**
+ * Determine if the given object can be found in the object database, with
+ * extended options.
+ *
+ * @param db database to be searched for the given object.
+ * @param id the object to search for.
+ * @param flags flags affecting the lookup (see `git_odb_lookup_flags_t`)
+ * @return 1 if the object was found, 0 otherwise
+ */
+GIT_EXTERN(int) git_odb_exists_ext(git_odb *db, const git_oid *id, unsigned int flags);
+
/**
* Determine if an object can be found in the object database by an
* abbreviated object ID.
@@ -192,12 +266,13 @@ typedef struct git_odb_expand_id {
/**
* Determine if one or more objects can be found in the object database
- * by their abbreviated object ID and type. The given array will be
- * updated in place: for each abbreviated ID that is unique in the
- * database, and of the given type (if specified), the full object ID,
- * object ID length (`GIT_OID_HEXSZ`) and type will be written back to
- * the array. For IDs that are not found (or are ambiguous), the
- * array entry will be zeroed.
+ * by their abbreviated object ID and type.
+ *
+ * The given array will be updated in place: for each abbreviated ID that is
+ * unique in the database, and of the given type (if specified),
+ * the full object ID, object ID length (`GIT_OID_SHA1_HEXSIZE`) and type will be
+ * written back to the array. For IDs that are not found (or are ambiguous),
+ * the array entry will be zeroed.
*
* Note that since this function operates on multiple objects, the
* underlying database will not be asked to be reloaded if an object is
@@ -231,7 +306,7 @@ GIT_EXTERN(int) git_odb_expand_ids(
* @param db database to refresh
* @return 0 on success, error code otherwise
*/
-GIT_EXTERN(int) git_odb_refresh(struct git_odb *db);
+GIT_EXTERN(int) git_odb_refresh(git_odb *db);
/**
* List all objects available in the database
@@ -246,7 +321,10 @@ GIT_EXTERN(int) git_odb_refresh(struct git_odb *db);
* @param payload data to pass to the callback
* @return 0 on success, non-zero callback return value, or error code
*/
-GIT_EXTERN(int) git_odb_foreach(git_odb *db, git_odb_foreach_cb cb, void *payload);
+GIT_EXTERN(int) git_odb_foreach(
+ git_odb *db,
+ git_odb_foreach_cb cb,
+ void *payload);
/**
* Write an object directly into the ODB
@@ -261,7 +339,7 @@ GIT_EXTERN(int) git_odb_foreach(git_odb *db, git_odb_foreach_cb cb, void *payloa
*
* @param out pointer to store the OID result of the write
* @param odb object database where to store the object
- * @param data buffer with the data to store
+ * @param data @type `const unsigned char *` buffer with the data to store
* @param len size of the buffer
* @param type type of the data to store
* @return 0 or an error code
@@ -323,6 +401,11 @@ GIT_EXTERN(int) git_odb_stream_finalize_write(git_oid *out, git_odb_stream *stre
* Read from an odb stream
*
* Most backends don't implement streaming reads
+ *
+ * @param stream the stream
+ * @param buffer a user-allocated buffer to store the data in.
+ * @param len the buffer's length
+ * @return the number of bytes read if succeeded, error code otherwise
*/
GIT_EXTERN(int) git_odb_stream_read(git_odb_stream *stream, char *buffer, size_t len);
@@ -383,6 +466,7 @@ GIT_EXTERN(int) git_odb_open_rstream(
* Be aware that this is called inline with network and indexing operations,
* so performance may be affected.
* @param progress_payload payload for the progress callback
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_odb_write_pack(
git_odb_writepack **out,
@@ -400,23 +484,59 @@ GIT_EXTERN(int) git_odb_write_pack(
* exist).
*
* @param db object database where the `multi-pack-index` file will be written.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_odb_write_multi_pack_index(
git_odb *db);
+#ifdef GIT_EXPERIMENTAL_SHA256
+
/**
- * Determine the object-ID (sha1 hash) of a data buffer
+ * Generate the object ID (in SHA1 or SHA256 format) for a given data buffer.
*
- * The resulting SHA-1 OID will be the identifier for the data
- * buffer as if the data buffer it were to written to the ODB.
+ * @param[out] oid the resulting object ID.
+ * @param data data to hash
+ * @param len size of the data
+ * @param object_type of the data to hash
+ * @param oid_type the oid type to hash to
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_hash(
+ git_oid *oid,
+ const void *data,
+ size_t len,
+ git_object_t object_type,
+ git_oid_t oid_type);
+
+/**
+ * Determine the object ID of a file on disk.
+ *
+ * @param[out] oid oid structure the result is written into.
+ * @param path file to read and determine object id for
+ * @param object_type of the data to hash
+ * @param oid_type the oid type to hash to
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_hashfile(
+ git_oid *oid,
+ const char *path,
+ git_object_t object_type,
+ git_oid_t oid_type);
+#else
+
+/**
+ * Determine the object-ID (sha1 or sha256 hash) of a data buffer
+ *
+ * The resulting OID will be the identifier for the data buffer as if
+ * the data buffer it were to written to the ODB.
*
- * @param out the resulting object-ID.
+ * @param[out] oid the resulting object-ID.
* @param data data to hash
* @param len size of the data
- * @param type of the data to hash
+ * @param object_type of the data to hash
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_hash(git_oid *out, const void *data, size_t len, git_object_t type);
+GIT_EXTERN(int) git_odb_hash(git_oid *oid, const void *data, size_t len, git_object_t object_type);
/**
* Read a file from disk and fill a git_oid with the object id
@@ -426,12 +546,14 @@ GIT_EXTERN(int) git_odb_hash(git_oid *out, const void *data, size_t len, git_obj
* the `-w` flag, however, with the --no-filters flag.
* If you need filters, see git_repository_hashfile.
*
- * @param out oid structure the result is written into.
+ * @param[out] oid oid structure the result is written into.
* @param path file to read and determine object id for
- * @param type the type of the object that will be hashed
+ * @param object_type of the data to hash
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_hashfile(git_oid *out, const char *path, git_object_t type);
+GIT_EXTERN(int) git_odb_hashfile(git_oid *oid, const char *path, git_object_t object_type);
+
+#endif
/**
* Create a copy of an odb_object
@@ -476,7 +598,7 @@ GIT_EXTERN(const git_oid *) git_odb_object_id(git_odb_object *object);
* This pointer is owned by the object and shall not be free'd.
*
* @param object the object
- * @return a pointer to the data
+ * @return @type `const unsigned char *` a pointer to the data
*/
GIT_EXTERN(const void *) git_odb_object_data(git_odb_object *object);
@@ -556,7 +678,7 @@ GIT_EXTERN(int) git_odb_get_backend(git_odb_backend **out, git_odb *odb, size_t
/**
* Set the git commit-graph for the ODB.
*
- * After a successfull call, the ownership of the cgraph parameter will be
+ * After a successful call, the ownership of the cgraph parameter will be
* transferred to libgit2, and the caller should not free it.
*
* The commit-graph can also be unset by explicitly passing NULL as the cgraph
@@ -570,4 +692,5 @@ GIT_EXTERN(int) git_odb_set_commit_graph(git_odb *odb, git_commit_graph *cgraph)
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/odb_backend.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/odb_backend.h
index c593bac..88ca29f 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/odb_backend.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/odb_backend.h
@@ -13,46 +13,135 @@
/**
* @file git2/backend.h
- * @brief Git custom backend functions
+ * @brief Object database backends manage the storage of git objects
* @defgroup git_odb Git object database routines
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/** Options for configuring a packfile object backend. */
+typedef struct {
+ unsigned int version; /**< version for the struct */
+
+ /**
+ * Type of object IDs to use for this object database, or
+ * 0 for default (currently SHA1).
+ */
+ git_oid_t oid_type;
+} git_odb_backend_pack_options;
+
+/** The current version of the diff options structure */
+#define GIT_ODB_BACKEND_PACK_OPTIONS_VERSION 1
+
+/**
+ * Stack initializer for odb pack backend options. Alternatively use
+ * `git_odb_backend_pack_options_init` programmatic initialization.
+ */
+#define GIT_ODB_BACKEND_PACK_OPTIONS_INIT \
+ { GIT_ODB_BACKEND_PACK_OPTIONS_VERSION }
+
+typedef enum {
+ GIT_ODB_BACKEND_LOOSE_FSYNC = (1 << 0)
+} git_odb_backend_loose_flag_t;
+
+/** Options for configuring a loose object backend. */
+typedef struct {
+ unsigned int version; /**< version for the struct */
+
+ /** A combination of the `git_odb_backend_loose_flag_t` types. */
+ uint32_t flags;
+
+ /**
+ * zlib compression level to use (0-9), where 1 is the fastest
+ * at the expense of larger files, and 9 produces the best
+ * compression at the expense of speed. 0 indicates that no
+ * compression should be performed. -1 is the default (currently
+ * optimizing for speed).
+ */
+ int compression_level;
+
+ /** Permissions to use creating a directory or 0 for defaults */
+ unsigned int dir_mode;
+
+ /** Permissions to use creating a file or 0 for defaults */
+ unsigned int file_mode;
+
+ /**
+ * Type of object IDs to use for this object database, or
+ * 0 for default (currently SHA1).
+ */
+ git_oid_t oid_type;
+} git_odb_backend_loose_options;
+
+/** The current version of the diff options structure */
+#define GIT_ODB_BACKEND_LOOSE_OPTIONS_VERSION 1
+
+/**
+ * Stack initializer for odb loose backend options. Alternatively use
+ * `git_odb_backend_loose_options_init` programmatic initialization.
+ */
+#define GIT_ODB_BACKEND_LOOSE_OPTIONS_INIT \
+ { GIT_ODB_BACKEND_LOOSE_OPTIONS_VERSION, 0, -1 }
+
/*
* Constructors for in-box ODB backends.
*/
+#ifdef GIT_EXPERIMENTAL_SHA256
+
/**
- * Create a backend for the packfiles.
+ * Create a backend for a directory containing packfiles.
*
- * @param out location to store the odb backend pointer
+ * @param[out] out location to store the odb backend pointer
* @param objects_dir the Git repository's objects directory
+ * @param opts the options to use when creating the pack backend
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_backend_pack(
+ git_odb_backend **out,
+ const char *objects_dir,
+ const git_odb_backend_pack_options *opts);
+
+/**
+ * Create a backend for a single packfile.
*
+ * @param[out] out location to store the odb backend pointer
+ * @param index_file path to the packfile's .idx file
+ * @param opts the options to use when creating the pack backend
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_backend_pack(git_odb_backend **out, const char *objects_dir);
+GIT_EXTERN(int) git_odb_backend_one_pack(
+ git_odb_backend **out,
+ const char *index_file,
+ const git_odb_backend_pack_options *opts);
/**
* Create a backend for loose objects
*
- * @param out location to store the odb backend pointer
+ * @param[out] out location to store the odb backend pointer
* @param objects_dir the Git repository's objects directory
- * @param compression_level zlib compression level to use
- * @param do_fsync whether to do an fsync() after writing
- * @param dir_mode permissions to use creating a directory or 0 for defaults
- * @param file_mode permissions to use creating a file or 0 for defaults
+ * @param opts options for the loose object backend or NULL
*
* @return 0 or an error code
*/
GIT_EXTERN(int) git_odb_backend_loose(
git_odb_backend **out,
const char *objects_dir,
- int compression_level,
- int do_fsync,
- unsigned int dir_mode,
- unsigned int file_mode);
+ git_odb_backend_loose_options *opts);
+
+#else
+
+/**
+ * Create a backend for a directory containing packfiles.
+ *
+ * @param[out] out location to store the odb backend pointer
+ * @param objects_dir the Git repository's objects directory
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_backend_pack(
+ git_odb_backend **out,
+ const char *objects_dir);
/**
* Create a backend out of a single packfile
@@ -60,18 +149,40 @@ GIT_EXTERN(int) git_odb_backend_loose(
* This can be useful for inspecting the contents of a single
* packfile.
*
- * @param out location to store the odb backend pointer
+ * @param[out] out location to store the odb backend pointer
* @param index_file path to the packfile's .idx file
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_odb_backend_one_pack(
+ git_odb_backend **out,
+ const char *index_file);
+
+/**
+ * Create a backend for loose objects
*
+ * @param[out] out location to store the odb backend pointer
+ * @param objects_dir the Git repository's objects directory
+ * @param compression_level zlib compression level (0-9), or -1 for the default
+ * @param do_fsync if non-zero, perform an fsync on write
+ * @param dir_mode permission to use when creating directories, or 0 for default
+ * @param file_mode permission to use when creating directories, or 0 for default
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_odb_backend_one_pack(git_odb_backend **out, const char *index_file);
+GIT_EXTERN(int) git_odb_backend_loose(
+ git_odb_backend **out,
+ const char *objects_dir,
+ int compression_level,
+ int do_fsync,
+ unsigned int dir_mode,
+ unsigned int file_mode);
+
+#endif
/** Streaming mode */
typedef enum {
GIT_STREAM_RDONLY = (1 << 1),
GIT_STREAM_WRONLY = (1 << 2),
- GIT_STREAM_RW = (GIT_STREAM_RDONLY | GIT_STREAM_WRONLY),
+ GIT_STREAM_RW = (GIT_STREAM_RDONLY | GIT_STREAM_WRONLY)
} git_odb_stream_t;
/**
@@ -87,6 +198,10 @@ struct git_odb_stream {
unsigned int mode;
void *hash_ctx;
+#ifdef GIT_EXPERIMENTAL_SHA256
+ git_oid_t oid_type;
+#endif
+
git_object_size_t declared_size;
git_object_size_t received_bytes;
@@ -130,6 +245,7 @@ struct git_odb_writepack {
void GIT_CALLBACK(free)(git_odb_writepack *writepack);
};
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/oid.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/oid.h
index 549df4e..8539b4e 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/oid.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/oid.h
@@ -8,22 +8,92 @@
#define INCLUDE_git_oid_h__
#include "common.h"
-#include "types.h"
+#include "experimental.h"
/**
* @file git2/oid.h
- * @brief Git object id routines
+ * @brief Object IDs
* @defgroup git_oid Git object id routines
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
-/** Size (in bytes) of a raw/binary oid */
-#define GIT_OID_RAWSZ 20
+/** The type of object id. */
+typedef enum {
-/** Size (in bytes) of a hex formatted oid */
-#define GIT_OID_HEXSZ (GIT_OID_RAWSZ * 2)
+#ifdef GIT_EXPERIMENTAL_SHA256
+ GIT_OID_SHA1 = 1, /**< SHA1 */
+ GIT_OID_SHA256 = 2 /**< SHA256 */
+#else
+ GIT_OID_SHA1 = 1 /**< SHA1 */
+#endif
+
+} git_oid_t;
+
+/*
+ * SHA1 is currently the only supported object ID type.
+ */
+
+/** SHA1 is currently libgit2's default oid type. */
+#define GIT_OID_DEFAULT GIT_OID_SHA1
+
+/** Size (in bytes) of a raw/binary sha1 oid */
+#define GIT_OID_SHA1_SIZE 20
+/** Size (in bytes) of a hex formatted sha1 oid */
+#define GIT_OID_SHA1_HEXSIZE (GIT_OID_SHA1_SIZE * 2)
+
+/**
+ * The binary representation of the null sha1 object ID.
+ */
+#ifndef GIT_EXPERIMENTAL_SHA256
+# define GIT_OID_SHA1_ZERO { { 0 } }
+#else
+# define GIT_OID_SHA1_ZERO { GIT_OID_SHA1, { 0 } }
+#endif
+
+/**
+ * The string representation of the null sha1 object ID.
+ */
+#define GIT_OID_SHA1_HEXZERO "0000000000000000000000000000000000000000"
+
+/*
+ * Experimental SHA256 support is a breaking change to the API.
+ * This exists for application compatibility testing.
+ */
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+
+/** Size (in bytes) of a raw/binary sha256 oid */
+# define GIT_OID_SHA256_SIZE 32
+/** Size (in bytes) of a hex formatted sha256 oid */
+# define GIT_OID_SHA256_HEXSIZE (GIT_OID_SHA256_SIZE * 2)
+
+/**
+ * The binary representation of the null sha256 object ID.
+ */
+# define GIT_OID_SHA256_ZERO { GIT_OID_SHA256, { 0 } }
+
+/**
+ * The string representation of the null sha256 object ID.
+ */
+# define GIT_OID_SHA256_HEXZERO "0000000000000000000000000000000000000000000000000000000000000000"
+
+#endif
+
+/** Maximum possible object ID size in raw format */
+#ifdef GIT_EXPERIMENTAL_SHA256
+# define GIT_OID_MAX_SIZE GIT_OID_SHA256_SIZE
+#else
+# define GIT_OID_MAX_SIZE GIT_OID_SHA1_SIZE
+#endif
+
+/** Maximum possible object ID size in hex format */
+#ifdef GIT_EXPERIMENTAL_SHA256
+# define GIT_OID_MAX_HEXSIZE GIT_OID_SHA256_HEXSIZE
+#else
+# define GIT_OID_MAX_HEXSIZE GIT_OID_SHA1_HEXSIZE
+#endif
/** Minimum length (in number of hex characters,
* i.e. packets of 4 bits) of an oid prefix */
@@ -31,23 +101,43 @@ GIT_BEGIN_DECL
/** Unique identity of any object (commit, tree, blob, tag). */
typedef struct git_oid {
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /** type of object id */
+ unsigned char type;
+#endif
+
/** raw binary formatted id */
- unsigned char id[GIT_OID_RAWSZ];
+ unsigned char id[GIT_OID_MAX_SIZE];
} git_oid;
+#ifdef GIT_EXPERIMENTAL_SHA256
+
+GIT_EXTERN(int) git_oid_fromstr(git_oid *out, const char *str, git_oid_t type);
+GIT_EXTERN(int) git_oid_fromstrp(git_oid *out, const char *str, git_oid_t type);
+GIT_EXTERN(int) git_oid_fromstrn(git_oid *out, const char *str, size_t length, git_oid_t type);
+GIT_EXTERN(int) git_oid_fromraw(git_oid *out, const unsigned char *raw, git_oid_t type);
+
+#else
+
/**
* Parse a hex formatted object id into a git_oid.
*
+ * The appropriate number of bytes for the given object ID type will
+ * be read from the string - 40 bytes for SHA1, 64 bytes for SHA256.
+ * The given string need not be NUL terminated.
+ *
* @param out oid structure the result is written into.
* @param str input hex string; must be pointing at the start of
* the hex sequence and have at least the number of bytes
- * needed for an oid encoded in hex (40 bytes).
+ * needed for an oid encoded in hex (40 bytes for sha1,
+ * 256 bytes for sha256).
* @return 0 or an error code
*/
GIT_EXTERN(int) git_oid_fromstr(git_oid *out, const char *str);
/**
- * Parse a hex formatted null-terminated string into a git_oid.
+ * Parse a hex formatted NUL-terminated string into a git_oid.
*
* @param out oid structure the result is written into.
* @param str input hex string; must be null-terminated.
@@ -77,14 +167,17 @@ GIT_EXTERN(int) git_oid_fromstrn(git_oid *out, const char *str, size_t length);
*/
GIT_EXTERN(int) git_oid_fromraw(git_oid *out, const unsigned char *raw);
+#endif
+
/**
* Format a git_oid into a hex string.
*
* @param out output hex string; must be pointing at the start of
* the hex sequence and have at least the number of bytes
- * needed for an oid encoded in hex (40 bytes). Only the
- * oid digits are written; a '\\0' terminator must be added
- * by the caller if it is required.
+ * needed for an oid encoded in hex (40 bytes for SHA1,
+ * 64 bytes for SHA256). Only the oid digits are written;
+ * a '\\0' terminator must be added by the caller if it is
+ * required.
* @param id oid structure to format.
* @return 0 on success or error code
*/
@@ -94,7 +187,7 @@ GIT_EXTERN(int) git_oid_fmt(char *out, const git_oid *id);
* Format a git_oid into a partial hex string.
*
* @param out output hex string; you say how many bytes to write.
- * If the number of bytes is > GIT_OID_HEXSZ, extra bytes
+ * If the number of bytes is > GIT_OID_SHA1_HEXSIZE, extra bytes
* will be zeroed; if not, a '\0' terminator is NOT added.
* @param n number of characters to write into out string
* @param id oid structure to format.
@@ -110,9 +203,10 @@ GIT_EXTERN(int) git_oid_nfmt(char *out, size_t n, const git_oid *id);
*
* @param out output hex string; must be pointing at the start of
* the hex sequence and have at least the number of bytes
- * needed for an oid encoded in hex (41 bytes). Only the
- * oid digits are written; a '\\0' terminator must be added
- * by the caller if it is required.
+ * needed for an oid encoded in hex (41 bytes for SHA1,
+ * 65 bytes for SHA256). Only the oid digits are written;
+ * a '\\0' terminator must be added by the caller if it
+ * is required.
* @param id oid structure to format.
* @return 0 on success, non-zero callback return value, or error code
*/
@@ -127,14 +221,16 @@ GIT_EXTERN(int) git_oid_pathfmt(char *out, const git_oid *id);
* concurrent calls of the function.
*
* @param oid The oid structure to format
- * @return the c-string
+ * @return the c-string or NULL on failure
*/
GIT_EXTERN(char *) git_oid_tostr_s(const git_oid *oid);
/**
* Format a git_oid into a buffer as a hex format c-string.
*
- * If the buffer is smaller than GIT_OID_HEXSZ+1, then the resulting
+ * If the buffer is smaller than the size of a hex-formatted oid string
+ * plus an additional byte (GIT_OID_SHA_HEXSIZE + 1 for SHA1 or
+ * GIT_OID_SHA256_HEXSIZE + 1 for SHA256), then the resulting
* oid c-string will be truncated to n-1 characters (but will still be
* NUL-byte terminated).
*
@@ -210,6 +306,7 @@ GIT_EXTERN(int) git_oid_strcmp(const git_oid *id, const char *str);
/**
* Check is an oid is all zeros.
*
+ * @param id the object ID to check
* @return 1 if all zeros, 0 otherwise.
*/
GIT_EXTERN(int) git_oid_is_zero(const git_oid *id);
@@ -270,4 +367,5 @@ GIT_EXTERN(void) git_oid_shorten_free(git_oid_shorten *os);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/oidarray.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/oidarray.h
index 94fc58d..e79a559 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/oidarray.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/oidarray.h
@@ -10,6 +10,13 @@
#include "common.h"
#include "oid.h"
+/**
+ * @file git2/oidarray.h
+ * @brief An array of object IDs
+ * @defgroup git_oidarray Arrays of object IDs
+ * @ingroup Git
+ * @{
+ */
GIT_BEGIN_DECL
/** Array of object ids */
@@ -34,4 +41,3 @@ GIT_EXTERN(void) git_oidarray_dispose(git_oidarray *array);
GIT_END_DECL
#endif
-
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/pack.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/pack.h
index 3b9beb6..3837e04 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/pack.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/pack.h
@@ -51,7 +51,7 @@ GIT_BEGIN_DECL
*/
typedef enum {
GIT_PACKBUILDER_ADDING_OBJECTS = 0,
- GIT_PACKBUILDER_DELTAFICATION = 1,
+ GIT_PACKBUILDER_DELTAFICATION = 1
} git_packbuilder_stage_t;
/**
@@ -148,6 +148,7 @@ GIT_EXTERN(int) git_packbuilder_insert_recur(git_packbuilder *pb, const git_oid
*
* @param buf Buffer where to write the packfile
* @param pb The packbuilder
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_packbuilder_write_buf(git_buf *buf, git_packbuilder *pb);
@@ -169,15 +170,30 @@ GIT_EXTERN(int) git_packbuilder_write(
git_indexer_progress_cb progress_cb,
void *progress_cb_payload);
+#ifndef GIT_DEPRECATE_HARD
/**
-* Get the packfile's hash
-*
-* A packfile's name is derived from the sorted hashing of all object
-* names. This is only correct after the packfile has been written.
-*
-* @param pb The packbuilder object
-*/
+ * Get the packfile's hash
+ *
+ * A packfile's name is derived from the sorted hashing of all object
+ * names. This is only correct after the packfile has been written.
+ *
+ * @deprecated use git_packbuilder_name
+ * @param pb The packbuilder object
+ * @return 0 or an error code
+ */
GIT_EXTERN(const git_oid *) git_packbuilder_hash(git_packbuilder *pb);
+#endif
+
+/**
+ * Get the unique name for the resulting packfile.
+ *
+ * The packfile's name is derived from the packfile's content.
+ * This is only correct after the packfile has been written.
+ *
+ * @param pb the packbuilder instance
+ * @return a NUL terminated string for the packfile name
+ */
+GIT_EXTERN(const char *) git_packbuilder_name(git_packbuilder *pb);
/**
* Callback used to iterate over packed objects
@@ -217,7 +233,15 @@ GIT_EXTERN(size_t) git_packbuilder_object_count(git_packbuilder *pb);
*/
GIT_EXTERN(size_t) git_packbuilder_written(git_packbuilder *pb);
-/** Packbuilder progress notification function */
+/**
+ * Packbuilder progress notification function.
+ *
+ * @param stage the stage of the packbuilder
+ * @param current the current object
+ * @param total the total number of objects
+ * @param payload the callback payload
+ * @return 0 on success or an error code
+ */
typedef int GIT_CALLBACK(git_packbuilder_progress)(
int stage,
uint32_t current,
@@ -231,6 +255,9 @@ typedef int GIT_CALLBACK(git_packbuilder_progress)(
* @param progress_cb Function to call with progress information during
* pack building. Be aware that this is called inline with pack building
* operations, so performance may be affected.
+ * When progress_cb returns an error, the pack building process will be
+ * aborted and the error will be returned from the invoked function.
+ * `pb` must then be freed.
* @param progress_cb_payload Payload for progress callback.
* @return 0 or an error code
*/
@@ -248,4 +275,5 @@ GIT_EXTERN(void) git_packbuilder_free(git_packbuilder *pb);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/patch.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/patch.h
index fde9659..7824821 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/patch.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/patch.h
@@ -14,7 +14,7 @@
/**
* @file git2/patch.h
- * @brief Patch handling routines.
+ * @brief Patches store the textual diffs in a delta
* @ingroup Git
* @{
*/
@@ -139,17 +139,25 @@ GIT_EXTERN(int) git_patch_from_buffers(
/**
* Free a git_patch object.
+ *
+ * @param patch The patch to free.
*/
GIT_EXTERN(void) git_patch_free(git_patch *patch);
/**
* Get the delta associated with a patch. This delta points to internal
* data and you do not have to release it when you are done with it.
+ *
+ * @param patch The patch in which to get the delta.
+ * @return The delta associated with the patch.
*/
GIT_EXTERN(const git_diff_delta *) git_patch_get_delta(const git_patch *patch);
/**
* Get the number of hunks in a patch
+ *
+ * @param patch The patch in which to get the number of hunks.
+ * @return The number of hunks of the patch.
*/
GIT_EXTERN(size_t) git_patch_num_hunks(const git_patch *patch);
@@ -275,8 +283,7 @@ GIT_EXTERN(int) git_patch_to_buf(
git_buf *out,
git_patch *patch);
-GIT_END_DECL
-
/**@}*/
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/pathspec.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/pathspec.h
index 3299657..6f6918c 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/pathspec.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/pathspec.h
@@ -12,6 +12,13 @@
#include "strarray.h"
#include "diff.h"
+/**
+ * @file git2/pathspec.h
+ * @brief Specifiers for path matching
+ * @defgroup git_pathspec Specifiers for path matching
+ * @ingroup Git
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -69,7 +76,7 @@ typedef enum {
* just test if there were any matches at all or in combination with
* GIT_PATHSPEC_FIND_FAILURES to validate a pathspec.
*/
- GIT_PATHSPEC_FAILURES_ONLY = (1u << 5),
+ GIT_PATHSPEC_FAILURES_ONLY = (1u << 5)
} git_pathspec_flag_t;
/**
@@ -276,5 +283,7 @@ GIT_EXTERN(size_t) git_pathspec_match_list_failed_entrycount(
GIT_EXTERN(const char *) git_pathspec_match_list_failed_entry(
const git_pathspec_match_list *m, size_t pos);
+/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/proxy.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/proxy.h
index 653425d..195ab75 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/proxy.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/proxy.h
@@ -12,6 +12,12 @@
#include "cert.h"
#include "credential.h"
+/**
+ * @file git2/proxy.h
+ * @brief TLS proxies
+ * @ingroup Git
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -32,7 +38,7 @@ typedef enum {
/**
* Connect via the URL given in the options
*/
- GIT_PROXY_SPECIFIED,
+ GIT_PROXY_SPECIFIED
} git_proxy_t;
/**
@@ -78,7 +84,10 @@ typedef struct {
void *payload;
} git_proxy_options;
+/** Current version for the `git_proxy_options` structure */
#define GIT_PROXY_OPTIONS_VERSION 1
+
+/** Static constructor for `git_proxy_options` */
#define GIT_PROXY_OPTIONS_INIT {GIT_PROXY_OPTIONS_VERSION}
/**
@@ -93,6 +102,7 @@ typedef struct {
*/
GIT_EXTERN(int) git_proxy_options_init(git_proxy_options *opts, unsigned int version);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/rebase.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/rebase.h
index 11e452c..3fb3e57 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/rebase.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/rebase.h
@@ -17,8 +17,8 @@
/**
* @file git2/rebase.h
- * @brief Git rebase routines
- * @defgroup git_rebase Git merge routines
+ * @brief Rebase manipulates commits, placing them on a new parent
+ * @defgroup git_rebase Rebase manipulates commits, placing them on a new parent
* @ingroup Git
* @{
*/
@@ -67,10 +67,9 @@ typedef struct {
/**
* Options to control how files are written during `git_rebase_init`,
- * `git_rebase_next` and `git_rebase_abort`. Note that a minimum
- * strategy of `GIT_CHECKOUT_SAFE` is defaulted in `init` and `next`,
- * and a minimum strategy of `GIT_CHECKOUT_FORCE` is defaulted in
- * `abort` to match git semantics.
+ * `git_rebase_next` and `git_rebase_abort`. Note that during
+ * `abort`, these options will add an implied `GIT_CHECKOUT_FORCE`
+ * to match git semantics.
*/
git_checkout_options checkout_options;
@@ -152,10 +151,13 @@ typedef enum {
* No commit will be cherry-picked. The client should run the given
* command and (if successful) continue.
*/
- GIT_REBASE_OPERATION_EXEC,
+ GIT_REBASE_OPERATION_EXEC
} git_rebase_operation_t;
+/** Current version for the `git_rebase_options` structure */
#define GIT_REBASE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_rebase_options` */
#define GIT_REBASE_OPTIONS_INIT \
{ GIT_REBASE_OPTIONS_VERSION, 0, 0, NULL, GIT_MERGE_OPTIONS_INIT, \
GIT_CHECKOUT_OPTIONS_INIT, NULL, NULL }
@@ -242,6 +244,7 @@ GIT_EXTERN(int) git_rebase_open(
/**
* Gets the original `HEAD` ref name for merge rebases.
*
+ * @param rebase The in-progress rebase.
* @return The original `HEAD` ref name
*/
GIT_EXTERN(const char *) git_rebase_orig_head_name(git_rebase *rebase);
@@ -249,6 +252,7 @@ GIT_EXTERN(const char *) git_rebase_orig_head_name(git_rebase *rebase);
/**
* Gets the original `HEAD` id for merge rebases.
*
+ * @param rebase The in-progress rebase.
* @return The original `HEAD` id
*/
GIT_EXTERN(const git_oid *) git_rebase_orig_head_id(git_rebase *rebase);
@@ -256,6 +260,7 @@ GIT_EXTERN(const git_oid *) git_rebase_orig_head_id(git_rebase *rebase);
/**
* Gets the `onto` ref name for merge rebases.
*
+ * @param rebase The in-progress rebase.
* @return The `onto` ref name
*/
GIT_EXTERN(const char *) git_rebase_onto_name(git_rebase *rebase);
@@ -263,6 +268,7 @@ GIT_EXTERN(const char *) git_rebase_onto_name(git_rebase *rebase);
/**
* Gets the `onto` id for merge rebases.
*
+ * @param rebase The in-progress rebase.
* @return The `onto` id
*/
GIT_EXTERN(const git_oid *) git_rebase_onto_id(git_rebase *rebase);
@@ -322,6 +328,10 @@ GIT_EXTERN(int) git_rebase_next(
* This is only applicable for in-memory rebases; for rebases within
* a working directory, the changes were applied to the repository's
* index.
+ *
+ * @param index The result index of the last operation.
+ * @param rebase The in-progress rebase.
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_rebase_inmemory_index(
git_index **index,
@@ -388,4 +398,5 @@ GIT_EXTERN(void) git_rebase_free(git_rebase *rebase);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/refdb.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/refdb.h
index a315876..536ef10 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/refdb.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/refdb.h
@@ -14,8 +14,8 @@
/**
* @file git2/refdb.h
- * @brief Git custom refs backend functions
- * @defgroup git_refdb Git custom refs backend API
+ * @brief A database for references (branches and tags)
+ * @defgroup git_refdb A database for references (branches and tags)
* @ingroup Git
* @{
*/
@@ -52,6 +52,9 @@ GIT_EXTERN(int) git_refdb_open(git_refdb **out, git_repository *repo);
* Suggests that the given refdb compress or optimize its references.
* This mechanism is implementation specific. For on-disk reference
* databases, for example, this may pack all loose references.
+ *
+ * @param refdb The reference database to optimize.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_refdb_compress(git_refdb *refdb);
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/reflog.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/reflog.h
index c949a28..a0956c6 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/reflog.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/reflog.h
@@ -13,8 +13,8 @@
/**
* @file git2/reflog.h
- * @brief Git reflog management routines
- * @defgroup git_reflog Git reflog management routines
+ * @brief Reference logs store how references change
+ * @defgroup git_reflog Reference logs store how references change
* @ingroup Git
* @{
*/
@@ -31,7 +31,7 @@ GIT_BEGIN_DECL
* git_reflog_free().
*
* @param out pointer to reflog
- * @param repo the repostiory
+ * @param repo the repository
* @param name reference to look up
* @return 0 or an error code
*/
@@ -167,4 +167,5 @@ GIT_EXTERN(void) git_reflog_free(git_reflog *reflog);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/refs.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/refs.h
index 7ebb209..d820f2a 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/refs.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/refs.h
@@ -14,8 +14,8 @@
/**
* @file git2/refs.h
- * @brief Git reference management routines
- * @defgroup git_reference Git reference management routines
+ * @brief References point to a commit; generally these are branches and tags
+ * @defgroup git_reference References point to a commit; generally these are branches and tags
* @ingroup Git
* @{
*/
@@ -29,7 +29,7 @@ GIT_BEGIN_DECL
* The name will be checked for validity.
* See `git_reference_symbolic_create()` for rules about valid names.
*
- * @param out pointer to the looked-up reference
+ * @param[out] out pointer to the looked-up reference
* @param repo the repository to look up the reference
* @param name the long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)
* @return 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code.
@@ -57,7 +57,7 @@ GIT_EXTERN(int) git_reference_name_to_id(
/**
* Lookup a reference by DWIMing its short name
*
- * Apply the git precendence rules to the given shorthand to determine
+ * Apply the git precedence rules to the given shorthand to determine
* which reference the user is referring to.
*
* @param out pointer in which to store the reference
@@ -371,6 +371,7 @@ GIT_EXTERN(int) git_reference_set_target(
* reflog is enabled for the repository. We only rename
* the reflog if it exists.
*
+ * @param[out] new_ref The new reference
* @param ref The reference to rename
* @param new_name The new name for the reference
* @param force Overwrite an existing reference
@@ -406,6 +407,7 @@ GIT_EXTERN(int) git_reference_delete(git_reference *ref);
* This method removes the named reference from the repository without
* looking at its old value.
*
+ * @param repo The repository to remove the reference from
* @param name The reference to remove
* @return 0 or an error code
*/
@@ -518,7 +520,7 @@ GIT_EXTERN(int) git_reference_cmp(
/**
* Create an iterator for the repo's references
*
- * @param out pointer in which to store the iterator
+ * @param[out] out pointer in which to store the iterator
* @param repo the repository
* @return 0 or an error code
*/
@@ -543,7 +545,7 @@ GIT_EXTERN(int) git_reference_iterator_glob_new(
/**
* Get the next reference
*
- * @param out pointer in which to store the reference
+ * @param[out] out pointer in which to store the reference
* @param iter the iterator
* @return 0, GIT_ITEROVER if there are no more; or an error code
*/
@@ -686,7 +688,7 @@ typedef enum {
* so the `ONELEVEL` naming rules aren't enforced and 'master'
* becomes a valid name.
*/
- GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND = (1u << 2),
+ GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND = (1u << 2)
} git_reference_format_t;
/**
@@ -724,7 +726,7 @@ GIT_EXTERN(int) git_reference_normalize_name(
* If you pass `GIT_OBJECT_ANY` as the target type, then the object
* will be peeled until a non-tag object is met.
*
- * @param out Pointer to the peeled git_object
+ * @param[out] out Pointer to the peeled git_object
* @param ref The reference to be processed
* @param type The type of the requested object (GIT_OBJECT_COMMIT,
* GIT_OBJECT_TAG, GIT_OBJECT_TREE, GIT_OBJECT_BLOB or GIT_OBJECT_ANY).
@@ -768,4 +770,5 @@ GIT_EXTERN(const char *) git_reference_shorthand(const git_reference *ref);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/refspec.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/refspec.h
index eaf7747..49d5f89 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/refspec.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/refspec.h
@@ -14,8 +14,8 @@
/**
* @file git2/refspec.h
- * @brief Git refspec attributes
- * @defgroup git_refspec Git refspec attributes
+ * @brief Refspecs map local references to remote references
+ * @defgroup git_refspec Refspecs map local references to remote references
* @ingroup Git
* @{
*/
@@ -58,7 +58,7 @@ GIT_EXTERN(const char *) git_refspec_dst(const git_refspec *refspec);
* Get the refspec's string
*
* @param refspec the refspec
- * @returns the refspec's original string
+ * @return the refspec's original string
*/
GIT_EXTERN(const char *) git_refspec_string(const git_refspec *refspec);
@@ -79,7 +79,16 @@ GIT_EXTERN(int) git_refspec_force(const git_refspec *refspec);
GIT_EXTERN(git_direction) git_refspec_direction(const git_refspec *spec);
/**
- * Check if a refspec's source descriptor matches a reference
+ * Check if a refspec's source descriptor matches a negative reference
+ *
+ * @param refspec the refspec
+ * @param refname the name of the reference to check
+ * @return 1 if the refspec matches, 0 otherwise
+ */
+GIT_EXTERN(int) git_refspec_src_matches_negative(const git_refspec *refspec, const char *refname);
+
+/**
+ * Check if a refspec's source descriptor matches a reference
*
* @param refspec the refspec
* @param refname the name of the reference to check
@@ -116,6 +125,7 @@ GIT_EXTERN(int) git_refspec_transform(git_buf *out, const git_refspec *spec, con
*/
GIT_EXTERN(int) git_refspec_rtransform(git_buf *out, const git_refspec *spec, const char *name);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/remote.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/remote.h
index 4d57eaa..2472ded 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/remote.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/remote.h
@@ -19,8 +19,8 @@
/**
* @file git2/remote.h
- * @brief Git remote management functions
- * @defgroup git_remote remote management functions
+ * @brief Remotes are where local repositories fetch from and push to
+ * @defgroup git_remote Remotes are where local repositories fetch from and push to
* @ingroup Git
* @{
*/
@@ -41,6 +41,30 @@ GIT_EXTERN(int) git_remote_create(
const char *name,
const char *url);
+/**
+ * Remote redirection settings; whether redirects to another host
+ * are permitted. By default, git will follow a redirect on the
+ * initial request (`/info/refs`), but not subsequent requests.
+ */
+typedef enum {
+ /**
+ * Do not follow any off-site redirects at any stage of
+ * the fetch or push.
+ */
+ GIT_REMOTE_REDIRECT_NONE = (1 << 0),
+
+ /**
+ * Allow off-site redirects only upon the initial request.
+ * This is the default.
+ */
+ GIT_REMOTE_REDIRECT_INITIAL = (1 << 1),
+
+ /**
+ * Allow redirects at any stage in the fetch or push.
+ */
+ GIT_REMOTE_REDIRECT_ALL = (1 << 2)
+} git_remote_redirect_t;
+
/**
* Remote creation options flags
*/
@@ -49,9 +73,20 @@ typedef enum {
GIT_REMOTE_CREATE_SKIP_INSTEADOF = (1 << 0),
/** Don't build a fetchspec from the name if none is set */
- GIT_REMOTE_CREATE_SKIP_DEFAULT_FETCHSPEC = (1 << 1),
+ GIT_REMOTE_CREATE_SKIP_DEFAULT_FETCHSPEC = (1 << 1)
} git_remote_create_flags;
+/**
+ * How to handle reference updates.
+ */
+typedef enum {
+ /* Write the fetch results to FETCH_HEAD. */
+ GIT_REMOTE_UPDATE_FETCHHEAD = (1 << 0),
+
+ /* Report unchanged tips in the update_refs callback. */
+ GIT_REMOTE_UPDATE_REPORT_UNCHANGED = (1 << 1)
+} git_remote_update_flags;
+
/**
* Remote creation options structure
*
@@ -81,7 +116,10 @@ typedef struct git_remote_create_options {
unsigned int flags;
} git_remote_create_options;
+/** Current version for the `git_remote_create_options` structure */
#define GIT_REMOTE_CREATE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_remote_create_options` */
#define GIT_REMOTE_CREATE_OPTIONS_INIT {GIT_REMOTE_CREATE_OPTIONS_VERSION}
/**
@@ -211,9 +249,9 @@ GIT_EXTERN(const char *) git_remote_name(const git_remote *remote);
/**
* Get the remote's url
*
- * If url.*.insteadOf has been configured for this URL, it will
- * return the modified URL. If `git_remote_set_instance_pushurl`
- * has been called for this remote, then that URL will be returned.
+ * If url.*.insteadOf has been configured for this URL, it will return
+ * the modified URL. This function does not consider if a push url has
+ * been configured for this remote (use `git_remote_pushurl` if needed).
*
* @param remote the remote
* @return a pointer to the url
@@ -300,6 +338,7 @@ GIT_EXTERN(int) git_remote_add_fetch(git_repository *repo, const char *remote, c
*
* @param array pointer to the array in which to store the strings
* @param remote the remote to query
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_remote_get_fetch_refspecs(git_strarray *array, const git_remote *remote);
@@ -324,6 +363,7 @@ GIT_EXTERN(int) git_remote_add_push(git_repository *repo, const char *remote, co
*
* @param array pointer to the array in which to store the strings
* @param remote the remote to query
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_remote_get_push_refspecs(git_strarray *array, const git_remote *remote);
@@ -344,23 +384,6 @@ GIT_EXTERN(size_t) git_remote_refspec_count(const git_remote *remote);
*/
GIT_EXTERN(const git_refspec *)git_remote_get_refspec(const git_remote *remote, size_t n);
-/**
- * Open a connection to a remote
- *
- * The transport is selected based on the URL. The direction argument
- * is due to a limitation of the git protocol (over TCP or SSH) which
- * starts up a specific binary which can only do the one or the other.
- *
- * @param remote the remote to connect to
- * @param direction GIT_DIRECTION_FETCH if you want to fetch or
- * GIT_DIRECTION_PUSH if you want to push
- * @param callbacks the callbacks to use for this connection
- * @param proxy_opts proxy settings
- * @param custom_headers extra HTTP headers to use in this connection
- * @return 0 or an error code
- */
-GIT_EXTERN(int) git_remote_connect(git_remote *remote, git_direction direction, const git_remote_callbacks *callbacks, const git_proxy_options *proxy_opts, const git_strarray *custom_headers);
-
/**
* Get the remote repository's reference advertisement list
*
@@ -443,10 +466,18 @@ GIT_EXTERN(int) git_remote_list(git_strarray *out, git_repository *repo);
typedef enum git_remote_completion_t {
GIT_REMOTE_COMPLETION_DOWNLOAD,
GIT_REMOTE_COMPLETION_INDEXING,
- GIT_REMOTE_COMPLETION_ERROR,
+ GIT_REMOTE_COMPLETION_ERROR
} git_remote_completion_t;
-/** Push network progress notification function */
+/**
+ * Push network progress notification callback.
+ *
+ * @param current The number of objects pushed so far
+ * @param total The total number of objects to push
+ * @param bytes The number of bytes pushed
+ * @param payload The user-specified payload callback
+ * @return 0 or an error code to stop the transfer
+ */
typedef int GIT_CALLBACK(git_push_transfer_progress_cb)(
unsigned int current,
unsigned int total,
@@ -482,8 +513,12 @@ typedef struct {
* as commands to the destination.
* @param len number of elements in `updates`
* @param payload Payload provided by the caller
+ * @return 0 or an error code to stop the push
*/
-typedef int GIT_CALLBACK(git_push_negotiation)(const git_push_update **updates, size_t len, void *payload);
+typedef int GIT_CALLBACK(git_push_negotiation)(
+ const git_push_update **updates,
+ size_t len,
+ void *payload);
/**
* Callback used to inform of the update status from the remote.
@@ -548,7 +583,8 @@ struct git_remote_callbacks {
* Completion is called when different parts of the download
* process are done (currently unused).
*/
- int GIT_CALLBACK(completion)(git_remote_completion_t type, void *data);
+ int GIT_CALLBACK(completion)(git_remote_completion_t type,
+ void *data);
/**
* This will be called if the remote host requires
@@ -574,11 +610,22 @@ struct git_remote_callbacks {
*/
git_indexer_progress_cb transfer_progress;
+#ifdef GIT_DEPRECATE_HARD
+ void *reserved_update_tips;
+#else
/**
- * Each time a reference is updated locally, this function
- * will be called with information about it.
+ * Deprecated callback for reference updates, callers should
+ * set `update_refs` instead. This is retained for backward
+ * compatibility; if you specify both `update_refs` and
+ * `update_tips`, then only the `update_refs` function will
+ * be called.
+ *
+ * @deprecated the `update_refs` callback in this structure
+ * should be preferred
*/
- int GIT_CALLBACK(update_tips)(const char *refname, const git_oid *a, const git_oid *b, void *data);
+ int GIT_CALLBACK(update_tips)(const char *refname,
+ const git_oid *a, const git_oid *b, void *data);
+#endif
/**
* Function to call with progress information during pack
@@ -635,9 +682,25 @@ struct git_remote_callbacks {
*/
git_url_resolve_cb resolve_url;
#endif
+
+ /**
+ * Each time a reference is updated locally, this function
+ * will be called with information about it. This should be
+ * preferred over the `update_tips` callback in this
+ * structure.
+ */
+ int GIT_CALLBACK(update_refs)(
+ const char *refname,
+ const git_oid *a,
+ const git_oid *b,
+ git_refspec *spec,
+ void *data);
};
+/** Current version for the `git_remote_callbacks_options` structure */
#define GIT_REMOTE_CALLBACKS_VERSION 1
+
+/** Static constructor for `git_remote_callbacks_options` */
#define GIT_REMOTE_CALLBACKS_INIT {GIT_REMOTE_CALLBACKS_VERSION}
/**
@@ -665,7 +728,7 @@ typedef enum {
/**
* Force pruning off
*/
- GIT_FETCH_NO_PRUNE,
+ GIT_FETCH_NO_PRUNE
} git_fetch_prune_t;
/**
@@ -690,9 +753,18 @@ typedef enum {
/**
* Ask for the all the tags.
*/
- GIT_REMOTE_DOWNLOAD_TAGS_ALL,
+ GIT_REMOTE_DOWNLOAD_TAGS_ALL
} git_remote_autotag_option_t;
+/** Constants for fetch depth (shallowness of fetch). */
+typedef enum {
+ /** The fetch is "full" (not shallow). This is the default. */
+ GIT_FETCH_DEPTH_FULL = 0,
+
+ /** The fetch should "unshallow" and fetch missing data. */
+ GIT_FETCH_DEPTH_UNSHALLOW = 2147483647
+} git_fetch_depth_t;
+
/**
* Fetch options structure.
*
@@ -715,10 +787,9 @@ typedef struct {
git_fetch_prune_t prune;
/**
- * Whether to write the results to FETCH_HEAD. Defaults to
- * on. Leave this default in order to behave like git.
+ * How to handle reference updates; see `git_remote_update_flags`.
*/
- int update_fetchhead;
+ unsigned int update_fetchhead;
/**
* Determines how to behave regarding tags on the remote, such
@@ -734,15 +805,39 @@ typedef struct {
*/
git_proxy_options proxy_opts;
+ /**
+ * Depth of the fetch to perform, or `GIT_FETCH_DEPTH_FULL`
+ * (or `0`) for full history, or `GIT_FETCH_DEPTH_UNSHALLOW`
+ * to "unshallow" a shallow repository.
+ *
+ * The default is full (`GIT_FETCH_DEPTH_FULL` or `0`).
+ */
+ int depth;
+
+ /**
+ * Whether to allow off-site redirects. If this is not
+ * specified, the `http.followRedirects` configuration setting
+ * will be consulted.
+ */
+ git_remote_redirect_t follow_redirects;
+
/**
* Extra headers for this fetch operation
*/
git_strarray custom_headers;
} git_fetch_options;
+/** Current version for the `git_fetch_options` structure */
#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 }
+
+/** Static constructor for `git_fetch_options` */
+#define GIT_FETCH_OPTIONS_INIT { \
+ GIT_FETCH_OPTIONS_VERSION, \
+ GIT_REMOTE_CALLBACKS_INIT, \
+ GIT_FETCH_PRUNE_UNSPECIFIED, \
+ GIT_REMOTE_UPDATE_FETCHHEAD, \
+ GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED, \
+ GIT_PROXY_OPTIONS_INIT }
/**
* Initialize git_fetch_options structure
@@ -785,13 +880,28 @@ typedef struct {
*/
git_proxy_options proxy_opts;
+ /**
+ * Whether to allow off-site redirects. If this is not
+ * specified, the `http.followRedirects` configuration setting
+ * will be consulted.
+ */
+ git_remote_redirect_t follow_redirects;
+
/**
* Extra headers for this push operation
*/
git_strarray custom_headers;
+
+ /**
+ * "Push options" to deliver to the remote.
+ */
+ git_strarray remote_push_options;
} git_push_options;
+/** Current version for the `git_push_options` structure */
#define GIT_PUSH_OPTIONS_VERSION 1
+
+/** Static constructor for `git_push_options` */
#define GIT_PUSH_OPTIONS_INIT { GIT_PUSH_OPTIONS_VERSION, 1, GIT_REMOTE_CALLBACKS_INIT, GIT_PROXY_OPTIONS_INIT }
/**
@@ -809,7 +919,103 @@ GIT_EXTERN(int) git_push_options_init(
unsigned int version);
/**
- * Download and index the packfile
+ * Remote creation options structure
+ *
+ * Initialize with `GIT_REMOTE_CREATE_OPTIONS_INIT`. Alternatively, you can
+ * use `git_remote_create_options_init`.
+ *
+ */
+typedef struct {
+ unsigned int version;
+
+ /** Callbacks to use for this connection */
+ git_remote_callbacks callbacks;
+
+ /** HTTP Proxy settings */
+ git_proxy_options proxy_opts;
+
+ /**
+ * Whether to allow off-site redirects. If this is not
+ * specified, the `http.followRedirects` configuration setting
+ * will be consulted.
+ */
+ git_remote_redirect_t follow_redirects;
+
+ /** Extra HTTP headers to use in this connection */
+ git_strarray custom_headers;
+} git_remote_connect_options;
+
+/** Current version for the `git_remote_connect_options` structure */
+#define GIT_REMOTE_CONNECT_OPTIONS_VERSION 1
+
+/** Static constructor for `git_remote_connect_options` */
+#define GIT_REMOTE_CONNECT_OPTIONS_INIT { \
+ GIT_REMOTE_CONNECT_OPTIONS_VERSION, \
+ GIT_REMOTE_CALLBACKS_INIT, \
+ GIT_PROXY_OPTIONS_INIT }
+
+/**
+ * Initialize git_remote_connect_options structure.
+ *
+ * Initializes a `git_remote_connect_options` with default values.
+ * Equivalent to creating an instance with
+ * `GIT_REMOTE_CONNECT_OPTIONS_INIT`.
+ *
+ * @param opts The `git_remote_connect_options` struct to initialize.
+ * @param version The struct version; pass `GIT_REMOTE_CONNECT_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_remote_connect_options_init(
+ git_remote_connect_options *opts,
+ unsigned int version);
+
+/**
+ * Open a connection to a remote.
+ *
+ * The transport is selected based on the URL; the direction argument
+ * is due to a limitation of the git protocol which starts up a
+ * specific binary which can only do the one or the other.
+ *
+ * @param remote the remote to connect to
+ * @param direction GIT_DIRECTION_FETCH if you want to fetch or
+ * GIT_DIRECTION_PUSH if you want to push
+ * @param callbacks the callbacks to use for this connection
+ * @param proxy_opts proxy settings
+ * @param custom_headers extra HTTP headers to use in this connection
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_remote_connect(
+ git_remote *remote,
+ git_direction direction,
+ const git_remote_callbacks *callbacks,
+ const git_proxy_options *proxy_opts,
+ const git_strarray *custom_headers);
+
+/**
+ * Open a connection to a remote with extended options.
+ *
+ * The transport is selected based on the URL; the direction argument
+ * is due to a limitation of the git protocol which starts up a
+ * specific binary which can only do the one or the other.
+ *
+ * The given options structure will form the defaults for connection
+ * options and callback setup. Callers may override these defaults
+ * by specifying `git_fetch_options` or `git_push_options` in
+ * subsequent calls.
+ *
+ * @param remote the remote to connect to
+ * @param direction GIT_DIRECTION_FETCH if you want to fetch or
+ * GIT_DIRECTION_PUSH if you want to push
+ * @param opts the remote connection options
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_remote_connect_ext(
+ git_remote *remote,
+ git_direction direction,
+ const git_remote_connect_options *opts);
+
+/**
+ * Download and index the packfile.
*
* Connect to the remote if it hasn't been done yet, negotiate with
* the remote git which objects are missing, download and index the
@@ -818,19 +1024,31 @@ GIT_EXTERN(int) git_push_options_init(
* The .idx file will be created and both it and the packfile with be
* renamed to their final name.
*
+ * If options are specified and this remote is already connected then
+ * the existing remote connection options will be discarded and the
+ * remote will now use the new options.
+ *
* @param remote the remote
* @param refspecs the refspecs to use for this negotiation and
* download. Use NULL or an empty array to use the base refspecs
- * @param opts the options to use for this fetch
+ * @param opts the options to use for this fetch or NULL
* @return 0 or an error code
*/
- GIT_EXTERN(int) git_remote_download(git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts);
+ GIT_EXTERN(int) git_remote_download(
+ git_remote *remote,
+ const git_strarray *refspecs,
+ const git_fetch_options *opts);
/**
* Create a packfile and send it to the server
*
* Connect to the remote if it hasn't been done yet, negotiate with
- * the remote git which objects are missing, create a packfile with the missing objects and send it.
+ * the remote git which objects are missing, create a packfile with
+ * the missing objects and send it.
+ *
+ * If options are specified and this remote is already connected then
+ * the existing remote connection options will be discarded and the
+ * remote will now use the new options.
*
* @param remote the remote
* @param refspecs the refspecs to use for this negotiation and
@@ -838,39 +1056,49 @@ GIT_EXTERN(int) git_push_options_init(
* @param opts the options to use for this push
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_remote_upload(git_remote *remote, const git_strarray *refspecs, const git_push_options *opts);
+GIT_EXTERN(int) git_remote_upload(
+ git_remote *remote,
+ const git_strarray *refspecs,
+ const git_push_options *opts);
/**
- * Update the tips to the new state
+ * Update the tips to the new state.
+ *
+ * If callbacks are not specified then the callbacks specified to
+ * `git_remote_connect` will be used (if it was called).
*
* @param remote the remote to update
+ * @param callbacks pointer to the callback structure to use or NULL
+ * @param update_flags the git_remote_update_flags for these tips.
+ * @param download_tags what the behaviour for downloading tags is for this fetch. This is
+ * ignored for push. This must be the same value passed to `git_remote_download()`.
* @param reflog_message The message to insert into the reflogs. If
* NULL and fetching, the default is "fetch ", where is
* the name of the remote (or its url, for in-memory remotes). This
* parameter is ignored when pushing.
- * @param callbacks pointer to the callback structure to use
- * @param update_fetchhead whether to write to FETCH_HEAD. Pass 1 to behave like git.
- * @param download_tags what the behaviour for downloading tags is for this fetch. This is
- * ignored for push. This must be the same value passed to `git_remote_download()`.
* @return 0 or an error code
*/
GIT_EXTERN(int) git_remote_update_tips(
git_remote *remote,
const git_remote_callbacks *callbacks,
- int update_fetchhead,
+ unsigned int update_flags,
git_remote_autotag_option_t download_tags,
const char *reflog_message);
/**
- * Download new data and update tips
+ * Download new data and update tips.
*
* Convenience function to connect to a remote, download the data,
* disconnect and update the remote-tracking branches.
*
+ * If options are specified and this remote is already connected then
+ * the existing remote connection options will be discarded and the
+ * remote will now use the new options.
+ *
* @param remote the remote to fetch from
* @param refspecs the refspecs to use for this fetch. Pass NULL or an
* empty array to use the base refspecs.
- * @param opts options to use for this fetch
+ * @param opts options to use for this fetch or NULL
* @param reflog_message The message to insert into the reflogs. If NULL, the
* default is "fetch"
* @return 0 or an error code
@@ -882,30 +1110,42 @@ GIT_EXTERN(int) git_remote_fetch(
const char *reflog_message);
/**
- * Prune tracking refs that are no longer present on remote
+ * Prune tracking refs that are no longer present on remote.
+ *
+ * If callbacks are not specified then the callbacks specified to
+ * `git_remote_connect` will be used (if it was called).
*
* @param remote the remote to prune
* @param callbacks callbacks to use for this prune
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_remote_prune(git_remote *remote, const git_remote_callbacks *callbacks);
+GIT_EXTERN(int) git_remote_prune(
+ git_remote *remote,
+ const git_remote_callbacks *callbacks);
/**
- * Perform a push
+ * Perform a push.
*
- * Peform all the steps from a push.
+ * If options are specified and this remote is already connected then
+ * the existing remote connection options will be discarded and the
+ * remote will now use the new options.
*
* @param remote the remote to push to
* @param refspecs the refspecs to use for pushing. If NULL or an empty
* array, the configured refspecs will be used
* @param opts options to use for this push
+ * @return 0 or an error code.
*/
-GIT_EXTERN(int) git_remote_push(git_remote *remote,
- const git_strarray *refspecs,
- const git_push_options *opts);
+GIT_EXTERN(int) git_remote_push(
+ git_remote *remote,
+ const git_strarray *refspecs,
+ const git_push_options *opts);
/**
* Get the statistics structure that is filled in by the fetch operation.
+ *
+ * @param remote the remote to get statistics for
+ * @return the git_indexer_progress for the remote
*/
GIT_EXTERN(const git_indexer_progress *) git_remote_stats(git_remote *remote);
@@ -1005,4 +1245,5 @@ GIT_EXTERN(int) git_remote_default_branch(git_buf *out, git_remote *remote);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/repository.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/repository.h
index 8d1cffc..b203576 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/repository.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/repository.h
@@ -10,12 +10,14 @@
#include "common.h"
#include "types.h"
#include "oid.h"
+#include "odb.h"
#include "buffer.h"
+#include "commit.h"
/**
* @file git2/repository.h
- * @brief Git repository management routines
- * @defgroup git_repository Git repository management routines
+ * @brief The repository stores revisions for a source tree
+ * @defgroup git_repository The repository stores revisions for a source tree
* @ingroup Git
* @{
*/
@@ -30,7 +32,11 @@ GIT_BEGIN_DECL
* The method will automatically detect if 'path' is a normal
* or bare repository or fail is 'path' is neither.
*
- * @param out pointer to the repo which will be opened
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
+ * @param[out] out pointer to the repo which will be opened
* @param path the path to the repository
* @return 0 or an error code
*/
@@ -58,7 +64,9 @@ GIT_EXTERN(int) git_repository_open_from_worktree(git_repository **out, git_work
* @param odb the object database to wrap
* @return 0 or an error code
*/
-GIT_EXTERN(int) git_repository_wrap_odb(git_repository **out, git_odb *odb);
+GIT_EXTERN(int) git_repository_wrap_odb(
+ git_repository **out,
+ git_odb *odb);
/**
* Look for a git repository and copy its path in the given buffer.
@@ -70,6 +78,10 @@ GIT_EXTERN(int) git_repository_wrap_odb(git_repository **out, git_odb *odb);
* The method will automatically detect if the repository is bare
* (if there is a repository).
*
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
* @param out A pointer to a user-allocated git_buf which will contain
* the found path.
*
@@ -141,13 +153,17 @@ typedef enum {
* `git_repository_open_ext` with this flag will error out if either
* $GIT_WORK_TREE or $GIT_COMMON_DIR is set.
*/
- GIT_REPOSITORY_OPEN_FROM_ENV = (1 << 4),
+ GIT_REPOSITORY_OPEN_FROM_ENV = (1 << 4)
} git_repository_open_flag_t;
/**
* Find and open a repository with extended controls.
*
- * @param out Pointer to the repo which will be opened. This can
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
+ * @param[out] out Pointer to the repo which will be opened. This can
* actually be NULL if you only want to use the error code to
* see if a repo at this path could be opened.
* @param path Path to open as git repository. If the flags
@@ -175,7 +191,11 @@ GIT_EXTERN(int) git_repository_open_ext(
* if you're e.g. hosting git repositories and need to access them
* efficiently
*
- * @param out Pointer to the repo which will be opened.
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
+ * @param[out] out Pointer to the repo which will be opened.
* @param bare_path Direct path to the bare repository
* @return 0 on success, or an error code
*/
@@ -200,7 +220,11 @@ GIT_EXTERN(void) git_repository_free(git_repository *repo);
* TODO:
* - Reinit the repository
*
- * @param out pointer to the repo which will be created or reinitialized
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
+ * @param[out] out pointer to the repo which will be created or reinitialized
* @param path the path to the repository
* @param is_bare if true, a Git repository without a working directory is
* created at the pointed path. If false, provided path will be
@@ -267,7 +291,7 @@ typedef enum {
* If an alternate workdir is specified, use relative paths for the gitdir
* and core.worktree.
*/
- GIT_REPOSITORY_INIT_RELATIVE_GITLINK = (1u << 6),
+ GIT_REPOSITORY_INIT_RELATIVE_GITLINK = (1u << 6)
} git_repository_init_flag_t;
/**
@@ -292,7 +316,7 @@ typedef enum {
/**
* Use "--shared=all" behavior, adding world readability.
*/
- GIT_REPOSITORY_INIT_SHARED_ALL = 0002777,
+ GIT_REPOSITORY_INIT_SHARED_ALL = 0002777
} git_repository_init_mode_t;
/**
@@ -351,9 +375,21 @@ typedef struct {
* pointing to this URL.
*/
const char *origin_url;
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /**
+ *
+ * Type of object IDs to use for this repository, or 0 for
+ * default (currently SHA1).
+ */
+ git_oid_t oid_type;
+#endif
} git_repository_init_options;
+/** Current version for the `git_repository_init_options` structure */
#define GIT_REPOSITORY_INIT_OPTIONS_VERSION 1
+
+/** Static constructor for `git_repository_init_options` */
#define GIT_REPOSITORY_INIT_OPTIONS_INIT {GIT_REPOSITORY_INIT_OPTIONS_VERSION}
/**
@@ -378,6 +414,10 @@ GIT_EXTERN(int) git_repository_init_options_init(
* auto-detect the case sensitivity of the file system and if the
* file system supports file mode bits correctly.
*
+ * Note that the libgit2 library _must_ be initialized using
+ * `git_libgit2_init` before any APIs can be called, including
+ * this one.
+ *
* @param out Pointer to the repo which will be created or reinitialized.
* @param repo_path The path to the repository.
* @param opts Pointer to git_repository_init_options struct.
@@ -395,7 +435,7 @@ GIT_EXTERN(int) git_repository_init_ext(
* `git_reference_free()` must be called when done with it to release the
* allocated memory and prevent a leak.
*
- * @param out pointer to the reference which will be retrieved
+ * @param[out] out pointer to the reference which will be retrieved
* @param repo a repository object
*
* @return 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing
@@ -456,7 +496,9 @@ GIT_EXTERN(int) git_repository_head_unborn(git_repository *repo);
* Check if a repository is empty
*
* An empty repository has just been initialized and contains no references
- * apart from HEAD, which must be pointing to the unborn master branch.
+ * apart from HEAD, which must be pointing to the unborn master branch,
+ * or the branch specified for the repository in the `init.defaultBranch`
+ * configuration variable.
*
* @param repo Repo to test
* @return 1 if the repository is empty, 0 if it isn't, error code
@@ -482,6 +524,7 @@ typedef enum {
GIT_REPOSITORY_ITEM_LOGS,
GIT_REPOSITORY_ITEM_MODULES,
GIT_REPOSITORY_ITEM_WORKTREES,
+ GIT_REPOSITORY_ITEM_WORKTREE_CONFIG,
GIT_REPOSITORY_ITEM__LAST
} git_repository_item_t;
@@ -525,7 +568,7 @@ GIT_EXTERN(const char *) git_repository_workdir(const git_repository *repo);
/**
* Get the path of the shared common directory for this repository.
- *
+ *
* If the repository is bare, it is the root directory for the repository.
* If the repository is a worktree, it is the parent repo's gitdir.
* Otherwise, it is the gitdir.
@@ -613,7 +656,7 @@ GIT_EXTERN(int) git_repository_config_snapshot(git_config **out, git_repository
* The ODB must be freed once it's no longer being used by
* the user.
*
- * @param out Pointer to store the loaded ODB
+ * @param[out] out Pointer to store the loaded ODB
* @param repo A repository object
* @return 0, or an error code
*/
@@ -629,7 +672,7 @@ GIT_EXTERN(int) git_repository_odb(git_odb **out, git_repository *repo);
* The refdb must be freed once it's no longer being used by
* the user.
*
- * @param out Pointer to store the loaded refdb
+ * @param[out] out Pointer to store the loaded refdb
* @param repo A repository object
* @return 0, or an error code
*/
@@ -645,7 +688,7 @@ GIT_EXTERN(int) git_repository_refdb(git_refdb **out, git_repository *repo);
* The index must be freed once it's no longer being used by
* the user.
*
- * @param out Pointer to store the loaded index
+ * @param[out] out Pointer to store the loaded index
* @param repo A repository object
* @return 0, or an error code
*/
@@ -673,6 +716,9 @@ GIT_EXTERN(int) git_repository_message(git_buf *out, git_repository *repo);
* Remove git's prepared message.
*
* Remove the message that `git_repository_message` retrieves.
+ *
+ * @param repo Repository to remove prepared message from.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_repository_message_remove(git_repository *repo);
@@ -808,19 +854,19 @@ GIT_EXTERN(int) git_repository_set_head(
* If the provided committish cannot be found in the repository, the HEAD
* is unaltered and GIT_ENOTFOUND is returned.
*
- * If the provided commitish cannot be peeled into a commit, the HEAD
+ * If the provided committish cannot be peeled into a commit, the HEAD
* is unaltered and -1 is returned.
*
* Otherwise, the HEAD will eventually be detached and will directly point to
* the peeled Commit.
*
* @param repo Repository pointer
- * @param commitish Object id of the Commit the HEAD should point to
+ * @param committish Object id of the Commit the HEAD should point to
* @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_repository_set_head_detached(
git_repository *repo,
- const git_oid *commitish);
+ const git_oid *committish);
/**
* Make the repository HEAD directly point to the Commit.
@@ -832,11 +878,13 @@ GIT_EXTERN(int) git_repository_set_head_detached(
*
* See the documentation for `git_repository_set_head_detached()`.
*
- * @see git_repository_set_head_detached
+ * @param repo Repository pointer
+ * @param committish annotated commit to point HEAD to
+ * @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_repository_set_head_detached_from_annotated(
git_repository *repo,
- const git_annotated_commit *commitish);
+ const git_annotated_commit *committish);
/**
* Detach the HEAD.
@@ -846,7 +894,7 @@ GIT_EXTERN(int) git_repository_set_head_detached_from_annotated(
* If the HEAD is already detached and points to a Tag, the HEAD is
* updated into making it point to the peeled Commit, and 0 is returned.
*
- * If the HEAD is already detached and points to a non commitish, the HEAD is
+ * If the HEAD is already detached and points to a non committish, the HEAD is
* unaltered, and -1 is returned.
*
* Otherwise, the HEAD will be detached and point to the peeled Commit.
@@ -876,7 +924,7 @@ typedef enum {
GIT_REPOSITORY_STATE_REBASE_INTERACTIVE,
GIT_REPOSITORY_STATE_REBASE_MERGE,
GIT_REPOSITORY_STATE_APPLY_MAILBOX,
- GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE,
+ GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE
} git_repository_state_t;
/**
@@ -925,9 +973,10 @@ GIT_EXTERN(int) git_repository_is_shallow(git_repository *repo);
* The memory is owned by the repository and must not be freed by the
* user.
*
- * @param name where to store the pointer to the name
- * @param email where to store the pointer to the email
+ * @param[out] name where to store the pointer to the name
+ * @param[out] email where to store the pointer to the email
* @param repo the repository
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_repository_ident(const char **name, const char **email, const git_repository *repo);
@@ -941,9 +990,30 @@ GIT_EXTERN(int) git_repository_ident(const char **name, const char **email, cons
* @param repo the repository to configure
* @param name the name to use for the reflog entries
* @param email the email to use for the reflog entries
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_repository_set_ident(git_repository *repo, const char *name, const char *email);
+/**
+ * Gets the object type used by this repository.
+ *
+ * @param repo the repository
+ * @return the object id type
+ */
+GIT_EXTERN(git_oid_t) git_repository_oid_type(git_repository *repo);
+
+/**
+ * Gets the parents of the next commit, given the current repository state.
+ * Generally, this is the HEAD commit, except when performing a merge, in
+ * which case it is two or more commits.
+ *
+ * @param commits a `git_commitarray` that will contain the commit parents
+ * @param repo the repository
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_repository_commit_parents(git_commitarray *commits, git_repository *repo);
+
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/reset.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/reset.h
index be25414..0123f7c 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/reset.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/reset.h
@@ -14,7 +14,7 @@
/**
* @file git2/reset.h
- * @brief Git reset management routines
+ * @brief Reset will update the local repository to a prior state
* @ingroup Git
* @{
*/
@@ -26,7 +26,7 @@ GIT_BEGIN_DECL
typedef enum {
GIT_RESET_SOFT = 1, /**< Move the head to the given commit */
GIT_RESET_MIXED = 2, /**< SOFT plus reset index to the commit */
- GIT_RESET_HARD = 3, /**< MIXED plus changes in working tree discarded */
+ GIT_RESET_HARD = 3 /**< MIXED plus changes in working tree discarded */
} git_reset_t;
/**
@@ -48,7 +48,7 @@ typedef enum {
*
* @param target Committish to which the Head should be moved to. This object
* must belong to the given `repo` and can either be a git_commit or a
- * git_tag. When a git_tag is being passed, it should be dereferencable
+ * git_tag. When a git_tag is being passed, it should be dereferenceable
* to a git_commit which oid will be used as the target of the branch.
*
* @param reset_type Kind of reset operation to perform.
@@ -75,11 +75,23 @@ GIT_EXTERN(int) git_reset(
*
* See the documentation for `git_reset()`.
*
- * @see git_reset
+ * @param repo Repository where to perform the reset operation.
+ *
+ * @param target Annotated commit to which the Head should be moved to.
+ * This object must belong to the given `repo`, it will be dereferenced
+ * to a git_commit which oid will be used as the target of the branch.
+ *
+ * @param reset_type Kind of reset operation to perform.
+ *
+ * @param checkout_opts Optional checkout options to be used for a HARD reset.
+ * The checkout_strategy field will be overridden (based on reset_type).
+ * This parameter can be used to propagate notify and progress callbacks.
+ *
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_reset_from_annotated(
git_repository *repo,
- const git_annotated_commit *commit,
+ const git_annotated_commit *target,
git_reset_t reset_type,
const git_checkout_options *checkout_opts);
@@ -108,4 +120,5 @@ GIT_EXTERN(int) git_reset_default(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/revert.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/revert.h
index 331e90d..ec51eca 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/revert.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/revert.h
@@ -13,8 +13,8 @@
/**
* @file git2/revert.h
- * @brief Git revert routines
- * @defgroup git_revert Git revert routines
+ * @brief Cherry-pick the inverse of a change to "undo" its effects
+ * @defgroup git_revert Cherry-pick the inverse of a change to "undo" its effects
* @ingroup Git
* @{
*/
@@ -33,8 +33,13 @@ typedef struct {
git_checkout_options checkout_opts; /**< Options for the checkout */
} git_revert_options;
+/** Current version for the `git_revert_options` structure */
#define GIT_REVERT_OPTIONS_VERSION 1
-#define GIT_REVERT_OPTIONS_INIT {GIT_REVERT_OPTIONS_VERSION, 0, GIT_MERGE_OPTIONS_INIT, GIT_CHECKOUT_OPTIONS_INIT}
+
+/** Static constructor for `git_revert_options` */
+#define GIT_REVERT_OPTIONS_INIT { \
+ GIT_REVERT_OPTIONS_VERSION, 0, \
+ GIT_MERGE_OPTIONS_INIT, GIT_CHECKOUT_OPTIONS_INIT }
/**
* Initialize git_revert_options structure
@@ -87,5 +92,5 @@ GIT_EXTERN(int) git_revert(
/** @} */
GIT_END_DECL
-#endif
+#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/revparse.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/revparse.h
index e14ddee..c14fe3d 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/revparse.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/revparse.h
@@ -12,8 +12,8 @@
/**
* @file git2/revparse.h
- * @brief Git revision parsing routines
- * @defgroup git_revparse Git revision parsing routines
+ * @brief Parse the textual revision information
+ * @defgroup git_revparse Parse the textual revision information
* @ingroup Git
* @{
*/
@@ -74,7 +74,7 @@ typedef enum {
/** The spec targeted a range of commits. */
GIT_REVSPEC_RANGE = 1 << 1,
/** The spec used the '...' operator, which invokes special semantics. */
- GIT_REVSPEC_MERGE_BASE = 1 << 2,
+ GIT_REVSPEC_MERGE_BASE = 1 << 2
} git_revspec_t;
/**
@@ -107,7 +107,7 @@ GIT_EXTERN(int) git_revparse(
git_repository *repo,
const char *spec);
-
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/revwalk.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/revwalk.h
index 98dcbf8..7c4ac54 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/revwalk.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/revwalk.h
@@ -13,8 +13,8 @@
/**
* @file git2/revwalk.h
- * @brief Git revision traversal routines
- * @defgroup git_revwalk Git revision traversal routines
+ * @brief Traverse (walk) the commit graph (revision history)
+ * @defgroup git_revwalk Traverse (walk) the commit graph (revision history)
* @ingroup Git
* @{
*/
@@ -49,7 +49,7 @@ typedef enum {
* order; this sorting mode can be combined with
* any of the above.
*/
- GIT_SORT_REVERSE = 1 << 2,
+ GIT_SORT_REVERSE = 1 << 2
} git_sort_t;
/**
@@ -249,6 +249,7 @@ GIT_EXTERN(int) git_revwalk_push_range(git_revwalk *walk, const char *range);
*
* No parents other than the first for each commit will be enqueued.
*
+ * @param walk The revision walker.
* @return 0 or an error code
*/
GIT_EXTERN(int) git_revwalk_simplify_first_parent(git_revwalk *walk);
@@ -277,6 +278,7 @@ GIT_EXTERN(git_repository *) git_revwalk_repository(git_revwalk *walk);
*
* @param commit_id oid of Commit
* @param payload User-specified pointer to data to be passed as data payload
+ * @return non-zero to hide the commmit and it parent.
*/
typedef int GIT_CALLBACK(git_revwalk_hide_cb)(
const git_oid *commit_id,
@@ -288,6 +290,7 @@ typedef int GIT_CALLBACK(git_revwalk_hide_cb)(
* @param walk the revision walker
* @param hide_cb callback function to hide a commit and its parents
* @param payload data payload to be passed to callback function
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_revwalk_add_hide_cb(
git_revwalk *walk,
@@ -296,4 +299,5 @@ GIT_EXTERN(int) git_revwalk_add_hide_cb(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/signature.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/signature.h
index b14f3ea..20ec24b 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/signature.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/signature.h
@@ -12,9 +12,13 @@
/**
* @file git2/signature.h
- * @brief Git signature creation
+ * @brief Signatures are the actor in a repository and when they acted
* @defgroup git_signature Git signature creation
* @ingroup Git
+ *
+ * Signatures contain the information about the actor (committer or
+ * author) in a repository, and the time that they performed the
+ * commit, or authoring.
* @{
*/
GIT_BEGIN_DECL
@@ -48,6 +52,42 @@ GIT_EXTERN(int) git_signature_new(git_signature **out, const char *name, const c
*/
GIT_EXTERN(int) git_signature_now(git_signature **out, const char *name, const char *email);
+/**
+ * Create a new author and/or committer signatures with default
+ * information based on the configuration and environment variables.
+ *
+ * If `author_out` is set, it will be populated with the author
+ * information. The `GIT_AUTHOR_NAME` and `GIT_AUTHOR_EMAIL`
+ * environment variables will be honored, and `user.name` and
+ * `user.email` configuration options will be honored if the
+ * environment variables are unset. For timestamps, `GIT_AUTHOR_DATE`
+ * will be used, otherwise the current time will be used.
+ *
+ * If `committer_out` is set, it will be populated with the
+ * committer information. The `GIT_COMMITTER_NAME` and
+ * `GIT_COMMITTER_EMAIL` environment variables will be honored,
+ * and `user.name` and `user.email` configuration options will
+ * be honored if the environment variables are unset. For timestamps,
+ * `GIT_COMMITTER_DATE` will be used, otherwise the current time will
+ * be used.
+ *
+ * If neither `GIT_AUTHOR_DATE` nor `GIT_COMMITTER_DATE` are set,
+ * both timestamps will be set to the same time.
+ *
+ * It will return `GIT_ENOTFOUND` if either the `user.name` or
+ * `user.email` are not set and there is no fallback from an environment
+ * variable. One of `author_out` or `committer_out` must be set.
+ *
+ * @param author_out pointer to set the author signature, or NULL
+ * @param committer_out pointer to set the committer signature, or NULL
+ * @param repo repository pointer
+ * @return 0 on success, GIT_ENOTFOUND if config is missing, or error code
+ */
+GIT_EXTERN(int) git_signature_default_from_env(
+ git_signature **author_out,
+ git_signature **committer_out,
+ git_repository *repo);
+
/**
* Create a new action signature with default user and now timestamp.
*
@@ -56,6 +96,10 @@ GIT_EXTERN(int) git_signature_now(git_signature **out, const char *name, const c
* based on that information. It will return GIT_ENOTFOUND if either the
* user.name or user.email are not set.
*
+ * Note that these do not examine environment variables, only the
+ * configuration files. Use `git_signature_default_from_env` to
+ * consider the environment variables.
+ *
* @param out new signature
* @param repo repository pointer
* @return 0 on success, GIT_ENOTFOUND if config is missing, or error code
@@ -71,7 +115,7 @@ GIT_EXTERN(int) git_signature_default(git_signature **out, git_repository *repo)
*
* @param out new signature
* @param buf signature string
- * @return 0 on success, or an error code
+ * @return 0 on success, GIT_EINVALID if the signature is not parseable, or an error code
*/
GIT_EXTERN(int) git_signature_from_buffer(git_signature **out, const char *buf);
@@ -100,4 +144,5 @@ GIT_EXTERN(void) git_signature_free(git_signature *sig);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/stash.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/stash.h
index 795920e..ad28c32 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/stash.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/stash.h
@@ -13,8 +13,13 @@
/**
* @file git2/stash.h
- * @brief Git stash management routines
+ * @brief Stashes stores some uncommitted state in the repository
* @ingroup Git
+ *
+ * Stashes stores some uncommitted state in the repository; generally
+ * this allows a user to stash some changes so that they can restore
+ * the working directory to an unmodified state. This can allow a
+ * developer to work on two different changes in parallel.
* @{
*/
GIT_BEGIN_DECL
@@ -45,6 +50,11 @@ typedef enum {
* the working directory
*/
GIT_STASH_INCLUDE_IGNORED = (1 << 2),
+
+ /**
+ * All changes in the index and working directory are left intact
+ */
+ GIT_STASH_KEEP_ALL = (1 << 3)
} git_stash_flags;
/**
@@ -52,15 +62,10 @@ typedef enum {
*
* @param out Object id of the commit containing the stashed state.
* This commit is also the target of the direct reference refs/stash.
- *
* @param repo The owning repository.
- *
* @param stasher The identity of the person performing the stashing.
- *
* @param message Optional description along with the stashed state.
- *
* @param flags Flags to control the stashing process. (see GIT_STASH_* above)
- *
* @return 0 on success, GIT_ENOTFOUND where there's nothing to stash,
* or error code.
*/
@@ -71,6 +76,63 @@ GIT_EXTERN(int) git_stash_save(
const char *message,
uint32_t flags);
+/**
+ * Stash save options structure
+ *
+ * Initialize with `GIT_STASH_SAVE_OPTIONS_INIT`. Alternatively, you can
+ * use `git_stash_save_options_init`.
+ *
+ */
+typedef struct git_stash_save_options {
+ unsigned int version;
+
+ /** Flags to control the stashing process. (see GIT_STASH_* above) */
+ uint32_t flags;
+
+ /** The identity of the person performing the stashing. */
+ const git_signature *stasher;
+
+ /** Optional description along with the stashed state. */
+ const char *message;
+
+ /** Optional paths that control which files are stashed. */
+ git_strarray paths;
+} git_stash_save_options;
+
+/** Current version for the `git_stash_save_options` structure */
+#define GIT_STASH_SAVE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_stash_save_options` */
+#define GIT_STASH_SAVE_OPTIONS_INIT { GIT_STASH_SAVE_OPTIONS_VERSION }
+
+/**
+ * Initialize git_stash_save_options structure
+ *
+ * Initializes a `git_stash_save_options` with default values. Equivalent to
+ * creating an instance with `GIT_STASH_SAVE_OPTIONS_INIT`.
+ *
+ * @param opts The `git_stash_save_options` struct to initialize.
+ * @param version The struct version; pass `GIT_STASH_SAVE_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_stash_save_options_init(
+ git_stash_save_options *opts, unsigned int version);
+
+/**
+ * Save the local modifications to a new stash, with options.
+ *
+ * @param out Object id of the commit containing the stashed state.
+ * This commit is also the target of the direct reference refs/stash.
+ * @param repo The owning repository.
+ * @param opts The stash options.
+ * @return 0 on success, GIT_ENOTFOUND where there's nothing to stash,
+ * or error code.
+ */
+GIT_EXTERN(int) git_stash_save_with_opts(
+ git_oid *out,
+ git_repository *repo,
+ const git_stash_save_options *opts);
+
/** Stash application flags. */
typedef enum {
GIT_STASH_APPLY_DEFAULT = 0,
@@ -78,7 +140,7 @@ typedef enum {
/* Try to reinstate not only the working tree's changes,
* but also the index's changes.
*/
- GIT_STASH_APPLY_REINSTATE_INDEX = (1 << 0),
+ GIT_STASH_APPLY_REINSTATE_INDEX = (1 << 0)
} git_stash_apply_flags;
/** Stash apply progression states */
@@ -104,13 +166,17 @@ typedef enum {
GIT_STASH_APPLY_PROGRESS_CHECKOUT_MODIFIED,
/** The stash was applied successfully. */
- GIT_STASH_APPLY_PROGRESS_DONE,
+ GIT_STASH_APPLY_PROGRESS_DONE
} git_stash_apply_progress_t;
/**
* Stash application progress notification function.
* Return 0 to continue processing, or a negative value to
* abort the stash application.
+ *
+ * @param progress the progress information
+ * @param payload the user-specified payload to the apply function
+ * @return 0 on success, -1 on error
*/
typedef int GIT_CALLBACK(git_stash_apply_progress_cb)(
git_stash_apply_progress_t progress,
@@ -137,7 +203,10 @@ typedef struct git_stash_apply_options {
void *progress_payload;
} git_stash_apply_options;
+/** Current version for the `git_stash_apply_options` structure */
#define GIT_STASH_APPLY_OPTIONS_VERSION 1
+
+/** Static constructor for `git_stash_apply_options` */
#define GIT_STASH_APPLY_OPTIONS_INIT { \
GIT_STASH_APPLY_OPTIONS_VERSION, \
GIT_STASH_APPLY_DEFAULT, \
@@ -171,8 +240,6 @@ GIT_EXTERN(int) git_stash_apply_options_init(
* GIT_EMERGECONFLICT and both the working directory and index will be left
* unmodified.
*
- * Note that a minimum checkout strategy of `GIT_CHECKOUT_SAFE` is implied.
- *
* @param repo The owning repository.
* @param index The position within the stash list. 0 points to the
* most recent stashed state.
@@ -257,4 +324,5 @@ GIT_EXTERN(int) git_stash_pop(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/status.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/status.h
index 543e3fa..e13783b 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/status.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/status.h
@@ -14,7 +14,7 @@
/**
* @file git2/status.h
- * @brief Git file status routines
+ * @brief Status indicates how a user has changed the working directory and index
* @defgroup git_status Git file status routines
* @ingroup Git
* @{
@@ -48,17 +48,16 @@ typedef enum {
GIT_STATUS_WT_UNREADABLE = (1u << 12),
GIT_STATUS_IGNORED = (1u << 14),
- GIT_STATUS_CONFLICTED = (1u << 15),
+ GIT_STATUS_CONFLICTED = (1u << 15)
} git_status_t;
/**
* Function pointer to receive status on individual files
*
- * `path` is the relative path to the file from the root of the repository.
- *
- * `status_flags` is a combination of `git_status_t` values that apply.
- *
- * `payload` is the value you passed to the foreach function as payload.
+ * @param path is the path to the file
+ * @param status_flags the `git_status_t` values for file's status
+ * @param payload the user-specified payload to the foreach function
+ * @return 0 on success, or a negative number on failure
*/
typedef int GIT_CALLBACK(git_status_cb)(
const char *path, unsigned int status_flags, void *payload);
@@ -87,7 +86,7 @@ typedef enum {
* Only gives status based on index to working directory comparison,
* not comparing the index to the HEAD.
*/
- GIT_STATUS_SHOW_WORKDIR_ONLY = 2,
+ GIT_STATUS_SHOW_WORKDIR_ONLY = 2
} git_status_show_t;
/**
@@ -204,9 +203,10 @@ typedef enum {
* Unreadable files will be detected and given the status
* untracked instead of unreadable.
*/
- GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED = (1u << 15),
+ GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED = (1u << 15)
} git_status_opt_t;
+/** Default `git_status_opt_t` values */
#define GIT_STATUS_OPT_DEFAULTS \
(GIT_STATUS_OPT_INCLUDE_IGNORED | \
GIT_STATUS_OPT_INCLUDE_UNTRACKED | \
@@ -227,13 +227,16 @@ typedef struct {
/**
* The `show` value is one of the `git_status_show_t` constants that
- * control which files to scan and in what order.
+ * control which files to scan and in what order. The default is
+ * `GIT_STATUS_SHOW_INDEX_AND_WORKDIR`.
*/
git_status_show_t show;
/**
* The `flags` value is an OR'ed combination of the
- * `git_status_opt_t` values above.
+ * `git_status_opt_t` values above. The default is
+ * `GIT_STATUS_OPT_DEFAULTS`, which matches git's default
+ * behavior.
*/
unsigned int flags;
@@ -250,9 +253,18 @@ typedef struct {
* working directory and index; defaults to HEAD.
*/
git_tree *baseline;
+
+ /**
+ * Threshold above which similar files will be considered renames.
+ * This is equivalent to the -M option. Defaults to 50.
+ */
+ uint16_t rename_threshold;
} git_status_options;
+/** Current version for the `git_status_options` structure */
#define GIT_STATUS_OPTIONS_VERSION 1
+
+/** Static constructor for `git_status_options` */
#define GIT_STATUS_OPTIONS_INIT {GIT_STATUS_OPTIONS_VERSION}
/**
@@ -440,4 +452,5 @@ GIT_EXTERN(int) git_status_should_ignore(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/stdint.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/stdint.h
index 6950427..4f532e1 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/stdint.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/stdint.h
@@ -1,37 +1,37 @@
-// ISO C9x compliant stdint.h for Microsoft Visual Studio
-// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
-//
-// Copyright (c) 2006-2008 Alexander Chemeris
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// 1. Redistributions of source code must retain the above copyright notice,
-// this list of conditions and the following disclaimer.
-//
-// 2. Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-//
-// 3. The name of the author may be used to endorse or promote products
-// derived from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#ifdef _MSC_VER // [
-
-#ifndef _MSC_STDINT_H_ // [
+/* ISO C9x compliant stdint.h for Microsoft Visual Studio
+ * Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
+ *
+ * Copyright (c) 2006-2008 Alexander Chemeris
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * 3. The name of the author may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+ * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ *******************************************************************************/
+
+#ifdef _MSC_VER /* [ */
+
+#ifndef _MSC_STDINT_H_ /* [ */
#define _MSC_STDINT_H_
#if _MSC_VER > 1000
@@ -40,10 +40,11 @@
#include
-// For Visual Studio 6 in C++ mode and for many Visual Studio versions when
-// compiling for ARM we should wrap include with 'extern "C++" {}'
-// or compiler give many errors like this:
-// error C2733: second C linkage of overloaded function 'wmemchr' not allowed
+/* For Visual Studio 6 in C++ mode and for many Visual Studio versions when
+ * compiling for ARM we should wrap include with 'extern "C++" {}'
+ * or compiler give many errors like this:
+ * error C2733: second C linkage of overloaded function 'wmemchr' not allowed
+*/
#ifdef __cplusplus
extern "C" {
#endif
@@ -52,7 +53,7 @@ extern "C" {
}
#endif
-// Define _W64 macros to mark types changing their size, like intptr_t.
+/* Define _W64 macros to mark types changing their size, like intptr_t. */
#ifndef _W64
# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
# define _W64 __w64
@@ -62,13 +63,14 @@ extern "C" {
#endif
-// 7.18.1 Integer types
-
-// 7.18.1.1 Exact-width integer types
-
-// Visual Studio 6 and Embedded Visual C++ 4 doesn't
-// realize that, e.g. char has the same size as __int8
-// so we give up on __intX for them.
+/* 7.18.1 Integer types
+ *
+ * 7.18.1.1 Exact-width integer types
+ *
+ * Visual Studio 6 and Embedded Visual C++ 4 doesn't
+ * realize that, e.g. char has the same size as __int8
+ * so we give up on __intX for them.
+ */
#if (_MSC_VER < 1300)
typedef signed char int8_t;
typedef signed short int16_t;
@@ -88,7 +90,7 @@ typedef signed __int64 int64_t;
typedef unsigned __int64 uint64_t;
-// 7.18.1.2 Minimum-width integer types
+/* 7.18.1.2 Minimum-width integer types */
typedef int8_t int_least8_t;
typedef int16_t int_least16_t;
typedef int32_t int_least32_t;
@@ -98,7 +100,7 @@ typedef uint16_t uint_least16_t;
typedef uint32_t uint_least32_t;
typedef uint64_t uint_least64_t;
-// 7.18.1.3 Fastest minimum-width integer types
+/* 7.18.1.3 Fastest minimum-width integer types */
typedef int8_t int_fast8_t;
typedef int16_t int_fast16_t;
typedef int32_t int_fast32_t;
@@ -108,25 +110,25 @@ typedef uint16_t uint_fast16_t;
typedef uint32_t uint_fast32_t;
typedef uint64_t uint_fast64_t;
-// 7.18.1.4 Integer types capable of holding object pointers
-#ifdef _WIN64 // [
+/* 7.18.1.4 Integer types capable of holding object pointers */
+#ifdef _WIN64 /* [ */
typedef signed __int64 intptr_t;
typedef unsigned __int64 uintptr_t;
-#else // _WIN64 ][
+#else /* _WIN64 ][ */
typedef _W64 signed int intptr_t;
typedef _W64 unsigned int uintptr_t;
-#endif // _WIN64 ]
+#endif /* _WIN64 ] */
-// 7.18.1.5 Greatest-width integer types
+/* 7.18.1.5 Greatest-width integer types */
typedef int64_t intmax_t;
typedef uint64_t uintmax_t;
-// 7.18.2 Limits of specified-width integer types
+/* 7.18.2 Limits of specified-width integer types */
-#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259
+#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) /* [ See footnote 220 at page 257 and footnote 221 at page 259 */
-// 7.18.2.1 Limits of exact-width integer types
+/* 7.18.2.1 Limits of exact-width integer types */
#define INT8_MIN ((int8_t)_I8_MIN)
#define INT8_MAX _I8_MAX
#define INT16_MIN ((int16_t)_I16_MIN)
@@ -140,7 +142,7 @@ typedef uint64_t uintmax_t;
#define UINT32_MAX _UI32_MAX
#define UINT64_MAX _UI64_MAX
-// 7.18.2.2 Limits of minimum-width integer types
+/* 7.18.2.2 Limits of minimum-width integer types */
#define INT_LEAST8_MIN INT8_MIN
#define INT_LEAST8_MAX INT8_MAX
#define INT_LEAST16_MIN INT16_MIN
@@ -154,7 +156,7 @@ typedef uint64_t uintmax_t;
#define UINT_LEAST32_MAX UINT32_MAX
#define UINT_LEAST64_MAX UINT64_MAX
-// 7.18.2.3 Limits of fastest minimum-width integer types
+/* 7.18.2.3 Limits of fastest minimum-width integer types */
#define INT_FAST8_MIN INT8_MIN
#define INT_FAST8_MAX INT8_MAX
#define INT_FAST16_MIN INT16_MIN
@@ -168,62 +170,62 @@ typedef uint64_t uintmax_t;
#define UINT_FAST32_MAX UINT32_MAX
#define UINT_FAST64_MAX UINT64_MAX
-// 7.18.2.4 Limits of integer types capable of holding object pointers
-#ifdef _WIN64 // [
+/* 7.18.2.4 Limits of integer types capable of holding object pointers */
+#ifdef _WIN64 /* [ */
# define INTPTR_MIN INT64_MIN
# define INTPTR_MAX INT64_MAX
# define UINTPTR_MAX UINT64_MAX
-#else // _WIN64 ][
+#else /* _WIN64 ][ */
# define INTPTR_MIN INT32_MIN
# define INTPTR_MAX INT32_MAX
# define UINTPTR_MAX UINT32_MAX
-#endif // _WIN64 ]
+#endif /* _WIN64 ] */
-// 7.18.2.5 Limits of greatest-width integer types
+/* 7.18.2.5 Limits of greatest-width integer types */
#define INTMAX_MIN INT64_MIN
#define INTMAX_MAX INT64_MAX
#define UINTMAX_MAX UINT64_MAX
-// 7.18.3 Limits of other integer types
+/* 7.18.3 Limits of other integer types */
-#ifdef _WIN64 // [
+#ifdef _WIN64 /* [ */
# define PTRDIFF_MIN _I64_MIN
# define PTRDIFF_MAX _I64_MAX
-#else // _WIN64 ][
+#else /* _WIN64 ][ */
# define PTRDIFF_MIN _I32_MIN
# define PTRDIFF_MAX _I32_MAX
-#endif // _WIN64 ]
+#endif /* _WIN64 ] */
#define SIG_ATOMIC_MIN INT_MIN
#define SIG_ATOMIC_MAX INT_MAX
-#ifndef SIZE_MAX // [
-# ifdef _WIN64 // [
+#ifndef SIZE_MAX /* [ */
+# ifdef _WIN64 /* [ */
# define SIZE_MAX _UI64_MAX
-# else // _WIN64 ][
+# else /* _WIN64 ][ */
# define SIZE_MAX _UI32_MAX
-# endif // _WIN64 ]
-#endif // SIZE_MAX ]
+# endif /* _WIN64 ] */
+#endif /* SIZE_MAX ] */
-// WCHAR_MIN and WCHAR_MAX are also defined in
-#ifndef WCHAR_MIN // [
+/* WCHAR_MIN and WCHAR_MAX are also defined in */
+#ifndef WCHAR_MIN /* [ */
# define WCHAR_MIN 0
-#endif // WCHAR_MIN ]
-#ifndef WCHAR_MAX // [
+#endif /* WCHAR_MIN ] */
+#ifndef WCHAR_MAX /* [ */
# define WCHAR_MAX _UI16_MAX
-#endif // WCHAR_MAX ]
+#endif /* WCHAR_MAX ] */
#define WINT_MIN 0
#define WINT_MAX _UI16_MAX
-#endif // __STDC_LIMIT_MACROS ]
+#endif /* __STDC_LIMIT_MACROS ] */
-// 7.18.4 Limits of other integer types
+/* 7.18.4 Limits of other integer types */
-#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260
+#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) /* [ See footnote 224 at page 260 */
-// 7.18.4.1 Macros for minimum-width integer constants
+/* 7.18.4.1 Macros for minimum-width integer constants */
#define INT8_C(val) val##i8
#define INT16_C(val) val##i16
@@ -235,13 +237,13 @@ typedef uint64_t uintmax_t;
#define UINT32_C(val) val##ui32
#define UINT64_C(val) val##ui64
-// 7.18.4.2 Macros for greatest-width integer constants
+/* 7.18.4.2 Macros for greatest-width integer constants */
#define INTMAX_C INT64_C
#define UINTMAX_C UINT64_C
-#endif // __STDC_CONSTANT_MACROS ]
+#endif /* __STDC_CONSTANT_MACROS ] */
-#endif // _MSC_STDINT_H_ ]
+#endif /* _MSC_STDINT_H_ ] */
-#endif // _MSC_VER ]
\ No newline at end of file
+#endif /* _MSC_VER ] */
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/strarray.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/strarray.h
index 0f657e6..dcb628a 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/strarray.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/strarray.h
@@ -11,8 +11,8 @@
/**
* @file git2/strarray.h
- * @brief Git string array routines
- * @defgroup git_strarray Git string array routines
+ * @brief An array of strings for the user to free
+ * @defgroup git_strarray An array of strings for the user to free
* @ingroup Git
* @{
*/
@@ -36,21 +36,7 @@ typedef struct git_strarray {
*/
GIT_EXTERN(void) git_strarray_dispose(git_strarray *array);
-/**
- * Copy a string array object from source to target.
- *
- * Note: target is overwritten and hence should be empty, otherwise its
- * contents are leaked. Call git_strarray_free() if necessary.
- *
- * @param tgt target
- * @param src source
- * @return 0 on success, < 0 on allocation failure
- */
-GIT_EXTERN(int) git_strarray_copy(git_strarray *tgt, const git_strarray *src);
-
-
/** @} */
GIT_END_DECL
#endif
-
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/submodule.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/submodule.h
index 29d8bc1..911b3ce 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/submodule.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/submodule.h
@@ -15,7 +15,7 @@
/**
* @file git2/submodule.h
- * @brief Git submodule management utilities
+ * @brief Submodules place another repository's contents within this one
*
* Submodule support in libgit2 builds a list of known submodules and keeps
* it in the repository. The list is built from the .gitmodules file, the
@@ -85,23 +85,30 @@ typedef enum {
GIT_SUBMODULE_STATUS_WD_MODIFIED = (1u << 10),
GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED = (1u << 11),
GIT_SUBMODULE_STATUS_WD_WD_MODIFIED = (1u << 12),
- GIT_SUBMODULE_STATUS_WD_UNTRACKED = (1u << 13),
+ GIT_SUBMODULE_STATUS_WD_UNTRACKED = (1u << 13)
} git_submodule_status_t;
+/** Submodule source bits */
#define GIT_SUBMODULE_STATUS__IN_FLAGS 0x000Fu
+/** Submodule index status */
#define GIT_SUBMODULE_STATUS__INDEX_FLAGS 0x0070u
+/** Submodule working directory status */
#define GIT_SUBMODULE_STATUS__WD_FLAGS 0x3F80u
+/** Whether the submodule is modified */
#define GIT_SUBMODULE_STATUS_IS_UNMODIFIED(S) \
(((S) & ~GIT_SUBMODULE_STATUS__IN_FLAGS) == 0)
+/** Whether the submodule is modified (in the index) */
#define GIT_SUBMODULE_STATUS_IS_INDEX_UNMODIFIED(S) \
(((S) & GIT_SUBMODULE_STATUS__INDEX_FLAGS) == 0)
+/** Whether the submodule is modified (in the working directory) */
#define GIT_SUBMODULE_STATUS_IS_WD_UNMODIFIED(S) \
(((S) & (GIT_SUBMODULE_STATUS__WD_FLAGS & \
~GIT_SUBMODULE_STATUS_WD_UNINITIALIZED)) == 0)
+/** Whether the submodule working directory is dirty */
#define GIT_SUBMODULE_STATUS_IS_WD_DIRTY(S) \
(((S) & (GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED | \
GIT_SUBMODULE_STATUS_WD_WD_MODIFIED | \
@@ -130,10 +137,8 @@ typedef struct git_submodule_update_options {
/**
* These options are passed to the checkout step. To disable
- * checkout, set the `checkout_strategy` to
- * `GIT_CHECKOUT_NONE`. Generally you will want the use
- * GIT_CHECKOUT_SAFE to update files in the working
- * directory.
+ * checkout, set the `checkout_strategy` to `GIT_CHECKOUT_NONE`
+ * or `GIT_CHECKOUT_DRY_RUN`.
*/
git_checkout_options checkout_opts;
@@ -152,11 +157,15 @@ typedef struct git_submodule_update_options {
int allow_fetch;
} git_submodule_update_options;
+/** Current version for the `git_submodule_update_options` structure */
#define GIT_SUBMODULE_UPDATE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_submodule_update_options` */
#define GIT_SUBMODULE_UPDATE_OPTIONS_INIT \
{ GIT_SUBMODULE_UPDATE_OPTIONS_VERSION, \
- { GIT_CHECKOUT_OPTIONS_VERSION, GIT_CHECKOUT_SAFE }, \
- GIT_FETCH_OPTIONS_INIT, 1 }
+ GIT_CHECKOUT_OPTIONS_INIT, \
+ GIT_FETCH_OPTIONS_INIT, \
+ 1 }
/**
* Initialize git_submodule_update_options structure
@@ -181,7 +190,7 @@ GIT_EXTERN(int) git_submodule_update_options_init(
* @param submodule Submodule object
* @param init If the submodule is not initialized, setting this flag to true
* will initialize the submodule before updating. Otherwise, this will
- * return an error if attempting to update an uninitialzed repository.
+ * return an error if attempting to update an uninitialized repository.
* but setting this to true forces them to be updated.
* @param options configuration options for the update. If NULL, the
* function works as though GIT_SUBMODULE_UPDATE_OPTIONS_INIT was passed.
@@ -229,6 +238,7 @@ GIT_EXTERN(int) git_submodule_lookup(
*
* @param out Pointer to store the copy of the submodule.
* @param source Original submodule to copy.
+ * @return 0
*/
GIT_EXTERN(int) git_submodule_dup(git_submodule **out, git_submodule *source);
@@ -320,6 +330,7 @@ GIT_EXTERN(int) git_submodule_clone(
* (but doesn't actually do the commit).
*
* @param submodule The submodule to finish adding.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_submodule_add_finalize(git_submodule *submodule);
@@ -529,7 +540,8 @@ GIT_EXTERN(int) git_submodule_set_update(
* Note that at this time, libgit2 does not honor this setting and the
* fetch functionality current ignores submodules.
*
- * @return 0 if fetchRecurseSubmodules is false, 1 if true
+ * @param submodule the submodule to examine
+ * @return the submodule recursion configuration
*/
GIT_EXTERN(git_submodule_recurse_t) git_submodule_fetch_recurse_submodules(
git_submodule *submodule);
@@ -541,7 +553,7 @@ GIT_EXTERN(git_submodule_recurse_t) git_submodule_fetch_recurse_submodules(
*
* @param repo the repository to affect
* @param name the submodule to configure
- * @param fetch_recurse_submodules Boolean value
+ * @param fetch_recurse_submodules the submodule recursion configuration
* @return old value for fetchRecurseSubmodules
*/
GIT_EXTERN(int) git_submodule_set_fetch_recurse_submodules(
@@ -589,6 +601,9 @@ GIT_EXTERN(int) git_submodule_repo_init(
* submodule config, acting like "git submodule sync". This is useful if
* you have altered the URL for the submodule (or it has been altered by a
* fetch of upstream changes) and you need to update your local repo.
+ *
+ * @param submodule The submodule to copy.
+ * @return 0 or an error code.
*/
GIT_EXTERN(int) git_submodule_sync(git_submodule *submodule);
@@ -660,4 +675,5 @@ GIT_EXTERN(int) git_submodule_location(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/alloc.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/alloc.h
index c295807..67506f2 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/alloc.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/alloc.h
@@ -10,6 +10,17 @@
#include "git2/common.h"
+/**
+ * @file git2/sys/alloc.h
+ * @brief Custom memory allocators
+ * @defgroup git_merge Git merge routines
+ * @ingroup Git
+ *
+ * Users can configure custom allocators; this is particularly
+ * interesting when running in constrained environments, when calling
+ * from another language, or during testing.
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -24,28 +35,6 @@ typedef struct {
/** Allocate `n` bytes of memory */
void * GIT_CALLBACK(gmalloc)(size_t n, const char *file, int line);
- /**
- * Allocate memory for an array of `nelem` elements, where each element
- * has a size of `elsize`. Returned memory shall be initialized to
- * all-zeroes
- */
- void * GIT_CALLBACK(gcalloc)(size_t nelem, size_t elsize, const char *file, int line);
-
- /** Allocate memory for the string `str` and duplicate its contents. */
- char * GIT_CALLBACK(gstrdup)(const char *str, const char *file, int line);
-
- /**
- * Equivalent to the `gstrdup` function, but only duplicating at most
- * `n + 1` bytes
- */
- char * GIT_CALLBACK(gstrndup)(const char *str, size_t n, const char *file, int line);
-
- /**
- * Equivalent to `gstrndup`, but will always duplicate exactly `n` bytes
- * of `str`. Thus, out of bounds reads at `str` may happen.
- */
- char * GIT_CALLBACK(gsubstrdup)(const char *str, size_t n, const char *file, int line);
-
/**
* This function shall deallocate the old object `ptr` and return a
* pointer to a new object that has the size specified by `size`. In
@@ -53,18 +42,6 @@ typedef struct {
*/
void * GIT_CALLBACK(grealloc)(void *ptr, size_t size, const char *file, int line);
- /**
- * This function shall be equivalent to `grealloc`, but allocating
- * `neleme * elsize` bytes.
- */
- void * GIT_CALLBACK(greallocarray)(void *ptr, size_t nelem, size_t elsize, const char *file, int line);
-
- /**
- * This function shall allocate a new array of `nelem` elements, where
- * each element has a size of `elsize` bytes.
- */
- void * GIT_CALLBACK(gmallocarray)(size_t nelem, size_t elsize, const char *file, int line);
-
/**
* This function shall free the memory pointed to by `ptr`. In case
* `ptr` is `NULL`, this shall be a no-op.
@@ -96,6 +73,7 @@ int git_stdalloc_init_allocator(git_allocator *allocator);
*/
int git_win32_crtdbg_init_allocator(git_allocator *allocator);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/commit.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/commit.h
index ba67106..a8253c0 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/commit.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/commit.h
@@ -14,7 +14,7 @@
/**
* @file git2/sys/commit.h
* @brief Low-level Git commit creation
- * @defgroup git_backend Git custom backend APIs
+ * @defgroup git_commit Low-level Git commit creation
* @ingroup Git
* @{
*/
@@ -29,7 +29,43 @@ GIT_BEGIN_DECL
* the `tree`, neither the `parents` list of `git_oid`s are checked for
* validity.
*
- * @see git_commit_create
+ * @param id Pointer in which to store the OID of the newly created commit
+ *
+ * @param repo Repository where to store the commit
+ *
+ * @param update_ref If not NULL, name of the reference that
+ * will be updated to point to this commit. If the reference
+ * is not direct, it will be resolved to a direct reference.
+ * Use "HEAD" to update the HEAD of the current branch and
+ * make it point to this commit. If the reference doesn't
+ * exist yet, it will be created. If it does exist, the first
+ * parent must be the tip of this branch.
+ *
+ * @param author Signature with author and author time of commit
+ *
+ * @param committer Signature with committer and * commit time of commit
+ *
+ * @param message_encoding The encoding for the message in the
+ * commit, represented with a standard encoding name.
+ * E.g. "UTF-8". If NULL, no encoding header is written and
+ * UTF-8 is assumed.
+ *
+ * @param message Full message for this commit
+ *
+ * @param tree An instance of a `git_tree` object that will
+ * be used as the tree for the commit. This tree object must
+ * also be owned by the given `repo`.
+ *
+ * @param parent_count Number of parents for this commit
+ *
+ * @param parents Array of `parent_count` pointers to `git_commit`
+ * objects that will be used as the parents for this commit. This
+ * array may be NULL if `parent_count` is 0 (root commit). All the
+ * given commits must be owned by the `repo`.
+ *
+ * @return 0 or an error code
+ * The created commit will be written to the Object Database and
+ * the given reference will be updated to point to it
*/
GIT_EXTERN(int) git_commit_create_from_ids(
git_oid *id,
@@ -49,6 +85,10 @@ GIT_EXTERN(int) git_commit_create_from_ids(
* This is invoked with the count of the number of parents processed so far
* along with the user supplied payload. This should return a git_oid of
* the next parent or NULL if all parents have been provided.
+ *
+ * @param idx the index of the parent
+ * @param payload the user-specified payload
+ * @return the object id of the parent, or NULL if there are no further parents
*/
typedef const git_oid * GIT_CALLBACK(git_commit_parent_callback)(size_t idx, void *payload);
@@ -61,7 +101,40 @@ typedef const git_oid * GIT_CALLBACK(git_commit_parent_callback)(size_t idx, voi
* with `parent_payload` and should return `git_oid` values or NULL to
* indicate that all parents are accounted for.
*
- * @see git_commit_create
+ * @param id Pointer in which to store the OID of the newly created commit
+ *
+ * @param repo Repository where to store the commit
+ *
+ * @param update_ref If not NULL, name of the reference that
+ * will be updated to point to this commit. If the reference
+ * is not direct, it will be resolved to a direct reference.
+ * Use "HEAD" to update the HEAD of the current branch and
+ * make it point to this commit. If the reference doesn't
+ * exist yet, it will be created. If it does exist, the first
+ * parent must be the tip of this branch.
+ *
+ * @param author Signature with author and author time of commit
+ *
+ * @param committer Signature with committer and * commit time of commit
+ *
+ * @param message_encoding The encoding for the message in the
+ * commit, represented with a standard encoding name.
+ * E.g. "UTF-8". If NULL, no encoding header is written and
+ * UTF-8 is assumed.
+ *
+ * @param message Full message for this commit
+ *
+ * @param tree An instance of a `git_tree` object that will
+ * be used as the tree for the commit. This tree object must
+ * also be owned by the given `repo`.
+ *
+ * @param parent_cb Callback to invoke to obtain parent information
+ *
+ * @param parent_payload User-specified payload to provide to the callback
+ *
+ * @return 0 or an error code
+ * The created commit will be written to the Object Database and
+ * the given reference will be updated to point to it
*/
GIT_EXTERN(int) git_commit_create_from_callback(
git_oid *id,
@@ -77,4 +150,5 @@ GIT_EXTERN(int) git_commit_create_from_callback(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/commit_graph.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/commit_graph.h
index f6c0fc4..ff547ef 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/commit_graph.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/commit_graph.h
@@ -12,13 +12,52 @@
/**
* @file git2/sys/commit_graph.h
- * @brief Git commit-graph
- * @defgroup git_commit_graph Git commit-graph APIs
+ * @brief Commit graphs store information about commit relationships
+ * @defgroup git_commit_graph Commit graphs
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/**
+ * Options structure for `git_commit_graph_open_new`.
+ *
+ * Initialize with `GIT_COMMIT_GRAPH_OPEN_OPTIONS_INIT`. Alternatively,
+ * you can use `git_commit_graph_open_options_init`.
+ */
+typedef struct {
+ unsigned int version;
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /** The object ID type that this commit graph contains. */
+ git_oid_t oid_type;
+#endif
+} git_commit_graph_open_options;
+
+/** Current version for the `git_commit_graph_open_options` structure */
+#define GIT_COMMIT_GRAPH_OPEN_OPTIONS_VERSION 1
+
+/** Static constructor for `git_commit_graph_open_options` */
+#define GIT_COMMIT_GRAPH_OPEN_OPTIONS_INIT { \
+ GIT_COMMIT_GRAPH_OPEN_OPTIONS_VERSION \
+ }
+
+/**
+ * Initialize git_commit_graph_open_options structure
+ *
+ * Initializes a `git_commit_graph_open_options` with default values.
+ * Equivalent to creating an instance with
+ * `GIT_COMMIT_GRAPH_OPEN_OPTIONS_INIT`.
+ *
+ * @param opts The `git_commit_graph_open_options` struct to initialize.
+ * @param version The struct version; pass `GIT_COMMIT_GRAPH_OPEN_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_commit_graph_open_options_init(
+ git_commit_graph_open_options *opts,
+ unsigned int version);
+
+
/**
* Opens a `git_commit_graph` from a path to an objects directory.
*
@@ -28,7 +67,13 @@ GIT_BEGIN_DECL
* @param objects_dir the path to a git objects directory.
* @return Zero on success; -1 on failure.
*/
-GIT_EXTERN(int) git_commit_graph_open(git_commit_graph **cgraph_out, const char *objects_dir);
+GIT_EXTERN(int) git_commit_graph_open(
+ git_commit_graph **cgraph_out,
+ const char *objects_dir
+#ifdef GIT_EXPERIMENTAL_SHA256
+ , const git_commit_graph_open_options *options
+#endif
+ );
/**
* Frees commit-graph data. This should only be called when memory allocated
@@ -40,50 +85,6 @@ GIT_EXTERN(int) git_commit_graph_open(git_commit_graph **cgraph_out, const char
*/
GIT_EXTERN(void) git_commit_graph_free(git_commit_graph *cgraph);
-/**
- * Create a new writer for `commit-graph` files.
- *
- * @param out Location to store the writer pointer.
- * @param objects_info_dir The `objects/info` directory.
- * The `commit-graph` file will be written in this directory.
- * @return 0 or an error code
- */
-GIT_EXTERN(int) git_commit_graph_writer_new(
- git_commit_graph_writer **out,
- const char *objects_info_dir);
-
-/**
- * Free the commit-graph writer and its resources.
- *
- * @param w The writer to free. If NULL no action is taken.
- */
-GIT_EXTERN(void) git_commit_graph_writer_free(git_commit_graph_writer *w);
-
-/**
- * Add an `.idx` file (associated to a packfile) to the writer.
- *
- * @param w The writer.
- * @param repo The repository that owns the `.idx` file.
- * @param idx_path The path of an `.idx` file.
- * @return 0 or an error code
- */
-GIT_EXTERN(int) git_commit_graph_writer_add_index_file(
- git_commit_graph_writer *w,
- git_repository *repo,
- const char *idx_path);
-
-/**
- * Add a revwalk to the writer. This will add all the commits from the revwalk
- * to the commit-graph.
- *
- * @param w The writer.
- * @param walk The git_revwalk.
- * @return 0 or an error code
- */
-GIT_EXTERN(int) git_commit_graph_writer_add_revwalk(
- git_commit_graph_writer *w,
- git_revwalk *walk);
-
/**
* The strategy to use when adding a new set of commits to a pre-existing
@@ -94,19 +95,23 @@ typedef enum {
* Do not split commit-graph files. The other split strategy-related option
* fields are ignored.
*/
- GIT_COMMIT_GRAPH_SPLIT_STRATEGY_SINGLE_FILE = 0,
+ GIT_COMMIT_GRAPH_SPLIT_STRATEGY_SINGLE_FILE = 0
} git_commit_graph_split_strategy_t;
/**
- * Options structure for
- * `git_commit_graph_writer_commit`/`git_commit_graph_writer_dump`.
+ * Options structure for `git_commit_graph_writer_new`.
*
- * Initialize with `GIT_COMMIT_GRAPH_WRITER_OPTIONS_INIT`. Alternatively, you
- * can use `git_commit_graph_writer_options_init`.
+ * Initialize with `GIT_COMMIT_GRAPH_WRITER_OPTIONS_INIT`. Alternatively,
+ * you can use `git_commit_graph_writer_options_init`.
*/
typedef struct {
unsigned int version;
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /** The object ID type that this commit graph contains. */
+ git_oid_t oid_type;
+#endif
+
/**
* The strategy to use when adding new commits to a pre-existing commit-graph
* chain.
@@ -126,7 +131,10 @@ typedef struct {
size_t max_commits;
} git_commit_graph_writer_options;
+/** Current version for the `git_commit_graph_writer_options` structure */
#define GIT_COMMIT_GRAPH_WRITER_OPTIONS_VERSION 1
+
+/** Static constructor for `git_commit_graph_writer_options` */
#define GIT_COMMIT_GRAPH_WRITER_OPTIONS_INIT { \
GIT_COMMIT_GRAPH_WRITER_OPTIONS_VERSION \
}
@@ -145,30 +153,73 @@ GIT_EXTERN(int) git_commit_graph_writer_options_init(
git_commit_graph_writer_options *opts,
unsigned int version);
+/**
+ * Create a new writer for `commit-graph` files.
+ *
+ * @param out Location to store the writer pointer.
+ * @param objects_info_dir The `objects/info` directory.
+ * The `commit-graph` file will be written in this directory.
+ * @param options The options for the commit graph writer.
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_commit_graph_writer_new(
+ git_commit_graph_writer **out,
+ const char *objects_info_dir,
+ const git_commit_graph_writer_options *options);
+
+/**
+ * Free the commit-graph writer and its resources.
+ *
+ * @param w The writer to free. If NULL no action is taken.
+ */
+GIT_EXTERN(void) git_commit_graph_writer_free(git_commit_graph_writer *w);
+
+/**
+ * Add an `.idx` file (associated to a packfile) to the writer.
+ *
+ * @param w The writer.
+ * @param repo The repository that owns the `.idx` file.
+ * @param idx_path The path of an `.idx` file.
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_commit_graph_writer_add_index_file(
+ git_commit_graph_writer *w,
+ git_repository *repo,
+ const char *idx_path);
+
+/**
+ * Add a revwalk to the writer. This will add all the commits from the revwalk
+ * to the commit-graph.
+ *
+ * @param w The writer.
+ * @param walk The git_revwalk.
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_commit_graph_writer_add_revwalk(
+ git_commit_graph_writer *w,
+ git_revwalk *walk);
+
/**
* Write a `commit-graph` file to a file.
*
* @param w The writer
- * @param opts Pointer to git_commit_graph_writer_options struct.
* @return 0 or an error code
*/
GIT_EXTERN(int) git_commit_graph_writer_commit(
- git_commit_graph_writer *w,
- git_commit_graph_writer_options *opts);
+ git_commit_graph_writer *w);
/**
* Dump the contents of the `commit-graph` to an in-memory buffer.
*
- * @param buffer Buffer where to store the contents of the `commit-graph`.
+ * @param[out] buffer Buffer where to store the contents of the `commit-graph`.
* @param w The writer.
- * @param opts Pointer to git_commit_graph_writer_options struct.
* @return 0 or an error code
*/
GIT_EXTERN(int) git_commit_graph_writer_dump(
git_buf *buffer,
- git_commit_graph_writer *w,
- git_commit_graph_writer_options *opts);
+ git_commit_graph_writer *w);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/config.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/config.h
index 0a9005e..cc4a399 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/config.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/config.h
@@ -13,13 +13,28 @@
/**
* @file git2/sys/config.h
- * @brief Git config backend routines
- * @defgroup git_backend Git custom backend APIs
+ * @brief Custom configuration database backends
+ * @defgroup git_backend Custom configuration database backends
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/**
+ * An entry in a configuration backend. This is provided so that
+ * backend implementors can have a mechanism to free their data.
+ */
+typedef struct git_config_backend_entry {
+ /** The base configuration entry */
+ struct git_config_entry entry;
+
+ /**
+ * Free function for this entry; for internal purposes. Callers
+ * should call `git_config_entry_free` to free data.
+ */
+ void GIT_CALLBACK(free)(struct git_config_backend_entry *entry);
+} git_config_backend_entry;
+
/**
* Every iterator must have this struct as its first element, so the
* API can talk to it. You'd define your iterator as
@@ -39,7 +54,7 @@ struct git_config_iterator {
* Return the current entry and advance the iterator. The
* memory belongs to the library.
*/
- int GIT_CALLBACK(next)(git_config_entry **entry, git_config_iterator *iter);
+ int GIT_CALLBACK(next)(git_config_backend_entry **entry, git_config_iterator *iter);
/**
* Free the iterator
@@ -59,7 +74,7 @@ struct git_config_backend {
/* Open means open the file/database and parse if necessary */
int GIT_CALLBACK(open)(struct git_config_backend *, git_config_level_t level, const git_repository *repo);
- int GIT_CALLBACK(get)(struct git_config_backend *, const char *key, git_config_entry **entry);
+ int GIT_CALLBACK(get)(struct git_config_backend *, const char *key, git_config_backend_entry **entry);
int GIT_CALLBACK(set)(struct git_config_backend *, const char *key, const char *value);
int GIT_CALLBACK(set_multivar)(git_config_backend *cfg, const char *name, const char *regexp, const char *value);
int GIT_CALLBACK(del)(struct git_config_backend *, const char *key);
@@ -83,7 +98,11 @@ struct git_config_backend {
int GIT_CALLBACK(unlock)(struct git_config_backend *, int success);
void GIT_CALLBACK(free)(struct git_config_backend *);
};
+
+/** Current version for the `git_config_backend_options` structure */
#define GIT_CONFIG_BACKEND_VERSION 1
+
+/** Static constructor for `git_config_backend_options` */
#define GIT_CONFIG_BACKEND_INIT {GIT_CONFIG_BACKEND_VERSION}
/**
@@ -125,6 +144,63 @@ GIT_EXTERN(int) git_config_add_backend(
const git_repository *repo,
int force);
+/** Options for in-memory configuration backends. */
+typedef struct {
+ unsigned int version;
+
+ /**
+ * The type of this backend (eg, "command line"). If this is
+ * NULL, then this will be "in-memory".
+ */
+ const char *backend_type;
+
+ /**
+ * The path to the origin; if this is NULL then it will be
+ * left unset in the resulting configuration entries.
+ */
+ const char *origin_path;
+} git_config_backend_memory_options;
+
+/** Current version for the `git_config_backend_memory_options` structure */
+#define GIT_CONFIG_BACKEND_MEMORY_OPTIONS_VERSION 1
+
+/** Static constructor for `git_config_backend_memory_options` */
+#define GIT_CONFIG_BACKEND_MEMORY_OPTIONS_INIT { GIT_CONFIG_BACKEND_MEMORY_OPTIONS_VERSION }
+
+
+/**
+ * Create an in-memory configuration backend from a string in standard
+ * git configuration file format.
+ *
+ * @param out the new backend
+ * @param cfg the configuration that is to be parsed
+ * @param len the length of the string pointed to by `cfg`
+ * @param opts the options to initialize this backend with, or NULL
+ * @return 0 on success or an error code
+ */
+extern int git_config_backend_from_string(
+ git_config_backend **out,
+ const char *cfg,
+ size_t len,
+ git_config_backend_memory_options *opts);
+
+/**
+ * Create an in-memory configuration backend from a list of name/value
+ * pairs.
+ *
+ * @param out the new backend
+ * @param values the configuration values to set (in "key=value" format)
+ * @param len the length of the values array
+ * @param opts the options to initialize this backend with, or NULL
+ * @return 0 on success or an error code
+ */
+extern int git_config_backend_from_values(
+ git_config_backend **out,
+ const char **values,
+ size_t len,
+ git_config_backend_memory_options *opts);
+
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/credential.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/credential.h
index bb4c9f9..0d573a3 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/credential.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/credential.h
@@ -11,9 +11,9 @@
#include "git2/credential.h"
/**
- * @file git2/sys/cred.h
- * @brief Git credentials low-level implementation
- * @defgroup git_credential Git credentials low-level implementation
+ * @file git2/sys/credential.h
+ * @brief Low-level credentials implementation
+ * @defgroup git_credential Low-level credentials implementation
* @ingroup Git
* @{
*/
@@ -85,6 +85,7 @@ struct git_credential_ssh_custom {
void *payload; /**< Payload passed to prompt_callback */
};
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/diff.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/diff.h
index aefd7b9..a398f54 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/diff.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/diff.h
@@ -15,7 +15,7 @@
/**
* @file git2/sys/diff.h
- * @brief Low-level Git diff utilities
+ * @brief Low-level diff utilities
* @ingroup Git
* @{
*/
@@ -33,6 +33,12 @@ GIT_BEGIN_DECL
* must pass a `git_buf *` value as the payload to the `git_diff_print`
* and/or `git_patch_print` function. The data will be appended to the
* buffer (after any existing content).
+ *
+ * @param delta the delta being processed
+ * @param hunk the hunk being processed
+ * @param line the line being processed
+ * @param payload the payload provided by the diff generator
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_diff_print_callback__to_buf(
const git_diff_delta *delta,
@@ -53,6 +59,12 @@ GIT_EXTERN(int) git_diff_print_callback__to_buf(
* value from `fopen()`) as the payload to the `git_diff_print`
* and/or `git_patch_print` function. If you pass NULL, this will write
* data to `stdout`.
+ *
+ * @param delta the delta being processed
+ * @param hunk the hunk being processed
+ * @param line the line being processed
+ * @param payload the payload provided by the diff generator
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_diff_print_callback__to_file_handle(
const git_diff_delta *delta,
@@ -70,7 +82,10 @@ typedef struct {
size_t oid_calculations; /**< Number of ID calculations */
} git_diff_perfdata;
+/** Current version for the `git_diff_perfdata_options` structure */
#define GIT_DIFF_PERFDATA_VERSION 1
+
+/** Static constructor for `git_diff_perfdata_options` */
#define GIT_DIFF_PERFDATA_INIT {GIT_DIFF_PERFDATA_VERSION,0,0}
/**
@@ -85,10 +100,15 @@ GIT_EXTERN(int) git_diff_get_perfdata(
/**
* Get performance data for diffs from a git_status_list
+ *
+ * @param out Structure to be filled with diff performance data
+ * @param status Diff to read performance data from
+ * @return 0 for success, <0 for error
*/
GIT_EXTERN(int) git_status_list_get_perfdata(
git_diff_perfdata *out, const git_status_list *status);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/email.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/email.h
index 6f4a286..26e792a 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/email.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/email.h
@@ -7,6 +7,11 @@
#ifndef INCLUDE_sys_git_email_h__
#define INCLUDE_sys_git_email_h__
+#include "git2/common.h"
+#include "git2/diff.h"
+#include "git2/email.h"
+#include "git2/types.h"
+
/**
* @file git2/sys/email.h
* @brief Advanced git email creation routines
@@ -28,6 +33,7 @@ GIT_BEGIN_DECL
* @param body optional text to include above the diffstat
* @param author the person who authored this commit
* @param opts email creation options
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_email_create_from_diff(
git_buf *out,
@@ -42,4 +48,5 @@ GIT_EXTERN(int) git_email_create_from_diff(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/errors.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/errors.h
new file mode 100644
index 0000000..44e8ecb
--- /dev/null
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/errors.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) the libgit2 contributors. All rights reserved.
+ *
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
+ * a Linking Exception. For full terms see the included COPYING file.
+ */
+
+#ifndef INCLUDE_sys_git_errors_h__
+#define INCLUDE_sys_git_errors_h__
+
+#include "git2/common.h"
+
+/**
+ * @file git2/sys/errors.h
+ * @brief Advanced error handling
+ * @ingroup Git
+ *
+ * Error handling for advanced consumers; those who use callbacks
+ * or those who create custom databases.
+ * @{
+ */
+GIT_BEGIN_DECL
+
+/**
+ * Clear the last library error that occurred for this thread.
+ */
+GIT_EXTERN(void) git_error_clear(void);
+
+/**
+ * Set the error message string for this thread, using `printf`-style
+ * formatting.
+ *
+ * This function is public so that custom ODB backends and the like can
+ * relay an error message through libgit2. Most regular users of libgit2
+ * will never need to call this function -- actually, calling it in most
+ * circumstances (for example, calling from within a callback function)
+ * will just end up having the value overwritten by libgit2 internals.
+ *
+ * This error message is stored in thread-local storage and only applies
+ * to the particular thread that this libgit2 call is made from.
+ *
+ * @param error_class One of the `git_error_t` enum above describing the
+ * general subsystem that is responsible for the error.
+ * @param fmt The `printf`-style format string; subsequent arguments must
+ * be the arguments for the format string.
+ */
+GIT_EXTERN(void) git_error_set(int error_class, const char *fmt, ...)
+ GIT_FORMAT_PRINTF(2, 3);
+
+/**
+ * Set the error message string for this thread. This function is like
+ * `git_error_set` but takes a static string instead of a `printf`-style
+ * format.
+ *
+ * @param error_class One of the `git_error_t` enum above describing the
+ * general subsystem that is responsible for the error.
+ * @param string The error message to keep
+ * @return 0 on success or -1 on failure
+ */
+GIT_EXTERN(int) git_error_set_str(int error_class, const char *string);
+
+/**
+ * Set the error message to a special value for memory allocation failure.
+ *
+ * The normal `git_error_set_str()` function attempts to `strdup()` the
+ * string that is passed in. This is not a good idea when the error in
+ * question is a memory allocation failure. That circumstance has a
+ * special setter function that sets the error string to a known and
+ * statically allocated internal value.
+ */
+GIT_EXTERN(void) git_error_set_oom(void);
+
+/** @} */
+GIT_END_DECL
+
+#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/filter.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/filter.h
index b375941..60466d1 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/filter.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/filter.h
@@ -11,8 +11,8 @@
/**
* @file git2/sys/filter.h
- * @brief Git filter backend and plugin routines
- * @defgroup git_backend Git custom backend APIs
+ * @brief Custom filter backends and plugins
+ * @defgroup git_backend Custom filter backends and plugins
* @ingroup Git
* @{
*/
@@ -26,7 +26,10 @@ GIT_BEGIN_DECL
*/
GIT_EXTERN(git_filter *) git_filter_lookup(const char *name);
+/** The "crlf" filter */
#define GIT_FILTER_CRLF "crlf"
+
+/** The "ident" filter */
#define GIT_FILTER_IDENT "ident"
/**
@@ -53,6 +56,12 @@ GIT_EXTERN(git_filter *) git_filter_lookup(const char *name);
* the filter list for you, but you can use this in combination with the
* `git_filter_lookup` and `git_filter_list_push` functions to assemble
* your own chains of filters.
+ *
+ * @param out the filter list
+ * @param repo the repository to use for configuration
+ * @param mode the filter mode (direction)
+ * @param options the options
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_filter_list_new(
git_filter_list **out,
@@ -72,6 +81,11 @@ GIT_EXTERN(int) git_filter_list_new(
* filter. Using this function, you can either pass in a payload if you
* know the expected payload format, or you can pass NULL. Some filters
* may fail with a NULL payload. Good luck!
+ *
+ * @param fl the filter list
+ * @param filter the filter to push
+ * @param payload the payload for the filter
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_filter_list_push(
git_filter_list *fl, git_filter *filter, void *payload);
@@ -96,17 +110,26 @@ typedef struct git_filter_source git_filter_source;
/**
* Get the repository that the source data is coming from.
+ *
+ * @param src the filter source
+ * @return the repository for the filter information
*/
GIT_EXTERN(git_repository *) git_filter_source_repo(const git_filter_source *src);
/**
* Get the path that the source data is coming from.
+ *
+ * @param src the filter source
+ * @return the path that is being filtered
*/
GIT_EXTERN(const char *) git_filter_source_path(const git_filter_source *src);
/**
* Get the file mode of the source file
* If the mode is unknown, this will return 0
+ *
+ * @param src the filter source
+ * @return the file mode for the file being filtered
*/
GIT_EXTERN(uint16_t) git_filter_source_filemode(const git_filter_source *src);
@@ -114,16 +137,25 @@ GIT_EXTERN(uint16_t) git_filter_source_filemode(const git_filter_source *src);
* Get the OID of the source
* If the OID is unknown (often the case with GIT_FILTER_CLEAN) then
* this will return NULL.
+ *
+ * @param src the filter source
+ * @return the object id of the file being filtered
*/
GIT_EXTERN(const git_oid *) git_filter_source_id(const git_filter_source *src);
/**
* Get the git_filter_mode_t to be used
+ *
+ * @param src the filter source
+ * @return the mode (direction) of the filter
*/
GIT_EXTERN(git_filter_mode_t) git_filter_source_mode(const git_filter_source *src);
/**
* Get the combination git_filter_flag_t options to be applied
+ *
+ * @param src the filter source
+ * @return the flags of the filter
*/
GIT_EXTERN(uint32_t) git_filter_source_flags(const git_filter_source *src);
@@ -137,6 +169,9 @@ GIT_EXTERN(uint32_t) git_filter_source_flags(const git_filter_source *src);
* before the first use of the filter, so you can defer expensive
* initialization operations (in case libgit2 is being used in a way that
* doesn't need the filter).
+ *
+ * @param self the filter to initialize
+ * @return 0 on success, negative number on failure
*/
typedef int GIT_CALLBACK(git_filter_init_fn)(git_filter *self);
@@ -149,6 +184,8 @@ typedef int GIT_CALLBACK(git_filter_init_fn)(git_filter *self);
* This may be called even if the `initialize` callback was not made.
*
* Typically this function will free the `git_filter` object itself.
+ *
+ * @param self the filter to shutdown
*/
typedef void GIT_CALLBACK(git_filter_shutdown_fn)(git_filter *self);
@@ -171,6 +208,12 @@ typedef void GIT_CALLBACK(git_filter_shutdown_fn)(git_filter *self);
* allocated (not stack), so that it doesn't go away before the `stream`
* callback can use it. If a filter allocates and assigns a value to the
* `payload`, it will need a `cleanup` callback to free the payload.
+ *
+ * @param self the filter check
+ * @param payload a data for future filter functions
+ * @param src the filter source
+ * @param attr_values the attribute values
+ * @return 0 on success or a negative value on error
*/
typedef int GIT_CALLBACK(git_filter_check_fn)(
git_filter *self,
@@ -191,6 +234,12 @@ typedef int GIT_CALLBACK(git_filter_check_fn)(
* The `payload` value will refer to any payload that was set by the
* `check` callback. It may be read from or written to as needed.
*
+ * @param self the filter check
+ * @param payload a data for future filter functions
+ * @param to the input buffer
+ * @param from the output buffer
+ * @param src the filter source
+ * @return 0 on success or a negative value on error
* @deprecated use git_filter_stream_fn
*/
typedef int GIT_CALLBACK(git_filter_apply_fn)(
@@ -209,6 +258,13 @@ typedef int GIT_CALLBACK(git_filter_apply_fn)(
* `git_writestream` that will the original data will be written to;
* with that data, the `git_writestream` will then perform the filter
* translation and stream the filtered data out to the `next` location.
+ *
+ * @param out the write stream
+ * @param self the filter
+ * @param payload a data for future filter functions
+ * @param src the filter source
+ * @param next the output stream
+ * @return 0 on success or a negative value on error
*/
typedef int GIT_CALLBACK(git_filter_stream_fn)(
git_writestream **out,
@@ -225,6 +281,9 @@ typedef int GIT_CALLBACK(git_filter_stream_fn)(
* `stream` callbacks allocated a `payload` to keep per-source filter
* state, use this callback to free that payload and release resources
* as required.
+ *
+ * @param self the filter
+ * @param payload a data for future filter functions
*/
typedef void GIT_CALLBACK(git_filter_cleanup_fn)(
git_filter *self,
@@ -291,7 +350,10 @@ struct git_filter {
git_filter_cleanup_fn cleanup;
};
+/** Current version for the `git_filter_options` structure */
#define GIT_FILTER_VERSION 1
+
+/** Static constructor for `git_filter_options` */
#define GIT_FILTER_INIT {GIT_FILTER_VERSION}
/**
@@ -300,7 +362,7 @@ struct git_filter {
*
* @param filter the `git_filter` struct to initialize.
* @param version Version the struct; pass `GIT_FILTER_VERSION`
- * @return Zero on success; -1 on failure.
+ * @return 0 on success; -1 on failure.
*/
GIT_EXTERN(int) git_filter_init(git_filter *filter, unsigned int version);
@@ -350,4 +412,5 @@ GIT_EXTERN(int) git_filter_unregister(const char *name);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/hashsig.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/hashsig.h
index 09c19ae..0d7be53 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/hashsig.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/hashsig.h
@@ -9,6 +9,16 @@
#include "git2/common.h"
+/**
+ * @file git2/sys/hashsig.h
+ * @brief Signatures for file similarity comparison
+ * @defgroup git_hashsig Git merge routines
+ * @ingroup Git
+ *
+ * Hash signatures are used for file similary comparison; this is
+ * used for git's rename handling.
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -101,6 +111,7 @@ GIT_EXTERN(int) git_hashsig_compare(
const git_hashsig *a,
const git_hashsig *b);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/index.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/index.h
index 1f6d93f..b3b86a0 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/index.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/index.h
@@ -12,8 +12,8 @@
/**
* @file git2/sys/index.h
- * @brief Low-level Git index manipulation routines
- * @defgroup git_backend Git custom backend APIs
+ * @brief Low-level index manipulation routines
+ * @defgroup git_index Low-level index manipulation routines
* @ingroup Git
* @{
*/
@@ -67,6 +67,7 @@ GIT_EXTERN(const git_index_name_entry *) git_index_name_get_byindex(
* @param ancestor the path of the file as it existed in the ancestor
* @param ours the path of the file as it existed in our tree
* @param theirs the path of the file as it existed in their tree
+ * @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_index_name_add(git_index *index,
const char *ancestor, const char *ours, const char *theirs);
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/mempack.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/mempack.h
index 17da590..be902be 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/mempack.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/mempack.h
@@ -15,8 +15,8 @@
/**
* @file git2/sys/mempack.h
- * @brief Custom ODB backend that permits packing objects in-memory
- * @defgroup git_backend Git custom backend APIs
+ * @brief A custom object database backend for storing objects in-memory
+ * @defgroup git_mempack A custom object database backend for storing objects in-memory
* @ingroup Git
* @{
*/
@@ -44,6 +44,26 @@ GIT_BEGIN_DECL
*/
GIT_EXTERN(int) git_mempack_new(git_odb_backend **out);
+/**
+ * Write a thin packfile with the objects in the memory store.
+ *
+ * A thin packfile is a packfile that does not contain its transitive closure of
+ * references. This is useful for efficiently distributing additions to a
+ * repository over the network, but also finds use in the efficient bulk
+ * addition of objects to a repository, locally.
+ *
+ * This operation performs the (shallow) insert operations into the
+ * `git_packbuilder`, but does not write the packfile to disk;
+ * see `git_packbuilder_write_buf`.
+ *
+ * It also does not reset the in-memory object database; see `git_mempack_reset`.
+ *
+ * @param backend The mempack backend
+ * @param pb The packbuilder to use to write the packfile
+ * @return 0 on success or an error code
+ */
+GIT_EXTERN(int) git_mempack_write_thin_pack(git_odb_backend *backend, git_packbuilder *pb);
+
/**
* Dump all the queued in-memory writes to a packfile.
*
@@ -82,6 +102,16 @@ GIT_EXTERN(int) git_mempack_dump(git_buf *pack, git_repository *repo, git_odb_ba
*/
GIT_EXTERN(int) git_mempack_reset(git_odb_backend *backend);
+/**
+ * Get the total number of objects in mempack
+ *
+ * @param count The count of objects in the mempack
+ * @param backend The mempack backend
+ * @return 0 on success, or -1 on error
+ */
+GIT_EXTERN(int) git_mempack_object_count(size_t *count, git_odb_backend *backend);
+
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/merge.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/merge.h
index ef4bc5a..a9f5220 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/merge.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/merge.h
@@ -14,13 +14,18 @@
/**
* @file git2/sys/merge.h
- * @brief Git merge driver backend and plugin routines
- * @defgroup git_merge Git merge driver APIs
+ * @brief Custom merge drivers
+ * @defgroup git_merge Custom merge drivers
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/**
+ * A "merge driver" is a mechanism that can be configured to handle
+ * conflict resolution for files changed in both the "ours" and "theirs"
+ * side of a merge.
+ */
typedef struct git_merge_driver git_merge_driver;
/**
@@ -31,8 +36,11 @@ typedef struct git_merge_driver git_merge_driver;
*/
GIT_EXTERN(git_merge_driver *) git_merge_driver_lookup(const char *name);
+/** The "text" merge driver */
#define GIT_MERGE_DRIVER_TEXT "text"
+/** The "binary" merge driver */
#define GIT_MERGE_DRIVER_BINARY "binary"
+/** The "union" merge driver */
#define GIT_MERGE_DRIVER_UNION "union"
/**
@@ -40,23 +48,48 @@ GIT_EXTERN(git_merge_driver *) git_merge_driver_lookup(const char *name);
*/
typedef struct git_merge_driver_source git_merge_driver_source;
-/** Get the repository that the source data is coming from. */
+/**
+ * Get the repository that the source data is coming from.
+ *
+ * @param src the merge driver source
+ * @return the repository
+ */
GIT_EXTERN(git_repository *) git_merge_driver_source_repo(
const git_merge_driver_source *src);
-/** Gets the ancestor of the file to merge. */
+/**
+ * Gets the ancestor of the file to merge.
+ *
+ * @param src the merge driver source
+ * @return the ancestor or NULL if there was no ancestor
+ */
GIT_EXTERN(const git_index_entry *) git_merge_driver_source_ancestor(
const git_merge_driver_source *src);
-/** Gets the ours side of the file to merge. */
+/**
+ * Gets the ours side of the file to merge.
+ *
+ * @param src the merge driver source
+ * @return the ours side or NULL if there was no ours side
+ */
GIT_EXTERN(const git_index_entry *) git_merge_driver_source_ours(
const git_merge_driver_source *src);
-/** Gets the theirs side of the file to merge. */
+/**
+ * Gets the theirs side of the file to merge.
+ *
+ * @param src the merge driver source
+ * @return the theirs side or NULL if there was no theirs side
+ */
GIT_EXTERN(const git_index_entry *) git_merge_driver_source_theirs(
const git_merge_driver_source *src);
-/** Gets the merge file options that the merge was invoked with */
+/**
+ * Gets the merge file options that the merge was invoked with.
+ *
+ * @param src the merge driver source
+ * @return the options
+ */
GIT_EXTERN(const git_merge_file_options *) git_merge_driver_source_file_options(
const git_merge_driver_source *src);
@@ -72,6 +105,9 @@ GIT_EXTERN(const git_merge_file_options *) git_merge_driver_source_file_options(
* right before the first use of the driver, so you can defer expensive
* initialization operations (in case libgit2 is being used in a way that
* doesn't need the merge driver).
+ *
+ * @param self the merge driver to initialize
+ * @return 0 on success, or a negative number on failure
*/
typedef int GIT_CALLBACK(git_merge_driver_init_fn)(git_merge_driver *self);
@@ -84,6 +120,8 @@ typedef int GIT_CALLBACK(git_merge_driver_init_fn)(git_merge_driver *self);
* This may be called even if the `initialize` callback was not made.
*
* Typically this function will free the `git_merge_driver` object itself.
+ *
+ * @param self the merge driver to shutdown
*/
typedef void GIT_CALLBACK(git_merge_driver_shutdown_fn)(git_merge_driver *self);
@@ -104,6 +142,14 @@ typedef void GIT_CALLBACK(git_merge_driver_shutdown_fn)(git_merge_driver *self);
* specified by the file's attributes.
*
* The `src` contains the data about the file to be merged.
+ *
+ * @param self the merge driver
+ * @param path_out the resolved path
+ * @param mode_out the resolved mode
+ * @param merged_out the merged output contents
+ * @param filter_name the filter that was invoked
+ * @param src the data about the unmerged file
+ * @return 0 on success, or an error code
*/
typedef int GIT_CALLBACK(git_merge_driver_apply_fn)(
git_merge_driver *self,
@@ -139,6 +185,7 @@ struct git_merge_driver {
git_merge_driver_apply_fn apply;
};
+/** The version for the `git_merge_driver` */
#define GIT_MERGE_DRIVER_VERSION 1
/**
@@ -179,4 +226,5 @@ GIT_EXTERN(int) git_merge_driver_unregister(const char *name);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/midx.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/midx.h
index e3d7498..b3a68af 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/midx.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/midx.h
@@ -11,14 +11,52 @@
#include "git2/types.h"
/**
- * @file git2/midx.h
- * @brief Git multi-pack-index routines
- * @defgroup git_midx Git multi-pack-index routines
+ * @file git2/sys/midx.h
+ * @brief Incremental multi-pack indexes
+ * @defgroup git_midx Incremental multi-pack indexes
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+/**
+ * Options structure for `git_midx_writer_options`.
+ *
+ * Initialize with `GIT_MIDX_WRITER_OPTIONS_INIT`. Alternatively,
+ * you can use `git_midx_writer_options_init`.
+ */
+typedef struct {
+ unsigned int version;
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /** The object ID type that this commit graph contains. */
+ git_oid_t oid_type;
+#endif
+} git_midx_writer_options;
+
+/** Current version for the `git_midx_writer_options` structure */
+#define GIT_MIDX_WRITER_OPTIONS_VERSION 1
+
+/** Static constructor for `git_midx_writer_options` */
+#define GIT_MIDX_WRITER_OPTIONS_INIT { \
+ GIT_MIDX_WRITER_OPTIONS_VERSION \
+ }
+
+/**
+ * Initialize git_midx_writer_options structure
+ *
+ * Initializes a `git_midx_writer_options` with default values.
+ * Equivalent to creating an instance with
+ * `GIT_MIDX_WRITER_OPTIONS_INIT`.
+ *
+ * @param opts The `git_midx_writer_options` struct to initialize.
+ * @param version The struct version; pass `GIT_MIDX_WRITER_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_midx_writer_options_init(
+ git_midx_writer_options *opts,
+ unsigned int version);
+
/**
* Create a new writer for `multi-pack-index` files.
*
@@ -29,7 +67,11 @@ GIT_BEGIN_DECL
*/
GIT_EXTERN(int) git_midx_writer_new(
git_midx_writer **out,
- const char *pack_dir);
+ const char *pack_dir
+#ifdef GIT_EXPERIMENTAL_SHA256
+ , git_midx_writer_options *options
+#endif
+ );
/**
* Free the multi-pack-index writer and its resources.
@@ -71,4 +113,5 @@ GIT_EXTERN(int) git_midx_writer_dump(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/odb_backend.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/odb_backend.h
index 9ae0ed9..53d8d06 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/odb_backend.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/odb_backend.h
@@ -13,9 +13,9 @@
#include "git2/odb.h"
/**
- * @file git2/sys/backend.h
- * @brief Git custom backend implementors functions
- * @defgroup git_backend Git custom backend APIs
+ * @file git2/sys/odb_backend.h
+ * @brief Object database backends for custom object storage
+ * @defgroup git_backend Object database backends for custom object storage
* @ingroup Git
* @{
*/
@@ -36,7 +36,7 @@ struct git_odb_backend {
void **, size_t *, git_object_t *, git_odb_backend *, const git_oid *);
/* To find a unique object given a prefix of its oid. The oid given
- * must be so that the remaining (GIT_OID_HEXSZ - len)*4 bits are 0s.
+ * must be so that the remaining (GIT_OID_SHA1_HEXSIZE - len)*4 bits are 0s.
*/
int GIT_CALLBACK(read_prefix)(
git_oid *, void **, size_t *, git_object_t *,
@@ -69,11 +69,8 @@ struct git_odb_backend {
* If the backend implements a refreshing mechanism, it should be exposed
* through this endpoint. Each call to `git_odb_refresh()` will invoke it.
*
- * However, the backend implementation should try to stay up-to-date as much
- * as possible by itself as libgit2 will not automatically invoke
- * `git_odb_refresh()`. For instance, a potential strategy for the backend
- * implementation to achieve this could be to internally invoke this
- * endpoint on failed lookups (ie. `exists()`, `read()`, `read_header()`).
+ * The odb layer will automatically call this when needed on failed
+ * lookups (ie. `exists()`, `read()`, `read_header()`).
*/
int GIT_CALLBACK(refresh)(git_odb_backend *);
@@ -109,7 +106,10 @@ struct git_odb_backend {
void GIT_CALLBACK(free)(git_odb_backend *);
};
+/** Current version for the `git_odb_backend_options` structure */
#define GIT_ODB_BACKEND_VERSION 1
+
+/** Static constructor for `git_odb_backend_options` */
#define GIT_ODB_BACKEND_INIT {GIT_ODB_BACKEND_VERSION}
/**
@@ -170,6 +170,7 @@ GIT_EXTERN(void *) git_odb_backend_malloc(git_odb_backend *backend, size_t len);
#endif
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/openssl.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/openssl.h
index b41c55c..8b74a98 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/openssl.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/openssl.h
@@ -9,6 +9,12 @@
#include "git2/common.h"
+/**
+ * @file git2/sys/openssl.h
+ * @brief Custom OpenSSL functionality
+ * @defgroup git_openssl Custom OpenSSL functionality
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -33,6 +39,7 @@ GIT_BEGIN_DECL
*/
GIT_EXTERN(int) git_openssl_set_locking(void);
+/** @} */
GIT_END_DECL
-#endif
+#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/path.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/path.h
index 2a0c7e0..2963bca 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/path.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/path.h
@@ -10,6 +10,16 @@
#include "git2/common.h"
+/**
+ * @file git2/sys/path.h
+ * @brief Custom path handling
+ * @defgroup git_path Custom path handling
+ * @ingroup Git
+ *
+ * Merge will take two commits and attempt to produce a commit that
+ * includes the changes that were made in both branches.
+ * @{
+ */
GIT_BEGIN_DECL
/**
@@ -59,6 +69,7 @@ typedef enum {
*/
GIT_EXTERN(int) git_path_is_gitfile(const char *path, size_t pathlen, git_path_gitfile gitfile, git_path_fs fs);
+/** @} */
GIT_END_DECL
-#endif /* INCLUDE_sys_git_path */
+#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/refdb_backend.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/refdb_backend.h
index c31e26d..813822a 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/refdb_backend.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/refdb_backend.h
@@ -12,9 +12,9 @@
#include "git2/oid.h"
/**
- * @file git2/refdb_backend.h
- * @brief Git custom refs backend functions
- * @defgroup git_refdb_backend Git custom refs backend API
+ * @file git2/sys/refdb_backend.h
+ * @brief Custom reference database backends for refs storage
+ * @defgroup git_refdb_backend Custom reference database backends for refs storage
* @ingroup Git
* @{
*/
@@ -65,9 +65,9 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg exists The implementation shall set this to `0` if a ref does
+ * @param exists The implementation shall set this to `0` if a ref does
* not exist, otherwise to `1`.
- * @arg ref_name The reference's name that should be checked for
+ * @param ref_name The reference's name that should be checked for
* existence.
* @return `0` on success, a negative error value code.
*/
@@ -81,9 +81,9 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg out The implementation shall set this to the allocated
+ * @param out The implementation shall set this to the allocated
* reference, if it could be found, otherwise to `NULL`.
- * @arg ref_name The reference's name that should be checked for
+ * @param ref_name The reference's name that should be checked for
* existence.
* @return `0` on success, `GIT_ENOTFOUND` if the reference does
* exist, otherwise a negative error code.
@@ -98,12 +98,12 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg out The implementation shall set this to the allocated
+ * @param out The implementation shall set this to the allocated
* reference iterator. A custom structure may be used with an
* embedded `git_reference_iterator` structure. Both `next`
* and `next_name` functions of `git_reference_iterator` need
* to be populated.
- * @arg glob A pattern to filter references by. If given, the iterator
+ * @param glob A pattern to filter references by. If given, the iterator
* shall only return references that match the glob when
* passed to `wildmatch`.
* @return `0` on success, otherwise a negative error code.
@@ -118,20 +118,20 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg ref The reference to persist. May either be a symbolic or
+ * @param ref The reference to persist. May either be a symbolic or
* direct reference.
- * @arg force Whether to write the reference if a reference with the
+ * @param force Whether to write the reference if a reference with the
* same name already exists.
- * @arg who The person updating the reference. Shall be used to create
+ * @param who The person updating the reference. Shall be used to create
* a reflog entry.
- * @arg message The message detailing what kind of reference update is
+ * @param message The message detailing what kind of reference update is
* performed. Shall be used to create a reflog entry.
- * @arg old If not `NULL` and `force` is not set, then the
+ * @param old If not `NULL` and `force` is not set, then the
* implementation needs to ensure that the reference is currently at
* the given OID before writing the new value. If both `old`
* and `old_target` are `NULL`, then the reference should not
* exist at the point of writing.
- * @arg old_target If not `NULL` and `force` is not set, then the
+ * @param old_target If not `NULL` and `force` is not set, then the
* implementation needs to ensure that the symbolic
* reference is currently at the given target before
* writing the new value. If both `old` and
@@ -149,15 +149,15 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg out The implementation shall set this to the newly created
+ * @param out The implementation shall set this to the newly created
* reference or `NULL` on error.
- * @arg old_name The current name of the reference that is to be renamed.
- * @arg new_name The new name that the old reference shall be renamed to.
- * @arg force Whether to write the reference if a reference with the
+ * @param old_name The current name of the reference that is to be renamed.
+ * @param new_name The new name that the old reference shall be renamed to.
+ * @param force Whether to write the reference if a reference with the
* target name already exists.
- * @arg who The person updating the reference. Shall be used to create
+ * @param who The person updating the reference. Shall be used to create
* a reflog entry.
- * @arg message The message detailing what kind of reference update is
+ * @param message The message detailing what kind of reference update is
* performed. Shall be used to create a reflog entry.
* @return `0` on success, otherwise a negative error code.
*/
@@ -173,11 +173,11 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg ref_name The name of the reference name that shall be deleted.
- * @arg old_id If not `NULL` and `force` is not set, then the
+ * @param ref_name The name of the reference name that shall be deleted.
+ * @param old_id If not `NULL` and `force` is not set, then the
* implementation needs to ensure that the reference is currently at
* the given OID before writing the new value.
- * @arg old_target If not `NULL` and `force` is not set, then the
+ * @param old_target If not `NULL` and `force` is not set, then the
* implementation needs to ensure that the symbolic
* reference is currently at the given target before
* writing the new value.
@@ -243,7 +243,7 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg reflog The complete reference log for a given reference. Note
+ * @param reflog The complete reference log for a given reference. Note
* that this may contain entries that have already been
* written to disk.
* @return `0` on success, a negative error code otherwise
@@ -255,8 +255,8 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg old_name The name of old reference whose reflog shall be renamed from.
- * @arg new_name The name of new reference whose reflog shall be renamed to.
+ * @param old_name The name of old reference whose reflog shall be renamed from.
+ * @param new_name The name of new reference whose reflog shall be renamed to.
* @return `0` on success, a negative error code otherwise
*/
int GIT_CALLBACK(reflog_rename)(git_refdb_backend *_backend, const char *old_name, const char *new_name);
@@ -266,7 +266,7 @@ struct git_refdb_backend {
*
* A refdb implementation must provide this function.
*
- * @arg name The name of the reference whose reflog shall be deleted.
+ * @param name The name of the reference whose reflog shall be deleted.
* @return `0` on success, a negative error code otherwise
*/
int GIT_CALLBACK(reflog_delete)(git_refdb_backend *backend, const char *name);
@@ -277,9 +277,9 @@ struct git_refdb_backend {
* A refdb implementation may provide this function; if it is not
* provided, the transaction API will fail to work.
*
- * @arg payload_out Opaque parameter that will be passed verbosely to
+ * @param payload_out Opaque parameter that will be passed verbosely to
* `unlock`.
- * @arg refname Reference that shall be locked.
+ * @param refname Reference that shall be locked.
* @return `0` on success, a negative error code otherwise
*/
int GIT_CALLBACK(lock)(void **payload_out, git_refdb_backend *backend, const char *refname);
@@ -294,16 +294,16 @@ struct git_refdb_backend {
* A refdb implementation must provide this function if a `lock`
* implementation is provided.
*
- * @arg payload The payload returned by `lock`.
- * @arg success `1` if a reference should be updated, `2` if
+ * @param payload The payload returned by `lock`.
+ * @param success `1` if a reference should be updated, `2` if
* a reference should be deleted, `0` if the lock must be
* discarded.
- * @arg update_reflog `1` in case the reflog should be updated, `0`
+ * @param update_reflog `1` in case the reflog should be updated, `0`
* otherwise.
- * @arg ref The reference which should be unlocked.
- * @arg who The person updating the reference. Shall be used to create
+ * @param ref The reference which should be unlocked.
+ * @param who The person updating the reference. Shall be used to create
* a reflog entry in case `update_reflog` is set.
- * @arg message The message detailing what kind of reference update is
+ * @param message The message detailing what kind of reference update is
* performed. Shall be used to create a reflog entry in
* case `update_reflog` is set.
* @return `0` on success, a negative error code otherwise
@@ -312,7 +312,10 @@ struct git_refdb_backend {
const git_reference *ref, const git_signature *sig, const char *message);
};
+/** Current version for the `git_refdb_backend_options` structure */
#define GIT_REFDB_BACKEND_VERSION 1
+
+/** Static constructor for `git_refdb_backend_options` */
#define GIT_REFDB_BACKEND_INIT {GIT_REFDB_BACKEND_VERSION}
/**
@@ -356,6 +359,7 @@ GIT_EXTERN(int) git_refdb_set_backend(
git_refdb *refdb,
git_refdb_backend *backend);
+/** @} */
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/reflog.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/reflog.h
deleted file mode 100644
index c9d0041..0000000
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/reflog.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright (C) the libgit2 contributors. All rights reserved.
- *
- * This file is part of libgit2, distributed under the GNU GPL v2 with
- * a Linking Exception. For full terms see the included COPYING file.
- */
-#ifndef INCLUDE_sys_git_reflog_h__
-#define INCLUDE_sys_git_reflog_h__
-
-#include "git2/common.h"
-#include "git2/types.h"
-#include "git2/oid.h"
-
-GIT_BEGIN_DECL
-
-GIT_EXTERN(git_reflog_entry *) git_reflog_entry__alloc(void);
-GIT_EXTERN(void) git_reflog_entry__free(git_reflog_entry *entry);
-
-GIT_END_DECL
-
-#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/refs.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/refs.h
index d2ce2e0..e434e67 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/refs.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/refs.h
@@ -13,8 +13,8 @@
/**
* @file git2/sys/refs.h
- * @brief Low-level Git ref creation
- * @defgroup git_backend Git custom backend APIs
+ * @brief Low-level git reference creation
+ * @defgroup git_backend Low-level git reference creation
* @ingroup Git
* @{
*/
@@ -46,4 +46,5 @@ GIT_EXTERN(git_reference *) git_reference__alloc_symbolic(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/remote.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/remote.h
new file mode 100644
index 0000000..476965d
--- /dev/null
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/remote.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) the libgit2 contributors. All rights reserved.
+ *
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
+ * a Linking Exception. For full terms see the included COPYING file.
+ */
+
+#ifndef INCLUDE_sys_git_remote_h
+#define INCLUDE_sys_git_remote_h
+
+#include "git2/remote.h"
+
+/**
+ * @file git2/sys/remote.h
+ * @brief Low-level remote functionality for custom transports
+ * @defgroup git_remote Low-level remote functionality for custom transports
+ * @ingroup Git
+ * @{
+*/
+
+GIT_BEGIN_DECL
+
+/**
+ * A remote's capabilities.
+ */
+typedef enum {
+ /** Remote supports fetching an advertised object by ID. */
+ GIT_REMOTE_CAPABILITY_TIP_OID = (1 << 0),
+
+ /** Remote supports fetching an individual reachable object. */
+ GIT_REMOTE_CAPABILITY_REACHABLE_OID = (1 << 1),
+
+ /** Remote supports push options. */
+ GIT_REMOTE_CAPABILITY_PUSH_OPTIONS = (1 << 2),
+} git_remote_capability_t;
+
+/**
+ * Disposes libgit2-initialized fields from a git_remote_connect_options.
+ * This should only be used for git_remote_connect_options returned by
+ * git_transport_remote_connect_options.
+ *
+ * Note that this does not free the `git_remote_connect_options` itself, just
+ * the memory pointed to by it.
+ *
+ * @param opts The `git_remote_connect_options` struct to dispose.
+ */
+GIT_EXTERN(void) git_remote_connect_options_dispose(
+ git_remote_connect_options *opts);
+
+/** @} */
+GIT_END_DECL
+
+#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/repository.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/repository.h
index 892be66..026ac8a 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/repository.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/repository.h
@@ -9,16 +9,71 @@
#include "git2/common.h"
#include "git2/types.h"
+#include "git2/oid.h"
/**
* @file git2/sys/repository.h
- * @brief Git repository custom implementation routines
- * @defgroup git_backend Git custom backend APIs
+ * @brief Custom repository handling
+ * @defgroup git_repository Custom repository handling
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
+#ifdef GIT_EXPERIMENTAL_SHA256
+
+/**
+ * The options for creating an repository from scratch.
+ *
+ * Initialize with `GIT_REPOSITORY_NEW_OPTIONS_INIT`. Alternatively,
+ * you can use `git_repository_new_options_init`.
+ *
+ * @options[version] GIT_REPOSITORY_NEW_OPTIONS_VERSION
+ * @options[init_macro] GIT_REPOSITORY_NEW_OPTIONS_INIT
+ * @options[init_function] git_repository_new_options_init
+ */
+typedef struct git_repository_new_options {
+ unsigned int version; /**< The version */
+
+ /**
+ * The object ID type for the object IDs that exist in the index.
+ *
+ * If this is not specified, this defaults to `GIT_OID_SHA1`.
+ */
+ git_oid_t oid_type;
+} git_repository_new_options;
+
+/** Current version for the `git_repository_new_options` structure */
+#define GIT_REPOSITORY_NEW_OPTIONS_VERSION 1
+
+/** Static constructor for `git_repository_new_options` */
+#define GIT_REPOSITORY_NEW_OPTIONS_INIT { GIT_REPOSITORY_NEW_OPTIONS_VERSION }
+
+/**
+ * Initialize git_repository_new_options structure
+ *
+ * Initializes a `git_repository_new_options` with default values.
+ * Equivalent to creating an instance with
+ * `GIT_REPOSITORY_NEW_OPTIONS_INIT`.
+ *
+ * @param opts The `git_repository_new_options` struct to initialize.
+ * @param version The struct version; pass `GIT_REPOSITORY_NEW_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_repository_new_options_init(
+ git_repository_new_options *opts,
+ unsigned int version);
+
+/**
+ * Create a new repository with no backends.
+ *
+ * @param[out] out The blank repository
+ * @param opts the options for repository creation, or NULL for defaults
+ * @return 0 on success, or an error code
+ */
+GIT_EXTERN(int) git_repository_new(git_repository **out, git_repository_new_options *opts);
+#else
+
/**
* Create a new repository with neither backends nor config object
*
@@ -29,11 +84,13 @@ GIT_BEGIN_DECL
* can fail to function properly: locations under $GIT_DIR, $GIT_COMMON_DIR,
* or $GIT_INFO_DIR are impacted.
*
- * @param out The blank repository
+ * @param[out] out The blank repository
* @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_repository_new(git_repository **out);
+#endif
+
/**
* Reset all the internal state in a repository.
*
@@ -156,6 +213,7 @@ GIT_EXTERN(int) git_repository_set_bare(git_repository *repo);
* and caches them so that subsequent calls to `git_submodule_lookup` are O(1).
*
* @param repo the repository whose submodules will be cached.
+ * @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_repository_submodule_cache_all(
git_repository *repo);
@@ -171,10 +229,12 @@ GIT_EXTERN(int) git_repository_submodule_cache_all(
* of these has changed, the cache might become invalid.
*
* @param repo the repository whose submodule cache will be cleared
+ * @return 0 on success, or an error code
*/
GIT_EXTERN(int) git_repository_submodule_cache_clear(
git_repository *repo);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/stream.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/stream.h
index 6f93cc4..eabff68 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/stream.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/stream.h
@@ -11,8 +11,16 @@
#include "git2/types.h"
#include "git2/proxy.h"
+/**
+ * @file git2/sys/stream.h
+ * @brief Streaming file I/O functionality
+ * @defgroup git_stream Streaming file I/O functionality
+ * @ingroup Git
+ * @{
+ */
GIT_BEGIN_DECL
+/** Current version for the `git_stream` structures */
#define GIT_STREAM_VERSION 1
/**
@@ -29,8 +37,22 @@ GIT_BEGIN_DECL
typedef struct git_stream {
int version;
- int encrypted;
- int proxy_support;
+ unsigned int encrypted : 1,
+ proxy_support : 1;
+
+ /**
+ * Timeout for read and write operations; can be set to `0` to
+ * block indefinitely.
+ */
+ int timeout;
+
+ /**
+ * Timeout to connect to the remote server; can be set to `0`
+ * to use the system defaults. This can be shorter than the
+ * system default - often 75 seconds - but cannot be longer.
+ */
+ int connect_timeout;
+
int GIT_CALLBACK(connect)(struct git_stream *);
int GIT_CALLBACK(certificate)(git_cert **, struct git_stream *);
int GIT_CALLBACK(set_proxy)(struct git_stream *, const git_proxy_options *proxy_opts);
@@ -79,7 +101,7 @@ typedef enum {
GIT_STREAM_STANDARD = 1,
/** A TLS-encrypted socket. */
- GIT_STREAM_TLS = 2,
+ GIT_STREAM_TLS = 2
} git_stream_t;
/**
@@ -133,6 +155,7 @@ GIT_EXTERN(int) git_stream_register_tls(git_stream_cb ctor);
#endif
+/**@}*/
GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/transport.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/transport.h
index fee3454..ad6765c 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/transport.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/sys/transport.h
@@ -9,46 +9,40 @@
#define INCLUDE_sys_git_transport_h
#include "git2/net.h"
+#include "git2/oidarray.h"
+#include "git2/proxy.h"
+#include "git2/remote.h"
+#include "git2/strarray.h"
#include "git2/transport.h"
#include "git2/types.h"
-#include "git2/strarray.h"
-#include "git2/proxy.h"
/**
* @file git2/sys/transport.h
- * @brief Git custom transport registration interfaces and functions
- * @defgroup git_transport Git custom transport registration
+ * @brief Custom transport registration interfaces and functions
+ * @defgroup git_transport Custom transport registration
* @ingroup Git
+ *
+ * Callers can override the default HTTPS or SSH implementation by
+ * specifying a custom transport.
* @{
*/
GIT_BEGIN_DECL
/**
- * Flags to pass to transport
- *
- * Currently unused.
+ * The negotiation state during a fetch smart transport negotiation.
*/
-typedef enum {
- GIT_TRANSPORTFLAGS_NONE = 0,
-} git_transport_flags_t;
+typedef struct {
+ const git_remote_head * const *refs;
+ size_t refs_len;
+ git_oid *shallow_roots;
+ size_t shallow_roots_len;
+ int depth;
+} git_fetch_negotiation;
struct git_transport {
unsigned int version; /**< The struct version */
- /** Set progress and error callbacks */
- int GIT_CALLBACK(set_callbacks)(
- git_transport *transport,
- git_transport_message_cb progress_cb,
- git_transport_message_cb error_cb,
- git_transport_certificate_check_cb certificate_check_cb,
- void *payload);
-
- /** Set custom headers for HTTP requests */
- int GIT_CALLBACK(set_custom_headers)(
- git_transport *transport,
- const git_strarray *custom_headers);
-
/**
* Connect the transport to the remote repository, using the given
* direction.
@@ -56,11 +50,39 @@ struct git_transport {
int GIT_CALLBACK(connect)(
git_transport *transport,
const char *url,
- git_credential_acquire_cb cred_acquire_cb,
- void *cred_acquire_payload,
- const git_proxy_options *proxy_opts,
int direction,
- int flags);
+ const git_remote_connect_options *connect_opts);
+
+ /**
+ * Resets the connect options for the given transport. This
+ * is useful for updating settings or callbacks for an already
+ * connected transport.
+ */
+ int GIT_CALLBACK(set_connect_opts)(
+ git_transport *transport,
+ const git_remote_connect_options *connect_opts);
+
+ /**
+ * Gets the capabilities for this remote repository.
+ *
+ * This function may be called after a successful call to
+ * `connect()`.
+ */
+ int GIT_CALLBACK(capabilities)(
+ unsigned int *capabilities,
+ git_transport *transport);
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+ /**
+ * Gets the object type for the remote repository.
+ *
+ * This function may be called after a successful call to
+ * `connect()`.
+ */
+ int GIT_CALLBACK(oid_type)(
+ git_oid_t *object_type,
+ git_transport *transport);
+#endif
/**
* Get the list of available references in the remote repository.
@@ -75,7 +97,9 @@ struct git_transport {
git_transport *transport);
/** Executes the push whose context is in the git_push object. */
- int GIT_CALLBACK(push)(git_transport *transport, git_push *push, const git_remote_callbacks *callbacks);
+ int GIT_CALLBACK(push)(
+ git_transport *transport,
+ git_push *push);
/**
* Negotiate a fetch with the remote repository.
@@ -87,8 +111,17 @@ 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);
+
+ /**
+ * Return the shallow roots of the remote.
+ *
+ * This function may be called after a successful call to
+ * `negotiate_fetch`.
+ */
+ int GIT_CALLBACK(shallow_roots)(
+ git_oidarray *out,
+ git_transport *transport);
/**
* Start downloading the packfile from the remote repository.
@@ -99,16 +132,11 @@ struct git_transport {
int GIT_CALLBACK(download_pack)(
git_transport *transport,
git_repository *repo,
- git_indexer_progress *stats,
- git_indexer_progress_cb progress_cb,
- void *progress_payload);
+ git_indexer_progress *stats);
/** Checks to see if the transport is connected */
int GIT_CALLBACK(is_connected)(git_transport *transport);
- /** Reads the flags value previously passed into connect() */
- int GIT_CALLBACK(read_flags)(git_transport *transport, int *flags);
-
/** Cancels any outstanding transport operation */
void GIT_CALLBACK(cancel)(git_transport *transport);
@@ -124,7 +152,10 @@ struct git_transport {
void GIT_CALLBACK(free)(git_transport *transport);
};
+/** Current version for the `git_transport` structure */
#define GIT_TRANSPORT_VERSION 1
+
+/** Static constructor for `git_transport` */
#define GIT_TRANSPORT_INIT {GIT_TRANSPORT_VERSION}
/**
@@ -270,14 +301,18 @@ GIT_EXTERN(int) git_transport_smart_certificate_check(git_transport *transport,
GIT_EXTERN(int) git_transport_smart_credentials(git_credential **out, git_transport *transport, const char *user, int methods);
/**
- * Get a copy of the proxy options
+ * Get a copy of the remote connect options
*
- * The url is copied and must be freed by the caller.
+ * All data is copied and must be freed by the caller by calling
+ * `git_remote_connect_options_dispose`.
*
* @param out options struct to fill
* @param transport the transport to extract the data from.
+ * @return 0 on success, or an error code
*/
-GIT_EXTERN(int) git_transport_smart_proxy_options(git_proxy_options *out, git_transport *transport);
+GIT_EXTERN(int) git_transport_remote_connect_options(
+ git_remote_connect_options *out,
+ git_transport *transport);
/*
*** End of base transport interface ***
@@ -289,7 +324,7 @@ typedef enum {
GIT_SERVICE_UPLOADPACK_LS = 1,
GIT_SERVICE_UPLOADPACK = 2,
GIT_SERVICE_RECEIVEPACK_LS = 3,
- GIT_SERVICE_RECEIVEPACK = 4,
+ GIT_SERVICE_RECEIVEPACK = 4
} git_smart_service_t;
typedef struct git_smart_subtransport git_smart_subtransport;
@@ -361,7 +396,14 @@ struct git_smart_subtransport {
void GIT_CALLBACK(free)(git_smart_subtransport *transport);
};
-/** A function which creates a new subtransport for the smart transport */
+/**
+ * A function that creates a new subtransport for the smart transport
+ *
+ * @param out the smart subtransport
+ * @param owner the transport owner
+ * @param param the input parameter
+ * @return 0 on success, or an error code
+ */
typedef int GIT_CALLBACK(git_smart_subtransport_cb)(
git_smart_subtransport **out,
git_transport *owner,
@@ -404,6 +446,7 @@ typedef struct git_smart_subtransport_definition {
*
* @param out The newly created subtransport
* @param owner The smart transport to own this subtransport
+ * @param param custom parameters for the subtransport
* @return 0 or an error code
*/
GIT_EXTERN(int) git_smart_subtransport_http(
@@ -416,6 +459,7 @@ GIT_EXTERN(int) git_smart_subtransport_http(
*
* @param out The newly created subtransport
* @param owner The smart transport to own this subtransport
+ * @param param custom parameters for the subtransport
* @return 0 or an error code
*/
GIT_EXTERN(int) git_smart_subtransport_git(
@@ -428,6 +472,7 @@ GIT_EXTERN(int) git_smart_subtransport_git(
*
* @param out The newly created subtransport
* @param owner The smart transport to own this subtransport
+ * @param param custom parameters for the subtransport
* @return 0 or an error code
*/
GIT_EXTERN(int) git_smart_subtransport_ssh(
@@ -437,4 +482,5 @@ GIT_EXTERN(int) git_smart_subtransport_ssh(
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/tag.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/tag.h
index a392136..3b0c12e 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/tag.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/tag.h
@@ -15,7 +15,7 @@
/**
* @file git2/tag.h
- * @brief Git tag parsing routines
+ * @brief A (nearly) immutable pointer to a commit; useful for versioning
* @defgroup git_tag Git tag management
* @ingroup Git
* @{
@@ -335,6 +335,7 @@ typedef int GIT_CALLBACK(git_tag_foreach_cb)(const char *name, git_oid *oid, voi
* @param repo Repository
* @param callback Callback function
* @param payload Pointer to callback data (optional)
+ * @return 0 on success or an error code
*/
GIT_EXTERN(int) git_tag_foreach(
git_repository *repo,
@@ -362,6 +363,7 @@ GIT_EXTERN(int) git_tag_peel(
*
* @param out Pointer to store the copy of the tag
* @param source Original tag to copy
+ * @return 0
*/
GIT_EXTERN(int) git_tag_dup(git_tag **out, git_tag *source);
@@ -379,4 +381,5 @@ GIT_EXTERN(int) git_tag_name_is_valid(int *valid, const char *name);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/trace.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/trace.h
index 8cee3a9..62cb87c 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/trace.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/trace.h
@@ -12,8 +12,8 @@
/**
* @file git2/trace.h
- * @brief Git tracing configuration routines
- * @defgroup git_trace Git tracing configuration routines
+ * @brief Tracing functionality to introspect libgit2 in your application
+ * @defgroup git_trace Tracing functionality to introspect libgit2 in your application
* @ingroup Git
* @{
*/
@@ -48,8 +48,13 @@ typedef enum {
/**
* An instance for a tracing function
+ *
+ * @param level the trace level
+ * @param msg the trace message
*/
-typedef void GIT_CALLBACK(git_trace_cb)(git_trace_level_t level, const char *msg);
+typedef void GIT_CALLBACK(git_trace_cb)(
+ git_trace_level_t level,
+ const char *msg);
/**
* Sets the system tracing configuration to the specified level with the
@@ -64,4 +69,5 @@ GIT_EXTERN(int) git_trace_set(git_trace_level_t level, git_trace_cb cb);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/transaction.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/transaction.h
index 4938570..212d329 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/transaction.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/transaction.h
@@ -12,8 +12,8 @@
/**
* @file git2/transaction.h
- * @brief Git transactional reference routines
- * @defgroup git_transaction Git transactional reference routines
+ * @brief Transactional reference handling
+ * @defgroup git_transaction Transactional reference handling
* @ingroup Git
* @{
*/
@@ -118,4 +118,5 @@ GIT_EXTERN(void) git_transaction_free(git_transaction *tx);
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/transport.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/transport.h
index 5a27de9..04a7390 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/transport.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/transport.h
@@ -15,8 +15,8 @@
/**
* @file git2/transport.h
- * @brief Git transport interfaces and functions
- * @defgroup git_transport interfaces and functions
+ * @brief Transports are the low-level mechanism to connect to a remote server
+ * @defgroup git_transport Transports are the low-level mechanism to connect to a remote server
* @ingroup Git
* @{
*/
@@ -30,10 +30,18 @@ GIT_BEGIN_DECL
* @param str The message from the transport
* @param len The length of the message
* @param payload Payload provided by the caller
+ * @return 0 on success or an error code
*/
typedef int GIT_CALLBACK(git_transport_message_cb)(const char *str, int len, void *payload);
-/** Signature of a function which creates a transport */
+/**
+ * Signature of a function which creates a transport.
+ *
+ * @param out the transport generate
+ * @param owner the owner for the transport
+ * @param param the param to the transport creation
+ * @return 0 on success or an error code
+ */
typedef int GIT_CALLBACK(git_transport_cb)(git_transport **out, git_remote *owner, void *param);
/** @} */
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/tree.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/tree.h
index f2289fc..b8e2de2 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/tree.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/tree.h
@@ -14,8 +14,8 @@
/**
* @file git2/tree.h
- * @brief Git tree parsing, loading routines
- * @defgroup git_tree Git tree parsing, loading routines
+ * @brief Trees are collections of files and folders to make up the repository hierarchy
+ * @defgroup git_tree Trees are collections of files and folders to make up the repository hierarchy
* @ingroup Git
* @{
*/
@@ -24,7 +24,7 @@ GIT_BEGIN_DECL
/**
* Lookup a tree object from the repository.
*
- * @param out Pointer to the looked up tree
+ * @param[out] out Pointer to the looked up tree
* @param repo The repo to use when locating the tree.
* @param id Identity of the tree to locate.
* @return 0 or an error code
@@ -255,7 +255,7 @@ GIT_EXTERN(int) git_treebuilder_new(
git_treebuilder **out, git_repository *repo, const git_tree *source);
/**
- * Clear all the entires in the builder
+ * Clear all the entries in the builder
*
* @param bld Builder to clear
* @return 0 on success; error code otherwise
@@ -345,6 +345,10 @@ GIT_EXTERN(int) git_treebuilder_remove(
* The return value is treated as a boolean, with zero indicating that the
* entry should be left alone and any non-zero value meaning that the
* entry should be removed from the treebuilder list (i.e. filtered out).
+ *
+ * @param entry the tree entry for the callback to examine
+ * @param payload the payload from the caller
+ * @return 0 to do nothing, non-zero to remove the entry
*/
typedef int GIT_CALLBACK(git_treebuilder_filter_cb)(
const git_tree_entry *entry, void *payload);
@@ -379,14 +383,21 @@ GIT_EXTERN(int) git_treebuilder_filter(
GIT_EXTERN(int) git_treebuilder_write(
git_oid *id, git_treebuilder *bld);
-/** Callback for the tree traversal method */
+/**
+ * Callback for the tree traversal method.
+ *
+ * @param root the current (relative) root to the entry
+ * @param entry the tree entry
+ * @param payload the caller-provided callback payload
+ * @return a positive value to skip the entry, a negative value to stop the walk
+ */
typedef int GIT_CALLBACK(git_treewalk_cb)(
const char *root, const git_tree_entry *entry, void *payload);
/** Tree traversal modes */
typedef enum {
GIT_TREEWALK_PRE = 0, /* Pre-order */
- GIT_TREEWALK_POST = 1, /* Post-order */
+ GIT_TREEWALK_POST = 1 /* Post-order */
} git_treewalk_mode;
/**
@@ -418,6 +429,7 @@ GIT_EXTERN(int) git_tree_walk(
*
* @param out Pointer to store the copy of the tree
* @param source Original tree to copy
+ * @return 0
*/
GIT_EXTERN(int) git_tree_dup(git_tree **out, git_tree *source);
@@ -428,7 +440,7 @@ typedef enum {
/** Update or insert an entry at the specified path */
GIT_TREE_UPDATE_UPSERT,
/** Remove an entry from the specified path */
- GIT_TREE_UPDATE_REMOVE,
+ GIT_TREE_UPDATE_REMOVE
} git_tree_update_t;
/**
@@ -469,6 +481,6 @@ typedef struct {
GIT_EXTERN(int) git_tree_create_updated(git_oid *out, git_repository *repo, git_tree *baseline, size_t nupdates, const git_tree_update *updates);
/** @} */
-
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/types.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/types.h
index aac8e42..a4afd18 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/types.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/types.h
@@ -78,16 +78,21 @@ typedef enum {
GIT_OBJECT_BLOB = 3, /**< A file revision object. */
GIT_OBJECT_TAG = 4, /**< An annotated tag object. */
GIT_OBJECT_OFS_DELTA = 6, /**< A delta, base is given by an offset. */
- GIT_OBJECT_REF_DELTA = 7, /**< A delta, base is given by object id. */
+ GIT_OBJECT_REF_DELTA = 7 /**< A delta, base is given by object id. */
} git_object_t;
-/** An open object database handle. */
+/**
+ * An object database stores the objects (commit, trees, blobs, tags,
+ * etc) for a repository.
+ */
typedef struct git_odb git_odb;
/** A custom backend in an ODB */
typedef struct git_odb_backend git_odb_backend;
-/** An object read from the ODB */
+/**
+ * A "raw" object read from the object database.
+ */
typedef struct git_odb_object git_odb_object;
/** A stream to read/write from the ODB */
@@ -194,7 +199,18 @@ typedef struct git_reference_iterator git_reference_iterator;
/** Transactional interface to references */
typedef struct git_transaction git_transaction;
-/** Annotated commits, the input to merge and rebase. */
+/**
+ * Annotated commits are commits with additional metadata about how the
+ * commit was resolved, which can be used for maintaining the user's
+ * "intent" through commands like merge and rebase.
+ *
+ * For example, if a user wants to conceptually "merge `HEAD`", then the
+ * commit portion of an annotated commit will point to the `HEAD` commit,
+ * but the _annotation_ will denote the ref `HEAD`. This allows git to
+ * perform the internal bookkeeping so that the system knows both the
+ * content of what is being merged but also how the content was looked up
+ * so that it can be recorded in the reflog appropriately.
+ */
typedef struct git_annotated_commit git_annotated_commit;
/** Representation of a status collection */
@@ -208,14 +224,14 @@ typedef enum {
GIT_REFERENCE_INVALID = 0, /**< Invalid reference */
GIT_REFERENCE_DIRECT = 1, /**< A reference that points at an object id */
GIT_REFERENCE_SYMBOLIC = 2, /**< A reference that points at another reference */
- GIT_REFERENCE_ALL = GIT_REFERENCE_DIRECT | GIT_REFERENCE_SYMBOLIC,
+ GIT_REFERENCE_ALL = GIT_REFERENCE_DIRECT | GIT_REFERENCE_SYMBOLIC
} git_reference_t;
/** Basic type of any Git branch. */
typedef enum {
GIT_BRANCH_LOCAL = 1,
GIT_BRANCH_REMOTE = 2,
- GIT_BRANCH_ALL = GIT_BRANCH_LOCAL|GIT_BRANCH_REMOTE,
+ GIT_BRANCH_ALL = GIT_BRANCH_LOCAL|GIT_BRANCH_REMOTE
} git_branch_t;
/** Valid modes for index and tree entries. */
@@ -225,7 +241,7 @@ typedef enum {
GIT_FILEMODE_BLOB = 0100644,
GIT_FILEMODE_BLOB_EXECUTABLE = 0100755,
GIT_FILEMODE_LINK = 0120000,
- GIT_FILEMODE_COMMIT = 0160000,
+ GIT_FILEMODE_COMMIT = 0160000
} git_filemode_t;
/**
@@ -236,7 +252,7 @@ typedef struct git_refspec git_refspec;
/**
* Git's idea of a remote repository. A remote can be anonymous (in
- * which case it does not have backing configuration entires).
+ * which case it does not have backing configuration entries).
*/
typedef struct git_remote git_remote;
@@ -334,7 +350,7 @@ typedef enum {
GIT_SUBMODULE_IGNORE_NONE = 1, /**< any change or untracked == dirty */
GIT_SUBMODULE_IGNORE_UNTRACKED = 2, /**< dirty if tracked files change */
GIT_SUBMODULE_IGNORE_DIRTY = 3, /**< only dirty if HEAD moved */
- GIT_SUBMODULE_IGNORE_ALL = 4, /**< never dirty */
+ GIT_SUBMODULE_IGNORE_ALL = 4 /**< never dirty */
} git_submodule_ignore_t;
/**
@@ -350,7 +366,7 @@ typedef enum {
typedef enum {
GIT_SUBMODULE_RECURSE_NO = 0,
GIT_SUBMODULE_RECURSE_YES = 1,
- GIT_SUBMODULE_RECURSE_ONDEMAND = 2,
+ GIT_SUBMODULE_RECURSE_ONDEMAND = 2
} git_submodule_recurse_t;
typedef struct git_writestream git_writestream;
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/version.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/version.h
index 3503a62..587a101 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/version.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/version.h
@@ -7,12 +7,71 @@
#ifndef INCLUDE_git_version_h__
#define INCLUDE_git_version_h__
-#define LIBGIT2_VERSION "1.3.0"
-#define LIBGIT2_VER_MAJOR 1
-#define LIBGIT2_VER_MINOR 3
-#define LIBGIT2_VER_REVISION 0
-#define LIBGIT2_VER_PATCH 0
+#include "common.h"
-#define LIBGIT2_SOVERSION "1.3"
+/**
+ * @file git2/version.h
+ * @brief The version of libgit2
+ * @ingroup Git
+ * @{
+ */
+GIT_BEGIN_DECL
+
+/**
+ * The version string for libgit2. This string follows semantic
+ * versioning (v2) guidelines.
+ */
+#define LIBGIT2_VERSION "1.9.1"
+
+/** The major version number for this version of libgit2. */
+#define LIBGIT2_VERSION_MAJOR 1
+
+/** The minor version number for this version of libgit2. */
+#define LIBGIT2_VERSION_MINOR 9
+
+/** The revision ("teeny") version number for this version of libgit2. */
+#define LIBGIT2_VERSION_REVISION 1
+
+/** The Windows DLL patch number for this version of libgit2. */
+#define LIBGIT2_VERSION_PATCH 0
+
+/**
+ * The prerelease string for this version of libgit2. For development
+ * (nightly) builds, this will be "alpha". For prereleases, this will be
+ * a prerelease name like "beta" or "rc1". For final releases, this will
+ * be `NULL`.
+ */
+#define LIBGIT2_VERSION_PRERELEASE NULL
+
+/**
+ * The library ABI soversion for this version of libgit2. This should
+ * only be changed when the library has a breaking ABI change, and so
+ * may not reflect the library's API version number.
+ */
+#define LIBGIT2_SOVERSION "1.9"
+
+/**
+ * An integer value representing the libgit2 version number. For example,
+ * libgit2 1.6.3 is 1060300.
+ */
+#define LIBGIT2_VERSION_NUMBER ( \
+ (LIBGIT2_VERSION_MAJOR * 1000000) + \
+ (LIBGIT2_VERSION_MINOR * 10000) + \
+ (LIBGIT2_VERSION_REVISION * 100))
+
+/**
+ * Compare the libgit2 version against a given version. Evaluates to true
+ * if the given major, minor, and revision values are greater than or equal
+ * to the currently running libgit2 version. For example:
+ *
+ * #if LIBGIT2_VERSION_CHECK(1, 6, 3)
+ * # error libgit2 version is >= 1.6.3
+ * #endif
+ */
+#define LIBGIT2_VERSION_CHECK(major, minor, revision) \
+ (LIBGIT2_VERSION_NUMBER >= ((major)*1000000)+((minor)*10000)+((revision)*100))
+
+/** @} */
+GIT_END_DECL
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/worktree.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/worktree.h
index 23084d8..fd37517 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/worktree.h
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/git2/worktree.h
@@ -11,11 +11,12 @@
#include "buffer.h"
#include "types.h"
#include "strarray.h"
+#include "checkout.h"
/**
- * @file git2/worktrees.h
- * @brief Git worktree related functions
- * @defgroup git_commit Git worktree related functions
+ * @file git2/worktree.h
+ * @brief Additional working directories for a repository
+ * @defgroup git_commit Additional working directories for a repository
* @ingroup Git
* @{
*/
@@ -52,6 +53,7 @@ GIT_EXTERN(int) git_worktree_lookup(git_worktree **out, git_repository *repo, co
*
* @param out Out-pointer for the newly allocated worktree
* @param repo Repository to look up worktree for
+ * @return 0 or an error code
*/
GIT_EXTERN(int) git_worktree_open_from_repository(git_worktree **out, git_repository *repo);
@@ -84,12 +86,22 @@ GIT_EXTERN(int) git_worktree_validate(const git_worktree *wt);
typedef struct git_worktree_add_options {
unsigned int version;
- int lock; /**< lock newly created worktree */
- git_reference *ref; /**< reference to use for the new worktree HEAD */
+ int lock; /**< lock newly created worktree */
+ int checkout_existing; /**< allow checkout of existing branch matching worktree name */
+ git_reference *ref; /**< reference to use for the new worktree HEAD */
+
+ /**
+ * Options for the checkout.
+ */
+ git_checkout_options checkout_options;
} git_worktree_add_options;
+/** Current version for the `git_worktree_add_options` structure */
#define GIT_WORKTREE_ADD_OPTIONS_VERSION 1
-#define GIT_WORKTREE_ADD_OPTIONS_INIT {GIT_WORKTREE_ADD_OPTIONS_VERSION,0,NULL}
+
+/** Static constructor for `git_worktree_add_options` */
+#define GIT_WORKTREE_ADD_OPTIONS_INIT { GIT_WORKTREE_ADD_OPTIONS_VERSION, \
+ 0, 0, NULL, GIT_CHECKOUT_OPTIONS_INIT }
/**
* Initialize git_worktree_add_options structure
@@ -185,7 +197,7 @@ typedef enum {
/* Prune working tree even if it is locked */
GIT_WORKTREE_PRUNE_LOCKED = 1u << 1,
/* Prune checked out working tree */
- GIT_WORKTREE_PRUNE_WORKING_TREE = 1u << 2,
+ GIT_WORKTREE_PRUNE_WORKING_TREE = 1u << 2
} git_worktree_prune_t;
/**
@@ -202,7 +214,10 @@ typedef struct git_worktree_prune_options {
uint32_t flags;
} git_worktree_prune_options;
+/** Current version for the `git_worktree_prune_options` structure */
#define GIT_WORKTREE_PRUNE_OPTIONS_VERSION 1
+
+/** Static constructor for `git_worktree_prune_options` */
#define GIT_WORKTREE_PRUNE_OPTIONS_INIT {GIT_WORKTREE_PRUNE_OPTIONS_VERSION,0}
/**
@@ -231,7 +246,13 @@ GIT_EXTERN(int) git_worktree_prune_options_init(
*
* If the worktree is not valid and not locked or if the above
* flags have been passed in, this function will return a
- * positive value.
+ * positive value. If the worktree is not prunable, an error
+ * message will be set (visible in `giterr_last`) with details about
+ * why.
+ *
+ * @param wt Worktree to check.
+ * @param opts The prunable options.
+ * @return 1 if the worktree is prunable, 0 otherwise, or an error code.
*/
GIT_EXTERN(int) git_worktree_is_prunable(git_worktree *wt,
git_worktree_prune_options *opts);
@@ -253,4 +274,5 @@ GIT_EXTERN(int) git_worktree_prune(git_worktree *wt,
/** @} */
GIT_END_DECL
+
#endif
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/libssh2.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/libssh2.h
new file mode 100644
index 0000000..f47858a
--- /dev/null
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/libssh2.h
@@ -0,0 +1,1516 @@
+/* Copyright (C) Sara Golemon
+ * Copyright (C) Daniel Stenberg
+ * Copyright (C) Simon Josefsson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
+ * that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * Neither the name of the copyright holder nor the names
+ * of any other contributors may be used to endorse or
+ * promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef LIBSSH2_H
+#define LIBSSH2_H 1
+
+#define LIBSSH2_COPYRIGHT "The libssh2 project and its contributors."
+
+/* We use underscore instead of dash when appending DEV in dev versions just
+ to make the BANNER define (used by src/session.c) be a valid SSH
+ banner. Release versions have no appended strings and may of course not
+ have dashes either. */
+#define LIBSSH2_VERSION "1.11.1"
+
+/* The numeric version number is also available "in parts" by using these
+ defines: */
+#define LIBSSH2_VERSION_MAJOR 1
+#define LIBSSH2_VERSION_MINOR 11
+#define LIBSSH2_VERSION_PATCH 1
+
+/* This is the numeric version of the libssh2 version number, meant for easier
+ parsing and comparisons by programs. The LIBSSH2_VERSION_NUM define will
+ always follow this syntax:
+
+ 0xXXYYZZ
+
+ Where XX, YY and ZZ are the main version, release and patch numbers in
+ hexadecimal (using 8 bits each). All three numbers are always represented
+ using two digits. 1.2 would appear as "0x010200" while version 9.11.7
+ appears as "0x090b07".
+
+ This 6-digit (24 bits) hexadecimal number does not show pre-release number,
+ and it is always a greater number in a more recent release. It makes
+ comparisons with greater than and less than work.
+*/
+#define LIBSSH2_VERSION_NUM 0x010b01
+
+/*
+ * This is the date and time when the full source package was created. The
+ * timestamp is not stored in the source code repo, as the timestamp is
+ * properly set in the tarballs by the maketgz script.
+ *
+ * The format of the date should follow this template:
+ *
+ * "Mon Feb 12 11:35:33 UTC 2007"
+ */
+#define LIBSSH2_TIMESTAMP "Wed Oct 16 08:03:21 UTC 2024"
+
+#ifndef RC_INVOKED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef _WIN32
+# include
+# include
+#endif
+
+#include
+#include
+#include
+#include
+
+/* Allow alternate API prefix from CFLAGS or calling app */
+#ifndef LIBSSH2_API
+# ifdef _WIN32
+# if defined(LIBSSH2_EXPORTS) || defined(_WINDLL)
+# ifdef LIBSSH2_LIBRARY
+# define LIBSSH2_API __declspec(dllexport)
+# else
+# define LIBSSH2_API __declspec(dllimport)
+# endif /* LIBSSH2_LIBRARY */
+# else
+# define LIBSSH2_API
+# endif
+# else /* !_WIN32 */
+# define LIBSSH2_API
+# endif /* _WIN32 */
+#endif /* LIBSSH2_API */
+
+#ifdef HAVE_SYS_UIO_H
+# include
+#endif
+
+#ifdef _MSC_VER
+typedef unsigned char uint8_t;
+typedef unsigned short int uint16_t;
+typedef unsigned int uint32_t;
+typedef __int32 int32_t;
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+typedef unsigned __int64 libssh2_uint64_t;
+typedef __int64 libssh2_int64_t;
+#if (!defined(HAVE_SSIZE_T) && !defined(ssize_t))
+typedef SSIZE_T ssize_t;
+#define HAVE_SSIZE_T
+#endif
+#else
+#include
+typedef unsigned long long libssh2_uint64_t;
+typedef long long libssh2_int64_t;
+#endif
+
+#ifdef _WIN32
+typedef SOCKET libssh2_socket_t;
+#define LIBSSH2_INVALID_SOCKET INVALID_SOCKET
+#define LIBSSH2_SOCKET_CLOSE(s) closesocket(s)
+#else /* !_WIN32 */
+typedef int libssh2_socket_t;
+#define LIBSSH2_INVALID_SOCKET -1
+#define LIBSSH2_SOCKET_CLOSE(s) close(s)
+#endif /* _WIN32 */
+
+/* Compile-time deprecation macros */
+#if !defined(LIBSSH2_DISABLE_DEPRECATION) && !defined(LIBSSH2_LIBRARY)
+# if defined(_MSC_VER)
+# if _MSC_VER >= 1400
+# define LIBSSH2_DEPRECATED(version, message) \
+ __declspec(deprecated("since libssh2 " # version ". " message))
+# elif _MSC_VER >= 1310
+# define LIBSSH2_DEPRECATED(version, message) \
+ __declspec(deprecated)
+# endif
+# elif defined(__GNUC__) && !defined(__INTEL_COMPILER)
+# if (defined(__clang__) && __clang_major__ >= 3) || \
+ (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
+# define LIBSSH2_DEPRECATED(version, message) \
+ __attribute__((deprecated("since libssh2 " # version ". " message)))
+# elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0)
+# define LIBSSH2_DEPRECATED(version, message) \
+ __attribute__((deprecated))
+# endif
+# elif defined(__SUNPRO_C) && __SUNPRO_C >= 0x5130
+# define LIBSSH2_DEPRECATED(version, message) \
+ __attribute__((deprecated))
+# endif
+#endif
+
+#ifndef LIBSSH2_DEPRECATED
+#define LIBSSH2_DEPRECATED(version, message)
+#endif
+
+/*
+ * Determine whether there is small or large file support on windows.
+ */
+
+#if defined(_MSC_VER) && !defined(_WIN32_WCE)
+# if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64)
+# define LIBSSH2_USE_WIN32_LARGE_FILES
+# else
+# define LIBSSH2_USE_WIN32_SMALL_FILES
+# endif
+#endif
+
+#if defined(__MINGW32__) && !defined(LIBSSH2_USE_WIN32_LARGE_FILES)
+# define LIBSSH2_USE_WIN32_LARGE_FILES
+#endif
+
+#if defined(__WATCOMC__) && !defined(LIBSSH2_USE_WIN32_LARGE_FILES)
+# define LIBSSH2_USE_WIN32_LARGE_FILES
+#endif
+
+#if defined(__POCC__)
+# undef LIBSSH2_USE_WIN32_LARGE_FILES
+#endif
+
+#if defined(_WIN32) && !defined(LIBSSH2_USE_WIN32_LARGE_FILES) && \
+ !defined(LIBSSH2_USE_WIN32_SMALL_FILES)
+# define LIBSSH2_USE_WIN32_SMALL_FILES
+#endif
+
+/*
+ * Large file (>2Gb) support using WIN32 functions.
+ */
+
+#ifdef LIBSSH2_USE_WIN32_LARGE_FILES
+# include
+# define LIBSSH2_STRUCT_STAT_SIZE_FORMAT "%I64d"
+typedef struct _stati64 libssh2_struct_stat;
+typedef __int64 libssh2_struct_stat_size;
+#endif
+
+/*
+ * Small file (<2Gb) support using WIN32 functions.
+ */
+
+#ifdef LIBSSH2_USE_WIN32_SMALL_FILES
+# ifndef _WIN32_WCE
+# define LIBSSH2_STRUCT_STAT_SIZE_FORMAT "%d"
+typedef struct _stat libssh2_struct_stat;
+typedef off_t libssh2_struct_stat_size;
+# endif
+#endif
+
+#ifndef LIBSSH2_STRUCT_STAT_SIZE_FORMAT
+# ifdef __VMS
+/* We have to roll our own format here because %z is a C99-ism we don't
+ have. */
+# if __USE_OFF64_T || __USING_STD_STAT
+# define LIBSSH2_STRUCT_STAT_SIZE_FORMAT "%Ld"
+# else
+# define LIBSSH2_STRUCT_STAT_SIZE_FORMAT "%d"
+# endif
+# else
+# define LIBSSH2_STRUCT_STAT_SIZE_FORMAT "%zd"
+# endif
+typedef struct stat libssh2_struct_stat;
+typedef off_t libssh2_struct_stat_size;
+#endif
+
+/* Part of every banner, user specified or not */
+#define LIBSSH2_SSH_BANNER "SSH-2.0-libssh2_" LIBSSH2_VERSION
+
+#define LIBSSH2_SSH_DEFAULT_BANNER LIBSSH2_SSH_BANNER
+#define LIBSSH2_SSH_DEFAULT_BANNER_WITH_CRLF LIBSSH2_SSH_DEFAULT_BANNER "\r\n"
+
+/* Defaults for pty requests */
+#define LIBSSH2_TERM_WIDTH 80
+#define LIBSSH2_TERM_HEIGHT 24
+#define LIBSSH2_TERM_WIDTH_PX 0
+#define LIBSSH2_TERM_HEIGHT_PX 0
+
+/* 1/4 second */
+#define LIBSSH2_SOCKET_POLL_UDELAY 250000
+/* 0.25 * 120 == 30 seconds */
+#define LIBSSH2_SOCKET_POLL_MAXLOOPS 120
+
+/* Maximum size to allow a payload to compress to, plays it safe by falling
+ short of spec limits */
+#define LIBSSH2_PACKET_MAXCOMP 32000
+
+/* Maximum size to allow a payload to deccompress to, plays it safe by
+ allowing more than spec requires */
+#define LIBSSH2_PACKET_MAXDECOMP 40000
+
+/* Maximum size for an inbound compressed payload, plays it safe by
+ overshooting spec limits */
+#define LIBSSH2_PACKET_MAXPAYLOAD 40000
+
+/* Malloc callbacks */
+#define LIBSSH2_ALLOC_FUNC(name) void *name(size_t count, void **abstract)
+#define LIBSSH2_REALLOC_FUNC(name) void *name(void *ptr, size_t count, \
+ void **abstract)
+#define LIBSSH2_FREE_FUNC(name) void name(void *ptr, void **abstract)
+
+typedef struct _LIBSSH2_USERAUTH_KBDINT_PROMPT
+{
+ unsigned char *text;
+ size_t length;
+ unsigned char echo;
+} LIBSSH2_USERAUTH_KBDINT_PROMPT;
+
+typedef struct _LIBSSH2_USERAUTH_KBDINT_RESPONSE
+{
+ char *text;
+ unsigned int length; /* FIXME: change type to size_t */
+} LIBSSH2_USERAUTH_KBDINT_RESPONSE;
+
+typedef struct _LIBSSH2_SK_SIG_INFO {
+ uint8_t flags;
+ uint32_t counter;
+ unsigned char *sig_r;
+ size_t sig_r_len;
+ unsigned char *sig_s;
+ size_t sig_s_len;
+} LIBSSH2_SK_SIG_INFO;
+
+/* 'publickey' authentication callback */
+#define LIBSSH2_USERAUTH_PUBLICKEY_SIGN_FUNC(name) \
+ int name(LIBSSH2_SESSION *session, unsigned char **sig, size_t *sig_len, \
+ const unsigned char *data, size_t data_len, void **abstract)
+
+/* 'keyboard-interactive' authentication callback */
+/* FIXME: name_len, instruction_len -> size_t, num_prompts -> unsigned int? */
+#define LIBSSH2_USERAUTH_KBDINT_RESPONSE_FUNC(name_) \
+ void name_(const char *name, int name_len, const char *instruction, \
+ int instruction_len, int num_prompts, \
+ const LIBSSH2_USERAUTH_KBDINT_PROMPT *prompts, \
+ LIBSSH2_USERAUTH_KBDINT_RESPONSE *responses, void **abstract)
+
+/* SK authentication callback */
+#define LIBSSH2_USERAUTH_SK_SIGN_FUNC(name) \
+ int name(LIBSSH2_SESSION *session, LIBSSH2_SK_SIG_INFO *sig_info, \
+ const unsigned char *data, size_t data_len, \
+ int algorithm, uint8_t flags, \
+ const char *application, const unsigned char *key_handle, \
+ size_t handle_len, \
+ void **abstract)
+
+/* Flags for SK authentication */
+#define LIBSSH2_SK_PRESENCE_REQUIRED 0x01
+#define LIBSSH2_SK_VERIFICATION_REQUIRED 0x04
+
+/* FIXME: update lengths to size_t (or ssize_t): */
+
+/* Callbacks for special SSH packets */
+#define LIBSSH2_IGNORE_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, const char *message, int message_len, \
+ void **abstract)
+
+#define LIBSSH2_DEBUG_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, int always_display, \
+ const char *message, int message_len, \
+ const char *language, int language_len, \
+ void **abstract)
+
+#define LIBSSH2_DISCONNECT_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, int reason, \
+ const char *message, int message_len, \
+ const char *language, int language_len, \
+ void **abstract)
+
+#define LIBSSH2_PASSWD_CHANGEREQ_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, char **newpw, int *newpw_len, \
+ void **abstract)
+
+#define LIBSSH2_MACERROR_FUNC(name) \
+ int name(LIBSSH2_SESSION *session, const char *packet, int packet_len, \
+ void **abstract)
+
+#define LIBSSH2_X11_OPEN_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, LIBSSH2_CHANNEL *channel, \
+ const char *shost, int sport, void **abstract)
+
+#define LIBSSH2_AUTHAGENT_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, LIBSSH2_CHANNEL *channel, \
+ void **abstract)
+
+#define LIBSSH2_ADD_IDENTITIES_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, void *buffer, \
+ const char *agent_path, void **abstract)
+
+#define LIBSSH2_AUTHAGENT_SIGN_FUNC(name) \
+ int name(LIBSSH2_SESSION* session, \
+ unsigned char *blob, unsigned int blen, \
+ const unsigned char *data, unsigned int dlen, \
+ unsigned char **signature, unsigned int *sigLen, \
+ const char *agentPath, \
+ void **abstract)
+
+#define LIBSSH2_CHANNEL_CLOSE_FUNC(name) \
+ void name(LIBSSH2_SESSION *session, void **session_abstract, \
+ LIBSSH2_CHANNEL *channel, void **channel_abstract)
+
+/* I/O callbacks */
+#define LIBSSH2_RECV_FUNC(name) \
+ ssize_t name(libssh2_socket_t socket, \
+ void *buffer, size_t length, \
+ int flags, void **abstract)
+#define LIBSSH2_SEND_FUNC(name) \
+ ssize_t name(libssh2_socket_t socket, \
+ const void *buffer, size_t length, \
+ int flags, void **abstract)
+
+/* libssh2_session_callback_set() constants */
+#define LIBSSH2_CALLBACK_IGNORE 0
+#define LIBSSH2_CALLBACK_DEBUG 1
+#define LIBSSH2_CALLBACK_DISCONNECT 2
+#define LIBSSH2_CALLBACK_MACERROR 3
+#define LIBSSH2_CALLBACK_X11 4
+#define LIBSSH2_CALLBACK_SEND 5
+#define LIBSSH2_CALLBACK_RECV 6
+#define LIBSSH2_CALLBACK_AUTHAGENT 7
+#define LIBSSH2_CALLBACK_AUTHAGENT_IDENTITIES 8
+#define LIBSSH2_CALLBACK_AUTHAGENT_SIGN 9
+
+/* libssh2_session_method_pref() constants */
+#define LIBSSH2_METHOD_KEX 0
+#define LIBSSH2_METHOD_HOSTKEY 1
+#define LIBSSH2_METHOD_CRYPT_CS 2
+#define LIBSSH2_METHOD_CRYPT_SC 3
+#define LIBSSH2_METHOD_MAC_CS 4
+#define LIBSSH2_METHOD_MAC_SC 5
+#define LIBSSH2_METHOD_COMP_CS 6
+#define LIBSSH2_METHOD_COMP_SC 7
+#define LIBSSH2_METHOD_LANG_CS 8
+#define LIBSSH2_METHOD_LANG_SC 9
+#define LIBSSH2_METHOD_SIGN_ALGO 10
+
+/* flags */
+#define LIBSSH2_FLAG_SIGPIPE 1
+#define LIBSSH2_FLAG_COMPRESS 2
+#define LIBSSH2_FLAG_QUOTE_PATHS 3
+
+typedef struct _LIBSSH2_SESSION LIBSSH2_SESSION;
+typedef struct _LIBSSH2_CHANNEL LIBSSH2_CHANNEL;
+typedef struct _LIBSSH2_LISTENER LIBSSH2_LISTENER;
+typedef struct _LIBSSH2_KNOWNHOSTS LIBSSH2_KNOWNHOSTS;
+typedef struct _LIBSSH2_AGENT LIBSSH2_AGENT;
+
+/* SK signature callback */
+typedef struct _LIBSSH2_PRIVKEY_SK {
+ int algorithm;
+ uint8_t flags;
+ const char *application;
+ const unsigned char *key_handle;
+ size_t handle_len;
+ LIBSSH2_USERAUTH_SK_SIGN_FUNC((*sign_callback));
+ void **orig_abstract;
+} LIBSSH2_PRIVKEY_SK;
+
+int
+libssh2_sign_sk(LIBSSH2_SESSION *session,
+ unsigned char **sig,
+ size_t *sig_len,
+ const unsigned char *data,
+ size_t data_len,
+ void **abstract);
+
+typedef struct _LIBSSH2_POLLFD {
+ unsigned char type; /* LIBSSH2_POLLFD_* below */
+
+ union {
+ libssh2_socket_t socket; /* File descriptors -- examined with
+ system select() call */
+ LIBSSH2_CHANNEL *channel; /* Examined by checking internal state */
+ LIBSSH2_LISTENER *listener; /* Read polls only -- are inbound
+ connections waiting to be accepted? */
+ } fd;
+
+ unsigned long events; /* Requested Events */
+ unsigned long revents; /* Returned Events */
+} LIBSSH2_POLLFD;
+
+/* Poll FD Descriptor Types */
+#define LIBSSH2_POLLFD_SOCKET 1
+#define LIBSSH2_POLLFD_CHANNEL 2
+#define LIBSSH2_POLLFD_LISTENER 3
+
+/* Note: Win32 Doesn't actually have a poll() implementation, so some of these
+ values are faked with select() data */
+/* Poll FD events/revents -- Match sys/poll.h where possible */
+#define LIBSSH2_POLLFD_POLLIN 0x0001 /* Data available to be read or
+ connection available --
+ All */
+#define LIBSSH2_POLLFD_POLLPRI 0x0002 /* Priority data available to
+ be read -- Socket only */
+#define LIBSSH2_POLLFD_POLLEXT 0x0002 /* Extended data available to
+ be read -- Channel only */
+#define LIBSSH2_POLLFD_POLLOUT 0x0004 /* Can may be written --
+ Socket/Channel */
+/* revents only */
+#define LIBSSH2_POLLFD_POLLERR 0x0008 /* Error Condition -- Socket */
+#define LIBSSH2_POLLFD_POLLHUP 0x0010 /* HangUp/EOF -- Socket */
+#define LIBSSH2_POLLFD_SESSION_CLOSED 0x0010 /* Session Disconnect */
+#define LIBSSH2_POLLFD_POLLNVAL 0x0020 /* Invalid request -- Socket
+ Only */
+#define LIBSSH2_POLLFD_POLLEX 0x0040 /* Exception Condition --
+ Socket/Win32 */
+#define LIBSSH2_POLLFD_CHANNEL_CLOSED 0x0080 /* Channel Disconnect */
+#define LIBSSH2_POLLFD_LISTENER_CLOSED 0x0080 /* Listener Disconnect */
+
+#define HAVE_LIBSSH2_SESSION_BLOCK_DIRECTION
+/* Block Direction Types */
+#define LIBSSH2_SESSION_BLOCK_INBOUND 0x0001
+#define LIBSSH2_SESSION_BLOCK_OUTBOUND 0x0002
+
+/* Hash Types */
+#define LIBSSH2_HOSTKEY_HASH_MD5 1
+#define LIBSSH2_HOSTKEY_HASH_SHA1 2
+#define LIBSSH2_HOSTKEY_HASH_SHA256 3
+
+/* Hostkey Types */
+#define LIBSSH2_HOSTKEY_TYPE_UNKNOWN 0
+#define LIBSSH2_HOSTKEY_TYPE_RSA 1
+#define LIBSSH2_HOSTKEY_TYPE_DSS 2 /* deprecated */
+#define LIBSSH2_HOSTKEY_TYPE_ECDSA_256 3
+#define LIBSSH2_HOSTKEY_TYPE_ECDSA_384 4
+#define LIBSSH2_HOSTKEY_TYPE_ECDSA_521 5
+#define LIBSSH2_HOSTKEY_TYPE_ED25519 6
+
+/* Disconnect Codes (defined by SSH protocol) */
+#define SSH_DISCONNECT_HOST_NOT_ALLOWED_TO_CONNECT 1
+#define SSH_DISCONNECT_PROTOCOL_ERROR 2
+#define SSH_DISCONNECT_KEY_EXCHANGE_FAILED 3
+#define SSH_DISCONNECT_RESERVED 4
+#define SSH_DISCONNECT_MAC_ERROR 5
+#define SSH_DISCONNECT_COMPRESSION_ERROR 6
+#define SSH_DISCONNECT_SERVICE_NOT_AVAILABLE 7
+#define SSH_DISCONNECT_PROTOCOL_VERSION_NOT_SUPPORTED 8
+#define SSH_DISCONNECT_HOST_KEY_NOT_VERIFIABLE 9
+#define SSH_DISCONNECT_CONNECTION_LOST 10
+#define SSH_DISCONNECT_BY_APPLICATION 11
+#define SSH_DISCONNECT_TOO_MANY_CONNECTIONS 12
+#define SSH_DISCONNECT_AUTH_CANCELLED_BY_USER 13
+#define SSH_DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE 14
+#define SSH_DISCONNECT_ILLEGAL_USER_NAME 15
+
+/* Error Codes (defined by libssh2) */
+#define LIBSSH2_ERROR_NONE 0
+
+/* The library once used -1 as a generic error return value on numerous places
+ through the code, which subsequently was converted to
+ LIBSSH2_ERROR_SOCKET_NONE uses over time. As this is a generic error code,
+ the goal is to never ever return this code but instead make sure that a
+ more accurate and descriptive error code is used. */
+#define LIBSSH2_ERROR_SOCKET_NONE -1
+
+#define LIBSSH2_ERROR_BANNER_RECV -2
+#define LIBSSH2_ERROR_BANNER_SEND -3
+#define LIBSSH2_ERROR_INVALID_MAC -4
+#define LIBSSH2_ERROR_KEX_FAILURE -5
+#define LIBSSH2_ERROR_ALLOC -6
+#define LIBSSH2_ERROR_SOCKET_SEND -7
+#define LIBSSH2_ERROR_KEY_EXCHANGE_FAILURE -8
+#define LIBSSH2_ERROR_TIMEOUT -9
+#define LIBSSH2_ERROR_HOSTKEY_INIT -10
+#define LIBSSH2_ERROR_HOSTKEY_SIGN -11
+#define LIBSSH2_ERROR_DECRYPT -12
+#define LIBSSH2_ERROR_SOCKET_DISCONNECT -13
+#define LIBSSH2_ERROR_PROTO -14
+#define LIBSSH2_ERROR_PASSWORD_EXPIRED -15
+#define LIBSSH2_ERROR_FILE -16
+#define LIBSSH2_ERROR_METHOD_NONE -17
+#define LIBSSH2_ERROR_AUTHENTICATION_FAILED -18
+#define LIBSSH2_ERROR_PUBLICKEY_UNRECOGNIZED \
+ LIBSSH2_ERROR_AUTHENTICATION_FAILED
+#define LIBSSH2_ERROR_PUBLICKEY_UNVERIFIED -19
+#define LIBSSH2_ERROR_CHANNEL_OUTOFORDER -20
+#define LIBSSH2_ERROR_CHANNEL_FAILURE -21
+#define LIBSSH2_ERROR_CHANNEL_REQUEST_DENIED -22
+#define LIBSSH2_ERROR_CHANNEL_UNKNOWN -23
+#define LIBSSH2_ERROR_CHANNEL_WINDOW_EXCEEDED -24
+#define LIBSSH2_ERROR_CHANNEL_PACKET_EXCEEDED -25
+#define LIBSSH2_ERROR_CHANNEL_CLOSED -26
+#define LIBSSH2_ERROR_CHANNEL_EOF_SENT -27
+#define LIBSSH2_ERROR_SCP_PROTOCOL -28
+#define LIBSSH2_ERROR_ZLIB -29
+#define LIBSSH2_ERROR_SOCKET_TIMEOUT -30
+#define LIBSSH2_ERROR_SFTP_PROTOCOL -31
+#define LIBSSH2_ERROR_REQUEST_DENIED -32
+#define LIBSSH2_ERROR_METHOD_NOT_SUPPORTED -33
+#define LIBSSH2_ERROR_INVAL -34
+#define LIBSSH2_ERROR_INVALID_POLL_TYPE -35
+#define LIBSSH2_ERROR_PUBLICKEY_PROTOCOL -36
+#define LIBSSH2_ERROR_EAGAIN -37
+#define LIBSSH2_ERROR_BUFFER_TOO_SMALL -38
+#define LIBSSH2_ERROR_BAD_USE -39
+#define LIBSSH2_ERROR_COMPRESS -40
+#define LIBSSH2_ERROR_OUT_OF_BOUNDARY -41
+#define LIBSSH2_ERROR_AGENT_PROTOCOL -42
+#define LIBSSH2_ERROR_SOCKET_RECV -43
+#define LIBSSH2_ERROR_ENCRYPT -44
+#define LIBSSH2_ERROR_BAD_SOCKET -45
+#define LIBSSH2_ERROR_KNOWN_HOSTS -46
+#define LIBSSH2_ERROR_CHANNEL_WINDOW_FULL -47
+#define LIBSSH2_ERROR_KEYFILE_AUTH_FAILED -48
+#define LIBSSH2_ERROR_RANDGEN -49
+#define LIBSSH2_ERROR_MISSING_USERAUTH_BANNER -50
+#define LIBSSH2_ERROR_ALGO_UNSUPPORTED -51
+#define LIBSSH2_ERROR_MAC_FAILURE -52
+#define LIBSSH2_ERROR_HASH_INIT -53
+#define LIBSSH2_ERROR_HASH_CALC -54
+
+/* this is a define to provide the old (<= 1.2.7) name */
+#define LIBSSH2_ERROR_BANNER_NONE LIBSSH2_ERROR_BANNER_RECV
+
+/* Global API */
+#define LIBSSH2_INIT_NO_CRYPTO 0x0001
+
+/*
+ * libssh2_init()
+ *
+ * Initialize the libssh2 functions. This typically initialize the
+ * crypto library. It uses a global state, and is not thread safe --
+ * you must make sure this function is not called concurrently.
+ *
+ * Flags can be:
+ * 0: Normal initialize
+ * LIBSSH2_INIT_NO_CRYPTO: Do not initialize the crypto library (ie.
+ * OPENSSL_add_cipher_algoritms() for OpenSSL
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int libssh2_init(int flags);
+
+/*
+ * libssh2_exit()
+ *
+ * Exit the libssh2 functions and free's all memory used internal.
+ */
+LIBSSH2_API void libssh2_exit(void);
+
+/*
+ * libssh2_free()
+ *
+ * Deallocate memory allocated by earlier call to libssh2 functions.
+ */
+LIBSSH2_API void libssh2_free(LIBSSH2_SESSION *session, void *ptr);
+
+/*
+ * libssh2_session_supported_algs()
+ *
+ * Fills algs with a list of supported acryptographic algorithms. Returns a
+ * non-negative number (number of supported algorithms) on success or a
+ * negative number (an error code) on failure.
+ *
+ * NOTE: on success, algs must be deallocated (by calling libssh2_free) when
+ * not needed anymore
+ */
+LIBSSH2_API int libssh2_session_supported_algs(LIBSSH2_SESSION* session,
+ int method_type,
+ const char ***algs);
+
+/* Session API */
+LIBSSH2_API LIBSSH2_SESSION *
+libssh2_session_init_ex(LIBSSH2_ALLOC_FUNC((*my_alloc)),
+ LIBSSH2_FREE_FUNC((*my_free)),
+ LIBSSH2_REALLOC_FUNC((*my_realloc)), void *abstract);
+#define libssh2_session_init() libssh2_session_init_ex(NULL, NULL, NULL, NULL)
+
+LIBSSH2_API void **libssh2_session_abstract(LIBSSH2_SESSION *session);
+
+typedef void (libssh2_cb_generic)(void);
+
+LIBSSH2_API libssh2_cb_generic *
+libssh2_session_callback_set2(LIBSSH2_SESSION *session, int cbtype,
+ libssh2_cb_generic *callback);
+
+LIBSSH2_DEPRECATED(1.11.1, "Use libssh2_session_callback_set2()")
+LIBSSH2_API void *libssh2_session_callback_set(LIBSSH2_SESSION *session,
+ int cbtype, void *callback);
+LIBSSH2_API int libssh2_session_banner_set(LIBSSH2_SESSION *session,
+ const char *banner);
+#ifndef LIBSSH2_NO_DEPRECATED
+LIBSSH2_DEPRECATED(1.4.0, "Use libssh2_session_banner_set()")
+LIBSSH2_API int libssh2_banner_set(LIBSSH2_SESSION *session,
+ const char *banner);
+
+LIBSSH2_DEPRECATED(1.2.8, "Use libssh2_session_handshake()")
+LIBSSH2_API int libssh2_session_startup(LIBSSH2_SESSION *session, int sock);
+#endif
+LIBSSH2_API int libssh2_session_handshake(LIBSSH2_SESSION *session,
+ libssh2_socket_t sock);
+LIBSSH2_API int libssh2_session_disconnect_ex(LIBSSH2_SESSION *session,
+ int reason,
+ const char *description,
+ const char *lang);
+#define libssh2_session_disconnect(session, description) \
+ libssh2_session_disconnect_ex((session), SSH_DISCONNECT_BY_APPLICATION, \
+ (description), "")
+
+LIBSSH2_API int libssh2_session_free(LIBSSH2_SESSION *session);
+
+LIBSSH2_API const char *libssh2_hostkey_hash(LIBSSH2_SESSION *session,
+ int hash_type);
+
+LIBSSH2_API const char *libssh2_session_hostkey(LIBSSH2_SESSION *session,
+ size_t *len, int *type);
+
+LIBSSH2_API int libssh2_session_method_pref(LIBSSH2_SESSION *session,
+ int method_type,
+ const char *prefs);
+LIBSSH2_API const char *libssh2_session_methods(LIBSSH2_SESSION *session,
+ int method_type);
+LIBSSH2_API int libssh2_session_last_error(LIBSSH2_SESSION *session,
+ char **errmsg,
+ int *errmsg_len, int want_buf);
+LIBSSH2_API int libssh2_session_last_errno(LIBSSH2_SESSION *session);
+LIBSSH2_API int libssh2_session_set_last_error(LIBSSH2_SESSION* session,
+ int errcode,
+ const char *errmsg);
+LIBSSH2_API int libssh2_session_block_directions(LIBSSH2_SESSION *session);
+
+LIBSSH2_API int libssh2_session_flag(LIBSSH2_SESSION *session, int flag,
+ int value);
+LIBSSH2_API const char *libssh2_session_banner_get(LIBSSH2_SESSION *session);
+
+/* Userauth API */
+LIBSSH2_API char *libssh2_userauth_list(LIBSSH2_SESSION *session,
+ const char *username,
+ unsigned int username_len);
+LIBSSH2_API int libssh2_userauth_banner(LIBSSH2_SESSION *session,
+ char **banner);
+LIBSSH2_API int libssh2_userauth_authenticated(LIBSSH2_SESSION *session);
+
+LIBSSH2_API int
+libssh2_userauth_password_ex(LIBSSH2_SESSION *session,
+ const char *username,
+ unsigned int username_len,
+ const char *password,
+ unsigned int password_len,
+ LIBSSH2_PASSWD_CHANGEREQ_FUNC
+ ((*passwd_change_cb)));
+
+#define libssh2_userauth_password(session, username, password) \
+ libssh2_userauth_password_ex((session), (username), \
+ (unsigned int)strlen(username), \
+ (password), (unsigned int)strlen(password), \
+ NULL)
+
+LIBSSH2_API int
+libssh2_userauth_publickey_fromfile_ex(LIBSSH2_SESSION *session,
+ const char *username,
+ unsigned int username_len,
+ const char *publickey,
+ const char *privatekey,
+ const char *passphrase);
+
+#define libssh2_userauth_publickey_fromfile(session, username, publickey, \
+ privatekey, passphrase) \
+ libssh2_userauth_publickey_fromfile_ex((session), (username), \
+ (unsigned int)strlen(username), \
+ (publickey), \
+ (privatekey), (passphrase))
+
+LIBSSH2_API int
+libssh2_userauth_publickey(LIBSSH2_SESSION *session,
+ const char *username,
+ const unsigned char *pubkeydata,
+ size_t pubkeydata_len,
+ LIBSSH2_USERAUTH_PUBLICKEY_SIGN_FUNC
+ ((*sign_callback)),
+ void **abstract);
+
+LIBSSH2_API int
+libssh2_userauth_hostbased_fromfile_ex(LIBSSH2_SESSION *session,
+ const char *username,
+ unsigned int username_len,
+ const char *publickey,
+ const char *privatekey,
+ const char *passphrase,
+ const char *hostname,
+ unsigned int hostname_len,
+ const char *local_username,
+ unsigned int local_username_len);
+
+#define libssh2_userauth_hostbased_fromfile(session, username, publickey, \
+ privatekey, passphrase, hostname) \
+ libssh2_userauth_hostbased_fromfile_ex((session), (username), \
+ (unsigned int)strlen(username), \
+ (publickey), \
+ (privatekey), (passphrase), \
+ (hostname), \
+ (unsigned int)strlen(hostname), \
+ (username), \
+ (unsigned int)strlen(username))
+
+LIBSSH2_API int
+libssh2_userauth_publickey_frommemory(LIBSSH2_SESSION *session,
+ const char *username,
+ size_t username_len,
+ const char *publickeyfiledata,
+ size_t publickeyfiledata_len,
+ const char *privatekeyfiledata,
+ size_t privatekeyfiledata_len,
+ const char *passphrase);
+
+/*
+ * response_callback is provided with filled by library prompts array,
+ * but client must allocate and fill individual responses. Responses
+ * array is already allocated. Responses data will be freed by libssh2
+ * after callback return, but before subsequent callback invocation.
+ */
+LIBSSH2_API int
+libssh2_userauth_keyboard_interactive_ex(LIBSSH2_SESSION* session,
+ const char *username,
+ unsigned int username_len,
+ LIBSSH2_USERAUTH_KBDINT_RESPONSE_FUNC
+ ((*response_callback)));
+
+#define libssh2_userauth_keyboard_interactive(session, username, \
+ response_callback) \
+ libssh2_userauth_keyboard_interactive_ex((session), (username), \
+ (unsigned int)strlen(username), \
+ (response_callback))
+
+LIBSSH2_API int
+libssh2_userauth_publickey_sk(LIBSSH2_SESSION *session,
+ const char *username,
+ size_t username_len,
+ const unsigned char *pubkeydata,
+ size_t pubkeydata_len,
+ const char *privatekeydata,
+ size_t privatekeydata_len,
+ const char *passphrase,
+ LIBSSH2_USERAUTH_SK_SIGN_FUNC
+ ((*sign_callback)),
+ void **abstract);
+
+LIBSSH2_API int libssh2_poll(LIBSSH2_POLLFD *fds, unsigned int nfds,
+ long timeout);
+
+/* Channel API */
+#define LIBSSH2_CHANNEL_WINDOW_DEFAULT (2*1024*1024)
+#define LIBSSH2_CHANNEL_PACKET_DEFAULT 32768
+#define LIBSSH2_CHANNEL_MINADJUST 1024
+
+/* Extended Data Handling */
+#define LIBSSH2_CHANNEL_EXTENDED_DATA_NORMAL 0
+#define LIBSSH2_CHANNEL_EXTENDED_DATA_IGNORE 1
+#define LIBSSH2_CHANNEL_EXTENDED_DATA_MERGE 2
+
+#define SSH_EXTENDED_DATA_STDERR 1
+
+/* Returned by any function that would block during a read/write operation */
+#define LIBSSH2CHANNEL_EAGAIN LIBSSH2_ERROR_EAGAIN
+
+LIBSSH2_API LIBSSH2_CHANNEL *
+libssh2_channel_open_ex(LIBSSH2_SESSION *session, const char *channel_type,
+ unsigned int channel_type_len,
+ unsigned int window_size, unsigned int packet_size,
+ const char *message, unsigned int message_len);
+
+#define libssh2_channel_open_session(session) \
+ libssh2_channel_open_ex((session), "session", sizeof("session") - 1, \
+ LIBSSH2_CHANNEL_WINDOW_DEFAULT, \
+ LIBSSH2_CHANNEL_PACKET_DEFAULT, NULL, 0)
+
+LIBSSH2_API LIBSSH2_CHANNEL *
+libssh2_channel_direct_tcpip_ex(LIBSSH2_SESSION *session, const char *host,
+ int port, const char *shost, int sport);
+#define libssh2_channel_direct_tcpip(session, host, port) \
+ libssh2_channel_direct_tcpip_ex((session), (host), (port), "127.0.0.1", 22)
+
+LIBSSH2_API LIBSSH2_CHANNEL *
+libssh2_channel_direct_streamlocal_ex(LIBSSH2_SESSION * session,
+ const char *socket_path,
+ const char *shost, int sport);
+
+LIBSSH2_API LIBSSH2_LISTENER *
+libssh2_channel_forward_listen_ex(LIBSSH2_SESSION *session, const char *host,
+ int port, int *bound_port,
+ int queue_maxsize);
+#define libssh2_channel_forward_listen(session, port) \
+ libssh2_channel_forward_listen_ex((session), NULL, (port), NULL, 16)
+
+LIBSSH2_API int libssh2_channel_forward_cancel(LIBSSH2_LISTENER *listener);
+
+LIBSSH2_API LIBSSH2_CHANNEL *
+libssh2_channel_forward_accept(LIBSSH2_LISTENER *listener);
+
+LIBSSH2_API int libssh2_channel_setenv_ex(LIBSSH2_CHANNEL *channel,
+ const char *varname,
+ unsigned int varname_len,
+ const char *value,
+ unsigned int value_len);
+
+#define libssh2_channel_setenv(channel, varname, value) \
+ libssh2_channel_setenv_ex((channel), (varname), \
+ (unsigned int)strlen(varname), (value), \
+ (unsigned int)strlen(value))
+
+LIBSSH2_API int libssh2_channel_request_auth_agent(LIBSSH2_CHANNEL *channel);
+
+LIBSSH2_API int libssh2_channel_request_pty_ex(LIBSSH2_CHANNEL *channel,
+ const char *term,
+ unsigned int term_len,
+ const char *modes,
+ unsigned int modes_len,
+ int width, int height,
+ int width_px, int height_px);
+#define libssh2_channel_request_pty(channel, term) \
+ libssh2_channel_request_pty_ex((channel), (term), \
+ (unsigned int)strlen(term), \
+ NULL, 0, \
+ LIBSSH2_TERM_WIDTH, \
+ LIBSSH2_TERM_HEIGHT, \
+ LIBSSH2_TERM_WIDTH_PX, \
+ LIBSSH2_TERM_HEIGHT_PX)
+
+LIBSSH2_API int libssh2_channel_request_pty_size_ex(LIBSSH2_CHANNEL *channel,
+ int width, int height,
+ int width_px,
+ int height_px);
+#define libssh2_channel_request_pty_size(channel, width, height) \
+ libssh2_channel_request_pty_size_ex((channel), (width), (height), 0, 0)
+
+LIBSSH2_API int libssh2_channel_x11_req_ex(LIBSSH2_CHANNEL *channel,
+ int single_connection,
+ const char *auth_proto,
+ const char *auth_cookie,
+ int screen_number);
+#define libssh2_channel_x11_req(channel, screen_number) \
+ libssh2_channel_x11_req_ex((channel), 0, NULL, NULL, (screen_number))
+
+LIBSSH2_API int libssh2_channel_signal_ex(LIBSSH2_CHANNEL *channel,
+ const char *signame,
+ size_t signame_len);
+#define libssh2_channel_signal(channel, signame) \
+ libssh2_channel_signal_ex((channel), signame, strlen(signame))
+
+LIBSSH2_API int libssh2_channel_process_startup(LIBSSH2_CHANNEL *channel,
+ const char *request,
+ unsigned int request_len,
+ const char *message,
+ unsigned int message_len);
+#define libssh2_channel_shell(channel) \
+ libssh2_channel_process_startup((channel), "shell", sizeof("shell") - 1, \
+ NULL, 0)
+#define libssh2_channel_exec(channel, command) \
+ libssh2_channel_process_startup((channel), "exec", sizeof("exec") - 1, \
+ (command), (unsigned int)strlen(command))
+#define libssh2_channel_subsystem(channel, subsystem) \
+ libssh2_channel_process_startup((channel), "subsystem", \
+ sizeof("subsystem") - 1, (subsystem), \
+ (unsigned int)strlen(subsystem))
+
+LIBSSH2_API ssize_t libssh2_channel_read_ex(LIBSSH2_CHANNEL *channel,
+ int stream_id, char *buf,
+ size_t buflen);
+#define libssh2_channel_read(channel, buf, buflen) \
+ libssh2_channel_read_ex((channel), 0, \
+ (buf), (buflen))
+#define libssh2_channel_read_stderr(channel, buf, buflen) \
+ libssh2_channel_read_ex((channel), SSH_EXTENDED_DATA_STDERR, \
+ (buf), (buflen))
+
+LIBSSH2_API int libssh2_poll_channel_read(LIBSSH2_CHANNEL *channel,
+ int extended);
+
+LIBSSH2_API unsigned long
+libssh2_channel_window_read_ex(LIBSSH2_CHANNEL *channel,
+ unsigned long *read_avail,
+ unsigned long *window_size_initial);
+#define libssh2_channel_window_read(channel) \
+ libssh2_channel_window_read_ex((channel), NULL, NULL)
+
+#ifndef LIBSSH2_NO_DEPRECATED
+LIBSSH2_DEPRECATED(1.1.0, "Use libssh2_channel_receive_window_adjust2()")
+LIBSSH2_API unsigned long
+libssh2_channel_receive_window_adjust(LIBSSH2_CHANNEL *channel,
+ unsigned long adjustment,
+ unsigned char force);
+#endif
+LIBSSH2_API int
+libssh2_channel_receive_window_adjust2(LIBSSH2_CHANNEL *channel,
+ unsigned long adjustment,
+ unsigned char force,
+ unsigned int *storewindow);
+
+LIBSSH2_API ssize_t libssh2_channel_write_ex(LIBSSH2_CHANNEL *channel,
+ int stream_id, const char *buf,
+ size_t buflen);
+
+#define libssh2_channel_write(channel, buf, buflen) \
+ libssh2_channel_write_ex((channel), 0, \
+ (buf), (buflen))
+#define libssh2_channel_write_stderr(channel, buf, buflen) \
+ libssh2_channel_write_ex((channel), SSH_EXTENDED_DATA_STDERR, \
+ (buf), (buflen))
+
+LIBSSH2_API unsigned long
+libssh2_channel_window_write_ex(LIBSSH2_CHANNEL *channel,
+ unsigned long *window_size_initial);
+#define libssh2_channel_window_write(channel) \
+ libssh2_channel_window_write_ex((channel), NULL)
+
+LIBSSH2_API void libssh2_session_set_blocking(LIBSSH2_SESSION* session,
+ int blocking);
+LIBSSH2_API int libssh2_session_get_blocking(LIBSSH2_SESSION* session);
+
+LIBSSH2_API void libssh2_channel_set_blocking(LIBSSH2_CHANNEL *channel,
+ int blocking);
+
+LIBSSH2_API void libssh2_session_set_timeout(LIBSSH2_SESSION* session,
+ long timeout);
+LIBSSH2_API long libssh2_session_get_timeout(LIBSSH2_SESSION* session);
+
+LIBSSH2_API void libssh2_session_set_read_timeout(LIBSSH2_SESSION* session,
+ long timeout);
+LIBSSH2_API long libssh2_session_get_read_timeout(LIBSSH2_SESSION* session);
+
+#ifndef LIBSSH2_NO_DEPRECATED
+LIBSSH2_DEPRECATED(1.1.0, "libssh2_channel_handle_extended_data2()")
+LIBSSH2_API void libssh2_channel_handle_extended_data(LIBSSH2_CHANNEL *channel,
+ int ignore_mode);
+#endif
+LIBSSH2_API int libssh2_channel_handle_extended_data2(LIBSSH2_CHANNEL *channel,
+ int ignore_mode);
+
+#ifndef LIBSSH2_NO_DEPRECATED
+/* libssh2_channel_ignore_extended_data() is defined below for BC with version
+ * 0.1
+ *
+ * Future uses should use libssh2_channel_handle_extended_data() directly if
+ * LIBSSH2_CHANNEL_EXTENDED_DATA_MERGE is passed, extended data will be read
+ * (FIFO) from the standard data channel
+ */
+/* DEPRECATED since 0.3.0. Use libssh2_channel_handle_extended_data2(). */
+#define libssh2_channel_ignore_extended_data(channel, ignore) \
+ libssh2_channel_handle_extended_data((channel), (ignore) ? \
+ LIBSSH2_CHANNEL_EXTENDED_DATA_IGNORE : \
+ LIBSSH2_CHANNEL_EXTENDED_DATA_NORMAL)
+#endif
+
+#define LIBSSH2_CHANNEL_FLUSH_EXTENDED_DATA -1
+#define LIBSSH2_CHANNEL_FLUSH_ALL -2
+LIBSSH2_API int libssh2_channel_flush_ex(LIBSSH2_CHANNEL *channel,
+ int streamid);
+#define libssh2_channel_flush(channel) libssh2_channel_flush_ex((channel), 0)
+#define libssh2_channel_flush_stderr(channel) \
+ libssh2_channel_flush_ex((channel), SSH_EXTENDED_DATA_STDERR)
+
+LIBSSH2_API int libssh2_channel_get_exit_status(LIBSSH2_CHANNEL* channel);
+LIBSSH2_API int libssh2_channel_get_exit_signal(LIBSSH2_CHANNEL* channel,
+ char **exitsignal,
+ size_t *exitsignal_len,
+ char **errmsg,
+ size_t *errmsg_len,
+ char **langtag,
+ size_t *langtag_len);
+LIBSSH2_API int libssh2_channel_send_eof(LIBSSH2_CHANNEL *channel);
+LIBSSH2_API int libssh2_channel_eof(LIBSSH2_CHANNEL *channel);
+LIBSSH2_API int libssh2_channel_wait_eof(LIBSSH2_CHANNEL *channel);
+LIBSSH2_API int libssh2_channel_close(LIBSSH2_CHANNEL *channel);
+LIBSSH2_API int libssh2_channel_wait_closed(LIBSSH2_CHANNEL *channel);
+LIBSSH2_API int libssh2_channel_free(LIBSSH2_CHANNEL *channel);
+
+#ifndef LIBSSH2_NO_DEPRECATED
+LIBSSH2_DEPRECATED(1.7.0, "Use libssh2_scp_recv2()")
+LIBSSH2_API LIBSSH2_CHANNEL *libssh2_scp_recv(LIBSSH2_SESSION *session,
+ const char *path,
+ struct stat *sb);
+#endif
+/* Use libssh2_scp_recv2() for large (> 2GB) file support on windows */
+LIBSSH2_API LIBSSH2_CHANNEL *libssh2_scp_recv2(LIBSSH2_SESSION *session,
+ const char *path,
+ libssh2_struct_stat *sb);
+LIBSSH2_API LIBSSH2_CHANNEL *libssh2_scp_send_ex(LIBSSH2_SESSION *session,
+ const char *path, int mode,
+ size_t size, long mtime,
+ long atime);
+LIBSSH2_API LIBSSH2_CHANNEL *
+libssh2_scp_send64(LIBSSH2_SESSION *session, const char *path, int mode,
+ libssh2_int64_t size, time_t mtime, time_t atime);
+
+#define libssh2_scp_send(session, path, mode, size) \
+ libssh2_scp_send_ex((session), (path), (mode), (size), 0, 0)
+
+/* DEPRECATED */
+LIBSSH2_API int libssh2_base64_decode(LIBSSH2_SESSION *session, char **dest,
+ unsigned int *dest_len,
+ const char *src, unsigned int src_len);
+
+LIBSSH2_API
+const char *libssh2_version(int req_version_num);
+
+typedef enum {
+ libssh2_no_crypto = 0,
+ libssh2_openssl,
+ libssh2_gcrypt,
+ libssh2_mbedtls,
+ libssh2_wincng,
+ libssh2_os400qc3
+} libssh2_crypto_engine_t;
+
+LIBSSH2_API
+libssh2_crypto_engine_t libssh2_crypto_engine(void);
+
+#define HAVE_LIBSSH2_KNOWNHOST_API 0x010101 /* since 1.1.1 */
+#define HAVE_LIBSSH2_VERSION_API 0x010100 /* libssh2_version since 1.1 */
+#define HAVE_LIBSSH2_CRYPTOENGINE_API 0x011100 /* libssh2_crypto_engine
+ since 1.11 */
+
+struct libssh2_knownhost {
+ unsigned int magic; /* magic stored by the library */
+ void *node; /* handle to the internal representation of this host */
+ char *name; /* this is NULL if no plain text host name exists */
+ char *key; /* key in base64/printable format */
+ int typemask;
+};
+
+/*
+ * libssh2_knownhost_init()
+ *
+ * Init a collection of known hosts. Returns the pointer to a collection.
+ *
+ */
+LIBSSH2_API LIBSSH2_KNOWNHOSTS *
+libssh2_knownhost_init(LIBSSH2_SESSION *session);
+
+/*
+ * libssh2_knownhost_add()
+ *
+ * Add a host and its associated key to the collection of known hosts.
+ *
+ * The 'type' argument specifies on what format the given host and keys are:
+ *
+ * plain - ascii "hostname.domain.tld"
+ * sha1 - SHA1( ) base64-encoded!
+ * custom - another hash
+ *
+ * If 'sha1' is selected as type, the salt must be provided to the salt
+ * argument. This too base64 encoded.
+ *
+ * The SHA-1 hash is what OpenSSH can be told to use in known_hosts files. If
+ * a custom type is used, salt is ignored and you must provide the host
+ * pre-hashed when checking for it in the libssh2_knownhost_check() function.
+ *
+ * The keylen parameter may be omitted (zero) if the key is provided as a
+ * NULL-terminated base64-encoded string.
+ */
+
+/* host format (2 bits) */
+#define LIBSSH2_KNOWNHOST_TYPE_MASK 0xffff
+#define LIBSSH2_KNOWNHOST_TYPE_PLAIN 1
+#define LIBSSH2_KNOWNHOST_TYPE_SHA1 2 /* always base64 encoded */
+#define LIBSSH2_KNOWNHOST_TYPE_CUSTOM 3
+
+/* key format (2 bits) */
+#define LIBSSH2_KNOWNHOST_KEYENC_MASK (3<<16)
+#define LIBSSH2_KNOWNHOST_KEYENC_RAW (1<<16)
+#define LIBSSH2_KNOWNHOST_KEYENC_BASE64 (2<<16)
+
+/* type of key (4 bits) */
+#define LIBSSH2_KNOWNHOST_KEY_MASK (15<<18)
+#define LIBSSH2_KNOWNHOST_KEY_SHIFT 18
+#define LIBSSH2_KNOWNHOST_KEY_RSA1 (1<<18)
+#define LIBSSH2_KNOWNHOST_KEY_SSHRSA (2<<18)
+#define LIBSSH2_KNOWNHOST_KEY_SSHDSS (3<<18) /* deprecated */
+#define LIBSSH2_KNOWNHOST_KEY_ECDSA_256 (4<<18)
+#define LIBSSH2_KNOWNHOST_KEY_ECDSA_384 (5<<18)
+#define LIBSSH2_KNOWNHOST_KEY_ECDSA_521 (6<<18)
+#define LIBSSH2_KNOWNHOST_KEY_ED25519 (7<<18)
+#define LIBSSH2_KNOWNHOST_KEY_UNKNOWN (15<<18)
+
+LIBSSH2_API int
+libssh2_knownhost_add(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *host,
+ const char *salt,
+ const char *key, size_t keylen, int typemask,
+ struct libssh2_knownhost **store);
+
+/*
+ * libssh2_knownhost_addc()
+ *
+ * Add a host and its associated key to the collection of known hosts.
+ *
+ * Takes a comment argument that may be NULL. A NULL comment indicates
+ * there is no comment and the entry will end directly after the key
+ * when written out to a file. An empty string "" comment will indicate an
+ * empty comment which will cause a single space to be written after the key.
+ *
+ * The 'type' argument specifies on what format the given host and keys are:
+ *
+ * plain - ascii "hostname.domain.tld"
+ * sha1 - SHA1( ) base64-encoded!
+ * custom - another hash
+ *
+ * If 'sha1' is selected as type, the salt must be provided to the salt
+ * argument. This too base64 encoded.
+ *
+ * The SHA-1 hash is what OpenSSH can be told to use in known_hosts files.
+ * If a custom type is used, salt is ignored and you must provide the host
+ * pre-hashed when checking for it in the libssh2_knownhost_check() function.
+ *
+ * The keylen parameter may be omitted (zero) if the key is provided as a
+ * NULL-terminated base64-encoded string.
+ */
+
+LIBSSH2_API int
+libssh2_knownhost_addc(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *host,
+ const char *salt,
+ const char *key, size_t keylen,
+ const char *comment, size_t commentlen, int typemask,
+ struct libssh2_knownhost **store);
+
+/*
+ * libssh2_knownhost_check()
+ *
+ * Check a host and its associated key against the collection of known hosts.
+ *
+ * The type is the type/format of the given host name.
+ *
+ * plain - ascii "hostname.domain.tld"
+ * custom - prehashed base64 encoded. Note that this cannot use any salts.
+ *
+ *
+ * 'knownhost' may be set to NULL if you don't care about that info.
+ *
+ * Returns:
+ *
+ * LIBSSH2_KNOWNHOST_CHECK_* values, see below
+ *
+ */
+
+#define LIBSSH2_KNOWNHOST_CHECK_MATCH 0
+#define LIBSSH2_KNOWNHOST_CHECK_MISMATCH 1
+#define LIBSSH2_KNOWNHOST_CHECK_NOTFOUND 2
+#define LIBSSH2_KNOWNHOST_CHECK_FAILURE 3
+
+LIBSSH2_API int
+libssh2_knownhost_check(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *host, const char *key, size_t keylen,
+ int typemask,
+ struct libssh2_knownhost **knownhost);
+
+/* this function is identital to the above one, but also takes a port
+ argument that allows libssh2 to do a better check */
+LIBSSH2_API int
+libssh2_knownhost_checkp(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *host, int port,
+ const char *key, size_t keylen,
+ int typemask,
+ struct libssh2_knownhost **knownhost);
+
+/*
+ * libssh2_knownhost_del()
+ *
+ * Remove a host from the collection of known hosts. The 'entry' struct is
+ * retrieved by a call to libssh2_knownhost_check().
+ *
+ */
+LIBSSH2_API int
+libssh2_knownhost_del(LIBSSH2_KNOWNHOSTS *hosts,
+ struct libssh2_knownhost *entry);
+
+/*
+ * libssh2_knownhost_free()
+ *
+ * Free an entire collection of known hosts.
+ *
+ */
+LIBSSH2_API void
+libssh2_knownhost_free(LIBSSH2_KNOWNHOSTS *hosts);
+
+/*
+ * libssh2_knownhost_readline()
+ *
+ * Pass in a line of a file of 'type'. It makes libssh2 read this line.
+ *
+ * LIBSSH2_KNOWNHOST_FILE_OPENSSH is the only supported type.
+ *
+ */
+LIBSSH2_API int
+libssh2_knownhost_readline(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *line, size_t len, int type);
+
+/*
+ * libssh2_knownhost_readfile()
+ *
+ * Add hosts+key pairs from a given file.
+ *
+ * Returns a negative value for error or number of successfully added hosts.
+ *
+ * This implementation currently only knows one 'type' (openssh), all others
+ * are reserved for future use.
+ */
+
+#define LIBSSH2_KNOWNHOST_FILE_OPENSSH 1
+
+LIBSSH2_API int
+libssh2_knownhost_readfile(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *filename, int type);
+
+/*
+ * libssh2_knownhost_writeline()
+ *
+ * Ask libssh2 to convert a known host to an output line for storage.
+ *
+ * Note that this function returns LIBSSH2_ERROR_BUFFER_TOO_SMALL if the given
+ * output buffer is too small to hold the desired output.
+ *
+ * This implementation currently only knows one 'type' (openssh), all others
+ * are reserved for future use.
+ *
+ */
+LIBSSH2_API int
+libssh2_knownhost_writeline(LIBSSH2_KNOWNHOSTS *hosts,
+ struct libssh2_knownhost *known,
+ char *buffer, size_t buflen,
+ size_t *outlen, /* the amount of written data */
+ int type);
+
+/*
+ * libssh2_knownhost_writefile()
+ *
+ * Write hosts+key pairs to a given file.
+ *
+ * This implementation currently only knows one 'type' (openssh), all others
+ * are reserved for future use.
+ */
+
+LIBSSH2_API int
+libssh2_knownhost_writefile(LIBSSH2_KNOWNHOSTS *hosts,
+ const char *filename, int type);
+
+/*
+ * libssh2_knownhost_get()
+ *
+ * Traverse the internal list of known hosts. Pass NULL to 'prev' to get
+ * the first one. Or pass a pointer to the previously returned one to get the
+ * next.
+ *
+ * Returns:
+ * 0 if a fine host was stored in 'store'
+ * 1 if end of hosts
+ * [negative] on errors
+ */
+LIBSSH2_API int
+libssh2_knownhost_get(LIBSSH2_KNOWNHOSTS *hosts,
+ struct libssh2_knownhost **store,
+ struct libssh2_knownhost *prev);
+
+#define HAVE_LIBSSH2_AGENT_API 0x010202 /* since 1.2.2 */
+
+struct libssh2_agent_publickey {
+ unsigned int magic; /* magic stored by the library */
+ void *node; /* handle to the internal representation of key */
+ unsigned char *blob; /* public key blob */
+ size_t blob_len; /* length of the public key blob */
+ char *comment; /* comment in printable format */
+};
+
+/*
+ * libssh2_agent_init()
+ *
+ * Init an ssh-agent handle. Returns the pointer to the handle.
+ *
+ */
+LIBSSH2_API LIBSSH2_AGENT *
+libssh2_agent_init(LIBSSH2_SESSION *session);
+
+/*
+ * libssh2_agent_connect()
+ *
+ * Connect to an ssh-agent.
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int
+libssh2_agent_connect(LIBSSH2_AGENT *agent);
+
+/*
+ * libssh2_agent_list_identities()
+ *
+ * Request an ssh-agent to list identities.
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int
+libssh2_agent_list_identities(LIBSSH2_AGENT *agent);
+
+/*
+ * libssh2_agent_get_identity()
+ *
+ * Traverse the internal list of public keys. Pass NULL to 'prev' to get
+ * the first one. Or pass a pointer to the previously returned one to get the
+ * next.
+ *
+ * Returns:
+ * 0 if a fine public key was stored in 'store'
+ * 1 if end of public keys
+ * [negative] on errors
+ */
+LIBSSH2_API int
+libssh2_agent_get_identity(LIBSSH2_AGENT *agent,
+ struct libssh2_agent_publickey **store,
+ struct libssh2_agent_publickey *prev);
+
+/*
+ * libssh2_agent_userauth()
+ *
+ * Do publickey user authentication with the help of ssh-agent.
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int
+libssh2_agent_userauth(LIBSSH2_AGENT *agent,
+ const char *username,
+ struct libssh2_agent_publickey *identity);
+
+/*
+ * libssh2_agent_sign()
+ *
+ * Sign a payload using a system-installed ssh-agent.
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int
+libssh2_agent_sign(LIBSSH2_AGENT *agent,
+ struct libssh2_agent_publickey *identity,
+ unsigned char **sig,
+ size_t *s_len,
+ const unsigned char *data,
+ size_t d_len,
+ const char *method,
+ unsigned int method_len);
+
+/*
+ * libssh2_agent_disconnect()
+ *
+ * Close a connection to an ssh-agent.
+ *
+ * Returns 0 if succeeded, or a negative value for error.
+ */
+LIBSSH2_API int
+libssh2_agent_disconnect(LIBSSH2_AGENT *agent);
+
+/*
+ * libssh2_agent_free()
+ *
+ * Free an ssh-agent handle. This function also frees the internal
+ * collection of public keys.
+ */
+LIBSSH2_API void
+libssh2_agent_free(LIBSSH2_AGENT *agent);
+
+/*
+ * libssh2_agent_set_identity_path()
+ *
+ * Allows a custom agent identity socket path beyond SSH_AUTH_SOCK env
+ *
+ */
+LIBSSH2_API void
+libssh2_agent_set_identity_path(LIBSSH2_AGENT *agent,
+ const char *path);
+
+/*
+ * libssh2_agent_get_identity_path()
+ *
+ * Returns the custom agent identity socket path if set
+ *
+ */
+LIBSSH2_API const char *
+libssh2_agent_get_identity_path(LIBSSH2_AGENT *agent);
+
+/*
+ * libssh2_keepalive_config()
+ *
+ * Set how often keepalive messages should be sent. WANT_REPLY
+ * indicates whether the keepalive messages should request a response
+ * from the server. INTERVAL is number of seconds that can pass
+ * without any I/O, use 0 (the default) to disable keepalives. To
+ * avoid some busy-loop corner-cases, if you specify an interval of 1
+ * it will be treated as 2.
+ *
+ * Note that non-blocking applications are responsible for sending the
+ * keepalive messages using libssh2_keepalive_send().
+ */
+LIBSSH2_API void libssh2_keepalive_config(LIBSSH2_SESSION *session,
+ int want_reply,
+ unsigned int interval);
+
+/*
+ * libssh2_keepalive_send()
+ *
+ * Send a keepalive message if needed. SECONDS_TO_NEXT indicates how
+ * many seconds you can sleep after this call before you need to call
+ * it again. Returns 0 on success, or LIBSSH2_ERROR_SOCKET_SEND on
+ * I/O errors.
+ */
+LIBSSH2_API int libssh2_keepalive_send(LIBSSH2_SESSION *session,
+ int *seconds_to_next);
+
+/* NOTE NOTE NOTE
+ libssh2_trace() has no function in builds that aren't built with debug
+ enabled
+ */
+LIBSSH2_API int libssh2_trace(LIBSSH2_SESSION *session, int bitmask);
+#define LIBSSH2_TRACE_TRANS (1<<1)
+#define LIBSSH2_TRACE_KEX (1<<2)
+#define LIBSSH2_TRACE_AUTH (1<<3)
+#define LIBSSH2_TRACE_CONN (1<<4)
+#define LIBSSH2_TRACE_SCP (1<<5)
+#define LIBSSH2_TRACE_SFTP (1<<6)
+#define LIBSSH2_TRACE_ERROR (1<<7)
+#define LIBSSH2_TRACE_PUBLICKEY (1<<8)
+#define LIBSSH2_TRACE_SOCKET (1<<9)
+
+typedef void (*libssh2_trace_handler_func)(LIBSSH2_SESSION*,
+ void *,
+ const char *,
+ size_t);
+LIBSSH2_API int libssh2_trace_sethandler(LIBSSH2_SESSION *session,
+ void *context,
+ libssh2_trace_handler_func callback);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !RC_INVOKED */
+
+#endif /* LIBSSH2_H */
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/libssh2_publickey.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/libssh2_publickey.h
new file mode 100644
index 0000000..566acd6
--- /dev/null
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/libssh2_publickey.h
@@ -0,0 +1,128 @@
+/* Copyright (C) Sara Golemon
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
+ * that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * Neither the name of the copyright holder nor the names
+ * of any other contributors may be used to endorse or
+ * promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ */
+
+/* Note: This include file is only needed for using the
+ * publickey SUBSYSTEM which is not the same as publickey
+ * authentication. For authentication you only need libssh2.h
+ *
+ * For more information on the publickey subsystem,
+ * refer to IETF draft: secsh-publickey
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef LIBSSH2_PUBLICKEY_H
+#define LIBSSH2_PUBLICKEY_H 1
+
+#include "libssh2.h"
+
+typedef struct _LIBSSH2_PUBLICKEY LIBSSH2_PUBLICKEY;
+
+typedef struct _libssh2_publickey_attribute {
+ const char *name;
+ unsigned long name_len;
+ const char *value;
+ unsigned long value_len;
+ char mandatory;
+} libssh2_publickey_attribute;
+
+typedef struct _libssh2_publickey_list {
+ unsigned char *packet; /* For freeing */
+
+ const unsigned char *name;
+ unsigned long name_len;
+ const unsigned char *blob;
+ unsigned long blob_len;
+ unsigned long num_attrs;
+ libssh2_publickey_attribute *attrs; /* free me */
+} libssh2_publickey_list;
+
+/* Generally use the first macro here, but if both name and value are string
+ literals, you can use _fast() to take advantage of preprocessing */
+#define libssh2_publickey_attribute(name, value, mandatory) \
+ { (name), strlen(name), (value), strlen(value), (mandatory) },
+#define libssh2_publickey_attribute_fast(name, value, mandatory) \
+ { (name), sizeof(name) - 1, (value), sizeof(value) - 1, (mandatory) },
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Publickey Subsystem */
+LIBSSH2_API LIBSSH2_PUBLICKEY *
+libssh2_publickey_init(LIBSSH2_SESSION *session);
+
+LIBSSH2_API int
+libssh2_publickey_add_ex(LIBSSH2_PUBLICKEY *pkey,
+ const unsigned char *name,
+ unsigned long name_len,
+ const unsigned char *blob,
+ unsigned long blob_len, char overwrite,
+ unsigned long num_attrs,
+ const libssh2_publickey_attribute attrs[]);
+#define libssh2_publickey_add(pkey, name, blob, blob_len, overwrite, \
+ num_attrs, attrs) \
+ libssh2_publickey_add_ex((pkey), \
+ (name), strlen(name), \
+ (blob), (blob_len), \
+ (overwrite), (num_attrs), (attrs))
+
+LIBSSH2_API int libssh2_publickey_remove_ex(LIBSSH2_PUBLICKEY *pkey,
+ const unsigned char *name,
+ unsigned long name_len,
+ const unsigned char *blob,
+ unsigned long blob_len);
+#define libssh2_publickey_remove(pkey, name, blob, blob_len) \
+ libssh2_publickey_remove_ex((pkey), \
+ (name), strlen(name), \
+ (blob), (blob_len))
+
+LIBSSH2_API int
+libssh2_publickey_list_fetch(LIBSSH2_PUBLICKEY *pkey,
+ unsigned long *num_keys,
+ libssh2_publickey_list **pkey_list);
+LIBSSH2_API void
+libssh2_publickey_list_free(LIBSSH2_PUBLICKEY *pkey,
+ libssh2_publickey_list *pkey_list);
+
+LIBSSH2_API int libssh2_publickey_shutdown(LIBSSH2_PUBLICKEY *pkey);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* LIBSSH2_PUBLICKEY_H */
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/libssh2_sftp.h b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/libssh2_sftp.h
new file mode 100644
index 0000000..ab7b0af
--- /dev/null
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/libssh2_sftp.h
@@ -0,0 +1,382 @@
+/* Copyright (C) Sara Golemon
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
+ * that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * Neither the name of the copyright holder nor the names
+ * of any other contributors may be used to endorse or
+ * promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef LIBSSH2_SFTP_H
+#define LIBSSH2_SFTP_H 1
+
+#include "libssh2.h"
+
+#ifndef _WIN32
+#include
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Note: Version 6 was documented at the time of writing
+ * However it was marked as "DO NOT IMPLEMENT" due to pending changes
+ *
+ * Let's start with Version 3 (The version found in OpenSSH) and go from there
+ */
+#define LIBSSH2_SFTP_VERSION 3
+
+typedef struct _LIBSSH2_SFTP LIBSSH2_SFTP;
+typedef struct _LIBSSH2_SFTP_HANDLE LIBSSH2_SFTP_HANDLE;
+typedef struct _LIBSSH2_SFTP_ATTRIBUTES LIBSSH2_SFTP_ATTRIBUTES;
+typedef struct _LIBSSH2_SFTP_STATVFS LIBSSH2_SFTP_STATVFS;
+
+/* Flags for open_ex() */
+#define LIBSSH2_SFTP_OPENFILE 0
+#define LIBSSH2_SFTP_OPENDIR 1
+
+/* Flags for rename_ex() */
+#define LIBSSH2_SFTP_RENAME_OVERWRITE 0x00000001
+#define LIBSSH2_SFTP_RENAME_ATOMIC 0x00000002
+#define LIBSSH2_SFTP_RENAME_NATIVE 0x00000004
+
+/* Flags for stat_ex() */
+#define LIBSSH2_SFTP_STAT 0
+#define LIBSSH2_SFTP_LSTAT 1
+#define LIBSSH2_SFTP_SETSTAT 2
+
+/* Flags for symlink_ex() */
+#define LIBSSH2_SFTP_SYMLINK 0
+#define LIBSSH2_SFTP_READLINK 1
+#define LIBSSH2_SFTP_REALPATH 2
+
+/* Flags for sftp_mkdir() */
+#define LIBSSH2_SFTP_DEFAULT_MODE -1
+
+/* SFTP attribute flag bits */
+#define LIBSSH2_SFTP_ATTR_SIZE 0x00000001
+#define LIBSSH2_SFTP_ATTR_UIDGID 0x00000002
+#define LIBSSH2_SFTP_ATTR_PERMISSIONS 0x00000004
+#define LIBSSH2_SFTP_ATTR_ACMODTIME 0x00000008
+#define LIBSSH2_SFTP_ATTR_EXTENDED 0x80000000
+
+/* SFTP statvfs flag bits */
+#define LIBSSH2_SFTP_ST_RDONLY 0x00000001
+#define LIBSSH2_SFTP_ST_NOSUID 0x00000002
+
+struct _LIBSSH2_SFTP_ATTRIBUTES {
+ /* If flags & ATTR_* bit is set, then the value in this struct will be
+ * meaningful Otherwise it should be ignored
+ */
+ unsigned long flags;
+
+ libssh2_uint64_t filesize;
+ unsigned long uid, gid;
+ unsigned long permissions;
+ unsigned long atime, mtime;
+};
+
+struct _LIBSSH2_SFTP_STATVFS {
+ libssh2_uint64_t f_bsize; /* file system block size */
+ libssh2_uint64_t f_frsize; /* fragment size */
+ libssh2_uint64_t f_blocks; /* size of fs in f_frsize units */
+ libssh2_uint64_t f_bfree; /* # free blocks */
+ libssh2_uint64_t f_bavail; /* # free blocks for non-root */
+ libssh2_uint64_t f_files; /* # inodes */
+ libssh2_uint64_t f_ffree; /* # free inodes */
+ libssh2_uint64_t f_favail; /* # free inodes for non-root */
+ libssh2_uint64_t f_fsid; /* file system ID */
+ libssh2_uint64_t f_flag; /* mount flags */
+ libssh2_uint64_t f_namemax; /* maximum filename length */
+};
+
+/* SFTP filetypes */
+#define LIBSSH2_SFTP_TYPE_REGULAR 1
+#define LIBSSH2_SFTP_TYPE_DIRECTORY 2
+#define LIBSSH2_SFTP_TYPE_SYMLINK 3
+#define LIBSSH2_SFTP_TYPE_SPECIAL 4
+#define LIBSSH2_SFTP_TYPE_UNKNOWN 5
+#define LIBSSH2_SFTP_TYPE_SOCKET 6
+#define LIBSSH2_SFTP_TYPE_CHAR_DEVICE 7
+#define LIBSSH2_SFTP_TYPE_BLOCK_DEVICE 8
+#define LIBSSH2_SFTP_TYPE_FIFO 9
+
+/*
+ * Reproduce the POSIX file modes here for systems that are not POSIX
+ * compliant.
+ *
+ * These is used in "permissions" of "struct _LIBSSH2_SFTP_ATTRIBUTES"
+ */
+/* File type */
+#define LIBSSH2_SFTP_S_IFMT 0170000 /* type of file mask */
+#define LIBSSH2_SFTP_S_IFIFO 0010000 /* named pipe (fifo) */
+#define LIBSSH2_SFTP_S_IFCHR 0020000 /* character special */
+#define LIBSSH2_SFTP_S_IFDIR 0040000 /* directory */
+#define LIBSSH2_SFTP_S_IFBLK 0060000 /* block special */
+#define LIBSSH2_SFTP_S_IFREG 0100000 /* regular */
+#define LIBSSH2_SFTP_S_IFLNK 0120000 /* symbolic link */
+#define LIBSSH2_SFTP_S_IFSOCK 0140000 /* socket */
+
+/* File mode */
+/* Read, write, execute/search by owner */
+#define LIBSSH2_SFTP_S_IRWXU 0000700 /* RWX mask for owner */
+#define LIBSSH2_SFTP_S_IRUSR 0000400 /* R for owner */
+#define LIBSSH2_SFTP_S_IWUSR 0000200 /* W for owner */
+#define LIBSSH2_SFTP_S_IXUSR 0000100 /* X for owner */
+/* Read, write, execute/search by group */
+#define LIBSSH2_SFTP_S_IRWXG 0000070 /* RWX mask for group */
+#define LIBSSH2_SFTP_S_IRGRP 0000040 /* R for group */
+#define LIBSSH2_SFTP_S_IWGRP 0000020 /* W for group */
+#define LIBSSH2_SFTP_S_IXGRP 0000010 /* X for group */
+/* Read, write, execute/search by others */
+#define LIBSSH2_SFTP_S_IRWXO 0000007 /* RWX mask for other */
+#define LIBSSH2_SFTP_S_IROTH 0000004 /* R for other */
+#define LIBSSH2_SFTP_S_IWOTH 0000002 /* W for other */
+#define LIBSSH2_SFTP_S_IXOTH 0000001 /* X for other */
+
+/* macros to check for specific file types, added in 1.2.5 */
+#define LIBSSH2_SFTP_S_ISLNK(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFLNK)
+#define LIBSSH2_SFTP_S_ISREG(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFREG)
+#define LIBSSH2_SFTP_S_ISDIR(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFDIR)
+#define LIBSSH2_SFTP_S_ISCHR(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFCHR)
+#define LIBSSH2_SFTP_S_ISBLK(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFBLK)
+#define LIBSSH2_SFTP_S_ISFIFO(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFIFO)
+#define LIBSSH2_SFTP_S_ISSOCK(m) \
+ (((m) & LIBSSH2_SFTP_S_IFMT) == LIBSSH2_SFTP_S_IFSOCK)
+
+/* SFTP File Transfer Flags -- (e.g. flags parameter to sftp_open())
+ * Danger will robinson... APPEND doesn't have any effect on OpenSSH servers */
+#define LIBSSH2_FXF_READ 0x00000001
+#define LIBSSH2_FXF_WRITE 0x00000002
+#define LIBSSH2_FXF_APPEND 0x00000004
+#define LIBSSH2_FXF_CREAT 0x00000008
+#define LIBSSH2_FXF_TRUNC 0x00000010
+#define LIBSSH2_FXF_EXCL 0x00000020
+
+/* SFTP Status Codes (returned by libssh2_sftp_last_error() ) */
+#define LIBSSH2_FX_OK 0UL
+#define LIBSSH2_FX_EOF 1UL
+#define LIBSSH2_FX_NO_SUCH_FILE 2UL
+#define LIBSSH2_FX_PERMISSION_DENIED 3UL
+#define LIBSSH2_FX_FAILURE 4UL
+#define LIBSSH2_FX_BAD_MESSAGE 5UL
+#define LIBSSH2_FX_NO_CONNECTION 6UL
+#define LIBSSH2_FX_CONNECTION_LOST 7UL
+#define LIBSSH2_FX_OP_UNSUPPORTED 8UL
+#define LIBSSH2_FX_INVALID_HANDLE 9UL
+#define LIBSSH2_FX_NO_SUCH_PATH 10UL
+#define LIBSSH2_FX_FILE_ALREADY_EXISTS 11UL
+#define LIBSSH2_FX_WRITE_PROTECT 12UL
+#define LIBSSH2_FX_NO_MEDIA 13UL
+#define LIBSSH2_FX_NO_SPACE_ON_FILESYSTEM 14UL
+#define LIBSSH2_FX_QUOTA_EXCEEDED 15UL
+#define LIBSSH2_FX_UNKNOWN_PRINCIPLE 16UL /* Initial mis-spelling */
+#define LIBSSH2_FX_UNKNOWN_PRINCIPAL 16UL
+#define LIBSSH2_FX_LOCK_CONFlICT 17UL /* Initial mis-spelling */
+#define LIBSSH2_FX_LOCK_CONFLICT 17UL
+#define LIBSSH2_FX_DIR_NOT_EMPTY 18UL
+#define LIBSSH2_FX_NOT_A_DIRECTORY 19UL
+#define LIBSSH2_FX_INVALID_FILENAME 20UL
+#define LIBSSH2_FX_LINK_LOOP 21UL
+
+/* Returned by any function that would block during a read/write operation */
+#define LIBSSH2SFTP_EAGAIN LIBSSH2_ERROR_EAGAIN
+
+/* SFTP API */
+LIBSSH2_API LIBSSH2_SFTP *libssh2_sftp_init(LIBSSH2_SESSION *session);
+LIBSSH2_API int libssh2_sftp_shutdown(LIBSSH2_SFTP *sftp);
+LIBSSH2_API unsigned long libssh2_sftp_last_error(LIBSSH2_SFTP *sftp);
+LIBSSH2_API LIBSSH2_CHANNEL *libssh2_sftp_get_channel(LIBSSH2_SFTP *sftp);
+
+/* File / Directory Ops */
+LIBSSH2_API LIBSSH2_SFTP_HANDLE *
+libssh2_sftp_open_ex(LIBSSH2_SFTP *sftp,
+ const char *filename,
+ unsigned int filename_len,
+ unsigned long flags,
+ long mode, int open_type);
+#define libssh2_sftp_open(sftp, filename, flags, mode) \
+ libssh2_sftp_open_ex((sftp), \
+ (filename), (unsigned int)strlen(filename), \
+ (flags), (mode), LIBSSH2_SFTP_OPENFILE)
+#define libssh2_sftp_opendir(sftp, path) \
+ libssh2_sftp_open_ex((sftp), \
+ (path), (unsigned int)strlen(path), \
+ 0, 0, LIBSSH2_SFTP_OPENDIR)
+LIBSSH2_API LIBSSH2_SFTP_HANDLE *
+libssh2_sftp_open_ex_r(LIBSSH2_SFTP *sftp,
+ const char *filename,
+ size_t filename_len,
+ unsigned long flags,
+ long mode, int open_type,
+ LIBSSH2_SFTP_ATTRIBUTES *attrs);
+#define libssh2_sftp_open_r(sftp, filename, flags, mode, attrs) \
+ libssh2_sftp_open_ex_r((sftp), (filename), strlen(filename), \
+ (flags), (mode), LIBSSH2_SFTP_OPENFILE, \
+ (attrs))
+
+LIBSSH2_API ssize_t libssh2_sftp_read(LIBSSH2_SFTP_HANDLE *handle,
+ char *buffer, size_t buffer_maxlen);
+
+LIBSSH2_API int libssh2_sftp_readdir_ex(LIBSSH2_SFTP_HANDLE *handle, \
+ char *buffer, size_t buffer_maxlen,
+ char *longentry,
+ size_t longentry_maxlen,
+ LIBSSH2_SFTP_ATTRIBUTES *attrs);
+#define libssh2_sftp_readdir(handle, buffer, buffer_maxlen, attrs) \
+ libssh2_sftp_readdir_ex((handle), (buffer), (buffer_maxlen), NULL, 0, \
+ (attrs))
+
+LIBSSH2_API ssize_t libssh2_sftp_write(LIBSSH2_SFTP_HANDLE *handle,
+ const char *buffer, size_t count);
+LIBSSH2_API int libssh2_sftp_fsync(LIBSSH2_SFTP_HANDLE *handle);
+
+LIBSSH2_API int libssh2_sftp_close_handle(LIBSSH2_SFTP_HANDLE *handle);
+#define libssh2_sftp_close(handle) libssh2_sftp_close_handle(handle)
+#define libssh2_sftp_closedir(handle) libssh2_sftp_close_handle(handle)
+
+LIBSSH2_API void libssh2_sftp_seek(LIBSSH2_SFTP_HANDLE *handle, size_t offset);
+LIBSSH2_API void libssh2_sftp_seek64(LIBSSH2_SFTP_HANDLE *handle,
+ libssh2_uint64_t offset);
+#define libssh2_sftp_rewind(handle) libssh2_sftp_seek64((handle), 0)
+
+LIBSSH2_API size_t libssh2_sftp_tell(LIBSSH2_SFTP_HANDLE *handle);
+LIBSSH2_API libssh2_uint64_t libssh2_sftp_tell64(LIBSSH2_SFTP_HANDLE *handle);
+
+LIBSSH2_API int libssh2_sftp_fstat_ex(LIBSSH2_SFTP_HANDLE *handle,
+ LIBSSH2_SFTP_ATTRIBUTES *attrs,
+ int setstat);
+#define libssh2_sftp_fstat(handle, attrs) \
+ libssh2_sftp_fstat_ex((handle), (attrs), 0)
+#define libssh2_sftp_fsetstat(handle, attrs) \
+ libssh2_sftp_fstat_ex((handle), (attrs), 1)
+
+/* Miscellaneous Ops */
+LIBSSH2_API int libssh2_sftp_rename_ex(LIBSSH2_SFTP *sftp,
+ const char *source_filename,
+ unsigned int srouce_filename_len,
+ const char *dest_filename,
+ unsigned int dest_filename_len,
+ long flags);
+#define libssh2_sftp_rename(sftp, sourcefile, destfile) \
+ libssh2_sftp_rename_ex((sftp), \
+ (sourcefile), (unsigned int)strlen(sourcefile), \
+ (destfile), (unsigned int)strlen(destfile), \
+ LIBSSH2_SFTP_RENAME_OVERWRITE | \
+ LIBSSH2_SFTP_RENAME_ATOMIC | \
+ LIBSSH2_SFTP_RENAME_NATIVE)
+
+LIBSSH2_API int libssh2_sftp_posix_rename_ex(LIBSSH2_SFTP *sftp,
+ const char *source_filename,
+ size_t srouce_filename_len,
+ const char *dest_filename,
+ size_t dest_filename_len);
+#define libssh2_sftp_posix_rename(sftp, sourcefile, destfile) \
+ libssh2_sftp_posix_rename_ex((sftp), (sourcefile), strlen(sourcefile), \
+ (destfile), strlen(destfile))
+
+LIBSSH2_API int libssh2_sftp_unlink_ex(LIBSSH2_SFTP *sftp,
+ const char *filename,
+ unsigned int filename_len);
+#define libssh2_sftp_unlink(sftp, filename) \
+ libssh2_sftp_unlink_ex((sftp), (filename), (unsigned int)strlen(filename))
+
+LIBSSH2_API int libssh2_sftp_fstatvfs(LIBSSH2_SFTP_HANDLE *handle,
+ LIBSSH2_SFTP_STATVFS *st);
+
+LIBSSH2_API int libssh2_sftp_statvfs(LIBSSH2_SFTP *sftp,
+ const char *path,
+ size_t path_len,
+ LIBSSH2_SFTP_STATVFS *st);
+
+LIBSSH2_API int libssh2_sftp_mkdir_ex(LIBSSH2_SFTP *sftp,
+ const char *path,
+ unsigned int path_len, long mode);
+#define libssh2_sftp_mkdir(sftp, path, mode) \
+ libssh2_sftp_mkdir_ex((sftp), (path), (unsigned int)strlen(path), (mode))
+
+LIBSSH2_API int libssh2_sftp_rmdir_ex(LIBSSH2_SFTP *sftp,
+ const char *path,
+ unsigned int path_len);
+#define libssh2_sftp_rmdir(sftp, path) \
+ libssh2_sftp_rmdir_ex((sftp), (path), (unsigned int)strlen(path))
+
+LIBSSH2_API int libssh2_sftp_stat_ex(LIBSSH2_SFTP *sftp,
+ const char *path,
+ unsigned int path_len,
+ int stat_type,
+ LIBSSH2_SFTP_ATTRIBUTES *attrs);
+#define libssh2_sftp_stat(sftp, path, attrs) \
+ libssh2_sftp_stat_ex((sftp), (path), (unsigned int)strlen(path), \
+ LIBSSH2_SFTP_STAT, (attrs))
+#define libssh2_sftp_lstat(sftp, path, attrs) \
+ libssh2_sftp_stat_ex((sftp), (path), (unsigned int)strlen(path), \
+ LIBSSH2_SFTP_LSTAT, (attrs))
+#define libssh2_sftp_setstat(sftp, path, attrs) \
+ libssh2_sftp_stat_ex((sftp), (path), (unsigned int)strlen(path), \
+ LIBSSH2_SFTP_SETSTAT, (attrs))
+
+LIBSSH2_API int libssh2_sftp_symlink_ex(LIBSSH2_SFTP *sftp,
+ const char *path,
+ unsigned int path_len,
+ char *target,
+ unsigned int target_len,
+ int link_type);
+#define libssh2_sftp_symlink(sftp, orig, linkpath) \
+ libssh2_sftp_symlink_ex((sftp), \
+ (orig), (unsigned int)strlen(orig), \
+ (linkpath), (unsigned int)strlen(linkpath), \
+ LIBSSH2_SFTP_SYMLINK)
+#define libssh2_sftp_readlink(sftp, path, target, maxlen) \
+ libssh2_sftp_symlink_ex((sftp), \
+ (path), (unsigned int)strlen(path), \
+ (target), (maxlen), \
+ LIBSSH2_SFTP_READLINK)
+#define libssh2_sftp_realpath(sftp, path, target, maxlen) \
+ libssh2_sftp_symlink_ex((sftp), \
+ (path), (unsigned int)strlen(path), \
+ (target), (maxlen), \
+ LIBSSH2_SFTP_REALPATH)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* LIBSSH2_SFTP_H */
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/module.modulemap b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/module.modulemap
index fe5729d..3a9a9ba 100644
--- a/Clibgit2.xcframework/macos-arm64_x86_64/Headers/module.modulemap
+++ b/Clibgit2.xcframework/macos-arm64_x86_64/Headers/module.modulemap
@@ -28,4 +28,13 @@ module Clibgit2 {
export *
module * { export * }
}
+
+ // Expose libssh2 headers
+ explicit module libssh2 {
+ header "libssh2.h"
+ header "libssh2_sftp.h"
+ header "libssh2_publickey.h"
+
+ export *
+ }
}
diff --git a/Clibgit2.xcframework/macos-arm64_x86_64/libgit2_all.a b/Clibgit2.xcframework/macos-arm64_x86_64/libgit2_all.a
index d56ba37..f9bbf88 100644
Binary files a/Clibgit2.xcframework/macos-arm64_x86_64/libgit2_all.a and b/Clibgit2.xcframework/macos-arm64_x86_64/libgit2_all.a differ
diff --git a/Clibgit2_modulemap b/Clibgit2_modulemap
index fe5729d..3a9a9ba 100644
--- a/Clibgit2_modulemap
+++ b/Clibgit2_modulemap
@@ -28,4 +28,13 @@ module Clibgit2 {
export *
module * { export * }
}
+
+ // Expose libssh2 headers
+ explicit module libssh2 {
+ header "libssh2.h"
+ header "libssh2_sftp.h"
+ header "libssh2_publickey.h"
+
+ export *
+ }
}
diff --git a/README.md b/README.md
index 69f3591..07b97d3 100644
--- a/README.md
+++ b/README.md
@@ -36,9 +36,9 @@ If you want to use `static-libgit2` in another package (say, to expose some cool
| Library | Version |
| ------- | ------- |
-| libgit2 | 1.3.0 |
-| openssl | 3.0.0 |
-| libssh2 | 1.10.0 |
+| libgit2 | 1.9.1 |
+| openssl | 3.6.0 |
+| libssh2 | 1.11.1 |
This build recipe and the original version of the build script comes from the insightful project https://github.com/light-tech/LibGit2-On-iOS.
diff --git a/build-libgit2-framework.sh b/build-libgit2-framework.sh
index d54e08f..0ee287a 100755
--- a/build-libgit2-framework.sh
+++ b/build-libgit2-framework.sh
@@ -100,10 +100,10 @@ function build_openssl() {
setup_variables $1 install-openssl
# It is better to remove and redownload the source since building make the source code directory dirty!
- rm -rf openssl-3.0.0
- test -f openssl-3.0.0.tar.gz || wget -q https://www.openssl.org/source/openssl-3.0.0.tar.gz
- tar xzf openssl-3.0.0.tar.gz
- cd openssl-3.0.0
+ rm -rf openssl-3.6.0
+ test -f openssl-3.6.0.tar.gz || wget -q https://www.openssl.org/source/openssl-3.6.0.tar.gz
+ tar xzf openssl-3.6.0.tar.gz
+ cd openssl-3.6.0
case $PLATFORM in
"iphoneos")
@@ -142,10 +142,10 @@ function build_openssl() {
function build_libssh2() {
setup_variables $1 install-libssh2
- rm -rf libssh2-1.10.0
- test -f libssh2-1.10.0.tar.gz || wget -q https://www.libssh2.org/download/libssh2-1.10.0.tar.gz
- tar xzf libssh2-1.10.0.tar.gz
- cd libssh2-1.10.0
+ rm -rf libssh2-1.11.1
+ test -f libssh2-1.11.1.tar.gz || wget -q https://www.libssh2.org/download/libssh2-1.11.1.tar.gz
+ tar xzf libssh2-1.11.1.tar.gz
+ cd libssh2-1.11.1
rm -rf build && mkdir build && cd build
@@ -165,16 +165,14 @@ function build_libssh2() {
function build_libgit2() {
setup_variables $1 install
- rm -rf libgit2-1.3.0
- test -f v1.3.0.zip || wget -q https://github.com/libgit2/libgit2/archive/refs/tags/v1.3.0.zip
- ditto -x -k --sequesterRsrc --rsrc v1.3.0.zip ./
- cd libgit2-1.3.0
+ rm -rf libgit2-1.9.1
+ test -f v1.9.1.zip || wget -q https://github.com/libgit2/libgit2/archive/refs/tags/v1.9.1.zip
+ ditto -x -k --sequesterRsrc --rsrc v1.9.1.zip ./
+ cd libgit2-1.9.1
rm -rf build && mkdir build && cd build
- # The CMake function that determines if `libssh2_userauth_publickey_frommemory` is defined doesn't
- # work when everything is statically linked. Manually override GIT_SSH_MEMORY_CREDENTIALS.
- CMAKE_ARGS+=(-DBUILD_CLAR=NO -DGIT_SSH_MEMORY_CREDENTIALS=1 -DCMAKE_PREFIX_PATH="$REPO_ROOT/install-libssh2/$PLATFORM;$REPO_ROOT/install-openssl/$PLATFORM")
+ CMAKE_ARGS+=(-DBUILD_TESTS=OFF -DUSE_SSH=libssh2 -DCMAKE_PREFIX_PATH="$REPO_ROOT/install-libssh2/$PLATFORM;$REPO_ROOT/install-openssl/$PLATFORM")
echo "cmake ${CMAKE_ARGS[@]} .."
cmake "${CMAKE_ARGS[@]}" ..
@@ -221,6 +219,25 @@ function copy_modulemap() {
done
}
+### Copy libssh2 headers into Clibgit2.xcframework so Swift can access libssh2 API
+function copy_libssh2_headers() {
+ local FWDIRS=$(find Clibgit2.xcframework -mindepth 1 -maxdepth 1 -type d)
+ for d in ${FWDIRS[@]}; do
+ # Determine source platform from xcframework directory name
+ case $d in
+ *ios-arm64)
+ cp install-libssh2/iphoneos/include/*.h $d/Headers/;;
+ *ios-arm64-simulator)
+ cp install-libssh2/iphonesimulator/include/*.h $d/Headers/;;
+ *ios-arm64_x86_64-maccatalyst)
+ cp install-libssh2/maccatalyst/include/*.h $d/Headers/;;
+ *macos-arm64_x86_64)
+ cp install-libssh2/macosx/include/*.h $d/Headers/;;
+ esac
+ echo "Copied libssh2 headers to $d/Headers/"
+ done
+}
+
### Build libgit2 and Clibgit2 frameworks for all available platforms
for p in ${AVAILABLE_PLATFORMS[@]}; do
@@ -241,3 +258,4 @@ done
build_xcframework libgit2_all install Clibgit2
cd $REPO_ROOT
copy_modulemap
+copy_libssh2_headers