Skip to content

Commit

Permalink
setup: split off a function to handle hitting ceiling in repo search
Browse files Browse the repository at this point in the history
Perhaps some day, other similar conditions (hitting the mount point,
hitting the root of the file system) will share this code.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Jonathan Nieder authored and Junio C Hamano committed Jul 26, 2010
1 parent 68698da commit f161ede
Showing 1 changed file with 12 additions and 9 deletions.
21 changes: 12 additions & 9 deletions setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -378,6 +378,16 @@ static const char *setup_bare_git_dir(const char *work_tree_env,
return NULL;
}

static const char *setup_nongit(const char *cwd, int *nongit_ok)
{
if (!nongit_ok)
die("Not a git repository (or any of the parent directories): %s", DEFAULT_GIT_DIR_ENVIRONMENT);
if (chdir(cwd))
die_errno("Cannot come back to cwd");
*nongit_ok = 1;
return NULL;
}

/*
* We cannot decide in this function whether we are in the work tree or
* not, since the config can only be read _after_ this function was called.
Expand Down Expand Up @@ -443,15 +453,8 @@ const char *setup_git_directory_gently(int *nongit_ok)
return setup_bare_git_dir(work_tree_env, offset,
len, cwd, nongit_ok);
while (--offset > ceil_offset && cwd[offset] != '/');
if (offset <= ceil_offset) {
if (nongit_ok) {
if (chdir(cwd))
die_errno("Cannot come back to cwd");
*nongit_ok = 1;
return NULL;
}
die("Not a git repository (or any of the parent directories): %s", DEFAULT_GIT_DIR_ENVIRONMENT);
}
if (offset <= ceil_offset)
return setup_nongit(cwd, nongit_ok);
if (one_filesystem) {
if (stat("..", &buf)) {
cwd[offset] = '\0';
Expand Down

0 comments on commit f161ede

Please sign in to comment.