summaryrefslogtreecommitdiff
path: root/git-commit-script
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2007-07-17 22:49:44 -0400
committerShawn O. Pearce <spearce@spearce.org>2007-07-17 22:49:44 -0400
commitd164b7548ab61e50d4404d1fbc0da3a8f6c0cc87 (patch)
tree91d17e3e0bc12a444e9f738edec516d17bbbae0e /git-commit-script
parent2370164f3ceb833b9b4128d80bdfcc81e58682f9 (diff)
git-gui: Change our initial GC hint to be an estimate
Instead of running a full git-count-objects to count all of the loose objects we can get a reasonably close approximation by counting the number of files in the .git/objects/42 subdirectory. This works out reasonably well because the SHA-1 hash has a fairly even distribution, so every .git/objects/?? subdirectory should get a relatively equal number of files. If we have at least 8 files in .git/objects/42 than it is very likely there is about 8 files in every other directory, leaving us with around 2048 loose objects. This check is much faster, as we need to only perform a readdir of a single directory, and we can do it directly from Tcl and avoid the costly fork+exec. All of the credit on how clever this is goes to Linus Torvalds; he suggested using this trick in a post commit hook to repack every so often. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Diffstat (limited to 'git-commit-script')
0 files changed, 0 insertions, 0 deletions