worktree: allow repository version 1
Git supports both repository versions 0 and 1. These formats are identical except for the presence of extensions. When using an extension, such as for a different hash algorithm, a check for only version 0 causes the check to fail. Instead, call verify_repository_format to verify that we have an appropriate version and no unknown extensions. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
efa7ae36c1
commit
e02a7141f8
10
worktree.c
10
worktree.c
@ -449,7 +449,7 @@ const struct worktree *find_shared_symref(const char *symref,
|
|||||||
int submodule_uses_worktrees(const char *path)
|
int submodule_uses_worktrees(const char *path)
|
||||||
{
|
{
|
||||||
char *submodule_gitdir;
|
char *submodule_gitdir;
|
||||||
struct strbuf sb = STRBUF_INIT;
|
struct strbuf sb = STRBUF_INIT, err = STRBUF_INIT;
|
||||||
DIR *dir;
|
DIR *dir;
|
||||||
struct dirent *d;
|
struct dirent *d;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
@ -463,18 +463,16 @@ int submodule_uses_worktrees(const char *path)
|
|||||||
get_common_dir_noenv(&sb, submodule_gitdir);
|
get_common_dir_noenv(&sb, submodule_gitdir);
|
||||||
free(submodule_gitdir);
|
free(submodule_gitdir);
|
||||||
|
|
||||||
/*
|
|
||||||
* The check below is only known to be good for repository format
|
|
||||||
* version 0 at the time of writing this code.
|
|
||||||
*/
|
|
||||||
strbuf_addstr(&sb, "/config");
|
strbuf_addstr(&sb, "/config");
|
||||||
read_repository_format(&format, sb.buf);
|
read_repository_format(&format, sb.buf);
|
||||||
if (format.version != 0) {
|
if (verify_repository_format(&format, &err)) {
|
||||||
|
strbuf_release(&err);
|
||||||
strbuf_release(&sb);
|
strbuf_release(&sb);
|
||||||
clear_repository_format(&format);
|
clear_repository_format(&format);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
clear_repository_format(&format);
|
clear_repository_format(&format);
|
||||||
|
strbuf_release(&err);
|
||||||
|
|
||||||
/* Replace config by worktrees. */
|
/* Replace config by worktrees. */
|
||||||
strbuf_setlen(&sb, sb.len - strlen("config"));
|
strbuf_setlen(&sb, sb.len - strlen("config"));
|
||||||
|
Loading…
Reference in New Issue
Block a user