Johannes Schindelin <Johannes.Schindelin@xxxxxx> writes: > This patch helps when you accidentally run something like git-clean > in the git directory instead of the work tree. I think "require_work_tree" reflects what we are trying to do much better than NOT_BARE. So maybe we should rename NOT_BARE to REQUIRE_WORK_TREE. Existing check function is_bare_repository() is sometimes used to see if it is a bare repository regardless of where you are (e.g. refs.c::log_ref_write()), so that function can stay as is, but the combined check below (you seem to have a few instances in your patch) can be made into a function require_work_tree(). > diff --git a/git.c b/git.c > index 5133a07..2027d1c 100644 > --- a/git.c > +++ b/git.c > @@ -302,8 +302,9 @@ static void handle_internal_command(int argc, const char **argv, char **envp) > prefix = setup_git_directory(); > if (p->option & USE_PAGER) > setup_pager(); > - if ((p->option & NOT_BARE) && is_bare_repository()) > - die("%s cannot be used in a bare git directory", cmd); > + if ((p->option & NOT_BARE) && > + (is_bare_repository() || is_inside_git_dir())) > + die("%s must be run in a work tree", cmd); > trace_argv_printf(argv, argc, "trace: built-in: git"); > > exit(p->fn(argc, argv, prefix)); Similar to the "conditionally require working tree" you did to ls-files, "apply --index" and perhaps "apply --cached" (but this is "perhaps" --- you _could_ have an index in a bare repository, although it is debatable if there is a valid use case for it), grep (grep_cache() but perhaps !cached for the same reason), "read-tree -u", "rerere", "update-index" (except --index-info and friends that feed object names directly without using working tree), should require working tree. On the script front, bisect should require working tree, but I do not think anybody is stupid enough to start bisecting in a bare repository ;-) - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html