From: Junio C Hamano <gitster@pobox.com>
To: "Jens Lindström" <jl@opera.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 1/2] remote: defer repacking packed-refs when deleting refs
Date: Tue, 20 May 2014 13:29:42 -0700 [thread overview]
Message-ID: <xmqqlhtwxkg9.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <xmqqtx8kxn7f.fsf@gitster.dls.corp.google.com> (Junio C. Hamano's message of "Tue, 20 May 2014 12:30:12 -0700")
Junio C Hamano <gitster@pobox.com> writes:
> A bit safer way to organize might be to first create a list of the
> refs to be removed in-core, update packed-refs without these refs to
> be removed, and then finally remove the loose ones, but I haven't
> thought things through.
Perhaps a removal of remote can go in this order to be resistant
against an abort-in-the-middle.
* update packed-refs without the refs that came from the remote.
- when interrupted before the new temporary file is renamed to
the final, it would be a no-op.
- when interrupted after the rename, only some refs that came
from the remote may disappear.
* remove the loose refs that came from the remote.
* finally, remove the configuration related to the remote.
This order would let you interrupt "remote rm" without leaving the
repository in a broken state. Before the final state, it may appear
that you have some but not all remote-tracking refs from the remote
in your repository, but you would not have any ref that point at an
obsolete object. Running "remote rm" again, once it finishes, will
give you the desired result.
A longer-term goal might be to have ref-transaction infrastructure
clever enough to coalesce the "repack-without-these-refs" requests
into one automatically without forcing the callers you are fixing
care about these things, though. And such a transaction semantics
may have to also cover the updating of configuration files.
next prev parent reply other threads:[~2014-05-20 20:29 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-20 10:34 [PATCH 0/2] remote: optimize rm/prune ref deletion Jens Lindström
2014-05-20 10:39 ` [PATCH 1/2] remote: defer repacking packed-refs when deleting refs Jens Lindström
2014-05-20 19:30 ` Junio C Hamano
2014-05-20 20:29 ` Junio C Hamano [this message]
2014-05-23 10:03 ` Jens Lindström
2014-05-23 17:09 ` Junio C Hamano
2014-05-24 7:54 ` Jens Lindström
2014-05-27 16:55 ` Junio C Hamano
2014-05-20 10:41 ` [PATCH 2/2] remote prune: optimize "dangling symref" check/warning Jens Lindström
2014-05-23 10:26 ` [PATCH v2 0/3] remote: optimize rm/prune ref deletion Jens Lindström
2014-05-23 10:28 ` [PATCH v2 1/3] remote rm: delete remote configuration as the last Jens Lindström
2014-05-23 18:55 ` Junio C Hamano
2014-05-23 10:29 ` [PATCH v2 2/3] remote: repack packed-refs once when deleting multiple refs Jens Lindström
2014-05-23 19:11 ` Junio C Hamano
2014-05-23 19:25 ` Junio C Hamano
2014-05-23 10:30 ` [PATCH v2 3/3] remote prune: optimize "dangling symref" check/warning Jens Lindström
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=xmqqlhtwxkg9.fsf@gitster.dls.corp.google.com \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=jl@opera.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.