diff options
author | Junio C Hamano <gitster@pobox.com> | 2009-08-16 04:13:13 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-08-16 04:13:13 -0700 |
commit | 14683af812ee0b19c416223287c6e330dbdc9ffc (patch) | |
tree | 8f6aba92fa7a9e1f088129b1ebc4f6082d4c8d31 /builtin-clean.c | |
parent | b21f9e7f860620571667fba33ed511bed59dfb14 (diff) | |
parent | a0f4afbe87ddda7902e36350d163dea146166550 (diff) | |
download | git-14683af812ee0b19c416223287c6e330dbdc9ffc.tar.gz git-14683af812ee0b19c416223287c6e330dbdc9ffc.tar.xz |
Merge branch 'jc/maint-clean-nested-dir-safety'
* jc/maint-clean-nested-dir-safety:
clean: require double -f options to nuke nested git repository and work tree
Diffstat (limited to 'builtin-clean.c')
-rw-r--r-- | builtin-clean.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/builtin-clean.c b/builtin-clean.c index 2d8c735d4..05c763cbe 100644 --- a/builtin-clean.c +++ b/builtin-clean.c @@ -31,6 +31,7 @@ int cmd_clean(int argc, const char **argv, const char *prefix) int i; int show_only = 0, remove_directories = 0, quiet = 0, ignored = 0; int ignored_only = 0, baselen = 0, config_set = 0, errors = 0; + int rm_flags = REMOVE_DIR_KEEP_NESTED_GIT; struct strbuf directory = STRBUF_INIT; struct dir_struct dir; static const char **pathspec; @@ -69,6 +70,9 @@ int cmd_clean(int argc, const char **argv, const char *prefix) die("clean.requireForce%s set and -n or -f not given; " "refusing to clean", config_set ? "" : " not"); + if (force > 1) + rm_flags = 0; + dir.flags |= DIR_SHOW_OTHER_DIRECTORIES; if (!ignored) @@ -131,7 +135,8 @@ int cmd_clean(int argc, const char **argv, const char *prefix) (matches == MATCHED_EXACTLY)) { if (!quiet) printf("Removing %s\n", qname); - if (remove_dir_recursively(&directory, 0) != 0) { + if (remove_dir_recursively(&directory, + rm_flags) != 0) { warning("failed to remove '%s'", qname); errors++; } |