diff options
author | Shawn O. Pearce <spearce@spearce.org> | 2007-01-30 11:07:24 -0500 |
---|---|---|
committer | Shawn O. Pearce <spearce@spearce.org> | 2007-01-30 11:07:24 -0500 |
commit | 76db9dec8132d4377f6c32e4d45eb75fa0cc7a9a (patch) | |
tree | 80a6b54d21978b5c3879662bdc4f5951f804b808 /setup.c | |
parent | b715cfbba4083d25ec0d0f94e440ad734607ddb0 (diff) | |
parent | 73a2acc0a09829f887fdf2dbcfba217102227932 (diff) | |
download | git-76db9dec8132d4377f6c32e4d45eb75fa0cc7a9a.tar.gz |
Merge branch 'master' into sp/gfi
git-fast-import requires use of inttypes.h, but the master branch has
added it to git-compat-util differently than git-fast-import originally
had used it. This merge back of master to the fast-import topic is to
get (and use) inttypes.h the way master is using it.
This is a partially evil merge to remove the call to setup_ident(),
as the master branch now contains a change which makes this implicit
and therefore removed the function declaration. (commit 01754769).
Conflicts:
git-compat-util.h
Diffstat (limited to 'setup.c')
-rw-r--r-- | setup.c | 26 |
1 files changed, 26 insertions, 0 deletions
@@ -95,6 +95,8 @@ void verify_non_filename(const char *prefix, const char *arg) const char *name; struct stat st; + if (is_inside_git_dir()) + return; if (*arg == '-') return; /* flag */ name = prefix ? prefix_filename(prefix, strlen(prefix), arg) : arg; @@ -168,6 +170,28 @@ static int is_git_directory(const char *suspect) return 1; } +static int inside_git_dir = -1; + +int is_inside_git_dir(void) +{ + if (inside_git_dir < 0) { + char buffer[1024]; + + if (is_bare_repository()) + return (inside_git_dir = 1); + if (getcwd(buffer, sizeof(buffer))) { + const char *git_dir = get_git_dir(), *cwd = buffer; + while (*git_dir && *git_dir == *cwd) { + git_dir++; + cwd++; + } + inside_git_dir = !*git_dir; + } else + inside_git_dir = 0; + } + return inside_git_dir; +} + const char *setup_git_directory_gently(int *nongit_ok) { static char cwd[PATH_MAX+1]; @@ -206,6 +230,7 @@ const char *setup_git_directory_gently(int *nongit_ok) if (chdir(cwd)) die("Cannot come back to cwd"); setenv(GIT_DIR_ENVIRONMENT, cwd, 1); + inside_git_dir = 1; return NULL; } if (nongit_ok) { @@ -226,6 +251,7 @@ const char *setup_git_directory_gently(int *nongit_ok) offset++; cwd[len++] = '/'; cwd[len] = 0; + inside_git_dir = !strncmp(cwd + offset, ".git/", 5); return cwd + offset; } |