Browse Source

Merge branch 'cb/push-quiet'

* cb/push-quiet:
  t5541: avoid TAP test miscounting
  fix push --quiet: add 'quiet' capability to receive-pack
  server_supports(): parse feature list more carefully
maint
Junio C Hamano 13 years ago
parent
commit
7b718fbf17
  1. 19
      builtin/receive-pack.c
  2. 13
      builtin/send-pack.c
  3. 1
      cache.h
  4. 23
      connect.c
  5. 4
      remote-curl.c
  6. 7
      t/t5523-push-upstream.sh
  7. 8
      t/t5541-http-push.sh
  8. 22
      upload-pack.c

19
builtin/receive-pack.c

@ -33,6 +33,7 @@ static int transfer_unpack_limit = -1; @@ -33,6 +33,7 @@ static int transfer_unpack_limit = -1;
static int unpack_limit = 100;
static int report_status;
static int use_sideband;
static int quiet;
static int prefer_ofs_delta = 1;
static int auto_update_server_info;
static int auto_gc = 1;
@ -122,7 +123,7 @@ static void show_ref(const char *path, const unsigned char *sha1) @@ -122,7 +123,7 @@ static void show_ref(const char *path, const unsigned char *sha1)
else
packet_write(1, "%s %s%c%s%s\n",
sha1_to_hex(sha1), path, 0,
" report-status delete-refs side-band-64k",
" report-status delete-refs side-band-64k quiet",
prefer_ofs_delta ? " ofs-delta" : "");
sent_capabilities = 1;
}
@ -748,10 +749,13 @@ static struct command *read_head_info(void) @@ -748,10 +749,13 @@ static struct command *read_head_info(void)
refname = line + 82;
reflen = strlen(refname);
if (reflen + 82 < len) {
if (strstr(refname + reflen + 1, "report-status"))
const char *feature_list = refname + reflen + 1;
if (parse_feature_request(feature_list, "report-status"))
report_status = 1;
if (strstr(refname + reflen + 1, "side-band-64k"))
if (parse_feature_request(feature_list, "side-band-64k"))
use_sideband = LARGE_PACKET_MAX;
if (parse_feature_request(feature_list, "quiet"))
quiet = 1;
}
cmd = xcalloc(1, sizeof(struct command) + len - 80);
hashcpy(cmd->old_sha1, old_sha1);
@ -805,8 +809,10 @@ static const char *unpack(void) @@ -805,8 +809,10 @@ static const char *unpack(void)

if (ntohl(hdr.hdr_entries) < unpack_limit) {
int code, i = 0;
const char *unpacker[4];
const char *unpacker[5];
unpacker[i++] = "unpack-objects";
if (quiet)
unpacker[i++] = "-q";
if (fsck_objects)
unpacker[i++] = "--strict";
unpacker[i++] = hdr_arg;
@ -901,6 +907,11 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix) @@ -901,6 +907,11 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix)
const char *arg = *argv++;

