summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cache.h1
-rw-r--r--setup.c12
-rwxr-xr-xt/t0410-partial-clone.sh4
3 files changed, 9 insertions, 8 deletions
diff --git a/cache.h b/cache.h
index e5885cc9ea..0f0485ecfe 100644
--- a/cache.h
+++ b/cache.h
@@ -1042,7 +1042,6 @@ struct repository_format {
int worktree_config;
int is_bare;
int hash_algo;
- int has_extensions;
char *work_tree;
struct string_list unknown_extensions;
};
diff --git a/setup.c b/setup.c
index 597b41b822..e34b073577 100644
--- a/setup.c
+++ b/setup.c
@@ -455,7 +455,6 @@ static int check_repo_format(const char *var, const char *value, void *vdata)
if (strcmp(var, "core.repositoryformatversion") == 0)
data->version = git_config_int(var, value);
else if (skip_prefix(var, "extensions.", &ext)) {
- data->has_extensions = 1;
/*
* record any known extensions here; otherwise,
* we fall through to recording it as unknown, and
@@ -553,13 +552,16 @@ int upgrade_repository_format(int target_version)
if (repo_fmt.version >= target_version)
return 0;
- if (verify_repository_format(&repo_fmt, &err) < 0 ||
- (!repo_fmt.version && repo_fmt.has_extensions)) {
- warning("unable to upgrade repository format from %d to %d: %s",
- repo_fmt.version, target_version, err.buf);
+ if (verify_repository_format(&repo_fmt, &err) < 0) {
+ error("cannot upgrade repository format from %d to %d: %s",
+ repo_fmt.version, target_version, err.buf);
strbuf_release(&err);
return -1;
}
+ if (!repo_fmt.version && repo_fmt.unknown_extensions.nr)
+ return error("cannot upgrade repository format: "
+ "unknown extension %s",
+ repo_fmt.unknown_extensions.items[0].string);
strbuf_addf(&repo_version, "%d", target_version);
git_config_set("core.repositoryformatversion", repo_version.buf);
diff --git a/t/t0410-partial-clone.sh b/t/t0410-partial-clone.sh
index 51d1eba605..6aa0f313bd 100755
--- a/t/t0410-partial-clone.sh
+++ b/t/t0410-partial-clone.sh
@@ -42,7 +42,7 @@ test_expect_success 'convert shallow clone to partial clone' '
test_cmp_config -C client 1 core.repositoryformatversion
'
-test_expect_success 'converting to partial clone fails with noop extension' '
+test_expect_success 'convert to partial clone with noop extension' '
rm -fr server client &&
test_create_repo server &&
test_commit -C server my_commit 1 &&
@@ -50,7 +50,7 @@ test_expect_success 'converting to partial clone fails with noop extension' '
git clone --depth=1 "file://$(pwd)/server" client &&
test_cmp_config -C client 0 core.repositoryformatversion &&
git -C client config extensions.noop true &&
- test_must_fail git -C client fetch --unshallow --filter="blob:none"
+ git -C client fetch --unshallow --filter="blob:none"
'
test_expect_success 'converting to partial clone fails with unrecognized extension' '