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 v2 00/13] Use ref transactions from most callers
Date: Tue, 22 Apr 2014 12:34:44 -0700 [thread overview]
Message-ID: <xmqqzjjd40q3.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <1398120811-20284-1-git-send-email-sahlberg@google.com> (Ronnie Sahlberg's message of "Mon, 21 Apr 2014 15:53:18 -0700")
Ronnie Sahlberg <sahlberg@google.com> writes:
> This patch series changes most of the places where the ref functions for
> locking and writing refs to instead use the new ref transaction API. There
> are still three more places where write_ref_sha1() is called from outside
> of refs.c but those all will require more complex work and review so those
> changes belong in a different patch series.
>
> Version 2:
> - Add a patch to ref_transaction_commit to make it honor onerr even if the
> error triggered in ref_Transaction_commit itself rather than in a call
> to other functions (that already honor onerr).
> - Add a patch to make the update_ref() helper function use transactions
> internally.
> - Change ref_transaction_update to die() instead of error() if we pass
> if a NULL old_sha1 but have have_old == true.
> - Change ref_transaction_create to die() instead of error() if new_sha1
> is false but we pass it a null_sha1.
> - Change ref_transaction_delete die() instead of error() if we pass
> if a NULL old_sha1 but have have_old == true.
> - Change several places to do if(!transaction || ref_transaction_update()
> || ref_Transaction_commit()) die(generic-message) instead of checking each
> step separately and having a different message for each failure.
> Most users are likely not interested in what step of the transaction
> failed and only whether it failed or not.
> - Change commit.c to only pass a pointer to ref_transaction_update
> iff current_head is non-NULL.
> The previous patch used to compute a garbage pointer for
> current_head->object.sha1 and relied on the fact that ref_transaction_update
> would not try to dereference this pointer if !!current_head was 0.
> - Updated commit message for the walker_fetch change to try to justify why
> the change in locking semantics should not be harmful.
Will queue, but when applied on top of mh/ref-transaction and tested
standalone, it appears to fail test #14 of t5550-http-fetch-dumb.sh
for me.
It seems that the culprit is that this step:
git http-fetch -a -w heads/master-new $HEAD $(git config remote.origin.url) &&
creates ".git/heads/master-new" when what it was asked to create was
".git/refs/heads/master-new". Perhaps there is something fishy in
the conversion in walker.c? We used to do lock_ref_sha1() on
"heads/master-new", which prepended "refs/" prefix before calling
lock_ref_sha1_basic() that expects the full path from $GIT_DIR/, but
ref_transaction_update(), which wants to see the full path, is still
fed "heads/master-new" after this series.
next prev parent reply other threads:[~2014-04-22 19:34 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-21 22:53 [PATCH v2 00/13] Use ref transactions from most callers Ronnie Sahlberg
2014-04-21 22:53 ` [PATCH v2 01/13] refs.c: constify the sha arguments for ref_transaction_create|delete|update Ronnie Sahlberg
2014-04-21 22:53 ` [PATCH v2 02/13] refs.c: use a single exit path from transaction commit and handle onerr Ronnie Sahlberg
2014-04-22 19:11 ` Junio C Hamano
2014-04-22 22:46 ` Ronnie Sahlberg
2014-04-22 19:14 ` Junio C Hamano
2014-04-21 22:53 ` [PATCH v2 03/13] refs.c: change ref_transaction_update() to do error checking and return status Ronnie Sahlberg
2014-04-21 22:53 ` [PATCH v2 04/13] refs.c: change ref_transaction_create " Ronnie Sahlberg
2014-04-21 22:53 ` [PATCH v2 05/13] refs.c: ref_transaction_delete to check for error " Ronnie Sahlberg
2014-04-21 22:53 ` [PATCH v2 06/13] tag.c: use ref transactions when doing updates Ronnie Sahlberg
2014-04-21 22:53 ` [PATCH v2 07/13] replace.c: use the ref transaction functions for updates Ronnie Sahlberg
2014-04-21 22:53 ` [PATCH v2 08/13] commit.c: use ref transactions " Ronnie Sahlberg
2014-04-21 22:53 ` [PATCH v2 09/13] sequencer.c: use ref transactions for all ref updates Ronnie Sahlberg
2014-04-21 22:53 ` [PATCH v2 10/13] fast-import.c: change update_branch to use ref transactions Ronnie Sahlberg
2014-04-21 22:53 ` [PATCH v2 11/13] branch.c: use ref transaction for all ref updates Ronnie Sahlberg
2014-04-21 22:53 ` [PATCH v2 12/13] walker.c: use ref transaction for " Ronnie Sahlberg
2014-04-21 22:53 ` [PATCH v2 13/13] refs.c: change update_ref to use a transaction Ronnie Sahlberg
2014-04-22 19:34 ` Junio C Hamano [this message]
2014-04-22 22:43 ` [PATCH v2 00/13] Use ref transactions from most callers 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=xmqqzjjd40q3.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.