clone: factor out dir_exists() helper
Two parts of git-clone's setup logic check whether a directory exists, and they both call stat directly with the same scratch "struct stat" buffer. Let's pull that into a helper, which has a few advantages: - it makes the purpose of the stat calls more obvious - it makes it clear that we don't care about the information in "buf" remaining valid - if we later decide to make the check more robust (e.g., complaining about non-directories), we can do it in one place Note that we could just use file_exists() for this, which has identical code. But we specifically care about directories, so this future-proofs us against that function later getting more picky about seeing actual files. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
8486b84f0e
commit
f9e377adc0
@ -863,10 +863,15 @@ static void dissociate_from_references(void)
|
||||
free(alternates);
|
||||
}
|
||||
|
||||
static int dir_exists(const char *path)
|
||||
{
|
||||
struct stat sb;
|
||||
return !stat(path, &sb);
|
||||
}
|
||||
|
||||
int cmd_clone(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
int is_bundle = 0, is_local;
|
||||
struct stat buf;
|
||||
const char *repo_name, *repo, *work_tree, *git_dir;
|
||||
char *path, *dir;
|
||||
int dest_exists;
|
||||
@ -938,7 +943,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
|
||||
dir = guess_dir_name(repo_name, is_bundle, option_bare);
|
||||
strip_trailing_slashes(dir);
|
||||
|
||||
dest_exists = !stat(dir, &buf);
|
||||
dest_exists = dir_exists(dir);
|
||||
if (dest_exists && !is_empty_dir(dir))
|
||||
die(_("destination path '%s' already exists and is not "
|
||||
"an empty directory."), dir);
|
||||
@ -949,7 +954,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
|
||||
work_tree = NULL;
|
||||
else {
|
||||
work_tree = getenv("GIT_WORK_TREE");
|
||||
if (work_tree && !stat(work_tree, &buf))
|
||||
if (work_tree && dir_exists(work_tree))
|
||||
die(_("working tree '%s' already exists."), work_tree);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user