Subject: [PATCH v12 0/2] diff-files: integrate with sparse index

From: Shuqi Liang <[email-masked]>
Date: Tue, 9 May 2023 15:42:39 -0400

* Add the '--' in all test to remain consistent.

* Change 'may not' to 'will not'.

Shuqi Liang (2):
  t1092: add tests for `git diff-files`
  diff-files: integrate with sparse index

 builtin/diff-files.c                     |  4 ++
 t/perf/p2000-sparse-operations.sh        |  2 +
 t/t1092-sparse-checkout-compatibility.sh | 66 +++++++++++++++++++++++-
 3 files changed, 70 insertions(+), 2 deletions(-)

Range-diff against v11:
1:  3e96a0c136 ! 1:  eb74730813 t1092: add tests for `git diff-files`
    @@ t/t1092-sparse-checkout-compatibility.sh: test_expect_success 'sparse-index is n
     +
     +	test_all_match git diff-files &&
     +
    -+	test_all_match git diff-files deep/a &&
    ++	test_all_match git diff-files -- deep/a &&
     +
     +	# test wildcard
    -+	test_all_match git diff-files "deep/*"
    ++	test_all_match git diff-files -- "deep/*"
     +'
     +
     +test_expect_success 'diff-files with pathspec outside sparse definition' '
    @@ t/t1092-sparse-checkout-compatibility.sh: test_expect_success 'sparse-index is n
     +	EOF
     +
     +	# The directory "folder1" is outside the cone of interest
    -+	# and may not exist in the sparse checkout repositories.
    ++	# and will not exist in the sparse checkout repositories.
     +	# Create it as needed, add file "folder1/a" there with
     +	# contents that is different from the staged version.
     +	run_on_all mkdir -p folder1 &&
2:  2c53fedf08 ! 2:  11affce5b7 diff-files: integrate with sparse index
    @@ Commit message
         diff-files' and a ~97% execution time reduction for 'git diff-files'
         for a file using a sparse index:
     
    -    Test                                           before  after
    -    -----------------------------------------------------------------
    -    2000.78: git diff-files (full-v3)              0.09    0.08 -11.1%
    -    2000.79: git diff-files (full-v4)              0.09    0.09 +0.0%
    -    2000.80: git diff-files (sparse-v3)            0.52    0.02 -96.2%
    -    2000.81: git diff-files (sparse-v4)            0.51    0.02 -96.1%
    -    2000.82: git diff-files f2/f4/a (full-v3)      0.06    0.07 +16.7%
    -    2000.83: git diff-files f2/f4/a (full-v4)      0.08    0.08 +0.0%
    -    2000.84: git diff-files f2/f4/a (sparse-v3)    0.46    0.01 -97.8%
    -    2000.85: git diff-files f2/f4/a (sparse-v4)    0.51    0.02 -96.1%
    +    Test                                               before  after
    +    -----------------------------------------------------------------------
    +    2000.94: git diff-files (full-v3)                  0.09    0.08 -11.1%
    +    2000.95: git diff-files (full-v4)                  0.09    0.09 +0.0%
    +    2000.96: git diff-files (sparse-v3)                0.52    0.02 -96.2%
    +    2000.97: git diff-files (sparse-v4)                0.51    0.02 -96.1%
    +    2000.98: git diff-files -- f2/f4/a (full-v3)       0.06    0.07 +16.7%
    +    2000.99: git diff-files -- f2/f4/a (full-v4)       0.08    0.08 +0.0%
    +    2000.100: git diff-files -- f2/f4/a (sparse-v3)    0.46    0.01 -97.8%
    +    2000.101: git diff-files -- f2/f4/a (sparse-v4)    0.51    0.02 -96.1%
     
         Signed-off-by: Shuqi Liang <[email-masked]>
     
    @@ t/perf/p2000-sparse-operations.sh: test_perf_on_all git grep --cached bogus -- "
      test_perf_on_all git describe --dirty
      test_perf_on_all 'echo >>new && git describe --dirty'
     +test_perf_on_all git diff-files
    -+test_perf_on_all git diff-files $SPARSE_CONE/a
    ++test_perf_on_all git diff-files -- $SPARSE_CONE/a
      
      test_done
     
    @@ t/t1092-sparse-checkout-compatibility.sh: test_expect_success 'diff-files with p
     +	run_on_all ../edit-contents deep/a &&
     +
     +	ensure_not_expanded diff-files &&
    -+	ensure_not_expanded diff-files deep/a &&
    -+	ensure_not_expanded diff-files "deep/*"
    ++	ensure_not_expanded diff-files -- deep/a &&
    ++	ensure_not_expanded diff-files -- "deep/*"
     +'
     +
      test_done
-- 
2.39.0