[PATCH v2 3/3] gitk: Allow displaying time zones from author and commit timestamps
- From
Anders Kaseorg <andersk@mit.edu>
- Date
- May 30, 2011, 03:06 UTC
- Message-ID
- <alpine.DEB.2.02.1105292305390.23145@dr-wily.mit.edu>
- In-Reply-To
- <alpine.DEB.2.02.1105291740410.23145@dr-wily.mit.edu>
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> --- gitk | 18 +++++++++++++++++- 1 files changed, 17 insertions(+), 1 deletions(-)
diff --git a/gitk b/gitk index 8e15572..c77771e 100755 --- a/gitk +++ b/gitk @@ -11021,7 +11021,23 @@ 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=Unknown±NNNN. + global env + catch {set savedTZ $env(TZ)} + set zone [lindex $d 1] + set sign [string map {+ - - +} [string index $zone 0]] + set env(TZ) Unknown$sign[string range $zone 1 2]:[string range $zone 3 4] + set d [clock format [lindex $d 0] -format $datetimeformat] + if {[catch {set env(TZ) $savedTZ}]} {unset env(TZ)} + } + } else { + set d [clock format [lindex $d 0] -format $datetimeformat] + } } return $d }
-- 1.7.5.3