1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-21 18:36:07 +02:00

send-pack: use internal argv_array of struct child_process

Avoid a magic number of NULL placeholder values and a magic index by
constructing the command line for pack-objects using the embedded
argv_array of the child_process.  The resulting code is shorter and
easier to extend.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
René Scharfe 2017-12-22 09:14:10 +01:00 committed by Junio C Hamano
parent c7191fa510
commit a923e05944

View File

@ -58,35 +58,25 @@ static int pack_objects(int fd, struct ref *refs, struct oid_array *extra, struc
* the revision parameters to it via its stdin and
* let its stdout go back to the other end.
*/
const char *argv[] = {
"pack-objects",
"--all-progress-implied",
"--revs",
"--stdout",
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
};
struct child_process po = CHILD_PROCESS_INIT;
FILE *po_in;
int i;
int rc;
i = 4;
argv_array_push(&po.args, "pack-objects");
argv_array_push(&po.args, "--all-progress-implied");
argv_array_push(&po.args, "--revs");
argv_array_push(&po.args, "--stdout");
if (args->use_thin_pack)
argv[i++] = "--thin";
argv_array_push(&po.args, "--thin");
if (args->use_ofs_delta)
argv[i++] = "--delta-base-offset";
argv_array_push(&po.args, "--delta-base-offset");
if (args->quiet || !args->progress)
argv[i++] = "-q";
argv_array_push(&po.args, "-q");
if (args->progress)
argv[i++] = "--progress";
argv_array_push(&po.args, "--progress");
if (is_repository_shallow())
argv[i++] = "--shallow";
po.argv = argv;
argv_array_push(&po.args, "--shallow");
po.in = -1;
po.out = args->stateless_rpc ? -1 : fd;
po.git_cmd = 1;