diff options
| author | Junio C Hamano <gitster@pobox.com> | 2017-06-24 14:28:40 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2017-06-24 14:28:41 -0700 |
| commit | f31d23a399d557d687266b4375a0436f920cc051 (patch) | |
| tree | 4f163d684ab6b66476e8795a7ea4fce4f2aa5037 /setup.c | |
| parent | Merge branch 'bw/ls-files-sans-the-index' (diff) | |
| parent | config: don't implicitly use gitdir or commondir (diff) | |
| download | git-f31d23a399d557d687266b4375a0436f920cc051.tar.gz git-f31d23a399d557d687266b4375a0436f920cc051.zip | |
Merge branch 'bw/config-h'
Fix configuration codepath to pay proper attention to commondir
that is used in multi-worktree situation, and isolate config API
into its own header file.
* bw/config-h:
config: don't implicitly use gitdir or commondir
config: respect commondir
setup: teach discover_git_directory to respect the commondir
config: don't include config.h by default
config: remove git_config_iter
config: create config.h
Diffstat (limited to 'setup.c')
| -rw-r--r-- | setup.c | 18 |
1 files changed, 12 insertions, 6 deletions
@@ -1,4 +1,5 @@ #include "cache.h" +#include "config.h" #include "dir.h" #include "string-list.h" @@ -967,19 +968,21 @@ static enum discovery_result setup_git_directory_gently_1(struct strbuf *dir, } } -const char *discover_git_directory(struct strbuf *gitdir) +int discover_git_directory(struct strbuf *commondir, + struct strbuf *gitdir) { struct strbuf dir = STRBUF_INIT, err = STRBUF_INIT; size_t gitdir_offset = gitdir->len, cwd_len; + size_t commondir_offset = commondir->len; struct repository_format candidate; if (strbuf_getcwd(&dir)) - return NULL; + return -1; cwd_len = dir.len; if (setup_git_directory_gently_1(&dir, gitdir, 0) <= 0) { strbuf_release(&dir); - return NULL; + return -1; } /* @@ -995,8 +998,10 @@ const char *discover_git_directory(struct strbuf *gitdir) strbuf_insert(gitdir, gitdir_offset, dir.buf, dir.len); } + get_common_dir(commondir, gitdir->buf + gitdir_offset); + strbuf_reset(&dir); - strbuf_addf(&dir, "%s/config", gitdir->buf + gitdir_offset); + strbuf_addf(&dir, "%s/config", commondir->buf + commondir_offset); read_repository_format(&candidate, dir.buf); strbuf_release(&dir); @@ -1004,11 +1009,12 @@ const char *discover_git_directory(struct strbuf *gitdir) warning("ignoring git dir '%s': %s", gitdir->buf + gitdir_offset, err.buf); strbuf_release(&err); + strbuf_setlen(commondir, commondir_offset); strbuf_setlen(gitdir, gitdir_offset); - return NULL; + return -1; } - return gitdir->buf + gitdir_offset; + return 0; } const char *setup_git_directory_gently(int *nongit_ok) |
