Fix git-diff to make it produce useful 3-way diffs for merge conflicts in repositories with autocrlf enabled. Otherwise it always reports that the whole file was changed. Signed-off-by: Alexander Gavrilov <angavrilov@xxxxxxxxx> --- I noticed that combined diffs, which are shown by git-diff for files with conflicts, are unusable on repositories with autocrlf=true. Steps to reproduce: git init echo foo > file git add file git commit -m init git checkout -b a git checkout -b b echo bbb >> file git add file git commit -m bbb git checkout a echo aaa >> file git add file git commit -m aaa git config core.autocrlf true git merge b Then look at the output of git diff. -- Alexander combine-diff.c | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-) diff --git a/combine-diff.c b/combine-diff.c index 9f80a1c..da1ca99 100644 --- a/combine-diff.c +++ b/combine-diff.c @@ -727,6 +727,18 @@ static void show_patch_diff(struct combine_diff_path *elem, int num_parent, die("early EOF '%s'", elem->path); result[len] = 0; + + /* If not a fake symlink, apply filters, e.g. autocrlf */ + if (is_file) { + struct strbuf buf; + + strbuf_init(&buf, 0); + if (convert_to_git(elem->path, result, len, &buf, safe_crlf)) { + free(result); + result = strbuf_detach(&buf, &len); + result_size = len; + } + } } else { deleted_file: -- 1.6.0.rc2 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html