mirror of
https://github.com/git/git.git
synced 2026-03-14 02:43:25 +01:00
Merge branch 'js/mingw-fallouts'
This commit is contained in:
@@ -462,34 +462,12 @@ static int sideband_demux(int fd, void *data)
|
||||
{
|
||||
int *xd = data;
|
||||
|
||||
close(xd[1]);
|
||||
return recv_sideband("fetch-pack", xd[0], fd, 2);
|
||||
}
|
||||
|
||||
static void setup_sideband(int fd[2], int xd[2], struct async *demux)
|
||||
{
|
||||
if (!use_sideband) {
|
||||
fd[0] = xd[0];
|
||||
fd[1] = xd[1];
|
||||
return;
|
||||
}
|
||||
/* xd[] is talking with upload-pack; subprocess reads from
|
||||
* xd[0], spits out band#2 to stderr, and feeds us band#1
|
||||
* through demux->out.
|
||||
*/
|
||||
demux->proc = sideband_demux;
|
||||
demux->data = xd;
|
||||
if (start_async(demux))
|
||||
die("fetch-pack: unable to fork off sideband demultiplexer");
|
||||
close(xd[0]);
|
||||
fd[0] = demux->out;
|
||||
fd[1] = xd[1];
|
||||
}
|
||||
|
||||
static int get_pack(int xd[2], char **pack_lockfile)
|
||||
{
|
||||
struct async demux;
|
||||
int fd[2];
|
||||
const char *argv[20];
|
||||
char keep_arg[256];
|
||||
char hdr_arg[256];
|
||||
@@ -497,7 +475,20 @@ static int get_pack(int xd[2], char **pack_lockfile)
|
||||
int do_keep = args.keep_pack;
|
||||
struct child_process cmd;
|
||||
|
||||
setup_sideband(fd, xd, &demux);
|
||||
memset(&demux, 0, sizeof(demux));
|
||||
if (use_sideband) {
|
||||
/* xd[] is talking with upload-pack; subprocess reads from
|
||||
* xd[0], spits out band#2 to stderr, and feeds us band#1
|
||||
* through demux->out.
|
||||
*/
|
||||
demux.proc = sideband_demux;
|
||||
demux.data = xd;
|
||||
if (start_async(&demux))
|
||||
die("fetch-pack: unable to fork off sideband"
|
||||
" demultiplexer");
|
||||
}
|
||||
else
|
||||
demux.out = xd[0];
|
||||
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.argv = argv;
|
||||
@@ -506,7 +497,7 @@ static int get_pack(int xd[2], char **pack_lockfile)
|
||||
if (!args.keep_pack && unpack_limit) {
|
||||
struct pack_header header;
|
||||
|
||||
if (read_pack_header(fd[0], &header))
|
||||
if (read_pack_header(demux.out, &header))
|
||||
die("protocol error: bad pack header");
|
||||
snprintf(hdr_arg, sizeof(hdr_arg), "--pack_header=%u,%u",
|
||||
ntohl(header.hdr_version), ntohl(header.hdr_entries));
|
||||
@@ -542,11 +533,10 @@ static int get_pack(int xd[2], char **pack_lockfile)
|
||||
*av++ = hdr_arg;
|
||||
*av++ = NULL;
|
||||
|
||||
cmd.in = fd[0];
|
||||
cmd.in = demux.out;
|
||||
cmd.git_cmd = 1;
|
||||
if (start_command(&cmd))
|
||||
die("fetch-pack: unable to fork off %s", argv[0]);
|
||||
close(fd[1]);
|
||||
if (do_keep && pack_lockfile)
|
||||
*pack_lockfile = index_pack_lockfile(cmd.out);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user