summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@edwardthomson.com>2023-04-22 23:12:00 +0100
committerEdward Thomson <ethomson@edwardthomson.com>2023-04-22 23:17:32 +0100
commit190a4c55df72b32adf4d60f77cbc47276b74f84b (patch)
tree896d6d41c2ea6305992bd646bbbe79a3fdb5f6fe /include
parente288f874a3a73ef31f88bb524f6d25d5ff3c5a3a (diff)
parent8a62616f43fe5ea37d41296f40293ff97aa88cfa (diff)
downloadlibgit2-190a4c55df72b32adf4d60f77cbc47276b74f84b.tar.gz
Merge remote-tracking branch 'origin/main' into shallow-clone-network
Diffstat (limited to 'include')
-rw-r--r--include/git2/diff.h44
-rw-r--r--include/git2/index.h9
-rw-r--r--include/git2/sys/commit_graph.h14
-rw-r--r--include/git2/sys/midx.h6
-rw-r--r--include/git2/version.h10
5 files changed, 72 insertions, 11 deletions
diff --git a/include/git2/diff.h b/include/git2/diff.h
index 850d215a6..384b6e745 100644
--- a/include/git2/diff.h
+++ b/include/git2/diff.h
@@ -422,6 +422,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.
*/
@@ -1153,9 +1169,8 @@ GIT_EXTERN(int) git_diff_to_buf(
/**@}*/
-
/*
- * Misc
+ * Low-level file comparison, invoking callbacks per difference.
*/
/**
@@ -1271,6 +1286,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.
*
@@ -1293,7 +1327,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`.
diff --git a/include/git2/index.h b/include/git2/index.h
index 981535dad..6e806371b 100644
--- a/include/git2/index.h
+++ b/include/git2/index.h
@@ -184,7 +184,12 @@ typedef enum {
* @param index_path the path to the index file in disk
* @return 0 or an error code
*/
+
+#ifdef GIT_EXPERIMENTAL_SHA256
+GIT_EXTERN(int) git_index_open(git_index **out, const char *index_path, git_oid_t oid_type);
+#else
GIT_EXTERN(int) git_index_open(git_index **out, const char *index_path);
+#endif
/**
* Create an in-memory index object.
@@ -197,7 +202,11 @@ GIT_EXTERN(int) git_index_open(git_index **out, const char *index_path);
* @param out the pointer for the new index
* @return 0 or an error code
*/
+#ifdef GIT_EXPERIMENTAL_SHA256
+GIT_EXTERN(int) git_index_new(git_index **out, git_oid_t oid_type);
+#else
GIT_EXTERN(int) git_index_new(git_index **out);
+#endif
/**
* Free an existing index object.
diff --git a/include/git2/sys/commit_graph.h b/include/git2/sys/commit_graph.h
index 823c7ed57..06e045fcd 100644
--- a/include/git2/sys/commit_graph.h
+++ b/include/git2/sys/commit_graph.h
@@ -28,7 +28,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
+ , git_oid_t oid_type
+#endif
+ );
/**
* Frees commit-graph data. This should only be called when memory allocated
@@ -50,7 +56,11 @@ GIT_EXTERN(void) git_commit_graph_free(git_commit_graph *cgraph);
*/
GIT_EXTERN(int) git_commit_graph_writer_new(
git_commit_graph_writer **out,
- const char *objects_info_dir);
+ const char *objects_info_dir
+#ifdef GIT_EXPERIMENTAL_SHA256
+ , git_oid_t oid_type
+#endif
+ );
/**
* Free the commit-graph writer and its resources.
diff --git a/include/git2/sys/midx.h b/include/git2/sys/midx.h
index e3d749829..3a87484d2 100644
--- a/include/git2/sys/midx.h
+++ b/include/git2/sys/midx.h
@@ -29,7 +29,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_oid_t oid_type
+#endif
+ );
/**
* Free the multi-pack-index writer and its resources.
diff --git a/include/git2/version.h b/include/git2/version.h
index 8b5eb3138..bed47f51e 100644
--- a/include/git2/version.h
+++ b/include/git2/version.h
@@ -11,16 +11,16 @@
* The version string for libgit2. This string follows semantic
* versioning (v2) guidelines.
*/
-#define LIBGIT2_VERSION "1.6.2"
+#define LIBGIT2_VERSION "1.7.0-alpha"
/** The major version number for this version of libgit2. */
#define LIBGIT2_VER_MAJOR 1
/** The minor version number for this version of libgit2. */
-#define LIBGIT2_VER_MINOR 6
+#define LIBGIT2_VER_MINOR 7
/** The revision ("teeny") version number for this version of libgit2. */
-#define LIBGIT2_VER_REVISION 2
+#define LIBGIT2_VER_REVISION 0
/** The Windows DLL patch number for this version of libgit2. */
#define LIBGIT2_VER_PATCH 0
@@ -31,9 +31,9 @@
* a prerelease name like "beta" or "rc1". For final releases, this will
* be `NULL`.
*/
-#define LIBGIT2_VER_PRERELEASE NULL
+#define LIBGIT2_VER_PRERELEASE "alpha"
/** The library ABI soversion for this version of libgit2. */
-#define LIBGIT2_SOVERSION "1.6"
+#define LIBGIT2_SOVERSION "1.7"
#endif