Commit c0d5acf69a647baa06bd5d8e570105b93b5070e7

Eduardo Bart 2012-11-15T14:43:21

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;