Compare commits

...
15 Commits
Author SHA1 Message Date
Jean-Philippe Lang 689d533049 tagged version 2.2.3
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/tags/2.2.3@11368 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-12 19:52:36 +00:00
Jean-Philippe Lang d094dea0ec Merged r11366 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.2-stable@11367 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-12 18:08:38 +00:00
Jean-Philippe Lang 3a98a14250 Merged r11350 from trunk (#13126).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.2-stable@11365 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-12 18:04:49 +00:00
Jean-Philippe Lang ecef96a6b9 Merged r11332 from trunk (#13097).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.2-stable@11364 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-12 18:03:16 +00:00
Jean-Philippe Lang 0951522247 Merged r11331 and r11333 from trunk (#13075).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.2-stable@11363 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-12 18:01:15 +00:00
Jean-Philippe Lang 42cc2d322a Merged r11281 from trunk (#12979).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.2-stable@11362 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-12 17:57:46 +00:00
Jean-Philippe Lang 0367c323de Merged r11258 from trunk (#12930).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.2-stable@11361 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-12 17:56:39 +00:00
Toshi MARUYAMA 80be82ae50 Merged r11353 from trunk to 2.2-stable
upgrade Rails to 3.2.12.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.2-stable@11358 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-12 06:28:11 +00:00
Toshi MARUYAMA ebed927de5 2.2-stable: svn propset svn:eol-style native SVG source files (#12971)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.2-stable@11357 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-12 03:52:41 +00:00
Toshi MARUYAMA cbd069118a 2.2-stable: backout r11355 (back to Rails 3.2.11)
jruby-1.6.7 tests fail on CI server.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.2-stable@11356 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-12 02:49:25 +00:00
Toshi MARUYAMA a211d1be7d Merged r11353 from trunk to 2.2-stable
upgrade Rails to 3.2.12.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.2-stable@11355 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-12 01:46:21 +00:00
Toshi MARUYAMA 0a8e0a3bed Merged r11306 from trunk to 2.2-stable (#11987)
pdf: fix broken new line in table.

Contributed by Jun NAITOH.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.2-stable@11308 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-03 06:53:18 +00:00
Toshi MARUYAMA 58cf34dea5 Merged r11263 from trunk to 2.2-stable (#12987)
Russian translation for 2.2-stable updated.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.2-stable@11266 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-26 00:40:21 +00:00
Toshi MARUYAMA 594a7bde95 Merged r11246 from trunk to 2.2-stable (#12926, #12928)
Bulgarian translation for 2.2-stable updated by Ivan Cenov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.2-stable@11251 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-21 13:54:49 +00:00
Toshi MARUYAMA c5e257d82b Merged r11243 from trunk to 2.2-stable (#12922)
Spanish translation for 2.2-stable updated by Jorge López.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.2-stable@11245 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-21 11:50:27 +00:00
20 changed files with 2659 additions and 2630 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
source 'http://rubygems.org' source 'http://rubygems.org'
gem 'rails', '3.2.11' gem 'rails', '3.2.12'
gem "jquery-rails", "~> 2.0.2" gem "jquery-rails", "~> 2.0.2"
gem "i18n", "~> 0.6.0" gem "i18n", "~> 0.6.0"
gem "coderay", "~> 1.0.6" gem "coderay", "~> 1.0.6"
+4 -3
View File
@@ -704,10 +704,11 @@ module ApplicationHelper
# identifier:document:"Some document" # identifier:document:"Some document"
# identifier:version:1.0.0 # identifier:version:1.0.0
# identifier:source:some/file # identifier:source:some/file
def parse_redmine_links(text, project, obj, attr, only_path, options) def parse_redmine_links(text, default_project, obj, attr, only_path, options)
text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(([a-z0-9\-_]+):)?(attachment|document|version|forum|news|message|project|commit|source|export)?(((#)|((([a-z0-9\-]+)\|)?(r)))((\d+)((#note)?-(\d+))?)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]][^A-Za-z0-9_/])|,|\s|\]|<|$)}) do |m| text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(([a-z0-9\-_]+):)?(attachment|document|version|forum|news|message|project|commit|source|export)?(((#)|((([a-z0-9\-_]+)\|)?(r)))((\d+)((#note)?-(\d+))?)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]][^A-Za-z0-9_/])|,|\s|\]|<|$)}) do |m|
leading, esc, project_prefix, project_identifier, prefix, repo_prefix, repo_identifier, sep, identifier, comment_suffix, comment_id = $1, $2, $3, $4, $5, $10, $11, $8 || $12 || $18, $14 || $19, $15, $17 leading, esc, project_prefix, project_identifier, prefix, repo_prefix, repo_identifier, sep, identifier, comment_suffix, comment_id = $1, $2, $3, $4, $5, $10, $11, $8 || $12 || $18, $14 || $19, $15, $17
link = nil link = nil
project = default_project
if project_identifier if project_identifier
project = Project.visible.find_by_identifier(project_identifier) project = Project.visible.find_by_identifier(project_identifier)
end end
@@ -793,7 +794,7 @@ module ApplicationHelper
when 'commit', 'source', 'export' when 'commit', 'source', 'export'
if project if project
repository = nil repository = nil
if name =~ %r{^(([a-z0-9\-]+)\|)(.+)$} if name =~ %r{^(([a-z0-9\-_]+)\|)(.+)$}
repo_prefix, repo_identifier, name = $1, $2, $3 repo_prefix, repo_identifier, name = $1, $2, $3
repository = project.repositories.detect {|repo| repo.identifier == repo_identifier} repository = project.repositories.detect {|repo| repo.identifier == repo_identifier}
else else
+4 -4
View File
@@ -87,14 +87,14 @@ module QueriesHelper
format_time(value) format_time(value)
when 'Date' when 'Date'
format_date(value) format_date(value)
when 'Fixnum', 'Float' when 'Fixnum'
if column.name == :done_ratio if column.name == :done_ratio
progress_bar(value, :width => '80px') progress_bar(value, :width => '80px')
elsif column.name == :spent_hours
sprintf "%.2f", value
else else
h(value.to_s) value.to_s
end end
when 'Float'
sprintf "%.2f", value
when 'User' when 'User'
link_to_user value link_to_user value
when 'Project' when 'Project'
+3 -1
View File
@@ -731,7 +731,7 @@ class Project < ActiveRecord::Base
def copy_wiki(project) def copy_wiki(project)
# Check that the source project has a wiki first # Check that the source project has a wiki first
unless project.wiki.nil? unless project.wiki.nil?
self.wiki ||= Wiki.new wiki = self.wiki || Wiki.new
wiki.attributes = project.wiki.attributes.dup.except("id", "project_id") wiki.attributes = project.wiki.attributes.dup.except("id", "project_id")
wiki_pages_map = {} wiki_pages_map = {}
project.wiki.pages.each do |page| project.wiki.pages.each do |page|
@@ -743,6 +743,8 @@ class Project < ActiveRecord::Base
wiki.pages << new_wiki_page wiki.pages << new_wiki_page
wiki_pages_map[page.id] = new_wiki_page wiki_pages_map[page.id] = new_wiki_page
end end
self.wiki = wiki
wiki.save wiki.save
# Reproduce page hierarchy # Reproduce page hierarchy
project.wiki.pages.each do |page| project.wiki.pages.each do |page|
+1 -1
View File
@@ -111,7 +111,7 @@
<li><%= bulk_update_custom_field_context_menu_link(field, text, value || text) %></li> <li><%= bulk_update_custom_field_context_menu_link(field, text, value || text) %></li>
<% end %> <% end %>
<% unless field.is_required? %> <% unless field.is_required? %>
<li><%= bulk_update_custom_field_context_menu_link(field, l(:label_none), '') %></li> <li><%= bulk_update_custom_field_context_menu_link(field, l(:label_none), '__none__') %></li>
<% end %> <% end %>
</ul> </ul>
</li> </li>
+1 -1
View File
@@ -833,7 +833,7 @@ bg:
label_generate_key: Генериране на ключ label_generate_key: Генериране на ключ
label_issue_watchers: Наблюдатели label_issue_watchers: Наблюдатели
label_example: Пример label_example: Пример
label_display: Display label_display: Показване
label_sort: Сортиране label_sort: Сортиране
label_ascending: Нарастващ label_ascending: Нарастващ
label_descending: Намаляващ label_descending: Намаляващ
+66 -66
View File
@@ -1037,84 +1037,84 @@ es:
description_selected_columns: Columnas seleccionadas description_selected_columns: Columnas seleccionadas
label_parent_revision: Padre label_parent_revision: Padre
label_child_revision: Hijo label_child_revision: Hijo
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues setting_default_issue_start_date_to_creation_date: Utilizar la fecha actual como fecha de inicio para nuevas peticiones
button_edit_section: Edit this section button_edit_section: Editar esta sección
setting_repositories_encodings: Attachments and repositories encodings setting_repositories_encodings: Codificación de adjuntos y repositorios
description_all_columns: Todas las columnas description_all_columns: Todas las columnas
button_export: Exportar button_export: Exportar
label_export_options: "%{export_format} opciones de exportación" label_export_options: "%{export_format} opciones de exportación"
error_attachment_too_big: Este fichero no se puede adjuntar porque excede el tamaño máximo de fichero (%{max_size}) error_attachment_too_big: Este fichero no se puede adjuntar porque excede el tamaño máximo de fichero (%{max_size})
notice_failed_to_save_time_entries: "Error al guarda %{count} entradas de tiempo de las %{total} seleccionadas: %{ids}." notice_failed_to_save_time_entries: "Error al guardar %{count} entradas de tiempo de las %{total} seleccionadas: %{ids}."
label_x_issues: label_x_issues:
zero: 0 petición zero: 0 petición
one: 1 petición one: 1 petición
other: "%{count} peticiones" other: "%{count} peticiones"
label_repository_new: New repository label_repository_new: Nuevo repositorio
field_repository_is_default: Main repository field_repository_is_default: Repositorio principal
label_copy_attachments: Copy attachments label_copy_attachments: Copiar adjuntos
label_item_position: "%{position}/%{count}" label_item_position: "%{position}/%{count}"
label_completed_versions: Completed versions label_completed_versions: Versiones completadas
text_project_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed. text_project_identifier_info: Solo se permiten letras en minúscula (a-z), números, guiones y barras bajas.<br />Una vez guardado, el identificador no se puede cambiar.
field_multiple: Multiple values field_multiple: Valores múltiples
setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed setting_commit_cross_project_ref: Permitir referenciar y resolver peticiones de todos los demás proyectos
text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes text_issue_conflict_resolution_add_notes: Añadir mis notas y descartar mis otros cambios
text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten) text_issue_conflict_resolution_overwrite: Aplicar mis campos de todas formas (las notas anteriores se mantendrán pero algunos cambios podrían ser sobreescritos)
notice_issue_update_conflict: The issue has been updated by an other user while you were editing it. notice_issue_update_conflict: La petición ha sido actualizada por otro usuario mientras la editaba.
text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link} text_issue_conflict_resolution_cancel: Descartar todos mis cambios y mostrar de nuevo %{link}
permission_manage_related_issues: Manage related issues permission_manage_related_issues: Gestionar peticiones relacionadas
field_auth_source_ldap_filter: LDAP filter field_auth_source_ldap_filter: Filtro LDAP
label_search_for_watchers: Search for watchers to add label_search_for_watchers: Buscar seguidores para añadirlos
notice_account_deleted: Your account has been permanently deleted. notice_account_deleted: Su cuenta ha sido eliminada
setting_unsubscribe: Allow users to delete their own account setting_unsubscribe: Permitir a los usuarios borrar sus propias cuentas
button_delete_my_account: Delete my account button_delete_my_account: Borrar mi cuenta
text_account_destroy_confirmation: |- text_account_destroy_confirmation: |-
Are you sure you want to proceed? ¿Está seguro de querer proceder?
Your account will be permanently deleted, with no way to reactivate it. Su cuenta quedará borrada permanentemente, sin la posibilidad de reactivarla.
error_session_expired: Your session has expired. Please login again. error_session_expired: Su sesión ha expirado. Por favor, vuelva a identificarse.
text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours." text_session_expiration_settings: "Advertencia: el cambio de estas opciones podría hacer expirar las sesiones activas, incluyendo la suya."
setting_session_lifetime: Session maximum lifetime setting_session_lifetime: Tiempo de vida máximo de las sesiones
setting_session_timeout: Session inactivity timeout setting_session_timeout: Tiempo máximo de inactividad de las sesiones
label_session_expiration: Session expiration label_session_expiration: Expiración de sesiones
permission_close_project: Close / reopen the project permission_close_project: Cerrar / reabrir el proyecto
label_show_closed_projects: View closed projects label_show_closed_projects: Ver proyectos cerrados
button_close: Close button_close: Cerrar
button_reopen: Reopen button_reopen: Reabrir
project_status_active: active project_status_active: activo
project_status_closed: closed project_status_closed: cerrado
project_status_archived: archived project_status_archived: archivado
text_project_closed: This project is closed and read-only. text_project_closed: Este proyecto está cerrado y es de sólo lectura
notice_user_successful_create: User %{id} created. notice_user_successful_create: Usuario %{id} creado.
field_core_fields: Standard fields field_core_fields: Campos básicos
field_timeout: Timeout (in seconds) field_timeout: Tiempo de inactividad (en segundos)
setting_thumbnails_enabled: Display attachment thumbnails setting_thumbnails_enabled: Mostrar miniaturas de los adjuntos
setting_thumbnails_size: Thumbnails size (in pixels) setting_thumbnails_size: Tamaño de las miniaturas (en píxeles)
label_status_transitions: Status transitions label_status_transitions: Transiciones de estado
label_fields_permissions: Fields permissions label_fields_permissions: Permisos sobre los campos
label_readonly: Read-only label_readonly: Sólo lectura
label_required: Required label_required: Requerido
text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed. text_repository_identifier_info: Solo se permiten letras en minúscula (a-z), números, guiones y barras bajas.<br />Una vez guardado, el identificador no se puede cambiar.
field_board_parent: Parent forum field_board_parent: Foro padre
label_attribute_of_project: Project's %{name} label_attribute_of_project: "%{name} del proyecto"
label_attribute_of_author: Author's %{name} label_attribute_of_author: "%{name} del autor"
label_attribute_of_assigned_to: Assignee's %{name} label_attribute_of_assigned_to: "%{name} de la persona asignada"
label_attribute_of_fixed_version: Target version's %{name} label_attribute_of_fixed_version: "%{name} de la versión indicada"
label_copy_subtasks: Copy subtasks label_copy_subtasks: Copiar subtareas
label_copied_to: copied to label_copied_to: copiada a
label_copied_from: copied from label_copied_from: copiada desde
label_any_issues_in_project: any issues in project label_any_issues_in_project: cualquier petición del proyecto
label_any_issues_not_in_project: any issues not in project label_any_issues_not_in_project: cualquier petición que no sea del proyecto
field_private_notes: Private notes field_private_notes: Notas privadas
permission_view_private_notes: View private notes permission_view_private_notes: Ver notas privadas
permission_set_notes_private: Set notes as private permission_set_notes_private: Poner notas como privadas
label_no_issues_in_project: no issues in project label_no_issues_in_project: no hay peticiones en el proyecto
label_any: todos label_any: todos
label_last_n_weeks: last %{count} weeks label_last_n_weeks: en las últimas %{count} semanas
setting_cross_project_subtasks: Allow cross-project subtasks setting_cross_project_subtasks: Permitir subtareas cruzadas entre proyectos
label_cross_project_descendants: Con proyectos hijo label_cross_project_descendants: Con proyectos hijo
label_cross_project_tree: Con el árbol del proyecto label_cross_project_tree: Con el árbol del proyecto
label_cross_project_hierarchy: Con la jerarquía del proyecto label_cross_project_hierarchy: Con la jerarquía del proyecto
label_cross_project_system: Con todos los proyectos label_cross_project_system: Con todos los proyectos
button_hide: Hide button_hide: Ocultar
setting_non_working_week_days: Non-working days setting_non_working_week_days: Días no laborables
label_in_the_next_days: in the next label_in_the_next_days: en los próximos
label_in_the_past_days: in the past label_in_the_past_days: en los anteriores
+1 -1
View File
@@ -1147,7 +1147,7 @@ ru:
button_delete_my_account: "Удалить мою учетную запись" button_delete_my_account: "Удалить мою учетную запись"
text_account_destroy_confirmation: "Ваша учетная запись будет полностью удалена без возможности восстановления.\nВы уверены, что хотите продолжить?" text_account_destroy_confirmation: "Ваша учетная запись будет полностью удалена без возможности восстановления.\nВы уверены, что хотите продолжить?"
error_session_expired: Срок вашей сессии истек. Пожалуйста войдите еще раз error_session_expired: Срок вашей сессии истек. Пожалуйста войдите еще раз
text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours." text_session_expiration_settings: "Внимание! Изменение этих настроек может привести к завершению текущих сессий, включая вашу."
setting_session_lifetime: Максимальная продолжительность сессии setting_session_lifetime: Максимальная продолжительность сессии
setting_session_timeout: Таймут сессии setting_session_timeout: Таймут сессии
label_session_expiration: Срок истечения сессии label_session_expiration: Срок истечения сессии
+13
View File
@@ -4,6 +4,19 @@ Redmine - project management software
Copyright (C) 2006-2012 Jean-Philippe Lang Copyright (C) 2006-2012 Jean-Philippe Lang
http://www.redmine.org/ http://www.redmine.org/
== 2013-02-12 v2.2.3
* Upgrade to Rails 3.2.12
* Defect #11987: pdf: Broken new line in table
* Defect #12930: 404 Error when referencing different project source files in the wiki syntax
* Defect #12979: Wiki link syntax commit:repo_a:abcd doesn't work
* Defect #13075: Can't clear custom field value through context menu in the issue list
* Defect #13097: Project copy fails when wiki module is disabled
* Defect #13126: Issue view: estimated time vs. spent time
* Patch #12922: Update Spanish translation
* Patch #12928: Bulgarian translation for 2.2-stable
* Patch #12987: Russian translation for 2.2-stable
== 2013-01-20 v2.2.2 == 2013-01-20 v2.2.2
* Defect #7510: Link to attachment should return latest attachment * Defect #7510: Link to attachment should return latest attachment
+4
View File
@@ -4002,6 +4002,10 @@ class TCPDF
@quote_page[@quote_count] = @page; @quote_page[@quote_count] = @page;
@quote_count += 1 @quote_count += 1
when 'br' when 'br'
if @tdbegin
@tdtext << "\n"
return
end
Ln(); Ln();
if (@li_spacer.length > 0) if (@li_spacer.length > 0)
+1 -1
View File
@@ -4,7 +4,7 @@ module Redmine
module VERSION #:nodoc: module VERSION #:nodoc:
MAJOR = 2 MAJOR = 2
MINOR = 2 MINOR = 2
TINY = 2 TINY = 3
# Branch values: # Branch values:
# * official release: nil # * official release: nil
@@ -132,7 +132,7 @@ class ContextMenusControllerTest < ActionController::TestCase
:attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=Foo"} :attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=Foo"}
assert_tag 'a', assert_tag 'a',
:content => 'none', :content => 'none',
:attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D="} :attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=__none__"}
end end
def test_context_menu_should_not_include_null_value_for_required_custom_fields def test_context_menu_should_not_include_null_value_for_required_custom_fields
+12 -3
View File
@@ -347,6 +347,15 @@ RAW
to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text), "#{text} failed" } to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text), "#{text} failed" }
end end
def test_redmine_links_with_a_different_project_before_current_project
vp1 = Version.generate!(:project_id => 1, :name => '1.4.4')
vp3 = Version.generate!(:project_id => 3, :name => '1.4.4')
@project = Project.find(3)
assert_equal %(<p><a href="/versions/#{vp1.id}" class="version">1.4.4</a> <a href="/versions/#{vp3.id}" class="version">1.4.4</a></p>),
textilizable("ecookbook:version:1.4.4 version:1.4.4")
end
def test_escaped_redmine_links_should_not_be_parsed def test_escaped_redmine_links_should_not_be_parsed
to_test = [ to_test = [
'#3.', '#3.',
@@ -394,14 +403,14 @@ RAW
end end
def test_multiple_repositories_redmine_links def test_multiple_repositories_redmine_links
svn = Repository::Subversion.create!(:project_id => 1, :identifier => 'svn1', :url => 'file:///foo/hg') svn = Repository::Subversion.create!(:project_id => 1, :identifier => 'svn_repo-1', :url => 'file:///foo/hg')
Changeset.create!(:repository => svn, :committed_on => Time.now, :revision => '123') Changeset.create!(:repository => svn, :committed_on => Time.now, :revision => '123')
hg = Repository::Mercurial.create!(:project_id => 1, :identifier => 'hg1', :url => '/foo/hg') hg = Repository::Mercurial.create!(:project_id => 1, :identifier => 'hg1', :url => '/foo/hg')
Changeset.create!(:repository => hg, :committed_on => Time.now, :revision => '123', :scmid => 'abcd') Changeset.create!(:repository => hg, :committed_on => Time.now, :revision => '123', :scmid => 'abcd')
changeset_link = link_to('r2', {:controller => 'repositories', :action => 'revision', :id => 'ecookbook', :rev => 2}, changeset_link = link_to('r2', {:controller => 'repositories', :action => 'revision', :id => 'ecookbook', :rev => 2},
:class => 'changeset', :title => 'This commit fixes #1, #2 and references #1 & #3') :class => 'changeset', :title => 'This commit fixes #1, #2 and references #1 & #3')
svn_changeset_link = link_to('svn1|r123', {:controller => 'repositories', :action => 'revision', :id => 'ecookbook', :repository_id => 'svn1', :rev => 123}, svn_changeset_link = link_to('svn_repo-1|r123', {:controller => 'repositories', :action => 'revision', :id => 'ecookbook', :repository_id => 'svn_repo-1', :rev => 123},
:class => 'changeset', :title => '') :class => 'changeset', :title => '')
hg_changeset_link = link_to('hg1|abcd', {:controller => 'repositories', :action => 'revision', :id => 'ecookbook', :repository_id => 'hg1', :rev => 'abcd'}, hg_changeset_link = link_to('hg1|abcd', {:controller => 'repositories', :action => 'revision', :id => 'ecookbook', :repository_id => 'hg1', :rev => 'abcd'},
:class => 'changeset', :title => '') :class => 'changeset', :title => '')
@@ -411,7 +420,7 @@ RAW
to_test = { to_test = {
'r2' => changeset_link, 'r2' => changeset_link,
'svn1|r123' => svn_changeset_link, 'svn_repo-1|r123' => svn_changeset_link,
'invalid|r123' => 'invalid|r123', 'invalid|r123' => 'invalid|r123',
'commit:hg1|abcd' => hg_changeset_link, 'commit:hg1|abcd' => hg_changeset_link,
'commit:invalid|abcd' => 'commit:invalid|abcd', 'commit:invalid|abcd' => 'commit:invalid|abcd',