Skip to content

Commit

Permalink
Move Git::SVN::get_tz to Git::get_tz_offset
Browse files Browse the repository at this point in the history
This function has utility outside of the SVN module for any routine
that needs the equivalent of GNU strftime's %z formatting option.
Move it to the top-level Git.pm so that non-SVN modules don't need to
import the SVN module to use it.

The rename makes the purpose of the function clearer.

Signed-off-by: Ben Walton <bdwalton@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Ben Walton authored and Junio C Hamano committed Feb 9, 2013
1 parent f350082 commit 68868ff
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 12 deletions.
23 changes: 23 additions & 0 deletions perl/Git.pm
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ require Exporter;
command_bidi_pipe command_close_bidi_pipe
version exec_path html_path hash_object git_cmd_try
remote_refs prompt
get_tz_offset
temp_acquire temp_release temp_reset temp_path);


Expand Down Expand Up @@ -102,6 +103,7 @@ use Error qw(:try);
use Cwd qw(abs_path cwd);
use IPC::Open2 qw(open2);
use Fcntl qw(SEEK_SET SEEK_CUR);
use Time::Local qw(timelocal);
}


Expand Down Expand Up @@ -511,6 +513,27 @@ C<git --html-path>). Useful mostly only internally.

sub html_path { command_oneline('--html-path') }


=item get_tz_offset ( TIME )
Return the time zone offset from GMT in the form +/-HHMM where HH is
the number of hours from GMT and MM is the number of minutes. This is
the equivalent of what strftime("%z", ...) would provide on a GNU
platform.
If TIME is not supplied, the current local time is used.
=cut

sub get_tz_offset {
# some systmes don't handle or mishandle %z, so be creative.
my $t = shift || time;
my $gm = timelocal(gmtime($t));
my $sign = qw( + + - )[ $t <=> $gm ];
return sprintf("%s%02d%02d", $sign, (gmtime(abs($t - $gm)))[2,1]);
}


=item prompt ( PROMPT , ISPASSWORD )
Query user C<PROMPT> and return answer from user.
Expand Down
12 changes: 2 additions & 10 deletions perl/Git/SVN.pm
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ use Carp qw/croak/;
use File::Path qw/mkpath/;
use File::Copy qw/copy/;
use IPC::Open3;
use Time::Local;
use Memoize; # core since 5.8.0, Jul 2002
use Memoize::Storable;
use POSIX qw(:signal_h);
Expand All @@ -22,6 +21,7 @@ use Git qw(
command_noisy
command_output_pipe
command_close_pipe
get_tz_offset
);
use Git::SVN::Utils qw(
fatal
Expand Down Expand Up @@ -1311,14 +1311,6 @@ sub get_untracked {
\@out;
}

sub get_tz {
# some systmes don't handle or mishandle %z, so be creative.
my $t = shift || time;
my $gm = timelocal(gmtime($t));
my $sign = qw( + + - )[ $t <=> $gm ];
return sprintf("%s%02d%02d", $sign, (gmtime(abs($t - $gm)))[2,1]);
}

# parse_svn_date(DATE)
# --------------------
# Given a date (in UTC) from Subversion, return a string in the format
Expand Down Expand Up @@ -1351,7 +1343,7 @@ sub parse_svn_date {
delete $ENV{TZ};
}

my $our_TZ = get_tz();
my $our_TZ = get_tz_offset();

# This converts $epoch_in_UTC into our local timezone.
my ($sec, $min, $hour, $mday, $mon, $year,
Expand Down
8 changes: 6 additions & 2 deletions perl/Git/SVN/Log.pm
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,11 @@ package Git::SVN::Log;
use strict;
use warnings;
use Git::SVN::Utils qw(fatal);
use Git qw(command command_oneline command_output_pipe command_close_pipe);
use Git qw(command
command_oneline
command_output_pipe
command_close_pipe
get_tz_offset);
use POSIX qw/strftime/;
use constant commit_log_separator => ('-' x 72) . "\n";
use vars qw/$TZ $limit $color $pager $non_recursive $verbose $oneline
Expand Down Expand Up @@ -119,7 +123,7 @@ sub run_pager {
sub format_svn_date {
my $t = shift || time;
require Git::SVN;
my $gmoff = Git::SVN::get_tz($t);
my $gmoff = get_tz_offset($t);
return strftime("%Y-%m-%d %H:%M:%S $gmoff (%a, %d %b %Y)", localtime($t));
}

Expand Down

0 comments on commit 68868ff

Please sign in to comment.