From: Nicolas Pitre <nico@cam.org>
To: Jeff King <peff@peff.net>
Cc: drafnel@gmail.com, gitster@pobox.com, git@vger.kernel.org
Subject: Re: [PATCH 1/3] repack: modify behavior of -A option to leave unreferenced objects unpacked
Date: Sat, 10 May 2008 21:10:53 -0400 (EDT) [thread overview]
Message-ID: <alpine.LFD.1.10.0805101157090.23581@xanadu.home> (raw)
In-Reply-To: <20080510060345.GC11556@sigill.intra.peff.net>
On Sat, 10 May 2008, Jeff King wrote:
> Also, should --keep-unreachable be deprecated / removed?
Depends. If it has no maintenance cost then we might as well keep it
around.
> I still like Geert's suggestion of unpacking them to a _different_
> place. That helps to avoid spurious "gc --auto" invocations caused by
> too many prunable objects. Though it certainly doesn't solve it, and
> maybe that just needs to be fixed separately.
Having a separate location for objects seems clunky to me.
And the fundamental problem isn't solved indeed -- you may end up with
many non expired unreachable loose objects already without packing them.
> Possibly the "gc --auto" test should be:
>
> - count objects; if too few, exit
> - count unreachable loose objects; if too few, exit
Determining the number of unreachable objects is quite costly, packed or
not. So that isn't a good thing to do on every 'git gc --auto'
invokation.
> - run gc
>
> That means having a lot of unreachable objects will still incur some
> extra processing, but not as much as a full repack. And it won't bug the
> user with a "you need to repack" message.
The auto gc performs incremental packing most of the time. And that is
way faster than figuring out which objects are unreachable.
For example, running 'git prune' in my Linux repo takes 16 seconds, even
when there is nothing to prune. Running 'git repack' (with no option so
to perform an incremental repack) took less than 2 seconds to pack 541
reachable objects that happened to be loose.
I'm now starting to wonder if there is a reason for keeping unreachable
objects that used to be packed. Putting --keep-unreachable aside for
now, the only way an unreachable object could have entered a pack is if
it used to be reachable before through the commit history or reflog.
So if they're not reachable anymore, that's most probably because their
reflog expired. So what's the point for keeping them even longer?
What's the reasoning that led to the creation of --keep-unreachable in
the first place?
Nicolas
next prev parent reply other threads:[~2008-05-11 1:12 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-08 17:45 git gc & deleted branches Guido Ostkamp
2008-05-08 18:39 ` Jeff King
2008-05-08 18:55 ` Guido Ostkamp
2008-05-08 20:07 ` Brandon Casey
2008-05-08 20:52 ` Guido Ostkamp
2008-05-08 21:01 ` Jeff King
2008-05-08 21:15 ` Nicolas Pitre
2008-05-08 21:17 ` Jeff King
2008-05-08 21:23 ` Brandon Casey
2008-05-08 21:31 ` Jeff King
2008-05-08 21:40 ` Brandon Casey
2008-05-08 21:44 ` Jeff King
2008-05-08 21:53 ` Brandon Casey
2008-05-08 22:48 ` Jeff King
2008-05-09 1:41 ` Brandon Casey
2008-05-09 3:21 ` Junio C Hamano
[not found] ` <ee63ef30805082105w7f04a2d1y65a4618aeb787cac@mail.gmail.com>
[not found] ` <7v1w4bb291.fsf@gitster.siamese.dyndns.org>
2008-05-10 3:32 ` Brandon Casey
2008-05-10 4:15 ` Brandon Casey
2008-05-10 4:01 ` [PATCH 0/3] leave unreferenced objects unpacked drafnel
2008-05-10 4:01 ` [PATCH 1/3] repack: modify behavior of -A option to " drafnel
2008-05-10 6:03 ` Jeff King
2008-05-11 1:10 ` Nicolas Pitre [this message]
2008-05-11 1:23 ` Junio C Hamano
2008-05-11 4:16 ` Brandon Casey
2008-05-11 4:51 ` Brandon Casey
2008-05-10 4:01 ` [PATCH 2/3] git-gc: always use -A when manually repacking drafnel
2008-05-10 4:01 ` [PATCH 3/3] builtin-gc.c: deprecate --prune, it now really has no effect drafnel
2008-05-09 4:19 ` git gc & deleted branches Jeff King
2008-05-09 15:00 ` Geert Bosch
2008-05-09 15:14 ` Brandon Casey
2008-05-09 15:53 ` Jeff King
2008-05-09 15:56 ` Brandon Casey
2008-05-09 16:12 ` Nicolas Pitre
2008-05-09 16:54 ` Brandon Casey
2008-05-09 22:33 ` Junio C Hamano
2008-05-09 23:09 ` [PATCH] Updating documentation to match Brandon Casey's proposed git-repack patch Chris Frey
2008-05-10 0:07 ` git gc & deleted branches Jeremy Maitin-Shepard
2008-05-10 0:20 ` Shawn O. Pearce
2008-05-10 0:43 ` Jeremy Maitin-Shepard
2008-05-10 1:21 ` Junio C Hamano
2008-05-10 1:51 ` Jeremy Maitin-Shepard
2008-05-10 5:25 ` Jeff King
2008-05-10 5:36 ` Jeremy Maitin-Shepard
2008-05-10 9:04 ` Johannes Schindelin
2008-05-10 16:24 ` Jeremy Maitin-Shepard
2008-05-11 11:11 ` Johannes Schindelin
2008-05-11 18:39 ` Junio C Hamano
2008-05-08 21:33 ` Guido Ostkamp
2008-05-08 20:56 ` Jeff King
2008-05-08 20:51 ` Jeff King
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=alpine.LFD.1.10.0805101157090.23581@xanadu.home \
--to=nico@cam.org \
--cc=drafnel@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).