summaryrefslogtreecommitdiff
path: root/pack-write.c
diff options
context:
space:
mode:
authorDerrick Stolee <dstolee@microsoft.com>2018-04-02 16:34:15 -0400
committerJunio C Hamano <gitster@pobox.com>2018-04-02 14:27:30 -0700
commitcfe83216e404223ce8c5f6ef79c4ba9a27ff872e (patch)
tree6f64a9ccff4777e87bd43fdf8e051a215048ae63 /pack-write.c
parentf2af9f5e02380ba3868df7daa34368945d500206 (diff)
downloadgit-cfe83216e404223ce8c5f6ef79c4ba9a27ff872e.tar.gz
csum-file: refactor finalize_hashfile() method
If we want to use a hashfile on the temporary file for a lockfile, then we need finalize_hashfile() to fully write the trailing hash but also keep the file descriptor open. Do this by adding a new CSUM_HASH_IN_STREAM flag along with a functional change that checks this flag before writing the checksum to the stream. This differs from previous behavior since it would be written if either CSUM_CLOSE or CSUM_FSYNC is provided. Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'pack-write.c')
-rw-r--r--pack-write.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/pack-write.c b/pack-write.c
index 044f427392..a9d46bc03f 100644
--- a/pack-write.c
+++ b/pack-write.c
@@ -170,8 +170,9 @@ const char *write_idx_file(const char *index_name, struct pack_idx_entry **objec
}
hashwrite(f, sha1, the_hash_algo->rawsz);
- finalize_hashfile(f, NULL, ((opts->flags & WRITE_IDX_VERIFY)
- ? CSUM_CLOSE : CSUM_FSYNC));
+ finalize_hashfile(f, NULL, CSUM_HASH_IN_STREAM | CSUM_CLOSE |
+ ((opts->flags & WRITE_IDX_VERIFY)
+ ? 0 : CSUM_FSYNC));
return index_name;
}