diff options
| author | Junio C Hamano <junkio@cox.net> | 2006-06-21 02:50:59 -0700 |
|---|---|---|
| committer | Junio C Hamano <junkio@cox.net> | 2006-06-21 02:50:59 -0700 |
| commit | 3bec0da08d6df03a103ddc4237cf2c79992c7dd4 (patch) | |
| tree | c6b26993418a86b7c1eb72dcdff17489b5e410b1 /fetch-pack.c | |
| parent | 48401221b349696357b35e02ff3e2c3d3c89d306 (diff) | |
| parent | 583b7ea31b7c16f872b178d541591ab816d16f85 (diff) | |
| download | git-3bec0da08d6df03a103ddc4237cf2c79992c7dd4.tar.gz | |
Merge branch 'jc/upload-corrupt' into next
* jc/upload-corrupt:
upload-pack/fetch-pack: support side-band communication
Retire git-clone-pack
upload-pack: prepare for sideband message support.
upload-pack: avoid sending an incomplete pack upon failure
Fix possible out-of-bounds array access
Diffstat (limited to 'fetch-pack.c')
| -rw-r--r-- | fetch-pack.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/fetch-pack.c b/fetch-pack.c index 7d23a8071a..f2c51ebe4b 100644 --- a/fetch-pack.c +++ b/fetch-pack.c @@ -25,7 +25,7 @@ static const char *exec = "git-upload-pack"; #define MAX_IN_VAIN 256 static struct commit_list *rev_list = NULL; -static int non_common_revs = 0, multi_ack = 0, use_thin_pack = 0; +static int non_common_revs = 0, multi_ack = 0, use_thin_pack = 0, use_sideband; static void rev_list_push(struct commit *commit, int mark) { @@ -165,9 +165,14 @@ static int find_common(int fd[2], unsigned char *result_sha1, continue; } - packet_write(fd[1], "want %s%s%s\n", sha1_to_hex(remote), - (multi_ack ? " multi_ack" : ""), - (use_thin_pack ? " thin-pack" : "")); + if (!fetching) + packet_write(fd[1], "want %s%s%s%s\n", + sha1_to_hex(remote), + (multi_ack ? " multi_ack" : ""), + (use_sideband ? " side-band" : ""), + (use_thin_pack ? " thin-pack" : "")); + else + packet_write(fd[1], "want %s\n", sha1_to_hex(remote)); fetching++; } packet_flush(fd[1]); @@ -421,6 +426,11 @@ static int fetch_pack(int fd[2], int nr_match, char **match) fprintf(stderr, "Server supports multi_ack\n"); multi_ack = 1; } + if (server_supports("side-band")) { + if (verbose) + fprintf(stderr, "Server supports side-band\n"); + use_sideband = 1; + } if (!ref) { packet_flush(fd[1]); die("no matching remote head"); @@ -437,9 +447,9 @@ static int fetch_pack(int fd[2], int nr_match, char **match) fprintf(stderr, "warning: no common commits\n"); if (keep_pack) - status = receive_keep_pack(fd, "git-fetch-pack", quiet); + status = receive_keep_pack(fd, "git-fetch-pack", quiet, use_sideband); else - status = receive_unpack_pack(fd, "git-fetch-pack", quiet); + status = receive_unpack_pack(fd, "git-fetch-pack", quiet, use_sideband); if (status) die("git-fetch-pack: fetch failed."); |
