Skip to content

storagemgr: Add support for reftables

The transaction manager doesn't support reftables. The biggest blocker for this has been the way track the default branch updates. With the introduction of symbolic-ref updates in 'git-update-ref(1)', we now get symbolic-ref updates via the reference-transaction hook. We then proceed to capture this information in the transaction manager.

For adding reftables to the log, we have to keep track of the existing reftables in the repository, apply the references, and then add the new tables added to the logEntry. While doing this, we lock the old tables, because we don't want to compact all existing tables. We can allow the new tables created to be compacted but not the existing tables, as this would cause conflicts. Currently Git, doesn't support compaction of only non-locked tables, this could be a future improvement.

We currently also do not support housekeeping functionalities in the transaction manager for reftables. This is the only remaining section left to support reftables and will be tackled later.

Please note that the first two commits are already part of another MR: git: Add code to parse reftable tables (!7090 - merged) • Karthik Nayak • 17.3

Part of #5867

Edited by Karthik Nayak

Merge request reports