[PATCH] Fix diff output take #3.
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:41:57
This implements the output format suggested by Linus in [ref] Signed-off-by: Junio C Hamano <redacted> --- diff.c | 14 +++++++------- t/t4000-diff-format.sh | 7 +++++-- 2 files changed, 12 insertions(+), 9 deletions(-) diff -git a/diff.c b/diff.c
--- a/diff.c
+++ b/diff.c@@ -83,7 +83,6 @@ struct diff_tempfile *temp) { int i, next_at; - const char *git_prefix = "# mode: "; const char *diff_cmd = "diff -L'%s%s' -L'%s%s'"; const char *diff_arg = "'%s' '%s'||:"; /* "||:" is to return 0 */ const char *input_name_sq[2];
@@ -123,15 +122,16 @@ next_at += snprintf(cmd+next_at, cmd_size-next_at, diff_arg, input_name_sq[0], input_name_sq[1]); + printf("diff -git a/%s b/%s\n", name, name); if (!path1[0][0]) - printf("%s. %s %s\n", git_prefix, temp[1].mode, name); + printf("new file mode %s\n", temp[1].mode); else if (!path1[1][0]) - printf("%s%s . %s\n", git_prefix, temp[0].mode, name); + printf("deleted file mode %s\n", temp[0].mode); else { - if (strcmp(temp[0].mode, temp[1].mode)) - printf("%s%s %s %s\n", git_prefix, - temp[0].mode, temp[1].mode, name); - + if (strcmp(temp[0].mode, temp[1].mode)) { + printf("old mode %s\n", temp[0].mode); + printf("new mode %s\n", temp[1].mode); + } if (strncmp(temp[0].mode, temp[1].mode, 3)) /* we do not run diff between different kind * of objects.
diff -git a/t/t4000-diff-format.sh b/t/t4000-diff-format.sh
--- a/t/t4000-diff-format.sh
+++ b/t/t4000-diff-format.sh@@ -26,7 +26,9 @@ 'git-diff-files -p after editing work tree.' \ 'git-diff-files -p >current' cat >expected <<\EOF -# mode: 100644 100755 path0 +diff -git a/path0 b/path0 +old mode 100644 +new mode 100755 --- a/path0 +++ b/path0 @@ -1,3 +1,3 @@
@@ -34,7 +36,8 @@ Line 2 -line 3 +Line 3 -# mode: 100755 . path1 +diff -git a/path1 b/path1 +deleted file mode 100755 --- a/path1 +++ /dev/null @@ -1,3 +0,0 @@ ------------------------------------------------