diff options
author | Anders Kaseorg <andersk@MIT.EDU> | 2014-05-12 07:25:58 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2014-06-15 11:35:50 +1000 |
commit | 019e1630ac16f82fa6322869c8dfc3dee029e7ae (patch) | |
tree | fdeccd2dd885cdd21e4d9c543359daf7ad82ccf6 | |
parent | 4135d36b0c99329eff69686f7a17406053941b5c (diff) | |
download | git-019e1630ac16f82fa6322869c8dfc3dee029e7ae.tar.gz |
gitk: Allow displaying time zones from author and commit dates timestamps
Now gitk can be configured to display author and commit dates in their
original timezone, by putting %z into datetimeformat in ~/.gitk.
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
Signed-off-by: Paul Mackerras <paulus@samba.org>
-rwxr-xr-x | gitk | 24 |
1 files changed, 23 insertions, 1 deletions
@@ -11580,7 +11580,29 @@ proc prefsok {} { proc formatdate {d} { global datetimeformat if {$d ne {}} { - set d [clock format [lindex $d 0] -format $datetimeformat] + # If $datetimeformat includes a timezone, display in the + # timezone of the argument. Otherwise, display in local time. + if {[string match {*%[zZ]*} $datetimeformat]} { + if {[catch {set d [clock format [lindex $d 0] -timezone [lindex $d 1] -format $datetimeformat]}]} { + # Tcl < 8.5 does not support -timezone. Emulate it by + # setting TZ (e.g. TZ=<-0430>+04:30). + global env + if {[info exists env(TZ)]} { + set savedTZ $env(TZ) + } + set zone [lindex $d 1] + set sign [string map {+ - - +} [string index $zone 0]] + set env(TZ) <$zone>$sign[string range $zone 1 2]:[string range $zone 3 4] + set d [clock format [lindex $d 0] -format $datetimeformat] + if {[info exists savedTZ]} { + set env(TZ) $savedTZ + } else { + unset env(TZ) + } + } + } else { + set d [clock format [lindex $d 0] -format $datetimeformat] + } } return $d } |