odb: add transaction interface

Transactions are managed via the {begin,end}_odb_transaction() function
in the object-file subsystem and its implementation is specific to the
files object source. Introduce odb_transaction_{begin,commit}() in the
odb subsystem to provide an eventual object source agnostic means to
manage transactions.

Update call sites to instead manage transactions through the odb
subsystem. Also rename {begin,end}_odb_transaction() functions to
object_file_transaction_{begin,commit}() to clarify the object source it
supports.

Signed-off-by: Justin Tobler <jltobler@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Justin Tobler
2025-09-16 13:29:38 -05:00
committed by Junio C Hamano
parent ed0f5f93e9
commit ce1661f9da
9 changed files with 46 additions and 19 deletions

View File

@@ -222,16 +222,16 @@ struct odb_transaction;
/*
* Tell the object database to optimize for adding
* multiple objects. end_odb_transaction must be called
* multiple objects. object_file_transaction_commit must be called
* to make new objects visible. If a transaction is already
* pending, NULL is returned.
*/
struct odb_transaction *begin_odb_transaction(struct object_database *odb);
struct odb_transaction *object_file_transaction_begin(struct odb_source *source);
/*
* Tell the object database to make any objects from the
* current transaction visible.
*/
void end_odb_transaction(struct odb_transaction *transaction);
void object_file_transaction_commit(struct odb_transaction *transaction);
#endif /* OBJECT_FILE_H */