プロジェクト

全般

プロフィール

Vote #71475

未完了

TimeZone information lost when import from scm (utc timezone for server)

Admin Redmine さんが約4年前に追加. 約4年前に更新.

ステータス:
New
優先度:
通常
担当者:
-
カテゴリ:
SCM_3
対象バージョン:
-
開始日:
2022/05/09
期日:
進捗率:

0%

予定工数:
category_id:
3
version_id:
0
issue_org_id:
10405
author_id:
13251
assigned_to_id:
0
comments:
0
status_id:
1
tracker_id:
1
plus1:
0
affected_version:
closed_on:
affected_version_id:
ステータス-->[New]

説明

Good day, community

Reproduce
I have:

  • redmine 1.2.1 stable installed
  • svn 1.6 installed on same server
  • utc timezone for redmine set (config.active_record.default_timezone = :utc)
  • one project with associated svn repository

What I do:

I commit my revision 5755 in issue 1379 at 8.3.2012 00.38 UTC (local time - 8.3.2012 11.38 UTC+11)

What I see:

Right after that, in issue 1379 view, I see revision time: 8.3.2012 21.38 (view user profile time - UTC+10)

Even if I logged as another user (view user profile - UTC) I see revision time: 8.3.2012 11.38am

What I suppose to see:

Revision time must be 8.3.2012 11.38 in my local time or 8.3.2012 00.38 in UTC

Why it happens?
I think it happend when using Time instead Time.zone to write values to ActiveRecord.datetime fields.
I've check:

svnlook info -r 5757 /var/svn gives me right time - @2012-03-08 11:38:01 +1100@

mysql gives me real database info: changesets.committed_on = "2012-03-08 11:38:01" mean it's written wrong (server uses utc time to write, no timezone correction made)

After some investigation I found that time readed from svn readed as Time object, not Time.zone, even in 1.3.1, see: "svn adapter, line 190":http://www.redmine.org/projects/redmine/repository/entry/tags/1.3.1/lib/redmine/scm/adapters/subversion_adapter.rb

In this case, Time.zone.parse should be used instead of Time.parse, but another scm adapters also used Time.parse, and there is more correct way to fix this error: in Changeset#committed_on=

def committed_on(date)
  Time.zone = "UTC"
  date = date.in_time_zone if date.respond_to?(:in_time_zone)
  self.commit_date = date
  super
end

It solve problem in my turn, but one problem that Time.zone UTC hardcoded used, anyone suppose better solution?

I've found, that another issues related to this:

  • #5657, seems to very like my one
  • #6145, is subset of this

Information:

Redmine 1.2.1.stable.6316 (MYSQL)
Ruby version              1.8.7 (i486-linux)
RubyGems version          1.3.6
Rack version              1.1
Rails version             2.3.11
Active Record version     2.3.11
Active Resource version   2.3.11
Action Mailer version     2.3.11
Active Support version    2.3.11
Application root          /var/www-apps/redmine
Environment               production
Database adapter          mysql
Database schema version   20110511000000

Admin Redmine さんが約4年前に更新

  • カテゴリSCM_3 にセット

他の形式にエクスポート: Atom PDF

いいね!0
いいね!0