All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Michael Haggerty <mhagger@alum.mit.edu>
Cc: Stefan Beller <sbeller@google.com>, Jeff King <peff@peff.net>,
	git@vger.kernel.org
Subject: Re: [PATCH v2 03/12] delete_ref(): handle special case more explicitly
Date: Mon, 15 Jun 2015 11:22:21 -0700	[thread overview]
Message-ID: <xmqqbnggal2a.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <0c66a6bd6e49b9c28fa3617ee50de746ef4ea9a3.1434206062.git.mhagger@alum.mit.edu> (Michael Haggerty's message of "Sat, 13 Jun 2015 16:42:06 +0200")

Michael Haggerty <mhagger@alum.mit.edu> writes:

> delete_ref() uses a different convention for its old_sha1 parameter
> than, say, ref_transaction_delete(): NULL_SHA1 means not to check the
> old value. Make this fact a little bit clearer in the code by handling
> it in explicit, commented code rather than burying it in a conditional
> expression.
>
> Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
> ---

I think this is a very sensible first step, but I wonder if
delete_ref() should be taught the difference between "we do not
expect anything" and "we expect it not to exist".

>  refs.c | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/refs.c b/refs.c
> index b575bb8..f0b6cec 100644
> --- a/refs.c
> +++ b/refs.c
> @@ -2795,10 +2795,17 @@ int delete_ref(const char *refname, const unsigned char *old_sha1,
>  	struct ref_transaction *transaction;
>  	struct strbuf err = STRBUF_INIT;
>  
> +	/*
> +	 * Treat NULL_SHA1 and NULL alike, to mean "we don't care what
> +	 * the old value of the reference was (or even if it didn't
> +	 * exist)":
> +	 */
> +	if (old_sha1 && is_null_sha1(old_sha1))
> +		old_sha1 = NULL;
> +
>  	transaction = ref_transaction_begin(&err);
>  	if (!transaction ||
> -	    ref_transaction_delete(transaction, refname,
> -				   (old_sha1 && !is_null_sha1(old_sha1)) ? old_sha1 : NULL,
> +	    ref_transaction_delete(transaction, refname, old_sha1,
>  				   flags, NULL, &err) ||
>  	    ref_transaction_commit(transaction, &err)) {
>  		error("%s", err.buf);

  reply	other threads:[~2015-06-15 18:22 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-13 14:42 [PATCH v2 00/12] Improve "refs" module encapsulation Michael Haggerty
2015-06-13 14:42 ` [PATCH v2 01/12] delete_ref(): move declaration to refs.h Michael Haggerty
2015-06-13 14:42 ` [PATCH v2 02/12] remove_branches(): remove temporary Michael Haggerty
2015-06-13 14:42 ` [PATCH v2 03/12] delete_ref(): handle special case more explicitly Michael Haggerty
2015-06-15 18:22   ` Junio C Hamano [this message]
2015-06-13 14:42 ` [PATCH v2 04/12] delete_refs(): new function for the refs API Michael Haggerty
2015-06-13 14:42 ` [PATCH v2 05/12] delete_refs(): improve error message Michael Haggerty
2015-06-15 18:29   ` Junio C Hamano
2015-06-19 14:20     ` Michael Haggerty
2015-06-13 14:42 ` [PATCH v2 06/12] prune_remote(): use delete_refs() Michael Haggerty
2015-06-15 18:35   ` Junio C Hamano
2015-06-15 18:39     ` Jeff King
2015-06-15 19:45       ` Junio C Hamano
2015-06-13 14:42 ` [PATCH v2 07/12] repack_without_refs(): make function private Michael Haggerty
2015-06-13 14:42 ` [PATCH v2 08/12] initial_ref_transaction_commit(): function for initial ref creation Michael Haggerty
2015-06-15 18:04   ` Junio C Hamano
2015-06-15 18:39   ` Junio C Hamano
2015-06-15 18:57     ` Jeff King
2015-06-15 18:53   ` Junio C Hamano
2015-06-20  2:15     ` Michael Haggerty
2015-06-13 14:42 ` [PATCH v2 09/12] refs: remove some functions from the module's public interface Michael Haggerty
2015-06-13 14:42 ` [PATCH v2 10/12] initial_ref_transaction_commit(): check for duplicate refs Michael Haggerty
2015-06-13 14:42 ` [PATCH v2 11/12] initial_ref_transaction_commit(): check for ref D/F conflicts Michael Haggerty
2015-06-13 14:42 ` [PATCH v2 12/12] refs: move the remaining ref module declarations to refs.h Michael Haggerty
2015-06-15 18:13   ` Junio C Hamano
2015-06-15 18:35     ` Jeff King
2015-06-15 19:48       ` Junio C Hamano
2015-06-20  1:53       ` Michael Haggerty
2015-06-20  3:30         ` Junio C Hamano
2015-06-15  5:20 ` [PATCH v2 00/12] Improve "refs" module encapsulation Stefan Beller

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