[PATCH 07/10] init: use setup.c's repo version verification
- From
Jeff King <peff@peff.net>
- Date
- Mar 1, 2016, 14:43 UTC
- Message-ID
- <20160301144346.GG12887@sigill.intra.peff.net>
- In-Reply-To
- <20160301143546.GA30806@sigill.intra.peff.net>
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> --- I actually wonder if this code has been triggered ever, in the history of git. We do not ship a "config" file in our templates, and I doubt that anybody would ship one that sets core.repositoryformatversion.
builtin/init-db.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/builtin/init-db.c b/builtin/init-db.c index e9b2256..d9934f3 100644 --- a/builtin/init-db.c +++ b/builtin/init-db.c @@ -95,6 +95,8 @@ static void copy_templates(const char *template_dir) struct strbuf path = STRBUF_INIT; struct strbuf template_path = STRBUF_INIT; size_t template_len; + struct repository_format template_format; + struct strbuf err = STRBUF_INIT; DIR *dir; 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 */ strbuf_addstr(&template_path, "config"); - repository_format_version = 0; - git_config_from_file(check_repository_format_version, - template_path.buf, NULL); + read_repository_format(&template_format, template_path.buf); strbuf_setlen(&template_path, template_len); - if (repository_format_version && - repository_format_version != GIT_REPO_VERSION) { - warning(_("not copying templates of " - "a wrong format version %d from '%s'"), - repository_format_version, - template_dir); + /* + * No mention of version at all is OK, but anything else should be + * verified. + */ + if (template_format.version >= 0 && + 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; }
-- 2.8.0.rc0.278.gfeb5644