diff options
author | Johannes Schindelin <Johannes.Schindelin@gmx.de> | 2007-01-23 13:30:20 +0100 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-02-05 14:02:16 -0800 |
commit | 6d9ba67b0fc2f18c1d7a65514edbdcdf86429c1c (patch) | |
tree | ed60e9bec4aa2adc5aecde724614f3fa4a542971 /builtin-ls-files.c | |
parent | 98d47d4ccf76725e7833c1bbda1da82f7648925f (diff) | |
download | git-6d9ba67b0fc2f18c1d7a65514edbdcdf86429c1c.tar.gz |
Commands requiring a work tree must not run in GIT_DIR
This patch helps when you accidentally run something like git-clean
in the git directory instead of the work tree.
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'builtin-ls-files.c')
-rw-r--r-- | builtin-ls-files.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/builtin-ls-files.c b/builtin-ls-files.c index 21c2a6e2d9..ac89eb2f77 100644 --- a/builtin-ls-files.c +++ b/builtin-ls-files.c @@ -323,7 +323,7 @@ static const char ls_files_usage[] = int cmd_ls_files(int argc, const char **argv, const char *prefix) { int i; - int exc_given = 0; + int exc_given = 0, require_work_tree = 0; struct dir_struct dir; memset(&dir, 0, sizeof(dir)); @@ -363,14 +363,17 @@ int cmd_ls_files(int argc, const char **argv, const char *prefix) } if (!strcmp(arg, "-m") || !strcmp(arg, "--modified")) { show_modified = 1; + require_work_tree = 1; continue; } if (!strcmp(arg, "-o") || !strcmp(arg, "--others")) { show_others = 1; + require_work_tree = 1; continue; } if (!strcmp(arg, "-i") || !strcmp(arg, "--ignored")) { dir.show_ignored = 1; + require_work_tree = 1; continue; } if (!strcmp(arg, "-s") || !strcmp(arg, "--stage")) { @@ -379,6 +382,7 @@ int cmd_ls_files(int argc, const char **argv, const char *prefix) } if (!strcmp(arg, "-k") || !strcmp(arg, "--killed")) { show_killed = 1; + require_work_tree = 1; continue; } if (!strcmp(arg, "--directory")) { @@ -447,6 +451,10 @@ int cmd_ls_files(int argc, const char **argv, const char *prefix) break; } + if (require_work_tree && + (is_bare_repository() || is_inside_git_dir())) + die("This operation must be run in a work tree"); + pathspec = get_pathspec(prefix, argv + i); /* Verify that the pathspec matches the prefix */ |