git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 00/31] Finish implementing ref and reflog transactions

From
Ronnie Sahlberg <sahlberg@google.com>
Date
May 14, 2014, 22:12 UTC
Message-ID
<1400105610-21194-1-git-send-email-sahlberg@google.com>

This patch series is available also from https://github.com/rsahlberg/git/tree/ref-transactions-next and is based on https://github.com/rsahlberg/git/tree/ref-transactions

This is a preview of the direction for the transaction work and finished converting also reflog handling to transactions. This greatly simplifies both the implementation of rename_ref in refs.c as well as reflog.c

This patch series is not fully finished and can not be applied until the previous series is merged. Once this series is finished we will be in pretty good shape to start experimenting with alternative refs backends such as a TDB database.

Ronnie Sahlberg (31):
  refs.c make ref_transaction_create a wrapper to ref_transaction_update
  refs.c: make ref_transaction_delete a wrapper for
    ref_transaction_update
  refs.c: rename the transaction functions
  refs.c: add a new update_type field to ref_update
  refs.c: add a function to append a reflog entry to a fd
  refs.c: add a transaction function to append a reflog entry
  refs.c: add a flag to allow reflog updates to truncate the log
  refs.c: only write reflog update if msg is non-NULL
  refs.c: allow multiple reflog updates during a single transaction
  reflog.c: use a reflog transaction when writing during expire
  refs.c: null terminate the string in copy_msg
  refs.c: track the refnames we are deleting in the transaction
    structure
  refs.c: update the list of deleted refs during _update instead of
    _commit
  refs.c: return error instead of dying when locking fails during
    transaction
  refs.c: lock the ref during _update instead of during _commit
  refs.c: add an error argument to create/delete/update just like commit
  refs.c: make _update_reflog take an error argument
  refs.c: return immediately from _commit if the transaction has an
    error
  tests: move tests for -z update/delete/verify to after the ref is
    created
  refs.c: check for lock conflicts already in _update
  refs.c allow multiple updates of the same ref in a transaction
  refs.c: release all remaining locks during transaction_free
  reflog.c: use the existing transaction to also lock and update the ref
  refs.c: make unlock_ref static
  refs.c: make close_ref static
  refs.c: make commit_ref static
  refs.c: remove the function lock_any_ref_for_update
  refs.c: make struct ref_lock private to refs.c
  refs.c: allow passing raw git_committer_info as email to
    _update_reflog
  refs.c: move ref_update and other definitions to earlier in the file
  refs.c: use the transaction to manage the reflog in rename_refs
 branch.c               |  11 +-
 builtin/commit.c       |  14 +-
 builtin/fetch.c        |  10 +-
 builtin/receive-pack.c |  11 +-
 builtin/reflog.c       |  76 +++---
 builtin/replace.c      |  10 +-
 builtin/tag.c          |  10 +-
 builtin/update-ref.c   |  34 +--
 fast-import.c          |  26 ++-
 refs.c                 | 611 +++++++++++++++++++++++++++++++++----------------
 refs.h                 |  86 +++----
 sequencer.c            |  12 +-
 t/t1400-update-ref.sh  |  59 +++--
 walker.c               |  15 +-
 14 files changed, 610 insertions(+), 375 deletions(-)
