Skip to content

Commit 18e449f

Browse files
derrickstoleegitster
authored andcommitted
midx: enable core.multiPackIndex by default
The core.multiPackIndex setting has been around since c4d2522 (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 <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 3e220e6 commit 18e449f

File tree

4 files changed

+13
-10
lines changed

4 files changed

+13
-10
lines changed

Documentation/config/core.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -606,8 +606,8 @@ core.useReplaceRefs::
606606

607607
core.multiPackIndex::
608608
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.
611611

612612
core.sparseCheckout::
613613
Enable "sparse checkout" feature. See linkgit:git-sparse-checkout[1]

midx.c

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "progress.h"
1111
#include "trace2.h"
1212
#include "run-command.h"
13+
#include "repository.h"
1314

1415
#define MIDX_SIGNATURE 0x4d494458 /* "MIDX" */
1516
#define MIDX_VERSION 1
@@ -384,15 +385,9 @@ int prepare_multi_pack_index_one(struct repository *r, const char *object_dir, i
384385
{
385386
struct multi_pack_index *m;
386387
struct multi_pack_index *m_search;
387-
int config_value;
388-
static int env_value = -1;
389388

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)
396391
return 0;
397392

398393
for (m_search = r->objects->multi_pack_index; m_search; m_search = m_search->next)

repo-settings.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "cache.h"
22
#include "config.h"
33
#include "repository.h"
4+
#include "midx.h"
45

56
#define UPDATE_DEFAULT_BOOL(s,v) do { if (s == -1) { s = v; } } while(0)
67

@@ -47,6 +48,11 @@ void prepare_repo_settings(struct repository *r)
4748
r->settings.pack_use_sparse = value;
4849
UPDATE_DEFAULT_BOOL(r->settings.pack_use_sparse, 1);
4950

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+
5056
if (!repo_config_get_bool(r, "feature.manyfiles", &value) && value) {
5157
UPDATE_DEFAULT_BOOL(r->settings.index_version, 4);
5258
UPDATE_DEFAULT_BOOL(r->settings.core_untracked_cache, UNTRACKED_CACHE_WRITE);

repository.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ struct repo_settings {
3737

3838
int pack_use_sparse;
3939
enum fetch_negotiation_setting fetch_negotiation_algorithm;
40+
41+
int core_multi_pack_index;
4042
};
4143

4244
struct repository {

0 commit comments

Comments
 (0)