Fixup no-progress for fetch & clone
The intent of the commit 'fetch & clone: do not output progress when not on a tty' was to make fetching and cloning less chatty when output was not redirected (such as in a cron job). However, there was a serious thinko in that commit. It assumed that the client _and_ the server got this update at the same time. But this is obviously not the case, and therefore upload-pack died on seeing the option "--no-progress". This patch fixes that issue by making it a protocol option. So, until your server is updated, you still see the progress, but once the server has this patch, it will be quiet. A minor issue was also fixed: when cloning, the checkout did not heed no_progress. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
83a5ad6126
commit
b0e908977e
@ -8,7 +8,7 @@ git-upload-pack - Send objects packed back to git-fetch-pack
|
|||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
'git-upload-pack' [--strict] [--timeout=<n>] [--no-progress] <directory>
|
'git-upload-pack' [--strict] [--timeout=<n>] <directory>
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -30,9 +30,6 @@ OPTIONS
|
|||||||
\--timeout=<n>::
|
\--timeout=<n>::
|
||||||
Interrupt transfer after <n> seconds of inactivity.
|
Interrupt transfer after <n> seconds of inactivity.
|
||||||
|
|
||||||
\--no-progress::
|
|
||||||
Do not show the progress.
|
|
||||||
|
|
||||||
<directory>::
|
<directory>::
|
||||||
The repository to sync from.
|
The repository to sync from.
|
||||||
|
|
||||||
|
@ -174,12 +174,13 @@ static int find_common(int fd[2], unsigned char *result_sha1,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!fetching)
|
if (!fetching)
|
||||||
packet_write(fd[1], "want %s%s%s%s%s%s\n",
|
packet_write(fd[1], "want %s%s%s%s%s%s%s\n",
|
||||||
sha1_to_hex(remote),
|
sha1_to_hex(remote),
|
||||||
(multi_ack ? " multi_ack" : ""),
|
(multi_ack ? " multi_ack" : ""),
|
||||||
(use_sideband == 2 ? " side-band-64k" : ""),
|
(use_sideband == 2 ? " side-band-64k" : ""),
|
||||||
(use_sideband == 1 ? " side-band" : ""),
|
(use_sideband == 1 ? " side-band" : ""),
|
||||||
(use_thin_pack ? " thin-pack" : ""),
|
(use_thin_pack ? " thin-pack" : ""),
|
||||||
|
(no_progress ? " no-progress" : ""),
|
||||||
" ofs-delta");
|
" ofs-delta");
|
||||||
else
|
else
|
||||||
packet_write(fd[1], "want %s\n", sha1_to_hex(remote));
|
packet_write(fd[1], "want %s\n", sha1_to_hex(remote));
|
||||||
@ -732,11 +733,6 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
if (!dest)
|
if (!dest)
|
||||||
usage(fetch_pack_usage);
|
usage(fetch_pack_usage);
|
||||||
if (no_progress) {
|
|
||||||
char buf[256];
|
|
||||||
snprintf(buf, sizeof(buf), "%s --no-progress", uploadpack);
|
|
||||||
pid = git_connect(fd, dest, buf);
|
|
||||||
} else
|
|
||||||
pid = git_connect(fd, dest, uploadpack);
|
pid = git_connect(fd, dest, uploadpack);
|
||||||
if (pid < 0)
|
if (pid < 0)
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -395,7 +395,7 @@ then
|
|||||||
|
|
||||||
case "$no_checkout" in
|
case "$no_checkout" in
|
||||||
'')
|
'')
|
||||||
test "z$quiet" = z && v=-v || v=
|
test "z$quiet" = z -a "z$no_progress" = z && v=-v || v=
|
||||||
git-read-tree -m -u $v HEAD HEAD
|
git-read-tree -m -u $v HEAD HEAD
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
#include "revision.h"
|
#include "revision.h"
|
||||||
#include "list-objects.h"
|
#include "list-objects.h"
|
||||||
|
|
||||||
static const char upload_pack_usage[] = "git-upload-pack [--strict] [--timeout=nn] [--no-progress] <dir>";
|
static const char upload_pack_usage[] = "git-upload-pack [--strict] [--timeout=nn] <dir>";
|
||||||
|
|
||||||
/* bits #0..7 in revision.h, #8..10 in commit.c */
|
/* bits #0..7 in revision.h, #8..10 in commit.c */
|
||||||
#define THEY_HAVE (1u << 11)
|
#define THEY_HAVE (1u << 11)
|
||||||
@ -547,6 +547,8 @@ static void receive_needs(void)
|
|||||||
use_sideband = LARGE_PACKET_MAX;
|
use_sideband = LARGE_PACKET_MAX;
|
||||||
else if (strstr(line+45, "side-band"))
|
else if (strstr(line+45, "side-band"))
|
||||||
use_sideband = DEFAULT_PACKET_MAX;
|
use_sideband = DEFAULT_PACKET_MAX;
|
||||||
|
if (strstr(line+45, "no-progress"))
|
||||||
|
no_progress = 1;
|
||||||
|
|
||||||
/* We have sent all our refs already, and the other end
|
/* We have sent all our refs already, and the other end
|
||||||
* should have chosen out of them; otherwise they are
|
* should have chosen out of them; otherwise they are
|
||||||
@ -615,7 +617,7 @@ static void receive_needs(void)
|
|||||||
static int send_ref(const char *refname, const unsigned char *sha1, int flag, void *cb_data)
|
static int send_ref(const char *refname, const unsigned char *sha1, int flag, void *cb_data)
|
||||||
{
|
{
|
||||||
static const char *capabilities = "multi_ack thin-pack side-band"
|
static const char *capabilities = "multi_ack thin-pack side-band"
|
||||||
" side-band-64k ofs-delta shallow";
|
" side-band-64k ofs-delta shallow no-progress";
|
||||||
struct object *o = parse_object(sha1);
|
struct object *o = parse_object(sha1);
|
||||||
|
|
||||||
if (!o)
|
if (!o)
|
||||||
@ -670,10 +672,6 @@ int main(int argc, char **argv)
|
|||||||
timeout = atoi(arg+10);
|
timeout = atoi(arg+10);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (!strcmp(arg, "--no-progress")) {
|
|
||||||
no_progress = 1;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (!strcmp(arg, "--")) {
|
if (!strcmp(arg, "--")) {
|
||||||
i++;
|
i++;
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user