##// END OF EJS Templates
Commit messages are now scanned for referenced or fixed issue IDs....
Jean-Philippe Lang -
r470:941a240535ac
parent child
Show More
@@ -0,0 +1,13
1 class CreateChangesetsIssues < ActiveRecord::Migration
2 def self.up
3 create_table :changesets_issues, :id => false do |t|
4 t.column :changeset_id, :integer, :null => false
5 t.column :issue_id, :integer, :null => false
6 end
7 add_index :changesets_issues, [:changeset_id, :issue_id], :unique => true, :name => :changesets_issues_ids
8 end
9
10 def self.down
11 drop_table :changesets_issues
12 end
13 end
@@ -0,0 +1,38
1 ---
2 changesets_001:
3 commit_date: 2007-04-11
4 committed_on: 2007-04-11 15:14:44 +02:00
5 revision: 1
6 id: 100
7 comment: My very first commit
8 repository_id: 10
9 committer: dlopper
10 changesets_002:
11 commit_date: 2007-04-12
12 committed_on: 2007-04-12 15:14:44 +02:00
13 revision: 2
14 id: 101
15 comment: 'This commit fixes #1, #2 and references #3'
16 repository_id: 10
17 committer: dlopper
18 changesets_003:
19 commit_date: 2007-04-12
20 committed_on: 2007-04-12 15:14:44 +02:00
21 revision: 3
22 id: 102
23 comment: |-
24 A commit with wrong issue ids
25 IssueID 666 3
26 repository_id: 10
27 committer: dlopper
28 changesets_004:
29 commit_date: 2007-04-12
30 committed_on: 2007-04-12 15:14:44 +02:00
31 revision: 4
32 id: 103
33 comment: |-
34 A commit with an issue id of an other project
35 IssueID 4 2
36 repository_id: 10
37 committer: dlopper
38 No newline at end of file
@@ -0,0 +1,8
1 ---
2 repositories_001:
3 project_id: 1
4 url: svn://localhost/test
5 id: 10
6 root_url: svn://localhost
7 password: ""
8 login: ""
@@ -0,0 +1,59
1 # redMine - project management software
2 # Copyright (C) 2006-2007 Jean-Philippe Lang
3 #
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
18 require File.dirname(__FILE__) + '/../test_helper'
19
20 class RepositoryTest < Test::Unit::TestCase
21 fixtures :projects, :repositories, :issues, :issue_statuses, :changesets
22
23 def test_create
24 repository = Repository.new(:project => Project.find(2))
25 assert !repository.save
26
27 repository.url = "svn://localhost"
28 assert repository.save
29 repository.reload
30
31 project = Project.find(2)
32 assert_equal repository, project.repository
33 end
34
35 def test_cant_change_url
36 repository = Project.find(1).repository
37 url = repository.url
38 repository.url = "svn://anotherhost"
39 assert_equal url, repository.url
40 end
41
42 def test_scan_changesets_for_issue_ids
43 # choosing a status to apply to fix issues
44 Setting.commit_fix_status_id = IssueStatus.find(:first, :conditions => ["is_closed = ?", true]).id
45
46 # make sure issue 1 is not already closed
47 assert !Issue.find(1).status.is_closed?
48
49 Repository.scan_changesets_for_issue_ids
50 assert_equal [101, 102], Issue.find(3).changeset_ids
51
52 # fixed issues
53 assert Issue.find(1).status.is_closed?
54 assert_equal [101], Issue.find(1).changeset_ids
55
56 # ignoring commits referencing an issue of another project
57 assert_equal [], Issue.find(4).changesets
58 end
59 end
@@ -18,6 +18,7
18 class Changeset < ActiveRecord::Base
18 class Changeset < ActiveRecord::Base
19 belongs_to :repository
19 belongs_to :repository
20 has_many :changes, :dependent => :delete_all
20 has_many :changes, :dependent => :delete_all
21 has_and_belongs_to_many :issues
21
22
22 validates_presence_of :repository_id, :revision, :committed_on, :commit_date
23 validates_presence_of :repository_id, :revision, :committed_on, :commit_date
23 validates_numericality_of :revision, :only_integer => true
24 validates_numericality_of :revision, :only_integer => true
@@ -27,4 +28,41 class Changeset < ActiveRecord::Base
27 self.commit_date = date
28 self.commit_date = date
28 super
29 super
29 end
30 end
31
32 def after_create
33 scan_comment_for_issue_ids
34 end
35
36 def scan_comment_for_issue_ids
37 return if comment.blank?
38 # keywords used to reference issues
39 ref_keywords = Setting.commit_ref_keywords.downcase.split(",")
40 # keywords used to fix issues
41 fix_keywords = Setting.commit_fix_keywords.downcase.split(",")
42 # status applied
43 fix_status = IssueStatus.find_by_id(Setting.commit_fix_status_id)
44
45 kw_regexp = (ref_keywords + fix_keywords).collect{|kw| Regexp.escape(kw.strip)}.join("|")
46 return if kw_regexp.blank?
47
48 # remove any associated issues
49 self.issues.clear
50
51 comment.scan(Regexp.new("(#{kw_regexp})[\s:]+(([\s,;&]*#?\\d+)+)", Regexp::IGNORECASE)).each do |match|
52 action = match[0]
53 target_issue_ids = match[1].scan(/\d+/)
54 target_issues = repository.project.issues.find_all_by_id(target_issue_ids)
55 if fix_status && fix_keywords.include?(action.downcase)
56 # update status of issues
57 logger.debug "Issues fixed by changeset #{self.revision}: #{issue_ids.join(', ')}." if logger && logger.debug?
58 target_issues.each do |issue|
59 # don't change the status is the issue is already closed
60 next if issue.status.is_closed?
61 issue.status = fix_status
62 issue.save
63 end
64 end
65 self.issues << target_issues
66 end
67 end
30 end
68 end
@@ -31,7 +31,8 class Issue < ActiveRecord::Base
31 has_many :time_entries
31 has_many :time_entries
32 has_many :custom_values, :dependent => :delete_all, :as => :customized
32 has_many :custom_values, :dependent => :delete_all, :as => :customized
33 has_many :custom_fields, :through => :custom_values
33 has_many :custom_fields, :through => :custom_values
34
34 has_and_belongs_to_many :changesets, :order => "revision ASC"
35
35 acts_as_watchable
36 acts_as_watchable
36
37
37 validates_presence_of :subject, :description, :priority, :tracker, :author, :status
38 validates_presence_of :subject, :description, :priority, :tracker, :author, :status
@@ -79,10 +79,19 class Repository < ActiveRecord::Base
79 end
79 end
80 end
80 end
81
81
82 def scan_changesets_for_issue_ids
83 self.changesets.each(&:scan_comment_for_issue_ids)
84 end
85
82 # fetch new changesets for all repositories
86 # fetch new changesets for all repositories
83 # can be called periodically by an external script
87 # can be called periodically by an external script
84 # eg. ruby script/runner "Repository.fetch_changesets"
88 # eg. ruby script/runner "Repository.fetch_changesets"
85 def self.fetch_changesets
89 def self.fetch_changesets
86 find(:all).each(&:fetch_changesets)
90 find(:all).each(&:fetch_changesets)
87 end
91 end
92
93 # scan changeset comments to find related and fixed issues for all repositories
94 def self.scan_changesets_for_issue_ids
95 find(:all).each(&:scan_changesets_for_issue_ids)
96 end
88 end
97 end
@@ -44,7 +44,12 end %>
44 </tr>
44 </tr>
45 </table>
45 </table>
46 <hr />
46 <hr />
47 <br />
47
48 <% if @issue.changesets.any? %>
49 <div style="float:right;">
50 <em><%= l(:label_revision_plural) %>: <%= @issue.changesets.collect{|changeset| link_to(changeset.revision, :controller => 'repositories', :action => 'revision', :id => @project, :rev => changeset.revision)}.join(", ") %></em>
51 </div>
52 <% end %>
48
53
49 <b><%=l(:field_description)%> :</b><br /><br />
54 <b><%=l(:field_description)%> :</b><br /><br />
50 <%= textilizable @issue.description %>
55 <%= textilizable @issue.description %>
@@ -10,6 +10,15
10 <p><em><%= @changeset.committer %>, <%= format_time(@changeset.committed_on) %></em></p>
10 <p><em><%= @changeset.committer %>, <%= format_time(@changeset.committed_on) %></em></p>
11 <%= textilizable @changeset.comment %>
11 <%= textilizable @changeset.comment %>
12
12
13 <% if @changeset.issues.any? %>
14 <h3><%= l(:label_related_issues) %></h3>
15 <ul>
16 <% @changeset.issues.each do |issue| %>
17 <li><%= link_to_issue issue %>: <%=h issue.subject %></li>
18 <% end %>
19 </ul>
20 <% end %>
21
13 <div style="float:right;">
22 <div style="float:right;">
14 <div class="square action_A"></div> <div style="float:left;"><%= l(:label_added) %>&nbsp;</div>
23 <div class="square action_A"></div> <div style="float:left;"><%= l(:label_added) %>&nbsp;</div>
15 <div class="square action_M"></div> <div style="float:left;"><%= l(:label_modified) %>&nbsp;</div>
24 <div class="square action_M"></div> <div style="float:left;"><%= l(:label_modified) %>&nbsp;</div>
@@ -50,8 +50,18
50
50
51 <p><label><%= l(:setting_sys_api_enabled) %></label>
51 <p><label><%= l(:setting_sys_api_enabled) %></label>
52 <%= check_box_tag 'settings[sys_api_enabled]', 1, Setting.sys_api_enabled? %><%= hidden_field_tag 'settings[sys_api_enabled]', 0 %></p>
52 <%= check_box_tag 'settings[sys_api_enabled]', 1, Setting.sys_api_enabled? %><%= hidden_field_tag 'settings[sys_api_enabled]', 0 %></p>
53
54 </div>
53 </div>
54
55 <fieldset class="box"><legend><%= l(:text_issues_ref_in_commit_messages) %></legend>
56 <p><label><%= l(:setting_commit_ref_keywords) %></label>
57 <%= text_field_tag 'settings[commit_ref_keywords]', Setting.commit_ref_keywords, :size => 30 %><br /><em><%= l(:text_coma_separated) %></em></p>
58
59 <p><label><%= l(:setting_commit_fix_keywords) %></label>
60 <%= text_field_tag 'settings[commit_fix_keywords]', Setting.commit_fix_keywords, :size => 30 %>
61 &nbsp;<%= l(:label_applied_status) %>: <%= select_tag 'settings[commit_fix_status_id]', options_for_select( [["", 0]] + IssueStatus.find(:all).collect{|status| [status.name, status.id.to_s]}, Setting.commit_fix_status_id) %>
62 <br /><em><%= l(:text_coma_separated) %></em></p>
63 </fieldset>
64
55 <%= submit_tag l(:button_save) %>
65 <%= submit_tag l(:button_save) %>
56 </div>
66 </div>
57 <% end %> No newline at end of file
67 <% end %>
@@ -54,3 +54,11 autofetch_changesets:
54 default: 1
54 default: 1
55 sys_api_enabled:
55 sys_api_enabled:
56 default: 0
56 default: 0
57 commit_ref_keywords:
58 default: 'refs,references,IssueID'
59 commit_fix_keywords:
60 default: 'fixes,closes'
61 commit_fix_status_id:
62 format: int
63 default: 0
64 No newline at end of file
@@ -164,6 +164,8 setting_wiki_compression: Wiki-Historie komprimieren
164 setting_feeds_limit: Limit Feed Inhalt
164 setting_feeds_limit: Limit Feed Inhalt
165 setting_autofetch_changesets: Autofetch SVN commits
165 setting_autofetch_changesets: Autofetch SVN commits
166 setting_sys_api_enabled: Enable WS for repository management
166 setting_sys_api_enabled: Enable WS for repository management
167 setting_commit_ref_keywords: Referencing keywords
168 setting_commit_fix_keywords: Fixing keywords
167
169
168 label_user: Benutzer
170 label_user: Benutzer
169 label_user_plural: Benutzer
171 label_user_plural: Benutzer
@@ -358,6 +360,8 label_options: Options
358 label_copy_workflow_from: Copy workflow from
360 label_copy_workflow_from: Copy workflow from
359 label_permissions_report: Permissions report
361 label_permissions_report: Permissions report
360 label_watched_issues: Watched issues
362 label_watched_issues: Watched issues
363 label_related_issues: Related issues
364 label_applied_status: Applied status
361
365
362 button_login: Einloggen
366 button_login: Einloggen
363 button_submit: OK
367 button_submit: OK
@@ -408,6 +412,8 text_caracters_maximum: %d characters maximum.
408 text_length_between: Length between %d and %d characters.
412 text_length_between: Length between %d and %d characters.
409 text_tracker_no_workflow: No workflow defined for this tracker
413 text_tracker_no_workflow: No workflow defined for this tracker
410 text_unallowed_characters: Unallowed characters
414 text_unallowed_characters: Unallowed characters
415 text_coma_separated: Multiple values allowed (coma separated).
416 text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
411
417
412 default_role_manager: Manager
418 default_role_manager: Manager
413 default_role_developper: Developer
419 default_role_developper: Developer
@@ -164,6 +164,8 setting_wiki_compression: Wiki history compression
164 setting_feeds_limit: Feed content limit
164 setting_feeds_limit: Feed content limit
165 setting_autofetch_changesets: Autofetch SVN commits
165 setting_autofetch_changesets: Autofetch SVN commits
166 setting_sys_api_enabled: Enable WS for repository management
166 setting_sys_api_enabled: Enable WS for repository management
167 setting_commit_ref_keywords: Referencing keywords
168 setting_commit_fix_keywords: Fixing keywords
167
169
168 label_user: User
170 label_user: User
169 label_user_plural: Users
171 label_user_plural: Users
@@ -358,6 +360,8 label_options: Options
358 label_copy_workflow_from: Copy workflow from
360 label_copy_workflow_from: Copy workflow from
359 label_permissions_report: Permissions report
361 label_permissions_report: Permissions report
360 label_watched_issues: Watched issues
362 label_watched_issues: Watched issues
363 label_related_issues: Related issues
364 label_applied_status: Applied status
361
365
362 button_login: Login
366 button_login: Login
363 button_submit: Submit
367 button_submit: Submit
@@ -408,6 +412,8 text_caracters_maximum: %d characters maximum.
408 text_length_between: Length between %d and %d characters.
412 text_length_between: Length between %d and %d characters.
409 text_tracker_no_workflow: No workflow defined for this tracker
413 text_tracker_no_workflow: No workflow defined for this tracker
410 text_unallowed_characters: Unallowed characters
414 text_unallowed_characters: Unallowed characters
415 text_coma_separated: Multiple values allowed (coma separated).
416 text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
411
417
412 default_role_manager: Manager
418 default_role_manager: Manager
413 default_role_developper: Developer
419 default_role_developper: Developer
@@ -164,6 +164,8 setting_wiki_compression: Compresión de la historia de Wiki
164 setting_feeds_limit: Feed content limit
164 setting_feeds_limit: Feed content limit
165 setting_autofetch_changesets: Autofetch SVN commits
165 setting_autofetch_changesets: Autofetch SVN commits
166 setting_sys_api_enabled: Enable WS for repository management
166 setting_sys_api_enabled: Enable WS for repository management
167 setting_commit_ref_keywords: Referencing keywords
168 setting_commit_fix_keywords: Fixing keywords
167
169
168 label_user: Usuario
170 label_user: Usuario
169 label_user_plural: Usuarios
171 label_user_plural: Usuarios
@@ -358,6 +360,8 label_options: Options
358 label_copy_workflow_from: Copy workflow from
360 label_copy_workflow_from: Copy workflow from
359 label_permissions_report: Permissions report
361 label_permissions_report: Permissions report
360 label_watched_issues: Watched issues
362 label_watched_issues: Watched issues
363 label_related_issues: Related issues
364 label_applied_status: Applied status
361
365
362 button_login: Conexión
366 button_login: Conexión
363 button_submit: Someter
367 button_submit: Someter
@@ -408,6 +412,8 text_caracters_maximum: %d characters maximum.
408 text_length_between: Length between %d and %d characters.
412 text_length_between: Length between %d and %d characters.
409 text_tracker_no_workflow: No workflow defined for this tracker
413 text_tracker_no_workflow: No workflow defined for this tracker
410 text_unallowed_characters: Unallowed characters
414 text_unallowed_characters: Unallowed characters
415 text_coma_separated: Multiple values allowed (coma separated).
416 text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
411
417
412 default_role_manager: Manager
418 default_role_manager: Manager
413 default_role_developper: Desarrollador
419 default_role_developper: Desarrollador
@@ -164,6 +164,8 setting_wiki_compression: Compression historique wiki
164 setting_feeds_limit: Limite du contenu des flux RSS
164 setting_feeds_limit: Limite du contenu des flux RSS
165 setting_autofetch_changesets: Récupération auto. des commits SVN
165 setting_autofetch_changesets: Récupération auto. des commits SVN
166 setting_sys_api_enabled: Activer les WS pour la gestion des dépôts
166 setting_sys_api_enabled: Activer les WS pour la gestion des dépôts
167 setting_commit_ref_keywords: Mot-clés de référencement
168 setting_commit_fix_keywords: Mot-clés de résolution
167
169
168 label_user: Utilisateur
170 label_user: Utilisateur
169 label_user_plural: Utilisateurs
171 label_user_plural: Utilisateurs
@@ -358,6 +360,8 label_options: Options
358 label_copy_workflow_from: Copier le workflow de
360 label_copy_workflow_from: Copier le workflow de
359 label_permissions_report: Synthèse des permissions
361 label_permissions_report: Synthèse des permissions
360 label_watched_issues: Demandes surveillées
362 label_watched_issues: Demandes surveillées
363 label_related_issues: Demandes liées
364 label_applied_status: Statut appliqué
361
365
362 button_login: Connexion
366 button_login: Connexion
363 button_submit: Soumettre
367 button_submit: Soumettre
@@ -408,6 +412,8 text_caracters_maximum: %d caractères maximum.
408 text_length_between: Longueur comprise entre %d et %d caractères.
412 text_length_between: Longueur comprise entre %d et %d caractères.
409 text_tracker_no_workflow: Aucun worflow n'est défini pour ce tracker
413 text_tracker_no_workflow: Aucun worflow n'est défini pour ce tracker
410 text_unallowed_characters: Caractères non autorisés
414 text_unallowed_characters: Caractères non autorisés
415 text_coma_separated: Plusieurs valeurs possibles (séparées par des virgules).
416 text_issues_ref_in_commit_messages: Référencement et résolution des demandes dans les commentaires SVN
411
417
412 default_role_manager: Manager
418 default_role_manager: Manager
413 default_role_developper: Développeur
419 default_role_developper: Développeur
@@ -164,6 +164,8 setting_wiki_compression: Compressione di storia di Wiki
164 setting_feeds_limit: Limite contenuti del feed
164 setting_feeds_limit: Limite contenuti del feed
165 setting_autofetch_changesets: Acquisisci automaticamente le commit SVN
165 setting_autofetch_changesets: Acquisisci automaticamente le commit SVN
166 setting_sys_api_enabled: Abilita WS per la gestione del repository
166 setting_sys_api_enabled: Abilita WS per la gestione del repository
167 setting_commit_ref_keywords: Referencing keywords
168 setting_commit_fix_keywords: Fixing keywords
167
169
168 label_user: Utente
170 label_user: Utente
169 label_user_plural: Utenti
171 label_user_plural: Utenti
@@ -358,6 +360,8 label_options: Opzioni
358 label_copy_workflow_from: Copia workflow da
360 label_copy_workflow_from: Copia workflow da
359 label_permissions_report: Report permessi
361 label_permissions_report: Report permessi
360 label_watched_issues: Watched issues
362 label_watched_issues: Watched issues
363 label_related_issues: Related issues
364 label_applied_status: Applied status
361
365
362 button_login: Login
366 button_login: Login
363 button_submit: Invia
367 button_submit: Invia
@@ -408,6 +412,8 text_caracters_maximum: massimo %d caratteri.
408 text_length_between: Lunghezza compresa tra %d e %d caratteri.
412 text_length_between: Lunghezza compresa tra %d e %d caratteri.
409 text_tracker_no_workflow: Nessun workflow definito per questo tracker
413 text_tracker_no_workflow: Nessun workflow definito per questo tracker
410 text_unallowed_characters: Unallowed characters
414 text_unallowed_characters: Unallowed characters
415 text_coma_separated: Multiple values allowed (coma separated).
416 text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
411
417
412 default_role_manager: Manager
418 default_role_manager: Manager
413 default_role_developper: Sviluppatore
419 default_role_developper: Sviluppatore
@@ -165,6 +165,8 setting_wiki_compression: Wiki履歴を圧縮する
165 setting_feeds_limit: フィード内容の上限
165 setting_feeds_limit: フィード内容の上限
166 setting_autofetch_changesets: SVNコミットを自動取得する
166 setting_autofetch_changesets: SVNコミットを自動取得する
167 setting_sys_api_enabled: リポジトリ管理用のWeb Serviceを有効化する
167 setting_sys_api_enabled: リポジトリ管理用のWeb Serviceを有効化する
168 setting_commit_ref_keywords: Referencing keywords
169 setting_commit_fix_keywords: Fixing keywords
168
170
169 label_user: ユーザ
171 label_user: ユーザ
170 label_user_plural: ユーザ
172 label_user_plural: ユーザ
@@ -359,6 +361,8 label_options: オプション
359 label_copy_workflow_from: ワークフローをここからコピー
361 label_copy_workflow_from: ワークフローをここからコピー
360 label_permissions_report: 権限レポート
362 label_permissions_report: 権限レポート
361 label_watched_issues: Watched issues
363 label_watched_issues: Watched issues
364 label_related_issues: Related issues
365 label_applied_status: Applied status
362
366
363 button_login: ログイン
367 button_login: ログイン
364 button_submit: 変更
368 button_submit: 変更
@@ -409,6 +413,8 text_caracters_maximum: 最大 %d 文字です。
409 text_length_between: 長さは %d から %d 文字までです。
413 text_length_between: 長さは %d から %d 文字までです。
410 text_tracker_no_workflow: このトラッカーにワークフローが定義されていません
414 text_tracker_no_workflow: このトラッカーにワークフローが定義されていません
411 text_unallowed_characters: Unallowed characters
415 text_unallowed_characters: Unallowed characters
416 text_coma_separated: Multiple values allowed (coma separated).
417 text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
412
418
413 default_role_manager: 管理者
419 default_role_manager: 管理者
414 default_role_developper: 開発者
420 default_role_developper: 開発者
@@ -164,6 +164,8 setting_wiki_compression: Compactacao do historio do Wiki
164 setting_feeds_limit: Limite do Feed
164 setting_feeds_limit: Limite do Feed
165 setting_autofetch_changesets: Autofetch SVN commits
165 setting_autofetch_changesets: Autofetch SVN commits
166 setting_sys_api_enabled: Ativa WS para gerenciamento do repositorio
166 setting_sys_api_enabled: Ativa WS para gerenciamento do repositorio
167 setting_commit_ref_keywords: Referencing keywords
168 setting_commit_fix_keywords: Fixing keywords
167
169
168 label_user: Usuario
170 label_user: Usuario
169 label_user_plural: Usuarios
171 label_user_plural: Usuarios
@@ -358,6 +360,8 label_options: Opcoes
358 label_copy_workflow_from: Copiar workflow de
360 label_copy_workflow_from: Copiar workflow de
359 label_permissions_report: Relatorio de permissoes
361 label_permissions_report: Relatorio de permissoes
360 label_watched_issues: Watched issues
362 label_watched_issues: Watched issues
363 label_related_issues: Related issues
364 label_applied_status: Applied status
361
365
362 button_login: Login
366 button_login: Login
363 button_submit: Enviar
367 button_submit: Enviar
@@ -408,6 +412,8 text_caracters_maximum: %d maximo de caracteres
408 text_length_between: Tamanho entre %d e %d caracteres.
412 text_length_between: Tamanho entre %d e %d caracteres.
409 text_tracker_no_workflow: Sem workflow definido para este tipo.
413 text_tracker_no_workflow: Sem workflow definido para este tipo.
410 text_unallowed_characters: Unallowed characters
414 text_unallowed_characters: Unallowed characters
415 text_coma_separated: Multiple values allowed (coma separated).
416 text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
411
417
412 default_role_manager: Analista de Negocio ou Gerente de Projeto
418 default_role_manager: Analista de Negocio ou Gerente de Projeto
413 default_role_developper: Desenvolvedor
419 default_role_developper: Desenvolvedor
@@ -167,6 +167,8 setting_wiki_compression: Wiki history compression
167 setting_feeds_limit: Feed content limit
167 setting_feeds_limit: Feed content limit
168 setting_autofetch_changesets: Autofetch SVN commits
168 setting_autofetch_changesets: Autofetch SVN commits
169 setting_sys_api_enabled: Enable WS for repository management
169 setting_sys_api_enabled: Enable WS for repository management
170 setting_commit_ref_keywords: Referencing keywords
171 setting_commit_fix_keywords: Fixing keywords
170
172
171 label_user: 用户
173 label_user: 用户
172 label_user_plural: 用户列表
174 label_user_plural: 用户列表
@@ -361,6 +363,8 label_options: Options
361 label_copy_workflow_from: Copy workflow from
363 label_copy_workflow_from: Copy workflow from
362 label_permissions_report: Permissions report
364 label_permissions_report: Permissions report
363 label_watched_issues: Watched issues
365 label_watched_issues: Watched issues
366 label_related_issues: Related issues
367 label_applied_status: Applied status
364
368
365 button_login: 登录
369 button_login: 登录
366 button_submit: 提交
370 button_submit: 提交
@@ -411,6 +415,8 text_caracters_maximum: %d characters maximum.
411 text_length_between: Length between %d and %d characters.
415 text_length_between: Length between %d and %d characters.
412 text_tracker_no_workflow: No workflow defined for this tracker
416 text_tracker_no_workflow: No workflow defined for this tracker
413 text_unallowed_characters: Unallowed characters
417 text_unallowed_characters: Unallowed characters
418 text_coma_separated: Multiple values allowed (coma separated).
419 text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
414
420
415 default_role_manager: 管理员
421 default_role_manager: 管理员
416 default_role_developper: 开发人员
422 default_role_developper: 开发人员
@@ -602,8 +602,8 margin*/
602 color: #cc0000;
602 color: #cc0000;
603 }
603 }
604
604
605 #settings .tabular p{ padding-left: 250px; }
605 #settings .tabular p{ padding-left: 300px; }
606 #settings .tabular label{ margin-left: -250px; width: 245px; }
606 #settings .tabular label{ margin-left: -300px; width: 295px; }
607
607
608 /*.threepxfix class below:
608 /*.threepxfix class below:
609 Targets IE6- ONLY. Adds 3 pixel indent for multi-line form contents.
609 Targets IE6- ONLY. Adds 3 pixel indent for multi-line form contents.
@@ -41,3 +41,18 issues_003:
41 assigned_to_id:
41 assigned_to_id:
42 author_id: 2
42 author_id: 2
43 status_id: 1
43 status_id: 1
44 issues_004:
45 created_on: 2006-07-19 21:07:27 +02:00
46 project_id: 2
47 updated_on: 2006-07-19 21:07:27 +02:00
48 priority_id: 4
49 subject: Issue on project 2
50 id: 4
51 fixed_version_id:
52 category_id:
53 description: Issue on project 2
54 tracker_id: 1
55 assigned_to_id:
56 author_id: 2
57 status_id: 1
58 No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now