summaryrefslogtreecommitdiff
path: root/lib/database.tcl
diff options
context:
space:
mode:
authorLibravatar Shawn O. Pearce <spearce@spearce.org>2007-07-17 23:20:56 -0400
committerLibravatar Shawn O. Pearce <spearce@spearce.org>2007-07-17 23:20:56 -0400
commit3972b987d373759ae4868012fe8133ca1e26ea20 (patch)
treee24c45a46195d0c1241237a700754420676b306f /lib/database.tcl
parentgit-gui: Let the user continue even if we cannot understand git version (diff)
downloadtgif-3972b987d373759ae4868012fe8133ca1e26ea20.tar.xz
git-gui: Delay the GC hint until after we are running
I'm moving the code related to looking to see if we should GC now into a procedure closer to where it belongs, the database module. This reduces our script by a few lines for the single commit case (aka citool). But really it just is to help organize the code. We now perform the check after we have been running for at least 1 second. This way the main window has time to open up and our dialog (if we open it) will attach to the main window, instead of floating out in no-mans-land like it did before on Mac OS X. I had to use a wait of a full second here as a wait of 1 millisecond made our console install itself into the main window. Apparently we had a race condition with the console code where both the console and the main window thought they were the main window. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Diffstat (limited to 'lib/database.tcl')
-rw-r--r--lib/database.tcl27
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/database.tcl b/lib/database.tcl
index 87c815d7ac..0657cc2245 100644
--- a/lib/database.tcl
+++ b/lib/database.tcl
@@ -87,3 +87,30 @@ proc do_fsck_objects {} {
lappend cmd --strict
console::exec $w $cmd
}
+
+proc hint_gc {} {
+ set object_limit 8
+ if {[is_Windows]} {
+ set object_limit 1
+ }
+
+ set objects_current [llength [glob \
+ -directory [gitdir objects 42] \
+ -nocomplain \
+ -tails \
+ -- \
+ *]]
+
+ if {$objects_current >= $object_limit} {
+ set objects_current [expr {$objects_current * 256}]
+ set object_limit [expr {$object_limit * 256}]
+ if {[ask_popup \
+ "This repository currently has approximately $objects_current loose objects.
+
+To maintain optimal performance it is strongly recommended that you compress the database when more than $object_limit loose objects exist.
+
+Compress the database now?"] eq yes} {
+ do_gc
+ }
+ }
+}