diff --git a/app/models/changeset.rb b/app/models/changeset.rb
index 2bf58e7..82610de 100644
--- a/app/models/changeset.rb
+++ b/app/models/changeset.rb
@@ -108,9 +108,25 @@ class Changeset < ActiveRecord::Base
     ref_keywords = Setting.commit_ref_keywords.downcase.split(",").collect(&:strip)
     ref_keywords_any = ref_keywords.delete('*')
     # keywords used to fix issues
-    fix_keywords = Setting.commit_fix_keywords.downcase.split(",").collect(&:strip)
 
-    kw_regexp = (ref_keywords + fix_keywords).collect{|kw| Regexp.escape(kw)}.join("|")
+    ref_updates = 
+      [ { :keywords   => Setting.commit_update1_keywords.downcase.split(",").collect(&:strip),
+          :status_id  => Setting.commit_update1_status_id,
+          :done_ratio => Setting.commit_update1_done_ratio },
+        { :keywords   => Setting.commit_update2_keywords.downcase.split(",").collect(&:strip),
+          :status_id  => Setting.commit_update2_status_id,
+          :done_ratio => Setting.commit_update2_done_ratio },
+        { :keywords   => Setting.commit_update3_keywords.downcase.split(",").collect(&:strip),
+          :status_id  => Setting.commit_update3_status_id,
+          :done_ratio => Setting.commit_update3_done_ratio },
+        { :keywords   => Setting.commit_update4_keywords.downcase.split(",").collect(&:strip),
+          :status_id  => Setting.commit_update4_status_id,
+          :done_ratio => Setting.commit_update4_done_ratio },
+        { :keywords   => Setting.commit_update5_keywords.downcase.split(",").collect(&:strip),
+          :status_id  => Setting.commit_update5_status_id,
+          :done_ratio => Setting.commit_update5_done_ratio } ]
+
+    kw_regexp = (ref_keywords + ref_updates.collect{|u| u[:keywords]}.flatten).collect{|kw| Regexp.escape(kw)}.join("|")
 
     referenced_issues = []
 
