config.txt: third-party tools may and do use their own variables
[gitweb.git] / diff-no-index.c
index 74da659368e4db67715a9c81dc7a5e0edcd3bcce..00a8eefde9aeb96592f5ed6455dbf5d3b16747c4 100644 (file)
@@ -45,7 +45,7 @@ static int get_mode(const char *path, int *mode)
 
        if (!path || !strcmp(path, "/dev/null"))
                *mode = 0;
-#ifdef _WIN32
+#ifdef GIT_WINDOWS_NATIVE
        else if (!strcasecmp(path, "nul"))
                *mode = 0;
 #endif
@@ -187,7 +187,7 @@ void diff_no_index(struct rev_info *revs,
 {
        int i, prefixlen;
        int no_index = 0;
-       unsigned options = 0;
+       unsigned deprecated_show_diff_q_option_used = 0;
        const char *paths[2];
 
        /* Were we asked to do --no-index explicitly? */
@@ -215,9 +215,21 @@ void diff_no_index(struct rev_info *revs,
                     path_inside_repo(prefix, argv[i+1])))
                        return;
        }
-       if (argc != i + 2)
+       if (argc != i + 2) {
+               if (!no_index) {
+                       /*
+                        * There was no --no-index and there were not two
+                        * paths. It is possible that the user intended
+                        * to do an inside-repository operation.
+                        */
+                       fprintf(stderr, "Not a git repository\n");
+                       fprintf(stderr,
+                               "To compare two paths outside a working tree:\n");
+               }
+               /* Give the usage message for non-repository usage and exit. */
                usagef("git diff %s <path> <path>",
                       no_index ? "--no-index" : "[--no-index]");
+       }
 
        diff_setup(&revs->diffopt);
        for (i = 1; i < argc - 2; ) {
@@ -225,7 +237,7 @@ void diff_no_index(struct rev_info *revs,
                if (!strcmp(argv[i], "--no-index"))
                        i++;
                else if (!strcmp(argv[i], "-q")) {
-                       options |= DIFF_SILENT_ON_REMOVED;
+                       deprecated_show_diff_q_option_used = 1;
                        i++;
                }
                else if (!strcmp(argv[i], "--"))
@@ -260,6 +272,9 @@ void diff_no_index(struct rev_info *revs,
        revs->max_count = -2;
        diff_setup_done(&revs->diffopt);
 
+       if (deprecated_show_diff_q_option_used)
+               handle_deprecated_show_diff_q(&revs->diffopt);
+
        setup_diff_pager(&revs->diffopt);
        DIFF_OPT_SET(&revs->diffopt, EXIT_WITH_STATUS);