Added the ability to set the "done ratio" of issues fixed by commit (original path by Nikolay Solakov, slightly edited).
git-svn-id: http://redmine.rubyforge.org/svn/trunk@821 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
45203143c1
commit
5f10cc8673
|
@ -55,8 +55,9 @@ class Changeset < ActiveRecord::Base
|
||||||
ref_keywords = Setting.commit_ref_keywords.downcase.split(",")
|
ref_keywords = Setting.commit_ref_keywords.downcase.split(",")
|
||||||
# keywords used to fix issues
|
# keywords used to fix issues
|
||||||
fix_keywords = Setting.commit_fix_keywords.downcase.split(",")
|
fix_keywords = Setting.commit_fix_keywords.downcase.split(",")
|
||||||
# status applied
|
# status and optional done ratio applied
|
||||||
fix_status = IssueStatus.find_by_id(Setting.commit_fix_status_id)
|
fix_status = IssueStatus.find_by_id(Setting.commit_fix_status_id)
|
||||||
|
done_ratio = Setting.commit_fix_done_ratio.blank? ? nil : Setting.commit_fix_done_ratio.to_i
|
||||||
|
|
||||||
kw_regexp = (ref_keywords + fix_keywords).collect{|kw| Regexp.escape(kw.strip)}.join("|")
|
kw_regexp = (ref_keywords + fix_keywords).collect{|kw| Regexp.escape(kw.strip)}.join("|")
|
||||||
return if kw_regexp.blank?
|
return if kw_regexp.blank?
|
||||||
|
@ -75,6 +76,7 @@ class Changeset < ActiveRecord::Base
|
||||||
# don't change the status is the issue is already closed
|
# don't change the status is the issue is already closed
|
||||||
next if issue.status.is_closed?
|
next if issue.status.is_closed?
|
||||||
issue.status = fix_status
|
issue.status = fix_status
|
||||||
|
issue.done_ratio = done_ratio if done_ratio
|
||||||
issue.save
|
issue.save
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -85,6 +85,7 @@
|
||||||
<p><label><%= l(:setting_commit_fix_keywords) %></label>
|
<p><label><%= l(:setting_commit_fix_keywords) %></label>
|
||||||
<%= text_field_tag 'settings[commit_fix_keywords]', Setting.commit_fix_keywords, :size => 30 %>
|
<%= text_field_tag 'settings[commit_fix_keywords]', Setting.commit_fix_keywords, :size => 30 %>
|
||||||
<%= l(:label_applied_status) %>: <%= select_tag 'settings[commit_fix_status_id]', options_for_select( [["", 0]] + IssueStatus.find(:all).collect{|status| [status.name, status.id.to_s]}, Setting.commit_fix_status_id) %>
|
<%= l(:label_applied_status) %>: <%= select_tag 'settings[commit_fix_status_id]', options_for_select( [["", 0]] + IssueStatus.find(:all).collect{|status| [status.name, status.id.to_s]}, Setting.commit_fix_status_id) %>
|
||||||
|
<%= l(:field_done_ratio) %>: <%= select_tag 'settings[commit_fix_done_ratio]', options_for_select( [[l(:label_no_change_option), '']] + ((0..10).to_a.collect {|r| ["#{r*10} %", "#{r*10}"] }), Setting.commit_fix_done_ratio) %>
|
||||||
<br /><em><%= l(:text_comma_separated) %></em></p>
|
<br /><em><%= l(:text_comma_separated) %></em></p>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
|
|
@ -61,6 +61,9 @@ commit_fix_keywords:
|
||||||
commit_fix_status_id:
|
commit_fix_status_id:
|
||||||
format: int
|
format: int
|
||||||
default: 0
|
default: 0
|
||||||
|
commit_fix_done_ratio:
|
||||||
|
format: int
|
||||||
|
default: 100
|
||||||
# autologin duration in days
|
# autologin duration in days
|
||||||
# 0 means autologin is disabled
|
# 0 means autologin is disabled
|
||||||
autologin:
|
autologin:
|
||||||
|
|
|
@ -39,7 +39,8 @@ class RepositoryTest < Test::Unit::TestCase
|
||||||
def test_scan_changesets_for_issue_ids
|
def test_scan_changesets_for_issue_ids
|
||||||
# choosing a status to apply to fix issues
|
# choosing a status to apply to fix issues
|
||||||
Setting.commit_fix_status_id = IssueStatus.find(:first, :conditions => ["is_closed = ?", true]).id
|
Setting.commit_fix_status_id = IssueStatus.find(:first, :conditions => ["is_closed = ?", true]).id
|
||||||
|
Setting.commit_fix_done_ratio = "90"
|
||||||
|
|
||||||
# make sure issue 1 is not already closed
|
# make sure issue 1 is not already closed
|
||||||
assert !Issue.find(1).status.is_closed?
|
assert !Issue.find(1).status.is_closed?
|
||||||
|
|
||||||
|
@ -47,8 +48,10 @@ class RepositoryTest < Test::Unit::TestCase
|
||||||
assert_equal [101, 102], Issue.find(3).changeset_ids
|
assert_equal [101, 102], Issue.find(3).changeset_ids
|
||||||
|
|
||||||
# fixed issues
|
# fixed issues
|
||||||
assert Issue.find(1).status.is_closed?
|
fixed_issue = Issue.find(1)
|
||||||
assert_equal [101], Issue.find(1).changeset_ids
|
assert fixed_issue.status.is_closed?
|
||||||
|
assert_equal 90, fixed_issue.done_ratio
|
||||||
|
assert_equal [101], fixed_issue.changeset_ids
|
||||||
|
|
||||||
# ignoring commits referencing an issue of another project
|
# ignoring commits referencing an issue of another project
|
||||||
assert_equal [], Issue.find(4).changesets
|
assert_equal [], Issue.find(4).changesets
|
||||||
|
|
Loading…
Reference in New Issue