Merge branch 'js/forkexec'
* js/forkexec: Use the asyncronous function infrastructure to run the content filter. Avoid a dup2(2) in apply_filter() - start_command() can do it for us. t0021-conversion.sh: Test that the clean filter really cleans content. upload-pack: Run rev-list in an asynchronous function. upload-pack: Move the revision walker into a separate function. Use the asyncronous function infrastructure in builtin-fetch-pack.c. Add infrastructure to run a function asynchronously. upload-pack: Use start_command() to run pack-objects in create_pack_file(). Have start_command() create a pipe to read the stderr of the child. Use start_comand() in builtin-fetch-pack.c instead of explicit fork/exec. Use run_command() to spawn external diff programs instead of fork/exec. Use start_command() to run content filters instead of explicit fork/exec. Use start_command() in git_connect() instead of explicit fork/exec. Change git_connect() to return a struct child_process instead of a pid_t. Conflicts: builtin-fetch-pack.c
This commit is contained in:
@ -384,7 +384,7 @@ int main(int argc, char **argv)
|
||||
char *dest = NULL;
|
||||
char **heads = NULL;
|
||||
int fd[2], ret;
|
||||
pid_t pid;
|
||||
struct child_process *conn;
|
||||
char *remote_name = NULL;
|
||||
struct remote *remote = NULL;
|
||||
|
||||
@ -452,12 +452,10 @@ int main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
pid = git_connect(fd, dest, receivepack, verbose ? CONNECT_VERBOSE : 0);
|
||||
if (pid < 0)
|
||||
return 1;
|
||||
conn = git_connect(fd, dest, receivepack, verbose ? CONNECT_VERBOSE : 0);
|
||||
ret = send_pack(fd[0], fd[1], remote, nr_heads, heads);
|
||||
close(fd[0]);
|
||||
close(fd[1]);
|
||||
ret |= finish_connect(pid);
|
||||
ret |= finish_connect(conn);
|
||||
return !!ret;
|
||||
}
|
||||
|
Reference in New Issue
Block a user