continue;
}
if (!strcmp(arg, "--is-inside-git-dir")) {
- printf("%s\n", is_inside_git_dir() ? "true"
+ printf("%s\n", is_inside_git_dir(the_repository) ? "true"
: "false");
continue;
}
#include "trace2.h"
#include "worktree.h"
-static int inside_git_dir = -1;
static int inside_work_tree = -1;
static int work_tree_config_is_bogus;
enum allowed_bare_repo {
*/
void verify_non_filename(const char *prefix, const char *arg)
{
- if (!is_inside_work_tree() || is_inside_git_dir())
+ if (!is_inside_work_tree() || is_inside_git_dir(the_repository))
return;
if (*arg == '-')
return; /* flag */
return ret;
}
-int is_inside_git_dir(void)
+int is_inside_git_dir(struct repository *repo)
{
- if (inside_git_dir < 0)
- inside_git_dir = is_inside_dir(repo_get_git_dir(the_repository));
- return inside_git_dir;
+ struct strbuf buf = STRBUF_INIT;
+ int ret = is_inside_dir(strbuf_realpath(&buf, repo_get_git_dir(repo), 1));
+ strbuf_release(&buf);
+ return ret;
}
int is_inside_work_tree(void)
set_git_work_tree(".");
if (strcmp(gitdir, DEFAULT_GIT_DIR_ENVIRONMENT))
set_git_dir(repo, gitdir, 0);
- inside_git_dir = 0;
inside_work_tree = 1;
if (offset >= cwd->len)
return NULL;
return setup_explicit_git_dir(repo, gitdir, cwd, repo_fmt, nongit_ok);
}
- inside_git_dir = 1;
inside_work_tree = 0;
if (offset != cwd->len) {
if (chdir(cwd->buf))
#include "refs.h"
#include "string-list.h"
-int is_inside_git_dir(void);
+int is_inside_git_dir(struct repository *repo);
int is_inside_work_tree(void);
int get_common_dir_noenv(struct strbuf *sb, const char *gitdir);
int get_common_dir(struct strbuf *sb, const char *gitdir);