# [PATCH] environment: enable core.preloadindex by default

6 messages from 2014-06-02 to 2014-06-05. Participants: Steve Hoelzer, Karsten Blees, Duy Nguyen, Junio C Hamano.
Thread: https://gitlist.dev/t/36815

## Steve Hoelzer, 2014-06-02 16:43

Subject: [PATCH] environment: enable core.preloadindex by default
Message-ID: <CACbrTHdoA3UgoXOMVeB2ST_y-JzA2FZM7s8_uwG8C3D29WZK=Q@mail.gmail.com>
URL: https://gitlist.dev/e/CACbrTHdoA3UgoXOMVeB2ST_y-JzA2FZM7s8_uwG8C3D29WZK%3DQ%40mail.gmail.com

```
There is consensus that the default should change because it will
benefit nearly all users (some just a little, but some a lot).
See [1] and replies.

[1]: http://git.661346.n2.nabble.com/git-status-takes-30-seconds-on-Windows-7-Why-tp7580816p7580853.html

Signed-off-by: Steve Hoelzer <shoelzer@gmail.com>
---
 Documentation/config.txt | 4 ++--
 environment.c            | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/Documentation/config.txt b/Documentation/config.txt
index 1932e9b..4b3d965 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -613,9 +613,9 @@ core.preloadindex::
 +
 This can speed up operations like 'git diff' and 'git status' especially
 on filesystems like NFS that have weak caching semantics and thus
-relatively high IO latencies.  With this set to 'true', Git will do the
+relatively high IO latencies.  When enabled, Git will do the
 index comparison to the filesystem data in parallel, allowing
-overlapping IO's.
+overlapping IO's.  Defaults to true.

 core.createObject::
  You can set this to 'link', in which case a hardlink followed by
diff --git a/environment.c b/environment.c
index 5c4815d..1c686c9 100644
--- a/environment.c
+++ b/environment.c
@@ -71,7 +71,7 @@ unsigned long pack_size_limit_cfg;
 char comment_line_char = '#';

 /* Parallel index stat data preload? */
-int core_preload_index = 0;
+int core_preload_index = 1;

 /* This is set by setup_git_dir_gently() and/or git_default_config() */
 char *git_work_tree_cfg;
-- 
1.9.0.msysgit.0

```

## Karsten Blees, 2014-06-02 20:01

Subject: Re: [PATCH] environment: enable core.preloadindex by default
Message-ID: <538CD827.5020607@gmail.com>
URL: https://gitlist.dev/e/538CD827.5020607%40gmail.com
In-Reply-To: <CACbrTHdoA3UgoXOMVeB2ST_y-JzA2FZM7s8_uwG8C3D29WZK=Q@mail.gmail.com>

```
Am 02.06.2014 18:43, schrieb Steve Hoelzer:
> There is consensus that the default should change because it will
> benefit nearly all users (some just a little, but some a lot).
> See [1] and replies.

Git for Windows users may want to try core.fscache=true as well [1]. This eliminates the UAC penalties for repositories located on the Windows system drive [2].

[1] https://github.com/msysgit/git/pull/94
[2] https://code.google.com/p/msysgit/issues/detail?id=320

```

## Steve Hoelzer, 2014-06-03 06:18

Subject: Re: [PATCH] environment: enable core.preloadindex by default
Message-ID: <CACbrTHdyxdGWyq46GNttQ4671epLmuL9BA2Fszmua0u8a=4jSw@mail.gmail.com>
URL: https://gitlist.dev/e/CACbrTHdyxdGWyq46GNttQ4671epLmuL9BA2Fszmua0u8a%3D4jSw%40mail.gmail.com
In-Reply-To: <538CD827.5020607@gmail.com>

```
On Mon, Jun 2, 2014 at 3:01 PM, Karsten Blees <karsten.blees@gmail.com> wrote:
> Git for Windows users may want to try core.fscache=true as well [1]. This eliminates the UAC penalties for repositories located on the Windows system drive [2].
>
> [1] https://github.com/msysgit/git/pull/94
> [2] https://code.google.com/p/msysgit/issues/detail?id=320

Thanks for the tip! I didn't know about fscache, but I'll definitely
give it a try. Is there a reason it is not turned on by default in Git
for Windows?

Steve

```

## Karsten Blees, 2014-06-03 08:18

Subject: Re: [PATCH] environment: enable core.preloadindex by default
Message-ID: <538D84D8.5080604@gmail.com>
URL: https://gitlist.dev/e/538D84D8.5080604%40gmail.com
In-Reply-To: <CACbrTHdyxdGWyq46GNttQ4671epLmuL9BA2Fszmua0u8a=4jSw@mail.gmail.com>

