All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Derrick Stolee <stolee@gmail.com>
Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH 2/2] sparse-index.c: don't call prepare_repo_settings() twice in a row
Date: Thu, 06 May 2021 10:49:59 +0200	[thread overview]
Message-ID: <87v97wuto9.fsf@evledraar.gmail.com> (raw)
In-Reply-To: <7954338a-bb44-1345-61b6-787782063c3c@gmail.com>


On Wed, May 05 2021, Derrick Stolee wrote:

> On 5/5/2021 8:11 AM, Ævar Arnfjörð Bjarmason wrote:
>> Change code added in 58300f47432 (sparse-index: add index.sparse
>> config option, 2021-03-30) to only call prepare_repo_settings()
>> once. We know that our own set_sparse_index_config() has just finished
>> calling it, so we don't need to call it if we're acting on "test_env".
>
> I'm not sure about the value here. prepare_repo_settings() returns
> quickly if the settings have already been prepared, so a second call
> is negligible in cost.

I changed that while I was at it to make it easier to read, it's not an
optimization. I.e. one wonders what the side-effect is of calling
prepare_repo_settings() twice, discovers there isn't one...

>> @@ -133,11 +133,12 @@ int convert_to_sparse(struct index_state *istate)
>>  	test_env = git_env_bool("GIT_TEST_SPARSE_INDEX", -1);
>>  	if (test_env >= 0)
>>  		set_sparse_index_config(istate->repo, test_env);
>> +	else
>> +		prepare_repo_settings(istate->repo);
>
> The change presented here to either call set_sparse_index_config()
> _or_ prepare_repo_settings() seems like it knows too much about
> how set_sparse_index_config() works.

It seems reasonable to assume that a function to set config has
initialized (or died, if it couldn't) enough of our config state to do
its job.

Besides, it's a few lines above the changed code in the same file. 

But looking at this again 2/3 callers of set_sparse_index_config()
aren't checking the return value. Wouldn't something like [1] on top be
a good idea here?

Also, is GIT_TEST_SPARSE_INDEX=true itself supposed to work? Running the
test suite with it fails 3 test files for me, all /sparse/, i.e. tests
that (presumably) assume it's not already turned on by this code.

1. 

diff --git a/builtin/sparse-checkout.c b/builtin/sparse-checkout.c
index a4bdd7c4940..bea1e7dd00e 100644
--- a/builtin/sparse-checkout.c
+++ b/builtin/sparse-checkout.c
@@ -280,8 +280,9 @@ static int set_config(enum sparse_checkout_mode mode)
 				      "core.sparseCheckoutCone",
 				      mode == MODE_CONE_PATTERNS ? "true" : NULL);
 
-	if (mode == MODE_NO_PATTERNS)
-		set_sparse_index_config(the_repository, 0);
+	if (mode == MODE_NO_PATTERNS &&
+	    set_sparse_index_config(the_repository, 0) < 0)
+		die(_("could not set index.sparse=0"));
 
 	return 0;
 }
diff --git a/sparse-index.c b/sparse-index.c
index 5bad05de645..3938bcec962 100644
--- a/sparse-index.c
+++ b/sparse-index.c
@@ -131,10 +131,13 @@ int convert_to_sparse(struct index_state *istate)
 	 * index.sparse config variable to be on.
 	 */
 	test_env = git_env_bool("GIT_TEST_SPARSE_INDEX", -1);
-	if (test_env >= 0)
-		set_sparse_index_config(istate->repo, test_env);
-	else
+	if (test_env >= 0) {
+		if (set_sparse_index_config(istate->repo, test_env) < 0)
+			die(_("could not set index.sparse based on GIT_TEST_SPARSE_INDEX=%d"),
+			    test_env);
+	} else {
 		prepare_repo_settings(istate->repo);
+	}
 
 	/*
 	 * Only convert to sparse if index.sparse is set.

  parent reply	other threads:[~2021-05-06  8:56 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-05 12:11 [PATCH 0/2] sparse-index.c: minor prepare_repo_settings() fixes Ævar Arnfjörð Bjarmason
2021-05-05 12:11 ` [PATCH 1/2] sparse-index.c: remove set_index_sparse_config() Ævar Arnfjörð Bjarmason
2021-05-05 14:01   ` Derrick Stolee
2021-05-05 12:11 ` [PATCH 2/2] sparse-index.c: don't call prepare_repo_settings() twice in a row Ævar Arnfjörð Bjarmason
2021-05-05 14:00   ` Derrick Stolee
2021-05-06  3:55     ` Junio C Hamano
2021-05-06  8:49     ` Ævar Arnfjörð Bjarmason [this message]
2021-05-17 17:31       ` Derrick Stolee

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87v97wuto9.fsf@evledraar.gmail.com \
    --to=avarab@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=stolee@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.