issue, hours = find_referenced_issue_by_id(m[0].to_i), m[2]
if issue
referenced_issues << issue
- fix_issue(issue, action) if fix_keywords.include?(action)
- log_time(issue, hours) if hours && Setting.commit_logtime_enabled?
+ # Don't update issues or log time when importing old commits
+ unless repository.created_on && committed_on && committed_on < repository.created_on
+ fix_issue(issue, action) if fix_keywords.include?(action)
+ log_time(issue, hours) if hours && Setting.commit_logtime_enabled?
+ end
end
end
end
--- /dev/null
+class AddRepositoriesCreatedOn < ActiveRecord::Migration
+ def up
+ add_column :repositories, :created_on, :timestamp
+ end
+
+ def down
+ remove_column :repositories, :created_on
+ end
+end
login: ""
type: Repository::Subversion
is_default: true
+ created_on: 2006-07-19 19:04:21 +02:00
repositories_002:
project_id: 2
url: svn://localhost/test
login: ""
type: Repository::Subversion
is_default: true
+ created_on: 2006-07-19 19:04:21 +02:00
end
end
+ def test_old_commits_should_not_update_issues_nor_log_time
+ Setting.commit_ref_keywords = '*'
+ Setting.commit_update_keywords = {'fixes , closes' => {'status_id' => '5', 'done_ratio' => '90'}}
+ Setting.commit_logtime_enabled = '1'
+
+ repository = Project.find(1).repository
+ repository.created_on = Time.now
+ repository.save!
+
+ c = Changeset.new(:repository => repository,
+ :committed_on => 1.month.ago,
+ :comments => 'New commit (#2). Fixes #1 @1h',
+ :revision => '12345')
+ assert_no_difference 'TimeEntry.count' do
+ assert c.save
+ end
+ assert_equal [1, 2], c.issue_ids.sort
+ issue = Issue.find(1)
+ assert_equal 1, issue.status_id
+ assert_equal 0, issue.done_ratio
+ end
+
def test_text_tag_revision
c = Changeset.new(:revision => '520')
assert_equal 'r520', c.text_tag