Revision f43ba60e2c3bec4925eee229fa0f420dd1296f0c authored by Linus Torvalds on 13 April 2006, 17:01:02 UTC, committed by Junio C Hamano on 13 April 2006, 18:26:56 UTC
This trivially avoids keeping the commit message data around after we
don't need it any more, avoiding a continually growing "git log" memory
footprint.

It's not a huge deal, but it's somewhat noticeable. For the current kernel
tree, doing a full "git log" I got

 - before: /usr/bin/time git log > /dev/null
	0.81user 0.02system 0:00.84elapsed 100%CPU (0avgtext+0avgdata 0maxresident)k
	0inputs+0outputs (0major+8851minor)pagefaults 0swaps

 - after: /usr/bin/time git log > /dev/null
	0.79user 0.03system 0:00.83elapsed 100%CPU (0avgtext+0avgdata 0maxresident)k
	0inputs+0outputs (0major+5039minor)pagefaults 0swaps

ie the touched pages dropped from 8851 to 5039. For the historic kernel
archive, the numbers are 18357->11037 minor page faults.

We could/should in theory free the commits themselves, but that's really a
lot harder, since during revision traversal we may hit the same commit
twice through different children having it as a parent, even after we've
shown it once (when that happens, we'll silently ignore it next time, but
we still need the "struct commit" to know).

