Subject: Re: WARNING: THIS PATCH CAN BREAK YOUR REPO, was Re: [PATCH 2/3] Only repack active packs by skipping over kept packs.

From: Shawn Pearce <[email-masked]>
Date: Mon, 30 Oct 2006 14:23:39 -0500

Nicolas Pitre <[email-masked]> wrote:
> On Sun, 29 Oct 2006, Shawn Pearce wrote:
> 
> > During `git repack -a -d` only repack objects which are loose or
> > which reside in an active (a non-kept) pack.  This allows the user
> > to keep large packs as-is without continuous repacking and can be
> > very helpful on large repositories.
> 
> Something is really broken here.

Holy cow.  Since this is now in 'next', 'next' is now seriously
broken if you have a .keep file.

> So... what is the --unpacked=<pack>.pack switch supposed to mean?  It is 
> not documented anywhere and it certainly doesn't produce the expected 
> result with a repack.

Junio introduced --unpacked=<pack>.pack a while ago for this
application.  What it does is skip an object unless its a loose
object file or it is in the named pack.  The idea being that
pack-objects would only consider object files which are loose or
ready to be repacked.

In your example above we should have copied all objects from your
first pack into the new pack during the final destructive repack,
but we didn't.  I don't know why.

--