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

Re: [PATCH v2 02/13] refs.c: use a single exit path from transaction commit and handle onerr

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 22, 2014, 19:11 UTC
Message-ID
<xmqqbnvt5ge2.fsf@gitster.dls.corp.google.com>
In-Reply-To
<1398120811-20284-3-git-send-email-sahlberg@google.com>
Ronnie Sahlberg <sahlberg@google.com> writes:
Show 17 quoted lines
> diff --git a/refs.c b/refs.c
> index 138ab70..9daf89e 100644
> --- a/refs.c
> +++ b/refs.c
> @@ -3414,12 +3414,12 @@ int ref_transaction_commit(struct ref_transaction *transaction,
>  			   const char *msg, enum action_on_err onerr)
> ...
> +	if (ret) {
> +		const char *str = "Cannot commit transaction.";
> +		switch (onerr) {
> +		case UPDATE_REFS_MSG_ON_ERR: error(str); break;
> +		case UPDATE_REFS_DIE_ON_ERR: die(str); break;
> +		case UPDATE_REFS_QUIET_ON_ERR: break;
> +		}
> +	}
>  	return ret;
>  }

I think this is a response to Michael's earlier review "do different callers want to give different error messages more suitable for the situation?". I suspect that the ideal endgame may end up all callers passing QUIET_ON_ERR and doing the error message themselves, e.g. branch.c::craete_branch() may end something like this:

    ...
    if (!dont_change_ref)
        if (ref_transaction_commit(..., UPDATE_REFS_QUIET_ON_ERR))
                die_errno(_("Failed to write branch '%s'"),
                          skip_prefix(ref.buf, "refs/heads/));

And in the meantime until the callers are converted, we may end up showing the fallback "Cannot commit transaction." but that would be OK during the development and polishing of this series.

Previous: Ronnie SahlbergNext: Ronnie Sahlberg
Message 4 of 19 in “Use ref transactions from most callers”
  1. 00/13 Use ref transactions from most callersRonnie Sahlberg, Apr 21, 2014
  2. 01/13 refs.c: constify the sha arguments for ref_transaction_create|delete|updateRonnie Sahlberg, Apr 21, 2014
  3. 02/13 refs.c: use a single exit path from transaction commit and handle onerrRonnie Sahlberg, Apr 21, 2014
  4. Junio C HamanoApr 22, 2014
  5. Ronnie SahlbergApr 22, 2014
  6. Junio C HamanoApr 22, 2014
  7. 03/13 refs.c: change ref_transaction_update() to do error checking and return statusRonnie Sahlberg, Apr 21, 2014
  8. 04/13 refs.c: change ref_transaction_create to do error checking and return statusRonnie Sahlberg, Apr 21, 2014
  9. 05/13 refs.c: ref_transaction_delete to check for error and return statusRonnie Sahlberg, Apr 21, 2014
  10. 06/13 tag.c: use ref transactions when doing updatesRonnie Sahlberg, Apr 21, 2014
  11. 07/13 replace.c: use the ref transaction functions for updatesRonnie Sahlberg, Apr 21, 2014
  12. 08/13 commit.c: use ref transactions for updatesRonnie Sahlberg, Apr 21, 2014
  13. 09/13 sequencer.c: use ref transactions for all ref updatesRonnie Sahlberg, Apr 21, 2014
  14. 10/13 fast-import.c: change update_branch to use ref transactionsRonnie Sahlberg, Apr 21, 2014
  15. 11/13 branch.c: use ref transaction for all ref updatesRonnie Sahlberg, Apr 21, 2014
  16. 12/13 walker.c: use ref transaction for ref updatesRonnie Sahlberg, Apr 21, 2014
  17. 13/13 refs.c: change update_ref to use a transactionRonnie Sahlberg, Apr 21, 2014
  18. Junio C HamanoApr 22, 2014
  19. Ronnie SahlbergApr 22, 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.