Re: [PATCH 2/5] ieot: default to not writing IEOT section
On 11/20/2018 1:12 AM, Jonathan Nieder wrote:
Show 54 quoted lines
> As with EOIE, popular versions of Git do not support the new IEOT
> extension yet. When accessing a Git repository written by a more
> modern version of Git, they correctly ignore the unrecognized section,
> but in the process they loudly warn
>
> ignoring IEOT extension
>
> resulting in confusion for users. Introduce the index extension more
> gently by not writing it yet in this first version with support for
> it. Soon, once sufficiently many users are running a modern version
> of Git, we can flip the default so users benefit from this index
> extension by default.
>
> Introduce a '[index] recordOffsetTable' configuration variable to
> control whether the new index extension is written.
>
> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
> ---
> As with patch 1/5, no change from v1 other than rebasing.
>
> Documentation/config/index.txt | 7 +++++++
> read-cache.c | 11 ++++++++++-
> 2 files changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/config/index.txt b/Documentation/config/index.txt
> index 8e138aba7a..de44183235 100644
> --- a/Documentation/config/index.txt
> +++ b/Documentation/config/index.txt
> @@ -5,6 +5,13 @@ index.recordEndOfIndexEntries::
> reading the index using Git versions before 2.20. Defaults to
> 'false'.
>
> +index.recordOffsetTable::
> + Specifies whether the index file should include an "Index Entry
> + Offset Table" section. This reduces index load time on
> + multiprocessor machines but produces a message "ignoring IEOT
> + extension" when reading the index using Git versions before 2.20.
> + Defaults to 'false'.
> +
> index.threads::
> Specifies the number of threads to spawn when loading the index.
> This is meant to reduce index load time on multiprocessor machines.
> diff --git a/read-cache.c b/read-cache.c
> index 1e9c772603..f3d5638d9e 100644
> --- a/read-cache.c
> +++ b/read-cache.c
> @@ -2698,6 +2698,15 @@ static int record_eoie(void)
> return 0;
> }
>
> +static int record_ieot(void)
> +{
> + int val;
> +Initialize stack val to zero to ensure proper default.
Show 18 quoted lines
> + if (!git_config_get_bool("index.recordoffsettable", &val))
> + return val;
> + return 0;
> +}
> +
> /*
> * On success, `tempfile` is closed. If it is the temporary file
> * of a `struct lock_file`, we will therefore effectively perform
> @@ -2761,7 +2770,7 @@ static int do_write_index(struct index_state *istate, struct tempfile *tempfile,
> else
> nr_threads = 1;
>
> - if (nr_threads != 1) {
> + if (nr_threads != 1 && record_ieot()) {
> int ieot_blocks, cpus;
>
> /*
>