summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <junkio@cox.net>2005-05-18 09:10:47 -0700
committerLibravatar Linus Torvalds <torvalds@ppc970.osdl.org>2005-05-18 09:39:40 -0700
commitb58f23b38a9a9f28d751311353819d3cdf6a86da (patch)
tree680c51b9bdc494e0229f679e979875dc4f1c83a5
parent[PATCH] Kill a bunch of pointer sign warnings for gcc4 (diff)
downloadtgif-b58f23b38a9a9f28d751311353819d3cdf6a86da.tar.xz
[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>
-rw-r--r--diff.c14
-rw-r--r--t/t4000-diff-format.sh7
2 files changed, 12 insertions, 9 deletions
diff --git a/diff.c b/diff.c
index a237311d7a..36e8bd4217 100644
--- a/diff.c
+++ b/diff.c
@@ -83,7 +83,6 @@ static void builtin_diff(const char *name,
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 @@ static void builtin_diff(const char *name,
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
index d8694121d6..91ed2dc65c 100644
--- a/t/t4000-diff-format.sh
+++ b/t/t4000-diff-format.sh
@@ -26,7 +26,9 @@ test_expect_success \
'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 @@ cat >expected <<\EOF
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 @@