#include "git-compat-util.h" #include "odb/source.h" #include "odb/transaction.h" struct odb_transaction *odb_transaction_begin(struct object_database *odb) { if (odb->transaction) return NULL; odb_source_begin_transaction(odb->sources, &odb->transaction); return odb->transaction; } void odb_transaction_commit(struct odb_transaction *transaction) { if (!transaction) return; /* * Ensure the transaction ending matches the pending transaction. */ ASSERT(transaction == transaction->source->odb->transaction); transaction->commit(transaction); transaction->source->odb->transaction = NULL; free(transaction); } int odb_transaction_write_object_stream(struct odb_transaction *transaction, struct odb_write_stream *stream, size_t len, struct object_id *oid) { return transaction->write_object_stream(transaction, stream, len, oid); }