From: Junio C Hamano <gitster@pobox.com>
To: Brad King <brad.king@kitware.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH v2 3/8] refs: factor update_ref steps into helpers
Date: Sat, 31 Aug 2013 23:08:27 -0700 [thread overview]
Message-ID: <xmqqvc2lul9g.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: d327c12d90c0c2500e51fb07c06f516f94438ff0.1377885441.git.brad.king@kitware.com
Brad King <brad.king@kitware.com> writes:
> Factor the lock and write steps and error handling into helper functions
> update_ref_lock and update_ref_write to allow later use elsewhere.
> Expose lock_any_ref_for_update's type_p to update_ref_lock callers.
>
> Signed-off-by: Brad King <brad.king@kitware.com>
> ---
> refs.c | 28 +++++++++++++++++++++++-----
> 1 file changed, 23 insertions(+), 5 deletions(-)
>
> diff --git a/refs.c b/refs.c
> index c69fd68..2e755b4 100644
> --- a/refs.c
> +++ b/refs.c
> @@ -3170,12 +3170,13 @@ int for_each_reflog(each_ref_fn fn, void *cb_data)
> return retval;
> }
>
> -int update_ref(const char *action, const char *refname,
> - const unsigned char *sha1, const unsigned char *oldval,
> - int flags, enum action_on_err onerr)
> +static struct ref_lock *update_ref_lock(const char *refname,
> + const unsigned char *oldval,
> + int flags, int *type_p,
> + enum action_on_err onerr)
> {
> static struct ref_lock *lock;
Not the fault of this patch, as the original update_ref() had it
this way, but it is not necessary to keep the value of this variable
across invocations. Let's drop "static" from here, and also the
corresponding variable in the new update_ref().
Will locally tweak while queuing.
> - lock = lock_any_ref_for_update(refname, oldval, flags, NULL);
> + lock = lock_any_ref_for_update(refname, oldval, flags, type_p);
> if (!lock) {
> const char *str = "Cannot lock the ref '%s'.";
> switch (onerr) {
> @@ -3183,8 +3184,14 @@ int update_ref(const char *action, const char *refname,
> case DIE_ON_ERR: die(str, refname); break;
> case QUIET_ON_ERR: break;
> }
> - return 1;
> }
> + return lock;
> +}
> +
> +static int update_ref_write(const char *action, const char *refname,
> + const unsigned char *sha1, struct ref_lock *lock,
> + enum action_on_err onerr)
> +{
> if (write_ref_sha1(lock, sha1, action) < 0) {
> const char *str = "Cannot update the ref '%s'.";
> switch (onerr) {
> @@ -3197,6 +3204,17 @@ int update_ref(const char *action, const char *refname,
> return 0;
> }
>
> +int update_ref(const char *action, const char *refname,
> + const unsigned char *sha1, const unsigned char *oldval,
> + int flags, enum action_on_err onerr)
> +{
> + static struct ref_lock *lock;
> + lock = update_ref_lock(refname, oldval, flags, 0, onerr);
> + if (!lock)
> + return 1;
> + return update_ref_write(action, refname, sha1, lock, onerr);
> +}
> +
> struct ref *find_ref_by_name(const struct ref *list, const char *name)
> {
> for ( ; list; list = list->next)
next prev parent reply other threads:[~2013-09-01 6:08 UTC|newest]
Thread overview: 106+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-29 14:11 [PATCH/RFC 0/7] Multiple simultaneously locked ref updates Brad King
2013-08-29 14:11 ` [PATCH/RFC 1/7] reset: rename update_refs to reset_refs Brad King
2013-08-29 17:17 ` Junio C Hamano
2013-08-29 18:07 ` Brad King
2013-08-29 14:11 ` [PATCH/RFC 2/7] refs: report ref type from lock_any_ref_for_update Brad King
2013-08-29 17:22 ` Junio C Hamano
2013-08-29 18:08 ` Brad King
2013-08-29 14:11 ` [PATCH/RFC 3/7] refs: factor update_ref steps into helpers Brad King
2013-08-29 14:11 ` [PATCH/RFC 4/7] refs: factor delete_ref loose ref step into a helper Brad King
2013-08-29 17:28 ` Junio C Hamano
2013-08-29 18:08 ` Brad King
2013-08-29 14:11 ` [PATCH/RFC 5/7] refs: add function to repack without multiple refs Brad King
2013-08-29 17:34 ` Junio C Hamano
2013-08-29 18:09 ` Brad King
2013-08-29 14:11 ` [PATCH/RFC 6/7] refs: add update_refs for multiple simultaneous updates Brad King
2013-08-29 17:39 ` Junio C Hamano
2013-08-29 18:20 ` Brad King
2013-08-29 18:32 ` Junio C Hamano
2013-08-29 18:38 ` Brad King
2013-08-29 19:30 ` Brad King
2013-08-29 14:11 ` [PATCH/RFC 7/7] update-ref: support " Brad King
2013-08-29 18:34 ` Junio C Hamano
2013-08-29 18:42 ` Brad King
2013-08-29 15:32 ` [PATCH/RFC 0/7] Multiple simultaneously locked ref updates Martin Fick
2013-08-29 15:46 ` Brad King
2013-08-29 16:21 ` Junio C Hamano
2013-08-29 17:09 ` Brad King
2013-08-29 18:07 ` Junio C Hamano
2013-08-29 18:23 ` Brad King
2013-08-30 18:11 ` [PATCH v2 0/8] " Brad King
2013-08-30 18:11 ` [PATCH v2 1/8] reset: rename update_refs to reset_refs Brad King
2013-08-30 18:12 ` [PATCH v2 2/8] refs: report ref type from lock_any_ref_for_update Brad King
2013-08-30 18:12 ` [PATCH v2 3/8] refs: factor update_ref steps into helpers Brad King
2013-09-01 6:08 ` Junio C Hamano [this message]
2013-09-02 17:19 ` Brad King
2013-08-30 18:12 ` [PATCH v2 4/8] refs: factor delete_ref loose ref step into a helper Brad King
2013-08-31 16:30 ` Michael Haggerty
2013-09-02 17:19 ` Brad King
2013-08-30 18:12 ` [PATCH v2 5/8] refs: add function to repack without multiple refs Brad King
2013-08-30 18:12 ` [PATCH v2 6/8] refs: add update_refs for multiple simultaneous updates Brad King
2013-08-31 18:19 ` Michael Haggerty
2013-09-02 17:20 ` Brad King
2013-09-01 6:08 ` Junio C Hamano
2013-09-02 17:20 ` Brad King
2013-09-03 4:43 ` Michael Haggerty
2013-09-03 11:59 ` Brad King
2013-08-30 18:12 ` [PATCH v2 7/8] update-ref: support " Brad King
2013-08-30 22:51 ` Junio C Hamano
2013-09-02 17:23 ` Brad King
2013-08-31 18:42 ` Michael Haggerty
2013-09-02 17:21 ` Brad King
2013-08-30 18:12 ` [PATCH v2 8/8] update-ref: add test cases covering --stdin signature Brad King
2013-09-01 3:41 ` Eric Sunshine
2013-09-02 17:23 ` Brad King
2013-08-31 19:02 ` [PATCH v2 0/8] Multiple simultaneously locked ref updates Michael Haggerty
2013-09-02 17:48 ` [PATCH v3 " Brad King
2013-09-02 17:48 ` [PATCH v3 1/8] reset: rename update_refs to reset_refs Brad King
2013-09-02 17:48 ` [PATCH v3 2/8] refs: report ref type from lock_any_ref_for_update Brad King
2013-09-02 17:48 ` [PATCH v3 3/8] refs: factor update_ref steps into helpers Brad King
2013-09-02 17:48 ` [PATCH v3 4/8] refs: factor delete_ref loose ref step into a helper Brad King
2013-09-02 17:48 ` [PATCH v3 5/8] refs: add function to repack without multiple refs Brad King
2013-09-02 17:48 ` [PATCH v3 6/8] refs: add update_refs for multiple simultaneous updates Brad King
2013-09-02 17:48 ` [PATCH v3 7/8] update-ref: support " Brad King
2013-09-02 18:37 ` Brad King
2013-09-02 17:48 ` [PATCH v3 8/8] update-ref: add test cases covering --stdin signature Brad King
2013-09-03 8:16 ` Eric Sunshine
2013-09-03 12:15 ` Brad King
2013-09-04 15:22 ` [PATCH v4 0/8] Multiple simultaneously locked ref updates Brad King
2013-09-04 15:22 ` [PATCH v4 1/8] reset: rename update_refs to reset_refs Brad King
2013-09-04 15:22 ` [PATCH v4 2/8] refs: report ref type from lock_any_ref_for_update Brad King
2013-09-04 15:22 ` [PATCH v4 3/8] refs: factor update_ref steps into helpers Brad King
2013-09-04 15:22 ` [PATCH v4 4/8] refs: factor delete_ref loose ref step into a helper Brad King
2013-09-04 15:22 ` [PATCH v4 5/8] refs: add function to repack without multiple refs Brad King
2013-09-04 15:22 ` [PATCH v4 6/8] refs: add update_refs for multiple simultaneous updates Brad King
2013-09-04 15:22 ` [PATCH v4 7/8] update-ref: support " Brad King
2013-09-04 18:23 ` Junio C Hamano
2013-09-04 19:59 ` Brad King
2013-09-04 21:27 ` Junio C Hamano
2013-09-05 20:32 ` Brad King
2013-09-05 21:23 ` Junio C Hamano
2013-09-05 23:44 ` Brad King
2013-09-04 19:17 ` Junio C Hamano
2013-09-04 19:16 ` Brad King
2013-09-04 15:22 ` [PATCH v4 8/8] update-ref: add test cases covering --stdin signature Brad King
2013-09-09 13:22 ` [PATCH v5 0/8] Multiple simultaneously locked ref updates Brad King
2013-09-09 13:22 ` [PATCH v5 7/8] update-ref: support multiple simultaneous updates Brad King
2013-09-09 13:22 ` [PATCH v5 8/8] update-ref: add test cases covering --stdin signature Brad King
2013-09-10 0:57 ` [PATCH v6 0/8] Multiple simultaneously locked ref updates Brad King
2013-09-10 0:57 ` [PATCH v6 1/8] reset: rename update_refs to reset_refs Brad King
2013-09-10 3:43 ` Ramkumar Ramachandra
2013-09-10 0:57 ` [PATCH v6 2/8] refs: report ref type from lock_any_ref_for_update Brad King
2013-09-10 0:57 ` [PATCH v6 3/8] refs: factor update_ref steps into helpers Brad King
2013-09-10 0:57 ` [PATCH v6 4/8] refs: factor delete_ref loose ref step into a helper Brad King
2013-09-10 0:57 ` [PATCH v6 5/8] refs: add function to repack without multiple refs Brad King
2013-09-10 0:57 ` [PATCH v6 6/8] refs: add update_refs for multiple simultaneous updates Brad King
2013-09-10 0:57 ` [PATCH v6 7/8] update-ref: support " Brad King
2013-09-10 22:51 ` Eric Sunshine
2013-09-11 12:36 ` Brad King
2013-09-11 16:07 ` Eric Sunshine
2013-09-10 0:57 ` [PATCH v6 8/8] update-ref: add test cases covering --stdin signature Brad King
2013-09-10 22:46 ` Eric Sunshine
2013-09-10 22:54 ` Junio C Hamano
2013-09-11 12:46 ` [PATCH v6.1 " Brad King
2013-09-10 16:30 ` [PATCH v6 0/8] Multiple simultaneously locked ref updates Junio C Hamano
2013-09-10 16:54 ` Brad King
2013-09-10 20:18 ` Junio C Hamano
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=xmqqvc2lul9g.fsf@gitster.dls.corp.google.com \
--to=gitster@pobox.com \
--cc=brad.king@kitware.com \
--cc=git@vger.kernel.org \
/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.