replace: refactor command-mode determination
[gitweb.git] / builtin / replace.c
index b62420a01af820225f23d08b4d0e885505640c77..28db96fcce1197a598ca58d81f3e2b26cf4a93ed 100644 (file)
@@ -182,12 +182,16 @@ int cmd_replace(int argc, const char **argv, const char *prefix)
 
        argc = parse_options(argc, argv, prefix, options, git_replace_usage, 0);
 
+       if (!list && !delete)
+               if (!argc)
+                       list = 1;
+
        if (list && delete)
                usage_msg_opt("-l and -d cannot be used together",
                              git_replace_usage, options);
 
-       if (format && delete)
-               usage_msg_opt("--format and -d cannot be used together",
+       if (format && !list)
+               usage_msg_opt("--format cannot be used when not listing",
                              git_replace_usage, options);
 
        if (force && (list || delete))
@@ -207,9 +211,6 @@ int cmd_replace(int argc, const char **argv, const char *prefix)
                if (argc != 2)
                        usage_msg_opt("bad number of arguments",
                                      git_replace_usage, options);
-               if (format)
-                       usage_msg_opt("--format cannot be used when not listing",
-                                     git_replace_usage, options);
                return replace_object(argv[0], argv[1], force);
        }
 
@@ -217,9 +218,6 @@ int cmd_replace(int argc, const char **argv, const char *prefix)
        if (argc > 1)
                usage_msg_opt("only one pattern can be given with -l",
                              git_replace_usage, options);
-       if (force)
-               usage_msg_opt("-f needs some arguments",
-                             git_replace_usage, options);
 
        return list_replace_refs(argv[0], format);
 }