summaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-02-16 01:34:29 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-02-17 10:11:38 (GMT)
commita49dd05fd047f504a74fb053bb8ddbb9e4bd152b (patch)
treee850ef16ae77b243cad03615b98526dd39ab1b23 /Documentation
parent8cb711c8a5f98c1556b320114d7cc65e498ee2ae (diff)
downloadgit-a49dd05fd047f504a74fb053bb8ddbb9e4bd152b.zip
git-a49dd05fd047f504a74fb053bb8ddbb9e4bd152b.tar.gz
git-a49dd05fd047f504a74fb053bb8ddbb9e4bd152b.tar.bz2
pack-objects: reuse data from existing packs.
When generating a new pack, notice if we have already needed objects in existing packs. If an object is stored deltified, and its base object is also what we are going to pack, then reuse the existing deltified representation unconditionally, bypassing all the expensive find_deltas() and try_deltas() calls. Also, notice if what we are going to write out exactly match what is already in an existing pack (either deltified or just compressed). In such a case, we can just copy it instead of going through the usual uncompressing & recompressing cycle. Without this patch, in linux-2.6 repository with about 1500 loose objects and a single mega pack: $ git-rev-list --objects v2.6.16-rc3 >RL $ wc -l RL 184141 RL $ time git-pack-objects p <RL Generating pack... Done counting 184141 objects. Packing 184141 objects.................... a1fc7b3e537fcb9b3c46b7505df859f0a11e79d2 real 12m4.323s user 11m2.560s sys 0m55.950s With this patch, the same input: $ time ../git.junio/git-pack-objects q <RL Generating pack... Done counting 184141 objects. Packing 184141 objects..................... a1fc7b3e537fcb9b3c46b7505df859f0a11e79d2 Total 184141, written 184141, reused 182441 real 1m2.608s user 0m55.090s sys 0m1.830s Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'Documentation')
0 files changed, 0 insertions, 0 deletions