]> git.ipfire.org Git - thirdparty/git.git/commitdiff
midx: enable core.multiPackIndex by default
authorDerrick Stolee <dstolee@microsoft.com>
Fri, 25 Sep 2020 12:33:34 +0000 (12:33 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 25 Sep 2020 17:53:04 +0000 (10:53 -0700)
The core.multiPackIndex setting has been around since c4d25228ebb
(config: create core.multiPackIndex setting, 2018-07-12), but has been
disabled by default. If a user wishes to use the multi-pack-index
feature, then they must enable this config and run 'git multi-pack-index
write'.

The multi-pack-index feature is relatively stable now, so make the
config option true by default. For users that do not use a
multi-pack-index, the only extra cost will be a file lookup to see if a
multi-pack-index file exists (once per process, per object directory).

Also, this config option will be referenced by an upcoming
"incremental-repack" task in the maintenance builtin, so move the config
option into the repository settings struct. Note that if
GIT_TEST_MULTI_PACK_INDEX=1, then we want to ignore the config option
and treat core.multiPackIndex as enabled.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/config/core.txt
midx.c
repo-settings.c
repository.h

index 74619a9c03bb17d0f6c007fc3f9b8c052b957c65..86c91d5381270c3c186d7a513e73286aade0de93 100644 (file)
@@ -606,8 +606,8 @@ core.useReplaceRefs::
 
 core.multiPackIndex::
        Use the multi-pack-index file to track multiple packfiles using a
-       single index. See link:technical/multi-pack-index.html[the
-       multi-pack-index design document].
+       single index. See linkgit:git-multi-pack-index[1] for more
+       information. Defaults to true.
 
 core.sparseCheckout::
        Enable "sparse checkout" feature. See linkgit:git-sparse-checkout[1]
diff --git a/midx.c b/midx.c
index a5fb797edeeae46b76f8f926d4b9d40b2236878d..ef499cf5046fdfa216b2f12efb1f4a88f37a68fc 100644 (file)
--- a/midx.c
+++ b/midx.c
@@ -10,6 +10,7 @@
 #include "progress.h"
 #include "trace2.h"
 #include "run-command.h"
+#include "repository.h"
 
 #define MIDX_SIGNATURE 0x4d494458 /* "MIDX" */
 #define MIDX_VERSION 1
@@ -384,15 +385,9 @@ int prepare_multi_pack_index_one(struct repository *r, const char *object_dir, i
 {
        struct multi_pack_index *m;
        struct multi_pack_index *m_search;
-       int config_value;
-       static int env_value = -1;
 
-       if (env_value < 0)
-               env_value = git_env_bool(GIT_TEST_MULTI_PACK_INDEX, 0);
-
-       if (!env_value &&
-           (repo_config_get_bool(r, "core.multipackindex", &config_value) ||
-           !config_value))
+       prepare_repo_settings(r);
+       if (!r->settings.core_multi_pack_index)
                return 0;
 
        for (m_search = r->objects->multi_pack_index; m_search; m_search = m_search->next)
index 0918408b34436a02589cdb850da8345671e4a5f1..5bd2c2272669d79427b4708ffce8ab150239d102 100644 (file)
@@ -1,6 +1,7 @@
 #include "cache.h"
 #include "config.h"
 #include "repository.h"
+#include "midx.h"
 
 #define UPDATE_DEFAULT_BOOL(s,v) do { if (s == -1) { s = v; } } while(0)
 
@@ -47,6 +48,11 @@ void prepare_repo_settings(struct repository *r)
                r->settings.pack_use_sparse = value;
        UPDATE_DEFAULT_BOOL(r->settings.pack_use_sparse, 1);
 
+       value = git_env_bool(GIT_TEST_MULTI_PACK_INDEX, 0);
+       if (value || !repo_config_get_bool(r, "core.multipackindex", &value))
+               r->settings.core_multi_pack_index = value;
+       UPDATE_DEFAULT_BOOL(r->settings.core_multi_pack_index, 1);
+
        if (!repo_config_get_bool(r, "feature.manyfiles", &value) && value) {
                UPDATE_DEFAULT_BOOL(r->settings.index_version, 4);
                UPDATE_DEFAULT_BOOL(r->settings.core_untracked_cache, UNTRACKED_CACHE_WRITE);
index 3c1f7d54bd37a55f6cd1b1ac1f936dc0c17b3dab..3901ce0b65569280b686ab65c821684321d1e9a1 100644 (file)
@@ -37,6 +37,8 @@ struct repo_settings {
 
        int pack_use_sparse;
        enum fetch_negotiation_setting fetch_negotiation_algorithm;
+
+       int core_multi_pack_index;
 };
 
 struct repository {