# This patch file was generated by NetBeans IDE
# Following Index: paths are relative to: /home/chearius/K-TC/Development/Redmine/redmine-1.0
# This patch can be applied using context Tools: Patch action on respective folder.
# It uses platform neutral UTF-8 encoding and \n newlines.
# Above lines and this line are ignored by the patching process.
Index: app/models/changeset.rb
--- app/models/changeset.rb Base (BASE)
+++ app/models/changeset.rb Locally Modified (Based On LOCAL)
@@ -77,33 +77,58 @@
     scan_comment_for_issue_ids
   end
   
-  def scan_comment_for_issue_ids
-    return if comments.blank?
-    # keywords used to reference issues
-    ref_keywords = Setting.commit_ref_keywords.downcase.split(",").collect(&:strip)
-    # 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("|")
-    return if kw_regexp.blank?
-    
+  def find_any_issue_ids_in_comments(comments)
     referenced_issues = []
+    log_time = []
     
-    if ref_keywords.delete('*')
       # find any issue ID in the comments
       target_issue_ids = []
-      comments.scan(%r{([\s\(\[,-]|^)#(\d+)(?=[[:punct:]]|\s|<|$)}).each { |m| target_issue_ids << m[1] }
+    comments.scan(%r{#(\d+)(\s*@(?:(?:\d+\.\d+h?)|(?:\s?\d+[hm]){1,2})(?:\W|$))?}).each do |m|
+      issue_id = m[0]
+      logger.debug "Found issue ID: #{issue_id}" if logger && logger.debug?
+
+      time = [m[0], (m[1] != nil ? m[1].scan(/(\d+[.]\d+|(?:\d+[hm]\s?){1,2})/)[0][0] : "0")]
+      logger.debug "Log time for the issue ID: #{issue_id} @#{time}" if logger && logger.debug?
+
+      target_issue_ids << issue_id
+      log_time << time
+    end
       referenced_issues += find_referenced_issues_by_id(target_issue_ids)
+
+    return referenced_issues, log_time
     end
     
-    comments.scan(Regexp.new("(#{kw_regexp})[\s:]+(([\s,;&]*#?\\d+)+)", Regexp::IGNORECASE)).each do |match|
+  def find_referenced_issue_ids_in_comments(comments, kw_regexp, fix_keywords)
+    referenced_issues = []
+    log_time = []
+
+    comments.scan(Regexp.new("(#{kw_regexp})[\\s:]+((?:(?:[\\s,;&]*[^@]?\\d+)(?:\\s*@(?:(?:\\d+\\.\\d+h?)|(?:\\s?\\d+[hm]){1,2})(?:\\W|$))?)+)", Regexp::IGNORECASE)).each do |match|
       action = match[0]
-      target_issue_ids = match[1].scan(/\d+/)
+
+      target_issues_with_log = match[1].scan(/([\s,;&]*[^@]?\d+)(\s*@(?:(?:\d+\.\d+h?)|(?:\s?\d+[hm]){1,2})(?:\W|$))?/)
+      target_issues_with_log.collect! { |x| [ x[0].scan(/\d+/)[0], (x[1] != nil ? x[1].scan(/(\d+[.]\d+|(?:\d+[hm]\s?){1,2})/)[0][0] : "0") ] }
+
+      log_time += target_issues_with_log
+      logger.debug "Found issue: #{log_time}" if logger && logger.debug?
+
+      target_issue_ids = target_issues_with_log.collect {|x| x[0]}
+
       target_issues = find_referenced_issues_by_id(target_issue_ids)
       if fix_keywords.include?(action.downcase) && fix_status = IssueStatus.find_by_id(Setting.commit_fix_status_id)
         # update status of issues
-        logger.debug "Issues fixed by changeset #{self.revision}: #{issue_ids.join(', ')}." if logger && logger.debug?
+        logger.debug "Issues fixed by changeset #{self.revision}: #{target_issue_ids.join(', ')}." if logger && logger.debug?
+
         target_issues.each do |issue|
+          update_issue_status(issue, fix_status)
+        end
+      end
+      referenced_issues += target_issues
+    end
+
+    return referenced_issues, log_time
+  end
+
+  def update_issue_status(issue, fix_status)
           # the issue may have been updated by the closure of another one (eg. duplicate)
           issue.reload
           # don't change the status is the issue is closed
@@ -121,10 +146,118 @@
                                   { :changeset => self, :issue => issue })
           issue.save
         end
+
+  def log_spent_time_for_issues(log_time)
+    log_time.uniq.each do |issue_wl|
+      next if issue_wl[1] == nil || issue_wl[1] == 0
+
+      issue_id_hours = get_spenttime_and_issue_id(issue_wl)
+      issue_id = issue_id_hours.first
+      issue_hours = issue_id_hours.last.to_f
+
+      next if issue_hours <= 0
+
+      logger.debug "Log time for issue #{issue_id} - #{issue_hours}." if logger && logger.debug?
+
+      issue = Issue.find_by_id(issue_id)
+
+      activity = get_logtime_activity
+
+      logger.debug "Nothing to log - activity (#{activity}), issue (#{issue}) or user (#{user}) is nil!" if logger && logger.debug? && (activity == nil || issue == nil || user == nil)
+      next if activity == nil || issue == nil || user == nil
+
+      csettext = "r#{self.revision}"
+      if self.scmid && (! (csettext =~ /^r[0-9]+$/))
+        csettext = "\"#{self.scmid}\""
       end
-      referenced_issues += target_issues
+
+      timeentry = TimeEntry.create(:project => issue.project,
+                                   :issue => issue,
+                                   :user => user,
+                                   :spent_on => self.commit_date,
+                                   :hours => issue_hours,
+                                   :activity_id => activity.id,
+                                   :comments => ll(Setting.default_language, :text_time_logged_by_changeset, issue_hours, csettext))
+
+      journal = issue.init_journal(user, ll(Setting.default_language, :text_time_logged_by_changeset, issue_hours, csettext)) if Setting.commit_logtime_journal_enabled?
+
+      Redmine::Hook.call_hook(:model_changeset_scan_commit_for_issue_ids_pre_time_logged,
+        { :changeset => self, :issue => issue, :timenetry => timeentry }) if Setting.commit_logtime_journal_enabled?
+
+      timeentry.save
+      issue.save if Setting.commit_logtime_journal_enabled?
     end
+  end
     
+  def get_spenttime_and_issue_id(issue_wl)
+    issue_id = issue_wl[0]
+    issue_hours = issue_wl[1]
+
+    match = issue_hours.match(/\d+[.]\d+/)
+
+    if match != nil
+      issue_hours = match[0].to_f
+    else
+      hours = ((match = issue_hours.scan(/(\d+)h/)).size == 1 ? match[0][0] : 0)
+      minutes = ((match = issue_hours.scan(/(\d+)m/)).size == 1 ? match[0][0] : 0)
+
+      hours = (hours == nil ? 0 : hours.to_i)
+      minutes = (minutes == nil ? 0 : minutes.to_i)
+
+      issue_hours = ((hours.to_f + minutes.to_f / 60.0) * 100.0).round / 100.0
+    end
+
+    return issue_id, issue_hours
+  end
+
+  def get_logtime_activity
+    activity = nil
+
+    logger.debug "Looking for activity type #{Setting.commit_logtime_activity}" if logger && logger.debug?
+    if Setting.commit_logtime_activity.to_i == 0
+      activity = TimeEntryActivity.default
+      logger.debug "The default activity is #{activity.name}" if logger && logger.debug?
+    else
+      activity = TimeEntryActivity.find(:first, :conditions => { :id => Setting.commit_logtime_activity.to_i })
+    end
+
+    if activity == nil
+      activity = TimeEntryActivity.find(:first)
+      logger.debug "Activity not found, using the first member of activity enumeration: #{activity.name}" if logger && logger.debug?
+    end
+
+    return activity
+  end
+
+  def scan_comment_for_issue_ids
+    return if comments.blank?
+    # keywords used to reference issues
+    ref_keywords = Setting.commit_ref_keywords.downcase.split(",").collect(&:strip)
+    # 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("|")
+    return if kw_regexp.blank?
+    
+    referenced_issues = []
+    log_time = []
+
+    logger.debug "Changeset comment: #{comments}" if logger && logger.debug?
+    
+    if ref_keywords.delete('*')
+      issues_with_times = find_any_issue_ids_in_comments(comments)
+      referenced_issues += issues_with_times.first
+      log_time += issues_with_times.last
+    end
+    
+    issues_with_times = find_referenced_issue_ids_in_comments(comments, kw_regexp, fix_keywords)
+    referenced_issues += issues_with_times.first
+    log_time += issues_with_times.last
+
+    if Setting.commit_logtime_enabled?
+      log_spent_time_for_issues(log_time)
+    end
+    
     referenced_issues.uniq!
     self.issues = referenced_issues unless referenced_issues.empty?
   end
Index: app/views/settings/_repositories.rhtml
--- app/views/settings/_repositories.rhtml Base (BASE)
+++ app/views/settings/_repositories.rhtml Locally Modified (Based On LOCAL)
@@ -31,6 +31,18 @@
 &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 %>
 <br /><em><%= l(:text_comma_separated) %></em></p>
+
+<p><label><%= l(:setting_commit_logtime_enabled) %></label>
+<%= hidden_field_tag 'settings[commit_logtime_enabled]', 0 %><%= check_box_tag 'settings[commit_logtime_enabled]', 1, Setting.commit_logtime_enabled? %>
+<br /><em><%= l(:text_commit_logtime) %></em></p>
+
+<p><label><%= l(:setting_commit_logtime_journal_enabled) %></label>
+<%= hidden_field_tag 'settings[commit_logtime_journal_enabled]', 0 %><%= check_box_tag 'settings[commit_logtime_journal_enabled]', 1, Setting.commit_logtime_journal_enabled? %>
+<br /><em><%= l(:text_commit_logtime_journal_enabled) %></em></p>
+
+<p><label><%= l(:setting_commit_logtime_activity) %></label>
+<%= setting_select :commit_logtime_activity, [[l(:label_default), 0]] + TimeEntryActivity.find(:all).collect{|activity| [activity.name, activity.id.to_s]}, :label => false %>
+<br /><em><%= l(:text_commit_logtime_activity) %></em></p>
 </fieldset>
 
 <%= submit_tag l(:button_save) %>
Index: config/locales/bg.yml
--- config/locales/bg.yml Base (BASE)
+++ config/locales/bg.yml Locally Modified (Based On LOCAL)
@@ -654,6 +654,7 @@
   label_repository_plural: Хранилища
   label_associated_revisions: Асоциирани ревизии
   setting_user_format: Потребителски формат
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Приложено с ревизия {{value}}."
   label_more: Още
   text_issues_destroy_confirmation: 'Сигурни ли сте, че искате да изтриете избраните задачи?'
@@ -745,6 +746,8 @@
   permission_select_project_modules: Избор на проектни модули
   permission_manage_documents: Управление на документи
   permission_edit_wiki_pages: Редактиране на wiki страници
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Добавяне на наблюдатели
   permission_view_gantt: Разглеждане на мрежов график
   permission_move_issues: Преместване на задачи
@@ -921,3 +924,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/bs.yml
--- config/locales/bs.yml Base (BASE)
+++ config/locales/bs.yml Locally Modified (Based On LOCAL)
@@ -342,6 +342,8 @@
   permission_view_gantt: Pregled gantograma
   permission_view_calendar: Pregled kalendara
   permission_view_issue_watchers: Pregled liste korisnika koji prate aktivnost
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Dodaj onoga koji prati aktivnost
   permission_log_time: Evidentiraj utrošak vremena
   permission_view_time_entries: Pregled utroška vremena
@@ -769,6 +771,7 @@
   text_user_mail_option: "Za projekte koje niste odabrali, primićete samo notifikacije o stavkama koje pratite ili ste u njih uključeni (npr. vi ste autor ili su vama dodjeljenje)."
   text_no_configuration_data: "Uloge, područja aktivnosti, statusi aktivnosti i tok promjena statusa nisu konfigurisane.\nKrajnje je preporučeno da učitate tekuđe postavke. Kasnije ćete ih moći mjenjati po svojim potrebama."
   text_load_default_configuration: Učitaj tekuću konfiguraciju
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Primjenjeno u setu promjena {{value}}."
   text_issues_destroy_confirmation: 'Sigurno želite izbrisati odabranu/e aktivnost/i ?'
   text_select_project_modules: 'Odaberi module koje želite u ovom projektu:'
@@ -935,3 +938,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"  
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/ca.yml
--- config/locales/ca.yml Base (BASE)
+++ config/locales/ca.yml Locally Modified (Based On LOCAL)
@@ -372,6 +372,8 @@
   permission_view_gantt: Visualitza la gràfica de Gantt
   permission_view_calendar: Visualitza el calendari
   permission_view_issue_watchers: Visualitza la llista de vigilàncies
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Afegeix vigilàncies
   permission_delete_issue_watchers: Suprimeix els vigilants
   permission_log_time: Registra el temps invertit
@@ -862,6 +864,7 @@
   text_user_mail_option: "Per als projectes no seleccionats, només rebreu notificacions sobre les coses que vigileu o que hi esteu implicat (ex. assumptes que en sou l'autor o hi esteu assignat)."
   text_no_configuration_data: "Encara no s'han configurat els rols, seguidors, estats de l'assumpte i flux de treball.\nÉs altament recomanable que carregueu la configuració predeterminada. Podreu modificar-la un cop carregada."
   text_load_default_configuration: Carrega la configuració predeterminada
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Aplicat en el conjunt de canvis {{value}}."
   text_issues_destroy_confirmation: "Segur que voleu suprimir els assumptes seleccionats?"
   text_select_project_modules: "Seleccioneu els mòduls a habilitar per a aquest projecte:"
@@ -923,3 +926,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"  
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/cs.yml
--- config/locales/cs.yml Base (BASE)
+++ config/locales/cs.yml Locally Modified (Based On LOCAL)
@@ -674,6 +674,7 @@
   text_user_mail_option: "U projektů, které nebyly vybrány, budete dostávat oznámení pouze o vašich či o sledovaných položkách (např. o položkách jejichž jste autor nebo ke kterým jste přiřazen(a))."
   text_no_configuration_data: "Role, fronty, stavy úkolů ani průběh práce nebyly zatím nakonfigurovány.\nVelice doporučujeme nahrát výchozí konfiguraci. Po té si můžete vše upravit"
   text_load_default_configuration: Nahrát výchozí konfiguraci
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Použito v changesetu {{value}}."
   text_issues_destroy_confirmation: 'Opravdu si přejete odstranit všechny zvolené úkoly?'
   text_select_project_modules: 'Aktivní moduly v tomto projektu:'
@@ -752,6 +753,8 @@
   permission_select_project_modules: Výběr modulů projektu
   permission_manage_documents: Správa dokumentů
   permission_edit_wiki_pages: Upravování stránek Wiki
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Přidání sledujících uživatelů
   permission_view_gantt: Zobrazené Ganttova diagramu
   permission_move_issues: Přesouvání úkolů
@@ -920,3 +923,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/da.yml
--- config/locales/da.yml Base (BASE)
+++ config/locales/da.yml Locally Modified (Based On LOCAL)
@@ -676,6 +676,7 @@
   text_user_mail_option: "For ikke-valgte projekter vil du kun modtage beskeder omhandlende ting du er involveret i eller overvåger (f.eks. sager du har indberettet eller ejer)."
   text_no_configuration_data: "Roller, typer, sagsstatuser og arbejdsgange er endnu ikke konfigureret.\nDet er anbefalet at indlæse standardopsætningen. Du vil kunne ændre denne når den er indlæst."
   text_load_default_configuration: Indlæs standardopsætningen
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Anvendt i ændring {{value}}."
   text_issues_destroy_confirmation: 'Er du sikker på du ønsker at slette den/de valgte sag(er)?'
   text_select_project_modules: 'Vælg moduler er skal være aktiveret for dette projekt:'
@@ -752,6 +753,8 @@
   text_email_delivery_not_configured: "Email-afsendelse er ikke indstillet og notifikationer er defor slået fra.\nKonfigurér din SMTP server i config/email.yml og genstart applikationen for at aktivere email-afsendelse."
   permission_protect_wiki_pages: Beskyt wiki sider
   permission_manage_documents: Administrér dokumenter
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Tilføj overvågere
   warning_attachments_not_saved: "der var {{count}} fil(er), som ikke kunne gemmes."
   permission_comment_news: Kommentér nyheder
@@ -937,3 +940,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/de.yml
--- config/locales/de.yml Base (BASE)
+++ config/locales/de.yml Locally Modified (Based On LOCAL)
@@ -388,6 +388,8 @@
   permission_view_gantt: Gantt-Diagramm ansehen
   permission_view_calendar: Kalender ansehen
   permission_view_issue_watchers: Liste der Beobachter ansehen
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Beobachter hinzufügen
   permission_delete_issue_watchers: Beobachter löschen
   permission_log_time: Aufwände buchen
@@ -880,6 +882,7 @@
   text_user_mail_option: "Für nicht ausgewählte Projekte werden Sie nur Benachrichtigungen für Dinge erhalten, die Sie beobachten oder an denen Sie beteiligt sind (z. B. Tickets, deren Autor Sie sind oder die Ihnen zugewiesen sind)."
   text_no_configuration_data: "Rollen, Tracker, Ticket-Status und Workflows wurden noch nicht konfiguriert.\nEs ist sehr zu empfehlen, die Standard-Konfiguration zu laden. Sobald sie geladen ist, können Sie sie abändern."
   text_load_default_configuration: Standard-Konfiguration laden
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Status geändert durch Changeset {{value}}."
   text_issues_destroy_confirmation: 'Sind Sie sicher, dass Sie die ausgewählten Tickets löschen möchten?'
   text_select_project_modules: 'Bitte wählen Sie die Module aus, die in diesem Projekt aktiviert sein sollen:'
@@ -945,3 +948,7 @@
 
   field_start_date: Start date
   button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/el.yml
--- config/locales/el.yml Base (BASE)
+++ config/locales/el.yml Locally Modified (Based On LOCAL)
@@ -340,6 +340,8 @@
   permission_view_gantt: Προβολή διαγράμματος gantt
   permission_view_calendar: Προβολή ημερολογίου
   permission_view_issue_watchers: Προβολή λίστας παρατηρητών
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Προσθήκη παρατηρητών
   permission_log_time: Ιστορικό χρόνου που δαπανήθηκε
   permission_view_time_entries: Προβολή χρόνου που δαπανήθηκε
@@ -780,6 +782,7 @@
   text_user_mail_option: "Για μη επιλεγμένα έργα, θα λάβετε ειδοποιήσεις μόνο για πράγματα που παρακολουθείτε ή στα οποία συμμετέχω ενεργά (π.χ. θέματα των οποίων είστε συγγραφέας ή σας έχουν ανατεθεί)."
   text_no_configuration_data: "Οι ρόλοι, οι ανιχνευτές, η κατάσταση των θεμάτων και η ροή εργασίας δεν έχουν ρυθμιστεί ακόμα.\nΣυνιστάται ιδιαίτερα να φορτώσετε τις προεπιλεγμένες ρυθμίσεις. Θα είστε σε θέση να τις τροποποιήσετε μετά τη φόρτωση τους."
   text_load_default_configuration: Φόρτωση προεπιλεγμένων ρυθμίσεων
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Εφαρμόστηκε στο changeset {{value}}."
   text_issues_destroy_confirmation: 'Είστε σίγουρος ότι θέλετε να διαγράψετε το επιλεγμένο θέμα(τα);'
   text_select_project_modules: 'Επιλέξτε ποιες μονάδες θα ενεργοποιήσετε για αυτό το έργο:'
@@ -921,3 +924,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/en-GB.yml
--- config/locales/en-GB.yml Base (BASE)
+++ config/locales/en-GB.yml Locally Modified (Based On LOCAL)
@@ -364,6 +364,8 @@
   permission_view_gantt: View gantt chart
   permission_view_calendar: View calendar
   permission_view_issue_watchers: View watchers list
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Add watchers
   permission_delete_issue_watchers: Delete watchers
   permission_log_time: Log spent time
@@ -846,6 +848,7 @@
   text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)."
   text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
   text_load_default_configuration: Load the default configuration
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Applied in changeset {{value}}."
   text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s)?'
   text_select_project_modules: 'Select modules to enable for this project:'
@@ -925,3 +928,7 @@
   notice_not_authorized_archived_project: The project you're trying to access has been archived.
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/en.yml
--- config/locales/en.yml Base (BASE)
+++ config/locales/en.yml Locally Modified (Based On LOCAL)
@@ -373,6 +373,8 @@
   permission_view_gantt: View gantt chart
   permission_view_calendar: View calendar
   permission_view_issue_watchers: View watchers list
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Add watchers
   permission_delete_issue_watchers: Delete watchers
   permission_log_time: Log spent time
@@ -867,6 +869,7 @@
   text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)."
   text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
   text_load_default_configuration: Load the default configuration
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Applied in changeset {{value}}."
   text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s) ?'
   text_select_project_modules: 'Select modules to enable for this project:'
@@ -920,3 +923,7 @@
   enumeration_activities: Activities (time tracking)
   enumeration_system_activity: System Activity
 
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/es.yml
--- config/locales/es.yml Base (BASE)
+++ config/locales/es.yml Locally Modified (Based On LOCAL)
@@ -689,6 +689,8 @@
   notice_successful_update: Modificación correcta.
   notice_unable_delete_version: No se puede borrar la versión
   permission_add_issue_notes: Añadir notas
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Añadir seguidores
   permission_add_issues: Añadir peticiones
   permission_add_messages: Enviar mensajes
@@ -818,6 +820,7 @@
   text_rmagick_available: RMagick disponible (opcional)
   text_select_mail_notifications: Seleccionar los eventos a notificar
   text_select_project_modules: 'Seleccione los módulos a activar para este proyecto:'
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Aplicado en los cambios {{value}}"
   text_subprojects_destroy_warning: "Los proyectos secundarios: {{value}} también se eliminarán"
   text_tip_issue_begin_day: tarea que comienza este día
@@ -961,3 +964,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/eu.yml
--- config/locales/eu.yml Base (BASE)
+++ config/locales/eu.yml Locally Modified (Based On LOCAL)
@@ -361,6 +361,8 @@
   permission_view_gantt: Gantt diagrama ikusi
   permission_view_calendar: Egutegia ikusi
   permission_view_issue_watchers: Behatzaileen zerrenda ikusi
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Behatzaileak gehitu
   permission_delete_issue_watchers: Behatzaileak ezabatu
   permission_log_time: Igarotako denbora erregistratu
@@ -841,6 +843,7 @@
   text_user_mail_option: "Hautatu gabeko proiektuetan, behatzen edo parte hartzen duzun gauzei buruzko jakinarazpenak jasoko dituzu (adib. zu egile zaren edo esleituta dituzun zereginak)."
   text_no_configuration_data: "Rolak, aztarnariak, zeregin egoerak eta workflow-ak ez dira oraindik konfiguratu.\nOso gomendagarria de lehenetsitako kkonfigurazioa kargatzea. Kargatu eta gero aldatu ahalko duzu."
   text_load_default_configuration: Lehenetsitako konfigurazioa kargatu
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "{{value}} aldaketan aplikatuta."
   text_issues_destroy_confirmation: 'Ziur zaude hautatutako zeregina(k) ezabatu nahi dituzula?'
   text_select_project_modules: 'Hautatu proiektu honetan gaitu behar diren moduluak:'
@@ -924,3 +927,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/fi.yml
--- config/locales/fi.yml Base (BASE)
+++ config/locales/fi.yml Locally Modified (Based On LOCAL)
@@ -683,6 +683,7 @@
   enumeration_activities: Historia (ajan seuranta)
   label_associated_revisions: Liittyvät versiot
   setting_user_format: Käyttäjien esitysmuoto
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Päivitetty muutosversioon {{value}}."
   text_issues_destroy_confirmation: 'Oletko varma että haluat poistaa valitut tapahtumat ?'
   label_more: Lisää
@@ -777,6 +778,8 @@
   permission_select_project_modules: Valitse projektin modulit
   permission_manage_documents: Hallinnoi dokumentteja
   permission_edit_wiki_pages: Muokkaa wiki sivuja
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Lisää seuraajia
   permission_view_gantt: Näytä gantt kaavio
   permission_move_issues: Siirrä tapahtuma
@@ -945,3 +948,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/fr.yml
--- config/locales/fr.yml Base (BASE)
+++ config/locales/fr.yml Locally Modified (Based On LOCAL)
@@ -378,6 +378,8 @@
   permission_view_gantt: Voir le gantt
   permission_view_calendar: Voir le calendrier
   permission_view_issue_watchers: Voir la liste des observateurs
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Ajouter des observateurs
   permission_delete_issue_watchers: Supprimer des observateurs
   permission_log_time: Saisir le temps passé
@@ -857,6 +859,7 @@
   text_user_mail_option: "Pour les projets non sélectionnés, vous recevrez seulement des notifications pour ce que vous surveillez ou à quoi vous participez (exemple: demandes dont vous êtes l'auteur ou la personne assignée)."
   text_no_configuration_data: "Les rôles, trackers, statuts et le workflow ne sont pas encore paramétrés.\nIl est vivement recommandé de charger le paramétrage par defaut. Vous pourrez le modifier une fois chargé."
   text_load_default_configuration: Charger le paramétrage par défaut
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Appliqué par commit {{value}}."
   text_issues_destroy_confirmation: 'Êtes-vous sûr de vouloir supprimer le(s) demandes(s) selectionnée(s) ?'
   text_select_project_modules: 'Sélectionner les modules à activer pour ce projet :'
@@ -946,3 +949,7 @@
   field_assigned_to_role: Rôle de l'assigné
 
   field_start_date: Start date
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/gl.yml
--- config/locales/gl.yml Base (BASE)
+++ config/locales/gl.yml Locally Modified (Based On LOCAL)
@@ -666,6 +666,8 @@
   notice_successful_update: Modificación correcta.
   notice_unable_delete_version: Non se pode borrar a versión
   permission_add_issue_notes: Engadir notas
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Engadir seguidores
   permission_add_issues: Engadir peticións
   permission_add_messages: Enviar mensaxes
@@ -795,6 +797,7 @@
   text_rmagick_available: RMagick dispoñible (opcional)
   text_select_mail_notifications: Seleccionar os eventos a notificar
   text_select_project_modules: 'Seleccione os módulos a activar para este proxecto:'
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Aplicado nos cambios {{value}}"
   text_subprojects_destroy_warning: "Os proxectos secundarios: {{value}} tamén se eliminarán"
   text_tip_issue_begin_day: tarefa que comeza este día
@@ -937,3 +940,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/he.yml
--- config/locales/he.yml Base (BASE)
+++ config/locales/he.yml Locally Modified (Based On LOCAL)
@@ -378,6 +378,8 @@
   permission_view_gantt: צפיה בגאנט
   permission_view_calendar: צפיה בלוח השנה
   permission_view_issue_watchers: צפיה ברשימת צופים
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: הוספת צופים
   permission_delete_issue_watchers: הסרת צופים
   permission_log_time: תיעוד זמן שהושקע
@@ -873,6 +875,7 @@
   text_user_mail_option: "בפרויקטים שלא בחרת, אתה רק תקבל התרעות על שאתה צופה או קשור אליהם (לדוגמא:נושאים שאתה היוצר שלהם או אחראי עליהם)."
   text_no_configuration_data: "לא הוגדרה תצורה עבור תפקידים, סיווגים, מצבי נושא וזרימת עבודה.\nמומלץ מאד לטעון את תצורת ברירת המחדל. תוכל לשנותה מאוחר יותר."
   text_load_default_configuration: טען את אפשרויות ברירת המחדל
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "הוחל בסדרת השינויים {{value}}."
   text_issues_destroy_confirmation: 'האם אתה בטוח שברצונך למחוק את הנושא\ים?'
   text_select_project_modules: 'בחר מודולים להחיל על פרויקט זה:'
@@ -933,3 +936,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/hr.yml
--- config/locales/hr.yml Base (BASE)
+++ config/locales/hr.yml Locally Modified (Based On LOCAL)
@@ -356,6 +356,8 @@
   permission_view_gantt: Pregledaj gantt grafikon
   permission_view_calendar: Pregledaj kalendar
   permission_view_issue_watchers: Pregledaj listu promatraca
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Dodaj promatrača
   permission_delete_issue_watchers: Delete watchers
   permission_log_time: Dnevnik utrošenog vremena 
@@ -836,6 +838,7 @@
   text_user_mail_option: "Za neizabrane projekte, primit ćete obavjesti samo o stvarima koje pratite ili u kojima sudjelujete (npr. predmete koje ste vi napravili ili koje su vama dodjeljeni)."
   text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded." 
   text_load_default_configuration: Učitaj početnu konfiguraciju
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Applied in changeset {{value}}."
   text_issues_destroy_confirmation: 'Jeste li sigurni da želite obrisati izabrani/e predmet(e)?'
   text_select_project_modules: 'Odaberite module koji će biti omogućeni za ovaj projekt:'
@@ -927,3 +930,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/hu.yml
--- config/locales/hu.yml Base (BASE)
+++ config/locales/hu.yml Locally Modified (Based On LOCAL)
@@ -701,6 +701,7 @@
   text_user_mail_option: "A nem kiválasztott projektekről csak akkor kap értesítést, ha figyelést kér rá, vagy részt vesz benne (pl. Ön a létrehozó, vagy a hozzárendelő)"
   text_no_configuration_data: "Szerepkörök, feladat típusok, feladat státuszok, és workflow adatok még nincsenek konfigurálva.\nErősen ajánlott, az alapértelmezett konfiguráció betöltése, és utána módosíthatja azt."
   text_load_default_configuration: Alapértelmezett konfiguráció betöltése
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Applied in changeset {{value}}."
   text_issues_destroy_confirmation: 'Biztos benne, hogy törölni szeretné a kijelölt feladato(ka)t ?'
   text_select_project_modules: 'Válassza ki az engedélyezett modulokat ehhez a projekthez:'
@@ -775,6 +776,8 @@
   permission_select_project_modules: Projekt modulok kezelése
   permission_manage_documents: Dokumentumok kezelése
   permission_edit_wiki_pages: Wiki oldalak szerkesztése
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Megfigyelők felvétele
   permission_view_gantt: Gannt diagramm megtekintése
   permission_move_issues: Feladatok mozgatása
@@ -943,3 +946,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/id.yml
--- config/locales/id.yml Base (BASE)
+++ config/locales/id.yml Locally Modified (Based On LOCAL)
@@ -347,6 +347,8 @@
   permission_view_gantt: Tampilkan gantt chart
   permission_view_calendar: Tampilkan kalender
   permission_view_issue_watchers: Tampilkan daftar pemantau
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Tambahkan pemantau
   permission_delete_issue_watchers: Hapus pemantau
   permission_log_time: Log waktu terpakai
@@ -815,6 +817,7 @@
   text_user_mail_option: "Untuk proyek yang tidak dipilih, anda hanya akan menerima notifikasi hal-hal yang anda pantau atau anda terlibat di dalamnya (misalnya masalah yang anda tulis atau ditugaskan pada anda)."
   text_no_configuration_data: "Peran, pelacak, status masalah dan alur kerja belum dikonfigur.\nSangat disarankan untuk memuat konfigurasi default. Anda akan bisa mengubahnya setelah konfigurasi dimuat."
   text_load_default_configuration: Muat konfigurasi default
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Diterapkan di set perubahan {{value}}."
   text_issues_destroy_confirmation: 'Apakah anda yakin untuk menghapus masalah terpilih ?'
   text_select_project_modules: 'Pilih modul untuk diaktifkan pada proyek ini:'
@@ -928,3 +931,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/it.yml
--- config/locales/it.yml Base (BASE)
+++ config/locales/it.yml Locally Modified (Based On LOCAL)
@@ -665,6 +665,7 @@
   label_repository_plural: Repository
   label_associated_revisions: Revisioni associate
   setting_user_format: Formato visualizzazione utenti
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Applicata nel changeset {{value}}."
   label_more: Altro
   text_issues_destroy_confirmation: 'Sei sicuro di voler eliminare le segnalazioni selezionate?'
@@ -756,6 +757,8 @@
   permission_select_project_modules: Seleziona moduli progetto
   permission_manage_documents: Gestisci documenti
   permission_edit_wiki_pages: Modifica pagine wiki
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Aggiungi osservatori
   permission_view_gantt: Vedi diagrammi gantt
   permission_move_issues: Muovi segnalazioni
@@ -924,3 +927,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/ja.yml
--- config/locales/ja.yml Base (BASE)
+++ config/locales/ja.yml Locally Modified (Based On LOCAL)
@@ -399,6 +399,8 @@
   permission_view_gantt: ガントチャートの閲覧
   permission_view_calendar: カレンダーの閲覧
   permission_view_issue_watchers: ウォッチ一覧の閲覧
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: ウォッチの追加
   permission_delete_issue_watchers: ウォッチの削除
   permission_log_time: 変更履歴の記入
@@ -895,6 +897,7 @@
   text_user_mail_option: "未選択のプロジェクトでは、ウォッチまたは関係している事柄(例: 自分が報告者もしくは担当者であるチケット)のみメールが送信されます。"
   text_no_configuration_data: "ロール、トラッカー、チケットのステータス、ワークフローがまだ設定されていません。\nデフォルト設定のロードを強くお勧めします。ロードした後、それを修正することができます。"
   text_load_default_configuration: デフォルト設定をロード
+  text_issues_destroy_confirmation: '本当に選択したチケットを削除しますか？'
   text_status_changed_by_changeset: "更新履歴 {{value}} で適用されました。"
   text_issues_destroy_confirmation: '本当に選択したチケットを削除しますか？'
   text_select_project_modules: 'このプロジェクトで使用するモジュールを選択してください:'
@@ -950,3 +953,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: Create journal entry for time logging
+  text_commit_logtime_journal_enabled: Creates new journal (activity) entry for each spent time entry logged through a commit message
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/ko.yml
--- config/locales/ko.yml Base (BASE)
+++ config/locales/ko.yml Locally Modified (Based On LOCAL)
@@ -392,6 +392,8 @@
   permission_view_gantt: Gantt차트 보기
   permission_view_calendar: 달력 보기
   permission_view_issue_watchers: 일감지킴이 보기
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: 일감지킴이 추가
   permission_log_time: 작업시간 기록
   permission_view_time_entries: 시간입력 보기
@@ -829,6 +831,7 @@
   text_user_mail_option: "선택하지 않은 프로젝트에서도, 지켜보는 중이거나 속해있는 사항(일감을 발행했거나 할당된 경우)이 있으면 알림메일을 받게 됩니다."
   text_no_configuration_data: "역할, 일감 유형, 일감 상태들과 업무흐름이 아직 설정되지 않았습니다.\n기본 설정을 읽어들이는 것을 권장합니다. 읽어들인 후에 수정할 수 있습니다."
   text_load_default_configuration: 기본 설정을 읽어들이기
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "변경묶음 {{value}}에 의하여 변경됨"
   text_issues_destroy_confirmation: '선택한 일감을 정말로 삭제하시겠습니까?'
   text_select_project_modules: '이 프로젝트에서 활성화시킬 모듈을 선택하세요:'
@@ -976,3 +979,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/lt.yml
--- config/locales/lt.yml Base (BASE)
+++ config/locales/lt.yml Locally Modified (Based On LOCAL)
@@ -407,6 +407,8 @@
   permission_view_gantt: Matyti Gantt grafiką
   permission_view_calendar: Matyti kalendorių
   permission_view_issue_watchers: Matyti stebėtojų sąrašą
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Pridėti stebėtojus
   permission_delete_issue_watchers: Pašalinti stebėtojus
   permission_log_time: Regsitruoti dirbtą laiką
@@ -871,6 +873,7 @@
   text_user_mail_option: "neišrinktiems projektams, jūs tiktai gausite pranešimus apie įvykius, kuriuos jūs stebite, arba į kuriuos esate įtrauktas (pvz. darbai, jūs esate autorius ar įgaliotinis)."
   text_no_configuration_data: "Vaidmenys, pėdsekiai, darbų būsenos ir darbų eiga dar nebuvo konfigūruoti.\nGriežtai rekomenduojam užkrauti numatytąją(default)konfiguraciją. Užkrovus, galėsite ją modifikuoti."
   text_load_default_configuration: Užkrauti numatytąj konfiguraciją
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Pakeista {{value}} revizijoje."
   text_issues_destroy_confirmation: 'Ar jūs tikrai norite sunaikinti pažymėtą(us) darbą(us)?'
   text_select_project_modules: 'Parinkite modulius, kuriuos norite naudoti šiame projekte:'
@@ -984,3 +987,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/lv.yml
--- config/locales/lv.yml Base (BASE)
+++ config/locales/lv.yml Locally Modified (Based On LOCAL)
@@ -354,6 +354,8 @@
   permission_view_gantt: Skatīt Ganta diagrammu
   permission_view_calendar: Skatīt kalendāru
   permission_view_issue_watchers: Skatīt vērotāju sarakstu
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Pievienot vērotājus
   permission_delete_issue_watchers: Dzēst vērotājus
   permission_log_time: Piereģistrēt pavadīto laiku
@@ -836,6 +838,7 @@
   text_user_mail_option: "No neizvēlētajiem projektiem Jūs saņemsiet ziņojumus e-pastā tikai par notikumiem, kuriem Jūs sekojat vai kuros esat iesaistīts." 
   text_no_configuration_data: "Lomas, trakeri, uzdevumu statusi un darba plūsmas vēl nav konfigurētas.\nĻoti ieteicams ielādēt noklusēto konfigurāciju. Pēc ielādēšanas to būs iespējams modificēt."
   text_load_default_configuration: Ielādēt noklusēto konfigurāciju
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Apstiprināts izmaiņu kopumā {{value}}."
   text_issues_destroy_confirmation: 'Vai tiešām vēlaties dzēst izvēlēto uzdevumu(us)?'
   text_select_project_modules: 'Izvēlieties moduļus šim projektam:'
@@ -915,3 +918,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/mk.yml
--- config/locales/mk.yml Base (BASE)
+++ config/locales/mk.yml Locally Modified (Based On LOCAL)
@@ -369,6 +369,8 @@
   permission_view_gantt: View gantt chart
   permission_view_calendar: View calendar
   permission_view_issue_watchers: View watchers list
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Add watchers
   permission_delete_issue_watchers: Delete watchers
   permission_log_time: Бележи потрошено време
@@ -859,6 +861,7 @@
   text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)."
   text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
   text_load_default_configuration: Load the default configuration
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Applied in changeset {{value}}."
   text_issues_destroy_confirmation: 'Дали сте сигурни дека сакате да ги избришете избраните задачи?'
   text_select_project_modules: 'Изберете модули за овој проект:'
