[PATCH 4/9] setup: split off a function to checks working dir for .git file
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Jul 24, 2010, 11:20 UTC
- Message-ID
- <20100724112015.GD16054@burratino>
- In-Reply-To
- <20100724111505.GC7150@burratino>
The repository discovery procedure looks something like this:
while (same filesystem) {
check .git in working dir
check .
chdir(..)
}Add a function for the first step to make the actual code look a bit closer to that pseudocode.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> --- setup.c | 20 +++++++++++++------- 1 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/setup.c b/setup.c index 16bee6d..3d25d0f 100644 --- a/setup.c +++ b/setup.c @@ -348,6 +348,18 @@ static const char *setup_explicit_git_dir(const char *gitdirenv, return retval; } +static int cwd_contains_git_dir(const char **gitfile_dirp) +{ + const char *gitfile_dir = read_gitfile_gently(DEFAULT_GIT_DIR_ENVIRONMENT); + *gitfile_dirp = gitfile_dir; + if (gitfile_dir) { + if (set_git_dir(gitfile_dir)) + die("Repository setup failed"); + return 1; + } + return is_git_directory(DEFAULT_GIT_DIR_ENVIRONMENT); +} + /* * 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. @@ -407,13 +419,7 @@ const char *setup_git_directory_gently(int *nongit_ok) current_device = buf.st_dev; } for (;;) { - gitfile_dir = read_gitfile_gently(DEFAULT_GIT_DIR_ENVIRONMENT); - if (gitfile_dir) { - if (set_git_dir(gitfile_dir)) - die("Repository setup failed"); - break; - } - if (is_git_directory(DEFAULT_GIT_DIR_ENVIRONMENT)) + if (cwd_contains_git_dir(&gitfile_dir)) break; if (is_git_directory(".")) { inside_git_dir = 1;
-- 1.7.2.rc3.593.g19611.dirty