summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/config/core.txt4
-rw-r--r--midx.c11
-rw-r--r--repo-settings.c6
-rw-r--r--repository.h2
4 files changed, 13 insertions, 10 deletions
diff --git a/Documentation/config/core.txt b/Documentation/config/core.txt
index 74619a9c03..86c91d5381 100644
--- a/Documentation/config/core.txt
+++ b/Documentation/config/core.txt
@@ -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 a5fb797ede..ef499cf504 100644
--- 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)
diff --git a/repo-settings.c b/repo-settings.c
index 0918408b34..5bd2c22726 100644
--- a/repo-settings.c
+++ b/repo-settings.c
@@ -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);
diff --git a/repository.h b/repository.h
index 3c1f7d54bd..3901ce0b65 100644
--- a/repository.h
+++ b/repository.h
@@ -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 {