if (*arg == '-') {
if (!strcmp(arg, "--quiet")) {
quiet = 1;
continue;
}

if (!strcmp(arg, "--advertise-refs")) {
advertise_refs = 1;
continue;

13
builtin/send-pack.c

@ -263,6 +263,8 @@ int send_pack(struct send_pack_args *args, @@ -263,6 +263,8 @@ int send_pack(struct send_pack_args *args,
args->use_ofs_delta = 1;
if (server_supports("side-band-64k"))
use_sideband = 1;
if (!server_supports("quiet"))
args->quiet = 0;

if (!remote_refs) {
fprintf(stderr, "No refs in common and none specified; doing nothing.\n"
@ -301,11 +303,12 @@ int send_pack(struct send_pack_args *args, @@ -301,11 +303,12 @@ int send_pack(struct send_pack_args *args,
char *old_hex = sha1_to_hex(ref->old_sha1);
char *new_hex = sha1_to_hex(ref->new_sha1);

if (!cmds_sent && (status_report || use_sideband)) {
packet_buf_write(&req_buf, "%s %s %s%c%s%s",
if (!cmds_sent && (status_report || use_sideband || args->quiet)) {
packet_buf_write(&req_buf, "%s %s %s%c%s%s%s",
old_hex, new_hex, ref->name, 0,
status_report ? " report-status" : "",
use_sideband ? " side-band-64k" : "");
use_sideband ? " side-band-64k" : "",
args->quiet ? " quiet" : "");
}
else
packet_buf_write(&req_buf, "%s %s %s",
@ -439,6 +442,10 @@ int cmd_send_pack(int argc, const char **argv, const char *prefix) @@ -439,6 +442,10 @@ int cmd_send_pack(int argc, const char **argv, const char *prefix)
args.force_update = 1;
continue;
}
if (!strcmp(arg, "--quiet")) {
args.quiet = 1;
continue;
}
if (!strcmp(arg, "--verbose")) {
args.verbose = 1;
continue;

1
cache.h

@ -1037,6 +1037,7 @@ struct extra_have_objects { @@ -1037,6 +1037,7 @@ struct extra_have_objects {
};
extern struct ref **get_remote_heads(int in, struct ref **list, unsigned int flags, struct extra_have_objects *);
extern int server_supports(const char *feature);
extern const char *parse_feature_request(const char *features, const char *feature);

extern struct packed_git *parse_pack_index(unsigned char *sha1, const char *idx_path);


23
connect.c

@ -101,8 +101,27 @@ struct ref **get_remote_heads(int in, struct ref **list, @@ -101,8 +101,27 @@ struct ref **get_remote_heads(int in, struct ref **list,

int server_supports(const char *feature)
{
return server_capabilities &&
strstr(server_capabilities, feature) != NULL;
return !!parse_feature_request(server_capabilities, feature);
}

const char *parse_feature_request(const char *feature_list, const char *feature)
{
int len;

if (!feature_list)
return NULL;

len = strlen(feature);
while (*feature_list) {
const char *found = strstr(feature_list, feature);
if (!found)
return NULL;
if ((feature_list == found || isspace(found[-1])) &&
(!found[len] || isspace(found[len]) || found[len] == '='))
return found;
feature_list = found + 1;
}
return NULL;
}

enum protocol {

4
remote-curl.c

@ -770,7 +770,9 @@ static int push_git(struct discovery *heads, int nr_spec, char **specs) @@ -770,7 +770,9 @@ static int push_git(struct discovery *heads, int nr_spec, char **specs)
argv[argc++] = "--thin";
if (options.dry_run)
argv[argc++] = "--dry-run";
if (options.verbosity > 1)
if (options.verbosity == 0)
argv[argc++] = "--quiet";
else if (options.verbosity > 1)
argv[argc++] = "--verbose";
argv[argc++] = url;
for (i = 0; i < nr_spec; i++)

7
t/t5523-push-upstream.sh

@ -108,4 +108,11 @@ test_expect_failure TTY 'push --no-progress suppresses progress' ' @@ -108,4 +108,11 @@ test_expect_failure TTY 'push --no-progress suppresses progress' '
! grep "Writing objects" err
'

test_expect_success TTY 'quiet push' '
ensure_fresh_upstream &&

test_terminal git push --quiet --no-progress upstream master 2>&1 | tee output &&
test_cmp /dev/null output
'

test_done

8
t/t5541-http-push.sh

@ -14,6 +14,7 @@ fi @@ -14,6 +14,7 @@ fi
ROOT_PATH="$PWD"
LIB_HTTPD_PORT=${LIB_HTTPD_PORT-'5541'}
. "$TEST_DIRECTORY"/lib-httpd.sh
. "$TEST_DIRECTORY"/lib-terminal.sh
start_httpd

test_expect_success 'setup remote repository' '
@ -186,5 +187,12 @@ test_expect_success 'push --mirror to repo with alternates' ' @@ -186,5 +187,12 @@ test_expect_success 'push --mirror to repo with alternates' '
git push --mirror "$HTTPD_URL"/smart/alternates-mirror.git
'

test_expect_success TTY 'quiet push' '
cd "$ROOT_PATH"/test_repo_clone &&
test_commit quiet &&
test_terminal git push --quiet --no-progress 2>&1 | tee output &&
test_cmp /dev/null output
'

stop_httpd
test_done

22
upload-pack.c

@ -585,6 +585,7 @@ static void receive_needs(void) @@ -585,6 +585,7 @@ static void receive_needs(void)
write_str_in_full(debug_fd, "#S\n");
for (;;) {
struct object *o;
const char *features;
unsigned char sha1_buf[20];
len = packet_read_line(0, line, sizeof(line));
reset_timeout();
@ -616,23 +617,26 @@ static void receive_needs(void) @@ -616,23 +617,26 @@ static void receive_needs(void)
get_sha1_hex(line+5, sha1_buf))
die("git upload-pack: protocol error, "
"expected to get sha, not '%s'", line);
if (strstr(line+45, "multi_ack_detailed"))

features = line + 45;

if (parse_feature_request(features, "multi_ack_detailed"))
multi_ack = 2;
else if (strstr(line+45, "multi_ack"))
else if (parse_feature_request(features, "multi_ack"))
multi_ack = 1;
if (strstr(line+45, "no-done"))
if (parse_feature_request(features, "no-done"))
no_done = 1;
if (strstr(line+45, "thin-pack"))
if (parse_feature_request(features, "thin-pack"))
use_thin_pack = 1;
if (strstr(line+45, "ofs-delta"))
if (parse_feature_request(features, "ofs-delta"))
use_ofs_delta = 1;
if (strstr(line+45, "side-band-64k"))
if (parse_feature_request(features, "side-band-64k"))
use_sideband = LARGE_PACKET_MAX;
else if (strstr(line+45, "side-band"))
else if (parse_feature_request(features, "side-band"))
use_sideband = DEFAULT_PACKET_MAX;
if (strstr(line+45, "no-progress"))
if (parse_feature_request(features, "no-progress"))
no_progress = 1;
if (strstr(line+45, "include-tag"))
if (parse_feature_request(features, "include-tag"))
use_include_tag = 1;

o = lookup_object(sha1_buf);

Loading…
Cancel
Save