diff options
author | Junio C Hamano <gitster@pobox.com> | 2020-08-24 14:54:31 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-08-24 14:54:31 -0700 |
commit | d8488b9e86f241ba313d04091449869fb15154d6 (patch) | |
tree | ddeb0a5e726fe4d9ac1f57c95f37443ed653e322 /midx.c | |
parent | ff20794402177adc52cab849b98fc85f3c2da739 (diff) | |
parent | a698d67b08f98ddac0e6df898fbfab5b4fbd36b1 (diff) | |
download | git-d8488b9e86f241ba313d04091449869fb15154d6.tar.gz |
Merge branch 'rs/more-buffered-io'
Use more buffered I/O where we used to call many small write(2)s.
* rs/more-buffered-io:
upload-pack: use buffered I/O to talk to rev-list
midx: use buffered I/O to talk to pack-objects
connected: use buffered I/O to talk to rev-list
Diffstat (limited to 'midx.c')
-rw-r--r-- | midx.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -1402,6 +1402,7 @@ int midx_repack(struct repository *r, const char *object_dir, size_t batch_size, uint32_t i; unsigned char *include_pack; struct child_process cmd = CHILD_PROCESS_INIT; + FILE *cmd_in; struct strbuf base_name = STRBUF_INIT; struct multi_pack_index *m = load_multi_pack_index(object_dir, 1); @@ -1454,6 +1455,8 @@ int midx_repack(struct repository *r, const char *object_dir, size_t batch_size, goto cleanup; } + cmd_in = xfdopen(cmd.in, "w"); + for (i = 0; i < m->num_objects; i++) { struct object_id oid; uint32_t pack_int_id = nth_midxed_pack_int_id(m, i); @@ -1462,10 +1465,9 @@ int midx_repack(struct repository *r, const char *object_dir, size_t batch_size, continue; nth_midxed_object_oid(&oid, m, i); - xwrite(cmd.in, oid_to_hex(&oid), the_hash_algo->hexsz); - xwrite(cmd.in, "\n", 1); + fprintf(cmd_in, "%s\n", oid_to_hex(&oid)); } - close(cmd.in); + fclose(cmd_in); if (finish_command(&cmd)) { error(_("could not finish pack-objects")); |