-- 
2.0.0.rc3.506.g3739a35
Next: Ronnie Sahlberg
Message 1 of 43 in “Finish implementing ref and reflog transactions”
  1. 00/31 Finish implementing ref and reflog transactionsRonnie Sahlberg, May 14, 2014
  2. 01/31 refs.c make ref_transaction_create a wrapper to ref_transaction_updateRonnie Sahlberg, May 14, 2014
  3. 02/31 refs.c: make ref_transaction_delete a wrapper for ref_transaction_updateRonnie Sahlberg, May 14, 2014
  4. 03/31 refs.c: rename the transaction functionsRonnie Sahlberg, May 14, 2014
  5. Junio C HamanoMay 16, 2014
  6. Ronnie SahlbergMay 19, 2014
  7. Junio C HamanoMay 19, 2014
  8. 04/31 refs.c: add a new update_type field to ref_updateRonnie Sahlberg, May 14, 2014
  9. 05/31 refs.c: add a function to append a reflog entry to a fdRonnie Sahlberg, May 14, 2014
  10. 06/31 refs.c: add a transaction function to append a reflog entryRonnie Sahlberg, May 14, 2014
  11. 07/31 refs.c: add a flag to allow reflog updates to truncate the logRonnie Sahlberg, May 14, 2014
  12. Junio C HamanoMay 16, 2014
  13. Ronnie SahlbergMay 19, 2014
  14. 08/31 refs.c: only write reflog update if msg is non-NULLRonnie Sahlberg, May 14, 2014
  15. Junio C HamanoMay 16, 2014
  16. Ronnie SahlbergMay 19, 2014
  17. 09/31 refs.c: allow multiple reflog updates during a single transactionRonnie Sahlberg, May 14, 2014
  18. Junio C HamanoMay 16, 2014
  19. Eric SunshineMay 16, 2014
  20. Ronnie SahlbergMay 19, 2014
  21. Ronnie SahlbergMay 19, 2014
  22. 10/31 reflog.c: use a reflog transaction when writing during expireRonnie Sahlberg, May 14, 2014
  23. 11/31 refs.c: null terminate the string in copy_msgRonnie Sahlberg, May 14, 2014
  24. 12/31 refs.c: track the refnames we are deleting in the transaction structureRonnie Sahlberg, May 14, 2014
  25. 13/31 refs.c: update the list of deleted refs during _update instead of _commitRonnie Sahlberg, May 14, 2014
  26. 14/31 refs.c: return error instead of dying when locking fails during transactionRonnie Sahlberg, May 14, 2014
  27. 15/31 refs.c: lock the ref during _update instead of during _commitRonnie Sahlberg, May 14, 2014
  28. 16/31 refs.c: add an error argument to create/delete/update just like commitRonnie Sahlberg, May 14, 2014
  29. 17/31 refs.c: make _update_reflog take an error argumentRonnie Sahlberg, May 14, 2014
  30. 18/31 refs.c: return immediately from _commit if the transaction has an errorRonnie Sahlberg, May 14, 2014
  31. 19/31 tests: move tests for -z update/delete/verify to after the ref is createdRonnie Sahlberg, May 14, 2014
  32. 20/31 refs.c: check for lock conflicts already in _updateRonnie Sahlberg, May 14, 2014
  33. 21/31 refs.c allow multiple updates of the same ref in a transactionRonnie Sahlberg, May 14, 2014
  34. 22/31 refs.c: release all remaining locks during transaction_freeRonnie Sahlberg, May 14, 2014
  35. 23/31 reflog.c: use the existing transaction to also lock and update the refRonnie Sahlberg, May 14, 2014
  36. 24/31 refs.c: make unlock_ref staticRonnie Sahlberg, May 14, 2014
  37. 25/31 refs.c: make close_ref staticRonnie Sahlberg, May 14, 2014
  38. 26/31 refs.c: make commit_ref staticRonnie Sahlberg, May 14, 2014
  39. 27/31 refs.c: remove the function lock_any_ref_for_updateRonnie Sahlberg, May 14, 2014
  40. 28/31 refs.c: make struct ref_lock private to refs.cRonnie Sahlberg, May 14, 2014
  41. 29/31 refs.c: allow passing raw git_committer_info as email to _update_reflogRonnie Sahlberg, May 14, 2014
  42. 30/31 refs.c: move ref_update and other definitions to earlier in the fileRonnie Sahlberg, May 14, 2014
  43. 31/31 refs.c: use the transaction to manage the reflog in rename_refsRonnie Sahlberg, May 14, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.