[PATCH v2 00/11] Implement transactions for the packed ref store
- From
Michael Haggerty <mhagger@alum.mit.edu>
- Date
- Sep 8, 2017, 13:51 UTC
- Message-ID
- <cover.1504877858.git.mhagger@alum.mit.edu>
This is v2 of a patch series to implement reference transactions for the packed refs-store. Thanks to Stefan, Brandon, Junio, and Peff for your review of v1 [1]. I believe I have addressed all of your comments.
Changes since v1:
* Patch [01/11]: justify the change better in the log message. Add a comment explaining why `get_packed_ref_cache()` is being called but the return value discarded.
* Patch [05/11]: Lock the `packed-refs` file *after* successfully creating the (empty) transaction object. This prevents leaving the file locked if `ref_store_transaction_begin()` fails.
* Patch [06/11]: New patch, fixing a leak of the `refs_to_prune` linked list.
* Patch [07/11]: Reimplement test "no bogus intermediate values during delete" to work without polling. Also incorporate Junio's change `s/grep/test_i18ngrep/`.
These changes are also available as branch `packed-ref-transactions` from my GitHub repo [2].
Michael
[1] https://public-inbox.org/git/cover.1503993268.git.mhagger@alum.mit.edu/ [2] https://github.com/mhagger/git
Michael Haggerty (11): packed-backend: don't adjust the reference count on lock/unlock struct ref_transaction: add a place for backends to store data packed_ref_store: implement reference transactions packed_delete_refs(): implement method files_pack_refs(): use a reference transaction to write packed refs prune_refs(): also free the linked list files_initial_transaction_commit(): use a transaction for packed refs t1404: demonstrate two problems with reference transactions files_ref_store: use a transaction to update packed refs packed-backend: rip out some now-unused code files_transaction_finish(): delete reflogs before references
refs/files-backend.c | 214 ++++++++++++++------ refs/packed-backend.c | 461 +++++++++++++++++++++++++++++-------------- refs/packed-backend.h | 17 +- refs/refs-internal.h | 1 + t/t1404-update-ref-errors.sh | 73 +++++++ 5 files changed, 550 insertions(+), 216 deletions(-)
-- 2.14.1