Re: Retrospectively add alternates to a repository?
- From
- Steve Folly <steve@spfweb.co.uk>
- Date
- Feb 27, 2010, 11:43 UTC
- Message-ID
- <loom.20100227T123539-643@post.gmane.org>
- In-Reply-To
- <20100227083418.GC27191@coredump.intra.peff.net>
Jeff King <peff <at> peff.net> writes:
Show 40 quoted lines
> > On Sat, Feb 27, 2010 at 10:37:25AM +0800, Tay Ray Chuan wrote: > > > yes, just make sure the objects/info/alternates file points to the > > location of that cloned repo's object directory; for example: > > > > $ echo /path/to/cloned/repo/.git/objects > .git/objects/info/alternates > > You will probably want to then get rid of anything in the child that is > now available in the alternates repository. > > I would have thought "git repack -adl" works, but I think there is > something a little funny in the logic. It reports "nothing new to pack", > but does not delete the loose objects. But packing first then worked: > > $ git clone large-parent child > $ echo $PWD/large-parent/.git/objects >child/.git/objects/info/alternates > $ cd child > > $ du -sh .git/objects > 51M .git/objects > > $ git repack -adl && du -sh .git/objects > Nothing new to pack. > 51M .git/objects > > $ git repack -ad && du -sh .git/objects > Counting objects: 3, done. > Delta compression using up to 2 threads. > Compressing objects: 100% (2/2), done. > Writing objects: 100% (3/3), done. > Total 3 (delta 0), reused 0 (delta 0) > 51M .git/objects > > $ git repack -adl && du -sh .git/objects > Nothing new to pack. > 20K .git/objects > > -Peff >
Excellent, this is exactly what I need. Thanks very much Tay and Jeff.
I now have a plan to write a script to attach and detach repositories to and from local mirrors on demand:
attach =
echo "/path/to/mirror" > .git/objects/info/alternates &&
git repack -adl &&
git repack -ad &&
git repack -adldetach =
git repack -a &&
rm .git/objects/info/alternatesCheers, Steve