All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Ronnie Sahlberg <sahlberg@google.com>
Cc: git@vger.kernel.org, mhagger@alum.mit.edu
Subject: Re: [PATCH v3 01/14] refs.c make ref_transaction_create a wrapper to ref_transaction_update
Date: Wed, 18 Jun 2014 13:34:41 -0700	[thread overview]
Message-ID: <xmqqha3ihs7y.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <1403111346-18466-2-git-send-email-sahlberg@google.com> (Ronnie Sahlberg's message of "Wed, 18 Jun 2014 10:08:53 -0700")

Ronnie Sahlberg <sahlberg@google.com> writes:

> Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
> ---
>  refs.c | 13 ++-----------
>  refs.h |  7 ++++---
>  2 files changed, 6 insertions(+), 14 deletions(-)
>
> diff --git a/refs.c b/refs.c
> index dfbf003..a9f91ab 100644
> --- a/refs.c
> +++ b/refs.c
> @@ -3487,23 +3487,14 @@ int ref_transaction_create(struct ref_transaction *transaction,
>  			   int flags, const char *msg,
>  			   struct strbuf *err)
>  {
> -	struct ref_update *update;
> -
>  	if (transaction->state != REF_TRANSACTION_OPEN)
>  		die("BUG: create called for transaction that is not open");
>  
>  	if (!new_sha1 || is_null_sha1(new_sha1))
>  		die("BUG: create ref with null new_sha1");
>  
> -	update = add_update(transaction, refname);
> -
> -	hashcpy(update->new_sha1, new_sha1);
> -	hashclr(update->old_sha1);
> -	update->flags = flags;
> -	update->have_old = 1;
> -	if (msg)
> -		update->msg = xstrdup(msg);
> -	return 0;
> +	return ref_transaction_update(transaction, refname, new_sha1,
> +				      null_sha1, flags, 1, msg, err);
>  }

Hmmm.

This probably logically belongs to the end of the previous series
and not necessarily tied to reflog transaction, no?

At the beginning of ref_transaction_update() there also is the same
guard on transaction->state, and having both feels somewhat iffy.
Of course it will give a wrong BUG message if we removed the check
from this function, so perhaps the code is OK as-is.

>  int ref_transaction_delete(struct ref_transaction *transaction,
> diff --git a/refs.h b/refs.h
> index db463d0..495740d 100644
> --- a/refs.h
> +++ b/refs.h
> @@ -283,9 +283,10 @@ struct ref_transaction *ref_transaction_begin(struct strbuf *err);
>  /*
>   * Add a reference update to transaction.  new_sha1 is the value that
>   * the reference should have after the update, or zeros if it should
> - * be deleted.  If have_old is true, then old_sha1 holds the value
> - * that the reference should have had before the update, or zeros if
> - * it must not have existed beforehand.
> + * be deleted.  If have_old is true and old_sha is not the null_sha1
> + * then the previous value of the ref must match or the update will fail.
> + * If have_old is true and old_sha1 is the null_sha1 then the ref must not
> + * already exist and a new ref will be created with new_sha1.
>   * 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.

  reply	other threads:[~2014-06-18 20:34 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-18 17:08 [PATCH v3 00/14] ref-transactions-reflog Ronnie Sahlberg
2014-06-18 17:08 ` [PATCH v3 01/14] refs.c make ref_transaction_create a wrapper to ref_transaction_update Ronnie Sahlberg
2014-06-18 20:34   ` Junio C Hamano [this message]
2014-06-18 17:08 ` [PATCH v3 02/14] refs.c: make ref_transaction_delete a wrapper for ref_transaction_update Ronnie Sahlberg
2014-06-18 17:08 ` [PATCH v3 03/14] refs.c: rename the transaction functions Ronnie Sahlberg
2014-06-18 17:08 ` [PATCH v3 04/14] refs.c: add a new update_type field to ref_update Ronnie Sahlberg
2014-06-18 20:36   ` Junio C Hamano
2014-06-18 21:10     ` Re* " Junio C Hamano
2014-07-02 18:27       ` Ronnie Sahlberg
2014-06-18 17:08 ` [PATCH v3 05/14] refs.c: add a function to append a reflog entry to a fd Ronnie Sahlberg
2014-06-18 17:08 ` [PATCH v3 06/14] lockfile.c: make hold_lock_file_for_append preserve meaningful errno Ronnie Sahlberg
2014-06-18 17:08 ` [PATCH v3 07/14] refs.c: add a transaction function to append a reflog entry Ronnie Sahlberg
2014-06-18 17:09 ` [PATCH v3 08/14] refs.c: add a flag to allow reflog updates to truncate the log Ronnie Sahlberg
2014-06-18 17:09 ` [PATCH v3 09/14] refs.c: only write reflog update if msg is non-NULL Ronnie Sahlberg
2014-06-18 17:09 ` [PATCH v3 10/14] refs.c: allow multiple reflog updates during a single transaction Ronnie Sahlberg
2014-06-18 17:09 ` [PATCH v3 11/14] reflog.c: use a reflog transaction when writing during expire Ronnie Sahlberg
2014-06-18 17:09 ` [PATCH v3 12/14] refs.c: rename log_ref_setup to create_reflog Ronnie Sahlberg
2014-06-18 17:09 ` [PATCH v3 13/14] refs.c: make unlock_ref/close_ref/commit_ref static Ronnie Sahlberg
2014-06-18 17:09 ` [PATCH v3 14/14] refs.c: remove lock_any_ref_for_update Ronnie Sahlberg

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=xmqqha3ihs7y.fsf@gitster.dls.corp.google.com \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=mhagger@alum.mit.edu \
    --cc=sahlberg@google.com \
    /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.