Code

git-rm: honor -n flag.
authorJunio C Hamano <junkio@cox.net>
Fri, 9 Jun 2006 04:11:25 +0000 (21:11 -0700)
committerJunio C Hamano <junkio@cox.net>
Fri, 9 Jun 2006 04:11:25 +0000 (21:11 -0700)
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>
builtin-rm.c

index ef2f8b5d099555c259a39985d8e765cf378e4431..4d56a1f07065e6e8ebaa95fdfe843cffb6283af3 100644 (file)
@@ -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; 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