Code

Merge branch 'jc/maint-lf-to-crlf-keep-crlf' into maint
[git.git] / builtin / ls-remote.c
index 1a1ff87e8f9ed7db84f106960f36888835f7057b..41c88a98a2de1ce817351243f9aa9e2811604097 100644 (file)
@@ -5,7 +5,7 @@
 
 static const char ls_remote_usage[] =
 "git ls-remote [--heads] [--tags]  [-u <exec> | --upload-pack <exec>]\n"
-"                     [-q|--quiet] [<repository> [<refs>...]]";
+"                     [-q|--quiet] [--exit-code] [<repository> [<refs>...]]";
 
 /*
  * Is there one among the list of patterns that match the tail part
@@ -35,6 +35,7 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
        unsigned flags = 0;
        int get_url = 0;
        int quiet = 0;
+       int status = 0;
        const char *uploadpack = NULL;
        const char **pattern = NULL;
 
@@ -42,6 +43,9 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
        struct transport *transport;
        const struct ref *ref;
 
+       if (argc == 2 && !strcmp("-h", argv[1]))
+               usage(ls_remote_usage);
+
        for (i = 1; i < argc; i++) {
                const char *arg = argv[i];
 
@@ -74,6 +78,11 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
                                get_url = 1;
                                continue;
                        }
+                       if (!strcmp("--exit-code", arg)) {
+                               /* return this code if no refs are reported */
+                               status = 2;
+                               continue;
+                       }
                        usage(ls_remote_usage);
                }
                dest = arg;
@@ -121,6 +130,7 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
                if (!tail_match(pattern, ref->name))
                        continue;
                printf("%s      %s\n", sha1_to_hex(ref->old_sha1), ref->name);
+               status = 0; /* we found something */
        }
-       return 0;
+       return status;
 }