init: use setup.c's repo version verification
We check our templates to make sure they are from a version of git we understand (otherwise we would init a repository we cannot ourselves run in!). But our simple integer check has fallen behind the times. Let's use the helpers that setup.c provides to do it right. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
2cc7c2c737
commit
94ce167249
@ -95,6 +95,8 @@ static void copy_templates(const char *template_dir)
|
|||||||
struct strbuf path = STRBUF_INIT;
|
struct strbuf path = STRBUF_INIT;
|
||||||
struct strbuf template_path = STRBUF_INIT;
|
struct strbuf template_path = STRBUF_INIT;
|
||||||
size_t template_len;
|
size_t template_len;
|
||||||
|
struct repository_format template_format;
|
||||||
|
struct strbuf err = STRBUF_INIT;
|
||||||
DIR *dir;
|
DIR *dir;
|
||||||
char *to_free = NULL;
|
char *to_free = NULL;
|
||||||
|
|
||||||
@ -121,17 +123,18 @@ static void copy_templates(const char *template_dir)
|
|||||||
|
|
||||||
/* Make sure that template is from the correct vintage */
|
/* Make sure that template is from the correct vintage */
|
||||||
strbuf_addstr(&template_path, "config");
|
strbuf_addstr(&template_path, "config");
|
||||||
repository_format_version = 0;
|
read_repository_format(&template_format, template_path.buf);
|
||||||
git_config_from_file(check_repository_format_version,
|
|
||||||
template_path.buf, NULL);
|
|
||||||
strbuf_setlen(&template_path, template_len);
|
strbuf_setlen(&template_path, template_len);
|
||||||
|
|
||||||
if (repository_format_version &&
|
/*
|
||||||
repository_format_version != GIT_REPO_VERSION) {
|
* No mention of version at all is OK, but anything else should be
|
||||||
warning(_("not copying templates of "
|
* verified.
|
||||||
"a wrong format version %d from '%s'"),
|
*/
|
||||||
repository_format_version,
|
if (template_format.version >= 0 &&
|
||||||
template_dir);
|
verify_repository_format(&template_format, &err) < 0) {
|
||||||
|
warning(_("not copying templates from '%s': %s"),
|
||||||
|
template_dir, err.buf);
|
||||||
|
strbuf_release(&err);
|
||||||
goto close_free_return;
|
goto close_free_return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user