Skip to content

Commit

Permalink
gitk: Add a progress bar for checking out a head
Browse files Browse the repository at this point in the history
Now that git checkout reports progress when checking out files, we
can use that to provide a progress bar in gitk.  We re-use the green
progress bar (formerly used when reading stuff in) for that.

Signed-off-by: Paul Mackerras <paulus@samba.org>
  • Loading branch information
paulusmack committed May 12, 2008
1 parent 6df7403 commit 08ba820
Showing 1 changed file with 31 additions and 10 deletions.
41 changes: 31 additions & 10 deletions gitk
Expand Up @@ -7612,7 +7612,7 @@ proc resethead {} {
tkwait window $w
if {!$confirm_ok} return
if {[catch {set fd [open \
[list | sh -c "git reset --$resettype $rowmenuid 2>&1"] r]} err]} {
[list | git reset --$resettype $rowmenuid 2>@1] r]} err]} {
error_popup $err
} else {
dohidelocalchanges
Expand Down Expand Up @@ -7674,25 +7674,46 @@ proc cobranch {} {
global showlocalchanges mainheadid

# check the tree is clean first??
set oldmainhead $mainhead
nowbusy checkout [mc "Checking out"]
update
dohidelocalchanges
if {[catch {
exec git checkout -q $headmenuhead
set fd [open [list | git checkout $headmenuhead 2>@1] r]
} err]} {
notbusy checkout
error_popup $err
if {$showlocalchanges} {
dodiffindex
}
} else {
notbusy checkout
set mainhead $headmenuhead
set mainheadid $headmenuid
if {[info exists headids($oldmainhead)]} {
redrawtags $headids($oldmainhead)
filerun $fd [list readcheckoutstat $fd $headmenuhead $headmenuid]
}
}

proc readcheckoutstat {fd newhead newheadid} {
global mainhead mainheadid headids showlocalchanges progresscoords

if {[gets $fd line] >= 0} {
if {[regexp {([0-9]+)% \(([0-9]+)/([0-9]+)\)} $line match p m n]} {
set progresscoords [list 0 [expr {1.0 * $m / $n}]]
adjustprogress
}
redrawtags $headmenuid
selbyid $headmenuid
return 1
}
set progresscoords {0 0}
adjustprogress
notbusy checkout
if {[catch {close $fd} err]} {
error_popup $err
}
set oldmainhead $mainhead
set mainhead $newhead
set mainheadid $newheadid
if {[info exists headids($oldmainhead)]} {
redrawtags $headids($oldmainhead)
}
redrawtags $newheadid
selbyid $newheadid
if {$showlocalchanges} {
dodiffindex
}
Expand Down

0 comments on commit 08ba820

Please sign in to comment.