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

[PATCHv3 00/13] the refs-transactions-reflog series

From
Stefan Beller <sbeller@google.com>
Date
Dec 4, 2014, 08:29 UTC
Message-ID
<1417681763-32334-1-git-send-email-sbeller@google.com>

This is the whole refs-transactions-reflog series[1], which was in discussion for a bit already. It applies to origin/master.

The idea is to have the reflog being part of the transactions, which the refs are already using, so the we're moving towards a database like API in the long run. This makes git easier to maintain as well as opening the possibility to replace the backend with a real database.

If you've followed the topic a bit, start reading at patch "[PATCH 06/13] refs.c: add a transaction function to append a reflog" as the first 5 patches have been discussed a lot separately and can be found in origin/pu already[2]. The first two patches are deduplicating code. The third patch is ripping some code out of log_ref_write and introduces log_ref_write_fd, which does the actual writing. The patches 4+5 are renaming variables for clarity.

The patch 6 and 7 are the entree in this series. Patch 6 adds two functions to the refs API: transaction_truncate_reflog and transaction_update_reflog. Both functions do not affect the files directy, but rather become effective once transaction_commit function is called. The transaction_truncate_reflog will wipe the reflog, which can be used for rebuilding the reflog, whereas the transaction_update_reflog function will just append one entry to the reflog. The patch 7 will make use of the functions introduced in patch 6. The command git reflog expire will then use the reflog transactions.

Patch 8 is renaming log_ref_setup to create_reflog and should not
Patches 9-12 are removing functions from the public refs API, which are unused then.

Patch 13 is adding new functionality again, you can finally delete broken refs without having to know the details on git.

[1] http://comments.gmane.org/gmane.comp.version-control.git/259712 or
    http://www.spinics.net/lists/git/msg242502.html 
[2] patch 1 + 2:
        origin/sb/ref-transaction-unify-to-update
    patch 3:
        origin/sb/log-ref-write-fd
    patch 4 + 5:
        origin/sb/ref-transaction-reflog
    patch 1-5 is unchanged in this series.
Ronnie Sahlberg (9):
  refs.c: make ref_transaction_create a wrapper for
    ref_transaction_update
  refs.c: make ref_transaction_delete a wrapper for
    ref_transaction_update
  refs.c: add a function to append a reflog entry to a fd
  refs.c: rename the transaction functions
  reflog.c: use a reflog transaction when writing during expire
  refs.c: rename log_ref_setup to create_reflog
  refs.c: remove unlock_ref/close_ref/commit_ref from the refs api
  refs.c: remove lock_any_ref_for_update
  refs.c: allow deleting refs with a broken sha1
Stefan Beller (4):
  refs.c: rename transaction.updates to transaction.ref_updates
  refs.c: add a transaction function to truncate or append a reflog
    entry
  refs.c: don't expose the internal struct ref_lock in the header file
  refs.c: use a bit for ref_update have_old
 branch.c               |  13 +-
 builtin/branch.c       |   5 +-
 builtin/checkout.c     |   8 +-
 builtin/commit.c       |  10 +-
 builtin/fetch.c        |  12 +-
 builtin/receive-pack.c |  13 +-
 builtin/reflog.c       |  84 +++++------
 builtin/replace.c      |  10 +-
 builtin/tag.c          |  10 +-
 builtin/update-ref.c   |  26 ++--
 cache.h                |   7 +
 fast-import.c          |  22 +--
 refs.c                 | 371 +++++++++++++++++++++++++++++++------------------
 refs.h                 |  95 ++++++-------
 sequencer.c            |  12 +-
 t/t3200-branch.sh      |   8 ++
 walker.c               |  10 +-
 17 files changed, 408 insertions(+), 308 deletions(-)
-- 
2.2.0
Next: Stefan Beller
Message 1 of 25 in “[PATCHv3 00/13] the refs-transactions-reflog series”
  1. Stefan BellerDec 4, 2014
  2. 01/13 refs.c: make ref_transaction_create a wrapper for ref_transaction_updateStefan Beller, Dec 4, 2014
  3. 02/13 refs.c: make ref_transaction_delete a wrapper for ref_transaction_updateStefan Beller, Dec 4, 2014
  4. 03/13 refs.c: add a function to append a reflog entry to a fdStefan Beller, Dec 4, 2014
  5. 04/13 refs.c: rename the transaction functionsStefan Beller, Dec 4, 2014
  6. 05/13 refs.c: rename transaction.updates to transaction.ref_updatesStefan Beller, Dec 4, 2014
  7. 06/13 refs.c: add a transaction function to truncate or append a reflog entryStefan Beller, Dec 4, 2014
  8. 07/13 reflog.c: use a reflog transaction when writing during expireStefan Beller, Dec 4, 2014
  9. 08/13 refs.c: rename log_ref_setup to create_reflogStefan Beller, Dec 4, 2014
  10. 09/13 refs.c: remove unlock_ref/close_ref/commit_ref from the refs apiStefan Beller, Dec 4, 2014
  11. 10/13 refs.c: remove lock_any_ref_for_updateStefan Beller, Dec 4, 2014
  12. 11/13 refs.c: don't expose the internal struct ref_lock in the header fileStefan Beller, Dec 4, 2014
  13. 12/13 refs.c: use a bit for ref_update have_oldStefan Beller, Dec 4, 2014
  14. Torsten BögershausenDec 4, 2014
  15. Andreas SchwabDec 4, 2014
  16. 13/13 refs.c: allow deleting refs with a broken sha1Stefan Beller, Dec 4, 2014
  17. Michael HaggertyDec 4, 2014
  18. Jonathan NiederDec 4, 2014
  19. Jonathan NiederDec 4, 2014
  20. Stefan BellerDec 4, 2014
  21. Michael HaggertyDec 4, 2014
  22. Junio C HamanoDec 4, 2014
  23. Junio C HamanoDec 4, 2014
  24. Stefan BellerDec 4, 2014
  25. Jonathan NiederDec 4, 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.