OSDN Git Service

diff --no-index: fix --name-status with added files
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>
Tue, 3 Jul 2007 15:01:06 +0000 (16:01 +0100)
committerJunio C Hamano <gitster@pobox.com>
Tue, 3 Jul 2007 20:44:30 +0000 (13:44 -0700)
Without this patch, an added file would be reported as /dev/null.

Noticed by David Kastrup.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff.c
t/t4013-diff-various.sh
t/t4013/diff.diff_--name-status_dir2_dir [new file with mode: 0644]

diff --git a/diff.c b/diff.c
index dc6da5e..da992dd 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -2407,7 +2407,8 @@ static void diff_flush_raw(struct diff_filepair *p,
                printf("%s ",
                       diff_unique_abbrev(p->two->sha1, abbrev));
        }
-       printf("%s%c%s", status, inter_name_termination, path_one);
+       printf("%s%c%s", status, inter_name_termination,
+                       two_paths || p->one->mode ?  path_one : path_two);
        if (two_paths)
                printf("%c%s", inter_name_termination, path_two);
        putchar(line_termination);
index 8f4c29a..4e7d68d 100755 (executable)
@@ -17,6 +17,7 @@ test_expect_success setup '
        export GIT_AUTHOR_DATE GIT_COMMITTER_DATE &&
 
        mkdir dir &&
+       mkdir dir2 &&
        for i in 1 2 3; do echo $i; done >file0 &&
        for i in A B; do echo $i; done >dir/sub &&
        cat file0 >file2 &&
@@ -252,6 +253,7 @@ diff --patch-with-stat initial..side
 diff --patch-with-raw initial..side
 diff --patch-with-stat -r initial..side
 diff --patch-with-raw -r initial..side
+diff --name-status dir2 dir
 EOF
 
 test_done
diff --git a/t/t4013/diff.diff_--name-status_dir2_dir b/t/t4013/diff.diff_--name-status_dir2_dir
new file mode 100644 (file)
index 0000000..ef7fdb7
--- /dev/null
@@ -0,0 +1,3 @@
+$ git diff --name-status dir2 dir
+A      dir/sub
+$