diff options
author | Jonathan Nieder <jrnieder@gmail.com> | 2010-07-24 06:26:41 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-07-25 22:12:50 -0700 |
commit | f161edebb64f08bfc615fd9c28ebae3333255e2e (patch) | |
tree | f19dd8252a817de7c43d9120f9226167c737371c /setup.c | |
parent | 68698da540acb0c891b810396d704fef3643c576 (diff) | |
download | git-f161edebb64f08bfc615fd9c28ebae3333255e2e.tar.gz |
setup: split off a function to handle hitting ceiling in repo search
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>
Diffstat (limited to 'setup.c')
-rw-r--r-- | setup.c | 21 |
1 files changed, 12 insertions, 9 deletions
@@ -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. @@ -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'; |