```
Am 03.06.2014 08:18, schrieb Steve Hoelzer:
> On Mon, Jun 2, 2014 at 3:01 PM, Karsten Blees <karsten.blees@gmail.com> wrote:
>> Git for Windows users may want to try core.fscache=true as well [1]. This eliminates the UAC penalties for repositories located on the Windows system drive [2].
>>
>> [1] https://github.com/msysgit/git/pull/94
>> [2] https://code.google.com/p/msysgit/issues/detail?id=320
> 
> Thanks for the tip! I didn't know about fscache, but I'll definitely
> give it a try. Is there a reason it is not turned on by default in Git
> for Windows?
> 
> Steve
> 

The feature has been merged only a few months ago, and I believe no one has found the time yet to do a thorough review of the workhorse compat/win32/fscache.[ch]. So the safe bet is to keep it turned off by default.

```

## Duy Nguyen, 2014-06-03 08:41

Subject: Re: [PATCH] environment: enable core.preloadindex by default
Message-ID: <CACsJy8A0EixLPCEO4R_pX2FM35PMJuFPxLw3_axxBUpj-rb18A@mail.gmail.com>
URL: https://gitlist.dev/e/CACsJy8A0EixLPCEO4R_pX2FM35PMJuFPxLw3_axxBUpj-rb18A%40mail.gmail.com
In-Reply-To: <CACbrTHdoA3UgoXOMVeB2ST_y-JzA2FZM7s8_uwG8C3D29WZK=Q@mail.gmail.com>

```
On Mon, Jun 2, 2014 at 11:43 PM, Steve Hoelzer <shoelzer@gmail.com> wrote:
> There is consensus that the default should change because it will
> benefit nearly all users (some just a little, but some a lot).
> See [1] and replies.
>
> [1]: http://git.661346.n2.nabble.com/git-status-takes-30-seconds-on-Windows-7-Why-tp7580816p7580853.html

Not only Windows. core.preloadindex helps large repos on Linux as well
[2]. So +1.

[2] http://article.gmane.org/gmane.comp.version-control.git/248013
-- 
Duy

```

## Junio C Hamano, 2014-06-05 22:59

Subject: Re: [PATCH] environment: enable core.preloadindex by default
Message-ID: <xmqqr433q7x0.fsf@gitster.dls.corp.google.com>
URL: https://gitlist.dev/e/xmqqr433q7x0.fsf%40gitster.dls.corp.google.com
In-Reply-To: <CACbrTHdoA3UgoXOMVeB2ST_y-JzA2FZM7s8_uwG8C3D29WZK=Q@mail.gmail.com>

```
Steve Hoelzer <shoelzer@gmail.com> writes:

> There is consensus that the default should change because it will
> benefit nearly all users (some just a little, but some a lot).
> See [1] and replies.
>
> [1]: http://git.661346.n2.nabble.com/git-status-takes-30-seconds-on-Windows-7-Why-tp7580816p7580853.html
>
> Signed-off-by: Steve Hoelzer <shoelzer@gmail.com>
> ---

The patch is whitespace damaged, and the log message was unusable
without referring to an external site.  Both locally fixed and
queued.

Thanks.

>  Documentation/config.txt | 4 ++--
>  environment.c            | 2 +-
>  2 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/Documentation/config.txt b/Documentation/config.txt
> index 1932e9b..4b3d965 100644
> --- a/Documentation/config.txt
> +++ b/Documentation/config.txt
> @@ -613,9 +613,9 @@ core.preloadindex::
>  +
>  This can speed up operations like 'git diff' and 'git status' especially
>  on filesystems like NFS that have weak caching semantics and thus
> -relatively high IO latencies.  With this set to 'true', Git will do the
> +relatively high IO latencies.  When enabled, Git will do the
>  index comparison to the filesystem data in parallel, allowing
> -overlapping IO's.
> +overlapping IO's.  Defaults to true.
>
>  core.createObject::
>   You can set this to 'link', in which case a hardlink followed by
> diff --git a/environment.c b/environment.c
> index 5c4815d..1c686c9 100644
> --- a/environment.c
> +++ b/environment.c
> @@ -71,7 +71,7 @@ unsigned long pack_size_limit_cfg;
>  char comment_line_char = '#';
>
>  /* Parallel index stat data preload? */
> -int core_preload_index = 0;
> +int core_preload_index = 1;
>
>  /* This is set by setup_git_dir_gently() and/or git_default_config() */
>  char *git_work_tree_cfg;

```
