From ab9cb76f661c1794800361c27bc5a515245aaaef Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 25 Nov 2005 15:59:09 -0800 Subject: [PATCH] Repository format version check. This adds the repository format version code, first done by Martin Atukunda. Signed-off-by: Junio C Hamano --- cache.h | 5 +++++ environment.c | 1 + setup.c | 16 ++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/cache.h b/cache.h index 6ac94c5a1..de53f4128 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 *, 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 b5026f126..3f194732e 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 ab3c778e8..0e2e3c8c3 100644 --- a/setup.c +++ b/setup.c @@ -154,6 +154,22 @@ static const char *setup_git_directory_1(void) 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(); -- 2.30.2