summaryrefslogtreecommitdiff
path: root/read-cache.c
diff options
context:
space:
mode:
authorThomas Gummerer <t.gummerer@gmail.com>2014-02-23 21:49:59 +0100
committerJunio C Hamano <gitster@pobox.com>2014-02-24 13:33:17 -0800
commit3c09d6845d253f9d8a75f3a36278c69e01b073e9 (patch)
tree3791637a413e81432101ab613f352edd9e57f221 /read-cache.c
parent5d9fc888b485caa1b6a95f2cb583dc26ab7e8d13 (diff)
downloadgit-3c09d6845d253f9d8a75f3a36278c69e01b073e9.tar.gz
read-cache: add index.version config variabletg/index-v4-format
Add a config variable that allows setting the default index version when initializing a new index file. Similar to the GIT_INDEX_VERSION environment variable this only affects new index files. Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'read-cache.c')
-rw-r--r--read-cache.c35
1 files changed, 26 insertions, 9 deletions
diff --git a/read-cache.c b/read-cache.c
index efc4aaed98..6bc9724793 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -1219,23 +1219,40 @@ static struct cache_entry *refresh_cache_entry(struct cache_entry *ce, int reall
#define INDEX_FORMAT_DEFAULT 3
+static int index_format_config(const char *var, const char *value, void *cb)
+{
+ unsigned int *version = cb;
+ if (!strcmp(var, "index.version")) {
+ *version = git_config_int(var, value);
+ return 0;
+ }
+ return 1;
+}
+
static unsigned int get_index_format_default(void)
{
char *envversion = getenv("GIT_INDEX_VERSION");
- if (!envversion) {
- return INDEX_FORMAT_DEFAULT;
- } else {
- char *endp;
- unsigned int version = strtoul(envversion, &endp, 10);
+ char *endp;
+ unsigned int version = INDEX_FORMAT_DEFAULT;
- if (*endp ||
- version < INDEX_FORMAT_LB || INDEX_FORMAT_UB < version) {
- warning(_("GIT_INDEX_VERSION set, but the value is invalid.\n"
+ if (!envversion) {
+ git_config(index_format_config, &version);
+ if (version < INDEX_FORMAT_LB || INDEX_FORMAT_UB < version) {
+ warning(_("index.version set, but the value is invalid.\n"
"Using version %i"), INDEX_FORMAT_DEFAULT);
- version = INDEX_FORMAT_DEFAULT;
+ return INDEX_FORMAT_DEFAULT;
}
return version;
}
+
+ version = strtoul(envversion, &endp, 10);
+ if (*endp ||
+ version < INDEX_FORMAT_LB || INDEX_FORMAT_UB < version) {
+ warning(_("GIT_INDEX_VERSION set, but the value is invalid.\n"
+ "Using version %i"), INDEX_FORMAT_DEFAULT);
+ version = INDEX_FORMAT_DEFAULT;
+ }
+ return version;
}
/*