aboutsummaryrefslogtreecommitdiffstats
path: root/object-file.c
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2023-10-01 21:40:12 -0500
committerJunio C Hamano <gitster@pobox.com>2023-10-02 14:57:39 -0700
commitc2538492df8259885abc18acdadacc22b1e77e5a (patch)
tree3864dd7a5963aa3c23a4a3f1487d7183359842d2 /object-file.c
parent63a6745a07c2202d16d580156661d42e00b9762f (diff)
downloadgit-c2538492df8259885abc18acdadacc22b1e77e5a.tar.gz
object-file: add a compat_oid_in parameter to write_object_file_flags
To create the proper signatures for commit objects both versions of the commit object need to be generated and signed. After that it is a waste to throw away the work of generating the compatibility hash so update write_object_file_flags to take a compatibility hash input parameter that it can use to skip the work of generating the compatability hash. Update the places that don't generate the compatability hash to pass NULL so it is easy to tell write_object_file_flags should not attempt to use their compatability hash. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'object-file.c')
-rw-r--r--object-file.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/object-file.c b/object-file.c
index 4e55f475b3..820810a5f4 100644
--- a/object-file.c
+++ b/object-file.c
@@ -2235,7 +2235,7 @@ cleanup:
int write_object_file_flags(const void *buf, unsigned long len,
enum object_type type, struct object_id *oid,
- unsigned flags)
+ struct object_id *compat_oid_in, unsigned flags)
{
struct repository *repo = the_repository;
const struct git_hash_algo *algo = repo->hash_algo;
@@ -2246,7 +2246,9 @@ int write_object_file_flags(const void *buf, unsigned long len,
/* Generate compat_oid */
if (compat) {
- if (type == OBJ_BLOB)
+ if (compat_oid_in)
+ oidcpy(&compat_oid, compat_oid_in);
+ else if (type == OBJ_BLOB)
hash_object_file(compat, buf, len, type, &compat_oid);
else {
struct strbuf converted = STRBUF_INIT;