Compare commits

..
1 Commits
Author SHA1 Message Date
Jean-Philippe Lang 54eecf54ff tagged version 1.4.5
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/tags/1.4.5@10835 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-17 13:25:19 +00:00
10 changed files with 76 additions and 146 deletions
+2 -2
View File
@@ -1,6 +1,6 @@
source :rubygems source :rubygems
gem "rails", "2.3.15" gem "rails", "2.3.14"
gem "i18n", "~> 0.4.2" gem "i18n", "~> 0.4.2"
gem "coderay", "~> 1.0.6" gem "coderay", "~> 1.0.6"
gem "fastercsv", "~> 1.5.0", :platforms => [:mri_18, :mingw_18, :jruby] gem "fastercsv", "~> 1.5.0", :platforms => [:mri_18, :mingw_18, :jruby]
@@ -39,7 +39,7 @@ end
platforms :mri_18, :mingw_18 do platforms :mri_18, :mingw_18 do
group :mysql do group :mysql do
gem "mysql", "~> 2.8.1" gem "mysql"
end end
end end
-4
View File
@@ -415,9 +415,5 @@ class Repository < ActiveRecord::Base
connection.delete("DELETE FROM #{ci} WHERE #{ci}.changeset_id IN (SELECT #{cs}.id FROM #{cs} WHERE #{cs}.repository_id = #{id})") connection.delete("DELETE FROM #{ci} WHERE #{ci}.changeset_id IN (SELECT #{cs}.id FROM #{cs} WHERE #{cs}.repository_id = #{id})")
connection.delete("DELETE FROM #{cp} WHERE #{cp}.changeset_id IN (SELECT #{cs}.id FROM #{cs} WHERE #{cs}.repository_id = #{id})") connection.delete("DELETE FROM #{cp} WHERE #{cp}.changeset_id IN (SELECT #{cs}.id FROM #{cs} WHERE #{cs}.repository_id = #{id})")
connection.delete("DELETE FROM #{cs} WHERE #{cs}.repository_id = #{id}") connection.delete("DELETE FROM #{cs} WHERE #{cs}.repository_id = #{id}")
clear_extra_info_of_changesets
end
def clear_extra_info_of_changesets
end end
end end
-11
View File
@@ -255,15 +255,4 @@ class Repository::Git < Repository
:order => 'committed_on DESC' :order => 'committed_on DESC'
) )
end end
def clear_extra_info_of_changesets
return if extra_info.nil?
v = extra_info["extra_report_last_commit"]
write_attribute(:extra_info, nil)
h = {}
h["extra_report_last_commit"] = v
merge_extra_info(h)
self.save
end
private :clear_extra_info_of_changesets
end end
+3 -8
View File
@@ -116,19 +116,14 @@ module ActionController
end end
end end
# Fix for CVE-2013-0155 # CVE-2012-2695
# https://groups.google.com/d/msg/rubyonrails-security/c7jT-EeN9eI/L0u4e87zYGMJ # https://groups.google.com/group/rubyonrails-security/browse_thread/thread/9782f44c4540cf59
# https://groups.google.com/d/msg/rubyonrails-security/kKGNeMrnmiY/r2yM7xy-G48J
# https://github.com/rails/rails/blob/v2.3.15/activerecord/lib/active_record/base.rb#L2340
module ActiveRecord module ActiveRecord
class Base class Base
class << self class << self
protected def sanitize_sql_hash_for_conditions(attrs, default_table_name = quoted_table_name, top_level = true)
def self.sanitize_sql_hash_for_conditions(attrs, default_table_name = quoted_table_name, top_level = true)
attrs = expand_hash_conditions_for_aggregates(attrs) attrs = expand_hash_conditions_for_aggregates(attrs)
return '1 = 2' if !top_level && attrs.is_a?(Hash) && attrs.empty?
conditions = attrs.map do |attr, value| conditions = attrs.map do |attr, value|
table_name = default_table_name table_name = default_table_name
+28 -31
View File
@@ -49,7 +49,7 @@ nl:
one: "ongeveer 1 uur" one: "ongeveer 1 uur"
other: "ongeveer %{count} uren" other: "ongeveer %{count} uren"
x_hours: x_hours:
one: "1 uur" one: "1 hour"
other: "%{count} hours" other: "%{count} hours"
x_days: x_days:
one: "1 dag" one: "1 dag"
@@ -990,37 +990,34 @@ nl:
description_all_columns: Alle kolommen description_all_columns: Alle kolommen
button_export: Exporteren button_export: Exporteren
label_export_options: "%{export_format} export opties" label_export_options: "%{export_format} export opties"
error_attachment_too_big: Dit bestand kan niet worden geupload omdat het de maximaal toegestane grootte overschrijd (%{max_size}) error_attachment_too_big: This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size})
notice_failed_to_save_time_entries: "Opslaan gefaald voor %{count} tijdsnotatie(s) van %{total} geselecteerde: %{ids}." notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}."
label_x_issues: label_x_issues:
zero: 0 incidenten zero: 0 issue
one: 1 incidenten one: 1 issue
other: "%{count} incidenten" other: "%{count} issues"
label_repository_new: Nieuw repository label_repository_new: New repository
field_repository_is_default: Hoofd repository field_repository_is_default: Main repository
label_copy_attachments: Copieer bijlage(n) label_copy_attachments: Copy attachments
label_item_position: "%{position}/%{count}" label_item_position: "%{position}/%{count}"
label_completed_versions: Versies compleet label_completed_versions: Completed versions
field_multiple: Meerdere waardes field_multiple: Multiple values
setting_commit_cross_project_ref: Sta toe om incidenten van alle projecten te refereren en oplossen setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed
text_issue_conflict_resolution_add_notes: Voeg mijn notities toe en annuleer andere wijzigingen text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes
text_issue_conflict_resolution_overwrite: Voeg mijn wijzigingen alsnog toe (voorgaande notities worden bewaard, maar sommige kunnen overschreden worden) text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten)
notice_issue_update_conflict: Dit incident is reeds geupdate door een andere gebruiker terwijl jij bezig was notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
text_issue_conflict_resolution_cancel: Annuleer mijn wijzigingen en geef pagina opnieuw weer %{link} text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
permission_manage_related_issues: Beheer gerelateerde incidenten permission_manage_related_issues: Manage related issues
field_ldap_filter: LDAP filter field_ldap_filter: LDAP filter
label_search_for_watchers: Search for watchers to add
label_search_for_watchers: Zoek om monitoorders toe te voegen notice_account_deleted: Your account has been permanently deleted.
notice_account_deleted: Uw account is permanent verwijderd setting_unsubscribe: Allow users to delete their own account
setting_unsubscribe: Sta gebruikers toe hun eigen account te verwijderen button_delete_my_account: Delete my account
button_delete_my_account: Verwijder mijn account
text_account_destroy_confirmation: |- text_account_destroy_confirmation: |-
Weet u zeker dat u door wilt gaan? Are you sure you want to proceed?
Uw account wordt permanent verwijderd zonder mogelijkheid deze te heractiveren. Your account will be permanently deleted, with no way to reactivate it.
error_session_expired: Uw sessie is verlopen. U dient opnieuw in te loggen. error_session_expired: Your session has expired. Please login again.
text_session_expiration_settings: "Waarschuwing: door deze instelling te wijzigen kan sessies laten verlopen inclusief de uwe" text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours."
setting_session_lifetime: Maximale sessieduur setting_session_lifetime: Session maximum lifetime
setting_session_timeout: Sessie inactiviteit timeout setting_session_timeout: Session inactivity timeout
label_session_expiration: Sessie verlopen label_session_expiration: Session expiration
+35 -35
View File
@@ -971,61 +971,61 @@
setting_issue_group_assignment: Tillat tildeling av saker til grupper setting_issue_group_assignment: Tillat tildeling av saker til grupper
label_diff: diff label_diff: diff
description_query_sort_criteria_direction: Sorteringsretning description_query_sort_criteria_direction: Sort direction
description_project_scope: Search scope description_project_scope: Search scope
description_filter: Filter description_filter: Filter
description_user_mail_notification: Mail notification settings description_user_mail_notification: Mail notification settings
description_date_from: Oppgi startdato description_date_from: Enter start date
description_message_content: Meldingsinnhold description_message_content: Message content
description_available_columns: Tilgjengelige kolonner description_available_columns: Available Columns
description_date_range_interval: Velg datointervall ved å spesifisere start- og sluttdato description_date_range_interval: Choose range by selecting start and end date
description_issue_category_reassign: Choose issue category description_issue_category_reassign: Choose issue category
description_search: Søkefelt description_search: Searchfield
description_notes: Notes description_notes: Notes
description_date_range_list: Choose range from list description_date_range_list: Choose range from list
description_choose_project: Prosjekter description_choose_project: Projects
description_date_to: Oppgi sluttdato description_date_to: Enter end date
description_query_sort_criteria_attribute: Sort attribute description_query_sort_criteria_attribute: Sort attribute
description_wiki_subpages_reassign: Velg ny overordnet side description_wiki_subpages_reassign: Choose new parent page
description_selected_columns: Valgte kolonner description_selected_columns: Selected Columns
label_parent_revision: Overordnet label_parent_revision: Parent
label_child_revision: Underordnet label_child_revision: Child
error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size. error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size.
setting_default_issue_start_date_to_creation_date: Bruk dagens dato som startdato for nye saker setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
button_edit_section: Rediger denne seksjonen button_edit_section: Edit this section
setting_repositories_encodings: Attachments and repositories encodings setting_repositories_encodings: Attachments and repositories encodings
description_all_columns: Alle kolonnene description_all_columns: All Columns
button_export: Eksporter button_export: Export
label_export_options: "%{export_format} eksportvalg" label_export_options: "%{export_format} export options"
error_attachment_too_big: Filen overstiger maksimum filstørrelse (%{max_size}) og kan derfor ikke lastes opp error_attachment_too_big: This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size})
notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}." notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}."
label_x_issues: label_x_issues:
zero: 0 sak zero: 0 sak
one: 1 sak one: 1 sak
other: "%{count} saker" other: "%{count} saker"
label_repository_new: Nytt depot label_repository_new: New repository
field_repository_is_default: Hoveddepot field_repository_is_default: Main repository
label_copy_attachments: Kopier vedlegg label_copy_attachments: Copy attachments
label_item_position: "%{position}/%{count}" label_item_position: "%{position}/%{count}"
label_completed_versions: Completed versions label_completed_versions: Completed versions
text_project_identifier_info: Kun små bokstaver (a-z), tall, bindestrek (-) og "underscore" (_) er tillatt.<br />Etter lagring er det ikke mulig å gjøre endringer. text_project_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
field_multiple: Flere verdier field_multiple: Multiple values
setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed
text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes
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: Apply my changes anyway (previous notes will be kept but some changes may be overwritten)
notice_issue_update_conflict: Saken ble oppdatert av en annen bruker mens du redigerte den. notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
text_issue_conflict_resolution_cancel: Forkast alle endringen mine og vis %{link} på nytt text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
permission_manage_related_issues: Manage related issues permission_manage_related_issues: Manage related issues
field_ldap_filter: LDAP filter field_ldap_filter: LDAP filter
label_search_for_watchers: Search for watchers to add label_search_for_watchers: Search for watchers to add
notice_account_deleted: Din konto er ugjenkallelig slettet. notice_account_deleted: Your account has been permanently deleted.
setting_unsubscribe: Tillat brukere å slette sin egen konto setting_unsubscribe: Allow users to delete their own account
button_delete_my_account: Slett kontoen min button_delete_my_account: Delete my account
text_account_destroy_confirmation: |- text_account_destroy_confirmation: |-
Er du sikker på at du ønsker å fortsette? Are you sure you want to proceed?
Kontoen din vil bli ugjenkallelig slettet uten mulighet for å reaktiveres igjen. Your account will be permanently deleted, with no way to reactivate it.
error_session_expired: Økten har gått ut på tid. Vennligst logg på igjen. error_session_expired: Your session has expired. Please login again.
text_session_expiration_settings: "Advarsel: ved å endre disse innstillingene kan aktive økter gå ut på tid, inkludert din egen." text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours."
setting_session_lifetime: Øktenes makslengde setting_session_lifetime: Session maximum lifetime
setting_session_timeout: Økten er avsluttet på grunn av inaktivitet setting_session_timeout: Session inactivity timeout
label_session_expiration: Økten er avsluttet label_session_expiration: Session expiration
+7 -7
View File
@@ -117,8 +117,8 @@ ru:
many: "около %{count} часов" many: "около %{count} часов"
other: "около %{count} часа" other: "около %{count} часа"
x_hours: x_hours:
one: "1 час" one: "1 hour"
other: "%{count} часов" other: "%{count} hours"
x_days: x_days:
one: "%{count} день" one: "%{count} день"
few: "%{count} дня" few: "%{count} дня"
@@ -1121,7 +1121,7 @@ ru:
button_export: Экспорт button_export: Экспорт
label_export_options: "%{export_format} параметры экспорта" label_export_options: "%{export_format} параметры экспорта"
error_attachment_too_big: Этот файл нельзя загрузить из-за превышения максимального размера файла (%{max_size}) error_attachment_too_big: Этот файл нельзя загрузить из-за превышения максимального размера файла (%{max_size})
notice_failed_to_save_time_entries: "Невозможно сохранить %{count} затраченное время для %{total} выбранных: %{ids}." notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}."
label_x_issues: label_x_issues:
zero: 0 Задач zero: 0 Задач
one: 1 Задача one: 1 Задача
@@ -1147,8 +1147,8 @@ ru:
setting_unsubscribe: "Разрешить пользователям удалять свои учетные записи" setting_unsubscribe: "Разрешить пользователям удалять свои учетные записи"
button_delete_my_account: "Удалить мою учетную запись" button_delete_my_account: "Удалить мою учетную запись"
text_account_destroy_confirmation: "Ваша учетная запись будет полностью удалена без возможности восстановления.\nВы уверены, что хотите продолжить?" text_account_destroy_confirmation: "Ваша учетная запись будет полностью удалена без возможности восстановления.\nВы уверены, что хотите продолжить?"
error_session_expired: Срок вашей сессии истек. Пожалуйста войдите еще раз error_session_expired: Your session has expired. Please login again.
text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours." text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours."
setting_session_lifetime: Максимальная продолжительность сессии setting_session_lifetime: Session maximum lifetime
setting_session_timeout: Таймут сессии setting_session_timeout: Session inactivity timeout
label_session_expiration: Срок истечения сессии label_session_expiration: Session expiration
-13
View File
@@ -4,19 +4,6 @@ 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-01-20 v1.4.7
* Patch for Rails vulnerability CVE-2013-0155
== 2013-01-09 v1.4.6
* Upgrade to Rails 2.3.15
* Defect #12409: Git: changesets aren't read after clear_changesets call
* Patch #12605: Norwegian translation for 1.4-stable update
* Patch #12614: Dutch translation
* Patch #12615: Russian translation
* Patch #12630: Russian "x_hours" translation
== 2012-11-17 v1.4.5 == 2012-11-17 v1.4.5
* Defect #10818: Running rake in test environment causes exception * Defect #10818: Running rake in test environment causes exception
+1 -1
View File
@@ -4,7 +4,7 @@ module Redmine
module VERSION #:nodoc: module VERSION #:nodoc:
MAJOR = 1 MAJOR = 1
MINOR = 4 MINOR = 4
TINY = 7 TINY = 5
# Branch values: # Branch values:
# * official release: nil # * official release: nil
-34
View File
@@ -212,40 +212,6 @@ class RepositoryGitTest < ActiveSupport::TestCase
assert_equal h1, h2 assert_equal h1, h2
end end
def test_keep_extra_report_last_commit_in_clear_changesets
assert_nil @repository.extra_info
h = {}
h["extra_report_last_commit"] = "1"
@repository.merge_extra_info(h)
@repository.save
@project.reload
assert_equal 0, @repository.changesets.count
@repository.fetch_changesets
@project.reload
assert_equal NUM_REV, @repository.changesets.count
@repository.send(:clear_changesets)
assert_equal 1, @repository.extra_info.size
assert_equal "1", @repository.extra_info["extra_report_last_commit"]
end
def test_refetch_after_clear_changesets
assert_nil @repository.extra_info
assert_equal 0, @repository.changesets.count
@repository.fetch_changesets
@project.reload
assert_equal NUM_REV, @repository.changesets.count
@repository.send(:clear_changesets)
@project.reload
assert_equal 0, @repository.changesets.count
@repository.fetch_changesets
@project.reload
assert_equal NUM_REV, @repository.changesets.count
end
def test_parents def test_parents
assert_equal 0, @repository.changesets.count assert_equal 0, @repository.changesets.count
@repository.fetch_changesets @repository.fetch_changesets