summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 93a0054)
raw | patch | inline | side by side (parent: 93a0054)
author | Jonathan Nieder <jrnieder@gmail.com> | |
Sat, 24 Jul 2010 11:25:32 +0000 (06:25 -0500) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Mon, 26 Jul 2010 05:12:47 +0000 (22:12 -0700) |
If a repository is found as an ancestor of the original
working directory, it is assumed by default to be bare.
Handle this case with its own function.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
working directory, it is assumed by default to be bare.
Handle this case with its own function.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
setup.c | patch | blob | history |
index 3d25d0f205ba7ad555a7f26e40be7590ac16d926..ec11c462669053b9841166da310457ca8c53ae48 100644 (file)
--- a/setup.c
+++ b/setup.c
return is_git_directory(DEFAULT_GIT_DIR_ENVIRONMENT);
}
+static const char *setup_bare_git_dir(const char *work_tree_env,
+ int offset, int len, char *cwd, int *nongit_ok)
+{
+ int root_len;
+
+ inside_git_dir = 1;
+ if (!work_tree_env)
+ inside_work_tree = 0;
+ if (offset != len) {
+ root_len = offset_1st_component(cwd);
+ cwd[offset > root_len ? offset : root_len] = '\0';
+ set_git_dir(cwd);
+ } else
+ set_git_dir(".");
+ check_repository_format_gently(nongit_ok);
+ 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.
for (;;) {
if (cwd_contains_git_dir(&gitfile_dir))
break;
- if (is_git_directory(".")) {
- inside_git_dir = 1;
- if (!work_tree_env)
- inside_work_tree = 0;
- if (offset != len) {
- root_len = offset_1st_component(cwd);
- cwd[offset > root_len ? offset : root_len] = '\0';
- set_git_dir(cwd);
- } else
- set_git_dir(".");
- check_repository_format_gently(nongit_ok);
- return NULL;
- }
+ if (is_git_directory("."))
+ 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) {