@@ -920,3 +923,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/mn.yml
--- config/locales/mn.yml Base (BASE)
+++ config/locales/mn.yml Locally Modified (Based On LOCAL)
@@ -358,6 +358,8 @@
   permission_view_gantt: Гант диаграмыг үзэх
   permission_view_calendar: Календарь үзэх
   permission_view_issue_watchers: Ажиглагчдын жагсаалтыг харах
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Ажиглагчид нэмэх
   permission_delete_issue_watchers: Ажиглагчдыг устгах
   permission_log_time: Зарцуулсан хугацааг лог хийх
@@ -841,6 +843,7 @@
   text_user_mail_option: "Сонгогдоогүй төслүүдийн хувьд, та зөвхөн өөрийнхөө ажиглаж байгаа зүйлс юмуу танд хамаатай зүйлсийн талаар мэдэгдэл авах болно (Таны оруулсан асуудал, эсвэл танд оноосон гэх мэт)."
   text_no_configuration_data: "Хандалтын эрхүүд, чиглэлүүд, асуудлын төлвүүд болон ажлын дарааллын тухай мэдээллийг хараахан оруулаагүй байна.\nТа стандарт өгөгдлүүдийг даруйхан оруулахыг зөвлөж байна, оруулсан хойно та засварлаж болно."
   text_load_default_configuration: Стандарт өгөгдлийг ачаалах
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "{{value}} өөрчлөлтөд хийгдсэн."
   text_issues_destroy_confirmation: 'Та сонгогдсон асуудлуудыг үнэхээр устгамаар байна уу ?'
   text_select_project_modules:  'Энэ төслийн хувьд идэвхжүүлэх модулуудаа сонгоно уу:'
