Hi, On Mon, 26 Feb 2007, Martin Koegler wrote: > On Fri, Feb 23, 2007 at 12:10:35AM -0800, Junio C Hamano wrote: > > > $ P=.git/objects/pack > > $ git rev-list --objects v1.5.0 | > > git pack-objects --delta-base-offset \ > > --depth=30 --window=100 --no-reuse-delta pack > > ... > > 6fba5cb8ed92dfef71ff47def9f95fa1e703ba59 > > $ mv pack-6fba5cb8ed92dfef71ff47def9f95fa1e703ba59.* $P/ > > $ echo 'Post 1.5.0' >$P/pack-6fba5cb8ed92dfef71ff47def9f95fa1e703ba59.keep > > $ git gc --prune > > > > This does three things: > > > > - It packs everything reachable from v1.5.0 with delta chain > > that is deeper than the default. > > > > - The pack is installed in the object store; the presence of > > .keep file (the contents of it does not matter) tells > > subsequent repack not to touch it. > > > > - Then the remaining objects are packed into different pack. > > > > With this, the repository uses two packs, one is what I'll keep > > until it's time to do the big repack again, another is what's > > constantly recreated by repacking but contains only "recent" > > object. > > This could be a practical solution for me. The biggest disadvantage of > this solution is, that each pack file is at least >= 60 MB. Junio has a branch he rewinds sometimes. That's why he does not do the obvious, which should work for you: $ git gc --prune $ for p in .git/objects/pack/*.pack; do keepfile=`echo $p | sed s/pack$/keep/` echo "Keep all current packs as-are" > $keepfile done You should run this from time to time. You can run "git gc --prune" more often, of course... Hth, Dscho - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html