diff -r 8972b600f4fb -r 051f544170fe app/views/time_entry_reports/.svn/entries
--- a/app/views/time_entry_reports/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/app/views/time_entry_reports/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/app/views/time_entry_reports
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe app/views/timelog/.svn/entries
--- a/app/views/timelog/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/app/views/timelog/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/app/views/timelog
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe app/views/trackers/.svn/entries
--- a/app/views/trackers/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/app/views/trackers/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/app/views/trackers
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe app/views/users/.svn/all-wcprops
--- a/app/views/users/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/app/views/users/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 40
-/svn/!svn/ver/4729/trunk/app/views/users
+/svn/!svn/ver/4900/trunk/app/views/users
END
_general.rhtml
K 25
@@ -55,7 +55,7 @@
K 25
svn:wc:ra_dav:version-url
V 62
-/svn/!svn/ver/4223/trunk/app/views/users/_preferences.html.erb
+/svn/!svn/ver/4900/trunk/app/views/users/_preferences.html.erb
END
edit.rhtml
K 25
diff -r 8972b600f4fb -r 051f544170fe app/views/users/.svn/entries
--- a/app/views/users/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/app/views/users/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/app/views/users
http://redmine.rubyforge.org/svn
-2011-01-16T15:23:11.666065Z
-4729
+2011-02-21T09:53:29.844413Z
+4900
jplang
@@ -304,11 +304,11 @@
-2011-03-03T11:05:22.000000Z
-ebc1d625f2d6809ea491e7303f758e7a
-2010-09-28T22:13:06.534232Z
-4223
-edavis10
+2011-03-03T11:40:18.000000Z
+819ceb2599cdb65121387da777ec7454
+2011-02-21T09:53:29.844413Z
+4900
+jplang
@@ -330,7 +330,7 @@
-441
+502
edit.rhtml
file
diff -r 8972b600f4fb -r 051f544170fe app/views/users/.svn/text-base/_preferences.html.erb.svn-base
--- a/app/views/users/.svn/text-base/_preferences.html.erb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/app/views/users/.svn/text-base/_preferences.html.erb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -2,5 +2,6 @@
<%= pref_fields.check_box :hide_mail %>
<%= pref_fields.select :time_zone, ActiveSupport::TimeZone.all.collect {|z| [ z.to_s, z.name ]}, :include_blank => true %>
<%= pref_fields.select :comments_sorting, [[l(:label_chronological_order), 'asc'], [l(:label_reverse_chronological_order), 'desc']] %>
+
<%= pref_fields.check_box :warn_on_leaving_unsaved %>
<% end %>
diff -r 8972b600f4fb -r 051f544170fe app/views/users/_preferences.html.erb
--- a/app/views/users/_preferences.html.erb Thu Mar 03 11:40:10 2011 +0000
+++ b/app/views/users/_preferences.html.erb Thu Mar 03 11:42:28 2011 +0000
@@ -2,5 +2,6 @@
<%= pref_fields.check_box :hide_mail %>
<%= pref_fields.select :time_zone, ActiveSupport::TimeZone.all.collect {|z| [ z.to_s, z.name ]}, :include_blank => true %>
<%= pref_fields.select :comments_sorting, [[l(:label_chronological_order), 'asc'], [l(:label_reverse_chronological_order), 'desc']] %>
+
<%= pref_fields.check_box :warn_on_leaving_unsaved %>
<% end %>
diff -r 8972b600f4fb -r 051f544170fe app/views/versions/.svn/entries
--- a/app/views/versions/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/app/views/versions/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/app/views/versions
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe app/views/watchers/.svn/entries
--- a/app/views/watchers/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/app/views/watchers/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/app/views/watchers
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe app/views/welcome/.svn/entries
--- a/app/views/welcome/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/app/views/welcome/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/app/views/welcome
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe app/views/wiki/.svn/all-wcprops
--- a/app/views/wiki/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/app/views/wiki/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 39
-/svn/!svn/ver/4740/trunk/app/views/wiki
+/svn/!svn/ver/4953/trunk/app/views/wiki
END
export_multiple.rhtml
K 25
@@ -55,7 +55,7 @@
K 25
svn:wc:ra_dav:version-url
V 50
-/svn/!svn/ver/4551/trunk/app/views/wiki/diff.rhtml
+/svn/!svn/ver/4953/trunk/app/views/wiki/diff.rhtml
END
_content.rhtml
K 25
diff -r 8972b600f4fb -r 051f544170fe app/views/wiki/.svn/entries
--- a/app/views/wiki/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/app/views/wiki/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/app/views/wiki
http://redmine.rubyforge.org/svn
-2011-01-22T13:21:24.424880Z
-4740
+2011-02-27T12:50:47.369941Z
+4953
jplang
@@ -304,10 +304,10 @@
-2011-03-03T11:05:22.000000Z
-da40592a7819a8786e7e436b2ecff8b1
-2010-12-20T22:33:44.015948Z
-4551
+2011-03-03T11:40:18.000000Z
+954230b09809d40bbd6f6514fb1fcc59
+2011-02-27T12:50:47.369941Z
+4953
jplang
has-props
@@ -330,7 +330,7 @@
-879
+931
_content.rhtml
file
diff -r 8972b600f4fb -r 051f544170fe app/views/wiki/.svn/text-base/diff.rhtml.svn-base
--- a/app/views/wiki/.svn/text-base/diff.rhtml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/app/views/wiki/.svn/text-base/diff.rhtml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -12,6 +12,6 @@
(<%= @diff.content_to.author ? @diff.content_to.author.name : "anonyme" %>, <%= format_time(@diff.content_to.updated_on) %>)
-
-
-<%= html_diff(@diff) %>
+
+<%= simple_format_without_paragraph @diff.to_html %>
+
diff -r 8972b600f4fb -r 051f544170fe app/views/wiki/diff.rhtml
--- a/app/views/wiki/diff.rhtml Thu Mar 03 11:40:10 2011 +0000
+++ b/app/views/wiki/diff.rhtml Thu Mar 03 11:42:28 2011 +0000
@@ -12,6 +12,6 @@
(<%= @diff.content_to.author ? @diff.content_to.author.name : "anonyme" %>, <%= format_time(@diff.content_to.updated_on) %>)
-
-
-<%= html_diff(@diff) %>
+
+<%= simple_format_without_paragraph @diff.to_html %>
+
diff -r 8972b600f4fb -r 051f544170fe app/views/wikis/.svn/entries
--- a/app/views/wikis/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/app/views/wikis/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/app/views/wikis
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe app/views/workflows/.svn/all-wcprops
--- a/app/views/workflows/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/app/views/workflows/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 44
-/svn/!svn/ver/4428/trunk/app/views/workflows
+/svn/!svn/ver/4895/trunk/app/views/workflows
END
copy.rhtml
K 25
@@ -19,11 +19,17 @@
K 25
svn:wc:ra_dav:version-url
V 55
-/svn/!svn/ver/3694/trunk/app/views/workflows/edit.rhtml
+/svn/!svn/ver/4895/trunk/app/views/workflows/edit.rhtml
END
index.rhtml
K 25
svn:wc:ra_dav:version-url
V 56
-/svn/!svn/ver/4428/trunk/app/views/workflows/index.rhtml
+/svn/!svn/ver/4890/trunk/app/views/workflows/index.rhtml
END
+_form.html.erb
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/!svn/ver/4895/trunk/app/views/workflows/_form.html.erb
+END
diff -r 8972b600f4fb -r 051f544170fe app/views/workflows/.svn/entries
--- a/app/views/workflows/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/app/views/workflows/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/app/views/workflows
http://redmine.rubyforge.org/svn
-2010-11-27T09:54:16.602477Z
-4428
+2011-02-20T15:38:07.840581Z
+4895
jplang
@@ -100,10 +100,10 @@
-2011-03-03T11:05:22.000000Z
-ee551cfe66cd8df0fbd5bc7bac081200
-2010-04-27T17:54:27.767853Z
-3694
+2011-03-03T11:40:18.000000Z
+f52bc187d855a23aea0bc36061a8d179
+2011-02-20T15:38:07.840581Z
+4895
jplang
has-props
@@ -126,7 +126,7 @@
-2474
+2211
index.rhtml
file
@@ -134,10 +134,10 @@
-2011-03-03T11:05:22.000000Z
-40709e258d1a829cf73046d8e1b5d7f3
-2010-11-27T09:54:16.602477Z
-4428
+2011-03-03T11:40:18.000000Z
+0943677a780ac0d9c0ba1a7000148f13
+2011-02-20T13:13:10.623157Z
+4890
jplang
has-props
@@ -162,3 +162,37 @@
851
+_form.html.erb
+file
+
+
+
+
+2011-03-03T11:40:18.000000Z
+a2442c53d709a008d9026746d5f3cfd3
+2011-02-20T15:38:07.840581Z
+4895
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1673
+
diff -r 8972b600f4fb -r 051f544170fe app/views/workflows/.svn/prop-base/_form.html.erb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/workflows/.svn/prop-base/_form.html.erb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:eol-style
+V 6
+native
+END
diff -r 8972b600f4fb -r 051f544170fe app/views/workflows/.svn/text-base/_form.html.erb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/workflows/.svn/text-base/_form.html.erb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,40 @@
+
+
+
+
+ <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('table.transitions-#{name} input')",
+ :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %>
+ <%=l(:label_current_status)%>
+ |
+ <%=l(:label_new_statuses_allowed)%> |
+
+
+ |
+ <% for new_status in @statuses %>
+
+ <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('table.transitions-#{name} input.new-status-#{new_status.id}')",
+ :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %>
+ <%=h new_status.name %>
+ |
+ <% end %>
+
+
+
+ <% for old_status in @statuses %>
+ ">
+
+ <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('table.transitions-#{name} input.old-status-#{old_status.id}')",
+ :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %>
+
+ <%=h old_status.name %>
+ |
+ <% for new_status in @statuses -%>
+
+ <%= check_box_tag "issue_status[#{ old_status.id }][#{new_status.id}][]", name, workflows.detect {|w| w.old_status_id == old_status.id && w.new_status_id == new_status.id},
+ :class => "old-status-#{old_status.id} new-status-#{new_status.id}" %>
+ |
+ <% end -%>
+
+ <% end %>
+
+
\ No newline at end of file
diff -r 8972b600f4fb -r 051f544170fe app/views/workflows/.svn/text-base/edit.rhtml.svn-base
--- a/app/views/workflows/.svn/text-base/edit.rhtml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/app/views/workflows/.svn/text-base/edit.rhtml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -20,54 +20,31 @@
<% end %>
-
<% if @tracker && @role && @statuses.any? %>
-<% form_tag({}, :id => 'workflow_form' ) do %>
-<%= hidden_field_tag 'tracker_id', @tracker.id %>
-<%= hidden_field_tag 'role_id', @role.id %>
-
-
<%= check_all_links 'workflow_form' %>
-
-<%= submit_tag l(:button_save) %>
-<% end %>
+ <% form_tag({}, :id => 'workflow_form' ) do %>
+ <%= hidden_field_tag 'tracker_id', @tracker.id %>
+ <%= hidden_field_tag 'role_id', @role.id %>
+
+ <%= submit_tag l(:button_save) %>
+ <% end %>
<% end %>
<% html_title(l(:label_workflow)) -%>
diff -r 8972b600f4fb -r 051f544170fe app/views/workflows/.svn/text-base/index.rhtml.svn-base
--- a/app/views/workflows/.svn/text-base/index.rhtml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/app/views/workflows/.svn/text-base/index.rhtml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -24,7 +24,7 @@
<%= h tracker %> |
<% roles.each do |role, count| -%>
- <%= link_to((count > 1 ? count : image_tag('false.png')), {:action => 'edit', :role_id => role, :tracker_id => tracker}, :title => l(:button_edit)) %>
+ <%= link_to((count > 0 ? count : image_tag('false.png')), {:action => 'edit', :role_id => role, :tracker_id => tracker}, :title => l(:button_edit)) %>
|
<% end -%>
diff -r 8972b600f4fb -r 051f544170fe app/views/workflows/_form.html.erb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/workflows/_form.html.erb Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,40 @@
+
+
+
+
+ <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('table.transitions-#{name} input')",
+ :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %>
+ <%=l(:label_current_status)%>
+ |
+ <%=l(:label_new_statuses_allowed)%> |
+
+
+ |
+ <% for new_status in @statuses %>
+
+ <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('table.transitions-#{name} input.new-status-#{new_status.id}')",
+ :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %>
+ <%=h new_status.name %>
+ |
+ <% end %>
+
+
+
+ <% for old_status in @statuses %>
+ ">
+
+ <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('table.transitions-#{name} input.old-status-#{old_status.id}')",
+ :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %>
+
+ <%=h old_status.name %>
+ |
+ <% for new_status in @statuses -%>
+
+ <%= check_box_tag "issue_status[#{ old_status.id }][#{new_status.id}][]", name, workflows.detect {|w| w.old_status_id == old_status.id && w.new_status_id == new_status.id},
+ :class => "old-status-#{old_status.id} new-status-#{new_status.id}" %>
+ |
+ <% end -%>
+
+ <% end %>
+
+
\ No newline at end of file
diff -r 8972b600f4fb -r 051f544170fe app/views/workflows/edit.rhtml
--- a/app/views/workflows/edit.rhtml Thu Mar 03 11:40:10 2011 +0000
+++ b/app/views/workflows/edit.rhtml Thu Mar 03 11:42:28 2011 +0000
@@ -20,54 +20,31 @@
<% end %>
-
<% if @tracker && @role && @statuses.any? %>
-<% form_tag({}, :id => 'workflow_form' ) do %>
-<%= hidden_field_tag 'tracker_id', @tracker.id %>
-<%= hidden_field_tag 'role_id', @role.id %>
-
-
<%= check_all_links 'workflow_form' %>
-
-<%= submit_tag l(:button_save) %>
-<% end %>
+ <% form_tag({}, :id => 'workflow_form' ) do %>
+ <%= hidden_field_tag 'tracker_id', @tracker.id %>
+ <%= hidden_field_tag 'role_id', @role.id %>
+
+ <%= submit_tag l(:button_save) %>
+ <% end %>
<% end %>
<% html_title(l(:label_workflow)) -%>
diff -r 8972b600f4fb -r 051f544170fe app/views/workflows/index.rhtml
--- a/app/views/workflows/index.rhtml Thu Mar 03 11:40:10 2011 +0000
+++ b/app/views/workflows/index.rhtml Thu Mar 03 11:42:28 2011 +0000
@@ -24,7 +24,7 @@
<%= h tracker %> |
<% roles.each do |role, count| -%>
- <%= link_to((count > 1 ? count : image_tag('false.png')), {:action => 'edit', :role_id => role, :tracker_id => tracker}, :title => l(:button_edit)) %>
+ <%= link_to((count > 0 ? count : image_tag('false.png')), {:action => 'edit', :role_id => role, :tracker_id => tracker}, :title => l(:button_edit)) %>
|
<% end -%>
diff -r 8972b600f4fb -r 051f544170fe config/.svn/all-wcprops
--- a/config/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/config/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 31
-/svn/!svn/ver/4799/trunk/config
+/svn/!svn/ver/4955/trunk/config
END
settings.yml
K 25
@@ -13,7 +13,7 @@
K 25
svn:wc:ra_dav:version-url
V 57
-/svn/!svn/ver/4798/trunk/config/configuration.yml.example
+/svn/!svn/ver/4950/trunk/config/configuration.yml.example
END
routes.rb
K 25
@@ -31,7 +31,7 @@
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/environment.rb
+/svn/!svn/ver/4904/trunk/config/environment.rb
END
additional_environment.rb.example
K 25
diff -r 8972b600f4fb -r 051f544170fe config/.svn/entries
--- a/config/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/config/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,15 +1,15 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/config
http://redmine.rubyforge.org/svn
-2011-02-06T00:31:15.026336Z
-4799
-jbbarth
+2011-02-27T13:43:18.863191Z
+4955
+jplang
has-props
@@ -66,11 +66,11 @@
-2011-03-03T11:05:23.000000Z
-ead0ed1efd92e31194815e50d312920e
-2011-02-05T00:57:41.645336Z
-4798
-tmaruyama
+2011-03-03T11:40:18.000000Z
+69243d1b5b9b111da631c7034d51ba71
+2011-02-26T13:09:25.657748Z
+4950
+jplang
has-props
@@ -92,7 +92,7 @@
-4015
+4886
locales
dir
@@ -174,10 +174,10 @@
-2011-03-03T11:05:23.000000Z
-a18bfc7d8a10fdf178623f6f6663c538
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+cc9c7d7f9a4bd800d2c4a8737147e4c3
+2011-02-21T11:02:18.659691Z
+4904
jplang
has-props
@@ -200,7 +200,7 @@
-2548
+2553
environments
dir
diff -r 8972b600f4fb -r 051f544170fe config/.svn/text-base/configuration.yml.example.svn-base
--- a/config/.svn/text-base/configuration.yml.example.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/.svn/text-base/configuration.yml.example.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -110,12 +110,33 @@
# Configuration of SCM executable command.
# Absolute path (e.g. /usr/local/bin/hg) or command name (e.g. hg.exe, bzr.exe)
# On Windows, *.cmd, *.bat (e.g. hg.cmd, bzr.bat) does not work.
- scm_subversion_command: svn # (default: svn)
- scm_mercurial_command: "\"C:\Program Files\TortoiseHg\hg.exe\"" # (default: hg)
- scm_git_command: /usr/local/bin/git # (default: git)
- scm_cvs_command: cvs # (default: cvs)
- scm_bazaar_command: bzr.exe # (default: bzr)
- scm_darcs_command: darcs-1.0.9-i386-linux # (default: darcs)
+ # Examples:
+ # scm_subversion_command: svn # (default: svn)
+ # scm_mercurial_command: C:\Program Files\TortoiseHg\hg.exe # (default: hg)
+ # scm_git_command: /usr/local/bin/git # (default: git)
+ # scm_cvs_command: cvs # (default: cvs)
+ # scm_bazaar_command: bzr.exe # (default: bzr)
+ # scm_darcs_command: darcs-1.0.9-i386-linux # (default: darcs)
+ scm_subversion_command:
+ scm_mercurial_command:
+ scm_git_command:
+ scm_cvs_command:
+ scm_bazaar_command:
+ scm_darcs_command:
+
+ # Key used to encrypt sensitive data in the database (SCM and LDAP passwords).
+ # If you don't want to enable data encryption, just leave it blank.
+ # WARNING: losing/changing this key will make encrypted data unreadable.
+ #
+ # If you want to encrypt existing passwords in your database:
+ # * set the cipher key here in your configuration file
+ # * encrypt data using 'rake db:encrypt RAILS_ENV=production'
+ #
+ # If you have encrypted data and want to change this key, you have to:
+ # * decrypt data using 'rake db:decrypt RAILS_ENV=production' first
+ # * change the cipher key here in your configuration file
+ # * encrypt data using 'rake db:encrypt RAILS_ENV=production'
+ database_cipher_key:
# specific configuration options for production environment
# that overrides the default ones
diff -r 8972b600f4fb -r 051f544170fe config/.svn/text-base/environment.rb.svn-base
--- a/config/.svn/text-base/environment.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/.svn/text-base/environment.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -5,7 +5,7 @@
# ENV['RAILS_ENV'] ||= 'production'
# Specifies gem version of Rails to use when vendor/rails is not present
-RAILS_GEM_VERSION = '2.3.5' unless defined? RAILS_GEM_VERSION
+RAILS_GEM_VERSION = '2.3.11' unless defined? RAILS_GEM_VERSION
# Bootstrap the Rails environment, frameworks, and default configuration
require File.join(File.dirname(__FILE__), 'boot')
@@ -24,7 +24,7 @@
# config.frameworks -= [ :action_web_service, :action_mailer ]
# Add additional load paths for sweepers
- config.load_paths += %W( #{RAILS_ROOT}/app/sweepers )
+ config.autoload_paths += %W( #{RAILS_ROOT}/app/sweepers )
# Force all environments to use the same logger level
# (by default production uses :info, the others :debug)
diff -r 8972b600f4fb -r 051f544170fe config/configuration.yml.example
--- a/config/configuration.yml.example Thu Mar 03 11:40:10 2011 +0000
+++ b/config/configuration.yml.example Thu Mar 03 11:42:28 2011 +0000
@@ -110,12 +110,33 @@
# Configuration of SCM executable command.
# Absolute path (e.g. /usr/local/bin/hg) or command name (e.g. hg.exe, bzr.exe)
# On Windows, *.cmd, *.bat (e.g. hg.cmd, bzr.bat) does not work.
- scm_subversion_command: svn # (default: svn)
- scm_mercurial_command: "\"C:\Program Files\TortoiseHg\hg.exe\"" # (default: hg)
- scm_git_command: /usr/local/bin/git # (default: git)
- scm_cvs_command: cvs # (default: cvs)
- scm_bazaar_command: bzr.exe # (default: bzr)
- scm_darcs_command: darcs-1.0.9-i386-linux # (default: darcs)
+ # Examples:
+ # scm_subversion_command: svn # (default: svn)
+ # scm_mercurial_command: C:\Program Files\TortoiseHg\hg.exe # (default: hg)
+ # scm_git_command: /usr/local/bin/git # (default: git)
+ # scm_cvs_command: cvs # (default: cvs)
+ # scm_bazaar_command: bzr.exe # (default: bzr)
+ # scm_darcs_command: darcs-1.0.9-i386-linux # (default: darcs)
+ scm_subversion_command:
+ scm_mercurial_command:
+ scm_git_command:
+ scm_cvs_command:
+ scm_bazaar_command:
+ scm_darcs_command:
+
+ # Key used to encrypt sensitive data in the database (SCM and LDAP passwords).
+ # If you don't want to enable data encryption, just leave it blank.
+ # WARNING: losing/changing this key will make encrypted data unreadable.
+ #
+ # If you want to encrypt existing passwords in your database:
+ # * set the cipher key here in your configuration file
+ # * encrypt data using 'rake db:encrypt RAILS_ENV=production'
+ #
+ # If you have encrypted data and want to change this key, you have to:
+ # * decrypt data using 'rake db:decrypt RAILS_ENV=production' first
+ # * change the cipher key here in your configuration file
+ # * encrypt data using 'rake db:encrypt RAILS_ENV=production'
+ database_cipher_key:
# specific configuration options for production environment
# that overrides the default ones
diff -r 8972b600f4fb -r 051f544170fe config/environment.rb
--- a/config/environment.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/config/environment.rb Thu Mar 03 11:42:28 2011 +0000
@@ -5,7 +5,7 @@
# ENV['RAILS_ENV'] ||= 'production'
# Specifies gem version of Rails to use when vendor/rails is not present
-RAILS_GEM_VERSION = '2.3.5' unless defined? RAILS_GEM_VERSION
+RAILS_GEM_VERSION = '2.3.11' unless defined? RAILS_GEM_VERSION
# Bootstrap the Rails environment, frameworks, and default configuration
require File.join(File.dirname(__FILE__), 'boot')
@@ -24,7 +24,7 @@
# config.frameworks -= [ :action_web_service, :action_mailer ]
# Add additional load paths for sweepers
- config.load_paths += %W( #{RAILS_ROOT}/app/sweepers )
+ config.autoload_paths += %W( #{RAILS_ROOT}/app/sweepers )
# Force all environments to use the same logger level
# (by default production uses :info, the others :debug)
diff -r 8972b600f4fb -r 051f544170fe config/environments/.svn/entries
--- a/config/environments/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/config/environments/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/config/environments
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe config/initializers/.svn/all-wcprops
--- a/config/initializers/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/config/initializers/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 44
-/svn/!svn/ver/4752/trunk/config/initializers
+/svn/!svn/ver/4904/trunk/config/initializers
END
inflections.rb
K 25
@@ -19,7 +19,7 @@
K 25
svn:wc:ra_dav:version-url
V 58
-/svn/!svn/ver/4516/trunk/config/initializers/10-patches.rb
+/svn/!svn/ver/4904/trunk/config/initializers/10-patches.rb
END
backtrace_silencers.rb
K 25
diff -r 8972b600f4fb -r 051f544170fe config/initializers/.svn/entries
--- a/config/initializers/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/config/initializers/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/config/initializers
http://redmine.rubyforge.org/svn
-2011-01-23T10:22:00.456857Z
-4752
+2011-02-21T11:02:18.659691Z
+4904
jplang
has-props
@@ -100,10 +100,10 @@
-2011-03-03T11:05:23.000000Z
-e83154f604f9f3b0307e1b435f9cc95c
-2010-12-17T08:34:29.830642Z
-4516
+2011-03-03T11:40:18.000000Z
+17f5c9eadec957cb8fb2b6d1f07b61ae
+2011-02-21T11:02:18.659691Z
+4904
jplang
has-props
@@ -126,7 +126,7 @@
-3149
+2907
backtrace_silencers.rb
file
diff -r 8972b600f4fb -r 051f544170fe config/initializers/.svn/text-base/10-patches.rb.svn-base
--- a/config/initializers/.svn/text-base/10-patches.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/initializers/.svn/text-base/10-patches.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -79,16 +79,12 @@
ActionMailer::Base.send :include, AsynchronousMailer
-# TODO: Hack to support i18n 4.x on Rails 2.3.5. Remove post 2.3.6.
-# See http://www.redmine.org/issues/6428 and http://www.redmine.org/issues/5608
-module I18n
- module Backend
- module Base
- def warn_syntax_deprecation!(*args)
- return if @skip_syntax_deprecation
- warn "The {{key}} interpolation syntax in I18n messages is deprecated and will be removed in Redmine 1.2. Please use %{key} instead, see http://www.redmine.org/issues/7013 for more information."
- @skip_syntax_deprecation = true
- end
+# TMail::Unquoter.convert_to_with_fallback_on_iso_8859_1 introduced in TMail 1.2.7
+# triggers a test failure in test_add_issue_with_japanese_keywords(MailHandlerTest)
+module TMail
+ class Unquoter
+ class << self
+ alias_method :convert_to, :convert_to_without_fallback_on_iso_8859_1
end
end
end
diff -r 8972b600f4fb -r 051f544170fe config/initializers/10-patches.rb
--- a/config/initializers/10-patches.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/config/initializers/10-patches.rb Thu Mar 03 11:42:28 2011 +0000
@@ -79,16 +79,12 @@
ActionMailer::Base.send :include, AsynchronousMailer
-# TODO: Hack to support i18n 4.x on Rails 2.3.5. Remove post 2.3.6.
-# See http://www.redmine.org/issues/6428 and http://www.redmine.org/issues/5608
-module I18n
- module Backend
- module Base
- def warn_syntax_deprecation!(*args)
- return if @skip_syntax_deprecation
- warn "The {{key}} interpolation syntax in I18n messages is deprecated and will be removed in Redmine 1.2. Please use %{key} instead, see http://www.redmine.org/issues/7013 for more information."
- @skip_syntax_deprecation = true
- end
+# TMail::Unquoter.convert_to_with_fallback_on_iso_8859_1 introduced in TMail 1.2.7
+# triggers a test failure in test_add_issue_with_japanese_keywords(MailHandlerTest)
+module TMail
+ class Unquoter
+ class << self
+ alias_method :convert_to, :convert_to_without_fallback_on_iso_8859_1
end
end
end
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/all-wcprops
--- a/config/locales/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,263 +1,269 @@
K 25
svn:wc:ra_dav:version-url
V 39
-/svn/!svn/ver/4799/trunk/config/locales
+/svn/!svn/ver/4955/trunk/config/locales
END
lt.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/lt.yml
+/svn/!svn/ver/4955/trunk/config/locales/lt.yml
END
sr-YU.yml
K 25
svn:wc:ra_dav:version-url
V 49
-/svn/!svn/ver/4752/trunk/config/locales/sr-YU.yml
+/svn/!svn/ver/4955/trunk/config/locales/sr-YU.yml
END
ro.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/ro.yml
+/svn/!svn/ver/4955/trunk/config/locales/ro.yml
END
lv.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/lv.yml
+/svn/!svn/ver/4955/trunk/config/locales/lv.yml
END
zh.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/zh.yml
+/svn/!svn/ver/4955/trunk/config/locales/zh.yml
END
pt.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/pt.yml
+/svn/!svn/ver/4955/trunk/config/locales/pt.yml
END
ca.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/ca.yml
+/svn/!svn/ver/4955/trunk/config/locales/ca.yml
END
pt-BR.yml
K 25
svn:wc:ra_dav:version-url
V 49
-/svn/!svn/ver/4752/trunk/config/locales/pt-BR.yml
+/svn/!svn/ver/4955/trunk/config/locales/pt-BR.yml
END
tr.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/tr.yml
+/svn/!svn/ver/4955/trunk/config/locales/tr.yml
END
ru.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/ru.yml
+/svn/!svn/ver/4955/trunk/config/locales/ru.yml
END
en-GB.yml
K 25
svn:wc:ra_dav:version-url
V 49
-/svn/!svn/ver/4752/trunk/config/locales/en-GB.yml
+/svn/!svn/ver/4955/trunk/config/locales/en-GB.yml
END
id.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/id.yml
+/svn/!svn/ver/4955/trunk/config/locales/id.yml
END
el.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/el.yml
+/svn/!svn/ver/4955/trunk/config/locales/el.yml
END
en.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/en.yml
+/svn/!svn/ver/4954/trunk/config/locales/en.yml
END
gl.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/gl.yml
+/svn/!svn/ver/4955/trunk/config/locales/gl.yml
END
cs.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4777/trunk/config/locales/cs.yml
+/svn/!svn/ver/4955/trunk/config/locales/cs.yml
+END
+mk.yml
+K 25
+svn:wc:ra_dav:version-url
+V 46
+/svn/!svn/ver/4955/trunk/config/locales/mk.yml
END
es.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/es.yml
+/svn/!svn/ver/4955/trunk/config/locales/es.yml
END
-mk.yml
+ko.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/mk.yml
+/svn/!svn/ver/4955/trunk/config/locales/ko.yml
+END
+eu.yml
+K 25
+svn:wc:ra_dav:version-url
+V 46
+/svn/!svn/ver/4955/trunk/config/locales/eu.yml
END
zh-TW.yml
K 25
svn:wc:ra_dav:version-url
V 49
-/svn/!svn/ver/4752/trunk/config/locales/zh-TW.yml
-END
-eu.yml
-K 25
-svn:wc:ra_dav:version-url
-V 46
-/svn/!svn/ver/4752/trunk/config/locales/eu.yml
-END
-ko.yml
-K 25
-svn:wc:ra_dav:version-url
-V 46
-/svn/!svn/ver/4752/trunk/config/locales/ko.yml
+/svn/!svn/ver/4955/trunk/config/locales/zh-TW.yml
END
mn.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/mn.yml
+/svn/!svn/ver/4955/trunk/config/locales/mn.yml
END
it.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/it.yml
+/svn/!svn/ver/4955/trunk/config/locales/it.yml
END
sk.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/sk.yml
+/svn/!svn/ver/4955/trunk/config/locales/sk.yml
END
sl.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/sl.yml
+/svn/!svn/ver/4955/trunk/config/locales/sl.yml
END
uk.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/uk.yml
+/svn/!svn/ver/4955/trunk/config/locales/uk.yml
+END
+da.yml
+K 25
+svn:wc:ra_dav:version-url
+V 46
+/svn/!svn/ver/4955/trunk/config/locales/da.yml
END
sr.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/sr.yml
+/svn/!svn/ver/4955/trunk/config/locales/sr.yml
END
-da.yml
+fa.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/da.yml
+/svn/!svn/ver/4955/trunk/config/locales/fa.yml
+END
+sv.yml
+K 25
+svn:wc:ra_dav:version-url
+V 46
+/svn/!svn/ver/4955/trunk/config/locales/sv.yml
+END
+bg.yml
+K 25
+svn:wc:ra_dav:version-url
+V 46
+/svn/!svn/ver/4955/trunk/config/locales/bg.yml
END
de.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/de.yml
-END
-bg.yml
-K 25
-svn:wc:ra_dav:version-url
-V 46
-/svn/!svn/ver/4777/trunk/config/locales/bg.yml
-END
-sv.yml
-K 25
-svn:wc:ra_dav:version-url
-V 46
-/svn/!svn/ver/4777/trunk/config/locales/sv.yml
+/svn/!svn/ver/4955/trunk/config/locales/de.yml
END
ja.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/ja.yml
+/svn/!svn/ver/4955/trunk/config/locales/ja.yml
END
he.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/he.yml
+/svn/!svn/ver/4955/trunk/config/locales/he.yml
END
fi.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/fi.yml
+/svn/!svn/ver/4955/trunk/config/locales/fi.yml
END
bs.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/bs.yml
+/svn/!svn/ver/4955/trunk/config/locales/bs.yml
END
fr.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4799/trunk/config/locales/fr.yml
+/svn/!svn/ver/4954/trunk/config/locales/fr.yml
END
nl.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/nl.yml
+/svn/!svn/ver/4955/trunk/config/locales/nl.yml
END
hr.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/hr.yml
+/svn/!svn/ver/4955/trunk/config/locales/hr.yml
END
pl.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/pl.yml
+/svn/!svn/ver/4955/trunk/config/locales/pl.yml
END
th.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/th.yml
+/svn/!svn/ver/4955/trunk/config/locales/th.yml
END
no.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/no.yml
+/svn/!svn/ver/4955/trunk/config/locales/no.yml
END
hu.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/hu.yml
+/svn/!svn/ver/4955/trunk/config/locales/hu.yml
END
vi.yml
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4752/trunk/config/locales/vi.yml
+/svn/!svn/ver/4955/trunk/config/locales/vi.yml
END
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/entries
--- a/config/locales/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,15 +1,15 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/config/locales
http://redmine.rubyforge.org/svn
-2011-02-06T00:31:15.026336Z
-4799
-jbbarth
+2011-02-27T13:43:18.863191Z
+4955
+jplang
@@ -32,10 +32,10 @@
-2011-03-03T11:05:22.000000Z
-1e812b47384d7d6aa8750e651a89e331
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+3542e97eeeee34df7a3d6d64a4ce0407
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -58,7 +58,7 @@
-43746
+44029
sr-YU.yml
file
@@ -66,10 +66,10 @@
-2011-03-03T11:05:22.000000Z
-db716c4c1e941ae3c3bc180ae85e916a
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+b05d928becf91c52a78271c93715bb1b
+2011-02-27T13:43:18.863191Z
+4955
jplang
@@ -92,7 +92,7 @@
-42012
+42299
ro.yml
file
@@ -100,10 +100,10 @@
-2011-03-03T11:05:22.000000Z
-df4dee9e336fec2bce64b46a93ef8a7a
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+dd9fb4aae0fa69165e4f4e1100c3fa26
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -126,7 +126,7 @@
-40134
+40417
lv.yml
file
@@ -134,10 +134,10 @@
-2011-03-03T11:05:22.000000Z
-09cfeb6fef2159b9fbf3bd4524edccd9
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+12f9b4e9c849923a86334f56fbb65f1a
+2011-02-27T13:43:18.863191Z
+4955
jplang
@@ -160,7 +160,7 @@
-42018
+42305
zh.yml
file
@@ -168,10 +168,10 @@
-2011-03-03T11:05:22.000000Z
-35aefadc95299e046c84e7926f2f1723
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+dde46f425abed5caa3d8d3afe9049fb7
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -194,7 +194,7 @@
-38020
+38303
pt.yml
file
@@ -202,10 +202,10 @@
-2011-03-03T11:05:22.000000Z
-de7cca7c956cb960bccd7ee0bd7e642c
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+017dbb90319bfa26bab5a45296b337b3
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -228,7 +228,7 @@
-41494
+41777
ca.yml
file
@@ -236,10 +236,10 @@
-2011-03-03T11:05:22.000000Z
-f941e4e9bed4572927ca14fc9b5db1d4
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+55d3137cb8850d53bce7337a8a0cf720
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -262,7 +262,7 @@
-41943
+42226
pt-BR.yml
file
@@ -270,10 +270,10 @@
-2011-03-03T11:05:22.000000Z
-7b6ebad52c9d0618e170f88c4eca6fe9
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+0714d61f3439e9e8058f26487eae91b2
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -296,7 +296,7 @@
-41378
+41661
tr.yml
file
@@ -304,10 +304,10 @@
-2011-03-03T11:05:22.000000Z
-062568e14381f3e5c1ff9c46734d1063
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+5bc442cb54c4373e1aeea7dd56e30bd0
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -330,7 +330,7 @@
-40012
+40295
ru.yml
file
@@ -338,10 +338,10 @@
-2011-03-03T11:05:22.000000Z
-82062fb3f39efa9416604ee0086d6d2b
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+6a3741281160ebb7f27f6d2bb03499c8
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -364,7 +364,7 @@
-61841
+62124
en-GB.yml
file
@@ -372,10 +372,10 @@
-2011-03-03T11:05:22.000000Z
-21131080b52818c183c04114fbdd21c0
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+831604fd1ce5d6f72e64688ce6f62581
+2011-02-27T13:43:18.863191Z
+4955
jplang
@@ -398,7 +398,7 @@
-39398
+39685
id.yml
file
@@ -406,10 +406,10 @@
-2011-03-03T11:05:22.000000Z
-5aafb5ad42703467a8bf10a77cf3958a
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+eb45d7f2bc3d3e7fd8ab01db1a3041a4
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -432,7 +432,7 @@
-39754
+40037
el.yml
file
@@ -440,10 +440,10 @@
-2011-03-03T11:05:22.000000Z
-2ba957266ab2a72f1e4bdc00fb0ee9ce
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+98b4f21cce1a0242221eecb23f5fc727
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -466,7 +466,7 @@
-54862
+55145
en.yml
file
@@ -474,10 +474,10 @@
-2011-03-03T11:05:22.000000Z
-50978718f7db9428b3b910da54af546a
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+4265d626f893cc08f2142d0a254e2ac7
+2011-02-27T13:34:41.060565Z
+4954
jplang
has-props
@@ -500,7 +500,7 @@
-38500
+38787
gl.yml
file
@@ -508,10 +508,10 @@
-2011-03-03T11:05:22.000000Z
-8fac2d7a543f4e07eb26e778a392ab83
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+03aa773b8d01d5bc421b8896fc9c861b
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -534,7 +534,7 @@
-40612
+40895
cs.yml
file
@@ -542,10 +542,10 @@
-2011-03-03T11:05:22.000000Z
-a15ce6ead8e1c43eb12d222e7e849d5d
-2011-01-30T06:37:01.341578Z
-4777
+2011-03-03T11:40:18.000000Z
+85ac61a4067ad6dda83d43acbf874cf6
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -568,7 +568,41 @@
-41339
+41752
+
+mk.yml
+file
+
+
+
+
+2011-03-03T11:40:18.000000Z
+626a66d6d98190418f4a4fd43077734f
+2011-02-27T13:43:18.863191Z
+4955
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+49418
es.yml
file
@@ -576,10 +610,10 @@
-2011-03-03T11:05:22.000000Z
-470913ee31919fc90e22b02279afd420
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+6ef7d2fb0af3cce0f6afbdea3ff9ab17
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -602,41 +636,75 @@
-43387
+43670
-mk.yml
+ko.yml
file
-2011-03-03T11:05:22.000000Z
-337151da51a475b6b324ea679c3a6c99
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+1ff250f0b17ecb9465add49dfcf9bb91
+2011-02-27T13:43:18.863191Z
+4955
jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-49131
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+44501
+
+eu.yml
+file
+
+
+
+
+2011-03-03T11:40:18.000000Z
+b3ba93d14600b4b992e65fbd243759ae
+2011-02-27T13:43:18.863191Z
+4955
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+42568
zh-TW.yml
file
@@ -644,10 +712,10 @@
-2011-03-03T11:05:22.000000Z
-368fbd4de15eedcb2cf543e167873bbd
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+f4c6a612b84e5087ed4d023414dab628
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -670,75 +738,7 @@
-42325
-
-eu.yml
-file
-
-
-
-
-2011-03-03T11:05:22.000000Z
-32206bce9083c739e3f31d8ebb56281c
-2011-01-23T10:22:00.456857Z
-4752
-jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-42081
-
-ko.yml
-file
-
-
-
-
-2011-03-03T11:05:22.000000Z
-95bb162d82a614c7841b2ea67e611e2b
-2011-01-23T10:22:00.456857Z
-4752
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-44218
+42608
mn.yml
file
@@ -746,10 +746,10 @@
-2011-03-03T11:05:22.000000Z
-417e9edec50ef31110f08242550b56a6
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+b9e2987cb3cbaab826c7388d09b74f75
+2011-02-27T13:43:18.863191Z
+4955
jplang
@@ -772,7 +772,7 @@
-53795
+54082
it.yml
file
@@ -780,10 +780,10 @@
-2011-03-03T11:05:22.000000Z
-fe7dc689acbe010599427d2d39ac2b44
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+f80f107e4d9318b8a8cea65b2e13d579
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -806,7 +806,7 @@
-41153
+41436
sk.yml
file
@@ -814,10 +814,10 @@
-2011-03-03T11:05:22.000000Z
-c25656ed7510655eac11f735078dbbaa
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+e7901c1e26424f863f96dd86164419c2
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -840,7 +840,7 @@
-41404
+41687
sl.yml
file
@@ -848,10 +848,10 @@
-2011-03-03T11:05:22.000000Z
-f9e69eb1031ca6a4030cd909ced54a64
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+808c04baadb112b6be492be9dc78ef89
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -874,7 +874,7 @@
-39580
+39863
uk.yml
file
@@ -882,10 +882,10 @@
-2011-03-03T11:05:22.000000Z
-b5de0b39a465690bc9610247e0d9e0eb
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+430d26c543f2d9d31ffe77c9ef3eb4f8
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -908,7 +908,41 @@
-47158
+47441
+
+da.yml
+file
+
+
+
+
+2011-03-03T11:40:18.000000Z
+a7ae693463d0d34fb5fd212ccbda0aff
+2011-02-27T13:43:18.863191Z
+4955
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+39983
sr.yml
file
@@ -916,10 +950,10 @@
-2011-03-03T11:05:22.000000Z
-d8e8a44113f74ae664adee4f222daf97
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+adf2619297b8e142957c327c6a76c786
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -942,18 +976,18 @@
-54272
+54555
-da.yml
+fa.yml
file
-2011-03-03T11:05:22.000000Z
-43a7a9f5e9140fad4fb52765b0fdba1f
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+6f585dcad4e6b03d987ea0f5e7d7e91f
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -976,7 +1010,75 @@
-39700
+51085
+
+bg.yml
+file
+
+
+
+
+2011-03-03T11:40:18.000000Z
+e0df426fe104bb05be553a362f46610b
+2011-02-27T13:43:18.863191Z
+4955
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+54718
+
+de.yml
+file
+
+
+
+
+2011-03-03T11:40:18.000000Z
+80e835963312388a9077a8f27452d429
+2011-02-27T13:43:18.863191Z
+4955
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+42574
sv.yml
file
@@ -984,10 +1086,10 @@
-2011-03-03T11:05:22.000000Z
-699123d62eee4445faa28aa6d78b2335
-2011-01-30T06:37:01.341578Z
-4777
+2011-03-03T11:40:18.000000Z
+59f72f202281205f1ed729183db2a402
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -1010,75 +1112,7 @@
-41897
-
-de.yml
-file
-
-
-
-
-2011-03-03T11:05:22.000000Z
-b2d420fff7d056c16f09ef0a9779a6c7
-2011-01-23T10:22:00.456857Z
-4752
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-42291
-
-bg.yml
-file
-
-
-
-
-2011-03-03T11:05:22.000000Z
-e298699123f5bd3e5135a566c73503d6
-2011-01-30T06:37:01.341578Z
-4777
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-54276
+42180
ja.yml
file
@@ -1086,10 +1120,10 @@
-2011-03-03T11:05:22.000000Z
-6b961e32a177d8d7ac8c2f7c88200470
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+03fac78c16fdf9c77069f24fec7b2796
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -1112,7 +1146,7 @@
-45908
+46191
he.yml
file
@@ -1120,10 +1154,10 @@
-2011-03-03T11:05:22.000000Z
-192584af3333c7080179fe5c20e434fc
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+03045c9539de31b255a14c9207fb8eaa
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -1146,7 +1180,7 @@
-45150
+45433
fi.yml
file
@@ -1154,10 +1188,10 @@
-2011-03-03T11:05:22.000000Z
-b445a97eaeefead5aa6370c4a1190a4f
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+18dd7ae78913bad4b75e0d5f16068290
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -1180,7 +1214,7 @@
-40658
+40941
bs.yml
file
@@ -1188,10 +1222,10 @@
-2011-03-03T11:05:22.000000Z
-010af5a5a5c3eb88d99ae0cea9938404
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+0fdc9e453941e547e3b40fee917fcf02
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -1214,7 +1248,7 @@
-40595
+40878
fr.yml
file
@@ -1222,11 +1256,11 @@
-2011-03-03T11:05:22.000000Z
-c501db7eeece8640d653e51824f5c7bc
-2011-02-06T00:31:15.026336Z
-4799
-jbbarth
+2011-03-03T11:40:18.000000Z
+95995431647aa0e13c850df4250a57d0
+2011-02-27T13:34:41.060565Z
+4954
+jplang
has-props
@@ -1248,7 +1282,7 @@
-42750
+43081
nl.yml
file
@@ -1256,10 +1290,10 @@
-2011-03-03T11:05:22.000000Z
-9a2c26c869400cc6efb11d75b2d06913
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+06358d3f035a3fcc20cde865e7295023
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -1282,7 +1316,7 @@
-40150
+40433
hr.yml
file
@@ -1290,10 +1324,10 @@
-2011-03-03T11:05:22.000000Z
-3599330a601c9bf8a264581c2dff951a
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+3fbb52f4fa0ba97dfd179ad0c8e020c3
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -1316,7 +1350,7 @@
-40258
+40541
pl.yml
file
@@ -1324,10 +1358,10 @@
-2011-03-03T11:05:22.000000Z
-aca80972219f7cccba37d3f54e1997fe
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+afca79760eefe54e70833751f3d9b0bb
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -1350,7 +1384,7 @@
-42553
+42836
th.yml
file
@@ -1358,10 +1392,10 @@
-2011-03-03T11:05:22.000000Z
-fe82ec83beaf4cc55f24063138e7c041
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+e9737687144c1c4fd63eacb68f2682f1
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -1384,7 +1418,7 @@
-53018
+53301
no.yml
file
@@ -1392,10 +1426,10 @@
-2011-03-03T11:05:23.000000Z
-be6384b9cabf8a8b0c510c0f5961a1dd
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+8fff009aa1fe3602b8b4dff6210f8497
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -1418,7 +1452,7 @@
-38461
+38744
hu.yml
file
@@ -1426,10 +1460,10 @@
-2011-03-03T11:05:23.000000Z
-c3c9231930da2b53136ec5ffe77e2cfe
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+5c2041121ebd0cd3bcf252d54e21786b
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -1452,7 +1486,7 @@
-42985
+43268
vi.yml
file
@@ -1460,10 +1494,10 @@
-2011-03-03T11:05:23.000000Z
-874e401921a349fe9688ab028461e0b2
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+37a28f575513649d20833ce31e5fce23
+2011-02-27T13:43:18.863191Z
+4955
jplang
has-props
@@ -1486,5 +1520,5 @@
-43553
+43836
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/prop-base/fa.yml.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/config/locales/.svn/prop-base/fa.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:eol-style
+V 6
+native
+END
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/bg.yml.svn-base
--- a/config/locales/.svn/text-base/bg.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/bg.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -303,6 +303,7 @@
field_assigned_to_role: Assignee's role
field_text: Текстово поле
field_visible: Видим
+ field_warn_on_leaving_unsaved: Предупреди ме, когато напускам страница с незаписано съдържание
setting_app_title: Заглавие
setting_app_subtitle: Описание
@@ -594,6 +595,7 @@
label_query: Потребителска справка
label_query_plural: Потребителски справки
label_query_new: Нова заявка
+ label_my_queries: Моите заявки
label_filter_add: Добави филтър
label_filter_plural: Филтри
label_equals: е
@@ -908,6 +910,7 @@
text_own_membership_delete_confirmation: "Вие сте на път да премахнете някои или всички ваши разрешения и е възможно след това да не можете да редактирате този проект.\nСигурен ли сте, че искате да продължите?"
text_zoom_in: Увеличаване
text_zoom_out: Намаляване
+ text_warn_on_leaving_unsaved: Страницата съдържа незаписано съдържание, което може да бъде загубено, ако я напуснете.
default_role_manager: Мениджър
default_role_developer: Разработчик
@@ -936,3 +939,4 @@
enumeration_activities: Дейности (time tracking)
enumeration_system_activity: Системна активност
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/bs.yml.svn-base
--- a/config/locales/.svn/text-base/bs.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/bs.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -950,3 +950,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/ca.yml.svn-base
--- a/config/locales/.svn/text-base/ca.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/ca.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -939,3 +939,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/cs.yml.svn-base
--- a/config/locales/.svn/text-base/cs.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/cs.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -1,4 +1,9 @@
+# Update to 1.1 by Michal Gebauer
+# Updated by Josef Liška
+# CZ translation by Maxim Krušina | Massimo Filippi, s.r.o. | maxim@mxm.cz
+# Based on original CZ translation by Jan Kadleček
cs:
+ # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl)
direction: ltr
date:
formats:
@@ -26,7 +31,7 @@
long: "%B %d, %Y %H:%M"
am: "dop."
pm: "odp."
-
+
datetime:
distance_in_words:
half_a_minute: "půl minuty"
@@ -65,24 +70,26 @@
other: "téměř %{count} roky"
number:
+ # Výchozí formát pro čísla
format:
- separator: "."
+ separator: "."
delimiter: ""
precision: 3
- human:
- format:
+ human:
+ format:
+ delimiter: ""
precision: 1
- delimiter: ""
- storage_units:
+ storage_units:
format: "%n %u"
- units:
- kb: KB
- tb: TB
- gb: GB
- byte:
- one: Byte
- other: Bytes
- mb: MB
+ units:
+ byte:
+ one: "Bajt"
+ other: "Bajtů"
+ kb: "kB"
+ mb: "MB"
+ gb: "GB"
+ tb: "TB"
+
# Used in array.to_sentence.
support:
@@ -94,8 +101,8 @@
errors:
template:
header:
- one: "1 error prohibited this %{model} from being saved"
- other: "%{count} errors prohibited this %{model} from being saved"
+ one: "1 chyba zabránila uložení %{model}"
+ other: "%{count} chyb zabránilo uložení %{model}"
messages:
inclusion: "není zahrnuto v seznamu"
exclusion: "je rezervováno"
@@ -122,10 +129,6 @@
circular_dependency: "Tento vztah by vytvořil cyklickou závislost"
cant_link_an_issue_with_a_descendant: "Úkol nemůže být spojen s jedním z jeho dílčích úkolů"
- # Updated by Josef Liška
- # CZ translation by Maxim Krušina | Massimo Filippi, s.r.o. | maxim@mxm.cz
- # Based on original CZ translation by Jan Kadleček
-
actionview_instancetag_blank_option: Prosím vyberte
general_text_No: 'Ne'
@@ -154,20 +157,40 @@
notice_successful_connection: Úspěšné připojení.
notice_file_not_found: Stránka na kterou se snažíte zobrazit neexistuje nebo byla smazána.
notice_locking_conflict: Údaje byly změněny jiným uživatelem.
- notice_scm_error: Záznam a/nebo revize neexistuje v repozitáři.
notice_not_authorized: Nemáte dostatečná práva pro zobrazení této stránky.
+ notice_not_authorized_archived_project: Projekt ke kterému se snažíte přistupovat byl archivován.
notice_email_sent: "Na adresu %{value} byl odeslán email"
notice_email_error: "Při odesílání emailu nastala chyba (%{value})"
notice_feeds_access_key_reseted: Váš klíč pro přístup k RSS byl resetován.
+ notice_api_access_key_reseted: Váš API přístupový klíč byl resetován.
notice_failed_to_save_issues: "Chyba při uložení %{count} úkolu(ů) z %{total} vybraných: %{ids}."
+ notice_failed_to_save_members: "Nepodařilo se uložit člena(y): %{errors}."
notice_no_issue_selected: "Nebyl zvolen žádný úkol. Prosím, zvolte úkoly, které chcete editovat"
notice_account_pending: "Váš účet byl vytvořen, nyní čeká na schválení administrátorem."
notice_default_data_loaded: Výchozí konfigurace úspěšně nahrána.
+ notice_unable_delete_version: Nemohu odstanit verzi
+ notice_unable_delete_time_entry: Nelze smazat čas ze záznamu.
+ notice_issue_done_ratios_updated: Koeficienty dokončení úkolu byly aktualizovány.
+ notice_gantt_chart_truncated: Graf byl oříznut, počet položek přesáhl limit pro zobrazení (%{max})
error_can_t_load_default_data: "Výchozí konfigurace nebyla nahrána: %{value}"
error_scm_not_found: "Položka a/nebo revize neexistují v repozitáři."
error_scm_command_failed: "Při pokusu o přístup k repozitáři došlo k chybě: %{value}"
+ error_scm_annotate: "Položka neexistuje nebo nemůže být komentována."
error_issue_not_found_in_project: 'Úkol nebyl nalezen nebo nepatří k tomuto projektu'
+ error_no_tracker_in_project: Žádná fronta nebyla přiřazena tomuto projektu. Prosím zkontroluje nastavení projektu.
+ error_no_default_issue_status: Není nastaven výchozí stav úkolu. Prosím zkontrolujte nastavení ("Administrace -> Stavy úkolů").
+ error_can_not_delete_custom_field: Nelze smazat volitelné pole
+ error_can_not_delete_tracker: Tato fronta obsahuje úkoly a nemůže být smazán.
+ error_can_not_remove_role: Tato role je právě používaná a nelze ji smazat.
+ error_can_not_reopen_issue_on_closed_version: Úkol přiřazený k uzavřené verzi nemůže být znovu otevřen
+ error_can_not_archive_project: Tento projekt nemůže být archivován
+ error_issue_done_ratios_not_updated: Koeficient dokončení úkolu nebyl aktualizován.
+ error_workflow_copy_source: Prosím vyberte zdrojovou frontu nebo roly
+ error_workflow_copy_target: Prosím vyberte cílovou frontu(y) a roly(e)
+ error_unable_delete_issue_status: Nelze smazat stavy úkolů
+ error_unable_to_connect: Nelze se připojit (%{value})
+ warning_attachments_not_saved: "%{count} soubor(ů) nebylo možné uložit."
mail_subject_lost_password: "Vaše heslo (%{value})"
mail_body_lost_password: 'Pro změnu vašeho hesla klikněte na následující odkaz:'
@@ -177,6 +200,12 @@
mail_body_account_information: Informace o vašem účtu
mail_subject_account_activation_request: "Aktivace %{value} účtu"
mail_body_account_activation_request: "Byl zaregistrován nový uživatel %{value}. Aktivace jeho účtu závisí na vašem potvrzení."
+ mail_subject_reminder: "%{count} úkol(ů) má termín během několik dní (%{days})"
+ mail_body_reminder: "%{count} úkol(ů), které máte přiřazeny má termín během několik dní (%{days}):"
+ mail_subject_wiki_content_added: "'%{id}' Wiki stránka byla přidána"
+ mail_body_wiki_content_added: "'%{id}' Wiki stránka byla přidána od %{author}."
+ mail_subject_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována"
+ mail_body_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována od %{author}."
gui_validation_error: 1 chyba
gui_validation_error_plural: "%{count} chyb(y)"
@@ -216,6 +245,7 @@
field_priority: Priorita
field_fixed_version: Cílová verze
field_user: Uživatel
+ field_principal: Hlavní
field_role: Role
field_homepage: Domovská stránka
field_is_public: Veřejný
@@ -260,10 +290,23 @@
field_redirect_existing_links: Přesměrovat stvávající odkazy
field_estimated_hours: Odhadovaná doba
field_column_names: Sloupce
+ field_time_entries: Zaznamenaný čas
field_time_zone: Časové pásmo
field_searchable: Umožnit vyhledávání
field_default_value: Výchozí hodnota
field_comments_sorting: Zobrazit komentáře
+ field_parent_title: Rodičovská stránka
+ field_editable: Editovatelný
+ field_watcher: Sleduje
+ field_identity_url: OpenID URL
+ field_content: Obsah
+ field_group_by: Seskupovat výsledky podle
+ field_sharing: Sdílení
+ field_parent_issue: Rodičovský úkol
+ field_member_of_group: Skupina přiřaditele
+ field_assigned_to_role: Role přiřaditele
+ field_text: Textové pole
+ field_visible: Viditelný
setting_app_title: Název aplikace
setting_app_subtitle: Podtitulek aplikace
@@ -275,6 +318,7 @@
setting_issues_export_limit: Limit pro export úkolů
setting_mail_from: Odesílat emaily z adresy
setting_bcc_recipients: Příjemci skryté kopie (bcc)
+ setting_plain_text_mail: pouze prostý text (ne HTML)
setting_host_name: Jméno serveru
setting_text_formatting: Formátování textu
setting_wiki_compression: Komprese historie Wiki
@@ -290,12 +334,94 @@
setting_cross_project_issue_relations: Povolit vazby úkolů napříč projekty
setting_issue_list_default_columns: Výchozí sloupce zobrazené v seznamu úkolů
setting_repositories_encodings: Kódování
+ setting_commit_logs_encoding: Kódování zpráv při commitu
+ setting_emails_header: Hlavička emailů
setting_emails_footer: Patička emailů
setting_protocol: Protokol
setting_per_page_options: Povolené počty řádků na stránce
setting_user_format: Formát zobrazení uživatele
setting_activity_days_default: Dny zobrazené v činnosti projektu
setting_display_subprojects_issues: Automaticky zobrazit úkoly podprojektu v hlavním projektu
+ setting_enabled_scm: Povolené SCM
+ setting_mail_handler_body_delimiters: Zkrátit e-maily po jednom z těchto řádků
+ setting_mail_handler_api_enabled: Povolit WS pro příchozí e-maily
+ setting_mail_handler_api_key: API klíč
+ setting_sequential_project_identifiers: Generovat sekvenční identifikátory projektů
+ setting_gravatar_enabled: Použít uživatelské ikony Gravatar
+ setting_gravatar_default: Výchozí Gravatar
+ setting_diff_max_lines_displayed: Maximální počet zobrazenách řádků rozdílů
+ setting_file_max_size_displayed: Maximální velikost textových souborů zobrazených přímo na stránce
+ setting_repository_log_display_limit: Maximální počet revizí zobrazených v logu souboru
+ setting_openid: Umožnit přihlašování a registrace s OpenID
+ setting_password_min_length: Minimální délka hesla
+ setting_new_project_user_role_id: Role přiřazená uživateli bez práv administrátora, který projekt vytvořil
+ setting_default_projects_modules: Výchozí zapnutné moduly pro nový projekt
+ setting_issue_done_ratio: Spočítat koeficient dokončení úkolu s
+ setting_issue_done_ratio_issue_field: Použít pole úkolu
+ setting_issue_done_ratio_issue_status: Použít stav úkolu
+ setting_start_of_week: Začínat kalendáře
+ setting_rest_api_enabled: Zapnout službu REST
+ setting_cache_formatted_text: Ukládat formátovaný text do vyrovnávací paměti
+ setting_default_notification_option: Výchozí nastavení oznámení
+ setting_commit_logtime_enabled: Povolit zapisování času
+ setting_commit_logtime_activity_id: Aktivita pro zapsaný čas
+ setting_gantt_items_limit: Maximální počet položek zobrazený na ganttově grafu
+
+ permission_add_project: Vytvořit projekt
+ permission_add_subprojects: Vytvořit podprojekty
+ permission_edit_project: Úprava projektů
+ permission_select_project_modules: Výběr modulů projektu
+ permission_manage_members: Spravování členství
+ permission_manage_project_activities: Spravovat aktivity projektu
+ permission_manage_versions: Spravování verzí
+ permission_manage_categories: Spravování kategorií úkolů
+ permission_view_issues: Zobrazit úkoly
+ permission_add_issues: Přidávání úkolů
+ permission_edit_issues: Upravování úkolů
+ permission_manage_issue_relations: Spravování vztahů mezi úkoly
+ permission_add_issue_notes: Přidávání poznámek
+ permission_edit_issue_notes: Upravování poznámek
+ permission_edit_own_issue_notes: Upravování vlastních poznámek
+ permission_move_issues: Přesouvání úkolů
+ permission_delete_issues: Mazání úkolů
+ permission_manage_public_queries: Správa veřejných dotazů
+ permission_save_queries: Ukládání dotazů
+ permission_view_gantt: Zobrazené Ganttova diagramu
+ permission_view_calendar: Prohlížení kalendáře
+ permission_view_issue_watchers: Zobrazení seznamu sledujícíh uživatelů
+ permission_add_issue_watchers: Přidání sledujících uživatelů
+ permission_delete_issue_watchers: Smazat přihlížející
+ permission_log_time: Zaznamenávání stráveného času
+ permission_view_time_entries: Zobrazení stráveného času
+ permission_edit_time_entries: Upravování záznamů o stráveném času
+ permission_edit_own_time_entries: Upravování vlastních zázamů o stráveném čase
+ permission_manage_news: Spravování novinek
+ permission_comment_news: Komentování novinek
+ permission_manage_documents: Správa dokumentů
+ permission_view_documents: Prohlížení dokumentů
+ permission_manage_files: Spravování souborů
+ permission_view_files: Prohlížení souborů
+ permission_manage_wiki: Spravování Wiki
+ permission_rename_wiki_pages: Přejmenovávání Wiki stránek
+ permission_delete_wiki_pages: Mazání stránek na Wiki
+ permission_view_wiki_pages: Prohlížení Wiki
+ permission_view_wiki_edits: Prohlížení historie Wiki
+ permission_edit_wiki_pages: Upravování stránek Wiki
+ permission_delete_wiki_pages_attachments: Mazání příloh
+ permission_protect_wiki_pages: Zabezpečení Wiki stránek
+ permission_manage_repository: Spravování repozitáře
+ permission_browse_repository: Procházení repozitáře
+ permission_view_changesets: Zobrazování sady změn
+ permission_commit_access: Commit přístup
+ permission_manage_boards: Správa diskusních fór
+ permission_view_messages: Prohlížení zpráv
+ permission_add_messages: Posílání zpráv
+ permission_edit_messages: Upravování zpráv
+ permission_edit_own_messages: Upravit vlastní zprávy
+ permission_delete_messages: Mazání zpráv
+ permission_delete_own_messages: Smazat vlastní zprávy
+ permission_export_wiki_pages: Exportovat Wiki stránky
+ permission_manage_subtasks: Spravovat podúkoly
project_module_issue_tracking: Sledování úkolů
project_module_time_tracking: Sledování času
@@ -305,10 +431,13 @@
project_module_wiki: Wiki
project_module_repository: Repozitář
project_module_boards: Diskuse
+ project_module_calendar: Kalendář
+ project_module_gantt: Gantt
label_user: Uživatel
label_user_plural: Uživatelé
label_user_new: Nový uživatel
+ label_user_anonymous: Anonymní
label_project: Projekt
label_project_new: Nový projekt
label_project_plural: Projekty
@@ -355,11 +484,13 @@
label_information_plural: Informace
label_please_login: Prosím přihlašte se
label_register: Registrovat
+ label_login_with_open_id_option: nebo se přihlašte s OpenID
label_password_lost: Zapomenuté heslo
label_home: Úvodní
label_my_page: Moje stránka
label_my_account: Můj účet
label_my_projects: Moje projekty
+ label_my_page_block: Bloky na mé stránce
label_administration: Administrace
label_login: Přihlášení
label_logout: Odhlášení
@@ -370,6 +501,7 @@
label_registered_on: Registrován
label_activity: Aktivita
label_overall_activity: Celková aktivita
+ label_user_activity: "Aktivita uživatele: %{value}"
label_new: Nový
label_logged_as: Přihlášen jako
label_environment: Prostředí
@@ -378,6 +510,8 @@
label_auth_source_new: Nový mód autentifikace
label_auth_source_plural: Módy autentifikace
label_subproject_plural: Podprojekty
+ label_subproject_new: Nový podprojekt
+ label_and_its_subprojects: "%{value} a jeho podprojekty"
label_min_max_length: Min - Max délka
label_list: Seznam
label_date: Datum
@@ -411,6 +545,7 @@
label_version: Verze
label_version_new: Nová verze
label_version_plural: Verze
+ label_close_versions: Zavřít dokončené verze
label_confirmation: Potvrzení
label_export_to: 'Také k dispozici:'
label_read: Načítá se...
@@ -469,6 +604,8 @@
label_not_equals: není
label_in_less_than: je měší než
label_in_more_than: je větší než
+ label_greater_or_equal: '>='
+ label_less_or_equal: '<='
label_in: v
label_today: dnes
label_all_time: vše
@@ -491,15 +628,21 @@
label_browse: Procházet
label_modification: "%{count} změna"
label_modification_plural: "%{count} změn"
+ label_branch: Větev
+ label_tag: Tag
label_revision: Revize
label_revision_plural: Revizí
+ label_revision_id: "Revize %{value}"
label_associated_revisions: Související verze
label_added: přidáno
label_modified: změněno
+ label_copied: zkopírováno
+ label_renamed: přejmenováno
label_deleted: odstraněno
label_latest_revision: Poslední revize
label_latest_revision_plural: Poslední revize
label_view_revisions: Zobrazit revize
+ label_view_all_revisions: Zobrazit všechny revize
label_max_size: Maximální velikost
label_sort_highest: Přesunout na začátek
label_sort_higher: Přesunout nahoru
@@ -525,6 +668,7 @@
label_changes_details: Detail všech změn
label_issue_tracking: Sledování úkolů
label_spent_time: Strávený čas
+ label_overall_spent_time: Celkem strávený čas
label_f_hour: "%{value} hodina"
label_f_hour_plural: "%{value} hodin"
label_time_tracking: Sledování času
@@ -545,7 +689,8 @@
label_relation_new: Nová souvislost
label_relation_delete: Odstranit souvislost
label_relates_to: související s
- label_duplicates: duplicity
+ label_duplicates: duplikuje
+ label_duplicated_by: zduplikován
label_blocks: blokuje
label_blocked_by: zablokován
label_precedes: předchází
@@ -561,6 +706,8 @@
label_board: Fórum
label_board_new: Nové fórum
label_board_plural: Fóra
+ label_board_locked: Uzamčeno
+ label_board_sticky: Nálepka
label_topic_plural: Témata
label_message_plural: Zprávy
label_message_last: Poslední zpráva
@@ -576,9 +723,12 @@
label_language_based: Podle výchozího jazyku
label_sort_by: "Seřadit podle %{value}"
label_send_test_email: Poslat testovací email
+ label_feeds_access_key: Přístupový klíč pro RSS
+ label_missing_feeds_access_key: Postrádá přístupový klíč pro RSS
label_feeds_access_key_created_on: "Přístupový klíč pro RSS byl vytvořen před %{value}"
label_module_plural: Moduly
label_added_time_by: "Přidáno uživatelem %{author} před %{age}"
+ label_updated_time_by: "Aktualizováno uživatelem %{author} před %{age}"
label_updated_time: "Aktualizováno před %{value}"
label_jump_to_a_project: Vyberte projekt...
label_file_plural: Soubory
@@ -591,6 +741,10 @@
label_search_titles_only: Vyhledávat pouze v názvech
label_user_mail_option_all: "Pro všechny události všech mých projektů"
label_user_mail_option_selected: "Pro všechny události vybraných projektů..."
+ label_user_mail_option_none: "Žádné události"
+ label_user_mail_option_only_my_events: "Jen pro věci co sleduji nebo jsem v nich zapojen"
+ label_user_mail_option_only_assigned: "Jen pro všeci kterým sem přiřazen"
+ label_user_mail_option_only_owner: "Jen pro věci které vlastním"
label_user_mail_no_self_notified: "Nezasílat informace o mnou vytvořených změnách"
label_registration_activation_by_email: aktivace účtu emailem
label_registration_manual_activation: manuální aktivace účtu
@@ -609,6 +763,40 @@
label_preferences: Nastavení
label_chronological_order: V chronologickém pořadí
label_reverse_chronological_order: V obrácaném chronologickém pořadí
+ label_planning: Plánování
+ label_incoming_emails: Příchozí e-maily
+ label_generate_key: Generovat klíč
+ label_issue_watchers: Sledování
+ label_example: Příklad
+ label_display: Zobrazit
+ label_sort: Řazení
+ label_ascending: Vzestupně
+ label_descending: Sestupně
+ label_date_from_to: Od %{start} do %{end}
+ label_wiki_content_added: Wiki stránka přidána
+ label_wiki_content_updated: Wiki stránka aktualizována
+ label_group: Skupina
+ label_group_plural: Skupiny
+ label_group_new: Nová skupina
+ label_time_entry_plural: Strávený čas
+ label_version_sharing_none: Nesdíleno
+ label_version_sharing_descendants: S podprojekty
+ label_version_sharing_hierarchy: S hierarchií projektu
+ label_version_sharing_tree: Se stromem projektu
+ label_version_sharing_system: Se všemi projekty
+ label_update_issue_done_ratios: Aktualizovat koeficienty dokončení úkolů
+ label_copy_source: Zdroj
+ label_copy_target: Cíl
+ label_copy_same_as_target: Stejný jako cíl
+ label_display_used_statuses_only: Zobrazit pouze stavy které jsou použité touto frontou
+ label_api_access_key: API přístupový klíč
+ label_missing_api_access_key: Chybějící přístupový klíč API
+ label_api_access_key_created_on: API přístupový klíč vytvořen %{value}
+ label_profile: Profil
+ label_subtask_plural: Podúkol
+ label_project_copy_notifications: Odeslat email oznámení v průběhu kopie projektu
+ label_principal_search: "Hledat uživatele nebo skupinu:"
+ label_user_search: "Hledat uživatele:"
button_login: Přihlásit
button_submit: Potvrdit
@@ -617,8 +805,10 @@
button_uncheck_all: Odšrtnout vše
button_delete: Odstranit
button_create: Vytvořit
- button_test: Test
+ button_create_and_continue: Vytvořit a pokračovat
+ button_test: Testovat
button_edit: Upravit
+ button_edit_associated_wikipage: "Upravit přiřazenou Wiki stránku: %{page_title}"
button_add: Přidat
button_change: Změnit
button_apply: Použít
@@ -629,6 +819,7 @@
button_list: Vypsat
button_view: Zobrazit
button_move: Přesunout
+ button_move_and_follow: Přesunout a následovat
button_back: Zpět
button_cancel: Storno
button_activate: Aktivovat
@@ -640,24 +831,40 @@
button_reply: Odpovědět
button_archive: Archivovat
button_unarchive: Odarchivovat
- button_reset: Reset
+ button_reset: Resetovat
button_rename: Přejmenovat
button_change_password: Změnit heslo
button_copy: Kopírovat
+ button_copy_and_follow: Kopírovat a následovat
button_annotate: Komentovat
button_update: Aktualizovat
button_configure: Konfigurovat
+ button_quote: Citovat
+ button_duplicate: Duplikát
+ button_show: Zobrazit
status_active: aktivní
status_registered: registrovaný
status_locked: uzamčený
+ version_status_open: otevřený
+ version_status_locked: uzamčený
+ version_status_closed: zavřený
+
+ field_active: Aktivní
+
text_select_mail_notifications: Vyberte akci při které bude zasláno upozornění emailem.
text_regexp_info: např. ^[A-Z0-9]+$
text_min_max_length_info: 0 znamená bez limitu
text_project_destroy_confirmation: Jste si jisti, že chcete odstranit tento projekt a všechna související data ?
+ text_subprojects_destroy_warning: "Jeho podprojek(y): %{value} budou také smazány."
text_workflow_edit: Vyberte roli a frontu k editaci průběhu práce
text_are_you_sure: Jste si jisti?
+ text_are_you_sure_with_children: Smazat úkol včetně všech podúkolů?
+ text_journal_changed: "%{label} změněn z %{old} na %{new}"
+ text_journal_set_to: "%{label} nastaven na %{value}"
+ text_journal_deleted: "%{label} smazán (%{old})"
+ text_journal_added: "%{label} %{value} přidán"
text_tip_issue_begin_day: úkol začíná v tento den
text_tip_issue_end_day: úkol končí v tento den
text_tip_issue_begin_end_day: úkol začíná a končí v tento den
@@ -668,6 +875,7 @@
text_tracker_no_workflow: Pro tuto frontu není definován žádný průběh práce
text_unallowed_characters: Nepovolené znaky
text_comma_separated: Povoleno více hodnot (oddělěné čárkou).
+ text_line_separated: Více hodnot povoleno (jeden řádek pro každou hodnotu).
text_issues_ref_in_commit_messages: Odkazování a opravování úkolů ve zprávách commitů
text_issue_added: "Úkol %{id} byl vytvořen uživatelem %{author}."
text_issue_updated: "Úkol %{id} byl aktualizován uživatelem %{author}."
@@ -679,15 +887,31 @@
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_status_changed_by_changeset: "Použito v changesetu %{value}."
+ text_time_logged_by_changeset: Aplikováno 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:'
text_default_administrator_account_changed: Výchozí nastavení administrátorského účtu změněno
text_file_repository_writable: Povolen zápis do adresáře ukládání souborů
+ text_plugin_assets_writable: Možnost zápisu do adresáře plugin assets
text_rmagick_available: RMagick k dispozici (volitelné)
text_destroy_time_entries_question: "U úkolů, které chcete odstranit je evidováno %{hours} práce. Co chete udělat?"
text_destroy_time_entries: Odstranit evidované hodiny.
text_assign_time_entries_to_project: Přiřadit evidované hodiny projektu
text_reassign_time_entries: 'Přeřadit evidované hodiny k tomuto úkolu:'
+ text_user_wrote: "%{value} napsal:"
+ text_enumeration_destroy_question: "Několik (%{count}) objektů je přiřazeno k této hodnotě."
+ text_enumeration_category_reassign_to: 'Přeřadit je do této:'
+ text_email_delivery_not_configured: "Doručování e-mailů není nastaveno a odesílání notifikací je zakázáno.\nNastavte Váš SMTP server v souboru config/email.yml a restartujte aplikaci."
+ text_repository_usernames_mapping: "Vybrat nebo upravit mapování mezi Redmine uživateli a uživatelskými jmény nalezenými v logu repozitáře.\nUživatelé se shodným Redmine uživatelským jménem a uživatelským jménem v repozitáři jsou mapovaní automaticky."
+ text_diff_truncated: '... Rozdílový soubor je zkrácen, protože jeho délka přesahuje max. limit.'
+ text_custom_field_possible_values_info: 'Každá hodnota na novém řádku'
+ text_wiki_page_destroy_question: Tato stránka má %{descendants} podstránek a potomků. Co chcete udělat?
+ text_wiki_page_nullify_children: Ponechat podstránky jako kořenové stránky
+ text_wiki_page_destroy_children: Smazat podstránky a všechny jejich potomky
+ text_wiki_page_reassign_children: Přiřadit podstránky k tomuto rodiči
+ text_own_membership_delete_confirmation: "Chystáte se odebrat si některá nebo všechny svá oprávnění a potom již nemusíte být schopni upravit tento projekt.\nOpravdu chcete pokračovat?"
+ text_zoom_in: Přiblížit
+ text_zoom_out: Oddálit
default_role_manager: Manažer
default_role_developer: Vývojář
@@ -714,225 +938,9 @@
enumeration_issue_priorities: Priority úkolů
enumeration_doc_categories: Kategorie dokumentů
enumeration_activities: Aktivity (sledování času)
- error_scm_annotate: "Položka neexistuje nebo nemůže být komentována."
- label_planning: Plánování
- text_subprojects_destroy_warning: "Jeho podprojek(y): %{value} budou také smazány."
- label_and_its_subprojects: "%{value} a jeho podprojekty"
- mail_body_reminder: "%{count} úkol(ů), které máte přiřazeny má termín během několik dní (%{days}):"
- mail_subject_reminder: "%{count} úkol(ů) má termín během několik dní (%{days})"
- text_user_wrote: "%{value} napsal:"
- label_duplicated_by: duplikováno od
- setting_enabled_scm: Povolené SCM
- text_enumeration_category_reassign_to: 'Přeřadit je do této:'
- text_enumeration_destroy_question: "Několik (%{count}) objektů je přiřazeno k této hodnotě."
- label_incoming_emails: Příchozí e-maily
- label_generate_key: Generovat klíč
- setting_mail_handler_api_enabled: Povolit WS pro příchozí e-maily
- setting_mail_handler_api_key: API klíč
- text_email_delivery_not_configured: "Doručování e-mailů není nastaveno a odesílání notifikací je zakázáno.\nNastavte Váš SMTP server v souboru config/configuration.yml a restartujte aplikaci."
- field_parent_title: Rodičovská stránka
- label_issue_watchers: Sledování
- setting_commit_logs_encoding: Kódování zpráv při commitu
- button_quote: Citovat
- setting_sequential_project_identifiers: Generovat sekvenční identifikátory projektů
- notice_unable_delete_version: Nemohu odstanit verzi
- label_renamed: přejmenováno
- label_copied: zkopírováno
- setting_plain_text_mail: pouze prostý text (ne HTML)
- permission_view_files: Prohlížení souborů
- permission_edit_issues: Upravování úkolů
- permission_edit_own_time_entries: Upravování vlastních zázamů o stráveném čase
- permission_manage_public_queries: Správa veřejných dotazů
- permission_add_issues: Přidávání úkolů
- permission_log_time: Zaznamenávání stráveného času
- permission_view_changesets: Zobrazování sady změn
- permission_view_time_entries: Zobrazení stráveného času
- permission_manage_versions: Spravování verzí
- permission_manage_wiki: Spravování Wiki
- permission_manage_categories: Spravování kategorií úkolů
- permission_protect_wiki_pages: Zabezpečení Wiki stránek
- permission_comment_news: Komentování novinek
- permission_delete_messages: Mazání zpráv
- permission_select_project_modules: Výběr modulů projektu
- permission_manage_documents: Správa dokumentů
- permission_edit_wiki_pages: Upravování stránek Wiki
- 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ů
- permission_manage_issue_relations: Spravování vztahů mezi úkoly
- permission_delete_wiki_pages: Mazání stránek na Wiki
- permission_manage_boards: Správa diskusních fór
- permission_delete_wiki_pages_attachments: Mazání příloh
- permission_view_wiki_edits: Prohlížení historie Wiki
- permission_add_messages: Posílání zpráv
- permission_view_messages: Prohlížení zpráv
- permission_manage_files: Spravování souborů
- permission_edit_issue_notes: Upravování poznámek
- permission_manage_news: Spravování novinek
- permission_view_calendar: Prohlížení kalendáře
- permission_manage_members: Spravování členství
- permission_edit_messages: Upravování zpráv
- permission_delete_issues: Mazání úkolů
- permission_view_issue_watchers: Zobrazení seznamu sledujícíh uživatelů
- permission_manage_repository: Spravování repozitáře
- permission_commit_access: Commit přístup
- permission_browse_repository: Procházení repozitáře
- permission_view_documents: Prohlížení dokumentů
- permission_edit_project: Úprava projektů
- permission_add_issue_notes: Přidávání poznámek
- permission_save_queries: Ukládání dotazů
- permission_view_wiki_pages: Prohlížení Wiki
- permission_rename_wiki_pages: Přejmenovávání Wiki stránek
- permission_edit_time_entries: Upravování záznamů o stráveném času
- permission_edit_own_issue_notes: Upravování vlastních poznámek
- setting_gravatar_enabled: Použít uživatelské ikony Gravatar
- label_example: Příklad
- text_repository_usernames_mapping: "Vybrat nebo upravit mapování mezi Redmine uživateli a uživatelskými jmény nalezenými v logu repozitáře.\nUživatelé se shodným Redmine uživatelským jménem a uživatelským jménem v repozitáři jsou mapovaní automaticky."
- permission_edit_own_messages: Upravit vlastní zprávy
- permission_delete_own_messages: Smazat vlastní zprávy
- label_user_activity: "Aktivita uživatele: %{value}"
- label_updated_time_by: "Akutualizováno: %{author} před: %{age}"
- text_diff_truncated: '... Rozdílový soubor je zkrácen, protože jeho délka přesahuje max. limit.'
- setting_diff_max_lines_displayed: Maximální počet zobrazenách řádků rozdílů
- text_plugin_assets_writable: Možnost zápisu do adresáře plugin assets
- warning_attachments_not_saved: "%{count} soubor(ů) nebylo možné uložit."
- button_create_and_continue: Vytvořit a pokračovat
- text_custom_field_possible_values_info: 'Každá hodnota na novém řádku'
- label_display: Zobrazit
- field_editable: Editovatelný
- setting_repository_log_display_limit: Maximální počet revizí zobrazených v logu souboru
- setting_file_max_size_displayed: Maximální velikost textových souborů zobrazených přímo na stránce
- field_watcher: Sleduje
- setting_openid: Umožnit přihlašování a registrace s OpenID
- field_identity_url: OpenID URL
- label_login_with_open_id_option: nebo se přihlašte s OpenID
- field_content: Obsah
- label_descending: Sestupně
- label_sort: Řazení
- label_ascending: Vzestupně
- label_date_from_to: Od %{start} do %{end}
- label_greater_or_equal: ">="
- label_less_or_equal: <=
- text_wiki_page_destroy_question: Tato stránka má %{descendants} podstránek a potomků. Co chcete udělat?
- text_wiki_page_reassign_children: Přiřadit podstránky k tomuto rodiči
- text_wiki_page_nullify_children: Ponechat podstránky jako kořenové stránky
- text_wiki_page_destroy_children: Smazat podstránky a všechny jejich potomky
- setting_password_min_length: Minimální délka hesla
- field_group_by: Seskupovat výsledky podle
- mail_subject_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována"
- label_wiki_content_added: Wiki stránka přidána
- mail_subject_wiki_content_added: "'%{id}' Wiki stránka byla přidána"
- mail_body_wiki_content_added: "'%{id}' Wiki stránka byla přidána od %{author}."
- label_wiki_content_updated: Wiki stránka aktualizována
- mail_body_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována od %{author}."
- permission_add_project: Vytvořit projekt
- setting_new_project_user_role_id: Role přiřazená uživateli bez práv administrátora, který projekt vytvořil
- label_view_all_revisions: Zobrazit všechny revize
- label_tag: Tag
- label_branch: Branch
- error_no_tracker_in_project: Žádná fronta nebyla přiřazena tomuto projektu. Prosím zkontroluje nastavení projektu.
- error_no_default_issue_status: Není nastaven výchozí stav úkolu. Prosím zkontrolujte nastavení ("Administrace -> Stavy úkolů").
- text_journal_changed: "%{label} změněn z %{old} na %{new}"
- text_journal_set_to: "%{label} nastaven na %{value}"
- text_journal_deleted: "%{label} smazán (%{old})"
- label_group_plural: Skupiny
- label_group: Skupina
- label_group_new: Nová skupina
- label_time_entry_plural: Strávený čas
- text_journal_added: "%{label} %{value} přidán"
- field_active: Aktivní
enumeration_system_activity: Systémová aktivita
- permission_delete_issue_watchers: Smazat přihlížející
- version_status_closed: zavřený
- version_status_locked: uzamčený
- version_status_open: otevřený
- error_can_not_reopen_issue_on_closed_version: Úkol přiřazený k uzavřené verzi nemůže být znovu otevřen
- label_user_anonymous: Anonymní
- button_move_and_follow: Přesunout a následovat
- setting_default_projects_modules: Výchozí zapnutné moduly pro nový projekt
- setting_gravatar_default: Výchozí Gravatar
- field_sharing: Sdílení
- label_version_sharing_hierarchy: S hierarchií projektu
- label_version_sharing_system: Se všemi projekty
- label_version_sharing_descendants: S podprojekty
- label_version_sharing_tree: Se stromem projektu
- label_version_sharing_none: Nesdíleno
- error_can_not_archive_project: Tento projekt nemůže být archivován
- button_duplicate: Duplikát
- button_copy_and_follow: Kopírovat a následovat
- label_copy_source: Zdroj
- setting_issue_done_ratio: Spočítat koeficient dokončení úkolu s
- setting_issue_done_ratio_issue_status: Použít stav úkolu
- error_issue_done_ratios_not_updated: Koeficient dokončení úkolu nebyl aktualizován.
- error_workflow_copy_target: Prosím vyberte cílovou frontu(y) a roly(e)
- setting_issue_done_ratio_issue_field: Použít pole úkolu
- label_copy_same_as_target: Stejný jako cíl
- label_copy_target: Cíl
- notice_issue_done_ratios_updated: Koeficienty dokončení úkolu byly aktualizovány.
- error_workflow_copy_source: Prosím vyberte zdrojovou frontu nebo roly
- label_update_issue_done_ratios: Aktualizovat koeficienty dokončení úkolů
- setting_start_of_week: Začínat kalendáře
- permission_view_issues: Zobrazit úkoly
- label_display_used_statuses_only: Zobrazit pouze stavy které jsou použité touto frontou
- label_revision_id: Revize %{value}
- label_api_access_key: API přístupový klíč
- label_api_access_key_created_on: API přístupový klíč vytvořen %{value}
- label_feeds_access_key: RSS přístupový klíč
- notice_api_access_key_reseted: Váš API přístupový klíč byl resetován.
- setting_rest_api_enabled: Zapnout službu REST
- label_missing_api_access_key: Chybějící přístupový klíč API
- label_missing_feeds_access_key: Chybějící přístupový klíč RSS
- button_show: Zobrazit
- text_line_separated: Více hodnot povoleno (jeden řádek pro každou hodnotu).
- setting_mail_handler_body_delimiters: Zkrátit e-maily po jednom z těchto řádků
- permission_add_subprojects: Vytvořit podprojekty
- label_subproject_new: Nový podprojekt
- text_own_membership_delete_confirmation: |-
- Chystáte se odebrat si některá nebo všechny svá oprávnění a potom již nemusíte být schopni upravit tento projekt.
- Opravdu chcete pokračovat?
- label_close_versions: Zavřít dokončené verze
- label_board_sticky: Nálepka
- label_board_locked: Uzamčeno
- permission_export_wiki_pages: Exportovat Wiki stránky
- setting_cache_formatted_text: Ukládat formátovaný text do vyrovnávací paměti
- permission_manage_project_activities: Spravovat aktivity projektu
- error_unable_delete_issue_status: Nelze smazat stavy úkolů
- label_profile: Profil
- permission_manage_subtasks: Spravovat podúkoly
- field_parent_issue: Rodičovský úkol
- label_subtask_plural: Podúkol
- label_project_copy_notifications: Odeslat email oznámení v průběhu kopie projektu
- error_can_not_delete_custom_field: Nelze smazat volitelné pole
- error_unable_to_connect: Nelze se připojit (%{value})
- error_can_not_remove_role: Tato role je právě používaná a nelze ji smazat.
- error_can_not_delete_tracker: Tato fronta obsahuje úkoly a nemůže být smazán.
- field_principal: Hlavní
- label_my_page_block: Bloky na mé stránce
- notice_failed_to_save_members: "Nepodařilo se uložit člena(y): %{errors}."
- text_zoom_out: Oddálit
- text_zoom_in: Přiblížit
- notice_unable_delete_time_entry: Nelze smazat čas ze záznamu.
- label_overall_spent_time: Celkově strávený čas
- field_time_entries: Zaznamenaný čas
- project_module_gantt: Gantt
- project_module_calendar: Kalendář
- button_edit_associated_wikipage: "Upravit přiřazenou Wiki stránku: %{page_title}"
- text_are_you_sure_with_children: Smazat úkol včetně všech podúkolů?
- field_text: Textové pole
- label_user_mail_option_only_owner: Only for things I am the owner of
- setting_default_notification_option: Default notification option
- label_user_mail_option_only_my_events: Only for things I watch or I'm involved in
- label_user_mail_option_only_assigned: Only for things I am assigned to
- label_user_mail_option_none: No events
- field_member_of_group: Assignee's group
- field_assigned_to_role: Assignee's role
- 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:"
- field_visible: Visible
- setting_emails_header: Emails header
- setting_commit_logtime_activity_id: Activity for logged time
- text_time_logged_by_changeset: Applied in changeset %{value}.
- setting_commit_logtime_enabled: Enable time logging
- notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
- setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/da.yml.svn-base
--- a/config/locales/.svn/text-base/da.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/da.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -952,3 +952,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/de.yml.svn-base
--- a/config/locales/.svn/text-base/de.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/de.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -953,3 +953,7 @@
setting_commit_logtime_enabled: Aktiviere Zeitlogging
notice_gantt_chart_truncated: Die Grafik ist unvollständig, da das Maximum der anzeigbaren Aufgaben überschritten wurde (%{max})
setting_gantt_items_limit: Maximale Anzahl von Aufgaben die im Gantt-Chart angezeigt werden.
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/el.yml.svn-base
--- a/config/locales/.svn/text-base/el.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/el.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -936,3 +936,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/en-GB.yml.svn-base
--- a/config/locales/.svn/text-base/en-GB.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/en-GB.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -940,3 +940,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/en.yml.svn-base
--- a/config/locales/.svn/text-base/en.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/en.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -303,6 +303,7 @@
field_assigned_to_role: "Assignee's role"
field_text: Text field
field_visible: Visible
+ field_warn_on_leaving_unsaved: "Warn me when leaving a page with unsaved text"
setting_app_title: Application title
setting_app_subtitle: Application subtitle
@@ -594,6 +595,7 @@
label_query: Custom query
label_query_plural: Custom queries
label_query_new: New query
+ label_my_queries: My custom queries
label_filter_add: Add filter
label_filter_plural: Filters
label_equals: is
@@ -858,6 +860,7 @@
text_are_you_sure: Are you sure ?
text_are_you_sure_with_children: "Delete issue and all child issues?"
text_journal_changed: "%{label} changed from %{old} to %{new}"
+ text_journal_changed_no_detail: "%{label} updated"
text_journal_set_to: "%{label} set to %{value}"
text_journal_deleted: "%{label} deleted (%{old})"
text_journal_added: "%{label} %{value} added"
@@ -908,6 +911,7 @@
text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?"
text_zoom_in: Zoom in
text_zoom_out: Zoom out
+ text_warn_on_leaving_unsaved: "The current page contains unsaved text that will be lost if you leave this page."
default_role_manager: Manager
default_role_developer: Developer
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/es.yml.svn-base
--- a/config/locales/.svn/text-base/es.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/es.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -973,3 +973,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/eu.yml.svn-base
--- a/config/locales/.svn/text-base/eu.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/eu.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -99,8 +99,8 @@
errors:
template:
header:
- one: "1 error prohibited this %{model} from being saved"
- other: "%{count} errors prohibited this %{model} from being saved"
+ one: "Errore batek %{model} hau godetzea galarazi du."
+ other: "%{count} errorek %{model} hau gordetzea galarazi dute."
messages:
inclusion: "ez dago zerrendan"
exclusion: "erreserbatuta dago"
@@ -125,7 +125,7 @@
greater_than_start_date: "hasiera data baino handiagoa izan behar du"
not_same_project: "ez dago proiektu berdinean"
circular_dependency: "Erlazio honek mendekotasun zirkular bat sortuko luke"
- cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
+ cant_link_an_issue_with_a_descendant: "Zeregin bat ezin da bere azpiataza batekin estekatu."
actionview_instancetag_blank_option: Hautatu mesedez
@@ -277,7 +277,7 @@
field_issue_to: Erlazionatutako zereginak
field_delay: Atzerapena
field_assignable: Arazoak rol honetara esleitu daitezke
- field_redirect_existing_links: Existitzen diren estelak berbideratu
+ field_redirect_existing_links: Existitzen diren estekak berbideratu
field_estimated_hours: Estimatutako denbora
field_column_names: Zutabeak
field_time_zone: Ordu zonaldea
@@ -318,7 +318,7 @@
setting_cross_project_issue_relations: Zereginak proiektuen artean erlazionatzea baimendu
setting_issue_list_default_columns: Zereginen zerrendan defektuz ikusten diren zutabeak
setting_repositories_encodings: Biltegien kodeketak
- setting_commit_logs_encoding: Commit-en mezuen kodetzea
+ setting_commit_logs_encoding: Commit-en egunkarien kodetzea
setting_emails_footer: Eposten oina
setting_protocol: Protokoloa
setting_per_page_options: Orriko objektuen aukerak
@@ -363,7 +363,7 @@
permission_delete_issues: Zereginak ezabatu
permission_manage_public_queries: Galdera publikoak kudeatu
permission_save_queries: Galderak gorde
- permission_view_gantt: Gantt diagrama ikusi
+ permission_view_gantt: Gantt grafikoa ikusi
permission_view_calendar: Egutegia ikusi
permission_view_issue_watchers: Behatzaileen zerrenda ikusi
permission_add_issue_watchers: Behatzaileak gehitu
@@ -441,7 +441,7 @@
label_tracker: Aztarnaria
label_tracker_plural: Aztarnariak
label_tracker_new: Aztarnari berria
- label_workflow: Workflow
+ label_workflow: Lan-fluxua
label_issue_status: Zeregin egoera
label_issue_status_plural: Zeregin egoerak
label_issue_status_new: Egoera berria
@@ -506,7 +506,7 @@
label_file_added: Fitxategia gehituta
label_report: Berri ematea
label_report_plural: Berri emateak
- label_news: Beria
+ label_news: Berria
label_news_new: Berria gehitu
label_news_plural: Berriak
label_news_latest: Azken berriak
@@ -553,7 +553,7 @@
label_add_note: Oharra gehitu
label_per_page: Orriko
label_calendar: Egutegia
- label_months_from: months from
+ label_months_from: hilabete noiztik
label_gantt: Gantt
label_internal: Barnekoa
label_last_changes: "azken %{count} aldaketak"
@@ -784,7 +784,7 @@
button_cancel: Ezeztatu
button_activate: Gahitu
button_sort: Ordenatu
- button_log_time: Denbora apuntatu
+ button_log_time: Denbora erregistratu
button_rollback: Itzuli bertsio honetara
button_watch: Behatu
button_unwatch: Behatzen utzi
@@ -824,9 +824,9 @@
text_journal_set_to: "%{label}-k %{value} balioa hartu du"
text_journal_deleted: "%{label} ezabatuta (%{old})"
text_journal_added: "%{label} %{value} gehituta"
- text_tip_issue_begin_day: gaur hasten diren atazak
- text_tip_issue_end_day: gaur bukatzen diren atazak
- text_tip_issue_begin_end_day: gaur hasi eta bukatzen diren atazak
+ text_tip_issue_begin_day: gaur hasten diren zereginak
+ text_tip_issue_end_day: gaur bukatzen diren zereginak
+ text_tip_issue_begin_end_day: gaur hasi eta bukatzen diren zereginak
text_project_identifier_info: 'Letra xeheak (a-z), zenbakiak eta marrak erabil daitezke bakarrik.
Gorde eta gero identifikadorea ezin da aldatu.'
text_caracters_maximum: "%{count} karaktere gehienez."
text_caracters_minimum: "Gutxienez %{count} karaktereetako luzerakoa izan behar du."
@@ -895,7 +895,7 @@
enumeration_doc_categories: Dokumentu kategoriak
enumeration_activities: Jarduerak (denbora kontrola))
enumeration_system_activity: Sistemako Jarduera
- label_board_sticky: Itxaskorra
+ label_board_sticky: Itsaskorra
label_board_locked: Blokeatuta
permission_export_wiki_pages: Wiki orriak esportatu
setting_cache_formatted_text: Formatudun testua katxeatu
@@ -903,40 +903,44 @@
error_unable_delete_issue_status: Ezine da zereginaren egoera ezabatu
label_profile: Profila
permission_manage_subtasks: Azpiatazak kudeatu
- field_parent_issue: Guraso ataza
+ field_parent_issue: Zeregin gurasoa
label_subtask_plural: Azpiatazak
label_project_copy_notifications: Proiektua kopiatzen den bitartean eposta jakinarazpenak bidali
- error_can_not_delete_custom_field: Ezin da eremu pertsonallizatua ezabatu
+ error_can_not_delete_custom_field: Ezin da eremu pertsonalizatua ezabatu
error_unable_to_connect: Ezin da konektatu (%{value})
error_can_not_remove_role: Rol hau erabiltzen hari da eta ezin da ezabatu.
error_can_not_delete_tracker: Aztarnari honek zereginak ditu eta ezin da ezabatu.
- field_principal: Principal
- label_my_page_block: My page block
- notice_failed_to_save_members: "Failed to save member(s): %{errors}."
- text_zoom_out: Zoom out
- text_zoom_in: Zoom in
- notice_unable_delete_time_entry: Unable to delete time log entry.
- label_overall_spent_time: Overall spent time
- field_time_entries: Log time
+ field_principal: Ekintzaile
+ label_my_page_block: "Nire orriko blokea"
+ notice_failed_to_save_members: "Kidea(k) gordetzean errorea: %{errors}."
+ text_zoom_out: Zooma txikiagotu
+ text_zoom_in: Zooma handiagotu
+ notice_unable_delete_time_entry: "Ezin da hautatutako denbora erregistroa ezabatu."
+ label_overall_spent_time: Igarotako denbora guztira
+ field_time_entries: "Denbora erregistratu"
project_module_gantt: Gantt
- project_module_calendar: Calendar
- button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}"
- text_are_you_sure_with_children: Delete issue and all child issues?
- field_text: Text field
- label_user_mail_option_only_owner: Only for things I am the owner of
- setting_default_notification_option: Default notification option
- label_user_mail_option_only_my_events: Only for things I watch or I'm involved in
- label_user_mail_option_only_assigned: Only for things I am assigned to
- label_user_mail_option_none: No events
- field_member_of_group: Assignee's group
- field_assigned_to_role: Assignee's role
- 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:"
- field_visible: Visible
- setting_emails_header: Emails header
- setting_commit_logtime_activity_id: Activity for logged time
- text_time_logged_by_changeset: Applied in changeset %{value}.
- setting_commit_logtime_enabled: Enable time logging
- notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
- setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ project_module_calendar: Egutegia
+ button_edit_associated_wikipage: "Esleitutako wiki orria editatu: %{page_title}"
+ text_are_you_sure_with_children: "Zeregina eta azpi zeregin guztiak ezabatu?"
+ field_text: Testu eremua
+ label_user_mail_option_only_owner: "Jabea naizen gauzetarako barrarik"
+ setting_default_notification_option: "Lehenetsitako ohartarazpen aukera"
+ label_user_mail_option_only_my_events: "Behatzen ditudan edo partaide naizen gauzetarako bakarrik"
+ label_user_mail_option_only_assigned: "Niri esleitutako gauzentzat bakarrik"
+ label_user_mail_option_none: "Gertakaririk ez"
+ field_member_of_group: "Esleituta duenaren taldea"
+ field_assigned_to_role: "Esleituta duenaren rola"
+ notice_not_authorized_archived_project: "Atzitu nahi duzun proiektua artxibatua izan da."
+ label_principal_search: "Bilatu erabiltzaile edo taldea:"
+ label_user_search: "Erabiltzailea bilatu:"
+ field_visible: Ikusgai
+ setting_emails_header: "Eposten goiburua"
+ setting_commit_logtime_activity_id: "Erregistratutako denboraren jarduera"
+ text_time_logged_by_changeset: "%{value} aldaketan egindakoa."
+ setting_commit_logtime_enabled: "Erregistrutako denbora gaitu"
+ notice_gantt_chart_truncated: Grafikoa moztu da bistara daitekeen elementuen kopuru maximoa gainditu delako (%{max})
+ setting_gantt_items_limit: "Gantt grafikoan bistara daitekeen elementu kopuru maximoa"
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/fa.yml.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/config/locales/.svn/text-base/fa.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,945 @@
+fa:
+ # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl)
+ direction: rtl
+ date:
+ formats:
+ # Use the strftime parameters for formats.
+ # When no format has been given, it uses default.
+ # You can provide other formats here if you like!
+ default: "%Y/%m/%d"
+ short: "%b %d"
+ long: "%B %d, %Y"
+
+ day_names: [یکشنبه, دوشنبه, سهشنبه, چهارشنبه, پنجشنبه, آدینه, شنبه]
+ abbr_day_names: [یک, دو, سه, چهار, پنج, آدینه, شنبه]
+
+ # Don't forget the nil at the beginning; there's no such thing as a 0th month
+ month_names: [~, ژانویه, فوریه, مارس, آوریل, مه, ژوئن, ژوئیه, اوت, سپتامبر, اکتبر, نوامبر, دسامبر]
+ abbr_month_names: [~, ژان, فور, مار, آور, مه, ژوئن, ژوئیه, اوت, سپت, اکت, نوا, دسا]
+ # Used in date_select and datime_select.
+ order: [ :year, :month, :day ]
+
+ time:
+ formats:
+ default: "%Y/%m/%d %p %I:%M"
+ time: "%p %I:%M"
+ short: "%d %b %H:%M"
+ long: "%B %d, %Y %H:%M"
+ am: "ق.ظ"
+ pm: "ب.ظ"
+
+ datetime:
+ distance_in_words:
+ half_a_minute: "نیم دقیقه"
+ less_than_x_seconds:
+ one: "کمتر از 1 ثانیه"
+ other: "کمتر از %{count} ثانیه"
+ x_seconds:
+ one: "1 ثانیه"
+ other: "%{count} ثانیه"
+ less_than_x_minutes:
+ one: "کمتر از 1 دقیقه"
+ other: "کمتر از %{count} دقیقه"
+ x_minutes:
+ one: "1 دقیقه"
+ other: "%{count} دقیقه"
+ about_x_hours:
+ one: "نزدیک 1 ساعت"
+ other: "نزدیک %{count} ساعت"
+ x_days:
+ one: "1 روز"
+ other: "%{count} روز"
+ about_x_months:
+ one: "نزدیک 1 ماه"
+ other: "نزدیک %{count} ماه"
+ x_months:
+ one: "1 ماه"
+ other: "%{count} ماه"
+ about_x_years:
+ one: "نزدیک 1 سال"
+ other: "نزدیک %{count} سال"
+ over_x_years:
+ one: "بیش از 1 سال"
+ other: "بیش از %{count} سال"
+ almost_x_years:
+ one: "نزدیک 1 سال"
+ other: "نزدیک %{count} سال"
+
+ number:
+ # Default format for numbers
+ format:
+ separator: "٫"
+ delimiter: ""
+ precision: 3
+ human:
+ format:
+ delimiter: ""
+ precision: 1
+ storage_units:
+ format: "%n %u"
+ units:
+ byte:
+ one: "بایت"
+ other: "بایت"
+ kb: "کیلوبایت"
+ mb: "مگابایت"
+ gb: "گیگابایت"
+ tb: "ترابایت"
+
+
+# Used in array.to_sentence.
+ support:
+ array:
+ sentence_connector: "و"
+ skip_last_comma: false
+
+ activerecord:
+ errors:
+ template:
+ header:
+ one: "1 ایراد از ذخیره سازی این %{model} جلوگیری کرد"
+ other: "%{count} ایراد از ذخیره سازی این %{model} جلوگیری کرد"
+ messages:
+ inclusion: "در فهرست نیامده است"
+ exclusion: "رزرو شده است"
+ invalid: "نادرست است"
+ confirmation: "با بررسی سازگاری ندارد"
+ accepted: "باید پذیرفته شود"
+ empty: "نمیتواند تهی باشد"
+ blank: "نمیتواند تهی باشد"
+ too_long: "خیلی بلند است (بیشترین اندازه %{count} نویسه است)"
+ too_short: "خیلی کوتاه است (کمترین اندازه %{count} نویسه است)"
+ wrong_length: "اندازه نادرست است (باید %{count} نویسه باشد)"
+ taken: "پیش از این گرفته شده است"
+ not_a_number: "شماره درستی نیست"
+ not_a_date: "تاریخ درستی نیست"
+ greater_than: "باید بزرگتر از %{count} باشد"
+ greater_than_or_equal_to: "باید بزرگتر از یا برابر با %{count} باشد"
+ equal_to: "باید برابر با %{count} باشد"
+ less_than: "باید کمتر از %{count} باشد"
+ less_than_or_equal_to: "باید کمتر از یا برابر با %{count} باشد"
+ odd: "باید فرد باشد"
+ even: "باید زوج باشد"
+ greater_than_start_date: "باید از تاریخ آغاز بزرگتر باشد"
+ not_same_project: "به همان پروژه وابسته نیست"
+ circular_dependency: "این وابستگی یک وابستگی دایره وار خواهد ساخت"
+ cant_link_an_issue_with_a_descendant: "یک پیامد نمیتواند به یکی از زیر کارهایش پیوند بخورد"
+
+ actionview_instancetag_blank_option: گزینش کنید
+
+ general_text_No: 'خیر'
+ general_text_Yes: 'آری'
+ general_text_no: 'خیر'
+ general_text_yes: 'آری'
+ general_lang_name: 'Persian (پارسی)'
+ general_csv_separator: ','
+ general_csv_decimal_separator: '.'
+ general_csv_encoding: UTF-8
+ general_pdf_encoding: UTF-8
+ general_first_day_of_week: '6'
+
+ notice_account_updated: حساب شما بروز شد.
+ notice_account_invalid_creditentials: نام کاربری یا گذرواژه نادرست است
+ notice_account_password_updated: گذرواژه بروز شد
+ notice_account_wrong_password: گذرواژه نادرست است
+ notice_account_register_done: حساب ساخته شد. برای فعال نمودن آن، روی پیوندی که به شما ایمیل شده کلیک کنید.
+ notice_account_unknown_email: کاربر شناخته نشد.
+ notice_can_t_change_password: این حساب یک روش شناسایی بیرونی را به کار گرفته است. گذرواژه را نمیتوان جایگزین کرد.
+ notice_account_lost_email_sent: یک ایمیل با راهنمایی درباره گزینش گذرواژه تازه برای شما فرستاده شد.
+ notice_account_activated: حساب شما فعال شده است. اکنون میتوانید وارد شوید.
+ notice_successful_create: با موفقیت ساخته شد.
+ notice_successful_update: با موفقیت بروز شد.
+ notice_successful_delete: با موفقیت برداشته شد.
+ notice_successful_connection: با موفقیت متصل شد.
+ notice_file_not_found: برگه درخواستی شما در دسترس نیست یا پاک شده است.
+ notice_locking_conflict: دادهها را کاربر دیگری بروز کرده است.
+ notice_not_authorized: شما به این برگه دسترسی ندارید.
+ notice_not_authorized_archived_project: پروژه درخواستی شما بایگانی شده است.
+ notice_email_sent: "یک ایمیل به %{value} فرستاده شد."
+ notice_email_error: "یک ایراد در فرستادن ایمیل پیش آمد (%{value})."
+ notice_feeds_access_key_reseted: کلید دسترسی RSS شما بازنشانی شد.
+ notice_api_access_key_reseted: کلید دسترسی API شما بازنشانی شد.
+ notice_failed_to_save_issues: "ذخیره سازی %{count} پیامد از %{total} پیامد گزینش شده شکست خورد: %{ids}."
+ notice_failed_to_save_members: "ذخیره سازی اعضا شکست خورد: %{errors}."
+ notice_no_issue_selected: "هیچ پیامدی برگزیده نشده است! پیامدهایی که میخواهید ویرایش کنید را برگزینید."
+ notice_account_pending: "حساب شما ساخته شد و اکنون چشم به راه روادید سرپرست است."
+ notice_default_data_loaded: پیکربندی پیشگزیده با موفقیت بار شد.
+ notice_unable_delete_version: نگارش را نمیتوان پاک کرد.
+ notice_unable_delete_time_entry: زمان گزارش شده را نمیتوان پاک کرد.
+ notice_issue_done_ratios_updated: اندازه انجام شده پیامد بروز شد.
+ notice_gantt_chart_truncated: "نمودار بریده شد چون از بیشترین شماری که میتوان نشان داد بزگتر است (%{max})."
+
+ error_can_t_load_default_data: "پیکربندی پیشگزیده نمیتواند بار شود: %{value}"
+ error_scm_not_found: "بخش یا نگارش در انباره پیدا نشد."
+ error_scm_command_failed: "ایرادی در دسترسی به انباره پیش آمد: %{value}"
+ error_scm_annotate: "بخش پیدا نشد یا نمیتوان برای آن یادداشت نوشت."
+ error_issue_not_found_in_project: 'پیامد پیدا نشد یا به این پروژه وابسته نیست.'
+ error_no_tracker_in_project: 'هیچ پیگردی به این پروژه پیوسته نشده است. پیکربندی پروژه را بررسی کنید.'
+ error_no_default_issue_status: 'هیچ وضعیت پیامد پیشگزیدهای مشخص نشده است. پیکربندی را بررسی کنید (به «پیکربندی -> وضعیتهای پیامد» بروید).'
+ error_can_not_delete_custom_field: فیلد سفارشی را نمیتوان پاک کرد.
+ error_can_not_delete_tracker: "این پیگرد دارای پیامد است و نمیتوان آن را پاک کرد."
+ error_can_not_remove_role: "این نقش به کار گرفته شده است و نمیتوان آن را پاک کرد."
+ error_can_not_reopen_issue_on_closed_version: 'یک پیامد که به یک نگارش بسته شده وابسته است را نمیتوان باز کرد.'
+ error_can_not_archive_project: این پروژه را نمیتوان بایگانی کرد.
+ error_issue_done_ratios_not_updated: "اندازه انجام شده پیامد بروز نشد."
+ error_workflow_copy_source: 'یک پیگرد یا نقش منبع را برگزینید.'
+ error_workflow_copy_target: 'پیگردها یا نقشهای مقصد را برگزینید.'
+ error_unable_delete_issue_status: 'وضعیت پیامد را نمیتوان پاک کرد.'
+ error_unable_to_connect: "نمیتوان متصل شد (%{value})"
+ warning_attachments_not_saved: "%{count} پرونده ذخیره نشد."
+
+ mail_subject_lost_password: "گذرواژه حساب %{value} شما"
+ mail_body_lost_password: 'برای جایگزینی گذرواژه خود، بر روی پیوند زیر کلیک کنید:'
+ mail_subject_register: "فعالسازی حساب %{value} شما"
+ mail_body_register: 'برای فعالسازی حساب خود، بر روی پیوند زیر کلیک کنید:'
+ mail_body_account_information_external: "شما میتوانید حساب %{value} خود را برای ورود به کار برید."
+ mail_body_account_information: دادههای حساب شما
+ mail_subject_account_activation_request: "درخواست فعالسازی حساب %{value}"
+ mail_body_account_activation_request: "یک کاربر تازه (%{value}) نامنویسی کرده است. این حساب چشم به راه روادید شماست:"
+ mail_subject_reminder: "زمان رسیدگی به %{count} پیامد در %{days} روز آینده سر میرسد"
+ mail_body_reminder: "زمان رسیدگی به %{count} پیامد که به شما واگذار شده است، در %{days} روز آینده سر میرسد:"
+ mail_subject_wiki_content_added: "برگه ویکی «%{id}» افزوده شد"
+ mail_body_wiki_content_added: "برگه ویکی «%{id}» به دست %{author} افزوده شد."
+ mail_subject_wiki_content_updated: "برگه ویکی «%{id}» بروز شد"
+ mail_body_wiki_content_updated: "برگه ویکی «%{id}» به دست %{author} بروز شد."
+
+ gui_validation_error: 1 ایراد
+ gui_validation_error_plural: "%{count} ایراد"
+
+ field_name: نام
+ field_description: توضیح
+ field_summary: خلاصه
+ field_is_required: الزامی
+ field_firstname: نام کوچک
+ field_lastname: نام خانوادگی
+ field_mail: ایمیل
+ field_filename: پرونده
+ field_filesize: اندازه
+ field_downloads: دریافتها
+ field_author: نویسنده
+ field_created_on: ساخته شده در
+ field_updated_on: بروز شده در
+ field_field_format: قالب
+ field_is_for_all: برای همه پروژهها
+ field_possible_values: مقادیر ممکن
+ field_regexp: عبارت منظم
+ field_min_length: کمترین اندازه
+ field_max_length: بیشترین اندازه
+ field_value: مقدار
+ field_category: دسته
+ field_title: عنوان
+ field_project: پروژه
+ field_issue: پیامد
+ field_status: وضعیت
+ field_notes: یادداشتها
+ field_is_closed: پیامد بسته شده
+ field_is_default: مقدار پیشگزیده
+ field_tracker: پیگرد
+ field_subject: موضوع
+ field_due_date: زمان سررسید
+ field_assigned_to: واگذار شده به
+ field_priority: برتری
+ field_fixed_version: نگارش هدف
+ field_user: کاربر
+ field_principal: دستور دهنده
+ field_role: نقش
+ field_homepage: برگه خانه
+ field_is_public: همگانی
+ field_parent: پروژه پدر
+ field_is_in_roadmap: این پیامدها در نقشه راه نشان داده شوند
+ field_login: ورود
+ field_mail_notification: آگاه سازیهای ایمیلی
+ field_admin: سرپرست
+ field_last_login_on: آخرین ورود
+ field_language: زبان
+ field_effective_date: تاریخ
+ field_password: گذرواژه
+ field_new_password: گذرواژه تازه
+ field_password_confirmation: بررسی گذرواژه
+ field_version: نگارش
+ field_type: گونه
+ field_host: میزبان
+ field_port: درگاه
+ field_account: حساب
+ field_base_dn: DN پایه
+ field_attr_login: نشانه ورود
+ field_attr_firstname: نشانه نام کوچک
+ field_attr_lastname: نشانه نام خانوادگی
+ field_attr_mail: نشانه ایمیل
+ field_onthefly: ساخت کاربر بیدرنگ
+ field_start_date: تاریخ آغاز
+ field_done_ratio: ٪ انجام شده
+ field_auth_source: روش شناسایی
+ field_hide_mail: ایمیل من پنهان شود
+ field_comments: دیدگاه
+ field_url: نشانی
+ field_start_page: برگه آغاز
+ field_subproject: زیر پروژه
+ field_hours: ساعت
+ field_activity: فعالیت
+ field_spent_on: در تاریخ
+ field_identifier: شناسه
+ field_is_filter: پالایش پذیر
+ field_issue_to: پیامد وابسته
+ field_delay: دیرکرد
+ field_assignable: پیامدها میتوانند به این نقش واگذار شوند
+ field_redirect_existing_links: پیوندهای پیشین به پیوند تازه راهنمایی شوند
+ field_estimated_hours: زمان برآورد شده
+ field_column_names: ستونها
+ field_time_entries: زمان نوشتن
+ field_time_zone: پهنه زمانی
+ field_searchable: جستجو پذیر
+ field_default_value: مقدار پیشگزیده
+ field_comments_sorting: نمایش دیدگاهها
+ field_parent_title: برگه پدر
+ field_editable: ویرایش پذیر
+ field_watcher: دیدهبان
+ field_identity_url: نشانی OpenID
+ field_content: محتوا
+ field_group_by: دسته بندی با
+ field_sharing: اشتراک گذاری
+ field_parent_issue: کار پدر
+ field_member_of_group: "دسته واگذار شونده"
+ field_assigned_to_role: "نقش واگذار شونده"
+ field_text: فیلد متنی
+ field_visible: آشکار
+
+ setting_app_title: نام برنامه
+ setting_app_subtitle: زیرنام برنامه
+ setting_welcome_text: نوشتار خوشآمد گویی
+ setting_default_language: زبان پیشگزیده
+ setting_login_required: الزامی بودن ورود
+ setting_self_registration: خود نام نویسی
+ setting_attachment_max_size: بیشترین اندازه پیوست
+ setting_issues_export_limit: کرانه صدور پییامدها
+ setting_mail_from: نشانی فرستنده ایمیل
+ setting_bcc_recipients: گیرندگان ایمیل دیده نشوند (bcc)
+ setting_plain_text_mail: ایمیل نوشته ساده (بدون HTML)
+ setting_host_name: نام میزبان و نشانی
+ setting_text_formatting: قالب بندی نوشته
+ setting_wiki_compression: فشردهسازی پیشینه ویکی
+ setting_feeds_limit: کرانه محتوای خوراک
+ setting_default_projects_public: حالت پیشگزیده پروژههای تازه، همگانی است
+ setting_autofetch_changesets: دریافت خودکار تغییرات
+ setting_sys_api_enabled: فعال سازی وب سرویس برای سرپرستی انباره
+ setting_commit_ref_keywords: کلیدواژههای نشانه
+ setting_commit_fix_keywords: کلیدواژههای انجام
+ setting_autologin: ورود خودکار
+ setting_date_format: قالب تاریخ
+ setting_time_format: قالب زمان
+ setting_cross_project_issue_relations: توانایی وابستگی میان پروژهای پیامدها
+ setting_issue_list_default_columns: ستونهای پیشگزیده نمایش داده شده در فهرست پیامدها
+ setting_repositories_encodings: کدگذاری انبارهها
+ setting_commit_logs_encoding: کدگذاری پیامهای انباره
+ setting_emails_header: سرنویس ایمیلها
+ setting_emails_footer: پانویس ایمیلها
+ setting_protocol: پیوندنامه
+ setting_per_page_options: گزینههای اندازه دادههای هر برگ
+ setting_user_format: قالب نمایشی کاربران
+ setting_activity_days_default: روزهای نمایش داده شده در فعالیت پروژه
+ setting_display_subprojects_issues: پیشگزیده نمایش پیامدهای زیرپروژه در پروژه پدر
+ setting_enabled_scm: فعالسازی SCM
+ setting_mail_handler_body_delimiters: "بریدن ایمیلها پس از یکی از این ردیفها"
+ setting_mail_handler_api_enabled: فعالسازی وب سرویس برای ایمیلهای آمده
+ setting_mail_handler_api_key: کلید API
+ setting_sequential_project_identifiers: ساخت پشت سر هم شناسه پروژه
+ setting_gravatar_enabled: کاربرد Gravatar برای عکس کاربر
+ setting_gravatar_default: عکس Gravatar پیشگزیده
+ setting_diff_max_lines_displayed: بیشترین اندازه ردیفهای تفاوت نشان داده شده
+ setting_file_max_size_displayed: بیشترین اندازه پروندههای نمایش داده شده درون خطی
+ setting_repository_log_display_limit: بیشترین شمار نگارشهای نمایش داده شده در گزارش پرونده
+ setting_openid: پذیرش ورود و نام نویسی با OpenID
+ setting_password_min_length: کمترین اندازه گذرواژه
+ setting_new_project_user_role_id: نقش داده شده به کاربری که سرپرست نیست و پروژه میسازد
+ setting_default_projects_modules: پیمانههای پیشگزیده فعال برای پروژههای تازه
+ setting_issue_done_ratio: برآورد اندازه انجام شده پیامد با
+ setting_issue_done_ratio_issue_field: کاربرد فیلد پیامد
+ setting_issue_done_ratio_issue_status: کاربرد وضعیت پیامد
+ setting_start_of_week: آغاز گاهشمار از
+ setting_rest_api_enabled: فعالسازی وب سرویسهای REST
+ setting_cache_formatted_text: نهان سازی نوشتههای قالب بندی شده
+ setting_default_notification_option: آگاه سازی پیشگزیده
+ setting_commit_logtime_enabled: فعالسازی زمان گذاشته شده
+ setting_commit_logtime_activity_id: فعالیت زمان گذاشته شده
+ setting_gantt_items_limit: بیشترین شمار بخشهای نمایش داده شده در نمودار گانت
+
+ permission_add_project: ساخت پروژه
+ permission_add_subprojects: ساخت زیرپروژه
+ permission_edit_project: ویرایش پروژه
+ permission_select_project_modules: گزینش پیمانههای پروژه
+ permission_manage_members: سرپرستی اعضا
+ permission_manage_project_activities: سرپرستی فعالیتهای پروژه
+ permission_manage_versions: سرپرستی نگارشها
+ permission_manage_categories: سرپرستی دستههای پیامد
+ permission_view_issues: دیدن پیامدها
+ permission_add_issues: افزودن پیامدها
+ permission_edit_issues: ویرایش پیامدها
+ permission_manage_issue_relations: سرپرستی وابستگی پیامدها
+ permission_add_issue_notes: افزودن یادداشتها
+ permission_edit_issue_notes: ویرایش یادداشتها
+ permission_edit_own_issue_notes: ویرایش یادداشت خود
+ permission_move_issues: جابجایی پیامدها
+ permission_delete_issues: پاک کردن پیامدها
+ permission_manage_public_queries: سرپرستی پرسوجوهای همگانی
+ permission_save_queries: ذخیره سازی پرسوجوها
+ permission_view_gantt: دیدن نمودار گانت
+ permission_view_calendar: دیدن گاهشمار
+ permission_view_issue_watchers: دیدن فهرست دیدهبانها
+ permission_add_issue_watchers: افزودن دیدهبانها
+ permission_delete_issue_watchers: پاک کردن دیدهبانها
+ permission_log_time: نوشتن زمان گذاشته شده
+ permission_view_time_entries: دیدن زمان گذاشته شده
+ permission_edit_time_entries: ویرایش زمان گذاشته شده
+ permission_edit_own_time_entries: ویرایش زمان گذاشته شده خود
+ permission_manage_news: سرپرستی رویدادها
+ permission_comment_news: گذاشتن دیدگاه روی رویدادها
+ permission_manage_documents: سرپرستی نوشتارها
+ permission_view_documents: دیدن نوشتارها
+ permission_manage_files: سرپرستی پروندهها
+ permission_view_files: دیدن پروندهها
+ permission_manage_wiki: سرپرستی ویکی
+ permission_rename_wiki_pages: نامگذاری برگه ویکی
+ permission_delete_wiki_pages: پاک کردن برگه ویکی
+ permission_view_wiki_pages: دیدن ویکی
+ permission_view_wiki_edits: دیدن پیشینه ویکی
+ permission_edit_wiki_pages: ویرایش برگههای ویکی
+ permission_delete_wiki_pages_attachments: پاک کردن پیوستهای برگه ویکی
+ permission_protect_wiki_pages: نگهداری برگههای ویکی
+ permission_manage_repository: سرپرستی انباره
+ permission_browse_repository: چریدن در انباره
+ permission_view_changesets: دیدن تغییرات
+ permission_commit_access: دسترسی تغییر انباره
+ permission_manage_boards: سرپرستی انجمنها
+ permission_view_messages: دیدن پیامها
+ permission_add_messages: فرستادن پیامها
+ permission_edit_messages: ویرایش پیامها
+ permission_edit_own_messages: ویرایش پیام خود
+ permission_delete_messages: پاک کردن پیامها
+ permission_delete_own_messages: پاک کردن پیام خود
+ permission_export_wiki_pages: صدور برگههای ویکی
+ permission_manage_subtasks: سرپرستی زیرکارها
+
+ project_module_issue_tracking: پیگیری پیامدها
+ project_module_time_tracking: پیگیری زمان
+ project_module_news: رویدادها
+ project_module_documents: نوشتارها
+ project_module_files: پروندهها
+ project_module_wiki: ویکی
+ project_module_repository: انباره
+ project_module_boards: انجمنها
+ project_module_calendar: گاهشمار
+ project_module_gantt: گانت
+
+ label_user: کاربر
+ label_user_plural: کاربر
+ label_user_new: کاربر تازه
+ label_user_anonymous: ناشناس
+ label_project: پروژه
+ label_project_new: پروژه تازه
+ label_project_plural: پروژه
+ label_x_projects:
+ zero: بدون پروژه
+ one: "1 پروژه"
+ other: "%{count} پروژه"
+ label_project_all: همه پروژهها
+ label_project_latest: آخرین پروژهها
+ label_issue: پیامد
+ label_issue_new: پیامد تازه
+ label_issue_plural: پیامد
+ label_issue_view_all: دیدن همه پیامدها
+ label_issues_by: "پیامدهای دست%{value}"
+ label_issue_added: پیامد افزوده شد
+ label_issue_updated: پیامد بروز شد
+ label_document: نوشتار
+ label_document_new: نوشتار تازه
+ label_document_plural: نوشتار
+ label_document_added: نوشتار افزوده شد
+ label_role: نقش
+ label_role_plural: نقش
+ label_role_new: نقش تازه
+ label_role_and_permissions: نقشها و پروانهها
+ label_member: عضو
+ label_member_new: عضو تازه
+ label_member_plural: عضو
+ label_tracker: پیگرد
+ label_tracker_plural: پیگرد
+ label_tracker_new: پیگرد تازه
+ label_workflow: گردش کار
+ label_issue_status: وضعیت پیامد
+ label_issue_status_plural: وضعیت پیامد
+ label_issue_status_new: وضعیت تازه
+ label_issue_category: دسته پیامد
+ label_issue_category_plural: دسته پیامد
+ label_issue_category_new: دسته تازه
+ label_custom_field: فیلد سفارشی
+ label_custom_field_plural: فیلد سفارشی
+ label_custom_field_new: فیلد سفارشی تازه
+ label_enumerations: برشمردنیها
+ label_enumeration_new: مقدار تازه
+ label_information: داده
+ label_information_plural: داده
+ label_please_login: وارد شوید
+ label_register: نام نویسی کنید
+ label_login_with_open_id_option: یا با OpenID وارد شوید
+ label_password_lost: بازیافت گذرواژه
+ label_home: سرآغاز
+ label_my_page: برگه من
+ label_my_account: حساب من
+ label_my_projects: پروژههای من
+ label_my_page_block: بخش برگه من
+ label_administration: سرپرستی
+ label_login: ورود
+ label_logout: خروج
+ label_help: راهنما
+ label_reported_issues: پیامدهای گزارش شده
+ label_assigned_to_me_issues: پیامدهای واگذار شده به من
+ label_last_login: آخرین ورود
+ label_registered_on: نام نویسی شده در
+ label_activity: فعالیت
+ label_overall_activity: فعالیت روی هم رفته
+ label_user_activity: "فعالیت %{value}"
+ label_new: تازه
+ label_logged_as: "نام کاربری:"
+ label_environment: محیط
+ label_authentication: شناسایی
+ label_auth_source: روش شناسایی
+ label_auth_source_new: روش شناسایی تازه
+ label_auth_source_plural: روش شناسایی
+ label_subproject_plural: زیرپروژه
+ label_subproject_new: زیرپروژه تازه
+ label_and_its_subprojects: "%{value} و زیرپروژههایش"
+ label_min_max_length: کمترین و بیشترین اندازه
+ label_list: فهرست
+ label_date: تاریخ
+ label_integer: شماره درست
+ label_float: شماره شناور
+ label_boolean: درست/نادرست
+ label_string: نوشته
+ label_text: نوشته بلند
+ label_attribute: نشانه
+ label_attribute_plural: نشانه
+ label_download: "%{count} بار دریافت شده"
+ label_download_plural: "%{count} بار دریافت شده"
+ label_no_data: هیچ دادهای برای نمایش نیست
+ label_change_status: جایگزینی وضعیت
+ label_history: پیشینه
+ label_attachment: پرونده
+ label_attachment_new: پرونده تازه
+ label_attachment_delete: پاک کردن پرونده
+ label_attachment_plural: پرونده
+ label_file_added: پرونده افزوده شد
+ label_report: گزارش
+ label_report_plural: گزارش
+ label_news: رویداد
+ label_news_new: افزودن رویداد
+ label_news_plural: رویداد
+ label_news_latest: آخرین رویدادها
+ label_news_view_all: دیدن همه رویدادها
+ label_news_added: رویداد افزوده شد
+ label_settings: پیکربندی
+ label_overview: دورنما
+ label_version: نگارش
+ label_version_new: نگارش تازه
+ label_version_plural: نگارش
+ label_close_versions: بستن نگارشهای انجام شده
+ label_confirmation: بررسی
+ label_export_to: 'قالبهای دیگر:'
+ label_read: خواندن...
+ label_public_projects: پروژههای همگانی
+ label_open_issues: باز
+ label_open_issues_plural: باز
+ label_closed_issues: بسته
+ label_closed_issues_plural: بسته
+ label_x_open_issues_abbr_on_total:
+ zero: 0 باز از %{total}
+ one: 1 باز از %{total}
+ other: "%{count} باز از %{total}"
+ label_x_open_issues_abbr:
+ zero: 0 باز
+ one: 1 باز
+ other: "%{count} باز"
+ label_x_closed_issues_abbr:
+ zero: 0 بسته
+ one: 1 بسته
+ other: "%{count} بسته"
+ label_total: جمله
+ label_permissions: پروانهها
+ label_current_status: وضعیت کنونی
+ label_new_statuses_allowed: وضعیتهای پذیرفتنی تازه
+ label_all: همه
+ label_none: هیچ
+ label_nobody: هیچکس
+ label_next: پسین
+ label_previous: پیشین
+ label_used_by: به کار رفته در
+ label_details: ریزهکاری
+ label_add_note: افزودن یادداشت
+ label_per_page: ردیفها در هر برگه
+ label_calendar: گاهشمار
+ label_months_from: از ماه
+ label_gantt: گانت
+ label_internal: درونی
+ label_last_changes: "%{count} تغییر آخر"
+ label_change_view_all: دیدن همه تغییرات
+ label_personalize_page: سفارشی نمودن این برگه
+ label_comment: دیدگاه
+ label_comment_plural: دیدگاه
+ label_x_comments:
+ zero: بدون دیدگاه
+ one: 1 دیدگاه
+ other: "%{count} دیدگاه"
+ label_comment_add: افزودن دیدگاه
+ label_comment_added: دیدگاه افزوده شد
+ label_comment_delete: پاک کردن دیدگاهها
+ label_query: پرسوجوی سفارشی
+ label_query_plural: پرسوجوی سفارشی
+ label_query_new: پرسوجوی تازه
+ label_filter_add: افزودن پالایه
+ label_filter_plural: پالایه
+ label_equals: برابر است با
+ label_not_equals: برابر نیست با
+ label_in_less_than: کمتر است از
+ label_in_more_than: بیشتر است از
+ label_greater_or_equal: بیشتر یا برابر است با
+ label_less_or_equal: کمتر یا برابر است با
+ label_in: در
+ label_today: امروز
+ label_all_time: همیشه
+ label_yesterday: دیروز
+ label_this_week: این هفته
+ label_last_week: هفته پیشین
+ label_last_n_days: "%{count} روز گذشته"
+ label_this_month: این ماه
+ label_last_month: ماه پیشین
+ label_this_year: امسال
+ label_date_range: بازه تاریخ
+ label_less_than_ago: کمتر از چند روز پیشین
+ label_more_than_ago: بیشتر از چند روز پیشین
+ label_ago: روز پیشین
+ label_contains: دارد
+ label_not_contains: ندارد
+ label_day_plural: روز
+ label_repository: انباره
+ label_repository_plural: انباره
+ label_browse: چریدن
+ label_modification: "%{count} جایگذاری"
+ label_modification_plural: "%{count} جایگذاری"
+ label_branch: شاخه
+ label_tag: برچسب
+ label_revision: بازبینی
+ label_revision_plural: بازبینی
+ label_revision_id: "بازبینی %{value}"
+ label_associated_revisions: بازبینیهای وابسته
+ label_added: افزوده شده
+ label_modified: پیراسته شده
+ label_copied: رونویسی شده
+ label_renamed: نامگذاری شده
+ label_deleted: پاکسازی شده
+ label_latest_revision: آخرین بازبینی
+ label_latest_revision_plural: آخرین بازبینی
+ label_view_revisions: دیدن بازبینیها
+ label_view_all_revisions: دیدن همه بازبینیها
+ label_max_size: بیشترین اندازه
+ label_sort_highest: بردن به آغاز
+ label_sort_higher: بردن به بالا
+ label_sort_lower: بردن به پایین
+ label_sort_lowest: بردن به پایان
+ label_roadmap: نقشه راه
+ label_roadmap_due_in: "سررسید در %{value}"
+ label_roadmap_overdue: "%{value} دیرکرد"
+ label_roadmap_no_issues: هیچ پیامدی برای این نگارش نیست
+ label_search: جستجو
+ label_result_plural: دستآورد
+ label_all_words: همه واژهها
+ label_wiki: ویکی
+ label_wiki_edit: ویرایش ویکی
+ label_wiki_edit_plural: ویرایش ویکی
+ label_wiki_page: برگه ویکی
+ label_wiki_page_plural: برگه ویکی
+ label_index_by_title: شاخص بر اساس نام
+ label_index_by_date: شاخص بر اساس تاریخ
+ label_current_version: نگارش کنونی
+ label_preview: پیشنمایش
+ label_feed_plural: خوراک
+ label_changes_details: ریز همه جایگذاریها
+ label_issue_tracking: پیگیری پیامد
+ label_spent_time: زمان گذاشته شده
+ label_overall_spent_time: زمان گذاشته شده روی هم
+ label_f_hour: "%{value} ساعت"
+ label_f_hour_plural: "%{value} ساعت"
+ label_time_tracking: پیگیری زمان
+ label_change_plural: جایگذاری
+ label_statistics: سرشماری
+ label_commits_per_month: تغییر در هر ماه
+ label_commits_per_author: تغییر هر نویسنده
+ label_view_diff: دیدن تفاوتها
+ label_diff_inline: همراستا
+ label_diff_side_by_side: کنار به کنار
+ label_options: گزینهها
+ label_copy_workflow_from: رونویسی گردش کار از روی
+ label_permissions_report: گزارش پروانهها
+ label_watched_issues: پیامدهای دیدهبانی شده
+ label_related_issues: پیامدهای وابسته
+ label_applied_status: وضعیت به کار رفته
+ label_loading: بار گذاری...
+ label_relation_new: وابستگی تازه
+ label_relation_delete: پاک کردن وابستگی
+ label_relates_to: وابسته به
+ label_duplicates: نگارش دیگری از
+ label_duplicated_by: نگارشی دیگر در
+ label_blocks: بازداشتها
+ label_blocked_by: بازداشت به دست
+ label_precedes: جلوتر است از
+ label_follows: پستر است از
+ label_end_to_start: پایان به آغاز
+ label_end_to_end: پایان به پایان
+ label_start_to_start: آغاز به آغاز
+ label_start_to_end: آغاز به پایان
+ label_stay_logged_in: وارد شده بمانید
+ label_disabled: غیرفعال
+ label_show_completed_versions: نمایش نگارشهای انجام شده
+ label_me: من
+ label_board: انجمن
+ label_board_new: انجمن تازه
+ label_board_plural: انجمن
+ label_board_locked: قفل شده
+ label_board_sticky: چسبناک
+ label_topic_plural: سرفصل
+ label_message_plural: پیام
+ label_message_last: آخرین پیام
+ label_message_new: پیام تازه
+ label_message_posted: پیام افزوده شد
+ label_reply_plural: پاسخ
+ label_send_information: فرستادن دادههای حساب به کاربر
+ label_year: سال
+ label_month: ماه
+ label_week: هفته
+ label_date_from: از
+ label_date_to: تا
+ label_language_based: بر اساس زبان کاربر
+ label_sort_by: "جور کرد با %{value}"
+ label_send_test_email: فرستادن ایمیل آزمایشی
+ label_feeds_access_key: کلید دسترسی RSS
+ label_missing_feeds_access_key: کلید دسترسی RSS در دسترس نیست
+ label_feeds_access_key_created_on: "کلید دسترسی RSS %{value} پیش ساخته شده است"
+ label_module_plural: پیمانه
+ label_added_time_by: "افزوده شده به دست %{author} در %{age} پیش"
+ label_updated_time_by: "بروز شده به دست %{author} در %{age} پیش"
+ label_updated_time: "بروز شده در %{value} پیش"
+ label_jump_to_a_project: پرش به یک پروژه...
+ label_file_plural: پرونده
+ label_changeset_plural: تغییر
+ label_default_columns: ستونهای پیشگزیده
+ label_no_change_option: (بدون تغییر)
+ label_bulk_edit_selected_issues: ویرایش دستهای پیامدهای گزینش شده
+ label_theme: پوسته
+ label_default: پیشگزیده
+ label_search_titles_only: تنها نامها جستجو شود
+ label_user_mail_option_all: "برای هر رویداد در همه پروژهها"
+ label_user_mail_option_selected: "برای هر رویداد تنها در پروژههای گزینش شده..."
+ label_user_mail_option_none: "هیچ رویدادی"
+ label_user_mail_option_only_my_events: "تنها برای چیزهایی که دیدهبان هستم یا در آنها درگیر هستم"
+ label_user_mail_option_only_assigned: "تنها برای چیزهایی که به من واگذار شده"
+ label_user_mail_option_only_owner: "تنها برای چیزهایی که من دارنده آنها هستم"
+ label_user_mail_no_self_notified: "نمیخواهم از تغییراتی که خودم میدهم آگاه شوم"
+ label_registration_activation_by_email: فعالسازی حساب با ایمیل
+ label_registration_manual_activation: فعالسازی حساب دستی
+ label_registration_automatic_activation: فعالسازی حساب خودکار
+ label_display_per_page: "ردیفها در هر برگه: %{value}"
+ label_age: سن
+ label_change_properties: ویرایش ویژگیها
+ label_general: همگانی
+ label_more: بیشتر
+ label_scm: SCM
+ label_plugins: افزونهها
+ label_ldap_authentication: شناساییLDAP
+ label_downloads_abbr: دریافت
+ label_optional_description: توضیح اختیاری
+ label_add_another_file: افزودن پرونده دیگر
+ label_preferences: پسندها
+ label_chronological_order: به ترتیب تاریخ
+ label_reverse_chronological_order: برعکس ترتیب تاریخ
+ label_planning: برنامه ریزی
+ label_incoming_emails: ایمیلهای آمده
+ label_generate_key: ساخت کلید
+ label_issue_watchers: دیدهبانها
+ label_example: نمونه
+ label_display: نمایش
+ label_sort: جور کرد
+ label_ascending: افزایشی
+ label_descending: کاهشی
+ label_date_from_to: از %{start} تا %{end}
+ label_wiki_content_added: برگه ویکی افزوده شد
+ label_wiki_content_updated: برگه ویکی بروز شد
+ label_group: دسته
+ label_group_plural: دسته
+ label_group_new: دسته تازه
+ label_time_entry_plural: زمان گذاشته شده
+ label_version_sharing_none: بدون اشتراک
+ label_version_sharing_descendants: با زیر پروژهها
+ label_version_sharing_hierarchy: با رشته پروژهها
+ label_version_sharing_tree: با درخت پروژه
+ label_version_sharing_system: با همه پروژهها
+ label_update_issue_done_ratios: بروز رسانی اندازه انجام شده پیامد
+ label_copy_source: منبع
+ label_copy_target: مقصد
+ label_copy_same_as_target: مانند مقصد
+ label_display_used_statuses_only: تنها وضعیتهایی نشان داده شوند که در این پیگرد به کار رفتهاند
+ label_api_access_key: کلید دسترسی API
+ label_missing_api_access_key: کلید دسترسی API در دسترس نیست
+ label_api_access_key_created_on: "کلید دسترسی API %{value} پیش ساخته شده است"
+ label_profile: نمایه
+ label_subtask_plural: زیرکار
+ label_project_copy_notifications: در هنگام رونویسی پروژه ایمیلهای آگاهسازی را بفرست
+ label_principal_search: "جستجو برای کاربر یا دسته:"
+ label_user_search: "جستجو برای کاربر:"
+
+ button_login: ورود
+ button_submit: واگذاری
+ button_save: نگهداری
+ button_check_all: گزینش همه
+ button_uncheck_all: گزینش هیچ
+ button_delete: پاک
+ button_create: ساخت
+ button_create_and_continue: ساخت و ادامه
+ button_test: آزمایش
+ button_edit: ویرایش
+ button_edit_associated_wikipage: "ویرایش برگه ویکی وابسته: %{page_title}"
+ button_add: افزودن
+ button_change: ویرایش
+ button_apply: انجام
+ button_clear: پاک
+ button_lock: گذاشتن قفل
+ button_unlock: برداشتن قفل
+ button_download: دریافت
+ button_list: فهرست
+ button_view: دیدن
+ button_move: جابجایی
+ button_move_and_follow: جابجایی و ادامه
+ button_back: برگشت
+ button_cancel: بازگشت
+ button_activate: فعالسازی
+ button_sort: جور کرد
+ button_log_time: زماننویسی
+ button_rollback: برگرد به این نگارش
+ button_watch: دیدهبانی
+ button_unwatch: نادیدهبانی
+ button_reply: پاسخ
+ button_archive: بایگانی
+ button_unarchive: برگشت از بایگانی
+ button_reset: بازنشانی
+ button_rename: نامگذاری
+ button_change_password: جایگزینی گذرواژه
+ button_copy: رونوشت
+ button_copy_and_follow: رونوشت و ادامه
+ button_annotate: یادداشت
+ button_update: بروز رسانی
+ button_configure: پیکربندی
+ button_quote: نقل قول
+ button_duplicate: نگارش دیگر
+ button_show: نمایش
+
+ status_active: فعال
+ status_registered: نامنویسی شده
+ status_locked: قفل
+
+ version_status_open: باز
+ version_status_locked: قفل
+ version_status_closed: بسته
+
+ field_active: فعال
+
+ text_select_mail_notifications: فرمانهایی که برای آنها باید ایمیل فرستاده شود را برگزینید.
+ text_regexp_info: برای نمونه ^[A-Z0-9]+$
+ text_min_max_length_info: 0 یعنی بدون کران
+ text_project_destroy_confirmation: آیا براستی میخواهید این پروژه و همه دادههای آن را پاک کنید؟
+ text_subprojects_destroy_warning: "زیرپروژههای آن: %{value} هم پاک خواهند شد."
+ text_workflow_edit: یک نقش و یک پیگرد را برای ویرایش گردش کار برگزینید
+ text_are_you_sure: آیا این کار انجام شود؟
+ text_are_you_sure_with_children: "آیا پیامد و همه زیرپیامدهای آن پاک شوند؟"
+ text_journal_changed: "«%{label}» از «%{old}» به «%{new}» جایگزین شد"
+ text_journal_set_to: "«%{label}» به «%{value}» نشانده شد"
+ text_journal_deleted: "«%{label}» پاک شد (%{old})"
+ text_journal_added: "«%{label}»، «%{value}» را افزود"
+ text_tip_task_begin_day: روز آغاز پیامد
+ text_tip_task_end_day: روز پایان پیامد
+ text_tip_task_begin_end_day: روز آغاز و پایان پیامد
+ text_project_identifier_info: 'تنها نویسههای کوچک (a-z)، شمارهها و خط تیره پذیرفتنی است.
پس از ذخیره سازی، شناسه نمیتواند جایگزین شود.'
+ text_caracters_maximum: "بیشترین اندازه %{count} است."
+ text_caracters_minimum: "کمترین اندازه %{count} است."
+ text_length_between: "باید میان %{min} و %{max} نویسه باشد."
+ text_tracker_no_workflow: هیچ گردش کاری برای این پیگرد مشخص نشده است
+ text_unallowed_characters: نویسههای ناپسند
+ text_comma_separated: چند مقدار پذیرفتنی است (با «,» از هم جدا شوند).
+ text_line_separated: چند مقدار پذیرفتنی است (هر مقدار در یک خط).
+ text_issues_ref_in_commit_messages: نشانه روی و بستن پیامدها در پیامهای انباره
+ text_issue_added: "پیامد %{id} به دست %{author} گزارش شد."
+ text_issue_updated: "پیامد %{id} به دست %{author} بروز شد."
+ text_wiki_destroy_confirmation: آیا براستی میخواهید این ویکی و همه محتوای آن را پاک کنید؟
+ text_issue_category_destroy_question: "برخی پیامدها (%{count}) به این دسته واگذار شدهاند. میخواهید چه کنید؟"
+ text_issue_category_destroy_assignments: پاک کردن واگذاری به دسته
+ text_issue_category_reassign_to: واگذاری دوباره پیامدها به این دسته
+ text_user_mail_option: "برای پروژههای گزینش نشده، تنها ایمیلهایی درباره چیزهایی که دیدهبان یا درگیر آنها هستید دریافت خواهید کرد (مانند پیامدهایی که نویسنده آنها هستید یا به شما واگذار شدهاند)."
+ text_no_configuration_data: "نقشها، پیگردها، وضعیتهای پیامد و گردش کار هنوز پیکربندی نشدهاند. \nبه سختی پیشنهاد میشود که پیکربندی پیشگزیده را بار کنید. سپس میتوانید آن را ویرایش کنید."
+ text_load_default_configuration: بارگذاری پیکربندی پیشگزیده
+ text_status_changed_by_changeset: "در تغییر %{value} بروز شده است."
+ text_time_logged_by_changeset: "در تغییر %{value} نوشته شده است."
+ text_issues_destroy_confirmation: 'آیا براستی میخواهید پیامدهای گزینش شده را پاک کنید؟'
+ text_select_project_modules: 'پیمانههایی که باید برای این پروژه فعال شوند را برگزینید:'
+ text_default_administrator_account_changed: حساب سرپرستی پیشگزیده جایگزین شد
+ text_file_repository_writable: پوشه پیوستها نوشتنی است
+ text_plugin_assets_writable: پوشه داراییهای افزونهها نوشتنی است
+ text_rmagick_available: RMagick در دسترس است (اختیاری)
+ text_destroy_time_entries_question: "%{hours} ساعت روی پیامدهایی که میخواهید پاک کنید کار گزارش شده است. میخواهید چه کنید؟"
+ text_destroy_time_entries: ساعتهای گزارش شده پاک شوند
+ text_assign_time_entries_to_project: ساعتهای گزارش شده به پروژه واگذار شوند
+ text_reassign_time_entries: 'ساعتهای گزارش شده به این پیامد واگذار شوند:'
+ text_user_wrote: "%{value} نوشت:"
+ text_enumeration_destroy_question: "%{count} داده به این برشمردنی وابسته شدهاند."
+ text_enumeration_category_reassign_to: 'به این برشمردنی وابسته شوند:'
+ text_email_delivery_not_configured: "دریافت ایمیل پیکربندی نشده است و آگاهسازیها غیر فعال هستند.\nکارگزار SMTP خود را در config/email.yml پیکربندی کنید و برنامه را بازنشانی کنید تا فعال شوند."
+ text_repository_usernames_mapping: "کاربر Redmine که به هر نام کاربری پیامهای انباره نگاشت میشود را برگزینید.\nکاربرانی که نام کاربری یا ایمیل همسان دارند، خود به خود نگاشت میشوند."
+ text_diff_truncated: '... این تفاوت بریده شده چون بیشتر از بیشترین اندازه نمایش دادنی است.'
+ text_custom_field_possible_values_info: 'یک خط برای هر مقدار'
+ text_wiki_page_destroy_question: "این برگه %{descendants} زیربرگه دارد.میخواهید چه کنید؟"
+ text_wiki_page_nullify_children: "زیربرگهها برگه ریشه شوند"
+ text_wiki_page_destroy_children: "زیربرگهها و زیربرگههای آنها پاک شوند"
+ text_wiki_page_reassign_children: "زیربرگهها به زیر این برگه پدر بروند"
+ text_own_membership_delete_confirmation: "شما دارید برخی یا همه پروانههای خود را برمیدارید و شاید پس از این دیگر نتوانید این پروژه را ویرایش کنید.\nآیا میخواهید این کار را بکنید؟"
+ text_zoom_in: درشتنمایی
+ text_zoom_out: ریزنمایی
+
+ default_role_manager: سرپرست
+ default_role_developer: برنامهنویس
+ default_role_reporter: گزارشدهنده
+ default_tracker_bug: ایراد
+ default_tracker_feature: ویژگی
+ default_tracker_support: پشتیبانی
+ default_issue_status_new: تازه
+ default_issue_status_in_progress: در گردش
+ default_issue_status_resolved: درست شده
+ default_issue_status_feedback: بازخورد
+ default_issue_status_closed: بسته
+ default_issue_status_rejected: برگشت خورده
+ default_doc_category_user: نوشتار کاربر
+ default_doc_category_tech: نوشتار فنی
+ default_priority_low: پایین
+ default_priority_normal: میانه
+ default_priority_high: بالا
+ default_priority_urgent: زود
+ default_priority_immediate: بیدرنگ
+ default_activity_design: طراحی
+ default_activity_development: ساخت
+
+ enumeration_issue_priorities: برتریهای پیامد
+ enumeration_doc_categories: دستههای نوشتار
+ enumeration_activities: فعالیتها (پیگیری زمان)
+ enumeration_system_activity: فعالیت سامانه
+
+ text_tip_issue_begin_day: issue beginning this day
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_tip_issue_begin_end_day: issue beginning and ending this day
+ text_tip_issue_end_day: issue ending this day
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/fi.yml.svn-base
--- a/config/locales/.svn/text-base/fi.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/fi.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -957,3 +957,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/fr.yml.svn-base
--- a/config/locales/.svn/text-base/fr.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/fr.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -307,6 +307,7 @@
field_active: Actif
field_parent_issue: Tâche parente
field_visible: Visible
+ field_warn_on_leaving_unsaved: "M'avertir lorsque je quitte une page contenant du texte non sauvegardé"
setting_app_title: Titre de l'application
setting_app_subtitle: Sous-titre de l'application
@@ -596,6 +597,7 @@
label_query: Rapport personnalisé
label_query_plural: Rapports personnalisés
label_query_new: Nouveau rapport
+ label_my_queries: Mes rapports personnalisés
label_filter_add: "Ajouter le filtre "
label_filter_plural: Filtres
label_equals: égal
@@ -889,6 +891,7 @@
text_wiki_page_destroy_children: "Supprimer les sous-pages et toutes leurs descedantes"
text_wiki_page_reassign_children: "Réaffecter les sous-pages à cette page"
text_own_membership_delete_confirmation: "Vous allez supprimer tout ou partie de vos permissions sur ce projet et ne serez peut-être plus autorisé à modifier ce projet.\nEtes-vous sûr de vouloir continuer ?"
+ text_warn_on_leaving_unsaved: "Cette page contient du texte non sauvegardé qui sera perdu si vous quittez la page."
default_role_manager: "Manager "
default_role_developer: "Développeur "
@@ -923,6 +926,7 @@
error_no_tracker_in_project: "Aucun tracker n'est associé à ce projet. Vérifier la configuration du projet."
error_no_default_issue_status: "Aucun statut de demande n'est défini par défaut. Vérifier votre configuration (Administration -> Statuts de demandes)."
text_journal_changed: "%{label} changé de %{old} à %{new}"
+ text_journal_changed_no_detail: "%{label} mis à jour"
text_journal_set_to: "%{label} mis à %{value}"
text_journal_deleted: "%{label} %{old} supprimé"
text_journal_added: "%{label} %{value} ajouté"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/gl.yml.svn-base
--- a/config/locales/.svn/text-base/gl.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/gl.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -948,3 +948,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/he.yml.svn-base
--- a/config/locales/.svn/text-base/he.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/he.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -941,3 +941,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/hr.yml.svn-base
--- a/config/locales/.svn/text-base/hr.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/hr.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -943,3 +943,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/hu.yml.svn-base
--- a/config/locales/.svn/text-base/hu.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/hu.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -955,3 +955,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/id.yml.svn-base
--- a/config/locales/.svn/text-base/id.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/id.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -944,3 +944,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/it.yml.svn-base
--- a/config/locales/.svn/text-base/it.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/it.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -937,3 +937,7 @@
setting_commit_logtime_enabled: Abilita registrazione del tempo di collegamento
notice_gantt_chart_truncated: Il grafico è stato troncato perchè eccede il numero di oggetti (%{max}) da visualizzare
setting_gantt_items_limit: Massimo numero di oggetti da visualizzare sul diagramma di gantt
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/ja.yml.svn-base
--- a/config/locales/.svn/text-base/ja.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/ja.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -957,3 +957,7 @@
enumeration_doc_categories: 文書カテゴリ
enumeration_activities: 作業分類 (時間トラッキング)
enumeration_system_activity: システム作業分類
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/ko.yml.svn-base
--- a/config/locales/.svn/text-base/ko.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/ko.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -988,3 +988,7 @@
setting_commit_logtime_enabled: 커밋 시점에 작업 시간 기록 활성화
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/lt.yml.svn-base
--- a/config/locales/.svn/text-base/lt.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/lt.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -996,3 +996,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/lv.yml.svn-base
--- a/config/locales/.svn/text-base/lv.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/lv.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -931,3 +931,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/mk.yml.svn-base
--- a/config/locales/.svn/text-base/mk.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/mk.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -936,3 +936,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/mn.yml.svn-base
--- a/config/locales/.svn/text-base/mn.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/mn.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -937,3 +937,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/nl.yml.svn-base
--- a/config/locales/.svn/text-base/nl.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/nl.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -918,3 +918,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/no.yml.svn-base
--- a/config/locales/.svn/text-base/no.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/no.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -923,3 +923,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/pl.yml.svn-base
--- a/config/locales/.svn/text-base/pl.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/pl.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -953,3 +953,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/pt-BR.yml.svn-base
--- a/config/locales/.svn/text-base/pt-BR.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/pt-BR.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -956,3 +956,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/pt.yml.svn-base
--- a/config/locales/.svn/text-base/pt.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/pt.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -940,3 +940,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/ro.yml.svn-base
--- a/config/locales/.svn/text-base/ro.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/ro.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -929,3 +929,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/ru.yml.svn-base
--- a/config/locales/.svn/text-base/ru.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/ru.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -1049,3 +1049,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/sk.yml.svn-base
--- a/config/locales/.svn/text-base/sk.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/sk.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -931,3 +931,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/sl.yml.svn-base
--- a/config/locales/.svn/text-base/sl.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/sl.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -932,3 +932,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/sr-YU.yml.svn-base
--- a/config/locales/.svn/text-base/sr-YU.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/sr-YU.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -936,3 +936,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/sr.yml.svn-base
--- a/config/locales/.svn/text-base/sr.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/sr.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -937,3 +937,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/sv.yml.svn-base
--- a/config/locales/.svn/text-base/sv.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/sv.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -977,3 +977,7 @@
enumeration_doc_categories: Dokumentkategorier
enumeration_activities: Aktiviteter (tidsuppföljning)
enumeration_system_activity: Systemaktivitet
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/th.yml.svn-base
--- a/config/locales/.svn/text-base/th.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/th.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -933,3 +933,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/tr.yml.svn-base
--- a/config/locales/.svn/text-base/tr.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/tr.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -955,3 +955,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/uk.yml.svn-base
--- a/config/locales/.svn/text-base/uk.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/uk.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -932,3 +932,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/vi.yml.svn-base
--- a/config/locales/.svn/text-base/vi.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/vi.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -987,3 +987,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/zh-TW.yml.svn-base
--- a/config/locales/.svn/text-base/zh-TW.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/zh-TW.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -1017,3 +1017,7 @@
enumeration_doc_categories: 文件分類
enumeration_activities: 活動 (時間追蹤)
enumeration_system_activity: 系統活動
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/.svn/text-base/zh.yml.svn-base
--- a/config/locales/.svn/text-base/zh.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/.svn/text-base/zh.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -950,3 +950,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/bg.yml
--- a/config/locales/bg.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/bg.yml Thu Mar 03 11:42:28 2011 +0000
@@ -303,6 +303,7 @@
field_assigned_to_role: Assignee's role
field_text: Текстово поле
field_visible: Видим
+ field_warn_on_leaving_unsaved: Предупреди ме, когато напускам страница с незаписано съдържание
setting_app_title: Заглавие
setting_app_subtitle: Описание
@@ -594,6 +595,7 @@
label_query: Потребителска справка
label_query_plural: Потребителски справки
label_query_new: Нова заявка
+ label_my_queries: Моите заявки
label_filter_add: Добави филтър
label_filter_plural: Филтри
label_equals: е
@@ -908,6 +910,7 @@
text_own_membership_delete_confirmation: "Вие сте на път да премахнете някои или всички ваши разрешения и е възможно след това да не можете да редактирате този проект.\nСигурен ли сте, че искате да продължите?"
text_zoom_in: Увеличаване
text_zoom_out: Намаляване
+ text_warn_on_leaving_unsaved: Страницата съдържа незаписано съдържание, което може да бъде загубено, ако я напуснете.
default_role_manager: Мениджър
default_role_developer: Разработчик
@@ -936,3 +939,4 @@
enumeration_activities: Дейности (time tracking)
enumeration_system_activity: Системна активност
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/bs.yml
--- a/config/locales/bs.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/bs.yml Thu Mar 03 11:42:28 2011 +0000
@@ -950,3 +950,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/ca.yml
--- a/config/locales/ca.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/ca.yml Thu Mar 03 11:42:28 2011 +0000
@@ -939,3 +939,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/cs.yml
--- a/config/locales/cs.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/cs.yml Thu Mar 03 11:42:28 2011 +0000
@@ -1,4 +1,9 @@
+# Update to 1.1 by Michal Gebauer
+# Updated by Josef Liška
+# CZ translation by Maxim Krušina | Massimo Filippi, s.r.o. | maxim@mxm.cz
+# Based on original CZ translation by Jan Kadleček
cs:
+ # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl)
direction: ltr
date:
formats:
@@ -26,7 +31,7 @@
long: "%B %d, %Y %H:%M"
am: "dop."
pm: "odp."
-
+
datetime:
distance_in_words:
half_a_minute: "půl minuty"
@@ -65,24 +70,26 @@
other: "téměř %{count} roky"
number:
+ # Výchozí formát pro čísla
format:
- separator: "."
+ separator: "."
delimiter: ""
precision: 3
- human:
- format:
+ human:
+ format:
+ delimiter: ""
precision: 1
- delimiter: ""
- storage_units:
+ storage_units:
format: "%n %u"
- units:
- kb: KB
- tb: TB
- gb: GB
- byte:
- one: Byte
- other: Bytes
- mb: MB
+ units:
+ byte:
+ one: "Bajt"
+ other: "Bajtů"
+ kb: "kB"
+ mb: "MB"
+ gb: "GB"
+ tb: "TB"
+
# Used in array.to_sentence.
support:
@@ -94,8 +101,8 @@
errors:
template:
header:
- one: "1 error prohibited this %{model} from being saved"
- other: "%{count} errors prohibited this %{model} from being saved"
+ one: "1 chyba zabránila uložení %{model}"
+ other: "%{count} chyb zabránilo uložení %{model}"
messages:
inclusion: "není zahrnuto v seznamu"
exclusion: "je rezervováno"
@@ -122,10 +129,6 @@
circular_dependency: "Tento vztah by vytvořil cyklickou závislost"
cant_link_an_issue_with_a_descendant: "Úkol nemůže být spojen s jedním z jeho dílčích úkolů"
- # Updated by Josef Liška
- # CZ translation by Maxim Krušina | Massimo Filippi, s.r.o. | maxim@mxm.cz
- # Based on original CZ translation by Jan Kadleček
-
actionview_instancetag_blank_option: Prosím vyberte
general_text_No: 'Ne'
@@ -154,20 +157,40 @@
notice_successful_connection: Úspěšné připojení.
notice_file_not_found: Stránka na kterou se snažíte zobrazit neexistuje nebo byla smazána.
notice_locking_conflict: Údaje byly změněny jiným uživatelem.
- notice_scm_error: Záznam a/nebo revize neexistuje v repozitáři.
notice_not_authorized: Nemáte dostatečná práva pro zobrazení této stránky.
+ notice_not_authorized_archived_project: Projekt ke kterému se snažíte přistupovat byl archivován.
notice_email_sent: "Na adresu %{value} byl odeslán email"
notice_email_error: "Při odesílání emailu nastala chyba (%{value})"
notice_feeds_access_key_reseted: Váš klíč pro přístup k RSS byl resetován.
+ notice_api_access_key_reseted: Váš API přístupový klíč byl resetován.
notice_failed_to_save_issues: "Chyba při uložení %{count} úkolu(ů) z %{total} vybraných: %{ids}."
+ notice_failed_to_save_members: "Nepodařilo se uložit člena(y): %{errors}."
notice_no_issue_selected: "Nebyl zvolen žádný úkol. Prosím, zvolte úkoly, které chcete editovat"
notice_account_pending: "Váš účet byl vytvořen, nyní čeká na schválení administrátorem."
notice_default_data_loaded: Výchozí konfigurace úspěšně nahrána.
+ notice_unable_delete_version: Nemohu odstanit verzi
+ notice_unable_delete_time_entry: Nelze smazat čas ze záznamu.
+ notice_issue_done_ratios_updated: Koeficienty dokončení úkolu byly aktualizovány.
+ notice_gantt_chart_truncated: Graf byl oříznut, počet položek přesáhl limit pro zobrazení (%{max})
error_can_t_load_default_data: "Výchozí konfigurace nebyla nahrána: %{value}"
error_scm_not_found: "Položka a/nebo revize neexistují v repozitáři."
error_scm_command_failed: "Při pokusu o přístup k repozitáři došlo k chybě: %{value}"
+ error_scm_annotate: "Položka neexistuje nebo nemůže být komentována."
error_issue_not_found_in_project: 'Úkol nebyl nalezen nebo nepatří k tomuto projektu'
+ error_no_tracker_in_project: Žádná fronta nebyla přiřazena tomuto projektu. Prosím zkontroluje nastavení projektu.
+ error_no_default_issue_status: Není nastaven výchozí stav úkolu. Prosím zkontrolujte nastavení ("Administrace -> Stavy úkolů").
+ error_can_not_delete_custom_field: Nelze smazat volitelné pole
+ error_can_not_delete_tracker: Tato fronta obsahuje úkoly a nemůže být smazán.
+ error_can_not_remove_role: Tato role je právě používaná a nelze ji smazat.
+ error_can_not_reopen_issue_on_closed_version: Úkol přiřazený k uzavřené verzi nemůže být znovu otevřen
+ error_can_not_archive_project: Tento projekt nemůže být archivován
+ error_issue_done_ratios_not_updated: Koeficient dokončení úkolu nebyl aktualizován.
+ error_workflow_copy_source: Prosím vyberte zdrojovou frontu nebo roly
+ error_workflow_copy_target: Prosím vyberte cílovou frontu(y) a roly(e)
+ error_unable_delete_issue_status: Nelze smazat stavy úkolů
+ error_unable_to_connect: Nelze se připojit (%{value})
+ warning_attachments_not_saved: "%{count} soubor(ů) nebylo možné uložit."
mail_subject_lost_password: "Vaše heslo (%{value})"
mail_body_lost_password: 'Pro změnu vašeho hesla klikněte na následující odkaz:'
@@ -177,6 +200,12 @@
mail_body_account_information: Informace o vašem účtu
mail_subject_account_activation_request: "Aktivace %{value} účtu"
mail_body_account_activation_request: "Byl zaregistrován nový uživatel %{value}. Aktivace jeho účtu závisí na vašem potvrzení."
+ mail_subject_reminder: "%{count} úkol(ů) má termín během několik dní (%{days})"
+ mail_body_reminder: "%{count} úkol(ů), které máte přiřazeny má termín během několik dní (%{days}):"
+ mail_subject_wiki_content_added: "'%{id}' Wiki stránka byla přidána"
+ mail_body_wiki_content_added: "'%{id}' Wiki stránka byla přidána od %{author}."
+ mail_subject_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována"
+ mail_body_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována od %{author}."
gui_validation_error: 1 chyba
gui_validation_error_plural: "%{count} chyb(y)"
@@ -216,6 +245,7 @@
field_priority: Priorita
field_fixed_version: Cílová verze
field_user: Uživatel
+ field_principal: Hlavní
field_role: Role
field_homepage: Domovská stránka
field_is_public: Veřejný
@@ -260,10 +290,23 @@
field_redirect_existing_links: Přesměrovat stvávající odkazy
field_estimated_hours: Odhadovaná doba
field_column_names: Sloupce
+ field_time_entries: Zaznamenaný čas
field_time_zone: Časové pásmo
field_searchable: Umožnit vyhledávání
field_default_value: Výchozí hodnota
field_comments_sorting: Zobrazit komentáře
+ field_parent_title: Rodičovská stránka
+ field_editable: Editovatelný
+ field_watcher: Sleduje
+ field_identity_url: OpenID URL
+ field_content: Obsah
+ field_group_by: Seskupovat výsledky podle
+ field_sharing: Sdílení
+ field_parent_issue: Rodičovský úkol
+ field_member_of_group: Skupina přiřaditele
+ field_assigned_to_role: Role přiřaditele
+ field_text: Textové pole
+ field_visible: Viditelný
setting_app_title: Název aplikace
setting_app_subtitle: Podtitulek aplikace
@@ -275,6 +318,7 @@
setting_issues_export_limit: Limit pro export úkolů
setting_mail_from: Odesílat emaily z adresy
setting_bcc_recipients: Příjemci skryté kopie (bcc)
+ setting_plain_text_mail: pouze prostý text (ne HTML)
setting_host_name: Jméno serveru
setting_text_formatting: Formátování textu
setting_wiki_compression: Komprese historie Wiki
@@ -290,12 +334,94 @@
setting_cross_project_issue_relations: Povolit vazby úkolů napříč projekty
setting_issue_list_default_columns: Výchozí sloupce zobrazené v seznamu úkolů
setting_repositories_encodings: Kódování
+ setting_commit_logs_encoding: Kódování zpráv při commitu
+ setting_emails_header: Hlavička emailů
setting_emails_footer: Patička emailů
setting_protocol: Protokol
setting_per_page_options: Povolené počty řádků na stránce
setting_user_format: Formát zobrazení uživatele
setting_activity_days_default: Dny zobrazené v činnosti projektu
setting_display_subprojects_issues: Automaticky zobrazit úkoly podprojektu v hlavním projektu
+ setting_enabled_scm: Povolené SCM
+ setting_mail_handler_body_delimiters: Zkrátit e-maily po jednom z těchto řádků
+ setting_mail_handler_api_enabled: Povolit WS pro příchozí e-maily
+ setting_mail_handler_api_key: API klíč
+ setting_sequential_project_identifiers: Generovat sekvenční identifikátory projektů
+ setting_gravatar_enabled: Použít uživatelské ikony Gravatar
+ setting_gravatar_default: Výchozí Gravatar
+ setting_diff_max_lines_displayed: Maximální počet zobrazenách řádků rozdílů
+ setting_file_max_size_displayed: Maximální velikost textových souborů zobrazených přímo na stránce
+ setting_repository_log_display_limit: Maximální počet revizí zobrazených v logu souboru
+ setting_openid: Umožnit přihlašování a registrace s OpenID
+ setting_password_min_length: Minimální délka hesla
+ setting_new_project_user_role_id: Role přiřazená uživateli bez práv administrátora, který projekt vytvořil
+ setting_default_projects_modules: Výchozí zapnutné moduly pro nový projekt
+ setting_issue_done_ratio: Spočítat koeficient dokončení úkolu s
+ setting_issue_done_ratio_issue_field: Použít pole úkolu
+ setting_issue_done_ratio_issue_status: Použít stav úkolu
+ setting_start_of_week: Začínat kalendáře
+ setting_rest_api_enabled: Zapnout službu REST
+ setting_cache_formatted_text: Ukládat formátovaný text do vyrovnávací paměti
+ setting_default_notification_option: Výchozí nastavení oznámení
+ setting_commit_logtime_enabled: Povolit zapisování času
+ setting_commit_logtime_activity_id: Aktivita pro zapsaný čas
+ setting_gantt_items_limit: Maximální počet položek zobrazený na ganttově grafu
+
+ permission_add_project: Vytvořit projekt
+ permission_add_subprojects: Vytvořit podprojekty
+ permission_edit_project: Úprava projektů
+ permission_select_project_modules: Výběr modulů projektu
+ permission_manage_members: Spravování členství
+ permission_manage_project_activities: Spravovat aktivity projektu
+ permission_manage_versions: Spravování verzí
+ permission_manage_categories: Spravování kategorií úkolů
+ permission_view_issues: Zobrazit úkoly
+ permission_add_issues: Přidávání úkolů
+ permission_edit_issues: Upravování úkolů
+ permission_manage_issue_relations: Spravování vztahů mezi úkoly
+ permission_add_issue_notes: Přidávání poznámek
+ permission_edit_issue_notes: Upravování poznámek
+ permission_edit_own_issue_notes: Upravování vlastních poznámek
+ permission_move_issues: Přesouvání úkolů
+ permission_delete_issues: Mazání úkolů
+ permission_manage_public_queries: Správa veřejných dotazů
+ permission_save_queries: Ukládání dotazů
+ permission_view_gantt: Zobrazené Ganttova diagramu
+ permission_view_calendar: Prohlížení kalendáře
+ permission_view_issue_watchers: Zobrazení seznamu sledujícíh uživatelů
+ permission_add_issue_watchers: Přidání sledujících uživatelů
+ permission_delete_issue_watchers: Smazat přihlížející
+ permission_log_time: Zaznamenávání stráveného času
+ permission_view_time_entries: Zobrazení stráveného času
+ permission_edit_time_entries: Upravování záznamů o stráveném času
+ permission_edit_own_time_entries: Upravování vlastních zázamů o stráveném čase
+ permission_manage_news: Spravování novinek
+ permission_comment_news: Komentování novinek
+ permission_manage_documents: Správa dokumentů
+ permission_view_documents: Prohlížení dokumentů
+ permission_manage_files: Spravování souborů
+ permission_view_files: Prohlížení souborů
+ permission_manage_wiki: Spravování Wiki
+ permission_rename_wiki_pages: Přejmenovávání Wiki stránek
+ permission_delete_wiki_pages: Mazání stránek na Wiki
+ permission_view_wiki_pages: Prohlížení Wiki
+ permission_view_wiki_edits: Prohlížení historie Wiki
+ permission_edit_wiki_pages: Upravování stránek Wiki
+ permission_delete_wiki_pages_attachments: Mazání příloh
+ permission_protect_wiki_pages: Zabezpečení Wiki stránek
+ permission_manage_repository: Spravování repozitáře
+ permission_browse_repository: Procházení repozitáře
+ permission_view_changesets: Zobrazování sady změn
+ permission_commit_access: Commit přístup
+ permission_manage_boards: Správa diskusních fór
+ permission_view_messages: Prohlížení zpráv
+ permission_add_messages: Posílání zpráv
+ permission_edit_messages: Upravování zpráv
+ permission_edit_own_messages: Upravit vlastní zprávy
+ permission_delete_messages: Mazání zpráv
+ permission_delete_own_messages: Smazat vlastní zprávy
+ permission_export_wiki_pages: Exportovat Wiki stránky
+ permission_manage_subtasks: Spravovat podúkoly
project_module_issue_tracking: Sledování úkolů
project_module_time_tracking: Sledování času
@@ -305,10 +431,13 @@
project_module_wiki: Wiki
project_module_repository: Repozitář
project_module_boards: Diskuse
+ project_module_calendar: Kalendář
+ project_module_gantt: Gantt
label_user: Uživatel
label_user_plural: Uživatelé
label_user_new: Nový uživatel
+ label_user_anonymous: Anonymní
label_project: Projekt
label_project_new: Nový projekt
label_project_plural: Projekty
@@ -355,11 +484,13 @@
label_information_plural: Informace
label_please_login: Prosím přihlašte se
label_register: Registrovat
+ label_login_with_open_id_option: nebo se přihlašte s OpenID
label_password_lost: Zapomenuté heslo
label_home: Úvodní
label_my_page: Moje stránka
label_my_account: Můj účet
label_my_projects: Moje projekty
+ label_my_page_block: Bloky na mé stránce
label_administration: Administrace
label_login: Přihlášení
label_logout: Odhlášení
@@ -370,6 +501,7 @@
label_registered_on: Registrován
label_activity: Aktivita
label_overall_activity: Celková aktivita
+ label_user_activity: "Aktivita uživatele: %{value}"
label_new: Nový
label_logged_as: Přihlášen jako
label_environment: Prostředí
@@ -378,6 +510,8 @@
label_auth_source_new: Nový mód autentifikace
label_auth_source_plural: Módy autentifikace
label_subproject_plural: Podprojekty
+ label_subproject_new: Nový podprojekt
+ label_and_its_subprojects: "%{value} a jeho podprojekty"
label_min_max_length: Min - Max délka
label_list: Seznam
label_date: Datum
@@ -411,6 +545,7 @@
label_version: Verze
label_version_new: Nová verze
label_version_plural: Verze
+ label_close_versions: Zavřít dokončené verze
label_confirmation: Potvrzení
label_export_to: 'Také k dispozici:'
label_read: Načítá se...
@@ -469,6 +604,8 @@
label_not_equals: není
label_in_less_than: je měší než
label_in_more_than: je větší než
+ label_greater_or_equal: '>='
+ label_less_or_equal: '<='
label_in: v
label_today: dnes
label_all_time: vše
@@ -491,15 +628,21 @@
label_browse: Procházet
label_modification: "%{count} změna"
label_modification_plural: "%{count} změn"
+ label_branch: Větev
+ label_tag: Tag
label_revision: Revize
label_revision_plural: Revizí
+ label_revision_id: "Revize %{value}"
label_associated_revisions: Související verze
label_added: přidáno
label_modified: změněno
+ label_copied: zkopírováno
+ label_renamed: přejmenováno
label_deleted: odstraněno
label_latest_revision: Poslední revize
label_latest_revision_plural: Poslední revize
label_view_revisions: Zobrazit revize
+ label_view_all_revisions: Zobrazit všechny revize
label_max_size: Maximální velikost
label_sort_highest: Přesunout na začátek
label_sort_higher: Přesunout nahoru
@@ -525,6 +668,7 @@
label_changes_details: Detail všech změn
label_issue_tracking: Sledování úkolů
label_spent_time: Strávený čas
+ label_overall_spent_time: Celkem strávený čas
label_f_hour: "%{value} hodina"
label_f_hour_plural: "%{value} hodin"
label_time_tracking: Sledování času
@@ -545,7 +689,8 @@
label_relation_new: Nová souvislost
label_relation_delete: Odstranit souvislost
label_relates_to: související s
- label_duplicates: duplicity
+ label_duplicates: duplikuje
+ label_duplicated_by: zduplikován
label_blocks: blokuje
label_blocked_by: zablokován
label_precedes: předchází
@@ -561,6 +706,8 @@
label_board: Fórum
label_board_new: Nové fórum
label_board_plural: Fóra
+ label_board_locked: Uzamčeno
+ label_board_sticky: Nálepka
label_topic_plural: Témata
label_message_plural: Zprávy
label_message_last: Poslední zpráva
@@ -576,9 +723,12 @@
label_language_based: Podle výchozího jazyku
label_sort_by: "Seřadit podle %{value}"
label_send_test_email: Poslat testovací email
+ label_feeds_access_key: Přístupový klíč pro RSS
+ label_missing_feeds_access_key: Postrádá přístupový klíč pro RSS
label_feeds_access_key_created_on: "Přístupový klíč pro RSS byl vytvořen před %{value}"
label_module_plural: Moduly
label_added_time_by: "Přidáno uživatelem %{author} před %{age}"
+ label_updated_time_by: "Aktualizováno uživatelem %{author} před %{age}"
label_updated_time: "Aktualizováno před %{value}"
label_jump_to_a_project: Vyberte projekt...
label_file_plural: Soubory
@@ -591,6 +741,10 @@
label_search_titles_only: Vyhledávat pouze v názvech
label_user_mail_option_all: "Pro všechny události všech mých projektů"
label_user_mail_option_selected: "Pro všechny události vybraných projektů..."
+ label_user_mail_option_none: "Žádné události"
+ label_user_mail_option_only_my_events: "Jen pro věci co sleduji nebo jsem v nich zapojen"
+ label_user_mail_option_only_assigned: "Jen pro všeci kterým sem přiřazen"
+ label_user_mail_option_only_owner: "Jen pro věci které vlastním"
label_user_mail_no_self_notified: "Nezasílat informace o mnou vytvořených změnách"
label_registration_activation_by_email: aktivace účtu emailem
label_registration_manual_activation: manuální aktivace účtu
@@ -609,6 +763,40 @@
label_preferences: Nastavení
label_chronological_order: V chronologickém pořadí
label_reverse_chronological_order: V obrácaném chronologickém pořadí
+ label_planning: Plánování
+ label_incoming_emails: Příchozí e-maily
+ label_generate_key: Generovat klíč
+ label_issue_watchers: Sledování
+ label_example: Příklad
+ label_display: Zobrazit
+ label_sort: Řazení
+ label_ascending: Vzestupně
+ label_descending: Sestupně
+ label_date_from_to: Od %{start} do %{end}
+ label_wiki_content_added: Wiki stránka přidána
+ label_wiki_content_updated: Wiki stránka aktualizována
+ label_group: Skupina
+ label_group_plural: Skupiny
+ label_group_new: Nová skupina
+ label_time_entry_plural: Strávený čas
+ label_version_sharing_none: Nesdíleno
+ label_version_sharing_descendants: S podprojekty
+ label_version_sharing_hierarchy: S hierarchií projektu
+ label_version_sharing_tree: Se stromem projektu
+ label_version_sharing_system: Se všemi projekty
+ label_update_issue_done_ratios: Aktualizovat koeficienty dokončení úkolů
+ label_copy_source: Zdroj
+ label_copy_target: Cíl
+ label_copy_same_as_target: Stejný jako cíl
+ label_display_used_statuses_only: Zobrazit pouze stavy které jsou použité touto frontou
+ label_api_access_key: API přístupový klíč
+ label_missing_api_access_key: Chybějící přístupový klíč API
+ label_api_access_key_created_on: API přístupový klíč vytvořen %{value}
+ label_profile: Profil
+ label_subtask_plural: Podúkol
+ label_project_copy_notifications: Odeslat email oznámení v průběhu kopie projektu
+ label_principal_search: "Hledat uživatele nebo skupinu:"
+ label_user_search: "Hledat uživatele:"
button_login: Přihlásit
button_submit: Potvrdit
@@ -617,8 +805,10 @@
button_uncheck_all: Odšrtnout vše
button_delete: Odstranit
button_create: Vytvořit
- button_test: Test
+ button_create_and_continue: Vytvořit a pokračovat
+ button_test: Testovat
button_edit: Upravit
+ button_edit_associated_wikipage: "Upravit přiřazenou Wiki stránku: %{page_title}"
button_add: Přidat
button_change: Změnit
button_apply: Použít
@@ -629,6 +819,7 @@
button_list: Vypsat
button_view: Zobrazit
button_move: Přesunout
+ button_move_and_follow: Přesunout a následovat
button_back: Zpět
button_cancel: Storno
button_activate: Aktivovat
@@ -640,24 +831,40 @@
button_reply: Odpovědět
button_archive: Archivovat
button_unarchive: Odarchivovat
- button_reset: Reset
+ button_reset: Resetovat
button_rename: Přejmenovat
button_change_password: Změnit heslo
button_copy: Kopírovat
+ button_copy_and_follow: Kopírovat a následovat
button_annotate: Komentovat
button_update: Aktualizovat
button_configure: Konfigurovat
+ button_quote: Citovat
+ button_duplicate: Duplikát
+ button_show: Zobrazit
status_active: aktivní
status_registered: registrovaný
status_locked: uzamčený
+ version_status_open: otevřený
+ version_status_locked: uzamčený
+ version_status_closed: zavřený
+
+ field_active: Aktivní
+
text_select_mail_notifications: Vyberte akci při které bude zasláno upozornění emailem.
text_regexp_info: např. ^[A-Z0-9]+$
text_min_max_length_info: 0 znamená bez limitu
text_project_destroy_confirmation: Jste si jisti, že chcete odstranit tento projekt a všechna související data ?
+ text_subprojects_destroy_warning: "Jeho podprojek(y): %{value} budou také smazány."
text_workflow_edit: Vyberte roli a frontu k editaci průběhu práce
text_are_you_sure: Jste si jisti?
+ text_are_you_sure_with_children: Smazat úkol včetně všech podúkolů?
+ text_journal_changed: "%{label} změněn z %{old} na %{new}"
+ text_journal_set_to: "%{label} nastaven na %{value}"
+ text_journal_deleted: "%{label} smazán (%{old})"
+ text_journal_added: "%{label} %{value} přidán"
text_tip_issue_begin_day: úkol začíná v tento den
text_tip_issue_end_day: úkol končí v tento den
text_tip_issue_begin_end_day: úkol začíná a končí v tento den
@@ -668,6 +875,7 @@
text_tracker_no_workflow: Pro tuto frontu není definován žádný průběh práce
text_unallowed_characters: Nepovolené znaky
text_comma_separated: Povoleno více hodnot (oddělěné čárkou).
+ text_line_separated: Více hodnot povoleno (jeden řádek pro každou hodnotu).
text_issues_ref_in_commit_messages: Odkazování a opravování úkolů ve zprávách commitů
text_issue_added: "Úkol %{id} byl vytvořen uživatelem %{author}."
text_issue_updated: "Úkol %{id} byl aktualizován uživatelem %{author}."
@@ -679,15 +887,31 @@
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_status_changed_by_changeset: "Použito v changesetu %{value}."
+ text_time_logged_by_changeset: Aplikováno 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:'
text_default_administrator_account_changed: Výchozí nastavení administrátorského účtu změněno
text_file_repository_writable: Povolen zápis do adresáře ukládání souborů
+ text_plugin_assets_writable: Možnost zápisu do adresáře plugin assets
text_rmagick_available: RMagick k dispozici (volitelné)
text_destroy_time_entries_question: "U úkolů, které chcete odstranit je evidováno %{hours} práce. Co chete udělat?"
text_destroy_time_entries: Odstranit evidované hodiny.
text_assign_time_entries_to_project: Přiřadit evidované hodiny projektu
text_reassign_time_entries: 'Přeřadit evidované hodiny k tomuto úkolu:'
+ text_user_wrote: "%{value} napsal:"
+ text_enumeration_destroy_question: "Několik (%{count}) objektů je přiřazeno k této hodnotě."
+ text_enumeration_category_reassign_to: 'Přeřadit je do této:'
+ text_email_delivery_not_configured: "Doručování e-mailů není nastaveno a odesílání notifikací je zakázáno.\nNastavte Váš SMTP server v souboru config/email.yml a restartujte aplikaci."
+ text_repository_usernames_mapping: "Vybrat nebo upravit mapování mezi Redmine uživateli a uživatelskými jmény nalezenými v logu repozitáře.\nUživatelé se shodným Redmine uživatelským jménem a uživatelským jménem v repozitáři jsou mapovaní automaticky."
+ text_diff_truncated: '... Rozdílový soubor je zkrácen, protože jeho délka přesahuje max. limit.'
+ text_custom_field_possible_values_info: 'Každá hodnota na novém řádku'
+ text_wiki_page_destroy_question: Tato stránka má %{descendants} podstránek a potomků. Co chcete udělat?
+ text_wiki_page_nullify_children: Ponechat podstránky jako kořenové stránky
+ text_wiki_page_destroy_children: Smazat podstránky a všechny jejich potomky
+ text_wiki_page_reassign_children: Přiřadit podstránky k tomuto rodiči
+ text_own_membership_delete_confirmation: "Chystáte se odebrat si některá nebo všechny svá oprávnění a potom již nemusíte být schopni upravit tento projekt.\nOpravdu chcete pokračovat?"
+ text_zoom_in: Přiblížit
+ text_zoom_out: Oddálit
default_role_manager: Manažer
default_role_developer: Vývojář
@@ -714,225 +938,9 @@
enumeration_issue_priorities: Priority úkolů
enumeration_doc_categories: Kategorie dokumentů
enumeration_activities: Aktivity (sledování času)
- error_scm_annotate: "Položka neexistuje nebo nemůže být komentována."
- label_planning: Plánování
- text_subprojects_destroy_warning: "Jeho podprojek(y): %{value} budou také smazány."
- label_and_its_subprojects: "%{value} a jeho podprojekty"
- mail_body_reminder: "%{count} úkol(ů), které máte přiřazeny má termín během několik dní (%{days}):"
- mail_subject_reminder: "%{count} úkol(ů) má termín během několik dní (%{days})"
- text_user_wrote: "%{value} napsal:"
- label_duplicated_by: duplikováno od
- setting_enabled_scm: Povolené SCM
- text_enumeration_category_reassign_to: 'Přeřadit je do této:'
- text_enumeration_destroy_question: "Několik (%{count}) objektů je přiřazeno k této hodnotě."
- label_incoming_emails: Příchozí e-maily
- label_generate_key: Generovat klíč
- setting_mail_handler_api_enabled: Povolit WS pro příchozí e-maily
- setting_mail_handler_api_key: API klíč
- text_email_delivery_not_configured: "Doručování e-mailů není nastaveno a odesílání notifikací je zakázáno.\nNastavte Váš SMTP server v souboru config/configuration.yml a restartujte aplikaci."
- field_parent_title: Rodičovská stránka
- label_issue_watchers: Sledování
- setting_commit_logs_encoding: Kódování zpráv při commitu
- button_quote: Citovat
- setting_sequential_project_identifiers: Generovat sekvenční identifikátory projektů
- notice_unable_delete_version: Nemohu odstanit verzi
- label_renamed: přejmenováno
- label_copied: zkopírováno
- setting_plain_text_mail: pouze prostý text (ne HTML)
- permission_view_files: Prohlížení souborů
- permission_edit_issues: Upravování úkolů
- permission_edit_own_time_entries: Upravování vlastních zázamů o stráveném čase
- permission_manage_public_queries: Správa veřejných dotazů
- permission_add_issues: Přidávání úkolů
- permission_log_time: Zaznamenávání stráveného času
- permission_view_changesets: Zobrazování sady změn
- permission_view_time_entries: Zobrazení stráveného času
- permission_manage_versions: Spravování verzí
- permission_manage_wiki: Spravování Wiki
- permission_manage_categories: Spravování kategorií úkolů
- permission_protect_wiki_pages: Zabezpečení Wiki stránek
- permission_comment_news: Komentování novinek
- permission_delete_messages: Mazání zpráv
- permission_select_project_modules: Výběr modulů projektu
- permission_manage_documents: Správa dokumentů
- permission_edit_wiki_pages: Upravování stránek Wiki
- 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ů
- permission_manage_issue_relations: Spravování vztahů mezi úkoly
- permission_delete_wiki_pages: Mazání stránek na Wiki
- permission_manage_boards: Správa diskusních fór
- permission_delete_wiki_pages_attachments: Mazání příloh
- permission_view_wiki_edits: Prohlížení historie Wiki
- permission_add_messages: Posílání zpráv
- permission_view_messages: Prohlížení zpráv
- permission_manage_files: Spravování souborů
- permission_edit_issue_notes: Upravování poznámek
- permission_manage_news: Spravování novinek
- permission_view_calendar: Prohlížení kalendáře
- permission_manage_members: Spravování členství
- permission_edit_messages: Upravování zpráv
- permission_delete_issues: Mazání úkolů
- permission_view_issue_watchers: Zobrazení seznamu sledujícíh uživatelů
- permission_manage_repository: Spravování repozitáře
- permission_commit_access: Commit přístup
- permission_browse_repository: Procházení repozitáře
- permission_view_documents: Prohlížení dokumentů
- permission_edit_project: Úprava projektů
- permission_add_issue_notes: Přidávání poznámek
- permission_save_queries: Ukládání dotazů
- permission_view_wiki_pages: Prohlížení Wiki
- permission_rename_wiki_pages: Přejmenovávání Wiki stránek
- permission_edit_time_entries: Upravování záznamů o stráveném času
- permission_edit_own_issue_notes: Upravování vlastních poznámek
- setting_gravatar_enabled: Použít uživatelské ikony Gravatar
- label_example: Příklad
- text_repository_usernames_mapping: "Vybrat nebo upravit mapování mezi Redmine uživateli a uživatelskými jmény nalezenými v logu repozitáře.\nUživatelé se shodným Redmine uživatelským jménem a uživatelským jménem v repozitáři jsou mapovaní automaticky."
- permission_edit_own_messages: Upravit vlastní zprávy
- permission_delete_own_messages: Smazat vlastní zprávy
- label_user_activity: "Aktivita uživatele: %{value}"
- label_updated_time_by: "Akutualizováno: %{author} před: %{age}"
- text_diff_truncated: '... Rozdílový soubor je zkrácen, protože jeho délka přesahuje max. limit.'
- setting_diff_max_lines_displayed: Maximální počet zobrazenách řádků rozdílů
- text_plugin_assets_writable: Možnost zápisu do adresáře plugin assets
- warning_attachments_not_saved: "%{count} soubor(ů) nebylo možné uložit."
- button_create_and_continue: Vytvořit a pokračovat
- text_custom_field_possible_values_info: 'Každá hodnota na novém řádku'
- label_display: Zobrazit
- field_editable: Editovatelný
- setting_repository_log_display_limit: Maximální počet revizí zobrazených v logu souboru
- setting_file_max_size_displayed: Maximální velikost textových souborů zobrazených přímo na stránce
- field_watcher: Sleduje
- setting_openid: Umožnit přihlašování a registrace s OpenID
- field_identity_url: OpenID URL
- label_login_with_open_id_option: nebo se přihlašte s OpenID
- field_content: Obsah
- label_descending: Sestupně
- label_sort: Řazení
- label_ascending: Vzestupně
- label_date_from_to: Od %{start} do %{end}
- label_greater_or_equal: ">="
- label_less_or_equal: <=
- text_wiki_page_destroy_question: Tato stránka má %{descendants} podstránek a potomků. Co chcete udělat?
- text_wiki_page_reassign_children: Přiřadit podstránky k tomuto rodiči
- text_wiki_page_nullify_children: Ponechat podstránky jako kořenové stránky
- text_wiki_page_destroy_children: Smazat podstránky a všechny jejich potomky
- setting_password_min_length: Minimální délka hesla
- field_group_by: Seskupovat výsledky podle
- mail_subject_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována"
- label_wiki_content_added: Wiki stránka přidána
- mail_subject_wiki_content_added: "'%{id}' Wiki stránka byla přidána"
- mail_body_wiki_content_added: "'%{id}' Wiki stránka byla přidána od %{author}."
- label_wiki_content_updated: Wiki stránka aktualizována
- mail_body_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována od %{author}."
- permission_add_project: Vytvořit projekt
- setting_new_project_user_role_id: Role přiřazená uživateli bez práv administrátora, který projekt vytvořil
- label_view_all_revisions: Zobrazit všechny revize
- label_tag: Tag
- label_branch: Branch
- error_no_tracker_in_project: Žádná fronta nebyla přiřazena tomuto projektu. Prosím zkontroluje nastavení projektu.
- error_no_default_issue_status: Není nastaven výchozí stav úkolu. Prosím zkontrolujte nastavení ("Administrace -> Stavy úkolů").
- text_journal_changed: "%{label} změněn z %{old} na %{new}"
- text_journal_set_to: "%{label} nastaven na %{value}"
- text_journal_deleted: "%{label} smazán (%{old})"
- label_group_plural: Skupiny
- label_group: Skupina
- label_group_new: Nová skupina
- label_time_entry_plural: Strávený čas
- text_journal_added: "%{label} %{value} přidán"
- field_active: Aktivní
enumeration_system_activity: Systémová aktivita
- permission_delete_issue_watchers: Smazat přihlížející
- version_status_closed: zavřený
- version_status_locked: uzamčený
- version_status_open: otevřený
- error_can_not_reopen_issue_on_closed_version: Úkol přiřazený k uzavřené verzi nemůže být znovu otevřen
- label_user_anonymous: Anonymní
- button_move_and_follow: Přesunout a následovat
- setting_default_projects_modules: Výchozí zapnutné moduly pro nový projekt
- setting_gravatar_default: Výchozí Gravatar
- field_sharing: Sdílení
- label_version_sharing_hierarchy: S hierarchií projektu
- label_version_sharing_system: Se všemi projekty
- label_version_sharing_descendants: S podprojekty
- label_version_sharing_tree: Se stromem projektu
- label_version_sharing_none: Nesdíleno
- error_can_not_archive_project: Tento projekt nemůže být archivován
- button_duplicate: Duplikát
- button_copy_and_follow: Kopírovat a následovat
- label_copy_source: Zdroj
- setting_issue_done_ratio: Spočítat koeficient dokončení úkolu s
- setting_issue_done_ratio_issue_status: Použít stav úkolu
- error_issue_done_ratios_not_updated: Koeficient dokončení úkolu nebyl aktualizován.
- error_workflow_copy_target: Prosím vyberte cílovou frontu(y) a roly(e)
- setting_issue_done_ratio_issue_field: Použít pole úkolu
- label_copy_same_as_target: Stejný jako cíl
- label_copy_target: Cíl
- notice_issue_done_ratios_updated: Koeficienty dokončení úkolu byly aktualizovány.
- error_workflow_copy_source: Prosím vyberte zdrojovou frontu nebo roly
- label_update_issue_done_ratios: Aktualizovat koeficienty dokončení úkolů
- setting_start_of_week: Začínat kalendáře
- permission_view_issues: Zobrazit úkoly
- label_display_used_statuses_only: Zobrazit pouze stavy které jsou použité touto frontou
- label_revision_id: Revize %{value}
- label_api_access_key: API přístupový klíč
- label_api_access_key_created_on: API přístupový klíč vytvořen %{value}
- label_feeds_access_key: RSS přístupový klíč
- notice_api_access_key_reseted: Váš API přístupový klíč byl resetován.
- setting_rest_api_enabled: Zapnout službu REST
- label_missing_api_access_key: Chybějící přístupový klíč API
- label_missing_feeds_access_key: Chybějící přístupový klíč RSS
- button_show: Zobrazit
- text_line_separated: Více hodnot povoleno (jeden řádek pro každou hodnotu).
- setting_mail_handler_body_delimiters: Zkrátit e-maily po jednom z těchto řádků
- permission_add_subprojects: Vytvořit podprojekty
- label_subproject_new: Nový podprojekt
- text_own_membership_delete_confirmation: |-
- Chystáte se odebrat si některá nebo všechny svá oprávnění a potom již nemusíte být schopni upravit tento projekt.
- Opravdu chcete pokračovat?
- label_close_versions: Zavřít dokončené verze
- label_board_sticky: Nálepka
- label_board_locked: Uzamčeno
- permission_export_wiki_pages: Exportovat Wiki stránky
- setting_cache_formatted_text: Ukládat formátovaný text do vyrovnávací paměti
- permission_manage_project_activities: Spravovat aktivity projektu
- error_unable_delete_issue_status: Nelze smazat stavy úkolů
- label_profile: Profil
- permission_manage_subtasks: Spravovat podúkoly
- field_parent_issue: Rodičovský úkol
- label_subtask_plural: Podúkol
- label_project_copy_notifications: Odeslat email oznámení v průběhu kopie projektu
- error_can_not_delete_custom_field: Nelze smazat volitelné pole
- error_unable_to_connect: Nelze se připojit (%{value})
- error_can_not_remove_role: Tato role je právě používaná a nelze ji smazat.
- error_can_not_delete_tracker: Tato fronta obsahuje úkoly a nemůže být smazán.
- field_principal: Hlavní
- label_my_page_block: Bloky na mé stránce
- notice_failed_to_save_members: "Nepodařilo se uložit člena(y): %{errors}."
- text_zoom_out: Oddálit
- text_zoom_in: Přiblížit
- notice_unable_delete_time_entry: Nelze smazat čas ze záznamu.
- label_overall_spent_time: Celkově strávený čas
- field_time_entries: Zaznamenaný čas
- project_module_gantt: Gantt
- project_module_calendar: Kalendář
- button_edit_associated_wikipage: "Upravit přiřazenou Wiki stránku: %{page_title}"
- text_are_you_sure_with_children: Smazat úkol včetně všech podúkolů?
- field_text: Textové pole
- label_user_mail_option_only_owner: Only for things I am the owner of
- setting_default_notification_option: Default notification option
- label_user_mail_option_only_my_events: Only for things I watch or I'm involved in
- label_user_mail_option_only_assigned: Only for things I am assigned to
- label_user_mail_option_none: No events
- field_member_of_group: Assignee's group
- field_assigned_to_role: Assignee's role
- 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:"
- field_visible: Visible
- setting_emails_header: Emails header
- setting_commit_logtime_activity_id: Activity for logged time
- text_time_logged_by_changeset: Applied in changeset %{value}.
- setting_commit_logtime_enabled: Enable time logging
- notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
- setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/da.yml
--- a/config/locales/da.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/da.yml Thu Mar 03 11:42:28 2011 +0000
@@ -952,3 +952,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/de.yml
--- a/config/locales/de.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/de.yml Thu Mar 03 11:42:28 2011 +0000
@@ -953,3 +953,7 @@
setting_commit_logtime_enabled: Aktiviere Zeitlogging
notice_gantt_chart_truncated: Die Grafik ist unvollständig, da das Maximum der anzeigbaren Aufgaben überschritten wurde (%{max})
setting_gantt_items_limit: Maximale Anzahl von Aufgaben die im Gantt-Chart angezeigt werden.
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/el.yml
--- a/config/locales/el.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/el.yml Thu Mar 03 11:42:28 2011 +0000
@@ -936,3 +936,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/en-GB.yml
--- a/config/locales/en-GB.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/en-GB.yml Thu Mar 03 11:42:28 2011 +0000
@@ -940,3 +940,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/en.yml
--- a/config/locales/en.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/en.yml Thu Mar 03 11:42:28 2011 +0000
@@ -303,6 +303,7 @@
field_assigned_to_role: "Assignee's role"
field_text: Text field
field_visible: Visible
+ field_warn_on_leaving_unsaved: "Warn me when leaving a page with unsaved text"
setting_app_title: Application title
setting_app_subtitle: Application subtitle
@@ -594,6 +595,7 @@
label_query: Custom query
label_query_plural: Custom queries
label_query_new: New query
+ label_my_queries: My custom queries
label_filter_add: Add filter
label_filter_plural: Filters
label_equals: is
@@ -858,6 +860,7 @@
text_are_you_sure: Are you sure ?
text_are_you_sure_with_children: "Delete issue and all child issues?"
text_journal_changed: "%{label} changed from %{old} to %{new}"
+ text_journal_changed_no_detail: "%{label} updated"
text_journal_set_to: "%{label} set to %{value}"
text_journal_deleted: "%{label} deleted (%{old})"
text_journal_added: "%{label} %{value} added"
@@ -908,6 +911,7 @@
text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?"
text_zoom_in: Zoom in
text_zoom_out: Zoom out
+ text_warn_on_leaving_unsaved: "The current page contains unsaved text that will be lost if you leave this page."
default_role_manager: Manager
default_role_developer: Developer
diff -r 8972b600f4fb -r 051f544170fe config/locales/es.yml
--- a/config/locales/es.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/es.yml Thu Mar 03 11:42:28 2011 +0000
@@ -973,3 +973,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/eu.yml
--- a/config/locales/eu.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/eu.yml Thu Mar 03 11:42:28 2011 +0000
@@ -99,8 +99,8 @@
errors:
template:
header:
- one: "1 error prohibited this %{model} from being saved"
- other: "%{count} errors prohibited this %{model} from being saved"
+ one: "Errore batek %{model} hau godetzea galarazi du."
+ other: "%{count} errorek %{model} hau gordetzea galarazi dute."
messages:
inclusion: "ez dago zerrendan"
exclusion: "erreserbatuta dago"
@@ -125,7 +125,7 @@
greater_than_start_date: "hasiera data baino handiagoa izan behar du"
not_same_project: "ez dago proiektu berdinean"
circular_dependency: "Erlazio honek mendekotasun zirkular bat sortuko luke"
- cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
+ cant_link_an_issue_with_a_descendant: "Zeregin bat ezin da bere azpiataza batekin estekatu."
actionview_instancetag_blank_option: Hautatu mesedez
@@ -277,7 +277,7 @@
field_issue_to: Erlazionatutako zereginak
field_delay: Atzerapena
field_assignable: Arazoak rol honetara esleitu daitezke
- field_redirect_existing_links: Existitzen diren estelak berbideratu
+ field_redirect_existing_links: Existitzen diren estekak berbideratu
field_estimated_hours: Estimatutako denbora
field_column_names: Zutabeak
field_time_zone: Ordu zonaldea
@@ -318,7 +318,7 @@
setting_cross_project_issue_relations: Zereginak proiektuen artean erlazionatzea baimendu
setting_issue_list_default_columns: Zereginen zerrendan defektuz ikusten diren zutabeak
setting_repositories_encodings: Biltegien kodeketak
- setting_commit_logs_encoding: Commit-en mezuen kodetzea
+ setting_commit_logs_encoding: Commit-en egunkarien kodetzea
setting_emails_footer: Eposten oina
setting_protocol: Protokoloa
setting_per_page_options: Orriko objektuen aukerak
@@ -363,7 +363,7 @@
permission_delete_issues: Zereginak ezabatu
permission_manage_public_queries: Galdera publikoak kudeatu
permission_save_queries: Galderak gorde
- permission_view_gantt: Gantt diagrama ikusi
+ permission_view_gantt: Gantt grafikoa ikusi
permission_view_calendar: Egutegia ikusi
permission_view_issue_watchers: Behatzaileen zerrenda ikusi
permission_add_issue_watchers: Behatzaileak gehitu
@@ -441,7 +441,7 @@
label_tracker: Aztarnaria
label_tracker_plural: Aztarnariak
label_tracker_new: Aztarnari berria
- label_workflow: Workflow
+ label_workflow: Lan-fluxua
label_issue_status: Zeregin egoera
label_issue_status_plural: Zeregin egoerak
label_issue_status_new: Egoera berria
@@ -506,7 +506,7 @@
label_file_added: Fitxategia gehituta
label_report: Berri ematea
label_report_plural: Berri emateak
- label_news: Beria
+ label_news: Berria
label_news_new: Berria gehitu
label_news_plural: Berriak
label_news_latest: Azken berriak
@@ -553,7 +553,7 @@
label_add_note: Oharra gehitu
label_per_page: Orriko
label_calendar: Egutegia
- label_months_from: months from
+ label_months_from: hilabete noiztik
label_gantt: Gantt
label_internal: Barnekoa
label_last_changes: "azken %{count} aldaketak"
@@ -784,7 +784,7 @@
button_cancel: Ezeztatu
button_activate: Gahitu
button_sort: Ordenatu
- button_log_time: Denbora apuntatu
+ button_log_time: Denbora erregistratu
button_rollback: Itzuli bertsio honetara
button_watch: Behatu
button_unwatch: Behatzen utzi
@@ -824,9 +824,9 @@
text_journal_set_to: "%{label}-k %{value} balioa hartu du"
text_journal_deleted: "%{label} ezabatuta (%{old})"
text_journal_added: "%{label} %{value} gehituta"
- text_tip_issue_begin_day: gaur hasten diren atazak
- text_tip_issue_end_day: gaur bukatzen diren atazak
- text_tip_issue_begin_end_day: gaur hasi eta bukatzen diren atazak
+ text_tip_issue_begin_day: gaur hasten diren zereginak
+ text_tip_issue_end_day: gaur bukatzen diren zereginak
+ text_tip_issue_begin_end_day: gaur hasi eta bukatzen diren zereginak
text_project_identifier_info: 'Letra xeheak (a-z), zenbakiak eta marrak erabil daitezke bakarrik.
Gorde eta gero identifikadorea ezin da aldatu.'
text_caracters_maximum: "%{count} karaktere gehienez."
text_caracters_minimum: "Gutxienez %{count} karaktereetako luzerakoa izan behar du."
@@ -895,7 +895,7 @@
enumeration_doc_categories: Dokumentu kategoriak
enumeration_activities: Jarduerak (denbora kontrola))
enumeration_system_activity: Sistemako Jarduera
- label_board_sticky: Itxaskorra
+ label_board_sticky: Itsaskorra
label_board_locked: Blokeatuta
permission_export_wiki_pages: Wiki orriak esportatu
setting_cache_formatted_text: Formatudun testua katxeatu
@@ -903,40 +903,44 @@
error_unable_delete_issue_status: Ezine da zereginaren egoera ezabatu
label_profile: Profila
permission_manage_subtasks: Azpiatazak kudeatu
- field_parent_issue: Guraso ataza
+ field_parent_issue: Zeregin gurasoa
label_subtask_plural: Azpiatazak
label_project_copy_notifications: Proiektua kopiatzen den bitartean eposta jakinarazpenak bidali
- error_can_not_delete_custom_field: Ezin da eremu pertsonallizatua ezabatu
+ error_can_not_delete_custom_field: Ezin da eremu pertsonalizatua ezabatu
error_unable_to_connect: Ezin da konektatu (%{value})
error_can_not_remove_role: Rol hau erabiltzen hari da eta ezin da ezabatu.
error_can_not_delete_tracker: Aztarnari honek zereginak ditu eta ezin da ezabatu.
- field_principal: Principal
- label_my_page_block: My page block
- notice_failed_to_save_members: "Failed to save member(s): %{errors}."
- text_zoom_out: Zoom out
- text_zoom_in: Zoom in
- notice_unable_delete_time_entry: Unable to delete time log entry.
- label_overall_spent_time: Overall spent time
- field_time_entries: Log time
+ field_principal: Ekintzaile
+ label_my_page_block: "Nire orriko blokea"
+ notice_failed_to_save_members: "Kidea(k) gordetzean errorea: %{errors}."
+ text_zoom_out: Zooma txikiagotu
+ text_zoom_in: Zooma handiagotu
+ notice_unable_delete_time_entry: "Ezin da hautatutako denbora erregistroa ezabatu."
+ label_overall_spent_time: Igarotako denbora guztira
+ field_time_entries: "Denbora erregistratu"
project_module_gantt: Gantt
- project_module_calendar: Calendar
- button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}"
- text_are_you_sure_with_children: Delete issue and all child issues?
- field_text: Text field
- label_user_mail_option_only_owner: Only for things I am the owner of
- setting_default_notification_option: Default notification option
- label_user_mail_option_only_my_events: Only for things I watch or I'm involved in
- label_user_mail_option_only_assigned: Only for things I am assigned to
- label_user_mail_option_none: No events
- field_member_of_group: Assignee's group
- field_assigned_to_role: Assignee's role
- 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:"
- field_visible: Visible
- setting_emails_header: Emails header
- setting_commit_logtime_activity_id: Activity for logged time
- text_time_logged_by_changeset: Applied in changeset %{value}.
- setting_commit_logtime_enabled: Enable time logging
- notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
- setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ project_module_calendar: Egutegia
+ button_edit_associated_wikipage: "Esleitutako wiki orria editatu: %{page_title}"
+ text_are_you_sure_with_children: "Zeregina eta azpi zeregin guztiak ezabatu?"
+ field_text: Testu eremua
+ label_user_mail_option_only_owner: "Jabea naizen gauzetarako barrarik"
+ setting_default_notification_option: "Lehenetsitako ohartarazpen aukera"
+ label_user_mail_option_only_my_events: "Behatzen ditudan edo partaide naizen gauzetarako bakarrik"
+ label_user_mail_option_only_assigned: "Niri esleitutako gauzentzat bakarrik"
+ label_user_mail_option_none: "Gertakaririk ez"
+ field_member_of_group: "Esleituta duenaren taldea"
+ field_assigned_to_role: "Esleituta duenaren rola"
+ notice_not_authorized_archived_project: "Atzitu nahi duzun proiektua artxibatua izan da."
+ label_principal_search: "Bilatu erabiltzaile edo taldea:"
+ label_user_search: "Erabiltzailea bilatu:"
+ field_visible: Ikusgai
+ setting_emails_header: "Eposten goiburua"
+ setting_commit_logtime_activity_id: "Erregistratutako denboraren jarduera"
+ text_time_logged_by_changeset: "%{value} aldaketan egindakoa."
+ setting_commit_logtime_enabled: "Erregistrutako denbora gaitu"
+ notice_gantt_chart_truncated: Grafikoa moztu da bistara daitekeen elementuen kopuru maximoa gainditu delako (%{max})
+ setting_gantt_items_limit: "Gantt grafikoan bistara daitekeen elementu kopuru maximoa"
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/fa.yml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/config/locales/fa.yml Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,945 @@
+fa:
+ # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl)
+ direction: rtl
+ date:
+ formats:
+ # Use the strftime parameters for formats.
+ # When no format has been given, it uses default.
+ # You can provide other formats here if you like!
+ default: "%Y/%m/%d"
+ short: "%b %d"
+ long: "%B %d, %Y"
+
+ day_names: [یکشنبه, دوشنبه, سهشنبه, چهارشنبه, پنجشنبه, آدینه, شنبه]
+ abbr_day_names: [یک, دو, سه, چهار, پنج, آدینه, شنبه]
+
+ # Don't forget the nil at the beginning; there's no such thing as a 0th month
+ month_names: [~, ژانویه, فوریه, مارس, آوریل, مه, ژوئن, ژوئیه, اوت, سپتامبر, اکتبر, نوامبر, دسامبر]
+ abbr_month_names: [~, ژان, فور, مار, آور, مه, ژوئن, ژوئیه, اوت, سپت, اکت, نوا, دسا]
+ # Used in date_select and datime_select.
+ order: [ :year, :month, :day ]
+
+ time:
+ formats:
+ default: "%Y/%m/%d %p %I:%M"
+ time: "%p %I:%M"
+ short: "%d %b %H:%M"
+ long: "%B %d, %Y %H:%M"
+ am: "ق.ظ"
+ pm: "ب.ظ"
+
+ datetime:
+ distance_in_words:
+ half_a_minute: "نیم دقیقه"
+ less_than_x_seconds:
+ one: "کمتر از 1 ثانیه"
+ other: "کمتر از %{count} ثانیه"
+ x_seconds:
+ one: "1 ثانیه"
+ other: "%{count} ثانیه"
+ less_than_x_minutes:
+ one: "کمتر از 1 دقیقه"
+ other: "کمتر از %{count} دقیقه"
+ x_minutes:
+ one: "1 دقیقه"
+ other: "%{count} دقیقه"
+ about_x_hours:
+ one: "نزدیک 1 ساعت"
+ other: "نزدیک %{count} ساعت"
+ x_days:
+ one: "1 روز"
+ other: "%{count} روز"
+ about_x_months:
+ one: "نزدیک 1 ماه"
+ other: "نزدیک %{count} ماه"
+ x_months:
+ one: "1 ماه"
+ other: "%{count} ماه"
+ about_x_years:
+ one: "نزدیک 1 سال"
+ other: "نزدیک %{count} سال"
+ over_x_years:
+ one: "بیش از 1 سال"
+ other: "بیش از %{count} سال"
+ almost_x_years:
+ one: "نزدیک 1 سال"
+ other: "نزدیک %{count} سال"
+
+ number:
+ # Default format for numbers
+ format:
+ separator: "٫"
+ delimiter: ""
+ precision: 3
+ human:
+ format:
+ delimiter: ""
+ precision: 1
+ storage_units:
+ format: "%n %u"
+ units:
+ byte:
+ one: "بایت"
+ other: "بایت"
+ kb: "کیلوبایت"
+ mb: "مگابایت"
+ gb: "گیگابایت"
+ tb: "ترابایت"
+
+
+# Used in array.to_sentence.
+ support:
+ array:
+ sentence_connector: "و"
+ skip_last_comma: false
+
+ activerecord:
+ errors:
+ template:
+ header:
+ one: "1 ایراد از ذخیره سازی این %{model} جلوگیری کرد"
+ other: "%{count} ایراد از ذخیره سازی این %{model} جلوگیری کرد"
+ messages:
+ inclusion: "در فهرست نیامده است"
+ exclusion: "رزرو شده است"
+ invalid: "نادرست است"
+ confirmation: "با بررسی سازگاری ندارد"
+ accepted: "باید پذیرفته شود"
+ empty: "نمیتواند تهی باشد"
+ blank: "نمیتواند تهی باشد"
+ too_long: "خیلی بلند است (بیشترین اندازه %{count} نویسه است)"
+ too_short: "خیلی کوتاه است (کمترین اندازه %{count} نویسه است)"
+ wrong_length: "اندازه نادرست است (باید %{count} نویسه باشد)"
+ taken: "پیش از این گرفته شده است"
+ not_a_number: "شماره درستی نیست"
+ not_a_date: "تاریخ درستی نیست"
+ greater_than: "باید بزرگتر از %{count} باشد"
+ greater_than_or_equal_to: "باید بزرگتر از یا برابر با %{count} باشد"
+ equal_to: "باید برابر با %{count} باشد"
+ less_than: "باید کمتر از %{count} باشد"
+ less_than_or_equal_to: "باید کمتر از یا برابر با %{count} باشد"
+ odd: "باید فرد باشد"
+ even: "باید زوج باشد"
+ greater_than_start_date: "باید از تاریخ آغاز بزرگتر باشد"
+ not_same_project: "به همان پروژه وابسته نیست"
+ circular_dependency: "این وابستگی یک وابستگی دایره وار خواهد ساخت"
+ cant_link_an_issue_with_a_descendant: "یک پیامد نمیتواند به یکی از زیر کارهایش پیوند بخورد"
+
+ actionview_instancetag_blank_option: گزینش کنید
+
+ general_text_No: 'خیر'
+ general_text_Yes: 'آری'
+ general_text_no: 'خیر'
+ general_text_yes: 'آری'
+ general_lang_name: 'Persian (پارسی)'
+ general_csv_separator: ','
+ general_csv_decimal_separator: '.'
+ general_csv_encoding: UTF-8
+ general_pdf_encoding: UTF-8
+ general_first_day_of_week: '6'
+
+ notice_account_updated: حساب شما بروز شد.
+ notice_account_invalid_creditentials: نام کاربری یا گذرواژه نادرست است
+ notice_account_password_updated: گذرواژه بروز شد
+ notice_account_wrong_password: گذرواژه نادرست است
+ notice_account_register_done: حساب ساخته شد. برای فعال نمودن آن، روی پیوندی که به شما ایمیل شده کلیک کنید.
+ notice_account_unknown_email: کاربر شناخته نشد.
+ notice_can_t_change_password: این حساب یک روش شناسایی بیرونی را به کار گرفته است. گذرواژه را نمیتوان جایگزین کرد.
+ notice_account_lost_email_sent: یک ایمیل با راهنمایی درباره گزینش گذرواژه تازه برای شما فرستاده شد.
+ notice_account_activated: حساب شما فعال شده است. اکنون میتوانید وارد شوید.
+ notice_successful_create: با موفقیت ساخته شد.
+ notice_successful_update: با موفقیت بروز شد.
+ notice_successful_delete: با موفقیت برداشته شد.
+ notice_successful_connection: با موفقیت متصل شد.
+ notice_file_not_found: برگه درخواستی شما در دسترس نیست یا پاک شده است.
+ notice_locking_conflict: دادهها را کاربر دیگری بروز کرده است.
+ notice_not_authorized: شما به این برگه دسترسی ندارید.
+ notice_not_authorized_archived_project: پروژه درخواستی شما بایگانی شده است.
+ notice_email_sent: "یک ایمیل به %{value} فرستاده شد."
+ notice_email_error: "یک ایراد در فرستادن ایمیل پیش آمد (%{value})."
+ notice_feeds_access_key_reseted: کلید دسترسی RSS شما بازنشانی شد.
+ notice_api_access_key_reseted: کلید دسترسی API شما بازنشانی شد.
+ notice_failed_to_save_issues: "ذخیره سازی %{count} پیامد از %{total} پیامد گزینش شده شکست خورد: %{ids}."
+ notice_failed_to_save_members: "ذخیره سازی اعضا شکست خورد: %{errors}."
+ notice_no_issue_selected: "هیچ پیامدی برگزیده نشده است! پیامدهایی که میخواهید ویرایش کنید را برگزینید."
+ notice_account_pending: "حساب شما ساخته شد و اکنون چشم به راه روادید سرپرست است."
+ notice_default_data_loaded: پیکربندی پیشگزیده با موفقیت بار شد.
+ notice_unable_delete_version: نگارش را نمیتوان پاک کرد.
+ notice_unable_delete_time_entry: زمان گزارش شده را نمیتوان پاک کرد.
+ notice_issue_done_ratios_updated: اندازه انجام شده پیامد بروز شد.
+ notice_gantt_chart_truncated: "نمودار بریده شد چون از بیشترین شماری که میتوان نشان داد بزگتر است (%{max})."
+
+ error_can_t_load_default_data: "پیکربندی پیشگزیده نمیتواند بار شود: %{value}"
+ error_scm_not_found: "بخش یا نگارش در انباره پیدا نشد."
+ error_scm_command_failed: "ایرادی در دسترسی به انباره پیش آمد: %{value}"
+ error_scm_annotate: "بخش پیدا نشد یا نمیتوان برای آن یادداشت نوشت."
+ error_issue_not_found_in_project: 'پیامد پیدا نشد یا به این پروژه وابسته نیست.'
+ error_no_tracker_in_project: 'هیچ پیگردی به این پروژه پیوسته نشده است. پیکربندی پروژه را بررسی کنید.'
+ error_no_default_issue_status: 'هیچ وضعیت پیامد پیشگزیدهای مشخص نشده است. پیکربندی را بررسی کنید (به «پیکربندی -> وضعیتهای پیامد» بروید).'
+ error_can_not_delete_custom_field: فیلد سفارشی را نمیتوان پاک کرد.
+ error_can_not_delete_tracker: "این پیگرد دارای پیامد است و نمیتوان آن را پاک کرد."
+ error_can_not_remove_role: "این نقش به کار گرفته شده است و نمیتوان آن را پاک کرد."
+ error_can_not_reopen_issue_on_closed_version: 'یک پیامد که به یک نگارش بسته شده وابسته است را نمیتوان باز کرد.'
+ error_can_not_archive_project: این پروژه را نمیتوان بایگانی کرد.
+ error_issue_done_ratios_not_updated: "اندازه انجام شده پیامد بروز نشد."
+ error_workflow_copy_source: 'یک پیگرد یا نقش منبع را برگزینید.'
+ error_workflow_copy_target: 'پیگردها یا نقشهای مقصد را برگزینید.'
+ error_unable_delete_issue_status: 'وضعیت پیامد را نمیتوان پاک کرد.'
+ error_unable_to_connect: "نمیتوان متصل شد (%{value})"
+ warning_attachments_not_saved: "%{count} پرونده ذخیره نشد."
+
+ mail_subject_lost_password: "گذرواژه حساب %{value} شما"
+ mail_body_lost_password: 'برای جایگزینی گذرواژه خود، بر روی پیوند زیر کلیک کنید:'
+ mail_subject_register: "فعالسازی حساب %{value} شما"
+ mail_body_register: 'برای فعالسازی حساب خود، بر روی پیوند زیر کلیک کنید:'
+ mail_body_account_information_external: "شما میتوانید حساب %{value} خود را برای ورود به کار برید."
+ mail_body_account_information: دادههای حساب شما
+ mail_subject_account_activation_request: "درخواست فعالسازی حساب %{value}"
+ mail_body_account_activation_request: "یک کاربر تازه (%{value}) نامنویسی کرده است. این حساب چشم به راه روادید شماست:"
+ mail_subject_reminder: "زمان رسیدگی به %{count} پیامد در %{days} روز آینده سر میرسد"
+ mail_body_reminder: "زمان رسیدگی به %{count} پیامد که به شما واگذار شده است، در %{days} روز آینده سر میرسد:"
+ mail_subject_wiki_content_added: "برگه ویکی «%{id}» افزوده شد"
+ mail_body_wiki_content_added: "برگه ویکی «%{id}» به دست %{author} افزوده شد."
+ mail_subject_wiki_content_updated: "برگه ویکی «%{id}» بروز شد"
+ mail_body_wiki_content_updated: "برگه ویکی «%{id}» به دست %{author} بروز شد."
+
+ gui_validation_error: 1 ایراد
+ gui_validation_error_plural: "%{count} ایراد"
+
+ field_name: نام
+ field_description: توضیح
+ field_summary: خلاصه
+ field_is_required: الزامی
+ field_firstname: نام کوچک
+ field_lastname: نام خانوادگی
+ field_mail: ایمیل
+ field_filename: پرونده
+ field_filesize: اندازه
+ field_downloads: دریافتها
+ field_author: نویسنده
+ field_created_on: ساخته شده در
+ field_updated_on: بروز شده در
+ field_field_format: قالب
+ field_is_for_all: برای همه پروژهها
+ field_possible_values: مقادیر ممکن
+ field_regexp: عبارت منظم
+ field_min_length: کمترین اندازه
+ field_max_length: بیشترین اندازه
+ field_value: مقدار
+ field_category: دسته
+ field_title: عنوان
+ field_project: پروژه
+ field_issue: پیامد
+ field_status: وضعیت
+ field_notes: یادداشتها
+ field_is_closed: پیامد بسته شده
+ field_is_default: مقدار پیشگزیده
+ field_tracker: پیگرد
+ field_subject: موضوع
+ field_due_date: زمان سررسید
+ field_assigned_to: واگذار شده به
+ field_priority: برتری
+ field_fixed_version: نگارش هدف
+ field_user: کاربر
+ field_principal: دستور دهنده
+ field_role: نقش
+ field_homepage: برگه خانه
+ field_is_public: همگانی
+ field_parent: پروژه پدر
+ field_is_in_roadmap: این پیامدها در نقشه راه نشان داده شوند
+ field_login: ورود
+ field_mail_notification: آگاه سازیهای ایمیلی
+ field_admin: سرپرست
+ field_last_login_on: آخرین ورود
+ field_language: زبان
+ field_effective_date: تاریخ
+ field_password: گذرواژه
+ field_new_password: گذرواژه تازه
+ field_password_confirmation: بررسی گذرواژه
+ field_version: نگارش
+ field_type: گونه
+ field_host: میزبان
+ field_port: درگاه
+ field_account: حساب
+ field_base_dn: DN پایه
+ field_attr_login: نشانه ورود
+ field_attr_firstname: نشانه نام کوچک
+ field_attr_lastname: نشانه نام خانوادگی
+ field_attr_mail: نشانه ایمیل
+ field_onthefly: ساخت کاربر بیدرنگ
+ field_start_date: تاریخ آغاز
+ field_done_ratio: ٪ انجام شده
+ field_auth_source: روش شناسایی
+ field_hide_mail: ایمیل من پنهان شود
+ field_comments: دیدگاه
+ field_url: نشانی
+ field_start_page: برگه آغاز
+ field_subproject: زیر پروژه
+ field_hours: ساعت
+ field_activity: فعالیت
+ field_spent_on: در تاریخ
+ field_identifier: شناسه
+ field_is_filter: پالایش پذیر
+ field_issue_to: پیامد وابسته
+ field_delay: دیرکرد
+ field_assignable: پیامدها میتوانند به این نقش واگذار شوند
+ field_redirect_existing_links: پیوندهای پیشین به پیوند تازه راهنمایی شوند
+ field_estimated_hours: زمان برآورد شده
+ field_column_names: ستونها
+ field_time_entries: زمان نوشتن
+ field_time_zone: پهنه زمانی
+ field_searchable: جستجو پذیر
+ field_default_value: مقدار پیشگزیده
+ field_comments_sorting: نمایش دیدگاهها
+ field_parent_title: برگه پدر
+ field_editable: ویرایش پذیر
+ field_watcher: دیدهبان
+ field_identity_url: نشانی OpenID
+ field_content: محتوا
+ field_group_by: دسته بندی با
+ field_sharing: اشتراک گذاری
+ field_parent_issue: کار پدر
+ field_member_of_group: "دسته واگذار شونده"
+ field_assigned_to_role: "نقش واگذار شونده"
+ field_text: فیلد متنی
+ field_visible: آشکار
+
+ setting_app_title: نام برنامه
+ setting_app_subtitle: زیرنام برنامه
+ setting_welcome_text: نوشتار خوشآمد گویی
+ setting_default_language: زبان پیشگزیده
+ setting_login_required: الزامی بودن ورود
+ setting_self_registration: خود نام نویسی
+ setting_attachment_max_size: بیشترین اندازه پیوست
+ setting_issues_export_limit: کرانه صدور پییامدها
+ setting_mail_from: نشانی فرستنده ایمیل
+ setting_bcc_recipients: گیرندگان ایمیل دیده نشوند (bcc)
+ setting_plain_text_mail: ایمیل نوشته ساده (بدون HTML)
+ setting_host_name: نام میزبان و نشانی
+ setting_text_formatting: قالب بندی نوشته
+ setting_wiki_compression: فشردهسازی پیشینه ویکی
+ setting_feeds_limit: کرانه محتوای خوراک
+ setting_default_projects_public: حالت پیشگزیده پروژههای تازه، همگانی است
+ setting_autofetch_changesets: دریافت خودکار تغییرات
+ setting_sys_api_enabled: فعال سازی وب سرویس برای سرپرستی انباره
+ setting_commit_ref_keywords: کلیدواژههای نشانه
+ setting_commit_fix_keywords: کلیدواژههای انجام
+ setting_autologin: ورود خودکار
+ setting_date_format: قالب تاریخ
+ setting_time_format: قالب زمان
+ setting_cross_project_issue_relations: توانایی وابستگی میان پروژهای پیامدها
+ setting_issue_list_default_columns: ستونهای پیشگزیده نمایش داده شده در فهرست پیامدها
+ setting_repositories_encodings: کدگذاری انبارهها
+ setting_commit_logs_encoding: کدگذاری پیامهای انباره
+ setting_emails_header: سرنویس ایمیلها
+ setting_emails_footer: پانویس ایمیلها
+ setting_protocol: پیوندنامه
+ setting_per_page_options: گزینههای اندازه دادههای هر برگ
+ setting_user_format: قالب نمایشی کاربران
+ setting_activity_days_default: روزهای نمایش داده شده در فعالیت پروژه
+ setting_display_subprojects_issues: پیشگزیده نمایش پیامدهای زیرپروژه در پروژه پدر
+ setting_enabled_scm: فعالسازی SCM
+ setting_mail_handler_body_delimiters: "بریدن ایمیلها پس از یکی از این ردیفها"
+ setting_mail_handler_api_enabled: فعالسازی وب سرویس برای ایمیلهای آمده
+ setting_mail_handler_api_key: کلید API
+ setting_sequential_project_identifiers: ساخت پشت سر هم شناسه پروژه
+ setting_gravatar_enabled: کاربرد Gravatar برای عکس کاربر
+ setting_gravatar_default: عکس Gravatar پیشگزیده
+ setting_diff_max_lines_displayed: بیشترین اندازه ردیفهای تفاوت نشان داده شده
+ setting_file_max_size_displayed: بیشترین اندازه پروندههای نمایش داده شده درون خطی
+ setting_repository_log_display_limit: بیشترین شمار نگارشهای نمایش داده شده در گزارش پرونده
+ setting_openid: پذیرش ورود و نام نویسی با OpenID
+ setting_password_min_length: کمترین اندازه گذرواژه
+ setting_new_project_user_role_id: نقش داده شده به کاربری که سرپرست نیست و پروژه میسازد
+ setting_default_projects_modules: پیمانههای پیشگزیده فعال برای پروژههای تازه
+ setting_issue_done_ratio: برآورد اندازه انجام شده پیامد با
+ setting_issue_done_ratio_issue_field: کاربرد فیلد پیامد
+ setting_issue_done_ratio_issue_status: کاربرد وضعیت پیامد
+ setting_start_of_week: آغاز گاهشمار از
+ setting_rest_api_enabled: فعالسازی وب سرویسهای REST
+ setting_cache_formatted_text: نهان سازی نوشتههای قالب بندی شده
+ setting_default_notification_option: آگاه سازی پیشگزیده
+ setting_commit_logtime_enabled: فعالسازی زمان گذاشته شده
+ setting_commit_logtime_activity_id: فعالیت زمان گذاشته شده
+ setting_gantt_items_limit: بیشترین شمار بخشهای نمایش داده شده در نمودار گانت
+
+ permission_add_project: ساخت پروژه
+ permission_add_subprojects: ساخت زیرپروژه
+ permission_edit_project: ویرایش پروژه
+ permission_select_project_modules: گزینش پیمانههای پروژه
+ permission_manage_members: سرپرستی اعضا
+ permission_manage_project_activities: سرپرستی فعالیتهای پروژه
+ permission_manage_versions: سرپرستی نگارشها
+ permission_manage_categories: سرپرستی دستههای پیامد
+ permission_view_issues: دیدن پیامدها
+ permission_add_issues: افزودن پیامدها
+ permission_edit_issues: ویرایش پیامدها
+ permission_manage_issue_relations: سرپرستی وابستگی پیامدها
+ permission_add_issue_notes: افزودن یادداشتها
+ permission_edit_issue_notes: ویرایش یادداشتها
+ permission_edit_own_issue_notes: ویرایش یادداشت خود
+ permission_move_issues: جابجایی پیامدها
+ permission_delete_issues: پاک کردن پیامدها
+ permission_manage_public_queries: سرپرستی پرسوجوهای همگانی
+ permission_save_queries: ذخیره سازی پرسوجوها
+ permission_view_gantt: دیدن نمودار گانت
+ permission_view_calendar: دیدن گاهشمار
+ permission_view_issue_watchers: دیدن فهرست دیدهبانها
+ permission_add_issue_watchers: افزودن دیدهبانها
+ permission_delete_issue_watchers: پاک کردن دیدهبانها
+ permission_log_time: نوشتن زمان گذاشته شده
+ permission_view_time_entries: دیدن زمان گذاشته شده
+ permission_edit_time_entries: ویرایش زمان گذاشته شده
+ permission_edit_own_time_entries: ویرایش زمان گذاشته شده خود
+ permission_manage_news: سرپرستی رویدادها
+ permission_comment_news: گذاشتن دیدگاه روی رویدادها
+ permission_manage_documents: سرپرستی نوشتارها
+ permission_view_documents: دیدن نوشتارها
+ permission_manage_files: سرپرستی پروندهها
+ permission_view_files: دیدن پروندهها
+ permission_manage_wiki: سرپرستی ویکی
+ permission_rename_wiki_pages: نامگذاری برگه ویکی
+ permission_delete_wiki_pages: پاک کردن برگه ویکی
+ permission_view_wiki_pages: دیدن ویکی
+ permission_view_wiki_edits: دیدن پیشینه ویکی
+ permission_edit_wiki_pages: ویرایش برگههای ویکی
+ permission_delete_wiki_pages_attachments: پاک کردن پیوستهای برگه ویکی
+ permission_protect_wiki_pages: نگهداری برگههای ویکی
+ permission_manage_repository: سرپرستی انباره
+ permission_browse_repository: چریدن در انباره
+ permission_view_changesets: دیدن تغییرات
+ permission_commit_access: دسترسی تغییر انباره
+ permission_manage_boards: سرپرستی انجمنها
+ permission_view_messages: دیدن پیامها
+ permission_add_messages: فرستادن پیامها
+ permission_edit_messages: ویرایش پیامها
+ permission_edit_own_messages: ویرایش پیام خود
+ permission_delete_messages: پاک کردن پیامها
+ permission_delete_own_messages: پاک کردن پیام خود
+ permission_export_wiki_pages: صدور برگههای ویکی
+ permission_manage_subtasks: سرپرستی زیرکارها
+
+ project_module_issue_tracking: پیگیری پیامدها
+ project_module_time_tracking: پیگیری زمان
+ project_module_news: رویدادها
+ project_module_documents: نوشتارها
+ project_module_files: پروندهها
+ project_module_wiki: ویکی
+ project_module_repository: انباره
+ project_module_boards: انجمنها
+ project_module_calendar: گاهشمار
+ project_module_gantt: گانت
+
+ label_user: کاربر
+ label_user_plural: کاربر
+ label_user_new: کاربر تازه
+ label_user_anonymous: ناشناس
+ label_project: پروژه
+ label_project_new: پروژه تازه
+ label_project_plural: پروژه
+ label_x_projects:
+ zero: بدون پروژه
+ one: "1 پروژه"
+ other: "%{count} پروژه"
+ label_project_all: همه پروژهها
+ label_project_latest: آخرین پروژهها
+ label_issue: پیامد
+ label_issue_new: پیامد تازه
+ label_issue_plural: پیامد
+ label_issue_view_all: دیدن همه پیامدها
+ label_issues_by: "پیامدهای دست%{value}"
+ label_issue_added: پیامد افزوده شد
+ label_issue_updated: پیامد بروز شد
+ label_document: نوشتار
+ label_document_new: نوشتار تازه
+ label_document_plural: نوشتار
+ label_document_added: نوشتار افزوده شد
+ label_role: نقش
+ label_role_plural: نقش
+ label_role_new: نقش تازه
+ label_role_and_permissions: نقشها و پروانهها
+ label_member: عضو
+ label_member_new: عضو تازه
+ label_member_plural: عضو
+ label_tracker: پیگرد
+ label_tracker_plural: پیگرد
+ label_tracker_new: پیگرد تازه
+ label_workflow: گردش کار
+ label_issue_status: وضعیت پیامد
+ label_issue_status_plural: وضعیت پیامد
+ label_issue_status_new: وضعیت تازه
+ label_issue_category: دسته پیامد
+ label_issue_category_plural: دسته پیامد
+ label_issue_category_new: دسته تازه
+ label_custom_field: فیلد سفارشی
+ label_custom_field_plural: فیلد سفارشی
+ label_custom_field_new: فیلد سفارشی تازه
+ label_enumerations: برشمردنیها
+ label_enumeration_new: مقدار تازه
+ label_information: داده
+ label_information_plural: داده
+ label_please_login: وارد شوید
+ label_register: نام نویسی کنید
+ label_login_with_open_id_option: یا با OpenID وارد شوید
+ label_password_lost: بازیافت گذرواژه
+ label_home: سرآغاز
+ label_my_page: برگه من
+ label_my_account: حساب من
+ label_my_projects: پروژههای من
+ label_my_page_block: بخش برگه من
+ label_administration: سرپرستی
+ label_login: ورود
+ label_logout: خروج
+ label_help: راهنما
+ label_reported_issues: پیامدهای گزارش شده
+ label_assigned_to_me_issues: پیامدهای واگذار شده به من
+ label_last_login: آخرین ورود
+ label_registered_on: نام نویسی شده در
+ label_activity: فعالیت
+ label_overall_activity: فعالیت روی هم رفته
+ label_user_activity: "فعالیت %{value}"
+ label_new: تازه
+ label_logged_as: "نام کاربری:"
+ label_environment: محیط
+ label_authentication: شناسایی
+ label_auth_source: روش شناسایی
+ label_auth_source_new: روش شناسایی تازه
+ label_auth_source_plural: روش شناسایی
+ label_subproject_plural: زیرپروژه
+ label_subproject_new: زیرپروژه تازه
+ label_and_its_subprojects: "%{value} و زیرپروژههایش"
+ label_min_max_length: کمترین و بیشترین اندازه
+ label_list: فهرست
+ label_date: تاریخ
+ label_integer: شماره درست
+ label_float: شماره شناور
+ label_boolean: درست/نادرست
+ label_string: نوشته
+ label_text: نوشته بلند
+ label_attribute: نشانه
+ label_attribute_plural: نشانه
+ label_download: "%{count} بار دریافت شده"
+ label_download_plural: "%{count} بار دریافت شده"
+ label_no_data: هیچ دادهای برای نمایش نیست
+ label_change_status: جایگزینی وضعیت
+ label_history: پیشینه
+ label_attachment: پرونده
+ label_attachment_new: پرونده تازه
+ label_attachment_delete: پاک کردن پرونده
+ label_attachment_plural: پرونده
+ label_file_added: پرونده افزوده شد
+ label_report: گزارش
+ label_report_plural: گزارش
+ label_news: رویداد
+ label_news_new: افزودن رویداد
+ label_news_plural: رویداد
+ label_news_latest: آخرین رویدادها
+ label_news_view_all: دیدن همه رویدادها
+ label_news_added: رویداد افزوده شد
+ label_settings: پیکربندی
+ label_overview: دورنما
+ label_version: نگارش
+ label_version_new: نگارش تازه
+ label_version_plural: نگارش
+ label_close_versions: بستن نگارشهای انجام شده
+ label_confirmation: بررسی
+ label_export_to: 'قالبهای دیگر:'
+ label_read: خواندن...
+ label_public_projects: پروژههای همگانی
+ label_open_issues: باز
+ label_open_issues_plural: باز
+ label_closed_issues: بسته
+ label_closed_issues_plural: بسته
+ label_x_open_issues_abbr_on_total:
+ zero: 0 باز از %{total}
+ one: 1 باز از %{total}
+ other: "%{count} باز از %{total}"
+ label_x_open_issues_abbr:
+ zero: 0 باز
+ one: 1 باز
+ other: "%{count} باز"
+ label_x_closed_issues_abbr:
+ zero: 0 بسته
+ one: 1 بسته
+ other: "%{count} بسته"
+ label_total: جمله
+ label_permissions: پروانهها
+ label_current_status: وضعیت کنونی
+ label_new_statuses_allowed: وضعیتهای پذیرفتنی تازه
+ label_all: همه
+ label_none: هیچ
+ label_nobody: هیچکس
+ label_next: پسین
+ label_previous: پیشین
+ label_used_by: به کار رفته در
+ label_details: ریزهکاری
+ label_add_note: افزودن یادداشت
+ label_per_page: ردیفها در هر برگه
+ label_calendar: گاهشمار
+ label_months_from: از ماه
+ label_gantt: گانت
+ label_internal: درونی
+ label_last_changes: "%{count} تغییر آخر"
+ label_change_view_all: دیدن همه تغییرات
+ label_personalize_page: سفارشی نمودن این برگه
+ label_comment: دیدگاه
+ label_comment_plural: دیدگاه
+ label_x_comments:
+ zero: بدون دیدگاه
+ one: 1 دیدگاه
+ other: "%{count} دیدگاه"
+ label_comment_add: افزودن دیدگاه
+ label_comment_added: دیدگاه افزوده شد
+ label_comment_delete: پاک کردن دیدگاهها
+ label_query: پرسوجوی سفارشی
+ label_query_plural: پرسوجوی سفارشی
+ label_query_new: پرسوجوی تازه
+ label_filter_add: افزودن پالایه
+ label_filter_plural: پالایه
+ label_equals: برابر است با
+ label_not_equals: برابر نیست با
+ label_in_less_than: کمتر است از
+ label_in_more_than: بیشتر است از
+ label_greater_or_equal: بیشتر یا برابر است با
+ label_less_or_equal: کمتر یا برابر است با
+ label_in: در
+ label_today: امروز
+ label_all_time: همیشه
+ label_yesterday: دیروز
+ label_this_week: این هفته
+ label_last_week: هفته پیشین
+ label_last_n_days: "%{count} روز گذشته"
+ label_this_month: این ماه
+ label_last_month: ماه پیشین
+ label_this_year: امسال
+ label_date_range: بازه تاریخ
+ label_less_than_ago: کمتر از چند روز پیشین
+ label_more_than_ago: بیشتر از چند روز پیشین
+ label_ago: روز پیشین
+ label_contains: دارد
+ label_not_contains: ندارد
+ label_day_plural: روز
+ label_repository: انباره
+ label_repository_plural: انباره
+ label_browse: چریدن
+ label_modification: "%{count} جایگذاری"
+ label_modification_plural: "%{count} جایگذاری"
+ label_branch: شاخه
+ label_tag: برچسب
+ label_revision: بازبینی
+ label_revision_plural: بازبینی
+ label_revision_id: "بازبینی %{value}"
+ label_associated_revisions: بازبینیهای وابسته
+ label_added: افزوده شده
+ label_modified: پیراسته شده
+ label_copied: رونویسی شده
+ label_renamed: نامگذاری شده
+ label_deleted: پاکسازی شده
+ label_latest_revision: آخرین بازبینی
+ label_latest_revision_plural: آخرین بازبینی
+ label_view_revisions: دیدن بازبینیها
+ label_view_all_revisions: دیدن همه بازبینیها
+ label_max_size: بیشترین اندازه
+ label_sort_highest: بردن به آغاز
+ label_sort_higher: بردن به بالا
+ label_sort_lower: بردن به پایین
+ label_sort_lowest: بردن به پایان
+ label_roadmap: نقشه راه
+ label_roadmap_due_in: "سررسید در %{value}"
+ label_roadmap_overdue: "%{value} دیرکرد"
+ label_roadmap_no_issues: هیچ پیامدی برای این نگارش نیست
+ label_search: جستجو
+ label_result_plural: دستآورد
+ label_all_words: همه واژهها
+ label_wiki: ویکی
+ label_wiki_edit: ویرایش ویکی
+ label_wiki_edit_plural: ویرایش ویکی
+ label_wiki_page: برگه ویکی
+ label_wiki_page_plural: برگه ویکی
+ label_index_by_title: شاخص بر اساس نام
+ label_index_by_date: شاخص بر اساس تاریخ
+ label_current_version: نگارش کنونی
+ label_preview: پیشنمایش
+ label_feed_plural: خوراک
+ label_changes_details: ریز همه جایگذاریها
+ label_issue_tracking: پیگیری پیامد
+ label_spent_time: زمان گذاشته شده
+ label_overall_spent_time: زمان گذاشته شده روی هم
+ label_f_hour: "%{value} ساعت"
+ label_f_hour_plural: "%{value} ساعت"
+ label_time_tracking: پیگیری زمان
+ label_change_plural: جایگذاری
+ label_statistics: سرشماری
+ label_commits_per_month: تغییر در هر ماه
+ label_commits_per_author: تغییر هر نویسنده
+ label_view_diff: دیدن تفاوتها
+ label_diff_inline: همراستا
+ label_diff_side_by_side: کنار به کنار
+ label_options: گزینهها
+ label_copy_workflow_from: رونویسی گردش کار از روی
+ label_permissions_report: گزارش پروانهها
+ label_watched_issues: پیامدهای دیدهبانی شده
+ label_related_issues: پیامدهای وابسته
+ label_applied_status: وضعیت به کار رفته
+ label_loading: بار گذاری...
+ label_relation_new: وابستگی تازه
+ label_relation_delete: پاک کردن وابستگی
+ label_relates_to: وابسته به
+ label_duplicates: نگارش دیگری از
+ label_duplicated_by: نگارشی دیگر در
+ label_blocks: بازداشتها
+ label_blocked_by: بازداشت به دست
+ label_precedes: جلوتر است از
+ label_follows: پستر است از
+ label_end_to_start: پایان به آغاز
+ label_end_to_end: پایان به پایان
+ label_start_to_start: آغاز به آغاز
+ label_start_to_end: آغاز به پایان
+ label_stay_logged_in: وارد شده بمانید
+ label_disabled: غیرفعال
+ label_show_completed_versions: نمایش نگارشهای انجام شده
+ label_me: من
+ label_board: انجمن
+ label_board_new: انجمن تازه
+ label_board_plural: انجمن
+ label_board_locked: قفل شده
+ label_board_sticky: چسبناک
+ label_topic_plural: سرفصل
+ label_message_plural: پیام
+ label_message_last: آخرین پیام
+ label_message_new: پیام تازه
+ label_message_posted: پیام افزوده شد
+ label_reply_plural: پاسخ
+ label_send_information: فرستادن دادههای حساب به کاربر
+ label_year: سال
+ label_month: ماه
+ label_week: هفته
+ label_date_from: از
+ label_date_to: تا
+ label_language_based: بر اساس زبان کاربر
+ label_sort_by: "جور کرد با %{value}"
+ label_send_test_email: فرستادن ایمیل آزمایشی
+ label_feeds_access_key: کلید دسترسی RSS
+ label_missing_feeds_access_key: کلید دسترسی RSS در دسترس نیست
+ label_feeds_access_key_created_on: "کلید دسترسی RSS %{value} پیش ساخته شده است"
+ label_module_plural: پیمانه
+ label_added_time_by: "افزوده شده به دست %{author} در %{age} پیش"
+ label_updated_time_by: "بروز شده به دست %{author} در %{age} پیش"
+ label_updated_time: "بروز شده در %{value} پیش"
+ label_jump_to_a_project: پرش به یک پروژه...
+ label_file_plural: پرونده
+ label_changeset_plural: تغییر
+ label_default_columns: ستونهای پیشگزیده
+ label_no_change_option: (بدون تغییر)
+ label_bulk_edit_selected_issues: ویرایش دستهای پیامدهای گزینش شده
+ label_theme: پوسته
+ label_default: پیشگزیده
+ label_search_titles_only: تنها نامها جستجو شود
+ label_user_mail_option_all: "برای هر رویداد در همه پروژهها"
+ label_user_mail_option_selected: "برای هر رویداد تنها در پروژههای گزینش شده..."
+ label_user_mail_option_none: "هیچ رویدادی"
+ label_user_mail_option_only_my_events: "تنها برای چیزهایی که دیدهبان هستم یا در آنها درگیر هستم"
+ label_user_mail_option_only_assigned: "تنها برای چیزهایی که به من واگذار شده"
+ label_user_mail_option_only_owner: "تنها برای چیزهایی که من دارنده آنها هستم"
+ label_user_mail_no_self_notified: "نمیخواهم از تغییراتی که خودم میدهم آگاه شوم"
+ label_registration_activation_by_email: فعالسازی حساب با ایمیل
+ label_registration_manual_activation: فعالسازی حساب دستی
+ label_registration_automatic_activation: فعالسازی حساب خودکار
+ label_display_per_page: "ردیفها در هر برگه: %{value}"
+ label_age: سن
+ label_change_properties: ویرایش ویژگیها
+ label_general: همگانی
+ label_more: بیشتر
+ label_scm: SCM
+ label_plugins: افزونهها
+ label_ldap_authentication: شناساییLDAP
+ label_downloads_abbr: دریافت
+ label_optional_description: توضیح اختیاری
+ label_add_another_file: افزودن پرونده دیگر
+ label_preferences: پسندها
+ label_chronological_order: به ترتیب تاریخ
+ label_reverse_chronological_order: برعکس ترتیب تاریخ
+ label_planning: برنامه ریزی
+ label_incoming_emails: ایمیلهای آمده
+ label_generate_key: ساخت کلید
+ label_issue_watchers: دیدهبانها
+ label_example: نمونه
+ label_display: نمایش
+ label_sort: جور کرد
+ label_ascending: افزایشی
+ label_descending: کاهشی
+ label_date_from_to: از %{start} تا %{end}
+ label_wiki_content_added: برگه ویکی افزوده شد
+ label_wiki_content_updated: برگه ویکی بروز شد
+ label_group: دسته
+ label_group_plural: دسته
+ label_group_new: دسته تازه
+ label_time_entry_plural: زمان گذاشته شده
+ label_version_sharing_none: بدون اشتراک
+ label_version_sharing_descendants: با زیر پروژهها
+ label_version_sharing_hierarchy: با رشته پروژهها
+ label_version_sharing_tree: با درخت پروژه
+ label_version_sharing_system: با همه پروژهها
+ label_update_issue_done_ratios: بروز رسانی اندازه انجام شده پیامد
+ label_copy_source: منبع
+ label_copy_target: مقصد
+ label_copy_same_as_target: مانند مقصد
+ label_display_used_statuses_only: تنها وضعیتهایی نشان داده شوند که در این پیگرد به کار رفتهاند
+ label_api_access_key: کلید دسترسی API
+ label_missing_api_access_key: کلید دسترسی API در دسترس نیست
+ label_api_access_key_created_on: "کلید دسترسی API %{value} پیش ساخته شده است"
+ label_profile: نمایه
+ label_subtask_plural: زیرکار
+ label_project_copy_notifications: در هنگام رونویسی پروژه ایمیلهای آگاهسازی را بفرست
+ label_principal_search: "جستجو برای کاربر یا دسته:"
+ label_user_search: "جستجو برای کاربر:"
+
+ button_login: ورود
+ button_submit: واگذاری
+ button_save: نگهداری
+ button_check_all: گزینش همه
+ button_uncheck_all: گزینش هیچ
+ button_delete: پاک
+ button_create: ساخت
+ button_create_and_continue: ساخت و ادامه
+ button_test: آزمایش
+ button_edit: ویرایش
+ button_edit_associated_wikipage: "ویرایش برگه ویکی وابسته: %{page_title}"
+ button_add: افزودن
+ button_change: ویرایش
+ button_apply: انجام
+ button_clear: پاک
+ button_lock: گذاشتن قفل
+ button_unlock: برداشتن قفل
+ button_download: دریافت
+ button_list: فهرست
+ button_view: دیدن
+ button_move: جابجایی
+ button_move_and_follow: جابجایی و ادامه
+ button_back: برگشت
+ button_cancel: بازگشت
+ button_activate: فعالسازی
+ button_sort: جور کرد
+ button_log_time: زماننویسی
+ button_rollback: برگرد به این نگارش
+ button_watch: دیدهبانی
+ button_unwatch: نادیدهبانی
+ button_reply: پاسخ
+ button_archive: بایگانی
+ button_unarchive: برگشت از بایگانی
+ button_reset: بازنشانی
+ button_rename: نامگذاری
+ button_change_password: جایگزینی گذرواژه
+ button_copy: رونوشت
+ button_copy_and_follow: رونوشت و ادامه
+ button_annotate: یادداشت
+ button_update: بروز رسانی
+ button_configure: پیکربندی
+ button_quote: نقل قول
+ button_duplicate: نگارش دیگر
+ button_show: نمایش
+
+ status_active: فعال
+ status_registered: نامنویسی شده
+ status_locked: قفل
+
+ version_status_open: باز
+ version_status_locked: قفل
+ version_status_closed: بسته
+
+ field_active: فعال
+
+ text_select_mail_notifications: فرمانهایی که برای آنها باید ایمیل فرستاده شود را برگزینید.
+ text_regexp_info: برای نمونه ^[A-Z0-9]+$
+ text_min_max_length_info: 0 یعنی بدون کران
+ text_project_destroy_confirmation: آیا براستی میخواهید این پروژه و همه دادههای آن را پاک کنید؟
+ text_subprojects_destroy_warning: "زیرپروژههای آن: %{value} هم پاک خواهند شد."
+ text_workflow_edit: یک نقش و یک پیگرد را برای ویرایش گردش کار برگزینید
+ text_are_you_sure: آیا این کار انجام شود؟
+ text_are_you_sure_with_children: "آیا پیامد و همه زیرپیامدهای آن پاک شوند؟"
+ text_journal_changed: "«%{label}» از «%{old}» به «%{new}» جایگزین شد"
+ text_journal_set_to: "«%{label}» به «%{value}» نشانده شد"
+ text_journal_deleted: "«%{label}» پاک شد (%{old})"
+ text_journal_added: "«%{label}»، «%{value}» را افزود"
+ text_tip_task_begin_day: روز آغاز پیامد
+ text_tip_task_end_day: روز پایان پیامد
+ text_tip_task_begin_end_day: روز آغاز و پایان پیامد
+ text_project_identifier_info: 'تنها نویسههای کوچک (a-z)، شمارهها و خط تیره پذیرفتنی است.
پس از ذخیره سازی، شناسه نمیتواند جایگزین شود.'
+ text_caracters_maximum: "بیشترین اندازه %{count} است."
+ text_caracters_minimum: "کمترین اندازه %{count} است."
+ text_length_between: "باید میان %{min} و %{max} نویسه باشد."
+ text_tracker_no_workflow: هیچ گردش کاری برای این پیگرد مشخص نشده است
+ text_unallowed_characters: نویسههای ناپسند
+ text_comma_separated: چند مقدار پذیرفتنی است (با «,» از هم جدا شوند).
+ text_line_separated: چند مقدار پذیرفتنی است (هر مقدار در یک خط).
+ text_issues_ref_in_commit_messages: نشانه روی و بستن پیامدها در پیامهای انباره
+ text_issue_added: "پیامد %{id} به دست %{author} گزارش شد."
+ text_issue_updated: "پیامد %{id} به دست %{author} بروز شد."
+ text_wiki_destroy_confirmation: آیا براستی میخواهید این ویکی و همه محتوای آن را پاک کنید؟
+ text_issue_category_destroy_question: "برخی پیامدها (%{count}) به این دسته واگذار شدهاند. میخواهید چه کنید؟"
+ text_issue_category_destroy_assignments: پاک کردن واگذاری به دسته
+ text_issue_category_reassign_to: واگذاری دوباره پیامدها به این دسته
+ text_user_mail_option: "برای پروژههای گزینش نشده، تنها ایمیلهایی درباره چیزهایی که دیدهبان یا درگیر آنها هستید دریافت خواهید کرد (مانند پیامدهایی که نویسنده آنها هستید یا به شما واگذار شدهاند)."
+ text_no_configuration_data: "نقشها، پیگردها، وضعیتهای پیامد و گردش کار هنوز پیکربندی نشدهاند. \nبه سختی پیشنهاد میشود که پیکربندی پیشگزیده را بار کنید. سپس میتوانید آن را ویرایش کنید."
+ text_load_default_configuration: بارگذاری پیکربندی پیشگزیده
+ text_status_changed_by_changeset: "در تغییر %{value} بروز شده است."
+ text_time_logged_by_changeset: "در تغییر %{value} نوشته شده است."
+ text_issues_destroy_confirmation: 'آیا براستی میخواهید پیامدهای گزینش شده را پاک کنید؟'
+ text_select_project_modules: 'پیمانههایی که باید برای این پروژه فعال شوند را برگزینید:'
+ text_default_administrator_account_changed: حساب سرپرستی پیشگزیده جایگزین شد
+ text_file_repository_writable: پوشه پیوستها نوشتنی است
+ text_plugin_assets_writable: پوشه داراییهای افزونهها نوشتنی است
+ text_rmagick_available: RMagick در دسترس است (اختیاری)
+ text_destroy_time_entries_question: "%{hours} ساعت روی پیامدهایی که میخواهید پاک کنید کار گزارش شده است. میخواهید چه کنید؟"
+ text_destroy_time_entries: ساعتهای گزارش شده پاک شوند
+ text_assign_time_entries_to_project: ساعتهای گزارش شده به پروژه واگذار شوند
+ text_reassign_time_entries: 'ساعتهای گزارش شده به این پیامد واگذار شوند:'
+ text_user_wrote: "%{value} نوشت:"
+ text_enumeration_destroy_question: "%{count} داده به این برشمردنی وابسته شدهاند."
+ text_enumeration_category_reassign_to: 'به این برشمردنی وابسته شوند:'
+ text_email_delivery_not_configured: "دریافت ایمیل پیکربندی نشده است و آگاهسازیها غیر فعال هستند.\nکارگزار SMTP خود را در config/email.yml پیکربندی کنید و برنامه را بازنشانی کنید تا فعال شوند."
+ text_repository_usernames_mapping: "کاربر Redmine که به هر نام کاربری پیامهای انباره نگاشت میشود را برگزینید.\nکاربرانی که نام کاربری یا ایمیل همسان دارند، خود به خود نگاشت میشوند."
+ text_diff_truncated: '... این تفاوت بریده شده چون بیشتر از بیشترین اندازه نمایش دادنی است.'
+ text_custom_field_possible_values_info: 'یک خط برای هر مقدار'
+ text_wiki_page_destroy_question: "این برگه %{descendants} زیربرگه دارد.میخواهید چه کنید؟"
+ text_wiki_page_nullify_children: "زیربرگهها برگه ریشه شوند"
+ text_wiki_page_destroy_children: "زیربرگهها و زیربرگههای آنها پاک شوند"
+ text_wiki_page_reassign_children: "زیربرگهها به زیر این برگه پدر بروند"
+ text_own_membership_delete_confirmation: "شما دارید برخی یا همه پروانههای خود را برمیدارید و شاید پس از این دیگر نتوانید این پروژه را ویرایش کنید.\nآیا میخواهید این کار را بکنید؟"
+ text_zoom_in: درشتنمایی
+ text_zoom_out: ریزنمایی
+
+ default_role_manager: سرپرست
+ default_role_developer: برنامهنویس
+ default_role_reporter: گزارشدهنده
+ default_tracker_bug: ایراد
+ default_tracker_feature: ویژگی
+ default_tracker_support: پشتیبانی
+ default_issue_status_new: تازه
+ default_issue_status_in_progress: در گردش
+ default_issue_status_resolved: درست شده
+ default_issue_status_feedback: بازخورد
+ default_issue_status_closed: بسته
+ default_issue_status_rejected: برگشت خورده
+ default_doc_category_user: نوشتار کاربر
+ default_doc_category_tech: نوشتار فنی
+ default_priority_low: پایین
+ default_priority_normal: میانه
+ default_priority_high: بالا
+ default_priority_urgent: زود
+ default_priority_immediate: بیدرنگ
+ default_activity_design: طراحی
+ default_activity_development: ساخت
+
+ enumeration_issue_priorities: برتریهای پیامد
+ enumeration_doc_categories: دستههای نوشتار
+ enumeration_activities: فعالیتها (پیگیری زمان)
+ enumeration_system_activity: فعالیت سامانه
+
+ text_tip_issue_begin_day: issue beginning this day
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_tip_issue_begin_end_day: issue beginning and ending this day
+ text_tip_issue_end_day: issue ending this day
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/fi.yml
--- a/config/locales/fi.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/fi.yml Thu Mar 03 11:42:28 2011 +0000
@@ -957,3 +957,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/fr.yml
--- a/config/locales/fr.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/fr.yml Thu Mar 03 11:42:28 2011 +0000
@@ -307,6 +307,7 @@
field_active: Actif
field_parent_issue: Tâche parente
field_visible: Visible
+ field_warn_on_leaving_unsaved: "M'avertir lorsque je quitte une page contenant du texte non sauvegardé"
setting_app_title: Titre de l'application
setting_app_subtitle: Sous-titre de l'application
@@ -596,6 +597,7 @@
label_query: Rapport personnalisé
label_query_plural: Rapports personnalisés
label_query_new: Nouveau rapport
+ label_my_queries: Mes rapports personnalisés
label_filter_add: "Ajouter le filtre "
label_filter_plural: Filtres
label_equals: égal
@@ -889,6 +891,7 @@
text_wiki_page_destroy_children: "Supprimer les sous-pages et toutes leurs descedantes"
text_wiki_page_reassign_children: "Réaffecter les sous-pages à cette page"
text_own_membership_delete_confirmation: "Vous allez supprimer tout ou partie de vos permissions sur ce projet et ne serez peut-être plus autorisé à modifier ce projet.\nEtes-vous sûr de vouloir continuer ?"
+ text_warn_on_leaving_unsaved: "Cette page contient du texte non sauvegardé qui sera perdu si vous quittez la page."
default_role_manager: "Manager "
default_role_developer: "Développeur "
@@ -923,6 +926,7 @@
error_no_tracker_in_project: "Aucun tracker n'est associé à ce projet. Vérifier la configuration du projet."
error_no_default_issue_status: "Aucun statut de demande n'est défini par défaut. Vérifier votre configuration (Administration -> Statuts de demandes)."
text_journal_changed: "%{label} changé de %{old} à %{new}"
+ text_journal_changed_no_detail: "%{label} mis à jour"
text_journal_set_to: "%{label} mis à %{value}"
text_journal_deleted: "%{label} %{old} supprimé"
text_journal_added: "%{label} %{value} ajouté"
diff -r 8972b600f4fb -r 051f544170fe config/locales/gl.yml
--- a/config/locales/gl.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/gl.yml Thu Mar 03 11:42:28 2011 +0000
@@ -948,3 +948,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/he.yml
--- a/config/locales/he.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/he.yml Thu Mar 03 11:42:28 2011 +0000
@@ -941,3 +941,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/hr.yml
--- a/config/locales/hr.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/hr.yml Thu Mar 03 11:42:28 2011 +0000
@@ -943,3 +943,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/hu.yml
--- a/config/locales/hu.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/hu.yml Thu Mar 03 11:42:28 2011 +0000
@@ -955,3 +955,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/id.yml
--- a/config/locales/id.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/id.yml Thu Mar 03 11:42:28 2011 +0000
@@ -944,3 +944,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/it.yml
--- a/config/locales/it.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/it.yml Thu Mar 03 11:42:28 2011 +0000
@@ -937,3 +937,7 @@
setting_commit_logtime_enabled: Abilita registrazione del tempo di collegamento
notice_gantt_chart_truncated: Il grafico è stato troncato perchè eccede il numero di oggetti (%{max}) da visualizzare
setting_gantt_items_limit: Massimo numero di oggetti da visualizzare sul diagramma di gantt
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/ja.yml
--- a/config/locales/ja.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/ja.yml Thu Mar 03 11:42:28 2011 +0000
@@ -957,3 +957,7 @@
enumeration_doc_categories: 文書カテゴリ
enumeration_activities: 作業分類 (時間トラッキング)
enumeration_system_activity: システム作業分類
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/ko.yml
--- a/config/locales/ko.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/ko.yml Thu Mar 03 11:42:28 2011 +0000
@@ -988,3 +988,7 @@
setting_commit_logtime_enabled: 커밋 시점에 작업 시간 기록 활성화
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/lt.yml
--- a/config/locales/lt.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/lt.yml Thu Mar 03 11:42:28 2011 +0000
@@ -996,3 +996,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/lv.yml
--- a/config/locales/lv.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/lv.yml Thu Mar 03 11:42:28 2011 +0000
@@ -931,3 +931,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/mk.yml
--- a/config/locales/mk.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/mk.yml Thu Mar 03 11:42:28 2011 +0000
@@ -936,3 +936,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/mn.yml
--- a/config/locales/mn.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/mn.yml Thu Mar 03 11:42:28 2011 +0000
@@ -937,3 +937,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/nl.yml
--- a/config/locales/nl.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/nl.yml Thu Mar 03 11:42:28 2011 +0000
@@ -918,3 +918,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/no.yml
--- a/config/locales/no.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/no.yml Thu Mar 03 11:42:28 2011 +0000
@@ -923,3 +923,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/pl.yml
--- a/config/locales/pl.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/pl.yml Thu Mar 03 11:42:28 2011 +0000
@@ -953,3 +953,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/pt-BR.yml
--- a/config/locales/pt-BR.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/pt-BR.yml Thu Mar 03 11:42:28 2011 +0000
@@ -956,3 +956,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/pt.yml
--- a/config/locales/pt.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/pt.yml Thu Mar 03 11:42:28 2011 +0000
@@ -940,3 +940,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/ro.yml
--- a/config/locales/ro.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/ro.yml Thu Mar 03 11:42:28 2011 +0000
@@ -929,3 +929,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/ru.yml
--- a/config/locales/ru.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/ru.yml Thu Mar 03 11:42:28 2011 +0000
@@ -1049,3 +1049,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/sk.yml
--- a/config/locales/sk.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/sk.yml Thu Mar 03 11:42:28 2011 +0000
@@ -931,3 +931,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/sl.yml
--- a/config/locales/sl.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/sl.yml Thu Mar 03 11:42:28 2011 +0000
@@ -932,3 +932,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/sr-YU.yml
--- a/config/locales/sr-YU.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/sr-YU.yml Thu Mar 03 11:42:28 2011 +0000
@@ -936,3 +936,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/sr.yml
--- a/config/locales/sr.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/sr.yml Thu Mar 03 11:42:28 2011 +0000
@@ -937,3 +937,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/sv.yml
--- a/config/locales/sv.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/sv.yml Thu Mar 03 11:42:28 2011 +0000
@@ -977,3 +977,7 @@
enumeration_doc_categories: Dokumentkategorier
enumeration_activities: Aktiviteter (tidsuppföljning)
enumeration_system_activity: Systemaktivitet
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/th.yml
--- a/config/locales/th.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/th.yml Thu Mar 03 11:42:28 2011 +0000
@@ -933,3 +933,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/tr.yml
--- a/config/locales/tr.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/tr.yml Thu Mar 03 11:42:28 2011 +0000
@@ -955,3 +955,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/uk.yml
--- a/config/locales/uk.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/uk.yml Thu Mar 03 11:42:28 2011 +0000
@@ -932,3 +932,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/vi.yml
--- a/config/locales/vi.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/vi.yml Thu Mar 03 11:42:28 2011 +0000
@@ -987,3 +987,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/zh-TW.yml
--- a/config/locales/zh-TW.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/zh-TW.yml Thu Mar 03 11:42:28 2011 +0000
@@ -1017,3 +1017,7 @@
enumeration_doc_categories: 文件分類
enumeration_activities: 活動 (時間追蹤)
enumeration_system_activity: 系統活動
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe config/locales/zh.yml
--- a/config/locales/zh.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/config/locales/zh.yml Thu Mar 03 11:42:28 2011 +0000
@@ -950,3 +950,7 @@
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
+ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
+ label_my_queries: My custom queries
+ text_journal_changed_no_detail: "%{label} updated"
diff -r 8972b600f4fb -r 051f544170fe db/.svn/all-wcprops
--- a/db/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/db/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,5 +1,5 @@
K 25
svn:wc:ra_dav:version-url
V 27
-/svn/!svn/ver/4753/trunk/db
+/svn/!svn/ver/4981/trunk/db
END
diff -r 8972b600f4fb -r 051f544170fe db/.svn/entries
--- a/db/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/db/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,15 +1,15 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/db
http://redmine.rubyforge.org/svn
-2011-01-23T10:25:48.265995Z
-4753
-jplang
+2011-03-01T10:14:47.182368Z
+4981
+tmaruyama
has-props
diff -r 8972b600f4fb -r 051f544170fe db/migrate/.svn/all-wcprops
--- a/db/migrate/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/db/migrate/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 35
-/svn/!svn/ver/4610/trunk/db/migrate
+/svn/!svn/ver/4981/trunk/db/migrate
END
20101107130441_add_custom_fields_visible.rb
K 25
@@ -105,18 +105,18 @@
V 64
/svn/!svn/ver/67/trunk/db/migrate/008_create_user_preferences.rb
END
+025_add_search_permission.rb
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/!svn/ver/674/trunk/db/migrate/025_add_search_permission.rb
+END
023_add_tracker_is_in_roadmap.rb
K 25
svn:wc:ra_dav:version-url
V 67
/svn/!svn/ver/228/trunk/db/migrate/023_add_tracker_is_in_roadmap.rb
END
-025_add_search_permission.rb
-K 25
-svn:wc:ra_dav:version-url
-V 63
-/svn/!svn/ver/674/trunk/db/migrate/025_add_search_permission.rb
-END
20091220183727_add_index_to_settings_name.rb
K 25
svn:wc:ra_dav:version-url
@@ -153,11 +153,11 @@
V 71
/svn/!svn/ver/1814/trunk/db/migrate/096_add_commit_access_permission.rb
END
-024_add_roadmap_permission.rb
+20090401221305_update_enumerations_to_sti.rb
K 25
svn:wc:ra_dav:version-url
-V 64
-/svn/!svn/ver/674/trunk/db/migrate/024_add_roadmap_permission.rb
+V 80
+/svn/!svn/ver/2777/trunk/db/migrate/20090401221305_update_enumerations_to_sti.rb
END
091_change_changesets_revision_to_string.rb
K 25
@@ -165,11 +165,11 @@
V 79
/svn/!svn/ver/1236/trunk/db/migrate/091_change_changesets_revision_to_string.rb
END
-20090401221305_update_enumerations_to_sti.rb
+024_add_roadmap_permission.rb
K 25
svn:wc:ra_dav:version-url
-V 80
-/svn/!svn/ver/2777/trunk/db/migrate/20090401221305_update_enumerations_to_sti.rb
+V 64
+/svn/!svn/ver/674/trunk/db/migrate/024_add_roadmap_permission.rb
END
20091017214720_add_missing_indexes_to_wiki_redirects.rb
K 25
@@ -177,18 +177,18 @@
V 91
/svn/!svn/ver/2928/trunk/db/migrate/20091017214720_add_missing_indexes_to_wiki_redirects.rb
END
+072_add_enumerations_position.rb
+K 25
+svn:wc:ra_dav:version-url
+V 68
+/svn/!svn/ver/1623/trunk/db/migrate/072_add_enumerations_position.rb
+END
034_create_changesets.rb
K 25
svn:wc:ra_dav:version-url
V 59
/svn/!svn/ver/479/trunk/db/migrate/034_create_changesets.rb
END
-072_add_enumerations_position.rb
-K 25
-svn:wc:ra_dav:version-url
-V 68
-/svn/!svn/ver/1623/trunk/db/migrate/072_add_enumerations_position.rb
-END
20090614091200_fix_messages_sticky_null.rb
K 25
svn:wc:ra_dav:version-url
@@ -249,6 +249,12 @@
V 66
/svn/!svn/ver/674/trunk/db/migrate/012_add_comments_permissions.rb
END
+20110223180953_salt_user_passwords.rb
+K 25
+svn:wc:ra_dav:version-url
+V 73
+/svn/!svn/ver/4936/trunk/db/migrate/20110223180953_salt_user_passwords.rb
+END
038_add_custom_field_is_filter.rb
K 25
svn:wc:ra_dav:version-url
@@ -273,6 +279,12 @@
V 77
/svn/!svn/ver/3240/trunk/db/migrate/20091225164732_remove_enumerations_opt.rb
END
+20110220160626_add_workflows_assignee_and_author.rb
+K 25
+svn:wc:ra_dav:version-url
+V 87
+/svn/!svn/ver/4895/trunk/db/migrate/20110220160626_add_workflows_assignee_and_author.rb
+END
030_add_projects_feeds_permissions.rb
K 25
svn:wc:ra_dav:version-url
@@ -285,6 +297,12 @@
V 55
/svn/!svn/ver/864/trunk/db/migrate/045_create_boards.rb
END
+20110228000000_add_repositories_log_encoding.rb
+K 25
+svn:wc:ra_dav:version-url
+V 83
+/svn/!svn/ver/4980/trunk/db/migrate/20110228000000_add_repositories_log_encoding.rb
+END
076_allow_null_position.rb
K 25
svn:wc:ra_dav:version-url
@@ -399,11 +417,17 @@
V 59
/svn/!svn/ver/864/trunk/db/migrate/020_add_role_position.rb
END
-20100129193813_update_mail_notification_values.rb
+20091010093521_fix_users_custom_values.rb
K 25
svn:wc:ra_dav:version-url
-V 85
-/svn/!svn/ver/4413/trunk/db/migrate/20100129193813_update_mail_notification_values.rb
+V 77
+/svn/!svn/ver/2905/trunk/db/migrate/20091010093521_fix_users_custom_values.rb
+END
+001_setup.rb
+K 25
+svn:wc:ra_dav:version-url
+V 48
+/svn/!svn/ver/1764/trunk/db/migrate/001_setup.rb
END
016_add_repositories_permissions.rb
K 25
@@ -411,17 +435,11 @@
V 70
/svn/!svn/ver/674/trunk/db/migrate/016_add_repositories_permissions.rb
END
-001_setup.rb
+20100129193813_update_mail_notification_values.rb
K 25
svn:wc:ra_dav:version-url
-V 48
-/svn/!svn/ver/1764/trunk/db/migrate/001_setup.rb
-END
-20091010093521_fix_users_custom_values.rb
-K 25
-svn:wc:ra_dav:version-url
-V 77
-/svn/!svn/ver/2905/trunk/db/migrate/20091010093521_fix_users_custom_values.rb
+V 85
+/svn/!svn/ver/4413/trunk/db/migrate/20100129193813_update_mail_notification_values.rb
END
20091017214611_add_missing_indexes_to_journals.rb
K 25
@@ -429,17 +447,29 @@
V 85
/svn/!svn/ver/2928/trunk/db/migrate/20091017214611_add_missing_indexes_to_journals.rb
END
+041_rename_comment_to_comments.rb
+K 25
+svn:wc:ra_dav:version-url
+V 68
+/svn/!svn/ver/482/trunk/db/migrate/041_rename_comment_to_comments.rb
+END
20091017214107_add_missing_indexes_to_custom_fields.rb
K 25
svn:wc:ra_dav:version-url
V 90
/svn/!svn/ver/2928/trunk/db/migrate/20091017214107_add_missing_indexes_to_custom_fields.rb
END
-041_rename_comment_to_comments.rb
+089_add_attachments_description.rb
K 25
svn:wc:ra_dav:version-url
-V 68
-/svn/!svn/ver/482/trunk/db/migrate/041_rename_comment_to_comments.rb
+V 70
+/svn/!svn/ver/1180/trunk/db/migrate/089_add_attachments_description.rb
+END
+067_create_wiki_redirects.rb
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/!svn/ver/720/trunk/db/migrate/067_create_wiki_redirects.rb
END
20091017214750_add_missing_indexes_to_custom_fields_trackers.rb
K 25
@@ -447,41 +477,41 @@
V 99
/svn/!svn/ver/2928/trunk/db/migrate/20091017214750_add_missing_indexes_to_custom_fields_trackers.rb
END
-067_create_wiki_redirects.rb
-K 25
-svn:wc:ra_dav:version-url
-V 63
-/svn/!svn/ver/720/trunk/db/migrate/067_create_wiki_redirects.rb
-END
-089_add_attachments_description.rb
-K 25
-svn:wc:ra_dav:version-url
-V 70
-/svn/!svn/ver/1180/trunk/db/migrate/089_add_attachments_description.rb
-END
103_set_custom_fields_editable.rb
K 25
svn:wc:ra_dav:version-url
V 69
/svn/!svn/ver/2279/trunk/db/migrate/103_set_custom_fields_editable.rb
END
+20110226120132_change_auth_sources_account_password_limit.rb
+K 25
+svn:wc:ra_dav:version-url
+V 96
+/svn/!svn/ver/4950/trunk/db/migrate/20110226120132_change_auth_sources_account_password_limit.rb
+END
094_change_projects_homepage_limit.rb
K 25
svn:wc:ra_dav:version-url
V 73
/svn/!svn/ver/1457/trunk/db/migrate/094_change_projects_homepage_limit.rb
END
+093_add_wiki_pages_protected.rb
+K 25
+svn:wc:ra_dav:version-url
+V 67
+/svn/!svn/ver/1415/trunk/db/migrate/093_add_wiki_pages_protected.rb
+END
039_create_watchers.rb
K 25
svn:wc:ra_dav:version-url
V 57
/svn/!svn/ver/454/trunk/db/migrate/039_create_watchers.rb
END
-093_add_wiki_pages_protected.rb
+083_add_messages_sticky.rb
K 25
svn:wc:ra_dav:version-url
-V 67
-/svn/!svn/ver/1415/trunk/db/migrate/093_add_wiki_pages_protected.rb
+V 61
+/svn/!svn/ver/926/trunk/db/migrate/083_add_messages_sticky.rb
END
060_change_changesets_committer_limit.rb
K 25
@@ -489,12 +519,6 @@
V 76
/svn/!svn/ver/1222/trunk/db/migrate/060_change_changesets_committer_limit.rb
END
-083_add_messages_sticky.rb
-K 25
-svn:wc:ra_dav:version-url
-V 61
-/svn/!svn/ver/926/trunk/db/migrate/083_add_messages_sticky.rb
-END
069_add_issues_estimated_hours.rb
K 25
svn:wc:ra_dav:version-url
@@ -561,18 +585,18 @@
V 87
/svn/!svn/ver/1938/trunk/db/migrate/099_add_delete_wiki_pages_attachments_permission.rb
END
+098_set_topic_authors_as_watchers.rb
+K 25
+svn:wc:ra_dav:version-url
+V 72
+/svn/!svn/ver/2415/trunk/db/migrate/098_set_topic_authors_as_watchers.rb
+END
059_add_roles_assignable.rb
K 25
svn:wc:ra_dav:version-url
V 62
/svn/!svn/ver/649/trunk/db/migrate/059_add_roles_assignable.rb
END
-098_set_topic_authors_as_watchers.rb
-K 25
-svn:wc:ra_dav:version-url
-V 72
-/svn/!svn/ver/2415/trunk/db/migrate/098_set_topic_authors_as_watchers.rb
-END
013_create_queries.rb
K 25
svn:wc:ra_dav:version-url
@@ -585,18 +609,18 @@
V 74
/svn/!svn/ver/674/trunk/db/migrate/049_add_wiki_destroy_page_permission.rb
END
+040_create_changesets_issues.rb
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svn/!svn/ver/473/trunk/db/migrate/040_create_changesets_issues.rb
+END
048_allow_null_version_effective_date.rb
K 25
svn:wc:ra_dav:version-url
V 76
/svn/!svn/ver/1140/trunk/db/migrate/048_allow_null_version_effective_date.rb
END
-040_create_changesets_issues.rb
-K 25
-svn:wc:ra_dav:version-url
-V 66
-/svn/!svn/ver/473/trunk/db/migrate/040_create_changesets_issues.rb
-END
085_add_role_tracker_old_status_index_to_workflows.rb
K 25
svn:wc:ra_dav:version-url
@@ -621,29 +645,35 @@
V 81
/svn/!svn/ver/1236/trunk/db/migrate/092_change_changes_from_revision_to_string.rb
END
+20110223180944_add_users_salt.rb
+K 25
+svn:wc:ra_dav:version-url
+V 68
+/svn/!svn/ver/4936/trunk/db/migrate/20110223180944_add_users_salt.rb
+END
20090214190337_add_watchers_user_id_type_index.rb
K 25
svn:wc:ra_dav:version-url
V 85
/svn/!svn/ver/2466/trunk/db/migrate/20090214190337_add_watchers_user_id_type_index.rb
END
+20091017212457_add_missing_indexes_to_custom_fields_projects.rb
+K 25
+svn:wc:ra_dav:version-url
+V 99
+/svn/!svn/ver/2928/trunk/db/migrate/20091017212457_add_missing_indexes_to_custom_fields_projects.rb
+END
054_add_changesets_scmid.rb
K 25
svn:wc:ra_dav:version-url
V 62
/svn/!svn/ver/559/trunk/db/migrate/054_add_changesets_scmid.rb
END
-20091017212457_add_missing_indexes_to_custom_fields_projects.rb
+097_add_view_wiki_edits_permission.rb
K 25
svn:wc:ra_dav:version-url
-V 99
-/svn/!svn/ver/2928/trunk/db/migrate/20091017212457_add_missing_indexes_to_custom_fields_projects.rb
-END
-20091017213716_add_missing_indexes_to_member_roles.rb
-K 25
-svn:wc:ra_dav:version-url
-V 89
-/svn/!svn/ver/2928/trunk/db/migrate/20091017213716_add_missing_indexes_to_member_roles.rb
+V 73
+/svn/!svn/ver/1896/trunk/db/migrate/097_add_view_wiki_edits_permission.rb
END
065_add_settings_updated_on.rb
K 25
@@ -651,11 +681,11 @@
V 65
/svn/!svn/ver/685/trunk/db/migrate/065_add_settings_updated_on.rb
END
-097_add_view_wiki_edits_permission.rb
+20091017213716_add_missing_indexes_to_member_roles.rb
K 25
svn:wc:ra_dav:version-url
-V 73
-/svn/!svn/ver/1896/trunk/db/migrate/097_add_view_wiki_edits_permission.rb
+V 89
+/svn/!svn/ver/2928/trunk/db/migrate/20091017213716_add_missing_indexes_to_member_roles.rb
END
20091108092559_add_versions_status.rb
K 25
@@ -669,6 +699,12 @@
V 85
/svn/!svn/ver/2928/trunk/db/migrate/20091017213228_add_missing_indexes_to_watchers.rb
END
+20110228000100_copy_repositories_log_encoding.rb
+K 25
+svn:wc:ra_dav:version-url
+V 84
+/svn/!svn/ver/4981/trunk/db/migrate/20110228000100_copy_repositories_log_encoding.rb
+END
063_add_roles_permissions.rb
K 25
svn:wc:ra_dav:version-url
@@ -681,17 +717,23 @@
V 73
/svn/!svn/ver/2869/trunk/db/migrate/20090704172350_populate_users_type.rb
END
+20090503121505_populate_member_roles.rb
+K 25
+svn:wc:ra_dav:version-url
+V 75
+/svn/!svn/ver/2729/trunk/db/migrate/20090503121505_populate_member_roles.rb
+END
052_add_changes_revision.rb
K 25
svn:wc:ra_dav:version-url
V 62
/svn/!svn/ver/559/trunk/db/migrate/052_add_changes_revision.rb
END
-20090503121505_populate_member_roles.rb
+050_add_wiki_attachments_permissions.rb
K 25
svn:wc:ra_dav:version-url
-V 75
-/svn/!svn/ver/2729/trunk/db/migrate/20090503121505_populate_member_roles.rb
+V 74
+/svn/!svn/ver/674/trunk/db/migrate/050_add_wiki_attachments_permissions.rb
END
062_insert_builtin_roles.rb
K 25
@@ -699,11 +741,11 @@
V 62
/svn/!svn/ver/674/trunk/db/migrate/062_insert_builtin_roles.rb
END
-050_add_wiki_attachments_permissions.rb
+104_add_projects_lft_and_rgt.rb
K 25
svn:wc:ra_dav:version-url
-V 74
-/svn/!svn/ver/674/trunk/db/migrate/050_add_wiki_attachments_permissions.rb
+V 67
+/svn/!svn/ver/2304/trunk/db/migrate/104_add_projects_lft_and_rgt.rb
END
074_add_auth_sources_tls.rb
K 25
@@ -711,11 +753,23 @@
V 62
/svn/!svn/ver/845/trunk/db/migrate/074_add_auth_sources_tls.rb
END
-104_add_projects_lft_and_rgt.rb
+20091114105931_add_view_issues_permission.rb
K 25
svn:wc:ra_dav:version-url
-V 67
-/svn/!svn/ver/2304/trunk/db/migrate/104_add_projects_lft_and_rgt.rb
+V 80
+/svn/!svn/ver/3039/trunk/db/migrate/20091114105931_add_view_issues_permission.rb
+END
+20091017214336_add_missing_indexes_to_users.rb
+K 25
+svn:wc:ra_dav:version-url
+V 82
+/svn/!svn/ver/2928/trunk/db/migrate/20091017214336_add_missing_indexes_to_users.rb
+END
+082_add_messages_locked.rb
+K 25
+svn:wc:ra_dav:version-url
+V 61
+/svn/!svn/ver/926/trunk/db/migrate/082_add_messages_locked.rb
END
20091017213113_add_missing_indexes_to_enumerations.rb
K 25
@@ -723,23 +777,11 @@
V 89
/svn/!svn/ver/2928/trunk/db/migrate/20091017213113_add_missing_indexes_to_enumerations.rb
END
-082_add_messages_locked.rb
+20091017213444_add_missing_indexes_to_tokens.rb
K 25
svn:wc:ra_dav:version-url
-V 61
-/svn/!svn/ver/926/trunk/db/migrate/082_add_messages_locked.rb
-END
-20091017214336_add_missing_indexes_to_users.rb
-K 25
-svn:wc:ra_dav:version-url
-V 82
-/svn/!svn/ver/2928/trunk/db/migrate/20091017214336_add_missing_indexes_to_users.rb
-END
-20091114105931_add_view_issues_permission.rb
-K 25
-svn:wc:ra_dav:version-url
-V 80
-/svn/!svn/ver/3039/trunk/db/migrate/20091114105931_add_view_issues_permission.rb
+V 83
+/svn/!svn/ver/2928/trunk/db/migrate/20091017213444_add_missing_indexes_to_tokens.rb
END
20090503121501_create_member_roles.rb
K 25
@@ -747,11 +789,11 @@
V 73
/svn/!svn/ver/2726/trunk/db/migrate/20090503121501_create_member_roles.rb
END
-20091017213444_add_missing_indexes_to_tokens.rb
+057_add_versions_wiki_page_title.rb
K 25
svn:wc:ra_dav:version-url
-V 83
-/svn/!svn/ver/2928/trunk/db/migrate/20091017213444_add_missing_indexes_to_tokens.rb
+V 70
+/svn/!svn/ver/564/trunk/db/migrate/057_add_versions_wiki_page_title.rb
END
20090323224724_add_type_to_enumerations.rb
K 25
@@ -759,12 +801,6 @@
V 78
/svn/!svn/ver/2777/trunk/db/migrate/20090323224724_add_type_to_enumerations.rb
END
-057_add_versions_wiki_page_title.rb
-K 25
-svn:wc:ra_dav:version-url
-V 70
-/svn/!svn/ver/564/trunk/db/migrate/057_add_versions_wiki_page_title.rb
-END
004_export_pdf.rb
K 25
svn:wc:ra_dav:version-url
@@ -879,12 +915,24 @@
V 77
/svn/!svn/ver/674/trunk/db/migrate/056_add_repositories_changes_permission.rb
END
+20110224000000_add_repositories_path_encoding.rb
+K 25
+svn:wc:ra_dav:version-url
+V 84
+/svn/!svn/ver/4940/trunk/db/migrate/20110224000000_add_repositories_path_encoding.rb
+END
032_create_time_entries.rb
K 25
svn:wc:ra_dav:version-url
V 61
/svn/!svn/ver/479/trunk/db/migrate/032_create_time_entries.rb
END
+20110226120112_change_repositories_password_limit.rb
+K 25
+svn:wc:ra_dav:version-url
+V 88
+/svn/!svn/ver/4950/trunk/db/migrate/20110226120112_change_repositories_password_limit.rb
+END
068_create_enabled_modules.rb
K 25
svn:wc:ra_dav:version-url
@@ -1059,6 +1107,12 @@
V 57
/svn/!svn/ver/167/trunk/db/migrate/017_create_settings.rb
END
+20110227125750_change_journal_details_values_to_text.rb
+K 25
+svn:wc:ra_dav:version-url
+V 91
+/svn/!svn/ver/4954/trunk/db/migrate/20110227125750_change_journal_details_values_to_text.rb
+END
095_add_wiki_pages_parent_id.rb
K 25
svn:wc:ra_dav:version-url
diff -r 8972b600f4fb -r 051f544170fe db/migrate/.svn/entries
--- a/db/migrate/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/db/migrate/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,15 +1,15 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/db/migrate
http://redmine.rubyforge.org/svn
-2011-01-01T23:08:49.766359Z
-4610
-jbbarth
+2011-03-01T10:14:47.182368Z
+4981
+tmaruyama
@@ -604,6 +604,40 @@
281
+025_add_search_permission.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+42937036f9c414f7d9b028f629b1ce20
+2007-08-29T16:52:35.680643Z
+674
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+412
+
023_add_tracker_is_in_roadmap.rb
file
@@ -638,40 +672,6 @@
230
-025_add_search_permission.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-42937036f9c414f7d9b028f629b1ce20
-2007-08-29T16:52:35.680643Z
-674
-jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-412
-
20091220183727_add_index_to_settings_name.rb
file
@@ -876,39 +876,39 @@
321
-024_add_roadmap_permission.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-f1b96e04888c0a48bf29dd0556ba8027
-2007-08-29T16:52:35.680643Z
-674
-jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-445
+20090401221305_update_enumerations_to_sti.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+d343c3ba8f04d1cc71f20c9860d5907b
+2009-05-30T23:30:36.923541Z
+2777
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+329
091_change_changesets_revision_to_string.rb
file
@@ -944,39 +944,39 @@
245
-20090401221305_update_enumerations_to_sti.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-d343c3ba8f04d1cc71f20c9860d5907b
-2009-05-30T23:30:36.923541Z
-2777
-edavis10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-329
+024_add_roadmap_permission.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+f1b96e04888c0a48bf29dd0556ba8027
+2007-08-29T16:52:35.680643Z
+674
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+445
20091017214720_add_missing_indexes_to_wiki_redirects.rb
file
@@ -1012,40 +1012,6 @@
195
-034_create_changesets.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-82595f307b6fe5053151a681b737f063
-2007-04-25T15:06:20.062636Z
-479
-jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-515
-
072_add_enumerations_position.rb
file
@@ -1080,6 +1046,40 @@
495
+034_create_changesets.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+82595f307b6fe5053151a681b737f063
+2007-04-25T15:06:20.062636Z
+479
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+515
+
20090614091200_fix_messages_sticky_null.rb
file
@@ -1420,6 +1420,40 @@
751
+20110223180953_salt_user_passwords.rb
+file
+
+
+
+
+2011-03-03T11:40:18.000000Z
+f72892b525076a1ffaf1f2548822d560
+2011-02-23T17:27:31.762248Z
+4936
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+384
+
038_add_custom_field_is_filter.rb
file
@@ -1556,6 +1590,40 @@
442
+20110220160626_add_workflows_assignee_and_author.rb
+file
+
+
+
+
+2011-03-03T11:40:18.000000Z
+8e7a8d0f81e207e3d673703de33fdb69
+2011-02-20T15:38:07.840581Z
+4895
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+495
+
030_add_projects_feeds_permissions.rb
file
@@ -1624,6 +1692,40 @@
607
+20110228000000_add_repositories_log_encoding.rb
+file
+
+
+
+
+2011-03-03T11:40:18.000000Z
+dbe736040dcb44e3db78219ecfdb3d62
+2011-03-01T09:47:06.578325Z
+4980
+tmaruyama
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+237
+
076_allow_null_position.rb
file
@@ -2270,108 +2372,6 @@
275
-20100129193813_update_mail_notification_values.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-d2251c92048ec4169e2c220f1510d803
-2010-11-20T09:55:06.580420Z
-4413
-jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-241
-
-016_add_repositories_permissions.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-e770aa6387bb4737804d5024e743cd25
-2007-08-29T16:52:35.680643Z
-674
-jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-1658
-
-001_setup.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-b740a77ff87e6390f7ad86eaf0710040
-2008-08-25T16:35:20.899166Z
-1764
-jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-18072
-
20091010093521_fix_users_custom_values.rb
file
@@ -2406,6 +2406,108 @@
276
+001_setup.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+b740a77ff87e6390f7ad86eaf0710040
+2008-08-25T16:35:20.899166Z
+1764
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+18072
+
+016_add_repositories_permissions.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+e770aa6387bb4737804d5024e743cd25
+2007-08-29T16:52:35.680643Z
+674
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1658
+
+20100129193813_update_mail_notification_values.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+d2251c92048ec4169e2c220f1510d803
+2010-11-20T09:55:06.580420Z
+4413
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+241
+
20091017214611_add_missing_indexes_to_journals.rb
file
@@ -2440,6 +2542,40 @@
263
+041_rename_comment_to_comments.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+4901b560613f6a0ae3e5df5bcf2dd11c
+2007-04-25T16:48:01.299251Z
+482
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+896
+
20091017214107_add_missing_indexes_to_custom_fields.rb
file
@@ -2474,73 +2610,39 @@
211
-041_rename_comment_to_comments.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-4901b560613f6a0ae3e5df5bcf2dd11c
-2007-04-25T16:48:01.299251Z
-482
+089_add_attachments_description.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+f60a0c1f633a6ff65fb2734173b57fe4
+2008-02-29T19:46:58.834023Z
+1180
jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-896
-
-20091017214750_add_missing_indexes_to_custom_fields_trackers.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-871a600c06a6965f52c63177a82fbe15
-2009-10-17T22:23:29.892475Z
-2928
-edavis10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-275
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+201
067_create_wiki_redirects.rb
file
@@ -2576,39 +2678,39 @@
441
-089_add_attachments_description.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-f60a0c1f633a6ff65fb2734173b57fe4
-2008-02-29T19:46:58.834023Z
-1180
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-201
+20091017214750_add_missing_indexes_to_custom_fields_trackers.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+871a600c06a6965f52c63177a82fbe15
+2009-10-17T22:23:29.892475Z
+2928
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+275
103_set_custom_fields_editable.rb
file
@@ -2644,6 +2746,40 @@
270
+20110226120132_change_auth_sources_account_password_limit.rb
+file
+
+
+
+
+2011-03-03T11:40:18.000000Z
+fccbbb0aadf883abb7a337961c2199e4
+2011-02-26T13:09:25.657748Z
+4950
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+298
+
094_change_projects_homepage_limit.rb
file
@@ -2678,40 +2814,6 @@
264
-039_create_watchers.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-07bf6636d0acf3ec84b38648bbe2c07a
-2007-04-21T12:09:07.794422Z
-454
-jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-337
-
093_add_wiki_pages_protected.rb
file
@@ -2746,16 +2848,16 @@
227
-060_change_changesets_committer_limit.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-0abbef63f1f391688df012906a94877b
-2008-03-09T18:25:37.323226Z
-1222
+039_create_watchers.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+07bf6636d0acf3ec84b38648bbe2c07a
+2007-04-21T12:09:07.794422Z
+454
jplang
@@ -2778,7 +2880,7 @@
-241
+337
083_add_messages_sticky.rb
file
@@ -2814,6 +2916,40 @@
193
+060_change_changesets_committer_limit.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+0abbef63f1f391688df012906a94877b
+2008-03-09T18:25:37.323226Z
+1222
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+241
+
069_add_issues_estimated_hours.rb
file
@@ -3188,40 +3324,6 @@
339
-059_add_roles_assignable.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-aa67262417630fc088eb57df8d2dd9d3
-2007-08-16T17:47:41.639068Z
-649
-jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-199
-
098_set_topic_authors_as_watchers.rb
file
@@ -3256,6 +3358,40 @@
749
+059_add_roles_assignable.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+aa67262417630fc088eb57df8d2dd9d3
+2007-08-16T17:47:41.639068Z
+649
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+199
+
013_create_queries.rb
file
@@ -3324,6 +3460,40 @@
418
+040_create_changesets_issues.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+dc28d8674409819b866f6d878b33d288
+2007-04-24T13:57:27.960164Z
+473
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+418
+
048_allow_null_version_effective_date.rb
file
@@ -3358,40 +3528,6 @@
225
-040_create_changesets_issues.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-dc28d8674409819b866f6d878b33d288
-2007-04-24T13:57:27.960164Z
-473
-jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-418
-
085_add_role_tracker_old_status_index_to_workflows.rb
file
@@ -3528,6 +3664,40 @@
218
+20110223180944_add_users_salt.rb
+file
+
+
+
+
+2011-03-03T11:40:18.000000Z
+6dd75e3da92087226c787a4edc76032e
+2011-02-23T17:27:31.762248Z
+4936
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+176
+
20090214190337_add_watchers_user_id_type_index.rb
file
@@ -3562,6 +3732,40 @@
252
+20091017212457_add_missing_indexes_to_custom_fields_projects.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+90bb42121a57db140491ecb2a0763d00
+2009-10-17T22:23:29.892475Z
+2928
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+275
+
054_add_changesets_scmid.rb
file
@@ -3596,73 +3800,39 @@
180
-20091017212457_add_missing_indexes_to_custom_fields_projects.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-90bb42121a57db140491ecb2a0763d00
-2009-10-17T22:23:29.892475Z
-2928
-edavis10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-275
-
-20091017213716_add_missing_indexes_to_member_roles.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-4bfd0623186217eee4346313f148ea7a
-2009-10-17T22:23:29.892475Z
-2928
-edavis10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-272
+097_add_view_wiki_edits_permission.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+e00f8e7739afbb2d07a21decd1422a0a
+2008-09-21T20:38:36.877257Z
+1896
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+298
065_add_settings_updated_on.rb
file
@@ -3698,39 +3868,39 @@
248
-097_add_view_wiki_edits_permission.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-e00f8e7739afbb2d07a21decd1422a0a
-2008-09-21T20:38:36.877257Z
-1896
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-298
+20091017213716_add_missing_indexes_to_member_roles.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+4bfd0623186217eee4346313f148ea7a
+2009-10-17T22:23:29.892475Z
+2928
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+272
20091108092559_add_versions_status.rb
file
@@ -3800,6 +3970,40 @@
308
+20110228000100_copy_repositories_log_encoding.rb
+file
+
+
+
+
+2011-03-03T11:40:18.000000Z
+22941cc81d233c2602be827d70670c10
+2011-03-01T10:14:47.182368Z
+4981
+tmaruyama
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+497
+
063_add_roles_permissions.rb
file
@@ -3868,40 +4072,6 @@
155
-052_add_changes_revision.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-3af07746c4eab3a1716744971ac26ffc
-2007-06-12T20:12:05.590809Z
-559
-jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-180
-
20090503121505_populate_member_roles.rb
file
@@ -3936,6 +4106,74 @@
276
+052_add_changes_revision.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+3af07746c4eab3a1716744971ac26ffc
+2007-06-12T20:12:05.590809Z
+559
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+180
+
+050_add_wiki_attachments_permissions.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+67d6e1898c150c8df560cb2ce8a2f2d7
+2007-08-29T16:52:35.680643Z
+674
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+718
+
062_insert_builtin_roles.rb
file
@@ -3970,39 +4208,39 @@
403
-050_add_wiki_attachments_permissions.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-67d6e1898c150c8df560cb2ce8a2f2d7
-2007-08-29T16:52:35.680643Z
-674
+104_add_projects_lft_and_rgt.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+46effb13ff7d1a62b7b8c93afc7da9c8
+2009-01-24T11:31:15.122844Z
+2304
jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-718
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+250
074_add_auth_sources_tls.rb
file
@@ -4038,16 +4276,16 @@
215
-104_add_projects_lft_and_rgt.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-46effb13ff7d1a62b7b8c93afc7da9c8
-2009-01-24T11:31:15.122844Z
-2304
+20091114105931_add_view_issues_permission.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+886411cb32a18ec492acc798194210af
+2009-11-14T12:08:47.175978Z
+3039
jplang
has-props
@@ -4070,75 +4308,7 @@
-250
-
-20091017214336_add_missing_indexes_to_users.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-8251942eb30b7c709ac6e3dc1ab5eedb
-2009-10-17T22:23:29.892475Z
-2928
-edavis10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-267
-
-20091017213113_add_missing_indexes_to_enumerations.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-22e6afc0519b7befbae2c4a4433c20f5
-2009-10-17T22:23:29.892475Z
-2928
-edavis10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-209
+262
082_add_messages_locked.rb
file
@@ -4174,39 +4344,107 @@
197
-20091114105931_add_view_issues_permission.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-886411cb32a18ec492acc798194210af
-2009-11-14T12:08:47.175978Z
-3039
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-262
+20091017213113_add_missing_indexes_to_enumerations.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+22e6afc0519b7befbae2c4a4433c20f5
+2009-10-17T22:23:29.892475Z
+2928
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+209
+
+20091017214336_add_missing_indexes_to_users.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+8251942eb30b7c709ac6e3dc1ab5eedb
+2009-10-17T22:23:29.892475Z
+2928
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+267
+
+20091017213444_add_missing_indexes_to_tokens.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+4c220f0316e1b04fa8350f0309698f24
+2009-10-17T22:23:29.892475Z
+2928
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+172
20090503121501_create_member_roles.rb
file
@@ -4242,39 +4480,39 @@
274
-20091017213444_add_missing_indexes_to_tokens.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-4c220f0316e1b04fa8350f0309698f24
-2009-10-17T22:23:29.892475Z
-2928
-edavis10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-172
+057_add_versions_wiki_page_title.rb
+file
+
+
+
+
+2011-03-03T11:05:12.000000Z
+6a4944f1162c00f2405200fb38773886
+2007-06-14T18:26:27.748707Z
+564
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+202
20090323224724_add_type_to_enumerations.rb
file
@@ -4310,40 +4548,6 @@
185
-057_add_versions_wiki_page_title.rb
-file
-
-
-
-
-2011-03-03T11:05:12.000000Z
-6a4944f1162c00f2405200fb38773886
-2007-06-14T18:26:27.748707Z
-564
-jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-202
-
004_export_pdf.rb
file
@@ -4990,6 +5194,40 @@
443
+20110224000000_add_repositories_path_encoding.rb
+file
+
+
+
+
+2011-03-03T11:40:18.000000Z
+7cd80bdf7897357500a46e87ed82b84b
+2011-02-24T05:58:37.876075Z
+4940
+tmaruyama
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+240
+
032_create_time_entries.rb
file
@@ -5024,6 +5262,40 @@
966
+20110226120112_change_repositories_password_limit.rb
+file
+
+
+
+
+2011-03-03T11:40:18.000000Z
+e809364786bdcce227961318e7428700
+2011-02-26T13:09:25.657748Z
+4950
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+276
+
068_create_enabled_modules.rb
file
@@ -6010,6 +6282,40 @@
284
+20110227125750_change_journal_details_values_to_text.rb
+file
+
+
+
+
+2011-03-03T11:40:18.000000Z
+768603dc014def8d2fc0a0bb8d81ef79
+2011-02-27T13:34:41.060565Z
+4954
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+324
+
095_add_wiki_pages_parent_id.rb
file
diff -r 8972b600f4fb -r 051f544170fe db/migrate/.svn/prop-base/20110220160626_add_workflows_assignee_and_author.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/.svn/prop-base/20110220160626_add_workflows_assignee_and_author.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:eol-style
+V 6
+native
+END
diff -r 8972b600f4fb -r 051f544170fe db/migrate/.svn/prop-base/20110223180944_add_users_salt.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/.svn/prop-base/20110223180944_add_users_salt.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:eol-style
+V 6
+native
+END
diff -r 8972b600f4fb -r 051f544170fe db/migrate/.svn/prop-base/20110223180953_salt_user_passwords.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/.svn/prop-base/20110223180953_salt_user_passwords.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:eol-style
+V 6
+native
+END
diff -r 8972b600f4fb -r 051f544170fe db/migrate/.svn/prop-base/20110226120112_change_repositories_password_limit.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/.svn/prop-base/20110226120112_change_repositories_password_limit.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:eol-style
+V 6
+native
+END
diff -r 8972b600f4fb -r 051f544170fe db/migrate/.svn/prop-base/20110226120132_change_auth_sources_account_password_limit.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/.svn/prop-base/20110226120132_change_auth_sources_account_password_limit.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:eol-style
+V 6
+native
+END
diff -r 8972b600f4fb -r 051f544170fe db/migrate/.svn/prop-base/20110227125750_change_journal_details_values_to_text.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/.svn/prop-base/20110227125750_change_journal_details_values_to_text.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:eol-style
+V 6
+native
+END
diff -r 8972b600f4fb -r 051f544170fe db/migrate/.svn/text-base/20110220160626_add_workflows_assignee_and_author.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/.svn/text-base/20110220160626_add_workflows_assignee_and_author.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,13 @@
+class AddWorkflowsAssigneeAndAuthor < ActiveRecord::Migration
+ def self.up
+ add_column :workflows, :assignee, :boolean, :null => false, :default => false
+ add_column :workflows, :author, :boolean, :null => false, :default => false
+ Workflow.update_all("assignee = #{Workflow.connection.quoted_false}")
+ Workflow.update_all("author = #{Workflow.connection.quoted_false}")
+ end
+
+ def self.down
+ remove_column :workflows, :assignee
+ remove_column :workflows, :author
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe db/migrate/.svn/text-base/20110223180944_add_users_salt.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/.svn/text-base/20110223180944_add_users_salt.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,9 @@
+class AddUsersSalt < ActiveRecord::Migration
+ def self.up
+ add_column :users, :salt, :string, :limit => 64
+ end
+
+ def self.down
+ remove_column :users, :salt
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe db/migrate/.svn/text-base/20110223180953_salt_user_passwords.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/.svn/text-base/20110223180953_salt_user_passwords.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,13 @@
+class SaltUserPasswords < ActiveRecord::Migration
+
+ def self.up
+ say_with_time "Salting user passwords, this may take some time..." do
+ User.salt_unsalted_passwords!
+ end
+ end
+
+ def self.down
+ # Unsalted passwords can not be restored
+ raise ActiveRecord::IrreversibleMigration, "Can't decypher salted passwords. This migration can not be rollback'ed."
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe db/migrate/.svn/text-base/20110224000000_add_repositories_path_encoding.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/.svn/text-base/20110224000000_add_repositories_path_encoding.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,9 @@
+class AddRepositoriesPathEncoding < ActiveRecord::Migration
+ def self.up
+ add_column :repositories, :path_encoding, :string, :limit => 64, :default => nil
+ end
+
+ def self.down
+ remove_column :repositories, :path_encoding
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe db/migrate/.svn/text-base/20110226120112_change_repositories_password_limit.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/.svn/text-base/20110226120112_change_repositories_password_limit.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,9 @@
+class ChangeRepositoriesPasswordLimit < ActiveRecord::Migration
+ def self.up
+ change_column :repositories, :password, :string, :limit => nil, :default => ''
+ end
+
+ def self.down
+ change_column :repositories, :password, :string, :limit => 60, :default => ''
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe db/migrate/.svn/text-base/20110226120132_change_auth_sources_account_password_limit.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/.svn/text-base/20110226120132_change_auth_sources_account_password_limit.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,9 @@
+class ChangeAuthSourcesAccountPasswordLimit < ActiveRecord::Migration
+ def self.up
+ change_column :auth_sources, :account_password, :string, :limit => nil, :default => ''
+ end
+
+ def self.down
+ change_column :auth_sources, :account_password, :string, :limit => 60, :default => ''
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe db/migrate/.svn/text-base/20110227125750_change_journal_details_values_to_text.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/.svn/text-base/20110227125750_change_journal_details_values_to_text.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,11 @@
+class ChangeJournalDetailsValuesToText < ActiveRecord::Migration
+ def self.up
+ change_column :journal_details, :old_value, :text
+ change_column :journal_details, :value, :text
+ end
+
+ def self.down
+ change_column :journal_details, :old_value, :string
+ change_column :journal_details, :value, :string
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe db/migrate/.svn/text-base/20110228000000_add_repositories_log_encoding.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/.svn/text-base/20110228000000_add_repositories_log_encoding.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,9 @@
+class AddRepositoriesLogEncoding < ActiveRecord::Migration
+ def self.up
+ add_column :repositories, :log_encoding, :string, :limit => 64, :default => nil
+ end
+
+ def self.down
+ remove_column :repositories, :log_encoding
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe db/migrate/.svn/text-base/20110228000100_copy_repositories_log_encoding.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/.svn/text-base/20110228000100_copy_repositories_log_encoding.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,18 @@
+class CopyRepositoriesLogEncoding < ActiveRecord::Migration
+ def self.up
+ encoding = Setting.commit_logs_encoding.to_s.strip
+ encoding = encoding.blank? ? 'UTF-8' : encoding
+ Repository.find(:all).each do |repo|
+ scm = repo.scm_name
+ case scm
+ when 'Subversion', 'Mercurial', 'Git', 'Filesystem'
+ repo.update_attribute(:log_encoding, nil)
+ else
+ repo.update_attribute(:log_encoding, encoding)
+ end
+ end
+ end
+
+ def self.down
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe db/migrate/20110220160626_add_workflows_assignee_and_author.rb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/20110220160626_add_workflows_assignee_and_author.rb Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,13 @@
+class AddWorkflowsAssigneeAndAuthor < ActiveRecord::Migration
+ def self.up
+ add_column :workflows, :assignee, :boolean, :null => false, :default => false
+ add_column :workflows, :author, :boolean, :null => false, :default => false
+ Workflow.update_all("assignee = #{Workflow.connection.quoted_false}")
+ Workflow.update_all("author = #{Workflow.connection.quoted_false}")
+ end
+
+ def self.down
+ remove_column :workflows, :assignee
+ remove_column :workflows, :author
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe db/migrate/20110223180944_add_users_salt.rb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/20110223180944_add_users_salt.rb Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,9 @@
+class AddUsersSalt < ActiveRecord::Migration
+ def self.up
+ add_column :users, :salt, :string, :limit => 64
+ end
+
+ def self.down
+ remove_column :users, :salt
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe db/migrate/20110223180953_salt_user_passwords.rb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/20110223180953_salt_user_passwords.rb Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,13 @@
+class SaltUserPasswords < ActiveRecord::Migration
+
+ def self.up
+ say_with_time "Salting user passwords, this may take some time..." do
+ User.salt_unsalted_passwords!
+ end
+ end
+
+ def self.down
+ # Unsalted passwords can not be restored
+ raise ActiveRecord::IrreversibleMigration, "Can't decypher salted passwords. This migration can not be rollback'ed."
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe db/migrate/20110224000000_add_repositories_path_encoding.rb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/20110224000000_add_repositories_path_encoding.rb Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,9 @@
+class AddRepositoriesPathEncoding < ActiveRecord::Migration
+ def self.up
+ add_column :repositories, :path_encoding, :string, :limit => 64, :default => nil
+ end
+
+ def self.down
+ remove_column :repositories, :path_encoding
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe db/migrate/20110226120112_change_repositories_password_limit.rb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/20110226120112_change_repositories_password_limit.rb Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,9 @@
+class ChangeRepositoriesPasswordLimit < ActiveRecord::Migration
+ def self.up
+ change_column :repositories, :password, :string, :limit => nil, :default => ''
+ end
+
+ def self.down
+ change_column :repositories, :password, :string, :limit => 60, :default => ''
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe db/migrate/20110226120132_change_auth_sources_account_password_limit.rb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/20110226120132_change_auth_sources_account_password_limit.rb Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,9 @@
+class ChangeAuthSourcesAccountPasswordLimit < ActiveRecord::Migration
+ def self.up
+ change_column :auth_sources, :account_password, :string, :limit => nil, :default => ''
+ end
+
+ def self.down
+ change_column :auth_sources, :account_password, :string, :limit => 60, :default => ''
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe db/migrate/20110227125750_change_journal_details_values_to_text.rb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/20110227125750_change_journal_details_values_to_text.rb Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,11 @@
+class ChangeJournalDetailsValuesToText < ActiveRecord::Migration
+ def self.up
+ change_column :journal_details, :old_value, :text
+ change_column :journal_details, :value, :text
+ end
+
+ def self.down
+ change_column :journal_details, :old_value, :string
+ change_column :journal_details, :value, :string
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe db/migrate/20110228000000_add_repositories_log_encoding.rb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/20110228000000_add_repositories_log_encoding.rb Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,9 @@
+class AddRepositoriesLogEncoding < ActiveRecord::Migration
+ def self.up
+ add_column :repositories, :log_encoding, :string, :limit => 64, :default => nil
+ end
+
+ def self.down
+ remove_column :repositories, :log_encoding
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe db/migrate/20110228000100_copy_repositories_log_encoding.rb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/20110228000100_copy_repositories_log_encoding.rb Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,18 @@
+class CopyRepositoriesLogEncoding < ActiveRecord::Migration
+ def self.up
+ encoding = Setting.commit_logs_encoding.to_s.strip
+ encoding = encoding.blank? ? 'UTF-8' : encoding
+ Repository.find(:all).each do |repo|
+ scm = repo.scm_name
+ case scm
+ when 'Subversion', 'Mercurial', 'Git', 'Filesystem'
+ repo.update_attribute(:log_encoding, nil)
+ else
+ repo.update_attribute(:log_encoding, encoding)
+ end
+ end
+ end
+
+ def self.down
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe doc/.svn/entries
--- a/doc/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/doc/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/doc
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe extra/.svn/all-wcprops
--- a/extra/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,5 +1,5 @@
K 25
svn:wc:ra_dav:version-url
V 30
-/svn/!svn/ver/4725/trunk/extra
+/svn/!svn/ver/4936/trunk/extra
END
diff -r 8972b600f4fb -r 051f544170fe extra/.svn/entries
--- a/extra/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/extra
http://redmine.rubyforge.org/svn
-2011-01-15T14:48:33.715032Z
-4725
+2011-02-23T17:27:31.762248Z
+4936
jplang
diff -r 8972b600f4fb -r 051f544170fe extra/mail_handler/.svn/entries
--- a/extra/mail_handler/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/mail_handler/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/extra/mail_handler
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe extra/sample_plugin/.svn/entries
--- a/extra/sample_plugin/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/sample_plugin/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe extra/sample_plugin/app/.svn/entries
--- a/extra/sample_plugin/app/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/sample_plugin/app/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe extra/sample_plugin/app/controllers/.svn/entries
--- a/extra/sample_plugin/app/controllers/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/sample_plugin/app/controllers/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/controllers
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe extra/sample_plugin/app/models/.svn/entries
--- a/extra/sample_plugin/app/models/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/sample_plugin/app/models/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/models
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe extra/sample_plugin/app/views/.svn/entries
--- a/extra/sample_plugin/app/views/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/sample_plugin/app/views/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe extra/sample_plugin/app/views/example/.svn/entries
--- a/extra/sample_plugin/app/views/example/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/sample_plugin/app/views/example/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views/example
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe extra/sample_plugin/app/views/my/.svn/entries
--- a/extra/sample_plugin/app/views/my/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/sample_plugin/app/views/my/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views/my
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe extra/sample_plugin/app/views/my/blocks/.svn/entries
--- a/extra/sample_plugin/app/views/my/blocks/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/sample_plugin/app/views/my/blocks/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views/my/blocks
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe extra/sample_plugin/app/views/settings/.svn/entries
--- a/extra/sample_plugin/app/views/settings/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/sample_plugin/app/views/settings/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views/settings
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe extra/sample_plugin/assets/.svn/entries
--- a/extra/sample_plugin/assets/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/sample_plugin/assets/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/assets
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe extra/sample_plugin/assets/images/.svn/entries
--- a/extra/sample_plugin/assets/images/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/sample_plugin/assets/images/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/assets/images
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe extra/sample_plugin/assets/stylesheets/.svn/entries
--- a/extra/sample_plugin/assets/stylesheets/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/sample_plugin/assets/stylesheets/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/assets/stylesheets
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe extra/sample_plugin/config/.svn/entries
--- a/extra/sample_plugin/config/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/sample_plugin/config/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/config
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe extra/sample_plugin/config/locales/.svn/entries
--- a/extra/sample_plugin/config/locales/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/sample_plugin/config/locales/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/config/locales
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe extra/sample_plugin/db/.svn/entries
--- a/extra/sample_plugin/db/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/sample_plugin/db/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/db
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe extra/sample_plugin/db/migrate/.svn/entries
--- a/extra/sample_plugin/db/migrate/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/sample_plugin/db/migrate/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/db/migrate
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe extra/svn/.svn/all-wcprops
--- a/extra/svn/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/svn/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 34
-/svn/!svn/ver/4309/trunk/extra/svn
+/svn/!svn/ver/4936/trunk/extra/svn
END
reposman.rb
K 25
@@ -19,7 +19,7 @@
K 25
svn:wc:ra_dav:version-url
V 45
-/svn/!svn/ver/4309/trunk/extra/svn/Redmine.pm
+/svn/!svn/ver/4936/trunk/extra/svn/Redmine.pm
END
create_views.sql
K 25
diff -r 8972b600f4fb -r 051f544170fe extra/svn/.svn/entries
--- a/extra/svn/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/svn/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,15 +1,15 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/extra/svn
http://redmine.rubyforge.org/svn
-2010-10-29T22:55:50.222644Z
-4309
-jbbarth
+2011-02-23T17:27:31.762248Z
+4936
+jplang
@@ -100,11 +100,11 @@
-2011-03-03T11:05:22.000000Z
-5ed4546a59c9729cbd9b407ad0996b9b
-2010-10-29T22:55:50.222644Z
-4309
-jbbarth
+2011-03-03T11:40:18.000000Z
+c3d331d6024a3d0f0c250fda387ce052
+2011-02-23T17:27:31.762248Z
+4936
+jplang
has-props
@@ -126,7 +126,7 @@
-10752
+10843
create_views.sql
file
diff -r 8972b600f4fb -r 051f544170fe extra/svn/.svn/text-base/Redmine.pm.svn-base
--- a/extra/svn/.svn/text-base/Redmine.pm.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/svn/.svn/text-base/Redmine.pm.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -148,7 +148,7 @@
my ($self, $parms, $arg) = @_;
$self->{RedmineDSN} = $arg;
my $query = "SELECT
- hashed_password, auth_source_id, permissions
+ hashed_password, salt, auth_source_id, permissions
FROM members, projects, users, roles, member_roles
WHERE
projects.id=members.project_id
@@ -316,11 +316,12 @@
$sth->execute($redmine_user, $project_id);
my $ret;
- while (my ($hashed_password, $auth_source_id, $permissions) = $sth->fetchrow_array) {
+ while (my ($hashed_password, $salt, $auth_source_id, $permissions) = $sth->fetchrow_array) {
unless ($auth_source_id) {
- my $method = $r->method;
- if ($hashed_password eq $pass_digest && ((defined $read_only_methods{$method} && $permissions =~ /:browse_repository/) || $permissions =~ /:commit_access/) ) {
+ my $method = $r->method;
+ my $salted_password = Digest::SHA1::sha1_hex($salt.$pass_digest);
+ if ($hashed_password eq $salted_password && ((defined $read_only_methods{$method} && $permissions =~ /:browse_repository/) || $permissions =~ /:commit_access/) ) {
$ret = 1;
last;
}
diff -r 8972b600f4fb -r 051f544170fe extra/svn/Redmine.pm
--- a/extra/svn/Redmine.pm Thu Mar 03 11:40:10 2011 +0000
+++ b/extra/svn/Redmine.pm Thu Mar 03 11:42:28 2011 +0000
@@ -148,7 +148,7 @@
my ($self, $parms, $arg) = @_;
$self->{RedmineDSN} = $arg;
my $query = "SELECT
- hashed_password, auth_source_id, permissions
+ hashed_password, salt, auth_source_id, permissions
FROM members, projects, users, roles, member_roles
WHERE
projects.id=members.project_id
@@ -316,11 +316,12 @@
$sth->execute($redmine_user, $project_id);
my $ret;
- while (my ($hashed_password, $auth_source_id, $permissions) = $sth->fetchrow_array) {
+ while (my ($hashed_password, $salt, $auth_source_id, $permissions) = $sth->fetchrow_array) {
unless ($auth_source_id) {
- my $method = $r->method;
- if ($hashed_password eq $pass_digest && ((defined $read_only_methods{$method} && $permissions =~ /:browse_repository/) || $permissions =~ /:commit_access/) ) {
+ my $method = $r->method;
+ my $salted_password = Digest::SHA1::sha1_hex($salt.$pass_digest);
+ if ($hashed_password eq $salted_password && ((defined $read_only_methods{$method} && $permissions =~ /:browse_repository/) || $permissions =~ /:commit_access/) ) {
$ret = 1;
last;
}
diff -r 8972b600f4fb -r 051f544170fe files/.svn/entries
--- a/files/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/files/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/files
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe lib/.svn/all-wcprops
--- a/lib/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 28
-/svn/!svn/ver/4797/trunk/lib
+/svn/!svn/ver/4993/trunk/lib
END
faster_csv.rb
K 25
@@ -13,7 +13,7 @@
K 25
svn:wc:ra_dav:version-url
V 39
-/svn/!svn/ver/4466/trunk/lib/redmine.rb
+/svn/!svn/ver/4954/trunk/lib/redmine.rb
END
tabular_form_builder.rb
K 25
diff -r 8972b600f4fb -r 051f544170fe lib/.svn/entries
--- a/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib
http://redmine.rubyforge.org/svn
-2011-02-04T10:24:10.099771Z
-4797
+2011-03-03T05:51:46.224821Z
+4993
tmaruyama
@@ -78,10 +78,10 @@
-2011-03-03T11:05:23.000000Z
-a25bf842b86584d0d77844d95b6ab907
-2010-12-04T17:43:39.823144Z
-4466
+2011-03-03T11:40:18.000000Z
+931d36182ff7c72cf9e133581a6e1822
+2011-02-27T13:34:41.060565Z
+4954
jplang
has-props
@@ -104,7 +104,7 @@
-12841
+12850
tabular_form_builder.rb
file
diff -r 8972b600f4fb -r 051f544170fe lib/.svn/text-base/redmine.rb.svn-base
--- a/lib/.svn/text-base/redmine.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/.svn/text-base/redmine.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -62,7 +62,7 @@
:auto_complete => [:issues],
:context_menus => [:issues],
:versions => [:index, :show, :status_by],
- :journals => :index,
+ :journals => [:index, :diff],
:queries => :index,
:reports => [:issue_report, :issue_report_details]}
map.permission :add_issues, {:issues => [:new, :create, :update_form]}
diff -r 8972b600f4fb -r 051f544170fe lib/SVG/.svn/entries
--- a/lib/SVG/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/SVG/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/SVG
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe lib/SVG/Graph/.svn/entries
--- a/lib/SVG/Graph/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/SVG/Graph/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/SVG/Graph
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe lib/generators/.svn/entries
--- a/lib/generators/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/generators/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/generators
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe lib/generators/redmine_plugin/.svn/entries
--- a/lib/generators/redmine_plugin/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/generators/redmine_plugin/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe lib/generators/redmine_plugin/templates/.svn/entries
--- a/lib/generators/redmine_plugin/templates/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/generators/redmine_plugin/templates/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin/templates
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe lib/generators/redmine_plugin_controller/.svn/entries
--- a/lib/generators/redmine_plugin_controller/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/generators/redmine_plugin_controller/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin_controller
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe lib/generators/redmine_plugin_controller/templates/.svn/entries
--- a/lib/generators/redmine_plugin_controller/templates/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/generators/redmine_plugin_controller/templates/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin_controller/templates
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe lib/generators/redmine_plugin_model/.svn/entries
--- a/lib/generators/redmine_plugin_model/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/generators/redmine_plugin_model/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin_model
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe lib/generators/redmine_plugin_model/templates/.svn/entries
--- a/lib/generators/redmine_plugin_model/templates/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/generators/redmine_plugin_model/templates/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin_model/templates
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe lib/plugins/.svn/entries
--- a/lib/plugins/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/plugins/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/plugins
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe lib/redmine.rb
--- a/lib/redmine.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine.rb Thu Mar 03 11:42:28 2011 +0000
@@ -62,7 +62,7 @@
:auto_complete => [:issues],
:context_menus => [:issues],
:versions => [:index, :show, :status_by],
- :journals => :index,
+ :journals => [:index, :diff],
:queries => :index,
:reports => [:issue_report, :issue_report_details]}
map.permission :add_issues, {:issues => [:new, :create, :update_form]}
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/.svn/all-wcprops
--- a/lib/redmine/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,13 +1,13 @@
K 25
svn:wc:ra_dav:version-url
V 36
-/svn/!svn/ver/4797/trunk/lib/redmine
+/svn/!svn/ver/4993/trunk/lib/redmine
END
i18n.rb
K 25
svn:wc:ra_dav:version-url
V 44
-/svn/!svn/ver/4516/trunk/lib/redmine/i18n.rb
+/svn/!svn/ver/4894/trunk/lib/redmine/i18n.rb
END
pop3.rb
K 25
@@ -15,23 +15,23 @@
V 44
/svn/!svn/ver/4737/trunk/lib/redmine/pop3.rb
END
+safe_attributes.rb
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/!svn/ver/4491/trunk/lib/redmine/safe_attributes.rb
+END
platform.rb
K 25
svn:wc:ra_dav:version-url
V 48
/svn/!svn/ver/1753/trunk/lib/redmine/platform.rb
END
-safe_attributes.rb
+custom_field_format.rb
K 25
svn:wc:ra_dav:version-url
-V 55
-/svn/!svn/ver/4491/trunk/lib/redmine/safe_attributes.rb
-END
-version.rb
-K 25
-svn:wc:ra_dav:version-url
-V 47
-/svn/!svn/ver/4784/trunk/lib/redmine/version.rb
+V 59
+/svn/!svn/ver/3675/trunk/lib/redmine/custom_field_format.rb
END
themes.rb
K 25
@@ -39,11 +39,11 @@
V 46
/svn/!svn/ver/4559/trunk/lib/redmine/themes.rb
END
-custom_field_format.rb
+version.rb
K 25
svn:wc:ra_dav:version-url
-V 59
-/svn/!svn/ver/3675/trunk/lib/redmine/custom_field_format.rb
+V 47
+/svn/!svn/ver/4784/trunk/lib/redmine/version.rb
END
imap.rb
K 25
@@ -63,36 +63,36 @@
V 44
/svn/!svn/ver/2776/trunk/lib/redmine/info.rb
END
+access_keys.rb
+K 25
+svn:wc:ra_dav:version-url
+V 51
+/svn/!svn/ver/1081/trunk/lib/redmine/access_keys.rb
+END
activity.rb
K 25
svn:wc:ra_dav:version-url
V 48
/svn/!svn/ver/1702/trunk/lib/redmine/activity.rb
END
-access_keys.rb
-K 25
-svn:wc:ra_dav:version-url
-V 51
-/svn/!svn/ver/1081/trunk/lib/redmine/access_keys.rb
-END
wiki_formatting.rb
K 25
svn:wc:ra_dav:version-url
V 55
/svn/!svn/ver/3446/trunk/lib/redmine/wiki_formatting.rb
END
+menu_manager.rb
+K 25
+svn:wc:ra_dav:version-url
+V 52
+/svn/!svn/ver/4406/trunk/lib/redmine/menu_manager.rb
+END
plugin.rb
K 25
svn:wc:ra_dav:version-url
V 46
/svn/!svn/ver/4293/trunk/lib/redmine/plugin.rb
END
-menu_manager.rb
-K 25
-svn:wc:ra_dav:version-url
-V 52
-/svn/!svn/ver/4406/trunk/lib/redmine/menu_manager.rb
-END
utils.rb
K 25
svn:wc:ra_dav:version-url
@@ -121,7 +121,7 @@
K 25
svn:wc:ra_dav:version-url
V 53
-/svn/!svn/ver/4752/trunk/lib/redmine/configuration.rb
+/svn/!svn/ver/4949/trunk/lib/redmine/configuration.rb
END
core_ext.rb
K 25
@@ -129,6 +129,12 @@
V 48
/svn/!svn/ver/1361/trunk/lib/redmine/core_ext.rb
END
+ciphering.rb
+K 25
+svn:wc:ra_dav:version-url
+V 49
+/svn/!svn/ver/4950/trunk/lib/redmine/ciphering.rb
+END
about.rb
K 25
svn:wc:ra_dav:version-url
@@ -145,7 +151,7 @@
K 25
svn:wc:ra_dav:version-url
V 52
-/svn/!svn/ver/3028/trunk/lib/redmine/unified_diff.rb
+/svn/!svn/ver/4929/trunk/lib/redmine/unified_diff.rb
END
notifiable.rb
K 25
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/.svn/entries
--- a/lib/redmine/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/redmine
http://redmine.rubyforge.org/svn
-2011-02-04T10:24:10.099771Z
-4797
+2011-03-03T05:51:46.224821Z
+4993
tmaruyama
@@ -316,10 +316,10 @@
-2011-03-03T11:05:23.000000Z
-d5040eb318ca88ba187170e4713bbb27
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:18.000000Z
+2f47dda69333c012a55496a3792c369e
+2011-02-25T14:30:05.998365Z
+4949
jplang
has-props
@@ -342,7 +342,7 @@
-3309
+3639
about.rb
file
@@ -452,10 +452,10 @@
-2011-03-03T11:05:23.000000Z
-009b7a9ada5c3e83d6a7a26256c34951
-2010-12-17T08:34:29.830642Z
-4516
+2011-03-03T11:40:18.000000Z
+cc684405103aabd5f4aea0c21fd7c732
+2011-02-20T14:56:37.399906Z
+4894
jplang
has-props
@@ -478,11 +478,45 @@
-2315
+2255
scm
dir
+safe_attributes.rb
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+7f659c02de1ea89806beda1772dc4d36
+2010-12-12T13:11:53.259618Z
+4491
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2579
+
platform.rb
file
@@ -517,74 +551,6 @@
1009
-safe_attributes.rb
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-7f659c02de1ea89806beda1772dc4d36
-2010-12-12T13:11:53.259618Z
-4491
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-2579
-
-custom_field_format.rb
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-7fd1fcfb204480b0e9903fd03c53a563
-2010-04-16T15:34:05.970144Z
-3675
-edavis10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-2761
-
version.rb
file
@@ -619,6 +585,40 @@
1056
+custom_field_format.rb
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+7fd1fcfb204480b0e9903fd03c53a563
+2010-04-16T15:34:05.970144Z
+3675
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2761
+
mime_type.rb
file
@@ -653,10 +653,10 @@
3498
-views
+wiki_formatting
dir
-wiki_formatting
+views
dir
activity.rb
@@ -727,6 +727,40 @@
4431
+plugin.rb
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+81bc46012d5a0067e18e08bada197d8c
+2010-10-25T23:32:01.793182Z
+4293
+edavis10
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+11219
+
menu_manager.rb
file
@@ -761,40 +795,6 @@
15303
-plugin.rb
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-81bc46012d5a0067e18e08bada197d8c
-2010-10-25T23:32:01.793182Z
-4293
-edavis10
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-11219
-
hook.rb
file
@@ -863,6 +863,40 @@
77
+ciphering.rb
+file
+
+
+
+
+2011-03-03T11:40:18.000000Z
+763ba2f765c62f378371f2472679c464
+2011-02-26T13:09:25.657748Z
+4950
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2933
+
default_data
dir
@@ -872,11 +906,11 @@
-2011-03-03T11:05:23.000000Z
-69c22a4064f90e2ce460a0c9013c7cd0
-2009-11-11T13:25:53.648186Z
-3028
-jplang
+2011-03-03T11:40:18.000000Z
+561d23da6665fb790120f9d59962fb78
+2011-02-23T07:03:45.049119Z
+4929
+tmaruyama
has-props
@@ -898,5 +932,5 @@
-5259
+5678
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/.svn/prop-base/ciphering.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/redmine/.svn/prop-base/ciphering.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:eol-style
+V 6
+native
+END
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/.svn/text-base/ciphering.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/redmine/.svn/text-base/ciphering.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,95 @@
+# Redmine - project management software
+# Copyright (C) 2006-2011 Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+module Redmine
+ module Ciphering
+ def self.included(base)
+ base.extend ClassMethods
+ end
+
+ class << self
+ def encrypt_text(text)
+ if cipher_key.blank?
+ text
+ else
+ c = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
+ iv = c.random_iv
+ c.encrypt
+ c.key = cipher_key
+ c.iv = iv
+ e = c.update(text.to_s)
+ e << c.final
+ "aes-256-cbc:" + [e, iv].map {|v| Base64.encode64(v).strip}.join('--')
+ end
+ end
+
+ def decrypt_text(text)
+ if text && match = text.match(/\Aaes-256-cbc:(.+)\Z/)
+ text = match[1]
+ c = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
+ e, iv = text.split("--").map {|s| Base64.decode64(s)}
+ c.decrypt
+ c.key = cipher_key
+ c.iv = iv
+ d = c.update(e)
+ d << c.final
+ else
+ text
+ end
+ end
+
+ def cipher_key
+ key = Redmine::Configuration['database_cipher_key'].to_s
+ key.blank? ? nil : Digest::SHA256.hexdigest(key)
+ end
+ end
+
+ module ClassMethods
+ def encrypt_all(attribute)
+ transaction do
+ all.each do |object|
+ clear = object.send(attribute)
+ object.send "#{attribute}=", clear
+ raise(ActiveRecord::Rollback) unless object.save(false)
+ end
+ end ? true : false
+ end
+
+ def decrypt_all(attribute)
+ transaction do
+ all.each do |object|
+ clear = object.send(attribute)
+ object.write_attribute attribute, clear
+ raise(ActiveRecord::Rollback) unless object.save(false)
+ end
+ end
+ end ? true : false
+ end
+
+ private
+
+ # Returns the value of the given ciphered attribute
+ def read_ciphered_attribute(attribute)
+ Redmine::Ciphering.decrypt_text(read_attribute(attribute))
+ end
+
+ # Sets the value of the given ciphered attribute
+ def write_ciphered_attribute(attribute, value)
+ write_attribute(attribute, Redmine::Ciphering.encrypt_text(value))
+ end
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/.svn/text-base/configuration.rb.svn-base
--- a/lib/redmine/.svn/text-base/configuration.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/.svn/text-base/configuration.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -66,6 +66,16 @@
@config[name]
end
+ # Yields a block with the specified hash configuration settings
+ def with(settings)
+ settings.stringify_keys!
+ load unless @config
+ was = settings.keys.inject({}) {|h,v| h[v] = @config[v]; h}
+ @config.merge! settings
+ yield if block_given?
+ @config.merge! was
+ end
+
private
def load_from_yaml(filename, env)
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/.svn/text-base/i18n.rb.svn-base
--- a/lib/redmine/.svn/text-base/i18n.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/.svn/text-base/i18n.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -45,8 +45,8 @@
time = time.to_time if time.is_a?(String)
zone = User.current.time_zone
local = zone ? time.in_time_zone(zone) : (time.utc? ? time.localtime : time)
- Setting.time_format.blank? ? ::I18n.l(local, :format => (include_date ? :default : :time)) :
- ((include_date ? "#{format_date(time)} " : "") + "#{local.strftime(Setting.time_format)}")
+ (include_date ? "#{format_date(local)} " : "") +
+ (Setting.time_format.blank? ? ::I18n.l(local, :format => :time) : local.strftime(Setting.time_format))
end
def day_name(day)
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/.svn/text-base/unified_diff.rb.svn-base
--- a/lib/redmine/.svn/text-base/unified_diff.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/.svn/text-base/unified_diff.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -22,13 +22,21 @@
options.assert_valid_keys(:type, :max_lines)
diff = diff.split("\n") if diff.is_a?(String)
diff_type = options[:type] || 'inline'
-
lines = 0
@truncated = false
diff_table = DiffTable.new(diff_type)
diff.each do |line|
+ line_encoding = nil
+ if line.respond_to?(:force_encoding)
+ line_encoding = line.encoding
+ # TODO: UTF-16 and Japanese CP932 which is imcompatible with ASCII
+ # In Japan, diffrence between file path encoding
+ # and file contents encoding is popular.
+ line.force_encoding('ASCII-8BIT')
+ end
unless diff_table.add_line line
- self << diff_table if diff_table.length > 1
+ line.force_encoding(line_encoding) if line_encoding
+ self << diff_table if diff_table.length > 0
diff_table = DiffTable.new(diff_type)
end
lines += 1
@@ -40,7 +48,7 @@
self << diff_table unless diff_table.empty?
self
end
-
+
def truncated?; @truncated; end
end
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/activity/.svn/entries
--- a/lib/redmine/activity/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/activity/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/redmine/activity
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/ciphering.rb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/redmine/ciphering.rb Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,95 @@
+# Redmine - project management software
+# Copyright (C) 2006-2011 Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+module Redmine
+ module Ciphering
+ def self.included(base)
+ base.extend ClassMethods
+ end
+
+ class << self
+ def encrypt_text(text)
+ if cipher_key.blank?
+ text
+ else
+ c = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
+ iv = c.random_iv
+ c.encrypt
+ c.key = cipher_key
+ c.iv = iv
+ e = c.update(text.to_s)
+ e << c.final
+ "aes-256-cbc:" + [e, iv].map {|v| Base64.encode64(v).strip}.join('--')
+ end
+ end
+
+ def decrypt_text(text)
+ if text && match = text.match(/\Aaes-256-cbc:(.+)\Z/)
+ text = match[1]
+ c = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
+ e, iv = text.split("--").map {|s| Base64.decode64(s)}
+ c.decrypt
+ c.key = cipher_key
+ c.iv = iv
+ d = c.update(e)
+ d << c.final
+ else
+ text
+ end
+ end
+
+ def cipher_key
+ key = Redmine::Configuration['database_cipher_key'].to_s
+ key.blank? ? nil : Digest::SHA256.hexdigest(key)
+ end
+ end
+
+ module ClassMethods
+ def encrypt_all(attribute)
+ transaction do
+ all.each do |object|
+ clear = object.send(attribute)
+ object.send "#{attribute}=", clear
+ raise(ActiveRecord::Rollback) unless object.save(false)
+ end
+ end ? true : false
+ end
+
+ def decrypt_all(attribute)
+ transaction do
+ all.each do |object|
+ clear = object.send(attribute)
+ object.write_attribute attribute, clear
+ raise(ActiveRecord::Rollback) unless object.save(false)
+ end
+ end
+ end ? true : false
+ end
+
+ private
+
+ # Returns the value of the given ciphered attribute
+ def read_ciphered_attribute(attribute)
+ Redmine::Ciphering.decrypt_text(read_attribute(attribute))
+ end
+
+ # Sets the value of the given ciphered attribute
+ def write_ciphered_attribute(attribute, value)
+ write_attribute(attribute, Redmine::Ciphering.encrypt_text(value))
+ end
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/configuration.rb
--- a/lib/redmine/configuration.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/configuration.rb Thu Mar 03 11:42:28 2011 +0000
@@ -66,6 +66,16 @@
@config[name]
end
+ # Yields a block with the specified hash configuration settings
+ def with(settings)
+ settings.stringify_keys!
+ load unless @config
+ was = settings.keys.inject({}) {|h,v| h[v] = @config[v]; h}
+ @config.merge! settings
+ yield if block_given?
+ @config.merge! was
+ end
+
private
def load_from_yaml(filename, env)
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/core_ext/.svn/entries
--- a/lib/redmine/core_ext/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/core_ext/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/redmine/core_ext
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/core_ext/string/.svn/entries
--- a/lib/redmine/core_ext/string/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/core_ext/string/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/redmine/core_ext/string
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/default_data/.svn/entries
--- a/lib/redmine/default_data/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/default_data/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/redmine/default_data
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/export/.svn/entries
--- a/lib/redmine/export/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/export/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/redmine/export
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/helpers/.svn/all-wcprops
--- a/lib/redmine/helpers/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/helpers/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,13 +1,19 @@
K 25
svn:wc:ra_dav:version-url
V 44
-/svn/!svn/ver/4782/trunk/lib/redmine/helpers
+/svn/!svn/ver/4968/trunk/lib/redmine/helpers
END
gantt.rb
K 25
svn:wc:ra_dav:version-url
V 53
-/svn/!svn/ver/4782/trunk/lib/redmine/helpers/gantt.rb
+/svn/!svn/ver/4968/trunk/lib/redmine/helpers/gantt.rb
+END
+diff.rb
+K 25
+svn:wc:ra_dav:version-url
+V 52
+/svn/!svn/ver/4953/trunk/lib/redmine/helpers/diff.rb
END
calendar.rb
K 25
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/helpers/.svn/entries
--- a/lib/redmine/helpers/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/helpers/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/redmine/helpers
http://redmine.rubyforge.org/svn
-2011-01-30T09:09:50.276451Z
-4782
+2011-02-28T20:23:28.847227Z
+4968
jplang
@@ -32,10 +32,10 @@
-2011-03-03T11:05:23.000000Z
-2c61985f04e8f13965fd9880ff9ad5dc
-2011-01-30T09:09:50.276451Z
-4782
+2011-03-03T11:40:18.000000Z
+b06b1d003a56093679e3004b619b0e04
+2011-02-28T20:23:28.847227Z
+4968
jplang
has-props
@@ -58,7 +58,41 @@
-32266
+32380
+
+diff.rb
+file
+
+
+
+
+2011-03-03T11:40:18.000000Z
+a3487dfca2baab10aacea141b7c0fc5f
+2011-02-27T12:50:47.369941Z
+4953
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2408
calendar.rb
file
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/helpers/.svn/prop-base/diff.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/redmine/helpers/.svn/prop-base/diff.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:eol-style
+V 6
+native
+END
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/helpers/.svn/text-base/diff.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/redmine/helpers/.svn/text-base/diff.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,72 @@
+# Redmine - project management software
+# Copyright (C) 2006-2011 Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+module Redmine
+ module Helpers
+ class Diff
+ include ERB::Util
+ include ActionView::Helpers::TagHelper
+ include ActionView::Helpers::TextHelper
+ attr_reader :diff, :words
+
+ def initialize(content_to, content_from)
+ @words = content_to.to_s.split(/(\s+)/)
+ @words = @words.select {|word| word != ' '}
+ words_from = content_from.to_s.split(/(\s+)/)
+ words_from = words_from.select {|word| word != ' '}
+ @diff = words_from.diff @words
+ end
+
+ def to_html
+ words = self.words.collect{|word| h(word)}
+ words_add = 0
+ words_del = 0
+ dels = 0
+ del_off = 0
+ diff.diffs.each do |diff|
+ add_at = nil
+ add_to = nil
+ del_at = nil
+ deleted = ""
+ diff.each do |change|
+ pos = change[1]
+ if change[0] == "+"
+ add_at = pos + dels unless add_at
+ add_to = pos + dels
+ words_add += 1
+ else
+ del_at = pos unless del_at
+ deleted << ' ' + h(change[2])
+ words_del += 1
+ end
+ end
+ if add_at
+ words[add_at] = '' + words[add_at]
+ words[add_to] = words[add_to] + ''
+ end
+ if del_at
+ words.insert del_at - del_off + dels + words_add, '' + deleted + ''
+ dels += 1
+ del_off += words_del
+ words_del = 0
+ end
+ end
+ words.join(' ')
+ end
+ end
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/helpers/.svn/text-base/gantt.rb.svn-base
--- a/lib/redmine/helpers/.svn/text-base/gantt.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/helpers/.svn/text-base/gantt.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -353,11 +353,11 @@
subject = ""
if issue.assigned_to.present?
assigned_string = l(:field_assigned_to) + ": " + issue.assigned_to.name
- subject << view.avatar(issue.assigned_to, :class => 'gravatar icon-gravatar', :size => 10, :title => assigned_string)
+ subject << view.avatar(issue.assigned_to, :class => 'gravatar icon-gravatar', :size => 10, :title => assigned_string).to_s
end
subject << view.link_to_issue(issue)
subject << ''
- html_subject(options, subject, :css => "issue-subject") + "\n"
+ html_subject(options, subject, :css => "issue-subject", :title => issue.subject) + "\n"
when :image
image_subject(options, issue.subject)
when :pdf
@@ -709,9 +709,10 @@
end
def html_subject(params, subject, options={})
- output = ""
- output << subject
- output << "
"
+ style = "position: absolute;top:#{params[:top]}px;left:#{params[:indent]}px;"
+ style << "width:#{params[:subject_width] - params[:indent]}px;" if params[:subject_width]
+
+ output = view.content_tag 'div', subject, :class => options[:css], :style => style, :title => options[:title]
@subjects << output
output
end
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/helpers/diff.rb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/redmine/helpers/diff.rb Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,72 @@
+# Redmine - project management software
+# Copyright (C) 2006-2011 Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+module Redmine
+ module Helpers
+ class Diff
+ include ERB::Util
+ include ActionView::Helpers::TagHelper
+ include ActionView::Helpers::TextHelper
+ attr_reader :diff, :words
+
+ def initialize(content_to, content_from)
+ @words = content_to.to_s.split(/(\s+)/)
+ @words = @words.select {|word| word != ' '}
+ words_from = content_from.to_s.split(/(\s+)/)
+ words_from = words_from.select {|word| word != ' '}
+ @diff = words_from.diff @words
+ end
+
+ def to_html
+ words = self.words.collect{|word| h(word)}
+ words_add = 0
+ words_del = 0
+ dels = 0
+ del_off = 0
+ diff.diffs.each do |diff|
+ add_at = nil
+ add_to = nil
+ del_at = nil
+ deleted = ""
+ diff.each do |change|
+ pos = change[1]
+ if change[0] == "+"
+ add_at = pos + dels unless add_at
+ add_to = pos + dels
+ words_add += 1
+ else
+ del_at = pos unless del_at
+ deleted << ' ' + h(change[2])
+ words_del += 1
+ end
+ end
+ if add_at
+ words[add_at] = '' + words[add_at]
+ words[add_to] = words[add_to] + ''
+ end
+ if del_at
+ words.insert del_at - del_off + dels + words_add, '' + deleted + ''
+ dels += 1
+ del_off += words_del
+ words_del = 0
+ end
+ end
+ words.join(' ')
+ end
+ end
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/helpers/gantt.rb
--- a/lib/redmine/helpers/gantt.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/helpers/gantt.rb Thu Mar 03 11:42:28 2011 +0000
@@ -353,11 +353,11 @@
subject = ""
if issue.assigned_to.present?
assigned_string = l(:field_assigned_to) + ": " + issue.assigned_to.name
- subject << view.avatar(issue.assigned_to, :class => 'gravatar icon-gravatar', :size => 10, :title => assigned_string)
+ subject << view.avatar(issue.assigned_to, :class => 'gravatar icon-gravatar', :size => 10, :title => assigned_string).to_s
end
subject << view.link_to_issue(issue)
subject << ''
- html_subject(options, subject, :css => "issue-subject") + "\n"
+ html_subject(options, subject, :css => "issue-subject", :title => issue.subject) + "\n"
when :image
image_subject(options, issue.subject)
when :pdf
@@ -709,9 +709,10 @@
end
def html_subject(params, subject, options={})
- output = ""
- output << subject
- output << "
"
+ style = "position: absolute;top:#{params[:top]}px;left:#{params[:indent]}px;"
+ style << "width:#{params[:subject_width] - params[:indent]}px;" if params[:subject_width]
+
+ output = view.content_tag 'div', subject, :class => options[:css], :style => style, :title => options[:title]
@subjects << output
output
end
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/i18n.rb
--- a/lib/redmine/i18n.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/i18n.rb Thu Mar 03 11:42:28 2011 +0000
@@ -45,8 +45,8 @@
time = time.to_time if time.is_a?(String)
zone = User.current.time_zone
local = zone ? time.in_time_zone(zone) : (time.utc? ? time.localtime : time)
- Setting.time_format.blank? ? ::I18n.l(local, :format => (include_date ? :default : :time)) :
- ((include_date ? "#{format_date(time)} " : "") + "#{local.strftime(Setting.time_format)}")
+ (include_date ? "#{format_date(local)} " : "") +
+ (Setting.time_format.blank? ? ::I18n.l(local, :format => :time) : local.strftime(Setting.time_format))
end
def day_name(day)
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/.svn/all-wcprops
--- a/lib/redmine/scm/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/scm/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 40
-/svn/!svn/ver/4797/trunk/lib/redmine/scm
+/svn/!svn/ver/4993/trunk/lib/redmine/scm
END
base.rb
K 25
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/.svn/entries
--- a/lib/redmine/scm/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/scm/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/redmine/scm
http://redmine.rubyforge.org/svn
-2011-02-04T10:24:10.099771Z
-4797
+2011-03-03T05:51:46.224821Z
+4993
tmaruyama
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/.svn/all-wcprops
--- a/lib/redmine/scm/adapters/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/scm/adapters/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,53 +1,53 @@
K 25
svn:wc:ra_dav:version-url
V 49
-/svn/!svn/ver/4797/trunk/lib/redmine/scm/adapters
+/svn/!svn/ver/4993/trunk/lib/redmine/scm/adapters
END
subversion_adapter.rb
K 25
svn:wc:ra_dav:version-url
V 71
-/svn/!svn/ver/4797/trunk/lib/redmine/scm/adapters/subversion_adapter.rb
+/svn/!svn/ver/4993/trunk/lib/redmine/scm/adapters/subversion_adapter.rb
END
bazaar_adapter.rb
K 25
svn:wc:ra_dav:version-url
V 67
-/svn/!svn/ver/4797/trunk/lib/redmine/scm/adapters/bazaar_adapter.rb
+/svn/!svn/ver/4992/trunk/lib/redmine/scm/adapters/bazaar_adapter.rb
END
abstract_adapter.rb
K 25
svn:wc:ra_dav:version-url
V 69
-/svn/!svn/ver/4613/trunk/lib/redmine/scm/adapters/abstract_adapter.rb
+/svn/!svn/ver/4959/trunk/lib/redmine/scm/adapters/abstract_adapter.rb
END
git_adapter.rb
K 25
svn:wc:ra_dav:version-url
V 64
-/svn/!svn/ver/4797/trunk/lib/redmine/scm/adapters/git_adapter.rb
+/svn/!svn/ver/4992/trunk/lib/redmine/scm/adapters/git_adapter.rb
END
mercurial_adapter.rb
K 25
svn:wc:ra_dav:version-url
V 70
-/svn/!svn/ver/4797/trunk/lib/redmine/scm/adapters/mercurial_adapter.rb
+/svn/!svn/ver/4993/trunk/lib/redmine/scm/adapters/mercurial_adapter.rb
END
filesystem_adapter.rb
K 25
svn:wc:ra_dav:version-url
V 71
-/svn/!svn/ver/1510/trunk/lib/redmine/scm/adapters/filesystem_adapter.rb
+/svn/!svn/ver/4941/trunk/lib/redmine/scm/adapters/filesystem_adapter.rb
END
cvs_adapter.rb
K 25
svn:wc:ra_dav:version-url
V 64
-/svn/!svn/ver/4797/trunk/lib/redmine/scm/adapters/cvs_adapter.rb
+/svn/!svn/ver/4992/trunk/lib/redmine/scm/adapters/cvs_adapter.rb
END
darcs_adapter.rb
K 25
svn:wc:ra_dav:version-url
V 66
-/svn/!svn/ver/4797/trunk/lib/redmine/scm/adapters/darcs_adapter.rb
+/svn/!svn/ver/4992/trunk/lib/redmine/scm/adapters/darcs_adapter.rb
END
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/.svn/entries
--- a/lib/redmine/scm/adapters/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/scm/adapters/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/redmine/scm/adapters
http://redmine.rubyforge.org/svn
-2011-02-04T10:24:10.099771Z
-4797
+2011-03-03T05:51:46.224821Z
+4993
tmaruyama
@@ -32,10 +32,10 @@
-2011-03-03T11:05:23.000000Z
-8435e09135c73a27534e626ffa21139c
-2011-02-04T10:24:10.099771Z
-4797
+2011-03-03T11:40:18.000000Z
+7e0b7e8a12996f271854b48e2d7611e4
+2011-03-03T05:51:46.224821Z
+4993
tmaruyama
@@ -58,7 +58,7 @@
-10793
+11535
bazaar_adapter.rb
file
@@ -66,10 +66,10 @@
-2011-03-03T11:05:23.000000Z
-215a6667fc0893c697388b6351e170f9
-2011-02-04T10:24:10.099771Z
-4797
+2011-03-03T11:40:18.000000Z
+2614557fb37905301939071ec226fe16
+2011-03-03T05:32:33.802461Z
+4992
tmaruyama
has-props
@@ -92,7 +92,7 @@
-7400
+8274
mercurial
dir
@@ -103,10 +103,10 @@
-2011-03-03T11:05:23.000000Z
-b63a1e9ae95a7fb7c053bc363cf6672b
-2011-01-02T09:45:05.291687Z
-4613
+2011-03-03T11:40:18.000000Z
+5cc0323dd42df9a3377099b0fdf9e95f
+2011-02-28T04:46:42.639929Z
+4959
tmaruyama
has-props
@@ -129,7 +129,7 @@
-9889
+9832
git_adapter.rb
file
@@ -137,10 +137,10 @@
-2011-03-03T11:05:23.000000Z
-f4e47a55981d092307fda1755aa76af7
-2011-02-04T10:24:10.099771Z
-4797
+2011-03-03T11:40:18.000000Z
+ba10ae64fed2363f2533aa558752be37
+2011-03-03T05:32:33.802461Z
+4992
tmaruyama
has-props
@@ -163,7 +163,7 @@
-10147
+11905
mercurial_adapter.rb
file
@@ -171,10 +171,10 @@
-2011-03-03T11:05:23.000000Z
-65d72801f3587acd03e0c83201f46e1f
-2011-02-04T10:24:10.099771Z
-4797
+2011-03-03T11:40:18.000000Z
+fe99380d7b29fe936554e10293751813
+2011-03-03T05:51:46.224821Z
+4993
tmaruyama
has-props
@@ -197,7 +197,7 @@
-8662
+11159
filesystem_adapter.rb
file
@@ -205,11 +205,11 @@
-2011-03-03T11:05:23.000000Z
-5f311f051bcb17a87475757807f8a63e
-2008-06-08T15:44:23.440995Z
-1510
-jplang
+2011-03-03T11:40:18.000000Z
+4acd04cfa5dac0e54a35b8ef4a565217
+2011-02-24T05:58:59.661399Z
+4941
+tmaruyama
has-props
@@ -231,7 +231,7 @@
-3509
+4266
cvs_adapter.rb
file
@@ -239,10 +239,10 @@
-2011-03-03T11:05:23.000000Z
-0e124e1908ef1c6ae98ae8086562f960
-2011-02-04T10:24:10.099771Z
-4797
+2011-03-03T11:40:18.000000Z
+a3914eff33df4b5a05a108945137360b
+2011-03-03T05:32:33.802461Z
+4992
tmaruyama
has-props
@@ -265,7 +265,7 @@
-13743
+14573
darcs_adapter.rb
file
@@ -273,10 +273,10 @@
-2011-03-03T11:05:23.000000Z
-ac48aa0ac0732d1cc698484e7a40b356
-2011-02-04T10:24:10.099771Z
-4797
+2011-03-03T11:40:18.000000Z
+23725596dd2797f4dcdd5336e715c59a
+2011-03-03T05:32:33.802461Z
+4992
tmaruyama
has-props
@@ -299,5 +299,5 @@
-8564
+8925
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/.svn/text-base/abstract_adapter.rb.svn-base
--- a/lib/redmine/scm/adapters/.svn/text-base/abstract_adapter.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/scm/adapters/.svn/text-base/abstract_adapter.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -19,25 +19,29 @@
module Redmine
module Scm
- module Adapters
+ module Adapters
class CommandFailed < StandardError #:nodoc:
end
-
+
class AbstractAdapter #:nodoc:
class << self
+ def client_command
+ ""
+ end
+
# Returns the version of the scm client
# Eg: [1, 5, 0] or [] if unknown
def client_version
[]
end
-
+
# Returns the version string of the scm client
# Eg: '1.5.0' or 'Unknown version' if unknown
def client_version_string
v = client_version || 'Unknown version'
v.is_a?(Array) ? v.join('.') : v.to_s
end
-
+
# Returns true if the current client version is above
# or equals the given one
# If option is :unknown is set to true, it will return
@@ -45,19 +49,32 @@
def client_version_above?(v, options={})
((client_version <=> v) >= 0) || (client_version.empty? && options[:unknown])
end
+
+ def client_available
+ true
+ end
+
+ def shell_quote(str)
+ if Redmine::Platform.mswin?
+ '"' + str.gsub(/"/, '\\"') + '"'
+ else
+ "'" + str.gsub(/'/, "'\"'\"'") + "'"
+ end
+ end
end
-
- def initialize(url, root_url=nil, login=nil, password=nil)
+
+ def initialize(url, root_url=nil, login=nil, password=nil,
+ path_encoding=nil)
@url = url
@login = login if login && !login.empty?
@password = (password || "") if @login
@root_url = root_url.blank? ? retrieve_root_url : root_url
end
-
+
def adapter_name
'Abstract'
end
-
+
def supports_cat?
true
end
@@ -65,11 +82,11 @@
def supports_annotate?
respond_to?('annotate')
end
-
+
def root_url
@root_url
end
-
+
def url
@url
end
@@ -138,7 +155,7 @@
path ||= ''
(path[-1,1] == "/") ? path : "#{path}/"
end
-
+
def without_leading_slash(path)
path ||= ''
path.gsub(%r{^/+}, '')
@@ -148,13 +165,9 @@
path ||= ''
(path[-1,1] == "/") ? path[0..-2] : path
end
-
+
def shell_quote(str)
- if Redmine::Platform.mswin?
- '"' + str.gsub(/"/, '\\"') + '"'
- else
- "'" + str.gsub(/'/, "'\"'\"'") + "'"
- end
+ self.class.shell_quote(str)
end
private
@@ -168,19 +181,19 @@
base = path.match(/^\//) ? root_url : url
shell_quote("#{base}/#{path}".gsub(/[?<>\*]/, ''))
end
-
+
def logger
self.class.logger
end
-
+
def shellout(cmd, &block)
self.class.shellout(cmd, &block)
end
-
+
def self.logger
RAILS_DEFAULT_LOGGER
end
-
+
def self.shellout(cmd, &block)
logger.debug "Shelling out: #{strip_credential(cmd)}" if logger && logger.debug?
if Rails.env == 'development'
@@ -188,7 +201,12 @@
cmd = "#{cmd} 2>>#{RAILS_ROOT}/log/scm.stderr.log"
end
begin
- IO.popen(cmd, "r+") do |io|
+ if RUBY_VERSION < '1.9'
+ mode = "r+"
+ else
+ mode = "r+:ASCII-8BIT"
+ end
+ IO.popen(cmd, mode) do |io|
io.close_write
block.call(io) if block_given?
end
@@ -198,8 +216,8 @@
logger.error("SCM command failed, make sure that your SCM binary (eg. svn) is in PATH (#{ENV['PATH']}): #{strip_credential(cmd)}\n with: #{msg}")
raise CommandFailed.new(msg)
end
- end
-
+ end
+
# Hides username/password in a given command
def self.strip_credential(cmd)
q = (Redmine::Platform.mswin? ? '"' : "'")
@@ -209,8 +227,19 @@
def strip_credential(cmd)
self.class.strip_credential(cmd)
end
+
+ def scm_iconv(to, from, str)
+ return nil if str.nil?
+ return str if to == from
+ begin
+ Iconv.conv(to, from, str)
+ rescue Iconv::Failure => err
+ logger.error("failed to convert from #{from} to #{to}. #{err}")
+ nil
+ end
+ end
end
-
+
class Entries < Array
def sort_by_name
sort {|x,y|
@@ -219,7 +248,7 @@
else
x.kind <=> y.kind
end
- }
+ }
end
def revisions
@@ -295,29 +324,8 @@
def format_identifier
identifier
end
+ end
- def save(repo)
- Changeset.transaction do
- changeset = Changeset.new(
- :repository => repo,
- :revision => identifier,
- :scmid => scmid,
- :committer => author,
- :committed_on => time,
- :comments => message)
-
- if changeset.save
- paths.each do |file|
- Change.create(
- :changeset => changeset,
- :action => file[:action],
- :path => file[:path])
- end
- end
- end
- end
- end
-
class Annotate
attr_reader :lines, :revisions
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/.svn/text-base/bazaar_adapter.rb.svn-base
--- a/lib/redmine/scm/adapters/.svn/text-base/bazaar_adapter.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/scm/adapters/.svn/text-base/bazaar_adapter.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -19,15 +19,47 @@
module Redmine
module Scm
- module Adapters
+ module Adapters
class BazaarAdapter < AbstractAdapter
-
+
# Bazaar executable name
BZR_BIN = Redmine::Configuration['scm_bazaar_command'] || "bzr"
-
+
+ class << self
+ def client_command
+ @@bin ||= BZR_BIN
+ end
+
+ def sq_bin
+ @@sq_bin ||= shell_quote(BZR_BIN)
+ end
+
+ def client_version
+ @@client_version ||= (scm_command_version || [])
+ end
+
+ def client_available
+ !client_version.empty?
+ end
+
+ def scm_command_version
+ scm_version = scm_version_from_command_line.dup
+ if scm_version.respond_to?(:force_encoding)
+ scm_version.force_encoding('ASCII-8BIT')
+ end
+ if m = scm_version.match(%r{\A(.*?)((\d+\.)+\d+)})
+ m[2].scan(%r{\d+}).collect(&:to_i)
+ end
+ end
+
+ def scm_version_from_command_line
+ shellout("#{sq_bin} --version") { |io| io.read }.to_s
+ end
+ end
+
# Get info about the repository
def info
- cmd = "#{BZR_BIN} revno #{target('')}"
+ cmd = "#{self.class.sq_bin} revno #{target('')}"
info = nil
shellout(cmd) do |io|
if io.read =~ %r{^(\d+)\r?$}
@@ -43,13 +75,13 @@
rescue CommandFailed
return nil
end
-
+
# Returns an Entries collection
# or nil if the given path doesn't exist in the repository
def entries(path=nil, identifier=nil)
path ||= ''
entries = Entries.new
- cmd = "#{BZR_BIN} ls -v --show-ids"
+ cmd = "#{self.class.sq_bin} ls -v --show-ids"
identifier = -1 unless identifier && identifier.to_i > 0
cmd << " -r#{identifier.to_i}"
cmd << " #{target(path)}"
@@ -71,13 +103,13 @@
logger.debug("Found #{entries.size} entries in the repository for #{target(path)}") if logger && logger.debug?
entries.sort_by_name
end
-
+
def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={})
path ||= ''
identifier_from = (identifier_from and identifier_from.to_i > 0) ? identifier_from.to_i : 'last:1'
identifier_to = (identifier_to and identifier_to.to_i > 0) ? identifier_to.to_i : 1
revisions = Revisions.new
- cmd = "#{BZR_BIN} log -v --show-ids -r#{identifier_to}..#{identifier_from} #{target(path)}"
+ cmd = "#{self.class.sq_bin} log -v --show-ids -r#{identifier_to}..#{identifier_from} #{target(path)}"
shellout(cmd) do |io|
revision = nil
parsing = nil
@@ -132,7 +164,7 @@
return nil if $? && $?.exitstatus != 0
revisions
end
-
+
def diff(path, identifier_from, identifier_to=nil)
path ||= ''
if identifier_to
@@ -143,7 +175,7 @@
if identifier_from
identifier_from = identifier_from.to_i
end
- cmd = "#{BZR_BIN} diff -r#{identifier_to}..#{identifier_from} #{target(path)}"
+ cmd = "#{self.class.sq_bin} diff -r#{identifier_to}..#{identifier_from} #{target(path)}"
diff = []
shellout(cmd) do |io|
io.each_line do |line|
@@ -153,9 +185,9 @@
#return nil if $? && $?.exitstatus != 0
diff
end
-
+
def cat(path, identifier=nil)
- cmd = "#{BZR_BIN} cat"
+ cmd = "#{self.class.sq_bin} cat"
cmd << " -r#{identifier.to_i}" if identifier && identifier.to_i > 0
cmd << " #{target(path)}"
cat = nil
@@ -166,9 +198,9 @@
return nil if $? && $?.exitstatus != 0
cat
end
-
+
def annotate(path, identifier=nil)
- cmd = "#{BZR_BIN} annotate --all"
+ cmd = "#{self.class.sq_bin} annotate --all"
cmd << " -r#{identifier.to_i}" if identifier && identifier.to_i > 0
cmd << " #{target(path)}"
blame = Annotate.new
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/.svn/text-base/cvs_adapter.rb.svn-base
--- a/lib/redmine/scm/adapters/.svn/text-base/cvs_adapter.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/scm/adapters/.svn/text-base/cvs_adapter.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -24,13 +24,46 @@
# CVS executable name
CVS_BIN = Redmine::Configuration['scm_cvs_command'] || "cvs"
-
+
+ class << self
+ def client_command
+ @@bin ||= CVS_BIN
+ end
+
+ def sq_bin
+ @@sq_bin ||= shell_quote(CVS_BIN)
+ end
+
+ def client_version
+ @@client_version ||= (scm_command_version || [])
+ end
+
+ def client_available
+ client_version_above?([1, 12])
+ end
+
+ def scm_command_version
+ scm_version = scm_version_from_command_line.dup
+ if scm_version.respond_to?(:force_encoding)
+ scm_version.force_encoding('ASCII-8BIT')
+ end
+ if m = scm_version.match(%r{\A(.*?)((\d+\.)+\d+)}m)
+ m[2].scan(%r{\d+}).collect(&:to_i)
+ end
+ end
+
+ def scm_version_from_command_line
+ shellout("#{sq_bin} --version") { |io| io.read }.to_s
+ end
+ end
+
# Guidelines for the input:
# url -> the project-path, relative to the cvsroot (eg. module name)
# root_url -> the good old, sometimes damned, CVSROOT
# login -> unnecessary
# password -> unnecessary too
- def initialize(url, root_url=nil, login=nil, password=nil)
+ def initialize(url, root_url=nil, login=nil, password=nil,
+ path_encoding=nil)
@url = url
@login = login if login && !login.empty?
@password = (password || "") if @login
@@ -38,24 +71,24 @@
raise CommandFailed if root_url.blank?
@root_url = root_url
end
-
+
def root_url
@root_url
end
-
+
def url
@url
end
-
+
def info
logger.debug " info"
Info.new({:root_url => @root_url, :lastrev => nil})
end
-
+
def get_previous_revision(revision)
CvsRevisionHelper.new(revision).prevRev
end
-
+
# Returns an Entries collection
# or nil if the given path doesn't exist in the repository
# this method is used by the repository-browser (aka LIST)
@@ -63,14 +96,14 @@
logger.debug " entries '#{path}' with identifier '#{identifier}'"
path_with_project="#{url}#{with_leading_slash(path)}"
entries = Entries.new
- cmd = "#{CVS_BIN} -d #{shell_quote root_url} rls -e"
+ cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rls -e"
cmd << " -D \"#{time_to_cvstime(identifier)}\"" if identifier
cmd << " #{shell_quote path_with_project}"
shellout(cmd) do |io|
io.each_line(){|line|
fields=line.chop.split('/',-1)
logger.debug(">>InspectLine #{fields.inspect}")
-
+
if fields[0]!="D"
entries << Entry.new({:name => fields[-5],
#:path => fields[-4].include?(path)?fields[-4]:(path + "/"+ fields[-4]),
@@ -96,19 +129,19 @@
end
return nil if $? && $?.exitstatus != 0
entries.sort_by_name
- end
+ end
STARTLOG="----------------------------"
ENDLOG ="============================================================================="
-
+
# Returns all revisions found between identifier_from and identifier_to
# in the repository. both identifier have to be dates or nil.
# these method returns nothing but yield every result in block
def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}, &block)
logger.debug " revisions path:'#{path}',identifier_from #{identifier_from}, identifier_to #{identifier_to}"
-
+
path_with_project="#{url}#{with_leading_slash(path)}"
- cmd = "#{CVS_BIN} -d #{shell_quote root_url} rlog"
+ cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rlog"
cmd << " -d\">#{time_to_cvstime_rlog(identifier_from)}\"" if identifier_from
cmd << " #{shell_quote path_with_project}"
shellout(cmd) do |io|
@@ -123,7 +156,7 @@
file_state=nil
branch_map=nil
- io.each_line() do |line|
+ io.each_line() do |line|
if state!="revision" && /^#{ENDLOG}/ =~ line
commit_log=String.new
@@ -162,9 +195,9 @@
end
next
elsif state=="revision"
- if /^#{ENDLOG}/ =~ line || /^#{STARTLOG}/ =~ line
+ if /^#{ENDLOG}/ =~ line || /^#{STARTLOG}/ =~ line
if revision
-
+
revHelper=CvsRevisionHelper.new(revision)
revBranch="HEAD"
@@ -176,7 +209,7 @@
logger.debug("********** YIELD Revision #{revision}::#{revBranch}")
- yield Revision.new({
+ yield Revision.new({
:time => date,
:author => author,
:message=>commit_log.chomp,
@@ -188,9 +221,9 @@
:kind=>'file',
:action=>file_state
}]
- })
+ })
end
-
+
commit_log=String.new
revision=nil
@@ -199,7 +232,7 @@
end
next
end
-
+
if /^branches: (.+)$/ =~ line
#TODO: version.branch = $1
elsif /^revision (\d+(?:\.\d+)+).*$/ =~ line
@@ -216,20 +249,20 @@
# version.line_minus = linechanges[2]
# else
# version.line_plus = 0
- # version.line_minus = 0
- # end
- else
+ # version.line_minus = 0
+ # end
+ else
commit_log << line unless line =~ /^\*\*\* empty log message \*\*\*/
- end
- end
+ end
+ end
end
end
- end
-
+ end
+
def diff(path, identifier_from, identifier_to=nil)
logger.debug " diff path:'#{path}',identifier_from #{identifier_from}, identifier_to #{identifier_to}"
path_with_project="#{url}#{with_leading_slash(path)}"
- cmd = "#{CVS_BIN} -d #{shell_quote root_url} rdiff -u -r#{identifier_to} -r#{identifier_from} #{shell_quote path_with_project}"
+ cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rdiff -u -r#{identifier_to} -r#{identifier_from} #{shell_quote path_with_project}"
diff = []
shellout(cmd) do |io|
io.each_line do |line|
@@ -238,28 +271,29 @@
end
return nil if $? && $?.exitstatus != 0
diff
- end
-
+ end
+
def cat(path, identifier=nil)
identifier = (identifier) ? identifier : "HEAD"
logger.debug " cat path:'#{path}',identifier #{identifier}"
path_with_project="#{url}#{with_leading_slash(path)}"
- cmd = "#{CVS_BIN} -d #{shell_quote root_url} co"
+ cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} co"
cmd << " -D \"#{time_to_cvstime(identifier)}\"" if identifier
cmd << " -p #{shell_quote path_with_project}"
cat = nil
shellout(cmd) do |io|
+ io.binmode
cat = io.read
end
return nil if $? && $?.exitstatus != 0
cat
- end
+ end
def annotate(path, identifier=nil)
identifier = (identifier) ? identifier.to_i : "HEAD"
logger.debug " annotate path:'#{path}',identifier #{identifier}"
path_with_project="#{url}#{with_leading_slash(path)}"
- cmd = "#{CVS_BIN} -d #{shell_quote root_url} rannotate -r#{identifier} #{shell_quote path_with_project}"
+ cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rannotate -r#{identifier} #{shell_quote path_with_project}"
blame = Annotate.new
shellout(cmd) do |io|
io.each_line do |line|
@@ -270,9 +304,9 @@
return nil if $? && $?.exitstatus != 0
blame
end
-
+
private
-
+
# Returns the root url without the connexion string
# :pserver:anonymous@foo.bar:/path => /path
# :ext:cvsservername:/path => /path
@@ -345,7 +379,11 @@
private
def buildRevision(rev)
if rev== 0
- @base
+ if @branchid.nil?
+ @base+".0"
+ else
+ @base
+ end
elsif @branchid.nil?
@base+"."+rev.to_s
else
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/.svn/text-base/darcs_adapter.rb.svn-base
--- a/lib/redmine/scm/adapters/.svn/text-base/darcs_adapter.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/scm/adapters/.svn/text-base/darcs_adapter.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -20,29 +20,45 @@
module Redmine
module Scm
- module Adapters
- class DarcsAdapter < AbstractAdapter
+ module Adapters
+ class DarcsAdapter < AbstractAdapter
# Darcs executable name
DARCS_BIN = Redmine::Configuration['scm_darcs_command'] || "darcs"
-
+
class << self
+ def client_command
+ @@bin ||= DARCS_BIN
+ end
+
+ def sq_bin
+ @@sq_bin ||= shell_quote(DARCS_BIN)
+ end
+
def client_version
@@client_version ||= (darcs_binary_version || [])
end
-
+
+ def client_available
+ !client_version.empty?
+ end
+
def darcs_binary_version
- darcsversion = darcs_binary_version_from_command_line
+ darcsversion = darcs_binary_version_from_command_line.dup
+ if darcsversion.respond_to?(:force_encoding)
+ darcsversion.force_encoding('ASCII-8BIT')
+ end
if m = darcsversion.match(%r{\A(.*?)((\d+\.)+\d+)})
m[2].scan(%r{\d+}).collect(&:to_i)
end
end
def darcs_binary_version_from_command_line
- shellout("#{DARCS_BIN} --version") { |io| io.read }.to_s
+ shellout("#{sq_bin} --version") { |io| io.read }.to_s
end
end
- def initialize(url, root_url=nil, login=nil, password=nil)
+ def initialize(url, root_url=nil, login=nil, password=nil,
+ path_encoding=nil)
@url = url
@root_url = url
end
@@ -57,7 +73,7 @@
rev = revisions(nil,nil,nil,{:limit => 1})
rev ? Info.new({:root_url => @url, :lastrev => rev.last}) : nil
end
-
+
# Returns an Entries collection
# or nil if the given path doesn't exist in the repository
def entries(path=nil, identifier=nil)
@@ -65,8 +81,8 @@
if path.blank?
path = ( self.class.client_version_above?([2, 2, 0]) ? @url : '.' )
end
- entries = Entries.new
- cmd = "#{DARCS_BIN} annotate --repodir #{shell_quote @url} --xml-output"
+ entries = Entries.new
+ cmd = "#{self.class.sq_bin} annotate --repodir #{shell_quote @url} --xml-output"
cmd << " --match #{shell_quote("hash #{identifier}")}" if identifier
cmd << " #{shell_quote path}"
shellout(cmd) do |io|
@@ -86,11 +102,11 @@
return nil if $? && $?.exitstatus != 0
entries.compact.sort_by_name
end
-
+
def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={})
path = '.' if path.blank?
revisions = Revisions.new
- cmd = "#{DARCS_BIN} changes --repodir #{shell_quote @url} --xml-output"
+ cmd = "#{self.class.sq_bin} changes --repodir #{shell_quote @url} --xml-output"
cmd << " --from-match #{shell_quote("hash #{identifier_from}")}" if identifier_from
cmd << " --last #{options[:limit].to_i}" if options[:limit]
shellout(cmd) do |io|
@@ -113,10 +129,10 @@
return nil if $? && $?.exitstatus != 0
revisions
end
-
+
def diff(path, identifier_from, identifier_to=nil)
path = '*' if path.blank?
- cmd = "#{DARCS_BIN} diff --repodir #{shell_quote @url}"
+ cmd = "#{self.class.sq_bin} diff --repodir #{shell_quote @url}"
if identifier_to.nil?
cmd << " --match #{shell_quote("hash #{identifier_from}")}"
else
@@ -133,9 +149,9 @@
return nil if $? && $?.exitstatus != 0
diff
end
-
+
def cat(path, identifier=nil)
- cmd = "#{DARCS_BIN} show content --repodir #{shell_quote @url}"
+ cmd = "#{self.class.sq_bin} show content --repodir #{shell_quote @url}"
cmd << " --match #{shell_quote("hash #{identifier}")}" if identifier
cmd << " #{shell_quote path}"
cat = nil
@@ -148,7 +164,7 @@
end
private
-
+
# Returns an Entry from the given XML element
# or nil if the entry was deleted
def entry_from_xml(element, path_prefix)
@@ -156,7 +172,7 @@
if modified_element.elements['modified_how'].text.match(/removed/)
return nil
end
-
+
Entry.new({:name => element.attributes['name'],
:path => path_prefix + element.attributes['name'],
:kind => element.name == 'file' ? 'file' : 'dir',
@@ -165,7 +181,7 @@
:identifier => nil,
:scmid => modified_element.elements['patch'].attributes['hash']
})
- })
+ })
end
def get_paths_for_patch(hash)
@@ -196,10 +212,10 @@
end
paths
end
-
+
# Retrieve changed paths for a single patch
def get_paths_for_patch_raw(hash)
- cmd = "#{DARCS_BIN} annotate --repodir #{shell_quote @url} --summary --xml-output"
+ cmd = "#{self.class.sq_bin} annotate --repodir #{shell_quote @url} --summary --xml-output"
cmd << " --match #{shell_quote("hash #{hash}")} "
paths = []
shellout(cmd) do |io|
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/.svn/text-base/filesystem_adapter.rb.svn-base
--- a/lib/redmine/scm/adapters/.svn/text-base/filesystem_adapter.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/scm/adapters/.svn/text-base/filesystem_adapter.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -23,12 +23,19 @@
module Redmine
module Scm
- module Adapters
+ module Adapters
class FilesystemAdapter < AbstractAdapter
-
- def initialize(url, root_url=nil, login=nil, password=nil)
+ class << self
+ def client_available
+ true
+ end
+ end
+
+ def initialize(url, root_url=nil, login=nil, password=nil,
+ path_encoding=nil)
@url = with_trailling_slash(url)
+ @path_encoding = path_encoding || 'UTF-8'
end
def format_path_ends(path, leading=true, trailling=true)
@@ -46,47 +53,59 @@
rescue CommandFailed
return nil
end
-
+
def entries(path="", identifier=nil)
entries = Entries.new
- Dir.new(target(path)).each do |e|
- relative_path = format_path_ends((format_path_ends(path,
- false,
- true) + e),
- false,false)
- target = target(relative_path)
- entries <<
- Entry.new({ :name => File.basename(e),
+ trgt_utf8 = target(path)
+ trgt = scm_iconv(@path_encoding, 'UTF-8', trgt_utf8)
+ Dir.new(trgt).each do |e1|
+ e_utf8 = scm_iconv('UTF-8', @path_encoding, e1)
+ relative_path_utf8 = format_path_ends((format_path_ends(path,false,true) + e_utf8),false,false)
+ t1_utf8 = target(relative_path_utf8)
+ t1 = scm_iconv(@path_encoding, 'UTF-8', t1_utf8)
+ relative_path = scm_iconv(@path_encoding, 'UTF-8', relative_path_utf8)
+ e1 = scm_iconv(@path_encoding, 'UTF-8', e_utf8)
+ if File.exist?(t1) and # paranoid test
+ %w{file directory}.include?(File.ftype(t1)) and # avoid special types
+ not File.basename(e1).match(/^\.+$/) # avoid . and ..
+ p1 = File.readable?(t1) ? relative_path : ""
+ utf_8_path = scm_iconv('UTF-8', @path_encoding, p1)
+ entries <<
+ Entry.new({ :name => scm_iconv('UTF-8', @path_encoding, File.basename(e1)),
# below : list unreadable files, but dont link them.
- :path => File.readable?(target) ? relative_path : "",
- :kind => (File.directory?(target) ? 'dir' : 'file'),
- :size => (File.directory?(target) ? nil : [File.size(target)].pack('l').unpack('L').first),
+ :path => utf_8_path,
+ :kind => (File.directory?(t1) ? 'dir' : 'file'),
+ :size => (File.directory?(t1) ? nil : [File.size(t1)].pack('l').unpack('L').first),
:lastrev =>
- Revision.new({:time => (File.mtime(target)).localtime,
- })
- }) if File.exist?(target) and # paranoid test
- %w{file directory}.include?(File.ftype(target)) and # avoid special types
- not File.basename(e).match(/^\.+$/) # avoid . and ..
+ Revision.new({:time => (File.mtime(t1)) })
+ })
+ end
end
entries.sort_by_name
+ rescue => err
+ logger.error "scm: filesystem: error: #{err.message}"
+ raise CommandFailed.new(err.message)
end
-
+
def cat(path, identifier=nil)
- File.new(target(path), "rb").read
+ p = scm_iconv(@path_encoding, 'UTF-8', target(path))
+ File.new(p, "rb").read
+ rescue => err
+ logger.error "scm: filesystem: error: #{err.message}"
+ raise CommandFailed.new(err.message)
end
private
-
+
# AbstractAdapter::target is implicitly made to quote paths.
# Here we do not shell-out, so we do not want quotes.
def target(path=nil)
- #Prevent the use of ..
+ # Prevent the use of ..
if path and !path.match(/(^|\/)\.\.(\/|$)/)
return "#{self.url}#{without_leading_slash(path)}"
end
return self.url
end
-
end
end
end
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/.svn/text-base/git_adapter.rb.svn-base
--- a/lib/redmine/scm/adapters/.svn/text-base/git_adapter.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/scm/adapters/.svn/text-base/git_adapter.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -19,11 +19,54 @@
module Redmine
module Scm
- module Adapters
+ module Adapters
class GitAdapter < AbstractAdapter
+
+ SCM_GIT_REPORT_LAST_COMMIT = true
+
# Git executable name
GIT_BIN = Redmine::Configuration['scm_git_command'] || "git"
+ # raised if scm command exited with error, e.g. unknown revision.
+ class ScmCommandAborted < CommandFailed; end
+
+ class << self
+ def client_command
+ @@bin ||= GIT_BIN
+ end
+
+ def sq_bin
+ @@sq_bin ||= shell_quote(GIT_BIN)
+ end
+
+ def client_version
+ @@client_version ||= (scm_command_version || [])
+ end
+
+ def client_available
+ !client_version.empty?
+ end
+
+ def scm_command_version
+ scm_version = scm_version_from_command_line.dup
+ if scm_version.respond_to?(:force_encoding)
+ scm_version.force_encoding('ASCII-8BIT')
+ end
+ if m = scm_version.match(%r{\A(.*?)((\d+\.)+\d+)})
+ m[2].scan(%r{\d+}).collect(&:to_i)
+ end
+ end
+
+ def scm_version_from_command_line
+ shellout("#{sq_bin} --version --no-color") { |io| io.read }.to_s
+ end
+ end
+
+ def initialize(url, root_url=nil, login=nil, password=nil, path_encoding=nil)
+ super
+ @flag_report_last_commit = SCM_GIT_REPORT_LAST_COMMIT
+ end
+
def info
begin
Info.new(:root_url => url, :lastrev => lastrev('',nil))
@@ -35,7 +78,7 @@
def branches
return @branches if @branches
@branches = []
- cmd = "#{GIT_BIN} --git-dir #{target('')} branch --no-color"
+ cmd = "#{self.class.sq_bin} --git-dir #{target('')} branch --no-color"
shellout(cmd) do |io|
io.each_line do |line|
@branches << line.match('\s*\*?\s*(.*)$')[1]
@@ -46,20 +89,20 @@
def tags
return @tags if @tags
- cmd = "#{GIT_BIN} --git-dir #{target('')} tag"
+ cmd = "#{self.class.sq_bin} --git-dir #{target('')} tag"
shellout(cmd) do |io|
@tags = io.readlines.sort!.map{|t| t.strip}
end
end
def default_branch
- branches.include?('master') ? 'master' : branches.first
+ branches.include?('master') ? 'master' : branches.first
end
-
+
def entries(path=nil, identifier=nil)
path ||= ''
entries = Entries.new
- cmd = "#{GIT_BIN} --git-dir #{target('')} ls-tree -l "
+ cmd = "#{self.class.sq_bin} --git-dir #{target('')} ls-tree -l "
cmd << shell_quote("HEAD:" + path) if identifier.nil?
cmd << shell_quote(identifier + ":" + path) if identifier
shellout(cmd) do |io|
@@ -75,7 +118,7 @@
:path => full_path,
:kind => (type == "tree") ? 'dir' : 'file',
:size => (type == "tree") ? nil : size,
- :lastrev => lastrev(full_path,identifier)
+ :lastrev => @flag_report_last_commit ? lastrev(full_path,identifier) : Revision.new
}) unless entries.detect{|entry| entry.name == name}
end
end
@@ -84,18 +127,17 @@
entries.sort_by_name
end
- def lastrev(path,rev)
+ def lastrev(path, rev)
return nil if path.nil?
- cmd = "#{GIT_BIN} --git-dir #{target('')} log --no-color --date=iso --pretty=fuller --no-merges -n 1 "
- cmd << " #{shell_quote rev} " if rev
- cmd << "-- #{shell_quote path} " unless path.empty?
+ cmd_args = %w|log --no-color --encoding=UTF-8 --date=iso --pretty=fuller --no-merges -n 1|
+ cmd_args << rev if rev
+ cmd_args << "--" << path unless path.empty?
lines = []
- shellout(cmd) { |io| lines = io.readlines }
- return nil if $? && $?.exitstatus != 0
+ scm_cmd(*cmd_args) { |io| lines = io.readlines }
begin
id = lines[0].split[1]
author = lines[1].match('Author:\s+(.*)$')[1]
- time = Time.parse(lines[4].match('CommitDate:\s+(.*)$')[1]).localtime
+ time = Time.parse(lines[4].match('CommitDate:\s+(.*)$')[1])
Revision.new({
:identifier => id,
@@ -104,26 +146,29 @@
:time => time,
:message => nil,
:paths => nil
- })
+ })
rescue NoMethodError => e
logger.error("The revision '#{path}' has a wrong format")
return nil
end
+ rescue ScmCommandAborted
+ nil
end
def revisions(path, identifier_from, identifier_to, options={})
revisions = Revisions.new
+ cmd_args = %w|log --no-color --encoding=UTF-8 --raw --date=iso --pretty=fuller|
+ cmd_args << "--reverse" if options[:reverse]
+ cmd_args << "--all" if options[:all]
+ cmd_args << "-n" << "#{options[:limit].to_i}" if options[:limit]
+ from_to = ""
+ from_to << "#{identifier_from}.." if identifier_from
+ from_to << "#{identifier_to}" if identifier_to
+ cmd_args << from_to if !from_to.empty?
+ cmd_args << "--since=#{options[:since].strftime("%Y-%m-%d %H:%M:%S")}" if options[:since]
+ cmd_args << "--" << path if path && !path.empty?
- cmd = "#{GIT_BIN} --git-dir #{target('')} log --no-color --raw --date=iso --pretty=fuller "
- cmd << " --reverse " if options[:reverse]
- cmd << " --all " if options[:all]
- cmd << " -n #{options[:limit].to_i} " if options[:limit]
- cmd << "#{shell_quote(identifier_from + '..')}" if identifier_from
- cmd << "#{shell_quote identifier_to}" if identifier_to
- cmd << " --since=#{shell_quote(options[:since].strftime("%Y-%m-%d %H:%M:%S"))}" if options[:since]
- cmd << " -- #{shell_quote path}" if path && !path.empty?
-
- shellout(cmd) do |io|
+ scm_cmd *cmd_args do |io|
files=[]
changeset = {}
parsing_descr = 0 #0: not parsing desc or files, 1: parsing desc, 2: parsing files
@@ -200,8 +245,8 @@
end
end
end
-
- return nil if $? && $?.exitstatus != 0
+ revisions
+ rescue ScmCommandAborted
revisions
end
@@ -209,9 +254,9 @@
path ||= ''
if identifier_to
- cmd = "#{GIT_BIN} --git-dir #{target('')} diff --no-color #{shell_quote identifier_to} #{shell_quote identifier_from}"
+ cmd = "#{self.class.sq_bin} --git-dir #{target('')} diff --no-color #{shell_quote identifier_to} #{shell_quote identifier_from}"
else
- cmd = "#{GIT_BIN} --git-dir #{target('')} show --no-color #{shell_quote identifier_from}"
+ cmd = "#{self.class.sq_bin} --git-dir #{target('')} show --no-color #{shell_quote identifier_from}"
end
cmd << " -- #{shell_quote path}" unless path.empty?
@@ -227,7 +272,7 @@
def annotate(path, identifier=nil)
identifier = 'HEAD' if identifier.blank?
- cmd = "#{GIT_BIN} --git-dir #{target('')} blame -p #{shell_quote identifier} -- #{shell_quote path}"
+ cmd = "#{self.class.sq_bin} --git-dir #{target('')} blame -p #{shell_quote identifier} -- #{shell_quote path}"
blame = Annotate.new
content = nil
shellout(cmd) { |io| io.binmode; content = io.read }
@@ -250,12 +295,12 @@
end
blame
end
-
+
def cat(path, identifier=nil)
if identifier.nil?
identifier = 'HEAD'
end
- cmd = "#{GIT_BIN} --git-dir #{target('')} show --no-color #{shell_quote(identifier + ':' + path)}"
+ cmd = "#{self.class.sq_bin} --git-dir #{target('')} show --no-color #{shell_quote(identifier + ':' + path)}"
cat = nil
shellout(cmd) do |io|
io.binmode
@@ -271,6 +316,18 @@
identifier[0,8]
end
end
+
+ def scm_cmd(*args, &block)
+ repo_path = root_url || url
+ full_args = [GIT_BIN, '--git-dir', repo_path]
+ full_args += args
+ ret = shellout(full_args.map { |e| shell_quote e.to_s }.join(' '), &block)
+ if $? && $?.exitstatus != 0
+ raise ScmCommandAborted, "git exited with non-zero status: #{$?.exitstatus}"
+ end
+ ret
+ end
+ private :scm_cmd
end
end
end
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/.svn/text-base/mercurial_adapter.rb.svn-base
--- a/lib/redmine/scm/adapters/.svn/text-base/mercurial_adapter.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/scm/adapters/.svn/text-base/mercurial_adapter.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -20,32 +20,51 @@
module Redmine
module Scm
- module Adapters
+ module Adapters
class MercurialAdapter < AbstractAdapter
# Mercurial executable name
HG_BIN = Redmine::Configuration['scm_mercurial_command'] || "hg"
- TEMPLATES_DIR = File.dirname(__FILE__) + "/mercurial"
+ HELPERS_DIR = File.dirname(__FILE__) + "/mercurial"
+ HG_HELPER_EXT = "#{HELPERS_DIR}/redminehelper.py"
TEMPLATE_NAME = "hg-template"
TEMPLATE_EXTENSION = "tmpl"
+ # raised if hg command exited with error, e.g. unknown revision.
+ class HgCommandAborted < CommandFailed; end
+
class << self
+ def client_command
+ @@bin ||= HG_BIN
+ end
+
+ def sq_bin
+ @@sq_bin ||= shell_quote(HG_BIN)
+ end
+
def client_version
@@client_version ||= (hgversion || [])
end
- def hgversion
+ def client_available
+ !client_version.empty?
+ end
+
+ def hgversion
# The hg version is expressed either as a
# release number (eg 0.9.5 or 1.0) or as a revision
# id composed of 12 hexa characters.
- theversion = hgversion_from_command_line
+ theversion = hgversion_from_command_line.dup
+ if theversion.respond_to?(:force_encoding)
+ theversion.force_encoding('ASCII-8BIT')
+ end
if m = theversion.match(%r{\A(.*?)((\d+\.)+\d+)})
m[2].scan(%r{\d+}).collect(&:to_i)
end
end
def hgversion_from_command_line
- shellout("#{HG_BIN} --version") { |io| io.read }.to_s
+ shellout("#{sq_bin} --version") { |io| io.read }.to_s
end
def template_path
@@ -58,153 +77,193 @@
else
ver = "0.9.5"
end
- "#{TEMPLATES_DIR}/#{TEMPLATE_NAME}-#{ver}.#{TEMPLATE_EXTENSION}"
+ "#{HELPERS_DIR}/#{TEMPLATE_NAME}-#{ver}.#{TEMPLATE_EXTENSION}"
end
end
- def info
- cmd = "#{HG_BIN} -R #{target('')} root"
- root_url = nil
- shellout(cmd) do |io|
- root_url = io.read
- end
- return nil if $? && $?.exitstatus != 0
- info = Info.new({:root_url => root_url.chomp,
- :lastrev => revisions(nil,nil,nil,{:limit => 1}).last
- })
- info
- rescue CommandFailed
- return nil
+ def initialize(url, root_url=nil, login=nil, password=nil, path_encoding=nil)
+ super
+ @path_encoding = path_encoding || 'UTF-8'
end
- def entries(path=nil, identifier=nil)
- path ||= ''
- entries = Entries.new
- cmd = "#{HG_BIN} -R #{target('')} --cwd #{target('')} locate"
- cmd << " -r #{hgrev(identifier)}"
- cmd << " " + shell_quote("path:#{path}") unless path.empty?
- shellout(cmd) do |io|
- io.each_line do |line|
- # HG uses antislashs as separator on Windows
- line = line.gsub(/\\/, "/")
- if path.empty? or e = line.gsub!(%r{^#{with_trailling_slash(path)}},'')
- e ||= line
- e = e.chomp.split(%r{[\/\\]})
- entries << Entry.new({:name => e.first,
- :path => (path.nil? or path.empty? ? e.first : "#{with_trailling_slash(path)}#{e.first}"),
- :kind => (e.size > 1 ? 'dir' : 'file'),
- :lastrev => Revision.new
- }) unless e.empty? || entries.detect{|entry| entry.name == e.first}
- end
+ def info
+ tip = summary['repository']['tip']
+ Info.new(:root_url => CGI.unescape(summary['repository']['root']),
+ :lastrev => Revision.new(:revision => tip['revision'],
+ :scmid => tip['node']))
+ end
+
+ def tags
+ as_ary(summary['repository']['tag']).map { |e| e['name'] }
+ end
+
+ # Returns map of {'tag' => 'nodeid', ...}
+ def tagmap
+ alist = as_ary(summary['repository']['tag']).map do |e|
+ e.values_at('name', 'node')
+ end
+ Hash[*alist.flatten]
+ end
+
+ def branches
+ as_ary(summary['repository']['branch']).map { |e| e['name'] }
+ end
+
+ # Returns map of {'branch' => 'nodeid', ...}
+ def branchmap
+ alist = as_ary(summary['repository']['branch']).map do |e|
+ e.values_at('name', 'node')
+ end
+ Hash[*alist.flatten]
+ end
+
+ def summary
+ return @summary if @summary
+ hg 'rhsummary' do |io|
+ output = io.read
+ if output.respond_to?(:force_encoding)
+ output.force_encoding('UTF-8')
+ end
+ begin
+ @summary = ActiveSupport::XmlMini.parse(output)['rhsummary']
+ rescue
end
end
- return nil if $? && $?.exitstatus != 0
- entries.sort_by_name
+ end
+ private :summary
+
+ def entries(path=nil, identifier=nil)
+ p1 = scm_iconv(@path_encoding, 'UTF-8', path)
+ manifest = hg('rhmanifest', '-r', CGI.escape(hgrev(identifier)),
+ CGI.escape(without_leading_slash(p1.to_s))) do |io|
+ output = io.read
+ if output.respond_to?(:force_encoding)
+ output.force_encoding('UTF-8')
+ end
+ begin
+ ActiveSupport::XmlMini.parse(output)['rhmanifest']['repository']['manifest']
+ rescue
+ end
+ end
+ path_prefix = path.blank? ? '' : with_trailling_slash(path)
+
+ entries = Entries.new
+ as_ary(manifest['dir']).each do |e|
+ n = scm_iconv('UTF-8', @path_encoding, CGI.unescape(e['name']))
+ p = "#{path_prefix}#{n}"
+ entries << Entry.new(:name => n, :path => p, :kind => 'dir')
+ end
+
+ as_ary(manifest['file']).each do |e|
+ n = scm_iconv('UTF-8', @path_encoding, CGI.unescape(e['name']))
+ p = "#{path_prefix}#{n}"
+ lr = Revision.new(:revision => e['revision'], :scmid => e['node'],
+ :identifier => e['node'],
+ :time => Time.at(e['time'].to_i))
+ entries << Entry.new(:name => n, :path => p, :kind => 'file',
+ :size => e['size'].to_i, :lastrev => lr)
+ end
+
+ entries
+ rescue HgCommandAborted
+ nil # means not found
end
- # Fetch the revisions by using a template file that
+ def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={})
+ revs = Revisions.new
+ each_revision(path, identifier_from, identifier_to, options) { |e| revs << e }
+ revs
+ end
+
+ # Iterates the revisions by using a template file that
# makes Mercurial produce a xml output.
- def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={})
- revisions = Revisions.new
- cmd = "#{HG_BIN} --debug --encoding utf8 -R #{target('')} log -C --style #{shell_quote self.class.template_path}"
- if identifier_from && identifier_to
- cmd << " -r #{hgrev(identifier_from)}:#{hgrev(identifier_to)}"
- elsif identifier_from
- cmd << " -r #{hgrev(identifier_from)}:"
- end
- cmd << " --limit #{options[:limit].to_i}" if options[:limit]
- cmd << " #{shell_quote path}" unless path.blank?
- shellout(cmd) do |io|
+ def each_revision(path=nil, identifier_from=nil, identifier_to=nil, options={})
+ hg_args = ['log', '--debug', '-C', '--style', self.class.template_path]
+ hg_args << '-r' << "#{hgrev(identifier_from)}:#{hgrev(identifier_to)}"
+ hg_args << '--limit' << options[:limit] if options[:limit]
+ hg_args << hgtarget(path) unless path.blank?
+ log = hg(*hg_args) do |io|
+ output = io.read
+ if output.respond_to?(:force_encoding)
+ output.force_encoding('UTF-8')
+ end
begin
- # HG doesn't close the XML Document...
- doc = REXML::Document.new(io.read << "")
- doc.elements.each("log/logentry") do |logentry|
- paths = []
- copies = logentry.get_elements('paths/path-copied')
- logentry.elements.each("paths/path") do |path|
- # Detect if the added file is a copy
- if path.attributes['action'] == 'A' and c = copies.find{ |e| e.text == path.text }
- from_path = c.attributes['copyfrom-path']
- from_rev = logentry.attributes['revision']
- end
- paths << {:action => path.attributes['action'],
- :path => "/#{CGI.unescape(path.text)}",
- :from_path => from_path ? "/#{CGI.unescape(from_path)}" : nil,
- :from_revision => from_rev ? from_rev : nil
- }
- end
- paths.sort! { |x,y| x[:path] <=> y[:path] }
-
- revisions << Revision.new({:identifier => logentry.attributes['revision'],
- :scmid => logentry.attributes['node'],
- :author => (logentry.elements['author'] ? logentry.elements['author'].text : ""),
- :time => Time.parse(logentry.elements['date'].text).localtime,
- :message => logentry.elements['msg'].text,
- :paths => paths
- })
- end
+ # Mercurial < 1.5 does not support footer template for ''
+ ActiveSupport::XmlMini.parse("#{output}")['log']
rescue
- logger.debug($!)
end
end
- return nil if $? && $?.exitstatus != 0
- revisions
+
+ as_ary(log['logentry']).each do |le|
+ cpalist = as_ary(le['paths']['path-copied']).map do |e|
+ [e['__content__'], e['copyfrom-path']].map { |s| CGI.unescape(s) }
+ end
+ cpmap = Hash[*cpalist.flatten]
+
+ paths = as_ary(le['paths']['path']).map do |e|
+ p = scm_iconv('UTF-8', @path_encoding, CGI.unescape(e['__content__']) )
+ {:action => e['action'], :path => with_leading_slash(p),
+ :from_path => (cpmap.member?(p) ? with_leading_slash(cpmap[p]) : nil),
+ :from_revision => (cpmap.member?(p) ? le['revision'] : nil)}
+ end.sort { |a, b| a[:path] <=> b[:path] }
+
+ yield Revision.new(:revision => le['revision'],
+ :scmid => le['node'],
+ :author => (le['author']['__content__'] rescue ''),
+ :time => Time.parse(le['date']['__content__']).localtime,
+ :message => le['msg']['__content__'],
+ :paths => paths)
+ end
+ self
end
def diff(path, identifier_from, identifier_to=nil)
- path ||= ''
- diff_args = ''
+ hg_args = %w|rhdiff|
+ if identifier_to
+ hg_args << '-r' << hgrev(identifier_to) << '-r' << hgrev(identifier_from)
+ else
+ hg_args << '-c' << hgrev(identifier_from)
+ end
+ unless path.blank?
+ p = scm_iconv(@path_encoding, 'UTF-8', path)
+ hg_args << CGI.escape(hgtarget(p))
+ end
diff = []
- if identifier_to
- diff_args = "-r #{hgrev(identifier_to)} -r #{hgrev(identifier_from)}"
- else
- if self.class.client_version_above?([1, 2])
- diff_args = "-c #{hgrev(identifier_from)}"
- else
- return []
- end
- end
- cmd = "#{HG_BIN} -R #{target('')} --config diff.git=false diff --nodates #{diff_args}"
- cmd << " -I #{target(path)}" unless path.empty?
- shellout(cmd) do |io|
+ hg *hg_args do |io|
io.each_line do |line|
diff << line
end
end
- return nil if $? && $?.exitstatus != 0
diff
+ rescue HgCommandAborted
+ nil # means not found
end
def cat(path, identifier=nil)
- cmd = "#{HG_BIN} -R #{target('')} cat"
- cmd << " -r #{hgrev(identifier)}"
- cmd << " #{target(path)}"
- cat = nil
- shellout(cmd) do |io|
+ p = CGI.escape(scm_iconv(@path_encoding, 'UTF-8', path))
+ hg 'rhcat', '-r', hgrev(identifier), hgtarget(p) do |io|
io.binmode
- cat = io.read
+ io.read
end
- return nil if $? && $?.exitstatus != 0
- cat
+ rescue HgCommandAborted
+ nil # means not found
end
def annotate(path, identifier=nil)
- path ||= ''
- cmd = "#{HG_BIN} -R #{target('')}"
- cmd << " annotate -ncu"
- cmd << " -r #{hgrev(identifier)}"
- cmd << " #{target(path)}"
+ p = CGI.escape(scm_iconv(@path_encoding, 'UTF-8', path))
blame = Annotate.new
- shellout(cmd) do |io|
+ hg 'rhannotate', '-ncu', '-r', hgrev(identifier), hgtarget(p) do |io|
io.each_line do |line|
+ line.force_encoding('ASCII-8BIT') if line.respond_to?(:force_encoding)
next unless line =~ %r{^([^:]+)\s(\d+)\s([0-9a-f]+):\s(.*)$}
r = Revision.new(:author => $1.strip, :revision => $2, :scmid => $3,
:identifier => $3)
blame.add_line($4.rstrip, r)
end
end
- return nil if $? && $?.exitstatus != 0
blame
+ rescue HgCommandAborted
+ nil # means not found or cannot be annotated
end
class Revision < Redmine::Scm::Adapters::Revision
@@ -214,11 +273,40 @@
end
end
+ # Runs 'hg' command with the given args
+ def hg(*args, &block)
+ repo_path = root_url || url
+ full_args = [HG_BIN, '-R', repo_path, '--encoding', 'utf-8']
+ full_args << '--config' << "extensions.redminehelper=#{HG_HELPER_EXT}"
+ full_args << '--config' << 'diff.git=false'
+ full_args += args
+ ret = shellout(full_args.map { |e| shell_quote e.to_s }.join(' '), &block)
+ if $? && $?.exitstatus != 0
+ raise HgCommandAborted, "hg exited with non-zero status: #{$?.exitstatus}"
+ end
+ ret
+ end
+ private :hg
+
# Returns correct revision identifier
- def hgrev(identifier)
- shell_quote(identifier.blank? ? 'tip' : identifier.to_s)
+ def hgrev(identifier, sq=false)
+ rev = identifier.blank? ? 'tip' : identifier.to_s
+ rev = shell_quote(rev) if sq
+ rev
end
private :hgrev
+
+ def hgtarget(path)
+ path ||= ''
+ root_url + '/' + without_leading_slash(path)
+ end
+ private :hgtarget
+
+ def as_ary(o)
+ return [] unless o
+ o.is_a?(Array) ? o : Array[o]
+ end
+ private :as_ary
end
end
end
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/.svn/text-base/subversion_adapter.rb.svn-base
--- a/lib/redmine/scm/adapters/.svn/text-base/subversion_adapter.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/scm/adapters/.svn/text-base/subversion_adapter.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -20,38 +20,54 @@
module Redmine
module Scm
- module Adapters
+ module Adapters
class SubversionAdapter < AbstractAdapter
-
+
# SVN executable name
SVN_BIN = Redmine::Configuration['scm_subversion_command'] || "svn"
-
+
class << self
+ def client_command
+ @@bin ||= SVN_BIN
+ end
+
+ def sq_bin
+ @@sq_bin ||= shell_quote(SVN_BIN)
+ end
+
def client_version
@@client_version ||= (svn_binary_version || [])
end
-
+
+ def client_available
+ !client_version.empty?
+ end
+
def svn_binary_version
- cmd = "#{SVN_BIN} --version"
- version = nil
- shellout(cmd) do |io|
- # Read svn version in first returned line
- if m = io.read.to_s.match(%r{\A(.*?)((\d+\.)+\d+)})
- version = m[2].scan(%r{\d+}).collect(&:to_i)
- end
+ scm_version = scm_version_from_command_line.dup
+ if scm_version.respond_to?(:force_encoding)
+ scm_version.force_encoding('ASCII-8BIT')
end
- return nil if $? && $?.exitstatus != 0
- version
+ if m = scm_version.match(%r{\A(.*?)((\d+\.)+\d+)})
+ m[2].scan(%r{\d+}).collect(&:to_i)
+ end
+ end
+
+ def scm_version_from_command_line
+ shellout("#{sq_bin} --version") { |io| io.read }.to_s
end
end
-
+
# Get info about the svn repository
def info
- cmd = "#{SVN_BIN} info --xml #{target}"
+ cmd = "#{self.class.sq_bin} info --xml #{target}"
cmd << credentials_string
info = nil
shellout(cmd) do |io|
output = io.read
+ if output.respond_to?(:force_encoding)
+ output.force_encoding('UTF-8')
+ end
begin
doc = ActiveSupport::XmlMini.parse(output)
#root_url = doc.elements["info/entry/repository/root"].text
@@ -70,17 +86,20 @@
rescue CommandFailed
return nil
end
-
+
# Returns an Entries collection
# or nil if the given path doesn't exist in the repository
def entries(path=nil, identifier=nil)
path ||= ''
identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD"
entries = Entries.new
- cmd = "#{SVN_BIN} list --xml #{target(path)}@#{identifier}"
+ cmd = "#{self.class.sq_bin} list --xml #{target(path)}@#{identifier}"
cmd << credentials_string
shellout(cmd) do |io|
output = io.read
+ if output.respond_to?(:force_encoding)
+ output.force_encoding('UTF-8')
+ end
begin
doc = ActiveSupport::XmlMini.parse(output)
each_xml_element(doc['lists']['list'], 'entry') do |entry|
@@ -110,17 +129,20 @@
logger.debug("Found #{entries.size} entries in the repository for #{target(path)}") if logger && logger.debug?
entries.sort_by_name
end
-
+
def properties(path, identifier=nil)
# proplist xml output supported in svn 1.5.0 and higher
return nil unless self.class.client_version_above?([1, 5, 0])
identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD"
- cmd = "#{SVN_BIN} proplist --verbose --xml #{target(path)}@#{identifier}"
+ cmd = "#{self.class.sq_bin} proplist --verbose --xml #{target(path)}@#{identifier}"
cmd << credentials_string
properties = {}
shellout(cmd) do |io|
output = io.read
+ if output.respond_to?(:force_encoding)
+ output.force_encoding('UTF-8')
+ end
begin
doc = ActiveSupport::XmlMini.parse(output)
each_xml_element(doc['properties']['target'], 'property') do |property|
@@ -132,19 +154,22 @@
return nil if $? && $?.exitstatus != 0
properties
end
-
+
def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={})
path ||= ''
identifier_from = (identifier_from && identifier_from.to_i > 0) ? identifier_from.to_i : "HEAD"
identifier_to = (identifier_to && identifier_to.to_i > 0) ? identifier_to.to_i : 1
revisions = Revisions.new
- cmd = "#{SVN_BIN} log --xml -r #{identifier_from}:#{identifier_to}"
+ cmd = "#{self.class.sq_bin} log --xml -r #{identifier_from}:#{identifier_to}"
cmd << credentials_string
cmd << " --verbose " if options[:with_paths]
cmd << " --limit #{options[:limit].to_i}" if options[:limit]
cmd << ' ' + target(path)
shellout(cmd) do |io|
output = io.read
+ if output.respond_to?(:force_encoding)
+ output.force_encoding('UTF-8')
+ end
begin
doc = ActiveSupport::XmlMini.parse(output)
each_xml_element(doc['log'], 'logentry') do |logentry|
@@ -171,13 +196,14 @@
return nil if $? && $?.exitstatus != 0
revisions
end
-
+
def diff(path, identifier_from, identifier_to=nil, type="inline")
path ||= ''
identifier_from = (identifier_from and identifier_from.to_i > 0) ? identifier_from.to_i : ''
+
identifier_to = (identifier_to and identifier_to.to_i > 0) ? identifier_to.to_i : (identifier_from.to_i - 1)
-
- cmd = "#{SVN_BIN} diff -r "
+
+ cmd = "#{self.class.sq_bin} diff -r "
cmd << "#{identifier_to}:"
cmd << "#{identifier_from}"
cmd << " #{target(path)}@#{identifier_from}"
@@ -191,10 +217,10 @@
return nil if $? && $?.exitstatus != 0
diff
end
-
+
def cat(path, identifier=nil)
identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD"
- cmd = "#{SVN_BIN} cat #{target(path)}@#{identifier}"
+ cmd = "#{self.class.sq_bin} cat #{target(path)}@#{identifier}"
cmd << credentials_string
cat = nil
shellout(cmd) do |io|
@@ -204,10 +230,10 @@
return nil if $? && $?.exitstatus != 0
cat
end
-
+
def annotate(path, identifier=nil)
identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD"
- cmd = "#{SVN_BIN} blame #{target(path)}@#{identifier}"
+ cmd = "#{self.class.sq_bin} blame #{target(path)}@#{identifier}"
cmd << credentials_string
blame = Annotate.new
shellout(cmd) do |io|
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/abstract_adapter.rb
--- a/lib/redmine/scm/adapters/abstract_adapter.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/scm/adapters/abstract_adapter.rb Thu Mar 03 11:42:28 2011 +0000
@@ -19,25 +19,29 @@
module Redmine
module Scm
- module Adapters
+ module Adapters
class CommandFailed < StandardError #:nodoc:
end
-
+
class AbstractAdapter #:nodoc:
class << self
+ def client_command
+ ""
+ end
+
# Returns the version of the scm client
# Eg: [1, 5, 0] or [] if unknown
def client_version
[]
end
-
+
# Returns the version string of the scm client
# Eg: '1.5.0' or 'Unknown version' if unknown
def client_version_string
v = client_version || 'Unknown version'
v.is_a?(Array) ? v.join('.') : v.to_s
end
-
+
# Returns true if the current client version is above
# or equals the given one
# If option is :unknown is set to true, it will return
@@ -45,19 +49,32 @@
def client_version_above?(v, options={})
((client_version <=> v) >= 0) || (client_version.empty? && options[:unknown])
end
+
+ def client_available
+ true
+ end
+
+ def shell_quote(str)
+ if Redmine::Platform.mswin?
+ '"' + str.gsub(/"/, '\\"') + '"'
+ else
+ "'" + str.gsub(/'/, "'\"'\"'") + "'"
+ end
+ end
end
-
- def initialize(url, root_url=nil, login=nil, password=nil)
+
+ def initialize(url, root_url=nil, login=nil, password=nil,
+ path_encoding=nil)
@url = url
@login = login if login && !login.empty?
@password = (password || "") if @login
@root_url = root_url.blank? ? retrieve_root_url : root_url
end
-
+
def adapter_name
'Abstract'
end
-
+
def supports_cat?
true
end
@@ -65,11 +82,11 @@
def supports_annotate?
respond_to?('annotate')
end
-
+
def root_url
@root_url
end
-
+
def url
@url
end
@@ -138,7 +155,7 @@
path ||= ''
(path[-1,1] == "/") ? path : "#{path}/"
end
-
+
def without_leading_slash(path)
path ||= ''
path.gsub(%r{^/+}, '')
@@ -148,13 +165,9 @@
path ||= ''
(path[-1,1] == "/") ? path[0..-2] : path
end
-
+
def shell_quote(str)
- if Redmine::Platform.mswin?
- '"' + str.gsub(/"/, '\\"') + '"'
- else
- "'" + str.gsub(/'/, "'\"'\"'") + "'"
- end
+ self.class.shell_quote(str)
end
private
@@ -168,19 +181,19 @@
base = path.match(/^\//) ? root_url : url
shell_quote("#{base}/#{path}".gsub(/[?<>\*]/, ''))
end
-
+
def logger
self.class.logger
end
-
+
def shellout(cmd, &block)
self.class.shellout(cmd, &block)
end
-
+
def self.logger
RAILS_DEFAULT_LOGGER
end
-
+
def self.shellout(cmd, &block)
logger.debug "Shelling out: #{strip_credential(cmd)}" if logger && logger.debug?
if Rails.env == 'development'
@@ -188,7 +201,12 @@
cmd = "#{cmd} 2>>#{RAILS_ROOT}/log/scm.stderr.log"
end
begin
- IO.popen(cmd, "r+") do |io|
+ if RUBY_VERSION < '1.9'
+ mode = "r+"
+ else
+ mode = "r+:ASCII-8BIT"
+ end
+ IO.popen(cmd, mode) do |io|
io.close_write
block.call(io) if block_given?
end
@@ -198,8 +216,8 @@
logger.error("SCM command failed, make sure that your SCM binary (eg. svn) is in PATH (#{ENV['PATH']}): #{strip_credential(cmd)}\n with: #{msg}")
raise CommandFailed.new(msg)
end
- end
-
+ end
+
# Hides username/password in a given command
def self.strip_credential(cmd)
q = (Redmine::Platform.mswin? ? '"' : "'")
@@ -209,8 +227,19 @@
def strip_credential(cmd)
self.class.strip_credential(cmd)
end
+
+ def scm_iconv(to, from, str)
+ return nil if str.nil?
+ return str if to == from
+ begin
+ Iconv.conv(to, from, str)
+ rescue Iconv::Failure => err
+ logger.error("failed to convert from #{from} to #{to}. #{err}")
+ nil
+ end
+ end
end
-
+
class Entries < Array
def sort_by_name
sort {|x,y|
@@ -219,7 +248,7 @@
else
x.kind <=> y.kind
end
- }
+ }
end
def revisions
@@ -295,29 +324,8 @@
def format_identifier
identifier
end
+ end
- def save(repo)
- Changeset.transaction do
- changeset = Changeset.new(
- :repository => repo,
- :revision => identifier,
- :scmid => scmid,
- :committer => author,
- :committed_on => time,
- :comments => message)
-
- if changeset.save
- paths.each do |file|
- Change.create(
- :changeset => changeset,
- :action => file[:action],
- :path => file[:path])
- end
- end
- end
- end
- end
-
class Annotate
attr_reader :lines, :revisions
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/bazaar_adapter.rb
--- a/lib/redmine/scm/adapters/bazaar_adapter.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/scm/adapters/bazaar_adapter.rb Thu Mar 03 11:42:28 2011 +0000
@@ -19,15 +19,47 @@
module Redmine
module Scm
- module Adapters
+ module Adapters
class BazaarAdapter < AbstractAdapter
-
+
# Bazaar executable name
BZR_BIN = Redmine::Configuration['scm_bazaar_command'] || "bzr"
-
+
+ class << self
+ def client_command
+ @@bin ||= BZR_BIN
+ end
+
+ def sq_bin
+ @@sq_bin ||= shell_quote(BZR_BIN)
+ end
+
+ def client_version
+ @@client_version ||= (scm_command_version || [])
+ end
+
+ def client_available
+ !client_version.empty?
+ end
+
+ def scm_command_version
+ scm_version = scm_version_from_command_line.dup
+ if scm_version.respond_to?(:force_encoding)
+ scm_version.force_encoding('ASCII-8BIT')
+ end
+ if m = scm_version.match(%r{\A(.*?)((\d+\.)+\d+)})
+ m[2].scan(%r{\d+}).collect(&:to_i)
+ end
+ end
+
+ def scm_version_from_command_line
+ shellout("#{sq_bin} --version") { |io| io.read }.to_s
+ end
+ end
+
# Get info about the repository
def info
- cmd = "#{BZR_BIN} revno #{target('')}"
+ cmd = "#{self.class.sq_bin} revno #{target('')}"
info = nil
shellout(cmd) do |io|
if io.read =~ %r{^(\d+)\r?$}
@@ -43,13 +75,13 @@
rescue CommandFailed
return nil
end
-
+
# Returns an Entries collection
# or nil if the given path doesn't exist in the repository
def entries(path=nil, identifier=nil)
path ||= ''
entries = Entries.new
- cmd = "#{BZR_BIN} ls -v --show-ids"
+ cmd = "#{self.class.sq_bin} ls -v --show-ids"
identifier = -1 unless identifier && identifier.to_i > 0
cmd << " -r#{identifier.to_i}"
cmd << " #{target(path)}"
@@ -71,13 +103,13 @@
logger.debug("Found #{entries.size} entries in the repository for #{target(path)}") if logger && logger.debug?
entries.sort_by_name
end
-
+
def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={})
path ||= ''
identifier_from = (identifier_from and identifier_from.to_i > 0) ? identifier_from.to_i : 'last:1'
identifier_to = (identifier_to and identifier_to.to_i > 0) ? identifier_to.to_i : 1
revisions = Revisions.new
- cmd = "#{BZR_BIN} log -v --show-ids -r#{identifier_to}..#{identifier_from} #{target(path)}"
+ cmd = "#{self.class.sq_bin} log -v --show-ids -r#{identifier_to}..#{identifier_from} #{target(path)}"
shellout(cmd) do |io|
revision = nil
parsing = nil
@@ -132,7 +164,7 @@
return nil if $? && $?.exitstatus != 0
revisions
end
-
+
def diff(path, identifier_from, identifier_to=nil)
path ||= ''
if identifier_to
@@ -143,7 +175,7 @@
if identifier_from
identifier_from = identifier_from.to_i
end
- cmd = "#{BZR_BIN} diff -r#{identifier_to}..#{identifier_from} #{target(path)}"
+ cmd = "#{self.class.sq_bin} diff -r#{identifier_to}..#{identifier_from} #{target(path)}"
diff = []
shellout(cmd) do |io|
io.each_line do |line|
@@ -153,9 +185,9 @@
#return nil if $? && $?.exitstatus != 0
diff
end
-
+
def cat(path, identifier=nil)
- cmd = "#{BZR_BIN} cat"
+ cmd = "#{self.class.sq_bin} cat"
cmd << " -r#{identifier.to_i}" if identifier && identifier.to_i > 0
cmd << " #{target(path)}"
cat = nil
@@ -166,9 +198,9 @@
return nil if $? && $?.exitstatus != 0
cat
end
-
+
def annotate(path, identifier=nil)
- cmd = "#{BZR_BIN} annotate --all"
+ cmd = "#{self.class.sq_bin} annotate --all"
cmd << " -r#{identifier.to_i}" if identifier && identifier.to_i > 0
cmd << " #{target(path)}"
blame = Annotate.new
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/cvs_adapter.rb
--- a/lib/redmine/scm/adapters/cvs_adapter.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/scm/adapters/cvs_adapter.rb Thu Mar 03 11:42:28 2011 +0000
@@ -24,13 +24,46 @@
# CVS executable name
CVS_BIN = Redmine::Configuration['scm_cvs_command'] || "cvs"
-
+
+ class << self
+ def client_command
+ @@bin ||= CVS_BIN
+ end
+
+ def sq_bin
+ @@sq_bin ||= shell_quote(CVS_BIN)
+ end
+
+ def client_version
+ @@client_version ||= (scm_command_version || [])
+ end
+
+ def client_available
+ client_version_above?([1, 12])
+ end
+
+ def scm_command_version
+ scm_version = scm_version_from_command_line.dup
+ if scm_version.respond_to?(:force_encoding)
+ scm_version.force_encoding('ASCII-8BIT')
+ end
+ if m = scm_version.match(%r{\A(.*?)((\d+\.)+\d+)}m)
+ m[2].scan(%r{\d+}).collect(&:to_i)
+ end
+ end
+
+ def scm_version_from_command_line
+ shellout("#{sq_bin} --version") { |io| io.read }.to_s
+ end
+ end
+
# Guidelines for the input:
# url -> the project-path, relative to the cvsroot (eg. module name)
# root_url -> the good old, sometimes damned, CVSROOT
# login -> unnecessary
# password -> unnecessary too
- def initialize(url, root_url=nil, login=nil, password=nil)
+ def initialize(url, root_url=nil, login=nil, password=nil,
+ path_encoding=nil)
@url = url
@login = login if login && !login.empty?
@password = (password || "") if @login
@@ -38,24 +71,24 @@
raise CommandFailed if root_url.blank?
@root_url = root_url
end
-
+
def root_url
@root_url
end
-
+
def url
@url
end
-
+
def info
logger.debug " info"
Info.new({:root_url => @root_url, :lastrev => nil})
end
-
+
def get_previous_revision(revision)
CvsRevisionHelper.new(revision).prevRev
end
-
+
# Returns an Entries collection
# or nil if the given path doesn't exist in the repository
# this method is used by the repository-browser (aka LIST)
@@ -63,14 +96,14 @@
logger.debug " entries '#{path}' with identifier '#{identifier}'"
path_with_project="#{url}#{with_leading_slash(path)}"
entries = Entries.new
- cmd = "#{CVS_BIN} -d #{shell_quote root_url} rls -e"
+ cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rls -e"
cmd << " -D \"#{time_to_cvstime(identifier)}\"" if identifier
cmd << " #{shell_quote path_with_project}"
shellout(cmd) do |io|
io.each_line(){|line|
fields=line.chop.split('/',-1)
logger.debug(">>InspectLine #{fields.inspect}")
-
+
if fields[0]!="D"
entries << Entry.new({:name => fields[-5],
#:path => fields[-4].include?(path)?fields[-4]:(path + "/"+ fields[-4]),
@@ -96,19 +129,19 @@
end
return nil if $? && $?.exitstatus != 0
entries.sort_by_name
- end
+ end
STARTLOG="----------------------------"
ENDLOG ="============================================================================="
-
+
# Returns all revisions found between identifier_from and identifier_to
# in the repository. both identifier have to be dates or nil.
# these method returns nothing but yield every result in block
def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}, &block)
logger.debug " revisions path:'#{path}',identifier_from #{identifier_from}, identifier_to #{identifier_to}"
-
+
path_with_project="#{url}#{with_leading_slash(path)}"
- cmd = "#{CVS_BIN} -d #{shell_quote root_url} rlog"
+ cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rlog"
cmd << " -d\">#{time_to_cvstime_rlog(identifier_from)}\"" if identifier_from
cmd << " #{shell_quote path_with_project}"
shellout(cmd) do |io|
@@ -123,7 +156,7 @@
file_state=nil
branch_map=nil
- io.each_line() do |line|
+ io.each_line() do |line|
if state!="revision" && /^#{ENDLOG}/ =~ line
commit_log=String.new
@@ -162,9 +195,9 @@
end
next
elsif state=="revision"
- if /^#{ENDLOG}/ =~ line || /^#{STARTLOG}/ =~ line
+ if /^#{ENDLOG}/ =~ line || /^#{STARTLOG}/ =~ line
if revision
-
+
revHelper=CvsRevisionHelper.new(revision)
revBranch="HEAD"
@@ -176,7 +209,7 @@
logger.debug("********** YIELD Revision #{revision}::#{revBranch}")
- yield Revision.new({
+ yield Revision.new({
:time => date,
:author => author,
:message=>commit_log.chomp,
@@ -188,9 +221,9 @@
:kind=>'file',
:action=>file_state
}]
- })
+ })
end
-
+
commit_log=String.new
revision=nil
@@ -199,7 +232,7 @@
end
next
end
-
+
if /^branches: (.+)$/ =~ line
#TODO: version.branch = $1
elsif /^revision (\d+(?:\.\d+)+).*$/ =~ line
@@ -216,20 +249,20 @@
# version.line_minus = linechanges[2]
# else
# version.line_plus = 0
- # version.line_minus = 0
- # end
- else
+ # version.line_minus = 0
+ # end
+ else
commit_log << line unless line =~ /^\*\*\* empty log message \*\*\*/
- end
- end
+ end
+ end
end
end
- end
-
+ end
+
def diff(path, identifier_from, identifier_to=nil)
logger.debug " diff path:'#{path}',identifier_from #{identifier_from}, identifier_to #{identifier_to}"
path_with_project="#{url}#{with_leading_slash(path)}"
- cmd = "#{CVS_BIN} -d #{shell_quote root_url} rdiff -u -r#{identifier_to} -r#{identifier_from} #{shell_quote path_with_project}"
+ cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rdiff -u -r#{identifier_to} -r#{identifier_from} #{shell_quote path_with_project}"
diff = []
shellout(cmd) do |io|
io.each_line do |line|
@@ -238,28 +271,29 @@
end
return nil if $? && $?.exitstatus != 0
diff
- end
-
+ end
+
def cat(path, identifier=nil)
identifier = (identifier) ? identifier : "HEAD"
logger.debug " cat path:'#{path}',identifier #{identifier}"
path_with_project="#{url}#{with_leading_slash(path)}"
- cmd = "#{CVS_BIN} -d #{shell_quote root_url} co"
+ cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} co"
cmd << " -D \"#{time_to_cvstime(identifier)}\"" if identifier
cmd << " -p #{shell_quote path_with_project}"
cat = nil
shellout(cmd) do |io|
+ io.binmode
cat = io.read
end
return nil if $? && $?.exitstatus != 0
cat
- end
+ end
def annotate(path, identifier=nil)
identifier = (identifier) ? identifier.to_i : "HEAD"
logger.debug " annotate path:'#{path}',identifier #{identifier}"
path_with_project="#{url}#{with_leading_slash(path)}"
- cmd = "#{CVS_BIN} -d #{shell_quote root_url} rannotate -r#{identifier} #{shell_quote path_with_project}"
+ cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rannotate -r#{identifier} #{shell_quote path_with_project}"
blame = Annotate.new
shellout(cmd) do |io|
io.each_line do |line|
@@ -270,9 +304,9 @@
return nil if $? && $?.exitstatus != 0
blame
end
-
+
private
-
+
# Returns the root url without the connexion string
# :pserver:anonymous@foo.bar:/path => /path
# :ext:cvsservername:/path => /path
@@ -345,7 +379,11 @@
private
def buildRevision(rev)
if rev== 0
- @base
+ if @branchid.nil?
+ @base+".0"
+ else
+ @base
+ end
elsif @branchid.nil?
@base+"."+rev.to_s
else
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/darcs_adapter.rb
--- a/lib/redmine/scm/adapters/darcs_adapter.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/scm/adapters/darcs_adapter.rb Thu Mar 03 11:42:28 2011 +0000
@@ -20,29 +20,45 @@
module Redmine
module Scm
- module Adapters
- class DarcsAdapter < AbstractAdapter
+ module Adapters
+ class DarcsAdapter < AbstractAdapter
# Darcs executable name
DARCS_BIN = Redmine::Configuration['scm_darcs_command'] || "darcs"
-
+
class << self
+ def client_command
+ @@bin ||= DARCS_BIN
+ end
+
+ def sq_bin
+ @@sq_bin ||= shell_quote(DARCS_BIN)
+ end
+
def client_version
@@client_version ||= (darcs_binary_version || [])
end
-
+
+ def client_available
+ !client_version.empty?
+ end
+
def darcs_binary_version
- darcsversion = darcs_binary_version_from_command_line
+ darcsversion = darcs_binary_version_from_command_line.dup
+ if darcsversion.respond_to?(:force_encoding)
+ darcsversion.force_encoding('ASCII-8BIT')
+ end
if m = darcsversion.match(%r{\A(.*?)((\d+\.)+\d+)})
m[2].scan(%r{\d+}).collect(&:to_i)
end
end
def darcs_binary_version_from_command_line
- shellout("#{DARCS_BIN} --version") { |io| io.read }.to_s
+ shellout("#{sq_bin} --version") { |io| io.read }.to_s
end
end
- def initialize(url, root_url=nil, login=nil, password=nil)
+ def initialize(url, root_url=nil, login=nil, password=nil,
+ path_encoding=nil)
@url = url
@root_url = url
end
@@ -57,7 +73,7 @@
rev = revisions(nil,nil,nil,{:limit => 1})
rev ? Info.new({:root_url => @url, :lastrev => rev.last}) : nil
end
-
+
# Returns an Entries collection
# or nil if the given path doesn't exist in the repository
def entries(path=nil, identifier=nil)
@@ -65,8 +81,8 @@
if path.blank?
path = ( self.class.client_version_above?([2, 2, 0]) ? @url : '.' )
end
- entries = Entries.new
- cmd = "#{DARCS_BIN} annotate --repodir #{shell_quote @url} --xml-output"
+ entries = Entries.new
+ cmd = "#{self.class.sq_bin} annotate --repodir #{shell_quote @url} --xml-output"
cmd << " --match #{shell_quote("hash #{identifier}")}" if identifier
cmd << " #{shell_quote path}"
shellout(cmd) do |io|
@@ -86,11 +102,11 @@
return nil if $? && $?.exitstatus != 0
entries.compact.sort_by_name
end
-
+
def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={})
path = '.' if path.blank?
revisions = Revisions.new
- cmd = "#{DARCS_BIN} changes --repodir #{shell_quote @url} --xml-output"
+ cmd = "#{self.class.sq_bin} changes --repodir #{shell_quote @url} --xml-output"
cmd << " --from-match #{shell_quote("hash #{identifier_from}")}" if identifier_from
cmd << " --last #{options[:limit].to_i}" if options[:limit]
shellout(cmd) do |io|
@@ -113,10 +129,10 @@
return nil if $? && $?.exitstatus != 0
revisions
end
-
+
def diff(path, identifier_from, identifier_to=nil)
path = '*' if path.blank?
- cmd = "#{DARCS_BIN} diff --repodir #{shell_quote @url}"
+ cmd = "#{self.class.sq_bin} diff --repodir #{shell_quote @url}"
if identifier_to.nil?
cmd << " --match #{shell_quote("hash #{identifier_from}")}"
else
@@ -133,9 +149,9 @@
return nil if $? && $?.exitstatus != 0
diff
end
-
+
def cat(path, identifier=nil)
- cmd = "#{DARCS_BIN} show content --repodir #{shell_quote @url}"
+ cmd = "#{self.class.sq_bin} show content --repodir #{shell_quote @url}"
cmd << " --match #{shell_quote("hash #{identifier}")}" if identifier
cmd << " #{shell_quote path}"
cat = nil
@@ -148,7 +164,7 @@
end
private
-
+
# Returns an Entry from the given XML element
# or nil if the entry was deleted
def entry_from_xml(element, path_prefix)
@@ -156,7 +172,7 @@
if modified_element.elements['modified_how'].text.match(/removed/)
return nil
end
-
+
Entry.new({:name => element.attributes['name'],
:path => path_prefix + element.attributes['name'],
:kind => element.name == 'file' ? 'file' : 'dir',
@@ -165,7 +181,7 @@
:identifier => nil,
:scmid => modified_element.elements['patch'].attributes['hash']
})
- })
+ })
end
def get_paths_for_patch(hash)
@@ -196,10 +212,10 @@
end
paths
end
-
+
# Retrieve changed paths for a single patch
def get_paths_for_patch_raw(hash)
- cmd = "#{DARCS_BIN} annotate --repodir #{shell_quote @url} --summary --xml-output"
+ cmd = "#{self.class.sq_bin} annotate --repodir #{shell_quote @url} --summary --xml-output"
cmd << " --match #{shell_quote("hash #{hash}")} "
paths = []
shellout(cmd) do |io|
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/filesystem_adapter.rb
--- a/lib/redmine/scm/adapters/filesystem_adapter.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/scm/adapters/filesystem_adapter.rb Thu Mar 03 11:42:28 2011 +0000
@@ -23,12 +23,19 @@
module Redmine
module Scm
- module Adapters
+ module Adapters
class FilesystemAdapter < AbstractAdapter
-
- def initialize(url, root_url=nil, login=nil, password=nil)
+ class << self
+ def client_available
+ true
+ end
+ end
+
+ def initialize(url, root_url=nil, login=nil, password=nil,
+ path_encoding=nil)
@url = with_trailling_slash(url)
+ @path_encoding = path_encoding || 'UTF-8'
end
def format_path_ends(path, leading=true, trailling=true)
@@ -46,47 +53,59 @@
rescue CommandFailed
return nil
end
-
+
def entries(path="", identifier=nil)
entries = Entries.new
- Dir.new(target(path)).each do |e|
- relative_path = format_path_ends((format_path_ends(path,
- false,
- true) + e),
- false,false)
- target = target(relative_path)
- entries <<
- Entry.new({ :name => File.basename(e),
+ trgt_utf8 = target(path)
+ trgt = scm_iconv(@path_encoding, 'UTF-8', trgt_utf8)
+ Dir.new(trgt).each do |e1|
+ e_utf8 = scm_iconv('UTF-8', @path_encoding, e1)
+ relative_path_utf8 = format_path_ends((format_path_ends(path,false,true) + e_utf8),false,false)
+ t1_utf8 = target(relative_path_utf8)
+ t1 = scm_iconv(@path_encoding, 'UTF-8', t1_utf8)
+ relative_path = scm_iconv(@path_encoding, 'UTF-8', relative_path_utf8)
+ e1 = scm_iconv(@path_encoding, 'UTF-8', e_utf8)
+ if File.exist?(t1) and # paranoid test
+ %w{file directory}.include?(File.ftype(t1)) and # avoid special types
+ not File.basename(e1).match(/^\.+$/) # avoid . and ..
+ p1 = File.readable?(t1) ? relative_path : ""
+ utf_8_path = scm_iconv('UTF-8', @path_encoding, p1)
+ entries <<
+ Entry.new({ :name => scm_iconv('UTF-8', @path_encoding, File.basename(e1)),
# below : list unreadable files, but dont link them.
- :path => File.readable?(target) ? relative_path : "",
- :kind => (File.directory?(target) ? 'dir' : 'file'),
- :size => (File.directory?(target) ? nil : [File.size(target)].pack('l').unpack('L').first),
+ :path => utf_8_path,
+ :kind => (File.directory?(t1) ? 'dir' : 'file'),
+ :size => (File.directory?(t1) ? nil : [File.size(t1)].pack('l').unpack('L').first),
:lastrev =>
- Revision.new({:time => (File.mtime(target)).localtime,
- })
- }) if File.exist?(target) and # paranoid test
- %w{file directory}.include?(File.ftype(target)) and # avoid special types
- not File.basename(e).match(/^\.+$/) # avoid . and ..
+ Revision.new({:time => (File.mtime(t1)) })
+ })
+ end
end
entries.sort_by_name
+ rescue => err
+ logger.error "scm: filesystem: error: #{err.message}"
+ raise CommandFailed.new(err.message)
end
-
+
def cat(path, identifier=nil)
- File.new(target(path), "rb").read
+ p = scm_iconv(@path_encoding, 'UTF-8', target(path))
+ File.new(p, "rb").read
+ rescue => err
+ logger.error "scm: filesystem: error: #{err.message}"
+ raise CommandFailed.new(err.message)
end
private
-
+
# AbstractAdapter::target is implicitly made to quote paths.
# Here we do not shell-out, so we do not want quotes.
def target(path=nil)
- #Prevent the use of ..
+ # Prevent the use of ..
if path and !path.match(/(^|\/)\.\.(\/|$)/)
return "#{self.url}#{without_leading_slash(path)}"
end
return self.url
end
-
end
end
end
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/git_adapter.rb
--- a/lib/redmine/scm/adapters/git_adapter.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/scm/adapters/git_adapter.rb Thu Mar 03 11:42:28 2011 +0000
@@ -19,11 +19,54 @@
module Redmine
module Scm
- module Adapters
+ module Adapters
class GitAdapter < AbstractAdapter
+
+ SCM_GIT_REPORT_LAST_COMMIT = true
+
# Git executable name
GIT_BIN = Redmine::Configuration['scm_git_command'] || "git"
+ # raised if scm command exited with error, e.g. unknown revision.
+ class ScmCommandAborted < CommandFailed; end
+
+ class << self
+ def client_command
+ @@bin ||= GIT_BIN
+ end
+
+ def sq_bin
+ @@sq_bin ||= shell_quote(GIT_BIN)
+ end
+
+ def client_version
+ @@client_version ||= (scm_command_version || [])
+ end
+
+ def client_available
+ !client_version.empty?
+ end
+
+ def scm_command_version
+ scm_version = scm_version_from_command_line.dup
+ if scm_version.respond_to?(:force_encoding)
+ scm_version.force_encoding('ASCII-8BIT')
+ end
+ if m = scm_version.match(%r{\A(.*?)((\d+\.)+\d+)})
+ m[2].scan(%r{\d+}).collect(&:to_i)
+ end
+ end
+
+ def scm_version_from_command_line
+ shellout("#{sq_bin} --version --no-color") { |io| io.read }.to_s
+ end
+ end
+
+ def initialize(url, root_url=nil, login=nil, password=nil, path_encoding=nil)
+ super
+ @flag_report_last_commit = SCM_GIT_REPORT_LAST_COMMIT
+ end
+
def info
begin
Info.new(:root_url => url, :lastrev => lastrev('',nil))
@@ -35,7 +78,7 @@
def branches
return @branches if @branches
@branches = []
- cmd = "#{GIT_BIN} --git-dir #{target('')} branch --no-color"
+ cmd = "#{self.class.sq_bin} --git-dir #{target('')} branch --no-color"
shellout(cmd) do |io|
io.each_line do |line|
@branches << line.match('\s*\*?\s*(.*)$')[1]
@@ -46,20 +89,20 @@
def tags
return @tags if @tags
- cmd = "#{GIT_BIN} --git-dir #{target('')} tag"
+ cmd = "#{self.class.sq_bin} --git-dir #{target('')} tag"
shellout(cmd) do |io|
@tags = io.readlines.sort!.map{|t| t.strip}
end
end
def default_branch
- branches.include?('master') ? 'master' : branches.first
+ branches.include?('master') ? 'master' : branches.first
end
-
+
def entries(path=nil, identifier=nil)
path ||= ''
entries = Entries.new
- cmd = "#{GIT_BIN} --git-dir #{target('')} ls-tree -l "
+ cmd = "#{self.class.sq_bin} --git-dir #{target('')} ls-tree -l "
cmd << shell_quote("HEAD:" + path) if identifier.nil?
cmd << shell_quote(identifier + ":" + path) if identifier
shellout(cmd) do |io|
@@ -75,7 +118,7 @@
:path => full_path,
:kind => (type == "tree") ? 'dir' : 'file',
:size => (type == "tree") ? nil : size,
- :lastrev => lastrev(full_path,identifier)
+ :lastrev => @flag_report_last_commit ? lastrev(full_path,identifier) : Revision.new
}) unless entries.detect{|entry| entry.name == name}
end
end
@@ -84,18 +127,17 @@
entries.sort_by_name
end
- def lastrev(path,rev)
+ def lastrev(path, rev)
return nil if path.nil?
- cmd = "#{GIT_BIN} --git-dir #{target('')} log --no-color --date=iso --pretty=fuller --no-merges -n 1 "
- cmd << " #{shell_quote rev} " if rev
- cmd << "-- #{shell_quote path} " unless path.empty?
+ cmd_args = %w|log --no-color --encoding=UTF-8 --date=iso --pretty=fuller --no-merges -n 1|
+ cmd_args << rev if rev
+ cmd_args << "--" << path unless path.empty?
lines = []
- shellout(cmd) { |io| lines = io.readlines }
- return nil if $? && $?.exitstatus != 0
+ scm_cmd(*cmd_args) { |io| lines = io.readlines }
begin
id = lines[0].split[1]
author = lines[1].match('Author:\s+(.*)$')[1]
- time = Time.parse(lines[4].match('CommitDate:\s+(.*)$')[1]).localtime
+ time = Time.parse(lines[4].match('CommitDate:\s+(.*)$')[1])
Revision.new({
:identifier => id,
@@ -104,26 +146,29 @@
:time => time,
:message => nil,
:paths => nil
- })
+ })
rescue NoMethodError => e
logger.error("The revision '#{path}' has a wrong format")
return nil
end
+ rescue ScmCommandAborted
+ nil
end
def revisions(path, identifier_from, identifier_to, options={})
revisions = Revisions.new
+ cmd_args = %w|log --no-color --encoding=UTF-8 --raw --date=iso --pretty=fuller|
+ cmd_args << "--reverse" if options[:reverse]
+ cmd_args << "--all" if options[:all]
+ cmd_args << "-n" << "#{options[:limit].to_i}" if options[:limit]
+ from_to = ""
+ from_to << "#{identifier_from}.." if identifier_from
+ from_to << "#{identifier_to}" if identifier_to
+ cmd_args << from_to if !from_to.empty?
+ cmd_args << "--since=#{options[:since].strftime("%Y-%m-%d %H:%M:%S")}" if options[:since]
+ cmd_args << "--" << path if path && !path.empty?
- cmd = "#{GIT_BIN} --git-dir #{target('')} log --no-color --raw --date=iso --pretty=fuller "
- cmd << " --reverse " if options[:reverse]
- cmd << " --all " if options[:all]
- cmd << " -n #{options[:limit].to_i} " if options[:limit]
- cmd << "#{shell_quote(identifier_from + '..')}" if identifier_from
- cmd << "#{shell_quote identifier_to}" if identifier_to
- cmd << " --since=#{shell_quote(options[:since].strftime("%Y-%m-%d %H:%M:%S"))}" if options[:since]
- cmd << " -- #{shell_quote path}" if path && !path.empty?
-
- shellout(cmd) do |io|
+ scm_cmd *cmd_args do |io|
files=[]
changeset = {}
parsing_descr = 0 #0: not parsing desc or files, 1: parsing desc, 2: parsing files
@@ -200,8 +245,8 @@
end
end
end
-
- return nil if $? && $?.exitstatus != 0
+ revisions
+ rescue ScmCommandAborted
revisions
end
@@ -209,9 +254,9 @@
path ||= ''
if identifier_to
- cmd = "#{GIT_BIN} --git-dir #{target('')} diff --no-color #{shell_quote identifier_to} #{shell_quote identifier_from}"
+ cmd = "#{self.class.sq_bin} --git-dir #{target('')} diff --no-color #{shell_quote identifier_to} #{shell_quote identifier_from}"
else
- cmd = "#{GIT_BIN} --git-dir #{target('')} show --no-color #{shell_quote identifier_from}"
+ cmd = "#{self.class.sq_bin} --git-dir #{target('')} show --no-color #{shell_quote identifier_from}"
end
cmd << " -- #{shell_quote path}" unless path.empty?
@@ -227,7 +272,7 @@
def annotate(path, identifier=nil)
identifier = 'HEAD' if identifier.blank?
- cmd = "#{GIT_BIN} --git-dir #{target('')} blame -p #{shell_quote identifier} -- #{shell_quote path}"
+ cmd = "#{self.class.sq_bin} --git-dir #{target('')} blame -p #{shell_quote identifier} -- #{shell_quote path}"
blame = Annotate.new
content = nil
shellout(cmd) { |io| io.binmode; content = io.read }
@@ -250,12 +295,12 @@
end
blame
end
-
+
def cat(path, identifier=nil)
if identifier.nil?
identifier = 'HEAD'
end
- cmd = "#{GIT_BIN} --git-dir #{target('')} show --no-color #{shell_quote(identifier + ':' + path)}"
+ cmd = "#{self.class.sq_bin} --git-dir #{target('')} show --no-color #{shell_quote(identifier + ':' + path)}"
cat = nil
shellout(cmd) do |io|
io.binmode
@@ -271,6 +316,18 @@
identifier[0,8]
end
end
+
+ def scm_cmd(*args, &block)
+ repo_path = root_url || url
+ full_args = [GIT_BIN, '--git-dir', repo_path]
+ full_args += args
+ ret = shellout(full_args.map { |e| shell_quote e.to_s }.join(' '), &block)
+ if $? && $?.exitstatus != 0
+ raise ScmCommandAborted, "git exited with non-zero status: #{$?.exitstatus}"
+ end
+ ret
+ end
+ private :scm_cmd
end
end
end
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/mercurial/.svn/all-wcprops
--- a/lib/redmine/scm/adapters/mercurial/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/scm/adapters/mercurial/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 59
-/svn/!svn/ver/4633/trunk/lib/redmine/scm/adapters/mercurial
+/svn/!svn/ver/4989/trunk/lib/redmine/scm/adapters/mercurial
END
hg-template-0.9.5.tmpl
K 25
@@ -9,6 +9,12 @@
V 82
/svn/!svn/ver/4633/trunk/lib/redmine/scm/adapters/mercurial/hg-template-0.9.5.tmpl
END
+redminehelper.py
+K 25
+svn:wc:ra_dav:version-url
+V 76
+/svn/!svn/ver/4989/trunk/lib/redmine/scm/adapters/mercurial/redminehelper.py
+END
hg-template-1.0.tmpl
K 25
svn:wc:ra_dav:version-url
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/mercurial/.svn/dir-prop-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/redmine/scm/adapters/mercurial/.svn/dir-prop-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,7 @@
+K 10
+svn:ignore
+V 36
+redminehelper.pyc
+redminehelper.pyo
+
+END
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/mercurial/.svn/entries
--- a/lib/redmine/scm/adapters/mercurial/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/scm/adapters/mercurial/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,16 +1,16 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/redmine/scm/adapters/mercurial
http://redmine.rubyforge.org/svn
-2011-01-05T15:02:24.961855Z
-4633
+2011-03-02T10:17:36.526269Z
+4989
tmaruyama
-
+has-props
@@ -60,6 +60,40 @@
824
+redminehelper.py
+file
+
+
+
+
+2011-03-03T11:40:18.000000Z
+5bf6790a201bf33c17cae96c6a9d75fc
+2011-03-02T10:17:36.526269Z
+4989
+tmaruyama
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+6270
+
hg-template-1.0.tmpl
file
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/mercurial/.svn/text-base/redminehelper.py.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/redmine/scm/adapters/mercurial/.svn/text-base/redminehelper.py.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,183 @@
+# redminehelper: Redmine helper extension for Mercurial
+#
+# Copyright 2010 Alessio Franceschelli (alefranz.net)
+# Copyright 2010-2011 Yuya Nishihara
+#
+# This software may be used and distributed according to the terms of the
+# GNU General Public License version 2 or any later version.
+"""helper commands for Redmine to reduce the number of hg calls
+
+To test this extension, please try::
+
+ $ hg --config extensions.redminehelper=redminehelper.py rhsummary
+
+I/O encoding:
+
+:file path: urlencoded, raw string
+:tag name: utf-8
+:branch name: utf-8
+:node: 12-digits (short) hex string
+
+Output example of rhsummary::
+
+
+
+
+
+
+
+ ...
+
+
+
+Output example of rhmanifest::
+
+
+
+
+
+
+ ...
+
+ ...
+
+
+
+"""
+import re, time, cgi, urllib
+from mercurial import cmdutil, commands, node, error
+
+_x = cgi.escape
+_u = lambda s: cgi.escape(urllib.quote(s))
+
+def _tip(ui, repo):
+ # see mercurial/commands.py:tip
+ def tiprev():
+ try:
+ return len(repo) - 1
+ except TypeError: # Mercurial < 1.1
+ return repo.changelog.count() - 1
+ tipctx = repo.changectx(tiprev())
+ ui.write('\n'
+ % (tipctx.rev(), _x(node.short(tipctx.node()))))
+
+_SPECIAL_TAGS = ('tip',)
+
+def _tags(ui, repo):
+ # see mercurial/commands.py:tags
+ for t, n in reversed(repo.tagslist()):
+ if t in _SPECIAL_TAGS:
+ continue
+ try:
+ r = repo.changelog.rev(n)
+ except error.LookupError:
+ continue
+ ui.write('\n'
+ % (r, _x(node.short(n)), _x(t)))
+
+def _branches(ui, repo):
+ # see mercurial/commands.py:branches
+ def iterbranches():
+ for t, n in repo.branchtags().iteritems():
+ yield t, n, repo.changelog.rev(n)
+ def branchheads(branch):
+ try:
+ return repo.branchheads(branch, closed=False)
+ except TypeError: # Mercurial < 1.2
+ return repo.branchheads(branch)
+ for t, n, r in sorted(iterbranches(), key=lambda e: e[2], reverse=True):
+ if repo.lookup(r) in branchheads(t):
+ ui.write('\n'
+ % (r, _x(node.short(n)), _x(t)))
+
+def _manifest(ui, repo, path, rev):
+ ctx = repo.changectx(rev)
+ ui.write('\n'
+ % (ctx.rev(), _u(path)))
+
+ known = set()
+ pathprefix = (path.rstrip('/') + '/').lstrip('/')
+ for f, n in sorted(ctx.manifest().iteritems(), key=lambda e: e[0]):
+ if not f.startswith(pathprefix):
+ continue
+ name = re.sub(r'/.*', '/', f[len(pathprefix):])
+ if name in known:
+ continue
+ known.add(name)
+
+ if name.endswith('/'):
+ ui.write('\n'
+ % _x(urllib.quote(name[:-1])))
+ else:
+ fctx = repo.filectx(f, fileid=n)
+ tm, tzoffset = fctx.date()
+ ui.write('\n'
+ % (_u(name), fctx.rev(), _x(node.short(fctx.node())),
+ tm, fctx.size(), ))
+
+ ui.write('\n')
+
+def rhannotate(ui, repo, *pats, **opts):
+ return commands.annotate(ui, repo, *map(urllib.unquote_plus, pats), **opts)
+
+def rhcat(ui, repo, file1, *pats, **opts):
+ return commands.cat(ui, repo, urllib.unquote_plus(file1), *map(urllib.unquote_plus, pats), **opts)
+
+def rhdiff(ui, repo, *pats, **opts):
+ """diff repository (or selected files)"""
+ change = opts.pop('change', None)
+ if change: # add -c option for Mercurial<1.1
+ base = repo.changectx(change).parents()[0].rev()
+ opts['rev'] = [str(base), change]
+ opts['nodates'] = True
+ return commands.diff(ui, repo, *map(urllib.unquote_plus, pats), **opts)
+
+def rhmanifest(ui, repo, path='', **opts):
+ """output the sub-manifest of the specified directory"""
+ ui.write('\n')
+ ui.write('\n')
+ ui.write('\n' % _u(repo.root))
+ try:
+ _manifest(ui, repo, urllib.unquote_plus(path), urllib.unquote_plus(opts.get('rev')))
+ finally:
+ ui.write('\n')
+ ui.write('\n')
+
+def rhsummary(ui, repo, **opts):
+ """output the summary of the repository"""
+ ui.write('\n')
+ ui.write('\n')
+ ui.write('\n' % _u(repo.root))
+ try:
+ _tip(ui, repo)
+ _tags(ui, repo)
+ _branches(ui, repo)
+ # TODO: bookmarks in core (Mercurial>=1.8)
+ finally:
+ ui.write('\n')
+ ui.write('\n')
+
+# This extension should be compatible with Mercurial 0.9.5.
+# Note that Mercurial 0.9.5 doesn't have extensions.wrapfunction().
+cmdtable = {
+ 'rhannotate': (rhannotate,
+ [('r', 'rev', '', 'revision'),
+ ('u', 'user', None, 'list the author (long with -v)'),
+ ('n', 'number', None, 'list the revision number (default)'),
+ ('c', 'changeset', None, 'list the changeset'),
+ ],
+ 'hg rhannotate [-r REV] [-u] [-n] [-c] FILE...'),
+ 'rhcat': (rhcat,
+ [('r', 'rev', '', 'revision')],
+ 'hg rhcat ([-r REV] ...) FILE...'),
+ 'rhdiff': (rhdiff,
+ [('r', 'rev', [], 'revision'),
+ ('c', 'change', '', 'change made by revision')],
+ 'hg rhdiff ([-c REV] | [-r REV] ...) [FILE]...'),
+ 'rhmanifest': (rhmanifest,
+ [('r', 'rev', '', 'show the specified revision')],
+ 'hg rhmanifest [-r REV] [PATH]'),
+ 'rhsummary': (rhsummary, [], 'hg rhsummary'),
+}
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/mercurial/redminehelper.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/redmine/scm/adapters/mercurial/redminehelper.py Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,183 @@
+# redminehelper: Redmine helper extension for Mercurial
+#
+# Copyright 2010 Alessio Franceschelli (alefranz.net)
+# Copyright 2010-2011 Yuya Nishihara
+#
+# This software may be used and distributed according to the terms of the
+# GNU General Public License version 2 or any later version.
+"""helper commands for Redmine to reduce the number of hg calls
+
+To test this extension, please try::
+
+ $ hg --config extensions.redminehelper=redminehelper.py rhsummary
+
+I/O encoding:
+
+:file path: urlencoded, raw string
+:tag name: utf-8
+:branch name: utf-8
+:node: 12-digits (short) hex string
+
+Output example of rhsummary::
+
+
+
+
+
+
+
+ ...
+
+
+
+Output example of rhmanifest::
+
+
+
+
+
+
+ ...
+
+ ...
+
+
+
+"""
+import re, time, cgi, urllib
+from mercurial import cmdutil, commands, node, error
+
+_x = cgi.escape
+_u = lambda s: cgi.escape(urllib.quote(s))
+
+def _tip(ui, repo):
+ # see mercurial/commands.py:tip
+ def tiprev():
+ try:
+ return len(repo) - 1
+ except TypeError: # Mercurial < 1.1
+ return repo.changelog.count() - 1
+ tipctx = repo.changectx(tiprev())
+ ui.write('\n'
+ % (tipctx.rev(), _x(node.short(tipctx.node()))))
+
+_SPECIAL_TAGS = ('tip',)
+
+def _tags(ui, repo):
+ # see mercurial/commands.py:tags
+ for t, n in reversed(repo.tagslist()):
+ if t in _SPECIAL_TAGS:
+ continue
+ try:
+ r = repo.changelog.rev(n)
+ except error.LookupError:
+ continue
+ ui.write('\n'
+ % (r, _x(node.short(n)), _x(t)))
+
+def _branches(ui, repo):
+ # see mercurial/commands.py:branches
+ def iterbranches():
+ for t, n in repo.branchtags().iteritems():
+ yield t, n, repo.changelog.rev(n)
+ def branchheads(branch):
+ try:
+ return repo.branchheads(branch, closed=False)
+ except TypeError: # Mercurial < 1.2
+ return repo.branchheads(branch)
+ for t, n, r in sorted(iterbranches(), key=lambda e: e[2], reverse=True):
+ if repo.lookup(r) in branchheads(t):
+ ui.write('\n'
+ % (r, _x(node.short(n)), _x(t)))
+
+def _manifest(ui, repo, path, rev):
+ ctx = repo.changectx(rev)
+ ui.write('\n'
+ % (ctx.rev(), _u(path)))
+
+ known = set()
+ pathprefix = (path.rstrip('/') + '/').lstrip('/')
+ for f, n in sorted(ctx.manifest().iteritems(), key=lambda e: e[0]):
+ if not f.startswith(pathprefix):
+ continue
+ name = re.sub(r'/.*', '/', f[len(pathprefix):])
+ if name in known:
+ continue
+ known.add(name)
+
+ if name.endswith('/'):
+ ui.write('\n'
+ % _x(urllib.quote(name[:-1])))
+ else:
+ fctx = repo.filectx(f, fileid=n)
+ tm, tzoffset = fctx.date()
+ ui.write('\n'
+ % (_u(name), fctx.rev(), _x(node.short(fctx.node())),
+ tm, fctx.size(), ))
+
+ ui.write('\n')
+
+def rhannotate(ui, repo, *pats, **opts):
+ return commands.annotate(ui, repo, *map(urllib.unquote_plus, pats), **opts)
+
+def rhcat(ui, repo, file1, *pats, **opts):
+ return commands.cat(ui, repo, urllib.unquote_plus(file1), *map(urllib.unquote_plus, pats), **opts)
+
+def rhdiff(ui, repo, *pats, **opts):
+ """diff repository (or selected files)"""
+ change = opts.pop('change', None)
+ if change: # add -c option for Mercurial<1.1
+ base = repo.changectx(change).parents()[0].rev()
+ opts['rev'] = [str(base), change]
+ opts['nodates'] = True
+ return commands.diff(ui, repo, *map(urllib.unquote_plus, pats), **opts)
+
+def rhmanifest(ui, repo, path='', **opts):
+ """output the sub-manifest of the specified directory"""
+ ui.write('\n')
+ ui.write('\n')
+ ui.write('\n' % _u(repo.root))
+ try:
+ _manifest(ui, repo, urllib.unquote_plus(path), urllib.unquote_plus(opts.get('rev')))
+ finally:
+ ui.write('\n')
+ ui.write('\n')
+
+def rhsummary(ui, repo, **opts):
+ """output the summary of the repository"""
+ ui.write('\n')
+ ui.write('\n')
+ ui.write('\n' % _u(repo.root))
+ try:
+ _tip(ui, repo)
+ _tags(ui, repo)
+ _branches(ui, repo)
+ # TODO: bookmarks in core (Mercurial>=1.8)
+ finally:
+ ui.write('\n')
+ ui.write('\n')
+
+# This extension should be compatible with Mercurial 0.9.5.
+# Note that Mercurial 0.9.5 doesn't have extensions.wrapfunction().
+cmdtable = {
+ 'rhannotate': (rhannotate,
+ [('r', 'rev', '', 'revision'),
+ ('u', 'user', None, 'list the author (long with -v)'),
+ ('n', 'number', None, 'list the revision number (default)'),
+ ('c', 'changeset', None, 'list the changeset'),
+ ],
+ 'hg rhannotate [-r REV] [-u] [-n] [-c] FILE...'),
+ 'rhcat': (rhcat,
+ [('r', 'rev', '', 'revision')],
+ 'hg rhcat ([-r REV] ...) FILE...'),
+ 'rhdiff': (rhdiff,
+ [('r', 'rev', [], 'revision'),
+ ('c', 'change', '', 'change made by revision')],
+ 'hg rhdiff ([-c REV] | [-r REV] ...) [FILE]...'),
+ 'rhmanifest': (rhmanifest,
+ [('r', 'rev', '', 'show the specified revision')],
+ 'hg rhmanifest [-r REV] [PATH]'),
+ 'rhsummary': (rhsummary, [], 'hg rhsummary'),
+}
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/mercurial_adapter.rb
--- a/lib/redmine/scm/adapters/mercurial_adapter.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/scm/adapters/mercurial_adapter.rb Thu Mar 03 11:42:28 2011 +0000
@@ -20,32 +20,51 @@
module Redmine
module Scm
- module Adapters
+ module Adapters
class MercurialAdapter < AbstractAdapter
# Mercurial executable name
HG_BIN = Redmine::Configuration['scm_mercurial_command'] || "hg"
- TEMPLATES_DIR = File.dirname(__FILE__) + "/mercurial"
+ HELPERS_DIR = File.dirname(__FILE__) + "/mercurial"
+ HG_HELPER_EXT = "#{HELPERS_DIR}/redminehelper.py"
TEMPLATE_NAME = "hg-template"
TEMPLATE_EXTENSION = "tmpl"
+ # raised if hg command exited with error, e.g. unknown revision.
+ class HgCommandAborted < CommandFailed; end
+
class << self
+ def client_command
+ @@bin ||= HG_BIN
+ end
+
+ def sq_bin
+ @@sq_bin ||= shell_quote(HG_BIN)
+ end
+
def client_version
@@client_version ||= (hgversion || [])
end
- def hgversion
+ def client_available
+ !client_version.empty?
+ end
+
+ def hgversion
# The hg version is expressed either as a
# release number (eg 0.9.5 or 1.0) or as a revision
# id composed of 12 hexa characters.
- theversion = hgversion_from_command_line
+ theversion = hgversion_from_command_line.dup
+ if theversion.respond_to?(:force_encoding)
+ theversion.force_encoding('ASCII-8BIT')
+ end
if m = theversion.match(%r{\A(.*?)((\d+\.)+\d+)})
m[2].scan(%r{\d+}).collect(&:to_i)
end
end
def hgversion_from_command_line
- shellout("#{HG_BIN} --version") { |io| io.read }.to_s
+ shellout("#{sq_bin} --version") { |io| io.read }.to_s
end
def template_path
@@ -58,153 +77,193 @@
else
ver = "0.9.5"
end
- "#{TEMPLATES_DIR}/#{TEMPLATE_NAME}-#{ver}.#{TEMPLATE_EXTENSION}"
+ "#{HELPERS_DIR}/#{TEMPLATE_NAME}-#{ver}.#{TEMPLATE_EXTENSION}"
end
end
- def info
- cmd = "#{HG_BIN} -R #{target('')} root"
- root_url = nil
- shellout(cmd) do |io|
- root_url = io.read
- end
- return nil if $? && $?.exitstatus != 0
- info = Info.new({:root_url => root_url.chomp,
- :lastrev => revisions(nil,nil,nil,{:limit => 1}).last
- })
- info
- rescue CommandFailed
- return nil
+ def initialize(url, root_url=nil, login=nil, password=nil, path_encoding=nil)
+ super
+ @path_encoding = path_encoding || 'UTF-8'
end
- def entries(path=nil, identifier=nil)
- path ||= ''
- entries = Entries.new
- cmd = "#{HG_BIN} -R #{target('')} --cwd #{target('')} locate"
- cmd << " -r #{hgrev(identifier)}"
- cmd << " " + shell_quote("path:#{path}") unless path.empty?
- shellout(cmd) do |io|
- io.each_line do |line|
- # HG uses antislashs as separator on Windows
- line = line.gsub(/\\/, "/")
- if path.empty? or e = line.gsub!(%r{^#{with_trailling_slash(path)}},'')
- e ||= line
- e = e.chomp.split(%r{[\/\\]})
- entries << Entry.new({:name => e.first,
- :path => (path.nil? or path.empty? ? e.first : "#{with_trailling_slash(path)}#{e.first}"),
- :kind => (e.size > 1 ? 'dir' : 'file'),
- :lastrev => Revision.new
- }) unless e.empty? || entries.detect{|entry| entry.name == e.first}
- end
+ def info
+ tip = summary['repository']['tip']
+ Info.new(:root_url => CGI.unescape(summary['repository']['root']),
+ :lastrev => Revision.new(:revision => tip['revision'],
+ :scmid => tip['node']))
+ end
+
+ def tags
+ as_ary(summary['repository']['tag']).map { |e| e['name'] }
+ end
+
+ # Returns map of {'tag' => 'nodeid', ...}
+ def tagmap
+ alist = as_ary(summary['repository']['tag']).map do |e|
+ e.values_at('name', 'node')
+ end
+ Hash[*alist.flatten]
+ end
+
+ def branches
+ as_ary(summary['repository']['branch']).map { |e| e['name'] }
+ end
+
+ # Returns map of {'branch' => 'nodeid', ...}
+ def branchmap
+ alist = as_ary(summary['repository']['branch']).map do |e|
+ e.values_at('name', 'node')
+ end
+ Hash[*alist.flatten]
+ end
+
+ def summary
+ return @summary if @summary
+ hg 'rhsummary' do |io|
+ output = io.read
+ if output.respond_to?(:force_encoding)
+ output.force_encoding('UTF-8')
+ end
+ begin
+ @summary = ActiveSupport::XmlMini.parse(output)['rhsummary']
+ rescue
end
end
- return nil if $? && $?.exitstatus != 0
- entries.sort_by_name
+ end
+ private :summary
+
+ def entries(path=nil, identifier=nil)
+ p1 = scm_iconv(@path_encoding, 'UTF-8', path)
+ manifest = hg('rhmanifest', '-r', CGI.escape(hgrev(identifier)),
+ CGI.escape(without_leading_slash(p1.to_s))) do |io|
+ output = io.read
+ if output.respond_to?(:force_encoding)
+ output.force_encoding('UTF-8')
+ end
+ begin
+ ActiveSupport::XmlMini.parse(output)['rhmanifest']['repository']['manifest']
+ rescue
+ end
+ end
+ path_prefix = path.blank? ? '' : with_trailling_slash(path)
+
+ entries = Entries.new
+ as_ary(manifest['dir']).each do |e|
+ n = scm_iconv('UTF-8', @path_encoding, CGI.unescape(e['name']))
+ p = "#{path_prefix}#{n}"
+ entries << Entry.new(:name => n, :path => p, :kind => 'dir')
+ end
+
+ as_ary(manifest['file']).each do |e|
+ n = scm_iconv('UTF-8', @path_encoding, CGI.unescape(e['name']))
+ p = "#{path_prefix}#{n}"
+ lr = Revision.new(:revision => e['revision'], :scmid => e['node'],
+ :identifier => e['node'],
+ :time => Time.at(e['time'].to_i))
+ entries << Entry.new(:name => n, :path => p, :kind => 'file',
+ :size => e['size'].to_i, :lastrev => lr)
+ end
+
+ entries
+ rescue HgCommandAborted
+ nil # means not found
end
- # Fetch the revisions by using a template file that
+ def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={})
+ revs = Revisions.new
+ each_revision(path, identifier_from, identifier_to, options) { |e| revs << e }
+ revs
+ end
+
+ # Iterates the revisions by using a template file that
# makes Mercurial produce a xml output.
- def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={})
- revisions = Revisions.new
- cmd = "#{HG_BIN} --debug --encoding utf8 -R #{target('')} log -C --style #{shell_quote self.class.template_path}"
- if identifier_from && identifier_to
- cmd << " -r #{hgrev(identifier_from)}:#{hgrev(identifier_to)}"
- elsif identifier_from
- cmd << " -r #{hgrev(identifier_from)}:"
- end
- cmd << " --limit #{options[:limit].to_i}" if options[:limit]
- cmd << " #{shell_quote path}" unless path.blank?
- shellout(cmd) do |io|
+ def each_revision(path=nil, identifier_from=nil, identifier_to=nil, options={})
+ hg_args = ['log', '--debug', '-C', '--style', self.class.template_path]
+ hg_args << '-r' << "#{hgrev(identifier_from)}:#{hgrev(identifier_to)}"
+ hg_args << '--limit' << options[:limit] if options[:limit]
+ hg_args << hgtarget(path) unless path.blank?
+ log = hg(*hg_args) do |io|
+ output = io.read
+ if output.respond_to?(:force_encoding)
+ output.force_encoding('UTF-8')
+ end
begin
- # HG doesn't close the XML Document...
- doc = REXML::Document.new(io.read << "")
- doc.elements.each("log/logentry") do |logentry|
- paths = []
- copies = logentry.get_elements('paths/path-copied')
- logentry.elements.each("paths/path") do |path|
- # Detect if the added file is a copy
- if path.attributes['action'] == 'A' and c = copies.find{ |e| e.text == path.text }
- from_path = c.attributes['copyfrom-path']
- from_rev = logentry.attributes['revision']
- end
- paths << {:action => path.attributes['action'],
- :path => "/#{CGI.unescape(path.text)}",
- :from_path => from_path ? "/#{CGI.unescape(from_path)}" : nil,
- :from_revision => from_rev ? from_rev : nil
- }
- end
- paths.sort! { |x,y| x[:path] <=> y[:path] }
-
- revisions << Revision.new({:identifier => logentry.attributes['revision'],
- :scmid => logentry.attributes['node'],
- :author => (logentry.elements['author'] ? logentry.elements['author'].text : ""),
- :time => Time.parse(logentry.elements['date'].text).localtime,
- :message => logentry.elements['msg'].text,
- :paths => paths
- })
- end
+ # Mercurial < 1.5 does not support footer template for ''
+ ActiveSupport::XmlMini.parse("#{output}")['log']
rescue
- logger.debug($!)
end
end
- return nil if $? && $?.exitstatus != 0
- revisions
+
+ as_ary(log['logentry']).each do |le|
+ cpalist = as_ary(le['paths']['path-copied']).map do |e|
+ [e['__content__'], e['copyfrom-path']].map { |s| CGI.unescape(s) }
+ end
+ cpmap = Hash[*cpalist.flatten]
+
+ paths = as_ary(le['paths']['path']).map do |e|
+ p = scm_iconv('UTF-8', @path_encoding, CGI.unescape(e['__content__']) )
+ {:action => e['action'], :path => with_leading_slash(p),
+ :from_path => (cpmap.member?(p) ? with_leading_slash(cpmap[p]) : nil),
+ :from_revision => (cpmap.member?(p) ? le['revision'] : nil)}
+ end.sort { |a, b| a[:path] <=> b[:path] }
+
+ yield Revision.new(:revision => le['revision'],
+ :scmid => le['node'],
+ :author => (le['author']['__content__'] rescue ''),
+ :time => Time.parse(le['date']['__content__']).localtime,
+ :message => le['msg']['__content__'],
+ :paths => paths)
+ end
+ self
end
def diff(path, identifier_from, identifier_to=nil)
- path ||= ''
- diff_args = ''
+ hg_args = %w|rhdiff|
+ if identifier_to
+ hg_args << '-r' << hgrev(identifier_to) << '-r' << hgrev(identifier_from)
+ else
+ hg_args << '-c' << hgrev(identifier_from)
+ end
+ unless path.blank?
+ p = scm_iconv(@path_encoding, 'UTF-8', path)
+ hg_args << CGI.escape(hgtarget(p))
+ end
diff = []
- if identifier_to
- diff_args = "-r #{hgrev(identifier_to)} -r #{hgrev(identifier_from)}"
- else
- if self.class.client_version_above?([1, 2])
- diff_args = "-c #{hgrev(identifier_from)}"
- else
- return []
- end
- end
- cmd = "#{HG_BIN} -R #{target('')} --config diff.git=false diff --nodates #{diff_args}"
- cmd << " -I #{target(path)}" unless path.empty?
- shellout(cmd) do |io|
+ hg *hg_args do |io|
io.each_line do |line|
diff << line
end
end
- return nil if $? && $?.exitstatus != 0
diff
+ rescue HgCommandAborted
+ nil # means not found
end
def cat(path, identifier=nil)
- cmd = "#{HG_BIN} -R #{target('')} cat"
- cmd << " -r #{hgrev(identifier)}"
- cmd << " #{target(path)}"
- cat = nil
- shellout(cmd) do |io|
+ p = CGI.escape(scm_iconv(@path_encoding, 'UTF-8', path))
+ hg 'rhcat', '-r', hgrev(identifier), hgtarget(p) do |io|
io.binmode
- cat = io.read
+ io.read
end
- return nil if $? && $?.exitstatus != 0
- cat
+ rescue HgCommandAborted
+ nil # means not found
end
def annotate(path, identifier=nil)
- path ||= ''
- cmd = "#{HG_BIN} -R #{target('')}"
- cmd << " annotate -ncu"
- cmd << " -r #{hgrev(identifier)}"
- cmd << " #{target(path)}"
+ p = CGI.escape(scm_iconv(@path_encoding, 'UTF-8', path))
blame = Annotate.new
- shellout(cmd) do |io|
+ hg 'rhannotate', '-ncu', '-r', hgrev(identifier), hgtarget(p) do |io|
io.each_line do |line|
+ line.force_encoding('ASCII-8BIT') if line.respond_to?(:force_encoding)
next unless line =~ %r{^([^:]+)\s(\d+)\s([0-9a-f]+):\s(.*)$}
r = Revision.new(:author => $1.strip, :revision => $2, :scmid => $3,
:identifier => $3)
blame.add_line($4.rstrip, r)
end
end
- return nil if $? && $?.exitstatus != 0
blame
+ rescue HgCommandAborted
+ nil # means not found or cannot be annotated
end
class Revision < Redmine::Scm::Adapters::Revision
@@ -214,11 +273,40 @@
end
end
+ # Runs 'hg' command with the given args
+ def hg(*args, &block)
+ repo_path = root_url || url
+ full_args = [HG_BIN, '-R', repo_path, '--encoding', 'utf-8']
+ full_args << '--config' << "extensions.redminehelper=#{HG_HELPER_EXT}"
+ full_args << '--config' << 'diff.git=false'
+ full_args += args
+ ret = shellout(full_args.map { |e| shell_quote e.to_s }.join(' '), &block)
+ if $? && $?.exitstatus != 0
+ raise HgCommandAborted, "hg exited with non-zero status: #{$?.exitstatus}"
+ end
+ ret
+ end
+ private :hg
+
# Returns correct revision identifier
- def hgrev(identifier)
- shell_quote(identifier.blank? ? 'tip' : identifier.to_s)
+ def hgrev(identifier, sq=false)
+ rev = identifier.blank? ? 'tip' : identifier.to_s
+ rev = shell_quote(rev) if sq
+ rev
end
private :hgrev
+
+ def hgtarget(path)
+ path ||= ''
+ root_url + '/' + without_leading_slash(path)
+ end
+ private :hgtarget
+
+ def as_ary(o)
+ return [] unless o
+ o.is_a?(Array) ? o : Array[o]
+ end
+ private :as_ary
end
end
end
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/scm/adapters/subversion_adapter.rb
--- a/lib/redmine/scm/adapters/subversion_adapter.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/scm/adapters/subversion_adapter.rb Thu Mar 03 11:42:28 2011 +0000
@@ -20,38 +20,54 @@
module Redmine
module Scm
- module Adapters
+ module Adapters
class SubversionAdapter < AbstractAdapter
-
+
# SVN executable name
SVN_BIN = Redmine::Configuration['scm_subversion_command'] || "svn"
-
+
class << self
+ def client_command
+ @@bin ||= SVN_BIN
+ end
+
+ def sq_bin
+ @@sq_bin ||= shell_quote(SVN_BIN)
+ end
+
def client_version
@@client_version ||= (svn_binary_version || [])
end
-
+
+ def client_available
+ !client_version.empty?
+ end
+
def svn_binary_version
- cmd = "#{SVN_BIN} --version"
- version = nil
- shellout(cmd) do |io|
- # Read svn version in first returned line
- if m = io.read.to_s.match(%r{\A(.*?)((\d+\.)+\d+)})
- version = m[2].scan(%r{\d+}).collect(&:to_i)
- end
+ scm_version = scm_version_from_command_line.dup
+ if scm_version.respond_to?(:force_encoding)
+ scm_version.force_encoding('ASCII-8BIT')
end
- return nil if $? && $?.exitstatus != 0
- version
+ if m = scm_version.match(%r{\A(.*?)((\d+\.)+\d+)})
+ m[2].scan(%r{\d+}).collect(&:to_i)
+ end
+ end
+
+ def scm_version_from_command_line
+ shellout("#{sq_bin} --version") { |io| io.read }.to_s
end
end
-
+
# Get info about the svn repository
def info
- cmd = "#{SVN_BIN} info --xml #{target}"
+ cmd = "#{self.class.sq_bin} info --xml #{target}"
cmd << credentials_string
info = nil
shellout(cmd) do |io|
output = io.read
+ if output.respond_to?(:force_encoding)
+ output.force_encoding('UTF-8')
+ end
begin
doc = ActiveSupport::XmlMini.parse(output)
#root_url = doc.elements["info/entry/repository/root"].text
@@ -70,17 +86,20 @@
rescue CommandFailed
return nil
end
-
+
# Returns an Entries collection
# or nil if the given path doesn't exist in the repository
def entries(path=nil, identifier=nil)
path ||= ''
identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD"
entries = Entries.new
- cmd = "#{SVN_BIN} list --xml #{target(path)}@#{identifier}"
+ cmd = "#{self.class.sq_bin} list --xml #{target(path)}@#{identifier}"
cmd << credentials_string
shellout(cmd) do |io|
output = io.read
+ if output.respond_to?(:force_encoding)
+ output.force_encoding('UTF-8')
+ end
begin
doc = ActiveSupport::XmlMini.parse(output)
each_xml_element(doc['lists']['list'], 'entry') do |entry|
@@ -110,17 +129,20 @@
logger.debug("Found #{entries.size} entries in the repository for #{target(path)}") if logger && logger.debug?
entries.sort_by_name
end
-
+
def properties(path, identifier=nil)
# proplist xml output supported in svn 1.5.0 and higher
return nil unless self.class.client_version_above?([1, 5, 0])
identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD"
- cmd = "#{SVN_BIN} proplist --verbose --xml #{target(path)}@#{identifier}"
+ cmd = "#{self.class.sq_bin} proplist --verbose --xml #{target(path)}@#{identifier}"
cmd << credentials_string
properties = {}
shellout(cmd) do |io|
output = io.read
+ if output.respond_to?(:force_encoding)
+ output.force_encoding('UTF-8')
+ end
begin
doc = ActiveSupport::XmlMini.parse(output)
each_xml_element(doc['properties']['target'], 'property') do |property|
@@ -132,19 +154,22 @@
return nil if $? && $?.exitstatus != 0
properties
end
-
+
def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={})
path ||= ''
identifier_from = (identifier_from && identifier_from.to_i > 0) ? identifier_from.to_i : "HEAD"
identifier_to = (identifier_to && identifier_to.to_i > 0) ? identifier_to.to_i : 1
revisions = Revisions.new
- cmd = "#{SVN_BIN} log --xml -r #{identifier_from}:#{identifier_to}"
+ cmd = "#{self.class.sq_bin} log --xml -r #{identifier_from}:#{identifier_to}"
cmd << credentials_string
cmd << " --verbose " if options[:with_paths]
cmd << " --limit #{options[:limit].to_i}" if options[:limit]
cmd << ' ' + target(path)
shellout(cmd) do |io|
output = io.read
+ if output.respond_to?(:force_encoding)
+ output.force_encoding('UTF-8')
+ end
begin
doc = ActiveSupport::XmlMini.parse(output)
each_xml_element(doc['log'], 'logentry') do |logentry|
@@ -171,13 +196,14 @@
return nil if $? && $?.exitstatus != 0
revisions
end
-
+
def diff(path, identifier_from, identifier_to=nil, type="inline")
path ||= ''
identifier_from = (identifier_from and identifier_from.to_i > 0) ? identifier_from.to_i : ''
+
identifier_to = (identifier_to and identifier_to.to_i > 0) ? identifier_to.to_i : (identifier_from.to_i - 1)
-
- cmd = "#{SVN_BIN} diff -r "
+
+ cmd = "#{self.class.sq_bin} diff -r "
cmd << "#{identifier_to}:"
cmd << "#{identifier_from}"
cmd << " #{target(path)}@#{identifier_from}"
@@ -191,10 +217,10 @@
return nil if $? && $?.exitstatus != 0
diff
end
-
+
def cat(path, identifier=nil)
identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD"
- cmd = "#{SVN_BIN} cat #{target(path)}@#{identifier}"
+ cmd = "#{self.class.sq_bin} cat #{target(path)}@#{identifier}"
cmd << credentials_string
cat = nil
shellout(cmd) do |io|
@@ -204,10 +230,10 @@
return nil if $? && $?.exitstatus != 0
cat
end
-
+
def annotate(path, identifier=nil)
identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD"
- cmd = "#{SVN_BIN} blame #{target(path)}@#{identifier}"
+ cmd = "#{self.class.sq_bin} blame #{target(path)}@#{identifier}"
cmd << credentials_string
blame = Annotate.new
shellout(cmd) do |io|
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/unified_diff.rb
--- a/lib/redmine/unified_diff.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/unified_diff.rb Thu Mar 03 11:42:28 2011 +0000
@@ -22,13 +22,21 @@
options.assert_valid_keys(:type, :max_lines)
diff = diff.split("\n") if diff.is_a?(String)
diff_type = options[:type] || 'inline'
-
lines = 0
@truncated = false
diff_table = DiffTable.new(diff_type)
diff.each do |line|
+ line_encoding = nil
+ if line.respond_to?(:force_encoding)
+ line_encoding = line.encoding
+ # TODO: UTF-16 and Japanese CP932 which is imcompatible with ASCII
+ # In Japan, diffrence between file path encoding
+ # and file contents encoding is popular.
+ line.force_encoding('ASCII-8BIT')
+ end
unless diff_table.add_line line
- self << diff_table if diff_table.length > 1
+ line.force_encoding(line_encoding) if line_encoding
+ self << diff_table if diff_table.length > 0
diff_table = DiffTable.new(diff_type)
end
lines += 1
@@ -40,7 +48,7 @@
self << diff_table unless diff_table.empty?
self
end
-
+
def truncated?; @truncated; end
end
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/views/.svn/entries
--- a/lib/redmine/views/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/views/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/redmine/views
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/views/builders/.svn/entries
--- a/lib/redmine/views/builders/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/views/builders/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/redmine/views/builders
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/views/my_page/.svn/entries
--- a/lib/redmine/views/my_page/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/views/my_page/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/redmine/views/my_page
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/wiki_formatting/.svn/entries
--- a/lib/redmine/wiki_formatting/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/wiki_formatting/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/redmine/wiki_formatting
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe lib/redmine/wiki_formatting/textile/.svn/entries
--- a/lib/redmine/wiki_formatting/textile/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/redmine/wiki_formatting/textile/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/redmine/wiki_formatting/textile
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe lib/tasks/.svn/all-wcprops
--- a/lib/tasks/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/tasks/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 34
-/svn/!svn/ver/4765/trunk/lib/tasks
+/svn/!svn/ver/4950/trunk/lib/tasks
END
deprecated.rake
K 25
@@ -27,17 +27,23 @@
V 48
/svn/!svn/ver/4167/trunk/lib/tasks/reminder.rake
END
+metrics.rake
+K 25
+svn:wc:ra_dav:version-url
+V 47
+/svn/!svn/ver/2825/trunk/lib/tasks/metrics.rake
+END
initializers.rake
K 25
svn:wc:ra_dav:version-url
V 52
/svn/!svn/ver/4405/trunk/lib/tasks/initializers.rake
END
-metrics.rake
+ciphering.rake
K 25
svn:wc:ra_dav:version-url
-V 47
-/svn/!svn/ver/2825/trunk/lib/tasks/metrics.rake
+V 49
+/svn/!svn/ver/4950/trunk/lib/tasks/ciphering.rake
END
permissions.rake
K 25
@@ -55,7 +61,7 @@
K 25
svn:wc:ra_dav:version-url
V 47
-/svn/!svn/ver/4687/trunk/lib/tasks/testing.rake
+/svn/!svn/ver/4806/trunk/lib/tasks/testing.rake
END
watchers.rake
K 25
@@ -63,23 +69,23 @@
V 48
/svn/!svn/ver/3167/trunk/lib/tasks/watchers.rake
END
+plugins.rake
+K 25
+svn:wc:ra_dav:version-url
+V 47
+/svn/!svn/ver/1786/trunk/lib/tasks/plugins.rake
+END
yardoc.rake
K 25
svn:wc:ra_dav:version-url
V 46
/svn/!svn/ver/3922/trunk/lib/tasks/yardoc.rake
END
-plugins.rake
-K 25
-svn:wc:ra_dav:version-url
-V 47
-/svn/!svn/ver/1786/trunk/lib/tasks/plugins.rake
-END
locales.rake
K 25
svn:wc:ra_dav:version-url
V 47
-/svn/!svn/ver/4254/trunk/lib/tasks/locales.rake
+/svn/!svn/ver/4937/trunk/lib/tasks/locales.rake
END
migrate_from_trac.rake
K 25
diff -r 8972b600f4fb -r 051f544170fe lib/tasks/.svn/entries
--- a/lib/tasks/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/tasks/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/lib/tasks
http://redmine.rubyforge.org/svn
-2011-01-28T19:45:09.952949Z
-4765
+2011-02-26T13:09:25.657748Z
+4950
jplang
@@ -162,6 +162,40 @@
1606
+metrics.rake
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+0254f4ee916dee0a2572e63e947f8a1b
+2009-07-27T00:55:43.057910Z
+2825
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+113
+
initializers.rake
file
@@ -196,17 +230,18 @@
1343
-metrics.rake
+ciphering.rake
file
-2011-03-03T11:05:14.000000Z
-0254f4ee916dee0a2572e63e947f8a1b
-2009-07-27T00:55:43.057910Z
-2825
-edavis10
+2011-03-03T11:40:18.000000Z
+b522c20249b1fad89c3276d10ccaaf6b
+2011-02-26T13:09:25.657748Z
+4950
+jplang
+has-props
@@ -227,8 +262,7 @@
-
-113
+1409
permissions.rake
file
@@ -304,10 +338,10 @@
-2011-03-03T11:05:23.000000Z
-62ce14359d5062666d86230adc5ba695
-2011-01-11T08:41:11.973101Z
-4687
+2011-03-03T11:40:18.000000Z
+ca73c8345daa839f0145c671ad94b91f
+2011-02-11T15:30:45.959165Z
+4806
tmaruyama
@@ -330,7 +364,7 @@
-3280
+3376
watchers.rake
file
@@ -366,6 +400,40 @@
180
+plugins.rake
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+f27a83cf3f04d7906ac2f3ca40d01a20
+2008-09-05T10:31:06.632668Z
+1786
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1256
+
yardoc.rake
file
@@ -400,51 +468,17 @@
578
-plugins.rake
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-f27a83cf3f04d7906ac2f3ca40d01a20
-2008-09-05T10:31:06.632668Z
-1786
-jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-1256
-
locales.rake
file
-2011-03-03T11:05:23.000000Z
-8cb19171aae8528b3149b7efa211fc50
-2010-10-15T22:41:47.658318Z
-4254
-edavis10
+2011-03-03T11:40:18.000000Z
+ceb44040708bb290ad5b62b5a366e823
+2011-02-23T18:03:33.945201Z
+4937
+jplang
has-props
@@ -466,7 +500,7 @@
-3360
+4250
migrate_from_trac.rake
file
diff -r 8972b600f4fb -r 051f544170fe lib/tasks/.svn/prop-base/ciphering.rake.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/tasks/.svn/prop-base/ciphering.rake.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:eol-style
+V 6
+native
+END
diff -r 8972b600f4fb -r 051f544170fe lib/tasks/.svn/text-base/ciphering.rake.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/tasks/.svn/text-base/ciphering.rake.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,35 @@
+# Redmine - project management software
+# Copyright (C) 2006-2011 Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+namespace :db do
+ desc 'Encrypts SCM and LDAP passwords in the database.'
+ task :encrypt => :environment do
+ unless (Repository.encrypt_all(:password) &&
+ AuthSource.encrypt_all(:account_password))
+ raise "Some objects could not be saved after encryption, update was rollback'ed."
+ end
+ end
+
+ desc 'Decrypts SCM and LDAP passwords in the database.'
+ task :decrypt => :environment do
+ unless (Repository.decrypt_all(:password) &&
+ AuthSource.decrypt_all(:account_password))
+ raise "Some objects could not be saved after decryption, update was rollback'ed."
+ end
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe lib/tasks/.svn/text-base/locales.rake.svn-base
--- a/lib/tasks/.svn/text-base/locales.rake.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/tasks/.svn/text-base/locales.rake.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -1,3 +1,10 @@
+desc 'Updates and checks locales against en.yml'
+task :locales do
+ %w(locales:update locales:check_interpolation).collect do |task|
+ Rake::Task[task].invoke
+ end
+end
+
namespace :locales do
desc 'Updates language files based on en.yml content (only works for new top level keys).'
task :update do
@@ -28,6 +35,26 @@
lang.close
end
end
+
+ desc 'Checks interpolation arguments in locals against en.yml'
+ task :check_interpolation do
+ dir = ENV['DIR'] || './config/locales'
+ en_strings = YAML.load(File.read(File.join(dir,'en.yml')))['en']
+ files = Dir.glob(File.join(dir,'*.{yaml,yml}'))
+ files.each do |file|
+ file_strings = YAML.load(File.read(file))
+ file_strings = file_strings[file_strings.keys.first]
+
+ file_strings.each do |key, string|
+ next unless string.is_a?(String)
+ string.scan /%\{\w+\}/ do |match|
+ unless en_strings[key].nil? || en_strings[key].include?(match)
+ puts "#{file}: #{key} uses #{match} not found in en.yml"
+ end
+ end
+ end
+ end
+ end
desc <<-END_DESC
Removes a translation string from all locale file (only works for top-level childless non-multiline keys, probably doesn\'t work on windows).
diff -r 8972b600f4fb -r 051f544170fe lib/tasks/.svn/text-base/testing.rake.svn-base
--- a/lib/tasks/.svn/text-base/testing.rake.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/tasks/.svn/text-base/testing.rake.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -51,7 +51,8 @@
(supported_scms - [:subversion, :mercurial]).each do |scm|
desc "Creates a test #{scm} repository"
task scm => :create_dir do
- system "gunzip < test/fixtures/repositories/#{scm}_repository.tar.gz | tar -xv -C tmp/test"
+ # system "gunzip < test/fixtures/repositories/#{scm}_repository.tar.gz | tar -xv -C tmp/test"
+ system "tar -xvz -C tmp/test -f test/fixtures/repositories/#{scm}_repository.tar.gz"
end
end
diff -r 8972b600f4fb -r 051f544170fe lib/tasks/ciphering.rake
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/tasks/ciphering.rake Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,35 @@
+# Redmine - project management software
+# Copyright (C) 2006-2011 Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+namespace :db do
+ desc 'Encrypts SCM and LDAP passwords in the database.'
+ task :encrypt => :environment do
+ unless (Repository.encrypt_all(:password) &&
+ AuthSource.encrypt_all(:account_password))
+ raise "Some objects could not be saved after encryption, update was rollback'ed."
+ end
+ end
+
+ desc 'Decrypts SCM and LDAP passwords in the database.'
+ task :decrypt => :environment do
+ unless (Repository.decrypt_all(:password) &&
+ AuthSource.decrypt_all(:account_password))
+ raise "Some objects could not be saved after decryption, update was rollback'ed."
+ end
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe lib/tasks/locales.rake
--- a/lib/tasks/locales.rake Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/tasks/locales.rake Thu Mar 03 11:42:28 2011 +0000
@@ -1,3 +1,10 @@
+desc 'Updates and checks locales against en.yml'
+task :locales do
+ %w(locales:update locales:check_interpolation).collect do |task|
+ Rake::Task[task].invoke
+ end
+end
+
namespace :locales do
desc 'Updates language files based on en.yml content (only works for new top level keys).'
task :update do
@@ -28,6 +35,26 @@
lang.close
end
end
+
+ desc 'Checks interpolation arguments in locals against en.yml'
+ task :check_interpolation do
+ dir = ENV['DIR'] || './config/locales'
+ en_strings = YAML.load(File.read(File.join(dir,'en.yml')))['en']
+ files = Dir.glob(File.join(dir,'*.{yaml,yml}'))
+ files.each do |file|
+ file_strings = YAML.load(File.read(file))
+ file_strings = file_strings[file_strings.keys.first]
+
+ file_strings.each do |key, string|
+ next unless string.is_a?(String)
+ string.scan /%\{\w+\}/ do |match|
+ unless en_strings[key].nil? || en_strings[key].include?(match)
+ puts "#{file}: #{key} uses #{match} not found in en.yml"
+ end
+ end
+ end
+ end
+ end
desc <<-END_DESC
Removes a translation string from all locale file (only works for top-level childless non-multiline keys, probably doesn\'t work on windows).
diff -r 8972b600f4fb -r 051f544170fe lib/tasks/testing.rake
--- a/lib/tasks/testing.rake Thu Mar 03 11:40:10 2011 +0000
+++ b/lib/tasks/testing.rake Thu Mar 03 11:42:28 2011 +0000
@@ -51,7 +51,8 @@
(supported_scms - [:subversion, :mercurial]).each do |scm|
desc "Creates a test #{scm} repository"
task scm => :create_dir do
- system "gunzip < test/fixtures/repositories/#{scm}_repository.tar.gz | tar -xv -C tmp/test"
+ # system "gunzip < test/fixtures/repositories/#{scm}_repository.tar.gz | tar -xv -C tmp/test"
+ system "tar -xvz -C tmp/test -f test/fixtures/repositories/#{scm}_repository.tar.gz"
end
end
diff -r 8972b600f4fb -r 051f544170fe log/.svn/entries
--- a/log/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/log/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/log
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe public/.svn/all-wcprops
--- a/public/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/public/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 31
-/svn/!svn/ver/4782/trunk/public
+/svn/!svn/ver/4954/trunk/public
END
dispatch.fcgi.example
K 25
diff -r 8972b600f4fb -r 051f544170fe public/.svn/entries
--- a/public/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/public/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/public
http://redmine.rubyforge.org/svn
-2011-01-30T09:09:50.276451Z
-4782
+2011-02-27T13:34:41.060565Z
+4954
jplang
has-props
diff -r 8972b600f4fb -r 051f544170fe public/help/.svn/entries
--- a/public/help/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/public/help/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/public/help
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe public/images/.svn/entries
--- a/public/images/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/public/images/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/public/images
http://redmine.rubyforge.org/svn
@@ -162,6 +162,74 @@
218
+milestone_late.png
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+ecc1979ed435769c700725495428359f
+2010-09-10T03:09:02.311267Z
+4072
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+160
+
+folder_open_add.png
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+8ae3a2d9ef884ed73a4157cd9c0465b8
+2010-02-13T09:08:12.698526Z
+3419
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+375
+
2downarrow.png
file
@@ -196,74 +264,6 @@
282
-folder_open_add.png
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-8ae3a2d9ef884ed73a4157cd9c0465b8
-2010-02-13T09:08:12.698526Z
-3419
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-375
-
-milestone_late.png
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-ecc1979ed435769c700725495428359f
-2010-09-10T03:09:02.311267Z
-4072
-edavis10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-160
-
warning.png
file
@@ -298,6 +298,74 @@
613
+move.png
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+0a2ceb01cbc3c01186fdcc25ced8eb0d
+2010-02-13T09:08:12.698526Z
+3419
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+321
+
+fav_off.png
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+ff96c02d8f18116bb3f005f2c8b86e91
+2010-02-13T09:08:12.698526Z
+3419
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+211
+
reload.png
file
@@ -332,74 +400,6 @@
549
-fav_off.png
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-ff96c02d8f18116bb3f005f2c8b86e91
-2010-02-13T09:08:12.698526Z
-3419
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-211
-
-move.png
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-0a2ceb01cbc3c01186fdcc25ced8eb0d
-2010-02-13T09:08:12.698526Z
-3419
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-321
-
project_marker.png
file
@@ -468,6 +468,40 @@
641
+zoom_in.png
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+91b883d074b727f1a95cd0ce48510a3c
+2010-02-13T09:08:12.698526Z
+3419
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+461
+
copy.png
file
@@ -502,40 +536,6 @@
925
-zoom_in.png
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-91b883d074b727f1a95cd0ce48510a3c
-2010-02-13T09:08:12.698526Z
-3419
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-461
-
news.png
file
@@ -1083,6 +1083,40 @@
137
+bullet_delete.png
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+fba036d7348ff28f7ab7dacbc52bc32a
+2010-02-13T09:08:12.698526Z
+3419
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+255
+
text_list_bullets.png
file
@@ -1117,40 +1151,6 @@
291
-bullet_delete.png
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-fba036d7348ff28f7ab7dacbc52bc32a
-2010-02-13T09:08:12.698526Z
-3419
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-255
-
bullet_arrow_left.png
file
@@ -1423,6 +1423,40 @@
403
+attachment.png
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+0a35d4eaddb2292fed7062295ee0dcd8
+2010-02-13T09:08:12.698526Z
+3419
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+939
+
textfield.png
file
@@ -1457,40 +1491,6 @@
100
-attachment.png
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-0a35d4eaddb2292fed7062295ee0dcd8
-2010-02-13T09:08:12.698526Z
-3419
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-939
-
false.png
file
@@ -1525,6 +1525,40 @@
459
+bullet_toggle_plus.png
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+06cbf5da7daca348a87a6299a4112d71
+2010-02-13T09:08:12.698526Z
+3419
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+217
+
unlock.png
file
@@ -1559,40 +1593,6 @@
448
-bullet_toggle_plus.png
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-06cbf5da7daca348a87a6299a4112d71
-2010-02-13T09:08:12.698526Z
-3419
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-217
-
group.png
file
@@ -1627,6 +1627,108 @@
700
+plugin.png
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+e019855b07d30f1ce1baf59b9df27125
+2010-02-13T09:08:12.698526Z
+3419
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+538
+
+loading.gif
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+03ce3dcc84af110e9da8699a841e5200
+2006-12-03T19:55:45.161980Z
+62
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1553
+
+bullet_blue.png
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+3363f60299360fb5539b769d089e145f
+2010-02-13T09:08:12.698526Z
+3419
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+241
+
save.png
file
@@ -1661,108 +1763,6 @@
440
-bullet_blue.png
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-3363f60299360fb5539b769d089e145f
-2010-02-13T09:08:12.698526Z
-3419
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-241
-
-loading.gif
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-03ce3dcc84af110e9da8699a841e5200
-2006-12-03T19:55:45.161980Z
-62
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-1553
-
-plugin.png
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-e019855b07d30f1ce1baf59b9df27125
-2010-02-13T09:08:12.698526Z
-3419
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-538
-
bullet_add.png
file
@@ -1831,6 +1831,40 @@
1885
+milestone_done.png
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+40c58172e0c52eee4deb5227ec37f0cf
+2010-09-10T03:09:02.311267Z
+4072
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+137
+
exclamation.png
file
@@ -1865,40 +1899,6 @@
648
-milestone_done.png
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-40c58172e0c52eee4deb5227ec37f0cf
-2010-09-10T03:09:02.311267Z
-4072
-edavis10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-137
-
ticket_go.png
file
@@ -1933,6 +1933,74 @@
608
+folder.png
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+59f2dc025632f00403490176e7f42bfc
+2010-02-13T09:08:12.698526Z
+3419
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+970
+
+report.png
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+8d8ec49f5773997411ff708a82e40568
+2010-02-13T09:08:12.698526Z
+3419
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1014
+
zoom_out.png
file
@@ -1967,74 +2035,6 @@
461
-report.png
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-8d8ec49f5773997411ff708a82e40568
-2010-02-13T09:08:12.698526Z
-3419
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-1014
-
-folder.png
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-59f2dc025632f00403490176e7f42bfc
-2010-02-13T09:08:12.698526Z
-3419
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-970
-
fav.png
file
@@ -2069,6 +2069,40 @@
378
+bullet_purple.png
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+c4c76ce450e3e838afd6aa8f34a8d9a8
+2010-02-13T09:08:12.698526Z
+3419
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+244
+
document.png
file
@@ -2103,40 +2137,6 @@
333
-bullet_purple.png
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-c4c76ce450e3e838afd6aa8f34a8d9a8
-2010-02-13T09:08:12.698526Z
-3419
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-244
-
true.png
file
diff -r 8972b600f4fb -r 051f544170fe public/images/files/.svn/entries
--- a/public/images/files/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/public/images/files/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/public/images/files
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe public/images/jstoolbar/.svn/entries
--- a/public/images/jstoolbar/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/public/images/jstoolbar/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/public/images/jstoolbar
http://redmine.rubyforge.org/svn
@@ -94,6 +94,74 @@
252
+bt_ol.png
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+5477ff20be77ab65aa6b75f47778234e
+2010-02-13T09:08:12.698526Z
+3419
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+248
+
+bt_h3.png
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+cb940b592da5ed0367305cb0514d5684
+2010-02-13T09:08:12.698526Z
+3419
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+261
+
bt_code.png
file
@@ -128,14 +196,14 @@
927
-bt_h3.png
+bt_strong.png
file
2011-03-03T11:05:14.000000Z
-cb940b592da5ed0367305cb0514d5684
+f9d7446ceaa5142a5030e9430b3a2bb4
2010-02-13T09:08:12.698526Z
3419
jplang
@@ -160,41 +228,7 @@
-261
-
-bt_ol.png
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-5477ff20be77ab65aa6b75f47778234e
-2010-02-13T09:08:12.698526Z
-3419
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-248
+244
bt_img.png
file
@@ -230,40 +264,6 @@
1027
-bt_strong.png
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-f9d7446ceaa5142a5030e9430b3a2bb4
-2010-02-13T09:08:12.698526Z
-3419
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-244
-
bt_bq_remove.png
file
diff -r 8972b600f4fb -r 051f544170fe public/javascripts/.svn/all-wcprops
--- a/public/javascripts/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/public/javascripts/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 43
-/svn/!svn/ver/4648/trunk/public/javascripts
+/svn/!svn/ver/4947/trunk/public/javascripts
END
prototype.js
K 25
@@ -13,7 +13,7 @@
K 25
svn:wc:ra_dav:version-url
V 59
-/svn/!svn/ver/4504/trunk/public/javascripts/context_menu.js
+/svn/!svn/ver/4947/trunk/public/javascripts/context_menu.js
END
repository_navigation.js
K 25
@@ -43,7 +43,7 @@
K 25
svn:wc:ra_dav:version-url
V 58
-/svn/!svn/ver/4648/trunk/public/javascripts/application.js
+/svn/!svn/ver/4900/trunk/public/javascripts/application.js
END
controls.js
K 25
diff -r 8972b600f4fb -r 051f544170fe public/javascripts/.svn/entries
--- a/public/javascripts/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/public/javascripts/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/public/javascripts
http://redmine.rubyforge.org/svn
-2011-01-06T21:02:19.982329Z
-4648
+2011-02-24T17:56:17.648907Z
+4947
jplang
@@ -69,10 +69,10 @@
-2011-03-03T11:05:23.000000Z
-d8370dbea2b172789fa1683412c110a5
-2010-12-12T16:26:24.102027Z
-4504
+2011-03-03T11:40:18.000000Z
+3065b1a7ff2aca0c2d6fb394f4fef7fa
+2011-02-24T17:56:17.648907Z
+4947
jplang
has-props
@@ -95,7 +95,7 @@
-7021
+6852
calendar
dir
@@ -242,10 +242,10 @@
-2011-03-03T11:05:23.000000Z
-d9adfbc01d7b99bb5de20d5e9fb145a6
-2011-01-06T21:02:19.982329Z
-4648
+2011-03-03T11:40:18.000000Z
+312c6491eda00cbd741131ab1685a4b9
+2011-02-21T09:53:29.844413Z
+4900
jplang
has-props
@@ -268,7 +268,7 @@
-7727
+8869
controls.js
file
diff -r 8972b600f4fb -r 051f544170fe public/javascripts/.svn/text-base/application.js.svn-base
--- a/public/javascripts/.svn/text-base/application.js.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/public/javascripts/.svn/text-base/application.js.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -46,6 +46,12 @@
Effect.toggle(fieldset.down('div'), 'slide', {duration:0.2});
}
+function hideFieldset(el) {
+ var fieldset = Element.up(el, 'fieldset');
+ fieldset.toggleClassName('collapsed');
+ fieldset.down('div').hide();
+}
+
var fileFieldCount = 1;
function addFileField() {
@@ -249,6 +255,49 @@
Event.observe('project_enabled_module_names_issue_tracking', 'change', f);
}
+/*
+ * Class used to warn user when leaving a page with unsaved textarea
+ * Author: mathias.fischer@berlinonline.de
+*/
+
+var WarnLeavingUnsaved = Class.create({
+ observedForms: false,
+ observedElements: false,
+ changedForms: false,
+ message: null,
+
+ initialize: function(message){
+ this.observedForms = $$('form');
+ this.observedElements = $$('textarea');
+ this.message = message;
+
+ this.observedElements.each(this.observeChange.bind(this));
+ this.observedForms.each(this.submitAction.bind(this));
+
+ window.onbeforeunload = this.unload.bind(this);
+ },
+
+ unload: function(){
+ if(this.changedForms)
+ return this.message;
+ },
+
+ setChanged: function(){
+ this.changedForms = true;
+ },
+
+ setUnchanged: function(){
+ this.changedForms = false;
+ },
+
+ observeChange: function(element){
+ element.observe('change',this.setChanged.bindAsEventListener(this));
+ },
+
+ submitAction: function(element){
+ element.observe('submit',this.setUnchanged.bindAsEventListener(this));
+ }
+});
/* shows and hides ajax indicator */
Ajax.Responders.register({
diff -r 8972b600f4fb -r 051f544170fe public/javascripts/.svn/text-base/context_menu.js.svn-base
--- a/public/javascripts/.svn/text-base/context_menu.js.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/public/javascripts/.svn/text-base/context_menu.js.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -11,7 +11,7 @@
if (!observingContextMenuClick) {
Event.observe(document, 'click', this.Click.bindAsEventListener(this));
- Event.observe(document, (window.opera ? 'click' : 'contextmenu'), this.RightClick.bindAsEventListener(this));
+ Event.observe(document, 'contextmenu', this.RightClick.bindAsEventListener(this));
observingContextMenuClick = true;
}
@@ -23,8 +23,6 @@
this.hideMenu();
// do not show the context menu on links
if (Event.element(e).tagName == 'A') { return; }
- // right-click simulated by Alt+Click with Opera
- if (window.opera && !e.altKey) { return; }
var tr = Event.findElement(e, 'tr');
if (tr == document || tr == undefined || !tr.hasClassName('hascontextmenu')) { return; }
Event.stop(e);
@@ -39,7 +37,6 @@
Click: function(e) {
this.hideMenu();
if (Event.element(e).tagName == 'A') { return; }
- if (window.opera && e.altKey) { return; }
if (Event.isLeftClick(e) || (navigator.appVersion.match(/\bMSIE\b/))) {
var tr = Event.findElement(e, 'tr');
if (tr!=null && tr!=document && tr.hasClassName('hascontextmenu')) {
diff -r 8972b600f4fb -r 051f544170fe public/javascripts/application.js
--- a/public/javascripts/application.js Thu Mar 03 11:40:10 2011 +0000
+++ b/public/javascripts/application.js Thu Mar 03 11:42:28 2011 +0000
@@ -46,6 +46,12 @@
Effect.toggle(fieldset.down('div'), 'slide', {duration:0.2});
}
+function hideFieldset(el) {
+ var fieldset = Element.up(el, 'fieldset');
+ fieldset.toggleClassName('collapsed');
+ fieldset.down('div').hide();
+}
+
var fileFieldCount = 1;
function addFileField() {
@@ -249,6 +255,49 @@
Event.observe('project_enabled_module_names_issue_tracking', 'change', f);
}
+/*
+ * Class used to warn user when leaving a page with unsaved textarea
+ * Author: mathias.fischer@berlinonline.de
+*/
+
+var WarnLeavingUnsaved = Class.create({
+ observedForms: false,
+ observedElements: false,
+ changedForms: false,
+ message: null,
+
+ initialize: function(message){
+ this.observedForms = $$('form');
+ this.observedElements = $$('textarea');
+ this.message = message;
+
+ this.observedElements.each(this.observeChange.bind(this));
+ this.observedForms.each(this.submitAction.bind(this));
+
+ window.onbeforeunload = this.unload.bind(this);
+ },
+
+ unload: function(){
+ if(this.changedForms)
+ return this.message;
+ },
+
+ setChanged: function(){
+ this.changedForms = true;
+ },
+
+ setUnchanged: function(){
+ this.changedForms = false;
+ },
+
+ observeChange: function(element){
+ element.observe('change',this.setChanged.bindAsEventListener(this));
+ },
+
+ submitAction: function(element){
+ element.observe('submit',this.setUnchanged.bindAsEventListener(this));
+ }
+});
/* shows and hides ajax indicator */
Ajax.Responders.register({
diff -r 8972b600f4fb -r 051f544170fe public/javascripts/calendar/.svn/all-wcprops
--- a/public/javascripts/calendar/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/public/javascripts/calendar/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 52
-/svn/!svn/ver/4060/trunk/public/javascripts/calendar
+/svn/!svn/ver/4903/trunk/public/javascripts/calendar
END
calendar-setup.js
K 25
diff -r 8972b600f4fb -r 051f544170fe public/javascripts/calendar/.svn/entries
--- a/public/javascripts/calendar/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/public/javascripts/calendar/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,15 +1,15 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/public/javascripts/calendar
http://redmine.rubyforge.org/svn
-2010-09-05T11:33:08.614151Z
-4060
-winterheart
+2011-02-21T10:08:59.720731Z
+4903
+jplang
diff -r 8972b600f4fb -r 051f544170fe public/javascripts/calendar/lang/.svn/all-wcprops
--- a/public/javascripts/calendar/lang/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/public/javascripts/calendar/lang/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 57
-/svn/!svn/ver/4060/trunk/public/javascripts/calendar/lang
+/svn/!svn/ver/4903/trunk/public/javascripts/calendar/lang
END
calendar-fi.js
K 25
@@ -99,29 +99,29 @@
V 72
/svn/!svn/ver/3227/trunk/public/javascripts/calendar/lang/calendar-id.js
END
+calendar-en.js
+K 25
+svn:wc:ra_dav:version-url
+V 71
+/svn/!svn/ver/419/trunk/public/javascripts/calendar/lang/calendar-en.js
+END
calendar-gl.js
K 25
svn:wc:ra_dav:version-url
V 72
/svn/!svn/ver/2296/trunk/public/javascripts/calendar/lang/calendar-gl.js
END
-calendar-en.js
-K 25
-svn:wc:ra_dav:version-url
-V 71
-/svn/!svn/ver/419/trunk/public/javascripts/calendar/lang/calendar-en.js
-END
calendar-fr.js
K 25
svn:wc:ra_dav:version-url
V 71
/svn/!svn/ver/748/trunk/public/javascripts/calendar/lang/calendar-fr.js
END
-calendar-zh-tw.js
+calendar-nl.js
K 25
svn:wc:ra_dav:version-url
-V 75
-/svn/!svn/ver/1498/trunk/public/javascripts/calendar/lang/calendar-zh-tw.js
+V 71
+/svn/!svn/ver/539/trunk/public/javascripts/calendar/lang/calendar-nl.js
END
calendar-hr.js
K 25
@@ -129,11 +129,11 @@
V 72
/svn/!svn/ver/3320/trunk/public/javascripts/calendar/lang/calendar-hr.js
END
-calendar-nl.js
+calendar-zh-tw.js
K 25
svn:wc:ra_dav:version-url
-V 71
-/svn/!svn/ver/539/trunk/public/javascripts/calendar/lang/calendar-nl.js
+V 75
+/svn/!svn/ver/1498/trunk/public/javascripts/calendar/lang/calendar-zh-tw.js
END
calendar-mn.js
K 25
@@ -141,18 +141,18 @@
V 72
/svn/!svn/ver/3626/trunk/public/javascripts/calendar/lang/calendar-mn.js
END
+calendar-pl.js
+K 25
+svn:wc:ra_dav:version-url
+V 71
+/svn/!svn/ver/749/trunk/public/javascripts/calendar/lang/calendar-pl.js
+END
calendar-th.js
K 25
svn:wc:ra_dav:version-url
V 72
/svn/!svn/ver/1383/trunk/public/javascripts/calendar/lang/calendar-th.js
END
-calendar-pl.js
-K 25
-svn:wc:ra_dav:version-url
-V 71
-/svn/!svn/ver/749/trunk/public/javascripts/calendar/lang/calendar-pl.js
-END
calendar-it.js
K 25
svn:wc:ra_dav:version-url
@@ -171,18 +171,18 @@
V 72
/svn/!svn/ver/1149/trunk/public/javascripts/calendar/lang/calendar-lt.js
END
+calendar-lv.js
+K 25
+svn:wc:ra_dav:version-url
+V 72
+/svn/!svn/ver/3737/trunk/public/javascripts/calendar/lang/calendar-lv.js
+END
calendar-zh.js
K 25
svn:wc:ra_dav:version-url
V 72
/svn/!svn/ver/1498/trunk/public/javascripts/calendar/lang/calendar-zh.js
END
-calendar-lv.js
-K 25
-svn:wc:ra_dav:version-url
-V 72
-/svn/!svn/ver/3737/trunk/public/javascripts/calendar/lang/calendar-lv.js
-END
calendar-pt.js
K 25
svn:wc:ra_dav:version-url
@@ -219,6 +219,12 @@
V 72
/svn/!svn/ver/1817/trunk/public/javascripts/calendar/lang/calendar-tr.js
END
+calendar-fa.js
+K 25
+svn:wc:ra_dav:version-url
+V 72
+/svn/!svn/ver/4903/trunk/public/javascripts/calendar/lang/calendar-fa.js
+END
calendar-bg.js
K 25
svn:wc:ra_dav:version-url
diff -r 8972b600f4fb -r 051f544170fe public/javascripts/calendar/lang/.svn/entries
--- a/public/javascripts/calendar/lang/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/public/javascripts/calendar/lang/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,15 +1,15 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/public/javascripts/calendar/lang
http://redmine.rubyforge.org/svn
-2010-09-05T11:33:08.614151Z
-4060
-winterheart
+2011-02-21T10:08:59.720731Z
+4903
+jplang
@@ -570,40 +570,6 @@
3845
-calendar-gl.js
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-c4f74e36f6a3debcf8ec065bc6886f04
-2009-01-23T15:37:59.406714Z
-2296
-winterheart
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-3855
-
calendar-en.js
file
@@ -638,6 +604,40 @@
3600
+calendar-gl.js
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+c4f74e36f6a3debcf8ec065bc6886f04
+2009-01-23T15:37:59.406714Z
+2296
+winterheart
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3855
+
calendar-fr.js
file
@@ -672,6 +672,74 @@
3870
+calendar-nl.js
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+c029bd9c4867bb39e86d1d6efada6d58
+2007-05-24T17:29:11.682821Z
+539
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3701
+
+calendar-hr.js
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+f8d0daa275cf612206c43d4c9be95d08
+2010-01-17T10:33:30.937961Z
+3320
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3646
+
calendar-zh-tw.js
file
@@ -706,74 +774,6 @@
3841
-calendar-hr.js
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-f8d0daa275cf612206c43d4c9be95d08
-2010-01-17T10:33:30.937961Z
-3320
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-3646
-
-calendar-nl.js
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-c029bd9c4867bb39e86d1d6efada6d58
-2007-05-24T17:29:11.682821Z
-539
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-3701
-
calendar-mn.js
file
@@ -808,6 +808,40 @@
3904
+calendar-pl.js
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+eabf711c28d30bb9474f3f505766f286
+2007-09-22T14:56:09.057923Z
+749
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3974
+
calendar-th.js
file
@@ -842,40 +876,6 @@
4417
-calendar-pl.js
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-eabf711c28d30bb9474f3f505766f286
-2007-09-22T14:56:09.057923Z
-749
-jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-3974
-
calendar-it.js
file
@@ -978,6 +978,40 @@
3909
+calendar-lv.js
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+b260d88c13c01ebf4e7c94b9cb022930
+2010-05-14T18:15:41.754813Z
+3737
+winterheart
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3803
+
calendar-zh.js
file
@@ -1012,40 +1046,6 @@
3600
-calendar-lv.js
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-b260d88c13c01ebf4e7c94b9cb022930
-2010-05-14T18:15:41.754813Z
-3737
-winterheart
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-3803
-
calendar-ca.js
file
@@ -1250,6 +1250,40 @@
3776
+calendar-fa.js
+file
+
+
+
+
+2011-03-03T11:40:18.000000Z
+79e745b797f9148ac63de8ce583e2282
+2011-02-21T10:08:59.720731Z
+4903
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3977
+
calendar-bg.js
file
diff -r 8972b600f4fb -r 051f544170fe public/javascripts/calendar/lang/.svn/prop-base/calendar-fa.js.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/public/javascripts/calendar/lang/.svn/prop-base/calendar-fa.js.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:eol-style
+V 6
+native
+END
diff -r 8972b600f4fb -r 051f544170fe public/javascripts/calendar/lang/.svn/text-base/calendar-fa.js.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/public/javascripts/calendar/lang/.svn/text-base/calendar-fa.js.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,127 @@
+// ** I18N
+
+// Calendar FA language
+// Author: Behrang Noroozinia, behrangn at g mail
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible. We strongly believe that
+// Unicode is the answer to a real internationalized world. Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("یکشنبه",
+ "دوشنبه",
+ "سهشنبه",
+ "چهارشنبه",
+ "پنجشنبه",
+ "آدینه",
+ "شنبه",
+ "یکشنبه");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary. We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+// Calendar._SDN_len = N; // short day name length
+// Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("یک",
+ "دو",
+ "سه",
+ "چهار",
+ "پنج",
+ "آدینه",
+ "شنبه",
+ "یک");
+
+// First day of the week. "0" means display Sunday first, "1" means display
+// Monday first, etc.
+Calendar._FD = 0;
+
+// full month names
+Calendar._MN = new Array
+("ژانویه",
+ "فوریه",
+ "مارس",
+ "آوریل",
+ "مه",
+ "ژوئن",
+ "ژوئیه",
+ "اوت",
+ "سپتامبر",
+ "اکتبر",
+ "نوامبر",
+ "دسامبر");
+
+// short month names
+Calendar._SMN = new Array
+("ژان",
+ "فور",
+ "مار",
+ "آور",
+ "مه",
+ "ژوئن",
+ "ژوئیه",
+ "اوت",
+ "سپت",
+ "اکت",
+ "نوا",
+ "دسا");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "درباره گاهشمار";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Date selection:\n" +
+"- Use the \xab, \xbb buttons to select year\n" +
+"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
+"- Hold mouse button on any of the above buttons for faster selection.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Time selection:\n" +
+"- Click on any of the time parts to increase it\n" +
+"- or Shift-click to decrease it\n" +
+"- or click and drag for faster selection.";
+
+Calendar._TT["PREV_YEAR"] = "سال پیشین (برای فهرست نگه دارید)";
+Calendar._TT["PREV_MONTH"] = "ماه پیشین ( برای فهرست نگه دارید)";
+Calendar._TT["GO_TODAY"] = "برو به امروز";
+Calendar._TT["NEXT_MONTH"] = "ماه پسین (برای فهرست نگه دارید)";
+Calendar._TT["NEXT_YEAR"] = "سال پسین (برای فهرست نگه دارید)";
+Calendar._TT["SEL_DATE"] = "گزینش";
+Calendar._TT["DRAG_TO_MOVE"] = "برای جابجایی بکشید";
+Calendar._TT["PART_TODAY"] = " (امروز)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "آغاز هفته از %s";
+
+// This may be locale-dependent. It specifies the week-end days, as an array
+// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "4,5";
+
+Calendar._TT["CLOSE"] = "بسته";
+Calendar._TT["TODAY"] = "امروز";
+Calendar._TT["TIME_PART"] = "زدن (با Shift) یا کشیدن برای ویرایش";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "هفته";
+Calendar._TT["TIME"] = "زمان:";
diff -r 8972b600f4fb -r 051f544170fe public/javascripts/calendar/lang/calendar-fa.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/public/javascripts/calendar/lang/calendar-fa.js Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,127 @@
+// ** I18N
+
+// Calendar FA language
+// Author: Behrang Noroozinia, behrangn at g mail
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible. We strongly believe that
+// Unicode is the answer to a real internationalized world. Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("یکشنبه",
+ "دوشنبه",
+ "سهشنبه",
+ "چهارشنبه",
+ "پنجشنبه",
+ "آدینه",
+ "شنبه",
+ "یکشنبه");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary. We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+// Calendar._SDN_len = N; // short day name length
+// Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("یک",
+ "دو",
+ "سه",
+ "چهار",
+ "پنج",
+ "آدینه",
+ "شنبه",
+ "یک");
+
+// First day of the week. "0" means display Sunday first, "1" means display
+// Monday first, etc.
+Calendar._FD = 0;
+
+// full month names
+Calendar._MN = new Array
+("ژانویه",
+ "فوریه",
+ "مارس",
+ "آوریل",
+ "مه",
+ "ژوئن",
+ "ژوئیه",
+ "اوت",
+ "سپتامبر",
+ "اکتبر",
+ "نوامبر",
+ "دسامبر");
+
+// short month names
+Calendar._SMN = new Array
+("ژان",
+ "فور",
+ "مار",
+ "آور",
+ "مه",
+ "ژوئن",
+ "ژوئیه",
+ "اوت",
+ "سپت",
+ "اکت",
+ "نوا",
+ "دسا");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "درباره گاهشمار";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Date selection:\n" +
+"- Use the \xab, \xbb buttons to select year\n" +
+"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
+"- Hold mouse button on any of the above buttons for faster selection.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Time selection:\n" +
+"- Click on any of the time parts to increase it\n" +
+"- or Shift-click to decrease it\n" +
+"- or click and drag for faster selection.";
+
+Calendar._TT["PREV_YEAR"] = "سال پیشین (برای فهرست نگه دارید)";
+Calendar._TT["PREV_MONTH"] = "ماه پیشین ( برای فهرست نگه دارید)";
+Calendar._TT["GO_TODAY"] = "برو به امروز";
+Calendar._TT["NEXT_MONTH"] = "ماه پسین (برای فهرست نگه دارید)";
+Calendar._TT["NEXT_YEAR"] = "سال پسین (برای فهرست نگه دارید)";
+Calendar._TT["SEL_DATE"] = "گزینش";
+Calendar._TT["DRAG_TO_MOVE"] = "برای جابجایی بکشید";
+Calendar._TT["PART_TODAY"] = " (امروز)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "آغاز هفته از %s";
+
+// This may be locale-dependent. It specifies the week-end days, as an array
+// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "4,5";
+
+Calendar._TT["CLOSE"] = "بسته";
+Calendar._TT["TODAY"] = "امروز";
+Calendar._TT["TIME_PART"] = "زدن (با Shift) یا کشیدن برای ویرایش";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "هفته";
+Calendar._TT["TIME"] = "زمان:";
diff -r 8972b600f4fb -r 051f544170fe public/javascripts/context_menu.js
--- a/public/javascripts/context_menu.js Thu Mar 03 11:40:10 2011 +0000
+++ b/public/javascripts/context_menu.js Thu Mar 03 11:42:28 2011 +0000
@@ -11,7 +11,7 @@
if (!observingContextMenuClick) {
Event.observe(document, 'click', this.Click.bindAsEventListener(this));
- Event.observe(document, (window.opera ? 'click' : 'contextmenu'), this.RightClick.bindAsEventListener(this));
+ Event.observe(document, 'contextmenu', this.RightClick.bindAsEventListener(this));
observingContextMenuClick = true;
}
@@ -23,8 +23,6 @@
this.hideMenu();
// do not show the context menu on links
if (Event.element(e).tagName == 'A') { return; }
- // right-click simulated by Alt+Click with Opera
- if (window.opera && !e.altKey) { return; }
var tr = Event.findElement(e, 'tr');
if (tr == document || tr == undefined || !tr.hasClassName('hascontextmenu')) { return; }
Event.stop(e);
@@ -39,7 +37,6 @@
Click: function(e) {
this.hideMenu();
if (Event.element(e).tagName == 'A') { return; }
- if (window.opera && e.altKey) { return; }
if (Event.isLeftClick(e) || (navigator.appVersion.match(/\bMSIE\b/))) {
var tr = Event.findElement(e, 'tr');
if (tr!=null && tr!=document && tr.hasClassName('hascontextmenu')) {
diff -r 8972b600f4fb -r 051f544170fe public/javascripts/jstoolbar/.svn/all-wcprops
--- a/public/javascripts/jstoolbar/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/public/javascripts/jstoolbar/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 53
-/svn/!svn/ver/4049/trunk/public/javascripts/jstoolbar
+/svn/!svn/ver/4903/trunk/public/javascripts/jstoolbar
END
textile.js
K 25
diff -r 8972b600f4fb -r 051f544170fe public/javascripts/jstoolbar/.svn/entries
--- a/public/javascripts/jstoolbar/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/public/javascripts/jstoolbar/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,15 +1,15 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/public/javascripts/jstoolbar
http://redmine.rubyforge.org/svn
-2010-08-29T12:54:04.302020Z
-4049
-winterheart
+2011-02-21T10:08:59.720731Z
+4903
+jplang
diff -r 8972b600f4fb -r 051f544170fe public/javascripts/jstoolbar/lang/.svn/all-wcprops
--- a/public/javascripts/jstoolbar/lang/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/public/javascripts/jstoolbar/lang/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 58
-/svn/!svn/ver/4049/trunk/public/javascripts/jstoolbar/lang
+/svn/!svn/ver/4903/trunk/public/javascripts/jstoolbar/lang
END
jstoolbar-mk.js
K 25
@@ -99,11 +99,11 @@
V 74
/svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-fr.js
END
-jstoolbar-zh-tw.js
+jstoolbar-nl.js
K 25
svn:wc:ra_dav:version-url
-V 77
-/svn/!svn/ver/1498/trunk/public/javascripts/jstoolbar/lang/jstoolbar-zh-tw.js
+V 74
+/svn/!svn/ver/2291/trunk/public/javascripts/jstoolbar/lang/jstoolbar-nl.js
END
jstoolbar-hr.js
K 25
@@ -111,11 +111,11 @@
V 74
/svn/!svn/ver/3320/trunk/public/javascripts/jstoolbar/lang/jstoolbar-hr.js
END
-jstoolbar-nl.js
+jstoolbar-zh-tw.js
K 25
svn:wc:ra_dav:version-url
-V 74
-/svn/!svn/ver/2291/trunk/public/javascripts/jstoolbar/lang/jstoolbar-nl.js
+V 77
+/svn/!svn/ver/1498/trunk/public/javascripts/jstoolbar/lang/jstoolbar-zh-tw.js
END
jstoolbar-mn.js
K 25
@@ -123,18 +123,18 @@
V 74
/svn/!svn/ver/3626/trunk/public/javascripts/jstoolbar/lang/jstoolbar-mn.js
END
+jstoolbar-pl.js
+K 25
+svn:wc:ra_dav:version-url
+V 74
+/svn/!svn/ver/1928/trunk/public/javascripts/jstoolbar/lang/jstoolbar-pl.js
+END
jstoolbar-th.js
K 25
svn:wc:ra_dav:version-url
V 74
/svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-th.js
END
-jstoolbar-pl.js
-K 25
-svn:wc:ra_dav:version-url
-V 74
-/svn/!svn/ver/1928/trunk/public/javascripts/jstoolbar/lang/jstoolbar-pl.js
-END
jstoolbar-it.js
K 25
svn:wc:ra_dav:version-url
@@ -153,17 +153,23 @@
V 74
/svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-lt.js
END
+jstoolbar-lv.js
+K 25
+svn:wc:ra_dav:version-url
+V 74
+/svn/!svn/ver/3737/trunk/public/javascripts/jstoolbar/lang/jstoolbar-lv.js
+END
jstoolbar-zh.js
K 25
svn:wc:ra_dav:version-url
V 74
/svn/!svn/ver/1498/trunk/public/javascripts/jstoolbar/lang/jstoolbar-zh.js
END
-jstoolbar-lv.js
+jstoolbar-pt.js
K 25
svn:wc:ra_dav:version-url
V 74
-/svn/!svn/ver/3737/trunk/public/javascripts/jstoolbar/lang/jstoolbar-lv.js
+/svn/!svn/ver/1927/trunk/public/javascripts/jstoolbar/lang/jstoolbar-pt.js
END
jstoolbar-ca.js
K 25
@@ -171,11 +177,11 @@
V 74
/svn/!svn/ver/1865/trunk/public/javascripts/jstoolbar/lang/jstoolbar-ca.js
END
-jstoolbar-pt.js
+jstoolbar-pt-br.js
K 25
svn:wc:ra_dav:version-url
-V 74
-/svn/!svn/ver/1927/trunk/public/javascripts/jstoolbar/lang/jstoolbar-pt.js
+V 77
+/svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-pt-br.js
END
jstoolbar-da.js
K 25
@@ -183,12 +189,6 @@
V 74
/svn/!svn/ver/2921/trunk/public/javascripts/jstoolbar/lang/jstoolbar-da.js
END
-jstoolbar-pt-br.js
-K 25
-svn:wc:ra_dav:version-url
-V 77
-/svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-pt-br.js
-END
jstoolbar-sr.js
K 25
svn:wc:ra_dav:version-url
@@ -201,6 +201,12 @@
V 74
/svn/!svn/ver/1817/trunk/public/javascripts/jstoolbar/lang/jstoolbar-tr.js
END
+jstoolbar-fa.js
+K 25
+svn:wc:ra_dav:version-url
+V 74
+/svn/!svn/ver/4903/trunk/public/javascripts/jstoolbar/lang/jstoolbar-fa.js
+END
jstoolbar-bg.js
K 25
svn:wc:ra_dav:version-url
diff -r 8972b600f4fb -r 051f544170fe public/javascripts/jstoolbar/lang/.svn/entries
--- a/public/javascripts/jstoolbar/lang/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/public/javascripts/jstoolbar/lang/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,15 +1,15 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/public/javascripts/jstoolbar/lang
http://redmine.rubyforge.org/svn
-2010-08-29T12:54:04.302020Z
-4049
-winterheart
+2011-02-21T10:08:59.720731Z
+4903
+jplang
@@ -570,6 +570,74 @@
753
+jstoolbar-nl.js
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+b1bc7a04b7b466073845dd2c81bbbf23
+2009-01-20T15:53:09.750096Z
+2291
+winterheart
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+753
+
+jstoolbar-hr.js
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+f13f0553753c4b53bd96c294ca6ce15e
+2010-01-17T10:33:30.937961Z
+3320
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+721
+
jstoolbar-zh-tw.js
file
@@ -604,74 +672,6 @@
716
-jstoolbar-hr.js
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-f13f0553753c4b53bd96c294ca6ce15e
-2010-01-17T10:33:30.937961Z
-3320
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-721
-
-jstoolbar-nl.js
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-b1bc7a04b7b466073845dd2c81bbbf23
-2009-01-20T15:53:09.750096Z
-2291
-winterheart
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-753
-
jstoolbar-mn.js
file
@@ -706,6 +706,40 @@
916
+jstoolbar-pl.js
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+1d2b7d7c66953806ca428f91a95d2eaa
+2008-10-07T17:41:16.515762Z
+1928
+winterheart
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+851
+
jstoolbar-th.js
file
@@ -740,40 +774,6 @@
931
-jstoolbar-pl.js
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-1d2b7d7c66953806ca428f91a95d2eaa
-2008-10-07T17:41:16.515762Z
-1928
-winterheart
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-851
-
jstoolbar-it.js
file
@@ -876,6 +876,40 @@
754
+jstoolbar-lv.js
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+5a44b7a9bd5b7db86d0a7398ee5bc779
+2010-05-14T18:15:41.754813Z
+3737
+winterheart
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+836
+
jstoolbar-zh.js
file
@@ -910,74 +944,6 @@
722
-jstoolbar-lv.js
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-5a44b7a9bd5b7db86d0a7398ee5bc779
-2010-05-14T18:15:41.754813Z
-3737
-winterheart
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-836
-
-jstoolbar-ca.js
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-6aacb53ed49e6e14831baf8c38096662
-2008-09-15T16:07:30.857601Z
-1865
-winterheart
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-763
-
jstoolbar-pt.js
file
@@ -1012,6 +978,74 @@
823
+jstoolbar-ca.js
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+6aacb53ed49e6e14831baf8c38096662
+2008-09-15T16:07:30.857601Z
+1865
+winterheart
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+763
+
+jstoolbar-da.js
+file
+
+
+
+
+2011-03-03T11:05:14.000000Z
+4061b38de5e085dac922f77f94bd254a
+2009-10-11T09:24:45.635758Z
+2921
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+746
+
jstoolbar-sr.js
file
@@ -1046,40 +1080,6 @@
912
-jstoolbar-da.js
-file
-
-
-
-
-2011-03-03T11:05:14.000000Z
-4061b38de5e085dac922f77f94bd254a
-2009-10-11T09:24:45.635758Z
-2921
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-746
-
jstoolbar-pt-br.js
file
@@ -1148,6 +1148,40 @@
662
+jstoolbar-fa.js
+file
+
+
+
+
+2011-03-03T11:40:18.000000Z
+5fde8ac79f7084911ce37f5cdad2052e
+2011-02-21T10:08:59.720731Z
+4903
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+838
+
jstoolbar-bg.js
file
diff -r 8972b600f4fb -r 051f544170fe public/javascripts/jstoolbar/lang/.svn/prop-base/jstoolbar-fa.js.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/public/javascripts/jstoolbar/lang/.svn/prop-base/jstoolbar-fa.js.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:eol-style
+V 6
+native
+END
diff -r 8972b600f4fb -r 051f544170fe public/javascripts/jstoolbar/lang/.svn/text-base/jstoolbar-fa.js.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/public/javascripts/jstoolbar/lang/.svn/text-base/jstoolbar-fa.js.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,16 @@
+jsToolBar.strings = {};
+jsToolBar.strings['Strong'] = 'پررنگ';
+jsToolBar.strings['Italic'] = 'کج';
+jsToolBar.strings['Underline'] = 'زیرخط';
+jsToolBar.strings['Deleted'] = 'برداشته شده';
+jsToolBar.strings['Code'] = 'کد درون خطی';
+jsToolBar.strings['Heading 1'] = 'سربرگ ۱';
+jsToolBar.strings['Heading 2'] = 'سربرگ ۲';
+jsToolBar.strings['Heading 3'] = 'سربرگ ۳';
+jsToolBar.strings['Unordered list'] = 'فهرست بدون شماره';
+jsToolBar.strings['Ordered list'] = 'فهرست با شماره';
+jsToolBar.strings['Quote'] = 'تو بردن';
+jsToolBar.strings['Unquote'] = 'بیرون آوردن';
+jsToolBar.strings['Preformatted text'] = 'نوشته قالب بندی شده';
+jsToolBar.strings['Wiki link'] = 'پیوند به برگ ویکی';
+jsToolBar.strings['Image'] = 'عکس';
diff -r 8972b600f4fb -r 051f544170fe public/javascripts/jstoolbar/lang/jstoolbar-fa.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/public/javascripts/jstoolbar/lang/jstoolbar-fa.js Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,16 @@
+jsToolBar.strings = {};
+jsToolBar.strings['Strong'] = 'پررنگ';
+jsToolBar.strings['Italic'] = 'کج';
+jsToolBar.strings['Underline'] = 'زیرخط';
+jsToolBar.strings['Deleted'] = 'برداشته شده';
+jsToolBar.strings['Code'] = 'کد درون خطی';
+jsToolBar.strings['Heading 1'] = 'سربرگ ۱';
+jsToolBar.strings['Heading 2'] = 'سربرگ ۲';
+jsToolBar.strings['Heading 3'] = 'سربرگ ۳';
+jsToolBar.strings['Unordered list'] = 'فهرست بدون شماره';
+jsToolBar.strings['Ordered list'] = 'فهرست با شماره';
+jsToolBar.strings['Quote'] = 'تو بردن';
+jsToolBar.strings['Unquote'] = 'بیرون آوردن';
+jsToolBar.strings['Preformatted text'] = 'نوشته قالب بندی شده';
+jsToolBar.strings['Wiki link'] = 'پیوند به برگ ویکی';
+jsToolBar.strings['Image'] = 'عکس';
diff -r 8972b600f4fb -r 051f544170fe public/stylesheets/.svn/all-wcprops
--- a/public/stylesheets/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/public/stylesheets/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 43
-/svn/!svn/ver/4782/trunk/public/stylesheets
+/svn/!svn/ver/4954/trunk/public/stylesheets
END
context_menu.css
K 25
@@ -49,5 +49,5 @@
K 25
svn:wc:ra_dav:version-url
V 59
-/svn/!svn/ver/4782/trunk/public/stylesheets/application.css
+/svn/!svn/ver/4954/trunk/public/stylesheets/application.css
END
diff -r 8972b600f4fb -r 051f544170fe public/stylesheets/.svn/entries
--- a/public/stylesheets/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/public/stylesheets/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/public/stylesheets
http://redmine.rubyforge.org/svn
-2011-01-30T09:09:50.276451Z
-4782
+2011-02-27T13:34:41.060565Z
+4954
jplang
@@ -270,10 +270,10 @@
-2011-03-03T11:05:23.000000Z
-b268a66dce14ef4250f269776b4ddcde
-2011-01-30T09:09:50.276451Z
-4782
+2011-03-03T11:40:18.000000Z
+1c8f6eb0fe9e3708adf095c11bc824bf
+2011-02-27T13:34:41.060565Z
+4954
jplang
has-props
@@ -296,5 +296,5 @@
-35685
+35897
diff -r 8972b600f4fb -r 051f544170fe public/stylesheets/.svn/text-base/application.css.svn-base
--- a/public/stylesheets/.svn/text-base/application.css.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/public/stylesheets/.svn/text-base/application.css.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -672,6 +672,13 @@
.diff_out { background: #fcc; }
.diff_in { background: #cfc; }
+.text-diff {
+padding: 1em;
+background-color:#f6f6f6;
+color:#505050;
+border: 1px solid #e4e4e4;
+}
+
/***** Wiki *****/
div.wiki table {
border: 1px solid #505050;
@@ -783,6 +790,7 @@
}
.gantt_subjects { font-size: 0.8em; }
+.gantt_subjects div { line-height:1.2em;height:16px;overflow:hidden;white-space:nowrap;text-overflow: ellipsis; }
.task {
position: absolute;
diff -r 8972b600f4fb -r 051f544170fe public/stylesheets/application.css
--- a/public/stylesheets/application.css Thu Mar 03 11:40:10 2011 +0000
+++ b/public/stylesheets/application.css Thu Mar 03 11:42:28 2011 +0000
@@ -672,6 +672,13 @@
.diff_out { background: #fcc; }
.diff_in { background: #cfc; }
+.text-diff {
+padding: 1em;
+background-color:#f6f6f6;
+color:#505050;
+border: 1px solid #e4e4e4;
+}
+
/***** Wiki *****/
div.wiki table {
border: 1px solid #505050;
@@ -783,6 +790,7 @@
}
.gantt_subjects { font-size: 0.8em; }
+.gantt_subjects div { line-height:1.2em;height:16px;overflow:hidden;white-space:nowrap;text-overflow: ellipsis; }
.task {
position: absolute;
diff -r 8972b600f4fb -r 051f544170fe public/themes/.svn/entries
--- a/public/themes/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/public/themes/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/public/themes
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe public/themes/alternate/.svn/entries
--- a/public/themes/alternate/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/public/themes/alternate/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/public/themes/alternate
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe public/themes/alternate/stylesheets/.svn/entries
--- a/public/themes/alternate/stylesheets/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/public/themes/alternate/stylesheets/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/public/themes/alternate/stylesheets
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe public/themes/classic/.svn/entries
--- a/public/themes/classic/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/public/themes/classic/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/public/themes/classic
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe public/themes/classic/images/.svn/entries
--- a/public/themes/classic/images/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/public/themes/classic/images/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/public/themes/classic/images
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe public/themes/classic/stylesheets/.svn/entries
--- a/public/themes/classic/stylesheets/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/public/themes/classic/stylesheets/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/public/themes/classic/stylesheets
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe script/.svn/entries
--- a/script/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/script/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/script
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe script/performance/.svn/entries
--- a/script/performance/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/script/performance/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/script/performance
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe script/process/.svn/entries
--- a/script/process/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/script/process/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/script/process
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe test/.svn/all-wcprops
--- a/test/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/test/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 29
-/svn/!svn/ver/4802/trunk/test
+/svn/!svn/ver/4991/trunk/test
END
object_daddy_helpers.rb
K 25
diff -r 8972b600f4fb -r 051f544170fe test/.svn/entries
--- a/test/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test
http://redmine.rubyforge.org/svn
-2011-02-07T10:26:15.436891Z
-4802
+2011-03-03T03:35:13.139305Z
+4991
tmaruyama
diff -r 8972b600f4fb -r 051f544170fe test/exemplars/.svn/entries
--- a/test/exemplars/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/exemplars/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/exemplars
http://redmine.rubyforge.org/svn
@@ -774,6 +774,40 @@
481
+member_role_exemplar.rb
+file
+
+
+
+
+2011-03-03T11:05:08.000000Z
+d1bdf1810c216ecde56d0750f78bea10
+2010-01-27T18:29:03.119133Z
+3340
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+250
+
issue_exemplar.rb
file
@@ -808,16 +842,16 @@
449
-member_role_exemplar.rb
+tracker_exemplar.rb
file
2011-03-03T11:05:08.000000Z
-d1bdf1810c216ecde56d0750f78bea10
-2010-01-27T18:29:03.119133Z
-3340
+94aed9cd40bd95ab8d8c2f51bfc097cf
+2009-10-18T22:25:00.956502Z
+2930
edavis10
@@ -840,7 +874,7 @@
-250
+179
issue_status_exemplar.rb
file
@@ -876,14 +910,14 @@
182
-tracker_exemplar.rb
+time_entry_activity.rb
file
2011-03-03T11:05:08.000000Z
-94aed9cd40bd95ab8d8c2f51bfc097cf
+74f5207a054732dd9be1b3184340ca77
2009-10-18T22:25:00.956502Z
2930
edavis10
@@ -908,7 +942,7 @@
-179
+236
subversion_repository_exemplar.rb
file
@@ -944,14 +978,14 @@
235
-time_entry_activity.rb
+role_exemplar.rb
file
2011-03-03T11:05:08.000000Z
-74f5207a054732dd9be1b3184340ca77
+9c97ca570fa9b00ab1ecebd226f52f66
2009-10-18T22:25:00.956502Z
2930
edavis10
@@ -976,7 +1010,7 @@
-236
+157
changeset_exemplar.rb
file
@@ -1012,40 +1046,6 @@
377
-role_exemplar.rb
-file
-
-
-
-
-2011-03-03T11:05:08.000000Z
-9c97ca570fa9b00ab1ecebd226f52f66
-2009-10-18T22:25:00.956502Z
-2930
-edavis10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-157
-
comment_exemplar.rb
file
diff -r 8972b600f4fb -r 051f544170fe test/fixtures/.svn/all-wcprops
--- a/test/fixtures/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/test/fixtures/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,19 +1,19 @@
K 25
svn:wc:ra_dav:version-url
V 38
-/svn/!svn/ver/4752/trunk/test/fixtures
+/svn/!svn/ver/4964/trunk/test/fixtures
END
journal_details.yml
K 25
svn:wc:ra_dav:version-url
V 58
-/svn/!svn/ver/3123/trunk/test/fixtures/journal_details.yml
+/svn/!svn/ver/4954/trunk/test/fixtures/journal_details.yml
END
issue_statuses.yml
K 25
svn:wc:ra_dav:version-url
V 57
-/svn/!svn/ver/2895/trunk/test/fixtures/issue_statuses.yml
+/svn/!svn/ver/4895/trunk/test/fixtures/issue_statuses.yml
END
changesets.yml
K 25
@@ -105,17 +105,23 @@
V 50
/svn/!svn/ver/2895/trunk/test/fixtures/changes.yml
END
+custom_fields_projects.yml
+K 25
+svn:wc:ra_dav:version-url
+V 65
+/svn/!svn/ver/3278/trunk/test/fixtures/custom_fields_projects.yml
+END
enumerations.yml
K 25
svn:wc:ra_dav:version-url
V 55
/svn/!svn/ver/3573/trunk/test/fixtures/enumerations.yml
END
-custom_fields_projects.yml
+member_roles.yml
K 25
svn:wc:ra_dav:version-url
-V 65
-/svn/!svn/ver/3278/trunk/test/fixtures/custom_fields_projects.yml
+V 55
+/svn/!svn/ver/3250/trunk/test/fixtures/member_roles.yml
END
issues.yml
K 25
@@ -123,29 +129,29 @@
V 49
/svn/!svn/ver/4482/trunk/test/fixtures/issues.yml
END
-member_roles.yml
-K 25
-svn:wc:ra_dav:version-url
-V 55
-/svn/!svn/ver/3250/trunk/test/fixtures/member_roles.yml
-END
queries.yml
K 25
svn:wc:ra_dav:version-url
V 50
/svn/!svn/ver/3071/trunk/test/fixtures/queries.yml
END
+watchers.yml
+K 25
+svn:wc:ra_dav:version-url
+V 51
+/svn/!svn/ver/2456/trunk/test/fixtures/watchers.yml
+END
wiki_contents.yml
K 25
svn:wc:ra_dav:version-url
V 56
/svn/!svn/ver/4681/trunk/test/fixtures/wiki_contents.yml
END
-watchers.yml
+enabled_modules.yml
K 25
svn:wc:ra_dav:version-url
-V 51
-/svn/!svn/ver/2456/trunk/test/fixtures/watchers.yml
+V 58
+/svn/!svn/ver/4505/trunk/test/fixtures/enabled_modules.yml
END
wiki_pages.yml
K 25
@@ -153,11 +159,11 @@
V 53
/svn/!svn/ver/4680/trunk/test/fixtures/wiki_pages.yml
END
-enabled_modules.yml
+wiki_content_versions.yml
K 25
svn:wc:ra_dav:version-url
-V 58
-/svn/!svn/ver/4505/trunk/test/fixtures/enabled_modules.yml
+V 64
+/svn/!svn/ver/2895/trunk/test/fixtures/wiki_content_versions.yml
END
comments.yml
K 25
@@ -165,30 +171,24 @@
V 51
/svn/!svn/ver/2895/trunk/test/fixtures/comments.yml
END
-wiki_content_versions.yml
-K 25
-svn:wc:ra_dav:version-url
-V 64
-/svn/!svn/ver/2895/trunk/test/fixtures/wiki_content_versions.yml
-END
members.yml
K 25
svn:wc:ra_dav:version-url
V 50
/svn/!svn/ver/3250/trunk/test/fixtures/members.yml
END
+workflows.yml
+K 25
+svn:wc:ra_dav:version-url
+V 52
+/svn/!svn/ver/2895/trunk/test/fixtures/workflows.yml
+END
journals.yml
K 25
svn:wc:ra_dav:version-url
V 51
/svn/!svn/ver/3123/trunk/test/fixtures/journals.yml
END
-workflows.yml
-K 25
-svn:wc:ra_dav:version-url
-V 52
-/svn/!svn/ver/2895/trunk/test/fixtures/workflows.yml
-END
custom_fields.yml
K 25
svn:wc:ra_dav:version-url
@@ -199,7 +199,7 @@
K 25
svn:wc:ra_dav:version-url
V 48
-/svn/!svn/ver/4216/trunk/test/fixtures/users.yml
+/svn/!svn/ver/4936/trunk/test/fixtures/users.yml
END
auth_sources.yml
K 25
diff -r 8972b600f4fb -r 051f544170fe test/fixtures/.svn/entries
--- a/test/fixtures/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/fixtures/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,15 +1,15 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/fixtures
http://redmine.rubyforge.org/svn
-2011-01-23T10:22:00.456857Z
-4752
-jplang
+2011-02-28T14:12:47.115180Z
+4964
+tmaruyama
@@ -35,10 +35,10 @@
-2011-03-03T11:05:22.000000Z
-7f7308fa24fe8015418b4bf81a265389
-2009-12-06T10:28:20.099964Z
-3123
+2011-03-03T11:40:18.000000Z
+c85ec633618360a62da10b17100bbf56
+2011-02-27T13:34:41.060565Z
+4954
jplang
has-props
@@ -61,7 +61,7 @@
-359
+547
ldap
dir
@@ -72,10 +72,10 @@
-2011-03-03T11:05:22.000000Z
-940bc0bea76bc76ba8ef1b224d744eee
-2009-09-20T14:06:57.257282Z
-2895
+2011-03-03T11:40:18.000000Z
+2d31c6b69ca13da5466d1600bae9a2fd
+2011-02-20T15:38:07.840581Z
+4895
jplang
has-props
@@ -98,7 +98,7 @@
-505
+589
changesets.yml
file
@@ -619,8 +619,39 @@
377
-mailer
-dir
+custom_fields_projects.yml
+file
+
+
+
+
+2011-03-03T11:05:09.000000Z
+c6789a99aba9f28cf1d31a36b36224c8
+2010-01-03T11:18:09.741250Z
+3278
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+71
enumerations.yml
file
@@ -656,16 +687,19 @@
1391
-custom_fields_projects.yml
+mailer
+dir
+
+member_roles.yml
file
2011-03-03T11:05:09.000000Z
-c6789a99aba9f28cf1d31a36b36224c8
-2010-01-03T11:18:09.741250Z
-3278
+86387d627355e1debc04c364c29efe81
+2009-12-26T16:14:55.591181Z
+3250
jplang
has-props
@@ -688,7 +722,7 @@
-71
+692
issues.yml
file
@@ -724,40 +758,6 @@
5656
-member_roles.yml
-file
-
-
-
-
-2011-03-03T11:05:09.000000Z
-86387d627355e1debc04c364c29efe81
-2009-12-26T16:14:55.591181Z
-3250
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-692
-
queries.yml
file
@@ -792,6 +792,40 @@
2345
+wiki_contents.yml
+file
+
+
+
+
+2011-03-03T11:05:09.000000Z
+595d0f0964e3c3f8ce7edb4b07941ffa
+2011-01-10T19:45:20.108166Z
+4681
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1953
+
watchers.yml
file
@@ -826,40 +860,6 @@
219
-wiki_contents.yml
-file
-
-
-
-
-2011-03-03T11:05:09.000000Z
-595d0f0964e3c3f8ce7edb4b07941ffa
-2011-01-10T19:45:20.108166Z
-4681
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-1953
-
wiki_pages.yml
file
@@ -1144,11 +1144,11 @@
-2011-03-03T11:05:22.000000Z
-f590d477ec468a76d8d31d5ed99de0e6
-2010-09-28T18:22:00.231301Z
-4216
-edavis10
+2011-03-03T11:40:18.000000Z
+4bc8168f868eb01690365ddcb82e8841
+2011-02-23T17:27:31.762248Z
+4936
+jplang
has-props
@@ -1170,7 +1170,7 @@
-3294
+3500
auth_sources.yml
file
diff -r 8972b600f4fb -r 051f544170fe test/fixtures/.svn/text-base/issue_statuses.yml.svn-base
--- a/test/fixtures/.svn/text-base/issue_statuses.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/fixtures/.svn/text-base/issue_statuses.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -1,31 +1,37 @@
---
+issue_statuses_001:
+ id: 1
+ name: New
+ is_default: true
+ is_closed: false
+ position: 1
+issue_statuses_002:
+ id: 2
+ name: Assigned
+ is_default: false
+ is_closed: false
+ position: 2
+issue_statuses_003:
+ id: 3
+ name: Resolved
+ is_default: false
+ is_closed: false
+ position: 3
+issue_statuses_004:
+ name: Feedback
+ id: 4
+ is_default: false
+ is_closed: false
+ position: 4
+issue_statuses_005:
+ id: 5
+ name: Closed
+ is_default: false
+ is_closed: true
+ position: 5
issue_statuses_006:
+ id: 6
name: Rejected
is_default: false
is_closed: true
- id: 6
-issue_statuses_001:
- name: New
- is_default: true
- is_closed: false
- id: 1
-issue_statuses_002:
- name: Assigned
- is_default: false
- is_closed: false
- id: 2
-issue_statuses_003:
- name: Resolved
- is_default: false
- is_closed: false
- id: 3
-issue_statuses_004:
- name: Feedback
- is_default: false
- is_closed: false
- id: 4
-issue_statuses_005:
- name: Closed
- is_default: false
- is_closed: true
- id: 5
+ position: 6
diff -r 8972b600f4fb -r 051f544170fe test/fixtures/.svn/text-base/journal_details.yml.svn-base
--- a/test/fixtures/.svn/text-base/journal_details.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/fixtures/.svn/text-base/journal_details.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -20,3 +20,10 @@
value: "6"
prop_key: fixed_version_id
journal_id: 4
+journal_details_004:
+ old_value: "This word was removed and an other was"
+ property: attr
+ id: 4
+ value: "This word was and an other was added"
+ prop_key: description
+ journal_id: 3
diff -r 8972b600f4fb -r 051f544170fe test/fixtures/.svn/text-base/users.yml.svn-base
--- a/test/fixtures/.svn/text-base/users.yml.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/fixtures/.svn/text-base/users.yml.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -4,7 +4,9 @@
status: 1
last_login_on:
language: en
- hashed_password: 4e4aeb7baaf0706bd670263fef42dad15763b608
+ # password = foo
+ salt: 3126f764c3c5ac61cbfc103f25f934cf
+ hashed_password: 9e4dd7eeb172c12a0691a6d9d3a269f7e9fe671b
updated_on: 2006-07-19 19:34:07 +02:00
admin: false
mail: rhill@somenet.foo
@@ -20,7 +22,9 @@
status: 1
last_login_on: 2006-07-19 22:57:52 +02:00
language: en
- hashed_password: d033e22ae348aeb5660fc2140aec35850c4da997
+ # password = admin
+ salt: 82090c953c4a0000a7db253b0691a6b4
+ hashed_password: b5b6ff9543bf1387374cdfa27a54c96d236a7150
updated_on: 2006-07-19 22:57:52 +02:00
admin: true
mail: admin@somenet.foo
@@ -36,7 +40,9 @@
status: 1
last_login_on: 2006-07-19 22:42:15 +02:00
language: en
- hashed_password: a9a653d4151fa2c081ba1ffc2c2726f3b80b7d7d
+ # password = jsmith
+ salt: 67eb4732624d5a7753dcea7ce0bb7d7d
+ hashed_password: bfbe06043353a677d0215b26a5800d128d5413bc
updated_on: 2006-07-19 22:42:15 +02:00
admin: false
mail: jsmith@somenet.foo
@@ -52,7 +58,9 @@
status: 1
last_login_on:
language: en
- hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415
+ # password = foo
+ salt: 7599f9963ec07b5a3b55b354407120c0
+ hashed_password: 8f659c8d7c072f189374edacfa90d6abbc26d8ed
updated_on: 2006-07-19 19:33:19 +02:00
admin: false
mail: dlopper@somenet.foo
@@ -70,7 +78,7 @@
status: 3
last_login_on:
language: en
- hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415
+ hashed_password: 1
updated_on: 2006-07-19 19:33:19 +02:00
admin: false
mail: dlopper2@somenet.foo
diff -r 8972b600f4fb -r 051f544170fe test/fixtures/configuration/.svn/entries
--- a/test/fixtures/configuration/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/fixtures/configuration/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/fixtures/configuration
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe test/fixtures/diffs/.svn/entries
--- a/test/fixtures/diffs/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/fixtures/diffs/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/fixtures/diffs
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe test/fixtures/encoding/.svn/entries
--- a/test/fixtures/encoding/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/fixtures/encoding/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/fixtures/encoding
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe test/fixtures/files/.svn/entries
--- a/test/fixtures/files/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/fixtures/files/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/fixtures/files
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe test/fixtures/issue_statuses.yml
--- a/test/fixtures/issue_statuses.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/test/fixtures/issue_statuses.yml Thu Mar 03 11:42:28 2011 +0000
@@ -1,31 +1,37 @@
---
+issue_statuses_001:
+ id: 1
+ name: New
+ is_default: true
+ is_closed: false
+ position: 1
+issue_statuses_002:
+ id: 2
+ name: Assigned
+ is_default: false
+ is_closed: false
+ position: 2
+issue_statuses_003:
+ id: 3
+ name: Resolved
+ is_default: false
+ is_closed: false
+ position: 3
+issue_statuses_004:
+ name: Feedback
+ id: 4
+ is_default: false
+ is_closed: false
+ position: 4
+issue_statuses_005:
+ id: 5
+ name: Closed
+ is_default: false
+ is_closed: true
+ position: 5
issue_statuses_006:
+ id: 6
name: Rejected
is_default: false
is_closed: true
- id: 6
-issue_statuses_001:
- name: New
- is_default: true
- is_closed: false
- id: 1
-issue_statuses_002:
- name: Assigned
- is_default: false
- is_closed: false
- id: 2
-issue_statuses_003:
- name: Resolved
- is_default: false
- is_closed: false
- id: 3
-issue_statuses_004:
- name: Feedback
- is_default: false
- is_closed: false
- id: 4
-issue_statuses_005:
- name: Closed
- is_default: false
- is_closed: true
- id: 5
+ position: 6
diff -r 8972b600f4fb -r 051f544170fe test/fixtures/journal_details.yml
--- a/test/fixtures/journal_details.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/test/fixtures/journal_details.yml Thu Mar 03 11:42:28 2011 +0000
@@ -20,3 +20,10 @@
value: "6"
prop_key: fixed_version_id
journal_id: 4
+journal_details_004:
+ old_value: "This word was removed and an other was"
+ property: attr
+ id: 4
+ value: "This word was and an other was added"
+ prop_key: description
+ journal_id: 3
diff -r 8972b600f4fb -r 051f544170fe test/fixtures/ldap/.svn/entries
--- a/test/fixtures/ldap/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/fixtures/ldap/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/fixtures/ldap
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe test/fixtures/mail_handler/.svn/entries
--- a/test/fixtures/mail_handler/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/fixtures/mail_handler/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/fixtures/mail_handler
http://redmine.rubyforge.org/svn
@@ -26,17 +26,18 @@
e93f8b46-1217-0410-a6f0-8f06a7374b81
-issue_update_with_multiple_quoted_reply_above.eml
+ticket_html_only.eml
file
2011-03-03T11:05:09.000000Z
-ef4c0db9f76d81792292785d2ae9cb6a
-2010-11-02T19:00:31.177706Z
-4361
-edavis10
+5e24af78a4534798611158a3d81efb34
+2008-12-14T17:10:16.292262Z
+2136
+jplang
+has-props
@@ -57,8 +58,7 @@
-
-2018
+691
message_reply_by_subject.eml
file
@@ -94,18 +94,51 @@
410
-ticket_html_only.eml
+issue_update_with_multiple_quoted_reply_above.eml
file
2011-03-03T11:05:09.000000Z
-5e24af78a4534798611158a3d81efb34
-2008-12-14T17:10:16.292262Z
-2136
+ef4c0db9f76d81792292785d2ae9cb6a
+2010-11-02T19:00:31.177706Z
+4361
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2018
+
+ticket_with_localized_attributes.eml
+file
+
+
+
+
+2011-03-03T11:05:09.000000Z
+8ac895d880e6f19fc21333c4003babaf
+2010-11-12T12:29:35.878777Z
+4395
jplang
-has-props
@@ -126,7 +159,8 @@
-691
+
+1944
ticket_with_spaces_between_attribute_and_separator.eml
file
@@ -162,40 +196,6 @@
1903
-ticket_with_localized_attributes.eml
-file
-
-
-
-
-2011-03-03T11:05:09.000000Z
-8ac895d880e6f19fc21333c4003babaf
-2010-11-12T12:29:35.878777Z
-4395
-jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-1944
-
ticket_with_long_subject.eml
file
@@ -434,6 +434,40 @@
485
+ticket_by_unknown_user.eml
+file
+
+
+
+
+2011-03-03T11:05:09.000000Z
+0979c01baf02b924bd8a6db3980c59c9
+2009-06-14T14:48:34.287541Z
+2789
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+526
+
ticket_with_invalid_attributes.eml
file
@@ -468,40 +502,6 @@
2028
-ticket_by_unknown_user.eml
-file
-
-
-
-
-2011-03-03T11:05:09.000000Z
-0979c01baf02b924bd8a6db3980c59c9
-2009-06-14T14:48:34.287541Z
-2789
-jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-526
-
ticket_reply_with_status.eml
file
diff -r 8972b600f4fb -r 051f544170fe test/fixtures/mailer/.svn/entries
--- a/test/fixtures/mailer/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/fixtures/mailer/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/fixtures/mailer
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe test/fixtures/repositories/.svn/all-wcprops
--- a/test/fixtures/repositories/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/test/fixtures/repositories/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 51
-/svn/!svn/ver/4676/trunk/test/fixtures/repositories
+/svn/!svn/ver/4964/trunk/test/fixtures/repositories
END
darcs_repository.tar.gz
K 25
@@ -31,7 +31,7 @@
K 25
svn:wc:ra_dav:version-url
V 73
-/svn/!svn/ver/4310/trunk/test/fixtures/repositories/git_repository.tar.gz
+/svn/!svn/ver/4964/trunk/test/fixtures/repositories/git_repository.tar.gz
END
filesystem_repository.tar.gz
K 25
diff -r 8972b600f4fb -r 051f544170fe test/fixtures/repositories/.svn/entries
--- a/test/fixtures/repositories/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/fixtures/repositories/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,15 +1,15 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/fixtures/repositories
http://redmine.rubyforge.org/svn
-2011-01-10T17:43:01.353336Z
-4676
-jplang
+2011-02-28T14:12:47.115180Z
+4964
+tmaruyama
@@ -168,11 +168,11 @@
-2011-03-03T11:05:22.000000Z
-300e21b10239e2fa28df3111924b8328
-2010-10-29T23:21:57.240368Z
-4310
-jbbarth
+2011-03-03T11:40:18.000000Z
+a520f027eaf4a4548dfbc85e8d7e71c5
+2011-02-28T14:12:47.115180Z
+4964
+tmaruyama
has-props
@@ -194,7 +194,7 @@
-20730
+15432
filesystem_repository.tar.gz
file
diff -r 8972b600f4fb -r 051f544170fe test/fixtures/repositories/.svn/text-base/git_repository.tar.gz.svn-base
Binary file test/fixtures/repositories/.svn/text-base/git_repository.tar.gz.svn-base has changed
diff -r 8972b600f4fb -r 051f544170fe test/fixtures/repositories/git_repository.tar.gz
Binary file test/fixtures/repositories/git_repository.tar.gz has changed
diff -r 8972b600f4fb -r 051f544170fe test/fixtures/users.yml
--- a/test/fixtures/users.yml Thu Mar 03 11:40:10 2011 +0000
+++ b/test/fixtures/users.yml Thu Mar 03 11:42:28 2011 +0000
@@ -4,7 +4,9 @@
status: 1
last_login_on:
language: en
- hashed_password: 4e4aeb7baaf0706bd670263fef42dad15763b608
+ # password = foo
+ salt: 3126f764c3c5ac61cbfc103f25f934cf
+ hashed_password: 9e4dd7eeb172c12a0691a6d9d3a269f7e9fe671b
updated_on: 2006-07-19 19:34:07 +02:00
admin: false
mail: rhill@somenet.foo
@@ -20,7 +22,9 @@
status: 1
last_login_on: 2006-07-19 22:57:52 +02:00
language: en
- hashed_password: d033e22ae348aeb5660fc2140aec35850c4da997
+ # password = admin
+ salt: 82090c953c4a0000a7db253b0691a6b4
+ hashed_password: b5b6ff9543bf1387374cdfa27a54c96d236a7150
updated_on: 2006-07-19 22:57:52 +02:00
admin: true
mail: admin@somenet.foo
@@ -36,7 +40,9 @@
status: 1
last_login_on: 2006-07-19 22:42:15 +02:00
language: en
- hashed_password: a9a653d4151fa2c081ba1ffc2c2726f3b80b7d7d
+ # password = jsmith
+ salt: 67eb4732624d5a7753dcea7ce0bb7d7d
+ hashed_password: bfbe06043353a677d0215b26a5800d128d5413bc
updated_on: 2006-07-19 22:42:15 +02:00
admin: false
mail: jsmith@somenet.foo
@@ -52,7 +58,9 @@
status: 1
last_login_on:
language: en
- hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415
+ # password = foo
+ salt: 7599f9963ec07b5a3b55b354407120c0
+ hashed_password: 8f659c8d7c072f189374edacfa90d6abbc26d8ed
updated_on: 2006-07-19 19:33:19 +02:00
admin: false
mail: dlopper@somenet.foo
@@ -70,7 +78,7 @@
status: 3
last_login_on:
language: en
- hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415
+ hashed_password: 1
updated_on: 2006-07-19 19:33:19 +02:00
admin: false
mail: dlopper2@somenet.foo
diff -r 8972b600f4fb -r 051f544170fe test/functional/.svn/all-wcprops
--- a/test/functional/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/test/functional/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 40
-/svn/!svn/ver/4789/trunk/test/functional
+/svn/!svn/ver/4982/trunk/test/functional
END
issues_controller_test.rb
K 25
@@ -79,7 +79,7 @@
K 25
svn:wc:ra_dav:version-url
V 67
-/svn/!svn/ver/4509/trunk/test/functional/welcome_controller_test.rb
+/svn/!svn/ver/4900/trunk/test/functional/welcome_controller_test.rb
END
account_controller_test.rb
K 25
@@ -93,11 +93,11 @@
V 69
/svn/!svn/ver/4509/trunk/test/functional/calendars_controller_test.rb
END
-workflows_controller_test.rb
+journals_controller_test.rb
K 25
svn:wc:ra_dav:version-url
-V 69
-/svn/!svn/ver/4509/trunk/test/functional/workflows_controller_test.rb
+V 68
+/svn/!svn/ver/4954/trunk/test/functional/journals_controller_test.rb
END
time_entry_reports_controller_test.rb
K 25
@@ -105,11 +105,11 @@
V 78
/svn/!svn/ver/4509/trunk/test/functional/time_entry_reports_controller_test.rb
END
-journals_controller_test.rb
+workflows_controller_test.rb
K 25
svn:wc:ra_dav:version-url
-V 68
-/svn/!svn/ver/4535/trunk/test/functional/journals_controller_test.rb
+V 69
+/svn/!svn/ver/4895/trunk/test/functional/workflows_controller_test.rb
END
project_enumerations_controller_test.rb
K 25
@@ -123,23 +123,23 @@
V 66
/svn/!svn/ver/4509/trunk/test/functional/gantts_controller_test.rb
END
+issue_moves_controller_test.rb
+K 25
+svn:wc:ra_dav:version-url
+V 71
+/svn/!svn/ver/4509/trunk/test/functional/issue_moves_controller_test.rb
+END
users_controller_test.rb
K 25
svn:wc:ra_dav:version-url
V 65
/svn/!svn/ver/4729/trunk/test/functional/users_controller_test.rb
END
-issue_moves_controller_test.rb
-K 25
-svn:wc:ra_dav:version-url
-V 71
-/svn/!svn/ver/4509/trunk/test/functional/issue_moves_controller_test.rb
-END
repositories_cvs_controller_test.rb
K 25
svn:wc:ra_dav:version-url
V 76
-/svn/!svn/ver/4789/trunk/test/functional/repositories_cvs_controller_test.rb
+/svn/!svn/ver/4982/trunk/test/functional/repositories_cvs_controller_test.rb
END
application_controller_test.rb
K 25
@@ -153,29 +153,29 @@
V 70
/svn/!svn/ver/4509/trunk/test/functional/activities_controller_test.rb
END
+ldap_auth_sources_controller.rb
+K 25
+svn:wc:ra_dav:version-url
+V 72
+/svn/!svn/ver/3744/trunk/test/functional/ldap_auth_sources_controller.rb
+END
search_controller_test.rb
K 25
svn:wc:ra_dav:version-url
V 66
/svn/!svn/ver/4509/trunk/test/functional/search_controller_test.rb
END
-ldap_auth_sources_controller.rb
+messages_controller_test.rb
K 25
svn:wc:ra_dav:version-url
-V 72
-/svn/!svn/ver/3744/trunk/test/functional/ldap_auth_sources_controller.rb
+V 68
+/svn/!svn/ver/4509/trunk/test/functional/messages_controller_test.rb
END
repositories_bazaar_controller_test.rb
K 25
svn:wc:ra_dav:version-url
V 79
-/svn/!svn/ver/4509/trunk/test/functional/repositories_bazaar_controller_test.rb
-END
-messages_controller_test.rb
-K 25
-svn:wc:ra_dav:version-url
-V 68
-/svn/!svn/ver/4509/trunk/test/functional/messages_controller_test.rb
+/svn/!svn/ver/4982/trunk/test/functional/repositories_bazaar_controller_test.rb
END
attachments_controller_test.rb
K 25
@@ -241,7 +241,7 @@
K 25
svn:wc:ra_dav:version-url
V 82
-/svn/!svn/ver/4734/trunk/test/functional/repositories_mercurial_controller_test.rb
+/svn/!svn/ver/4855/trunk/test/functional/repositories_mercurial_controller_test.rb
END
issue_categories_controller_test.rb
K 25
@@ -289,7 +289,7 @@
K 25
svn:wc:ra_dav:version-url
V 78
-/svn/!svn/ver/4509/trunk/test/functional/repositories_darcs_controller_test.rb
+/svn/!svn/ver/4982/trunk/test/functional/repositories_darcs_controller_test.rb
END
wiki_controller_test.rb
K 25
@@ -313,7 +313,7 @@
K 25
svn:wc:ra_dav:version-url
V 83
-/svn/!svn/ver/4734/trunk/test/functional/repositories_subversion_controller_test.rb
+/svn/!svn/ver/4896/trunk/test/functional/repositories_subversion_controller_test.rb
END
issue_relations_controller_test.rb
K 25
diff -r 8972b600f4fb -r 051f544170fe test/functional/.svn/entries
--- a/test/functional/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/functional/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/functional
http://redmine.rubyforge.org/svn
-2011-02-02T04:00:59.430633Z
-4789
+2011-03-01T10:27:30.170724Z
+4982
tmaruyama
@@ -440,11 +440,11 @@
-2011-03-03T11:05:21.000000Z
-bf75948e1edceb4241e67a84731477f6
-2010-12-12T23:24:34.194336Z
-4509
-jbbarth
+2011-03-03T11:40:17.000000Z
+99cada623881a6be69cdf13119cc1de7
+2011-02-21T09:53:29.844413Z
+4900
+jplang
has-props
@@ -466,7 +466,7 @@
-2379
+3015
account_controller_test.rb
file
@@ -536,17 +536,17 @@
2390
-workflows_controller_test.rb
+journals_controller_test.rb
file
-2011-03-03T11:05:21.000000Z
-e99e1deab48be8515101e664af4d55da
-2010-12-12T23:24:34.194336Z
-4509
-jbbarth
+2011-03-03T11:40:17.000000Z
+aa7254e0715b3701554945deb5d98998
+2011-02-27T13:34:41.060565Z
+4954
+jplang
has-props
@@ -568,7 +568,7 @@
-6673
+3099
time_entry_reports_controller_test.rb
file
@@ -604,16 +604,16 @@
5424
-journals_controller_test.rb
+workflows_controller_test.rb
file
-2011-03-03T11:05:21.000000Z
-04e54620db6899c02b7e7a9e2645d0a6
-2010-12-18T17:11:41.680297Z
-4535
+2011-03-03T11:40:17.000000Z
+843e1eb3b5d05f3cb16580fe88d1baf5
+2011-02-20T15:38:07.840581Z
+4895
jplang
has-props
@@ -636,7 +636,7 @@
-2783
+7860
project_enumerations_controller_test.rb
file
@@ -706,6 +706,40 @@
2663
+issue_moves_controller_test.rb
+file
+
+
+
+
+2011-03-03T11:05:08.000000Z
+539d0852190ec556b2284bfe678e8523
+2010-12-12T23:24:34.194336Z
+4509
+jbbarth
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+5131
+
users_controller_test.rb
file
@@ -740,50 +774,16 @@
9068
-issue_moves_controller_test.rb
-file
-
-
-
-
-2011-03-03T11:05:08.000000Z
-539d0852190ec556b2284bfe678e8523
-2010-12-12T23:24:34.194336Z
-4509
-jbbarth
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-5131
-
repositories_cvs_controller_test.rb
file
-2011-03-03T11:05:21.000000Z
-26f60b5f3d2e68d920232c353f12b65a
-2011-02-02T04:00:59.430633Z
-4789
+2011-03-03T11:40:17.000000Z
+1802113ecf354a24583d7c5a8db750b6
+2011-03-01T10:27:30.170724Z
+4982
tmaruyama
has-props
@@ -806,7 +806,7 @@
-7278
+8336
application_controller_test.rb
file
@@ -876,6 +876,40 @@
2700
+ldap_auth_sources_controller.rb
+file
+
+
+
+
+2011-03-03T11:05:08.000000Z
+d6759c42ae866d7210c7006911e82a42
+2010-05-23T03:16:31.304135Z
+3744
+edavis10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+491
+
search_controller_test.rb
file
@@ -910,74 +944,6 @@
4680
-ldap_auth_sources_controller.rb
-file
-
-
-
-
-2011-03-03T11:05:08.000000Z
-d6759c42ae866d7210c7006911e82a42
-2010-05-23T03:16:31.304135Z
-3744
-edavis10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-491
-
-repositories_bazaar_controller_test.rb
-file
-
-
-
-
-2011-03-03T11:05:21.000000Z
-c7a720bd5851fd9afe177432179cd921
-2010-12-12T23:24:34.194336Z
-4509
-jbbarth
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-5059
-
messages_controller_test.rb
file
@@ -1012,6 +978,40 @@
5047
+repositories_bazaar_controller_test.rb
+file
+
+
+
+
+2011-03-03T11:40:17.000000Z
+138b8dc8d1e30b2a8f5eda76b0f905b6
+2011-03-01T10:27:30.170724Z
+4982
+tmaruyama
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+5177
+
attachments_controller_test.rb
file
@@ -1358,10 +1358,10 @@
-2011-03-03T11:05:21.000000Z
-1d9186fe92df47aa23044dfd4c3918fe
-2011-01-21T13:22:28.782688Z
-4734
+2011-03-03T11:40:17.000000Z
+c737d31340fe167746054c6975d86b18
+2011-02-16T11:18:18.909794Z
+4855
tmaruyama
has-props
@@ -1384,7 +1384,7 @@
-7928
+7919
issue_categories_controller_test.rb
file
@@ -1630,11 +1630,11 @@
-2011-03-03T11:05:21.000000Z
-ac4fd4943d72406872230aa7bad0213c
-2010-12-12T23:24:34.194336Z
-4509
-jbbarth
+2011-03-03T11:40:17.000000Z
+a05a557c98b400ffe59662be78e31270
+2011-03-01T10:27:30.170724Z
+4982
+tmaruyama
has-props
@@ -1656,7 +1656,7 @@
-3844
+4268
wiki_controller_test.rb
file
@@ -1766,10 +1766,10 @@
-2011-03-03T11:05:21.000000Z
-02daab0293ddc35afa4322963b564ce4
-2011-01-21T13:22:28.782688Z
-4734
+2011-03-03T11:40:17.000000Z
+d6a450e274753a0903a76b51c16eae7b
+2011-02-21T03:59:30.193463Z
+4896
tmaruyama
has-props
@@ -1792,7 +1792,7 @@
-9525
+11247
issue_relations_controller_test.rb
file
diff -r 8972b600f4fb -r 051f544170fe test/functional/.svn/text-base/journals_controller_test.rb.svn-base
--- a/test/functional/.svn/text-base/journals_controller_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/functional/.svn/text-base/journals_controller_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -1,5 +1,5 @@
-# redMine - project management software
-# Copyright (C) 2006-2008 Jean-Philippe Lang
+# Redmine - project management software
+# Copyright (C) 2006-2011 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -38,6 +38,19 @@
assert_equal 'application/atom+xml', @response.content_type
end
+ def test_diff
+ get :diff, :id => 3, :detail_id => 4
+ assert_response :success
+ assert_template 'diff'
+
+ assert_tag 'span',
+ :attributes => {:class => 'diff_out'},
+ :content => /removed/
+ assert_tag 'span',
+ :attributes => {:class => 'diff_in'},
+ :content => /added/
+ end
+
def test_reply_to_issue
@request.session[:user_id] = 2
get :new, :id => 6
diff -r 8972b600f4fb -r 051f544170fe test/functional/.svn/text-base/repositories_bazaar_controller_test.rb.svn-base
--- a/test/functional/.svn/text-base/repositories_bazaar_controller_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/functional/.svn/text-base/repositories_bazaar_controller_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -32,9 +32,13 @@
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
User.current = nil
- Repository::Bazaar.create(:project => Project.find(3), :url => REPOSITORY_PATH)
+ @project = Project.find(3)
+ @repository = Repository::Bazaar.create(
+ :project => @project, :url => REPOSITORY_PATH,
+ :log_encoding => 'UTF-8')
+ assert @repository
end
-
+
if File.directory?(REPOSITORY_PATH)
def test_show
get :show, :id => 3
@@ -43,7 +47,7 @@
assert_not_nil assigns(:entries)
assert_not_nil assigns(:changesets)
end
-
+
def test_browse_root
get :show, :id => 3
assert_response :success
@@ -53,7 +57,7 @@
assert assigns(:entries).detect {|e| e.name == 'directory' && e.kind == 'dir'}
assert assigns(:entries).detect {|e| e.name == 'doc-mkdir.txt' && e.kind == 'file'}
end
-
+
def test_browse_directory
get :show, :id => 3, :path => ['directory']
assert_response :success
diff -r 8972b600f4fb -r 051f544170fe test/functional/.svn/text-base/repositories_cvs_controller_test.rb.svn-base
--- a/test/functional/.svn/text-base/repositories_cvs_controller_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/functional/.svn/text-base/repositories_cvs_controller_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -41,7 +41,8 @@
@project = Project.find(PRJ_ID)
@repository = Repository::Cvs.create(:project => Project.find(PRJ_ID),
:root_url => REPOSITORY_PATH,
- :url => MODULE_NAME)
+ :url => MODULE_NAME,
+ :log_encoding => 'UTF-8')
assert @repository
end
@@ -154,6 +155,24 @@
assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' },
:content => /watched.remove_all_watcher/
end
+
+ def test_diff_new_files
+ @repository.fetch_changesets
+ @repository.reload
+ get :diff, :id => PRJ_ID, :rev => 1, :type => 'inline'
+ assert_response :success
+ assert_template 'diff'
+ assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' },
+ :content => /watched.remove_watcher/
+ assert_tag :tag => 'th', :attributes => { :class => 'filename' },
+ :content => /test\/README/
+ assert_tag :tag => 'th', :attributes => { :class => 'filename' },
+ :content => /test\/images\/delete.png /
+ assert_tag :tag => 'th', :attributes => { :class => 'filename' },
+ :content => /test\/images\/edit.png/
+ assert_tag :tag => 'th', :attributes => { :class => 'filename' },
+ :content => /test\/sources\/watchers_controller.rb/
+ end
def test_annotate
@repository.fetch_changesets
diff -r 8972b600f4fb -r 051f544170fe test/functional/.svn/text-base/repositories_darcs_controller_test.rb.svn-base
--- a/test/functional/.svn/text-base/repositories_darcs_controller_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/functional/.svn/text-base/repositories_darcs_controller_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -26,26 +26,35 @@
# No '..' in the repository path
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/darcs_repository'
+ PRJ_ID = 3
def setup
@controller = RepositoriesController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
User.current = nil
- Repository::Darcs.create(:project => Project.find(3), :url => REPOSITORY_PATH)
+ @project = Project.find(PRJ_ID)
+ @repository = Repository::Darcs.create(
+ :project => @project, :url => REPOSITORY_PATH,
+ :log_encoding => 'UTF-8')
+ assert @repository
end
-
+
if File.directory?(REPOSITORY_PATH)
def test_show
- get :show, :id => 3
+ @repository.fetch_changesets
+ @repository.reload
+ get :show, :id => PRJ_ID
assert_response :success
assert_template 'show'
assert_not_nil assigns(:entries)
assert_not_nil assigns(:changesets)
end
-
+
def test_browse_root
- get :show, :id => 3
+ @repository.fetch_changesets
+ @repository.reload
+ get :show, :id => PRJ_ID
assert_response :success
assert_template 'show'
assert_not_nil assigns(:entries)
@@ -54,9 +63,11 @@
assert assigns(:entries).detect {|e| e.name == 'sources' && e.kind == 'dir'}
assert assigns(:entries).detect {|e| e.name == 'README' && e.kind == 'file'}
end
-
+
def test_browse_directory
- get :show, :id => 3, :path => ['images']
+ @repository.fetch_changesets
+ @repository.reload
+ get :show, :id => PRJ_ID, :path => ['images']
assert_response :success
assert_template 'show'
assert_not_nil assigns(:entries)
@@ -66,27 +77,31 @@
assert_equal 'file', entry.kind
assert_equal 'images/edit.png', entry.path
end
-
+
def test_browse_at_given_revision
- Project.find(3).repository.fetch_changesets
- get :show, :id => 3, :path => ['images'], :rev => 1
+ @repository.fetch_changesets
+ @repository.reload
+ get :show, :id => PRJ_ID, :path => ['images'], :rev => 1
assert_response :success
assert_template 'show'
assert_not_nil assigns(:entries)
assert_equal ['delete.png'], assigns(:entries).collect(&:name)
end
-
+
def test_changes
- get :changes, :id => 3, :path => ['images', 'edit.png']
+ @repository.fetch_changesets
+ @repository.reload
+ get :changes, :id => PRJ_ID, :path => ['images', 'edit.png']
assert_response :success
assert_template 'changes'
assert_tag :tag => 'h2', :content => 'edit.png'
end
-
+
def test_diff
- Project.find(3).repository.fetch_changesets
+ @repository.fetch_changesets
+ @repository.reload
# Full diff of changeset 5
- get :diff, :id => 3, :rev => 5
+ get :diff, :id => PRJ_ID, :rev => 5
assert_response :success
assert_template 'diff'
# Line 22 removed
diff -r 8972b600f4fb -r 051f544170fe test/functional/.svn/text-base/repositories_mercurial_controller_test.rb.svn-base
--- a/test/functional/.svn/text-base/repositories_mercurial_controller_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/functional/.svn/text-base/repositories_mercurial_controller_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -34,6 +34,7 @@
User.current = nil
@repository = Repository::Mercurial.create(:project => Project.find(3), :url => REPOSITORY_PATH)
assert @repository
+ @diff_c_support = true
end
if File.directory?(REPOSITORY_PATH)
@@ -137,7 +138,7 @@
assert_response :success
assert_template 'diff'
- if @repository.scm.class.client_version_above?([1, 2])
+ if @diff_c_support
# Line 22 removed
assert_tag :tag => 'th',
:content => '22',
diff -r 8972b600f4fb -r 051f544170fe test/functional/.svn/text-base/repositories_subversion_controller_test.rb.svn-base
--- a/test/functional/.svn/text-base/repositories_subversion_controller_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/functional/.svn/text-base/repositories_subversion_controller_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -26,17 +26,26 @@
:repositories, :issues, :issue_statuses, :changesets, :changes,
:issue_categories, :enumerations, :custom_fields, :custom_values, :trackers
+ PRJ_ID = 3
+
def setup
@controller = RepositoriesController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
Setting.default_language = 'en'
User.current = nil
+
+ @project = Project.find(PRJ_ID)
+ @repository = Repository::Subversion.create(:project => @project,
+ :url => "file://#{self.class.repository_path('subversion')}")
+ assert @repository
end
if repository_configured?('subversion')
def test_show
- get :show, :id => 1
+ @repository.fetch_changesets
+ @repository.reload
+ get :show, :id => PRJ_ID
assert_response :success
assert_template 'show'
assert_not_nil assigns(:entries)
@@ -44,7 +53,9 @@
end
def test_browse_root
- get :show, :id => 1
+ @repository.fetch_changesets
+ @repository.reload
+ get :show, :id => PRJ_ID
assert_response :success
assert_template 'show'
assert_not_nil assigns(:entries)
@@ -53,7 +64,9 @@
end
def test_browse_directory
- get :show, :id => 1, :path => ['subversion_test']
+ @repository.fetch_changesets
+ @repository.reload
+ get :show, :id => PRJ_ID, :path => ['subversion_test']
assert_response :success
assert_template 'show'
assert_not_nil assigns(:entries)
@@ -65,7 +78,9 @@
end
def test_browse_at_given_revision
- get :show, :id => 1, :path => ['subversion_test'], :rev => 4
+ @repository.fetch_changesets
+ @repository.reload
+ get :show, :id => PRJ_ID, :path => ['subversion_test'], :rev => 4
assert_response :success
assert_template 'show'
assert_not_nil assigns(:entries)
@@ -73,7 +88,9 @@
end
def test_file_changes
- get :changes, :id => 1, :path => ['subversion_test', 'folder', 'helloworld.rb' ]
+ @repository.fetch_changesets
+ @repository.reload
+ get :changes, :id => PRJ_ID, :path => ['subversion_test', 'folder', 'helloworld.rb' ]
assert_response :success
assert_template 'changes'
@@ -93,7 +110,9 @@
end
def test_directory_changes
- get :changes, :id => 1, :path => ['subversion_test', 'folder' ]
+ @repository.fetch_changesets
+ @repository.reload
+ get :changes, :id => PRJ_ID, :path => ['subversion_test', 'folder' ]
assert_response :success
assert_template 'changes'
@@ -103,15 +122,19 @@
end
def test_entry
- get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c']
+ @repository.fetch_changesets
+ @repository.reload
+ get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c']
assert_response :success
assert_template 'entry'
end
def test_entry_should_send_if_too_big
+ @repository.fetch_changesets
+ @repository.reload
# no files in the test repo is larger than 1KB...
with_settings :file_max_size_displayed => 0 do
- get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c']
+ get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c']
assert_response :success
assert_template ''
assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition']
@@ -119,7 +142,9 @@
end
def test_entry_at_given_revision
- get :entry, :id => 1, :path => ['subversion_test', 'helloworld.rb'], :rev => 2
+ @repository.fetch_changesets
+ @repository.reload
+ get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.rb'], :rev => 2
assert_response :success
assert_template 'entry'
# this line was removed in r3 and file was moved in r6
@@ -128,27 +153,36 @@
end
def test_entry_not_found
- get :entry, :id => 1, :path => ['subversion_test', 'zzz.c']
+ @repository.fetch_changesets
+ @repository.reload
+ get :entry, :id => PRJ_ID, :path => ['subversion_test', 'zzz.c']
assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ },
:content => /The entry or revision was not found in the repository/
end
def test_entry_download
- get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c'], :format => 'raw'
+ @repository.fetch_changesets
+ @repository.reload
+ get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'], :format => 'raw'
assert_response :success
assert_template ''
assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition']
end
def test_directory_entry
- get :entry, :id => 1, :path => ['subversion_test', 'folder']
+ @repository.fetch_changesets
+ @repository.reload
+ get :entry, :id => PRJ_ID, :path => ['subversion_test', 'folder']
assert_response :success
assert_template 'show'
assert_not_nil assigns(:entry)
assert_equal 'folder', assigns(:entry).name
end
+ # TODO: this test needs fixtures.
def test_revision
+ @repository.fetch_changesets
+ @repository.reload
get :revision, :id => 1, :rev => 2
assert_response :success
assert_template 'revision'
@@ -167,19 +201,30 @@
end
def test_invalid_revision
- get :revision, :id => 1, :rev => 'something_weird'
+ @repository.fetch_changesets
+ @repository.reload
+ get :revision, :id => PRJ_ID, :rev => 'something_weird'
+ assert_response 404
+ assert_error_tag :content => /was not found/
+ end
+
+ def test_invalid_revision_diff
+ get :diff, :id => PRJ_ID, :rev => '1', :rev_to => 'something_weird'
assert_response 404
assert_error_tag :content => /was not found/
end
def test_empty_revision
+ @repository.fetch_changesets
+ @repository.reload
['', ' ', nil].each do |r|
- get :revision, :id => 1, :rev => r
+ get :revision, :id => PRJ_ID, :rev => r
assert_response 404
assert_error_tag :content => /was not found/
end
end
+ # TODO: this test needs fixtures.
def test_revision_with_repository_pointing_to_a_subdirectory
r = Project.find(1).repository
# Changes repository url to a subdirectory
@@ -203,7 +248,9 @@
end
def test_revision_diff
- get :diff, :id => 1, :rev => 3
+ @repository.fetch_changesets
+ @repository.reload
+ get :diff, :id => PRJ_ID, :rev => 3
assert_response :success
assert_template 'diff'
@@ -211,7 +258,9 @@
end
def test_directory_diff
- get :diff, :id => 1, :rev => 6, :rev_to => 2, :path => ['subversion_test', 'folder']
+ @repository.fetch_changesets
+ @repository.reload
+ get :diff, :id => PRJ_ID, :rev => 6, :rev_to => 2, :path => ['subversion_test', 'folder']
assert_response :success
assert_template 'diff'
@@ -224,13 +273,17 @@
end
def test_annotate
- get :annotate, :id => 1, :path => ['subversion_test', 'helloworld.c']
+ @repository.fetch_changesets
+ @repository.reload
+ get :annotate, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c']
assert_response :success
assert_template 'annotate'
end
def test_annotate_at_given_revision
- get :annotate, :id => 1, :rev => 8, :path => ['subversion_test', 'helloworld.c']
+ @repository.fetch_changesets
+ @repository.reload
+ get :annotate, :id => PRJ_ID, :rev => 8, :path => ['subversion_test', 'helloworld.c']
assert_response :success
assert_template 'annotate'
assert_tag :tag => 'h2', :content => /@ 8/
diff -r 8972b600f4fb -r 051f544170fe test/functional/.svn/text-base/welcome_controller_test.rb.svn-base
--- a/test/functional/.svn/text-base/welcome_controller_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/functional/.svn/text-base/welcome_controller_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -67,4 +67,28 @@
assert_equal 'text/plain', @response.content_type
assert @response.body.match(%r{^Disallow: /projects/ecookbook/issues\r?$})
end
+
+ def test_warn_on_leaving_unsaved_turn_on
+ user = User.find(2)
+ user.pref.warn_on_leaving_unsaved = '1'
+ user.pref.save!
+ @request.session[:user_id] = 2
+
+ get :index
+ assert_tag 'script',
+ :attributes => {:type => "text/javascript"},
+ :content => %r{new WarnLeavingUnsaved}
+ end
+
+ def test_warn_on_leaving_unsaved_turn_off
+ user = User.find(2)
+ user.pref.warn_on_leaving_unsaved = '0'
+ user.pref.save!
+ @request.session[:user_id] = 2
+
+ get :index
+ assert_no_tag 'script',
+ :attributes => {:type => "text/javascript"},
+ :content => %r{new WarnLeavingUnsaved}
+ end
end
diff -r 8972b600f4fb -r 051f544170fe test/functional/.svn/text-base/workflows_controller_test.rb.svn-base
--- a/test/functional/.svn/text-base/workflows_controller_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/functional/.svn/text-base/workflows_controller_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -65,17 +65,17 @@
# allowed transitions
assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
- :name => 'issue_status[3][]',
- :value => '5',
+ :name => 'issue_status[3][5][]',
+ :value => 'always',
:checked => 'checked' }
# not allowed
assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
- :name => 'issue_status[3][]',
- :value => '2',
+ :name => 'issue_status[3][2][]',
+ :value => 'always',
:checked => nil }
# unused
assert_no_tag :tag => 'input', :attributes => { :type => 'checkbox',
- :name => 'issue_status[4][]' }
+ :name => 'issue_status[1][1][]' }
end
def test_get_edit_with_role_and_tracker_and_all_statuses
@@ -89,13 +89,17 @@
assert_equal IssueStatus.count, assigns(:statuses).size
assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
- :name => 'issue_status[1][]',
- :value => '1',
+ :name => 'issue_status[1][1][]',
+ :value => 'always',
:checked => nil }
end
def test_post_edit
- post :edit, :role_id => 2, :tracker_id => 1, :issue_status => {'4' => ['5'], '3' => ['1', '2']}
+ post :edit, :role_id => 2, :tracker_id => 1,
+ :issue_status => {
+ '4' => {'5' => ['always']},
+ '3' => {'1' => ['always'], '2' => ['always']}
+ }
assert_redirected_to '/workflows/edit?role_id=2&tracker_id=1'
assert_equal 3, Workflow.count(:conditions => {:tracker_id => 1, :role_id => 2})
@@ -103,6 +107,30 @@
assert_nil Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 5, :new_status_id => 4})
end
+ def test_post_edit_with_additional_transitions
+ post :edit, :role_id => 2, :tracker_id => 1,
+ :issue_status => {
+ '4' => {'5' => ['always']},
+ '3' => {'1' => ['author'], '2' => ['assignee'], '4' => ['author', 'assignee']}
+ }
+ assert_redirected_to '/workflows/edit?role_id=2&tracker_id=1'
+
+ assert_equal 4, Workflow.count(:conditions => {:tracker_id => 1, :role_id => 2})
+
+ w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 4, :new_status_id => 5})
+ assert ! w.author
+ assert ! w.assignee
+ w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 1})
+ assert w.author
+ assert ! w.assignee
+ w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 2})
+ assert ! w.author
+ assert w.assignee
+ w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 4})
+ assert w.author
+ assert w.assignee
+ end
+
def test_clear_workflow
assert Workflow.count(:conditions => {:tracker_id => 1, :role_id => 2}) > 0
diff -r 8972b600f4fb -r 051f544170fe test/functional/journals_controller_test.rb
--- a/test/functional/journals_controller_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/functional/journals_controller_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -1,5 +1,5 @@
-# redMine - project management software
-# Copyright (C) 2006-2008 Jean-Philippe Lang
+# Redmine - project management software
+# Copyright (C) 2006-2011 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -38,6 +38,19 @@
assert_equal 'application/atom+xml', @response.content_type
end
+ def test_diff
+ get :diff, :id => 3, :detail_id => 4
+ assert_response :success
+ assert_template 'diff'
+
+ assert_tag 'span',
+ :attributes => {:class => 'diff_out'},
+ :content => /removed/
+ assert_tag 'span',
+ :attributes => {:class => 'diff_in'},
+ :content => /added/
+ end
+
def test_reply_to_issue
@request.session[:user_id] = 2
get :new, :id => 6
diff -r 8972b600f4fb -r 051f544170fe test/functional/repositories_bazaar_controller_test.rb
--- a/test/functional/repositories_bazaar_controller_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/functional/repositories_bazaar_controller_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -32,9 +32,13 @@
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
User.current = nil
- Repository::Bazaar.create(:project => Project.find(3), :url => REPOSITORY_PATH)
+ @project = Project.find(3)
+ @repository = Repository::Bazaar.create(
+ :project => @project, :url => REPOSITORY_PATH,
+ :log_encoding => 'UTF-8')
+ assert @repository
end
-
+
if File.directory?(REPOSITORY_PATH)
def test_show
get :show, :id => 3
@@ -43,7 +47,7 @@
assert_not_nil assigns(:entries)
assert_not_nil assigns(:changesets)
end
-
+
def test_browse_root
get :show, :id => 3
assert_response :success
@@ -53,7 +57,7 @@
assert assigns(:entries).detect {|e| e.name == 'directory' && e.kind == 'dir'}
assert assigns(:entries).detect {|e| e.name == 'doc-mkdir.txt' && e.kind == 'file'}
end
-
+
def test_browse_directory
get :show, :id => 3, :path => ['directory']
assert_response :success
diff -r 8972b600f4fb -r 051f544170fe test/functional/repositories_cvs_controller_test.rb
--- a/test/functional/repositories_cvs_controller_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/functional/repositories_cvs_controller_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -41,7 +41,8 @@
@project = Project.find(PRJ_ID)
@repository = Repository::Cvs.create(:project => Project.find(PRJ_ID),
:root_url => REPOSITORY_PATH,
- :url => MODULE_NAME)
+ :url => MODULE_NAME,
+ :log_encoding => 'UTF-8')
assert @repository
end
@@ -154,6 +155,24 @@
assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' },
:content => /watched.remove_all_watcher/
end
+
+ def test_diff_new_files
+ @repository.fetch_changesets
+ @repository.reload
+ get :diff, :id => PRJ_ID, :rev => 1, :type => 'inline'
+ assert_response :success
+ assert_template 'diff'
+ assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' },
+ :content => /watched.remove_watcher/
+ assert_tag :tag => 'th', :attributes => { :class => 'filename' },
+ :content => /test\/README/
+ assert_tag :tag => 'th', :attributes => { :class => 'filename' },
+ :content => /test\/images\/delete.png /
+ assert_tag :tag => 'th', :attributes => { :class => 'filename' },
+ :content => /test\/images\/edit.png/
+ assert_tag :tag => 'th', :attributes => { :class => 'filename' },
+ :content => /test\/sources\/watchers_controller.rb/
+ end
def test_annotate
@repository.fetch_changesets
diff -r 8972b600f4fb -r 051f544170fe test/functional/repositories_darcs_controller_test.rb
--- a/test/functional/repositories_darcs_controller_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/functional/repositories_darcs_controller_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -26,26 +26,35 @@
# No '..' in the repository path
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/darcs_repository'
+ PRJ_ID = 3
def setup
@controller = RepositoriesController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
User.current = nil
- Repository::Darcs.create(:project => Project.find(3), :url => REPOSITORY_PATH)
+ @project = Project.find(PRJ_ID)
+ @repository = Repository::Darcs.create(
+ :project => @project, :url => REPOSITORY_PATH,
+ :log_encoding => 'UTF-8')
+ assert @repository
end
-
+
if File.directory?(REPOSITORY_PATH)
def test_show
- get :show, :id => 3
+ @repository.fetch_changesets
+ @repository.reload
+ get :show, :id => PRJ_ID
assert_response :success
assert_template 'show'
assert_not_nil assigns(:entries)
assert_not_nil assigns(:changesets)
end
-
+
def test_browse_root
- get :show, :id => 3
+ @repository.fetch_changesets
+ @repository.reload
+ get :show, :id => PRJ_ID
assert_response :success
assert_template 'show'
assert_not_nil assigns(:entries)
@@ -54,9 +63,11 @@
assert assigns(:entries).detect {|e| e.name == 'sources' && e.kind == 'dir'}
assert assigns(:entries).detect {|e| e.name == 'README' && e.kind == 'file'}
end
-
+
def test_browse_directory
- get :show, :id => 3, :path => ['images']
+ @repository.fetch_changesets
+ @repository.reload
+ get :show, :id => PRJ_ID, :path => ['images']
assert_response :success
assert_template 'show'
assert_not_nil assigns(:entries)
@@ -66,27 +77,31 @@
assert_equal 'file', entry.kind
assert_equal 'images/edit.png', entry.path
end
-
+
def test_browse_at_given_revision
- Project.find(3).repository.fetch_changesets
- get :show, :id => 3, :path => ['images'], :rev => 1
+ @repository.fetch_changesets
+ @repository.reload
+ get :show, :id => PRJ_ID, :path => ['images'], :rev => 1
assert_response :success
assert_template 'show'
assert_not_nil assigns(:entries)
assert_equal ['delete.png'], assigns(:entries).collect(&:name)
end
-
+
def test_changes
- get :changes, :id => 3, :path => ['images', 'edit.png']
+ @repository.fetch_changesets
+ @repository.reload
+ get :changes, :id => PRJ_ID, :path => ['images', 'edit.png']
assert_response :success
assert_template 'changes'
assert_tag :tag => 'h2', :content => 'edit.png'
end
-
+
def test_diff
- Project.find(3).repository.fetch_changesets
+ @repository.fetch_changesets
+ @repository.reload
# Full diff of changeset 5
- get :diff, :id => 3, :rev => 5
+ get :diff, :id => PRJ_ID, :rev => 5
assert_response :success
assert_template 'diff'
# Line 22 removed
diff -r 8972b600f4fb -r 051f544170fe test/functional/repositories_mercurial_controller_test.rb
--- a/test/functional/repositories_mercurial_controller_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/functional/repositories_mercurial_controller_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -34,6 +34,7 @@
User.current = nil
@repository = Repository::Mercurial.create(:project => Project.find(3), :url => REPOSITORY_PATH)
assert @repository
+ @diff_c_support = true
end
if File.directory?(REPOSITORY_PATH)
@@ -137,7 +138,7 @@
assert_response :success
assert_template 'diff'
- if @repository.scm.class.client_version_above?([1, 2])
+ if @diff_c_support
# Line 22 removed
assert_tag :tag => 'th',
:content => '22',
diff -r 8972b600f4fb -r 051f544170fe test/functional/repositories_subversion_controller_test.rb
--- a/test/functional/repositories_subversion_controller_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/functional/repositories_subversion_controller_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -26,17 +26,26 @@
:repositories, :issues, :issue_statuses, :changesets, :changes,
:issue_categories, :enumerations, :custom_fields, :custom_values, :trackers
+ PRJ_ID = 3
+
def setup
@controller = RepositoriesController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
Setting.default_language = 'en'
User.current = nil
+
+ @project = Project.find(PRJ_ID)
+ @repository = Repository::Subversion.create(:project => @project,
+ :url => "file://#{self.class.repository_path('subversion')}")
+ assert @repository
end
if repository_configured?('subversion')
def test_show
- get :show, :id => 1
+ @repository.fetch_changesets
+ @repository.reload
+ get :show, :id => PRJ_ID
assert_response :success
assert_template 'show'
assert_not_nil assigns(:entries)
@@ -44,7 +53,9 @@
end
def test_browse_root
- get :show, :id => 1
+ @repository.fetch_changesets
+ @repository.reload
+ get :show, :id => PRJ_ID
assert_response :success
assert_template 'show'
assert_not_nil assigns(:entries)
@@ -53,7 +64,9 @@
end
def test_browse_directory
- get :show, :id => 1, :path => ['subversion_test']
+ @repository.fetch_changesets
+ @repository.reload
+ get :show, :id => PRJ_ID, :path => ['subversion_test']
assert_response :success
assert_template 'show'
assert_not_nil assigns(:entries)
@@ -65,7 +78,9 @@
end
def test_browse_at_given_revision
- get :show, :id => 1, :path => ['subversion_test'], :rev => 4
+ @repository.fetch_changesets
+ @repository.reload
+ get :show, :id => PRJ_ID, :path => ['subversion_test'], :rev => 4
assert_response :success
assert_template 'show'
assert_not_nil assigns(:entries)
@@ -73,7 +88,9 @@
end
def test_file_changes
- get :changes, :id => 1, :path => ['subversion_test', 'folder', 'helloworld.rb' ]
+ @repository.fetch_changesets
+ @repository.reload
+ get :changes, :id => PRJ_ID, :path => ['subversion_test', 'folder', 'helloworld.rb' ]
assert_response :success
assert_template 'changes'
@@ -93,7 +110,9 @@
end
def test_directory_changes
- get :changes, :id => 1, :path => ['subversion_test', 'folder' ]
+ @repository.fetch_changesets
+ @repository.reload
+ get :changes, :id => PRJ_ID, :path => ['subversion_test', 'folder' ]
assert_response :success
assert_template 'changes'
@@ -103,15 +122,19 @@
end
def test_entry
- get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c']
+ @repository.fetch_changesets
+ @repository.reload
+ get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c']
assert_response :success
assert_template 'entry'
end
def test_entry_should_send_if_too_big
+ @repository.fetch_changesets
+ @repository.reload
# no files in the test repo is larger than 1KB...
with_settings :file_max_size_displayed => 0 do
- get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c']
+ get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c']
assert_response :success
assert_template ''
assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition']
@@ -119,7 +142,9 @@
end
def test_entry_at_given_revision
- get :entry, :id => 1, :path => ['subversion_test', 'helloworld.rb'], :rev => 2
+ @repository.fetch_changesets
+ @repository.reload
+ get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.rb'], :rev => 2
assert_response :success
assert_template 'entry'
# this line was removed in r3 and file was moved in r6
@@ -128,27 +153,36 @@
end
def test_entry_not_found
- get :entry, :id => 1, :path => ['subversion_test', 'zzz.c']
+ @repository.fetch_changesets
+ @repository.reload
+ get :entry, :id => PRJ_ID, :path => ['subversion_test', 'zzz.c']
assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ },
:content => /The entry or revision was not found in the repository/
end
def test_entry_download
- get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c'], :format => 'raw'
+ @repository.fetch_changesets
+ @repository.reload
+ get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'], :format => 'raw'
assert_response :success
assert_template ''
assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition']
end
def test_directory_entry
- get :entry, :id => 1, :path => ['subversion_test', 'folder']
+ @repository.fetch_changesets
+ @repository.reload
+ get :entry, :id => PRJ_ID, :path => ['subversion_test', 'folder']
assert_response :success
assert_template 'show'
assert_not_nil assigns(:entry)
assert_equal 'folder', assigns(:entry).name
end
+ # TODO: this test needs fixtures.
def test_revision
+ @repository.fetch_changesets
+ @repository.reload
get :revision, :id => 1, :rev => 2
assert_response :success
assert_template 'revision'
@@ -167,19 +201,30 @@
end
def test_invalid_revision
- get :revision, :id => 1, :rev => 'something_weird'
+ @repository.fetch_changesets
+ @repository.reload
+ get :revision, :id => PRJ_ID, :rev => 'something_weird'
+ assert_response 404
+ assert_error_tag :content => /was not found/
+ end
+
+ def test_invalid_revision_diff
+ get :diff, :id => PRJ_ID, :rev => '1', :rev_to => 'something_weird'
assert_response 404
assert_error_tag :content => /was not found/
end
def test_empty_revision
+ @repository.fetch_changesets
+ @repository.reload
['', ' ', nil].each do |r|
- get :revision, :id => 1, :rev => r
+ get :revision, :id => PRJ_ID, :rev => r
assert_response 404
assert_error_tag :content => /was not found/
end
end
+ # TODO: this test needs fixtures.
def test_revision_with_repository_pointing_to_a_subdirectory
r = Project.find(1).repository
# Changes repository url to a subdirectory
@@ -203,7 +248,9 @@
end
def test_revision_diff
- get :diff, :id => 1, :rev => 3
+ @repository.fetch_changesets
+ @repository.reload
+ get :diff, :id => PRJ_ID, :rev => 3
assert_response :success
assert_template 'diff'
@@ -211,7 +258,9 @@
end
def test_directory_diff
- get :diff, :id => 1, :rev => 6, :rev_to => 2, :path => ['subversion_test', 'folder']
+ @repository.fetch_changesets
+ @repository.reload
+ get :diff, :id => PRJ_ID, :rev => 6, :rev_to => 2, :path => ['subversion_test', 'folder']
assert_response :success
assert_template 'diff'
@@ -224,13 +273,17 @@
end
def test_annotate
- get :annotate, :id => 1, :path => ['subversion_test', 'helloworld.c']
+ @repository.fetch_changesets
+ @repository.reload
+ get :annotate, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c']
assert_response :success
assert_template 'annotate'
end
def test_annotate_at_given_revision
- get :annotate, :id => 1, :rev => 8, :path => ['subversion_test', 'helloworld.c']
+ @repository.fetch_changesets
+ @repository.reload
+ get :annotate, :id => PRJ_ID, :rev => 8, :path => ['subversion_test', 'helloworld.c']
assert_response :success
assert_template 'annotate'
assert_tag :tag => 'h2', :content => /@ 8/
diff -r 8972b600f4fb -r 051f544170fe test/functional/welcome_controller_test.rb
--- a/test/functional/welcome_controller_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/functional/welcome_controller_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -67,4 +67,28 @@
assert_equal 'text/plain', @response.content_type
assert @response.body.match(%r{^Disallow: /projects/ecookbook/issues\r?$})
end
+
+ def test_warn_on_leaving_unsaved_turn_on
+ user = User.find(2)
+ user.pref.warn_on_leaving_unsaved = '1'
+ user.pref.save!
+ @request.session[:user_id] = 2
+
+ get :index
+ assert_tag 'script',
+ :attributes => {:type => "text/javascript"},
+ :content => %r{new WarnLeavingUnsaved}
+ end
+
+ def test_warn_on_leaving_unsaved_turn_off
+ user = User.find(2)
+ user.pref.warn_on_leaving_unsaved = '0'
+ user.pref.save!
+ @request.session[:user_id] = 2
+
+ get :index
+ assert_no_tag 'script',
+ :attributes => {:type => "text/javascript"},
+ :content => %r{new WarnLeavingUnsaved}
+ end
end
diff -r 8972b600f4fb -r 051f544170fe test/functional/workflows_controller_test.rb
--- a/test/functional/workflows_controller_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/functional/workflows_controller_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -65,17 +65,17 @@
# allowed transitions
assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
- :name => 'issue_status[3][]',
- :value => '5',
+ :name => 'issue_status[3][5][]',
+ :value => 'always',
:checked => 'checked' }
# not allowed
assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
- :name => 'issue_status[3][]',
- :value => '2',
+ :name => 'issue_status[3][2][]',
+ :value => 'always',
:checked => nil }
# unused
assert_no_tag :tag => 'input', :attributes => { :type => 'checkbox',
- :name => 'issue_status[4][]' }
+ :name => 'issue_status[1][1][]' }
end
def test_get_edit_with_role_and_tracker_and_all_statuses
@@ -89,13 +89,17 @@
assert_equal IssueStatus.count, assigns(:statuses).size
assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
- :name => 'issue_status[1][]',
- :value => '1',
+ :name => 'issue_status[1][1][]',
+ :value => 'always',
:checked => nil }
end
def test_post_edit
- post :edit, :role_id => 2, :tracker_id => 1, :issue_status => {'4' => ['5'], '3' => ['1', '2']}
+ post :edit, :role_id => 2, :tracker_id => 1,
+ :issue_status => {
+ '4' => {'5' => ['always']},
+ '3' => {'1' => ['always'], '2' => ['always']}
+ }
assert_redirected_to '/workflows/edit?role_id=2&tracker_id=1'
assert_equal 3, Workflow.count(:conditions => {:tracker_id => 1, :role_id => 2})
@@ -103,6 +107,30 @@
assert_nil Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 5, :new_status_id => 4})
end
+ def test_post_edit_with_additional_transitions
+ post :edit, :role_id => 2, :tracker_id => 1,
+ :issue_status => {
+ '4' => {'5' => ['always']},
+ '3' => {'1' => ['author'], '2' => ['assignee'], '4' => ['author', 'assignee']}
+ }
+ assert_redirected_to '/workflows/edit?role_id=2&tracker_id=1'
+
+ assert_equal 4, Workflow.count(:conditions => {:tracker_id => 1, :role_id => 2})
+
+ w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 4, :new_status_id => 5})
+ assert ! w.author
+ assert ! w.assignee
+ w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 1})
+ assert w.author
+ assert ! w.assignee
+ w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 2})
+ assert ! w.author
+ assert w.assignee
+ w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 4})
+ assert w.author
+ assert w.assignee
+ end
+
def test_clear_workflow
assert Workflow.count(:conditions => {:tracker_id => 1, :role_id => 2}) > 0
diff -r 8972b600f4fb -r 051f544170fe test/integration/.svn/entries
--- a/test/integration/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/integration/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/integration
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe test/integration/api_test/.svn/entries
--- a/test/integration/api_test/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/integration/api_test/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/integration/api_test
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe test/integration/lib/.svn/entries
--- a/test/integration/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/integration/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/integration/lib
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe test/integration/lib/redmine/.svn/entries
--- a/test/integration/lib/redmine/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/integration/lib/redmine/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/integration/lib/redmine
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe test/mocks/.svn/entries
--- a/test/mocks/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/mocks/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/mocks
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe test/mocks/development/.svn/entries
--- a/test/mocks/development/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/mocks/development/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/mocks/development
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe test/mocks/test/.svn/entries
--- a/test/mocks/test/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/mocks/test/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/mocks/test
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe test/unit/.svn/all-wcprops
--- a/test/unit/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 34
-/svn/!svn/ver/4802/trunk/test/unit
+/svn/!svn/ver/4991/trunk/test/unit
END
document_test.rb
K 25
@@ -19,13 +19,13 @@
K 25
svn:wc:ra_dav:version-url
V 57
-/svn/!svn/ver/4703/trunk/test/unit/repository_git_test.rb
+/svn/!svn/ver/4986/trunk/test/unit/repository_git_test.rb
END
repository_mercurial_test.rb
K 25
svn:wc:ra_dav:version-url
V 63
-/svn/!svn/ver/4704/trunk/test/unit/repository_mercurial_test.rb
+/svn/!svn/ver/4991/trunk/test/unit/repository_mercurial_test.rb
END
issue_relation_test.rb
K 25
@@ -55,13 +55,13 @@
K 25
svn:wc:ra_dav:version-url
V 48
-/svn/!svn/ver/4723/trunk/test/unit/issue_test.rb
+/svn/!svn/ver/4958/trunk/test/unit/issue_test.rb
END
issue_status_test.rb
K 25
svn:wc:ra_dav:version-url
V 55
-/svn/!svn/ver/4509/trunk/test/unit/issue_status_test.rb
+/svn/!svn/ver/4895/trunk/test/unit/issue_status_test.rb
END
time_entry_activity_test.rb
K 25
@@ -79,19 +79,13 @@
K 25
svn:wc:ra_dav:version-url
V 64
-/svn/!svn/ver/4703/trunk/test/unit/repository_subversion_test.rb
+/svn/!svn/ver/4987/trunk/test/unit/repository_subversion_test.rb
END
repository_bazaar_test.rb
K 25
svn:wc:ra_dav:version-url
V 60
-/svn/!svn/ver/4613/trunk/test/unit/repository_bazaar_test.rb
-END
-changeset_test.rb
-K 25
-svn:wc:ra_dav:version-url
-V 52
-/svn/!svn/ver/4613/trunk/test/unit/changeset_test.rb
+/svn/!svn/ver/4982/trunk/test/unit/repository_bazaar_test.rb
END
role_test.rb
K 25
@@ -99,6 +93,12 @@
V 47
/svn/!svn/ver/4509/trunk/test/unit/role_test.rb
END
+changeset_test.rb
+K 25
+svn:wc:ra_dav:version-url
+V 52
+/svn/!svn/ver/4984/trunk/test/unit/changeset_test.rb
+END
comment_test.rb
K 25
svn:wc:ra_dav:version-url
@@ -139,7 +139,19 @@
K 25
svn:wc:ra_dav:version-url
V 47
-/svn/!svn/ver/4761/trunk/test/unit/user_test.rb
+/svn/!svn/ver/4936/trunk/test/unit/user_test.rb
+END
+mail_handler_test.rb
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/!svn/ver/4576/trunk/test/unit/mail_handler_test.rb
+END
+repository_test.rb
+K 25
+svn:wc:ra_dav:version-url
+V 53
+/svn/!svn/ver/4982/trunk/test/unit/repository_test.rb
END
time_entry_test.rb
K 25
@@ -147,17 +159,17 @@
V 53
/svn/!svn/ver/4709/trunk/test/unit/time_entry_test.rb
END
-repository_test.rb
+principal_test.rb
K 25
svn:wc:ra_dav:version-url
-V 53
-/svn/!svn/ver/4726/trunk/test/unit/repository_test.rb
+V 52
+/svn/!svn/ver/4509/trunk/test/unit/principal_test.rb
END
-mail_handler_test.rb
+journal_observer_test.rb
K 25
svn:wc:ra_dav:version-url
-V 55
-/svn/!svn/ver/4576/trunk/test/unit/mail_handler_test.rb
+V 59
+/svn/!svn/ver/4509/trunk/test/unit/journal_observer_test.rb
END
auth_source_ldap_test.rb
K 25
@@ -165,17 +177,11 @@
V 59
/svn/!svn/ver/4509/trunk/test/unit/auth_source_ldap_test.rb
END
-journal_observer_test.rb
+repository_filesystem_test.rb
K 25
svn:wc:ra_dav:version-url
-V 59
-/svn/!svn/ver/4509/trunk/test/unit/journal_observer_test.rb
-END
-principal_test.rb
-K 25
-svn:wc:ra_dav:version-url
-V 52
-/svn/!svn/ver/4509/trunk/test/unit/principal_test.rb
+V 64
+/svn/!svn/ver/4509/trunk/test/unit/repository_filesystem_test.rb
END
project_nested_set_test.rb
K 25
@@ -183,12 +189,6 @@
V 61
/svn/!svn/ver/4650/trunk/test/unit/project_nested_set_test.rb
END
-repository_filesystem_test.rb
-K 25
-svn:wc:ra_dav:version-url
-V 64
-/svn/!svn/ver/4509/trunk/test/unit/repository_filesystem_test.rb
-END
message_test.rb
K 25
svn:wc:ra_dav:version-url
@@ -223,13 +223,13 @@
K 25
svn:wc:ra_dav:version-url
V 57
-/svn/!svn/ver/4802/trunk/test/unit/repository_cvs_test.rb
+/svn/!svn/ver/4982/trunk/test/unit/repository_cvs_test.rb
END
repository_darcs_test.rb
K 25
svn:wc:ra_dav:version-url
V 59
-/svn/!svn/ver/4608/trunk/test/unit/repository_darcs_test.rb
+/svn/!svn/ver/4982/trunk/test/unit/repository_darcs_test.rb
END
activity_test.rb
K 25
@@ -277,7 +277,7 @@
K 25
svn:wc:ra_dav:version-url
V 48
-/svn/!svn/ver/4553/trunk/test/unit/query_test.rb
+/svn/!svn/ver/4888/trunk/test/unit/query_test.rb
END
search_test.rb
K 25
diff -r 8972b600f4fb -r 051f544170fe test/unit/.svn/entries
--- a/test/unit/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/unit
http://redmine.rubyforge.org/svn
-2011-02-07T10:26:15.436891Z
-4802
+2011-03-03T03:35:13.139305Z
+4991
tmaruyama
@@ -100,10 +100,10 @@
-2011-03-03T11:05:21.000000Z
-f95988379d5f7fa7f341954a886c6a3e
-2011-01-13T12:04:30.962313Z
-4703
+2011-03-03T11:40:17.000000Z
+47242b5b6c39be0674556191a42a70ff
+2011-03-02T05:12:39.499704Z
+4986
tmaruyama
has-props
@@ -126,7 +126,7 @@
-4415
+5437
repository_mercurial_test.rb
file
@@ -134,10 +134,10 @@
-2011-03-03T11:05:21.000000Z
-37d81db20cb50110ac1f7fa44e5ecb40
-2011-01-13T12:04:51.838288Z
-4704
+2011-03-03T11:40:17.000000Z
+df5148d6503c41188684ca42c8fb1563
+2011-03-03T03:35:13.139305Z
+4991
tmaruyama
has-props
@@ -160,7 +160,7 @@
-6345
+7231
issue_relation_test.rb
file
@@ -304,10 +304,10 @@
-2011-03-03T11:05:21.000000Z
-a8c280ae08bee271010554106ded8aa0
-2011-01-15T14:12:18.630628Z
-4723
+2011-03-03T11:40:17.000000Z
+103def744f4a7e87035c40962f5f4b9f
+2011-02-27T15:51:10.736814Z
+4958
jplang
has-props
@@ -330,7 +330,7 @@
-30795
+32944
issue_status_test.rb
file
@@ -338,11 +338,11 @@
-2011-03-03T11:05:21.000000Z
-46bccc51b3aa0bd4b3826318f662f587
-2010-12-12T23:24:34.194336Z
-4509
-jbbarth
+2011-03-03T11:40:17.000000Z
+927e020ce867263e6cf5af443bfaecd8
+2011-02-20T15:38:07.840581Z
+4895
+jplang
has-props
@@ -364,7 +364,7 @@
-3236
+4757
time_entry_activity_test.rb
file
@@ -440,10 +440,10 @@
-2011-03-03T11:05:21.000000Z
-fb0636f5bb4d94047ed14879e88f7df7
-2011-01-13T12:04:30.962313Z
-4703
+2011-03-03T11:40:17.000000Z
+428e976e05c3c4bffbc9885ef1272fc7
+2011-03-02T07:10:39.633104Z
+4987
tmaruyama
has-props
@@ -466,7 +466,7 @@
-5506
+7066
repository_bazaar_test.rb
file
@@ -474,10 +474,10 @@
-2011-03-03T11:05:21.000000Z
-b0c66b65fc51cdbf6f9885dddbfe5a23
-2011-01-02T09:45:05.291687Z
-4613
+2011-03-03T11:40:17.000000Z
+562f1297bf47e2199e1f04ccd1733f49
+2011-03-01T10:27:30.170724Z
+4982
tmaruyama
has-props
@@ -500,10 +500,41 @@
-3125
+2704
-helpers
-dir
+changeset_test.rb
+file
+
+
+
+
+2011-03-03T11:40:17.000000Z
+ee5c9c8f3cf4814a73673fe693faf697
+2011-03-01T15:35:27.747088Z
+4984
+tmaruyama
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+10123
role_test.rb
file
@@ -539,39 +570,8 @@
3054
-changeset_test.rb
-file
-
-
-
-
-2011-03-03T11:05:21.000000Z
-c3cb358e85c7a5ddde50a50e8e8395d9
-2011-01-02T09:45:05.291687Z
-4613
-tmaruyama
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-7938
+helpers
+dir
comment_test.rb
file
@@ -786,10 +786,10 @@
-2011-03-03T11:05:21.000000Z
-9b6aa6783e2b9f44ad37d027deeaf9d3
-2011-01-24T17:28:59.767504Z
-4761
+2011-03-03T11:40:17.000000Z
+93a08b69d91fdc8222483cbb6d20563d
+2011-02-23T17:27:31.762248Z
+4936
jplang
has-props
@@ -812,7 +812,75 @@
-25384
+26161
+
+mail_handler_test.rb
+file
+
+
+
+
+2011-03-03T11:05:08.000000Z
+ccd63941c3776cd520a713f27ed01d08
+2010-12-29T17:38:57.772516Z
+4576
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+18979
+
+repository_test.rb
+file
+
+
+
+
+2011-03-03T11:40:17.000000Z
+71ee0e9aa37fb046390f5774895ef623
+2011-03-01T10:27:30.170724Z
+4982
+tmaruyama
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+6540
time_entry_test.rb
file
@@ -848,73 +916,73 @@
4317
-repository_test.rb
+principal_test.rb
file
-2011-03-03T11:05:21.000000Z
-759b702e56d17ca338fcead30d8cfcbe
-2011-01-16T14:27:02.047144Z
-4726
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-6554
+2011-03-03T11:05:08.000000Z
+69e70ceb20c56bbb25155e8120146aa3
+2010-12-12T23:24:34.194336Z
+4509
+jbbarth
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2078
-mail_handler_test.rb
+journal_observer_test.rb
file
2011-03-03T11:05:08.000000Z
-ccd63941c3776cd520a713f27ed01d08
-2010-12-29T17:38:57.772516Z
-4576
-jplang
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-18979
+0a054ecc047ebca7e0cb9fe8aadf51eb
+2010-12-12T23:24:34.194336Z
+4509
+jbbarth
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3959
auth_source_ldap_test.rb
file
@@ -950,74 +1018,6 @@
2793
-journal_observer_test.rb
-file
-
-
-
-
-2011-03-03T11:05:08.000000Z
-0a054ecc047ebca7e0cb9fe8aadf51eb
-2010-12-12T23:24:34.194336Z
-4509
-jbbarth
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-3959
-
-principal_test.rb
-file
-
-
-
-
-2011-03-03T11:05:08.000000Z
-69e70ceb20c56bbb25155e8120146aa3
-2010-12-12T23:24:34.194336Z
-4509
-jbbarth
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-2078
-
project_nested_set_test.rb
file
@@ -1262,10 +1262,10 @@
-2011-03-03T11:05:21.000000Z
-fdd38bbac4028c6fcb8b5902b7b509b2
-2011-02-07T10:26:15.436891Z
-4802
+2011-03-03T11:40:17.000000Z
+a2d7bc3feefa89da466f5ead9e4da18d
+2011-03-01T10:27:30.170724Z
+4982
tmaruyama
has-props
@@ -1288,7 +1288,7 @@
-3840
+3909
repository_darcs_test.rb
file
@@ -1296,10 +1296,10 @@
-2011-03-03T11:05:21.000000Z
-ae2d97f344e9c59bb09648e9e333db84
-2011-01-01T22:01:28.805978Z
-4608
+2011-03-03T11:40:17.000000Z
+44a11577927a86290e2887c1e0c0dd24
+2011-03-01T10:27:30.170724Z
+4982
tmaruyama
has-props
@@ -1322,7 +1322,7 @@
-2596
+2723
activity_test.rb
file
@@ -1568,10 +1568,10 @@
-2011-03-03T11:05:21.000000Z
-25fe3c9e8b257bd7f2ce5b8a28f8f508
-2010-12-21T21:46:54.984442Z
-4553
+2011-03-03T11:40:17.000000Z
+1cf7133fc93cd35e36b828afe1abdd35
+2011-02-20T13:03:32.835478Z
+4888
jplang
has-props
@@ -1594,7 +1594,7 @@
-20770
+21925
search_test.rb
file
diff -r 8972b600f4fb -r 051f544170fe test/unit/.svn/text-base/changeset_test.rb.svn-base
--- a/test/unit/.svn/text-base/changeset_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/.svn/text-base/changeset_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -72,24 +72,40 @@
Setting.commit_ref_keywords = '*'
Setting.commit_logtime_enabled = '1'
- c = Changeset.new(:repository => Project.find(1).repository,
- :committed_on => 24.hours.ago,
- :comments => 'Worked on this issue #1 @2h',
- :revision => '520',
- :user => User.find(2))
- assert_difference 'TimeEntry.count' do
- c.scan_comment_for_issue_ids
+ {
+ '2' => 2.0,
+ '2h' => 2.0,
+ '2hours' => 2.0,
+ '15m' => 0.25,
+ '15min' => 0.25,
+ '3h15' => 3.25,
+ '3h15m' => 3.25,
+ '3h15min' => 3.25,
+ '3:15' => 3.25,
+ '3.25' => 3.25,
+ '3.25h' => 3.25,
+ '3,25' => 3.25,
+ '3,25h' => 3.25,
+ }.each do |syntax, expected_hours|
+ c = Changeset.new(:repository => Project.find(1).repository,
+ :committed_on => 24.hours.ago,
+ :comments => "Worked on this issue #1 @#{syntax}",
+ :revision => '520',
+ :user => User.find(2))
+ assert_difference 'TimeEntry.count' do
+ c.scan_comment_for_issue_ids
+ end
+ assert_equal [1], c.issue_ids.sort
+
+ time = TimeEntry.first(:order => 'id desc')
+ assert_equal 1, time.issue_id
+ assert_equal 1, time.project_id
+ assert_equal 2, time.user_id
+ assert_equal expected_hours, time.hours, "@#{syntax} should be logged as #{expected_hours} hours but was #{time.hours}"
+ assert_equal Date.yesterday, time.spent_on
+ assert time.activity.is_default?
+ assert time.comments.include?('r520'), "r520 was expected in time_entry comments: #{time.comments}"
end
- assert_equal [1], c.issue_ids.sort
-
- time = TimeEntry.first(:order => 'id desc')
- assert_equal 1, time.issue_id
- assert_equal 1, time.project_id
- assert_equal 2, time.user_id
- assert_equal 2.0, time.hours
- assert_equal Date.yesterday, time.spent_on
- assert time.activity.is_default?
- assert time.comments.include?('r520'), "r520 was expected in time_entry comments: #{time.comments}"
end
def test_ref_keywords_closing_with_timelog
@@ -100,7 +116,7 @@
c = Changeset.new(:repository => Project.find(1).repository,
:committed_on => Time.now,
- :comments => 'This is a comment. Fixes #1 @2.5, #2 @1',
+ :comments => 'This is a comment. Fixes #1 @4.5, #2 @1',
:user => User.find(2))
assert_difference 'TimeEntry.count', 2 do
c.scan_comment_for_issue_ids
@@ -169,12 +185,12 @@
assert_equal [2], c.issue_ids.sort
assert c.issues.first.project != c.project
end
-
+
def test_text_tag_revision
c = Changeset.new(:revision => '520')
assert_equal 'r520', c.text_tag
end
-
+
def test_text_tag_hash
c = Changeset.new(:scmid => '7234cb2750b63f47bff735edc50a1c0a433c2518', :revision => '7234cb2750b63f47bff735edc50a1c0a433c2518')
assert_equal 'commit:7234cb2750b63f47bff735edc50a1c0a433c2518', c.text_tag
@@ -204,19 +220,67 @@
changeset = Changeset.find_by_revision('10')
assert_nil changeset.next
end
-
+
def test_comments_should_be_converted_to_utf8
- with_settings :commit_logs_encoding => 'ISO-8859-1' do
- c = Changeset.new
- c.comments = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt")
+ proj = Project.find(3)
+ str = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt")
+ r = Repository::Bazaar.create!(
+ :project => proj, :url => '/tmp/test/bazaar',
+ :log_encoding => 'ISO-8859-1' )
+ assert r
+ c = Changeset.new(:repository => r,
+ :committed_on => Time.now,
+ :revision => '123',
+ :scmid => '12345',
+ :comments => str)
+ assert( c.save )
assert_equal "Texte encodé en ISO-8859-1.", c.comments
- end
end
-
+
def test_invalid_utf8_sequences_in_comments_should_be_stripped
- c = Changeset.new
- c.comments = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt")
- assert_equal "Texte encod en ISO-8859-1.", c.comments
+ proj = Project.find(3)
+ str = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt")
+ r = Repository::Bazaar.create!(
+ :project => proj, :url => '/tmp/test/bazaar',
+ :log_encoding => 'UTF-8' )
+ assert r
+ c = Changeset.new(:repository => r,
+ :committed_on => Time.now,
+ :revision => '123',
+ :scmid => '12345',
+ :comments => str)
+ assert( c.save )
+ if str.respond_to?(:force_encoding)
+ assert_equal "Texte encod? en ISO-8859-1.", c.comments
+ else
+ assert_equal "Texte encod en ISO-8859-1.", c.comments
+ end
+ end
+
+ def test_comments_should_be_converted_all_latin1_to_utf8
+ s1 = "\xC2\x80"
+ s2 = "\xc3\x82\xc2\x80"
+ if s1.respond_to?(:force_encoding)
+ s3 = s1
+ s4 = s2
+ s1.force_encoding('ASCII-8BIT')
+ s2.force_encoding('ASCII-8BIT')
+ s3.force_encoding('ISO-8859-1')
+ s4.force_encoding('UTF-8')
+ assert_equal s3.encode('UTF-8'), s4
+ end
+ proj = Project.find(3)
+ r = Repository::Bazaar.create!(
+ :project => proj, :url => '/tmp/test/bazaar',
+ :log_encoding => 'ISO-8859-1' )
+ assert r
+ c = Changeset.new(:repository => r,
+ :committed_on => Time.now,
+ :revision => '123',
+ :scmid => '12345',
+ :comments => s1)
+ assert( c.save )
+ assert_equal s2, c.comments
end
def test_identifier
diff -r 8972b600f4fb -r 051f544170fe test/unit/.svn/text-base/issue_status_test.rb.svn-base
--- a/test/unit/.svn/text-base/issue_status_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/.svn/text-base/issue_status_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -18,7 +18,7 @@
require File.expand_path('../../test_helper', __FILE__)
class IssueStatusTest < ActiveSupport::TestCase
- fixtures :issue_statuses, :issues
+ fixtures :issue_statuses, :issues, :roles, :trackers
def test_create
status = IssueStatus.new :name => "Assigned"
@@ -68,6 +68,30 @@
status.reload
assert status.is_default?
end
+
+ def test_new_statuses_allowed_to
+ Workflow.delete_all
+
+ Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 2, :author => false, :assignee => false)
+ Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 3, :author => true, :assignee => false)
+ Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 4, :author => false, :assignee => true)
+ Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 5, :author => true, :assignee => true)
+ status = IssueStatus.find(1)
+ role = Role.find(1)
+ tracker = Tracker.find(1)
+
+ assert_equal [2], status.new_statuses_allowed_to([role], tracker, false, false).map(&:id)
+ assert_equal [2], status.find_new_statuses_allowed_to([role], tracker, false, false).map(&:id)
+
+ assert_equal [2, 3], status.new_statuses_allowed_to([role], tracker, true, false).map(&:id)
+ assert_equal [2, 3], status.find_new_statuses_allowed_to([role], tracker, true, false).map(&:id)
+
+ assert_equal [2, 4], status.new_statuses_allowed_to([role], tracker, false, true).map(&:id)
+ assert_equal [2, 4], status.find_new_statuses_allowed_to([role], tracker, false, true).map(&:id)
+
+ assert_equal [2, 3, 4, 5], status.new_statuses_allowed_to([role], tracker, true, true).map(&:id)
+ assert_equal [2, 3, 4, 5], status.find_new_statuses_allowed_to([role], tracker, true, true).map(&:id)
+ end
context "#update_done_ratios" do
setup do
diff -r 8972b600f4fb -r 051f544170fe test/unit/.svn/text-base/issue_test.rb.svn-base
--- a/test/unit/.svn/text-base/issue_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/.svn/text-base/issue_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -1,5 +1,5 @@
-# redMine - project management software
-# Copyright (C) 2006-2007 Jean-Philippe Lang
+# Redmine - project management software
+# Copyright (C) 2006-2011 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -210,6 +210,33 @@
assert_equal IssueCategory.find(1).assigned_to, issue.assigned_to
end
+
+
+ def test_new_statuses_allowed_to
+ Workflow.delete_all
+
+ Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 2, :author => false, :assignee => false)
+ Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 3, :author => true, :assignee => false)
+ Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 4, :author => false, :assignee => true)
+ Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 5, :author => true, :assignee => true)
+ status = IssueStatus.find(1)
+ role = Role.find(1)
+ tracker = Tracker.find(1)
+ user = User.find(2)
+
+ issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1)
+ assert_equal [1, 2], issue.new_statuses_allowed_to(user).map(&:id)
+
+ issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1, :author => user)
+ assert_equal [1, 2, 3], issue.new_statuses_allowed_to(user).map(&:id)
+
+ issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1, :assigned_to => user)
+ assert_equal [1, 2, 4], issue.new_statuses_allowed_to(user).map(&:id)
+
+ issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1, :author => user, :assigned_to => user)
+ assert_equal [1, 2, 3, 4, 5], issue.new_statuses_allowed_to(user).map(&:id)
+ end
+
def test_copy
issue = Issue.new.copy_from(1)
assert issue.save
@@ -594,6 +621,29 @@
assert ActionMailer::Base.deliveries.empty?
end
+ def test_journalized_description
+ IssueCustomField.delete_all
+
+ i = Issue.first
+ old_description = i.description
+ new_description = "This is the new description"
+
+ i.init_journal(User.find(2))
+ i.description = new_description
+ assert_difference 'Journal.count', 1 do
+ assert_difference 'JournalDetail.count', 1 do
+ i.save!
+ end
+ end
+
+ detail = JournalDetail.first(:order => 'id DESC')
+ assert_equal i, detail.journal.journalized
+ assert_equal 'attr', detail.property
+ assert_equal 'description', detail.prop_key
+ assert_equal old_description, detail.old_value
+ assert_equal new_description, detail.value
+ end
+
def test_saving_twice_should_not_duplicate_journal_details
i = Issue.find(:first)
i.init_journal(User.find(2), 'Some notes')
diff -r 8972b600f4fb -r 051f544170fe test/unit/.svn/text-base/query_test.rb.svn-base
--- a/test/unit/.svn/text-base/query_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/.svn/text-base/query_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -484,7 +484,6 @@
# Users not in a group
assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IS NULL OR #{Issue.table_name}.assigned_to_id NOT IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}')"
assert_find_issues_with_query_is_successful @query
-
end
should "search assigned to any group member (all)" do
@@ -494,7 +493,22 @@
# Only users in a group
assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}')"
assert_find_issues_with_query_is_successful @query
-
+ end
+
+ should "return an empty set with = empty group" do
+ @empty_group = Group.generate!
+ @query = Query.new(:name => '_')
+ @query.add_filter('member_of_group', '=', [@empty_group.id.to_s])
+
+ assert_equal [], find_issues_with_query(@query)
+ end
+
+ should "return issues with ! empty group" do
+ @empty_group = Group.generate!
+ @query = Query.new(:name => '_')
+ @query.add_filter('member_of_group', '!', [@empty_group.id.to_s])
+
+ assert_find_issues_with_query_is_successful @query
end
end
@@ -540,6 +554,22 @@
assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@manager.id}','#{@developer.id}','#{@boss.id}')"
assert_find_issues_with_query_is_successful @query
end
+
+ should "return an empty set with empty role" do
+ @empty_role = Role.generate!
+ @query = Query.new(:name => '_')
+ @query.add_filter('assigned_to_role', '=', [@empty_role.id.to_s])
+
+ assert_equal [], find_issues_with_query(@query)
+ end
+
+ should "return issues with ! empty role" do
+ @empty_role = Role.generate!
+ @query = Query.new(:name => '_')
+ @query.add_filter('member_of_group', '!', [@empty_role.id.to_s])
+
+ assert_find_issues_with_query_is_successful @query
+ end
end
end
diff -r 8972b600f4fb -r 051f544170fe test/unit/.svn/text-base/repository_bazaar_test.rb.svn-base
--- a/test/unit/.svn/text-base/repository_bazaar_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/.svn/text-base/repository_bazaar_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -19,16 +19,19 @@
class RepositoryBazaarTest < ActiveSupport::TestCase
fixtures :projects
-
+
# No '..' in the repository path
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/bazaar_repository'
REPOSITORY_PATH.gsub!(/\/+/, '/')
def setup
- @project = Project.find(1)
- assert @repository = Repository::Bazaar.create(:project => @project, :url => "file:///#{REPOSITORY_PATH}")
+ @project = Project.find(3)
+ @repository = Repository::Bazaar.create(
+ :project => @project, :url => "file:///#{REPOSITORY_PATH}",
+ :log_encoding => 'UTF-8')
+ assert @repository
end
-
+
if File.directory?(REPOSITORY_PATH)
def test_fetch_changesets_from_scratch
@repository.fetch_changesets
@@ -38,7 +41,7 @@
assert_equal 9, @repository.changes.count
assert_equal 'Initial import', @repository.changesets.find_by_revision('1').comments
end
-
+
def test_fetch_changesets_incremental
@repository.fetch_changesets
# Remove changesets with revision > 5
@@ -49,7 +52,7 @@
@repository.fetch_changesets
assert_equal 4, @repository.changesets.count
end
-
+
def test_entries
entries = @repository.entries
assert_equal 2, entries.size
@@ -68,19 +71,6 @@
assert_equal 'file', entries.last.kind
assert_equal 'edit.png', entries.last.name
end
-
- def test_cat
- cat = @repository.scm.cat('directory/document.txt')
- assert cat =~ /Write the contents of a file as of a given revision to standard output/
- end
-
- def test_annotate
- annotate = @repository.scm.annotate('doc-mkdir.txt')
- assert_equal 17, annotate.lines.size
- assert_equal '1', annotate.revisions[0].identifier
- assert_equal 'jsmith@', annotate.revisions[0].author
- assert_equal 'mkdir', annotate.lines[0]
- end
else
puts "Bazaar test repository NOT FOUND. Skipping unit tests !!!"
def test_fake; assert true end
diff -r 8972b600f4fb -r 051f544170fe test/unit/.svn/text-base/repository_cvs_test.rb.svn-base
--- a/test/unit/.svn/text-base/repository_cvs_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/.svn/text-base/repository_cvs_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -28,9 +28,11 @@
def setup
@project = Project.find(3)
- assert @repository = Repository::Cvs.create(:project => @project,
- :root_url => REPOSITORY_PATH,
- :url => MODULE_NAME)
+ @repository = Repository::Cvs.create(:project => @project,
+ :root_url => REPOSITORY_PATH,
+ :url => MODULE_NAME,
+ :log_encoding => 'UTF-8')
+ assert @repository
end
if File.directory?(REPOSITORY_PATH)
diff -r 8972b600f4fb -r 051f544170fe test/unit/.svn/text-base/repository_darcs_test.rb.svn-base
--- a/test/unit/.svn/text-base/repository_darcs_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/.svn/text-base/repository_darcs_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -19,25 +19,28 @@
class RepositoryDarcsTest < ActiveSupport::TestCase
fixtures :projects
-
+
# No '..' in the repository path
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/darcs_repository'
-
+
def setup
- @project = Project.find(1)
- assert @repository = Repository::Darcs.create(:project => @project, :url => REPOSITORY_PATH)
+ @project = Project.find(3)
+ @repository = Repository::Darcs.create(
+ :project => @project, :url => REPOSITORY_PATH,
+ :log_encoding => 'UTF-8')
+ assert @repository
end
-
+
if File.directory?(REPOSITORY_PATH)
def test_fetch_changesets_from_scratch
@repository.fetch_changesets
@repository.reload
-
+
assert_equal 6, @repository.changesets.count
assert_equal 13, @repository.changes.count
assert_equal "Initial commit.", @repository.changesets.find_by_revision('1').comments
end
-
+
def test_fetch_changesets_incremental
@repository.fetch_changesets
# Remove changesets with revision > 3
@@ -48,8 +51,10 @@
@repository.fetch_changesets
assert_equal 6, @repository.changesets.count
end
-
+
def test_deleted_files_should_not_be_listed
+ @repository.fetch_changesets
+ @repository.reload
entries = @repository.entries('sources')
assert entries.detect {|e| e.name == 'watchers_controller.rb'}
assert_nil entries.detect {|e| e.name == 'welcome_controller.rb'}
diff -r 8972b600f4fb -r 051f544170fe test/unit/.svn/text-base/repository_git_test.rb.svn-base
--- a/test/unit/.svn/text-base/repository_git_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/.svn/text-base/repository_git_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -18,25 +18,29 @@
require File.expand_path('../../test_helper', __FILE__)
class RepositoryGitTest < ActiveSupport::TestCase
- fixtures :projects, :repositories, :enabled_modules, :users, :roles
-
+ fixtures :projects, :repositories, :enabled_modules, :users, :roles
+
# No '..' in the repository path
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/git_repository'
REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin?
-
+
+ FELIX_HEX = "Felix Sch\xC3\xA4fer"
+
def setup
- @project = Project.find(1)
- assert @repository = Repository::Git.create(:project => @project, :url => REPOSITORY_PATH)
+ Setting.commit_logs_encoding = 'UTF-8'
+ @project = Project.find(3)
+ @repository = Repository::Git.create(:project => @project, :url => REPOSITORY_PATH)
+ assert @repository
end
-
+
if File.directory?(REPOSITORY_PATH)
def test_fetch_changesets_from_scratch
@repository.fetch_changesets
@repository.reload
-
- assert_equal 15, @repository.changesets.count
- assert_equal 24, @repository.changes.count
-
+
+ assert_equal 16, @repository.changesets.count
+ assert_equal 25, @repository.changes.count
+
commit = @repository.changesets.find(:first, :order => 'committed_on ASC')
assert_equal "Initial import.\nThe repository contains 3 files.", commit.comments
assert_equal "jsmith ", commit.committer
@@ -57,10 +61,20 @@
# Remove the 3 latest changesets
@repository.changesets.find(:all, :order => 'committed_on DESC', :limit => 3).each(&:destroy)
@repository.reload
- assert_equal 12, @repository.changesets.count
-
+ cs1 = @repository.changesets
+ assert_equal 13, cs1.count
+
+ rev_a_commit = @repository.changesets.find(:first, :order => 'committed_on DESC')
+ assert_equal '4f26664364207fa8b1af9f8722647ab2d4ac5d43', rev_a_commit.revision
+ # Mon Jul 5 22:34:26 2010 +0200
+ rev_a_committed_on = Time.gm(2010, 7, 5, 20, 34, 26)
+ assert_equal '4f26664364207fa8b1af9f8722647ab2d4ac5d43', rev_a_commit.scmid
+ assert_equal rev_a_committed_on, rev_a_commit.committed_on
+ latest_rev = @repository.latest_changeset
+ assert_equal rev_a_committed_on, latest_rev.committed_on
+
@repository.fetch_changesets
- assert_equal 15, @repository.changesets.count
+ assert_equal 16, @repository.changesets.count
end
def test_find_changeset_by_name
@@ -103,6 +117,17 @@
assert c.event_title.include?('abc7234c:')
assert_equal 'abc7234cb2750b63f47bff735edc50a1c0a433c2', c.event_url[:rev]
end
+
+ def test_log_utf8
+ @repository.fetch_changesets
+ @repository.reload
+ str_felix_hex = FELIX_HEX
+ if str_felix_hex.respond_to?(:force_encoding)
+ str_felix_hex.force_encoding('UTF-8')
+ end
+ c = @repository.changesets.find_by_revision('ed5bb786bbda2dee66a2d50faf51429dbc043a7b')
+ assert_equal "#{str_felix_hex} ", c.committer
+ end
else
puts "Git test repository NOT FOUND. Skipping unit tests !!!"
def test_fake; assert true end
diff -r 8972b600f4fb -r 051f544170fe test/unit/.svn/text-base/repository_mercurial_test.rb.svn-base
--- a/test/unit/.svn/text-base/repository_mercurial_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/.svn/text-base/repository_mercurial_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -22,23 +22,23 @@
# No '..' in the repository path
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/mercurial_repository'
-
+
def setup
- @project = Project.find(1)
- assert @repository = Repository::Mercurial.create(:project => @project, :url => REPOSITORY_PATH)
+ @project = Project.find(3)
+ @repository = Repository::Mercurial.create(:project => @project, :url => REPOSITORY_PATH)
+ assert @repository
end
-
+
if File.directory?(REPOSITORY_PATH)
def test_fetch_changesets_from_scratch
@repository.fetch_changesets
@repository.reload
-
assert_equal 17, @repository.changesets.count
assert_equal 25, @repository.changes.count
assert_equal "Initial import.\nThe repository contains 3 files.",
@repository.changesets.find_by_revision('0').comments
end
-
+
def test_fetch_changesets_incremental
@repository.fetch_changesets
# Remove changesets with revision > 2
@@ -49,19 +49,6 @@
@repository.fetch_changesets
assert_equal 17, @repository.changesets.count
end
-
- def test_entries
- assert_equal 2, @repository.entries("sources", 2).size
- assert_equal 2, @repository.entries("sources", '400bb8672109').size
- assert_equal 1, @repository.entries("sources", 3).size
- assert_equal 1, @repository.entries("sources", 'b3a615152df8').size
- end
-
- def test_locate_on_outdated_repository
- assert_equal 1, @repository.entries("images", 0).size
- assert_equal 2, @repository.entries("images").size
- assert_equal 2, @repository.entries("images", 2).size
- end
def test_isodatesec
# Template keyword 'isodatesec' supported in Mercurial 1.0 and higher
@@ -171,6 +158,43 @@
assert c.event_title.include?('123:abc400bb8672:')
assert_equal 'abc400bb8672', c.event_url[:rev]
end
+
+ def test_latest_changesets_with_limit
+ @repository.fetch_changesets
+ @repository.reload
+ changesets = @repository.latest_changesets('', nil, 2)
+ assert_equal @repository.latest_changesets('', nil)[0, 2], changesets
+ end
+
+ def test_latest_changesets_with_filepath
+ @repository.fetch_changesets
+ @repository.reload
+ changesets = @repository.latest_changesets('README', nil)
+ assert_equal %w|8 6 1 0|, changesets.collect(&:revision)
+
+ path = 'sql_escape/percent%dir/percent%file1.txt'
+ changesets = @repository.latest_changesets(path, nil)
+ assert_equal %w|11 10 9|, changesets.collect(&:revision)
+
+ path = 'sql_escape/underscore_dir/understrike_file.txt'
+ changesets = @repository.latest_changesets(path, nil)
+ assert_equal %w|12 9|, changesets.collect(&:revision)
+ end
+
+ def test_latest_changesets_with_dirpath
+ @repository.fetch_changesets
+ @repository.reload
+ changesets = @repository.latest_changesets('images', nil)
+ assert_equal %w|1 0|, changesets.collect(&:revision)
+
+ path = 'sql_escape/percent%dir'
+ changesets = @repository.latest_changesets(path, nil)
+ assert_equal %w|13 11 10 9|, changesets.collect(&:revision)
+
+ path = 'sql_escape/underscore_dir'
+ changesets = @repository.latest_changesets(path, nil)
+ assert_equal %w|13 12 9|, changesets.collect(&:revision)
+ end
else
puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!"
def test_fake; assert true end
diff -r 8972b600f4fb -r 051f544170fe test/unit/.svn/text-base/repository_subversion_test.rb.svn-base
--- a/test/unit/.svn/text-base/repository_subversion_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/.svn/text-base/repository_subversion_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -21,8 +21,9 @@
fixtures :projects, :repositories, :enabled_modules, :users, :roles
def setup
- @project = Project.find(1)
- assert @repository = Repository::Subversion.create(:project => @project, :url => "file:///#{self.class.repository_path('subversion')}")
+ @project = Project.find(3)
+ assert @repository = Repository::Subversion.create(:project => @project,
+ :url => "file://#{self.class.repository_path('subversion')}")
end
if repository_configured?('subversion')
@@ -74,7 +75,7 @@
end
def test_directory_listing_with_square_brackets_in_base
- @project = Project.find(1)
+ @project = Project.find(3)
@repository = Repository::Subversion.create(:project => @project, :url => "file:///#{self.class.repository_path('subversion')}/subversion_test/[folder_with_brackets]")
@repository.fetch_changesets
@@ -136,6 +137,56 @@
assert c.event_title.include?('123456789:')
assert_equal '123456789', c.event_url[:rev]
end
+
+ def test_log_encoding_ignore_setting
+ with_settings :commit_logs_encoding => 'windows-1252' do
+ s1 = "\xC2\x80"
+ s2 = "\xc3\x82\xc2\x80"
+ if s1.respond_to?(:force_encoding)
+ s3 = s1
+ s4 = s2
+ s1.force_encoding('ASCII-8BIT')
+ s2.force_encoding('ASCII-8BIT')
+ s3.force_encoding('ISO-8859-1')
+ s4.force_encoding('UTF-8')
+ assert_equal s3.encode('UTF-8'), s4
+ end
+ c = Changeset.new(:repository => @repository,
+ :comments=>s2,
+ :revision=>'123',
+ :committed_on => Time.now)
+ assert c.save
+ assert_equal s2, c.comments
+ end
+ end
+
+ def test_previous
+ @repository.fetch_changesets
+ @repository.reload
+ changeset = @repository.find_changeset_by_name('3')
+ assert_equal @repository.find_changeset_by_name('2'), changeset.previous
+ end
+
+ def test_previous_nil
+ @repository.fetch_changesets
+ @repository.reload
+ changeset = @repository.find_changeset_by_name('1')
+ assert_nil changeset.previous
+ end
+
+ def test_next
+ @repository.fetch_changesets
+ @repository.reload
+ changeset = @repository.find_changeset_by_name('2')
+ assert_equal @repository.find_changeset_by_name('3'), changeset.next
+ end
+
+ def test_next_nil
+ @repository.fetch_changesets
+ @repository.reload
+ changeset = @repository.find_changeset_by_name('11')
+ assert_nil changeset.next
+ end
else
puts "Subversion test repository NOT FOUND. Skipping unit tests !!!"
def test_fake; assert true end
diff -r 8972b600f4fb -r 051f544170fe test/unit/.svn/text-base/repository_test.rb.svn-base
--- a/test/unit/.svn/text-base/repository_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/.svn/text-base/repository_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -125,16 +125,19 @@
assert_not_equal( comment, changeset.comments )
assert_equal( 'This is a loooooooooooooooooooooooooooong comment', changeset.comments )
end
-
+
def test_for_urls_strip
- repository = Repository::Cvs.create(:project => Project.find(4), :url => ' :pserver:login:password@host:/path/to/the/repository',
- :root_url => 'foo ')
+ repository = Repository::Cvs.create(
+ :project => Project.find(4),
+ :url => ' :pserver:login:password@host:/path/to/the/repository',
+ :root_url => 'foo ',
+ :log_encoding => 'UTF-8')
assert repository.save
repository.reload
assert_equal ':pserver:login:password@host:/path/to/the/repository', repository.url
assert_equal 'foo', repository.root_url
end
-
+
def test_manual_user_mapping
assert_no_difference "Changeset.count(:conditions => 'user_id <> 2')" do
c = Changeset.create!(:repository => @repository, :committer => 'foo', :committed_on => Time.now, :revision => 100, :comments => 'Committed by foo.')
diff -r 8972b600f4fb -r 051f544170fe test/unit/.svn/text-base/user_test.rb.svn-base
--- a/test/unit/.svn/text-base/user_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/.svn/text-base/user_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -361,7 +361,6 @@
user = User.try_to_login("admin", "hello")
assert_kind_of User, user
assert_equal "admin", user.login
- assert_equal User.hash_password("hello"), user.hashed_password
end
def test_name_format
@@ -383,6 +382,22 @@
assert_equal nil, user
end
+ context ".try_to_login" do
+ context "with good credentials" do
+ should "return the user" do
+ user = User.try_to_login("admin", "admin")
+ assert_kind_of User, user
+ assert_equal "admin", user.login
+ end
+ end
+
+ context "with wrong credentials" do
+ should "return nil" do
+ assert_nil User.try_to_login("admin", "foo")
+ end
+ end
+ end
+
if ldap_configured?
context "#try_to_login using LDAP" do
context "with failed connection to the LDAP server" do
@@ -727,6 +742,23 @@
should 'be added and tested'
end
end
+
+ def test_salt_unsalted_passwords
+ # Restore a user with an unsalted password
+ user = User.find(1)
+ user.salt = nil
+ user.hashed_password = User.hash_password("unsalted")
+ user.save!
+
+ User.salt_unsalted_passwords!
+
+ user.reload
+ # Salt added
+ assert !user.salt.blank?
+ # Password still valid
+ assert user.check_password?("unsalted")
+ assert_equal user, User.try_to_login(user.login, "unsalted")
+ end
if Object.const_defined?(:OpenID)
diff -r 8972b600f4fb -r 051f544170fe test/unit/changeset_test.rb
--- a/test/unit/changeset_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/changeset_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -72,24 +72,40 @@
Setting.commit_ref_keywords = '*'
Setting.commit_logtime_enabled = '1'
- c = Changeset.new(:repository => Project.find(1).repository,
- :committed_on => 24.hours.ago,
- :comments => 'Worked on this issue #1 @2h',
- :revision => '520',
- :user => User.find(2))
- assert_difference 'TimeEntry.count' do
- c.scan_comment_for_issue_ids
+ {
+ '2' => 2.0,
+ '2h' => 2.0,
+ '2hours' => 2.0,
+ '15m' => 0.25,
+ '15min' => 0.25,
+ '3h15' => 3.25,
+ '3h15m' => 3.25,
+ '3h15min' => 3.25,
+ '3:15' => 3.25,
+ '3.25' => 3.25,
+ '3.25h' => 3.25,
+ '3,25' => 3.25,
+ '3,25h' => 3.25,
+ }.each do |syntax, expected_hours|
+ c = Changeset.new(:repository => Project.find(1).repository,
+ :committed_on => 24.hours.ago,
+ :comments => "Worked on this issue #1 @#{syntax}",
+ :revision => '520',
+ :user => User.find(2))
+ assert_difference 'TimeEntry.count' do
+ c.scan_comment_for_issue_ids
+ end
+ assert_equal [1], c.issue_ids.sort
+
+ time = TimeEntry.first(:order => 'id desc')
+ assert_equal 1, time.issue_id
+ assert_equal 1, time.project_id
+ assert_equal 2, time.user_id
+ assert_equal expected_hours, time.hours, "@#{syntax} should be logged as #{expected_hours} hours but was #{time.hours}"
+ assert_equal Date.yesterday, time.spent_on
+ assert time.activity.is_default?
+ assert time.comments.include?('r520'), "r520 was expected in time_entry comments: #{time.comments}"
end
- assert_equal [1], c.issue_ids.sort
-
- time = TimeEntry.first(:order => 'id desc')
- assert_equal 1, time.issue_id
- assert_equal 1, time.project_id
- assert_equal 2, time.user_id
- assert_equal 2.0, time.hours
- assert_equal Date.yesterday, time.spent_on
- assert time.activity.is_default?
- assert time.comments.include?('r520'), "r520 was expected in time_entry comments: #{time.comments}"
end
def test_ref_keywords_closing_with_timelog
@@ -100,7 +116,7 @@
c = Changeset.new(:repository => Project.find(1).repository,
:committed_on => Time.now,
- :comments => 'This is a comment. Fixes #1 @2.5, #2 @1',
+ :comments => 'This is a comment. Fixes #1 @4.5, #2 @1',
:user => User.find(2))
assert_difference 'TimeEntry.count', 2 do
c.scan_comment_for_issue_ids
@@ -169,12 +185,12 @@
assert_equal [2], c.issue_ids.sort
assert c.issues.first.project != c.project
end
-
+
def test_text_tag_revision
c = Changeset.new(:revision => '520')
assert_equal 'r520', c.text_tag
end
-
+
def test_text_tag_hash
c = Changeset.new(:scmid => '7234cb2750b63f47bff735edc50a1c0a433c2518', :revision => '7234cb2750b63f47bff735edc50a1c0a433c2518')
assert_equal 'commit:7234cb2750b63f47bff735edc50a1c0a433c2518', c.text_tag
@@ -204,19 +220,67 @@
changeset = Changeset.find_by_revision('10')
assert_nil changeset.next
end
-
+
def test_comments_should_be_converted_to_utf8
- with_settings :commit_logs_encoding => 'ISO-8859-1' do
- c = Changeset.new
- c.comments = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt")
+ proj = Project.find(3)
+ str = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt")
+ r = Repository::Bazaar.create!(
+ :project => proj, :url => '/tmp/test/bazaar',
+ :log_encoding => 'ISO-8859-1' )
+ assert r
+ c = Changeset.new(:repository => r,
+ :committed_on => Time.now,
+ :revision => '123',
+ :scmid => '12345',
+ :comments => str)
+ assert( c.save )
assert_equal "Texte encodé en ISO-8859-1.", c.comments
- end
end
-
+
def test_invalid_utf8_sequences_in_comments_should_be_stripped
- c = Changeset.new
- c.comments = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt")
- assert_equal "Texte encod en ISO-8859-1.", c.comments
+ proj = Project.find(3)
+ str = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt")
+ r = Repository::Bazaar.create!(
+ :project => proj, :url => '/tmp/test/bazaar',
+ :log_encoding => 'UTF-8' )
+ assert r
+ c = Changeset.new(:repository => r,
+ :committed_on => Time.now,
+ :revision => '123',
+ :scmid => '12345',
+ :comments => str)
+ assert( c.save )
+ if str.respond_to?(:force_encoding)
+ assert_equal "Texte encod? en ISO-8859-1.", c.comments
+ else
+ assert_equal "Texte encod en ISO-8859-1.", c.comments
+ end
+ end
+
+ def test_comments_should_be_converted_all_latin1_to_utf8
+ s1 = "\xC2\x80"
+ s2 = "\xc3\x82\xc2\x80"
+ if s1.respond_to?(:force_encoding)
+ s3 = s1
+ s4 = s2
+ s1.force_encoding('ASCII-8BIT')
+ s2.force_encoding('ASCII-8BIT')
+ s3.force_encoding('ISO-8859-1')
+ s4.force_encoding('UTF-8')
+ assert_equal s3.encode('UTF-8'), s4
+ end
+ proj = Project.find(3)
+ r = Repository::Bazaar.create!(
+ :project => proj, :url => '/tmp/test/bazaar',
+ :log_encoding => 'ISO-8859-1' )
+ assert r
+ c = Changeset.new(:repository => r,
+ :committed_on => Time.now,
+ :revision => '123',
+ :scmid => '12345',
+ :comments => s1)
+ assert( c.save )
+ assert_equal s2, c.comments
end
def test_identifier
diff -r 8972b600f4fb -r 051f544170fe test/unit/helpers/.svn/all-wcprops
--- a/test/unit/helpers/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/helpers/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,13 @@
K 25
svn:wc:ra_dav:version-url
V 42
-/svn/!svn/ver/4760/trunk/test/unit/helpers
+/svn/!svn/ver/4982/trunk/test/unit/helpers
+END
+repository_helper_test.rb
+K 25
+svn:wc:ra_dav:version-url
+V 68
+/svn/!svn/ver/4932/trunk/test/unit/helpers/repository_helper_test.rb
END
custom_fields_helper_test.rb
K 25
@@ -25,7 +31,7 @@
K 25
svn:wc:ra_dav:version-url
V 69
-/svn/!svn/ver/4760/trunk/test/unit/helpers/application_helper_test.rb
+/svn/!svn/ver/4982/trunk/test/unit/helpers/application_helper_test.rb
END
search_helper_test.rb
K 25
diff -r 8972b600f4fb -r 051f544170fe test/unit/helpers/.svn/entries
--- a/test/unit/helpers/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/helpers/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,15 +1,15 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/unit/helpers
http://redmine.rubyforge.org/svn
-2011-01-23T17:02:10.030897Z
-4760
-jplang
+2011-03-01T10:27:30.170724Z
+4982
+tmaruyama
@@ -26,6 +26,40 @@
e93f8b46-1217-0410-a6f0-8f06a7374b81
+repository_helper_test.rb
+file
+
+
+
+
+2011-03-03T11:40:17.000000Z
+657e0f9ae00af3978571139525631dcc
+2011-02-23T07:04:52.071012Z
+4932
+tmaruyama
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2288
+
custom_fields_helper_test.rb
file
@@ -134,11 +168,11 @@
-2011-03-03T11:05:21.000000Z
-8dd8aaf2b5473e5db20fd4fd273a3680
-2011-01-23T17:02:10.030897Z
-4760
-jplang
+2011-03-03T11:40:17.000000Z
+1f311492ce81d8708bef3193e684f98d
+2011-03-01T10:27:30.170724Z
+4982
+tmaruyama
has-props
@@ -160,7 +194,7 @@
-34973
+35024
search_helper_test.rb
file
diff -r 8972b600f4fb -r 051f544170fe test/unit/helpers/.svn/text-base/application_helper_test.rb.svn-base
--- a/test/unit/helpers/.svn/text-base/application_helper_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/helpers/.svn/text-base/application_helper_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -292,7 +292,9 @@
'commit:20080308225258-98289-abcd456efg.gz' => changeset_link,
}
@project = Project.find(3)
- r = Repository::Darcs.create!(:project => @project, :url => '/tmp/test/darcs')
+ r = Repository::Darcs.create!(
+ :project => @project, :url => '/tmp/test/darcs',
+ :log_encoding => 'UTF-8')
assert r
c = Changeset.new(:repository => r,
:committed_on => Time.now,
diff -r 8972b600f4fb -r 051f544170fe test/unit/helpers/.svn/text-base/repository_helper_test.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/unit/helpers/.svn/text-base/repository_helper_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,68 @@
+# Redmine - project management software
+# Copyright (C) 2006-2011 Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+require File.expand_path('../../../test_helper', __FILE__)
+
+class RepositoryHelperTest < HelperTestCase
+ include RepositoriesHelper
+
+ def test_from_latin1_to_utf8
+ with_settings :repositories_encodings => 'UTF-8,ISO-8859-1' do
+ s1 = "Texte encod\xc3\xa9"
+ s2 = "Texte encod\xe9"
+ s3 = s2
+ if s1.respond_to?(:force_encoding)
+ s1.force_encoding("UTF-8")
+ s2.force_encoding("ASCII-8BIT")
+ s3.force_encoding("UTF-8")
+ end
+ assert_equal s1, to_utf8(s2)
+ assert_equal s1, to_utf8(s3)
+ end
+ end
+
+ def test_from_euc_jp_to_utf8
+ with_settings :repositories_encodings => 'UTF-8,EUC-JP' do
+ s1 = "\xe3\x83\xac\xe3\x83\x83\xe3\x83\x89\xe3\x83\x9e\xe3\x82\xa4\xe3\x83\xb3"
+ s2 = "\xa5\xec\xa5\xc3\xa5\xc9\xa5\xde\xa5\xa4\xa5\xf3"
+ s3 = s2
+ if s1.respond_to?(:force_encoding)
+ s1.force_encoding("UTF-8")
+ s2.force_encoding("ASCII-8BIT")
+ s3.force_encoding("UTF-8")
+ end
+ assert_equal s1, to_utf8(s2)
+ assert_equal s1, to_utf8(s3)
+ end
+ end
+
+ def test_to_utf8_should_be_converted_all_latin1_to_utf8
+ with_settings :repositories_encodings => 'ISO-8859-1' do
+ s1 = "\xc3\x82\xc2\x80"
+ s2 = "\xC2\x80"
+ s3 = s2
+ if s1.respond_to?(:force_encoding)
+ s1.force_encoding("UTF-8")
+ s2.force_encoding("ASCII-8BIT")
+ s3.force_encoding("UTF-8")
+ end
+ assert_equal s1, to_utf8(s2)
+ assert_equal s1, to_utf8(s3)
+ end
+ end
+end
+
diff -r 8972b600f4fb -r 051f544170fe test/unit/helpers/application_helper_test.rb
--- a/test/unit/helpers/application_helper_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/helpers/application_helper_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -292,7 +292,9 @@
'commit:20080308225258-98289-abcd456efg.gz' => changeset_link,
}
@project = Project.find(3)
- r = Repository::Darcs.create!(:project => @project, :url => '/tmp/test/darcs')
+ r = Repository::Darcs.create!(
+ :project => @project, :url => '/tmp/test/darcs',
+ :log_encoding => 'UTF-8')
assert r
c = Changeset.new(:repository => r,
:committed_on => Time.now,
diff -r 8972b600f4fb -r 051f544170fe test/unit/helpers/repository_helper_test.rb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/unit/helpers/repository_helper_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,68 @@
+# Redmine - project management software
+# Copyright (C) 2006-2011 Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+require File.expand_path('../../../test_helper', __FILE__)
+
+class RepositoryHelperTest < HelperTestCase
+ include RepositoriesHelper
+
+ def test_from_latin1_to_utf8
+ with_settings :repositories_encodings => 'UTF-8,ISO-8859-1' do
+ s1 = "Texte encod\xc3\xa9"
+ s2 = "Texte encod\xe9"
+ s3 = s2
+ if s1.respond_to?(:force_encoding)
+ s1.force_encoding("UTF-8")
+ s2.force_encoding("ASCII-8BIT")
+ s3.force_encoding("UTF-8")
+ end
+ assert_equal s1, to_utf8(s2)
+ assert_equal s1, to_utf8(s3)
+ end
+ end
+
+ def test_from_euc_jp_to_utf8
+ with_settings :repositories_encodings => 'UTF-8,EUC-JP' do
+ s1 = "\xe3\x83\xac\xe3\x83\x83\xe3\x83\x89\xe3\x83\x9e\xe3\x82\xa4\xe3\x83\xb3"
+ s2 = "\xa5\xec\xa5\xc3\xa5\xc9\xa5\xde\xa5\xa4\xa5\xf3"
+ s3 = s2
+ if s1.respond_to?(:force_encoding)
+ s1.force_encoding("UTF-8")
+ s2.force_encoding("ASCII-8BIT")
+ s3.force_encoding("UTF-8")
+ end
+ assert_equal s1, to_utf8(s2)
+ assert_equal s1, to_utf8(s3)
+ end
+ end
+
+ def test_to_utf8_should_be_converted_all_latin1_to_utf8
+ with_settings :repositories_encodings => 'ISO-8859-1' do
+ s1 = "\xc3\x82\xc2\x80"
+ s2 = "\xC2\x80"
+ s3 = s2
+ if s1.respond_to?(:force_encoding)
+ s1.force_encoding("UTF-8")
+ s2.force_encoding("ASCII-8BIT")
+ s3.force_encoding("UTF-8")
+ end
+ assert_equal s1, to_utf8(s2)
+ assert_equal s1, to_utf8(s3)
+ end
+ end
+end
+
diff -r 8972b600f4fb -r 051f544170fe test/unit/issue_status_test.rb
--- a/test/unit/issue_status_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/issue_status_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -18,7 +18,7 @@
require File.expand_path('../../test_helper', __FILE__)
class IssueStatusTest < ActiveSupport::TestCase
- fixtures :issue_statuses, :issues
+ fixtures :issue_statuses, :issues, :roles, :trackers
def test_create
status = IssueStatus.new :name => "Assigned"
@@ -68,6 +68,30 @@
status.reload
assert status.is_default?
end
+
+ def test_new_statuses_allowed_to
+ Workflow.delete_all
+
+ Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 2, :author => false, :assignee => false)
+ Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 3, :author => true, :assignee => false)
+ Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 4, :author => false, :assignee => true)
+ Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 5, :author => true, :assignee => true)
+ status = IssueStatus.find(1)
+ role = Role.find(1)
+ tracker = Tracker.find(1)
+
+ assert_equal [2], status.new_statuses_allowed_to([role], tracker, false, false).map(&:id)
+ assert_equal [2], status.find_new_statuses_allowed_to([role], tracker, false, false).map(&:id)
+
+ assert_equal [2, 3], status.new_statuses_allowed_to([role], tracker, true, false).map(&:id)
+ assert_equal [2, 3], status.find_new_statuses_allowed_to([role], tracker, true, false).map(&:id)
+
+ assert_equal [2, 4], status.new_statuses_allowed_to([role], tracker, false, true).map(&:id)
+ assert_equal [2, 4], status.find_new_statuses_allowed_to([role], tracker, false, true).map(&:id)
+
+ assert_equal [2, 3, 4, 5], status.new_statuses_allowed_to([role], tracker, true, true).map(&:id)
+ assert_equal [2, 3, 4, 5], status.find_new_statuses_allowed_to([role], tracker, true, true).map(&:id)
+ end
context "#update_done_ratios" do
setup do
diff -r 8972b600f4fb -r 051f544170fe test/unit/issue_test.rb
--- a/test/unit/issue_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/issue_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -1,5 +1,5 @@
-# redMine - project management software
-# Copyright (C) 2006-2007 Jean-Philippe Lang
+# Redmine - project management software
+# Copyright (C) 2006-2011 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -210,6 +210,33 @@
assert_equal IssueCategory.find(1).assigned_to, issue.assigned_to
end
+
+
+ def test_new_statuses_allowed_to
+ Workflow.delete_all
+
+ Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 2, :author => false, :assignee => false)
+ Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 3, :author => true, :assignee => false)
+ Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 4, :author => false, :assignee => true)
+ Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 5, :author => true, :assignee => true)
+ status = IssueStatus.find(1)
+ role = Role.find(1)
+ tracker = Tracker.find(1)
+ user = User.find(2)
+
+ issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1)
+ assert_equal [1, 2], issue.new_statuses_allowed_to(user).map(&:id)
+
+ issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1, :author => user)
+ assert_equal [1, 2, 3], issue.new_statuses_allowed_to(user).map(&:id)
+
+ issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1, :assigned_to => user)
+ assert_equal [1, 2, 4], issue.new_statuses_allowed_to(user).map(&:id)
+
+ issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1, :author => user, :assigned_to => user)
+ assert_equal [1, 2, 3, 4, 5], issue.new_statuses_allowed_to(user).map(&:id)
+ end
+
def test_copy
issue = Issue.new.copy_from(1)
assert issue.save
@@ -594,6 +621,29 @@
assert ActionMailer::Base.deliveries.empty?
end
+ def test_journalized_description
+ IssueCustomField.delete_all
+
+ i = Issue.first
+ old_description = i.description
+ new_description = "This is the new description"
+
+ i.init_journal(User.find(2))
+ i.description = new_description
+ assert_difference 'Journal.count', 1 do
+ assert_difference 'JournalDetail.count', 1 do
+ i.save!
+ end
+ end
+
+ detail = JournalDetail.first(:order => 'id DESC')
+ assert_equal i, detail.journal.journalized
+ assert_equal 'attr', detail.property
+ assert_equal 'description', detail.prop_key
+ assert_equal old_description, detail.old_value
+ assert_equal new_description, detail.value
+ end
+
def test_saving_twice_should_not_duplicate_journal_details
i = Issue.find(:first)
i.init_journal(User.find(2), 'Some notes')
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/.svn/all-wcprops
--- a/test/unit/lib/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 38
-/svn/!svn/ver/4794/trunk/test/unit/lib
+/svn/!svn/ver/4964/trunk/test/unit/lib
END
redmine_test.rb
K 25
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/.svn/entries
--- a/test/unit/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/unit/lib
http://redmine.rubyforge.org/svn
-2011-02-02T13:13:44.942059Z
-4794
+2011-02-28T14:12:47.115180Z
+4964
tmaruyama
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/.svn/all-wcprops
--- a/test/unit/lib/redmine/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 46
-/svn/!svn/ver/4794/trunk/test/unit/lib/redmine
+/svn/!svn/ver/4964/trunk/test/unit/lib/redmine
END
wiki_formatting.rb
K 25
@@ -25,7 +25,7 @@
K 25
svn:wc:ra_dav:version-url
V 59
-/svn/!svn/ver/4679/trunk/test/unit/lib/redmine/i18n_test.rb
+/svn/!svn/ver/4894/trunk/test/unit/lib/redmine/i18n_test.rb
END
hook_test.rb
K 25
@@ -55,7 +55,7 @@
K 25
svn:wc:ra_dav:version-url
V 68
-/svn/!svn/ver/4752/trunk/test/unit/lib/redmine/configuration_test.rb
+/svn/!svn/ver/4949/trunk/test/unit/lib/redmine/configuration_test.rb
END
mime_type_test.rb
K 25
@@ -63,11 +63,17 @@
V 64
/svn/!svn/ver/4509/trunk/test/unit/lib/redmine/mime_type_test.rb
END
+ciphering_test.rb
+K 25
+svn:wc:ra_dav:version-url
+V 64
+/svn/!svn/ver/4950/trunk/test/unit/lib/redmine/ciphering_test.rb
+END
unified_diff_test.rb
K 25
svn:wc:ra_dav:version-url
V 67
-/svn/!svn/ver/4509/trunk/test/unit/lib/redmine/unified_diff_test.rb
+/svn/!svn/ver/4929/trunk/test/unit/lib/redmine/unified_diff_test.rb
END
notifiable_test.rb
K 25
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/.svn/entries
--- a/test/unit/lib/redmine/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/unit/lib/redmine
http://redmine.rubyforge.org/svn
-2011-02-02T13:13:44.942059Z
-4794
+2011-02-28T14:12:47.115180Z
+4964
tmaruyama
@@ -32,10 +32,10 @@
-2011-03-03T11:05:21.000000Z
-9aeca8ed785b33fdf901312133798b8b
-2011-01-10T18:25:12.105765Z
-4679
+2011-03-03T11:40:17.000000Z
+4368129679eec86fab2cd631de3b8cc5
+2011-02-20T14:56:37.399906Z
+4894
jplang
has-props
@@ -58,7 +58,7 @@
-4202
+4952
scm
dir
@@ -165,15 +165,83 @@
2014
-wiki_formatting
+views
dir
-views
+wiki_formatting
dir
menu_manager
dir
+plugin_test.rb
+file
+
+
+
+
+2011-03-03T11:05:08.000000Z
+d2f2e4457ed4eda1b5efb8a41a3de255
+2010-12-12T23:24:34.194336Z
+4509
+jbbarth
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+4168
+
+menu_manager_test.rb
+file
+
+
+
+
+2011-03-03T11:05:08.000000Z
+1a6043d0994b5fb4a09f3962ab5542ce
+2010-12-12T23:24:34.194336Z
+4509
+jbbarth
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1044
+
wiki_formatting.rb
file
@@ -208,74 +276,6 @@
1966
-menu_manager_test.rb
-file
-
-
-
-
-2011-03-03T11:05:08.000000Z
-1a6043d0994b5fb4a09f3962ab5542ce
-2010-12-12T23:24:34.194336Z
-4509
-jbbarth
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-1044
-
-plugin_test.rb
-file
-
-
-
-
-2011-03-03T11:05:08.000000Z
-d2f2e4457ed4eda1b5efb8a41a3de255
-2010-12-12T23:24:34.194336Z
-4509
-jbbarth
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-4168
-
hook_test.rb
file
@@ -310,9 +310,6 @@
5741
-helpers
-dir
-
access_control_test.rb
file
@@ -347,16 +344,19 @@
1801
+helpers
+dir
+
configuration_test.rb
file
-2011-03-03T11:05:21.000000Z
-49a50b72de5c622520734a4c53725140
-2011-01-23T10:22:00.456857Z
-4752
+2011-03-03T11:40:17.000000Z
+d96ffe5035b073e1dffdb3f01fe8e06e
+2011-02-25T14:30:05.998365Z
+4949
jplang
has-props
@@ -379,7 +379,41 @@
-1629
+1877
+
+ciphering_test.rb
+file
+
+
+
+
+2011-03-03T11:40:17.000000Z
+c2c353211cdd7cf9a87b9102e26b8d14
+2011-02-26T13:09:25.657748Z
+4950
+jplang
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3125
unified_diff_test.rb
file
@@ -387,11 +421,11 @@
-2011-03-03T11:05:21.000000Z
-247766b1dcc53d063207850027e6f78d
-2010-12-12T23:24:34.194336Z
-4509
-jbbarth
+2011-03-03T11:40:17.000000Z
+6b58d3612b430c0757566b1cd6bfcda0
+2011-02-23T07:03:45.049119Z
+4929
+tmaruyama
has-props
@@ -413,7 +447,7 @@
-1923
+2455
notifiable_test.rb
file
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/.svn/prop-base/ciphering_test.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/unit/lib/redmine/.svn/prop-base/ciphering_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,5 @@
+K 13
+svn:eol-style
+V 6
+native
+END
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/.svn/text-base/ciphering_test.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/unit/lib/redmine/.svn/text-base/ciphering_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,84 @@
+# Redmine - project management software
+# Copyright (C) 2006-2011 Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+require File.expand_path('../../../../test_helper', __FILE__)
+
+class Redmine::CipheringTest < ActiveSupport::TestCase
+
+ def test_password_should_be_encrypted
+ Redmine::Configuration.with 'database_cipher_key' => 'secret' do
+ r = Repository::Subversion.generate!(:password => 'foo')
+ assert_equal 'foo', r.password
+ assert r.read_attribute(:password).match(/\Aaes-256-cbc:.+\Z/)
+ end
+ end
+
+ def test_password_should_be_clear_with_blank_key
+ Redmine::Configuration.with 'database_cipher_key' => '' do
+ r = Repository::Subversion.generate!(:password => 'foo')
+ assert_equal 'foo', r.password
+ assert_equal 'foo', r.read_attribute(:password)
+ end
+ end
+
+ def test_password_should_be_clear_with_nil_key
+ Redmine::Configuration.with 'database_cipher_key' => nil do
+ r = Repository::Subversion.generate!(:password => 'foo')
+ assert_equal 'foo', r.password
+ assert_equal 'foo', r.read_attribute(:password)
+ end
+ end
+
+ def test_unciphered_password_should_be_readable
+ Redmine::Configuration.with 'database_cipher_key' => nil do
+ r = Repository::Subversion.generate!(:password => 'clear')
+ end
+
+ Redmine::Configuration.with 'database_cipher_key' => 'secret' do
+ r = Repository.first(:order => 'id DESC')
+ assert_equal 'clear', r.password
+ end
+ end
+
+ def test_encrypt_all
+ Repository.delete_all
+ Redmine::Configuration.with 'database_cipher_key' => nil do
+ Repository::Subversion.generate!(:password => 'foo')
+ Repository::Subversion.generate!(:password => 'bar')
+ end
+
+ Redmine::Configuration.with 'database_cipher_key' => 'secret' do
+ assert Repository.encrypt_all(:password)
+ r = Repository.first(:order => 'id DESC')
+ assert_equal 'bar', r.password
+ assert r.read_attribute(:password).match(/\Aaes-256-cbc:.+\Z/)
+ end
+ end
+
+ def test_decrypt_all
+ Repository.delete_all
+ Redmine::Configuration.with 'database_cipher_key' => 'secret' do
+ Repository::Subversion.generate!(:password => 'foo')
+ Repository::Subversion.generate!(:password => 'bar')
+
+ assert Repository.decrypt_all(:password)
+ r = Repository.first(:order => 'id DESC')
+ assert_equal 'bar', r.password
+ assert_equal 'bar', r.read_attribute(:password)
+ end
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/.svn/text-base/configuration_test.rb.svn-base
--- a/test/unit/lib/redmine/.svn/text-base/configuration_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/.svn/text-base/configuration_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -41,6 +41,15 @@
assert_equal 'bar', @conf['somesetting']
end
+ def test_with
+ load_conf('default.yml', 'test')
+ assert_equal 'foo', @conf['somesetting']
+ @conf.with 'somesetting' => 'bar' do
+ assert_equal 'bar', @conf['somesetting']
+ end
+ assert_equal 'foo', @conf['somesetting']
+ end
+
private
def load_conf(file, env)
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/.svn/text-base/i18n_test.rb.svn-base
--- a/test/unit/lib/redmine/.svn/text-base/i18n_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/.svn/text-base/i18n_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -58,13 +58,36 @@
end
end
+ def test_time_format
+ set_language_if_valid 'en'
+ now = Time.parse('2011-02-20 15:45:22')
+ with_settings :time_format => '%H:%M' do
+ with_settings :date_format => '' do
+ assert_equal '02/20/2011 15:45', format_time(now)
+ assert_equal '15:45', format_time(now, false)
+ end
+
+ with_settings :date_format => '%Y-%m-%d' do
+ assert_equal '2011-02-20 15:45', format_time(now)
+ assert_equal '15:45', format_time(now, false)
+ end
+ end
+ end
+
def test_time_format_default
set_language_if_valid 'en'
- now = Time.now
- Setting.date_format = ''
- Setting.time_format = ''
- assert_equal I18n.l(now), format_time(now)
- assert_equal I18n.l(now, :format => :time), format_time(now, false)
+ now = Time.parse('2011-02-20 15:45:22')
+ with_settings :time_format => '' do
+ with_settings :date_format => '' do
+ assert_equal '02/20/2011 03:45 pm', format_time(now)
+ assert_equal '03:45 pm', format_time(now, false)
+ end
+
+ with_settings :date_format => '%Y-%m-%d' do
+ assert_equal '2011-02-20 03:45 pm', format_time(now)
+ assert_equal '03:45 pm', format_time(now, false)
+ end
+ end
end
def test_time_format
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/.svn/text-base/unified_diff_test.rb.svn-base
--- a/test/unit/lib/redmine/.svn/text-base/unified_diff_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/.svn/text-base/unified_diff_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -60,8 +60,39 @@
assert_equal 1, diff.size
end
+ def test_one_line_new_files
+ diff = Redmine::UnifiedDiff.new(<<-DIFF
+diff -r 000000000000 -r ea98b14f75f0 README1
+--- /dev/null
++++ b/README1
+@@ -0,0 +1,1 @@
++test1
+diff -r 000000000000 -r ea98b14f75f0 README2
+--- /dev/null
++++ b/README2
+@@ -0,0 +1,1 @@
++test2
+diff -r 000000000000 -r ea98b14f75f0 README3
+--- /dev/null
++++ b/README3
+@@ -0,0 +1,3 @@
++test4
++test5
++test6
+diff -r 000000000000 -r ea98b14f75f0 README4
+--- /dev/null
++++ b/README4
+@@ -0,0 +1,3 @@
++test4
++test5
++test6
+DIFF
+ )
+ assert_equal 4, diff.size
+ end
+
private
-
+
def read_diff_fixture(filename)
File.new(File.join(File.dirname(__FILE__), '/../../../fixtures/diffs', filename)).read
end
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/ciphering_test.rb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/unit/lib/redmine/ciphering_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,84 @@
+# Redmine - project management software
+# Copyright (C) 2006-2011 Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+require File.expand_path('../../../../test_helper', __FILE__)
+
+class Redmine::CipheringTest < ActiveSupport::TestCase
+
+ def test_password_should_be_encrypted
+ Redmine::Configuration.with 'database_cipher_key' => 'secret' do
+ r = Repository::Subversion.generate!(:password => 'foo')
+ assert_equal 'foo', r.password
+ assert r.read_attribute(:password).match(/\Aaes-256-cbc:.+\Z/)
+ end
+ end
+
+ def test_password_should_be_clear_with_blank_key
+ Redmine::Configuration.with 'database_cipher_key' => '' do
+ r = Repository::Subversion.generate!(:password => 'foo')
+ assert_equal 'foo', r.password
+ assert_equal 'foo', r.read_attribute(:password)
+ end
+ end
+
+ def test_password_should_be_clear_with_nil_key
+ Redmine::Configuration.with 'database_cipher_key' => nil do
+ r = Repository::Subversion.generate!(:password => 'foo')
+ assert_equal 'foo', r.password
+ assert_equal 'foo', r.read_attribute(:password)
+ end
+ end
+
+ def test_unciphered_password_should_be_readable
+ Redmine::Configuration.with 'database_cipher_key' => nil do
+ r = Repository::Subversion.generate!(:password => 'clear')
+ end
+
+ Redmine::Configuration.with 'database_cipher_key' => 'secret' do
+ r = Repository.first(:order => 'id DESC')
+ assert_equal 'clear', r.password
+ end
+ end
+
+ def test_encrypt_all
+ Repository.delete_all
+ Redmine::Configuration.with 'database_cipher_key' => nil do
+ Repository::Subversion.generate!(:password => 'foo')
+ Repository::Subversion.generate!(:password => 'bar')
+ end
+
+ Redmine::Configuration.with 'database_cipher_key' => 'secret' do
+ assert Repository.encrypt_all(:password)
+ r = Repository.first(:order => 'id DESC')
+ assert_equal 'bar', r.password
+ assert r.read_attribute(:password).match(/\Aaes-256-cbc:.+\Z/)
+ end
+ end
+
+ def test_decrypt_all
+ Repository.delete_all
+ Redmine::Configuration.with 'database_cipher_key' => 'secret' do
+ Repository::Subversion.generate!(:password => 'foo')
+ Repository::Subversion.generate!(:password => 'bar')
+
+ assert Repository.decrypt_all(:password)
+ r = Repository.first(:order => 'id DESC')
+ assert_equal 'bar', r.password
+ assert_equal 'bar', r.read_attribute(:password)
+ end
+ end
+end
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/configuration_test.rb
--- a/test/unit/lib/redmine/configuration_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/configuration_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -41,6 +41,15 @@
assert_equal 'bar', @conf['somesetting']
end
+ def test_with
+ load_conf('default.yml', 'test')
+ assert_equal 'foo', @conf['somesetting']
+ @conf.with 'somesetting' => 'bar' do
+ assert_equal 'bar', @conf['somesetting']
+ end
+ assert_equal 'foo', @conf['somesetting']
+ end
+
private
def load_conf(file, env)
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/helpers/.svn/entries
--- a/test/unit/lib/redmine/helpers/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/helpers/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/unit/lib/redmine/helpers
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/i18n_test.rb
--- a/test/unit/lib/redmine/i18n_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/i18n_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -58,13 +58,36 @@
end
end
+ def test_time_format
+ set_language_if_valid 'en'
+ now = Time.parse('2011-02-20 15:45:22')
+ with_settings :time_format => '%H:%M' do
+ with_settings :date_format => '' do
+ assert_equal '02/20/2011 15:45', format_time(now)
+ assert_equal '15:45', format_time(now, false)
+ end
+
+ with_settings :date_format => '%Y-%m-%d' do
+ assert_equal '2011-02-20 15:45', format_time(now)
+ assert_equal '15:45', format_time(now, false)
+ end
+ end
+ end
+
def test_time_format_default
set_language_if_valid 'en'
- now = Time.now
- Setting.date_format = ''
- Setting.time_format = ''
- assert_equal I18n.l(now), format_time(now)
- assert_equal I18n.l(now, :format => :time), format_time(now, false)
+ now = Time.parse('2011-02-20 15:45:22')
+ with_settings :time_format => '' do
+ with_settings :date_format => '' do
+ assert_equal '02/20/2011 03:45 pm', format_time(now)
+ assert_equal '03:45 pm', format_time(now, false)
+ end
+
+ with_settings :date_format => '%Y-%m-%d' do
+ assert_equal '2011-02-20 03:45 pm', format_time(now)
+ assert_equal '03:45 pm', format_time(now, false)
+ end
+ end
end
def test_time_format
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/menu_manager/.svn/entries
--- a/test/unit/lib/redmine/menu_manager/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/menu_manager/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/unit/lib/redmine/menu_manager
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/scm/.svn/all-wcprops
--- a/test/unit/lib/redmine/scm/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/scm/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,5 +1,5 @@
K 25
svn:wc:ra_dav:version-url
V 50
-/svn/!svn/ver/4794/trunk/test/unit/lib/redmine/scm
+/svn/!svn/ver/4964/trunk/test/unit/lib/redmine/scm
END
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/scm/.svn/entries
--- a/test/unit/lib/redmine/scm/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/scm/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/unit/lib/redmine/scm
http://redmine.rubyforge.org/svn
-2011-02-02T13:13:44.942059Z
-4794
+2011-02-28T14:12:47.115180Z
+4964
tmaruyama
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/scm/adapters/.svn/all-wcprops
--- a/test/unit/lib/redmine/scm/adapters/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/scm/adapters/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,25 +1,31 @@
K 25
svn:wc:ra_dav:version-url
V 59
-/svn/!svn/ver/4794/trunk/test/unit/lib/redmine/scm/adapters
+/svn/!svn/ver/4964/trunk/test/unit/lib/redmine/scm/adapters
END
subversion_adapter_test.rb
K 25
svn:wc:ra_dav:version-url
V 86
-/svn/!svn/ver/4509/trunk/test/unit/lib/redmine/scm/adapters/subversion_adapter_test.rb
+/svn/!svn/ver/4825/trunk/test/unit/lib/redmine/scm/adapters/subversion_adapter_test.rb
+END
+bazaar_adapter_test.rb
+K 25
+svn:wc:ra_dav:version-url
+V 82
+/svn/!svn/ver/4836/trunk/test/unit/lib/redmine/scm/adapters/bazaar_adapter_test.rb
END
git_adapter_test.rb
K 25
svn:wc:ra_dav:version-url
V 79
-/svn/!svn/ver/4510/trunk/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb
+/svn/!svn/ver/4964/trunk/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb
END
mercurial_adapter_test.rb
K 25
svn:wc:ra_dav:version-url
V 85
-/svn/!svn/ver/4792/trunk/test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb
+/svn/!svn/ver/4875/trunk/test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb
END
filesystem_adapter_test.rb
K 25
@@ -31,7 +37,7 @@
K 25
svn:wc:ra_dav:version-url
V 79
-/svn/!svn/ver/4794/trunk/test/unit/lib/redmine/scm/adapters/cvs_adapter_test.rb
+/svn/!svn/ver/4832/trunk/test/unit/lib/redmine/scm/adapters/cvs_adapter_test.rb
END
darcs_adapter_test.rb
K 25
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/scm/adapters/.svn/entries
--- a/test/unit/lib/redmine/scm/adapters/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/scm/adapters/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/unit/lib/redmine/scm/adapters
http://redmine.rubyforge.org/svn
-2011-02-02T13:13:44.942059Z
-4794
+2011-02-28T14:12:47.115180Z
+4964
tmaruyama
@@ -32,11 +32,11 @@
-2011-03-03T11:05:21.000000Z
-765ef194c70144742d0b8bfcb99f6627
-2010-12-12T23:24:34.194336Z
-4509
-jbbarth
+2011-03-03T11:40:17.000000Z
+f0de1284b35555e358dcb810fff1e7e5
+2011-02-15T02:12:39.628343Z
+4825
+tmaruyama
has-props
@@ -58,7 +58,41 @@
-1221
+2221
+
+bazaar_adapter_test.rb
+file
+
+
+
+
+2011-03-03T11:40:17.000000Z
+2f30e1187cf8e155707fdf3ff7925f55
+2011-02-15T11:05:33.284244Z
+4836
+tmaruyama
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1755
git_adapter_test.rb
file
@@ -66,11 +100,11 @@
-2011-03-03T11:05:21.000000Z
-2e3d6f99dd454ee396770a707ea169db
-2010-12-12T23:24:45.195624Z
-4510
-jbbarth
+2011-03-03T11:40:17.000000Z
+3d2db23c9a95bf5342365aa4580873c7
+2011-02-28T14:12:47.115180Z
+4964
+tmaruyama
has-props
@@ -92,7 +126,7 @@
-3016
+4592
mercurial_adapter_test.rb
file
@@ -100,10 +134,10 @@
-2011-03-03T11:05:21.000000Z
-64cc2244eb07beb0857fe8888b957ad3
-2011-02-02T10:01:22.051980Z
-4792
+2011-03-03T11:40:17.000000Z
+20194ed3de36e9107b3279bb4ae596e9
+2011-02-18T07:15:58.762873Z
+4875
tmaruyama
has-props
@@ -126,7 +160,7 @@
-6500
+10201
filesystem_adapter_test.rb
file
@@ -168,10 +202,10 @@
-2011-03-03T11:05:21.000000Z
-0407a64851e16387512e427ffb0e167c
-2011-02-02T13:13:44.942059Z
-4794
+2011-03-03T11:40:17.000000Z
+ddf3ab1a187f29d3e377f684c2c0f18c
+2011-02-15T08:04:11.026838Z
+4832
tmaruyama
@@ -194,7 +228,7 @@
-1164
+1844
darcs_adapter_test.rb
file
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/scm/adapters/.svn/text-base/bazaar_adapter_test.rb.svn-base
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/unit/lib/redmine/scm/adapters/.svn/text-base/bazaar_adapter_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,54 @@
+require File.expand_path('../../../../../../test_helper', __FILE__)
+begin
+ require 'mocha'
+
+ class BazaarAdapterTest < ActiveSupport::TestCase
+
+ REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/bazaar_repository'
+ REPOSITORY_PATH.gsub!(/\/+/, '/')
+
+ if File.directory?(REPOSITORY_PATH)
+ def setup
+ @adapter = Redmine::Scm::Adapters::BazaarAdapter.new(REPOSITORY_PATH)
+ end
+
+ def test_scm_version
+ to_test = { "Bazaar (bzr) 2.1.2\n" => [2,1,2],
+ "2.1.1\n1.7\n1.8" => [2,1,1],
+ "2.0.1\r\n1.8.1\r\n1.9.1" => [2,0,1]}
+ to_test.each do |s, v|
+ test_scm_version_for(s, v)
+ end
+ end
+
+ def test_cat
+ cat = @adapter.cat('directory/document.txt')
+ assert cat =~ /Write the contents of a file as of a given revision to standard output/
+ end
+
+ def test_annotate
+ annotate = @adapter.annotate('doc-mkdir.txt')
+ assert_equal 17, annotate.lines.size
+ assert_equal '1', annotate.revisions[0].identifier
+ assert_equal 'jsmith@', annotate.revisions[0].author
+ assert_equal 'mkdir', annotate.lines[0]
+ end
+
+ private
+
+ def test_scm_version_for(scm_command_version, version)
+ @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version)
+ assert_equal version, @adapter.class.scm_command_version
+ end
+ else
+ puts "Bazaar test repository NOT FOUND. Skipping unit tests !!!"
+ def test_fake; assert true end
+ end
+ end
+
+rescue LoadError
+ class BazaarMochaFake < ActiveSupport::TestCase
+ def test_fake; assert(false, "Requires mocha to run those tests") end
+ end
+end
+
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/scm/adapters/.svn/text-base/cvs_adapter_test.rb.svn-base
--- a/test/unit/lib/redmine/scm/adapters/.svn/text-base/cvs_adapter_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/scm/adapters/.svn/text-base/cvs_adapter_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -5,6 +5,7 @@
class CvsAdapterTest < ActiveSupport::TestCase
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/cvs_repository'
+ REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin?
MODULE_NAME = 'test'
if File.directory?(REPOSITORY_PATH)
@@ -12,6 +13,15 @@
@adapter = Redmine::Scm::Adapters::CvsAdapter.new(MODULE_NAME, REPOSITORY_PATH)
end
+ def test_scm_version
+ to_test = { "\nConcurrent Versions System (CVS) 1.12.13 (client/server)\n" => [1,12,13],
+ "\r\n1.12.12\r\n1.12.11" => [1,12,12],
+ "1.12.11\r\n1.12.10\r\n" => [1,12,11]}
+ to_test.each do |s, v|
+ test_scm_version_for(s, v)
+ end
+ end
+
def test_revisions_all
cnt = 0
@adapter.revisions('', nil, nil, :with_paths => true) do |revision|
@@ -28,6 +38,13 @@
end
assert_equal 2, cnt
end
+
+ private
+
+ def test_scm_version_for(scm_command_version, version)
+ @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version)
+ assert_equal version, @adapter.class.scm_command_version
+ end
else
puts "Cvs test repository NOT FOUND. Skipping unit tests !!!"
def test_fake; assert true end
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/scm/adapters/.svn/text-base/git_adapter_test.rb.svn-base
--- a/test/unit/lib/redmine/scm/adapters/.svn/text-base/git_adapter_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/scm/adapters/.svn/text-base/git_adapter_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -1,71 +1,120 @@
# encoding: utf-8
+# This file includes UTF-8 "Felix Schäfer".
+# We need to consider Ruby 1.9 compatibility.
+
require File.expand_path('../../../../../../test_helper', __FILE__)
+begin
+ require 'mocha'
-class GitAdapterTest < ActiveSupport::TestCase
- REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/git_repository'
+ class GitAdapterTest < ActiveSupport::TestCase
+ REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/git_repository'
- if File.directory?(REPOSITORY_PATH)
- def setup
- @adapter = Redmine::Scm::Adapters::GitAdapter.new(REPOSITORY_PATH)
+ FELIX_UTF8 = "Felix Schäfer"
+ FELIX_HEX = "Felix Sch\xC3\xA4fer"
+
+ if File.directory?(REPOSITORY_PATH)
+ def setup
+ @adapter = Redmine::Scm::Adapters::GitAdapter.new(REPOSITORY_PATH)
+ end
+
+ def test_scm_version
+ to_test = { "git version 1.7.3.4\n" => [1,7,3,4],
+ "1.6.1\n1.7\n1.8" => [1,6,1],
+ "1.6.2\r\n1.8.1\r\n1.9.1" => [1,6,2]}
+ to_test.each do |s, v|
+ test_scm_version_for(s, v)
+ end
+ end
+
+ def test_branches
+ assert_equal @adapter.branches, ['master', 'test-latin-1', 'test_branch']
+ end
+
+ def test_getting_all_revisions
+ assert_equal 16, @adapter.revisions('',nil,nil,:all => true).length
+ end
+
+ def test_getting_certain_revisions
+ assert_equal 1, @adapter.revisions('','899a15d^','899a15d').length
+ end
+
+ def test_getting_revisions_with_spaces_in_filename
+ assert_equal 1, @adapter.revisions("filemane with spaces.txt",
+ nil, nil, :all => true).length
+ end
+
+ def test_getting_revisions_with_leading_and_trailing_spaces_in_filename
+ assert_equal " filename with a leading space.txt ",
+ @adapter.revisions(" filename with a leading space.txt ",
+ nil, nil, :all => true)[0].paths[0][:path]
+ end
+
+ def test_getting_entries_with_leading_and_trailing_spaces_in_filename
+ assert_equal " filename with a leading space.txt ",
+ @adapter.entries('',
+ '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c')[3].name
+ end
+
+ def test_annotate
+ annotate = @adapter.annotate('sources/watchers_controller.rb')
+ assert_kind_of Redmine::Scm::Adapters::Annotate, annotate
+ assert_equal 41, annotate.lines.size
+ assert_equal "# This program is free software; you can redistribute it and/or", annotate.lines[4].strip
+ assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518",
+ annotate.revisions[4].identifier
+ assert_equal "jsmith", annotate.revisions[4].author
+ end
+
+ def test_annotate_moved_file
+ annotate = @adapter.annotate('renamed_test.txt')
+ assert_kind_of Redmine::Scm::Adapters::Annotate, annotate
+ assert_equal 2, annotate.lines.size
+ end
+
+ def test_last_rev
+ last_rev = @adapter.lastrev("README",
+ "4f26664364207fa8b1af9f8722647ab2d4ac5d43")
+ assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.scmid
+ assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.identifier
+ assert_equal "Adam Soltys ", last_rev.author
+ assert_equal "2009-06-24 05:27:38".to_time, last_rev.time
+ end
+
+ def test_last_rev_with_spaces_in_filename
+ last_rev = @adapter.lastrev("filemane with spaces.txt",
+ "ed5bb786bbda2dee66a2d50faf51429dbc043a7b")
+ str_felix_utf8 = FELIX_UTF8
+ str_felix_hex = FELIX_HEX
+ last_rev_author = last_rev.author
+ if last_rev_author.respond_to?(:force_encoding)
+ last_rev_author.force_encoding('UTF-8')
+ end
+ assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.scmid
+ assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.identifier
+ assert_equal "#{str_felix_utf8} ",
+ last_rev.author
+ assert_equal "#{str_felix_hex} ",
+ last_rev.author
+ assert_equal "2010-09-18 19:59:46".to_time, last_rev.time
+ end
+
+ private
+
+ def test_scm_version_for(scm_command_version, version)
+ @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version)
+ assert_equal version, @adapter.class.scm_command_version
+ end
+
+ else
+ puts "Git test repository NOT FOUND. Skipping unit tests !!!"
+ def test_fake; assert true end
end
+ end
- def test_branches
- assert_equal @adapter.branches, ['master', 'test_branch']
- end
-
- def test_getting_all_revisions
- assert_equal 15, @adapter.revisions('',nil,nil,:all => true).length
- end
-
- def test_getting_certain_revisions
- assert_equal 1, @adapter.revisions('','899a15d^','899a15d').length
- end
-
- def test_getting_revisions_with_spaces_in_filename
- assert_equal 1, @adapter.revisions("filemane with spaces.txt", nil, nil, :all => true).length
- end
-
- def test_getting_revisions_with_leading_and_trailing_spaces_in_filename
- assert_equal " filename with a leading space.txt ", @adapter.revisions(" filename with a leading space.txt ", nil, nil, :all => true)[0].paths[0][:path]
- end
-
- def test_getting_entries_with_leading_and_trailing_spaces_in_filename
- assert_equal " filename with a leading space.txt ", @adapter.entries('', '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c')[3].name
- end
-
- def test_annotate
- annotate = @adapter.annotate('sources/watchers_controller.rb')
- assert_kind_of Redmine::Scm::Adapters::Annotate, annotate
- assert_equal 41, annotate.lines.size
- assert_equal "# This program is free software; you can redistribute it and/or", annotate.lines[4].strip
- assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518", annotate.revisions[4].identifier
- assert_equal "jsmith", annotate.revisions[4].author
- end
-
- def test_annotate_moved_file
- annotate = @adapter.annotate('renamed_test.txt')
- assert_kind_of Redmine::Scm::Adapters::Annotate, annotate
- assert_equal 2, annotate.lines.size
- end
-
- def test_last_rev
- last_rev = @adapter.lastrev("README", "4f26664364207fa8b1af9f8722647ab2d4ac5d43")
- assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.scmid
- assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.identifier
- assert_equal "Adam Soltys ", last_rev.author
- assert_equal "2009-06-24 05:27:38".to_time, last_rev.time
- end
-
- def test_last_rev_with_spaces_in_filename
- last_rev = @adapter.lastrev("filemane with spaces.txt", "ed5bb786bbda2dee66a2d50faf51429dbc043a7b")
- assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.scmid
- assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.identifier
- assert_equal "Felix Schäfer ", last_rev.author
- assert_equal "2010-09-18 19:59:46".to_time, last_rev.time
- end
- else
- puts "Git test repository NOT FOUND. Skipping unit tests !!!"
- def test_fake; assert true end
+rescue LoadError
+ class GitMochaFake < ActiveSupport::TestCase
+ def test_fake; assert(false, "Requires mocha to run those tests") end
end
end
+
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/scm/adapters/.svn/text-base/mercurial_adapter_test.rb.svn-base
--- a/test/unit/lib/redmine/scm/adapters/.svn/text-base/mercurial_adapter_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/scm/adapters/.svn/text-base/mercurial_adapter_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -4,7 +4,7 @@
class MercurialAdapterTest < ActiveSupport::TestCase
- TEMPLATES_DIR = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATES_DIR
+ HELPERS_DIR = Redmine::Scm::Adapters::MercurialAdapter::HELPERS_DIR
TEMPLATE_NAME = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_NAME
TEMPLATE_EXTENSION = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_EXTENSION
@@ -13,6 +13,7 @@
if File.directory?(REPOSITORY_PATH)
def setup
@adapter = Redmine::Scm::Adapters::MercurialAdapter.new(REPOSITORY_PATH)
+ @diff_c_support = true
end
def test_hgversion
@@ -42,6 +43,31 @@
end
end
+ def test_info
+ [REPOSITORY_PATH, REPOSITORY_PATH + "/",
+ REPOSITORY_PATH + "//"].each do |repo|
+ adp = Redmine::Scm::Adapters::MercurialAdapter.new(repo)
+ repo_path = adp.info.root_url.gsub(/\\/, "/")
+ assert_equal REPOSITORY_PATH, repo_path
+ assert_equal '16', adp.info.lastrev.revision
+ assert_equal '4cddb4e45f52',adp.info.lastrev.scmid
+ end
+ end
+
+ def test_revisions
+ revisions = @adapter.revisions(nil, 2, 4)
+ assert_equal 3, revisions.size
+ assert_equal '2', revisions[0].revision
+ assert_equal '400bb8672109', revisions[0].scmid
+ assert_equal '4', revisions[2].revision
+ assert_equal 'def6d2f1254a', revisions[2].scmid
+
+ revisions = @adapter.revisions(nil, 2, 4, {:limit => 2})
+ assert_equal 2, revisions.size
+ assert_equal '2', revisions[0].revision
+ assert_equal '400bb8672109', revisions[0].scmid
+ end
+
def test_diff
if @adapter.class.client_version_above?([1, 2])
assert_nil @adapter.diff(nil, '100000')
@@ -49,7 +75,7 @@
assert_nil @adapter.diff(nil, '100000', '200000')
[2, '400bb8672109', '400', 400].each do |r1|
diff1 = @adapter.diff(nil, r1)
- if @adapter.class.client_version_above?([1, 2])
+ if @diff_c_support
assert_equal 28, diff1.size
buf = diff1[24].gsub(/\r\n|\r|\n/, "")
assert_equal "+ return true unless klass.respond_to?('watched_by')", buf
@@ -70,7 +96,7 @@
end
def test_diff_made_by_revision
- if @adapter.class.client_version_above?([1, 2])
+ if @diff_c_support
[16, '16', '4cddb4e45f52'].each do |r1|
diff1 = @adapter.diff(nil, r1)
assert_equal 5, diff1.size
@@ -104,9 +130,12 @@
end
end
- # TODO filesize etc.
def test_entries
assert_nil @adapter.entries(nil, '100000')
+
+ assert_equal 1, @adapter.entries("sources", 3).size
+ assert_equal 1, @adapter.entries("sources", 'b3a615152df8').size
+
[2, '400bb8672109', '400', 400].each do |r|
entries1 = @adapter.entries(nil, r)
assert entries1
@@ -114,9 +143,15 @@
assert_equal 'sources', entries1[1].name
assert_equal 'sources', entries1[1].path
assert_equal 'dir', entries1[1].kind
- assert_equal 'README', entries1[2].name
- assert_equal 'README', entries1[2].path
- assert_equal 'file', entries1[2].kind
+ readme = entries1[2]
+ assert_equal 'README', readme.name
+ assert_equal 'README', readme.path
+ assert_equal 'file', readme.kind
+ assert_equal 27, readme.size
+ assert_equal '1', readme.lastrev.revision
+ assert_equal '9d5b5b004199', readme.lastrev.identifier
+ # 2007-12-14 10:24:01 +0100
+ assert_equal Time.gm(2007, 12, 14, 9, 24, 1), readme.lastrev.time
entries2 = @adapter.entries('sources', r)
assert entries2
@@ -130,6 +165,48 @@
end
end
+ def test_entries_tag
+ entries1 = @adapter.entries(nil, 'tag_test.00')
+ assert entries1
+ assert_equal 3, entries1.size
+ assert_equal 'sources', entries1[1].name
+ assert_equal 'sources', entries1[1].path
+ assert_equal 'dir', entries1[1].kind
+ readme = entries1[2]
+ assert_equal 'README', readme.name
+ assert_equal 'README', readme.path
+ assert_equal 'file', readme.kind
+ assert_equal 21, readme.size
+ assert_equal '0', readme.lastrev.revision
+ assert_equal '0885933ad4f6', readme.lastrev.identifier
+ # 2007-12-14 10:22:52 +0100
+ assert_equal Time.gm(2007, 12, 14, 9, 22, 52), readme.lastrev.time
+ end
+
+ def test_entries_branch
+ entries1 = @adapter.entries(nil, 'test-branch-00')
+ assert entries1
+ assert_equal 5, entries1.size
+ assert_equal 'sql_escape', entries1[2].name
+ assert_equal 'sql_escape', entries1[2].path
+ assert_equal 'dir', entries1[2].kind
+ readme = entries1[4]
+ assert_equal 'README', readme.name
+ assert_equal 'README', readme.path
+ assert_equal 'file', readme.kind
+ assert_equal 365, readme.size
+ assert_equal '8', readme.lastrev.revision
+ assert_equal 'c51f5bb613cd', readme.lastrev.identifier
+ # 2001-02-01 00:00:00 -0900
+ assert_equal Time.gm(2001, 2, 1, 9, 0, 0), readme.lastrev.time
+ end
+
+ def test_locate_on_outdated_repository
+ assert_equal 1, @adapter.entries("images", 0).size
+ assert_equal 2, @adapter.entries("images").size
+ assert_equal 2, @adapter.entries("images", 2).size
+ end
+
def test_access_by_nodeid
path = 'sources/welcome_controller.rb'
assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400bb8672109')
@@ -141,6 +218,28 @@
assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400')
end
+ def test_tags
+ assert_equal ['tag_test.00', 'tag-init-revision'], @adapter.tags
+ end
+
+ def test_tagmap
+ tm = { 'tag_test.00' => '6987191f453a',
+ 'tag-init-revision' => '0885933ad4f6' }
+ assert_equal tm, @adapter.tagmap
+ end
+
+ def test_branches
+ assert_equal ['default', 'branch (1)[2]&,%.-3_4', 'test-branch-00'],
+ @adapter.branches
+ end
+
+ def test_branchmap
+ bm = { 'default' => '4cddb4e45f52',
+ 'branch (1)[2]&,%.-3_4' => '933ca60293d7',
+ 'test-branch-00' => '3a330eb32958' }
+ assert_equal bm, @adapter.branchmap
+ end
+
private
def test_hgversion_for(hgversion, version)
@@ -149,7 +248,7 @@
end
def test_template_path_for(version, template)
- assert_equal "#{TEMPLATES_DIR}/#{TEMPLATE_NAME}-#{template}.#{TEMPLATE_EXTENSION}",
+ assert_equal "#{HELPERS_DIR}/#{TEMPLATE_NAME}-#{template}.#{TEMPLATE_EXTENSION}",
@adapter.class.template_path_for(version)
assert File.exist?(@adapter.class.template_path_for(version))
end
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/scm/adapters/.svn/text-base/subversion_adapter_test.rb.svn-base
--- a/test/unit/lib/redmine/scm/adapters/.svn/text-base/subversion_adapter_test.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/scm/adapters/.svn/text-base/subversion_adapter_test.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -17,15 +17,47 @@
require File.expand_path('../../../../../../test_helper', __FILE__)
-class SubversionAdapterTest < ActiveSupport::TestCase
+begin
+ require 'mocha'
+
+ class SubversionAdapterTest < ActiveSupport::TestCase
- if repository_configured?('subversion')
- def test_client_version
- v = Redmine::Scm::Adapters::SubversionAdapter.client_version
- assert v.is_a?(Array)
+ if repository_configured?('subversion')
+ def setup
+ repo_path = "file://#{self.class.repository_path('subversion')}"
+ @adapter = Redmine::Scm::Adapters::SubversionAdapter.new(repo_path)
+ end
+
+ def test_client_version
+ v = Redmine::Scm::Adapters::SubversionAdapter.client_version
+ assert v.is_a?(Array)
+ end
+
+ def test_scm_version
+ to_test = { "svn, version 1.6.13 (r1002816)\n" => [1,6,13],
+ "svn, versione 1.6.13 (r1002816)\n" => [1,6,13],
+ "1.6.1\n1.7\n1.8" => [1,6,1],
+ "1.6.2\r\n1.8.1\r\n1.9.1" => [1,6,2]}
+ to_test.each do |s, v|
+ test_scm_version_for(s, v)
+ end
+ end
+
+ private
+
+ def test_scm_version_for(scm_version, version)
+ @adapter.class.expects(:scm_version_from_command_line).returns(scm_version)
+ assert_equal version, @adapter.class.svn_binary_version
+ end
+
+ else
+ puts "Subversion test repository NOT FOUND. Skipping unit tests !!!"
+ def test_fake; assert true end
end
- else
- puts "Subversion test repository NOT FOUND. Skipping unit tests !!!"
- def test_fake; assert true end
+ end
+
+rescue LoadError
+ class SubversionMochaFake < ActiveSupport::TestCase
+ def test_fake; assert(false, "Requires mocha to run those tests") end
end
end
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/scm/adapters/bazaar_adapter_test.rb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/unit/lib/redmine/scm/adapters/bazaar_adapter_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -0,0 +1,54 @@
+require File.expand_path('../../../../../../test_helper', __FILE__)
+begin
+ require 'mocha'
+
+ class BazaarAdapterTest < ActiveSupport::TestCase
+
+ REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/bazaar_repository'
+ REPOSITORY_PATH.gsub!(/\/+/, '/')
+
+ if File.directory?(REPOSITORY_PATH)
+ def setup
+ @adapter = Redmine::Scm::Adapters::BazaarAdapter.new(REPOSITORY_PATH)
+ end
+
+ def test_scm_version
+ to_test = { "Bazaar (bzr) 2.1.2\n" => [2,1,2],
+ "2.1.1\n1.7\n1.8" => [2,1,1],
+ "2.0.1\r\n1.8.1\r\n1.9.1" => [2,0,1]}
+ to_test.each do |s, v|
+ test_scm_version_for(s, v)
+ end
+ end
+
+ def test_cat
+ cat = @adapter.cat('directory/document.txt')
+ assert cat =~ /Write the contents of a file as of a given revision to standard output/
+ end
+
+ def test_annotate
+ annotate = @adapter.annotate('doc-mkdir.txt')
+ assert_equal 17, annotate.lines.size
+ assert_equal '1', annotate.revisions[0].identifier
+ assert_equal 'jsmith@', annotate.revisions[0].author
+ assert_equal 'mkdir', annotate.lines[0]
+ end
+
+ private
+
+ def test_scm_version_for(scm_command_version, version)
+ @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version)
+ assert_equal version, @adapter.class.scm_command_version
+ end
+ else
+ puts "Bazaar test repository NOT FOUND. Skipping unit tests !!!"
+ def test_fake; assert true end
+ end
+ end
+
+rescue LoadError
+ class BazaarMochaFake < ActiveSupport::TestCase
+ def test_fake; assert(false, "Requires mocha to run those tests") end
+ end
+end
+
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/scm/adapters/cvs_adapter_test.rb
--- a/test/unit/lib/redmine/scm/adapters/cvs_adapter_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/scm/adapters/cvs_adapter_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -5,6 +5,7 @@
class CvsAdapterTest < ActiveSupport::TestCase
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/cvs_repository'
+ REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin?
MODULE_NAME = 'test'
if File.directory?(REPOSITORY_PATH)
@@ -12,6 +13,15 @@
@adapter = Redmine::Scm::Adapters::CvsAdapter.new(MODULE_NAME, REPOSITORY_PATH)
end
+ def test_scm_version
+ to_test = { "\nConcurrent Versions System (CVS) 1.12.13 (client/server)\n" => [1,12,13],
+ "\r\n1.12.12\r\n1.12.11" => [1,12,12],
+ "1.12.11\r\n1.12.10\r\n" => [1,12,11]}
+ to_test.each do |s, v|
+ test_scm_version_for(s, v)
+ end
+ end
+
def test_revisions_all
cnt = 0
@adapter.revisions('', nil, nil, :with_paths => true) do |revision|
@@ -28,6 +38,13 @@
end
assert_equal 2, cnt
end
+
+ private
+
+ def test_scm_version_for(scm_command_version, version)
+ @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version)
+ assert_equal version, @adapter.class.scm_command_version
+ end
else
puts "Cvs test repository NOT FOUND. Skipping unit tests !!!"
def test_fake; assert true end
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/scm/adapters/git_adapter_test.rb
--- a/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -1,71 +1,120 @@
# encoding: utf-8
+# This file includes UTF-8 "Felix Schäfer".
+# We need to consider Ruby 1.9 compatibility.
+
require File.expand_path('../../../../../../test_helper', __FILE__)
+begin
+ require 'mocha'
-class GitAdapterTest < ActiveSupport::TestCase
- REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/git_repository'
+ class GitAdapterTest < ActiveSupport::TestCase
+ REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/git_repository'
- if File.directory?(REPOSITORY_PATH)
- def setup
- @adapter = Redmine::Scm::Adapters::GitAdapter.new(REPOSITORY_PATH)
+ FELIX_UTF8 = "Felix Schäfer"
+ FELIX_HEX = "Felix Sch\xC3\xA4fer"
+
+ if File.directory?(REPOSITORY_PATH)
+ def setup
+ @adapter = Redmine::Scm::Adapters::GitAdapter.new(REPOSITORY_PATH)
+ end
+
+ def test_scm_version
+ to_test = { "git version 1.7.3.4\n" => [1,7,3,4],
+ "1.6.1\n1.7\n1.8" => [1,6,1],
+ "1.6.2\r\n1.8.1\r\n1.9.1" => [1,6,2]}
+ to_test.each do |s, v|
+ test_scm_version_for(s, v)
+ end
+ end
+
+ def test_branches
+ assert_equal @adapter.branches, ['master', 'test-latin-1', 'test_branch']
+ end
+
+ def test_getting_all_revisions
+ assert_equal 16, @adapter.revisions('',nil,nil,:all => true).length
+ end
+
+ def test_getting_certain_revisions
+ assert_equal 1, @adapter.revisions('','899a15d^','899a15d').length
+ end
+
+ def test_getting_revisions_with_spaces_in_filename
+ assert_equal 1, @adapter.revisions("filemane with spaces.txt",
+ nil, nil, :all => true).length
+ end
+
+ def test_getting_revisions_with_leading_and_trailing_spaces_in_filename
+ assert_equal " filename with a leading space.txt ",
+ @adapter.revisions(" filename with a leading space.txt ",
+ nil, nil, :all => true)[0].paths[0][:path]
+ end
+
+ def test_getting_entries_with_leading_and_trailing_spaces_in_filename
+ assert_equal " filename with a leading space.txt ",
+ @adapter.entries('',
+ '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c')[3].name
+ end
+
+ def test_annotate
+ annotate = @adapter.annotate('sources/watchers_controller.rb')
+ assert_kind_of Redmine::Scm::Adapters::Annotate, annotate
+ assert_equal 41, annotate.lines.size
+ assert_equal "# This program is free software; you can redistribute it and/or", annotate.lines[4].strip
+ assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518",
+ annotate.revisions[4].identifier
+ assert_equal "jsmith", annotate.revisions[4].author
+ end
+
+ def test_annotate_moved_file
+ annotate = @adapter.annotate('renamed_test.txt')
+ assert_kind_of Redmine::Scm::Adapters::Annotate, annotate
+ assert_equal 2, annotate.lines.size
+ end
+
+ def test_last_rev
+ last_rev = @adapter.lastrev("README",
+ "4f26664364207fa8b1af9f8722647ab2d4ac5d43")
+ assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.scmid
+ assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.identifier
+ assert_equal "Adam Soltys ", last_rev.author
+ assert_equal "2009-06-24 05:27:38".to_time, last_rev.time
+ end
+
+ def test_last_rev_with_spaces_in_filename
+ last_rev = @adapter.lastrev("filemane with spaces.txt",
+ "ed5bb786bbda2dee66a2d50faf51429dbc043a7b")
+ str_felix_utf8 = FELIX_UTF8
+ str_felix_hex = FELIX_HEX
+ last_rev_author = last_rev.author
+ if last_rev_author.respond_to?(:force_encoding)
+ last_rev_author.force_encoding('UTF-8')
+ end
+ assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.scmid
+ assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.identifier
+ assert_equal "#{str_felix_utf8} ",
+ last_rev.author
+ assert_equal "#{str_felix_hex} ",
+ last_rev.author
+ assert_equal "2010-09-18 19:59:46".to_time, last_rev.time
+ end
+
+ private
+
+ def test_scm_version_for(scm_command_version, version)
+ @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version)
+ assert_equal version, @adapter.class.scm_command_version
+ end
+
+ else
+ puts "Git test repository NOT FOUND. Skipping unit tests !!!"
+ def test_fake; assert true end
end
+ end
- def test_branches
- assert_equal @adapter.branches, ['master', 'test_branch']
- end
-
- def test_getting_all_revisions
- assert_equal 15, @adapter.revisions('',nil,nil,:all => true).length
- end
-
- def test_getting_certain_revisions
- assert_equal 1, @adapter.revisions('','899a15d^','899a15d').length
- end
-
- def test_getting_revisions_with_spaces_in_filename
- assert_equal 1, @adapter.revisions("filemane with spaces.txt", nil, nil, :all => true).length
- end
-
- def test_getting_revisions_with_leading_and_trailing_spaces_in_filename
- assert_equal " filename with a leading space.txt ", @adapter.revisions(" filename with a leading space.txt ", nil, nil, :all => true)[0].paths[0][:path]
- end
-
- def test_getting_entries_with_leading_and_trailing_spaces_in_filename
- assert_equal " filename with a leading space.txt ", @adapter.entries('', '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c')[3].name
- end
-
- def test_annotate
- annotate = @adapter.annotate('sources/watchers_controller.rb')
- assert_kind_of Redmine::Scm::Adapters::Annotate, annotate
- assert_equal 41, annotate.lines.size
- assert_equal "# This program is free software; you can redistribute it and/or", annotate.lines[4].strip
- assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518", annotate.revisions[4].identifier
- assert_equal "jsmith", annotate.revisions[4].author
- end
-
- def test_annotate_moved_file
- annotate = @adapter.annotate('renamed_test.txt')
- assert_kind_of Redmine::Scm::Adapters::Annotate, annotate
- assert_equal 2, annotate.lines.size
- end
-
- def test_last_rev
- last_rev = @adapter.lastrev("README", "4f26664364207fa8b1af9f8722647ab2d4ac5d43")
- assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.scmid
- assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.identifier
- assert_equal "Adam Soltys ", last_rev.author
- assert_equal "2009-06-24 05:27:38".to_time, last_rev.time
- end
-
- def test_last_rev_with_spaces_in_filename
- last_rev = @adapter.lastrev("filemane with spaces.txt", "ed5bb786bbda2dee66a2d50faf51429dbc043a7b")
- assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.scmid
- assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.identifier
- assert_equal "Felix Schäfer ", last_rev.author
- assert_equal "2010-09-18 19:59:46".to_time, last_rev.time
- end
- else
- puts "Git test repository NOT FOUND. Skipping unit tests !!!"
- def test_fake; assert true end
+rescue LoadError
+ class GitMochaFake < ActiveSupport::TestCase
+ def test_fake; assert(false, "Requires mocha to run those tests") end
end
end
+
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb
--- a/test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -4,7 +4,7 @@
class MercurialAdapterTest < ActiveSupport::TestCase
- TEMPLATES_DIR = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATES_DIR
+ HELPERS_DIR = Redmine::Scm::Adapters::MercurialAdapter::HELPERS_DIR
TEMPLATE_NAME = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_NAME
TEMPLATE_EXTENSION = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_EXTENSION
@@ -13,6 +13,7 @@
if File.directory?(REPOSITORY_PATH)
def setup
@adapter = Redmine::Scm::Adapters::MercurialAdapter.new(REPOSITORY_PATH)
+ @diff_c_support = true
end
def test_hgversion
@@ -42,6 +43,31 @@
end
end
+ def test_info
+ [REPOSITORY_PATH, REPOSITORY_PATH + "/",
+ REPOSITORY_PATH + "//"].each do |repo|
+ adp = Redmine::Scm::Adapters::MercurialAdapter.new(repo)
+ repo_path = adp.info.root_url.gsub(/\\/, "/")
+ assert_equal REPOSITORY_PATH, repo_path
+ assert_equal '16', adp.info.lastrev.revision
+ assert_equal '4cddb4e45f52',adp.info.lastrev.scmid
+ end
+ end
+
+ def test_revisions
+ revisions = @adapter.revisions(nil, 2, 4)
+ assert_equal 3, revisions.size
+ assert_equal '2', revisions[0].revision
+ assert_equal '400bb8672109', revisions[0].scmid
+ assert_equal '4', revisions[2].revision
+ assert_equal 'def6d2f1254a', revisions[2].scmid
+
+ revisions = @adapter.revisions(nil, 2, 4, {:limit => 2})
+ assert_equal 2, revisions.size
+ assert_equal '2', revisions[0].revision
+ assert_equal '400bb8672109', revisions[0].scmid
+ end
+
def test_diff
if @adapter.class.client_version_above?([1, 2])
assert_nil @adapter.diff(nil, '100000')
@@ -49,7 +75,7 @@
assert_nil @adapter.diff(nil, '100000', '200000')
[2, '400bb8672109', '400', 400].each do |r1|
diff1 = @adapter.diff(nil, r1)
- if @adapter.class.client_version_above?([1, 2])
+ if @diff_c_support
assert_equal 28, diff1.size
buf = diff1[24].gsub(/\r\n|\r|\n/, "")
assert_equal "+ return true unless klass.respond_to?('watched_by')", buf
@@ -70,7 +96,7 @@
end
def test_diff_made_by_revision
- if @adapter.class.client_version_above?([1, 2])
+ if @diff_c_support
[16, '16', '4cddb4e45f52'].each do |r1|
diff1 = @adapter.diff(nil, r1)
assert_equal 5, diff1.size
@@ -104,9 +130,12 @@
end
end
- # TODO filesize etc.
def test_entries
assert_nil @adapter.entries(nil, '100000')
+
+ assert_equal 1, @adapter.entries("sources", 3).size
+ assert_equal 1, @adapter.entries("sources", 'b3a615152df8').size
+
[2, '400bb8672109', '400', 400].each do |r|
entries1 = @adapter.entries(nil, r)
assert entries1
@@ -114,9 +143,15 @@
assert_equal 'sources', entries1[1].name
assert_equal 'sources', entries1[1].path
assert_equal 'dir', entries1[1].kind
- assert_equal 'README', entries1[2].name
- assert_equal 'README', entries1[2].path
- assert_equal 'file', entries1[2].kind
+ readme = entries1[2]
+ assert_equal 'README', readme.name
+ assert_equal 'README', readme.path
+ assert_equal 'file', readme.kind
+ assert_equal 27, readme.size
+ assert_equal '1', readme.lastrev.revision
+ assert_equal '9d5b5b004199', readme.lastrev.identifier
+ # 2007-12-14 10:24:01 +0100
+ assert_equal Time.gm(2007, 12, 14, 9, 24, 1), readme.lastrev.time
entries2 = @adapter.entries('sources', r)
assert entries2
@@ -130,6 +165,48 @@
end
end
+ def test_entries_tag
+ entries1 = @adapter.entries(nil, 'tag_test.00')
+ assert entries1
+ assert_equal 3, entries1.size
+ assert_equal 'sources', entries1[1].name
+ assert_equal 'sources', entries1[1].path
+ assert_equal 'dir', entries1[1].kind
+ readme = entries1[2]
+ assert_equal 'README', readme.name
+ assert_equal 'README', readme.path
+ assert_equal 'file', readme.kind
+ assert_equal 21, readme.size
+ assert_equal '0', readme.lastrev.revision
+ assert_equal '0885933ad4f6', readme.lastrev.identifier
+ # 2007-12-14 10:22:52 +0100
+ assert_equal Time.gm(2007, 12, 14, 9, 22, 52), readme.lastrev.time
+ end
+
+ def test_entries_branch
+ entries1 = @adapter.entries(nil, 'test-branch-00')
+ assert entries1
+ assert_equal 5, entries1.size
+ assert_equal 'sql_escape', entries1[2].name
+ assert_equal 'sql_escape', entries1[2].path
+ assert_equal 'dir', entries1[2].kind
+ readme = entries1[4]
+ assert_equal 'README', readme.name
+ assert_equal 'README', readme.path
+ assert_equal 'file', readme.kind
+ assert_equal 365, readme.size
+ assert_equal '8', readme.lastrev.revision
+ assert_equal 'c51f5bb613cd', readme.lastrev.identifier
+ # 2001-02-01 00:00:00 -0900
+ assert_equal Time.gm(2001, 2, 1, 9, 0, 0), readme.lastrev.time
+ end
+
+ def test_locate_on_outdated_repository
+ assert_equal 1, @adapter.entries("images", 0).size
+ assert_equal 2, @adapter.entries("images").size
+ assert_equal 2, @adapter.entries("images", 2).size
+ end
+
def test_access_by_nodeid
path = 'sources/welcome_controller.rb'
assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400bb8672109')
@@ -141,6 +218,28 @@
assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400')
end
+ def test_tags
+ assert_equal ['tag_test.00', 'tag-init-revision'], @adapter.tags
+ end
+
+ def test_tagmap
+ tm = { 'tag_test.00' => '6987191f453a',
+ 'tag-init-revision' => '0885933ad4f6' }
+ assert_equal tm, @adapter.tagmap
+ end
+
+ def test_branches
+ assert_equal ['default', 'branch (1)[2]&,%.-3_4', 'test-branch-00'],
+ @adapter.branches
+ end
+
+ def test_branchmap
+ bm = { 'default' => '4cddb4e45f52',
+ 'branch (1)[2]&,%.-3_4' => '933ca60293d7',
+ 'test-branch-00' => '3a330eb32958' }
+ assert_equal bm, @adapter.branchmap
+ end
+
private
def test_hgversion_for(hgversion, version)
@@ -149,7 +248,7 @@
end
def test_template_path_for(version, template)
- assert_equal "#{TEMPLATES_DIR}/#{TEMPLATE_NAME}-#{template}.#{TEMPLATE_EXTENSION}",
+ assert_equal "#{HELPERS_DIR}/#{TEMPLATE_NAME}-#{template}.#{TEMPLATE_EXTENSION}",
@adapter.class.template_path_for(version)
assert File.exist?(@adapter.class.template_path_for(version))
end
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/scm/adapters/subversion_adapter_test.rb
--- a/test/unit/lib/redmine/scm/adapters/subversion_adapter_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/scm/adapters/subversion_adapter_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -17,15 +17,47 @@
require File.expand_path('../../../../../../test_helper', __FILE__)
-class SubversionAdapterTest < ActiveSupport::TestCase
+begin
+ require 'mocha'
+
+ class SubversionAdapterTest < ActiveSupport::TestCase
- if repository_configured?('subversion')
- def test_client_version
- v = Redmine::Scm::Adapters::SubversionAdapter.client_version
- assert v.is_a?(Array)
+ if repository_configured?('subversion')
+ def setup
+ repo_path = "file://#{self.class.repository_path('subversion')}"
+ @adapter = Redmine::Scm::Adapters::SubversionAdapter.new(repo_path)
+ end
+
+ def test_client_version
+ v = Redmine::Scm::Adapters::SubversionAdapter.client_version
+ assert v.is_a?(Array)
+ end
+
+ def test_scm_version
+ to_test = { "svn, version 1.6.13 (r1002816)\n" => [1,6,13],
+ "svn, versione 1.6.13 (r1002816)\n" => [1,6,13],
+ "1.6.1\n1.7\n1.8" => [1,6,1],
+ "1.6.2\r\n1.8.1\r\n1.9.1" => [1,6,2]}
+ to_test.each do |s, v|
+ test_scm_version_for(s, v)
+ end
+ end
+
+ private
+
+ def test_scm_version_for(scm_version, version)
+ @adapter.class.expects(:scm_version_from_command_line).returns(scm_version)
+ assert_equal version, @adapter.class.svn_binary_version
+ end
+
+ else
+ puts "Subversion test repository NOT FOUND. Skipping unit tests !!!"
+ def test_fake; assert true end
end
- else
- puts "Subversion test repository NOT FOUND. Skipping unit tests !!!"
- def test_fake; assert true end
+ end
+
+rescue LoadError
+ class SubversionMochaFake < ActiveSupport::TestCase
+ def test_fake; assert(false, "Requires mocha to run those tests") end
end
end
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/unified_diff_test.rb
--- a/test/unit/lib/redmine/unified_diff_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/unified_diff_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -60,8 +60,39 @@
assert_equal 1, diff.size
end
+ def test_one_line_new_files
+ diff = Redmine::UnifiedDiff.new(<<-DIFF
+diff -r 000000000000 -r ea98b14f75f0 README1
+--- /dev/null
++++ b/README1
+@@ -0,0 +1,1 @@
++test1
+diff -r 000000000000 -r ea98b14f75f0 README2
+--- /dev/null
++++ b/README2
+@@ -0,0 +1,1 @@
++test2
+diff -r 000000000000 -r ea98b14f75f0 README3
+--- /dev/null
++++ b/README3
+@@ -0,0 +1,3 @@
++test4
++test5
++test6
+diff -r 000000000000 -r ea98b14f75f0 README4
+--- /dev/null
++++ b/README4
+@@ -0,0 +1,3 @@
++test4
++test5
++test6
+DIFF
+ )
+ assert_equal 4, diff.size
+ end
+
private
-
+
def read_diff_fixture(filename)
File.new(File.join(File.dirname(__FILE__), '/../../../fixtures/diffs', filename)).read
end
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/views/.svn/entries
--- a/test/unit/lib/redmine/views/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/views/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/unit/lib/redmine/views
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/views/builders/.svn/entries
--- a/test/unit/lib/redmine/views/builders/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/views/builders/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/unit/lib/redmine/views/builders
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe test/unit/lib/redmine/wiki_formatting/.svn/entries
--- a/test/unit/lib/redmine/wiki_formatting/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/lib/redmine/wiki_formatting/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/test/unit/lib/redmine/wiki_formatting
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe test/unit/query_test.rb
--- a/test/unit/query_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/query_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -484,7 +484,6 @@
# Users not in a group
assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IS NULL OR #{Issue.table_name}.assigned_to_id NOT IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}')"
assert_find_issues_with_query_is_successful @query
-
end
should "search assigned to any group member (all)" do
@@ -494,7 +493,22 @@
# Only users in a group
assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}')"
assert_find_issues_with_query_is_successful @query
-
+ end
+
+ should "return an empty set with = empty group" do
+ @empty_group = Group.generate!
+ @query = Query.new(:name => '_')
+ @query.add_filter('member_of_group', '=', [@empty_group.id.to_s])
+
+ assert_equal [], find_issues_with_query(@query)
+ end
+
+ should "return issues with ! empty group" do
+ @empty_group = Group.generate!
+ @query = Query.new(:name => '_')
+ @query.add_filter('member_of_group', '!', [@empty_group.id.to_s])
+
+ assert_find_issues_with_query_is_successful @query
end
end
@@ -540,6 +554,22 @@
assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@manager.id}','#{@developer.id}','#{@boss.id}')"
assert_find_issues_with_query_is_successful @query
end
+
+ should "return an empty set with empty role" do
+ @empty_role = Role.generate!
+ @query = Query.new(:name => '_')
+ @query.add_filter('assigned_to_role', '=', [@empty_role.id.to_s])
+
+ assert_equal [], find_issues_with_query(@query)
+ end
+
+ should "return issues with ! empty role" do
+ @empty_role = Role.generate!
+ @query = Query.new(:name => '_')
+ @query.add_filter('member_of_group', '!', [@empty_role.id.to_s])
+
+ assert_find_issues_with_query_is_successful @query
+ end
end
end
diff -r 8972b600f4fb -r 051f544170fe test/unit/repository_bazaar_test.rb
--- a/test/unit/repository_bazaar_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/repository_bazaar_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -19,16 +19,19 @@
class RepositoryBazaarTest < ActiveSupport::TestCase
fixtures :projects
-
+
# No '..' in the repository path
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/bazaar_repository'
REPOSITORY_PATH.gsub!(/\/+/, '/')
def setup
- @project = Project.find(1)
- assert @repository = Repository::Bazaar.create(:project => @project, :url => "file:///#{REPOSITORY_PATH}")
+ @project = Project.find(3)
+ @repository = Repository::Bazaar.create(
+ :project => @project, :url => "file:///#{REPOSITORY_PATH}",
+ :log_encoding => 'UTF-8')
+ assert @repository
end
-
+
if File.directory?(REPOSITORY_PATH)
def test_fetch_changesets_from_scratch
@repository.fetch_changesets
@@ -38,7 +41,7 @@
assert_equal 9, @repository.changes.count
assert_equal 'Initial import', @repository.changesets.find_by_revision('1').comments
end
-
+
def test_fetch_changesets_incremental
@repository.fetch_changesets
# Remove changesets with revision > 5
@@ -49,7 +52,7 @@
@repository.fetch_changesets
assert_equal 4, @repository.changesets.count
end
-
+
def test_entries
entries = @repository.entries
assert_equal 2, entries.size
@@ -68,19 +71,6 @@
assert_equal 'file', entries.last.kind
assert_equal 'edit.png', entries.last.name
end
-
- def test_cat
- cat = @repository.scm.cat('directory/document.txt')
- assert cat =~ /Write the contents of a file as of a given revision to standard output/
- end
-
- def test_annotate
- annotate = @repository.scm.annotate('doc-mkdir.txt')
- assert_equal 17, annotate.lines.size
- assert_equal '1', annotate.revisions[0].identifier
- assert_equal 'jsmith@', annotate.revisions[0].author
- assert_equal 'mkdir', annotate.lines[0]
- end
else
puts "Bazaar test repository NOT FOUND. Skipping unit tests !!!"
def test_fake; assert true end
diff -r 8972b600f4fb -r 051f544170fe test/unit/repository_cvs_test.rb
--- a/test/unit/repository_cvs_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/repository_cvs_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -28,9 +28,11 @@
def setup
@project = Project.find(3)
- assert @repository = Repository::Cvs.create(:project => @project,
- :root_url => REPOSITORY_PATH,
- :url => MODULE_NAME)
+ @repository = Repository::Cvs.create(:project => @project,
+ :root_url => REPOSITORY_PATH,
+ :url => MODULE_NAME,
+ :log_encoding => 'UTF-8')
+ assert @repository
end
if File.directory?(REPOSITORY_PATH)
diff -r 8972b600f4fb -r 051f544170fe test/unit/repository_darcs_test.rb
--- a/test/unit/repository_darcs_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/repository_darcs_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -19,25 +19,28 @@
class RepositoryDarcsTest < ActiveSupport::TestCase
fixtures :projects
-
+
# No '..' in the repository path
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/darcs_repository'
-
+
def setup
- @project = Project.find(1)
- assert @repository = Repository::Darcs.create(:project => @project, :url => REPOSITORY_PATH)
+ @project = Project.find(3)
+ @repository = Repository::Darcs.create(
+ :project => @project, :url => REPOSITORY_PATH,
+ :log_encoding => 'UTF-8')
+ assert @repository
end
-
+
if File.directory?(REPOSITORY_PATH)
def test_fetch_changesets_from_scratch
@repository.fetch_changesets
@repository.reload
-
+
assert_equal 6, @repository.changesets.count
assert_equal 13, @repository.changes.count
assert_equal "Initial commit.", @repository.changesets.find_by_revision('1').comments
end
-
+
def test_fetch_changesets_incremental
@repository.fetch_changesets
# Remove changesets with revision > 3
@@ -48,8 +51,10 @@
@repository.fetch_changesets
assert_equal 6, @repository.changesets.count
end
-
+
def test_deleted_files_should_not_be_listed
+ @repository.fetch_changesets
+ @repository.reload
entries = @repository.entries('sources')
assert entries.detect {|e| e.name == 'watchers_controller.rb'}
assert_nil entries.detect {|e| e.name == 'welcome_controller.rb'}
diff -r 8972b600f4fb -r 051f544170fe test/unit/repository_git_test.rb
--- a/test/unit/repository_git_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/repository_git_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -18,25 +18,29 @@
require File.expand_path('../../test_helper', __FILE__)
class RepositoryGitTest < ActiveSupport::TestCase
- fixtures :projects, :repositories, :enabled_modules, :users, :roles
-
+ fixtures :projects, :repositories, :enabled_modules, :users, :roles
+
# No '..' in the repository path
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/git_repository'
REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin?
-
+
+ FELIX_HEX = "Felix Sch\xC3\xA4fer"
+
def setup
- @project = Project.find(1)
- assert @repository = Repository::Git.create(:project => @project, :url => REPOSITORY_PATH)
+ Setting.commit_logs_encoding = 'UTF-8'
+ @project = Project.find(3)
+ @repository = Repository::Git.create(:project => @project, :url => REPOSITORY_PATH)
+ assert @repository
end
-
+
if File.directory?(REPOSITORY_PATH)
def test_fetch_changesets_from_scratch
@repository.fetch_changesets
@repository.reload
-
- assert_equal 15, @repository.changesets.count
- assert_equal 24, @repository.changes.count
-
+
+ assert_equal 16, @repository.changesets.count
+ assert_equal 25, @repository.changes.count
+
commit = @repository.changesets.find(:first, :order => 'committed_on ASC')
assert_equal "Initial import.\nThe repository contains 3 files.", commit.comments
assert_equal "jsmith ", commit.committer
@@ -57,10 +61,20 @@
# Remove the 3 latest changesets
@repository.changesets.find(:all, :order => 'committed_on DESC', :limit => 3).each(&:destroy)
@repository.reload
- assert_equal 12, @repository.changesets.count
-
+ cs1 = @repository.changesets
+ assert_equal 13, cs1.count
+
+ rev_a_commit = @repository.changesets.find(:first, :order => 'committed_on DESC')
+ assert_equal '4f26664364207fa8b1af9f8722647ab2d4ac5d43', rev_a_commit.revision
+ # Mon Jul 5 22:34:26 2010 +0200
+ rev_a_committed_on = Time.gm(2010, 7, 5, 20, 34, 26)
+ assert_equal '4f26664364207fa8b1af9f8722647ab2d4ac5d43', rev_a_commit.scmid
+ assert_equal rev_a_committed_on, rev_a_commit.committed_on
+ latest_rev = @repository.latest_changeset
+ assert_equal rev_a_committed_on, latest_rev.committed_on
+
@repository.fetch_changesets
- assert_equal 15, @repository.changesets.count
+ assert_equal 16, @repository.changesets.count
end
def test_find_changeset_by_name
@@ -103,6 +117,17 @@
assert c.event_title.include?('abc7234c:')
assert_equal 'abc7234cb2750b63f47bff735edc50a1c0a433c2', c.event_url[:rev]
end
+
+ def test_log_utf8
+ @repository.fetch_changesets
+ @repository.reload
+ str_felix_hex = FELIX_HEX
+ if str_felix_hex.respond_to?(:force_encoding)
+ str_felix_hex.force_encoding('UTF-8')
+ end
+ c = @repository.changesets.find_by_revision('ed5bb786bbda2dee66a2d50faf51429dbc043a7b')
+ assert_equal "#{str_felix_hex} ", c.committer
+ end
else
puts "Git test repository NOT FOUND. Skipping unit tests !!!"
def test_fake; assert true end
diff -r 8972b600f4fb -r 051f544170fe test/unit/repository_mercurial_test.rb
--- a/test/unit/repository_mercurial_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/repository_mercurial_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -22,23 +22,23 @@
# No '..' in the repository path
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/mercurial_repository'
-
+
def setup
- @project = Project.find(1)
- assert @repository = Repository::Mercurial.create(:project => @project, :url => REPOSITORY_PATH)
+ @project = Project.find(3)
+ @repository = Repository::Mercurial.create(:project => @project, :url => REPOSITORY_PATH)
+ assert @repository
end
-
+
if File.directory?(REPOSITORY_PATH)
def test_fetch_changesets_from_scratch
@repository.fetch_changesets
@repository.reload
-
assert_equal 17, @repository.changesets.count
assert_equal 25, @repository.changes.count
assert_equal "Initial import.\nThe repository contains 3 files.",
@repository.changesets.find_by_revision('0').comments
end
-
+
def test_fetch_changesets_incremental
@repository.fetch_changesets
# Remove changesets with revision > 2
@@ -49,19 +49,6 @@
@repository.fetch_changesets
assert_equal 17, @repository.changesets.count
end
-
- def test_entries
- assert_equal 2, @repository.entries("sources", 2).size
- assert_equal 2, @repository.entries("sources", '400bb8672109').size
- assert_equal 1, @repository.entries("sources", 3).size
- assert_equal 1, @repository.entries("sources", 'b3a615152df8').size
- end
-
- def test_locate_on_outdated_repository
- assert_equal 1, @repository.entries("images", 0).size
- assert_equal 2, @repository.entries("images").size
- assert_equal 2, @repository.entries("images", 2).size
- end
def test_isodatesec
# Template keyword 'isodatesec' supported in Mercurial 1.0 and higher
@@ -171,6 +158,43 @@
assert c.event_title.include?('123:abc400bb8672:')
assert_equal 'abc400bb8672', c.event_url[:rev]
end
+
+ def test_latest_changesets_with_limit
+ @repository.fetch_changesets
+ @repository.reload
+ changesets = @repository.latest_changesets('', nil, 2)
+ assert_equal @repository.latest_changesets('', nil)[0, 2], changesets
+ end
+
+ def test_latest_changesets_with_filepath
+ @repository.fetch_changesets
+ @repository.reload
+ changesets = @repository.latest_changesets('README', nil)
+ assert_equal %w|8 6 1 0|, changesets.collect(&:revision)
+
+ path = 'sql_escape/percent%dir/percent%file1.txt'
+ changesets = @repository.latest_changesets(path, nil)
+ assert_equal %w|11 10 9|, changesets.collect(&:revision)
+
+ path = 'sql_escape/underscore_dir/understrike_file.txt'
+ changesets = @repository.latest_changesets(path, nil)
+ assert_equal %w|12 9|, changesets.collect(&:revision)
+ end
+
+ def test_latest_changesets_with_dirpath
+ @repository.fetch_changesets
+ @repository.reload
+ changesets = @repository.latest_changesets('images', nil)
+ assert_equal %w|1 0|, changesets.collect(&:revision)
+
+ path = 'sql_escape/percent%dir'
+ changesets = @repository.latest_changesets(path, nil)
+ assert_equal %w|13 11 10 9|, changesets.collect(&:revision)
+
+ path = 'sql_escape/underscore_dir'
+ changesets = @repository.latest_changesets(path, nil)
+ assert_equal %w|13 12 9|, changesets.collect(&:revision)
+ end
else
puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!"
def test_fake; assert true end
diff -r 8972b600f4fb -r 051f544170fe test/unit/repository_subversion_test.rb
--- a/test/unit/repository_subversion_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/repository_subversion_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -21,8 +21,9 @@
fixtures :projects, :repositories, :enabled_modules, :users, :roles
def setup
- @project = Project.find(1)
- assert @repository = Repository::Subversion.create(:project => @project, :url => "file:///#{self.class.repository_path('subversion')}")
+ @project = Project.find(3)
+ assert @repository = Repository::Subversion.create(:project => @project,
+ :url => "file://#{self.class.repository_path('subversion')}")
end
if repository_configured?('subversion')
@@ -74,7 +75,7 @@
end
def test_directory_listing_with_square_brackets_in_base
- @project = Project.find(1)
+ @project = Project.find(3)
@repository = Repository::Subversion.create(:project => @project, :url => "file:///#{self.class.repository_path('subversion')}/subversion_test/[folder_with_brackets]")
@repository.fetch_changesets
@@ -136,6 +137,56 @@
assert c.event_title.include?('123456789:')
assert_equal '123456789', c.event_url[:rev]
end
+
+ def test_log_encoding_ignore_setting
+ with_settings :commit_logs_encoding => 'windows-1252' do
+ s1 = "\xC2\x80"
+ s2 = "\xc3\x82\xc2\x80"
+ if s1.respond_to?(:force_encoding)
+ s3 = s1
+ s4 = s2
+ s1.force_encoding('ASCII-8BIT')
+ s2.force_encoding('ASCII-8BIT')
+ s3.force_encoding('ISO-8859-1')
+ s4.force_encoding('UTF-8')
+ assert_equal s3.encode('UTF-8'), s4
+ end
+ c = Changeset.new(:repository => @repository,
+ :comments=>s2,
+ :revision=>'123',
+ :committed_on => Time.now)
+ assert c.save
+ assert_equal s2, c.comments
+ end
+ end
+
+ def test_previous
+ @repository.fetch_changesets
+ @repository.reload
+ changeset = @repository.find_changeset_by_name('3')
+ assert_equal @repository.find_changeset_by_name('2'), changeset.previous
+ end
+
+ def test_previous_nil
+ @repository.fetch_changesets
+ @repository.reload
+ changeset = @repository.find_changeset_by_name('1')
+ assert_nil changeset.previous
+ end
+
+ def test_next
+ @repository.fetch_changesets
+ @repository.reload
+ changeset = @repository.find_changeset_by_name('2')
+ assert_equal @repository.find_changeset_by_name('3'), changeset.next
+ end
+
+ def test_next_nil
+ @repository.fetch_changesets
+ @repository.reload
+ changeset = @repository.find_changeset_by_name('11')
+ assert_nil changeset.next
+ end
else
puts "Subversion test repository NOT FOUND. Skipping unit tests !!!"
def test_fake; assert true end
diff -r 8972b600f4fb -r 051f544170fe test/unit/repository_test.rb
--- a/test/unit/repository_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/repository_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -125,16 +125,19 @@
assert_not_equal( comment, changeset.comments )
assert_equal( 'This is a loooooooooooooooooooooooooooong comment', changeset.comments )
end
-
+
def test_for_urls_strip
- repository = Repository::Cvs.create(:project => Project.find(4), :url => ' :pserver:login:password@host:/path/to/the/repository',
- :root_url => 'foo ')
+ repository = Repository::Cvs.create(
+ :project => Project.find(4),
+ :url => ' :pserver:login:password@host:/path/to/the/repository',
+ :root_url => 'foo ',
+ :log_encoding => 'UTF-8')
assert repository.save
repository.reload
assert_equal ':pserver:login:password@host:/path/to/the/repository', repository.url
assert_equal 'foo', repository.root_url
end
-
+
def test_manual_user_mapping
assert_no_difference "Changeset.count(:conditions => 'user_id <> 2')" do
c = Changeset.create!(:repository => @repository, :committer => 'foo', :committed_on => Time.now, :revision => 100, :comments => 'Committed by foo.')
diff -r 8972b600f4fb -r 051f544170fe test/unit/user_test.rb
--- a/test/unit/user_test.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/test/unit/user_test.rb Thu Mar 03 11:42:28 2011 +0000
@@ -361,7 +361,6 @@
user = User.try_to_login("admin", "hello")
assert_kind_of User, user
assert_equal "admin", user.login
- assert_equal User.hash_password("hello"), user.hashed_password
end
def test_name_format
@@ -383,6 +382,22 @@
assert_equal nil, user
end
+ context ".try_to_login" do
+ context "with good credentials" do
+ should "return the user" do
+ user = User.try_to_login("admin", "admin")
+ assert_kind_of User, user
+ assert_equal "admin", user.login
+ end
+ end
+
+ context "with wrong credentials" do
+ should "return nil" do
+ assert_nil User.try_to_login("admin", "foo")
+ end
+ end
+ end
+
if ldap_configured?
context "#try_to_login using LDAP" do
context "with failed connection to the LDAP server" do
@@ -727,6 +742,23 @@
should 'be added and tested'
end
end
+
+ def test_salt_unsalted_passwords
+ # Restore a user with an unsalted password
+ user = User.find(1)
+ user.salt = nil
+ user.hashed_password = User.hash_password("unsalted")
+ user.save!
+
+ User.salt_unsalted_passwords!
+
+ user.reload
+ # Salt added
+ assert !user.salt.blank?
+ # Password still valid
+ assert user.check_password?("unsalted")
+ assert_equal user, User.try_to_login(user.login, "unsalted")
+ end
if Object.const_defined?(:OpenID)
diff -r 8972b600f4fb -r 051f544170fe tmp/.svn/entries
--- a/tmp/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/tmp/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/tmp
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe tmp/cache/.svn/entries
--- a/tmp/cache/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/tmp/cache/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/tmp/cache
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe tmp/sessions/.svn/entries
--- a/tmp/sessions/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/tmp/sessions/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/tmp/sessions
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe tmp/sockets/.svn/entries
--- a/tmp/sockets/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/tmp/sockets/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/tmp/sockets
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe tmp/test/.svn/entries
--- a/tmp/test/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/tmp/test/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/tmp/test
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/.svn/all-wcprops
--- a/vendor/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,5 +1,5 @@
K 25
svn:wc:ra_dav:version-url
V 31
-/svn/!svn/ver/4739/trunk/vendor
+/svn/!svn/ver/4891/trunk/vendor
END
diff -r 8972b600f4fb -r 051f544170fe vendor/.svn/entries
--- a/vendor/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor
http://redmine.rubyforge.org/svn
-2011-01-22T13:18:01.557255Z
-4739
+2011-02-20T14:26:23.957459Z
+4891
jplang
has-props
diff -r 8972b600f4fb -r 051f544170fe vendor/gems/.svn/entries
--- a/vendor/gems/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/gems/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/gems
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/gems/coderay-0.9.7/.svn/entries
--- a/vendor/gems/coderay-0.9.7/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/gems/coderay-0.9.7/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/gems/coderay-0.9.7/bin/.svn/entries
--- a/vendor/gems/coderay-0.9.7/bin/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/gems/coderay-0.9.7/bin/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/bin
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/gems/coderay-0.9.7/lib/.svn/entries
--- a/vendor/gems/coderay-0.9.7/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/gems/coderay-0.9.7/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/lib
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/gems/coderay-0.9.7/lib/coderay/.svn/entries
--- a/vendor/gems/coderay-0.9.7/lib/coderay/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/gems/coderay-0.9.7/lib/coderay/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/lib/coderay
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/entries
--- a/vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders
http://redmine.rubyforge.org/svn
@@ -162,6 +162,40 @@
835
+lines_of_code.rb
+file
+
+
+
+
+2011-03-03T11:05:13.000000Z
+966e154458fb6c665b6d62aa90d07e18
+2011-01-22T13:18:01.557255Z
+4739
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2395
+
count.rb
file
@@ -196,40 +230,6 @@
230
-lines_of_code.rb
-file
-
-
-
-
-2011-03-03T11:05:13.000000Z
-966e154458fb6c665b6d62aa90d07e18
-2011-01-22T13:18:01.557255Z
-4739
-jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-2395
-
xml.rb
file
@@ -298,9 +298,6 @@
236
-html
-dir
-
yaml.rb
file
@@ -335,6 +332,9 @@
264
+html
+dir
+
html.rb
file
@@ -369,6 +369,74 @@
7995
+term.rb
+file
+
+
+
+
+2011-03-03T11:05:13.000000Z
+422a51cd181de3cc0a55aba7f9915c18
+2011-01-22T13:18:01.557255Z
+4739
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+4324
+
+statistic.rb
+file
+
+
+
+
+2011-03-03T11:05:13.000000Z
+49017735ef679f73dd65795e30d8e5c7
+2011-01-22T13:18:01.557255Z
+4739
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1800
+
comment_filter.rb
file
@@ -403,74 +471,6 @@
808
-statistic.rb
-file
-
-
-
-
-2011-03-03T11:05:13.000000Z
-49017735ef679f73dd65795e30d8e5c7
-2011-01-22T13:18:01.557255Z
-4739
-jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-1800
-
-term.rb
-file
-
-
-
-
-2011-03-03T11:05:13.000000Z
-422a51cd181de3cc0a55aba7f9915c18
-2011-01-22T13:18:01.557255Z
-4739
-jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-4324
-
json.rb
file
diff -r 8972b600f4fb -r 051f544170fe vendor/gems/coderay-0.9.7/lib/coderay/encoders/html/.svn/entries
--- a/vendor/gems/coderay-0.9.7/lib/coderay/encoders/html/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/html/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/html
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/gems/coderay-0.9.7/lib/coderay/helpers/.svn/entries
--- a/vendor/gems/coderay-0.9.7/lib/coderay/helpers/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/gems/coderay-0.9.7/lib/coderay/helpers/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/lib/coderay/helpers
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/entries
--- a/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners
http://redmine.rubyforge.org/svn
@@ -60,11 +60,79 @@
6723
+java
+dir
+
ruby
dir
-java
-dir
+java.rb
+file
+
+
+
+
+2011-03-03T11:05:13.000000Z
+35c0803e396fa14a42c6b8645ca7d557
+2011-01-22T13:18:01.557255Z
+4739
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+5041
+
+python.rb
+file
+
+
+
+
+2011-03-03T11:05:13.000000Z
+939e009d9b197cb6437646be82c02982
+2011-01-22T13:18:01.557255Z
+4739
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+9190
ruby.rb
file
@@ -100,14 +168,14 @@
15309
-python.rb
+cpp.rb
file
2011-03-03T11:05:13.000000Z
-939e009d9b197cb6437646be82c02982
+afc4a4b0842e5efdafe98f6c5a10810e
2011-01-22T13:18:01.557255Z
4739
jplang
@@ -132,41 +200,7 @@
-9190
-
-java.rb
-file
-
-
-
-
-2011-03-03T11:05:13.000000Z
-35c0803e396fa14a42c6b8645ca7d557
-2011-01-22T13:18:01.557255Z
-4739
-jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-5041
+6286
c.rb
file
@@ -202,40 +236,6 @@
5408
-cpp.rb
-file
-
-
-
-
-2011-03-03T11:05:13.000000Z
-afc4a4b0842e5efdafe98f6c5a10810e
-2011-01-22T13:18:01.557255Z
-4739
-jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-6286
-
groovy.rb
file
@@ -270,6 +270,40 @@
8521
+debug.rb
+file
+
+
+
+
+2011-03-03T11:05:13.000000Z
+94bdd6c948cb9c3d21ef94a5cec19e05
+2011-01-22T13:18:01.557255Z
+4739
+jplang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1281
+
rhtml.rb
file
@@ -304,40 +338,6 @@
1629
-debug.rb
-file
-
-
-
-
-2011-03-03T11:05:13.000000Z
-94bdd6c948cb9c3d21ef94a5cec19e05
-2011-01-22T13:18:01.557255Z
-4739
-jplang
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-1281
-
php.rb
file
diff -r 8972b600f4fb -r 051f544170fe vendor/gems/coderay-0.9.7/lib/coderay/scanners/java/.svn/entries
--- a/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby/.svn/entries
--- a/vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/gems/coderay-0.9.7/lib/coderay/styles/.svn/entries
--- a/vendor/gems/coderay-0.9.7/lib/coderay/styles/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/gems/coderay-0.9.7/lib/coderay/styles/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/lib/coderay/styles
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/gems/coderay-0.9.7/test/.svn/entries
--- a/vendor/gems/coderay-0.9.7/test/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/gems/coderay-0.9.7/test/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/test
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/gems/coderay-0.9.7/test/functional/.svn/entries
--- a/vendor/gems/coderay-0.9.7/test/functional/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/test/functional
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/gems/rubytree-0.5.2/.svn/entries
--- a/vendor/gems/rubytree-0.5.2/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/gems/rubytree-0.5.2/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/gems/rubytree-0.5.2
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/gems/rubytree-0.5.2/lib/.svn/entries
--- a/vendor/gems/rubytree-0.5.2/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/gems/rubytree-0.5.2/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/gems/rubytree-0.5.2/lib
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/gems/rubytree-0.5.2/lib/tree/.svn/entries
--- a/vendor/gems/rubytree-0.5.2/lib/tree/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/gems/rubytree-0.5.2/lib/tree/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/gems/rubytree-0.5.2/lib/tree
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/gems/rubytree-0.5.2/test/.svn/entries
--- a/vendor/gems/rubytree-0.5.2/test/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/gems/rubytree-0.5.2/test/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/gems/rubytree-0.5.2/test
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/.svn/all-wcprops
--- a/vendor/plugins/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,5 +1,5 @@
K 25
svn:wc:ra_dav:version-url
V 39
-/svn/!svn/ver/4739/trunk/vendor/plugins
+/svn/!svn/ver/4891/trunk/vendor/plugins
END
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/.svn/entries
--- a/vendor/plugins/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins
http://redmine.rubyforge.org/svn
-2011-01-22T13:18:01.557255Z
-4739
+2011-02-20T14:26:23.957459Z
+4891
jplang
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_activity_provider/.svn/entries
--- a/vendor/plugins/acts_as_activity_provider/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_activity_provider/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_activity_provider
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_activity_provider/lib/.svn/entries
--- a/vendor/plugins/acts_as_activity_provider/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_activity_provider/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_activity_provider/lib
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_attachable/.svn/entries
--- a/vendor/plugins/acts_as_attachable/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_attachable/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_attachable
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_attachable/lib/.svn/entries
--- a/vendor/plugins/acts_as_attachable/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_attachable/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_attachable/lib
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_customizable/.svn/all-wcprops
--- a/vendor/plugins/acts_as_customizable/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_customizable/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 60
-/svn/!svn/ver/4481/trunk/vendor/plugins/acts_as_customizable
+/svn/!svn/ver/4891/trunk/vendor/plugins/acts_as_customizable
END
init.rb
K 25
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_customizable/.svn/entries
--- a/vendor/plugins/acts_as_customizable/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_customizable/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_customizable
http://redmine.rubyforge.org/svn
-2010-12-10T10:48:16.342425Z
-4481
+2011-02-20T14:26:23.957459Z
+4891
jplang
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_customizable/lib/.svn/all-wcprops
--- a/vendor/plugins/acts_as_customizable/lib/.svn/all-wcprops Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_customizable/lib/.svn/all-wcprops Thu Mar 03 11:42:28 2011 +0000
@@ -1,11 +1,11 @@
K 25
svn:wc:ra_dav:version-url
V 64
-/svn/!svn/ver/4481/trunk/vendor/plugins/acts_as_customizable/lib
+/svn/!svn/ver/4891/trunk/vendor/plugins/acts_as_customizable/lib
END
acts_as_customizable.rb
K 25
svn:wc:ra_dav:version-url
V 88
-/svn/!svn/ver/4481/trunk/vendor/plugins/acts_as_customizable/lib/acts_as_customizable.rb
+/svn/!svn/ver/4891/trunk/vendor/plugins/acts_as_customizable/lib/acts_as_customizable.rb
END
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_customizable/lib/.svn/entries
--- a/vendor/plugins/acts_as_customizable/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_customizable/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,14 +1,14 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_customizable/lib
http://redmine.rubyforge.org/svn
-2010-12-10T10:48:16.342425Z
-4481
+2011-02-20T14:26:23.957459Z
+4891
jplang
@@ -32,10 +32,10 @@
-2011-03-03T11:05:22.000000Z
-cef2f70b94f09391acec6dea08160454
-2010-12-10T10:48:16.342425Z
-4481
+2011-03-03T11:40:18.000000Z
+2a7f0cd4a6b5d7f58a12567604697208
+2011-02-20T14:26:23.957459Z
+4891
jplang
has-props
@@ -58,5 +58,5 @@
-4418
+4469
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_customizable/lib/.svn/text-base/acts_as_customizable.rb.svn-base
--- a/vendor/plugins/acts_as_customizable/lib/.svn/text-base/acts_as_customizable.rb.svn-base Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_customizable/lib/.svn/text-base/acts_as_customizable.rb.svn-base Thu Mar 03 11:42:28 2011 +0000
@@ -71,6 +71,7 @@
custom_field_values.each do |custom_value|
custom_value.value = values[custom_value.custom_field_id.to_s] if values.has_key?(custom_value.custom_field_id.to_s)
end if values.is_a?(Hash)
+ self.custom_values = custom_field_values
end
def custom_field_values
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_customizable/lib/acts_as_customizable.rb
--- a/vendor/plugins/acts_as_customizable/lib/acts_as_customizable.rb Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_customizable/lib/acts_as_customizable.rb Thu Mar 03 11:42:28 2011 +0000
@@ -71,6 +71,7 @@
custom_field_values.each do |custom_value|
custom_value.value = values[custom_value.custom_field_id.to_s] if values.has_key?(custom_value.custom_field_id.to_s)
end if values.is_a?(Hash)
+ self.custom_values = custom_field_values
end
def custom_field_values
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_event/.svn/entries
--- a/vendor/plugins/acts_as_event/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_event/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_event
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_event/lib/.svn/entries
--- a/vendor/plugins/acts_as_event/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_event/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_event/lib
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_list/.svn/entries
--- a/vendor/plugins/acts_as_list/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_list/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_list
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_list/lib/.svn/entries
--- a/vendor/plugins/acts_as_list/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_list/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_list/lib
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_list/lib/active_record/.svn/entries
--- a/vendor/plugins/acts_as_list/lib/active_record/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_list/lib/active_record/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_list/lib/active_record
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_list/lib/active_record/acts/.svn/entries
--- a/vendor/plugins/acts_as_list/lib/active_record/acts/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_list/lib/active_record/acts/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_list/lib/active_record/acts
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_list/test/.svn/entries
--- a/vendor/plugins/acts_as_list/test/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_list/test/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_list/test
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_searchable/.svn/entries
--- a/vendor/plugins/acts_as_searchable/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_searchable/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_searchable
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_searchable/lib/.svn/entries
--- a/vendor/plugins/acts_as_searchable/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_searchable/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_searchable/lib
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_tree/.svn/entries
--- a/vendor/plugins/acts_as_tree/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_tree/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_tree/lib/.svn/entries
--- a/vendor/plugins/acts_as_tree/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_tree/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree/lib
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_tree/lib/active_record/.svn/entries
--- a/vendor/plugins/acts_as_tree/lib/active_record/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_tree/lib/active_record/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree/lib/active_record
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_tree/lib/active_record/acts/.svn/entries
--- a/vendor/plugins/acts_as_tree/lib/active_record/acts/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_tree/lib/active_record/acts/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree/lib/active_record/acts
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_tree/test/.svn/entries
--- a/vendor/plugins/acts_as_tree/test/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_tree/test/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree/test
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_tree/test/fixtures/.svn/entries
--- a/vendor/plugins/acts_as_tree/test/fixtures/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_tree/test/fixtures/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree/test/fixtures
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_versioned/.svn/entries
--- a/vendor/plugins/acts_as_versioned/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_versioned/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_versioned
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_versioned/lib/.svn/entries
--- a/vendor/plugins/acts_as_versioned/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_versioned/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_versioned/lib
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_versioned/test/.svn/entries
--- a/vendor/plugins/acts_as_versioned/test/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_versioned/test/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_versioned/test
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_versioned/test/fixtures/.svn/entries
--- a/vendor/plugins/acts_as_versioned/test/fixtures/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_versioned/test/fixtures/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_versioned/test/fixtures
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_versioned/test/fixtures/migrations/.svn/entries
--- a/vendor/plugins/acts_as_versioned/test/fixtures/migrations/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_versioned/test/fixtures/migrations/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_versioned/test/fixtures/migrations
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_watchable/.svn/entries
--- a/vendor/plugins/acts_as_watchable/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_watchable/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_watchable
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/acts_as_watchable/lib/.svn/entries
--- a/vendor/plugins/acts_as_watchable/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/acts_as_watchable/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_watchable/lib
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/awesome_nested_set/.svn/entries
--- a/vendor/plugins/awesome_nested_set/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/awesome_nested_set/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/awesome_nested_set/lib/.svn/entries
--- a/vendor/plugins/awesome_nested_set/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/awesome_nested_set/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/lib
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/awesome_nested_set/lib/awesome_nested_set/.svn/entries
--- a/vendor/plugins/awesome_nested_set/lib/awesome_nested_set/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/awesome_nested_set/lib/awesome_nested_set/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/lib/awesome_nested_set
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/awesome_nested_set/rails/.svn/entries
--- a/vendor/plugins/awesome_nested_set/rails/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/awesome_nested_set/rails/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/rails
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/awesome_nested_set/test/.svn/entries
--- a/vendor/plugins/awesome_nested_set/test/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/awesome_nested_set/test/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/test
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/awesome_nested_set/test/awesome_nested_set/.svn/entries
--- a/vendor/plugins/awesome_nested_set/test/awesome_nested_set/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/awesome_nested_set/test/awesome_nested_set/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/test/awesome_nested_set
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/awesome_nested_set/test/db/.svn/entries
--- a/vendor/plugins/awesome_nested_set/test/db/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/awesome_nested_set/test/db/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/test/db
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/awesome_nested_set/test/fixtures/.svn/entries
--- a/vendor/plugins/awesome_nested_set/test/fixtures/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/awesome_nested_set/test/fixtures/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/test/fixtures
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/classic_pagination/.svn/entries
--- a/vendor/plugins/classic_pagination/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/classic_pagination/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/classic_pagination
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/classic_pagination/lib/.svn/entries
--- a/vendor/plugins/classic_pagination/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/classic_pagination/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/classic_pagination/lib
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/classic_pagination/test/.svn/entries
--- a/vendor/plugins/classic_pagination/test/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/classic_pagination/test/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/classic_pagination/test
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/classic_pagination/test/fixtures/.svn/entries
--- a/vendor/plugins/classic_pagination/test/fixtures/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/classic_pagination/test/fixtures/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/classic_pagination/test/fixtures
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/.svn/entries
--- a/vendor/plugins/engines/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/generators/.svn/entries
--- a/vendor/plugins/engines/generators/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/generators/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/generators
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/generators/plugin_migration/.svn/entries
--- a/vendor/plugins/engines/generators/plugin_migration/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/generators/plugin_migration/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/generators/plugin_migration
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/generators/plugin_migration/templates/.svn/entries
--- a/vendor/plugins/engines/generators/plugin_migration/templates/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/generators/plugin_migration/templates/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/generators/plugin_migration/templates
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/lib/.svn/entries
--- a/vendor/plugins/engines/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/lib
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/lib/engines/.svn/entries
--- a/vendor/plugins/engines/lib/engines/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/lib/engines/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/lib/engines
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/lib/engines/plugin/.svn/entries
--- a/vendor/plugins/engines/lib/engines/plugin/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/lib/engines/plugin/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/lib/engines/plugin
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/lib/engines/rails_extensions/.svn/entries
--- a/vendor/plugins/engines/lib/engines/rails_extensions/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/lib/engines/rails_extensions/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/lib/engines/rails_extensions
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/tasks/.svn/entries
--- a/vendor/plugins/engines/tasks/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/tasks/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/tasks
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/.svn/entries
--- a/vendor/plugins/engines/test/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/app/.svn/entries
--- a/vendor/plugins/engines/test/app/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/app/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/app/controllers/.svn/entries
--- a/vendor/plugins/engines/test/app/controllers/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/app/controllers/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/controllers
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/app/controllers/namespace/.svn/entries
--- a/vendor/plugins/engines/test/app/controllers/namespace/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/app/controllers/namespace/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/controllers/namespace
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/app/helpers/.svn/entries
--- a/vendor/plugins/engines/test/app/helpers/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/app/helpers/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/helpers
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/app/models/.svn/entries
--- a/vendor/plugins/engines/test/app/models/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/app/models/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/models
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/app/things/.svn/entries
--- a/vendor/plugins/engines/test/app/things/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/app/things/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/things
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/app/views/.svn/entries
--- a/vendor/plugins/engines/test/app/views/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/app/views/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/app/views/app_and_plugin/.svn/entries
--- a/vendor/plugins/engines/test/app/views/app_and_plugin/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/app/views/app_and_plugin/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views/app_and_plugin
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/app/views/namespace/.svn/entries
--- a/vendor/plugins/engines/test/app/views/namespace/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/app/views/namespace/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views/namespace
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/app/views/namespace/app_and_plugin/.svn/entries
--- a/vendor/plugins/engines/test/app/views/namespace/app_and_plugin/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/app/views/namespace/app_and_plugin/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views/namespace/app_and_plugin
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/app/views/notify_mail/.svn/entries
--- a/vendor/plugins/engines/test/app/views/notify_mail/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/app/views/notify_mail/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views/notify_mail
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/app/views/plugin_mail/.svn/entries
--- a/vendor/plugins/engines/test/app/views/plugin_mail/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/app/views/plugin_mail/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views/plugin_mail
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/functional/.svn/entries
--- a/vendor/plugins/engines/test/functional/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/functional/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/functional
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/lib/.svn/entries
--- a/vendor/plugins/engines/test/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/lib
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/.svn/entries
--- a/vendor/plugins/engines/test/plugins/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/alpha_plugin/.svn/entries
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/alpha_plugin/app/.svn/entries
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/.svn/entries
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/.svn/entries
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/alpha_plugin/app/models/.svn/entries
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/models
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/alpha_plugin/app/views/.svn/entries
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin/.svn/entries
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin/.svn/entries
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts/.svn/entries
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/.svn/entries
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin/.svn/entries
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin/.svn/entries
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin/.svn/entries
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin/.svn/entries
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/alpha_plugin/lib/.svn/entries
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/lib
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/alpha_plugin/locales/.svn/entries
--- a/vendor/plugins/engines/test/plugins/alpha_plugin/locales/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/locales/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/locales
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/beta_plugin/.svn/entries
--- a/vendor/plugins/engines/test/plugins/beta_plugin/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/beta_plugin/app/.svn/entries
--- a/vendor/plugins/engines/test/plugins/beta_plugin/app/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/.svn/entries
--- a/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace/.svn/entries
--- a/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/beta_plugin/app/models/.svn/entries
--- a/vendor/plugins/engines/test/plugins/beta_plugin/app/models/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/models/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/models
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/beta_plugin/app/views/.svn/entries
--- a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/views/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/views
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/.svn/entries
--- a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin/.svn/entries
--- a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin/.svn/entries
--- a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/beta_plugin/locales/.svn/entries
--- a/vendor/plugins/engines/test/plugins/beta_plugin/locales/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/locales/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/locales
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/not_a_plugin/.svn/entries
--- a/vendor/plugins/engines/test/plugins/not_a_plugin/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/not_a_plugin/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/not_a_plugin
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/not_a_plugin/public/.svn/entries
--- a/vendor/plugins/engines/test/plugins/not_a_plugin/public/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/not_a_plugin/public/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/not_a_plugin/public
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_assets/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_assets/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_assets/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_assets/app/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_assets/app/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_assets/app/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/app
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_assets/app/controllers/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_assets/app/controllers/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_assets/app/controllers/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/app/controllers
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_assets/app/views/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_assets/app/views/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_assets/app/views/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/app/views
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_assets/app/views/assets/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_assets/app/views/assets/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_assets/app/views/assets/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/app/views/assets
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_assets/app/views/layouts/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_assets/app/views/layouts/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_assets/app/views/layouts/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/app/views/layouts
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_assets/public/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_assets/public/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_assets/public/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/public
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_assets/public/subfolder/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_assets/public/subfolder/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_assets/public/subfolder/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/public/subfolder
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_code_mixing/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_code_mixing/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_code_mixing/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_code_mixing
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_code_mixing/app/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_code_mixing/app/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_code_mixing/app/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_code_mixing/app
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_code_mixing/app/things/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_code_mixing/app/things/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_code_mixing/app/things/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_code_mixing/app/things
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_load_path/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_load_path/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_load_path/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_load_path
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_migration/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_migration/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_migration/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_migration
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_migration/db/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_migration/db/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_migration/db/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_migration/db
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_migration/db/migrate/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_migration/db/migrate/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_migration/db/migrate/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_migration/db/migrate
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_plugin_mailing/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_plugin_mailing/app/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_routing/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_routing/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_routing/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_routing
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_routing/app/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_routing/app/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_routing/app/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_routing/app
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_routing/app/controllers/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_routing/app/controllers/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_routing/app/controllers/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_routing/app/controllers
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_routing/config/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_routing/config/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_routing/config/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_routing/config
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_testing/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_testing/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_testing/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_testing
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_testing/app/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_testing/app/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_testing/app/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_testing/app
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_testing/test/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_testing/test/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_testing/test/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_testing/test
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_testing/test/fixtures/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_testing/test/fixtures/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_testing/test/fixtures/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_testing/test/fixtures
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/plugins/test_testing/test/unit/.svn/entries
--- a/vendor/plugins/engines/test/plugins/test_testing/test/unit/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/plugins/test_testing/test/unit/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_testing/test/unit
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/unit/.svn/entries
--- a/vendor/plugins/engines/test/unit/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/unit/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/unit
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/engines/test/unit/test_testing/.svn/entries
--- a/vendor/plugins/engines/test/unit/test_testing/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/engines/test/unit/test_testing/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/unit/test_testing
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/gravatar/.svn/entries
--- a/vendor/plugins/gravatar/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/gravatar/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/gravatar
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/gravatar/lib/.svn/entries
--- a/vendor/plugins/gravatar/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/gravatar/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/gravatar/lib
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/gravatar/spec/.svn/entries
--- a/vendor/plugins/gravatar/spec/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/gravatar/spec/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/gravatar/spec
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/open_id_authentication/.svn/entries
--- a/vendor/plugins/open_id_authentication/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/open_id_authentication/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/open_id_authentication/generators/.svn/entries
--- a/vendor/plugins/open_id_authentication/generators/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/open_id_authentication/generators/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/generators
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/.svn/entries
--- a/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/templates/.svn/entries
--- a/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/templates/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/templates/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/templates
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/.svn/entries
--- a/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/templates/.svn/entries
--- a/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/templates/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/templates/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/templates
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/open_id_authentication/lib/.svn/entries
--- a/vendor/plugins/open_id_authentication/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/open_id_authentication/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/lib
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/open_id_authentication/lib/open_id_authentication/.svn/entries
--- a/vendor/plugins/open_id_authentication/lib/open_id_authentication/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/open_id_authentication/lib/open_id_authentication/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/lib/open_id_authentication
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/open_id_authentication/tasks/.svn/entries
--- a/vendor/plugins/open_id_authentication/tasks/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/open_id_authentication/tasks/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/tasks
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/open_id_authentication/test/.svn/entries
--- a/vendor/plugins/open_id_authentication/test/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/open_id_authentication/test/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/test
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/prepend_engine_views/.svn/entries
--- a/vendor/plugins/prepend_engine_views/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/prepend_engine_views/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/prepend_engine_views
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/rfpdf/.svn/entries
--- a/vendor/plugins/rfpdf/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/rfpdf/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/rfpdf
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/rfpdf/lib/.svn/entries
--- a/vendor/plugins/rfpdf/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/rfpdf/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/rfpdf/lib
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/rfpdf/lib/rfpdf/.svn/entries
--- a/vendor/plugins/rfpdf/lib/rfpdf/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/rfpdf/lib/rfpdf/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/rfpdf/lib/rfpdf
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/rfpdf/test/.svn/entries
--- a/vendor/plugins/rfpdf/test/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/rfpdf/test/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/rfpdf/test
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/ruby-net-ldap-0.0.4/.svn/entries
--- a/vendor/plugins/ruby-net-ldap-0.0.4/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/ruby-net-ldap-0.0.4/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/ruby-net-ldap-0.0.4
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/ruby-net-ldap-0.0.4/lib/.svn/entries
--- a/vendor/plugins/ruby-net-ldap-0.0.4/lib/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/ruby-net-ldap-0.0.4/lib/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/ruby-net-ldap-0.0.4/lib/net/.svn/entries
--- a/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib/net
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap/.svn/entries
--- a/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap
http://redmine.rubyforge.org/svn
diff -r 8972b600f4fb -r 051f544170fe vendor/plugins/ruby-net-ldap-0.0.4/tests/.svn/entries
--- a/vendor/plugins/ruby-net-ldap-0.0.4/tests/.svn/entries Thu Mar 03 11:40:10 2011 +0000
+++ b/vendor/plugins/ruby-net-ldap-0.0.4/tests/.svn/entries Thu Mar 03 11:42:28 2011 +0000
@@ -1,7 +1,7 @@
10
dir
-4802
+4993
http://redmine.rubyforge.org/svn/trunk/vendor/plugins/ruby-net-ldap-0.0.4/tests
http://redmine.rubyforge.org/svn