diff options
Diffstat (limited to 'lib/choose_rev.tcl')
-rw-r--r-- | lib/choose_rev.tcl | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/lib/choose_rev.tcl b/lib/choose_rev.tcl index bb6966eb93..4147b7c5bc 100644 --- a/lib/choose_rev.tcl +++ b/lib/choose_rev.tcl @@ -17,6 +17,7 @@ field spec_head ; # list of all head specs field spec_trck ; # list of all tracking branch specs field spec_tag ; # list of all tag specs field tip_data ; # array of tip commit info by refname +field log_last ; # array of reflog date by refname field tooltip_wm {} ; # Current tooltip toplevel, if open field tooltip_t {} ; # Text widget in $tooltip_wm @@ -518,7 +519,14 @@ method _open_tooltip {} { set cmit [lindex $data 0] } - $tooltip_t insert end "[lindex $spec 0]\n" + $tooltip_t insert end [lindex $spec 0] + set last [_reflog_last $this [lindex $spec 1]] + if {$last ne {}} { + $tooltip_t insert end "\n" + $tooltip_t insert end "updated" + $tooltip_t insert end " $last" + } + $tooltip_t insert end "\n" if {$tag ne {}} { $tooltip_t insert end "\n" @@ -553,6 +561,30 @@ method _open_tooltip {} { _position_tooltip $this } +method _reflog_last {name} { + if {[info exists reflog_last($name)]} { + return reflog_last($name) + } + + set last {} + if {[catch {set last [file mtime [gitdir $name]]}] + && ![catch {set g [open [gitdir logs $name] r]}]} { + fconfigure $g -translation binary + while {[gets $g line] >= 0} { + if {[regexp {> ([1-9][0-9]*) } $line line when]} { + set last $when + } + } + close $g + } + + if {$last ne {}} { + set last [clock format $last -format {%a %b %e %H:%M:%S %Y}] + } + set reflog_last($name) $last + return $last +} + method _position_tooltip {} { set max_h [lindex [split [$tooltip_t index end] .] 0] set max_w 0 |