And as the commit message data is clearly the biggest part of the commit,
this is the really easy 60% solution.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
1 parent d533524
History
File Mode Size
Documentation
arm
compat
contrib
mozilla-sha1
ppc
t
templates
xdiff
.gitignore -rw-r--r-- 1.8 KB
COPYING -rw-r--r-- 18.3 KB
GIT-VERSION-GEN -rwxr-xr-x 669 bytes
INSTALL -rw-r--r-- 4.4 KB
Makefile -rw-r--r-- 18.9 KB
README -rw-r--r-- 24.7 KB
apply.c -rw-r--r-- 48.7 KB
blame.c -rw-r--r-- 20.0 KB
blob.c -rw-r--r-- 1.2 KB
blob.h -rw-r--r-- 311 bytes
cache.h -rw-r--r-- 12.7 KB
cat-file.c -rw-r--r-- 3.5 KB
check-ref-format.c -rw-r--r-- 248 bytes
checkout-index.c -rw-r--r-- 7.4 KB
clone-pack.c -rw-r--r-- 3.9 KB
combine-diff.c -rw-r--r-- 22.5 KB
commit-tree.c -rw-r--r-- 3.2 KB
commit.c -rw-r--r-- 15.8 KB
commit.h -rw-r--r-- 2.9 KB
config.c -rw-r--r-- 12.5 KB
connect.c -rw-r--r-- 14.2 KB
convert-objects.c -rw-r--r-- 7.2 KB
copy.c -rw-r--r-- 692 bytes
csum-file.c -rw-r--r-- 2.9 KB
csum-file.h -rw-r--r-- 566 bytes
ctype.c -rw-r--r-- 890 bytes
daemon.c -rw-r--r-- 16.2 KB
date.c -rw-r--r-- 14.5 KB
delta.h -rw-r--r-- 955 bytes
describe.c -rw-r--r-- 3.6 KB
diff-delta.c -rw-r--r-- 7.0 KB
diff-files.c -rw-r--r-- 5.1 KB
diff-index.c -rw-r--r-- 5.6 KB
diff-stages.c -rw-r--r-- 2.4 KB
diff-tree.c -rw-r--r-- 3.2 KB
diff.c -rw-r--r-- 36.0 KB
diff.h -rw-r--r-- 4.9 KB
diffcore-break.c -rw-r--r-- 8.5 KB
diffcore-delta.c -rw-r--r-- 5.1 KB
diffcore-order.c -rw-r--r-- 2.2 KB
diffcore-pickaxe.c -rw-r--r-- 3.2 KB
diffcore-rename.c -rw-r--r-- 12.4 KB
diffcore.h -rw-r--r-- 3.7 KB
entry.c -rw-r--r-- 4.1 KB
environment.c -rw-r--r-- 1.9 KB
exec_cmd.c -rw-r--r-- 2.3 KB
exec_cmd.h -rw-r--r-- 295 bytes
fetch-clone.c -rw-r--r-- 5.5 KB
fetch-pack.c -rw-r--r-- 10.4 KB
fetch.c -rw-r--r-- 4.7 KB
fetch.h -rw-r--r-- 1.4 KB
fsck-objects.c -rw-r--r-- 12.2 KB
generate-cmdlist.sh -rwxr-xr-x 562 bytes
get-tar-commit-id.c -rw-r--r-- 514 bytes
git-add.sh -rwxr-xr-x 786 bytes
git-am.sh -rwxr-xr-x 10.0 KB
git-annotate.perl -rwxr-xr-x 10.7 KB
git-applymbox.sh -rwxr-xr-x 2.8 KB
git-applypatch.sh -rwxr-xr-x 5.4 KB
git-archimport.perl -rwxr-xr-x 34.2 KB
git-bisect.sh -rwxr-xr-x 5.7 KB
git-branch.sh -rwxr-xr-x 2.4 KB
git-checkout.sh -rwxr-xr-x 4.7 KB
git-cherry.sh -rwxr-xr-x 1.9 KB
git-clean.sh -rwxr-xr-x 1.3 KB
git-clone.sh -rwxr-xr-x 9.7 KB
git-commit.sh -rwxr-xr-x 14.6 KB
git-compat-util.h -rw-r--r-- 3.4 KB
git-count-objects.sh -rwxr-xr-x 706 bytes
git-cvsexportcommit.perl -rwxr-xr-x 6.5 KB
git-cvsimport.perl -rwxr-xr-x 22.4 KB
git-cvsserver.perl -rwxr-xr-x 85.9 KB
git-diff.sh -rwxr-xr-x 1.5 KB
git-fetch.sh -rwxr-xr-x 9.5 KB
git-fmt-merge-msg.perl -rwxr-xr-x 3.2 KB
git-format-patch.sh -rwxr-xr-x 8.0 KB
git-grep.sh -rwxr-xr-x 1000 bytes
git-log.sh -rwxr-xr-x 372 bytes
git-lost-found.sh -rwxr-xr-x 461 bytes
git-ls-remote.sh -rwxr-xr-x 1.8 KB
git-merge-octopus.sh -rwxr-xr-x 2.4 KB
git-merge-one-file.sh -rwxr-xr-x 2.7 KB
git-merge-ours.sh -rwxr-xr-x 356 bytes
git-merge-recursive.py -rwxr-xr-x 30.8 KB
git-merge-resolve.sh -rwxr-xr-x 955 bytes
git-merge-stupid.sh -rwxr-xr-x 1.4 KB
git-merge.sh -rwxr-xr-x 7.2 KB
git-mv.perl -rwxr-xr-x 5.6 KB
git-parse-remote.sh -rwxr-xr-x 4.2 KB
git-prune.sh -rwxr-xr-x 783 bytes
git-pull.sh -rwxr-xr-x 2.5 KB
git-push.sh -rwxr-xr-x 1.7 KB
git-rebase.sh -rwxr-xr-x 3.0 KB
git-relink.perl -rwxr-xr-x 4.0 KB
git-repack.sh -rwxr-xr-x 1.6 KB
git-request-pull.sh -rwxr-xr-x 856 bytes
git-rerere.perl -rwxr-xr-x 4.8 KB
git-reset.sh -rwxr-xr-x 2.2 KB
git-resolve.sh -rwxr-xr-x 2.4 KB
git-revert.sh -rwxr-xr-x 4.0 KB
git-rm.sh -rwxr-xr-x 1.0 KB
git-send-email.perl -rwxr-xr-x 10.6 KB
git-sh-setup.sh -rwxr-xr-x 1.0 KB
git-shortlog.perl -rwxr-xr-x 4.0 KB
git-svnimport.perl -rwxr-xr-x 22.1 KB
git-tag.sh -rwxr-xr-x 2.3 KB
git-verify-tag.sh -rwxr-xr-x 703 bytes
git-whatchanged.sh -rwxr-xr-x 934 bytes
git.c -rw-r--r-- 11.5 KB
git.spec.in -rw-r--r-- 6.3 KB
gitMergeCommon.py -rw-r--r-- 6.9 KB
gitk -rwxr-xr-x 107.7 KB
hash-object.c -rw-r--r-- 1.8 KB
http-fetch.c -rw-r--r-- 31.0 KB
http-push.c -rw-r--r-- 66.4 KB
http.c -rw-r--r-- 10.8 KB
http.h -rw-r--r-- 2.3 KB
ident.c -rw-r--r-- 5.2 KB
imap-send.c -rw-r--r-- 28.9 KB
index-pack.c -rw-r--r-- 11.6 KB
index.c -rw-r--r-- 1.1 KB
init-db.c -rw-r--r-- 7.4 KB
local-fetch.c -rw-r--r-- 5.7 KB
log-tree.c -rw-r--r-- 4.5 KB
log-tree.h -rw-r--r-- 560 bytes
ls-files.c -rw-r--r-- 18.4 KB
ls-tree.c -rw-r--r-- 3.4 KB
mailinfo.c -rw-r--r-- 16.1 KB
mailsplit.c -rw-r--r-- 3.9 KB
merge-base.c -rw-r--r-- 6.0 KB
merge-index.c -rw-r--r-- 2.6 KB
merge-tree.c -rw-r--r-- 4.4 KB
mktag.c -rw-r--r-- 3.1 KB
mktree.c -rw-r--r-- 3.1 KB
name-rev.c -rw-r--r-- 5.3 KB
object.c -rw-r--r-- 5.7 KB
object.h -rw-r--r-- 1.5 KB
pack-check.c -rw-r--r-- 4.2 KB
pack-objects.c -rw-r--r-- 33.1 KB
pack-redundant.c -rw-r--r-- 14.2 KB
pack.h -rw-r--r-- 818 bytes
pager.c -rw-r--r-- 701 bytes
patch-delta.c -rw-r--r-- 2.1 KB
patch-id.c -rw-r--r-- 1.5 KB
path.c -rw-r--r-- 5.3 KB
peek-remote.c -rw-r--r-- 1.0 KB
pkt-line.c -rw-r--r-- 2.4 KB
pkt-line.h -rw-r--r-- 270 bytes
prune-packed.c -rw-r--r-- 1.5 KB
quote.c -rw-r--r-- 5.6 KB
quote.h -rw-r--r-- 1.5 KB
read-cache.c -rw-r--r-- 16.9 KB
read-tree.c -rw-r--r-- 17.8 KB
receive-pack.c -rw-r--r-- 7.6 KB
refs.c -rw-r--r-- 8.5 KB
refs.h -rw-r--r-- 1.0 KB
repo-config.c -rw-r--r-- 3.1 KB
rev-list.c -rw-r--r-- 8.7 KB
rev-parse.c -rw-r--r-- 6.8 KB
revision.c -rw-r--r-- 19.2 KB
revision.h -rw-r--r-- 1.9 KB
rsh.c -rw-r--r-- 2.2 KB
rsh.h -rw-r--r-- 159 bytes
run-command.c -rw-r--r-- 1.5 KB
run-command.h -rw-r--r-- 523 bytes
send-pack.c -rw-r--r-- 9.2 KB
server-info.c -rw-r--r-- 5.1 KB
setup.c -rw-r--r-- 4.4 KB
sha1_file.c -rw-r--r-- 37.9 KB
sha1_name.c -rw-r--r-- 10.1 KB
shell.c -rw-r--r-- 1.1 KB
show-branch.c -rw-r--r-- 17.6 KB
show-index.c -rw-r--r-- 593 bytes
ssh-fetch.c -rw-r--r-- 3.5 KB
ssh-pull.c -rw-r--r-- 154 bytes
ssh-push.c -rw-r--r-- 155 bytes
ssh-upload.c -rw-r--r-- 2.8 KB
strbuf.c -rw-r--r-- 807 bytes
strbuf.h -rw-r--r-- 216 bytes
stripspace.c -rw-r--r-- 918 bytes
symbolic-ref.c -rw-r--r-- 785 bytes
tag.c -rw-r--r-- 2.6 KB
tag.h -rw-r--r-- 471 bytes
tar-tree.c -rw-r--r-- 8.4 KB
tar.h -rw-r--r-- 644 bytes
test-date.c -rw-r--r-- 416 bytes
test-delta.c -rw-r--r-- 1.8 KB
tree-diff.c -rw-r--r-- 5.7 KB
tree-walk.c -rw-r--r-- 2.4 KB
tree-walk.h -rw-r--r-- 633 bytes
tree.c -rw-r--r-- 5.5 KB
tree.h -rw-r--r-- 1.1 KB
unpack-file.c -rw-r--r-- 763 bytes
unpack-objects.c -rw-r--r-- 6.7 KB
update-index.c -rw-r--r-- 14.7 KB
update-ref.c -rw-r--r-- 2.0 KB
update-server-info.c -rw-r--r-- 457 bytes
upload-pack.c -rw-r--r-- 6.3 KB
usage.c -rw-r--r-- 639 bytes
var.c -rw-r--r-- 1.3 KB
verify-pack.c -rw-r--r-- 1.1 KB
write-tree.c -rw-r--r-- 3.9 KB
xdiff-interface.c -rw-r--r-- 2.2 KB
xdiff-interface.h -rw-r--r-- 446 bytes

README

back to top