[PATCH] Fix diff output take #4.
This implements the output format suggested by Linus in <Pine.LNX.4.58.0505161556260.18337@ppc970.osdl.org>, except the imaginary diff option is spelled "diff --git" with double dashes as suggested by Matthias Urlichs. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
bf0f910d1d
commit
b58f23b38a
14
diff.c
14
diff.c
@ -83,7 +83,6 @@ static void builtin_diff(const char *name,
|
|||||||
struct diff_tempfile *temp)
|
struct diff_tempfile *temp)
|
||||||
{
|
{
|
||||||
int i, next_at;
|
int i, next_at;
|
||||||
const char *git_prefix = "# mode: ";
|
|
||||||
const char *diff_cmd = "diff -L'%s%s' -L'%s%s'";
|
const char *diff_cmd = "diff -L'%s%s' -L'%s%s'";
|
||||||
const char *diff_arg = "'%s' '%s'||:"; /* "||:" is to return 0 */
|
const char *diff_arg = "'%s' '%s'||:"; /* "||:" is to return 0 */
|
||||||
const char *input_name_sq[2];
|
const char *input_name_sq[2];
|
||||||
@ -123,15 +122,16 @@ static void builtin_diff(const char *name,
|
|||||||
next_at += snprintf(cmd+next_at, cmd_size-next_at,
|
next_at += snprintf(cmd+next_at, cmd_size-next_at,
|
||||||
diff_arg, input_name_sq[0], input_name_sq[1]);
|
diff_arg, input_name_sq[0], input_name_sq[1]);
|
||||||
|
|
||||||
|
printf("diff --git a/%s b/%s\n", name, name);
|
||||||
if (!path1[0][0])
|
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])
|
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 {
|
else {
|
||||||
if (strcmp(temp[0].mode, temp[1].mode))
|
if (strcmp(temp[0].mode, temp[1].mode)) {
|
||||||
printf("%s%s %s %s\n", git_prefix,
|
printf("old mode %s\n", temp[0].mode);
|
||||||
temp[0].mode, temp[1].mode, name);
|
printf("new mode %s\n", temp[1].mode);
|
||||||
|
}
|
||||||
if (strncmp(temp[0].mode, temp[1].mode, 3))
|
if (strncmp(temp[0].mode, temp[1].mode, 3))
|
||||||
/* we do not run diff between different kind
|
/* we do not run diff between different kind
|
||||||
* of objects.
|
* of objects.
|
||||||
|
@ -26,7 +26,9 @@ test_expect_success \
|
|||||||
'git-diff-files -p after editing work tree.' \
|
'git-diff-files -p after editing work tree.' \
|
||||||
'git-diff-files -p >current'
|
'git-diff-files -p >current'
|
||||||
cat >expected <<\EOF
|
cat >expected <<\EOF
|
||||||
# mode: 100644 100755 path0
|
diff --git a/path0 b/path0
|
||||||
|
old mode 100644
|
||||||
|
new mode 100755
|
||||||
--- a/path0
|
--- a/path0
|
||||||
+++ b/path0
|
+++ b/path0
|
||||||
@@ -1,3 +1,3 @@
|
@@ -1,3 +1,3 @@
|
||||||
@ -34,7 +36,8 @@ cat >expected <<\EOF
|
|||||||
Line 2
|
Line 2
|
||||||
-line 3
|
-line 3
|
||||||
+Line 3
|
+Line 3
|
||||||
# mode: 100755 . path1
|
diff --git a/path1 b/path1
|
||||||
|
deleted file mode 100755
|
||||||
--- a/path1
|
--- a/path1
|
||||||
+++ /dev/null
|
+++ /dev/null
|
||||||
@@ -1,3 +0,0 @@
|
@@ -1,3 +0,0 @@
|
||||||
|
Loading…
Reference in New Issue
Block a user