Make send-pack --all and explicit ref mutually exclusive.
authorJunio C Hamano <junkio@cox.net>
Tue, 2 Aug 2005 19:20:27 +0000 (12:20 -0700)
committerJunio C Hamano <junkio@cox.net>
Wed, 3 Aug 2005 05:51:07 +0000 (22:51 -0700)
send-pack had a confusing misfeature that "send-pack --all
master" updated all refs, while "send-pack --all" did not do
anything.  Make --all and explicit refs mutually exclusive, and
make sure "send-pack --all" updates all refs.

Signed-off-by: Junio C Hamano <junkio@cox.net>
send-pack.c

index 9b4be61..5a3aff6 100644 (file)
@@ -4,7 +4,8 @@
 #include "pkt-line.h"
 
 static const char send_pack_usage[] =
-"git-send-pack [--exec=git-receive-pack] [host:]directory [heads]*";
+"git-send-pack [--all] [--exec=git-receive-pack] <remote> [<head>...]\n"
+"  --all and explicit <head> specification are mutually exclusive.";
 static const char *exec = "git-receive-pack";
 static int send_all = 0;
 static int force_update = 0;
@@ -214,7 +215,7 @@ static int send_pack(int in, int out, int nr_match, char **match)
        /*
         * See if we have any refs that the other end didn't have
         */
-       if (nr_match) {
+       if (nr_match || send_all) {
                local_ref_nr_match = nr_match;
                local_ref_match = match;
                local_ref_list = ref_list;
@@ -281,6 +282,8 @@ int main(int argc, char **argv)
        }
        if (!dest)
                usage(send_pack_usage);
+       if (heads && send_all)
+               usage(send_pack_usage);
        pid = git_connect(fd, dest, exec);
        if (pid < 0)
                return 1;