Make send-pack --all and explicit ref mutually exclusive.
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>
This commit is contained in:
parent
72d7121cc0
commit
0bc3cdfc82
@ -4,7 +4,8 @@
|
|||||||
#include "pkt-line.h"
|
#include "pkt-line.h"
|
||||||
|
|
||||||
static const char send_pack_usage[] =
|
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 const char *exec = "git-receive-pack";
|
||||||
static int send_all = 0;
|
static int send_all = 0;
|
||||||
static int force_update = 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
|
* 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_nr_match = nr_match;
|
||||||
local_ref_match = match;
|
local_ref_match = match;
|
||||||
local_ref_list = ref_list;
|
local_ref_list = ref_list;
|
||||||
@ -281,6 +282,8 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
if (!dest)
|
if (!dest)
|
||||||
usage(send_pack_usage);
|
usage(send_pack_usage);
|
||||||
|
if (heads && send_all)
|
||||||
|
usage(send_pack_usage);
|
||||||
pid = git_connect(fd, dest, exec);
|
pid = git_connect(fd, dest, exec);
|
||||||
if (pid < 0)
|
if (pid < 0)
|
||||||
return 1;
|
return 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user