summaryrefslogtreecommitdiff
path: root/midx.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2020-08-24 21:54:31 (GMT)
committerJunio C Hamano <gitster@pobox.com>2020-08-24 21:54:31 (GMT)
commitd8488b9e86f241ba313d04091449869fb15154d6 (patch)
treeddeb0a5e726fe4d9ac1f57c95f37443ed653e322 /midx.c
parentff20794402177adc52cab849b98fc85f3c2da739 (diff)
parenta698d67b08f98ddac0e6df898fbfab5b4fbd36b1 (diff)
downloadgit-d8488b9e86f241ba313d04091449869fb15154d6.zip
git-d8488b9e86f241ba313d04091449869fb15154d6.tar.gz
git-d8488b9e86f241ba313d04091449869fb15154d6.tar.bz2
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.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/midx.c b/midx.c
index e046d03..e9b2e12 100644
--- a/midx.c
+++ b/midx.c
@@ -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"));