Add option to ignore file mode in diffs
diff --git a/include/git2/diff.h b/include/git2/diff.h
index 9b11f16..6396aaa 100644
--- a/include/git2/diff.h
+++ b/include/git2/diff.h
@@ -86,6 +86,8 @@ typedef enum {
* mode set to tree. Note: the tree SHA will not be available.
*/
GIT_DIFF_INCLUDE_TYPECHANGE_TREES = (1 << 16),
+ /** Ignore file mode changes */
+ GIT_DIFF_IGNORE_FILEMODE = (1 << 17),
} git_diff_option_t;
/**
diff --git a/src/diff.c b/src/diff.c
index 6f48d72..29ce97b 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -267,6 +267,9 @@ static git_diff_list *git_diff_list_alloc(
memcpy(&diff->opts, opts, sizeof(git_diff_options));
+ if(opts->flags & GIT_DIFF_IGNORE_FILEMODE)
+ diff->diffcaps = diff->diffcaps & ~GIT_DIFFCAPS_TRUST_MODE_BITS;
+
/* pathspec init will do nothing for empty pathspec */
if (git_pathspec_init(&diff->pathspec, &opts->pathspec, &diff->pool) < 0)
goto fail;