diff --git a/app/contexts/projects/create_context.rb b/app/contexts/projects/create_context.rb index e644d89a356d78f43845ccc1803f0fbb3196a354..a14d8019929723bde31955f3a5f82b49be2242cb 100644 --- a/app/contexts/projects/create_context.rb +++ b/app/contexts/projects/create_context.rb @@ -15,7 +15,16 @@ module Projects # Ex. # 'GitLab HQ'.parameterize => "gitlab-hq" # - @project.path = @project.name.dup.parameterize + if Gitlab.config.gitlab.case_sensitive + parameterized_string = ActiveSupport::Inflector.transliterate(@project.name) + parameterized_string.gsub!(/[^a-z0-9\-_]+/i, '-') + re_sep = Regexp.escape('-') + parameterized_string.gsub!(/#{re_sep}{2,}/, '-') + parameterized_string.gsub!(/^#{re_sep}|#{re_sep}$/i, '') + @project.path = parameterized_string + else + @project.path = @project.name.dup.parameterize + end if namespace_id diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example index b2dccbe3d4c9a4062300d26a3b0ddd9aa3332d07..4d4b93b7482b5d21e73ff685e3d7507102099714 100644 --- a/config/gitlab.yml.example +++ b/config/gitlab.yml.example @@ -35,6 +35,7 @@ gitlab: ## Project settings default_projects_limit: 10 # signup_enabled: true # default: false - Account passwords are not sent via the email if signup is enabled. + # case_sensitive: true # default: false - Project names and path are not converted to lowercase if enabled ## Gravatar gravatar: diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb index a1afa5b22c4f434b5fd1ff65ace51c387f7fa307..24331e3f019c8efdd0b1ec8d47cfb1f4b6f5e8f3 100644 --- a/config/initializers/1_settings.rb +++ b/config/initializers/1_settings.rb @@ -53,6 +53,7 @@ Settings.gitlab['support_email'] ||= Settings.gitlab.email_from Settings.gitlab['url'] ||= Settings.send(:build_gitlab_url) Settings.gitlab['user'] ||= 'gitlab' Settings.gitlab['signup_enabled'] ||= false +Settings.gitlab['case_sensitive'] ||= false Settings['gravatar'] ||= Settingslogic.new({}) Settings.gravatar['enabled'] = true if Settings.gravatar['enabled'].nil?