summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: c8deb5a)
raw | patch | inline | side by side (parent: c8deb5a)
author | Arjen Laarhoven <arjen@yaph.org> | |
Tue, 25 Dec 2007 11:06:47 +0000 (12:06 +0100) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Wed, 26 Dec 2007 19:57:36 +0000 (11:57 -0800) |
In commit b7bb760d5ed4881422673d32f869d140221d3564 (Fix revision
log diff setup, avoid unnecessary diff generation) an optimization was
made to avoid unnecessary diff generation. This was partly fixed in
99516e35d096f41e7133cacde8fbed8ee9a3ecd0 (Fix embarrassing "git log
--follow" bug). The '--diff-filter' option also needs the diff machinery
in action.
Signed-off-by: Arjen Laarhoven <arjen@yaph.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
log diff setup, avoid unnecessary diff generation) an optimization was
made to avoid unnecessary diff generation. This was partly fixed in
99516e35d096f41e7133cacde8fbed8ee9a3ecd0 (Fix embarrassing "git log
--follow" bug). The '--diff-filter' option also needs the diff machinery
in action.
Signed-off-by: Arjen Laarhoven <arjen@yaph.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
revision.c | patch | blob | history | |
t/t4202-log.sh | [new file with mode: 0755] | patch | blob |
diff --git a/revision.c b/revision.c
index 7e2f4f1eb5090588fc6515b78d39b7c7a4eda00d..6e85aaa3fb30e98f3b02f094af7f1763577cdb8d 100644 (file)
--- a/revision.c
+++ b/revision.c
@@ -1290,8 +1290,10 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
if (revs->diffopt.output_format & ~DIFF_FORMAT_NO_OUTPUT)
revs->diff = 1;
- /* Pickaxe and rename following needs diffs */
- if (revs->diffopt.pickaxe || DIFF_OPT_TST(&revs->diffopt, FOLLOW_RENAMES))
+ /* Pickaxe, diff-filter and rename following need diffs */
+ if (revs->diffopt.pickaxe ||
+ revs->diffopt.filter ||
+ DIFF_OPT_TST(&revs->diffopt, FOLLOW_RENAMES))
revs->diff = 1;
if (revs->topo_order)
diff --git a/t/t4202-log.sh b/t/t4202-log.sh
--- /dev/null
+++ b/t/t4202-log.sh
@@ -0,0 +1,74 @@
+#!/bin/sh
+
+test_description='git log'
+
+. ./test-lib.sh
+
+test_expect_success setup '
+
+ echo one >one &&
+ git add one &&
+ test_tick &&
+ git commit -m initial &&
+
+ echo ichi >one &&
+ git add one &&
+ test_tick &&
+ git commit -m second &&
+
+ mkdir a &&
+ echo ni >a/two &&
+ git add a/two &&
+ test_tick &&
+ git commit -m third &&
+
+ echo san >a/three &&
+ git add a/three &&
+ test_tick &&
+ git commit -m fourth &&
+
+ git rm a/three &&
+ test_tick &&
+ git commit -m fifth
+
+'
+
+test_expect_success 'diff-filter=A' '
+
+ actual=$(git log --pretty="format:%s" --diff-filter=A HEAD) &&
+ expect=$(echo fourth ; echo third ; echo initial) &&
+ test "$actual" = "$expect" || {
+ echo Oops
+ echo "Actual: $actual"
+ false
+ }
+
+'
+
+test_expect_success 'diff-filter=M' '
+
+ actual=$(git log --pretty="format:%s" --diff-filter=M HEAD) &&
+ expect=$(echo second) &&
+ test "$actual" = "$expect" || {
+ echo Oops
+ echo "Actual: $actual"
+ false
+ }
+
+'
+
+test_expect_success 'diff-filter=D' '
+
+ actual=$(git log --pretty="format:%s" --diff-filter=D HEAD) &&
+ expect=$(echo fifth) &&
+ test "$actual" = "$expect" || {
+ echo Oops
+ echo "Actual: $actual"
+ false
+ }
+
+'
+
+
+
+test_done
\ No newline at end of file