@@ -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) %> </div> |
|
23 | <div class="square action_A"></div> <div style="float:left;"><%= l(:label_added) %> </div> | |
15 | <div class="square action_M"></div> <div style="float:left;"><%= l(:label_modified) %> </div> |
|
24 | <div class="square action_M"></div> <div style="float:left;"><%= l(:label_modified) %> </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 | <%= 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: |
|
605 | #settings .tabular p{ padding-left: 300px; } | |
606 |
#settings .tabular label{ margin-left: - |
|
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