git-rm: honor -n flag.
Even when invoked with -n flag, git-rm removed the matching paths anyway. Also includes the missing check spotted by SungHyun Nam, which caused it to segfault. Now we refuse to run without any paths. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
2048bb00ee
commit
7612a1efdb
@ -83,15 +83,15 @@ int cmd_rm(int argc, const char **argv, char **envp)
|
||||
}
|
||||
die(builtin_rm_usage);
|
||||
}
|
||||
pathspec = get_pathspec(prefix, argv + i);
|
||||
if (argc <= i)
|
||||
usage(builtin_rm_usage);
|
||||
|
||||
pathspec = get_pathspec(prefix, argv + i);
|
||||
seen = NULL;
|
||||
if (pathspec) {
|
||||
for (i = 0; pathspec[i] ; i++)
|
||||
/* nothing */;
|
||||
seen = xmalloc(i);
|
||||
memset(seen, 0, i);
|
||||
}
|
||||
|
||||
for (i = 0; i < active_nr; i++) {
|
||||
struct cache_entry *ce = active_cache[i];
|
||||
@ -121,6 +121,9 @@ int cmd_rm(int argc, const char **argv, char **envp)
|
||||
cache_tree_invalidate_path(active_cache_tree, path);
|
||||
}
|
||||
|
||||
if (show_only)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* Then, if we used "-f", remove the filenames from the
|
||||
* workspace. If we fail to remove the first one, we
|
||||
|
Loading…
Reference in New Issue
Block a user