@@ -921,3 +924,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/nl.yml
--- config/locales/nl.yml Base (BASE)
+++ config/locales/nl.yml Locally Modified (Based On LOCAL)
@@ -632,6 +632,8 @@
   notice_successful_update: Wijzigen succesvol.
   notice_unable_delete_version: Niet mogelijk om deze versie te verwijderen.
   permission_add_issue_notes: Voeg notities toe
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Voeg monitors toe
   permission_add_issues: Voeg issues toe
   permission_add_messages: Voeg berichten toe
@@ -762,6 +764,7 @@
   text_rmagick_available: RMagick beschikbaar (optioneel)
   text_select_mail_notifications: Selecteer acties waarvoor mededelingen via mail moeten worden verstuurd.
   text_select_project_modules: 'Selecteer de modules die u wilt gebruiken voor dit project:'
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Toegepast in changeset {{value}}."
   text_subprojects_destroy_warning: "De subprojecten: {{value}} zullen ook verwijderd worden."
   text_tip_issue_begin_day: issue die op deze dag begint
@@ -902,3 +905,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/no.yml
--- config/locales/no.yml Base (BASE)
+++ config/locales/no.yml Locally Modified (Based On LOCAL)
@@ -673,6 +673,7 @@
   text_user_mail_option: "For ikke-valgte prosjekter vil du bare motta varsling om ting du overvåker eller er involveret i (eks. saker du er forfatter av eller er tildelt)."
   text_no_configuration_data: "Roller, arbeidsflyt, sakstyper og -statuser er ikke konfigurert enda.\nDet anbefales sterkt å laste inn standardkonfigurasjonen. Du vil kunne endre denne etter den er innlastet."
   text_load_default_configuration: Last inn standardkonfigurasjonen
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Brukt i endringssett {{value}}."
   text_issues_destroy_confirmation: 'Er du sikker på at du vil slette valgte sak(er) ?'
   text_select_project_modules: 'Velg moduler du vil aktivere for dette prosjektet:'
