|
1 | 1 | # vcs |
2 | 2 |
|
3 | | -require 'time' |
4 | | - |
5 | 3 | ENV.delete('PWD') |
6 | 4 |
|
7 | 5 | unless File.respond_to? :realpath |
@@ -45,7 +43,11 @@ def get_revisions(path) |
45 | 43 | last, changed, modified, *rest = Dir.chdir(@srcdir) {self.class.get_revisions(path)} |
46 | 44 | last or raise VCS::NotFoundError, "last revision not found" |
47 | 45 | changed or raise VCS::NotFoundError, "changed revision not found" |
48 | | - modified &&= Time.parse(modified) |
| 46 | + if modified |
| 47 | + /\A(\d+)-(\d+)-(\d+)\D(\d+):(\d+):(\d+(?:\.\d+)?)\s*(?:Z|([-+]\d\d)(\d\d))\z/ =~ modified or |
| 48 | + raise "unknown time format - #{modified}" |
| 49 | + modified = Time.mktime(*($~[1..6] + [$7 ? "#{$7}:#{$8}" : "+00:00"])) |
| 50 | + end |
49 | 51 | return last, changed, modified, *rest |
50 | 52 | end |
51 | 53 |
|
@@ -96,16 +98,16 @@ class GIT < self |
96 | 98 | register(".git") |
97 | 99 |
|
98 | 100 | def self.get_revisions(path) |
99 | | - logcmd = %Q[git log -n1 --grep="^ *git-svn-id: .*@[0-9][0-9]* "] |
| 101 | + logcmd = %Q[git log -n1 --date=iso --grep="^ *git-svn-id: .*@[0-9][0-9]* "] |
100 | 102 | idpat = /git-svn-id: .*?@(\d+) \S+\Z/ |
101 | 103 | last = `#{logcmd}`[idpat, 1] |
102 | 104 | if path |
103 | 105 | log = `#{logcmd} "#{path}"` |
104 | 106 | changed = log[idpat, 1] |
105 | | - modified = `git log --format=%ai -- #{path}` |
106 | 107 | else |
107 | 108 | changed = last |
108 | 109 | end |
| 110 | + modified = log[/^Date:\s+(.*)/, 1] |
109 | 111 | [last, changed, modified] |
110 | 112 | end |
111 | 113 | end |
|
0 commit comments