Subject: Re: [PATCH v2] diff: don't read index when --no-index is given

From: Thomas Gummerer <[email-masked]>
Date: Mon, 09 Dec 2013 22:17:03 +0100

Eric Sunshine <[email-masked]> writes:

> On Mon, Dec 9, 2013 at 3:40 PM, Thomas Gummerer <[email-masked]> wrote:
>> git diff --no-index ... currently reads the index, during setup, when
>> calling gitmodules_config().  This results in worse performance when
>> the index is not actually needed.  This patch avoids calling
>> gitmodules_config() when the --no-index option is given.  The times for
>> executing "git diff --no-index" in the WebKit repository are improved as
>> follows:
>>
>> Test                      HEAD~3            HEAD
>> ------------------------------------------------------------------
>> 4001.1: diff --no-index   0.24(0.15+0.09)   0.01(0.00+0.00) -95.8%
>>
>> An additional improvement of this patch is that "git diff --no-index" no
>> longer breaks when the index file is corrupt, which makes it possible to
>> use it for investigating the broken repository.
>>
>> To improve the possible usage as investigation tool for broken
>> repositories, setup_git_directory_gently() is also not called when the
>> --no-index option is given.
>>
>> Also add a test to guard against future breakages, and a performance
>> test to show the improvements.
>>
>> Signed-off-by: Thomas Gummerer <[email-masked]>
>> ---
>> diff --git a/t/t4053-diff-no-index.sh b/t/t4053-diff-no-index.sh
>> index 979e983..d3dbf6b 100755
>> --- a/t/t4053-diff-no-index.sh
>> +++ b/t/t4053-diff-no-index.sh
>> @@ -29,4 +29,10 @@ test_expect_success 'git diff --no-index relative path outside repo' '
>>         )
>>  '
>>
>> +test_expect_success 'git diff --no-index with broken index' '
>> +       cd repo &&
>> +       echo broken >.git/index &&
>> +       git diff --no-index a ../non/git/a &&
>> +'
>
> Stray && on the last line of the test.
>
> Also, don't you want to do the 'cd' and subsequent commands inside a
> subshell so that tests added after this one won't have to worry about
> cd'ing back to the top-level?

Thanks both to you and Torsten for catching both issues, I'll fix them
in a re-roll.

>> +
>>  test_done
>> --
>> 1.8.5.4.g8639e57

--
Thomas