@@ -743,6 +744,8 @@
   permission_select_project_modules: Velge prosjekt-moduler
   permission_manage_documents: Behandle dokumenter
   permission_edit_wiki_pages: Redigere wiki-sider
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Legge til overvåkere
   permission_view_gantt: Vise gantt-diagram
   permission_move_issues: Flytte saker
@@ -911,3 +914,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/pl.yml
--- config/locales/pl.yml Base (BASE)
+++ config/locales/pl.yml Locally Modified (Based On LOCAL)
@@ -667,6 +667,8 @@
   notice_successful_update: Uaktualnienie zakończone sukcesem.
   notice_unable_delete_version: Nie można usunąć wersji
   permission_add_issue_notes: Dodawanie notatek
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Dodawanie obserwatorów
   permission_add_issues: Dodawanie zagadnień
   permission_add_messages: Dodawanie wiadomości
@@ -794,6 +796,7 @@
   text_rmagick_available: RMagick dostępne (opcjonalnie)
   text_select_mail_notifications: Zaznacz czynności przy których użytkownik powinien być powiadomiony mailem.
   text_select_project_modules: 'Wybierz moduły do aktywacji w tym projekcie:'
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Zastosowane w zmianach {{value}}."
   text_subprojects_destroy_warning: "Podprojekt(y): {{value}} zostaną także usunięte."
   text_tip_issue_begin_day: zadanie zaczynające się dzisiaj
