diff options
| author | Justin Tobler <jltobler@gmail.com> | 2025-09-16 13:29:38 -0500 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2025-09-16 11:37:06 -0700 |
| commit | ce1661f9da70ea2ffcb54f7b544410fad26e965d (patch) | |
| tree | 3c6c03b10aa74bdece59ddae976af6550bca1ee0 /odb.h | |
| parent | ed0f5f93e9f0b0b3cc1a37ee5b10b625590f08c8 (diff) | |
| download | git-ce1661f9da70ea2ffcb54f7b544410fad26e965d.tar.gz | |
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>
Diffstat (limited to 'odb.h')
| -rw-r--r-- | odb.h | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -186,6 +186,19 @@ 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. */ |
