From 8e235f924546b50d98223170ad8163b1d52f0840 Mon Sep 17 00:00:00 2001 From: Dominik Meyer Date: Sat, 15 Sep 2018 22:24:05 +0200 Subject: [PATCH] FIX: improved date management --- lib/Git/IssueManager.pm | 30 ++++++++++++++++++++++++++++-- lib/Git/IssueManager/Issue.pm | 19 ++++++++++++++++++- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/lib/Git/IssueManager.pm b/lib/Git/IssueManager.pm index 4674668..464b488 100644 --- a/lib/Git/IssueManager.pm +++ b/lib/Git/IssueManager.pm @@ -282,8 +282,9 @@ sub parseIssue my $working = $d->find("working"); my $tags = $d->find("tags"); my $id = $tag . "-" . substr($subject->hash(),0,8); - my $cd = $d->timestamp_added(); - my $ld = $d->timestamp_last(); + my $cd = $d->find("creation_date"); + my $ld = $d->find("last_change_date"); + my $cld = $d->find("closed_date"); my $author = $d->committer(); # check for required attributes @@ -292,6 +293,26 @@ sub parseIssue die("severity not available for issue " . $id) unless defined($severity); die("type not available for issue " . $id) unless defined($type); + #required for backwards compatibility + if (!defined($cd)) + { + $cd = $d->timestamp_added(); + } + else + { + $cd = $cd->content(); + } + + #required for backwards compatibility + if (!defined($ld)) + { + $ld = $d->timestamp_last(); + } + else + { + $ld = $ld->content(); + } + my $tz=DateTime::TimeZone->new( name => 'local' ); my $issue = Git::IssueManager::Issue->new(subject => $subject->content); @@ -304,6 +325,11 @@ sub parseIssue $issue->creation_date(DateTime->from_epoch( epoch =>$cd, time_zone=>$tz)); $issue->last_change_date(DateTime->from_epoch( epoch =>$ld, time_zone=>$tz)); + if (defined($cld)) + { + $issue->closed_date(DateTime->from_epoch( epoch =>$cld->content, time_zone=>$tz)); + } + if (defined($worker)) { $worker->content()=~/^(.*)\<(.*)\>$/; diff --git a/lib/Git/IssueManager/Issue.pm b/lib/Git/IssueManager/Issue.pm index 534bc9c..bbee76c 100644 --- a/lib/Git/IssueManager/Issue.pm +++ b/lib/Git/IssueManager/Issue.pm @@ -493,6 +493,24 @@ sub createIssue $type->_content($self->type); $issueTree->add($type); + my $last_changed = $issueTree->newBlob(); + $last_changed->path("last_change_date"); + $last_changed->_content($self->last_change_date->epoch()); + $issueTree->add($last_changed); + + my $creation_date = $issueTree->newBlob(); + $creation_date->path("creation_date"); + $creation_date->_content($self->creation_date->epoch()); + $issueTree->add($creation_date); + + if ($self->status eq "closed") + { + my $closed_date = $issueTree->newBlob(); + $closed_date->path("closed_date"); + $closed_date->_content($self->closed_date->epoch()); + $issueTree->add($closed_date); + } + if (defined($self->substatus) && length($self->substatus) > 0) { my $substatus = $issueTree->newBlob(); @@ -543,7 +561,6 @@ sub createIssue $issueTree->add($tags); } - return $issueTree; }