summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@edwardthomson.com>2023-04-07 15:28:58 +0100
committerEdward Thomson <ethomson@edwardthomson.com>2023-04-10 14:21:16 +0100
commitdb2a794dda2b6f92291b3758507f863f39314c72 (patch)
tree53c5b2d77c6c38cf26fecc90e91809df0397fa46 /include
parent7f70484799df14dbc666b3c395ded690d1a5a402 (diff)
downloadlibgit2-db2a794dda2b6f92291b3758507f863f39314c72.tar.gz
diff: parse patches with sha256
Diffstat (limited to 'include')
-rw-r--r--include/git2/diff.h44
1 files changed, 41 insertions, 3 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`.