@@ -941,3 +944,8 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"  
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
+
Index: config/locales/pt-BR.yml
--- config/locales/pt-BR.yml Base (BASE)
+++ config/locales/pt-BR.yml Locally Modified (Based On LOCAL)
@@ -715,6 +715,7 @@
   text_user_mail_option: "Para projetos (não selecionados), você somente receberá notificações sobre o que você está observando ou está envolvido (ex. tarefas das quais você é o autor ou que estão atribuídas a você)"
   text_no_configuration_data: "Os Papéis, tipos de tarefas, situação de tarefas e fluxos de trabalho não foram configurados ainda.\nÉ altamente recomendado carregar as configurações padrão. Você poderá modificar estas configurações assim que carregadas."
   text_load_default_configuration: Carregar a configuração padrão
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Aplicado no changeset {{value}}."
   text_issues_destroy_confirmation: 'Você tem certeza que deseja excluir a(s) tarefa(s) selecionada(s)?'
   text_select_project_modules: 'Selecione módulos para habilitar para este projeto:'
@@ -776,6 +777,8 @@
   permission_select_project_modules: Selecionar módulos de projeto
   permission_manage_documents: Gerenciar documentos
   permission_edit_wiki_pages: Editar páginas wiki
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Adicionar observadores
   permission_view_gantt: Ver gráfico gantt
   permission_move_issues: Mover tarefas
@@ -948,3 +951,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/pt.yml
--- config/locales/pt.yml Base (BASE)
+++ config/locales/pt.yml Locally Modified (Based On LOCAL)
@@ -702,6 +702,7 @@
   text_user_mail_option: "Para projectos não seleccionados, apenas receberá notificações acerca de coisas que está a observar ou está envolvido (ex. tarefas das quais foi o criador ou lhes foram atribuídas)."
   text_no_configuration_data: "Perfis, tipos de tarefas, estados das tarefas e workflows ainda não foram configurados.\nÉ extremamente recomendado carregar as configurações padrão. Será capaz de as modificar depois de estarem carregadas."
   text_load_default_configuration: Carregar as configurações padrão
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Aplicado no changeset {{value}}."
   text_issues_destroy_confirmation: 'Tem a certeza que deseja apagar a(s) tarefa(s) seleccionada(s)?'
   text_select_project_modules: 'Seleccione os módulos a activar para este projecto:'
@@ -760,6 +761,8 @@
   permission_select_project_modules: Seleccionar módulos do projecto
   permission_manage_documents: Gerir documentos
   permission_edit_wiki_pages: Editar páginas de wiki
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Adicionar observadores
   permission_view_gantt: ver diagrama de Gantt
   permission_move_issues: Mover tarefas
@@ -928,3 +931,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/ro.yml
--- config/locales/ro.yml Base (BASE)
+++ config/locales/ro.yml Locally Modified (Based On LOCAL)
@@ -321,6 +321,8 @@
   permission_view_gantt: Afișează Gantt
   permission_view_calendar: Afișează calendarul
   permission_view_issue_watchers: Afișează lista de persoane interesate
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Adaugă persoane interesate
   permission_log_time: Înregistrează timpul de lucru
   permission_view_time_entries: Afișează timpul de lucru
@@ -756,6 +758,7 @@
   text_user_mail_option: "Pentru proiectele care nu sunt selectate, veți primi notificări doar pentru ceea ce urmăriți sau în ce sunteți implicat (ex: tichete create de dumneavoastră sau care vă sunt atribuite)."
   text_no_configuration_data: "Nu s-au configurat încă rolurile, stările tichetelor și modurile de lucru.\nEste recomandat să încărcați configurația implicită. O veți putea modifica ulterior."
   text_load_default_configuration: Încarcă configurația implicită
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Aplicat în setul {{value}}."
   text_issues_destroy_confirmation: 'Sigur doriți să ștergeți tichetele selectate?'
   text_select_project_modules: 'Selectați modulele active pentru acest proiect:'
@@ -913,3 +916,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/ru.yml
--- config/locales/ru.yml Base (BASE)
+++ config/locales/ru.yml Locally Modified (Based On LOCAL)
@@ -792,6 +792,8 @@
 
   permission_add_issues: Добавление задач
   permission_add_issue_notes: Добавление примечаний
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Добавление наблюдателей
   permission_add_messages: Отправка сообщений
   permission_browse_repository: Просмотр хранилища
@@ -940,6 +942,7 @@
   text_rmagick_available: Доступно использование RMagick (опционально)
   text_select_mail_notifications: Выберите действия, на которые будет отсылаться уведомление на электронную почту.
   text_select_project_modules: 'Выберите модули, которые будут использованы в проекте:'
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Реализовано в {{value}} редакции."
   text_subprojects_destroy_warning: "Подпроекты: {{value}} также будут удалены."
   text_tip_issue_begin_day: дата начала задачи
@@ -1043,3 +1046,7 @@
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
   field_start_date: Start Date
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/sk.yml
--- config/locales/sk.yml Base (BASE)
+++ config/locales/sk.yml Locally Modified (Based On LOCAL)
@@ -668,6 +668,7 @@
   text_user_mail_option: "U projektov, které neboli vybrané, budete dostávať oznamenie iba o vašich či o sledovaných položkách (napr. o položkách, ktorých ste autor, alebo ku ktorým ste priradený/á)."
   text_no_configuration_data: "Role, fronty, stavy úloh ani workflow neboli zatiaľ nakonfigurované.\nVelmi doporučujeme nahrať východziu konfiguráciu. Potom si môžete všetko upraviť"
   text_load_default_configuration: Nahrať východziu konfiguráciu
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Aktualizované v sade zmien {{value}}."
   text_issues_destroy_confirmation: 'Naozaj si prajete odstrániť všetky zvolené úlohy?'
   text_select_project_modules: 'Aktivne moduly v tomto projekte:'
@@ -746,6 +747,8 @@
   permission_select_project_modules: Voľba projektových modulov
   permission_manage_documents: Správa dokumentov
   permission_edit_wiki_pages: Úprava Wiki strániek
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Pridanie pozorovateľov
   permission_view_gantt: Zobrazenie Ganttovho diagramu
   permission_move_issues: Presun úloh
@@ -915,3 +918,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/sl.yml
--- config/locales/sl.yml Base (BASE)
+++ config/locales/sl.yml Locally Modified (Based On LOCAL)
@@ -318,6 +318,8 @@
   permission_view_gantt: Poglej gantogram
   permission_view_calendar: Poglej koledar
   permission_view_issue_watchers: Oglej si listo spremeljevalcev
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Dodaj spremljevalce
   permission_log_time: Beleži porabljen čas
   permission_view_time_entries: Poglej porabljen čas
@@ -744,6 +746,7 @@
   text_user_mail_option: "Na neizbrane projekte boste prejemali le obvestila o zadevah ki jih spremljate ali v katere ste vključeni (npr. zahtevki katerih avtor(ica) ste)"
   text_no_configuration_data: "Vloge, vrste zahtevkov, statusi zahtevkov in potek dela še niso bili določeni. \nZelo priporočljivo je, da naložite privzeto  konfiguracijo, ki jo lahko kasneje tudi prilagodite."
   text_load_default_configuration: Naloži privzeto konfiguracijo
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Dodano v zapis sprememb {{value}}."
   text_issues_destroy_confirmation: 'Ali ste prepričani, da želite izbrisati izbrani(e) zahtevek(ke)?'
   text_select_project_modules: 'Izberite module, ki jih želite omogočiti za ta projekt:'
@@ -916,3 +919,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/sr-YU.yml
--- config/locales/sr-YU.yml Base (BASE)
+++ config/locales/sr-YU.yml Locally Modified (Based On LOCAL)
@@ -368,6 +368,8 @@
   permission_view_gantt: Pregledanje Gantovog dijagrama
   permission_view_calendar: Pregledanje kalendara
   permission_view_issue_watchers: Pregledanje spiska posmatrača
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Dodavanje posmatrača
   permission_delete_issue_watchers: Brisanje posmatrača
   permission_log_time: Beleženje utrošenog vremena
