Code

Merge branch 'maint'
[git.git] / builtin-rm.c
index d81f289c3c28fa9afbc99facf6ea81b68306a46d..bf42003a7e79f96bf4964b116ddd3ee79350e682 100644 (file)
@@ -10,7 +10,7 @@
 #include "tree-walk.h"
 
 static const char builtin_rm_usage[] =
-"git-rm [-n] [-f] [--cached] <filepattern>...";
+"git-rm [-f] [-n] [-r] [--cached] [--] <file>...";
 
 static struct {
        int nr, alloc;
@@ -89,20 +89,10 @@ static int check_local_mod(unsigned char *head)
                if (ce_match_stat(ce, &st, 0))
                        errs = error("'%s' has local modifications "
                                     "(hint: try -f)", ce->name);
-               if (no_head)
-                       continue;
-               /*
-                * It is Ok to remove a newly added path, as long as
-                * it is cache-clean.
-                */
-               if (get_tree_entry(head, name, sha1, &mode))
-                       continue;
-               /*
-                * Otherwise make sure the version from the HEAD
-                * matches the index.
-                */
-               if (ce->ce_mode != create_ce_mode(mode) ||
-                   hashcmp(ce->sha1, sha1))
+               if (no_head
+                    || get_tree_entry(head, name, sha1, &mode)
+                    || ce->ce_mode != create_ce_mode(mode)
+                    || hashcmp(ce->sha1, sha1))
                        errs = error("'%s' has changes staged in the index "
                                     "(hint: try -f)", name);
        }