[PATCH 1/4] Repository format version check.
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:42:13
Subsystem:
the rest · Maintainer:
Linus Torvalds
This adds the repository format version code, first done by Martin Atukunda. Signed-off-by: Junio C Hamano <redacted> --- cache.h | 5 +++++ environment.c | 1 + setup.c | 16 ++++++++++++++++ 3 files changed, 22 insertions(+), 0 deletions(-) applies-to: 31b3c7eeb719c61a19922f3e8bf5abd46b49b5bb 58fd7fb9718df942773862c9acd2358533c672d4
diff --git a/cache.h b/cache.h
index 6ac94c5..de53f41 100644
--- a/cache.h
+++ b/cache.h@@ -182,6 +182,10 @@ extern int trust_executable_bit; extern int only_use_symrefs; extern int diff_rename_limit_default; +#define GIT_REPO_VERSION 0 +extern int repository_format_version; +extern int check_repository_format(void); + #define MTIME_CHANGED 0x0001 #define CTIME_CHANGED 0x0002 #define OWNER_CHANGED 0x0004
@@ -388,6 +392,7 @@ extern int git_config_int(const char *, extern int git_config_bool(const char *, const char *); extern int git_config_set(const char *, const char *); extern int git_config_set_multivar(const char *, const char *, const char *, int); +extern int check_repository_format_version(const char *var, const char *value); #define MAX_GITNAME (1000) extern char git_default_email[MAX_GITNAME];
diff --git a/environment.c b/environment.c
index b5026f1..3f19473 100644
--- a/environment.c
+++ b/environment.c@@ -13,6 +13,7 @@ char git_default_email[MAX_GITNAME]; char git_default_name[MAX_GITNAME]; int trust_executable_bit = 1; int only_use_symrefs = 0; +int repository_format_version = 0; static char *git_dir, *git_object_dir, *git_index_file, *git_refs_dir, *git_graft_file;
diff --git a/setup.c b/setup.c
index ab3c778..0e2e3c8 100644
--- a/setup.c
+++ b/setup.c@@ -154,6 +154,22 @@ static const char *setup_git_directory_1 return cwd + offset; } +int check_repository_format_version(const char *var, const char *value) +{ + if (strcmp(var, "core.repositoryformatversion") == 0) + repository_format_version = git_config_int(var, value); + return 0; +} + +int check_repository_format(void) +{ + git_config(check_repository_format_version); + if (GIT_REPO_VERSION < repository_format_version) + die ("Expected git repo version <= %d, found %d", + GIT_REPO_VERSION, repository_format_version); + return 0; +} + const char *setup_git_directory(void) { const char *retval = setup_git_directory_1();
--- 0.99.9.GIT