@@ -856,6 +858,7 @@
   text_user_mail_option: "Za neizabrane projekte, dobićete samo obaveštenje o stvarima koje pratite ili ste uključeni (npr. problemi čiji ste vi autor ili zastupnik)."
   text_no_configuration_data: "Uloge, praćenja, statusi problema i toka posla još uvek nisu podešeni.\nPreporučljivo je da učitate podrazumevano konfigurisanje. Izmena je moguća nakon prvog učitavanja."
   text_load_default_configuration: Učitaj podrazumevano konfigurisanje
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Primenjeno u skupu sa promenama {{value}}."
   text_issues_destroy_confirmation: 'Jeste li sigurni da želite da izbrišete odabrane probleme?'
   text_select_project_modules: 'Odaberite module koje želite omogućiti za ovaj projekat:'
@@ -920,3 +923,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/sr.yml
--- config/locales/sr.yml Base (BASE)
+++ config/locales/sr.yml Locally Modified (Based On LOCAL)
@@ -368,6 +368,8 @@
   permission_view_gantt: Прегледање Гантовог дијаграма
   permission_view_calendar: Прегледање календара
   permission_view_issue_watchers: Прегледање списка посматрача
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Додавање посматрача
   permission_delete_issue_watchers: Брисање посматрача
   permission_log_time: Бележење утрошеног времена
@@ -856,6 +858,7 @@
   text_user_mail_option: "За неизабране пројекте, добићете само обавештење о стварима које пратите или сте укључени (нпр. проблеми чији сте ви аутор или заступник)."
   text_no_configuration_data: "Улоге, праћења, статуси проблема и тока посла још увек нису подешени.\nПрепоручљиво је да учитате подразумевано конфигурисање. Измена је могућа након првог учитавања."
   text_load_default_configuration: Учитај подразумевано конфигурисање
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Примењено у скупу са променама {{value}}."
   text_issues_destroy_confirmation: 'Јесте ли сигурни да желите да избришете одабране проблеме?'
   text_select_project_modules: 'Одаберите модуле које желите омогућити за овај пројекат:'
@@ -921,3 +924,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/sv.yml
--- config/locales/sv.yml Base (BASE)
+++ config/locales/sv.yml Locally Modified (Based On LOCAL)
@@ -420,6 +420,8 @@
   permission_view_gantt: Visa Gantt-schema
   permission_view_calendar: Visa kalender
   permission_view_issue_watchers: Visa bevakarlista
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Lägga till bevakare
   permission_delete_issue_watchers: Ta bort bevakare
   permission_log_time: Logga spenderad tid
@@ -912,6 +914,7 @@
   text_user_mail_option: "För omarkerade projekt kommer du bara bli underrättad om saker du bevakar eller är inblandad i (T.ex. ärenden du skapat eller tilldelats)."
   text_no_configuration_data: "Roller, ärendetyper, ärendestatus och arbetsflöden har inte konfigurerats ännu.\nDet rekommenderas att läsa in standardkonfigurationen. Du kommer att kunna göra ändringar efter att den blivit inläst."
   text_load_default_configuration: Läs in standardkonfiguration
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Tilldelad i changeset {{value}}."
   text_issues_destroy_confirmation: 'Är du säker på att du vill radera markerade ärende(n) ?'
   text_select_project_modules: 'Välj vilka moduler som ska vara aktiva för projektet:'
@@ -972,3 +975,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/th.yml
--- config/locales/th.yml Base (BASE)
+++ config/locales/th.yml Locally Modified (Based On LOCAL)
@@ -674,6 +674,7 @@
   text_user_mail_option: "ในโครงการที่ไม่ได้เลือก, คุณจะได้รับการแจ้งเกี่ยวกับสิ่งที่คุณเฝ้าดูหรือมีส่วนเกี่ยวข้อง (เช่นปัญหาที่คุณแจ้งไว้หรือได้รับมอบหมาย)."
   text_no_configuration_data: "บทบาท, การติดตาม, สถานะปัญหา และลำดับงานยังไม่ได้ถูกตั้งค่า.\nขอแนะนำให้โหลดค่าเริ่มต้น. คุณสามารถแก้ไขค่าได้หลังจากโหลดแล้ว."
   text_load_default_configuration: โหลดค่าเริ่มต้น
+  text_time_logged_by_changeset: "Time logged by changeset {{value}}."
   text_status_changed_by_changeset: "ประยุกต์ใช้ในกลุ่มการเปลี่ยนแปลง {{value}}."
   text_issues_destroy_confirmation: 'คุณแน่ใจไหมว่าต้องการลบปัญหา(ทั้งหลาย)ที่เลือกไว้?'
   text_select_project_modules: 'เลือกส่วนประกอบที่ต้องการใช้งานสำหรับโครงการนี้:'
@@ -749,6 +750,8 @@
   permission_select_project_modules: Select project modules
   permission_manage_documents: Manage documents
   permission_edit_wiki_pages: Edit wiki pages
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Add watchers
   permission_view_gantt: View gantt chart
   permission_move_issues: Move issues
@@ -917,3 +920,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: Create journal entry for time logging
+  text_commit_logtime_journal_enabled: Creates new journal (activity) entry for each spent time entry logged through a commit message
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/tmp
--- config/locales/tmp Locally New
+++ config/locales/tmp Locally New
@@ -0,0 +1,2 @@
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/tr.yml
--- config/locales/tr.yml Base (BASE)
+++ config/locales/tr.yml Locally Modified (Based On LOCAL)
@@ -699,6 +699,7 @@
   text_user_mail_option: "Seçili olmayan projeler için, sadece dahil olduğunuz ya da izlediğiniz öğeler hakkında uyarılar alacaksınız (örneğin,yazarı veya atandığınız iletiler)."
   text_no_configuration_data: "Roller, takipçiler, ileti durumları ve işakışı henüz yapılandırılmadı.\nVarsayılan yapılandırılmanın yüklenmesi şiddetle tavsiye edilir. Bir kez yüklendiğinde yapılandırmayı değiştirebileceksiniz."
   text_load_default_configuration: Varsayılan yapılandırmayı yükle
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Değişiklik listesi {{value}} içinde uygulandı."
   text_issues_destroy_confirmation: 'Seçili iletileri silmek istediğinizden emin misiniz ?'
   text_select_project_modules: 'Bu proje için etkinleştirmek istediğiniz modülleri seçin:'
@@ -775,6 +776,8 @@
   permission_select_project_modules: Select project modules
   permission_manage_documents: Manage documents
   permission_edit_wiki_pages: Edit wiki pages
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Add watchers
   permission_view_gantt: View gantt chart
   permission_move_issues: Move issues
@@ -943,3 +946,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/uk.yml
--- config/locales/uk.yml Base (BASE)
+++ config/locales/uk.yml Locally Modified (Based On LOCAL)
@@ -640,6 +640,7 @@
   enumeration_issue_priorities: Пріоритети питань
   enumeration_doc_categories: Категорії документів
   enumeration_activities: Дії (облік часу)
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Applied in changeset {{value}}."
   label_display_per_page: "Per page: {{value}}"
   label_issue_added: Issue added
@@ -748,6 +749,8 @@
   permission_select_project_modules: Select project modules
   permission_manage_documents: Manage documents
   permission_edit_wiki_pages: Edit wiki pages
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Add watchers
   permission_view_gantt: View gantt chart
   permission_move_issues: Move issues
@@ -916,3 +919,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/vi.yml
--- config/locales/vi.yml Base (BASE)
+++ config/locales/vi.yml Locally Modified (Based On LOCAL)
@@ -747,6 +747,7 @@
   text_user_mail_option: "Với các dự án không được chọn, bạn chỉ có thể nhận được thông báo về các vấn đề bạn đăng ký theo dõi hoặc có liên quan đến bạn (chẳng hạn, vấn đề được gán cho bạn)."
   text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
   text_load_default_configuration: Load the default configuration
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "Applied in changeset {{value}}."
   text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s) ?'
   text_select_project_modules: 'Chọn các mô-đun cho dự án:'
@@ -808,6 +809,8 @@
   permission_view_gantt: Xem biểu đồ sự kiện
   permission_view_calendar: Xem lịch
   permission_view_issue_watchers: Xem các người theo dõi
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: Thêm người theo dõi
   permission_log_time: Lưu thời gian đã tốn
   permission_view_time_entries: Xem thời gian đã tốn
@@ -975,3 +978,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: "Creates new journal (activity) entry for each spent time entry logged through a commit message"
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/zh-TW.yml
--- config/locales/zh-TW.yml Base (BASE)
+++ config/locales/zh-TW.yml Locally Modified (Based On LOCAL)
@@ -461,6 +461,8 @@
   permission_view_gantt: 檢視甘特圖
   permission_view_calendar: 檢視日曆
   permission_view_issue_watchers: 檢視觀察者清單
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: 新增觀察者
   permission_delete_issue_watchers: 刪除觀察者
   permission_log_time: 紀錄耗用工時
@@ -956,6 +958,7 @@
   text_user_mail_option: "對於那些未被選擇的專案，將只會接收到您正在觀察中，或是參與中的項目通知。（「參與中的項目」包含您建立的或是指派給您的項目）"
   text_no_configuration_data: "角色、追蹤標籤、項目狀態與流程尚未被設定完成。\n強烈建議您先載入預設的組態。將預設組態載入之後，您可再變更其中之值。"
   text_load_default_configuration: 載入預設組態
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "已套用至變更集 {{value}}."
   text_issues_destroy_confirmation: '確定刪除已選擇的項目？'
   text_select_project_modules: '選擇此專案可使用之模組：'
@@ -1011,3 +1014,7 @@
 
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: Create journal entry for time logging
+  text_commit_logtime_journal_enabled: Creates new journal (activity) entry for each spent time entry logged through a commit message
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/locales/zh.yml
--- config/locales/zh.yml Base (BASE)
+++ config/locales/zh.yml Locally Modified (Based On LOCAL)
@@ -376,6 +376,8 @@
   permission_view_gantt: 查看甘特图
   permission_view_calendar: 查看日历
   permission_view_issue_watchers: 查看跟踪者列表
+  setting_commit_logtime_enabled: Enable time logging
+  text_commit_logtime: "Allows to log time in commit messages. Examples: refs #123 @1.5 or refs #123 @1h30m or fixes #123 @1h 30m (logs one hour and 30 minutes for issue #123)"
   permission_add_issue_watchers: 添加跟踪者
   permission_delete_issue_watchers: 删除跟踪者
   permission_log_time: 登记工时
