From: Junio C Hamano Date: Thu, 2 Oct 2025 19:26:11 +0000 (-0700) Subject: Merge branch 'jt/odb-transaction' X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fd13909eb63ef121824f243183db6b1f49ef1aed;p=thirdparty%2Fgit.git Merge branch 'jt/odb-transaction' The work to build on the bulk-checkin infrastructure to create many objects at once in a transaction and to abstract it into the generic object layer continues. * jt/odb-transaction: odb: add transaction interface object-file: update naming from bulk-checkin object-file: relocate ODB transaction code bulk-checkin: drop flush_odb_transaction() builtin/update-index: end ODB transaction when --verbose is specified bulk-checkin: remove ODB transaction nesting --- fd13909eb63ef121824f243183db6b1f49ef1aed diff --cc odb.h index bd7374f92f,82093753c8..9e3dd9d6df --- a/odb.h +++ b/odb.h @@@ -193,9 -185,22 +193,22 @@@ struct object_database struct object_database *odb_new(struct repository *repo); void odb_clear(struct object_database *o); + /* + * Starts an ODB transaction. Subsequent objects are written to the transaction + * and not committed until odb_transaction_commit() is invoked on the + * transaction. If the ODB already has a pending transaction, NULL is returned. + */ + struct odb_transaction *odb_transaction_begin(struct object_database *odb); + + /* + * Commits an ODB transaction making the written objects visible. If the + * specified transaction is NULL, the function is a no-op. + */ + void odb_transaction_commit(struct odb_transaction *transaction); + /* - * Find source by its object directory path. Dies in case the source couldn't - * be found. + * Find source by its object directory path. Returns a `NULL` pointer in case + * the source could not be found. */ struct odb_source *odb_find_source(struct object_database *odb, const char *obj_dir);