Browse Source

git-gui: Display database stats (count-objects -v) on demand.

Its nice to know how many loose objects and roughly how much disk space
they are taking up, so that you can guestimate about when might be a
good time to run 'Compress Database'.  The same is true of packfiles,
especially once the automatic keep-pack code in git-fetch starts to
be more widely used.

We now offer the output of count-objects -v in a nice little dialog
hung off the Repository menu.  Our labels are slightly more verbose
than those of `count-objects -v`, so users will hopefully be able
to make better sense of what we are showing them here.

We probably should also offer pack file size information, and data
about *.idx files which exist which lack corresponding *.pack files
(a situation caused by the HTTP fetch client).  But in the latter
case we should only offer the data once we have way to let the user
clean up old and inactive index files.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
maint
Shawn O. Pearce 18 years ago
parent
commit
0fd49d0a7d
  1. 67
      git-gui.sh

67
git-gui.sh

@ -1904,7 +1904,7 @@ proc do_create_branch {} { @@ -1904,7 +1904,7 @@ proc do_create_branch {} {
-width 40 \
-font font_ui
$w.desc.name_t insert 0.0 $repo_config(gui.newbranchtemplate)
grid $w.desc.name_l $w.desc.name_t -stick we -padx {0 5}
grid $w.desc.name_l $w.desc.name_t -sticky we -padx {0 5}
bind $w.desc.name_t <Shift-Key-Tab> {focus [tk_focusPrev %W];break}
bind $w.desc.name_t <Key-Tab> {focus [tk_focusNext %W];break}
bind $w.desc.name_t <Key-Return> "do_create_branch_action $w;break"
@ -1954,7 +1954,7 @@ proc do_create_branch {} { @@ -1954,7 +1954,7 @@ proc do_create_branch {} {
-height 1 \
-width 50 \
-font font_ui
grid $w.from.exp_r $w.from.exp_t -stick we -padx {0 5}
grid $w.from.exp_r $w.from.exp_t -sticky we -padx {0 5}
bind $w.from.exp_t <Shift-Key-Tab> {focus [tk_focusPrev %W];break}
bind $w.from.exp_t <Key-Tab> {focus [tk_focusNext %W];break}
bind $w.from.exp_t <Key-Return> "do_create_branch_action $w;break"
@ -2719,6 +2719,63 @@ proc do_gitk {revs} { @@ -2719,6 +2719,63 @@ proc do_gitk {revs} {
}
}

proc do_stats {} {
set fd [open "| git count-objects -v" r]
while {[gets $fd line] > 0} {
if {[regexp {^([^:]+): (\d+)$} $line _ name value]} {
set stats($name) $value
}
}
close $fd

set w .stats_view
toplevel $w
wm geometry $w "+[winfo rootx .]+[winfo rooty .]"

label $w.header -text {Database Statistics} \
-font font_uibold
pack $w.header -side top -fill x

frame $w.buttons -border 1
button $w.buttons.close -text Close \
-font font_ui \
-command [list destroy $w]
button $w.buttons.gc -text {Compress Database} \
-font font_ui \
-command "destroy $w;do_gc"
pack $w.buttons.close -side right
pack $w.buttons.gc -side left
pack $w.buttons -side bottom -fill x -pady 10 -padx 10

frame $w.stat -borderwidth 1 -relief solid
foreach s {
{count {Number of loose objects}}
{size {Disk space used by loose objects} { KiB}}
{in-pack {Number of packed objects}}
{packs {Number of packs}}
{prune-packable {Packed objects waiting for pruning}}
{garbage {Garbage files}}
} {
set name [lindex $s 0]
set label [lindex $s 1]
if {[catch {set value $stats($name)}]} continue
if {[llength $s] > 2} {
set value "$value[lindex $s 2]"
}

label $w.stat.l_$name -text "$label:" -anchor w -font font_ui
label $w.stat.v_$name -text $value -anchor w -font font_ui
grid $w.stat.l_$name $w.stat.v_$name -sticky we -padx {0 5}
}
pack $w.stat

bind $w <Visibility> "grab $w; focus $w"
bind $w <Key-Escape> [list destroy $w]
bind $w <Key-Return> [list destroy $w]
wm title $w "[appname] ([reponame]): Database Statistics"
tkwait window $w
}

proc do_gc {} {
set w [new_console {gc} {Compressing the object database}]
console_exec $w {git gc}
@ -3542,6 +3599,10 @@ if {![is_MacOSX]} { @@ -3542,6 +3599,10 @@ if {![is_MacOSX]} {
.mbar.repository add separator

if {!$single_commit} {
.mbar.repository add command -label {Database Statistics} \
-command do_stats \
-font font_ui

.mbar.repository add command -label {Compress Database} \
-command do_gc \
-font font_ui
@ -3847,7 +3908,7 @@ frame .vpane.lower.commarea @@ -3847,7 +3908,7 @@ frame .vpane.lower.commarea
frame .vpane.lower.diff -relief sunken -borderwidth 1
pack .vpane.lower.commarea -side top -fill x
pack .vpane.lower.diff -side bottom -fill both -expand 1
.vpane add .vpane.lower -stick nsew
.vpane add .vpane.lower -sticky nsew

# -- Commit Area Buttons
#

Loading…
Cancel
Save