@@ -855,6 +857,7 @@
   text_user_mail_option: "对于没有选中的项目，您将只会收到您跟踪或参与的项目的通知（比如说，您是问题的报告者, 或被指派解决此问题）。"
   text_no_configuration_data: "角色、跟踪标签、问题状态和工作流程还没有设置。\n强烈建议您先载入默认设置，然后在此基础上进行修改。"
   text_load_default_configuration: 载入默认设置
+  text_time_logged_by_changeset: "Spent time of {{value}} hours logged by changeset {{value2}}."
   text_status_changed_by_changeset: "已应用到变更列表 {{value}}."
   text_issues_destroy_confirmation: '您确定要删除选中的问题吗？'
   text_select_project_modules: '请选择此项目可以使用的模块：'
@@ -938,3 +941,7 @@
   field_start_date: Start date
   label_principal_search: "Search for user or group:"
   label_user_search: "Search for user:"
+  setting_commit_logtime_journal_enabled: "Create journal entry for time logging"
+  text_commit_logtime_journal_enabled: Creates new journal (activity) entry for each spent time entry logged through a commit message
+  setting_commit_logtime_activity: "Spent time activity"
+  text_commit_logtime_activity: "Log spent time from commit message on this activity. For example: Development"
Index: config/settings.yml
--- config/settings.yml Base (BASE)
+++ config/settings.yml Locally Modified (Based On LOCAL)
@@ -98,6 +98,15 @@
   default: 0
 commit_fix_done_ratio:
   default: 100
+commit_logtime_enabled:
+  format: int
+  default: 0
+commit_logtime_journal_enabled:
+  format: int
+  default: 1
+commit_logtime_activity:
+  format: int
+  default: 0
 # autologin duration in days
 # 0 means autologin is disabled 
 autologin:
Index: lib/redmine/i18n.rb
--- lib/redmine/i18n.rb Base (BASE)
+++ lib/redmine/i18n.rb Locally Modified (Based On LOCAL)
@@ -31,8 +31,8 @@
       l((hours < 2.0 ? :label_f_hour : :label_f_hour_plural), :value => ("%.2f" % hours.to_f))
     end
     
-    def ll(lang, str, value=nil)
-      ::I18n.t(str.to_s, :value => value, :locale => lang.to_s.gsub(%r{(.+)\-(.+)$}) { "#{$1}-#{$2.upcase}" })
+    def ll(lang, str, value=nil, value2=nil)
+      ::I18n.t(str.to_s, :value => value, :value2 => value2, :locale => lang.to_s.gsub(%r{(.+)\-(.+)$}) { "#{$1}-#{$2.upcase}" })
     end
 
     def format_date(date)
Index: test/fixtures/changesets.yml
--- test/fixtures/changesets.yml Base (BASE)
+++ test/fixtures/changesets.yml Locally Modified (Based On LOCAL)
@@ -101,4 +101,23 @@
   user_id: 3
   repository_id: 10
   committer: dlopper
-  
\ No newline at end of file
+changesets_011:
+  commit_date: "2010-11-09"
+  comments: Logging spent time on IssueID #1 @1h30m
+  committed_on: 2009-11-09 12:14:41
+  revision: "11"
+  id: 110
+  scmid:
+  user_id: 3
+  repository_id: 10
+  committer: dlopper
+changesets_012:
+  commit_date: "2010-11-09"
+  comments: Testing time logging from revision 12, references #1 @3.5h #2 @2h 20m and closes #3 @30m
+  committed_on: 2009-11-09 12:19:38
+  revision: "12"
+  id: 111
+  scmid:
+  user_id: 3
+  repository_id: 10
+  committer: dlopper
Index: test/unit/changeset_test.rb
--- test/unit/changeset_test.rb Base (BASE)
+++ test/unit/changeset_test.rb Locally Modified (Based On LOCAL)
@@ -100,6 +100,382 @@
     assert c.issues.first.project != c.project
   end
 
