From: Josh Triplett <josh@joshtriplett.org>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: Re: gc and repack ignore .git/*HEAD when checking reachability
Date: Thu, 7 Jul 2016 23:44:49 -0700 [thread overview]
Message-ID: <20160708064448.GA18043@x> (raw)
In-Reply-To: <xmqq1t34oiit.fsf@gitster.mtv.corp.google.com>
On Thu, Jul 07, 2016 at 09:34:02PM -0700, Junio C Hamano wrote:
> Josh Triplett <josh@joshtriplett.org> writes:
> > This could result in data loss, if a user expected that having an object
> > referenced from those places would protect it from pruning.
>
> Yeah, luckily, nobody expects such. I do not think any of our
> document says nothing other than HEAD like CHERRY_PICK_HEAD is
> reachability anchoring point; they are designed to be transient.
I can imagine at least one scenario that would result in data loss here:
git pull a URL (not referenced via any ref other than
FETCH_HEAD/MERGE_HEAD), get a merge conflict, get halfway through
resolving it, set that repository aside for a while, do something that
triggers a gc, then attempt to finish and commit.
Unlikely, but not impossible. Same reason the reachability logic looks
at the index.
(I originally encountered this because I intended to add another
HEAD-like ref in .git, so I started investigating the logic around such
HEADs.)
> Because they are designed to be transient, I do not think there is
> any downside (other than the initial start-up cost) to including
> them in reachability computation. Because they are meant to be
> transient, the objects anchored by them would be reachable from
> other anchoring points anyway.
That sounds reasonable. And if they *do* end up taking any time to
traverse, it's because they weren't reachable from other anchoring
points, so taking the extra time to traverse them seems fine.
- Josh Triplett
next prev parent reply other threads:[~2016-07-08 6:44 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-08 2:59 gc and repack ignore .git/*HEAD when checking reachability Josh Triplett
2016-07-08 4:34 ` Junio C Hamano
2016-07-08 6:44 ` Josh Triplett [this message]
2016-07-08 17:14 ` Junio C Hamano
2016-07-08 19:25 ` Theodore Ts'o
2016-07-08 20:30 ` Junio C Hamano
2016-07-08 23:50 ` Theodore Ts'o
2016-07-09 5:23 ` Josh Triplett
2016-07-08 20:29 ` Josh Triplett
2016-07-09 7:35 ` Johannes Schindelin
2016-07-09 14:09 ` Josh Triplett
2016-07-09 16:45 ` Duy Nguyen
2016-07-10 10:59 ` Johannes Schindelin
2016-07-10 11:04 ` Duy Nguyen
2016-07-10 14:16 ` Johannes Schindelin
2016-07-10 15:01 ` Duy Nguyen
2016-07-11 6:07 ` Johannes Schindelin
2016-07-11 18:52 ` Junio C Hamano
2016-07-12 10:47 ` Johannes Schindelin
2016-07-12 15:26 ` Jeff King
2016-07-12 15:46 ` Duy Nguyen
2016-07-12 15:51 ` Jeff King
2016-07-12 16:13 ` Duy Nguyen
2016-07-13 8:20 ` Johannes Schindelin
2016-07-13 14:54 ` Duy Nguyen
2016-07-13 18:59 ` Johannes Schindelin
2016-07-15 15:46 ` Duy Nguyen
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=20160708064448.GA18043@x \
--to=josh@joshtriplett.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.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.