From: Junio C Hamano <gitster@pobox.com>
To: Patrick Steinhardt <ps@pks.im>
Cc: git@vger.kernel.org, Christian Couder <christian.couder@gmail.com>
Subject: Re: [PATCH v2 3/4] fetch: allow passing a transaction to `s_update_ref()`
Date: Fri, 08 Jan 2021 15:53:46 -0800 [thread overview]
Message-ID: <xmqqczyfgf3p.fsf@gitster.c.googlers.com> (raw)
In-Reply-To: <4162d10fcbb5729dffaaec0651345dd9522a8e05.1610107599.git.ps@pks.im> (Patrick Steinhardt's message of "Fri, 8 Jan 2021 13:11:23 +0100")
Patrick Steinhardt <ps@pks.im> writes:
> @@ -597,10 +598,17 @@ static int s_update_ref(const char *action,
> rla = default_rla.buf;
> msg = xstrfmt("%s: %s", rla, action);
>
> - transaction = ref_transaction_begin(&err);
> + /*
> + * If no transaction was passed to us, we manage the transaction
> + * ourselves. Otherwise, we trust the caller to handle the transaction
> + * lifecycle.
> + */
> if (!transaction) {
> - ret = STORE_REF_ERROR_OTHER;
> - goto out;
> + transaction = our_transaction = ref_transaction_begin(&err);
> + if (!transaction) {
> + ret = STORE_REF_ERROR_OTHER;
> + goto out;
> + }
> }
OK, this answers the question I posed in the review of the previous
step. We need to separate out "if (!transaction || ...)" into two
anyway with this step, so it is easier to see what changed in this
step if we separated in the previous preparatory clean-up step.
> @@ -611,15 +619,17 @@ static int s_update_ref(const char *action,
> goto out;
> }
>
> - ret = ref_transaction_commit(transaction, &err);
> - if (ret) {
> - ret = (ret == TRANSACTION_NAME_CONFLICT) ? STORE_REF_ERROR_DF_CONFLICT
> - : STORE_REF_ERROR_OTHER;
> - goto out;
> + if (our_transaction) {
> + ret = ref_transaction_commit(our_transaction, &err);
> + if (ret) {
> + ret = (ret == TRANSACTION_NAME_CONFLICT) ? STORE_REF_ERROR_DF_CONFLICT
> + : STORE_REF_ERROR_OTHER;
> + goto out;
> + }
The switch statement suggested earlier would shine when the
constants involved have such long names.
> }
>
> out:
> - ref_transaction_free(transaction);
> + ref_transaction_free(our_transaction);
> if (ret)
> error("%s", err.buf);
> strbuf_release(&err);
Makes sense. Thanks.
next prev parent reply other threads:[~2021-01-08 23:54 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-07 13:51 [PATCH 0/2] fetch: implement support for atomic reference updates Patrick Steinhardt
2021-01-07 13:51 ` [PATCH 1/2] fetch: allow passing a transaction to `s_update_ref()` Patrick Steinhardt
2021-01-07 22:59 ` Junio C Hamano
2021-01-08 0:45 ` Christian Couder
2021-01-08 7:18 ` Junio C Hamano
2021-01-07 13:51 ` [PATCH 2/2] fetch: implement support for atomic reference updates Patrick Steinhardt
2021-01-08 0:19 ` Junio C Hamano
2021-01-08 12:11 ` [PATCH v2 0/4] " Patrick Steinhardt
2021-01-08 12:11 ` [PATCH v2 1/4] fetch: extract writing to FETCH_HEAD Patrick Steinhardt
2021-01-08 23:40 ` Junio C Hamano
2021-01-11 10:26 ` Patrick Steinhardt
2021-01-11 19:24 ` Junio C Hamano
2021-01-08 12:11 ` [PATCH v2 2/4] fetch: refactor `s_update_ref` to use common exit path Patrick Steinhardt
2021-01-08 23:50 ` Junio C Hamano
2021-01-11 10:28 ` Patrick Steinhardt
2021-01-08 12:11 ` [PATCH v2 3/4] fetch: allow passing a transaction to `s_update_ref()` Patrick Steinhardt
2021-01-08 23:53 ` Junio C Hamano [this message]
2021-01-08 12:11 ` [PATCH v2 4/4] fetch: implement support for atomic reference updates Patrick Steinhardt
2021-01-09 0:05 ` Junio C Hamano
2021-01-11 10:42 ` Patrick Steinhardt
2021-01-11 19:47 ` Junio C Hamano
2021-01-12 12:22 ` Patrick Steinhardt
2021-01-12 12:29 ` Patrick Steinhardt
2021-01-12 19:19 ` Junio C Hamano
2021-01-11 11:05 ` [PATCH v3 0/5] " Patrick Steinhardt
2021-01-11 11:05 ` [PATCH v3 1/5] fetch: extract writing to FETCH_HEAD Patrick Steinhardt
2021-01-11 23:16 ` Junio C Hamano
2021-01-11 11:05 ` [PATCH v3 2/5] fetch: use strbuf to format FETCH_HEAD updates Patrick Steinhardt
2021-01-11 11:10 ` Patrick Steinhardt
2021-01-11 11:17 ` Christian Couder
2021-01-11 23:21 ` Junio C Hamano
2021-01-11 11:05 ` [PATCH v3 3/5] fetch: refactor `s_update_ref` to use common exit path Patrick Steinhardt
2021-01-11 11:05 ` [PATCH v3 4/5] fetch: allow passing a transaction to `s_update_ref()` Patrick Steinhardt
2021-01-11 11:05 ` [PATCH v3 5/5] fetch: implement support for atomic reference updates Patrick Steinhardt
2021-01-12 0:04 ` [PATCH v3 0/5] " Junio C Hamano
2021-01-12 12:27 ` [PATCH v4 " Patrick Steinhardt
2021-01-12 12:27 ` [PATCH v4 1/5] fetch: extract writing to FETCH_HEAD Patrick Steinhardt
2021-01-12 12:27 ` [PATCH v4 2/5] fetch: use strbuf to format FETCH_HEAD updates Patrick Steinhardt
2021-01-12 12:27 ` [PATCH v4 3/5] fetch: refactor `s_update_ref` to use common exit path Patrick Steinhardt
2021-01-12 12:27 ` [PATCH v4 4/5] fetch: allow passing a transaction to `s_update_ref()` Patrick Steinhardt
2021-01-12 12:27 ` [PATCH v4 5/5] fetch: implement support for atomic reference updates Patrick Steinhardt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqczyfgf3p.fsf@gitster.c.googlers.com \
--to=gitster@pobox.com \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=ps@pks.im \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.