+  def test_commit_log_spenttime_one_issue_hours_refs
+    Setting.commit_ref_keywords = 'refs,references,IssueID'
+    Setting.commit_fix_keywords = 'fixes,closes'
+    Setting.commit_logtime_enabled = 1
+    Setting.commit_logtime_journal_enabled = 1
+    Setting.commit_logtime_activity = 0
+
+    ref_keywords = Setting.commit_ref_keywords.downcase.split(",").collect(&:strip)
+    fix_keywords = Setting.commit_fix_keywords.downcase.split(",").collect(&:strip)
+    kw_regexp = (ref_keywords + fix_keywords).collect{|kw| Regexp.escape(kw)}.join("|")
+
+    c = Changeset.new(:repository => Project.find(1).repository,
+                      :committed_on => Time.now,
+                      :comments => 'refs #1 @1.5h')
+
+    obj = c.find_referenced_issue_ids_in_comments(c.comments, kw_regexp, fix_keywords)
+    issue_ids = obj.first
+    log_time = obj.last
+
+    assert_equal [1], issue_ids.sort.collect { |issue| issue.id }
+
+    log = c.get_spenttime_and_issue_id(log_time.uniq.first)
+    assert_equal 1, log.first.to_i
+    assert_equal 1.5, log.last.to_f
+  end
+
+  def test_commit_log_spenttime_one_issue_hours_and_minutes_refs
+    Setting.commit_ref_keywords = 'refs,references,IssueID'
+    Setting.commit_fix_keywords = 'fixes,closes'
+    Setting.commit_logtime_enabled = 1
+    Setting.commit_logtime_journal_enabled = 1
+    Setting.commit_logtime_activity = 0
+
+    ref_keywords = Setting.commit_ref_keywords.downcase.split(",").collect(&:strip)
+    fix_keywords = Setting.commit_fix_keywords.downcase.split(",").collect(&:strip)
+    kw_regexp = (ref_keywords + fix_keywords).collect{|kw| Regexp.escape(kw)}.join("|")
+
+    c = Changeset.new(:repository => Project.find(1).repository,
+                      :committed_on => Time.now,
+                      :comments => 'refs #2 @1h 30m')
+
+    obj = c.find_referenced_issue_ids_in_comments(c.comments, kw_regexp, fix_keywords)
+    issue_ids = obj.first
+    log_time = obj.last
+
+    assert_equal [2], issue_ids.sort.collect { |issue| issue.id }
+
+    log = c.get_spenttime_and_issue_id(log_time.uniq.first)
+    assert_equal 2, log.first.to_i
+    assert_equal 1.5, log.last.to_f
+  end
+
+  def test_commit_log_spenttime_multiple_issues_hours_refs
+    Setting.commit_ref_keywords = 'refs,references,IssueID'
+    Setting.commit_fix_keywords = 'fixes,closes'
+    Setting.commit_logtime_enabled = 1
+    Setting.commit_logtime_journal_enabled = 1
+    Setting.commit_logtime_activity = 0
+
+    ref_keywords = Setting.commit_ref_keywords.downcase.split(",").collect(&:strip)
+    fix_keywords = Setting.commit_fix_keywords.downcase.split(",").collect(&:strip)
+    kw_regexp = (ref_keywords + fix_keywords).collect{|kw| Regexp.escape(kw)}.join("|")
+
+    c = Changeset.new(:repository => Project.find(1).repository,
+                      :committed_on => Time.now,
+                      :comments => 'refs #1 @1.5h #3 @3h')
+
+    obj = c.find_referenced_issue_ids_in_comments(c.comments, kw_regexp, fix_keywords)
+    issue_ids = obj.first
+    log_time = obj.last
+
+    assert_equal [1, 3], issue_ids.sort.collect { |issue| issue.id }
+
+    times = []
+    ids = []
+
+    log_time.uniq.each do |issue_wl|
+      log = c.get_spenttime_and_issue_id(issue_wl)
+      ids << log.first.to_i
+      times << log.last.to_f
+    end
+
+    assert_equal [1, 3], ids.sort
+    assert_equal [1.5, 3], times.sort
+  end
+
+  def test_commit_log_spenttime_multiple_issues_hours_and_minutes_refs
+    Setting.commit_ref_keywords = 'refs,references,IssueID'
+    Setting.commit_fix_keywords = 'fixes,closes'
+    Setting.commit_logtime_enabled = 1
+    Setting.commit_logtime_journal_enabled = 1
+    Setting.commit_logtime_activity = 0
+
+    ref_keywords = Setting.commit_ref_keywords.downcase.split(",").collect(&:strip)
+    fix_keywords = Setting.commit_fix_keywords.downcase.split(",").collect(&:strip)
+    kw_regexp = (ref_keywords + fix_keywords).collect{|kw| Regexp.escape(kw)}.join("|")
+
+    c = Changeset.new(:repository => Project.find(1).repository,
+                      :committed_on => Time.now,
+                      :comments => 'refs #1 @1h30m #3 @3h 30m')
+
+    obj = c.find_referenced_issue_ids_in_comments(c.comments, kw_regexp, fix_keywords)
+    issue_ids = obj.first
+    log_time = obj.last
+
+    assert_equal [1, 3], issue_ids.sort.collect { |issue| issue.id }
+
+    times = []
+    ids = []
+
+    log_time.uniq.each do |issue_wl|
+      log = c.get_spenttime_and_issue_id(issue_wl)
+      ids << log.first.to_i
+      times << log.last.to_f
+    end
+
+    assert_equal [1, 3], ids.sort
+    assert_equal [1.5, 3.5], times.sort
+  end
+
+  def test_commit_log_spenttime_multiple_issues_mixed_refs
+    Setting.commit_ref_keywords = 'refs,references,IssueID'
+    Setting.commit_fix_keywords = 'fixes,closes'
+    Setting.commit_logtime_enabled = 1
+    Setting.commit_logtime_journal_enabled = 1
+    Setting.commit_logtime_activity = 0
+
+    ref_keywords = Setting.commit_ref_keywords.downcase.split(",").collect(&:strip)
+    fix_keywords = Setting.commit_fix_keywords.downcase.split(",").collect(&:strip)
+    kw_regexp = (ref_keywords + fix_keywords).collect{|kw| Regexp.escape(kw)}.join("|")
+
+    c = Changeset.new(:repository => Project.find(1).repository,
+                      :committed_on => Time.now,
+                      :comments => 'refs #1 @1.5h #3 @3h 45m')
+
+    obj = c.find_referenced_issue_ids_in_comments(c.comments, kw_regexp, fix_keywords)
+    issue_ids = obj.first
+    log_time = obj.last
+
+    assert_equal [1, 3], issue_ids.sort.collect { |issue| issue.id }
+
+    times = []
+    ids = []
+
+    log_time.uniq.each do |issue_wl|
+      log = c.get_spenttime_and_issue_id(issue_wl)
+      ids << log.first.to_i
+      times << log.last.to_f
+    end
+
+    assert_equal [1, 3], ids.sort
+    assert_equal [1.5, 3.75], times.sort
+  end
+
+  def test_commit_log_spenttime_illegal_input_refs
+    Setting.commit_ref_keywords = 'refs,references,IssueID'
+    Setting.commit_fix_keywords = 'fixes,closes'
+    Setting.commit_logtime_enabled = 1
+    Setting.commit_logtime_journal_enabled = 1
+    Setting.commit_logtime_activity = 0
+
+    ref_keywords = Setting.commit_ref_keywords.downcase.split(",").collect(&:strip)
+    fix_keywords = Setting.commit_fix_keywords.downcase.split(",").collect(&:strip)
+    kw_regexp = (ref_keywords + fix_keywords).collect{|kw| Regexp.escape(kw)}.join("|")
+
+    c = Changeset.new(:repository => Project.find(1).repository,
+                      :committed_on => Time.now,
+                      :comments => 'refs 1 @1hours 10 minutes refs #3 @3.4m')
+
+    obj = c.find_referenced_issue_ids_in_comments(c.comments, kw_regexp, fix_keywords)
+    issue_ids = obj.first
+    log_time = obj.last
+
+    assert_equal [1, 3], issue_ids.sort.collect { |issue| issue.id }
+
+    times = []
+    ids = []
+
+    log_time.uniq.each do |issue_wl|
+      log = c.get_spenttime_and_issue_id(issue_wl)
+      ids << log.first.to_i
+      times << log.last.to_f
+    end
+
+    assert_equal [1, 3], ids.sort
+    assert_equal [0, 0], times.sort
+  end
+
+  def test_commit_log_spenttime_one_issue_hours_any
+    Setting.commit_ref_keywords = '*'
+    Setting.commit_fix_keywords = 'fixes,closes'
+    Setting.commit_logtime_enabled = 1
+    Setting.commit_logtime_journal_enabled = 1
+    Setting.commit_logtime_activity = 0
+
+    ref_keywords = Setting.commit_ref_keywords.downcase.split(",").collect(&:strip)
+    fix_keywords = Setting.commit_fix_keywords.downcase.split(",").collect(&:strip)
+    kw_regexp = (ref_keywords + fix_keywords).collect{|kw| Regexp.escape(kw)}.join("|")
+
+    c = Changeset.new(:repository => Project.find(1).repository,
+                      :committed_on => Time.now,
+                      :comments => '#1 @1.5h')
+
+    obj = c.find_any_issue_ids_in_comments(c.comments)
+    issue_ids = obj.first
+    log_time = obj.last
+
+    assert_equal [1], issue_ids.sort.collect { |issue| issue.id }
+
+    log = c.get_spenttime_and_issue_id(log_time.uniq.first)
+    assert_equal 1, log.first.to_i
+    assert_equal 1.5, log.last.to_f
+  end
+
+  def test_commit_log_spenttime_one_issue_hours_and_minutes_any
+    Setting.commit_ref_keywords = '*'
+    Setting.commit_fix_keywords = 'fixes,closes'
+    Setting.commit_logtime_enabled = 1
+    Setting.commit_logtime_journal_enabled = 1
+    Setting.commit_logtime_activity = 0
+
+    ref_keywords = Setting.commit_ref_keywords.downcase.split(",").collect(&:strip)
+    fix_keywords = Setting.commit_fix_keywords.downcase.split(",").collect(&:strip)
+    kw_regexp = (ref_keywords + fix_keywords).collect{|kw| Regexp.escape(kw)}.join("|")
+
+    c = Changeset.new(:repository => Project.find(1).repository,
+                      :committed_on => Time.now,
+                      :comments => '#2 @1h 30m')
+
+    obj = c.find_any_issue_ids_in_comments(c.comments)
+    issue_ids = obj.first
+    log_time = obj.last
+
+    assert_equal [2], issue_ids.sort.collect { |issue| issue.id }
+
+    log = c.get_spenttime_and_issue_id(log_time.uniq.first)
+    assert_equal 2, log.first.to_i
+    assert_equal 1.5, log.last.to_f
+  end
+
+  def test_commit_log_spenttime_multiple_issues_hours_any
+    Setting.commit_ref_keywords = '*'
+    Setting.commit_fix_keywords = 'fixes,closes'
+    Setting.commit_logtime_enabled = 1
+    Setting.commit_logtime_journal_enabled = 1
+    Setting.commit_logtime_activity = 0
+
+    ref_keywords = Setting.commit_ref_keywords.downcase.split(",").collect(&:strip)
+    fix_keywords = Setting.commit_fix_keywords.downcase.split(",").collect(&:strip)
+    kw_regexp = (ref_keywords + fix_keywords).collect{|kw| Regexp.escape(kw)}.join("|")
+
+    c = Changeset.new(:repository => Project.find(1).repository,
+                      :committed_on => Time.now,
+                      :comments => '#1 @1.5h #3 @3h')
+
+    obj = c.find_any_issue_ids_in_comments(c.comments)
+    issue_ids = obj.first
+    log_time = obj.last
+
+    assert_equal [1, 3], issue_ids.sort.collect { |issue| issue.id }
+
+    times = []
+    ids = []
+
+    log_time.uniq.each do |issue_wl|
+      log = c.get_spenttime_and_issue_id(issue_wl)
+      ids << log.first.to_i
+      times << log.last.to_f
+    end
+
+    assert_equal [1, 3], ids.sort
+    assert_equal [1.5, 3], times.sort
+  end
+
+  def test_commit_log_spenttime_multiple_issues_hours_and_minutes_any
+    Setting.commit_ref_keywords = '*'
+    Setting.commit_fix_keywords = 'fixes,closes'
+    Setting.commit_logtime_enabled = 1
+    Setting.commit_logtime_journal_enabled = 1
+    Setting.commit_logtime_activity = 0
+
+    ref_keywords = Setting.commit_ref_keywords.downcase.split(",").collect(&:strip)
+    fix_keywords = Setting.commit_fix_keywords.downcase.split(",").collect(&:strip)
+    kw_regexp = (ref_keywords + fix_keywords).collect{|kw| Regexp.escape(kw)}.join("|")
+
+    c = Changeset.new(:repository => Project.find(1).repository,
+                      :committed_on => Time.now,
+                      :comments => '#1 @1h30m #3 @3h 30m')
+
+    obj = c.find_any_issue_ids_in_comments(c.comments)
+    issue_ids = obj.first
+    log_time = obj.last
+
+    assert_equal [1, 3], issue_ids.sort.collect { |issue| issue.id }
+
+    times = []
+    ids = []
+
+    log_time.uniq.each do |issue_wl|
+      log = c.get_spenttime_and_issue_id(issue_wl)
+      ids << log.first.to_i
+      times << log.last.to_f
+    end
+
+    assert_equal [1, 3], ids.sort
+    assert_equal [1.5, 3.5], times.sort
+  end
+
+  def test_commit_log_spenttime_multiple_issues_mixed_any
+    Setting.commit_ref_keywords = '*'
+    Setting.commit_fix_keywords = 'fixes,closes'
+    Setting.commit_logtime_enabled = 1
+    Setting.commit_logtime_journal_enabled = 1
+    Setting.commit_logtime_activity = 0
+
+    ref_keywords = Setting.commit_ref_keywords.downcase.split(",").collect(&:strip)
+    fix_keywords = Setting.commit_fix_keywords.downcase.split(",").collect(&:strip)
+    kw_regexp = (ref_keywords + fix_keywords).collect{|kw| Regexp.escape(kw)}.join("|")
+
+    c = Changeset.new(:repository => Project.find(1).repository,
+                      :committed_on => Time.now,
+                      :comments => '#1 @1.5h #3 @3h 45m')
+
+    obj = c.find_any_issue_ids_in_comments(c.comments)
+    issue_ids = obj.first
+    log_time = obj.last
+
+    assert_equal [1, 3], issue_ids.sort.collect { |issue| issue.id }
+
+    times = []
+    ids = []
+
+    log_time.uniq.each do |issue_wl|
+      log = c.get_spenttime_and_issue_id(issue_wl)
+      ids << log.first.to_i
+      times << log.last.to_f
+    end
+
+    assert_equal [1, 3], ids.sort
+    assert_equal [1.5, 3.75], times.sort
+  end
+
+  def test_commit_log_spenttime_illegal_input_any
+    Setting.commit_ref_keywords = '*'
+    Setting.commit_fix_keywords = 'fixes,closes'
+    Setting.commit_logtime_enabled = 1
+    Setting.commit_logtime_journal_enabled = 1
+    Setting.commit_logtime_activity = 0
+
+    ref_keywords = Setting.commit_ref_keywords.downcase.split(",").collect(&:strip)
+    fix_keywords = Setting.commit_fix_keywords.downcase.split(",").collect(&:strip)
+    kw_regexp = (ref_keywords + fix_keywords).collect{|kw| Regexp.escape(kw)}.join("|")
+
+    c = Changeset.new(:repository => Project.find(1).repository,
+                      :committed_on => Time.now,
+                      :comments => '1 @1hours 10 minutes refs #3 @3.4m')
+
+    obj = c.find_any_issue_ids_in_comments(c.comments)
+    issue_ids = obj.first
+    log_time = obj.last
+
+    assert_equal [3], issue_ids.sort.collect { |issue| issue.id }
+
+    times = []
+    ids = []
+
+    log_time.uniq.each do |issue_wl|
+      log = c.get_spenttime_and_issue_id(issue_wl)
+      ids << log.first.to_i
+      times << log.last.to_f
+    end
+
+    assert_equal [3], ids.sort
+    assert_equal [0], times.sort
+  end
+  
   def test_previous
     changeset = Changeset.find_by_revision('3')
     assert_equal Changeset.find_by_revision('2'), changeset.previous
@@ -116,7 +492,7 @@
   end
 
   def test_next_nil
-    changeset = Changeset.find_by_revision('10')
+    changeset = Changeset.find_by_revision('12')
     assert_nil changeset.next
   end
   
