git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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

  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).