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

Re: [PATCH 10/11] ref_transaction_verify(): new function to check a reference's value

From
Stefan Beller <sbeller@google.com>
Date
Feb 9, 2015, 18:50 UTC
Message-ID
<CAGZ79kZqsCmhzw9mW4Bxyzd-+XRuzh5aYFnp5GLZwjGj9SW_LQ@mail.gmail.com>
In-Reply-To
<1423412045-15616-11-git-send-email-mhagger@alum.mit.edu>
On Sun, Feb 8, 2015 at 8:14 AM, Michael Haggerty <mhagger@alum.mit.edu> wrote:
Show 22 quoted lines
>  /*
> - * Add a reference update to transaction.  new_sha1 is the value that
> - * the reference should have after the update, or null_sha1 if it should
> - * be deleted.  If old_sha1 is non-NULL, then it the value
> - * that the reference should have had before the update, or null_sha1 if
> - * it must not have existed beforehand.
> - * Function returns 0 on success and non-zero on failure. A failure to update
> - * means that the transaction as a whole has failed and will need to be
> - * rolled back.
> + * Add a reference update to transaction. new_sha1 is the value that
> + * the reference should have after the update, or null_sha1 if it
> + * should be deleted. If new_sha1 is NULL, then the reference is not
> + * changed at all. old_sha1 is the value that the reference must have
> + * before the update, or null_sha1 if it must not have existed
> + * beforehand. The old value is checked after the lock is taken to
> + * prevent races. If the old value doesn't agree with old_sha1, the
> + * whole transaction fails. If old_sha1 is NULL, then the previous
> + * value is not checked.
> + *
> + * Return 0 on success and non-zero on failure. Any failure in the
> + * transaction means that the transaction as a whole has failed and
> + * will need to be rolled back.

Do we need to be explicit about having to rollback everything in each ref_transaction_* function documentation?

I like the new wording (first paragraph) of this function documentation.
Previous: Michael HaggertyNext: Michael Haggerty
Message 27 of 35 in “Allow reference values to be checked in a transaction”
  1. 00/11 Allow reference values to be checked in a transactionMichael Haggerty, Feb 8, 2015
  2. 01/11 refs: move REF_DELETING to refs.cMichael Haggerty, Feb 8, 2015
  3. Stefan BellerFeb 9, 2015
  4. 02/11 refs: remove the gap in the REF_* constant valuesMichael Haggerty, Feb 8, 2015
  5. Stefan BellerFeb 9, 2015
  6. 03/11 struct ref_update: move "have_old" into "flags"Michael Haggerty, Feb 8, 2015
  7. 04/11 ref_transaction_update(): remove "have_old" parameterMichael Haggerty, Feb 8, 2015
  8. Stefan BellerFeb 9, 2015
  9. Michael HaggertyFeb 11, 2015
  10. 05/11 ref_transaction_delete(): remove "have_old" parameterMichael Haggerty, Feb 8, 2015
  11. Stefan BellerFeb 9, 2015
  12. 06/11 commit: add tests of commit racesMichael Haggerty, Feb 8, 2015
  13. Stefan BellerFeb 9, 2015
  14. Junio C HamanoFeb 10, 2015
  15. Michael HaggertyFeb 11, 2015
  16. Junio C HamanoFeb 11, 2015
  17. Stefan BellerFeb 11, 2015
  18. Junio C HamanoFeb 11, 2015
  19. 07/11 commit: avoid race when creating orphan commitsMichael Haggerty, Feb 8, 2015
  20. Stefan BellerFeb 9, 2015
  21. Michael HaggertyFeb 11, 2015
  22. 08/11 ref_transaction_create(): check that new_sha1 is validMichael Haggerty, Feb 8, 2015
  23. Stefan BellerFeb 9, 2015
  24. 09/11 ref_transaction_delete(): check that old_sha1 is not null_sha1Michael Haggerty, Feb 8, 2015
  25. Stefan BellerFeb 9, 2015
  26. 10/11 ref_transaction_verify(): new function to check a reference's valueMichael Haggerty, Feb 8, 2015
  27. Stefan BellerFeb 9, 2015
  28. Michael HaggertyFeb 11, 2015
  29. 11/11 update_ref(): improve documentationMichael Haggerty, Feb 8, 2015
  30. Stefan BellerFeb 9, 2015
  31. Junio C HamanoFeb 9, 2015
  32. Stefan BellerFeb 9, 2015
  33. Michael HaggertyFeb 9, 2015
  34. Stefan BellerFeb 9, 2015
  35. Junio C HamanoFeb 9, 2015

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.