@@ -121,8 +137,14 @@ class Changeset < ActiveRecord::Base
       refs.scan(/#(\d+)(\s+@#{TIMELOG_RE})?/).each do |m|
         issue, hours = find_referenced_issue_by_id(m[0].to_i), m[2]
         if issue
-          referenced_issues << issue
-          fix_issue(issue) if fix_keywords.include?(action.to_s.downcase)
+#          referenced_issues << issue
+#          fix_issue(issue) if fix_keywords.include?(action.to_s.downcase)
+
+          referenced_issues << issue          
+          ref_updates.each do |u|
+            update_issue(issue, u[:status_id], u[:done_ratio]) if u[:keywords].include?(action.to_s.downcase)
+          end
+
           log_time(issue, hours) if hours && Setting.commit_logtime_enabled?
         end
       end
@@ -190,10 +212,13 @@ class Changeset < ActiveRecord::Base
     issue
   end
 
-  def fix_issue(issue)
-    status = IssueStatus.find_by_id(Setting.commit_fix_status_id.to_i)
+#  def fix_issue(issue)
+#    status = IssueStatus.find_by_id(Setting.commit_fix_status_id.to_i)
+  def update_issue(issue, status_id, done_ratio)
+    status = IssueStatus.find_by_id(status_id.to_i)
     if status.nil?
-      logger.warn("No status matches commit_fix_status_id setting (#{Setting.commit_fix_status_id})") if logger
+#      logger.warn("No status matches commit_fix_status_id setting (#{Setting.commit_fix_status_id})") if logger
+      logger.warn("No status macthes commit_update_status_id setting (#{status_id})") if logger
       return issue
     end
 
@@ -204,8 +229,10 @@ class Changeset < ActiveRecord::Base
 
     journal = issue.init_journal(user || User.anonymous, ll(Setting.default_language, :text_status_changed_by_changeset, text_tag))
     issue.status = status
-    unless Setting.commit_fix_done_ratio.blank?
-      issue.done_ratio = Setting.commit_fix_done_ratio.to_i
+#    unless Setting.commit_fix_done_ratio.blank?
+#      issue.done_ratio = Setting.commit_fix_done_ratio.to_i
+    unless done_ratio.blank?
+      issue.done_ratio = done_ratio.to_i
     end
     Redmine::Hook.call_hook(:model_changeset_scan_commit_for_issue_ids_pre_issue_update,
                             { :changeset => self, :issue => issue })
diff --git a/app/views/settings/_repositories.rhtml b/app/views/settings/_repositories.rhtml
index b3c252f..c84ec9b 100644
--- a/app/views/settings/_repositories.rhtml
+++ b/app/views/settings/_repositories.rhtml
@@ -69,17 +69,34 @@
 <p><%= setting_text_field :commit_ref_keywords, :size => 30 %><br />
 <em><%= l(:text_comma_separated) %></em></p>
 
-<p><%= setting_text_field :commit_fix_keywords, :size => 30 %>
-&nbsp;<%= l(:label_applied_status) %>: <%= setting_select :commit_fix_status_id,
-                                                          [["", 0]] +
-                                                              IssueStatus.find(:all).collect{
-                                                                 |status| [status.name, status.id.to_s]
-                                                              },
-                                                          :label => false %>
-&nbsp;<%= l(:field_done_ratio) %>: <%= setting_select :commit_fix_done_ratio,
-                                                       (0..10).to_a.collect {|r| ["#{r*10} %", "#{r*10}"] },
-                                                       :blank => :label_no_change_option,
-                                                       :label => false %>
+
+
+<p><%= setting_text_field :commit_update1_keywords, :size => 30 %>
+&nbsp;<%= l(:label_applied_status) %>: <%= setting_select :commit_update1_status_id, [["", 0]] + IssueStatus.find(:all).collect{|status| [status.name, status.id.to_s]}, :label => false %>
+&nbsp;<%= l(:field_done_ratio) %>: <%= setting_select :commit_update1_done_ratio, (0..10).to_a.collect {|r| ["#{r*10} %", "#{r*10}"] }, :blank => :label_no_change_option, :label => false %>
+<br /><em><%= l(:text_comma_separated) %></em></p>
+
+<p><%= setting_text_field :commit_update2_keywords, :size => 30 %>
+&nbsp;<%= l(:label_applied_status) %>: <%= setting_select :commit_update2_status_id, [["", 0]] + IssueStatus.find(:all).collect{|status| [status.name, status.id.to_s]}, :label => false %>
+&nbsp;<%= l(:field_done_ratio) %>: <%= setting_select :commit_update2_done_ratio, (0..10).to_a.collect {|r| ["#{r*10} %", "#{r*10}"] }, :blank => :label_no_change_option, :label => false %>
+<br /><em><%= l(:text_comma_separated) %></em></p>
+
+<p><%= setting_text_field :commit_update3_keywords, :size => 30 %>
+&nbsp;<%= l(:label_applied_status) %>: <%= setting_select :commit_update3_status_id, [["", 0]] + IssueStatus.find(:all).collect{|status| [status.name, status.id.to_s]}, :label => false %>
+&nbsp;<%= l(:field_done_ratio) %>: <%= setting_select :commit_update3_done_ratio, (0..10).to_a.collect {|r| ["#{r*10} %", "#{r*10}"] }, :blank => :label_no_change_option, :label => false %>
+<br /><em><%= l(:text_comma_separated) %></em></p>
+
+<p><%= setting_text_field :commit_update4_keywords, :size => 30 %>
+&nbsp;<%= l(:label_applied_status) %>: <%= setting_select :commit_update4_status_id, [["", 0]] + IssueStatus.find(:all).collect{|status| [status.name, status.id.to_s]}, :label => false %>
+&nbsp;<%= l(:field_done_ratio) %>: <%= setting_select :commit_update4_done_ratio, (0..10).to_a.collect {|r| ["#{r*10} %", "#{r*10}"] }, :blank => :label_no_change_option, :label => false %>
+<br /><em><%= l(:text_comma_separated) %></em></p>
+
+<p><%= setting_text_field :commit_update5_keywords, :size => 30 %>
+&nbsp;<%= l(:label_applied_status) %>: <%= setting_select :commit_update5_status_id, [["", 0]] + IssueStatus.find(:all).collect{|status| [status.name, status.id.to_s]}, :label => false %>
+&nbsp;<%= l(:field_done_ratio) %>: <%= setting_select :commit_update5_done_ratio, (0..10).to_a.collect {|r| ["#{r*10} %", "#{r*10}"] }, :blank => :label_no_change_option, :label => false %>
+
+
+
 <br /><em><%= l(:text_comma_separated) %></em></p>
 
 <p><%= setting_check_box :commit_logtime_enabled,
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 401d608..b82bbdc 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -335,7 +335,11 @@ en:
   setting_autofetch_changesets: Autofetch commits
   setting_sys_api_enabled: Enable WS for repository management
   setting_commit_ref_keywords: Referencing keywords
-  setting_commit_fix_keywords: Fixing keywords
+  setting_commit_update1_keywords: Keywords
+  setting_commit_update2_keywords: Keywords
+  setting_commit_update3_keywords: Keywords
+  setting_commit_update4_keywords: Keywords
+  setting_commit_update5_keywords: Keywords
   setting_autologin: Autologin
   setting_date_format: Date format
   setting_time_format: Time format
@@ -902,7 +906,7 @@ en:
   text_unallowed_characters: Unallowed characters
   text_comma_separated: Multiple values allowed (comma separated).
   text_line_separated: Multiple values allowed (one line for each value).
-  text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
+  text_issues_ref_in_commit_messages: Referencing and updating issues in commit messages
   text_issue_added: "Issue %{id} has been reported by %{author}."
   text_issue_updated: "Issue %{id} has been updated by %{author}."
   text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content?
diff --git a/config/settings.yml b/config/settings.yml
index 6a9676a..1e4bfba 100644
--- a/config/settings.yml
+++ b/config/settings.yml
@@ -92,14 +92,48 @@ sys_api_enabled:
   default: 0
 sys_api_key:
   default: ''
+# commit actions
 commit_ref_keywords:
   default: 'refs,references,IssueID'
-commit_fix_keywords:
+# commit update 1
+commit_update1_keywords:
   default: 'fixes,closes'
-commit_fix_status_id:
+commit_update1_status_id:
   format: int
   default: 0
-commit_fix_done_ratio:
+commit_update1_done_ratio:
+  default: 100
+# commit update 2
+commit_update2_keywords:
+  default: ''
+commit_update2_status_id:
+  format: int
+  default: 0
+commit_update2_done_ratio:
+  default: 100
+# commit update 3
+commit_update3_keywords:
+  default: ''
+commit_update3_status_id:
+  format: int
+  default: 0
+commit_update3_done_ratio:
+  default: 100
+# commitupdate 4
+commit_update4_keywords:
+  default: ''
+commit_update4_status_id:
+  format: int
+  default: 0
+commit_update4_done_ratio:
+  default: 100
+# commit update 5
+commit_update5_keywords:
+  default: ''
+commit_update5_status_id:
+  format: int
+  default: 0
+commit_update5_done_ratio:
   default: 100
 commit_logtime_enabled:
   default: 0
