@matheusbsbs / matheus-bagliano / commits / 18e449f86b
Fork 0

midx: enable core.multiPackIndex by default

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>

Derrick Stolee committed Sep 25, 2020 at 12:33 UTC 18e449f86b74bab35b150549c8342d252fe7ae00
4 files changed +13 -10
Documentation/config/core.txt
+2 -2
@@ -606,8 +606,8 @@ core.useReplaceRefs::
606
607 core.multiPackIndex::
608 Use the multi-pack-index file to track multiple packfiles using a
609 - single index. See link:technical/multi-pack-index.html[the
610 - multi-pack-index design document].
609 + single index. See linkgit:git-multi-pack-index[1] for more
610 + information. Defaults to true.
611
612 core.sparseCheckout::
613 Enable "sparse checkout" feature. See linkgit:git-sparse-checkout[1]
midx.c
+3 -8
@@ -10,6 +10,7 @@
10 #include "progress.h"
11 #include "trace2.h"
12 #include "run-command.h"
13 +#include "repository.h"
14
15 #define MIDX_SIGNATURE 0x4d494458 /* "MIDX" */
16 #define MIDX_VERSION 1
@@ -384,15 +385,9 @@ int prepare_multi_pack_index_one(struct repository *r, const char *object_dir, i
385 {
386 struct multi_pack_index *m;
387 struct multi_pack_index *m_search;
387 - int config_value;
388 - static int env_value = -1;
388
390 - if (env_value < 0)
391 - env_value = git_env_bool(GIT_TEST_MULTI_PACK_INDEX, 0);
392 -
393 - if (!env_value &&
394 - (repo_config_get_bool(r, "core.multipackindex", &config_value) ||
395 - !config_value))
389 + prepare_repo_settings(r);
390 + if (!r->settings.core_multi_pack_index)
391 return 0;
392
393 for (m_search = r->objects->multi_pack_index; m_search; m_search = m_search->next)
repo-settings.c
+6
@@ -1,6 +1,7 @@
1 #include "cache.h"
2 #include "config.h"
3 #include "repository.h"
4 +#include "midx.h"
5
6 #define UPDATE_DEFAULT_BOOL(s,v) do { if (s == -1) { s = v; } } while(0)
7
@@ -47,6 +48,11 @@ void prepare_repo_settings(struct repository *r)
48 r->settings.pack_use_sparse = value;
49 UPDATE_DEFAULT_BOOL(r->settings.pack_use_sparse, 1);
50
51 + value = git_env_bool(GIT_TEST_MULTI_PACK_INDEX, 0);
52 + if (value || !repo_config_get_bool(r, "core.multipackindex", &value))
53 + r->settings.core_multi_pack_index = value;
54 + UPDATE_DEFAULT_BOOL(r->settings.core_multi_pack_index, 1);
55 +
56 if (!repo_config_get_bool(r, "feature.manyfiles", &value) && value) {
57 UPDATE_DEFAULT_BOOL(r->settings.index_version, 4);
58 UPDATE_DEFAULT_BOOL(r->settings.core_untracked_cache, UNTRACKED_CACHE_WRITE);
repository.h
+2
@@ -37,6 +37,8 @@ struct repo_settings {
37
38 int pack_use_sparse;
39 enum fetch_negotiation_setting fetch_negotiation_algorithm;
40 +
41 + int core_multi_pack_index;
42 };
43
44 struct repository {