Code

Merge branch 'jc/maint-diff-q-filter' into maint
authorJunio C Hamano <gitster@pobox.com>
Fri, 1 Apr 2011 23:23:34 +0000 (16:23 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 1 Apr 2011 23:23:34 +0000 (16:23 -0700)
* jc/maint-diff-q-filter:
  diff --quiet: disable optimization when --diff-filter=X is used

1  2 
diff-lib.c
t/t4040-whitespace-status.sh

diff --cc diff-lib.c
index 392ce2bef05746cea7922d39da67bf25d1d3d192,bfa65033734452faae0d5f4365a817f9e35b3e01..f8e33256ebe7ecd6ebf69669d9bfe50488c01fa1
@@@ -100,10 -72,10 +100,11 @@@ int run_diff_files(struct rev_info *rev
                unsigned int oldmode, newmode;
                struct cache_entry *ce = active_cache[i];
                int changed;
 +              unsigned dirty_submodule = 0;
  
                if (DIFF_OPT_TST(&revs->diffopt, QUICK) &&
-                       DIFF_OPT_TST(&revs->diffopt, HAS_CHANGES))
+                   !revs->diffopt.filter &&
+                   DIFF_OPT_TST(&revs->diffopt, HAS_CHANGES))
                        break;
  
                if (!ce_path_match(ce, revs->prune_data))
index a30b03bcf27ba360c3761ade77ddf0ed00600470,0000000000000000000000000000000000000000..abc49348b196cf0fec232b6f2399356e4fe324d5
mode 100755,000000..100755
--- /dev/null
@@@ -1,63 -1,0 +1,70 @@@
 +#!/bin/sh
 +
 +test_description='diff --exit-code with whitespace'
 +. ./test-lib.sh
 +
 +test_expect_success setup '
 +      mkdir a b &&
 +      echo >c &&
 +      echo >a/d &&
 +      echo >b/e &&
 +      git add . &&
 +      test_tick &&
 +      git commit -m initial &&
 +      echo " " >a/d &&
 +      test_tick &&
 +      git commit -a -m second &&
 +      echo "  " >a/d &&
 +      echo " " >b/e &&
 +      git add a/d
 +'
 +
 +test_expect_success 'diff-tree --exit-code' '
 +      test_must_fail git diff --exit-code HEAD^ HEAD &&
 +      test_must_fail git diff-tree --exit-code HEAD^ HEAD
 +'
 +
 +test_expect_success 'diff-tree -b --exit-code' '
 +      git diff -b --exit-code HEAD^ HEAD &&
 +      git diff-tree -b -p --exit-code HEAD^ HEAD &&
 +      git diff-tree -b --exit-code HEAD^ HEAD
 +'
 +
 +test_expect_success 'diff-index --cached --exit-code' '
 +      test_must_fail git diff --cached --exit-code HEAD &&
 +      test_must_fail git diff-index --cached --exit-code HEAD
 +'
 +
 +test_expect_success 'diff-index -b -p --cached --exit-code' '
 +      git diff -b --cached --exit-code HEAD &&
 +      git diff-index -b -p --cached --exit-code HEAD
 +'
 +
 +test_expect_success 'diff-index --exit-code' '
 +      test_must_fail git diff --exit-code HEAD &&
 +      test_must_fail git diff-index --exit-code HEAD
 +'
 +
 +test_expect_success 'diff-index -b -p --exit-code' '
 +      git diff -b --exit-code HEAD &&
 +      git diff-index -b -p --exit-code HEAD
 +'
 +
 +test_expect_success 'diff-files --exit-code' '
 +      test_must_fail git diff --exit-code &&
 +      test_must_fail git diff-files --exit-code
 +'
 +
 +test_expect_success 'diff-files -b -p --exit-code' '
 +      git diff -b --exit-code &&
 +      git diff-files -b -p --exit-code
 +'
 +
++test_expect_success 'diff-files --diff-filter --quiet' '
++      git reset --hard &&
++      rm a/d &&
++      echo x >>b/e &&
++      test_must_fail git diff-files --diff-filter=M --quiet
++'
++
 +test_done