From 77a3bfe1debc23586e1947b4f8b1f11c94222dc0 Mon Sep 17 00:00:00 2001
From: Andrew8xx8 <avk@8xx8.ru>
Date: Thu, 14 Feb 2013 11:44:34 +0400
Subject: [PATCH] Environments support added to Gitlab config

---
 config/gitlab.yml.example         | 244 ++++++++++++++++--------------
 config/initializers/1_settings.rb |   1 +
 2 files changed, 128 insertions(+), 117 deletions(-)

diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example
index 72d85e89b37..44154456430 100644
--- a/config/gitlab.yml.example
+++ b/config/gitlab.yml.example
@@ -7,121 +7,131 @@
 # 2. Replace gitlab -> host with your domain
 # 3. Replace gitlab -> email_from
 
-#
-# 1. GitLab app settings
-# ==========================
-
-## GitLab settings
-gitlab:
-  ## Web server settings
-  host: localhost
-  port: 80
-  https: false
-  # Uncomment and customize to run in non-root path
-  # Note that ENV['RAILS_RELATIVE_URL_ROOT'] in config/unicorn.rb may need to be changed
-  # relative_url_root: /gitlab
-
-  # Uncomment and customize if you can't use the default user to run GitLab (default: 'git')
-  # user: git
-
-  ## Email settings
-  # Email address used in the "From" field in mails sent by GitLab
-  email_from: gitlab@localhost
-
-  # Email address of your support contact (default: same as email_from)
-  support_email: support@localhost
-
-  ## Project settings
-  default_projects_limit: 10
-  # signup_enabled: true          # default: false - Account passwords are not sent via the email if signup is enabled.
-
-## Gravatar
-gravatar:
-  enabled: true                 # Use user avatar images from Gravatar.com (default: true)
-  # plain_url: "http://..."     # default: http://www.gravatar.com/avatar/%{hash}?s=%{size}&d=mm
-  # ssl_url:   "https://..."    # default: https://secure.gravatar.com/avatar/%{hash}?s=%{size}&d=mm
-
-
-
-#
-# 2. Auth settings
-# ==========================
-
-## LDAP settings
-ldap:
-  enabled: false
-  host: '_your_ldap_server'
-  base: '_the_base_where_you_search_for_users'
-  port: 636
-  uid: 'sAMAccountName'
-  method: 'ssl' # "ssl" or "plain"
-  bind_dn: '_the_full_dn_of_the_user_you_will_bind_with'
-  password: '_the_password_of_the_bind_user'
-
-## Omniauth settings
-omniauth:
-  # Enable ability for users
-  # Allow logging in via Twitter, Google, etc. using Omniauth providers
-  enabled: false
-
+production: &base
+  #
+  # 1. GitLab app settings
+  # ==========================
+
+  ## GitLab settings
+  gitlab:
+    ## Web server settings
+    host: localhost
+    port: 80
+    https: false
+    # Uncomment and customize to run in non-root path
+    # Note that ENV['RAILS_RELATIVE_URL_ROOT'] in config/unicorn.rb may need to be changed
+    # relative_url_root: /gitlab
+
+    # Uncomment and customize if you can't use the default user to run GitLab (default: 'git')
+    # user: git
+
+    ## Email settings
+    # Email address used in the "From" field in mails sent by GitLab
+    email_from: gitlab@localhost
+
+    # Email address of your support contact (default: same as email_from)
+    support_email: support@localhost
+
+    ## Project settings
+    default_projects_limit: 10
+    # signup_enabled: true          # default: false - Account passwords are not sent via the email if signup is enabled.
+
+  ## Gravatar
+  gravatar:
+    enabled: true                 # Use user avatar images from Gravatar.com (default: true)
+    # plain_url: "http://..."     # default: http://www.gravatar.com/avatar/%{hash}?s=%{size}&d=mm
+    # ssl_url:   "https://..."    # default: https://secure.gravatar.com/avatar/%{hash}?s=%{size}&d=mm
+
+
+
+  #
+  # 2. Auth settings
+  # ==========================
+
+  ## LDAP settings
+  ldap:
+    enabled: false
+    host: '_your_ldap_server'
+    base: '_the_base_where_you_search_for_users'
+    port: 636
+    uid: 'sAMAccountName'
+    method: 'ssl' # "ssl" or "plain"
+    bind_dn: '_the_full_dn_of_the_user_you_will_bind_with'
+    password: '_the_password_of_the_bind_user'
+
+  ## Omniauth settings
+  omniauth:
+    # Enable ability for users
+    # Allow logging in via Twitter, Google, etc. using Omniauth providers
+    enabled: false
+
+    # CAUTION!
+    # This allows users to login without having a user account first (default: false)
+    # User accounts will be created automatically when authentication was successful.
+    allow_single_sign_on: false
+    # Locks down those users until they have been cleared by the admin (default: true)
+    block_auto_created_users: true
+
+    ## Auth providers
+    # Uncomment the lines and fill in the data of the auth provider you want to use
+    # If your favorite auth provider is not listed you can user others:
+    # see https://github.com/gitlabhq/gitlabhq/wiki/Using-Custom-Omniauth-Providers
+    # The 'app_id' and 'app_secret' parameters are always passed as the first two
+    # arguments, followed by optional 'args' which can be either a hash or an array.
+    providers:
+      # - { name: 'google_oauth2', app_id: 'YOUR APP ID',
+      #     app_secret: 'YOUR APP SECRET',
+      #     args: { access_type: 'offline', approval_prompt: '' } }
+      # - { name: 'twitter', app_id: 'YOUR APP ID',
+      #     app_secret: 'YOUR APP SECRET'}
+      # - { name: 'github', app_id: 'YOUR APP ID',
+      #     app_secret: 'YOUR APP SECRET' }
+
+
+
+  #
+  # 3. Advanced settings
+  # ==========================
+
+  # GitLab Satellites
+  satellites:
+    # Relative paths are relative to Rails.root (default: tmp/repo_satellites/)
+    path: /home/git/gitlab-satellites/
+
+  ## Backup settings
+  backup:
+    path: "tmp/backups"   # Relative paths are relative to Rails.root (default: tmp/backups/)
+    # keep_time: 604800   # default: 0 (forever) (in seconds)
+
+  ## GitLab Shell settings
+  gitlab_shell:
+    # REPOS_PATH MUST NOT BE A SYMLINK!!!
+    repos_path: /home/git/repositories/
+    hooks_path: /home/git/gitlab-shell/hooks/
+
+    # Git over HTTP
+    upload_pack: true
+    receive_pack: true
+
+    # If you use non-standart ssh port you need to specify it
+    # ssh_port: 22
+
+  ## Git settings
   # CAUTION!
-  # This allows users to login without having a user account first (default: false)
-  # User accounts will be created automatically when authentication was successful.
-  allow_single_sign_on: false
-  # Locks down those users until they have been cleared by the admin (default: true)
-  block_auto_created_users: true
-
-  ## Auth providers
-  # Uncomment the lines and fill in the data of the auth provider you want to use
-  # If your favorite auth provider is not listed you can user others:
-  # see https://github.com/gitlabhq/gitlabhq/wiki/Using-Custom-Omniauth-Providers
-  # The 'app_id' and 'app_secret' parameters are always passed as the first two
-  # arguments, followed by optional 'args' which can be either a hash or an array.
-  providers:
-    # - { name: 'google_oauth2', app_id: 'YOUR APP ID',
-    #     app_secret: 'YOUR APP SECRET',
-    #     args: { access_type: 'offline', approval_prompt: '' } }
-    # - { name: 'twitter', app_id: 'YOUR APP ID',
-    #     app_secret: 'YOUR APP SECRET'}
-    # - { name: 'github', app_id: 'YOUR APP ID',
-    #     app_secret: 'YOUR APP SECRET' }
-
-
-
-#
-# 3. Advanced settings
-# ==========================
-
-# GitLab Satellites
-satellites:
-  # Relative paths are relative to Rails.root (default: tmp/repo_satellites/)
-  path: /home/git/gitlab-satellites/
-
-## Backup settings
-backup:
-  path: "tmp/backups"   # Relative paths are relative to Rails.root (default: tmp/backups/)
-  # keep_time: 604800   # default: 0 (forever) (in seconds)
-
-## GitLab Shell settings
-gitlab_shell:
-  # REPOS_PATH MUST NOT BE A SYMLINK!!!
-  repos_path: /home/git/repositories/
-  hooks_path: /home/git/gitlab-shell/hooks/
-
-  # Git over HTTP
-  upload_pack: true
-  receive_pack: true
-
-  # If you use non-standart ssh port you need to specify it
-  # ssh_port: 22
-
-## Git settings
-# CAUTION!
-# Use the default values unless you really know what you are doing
-git:
-  bin_path: /usr/bin/git
-  # Max size of git object like commit, in bytes
-  # This value can be increased if you have a very large commits
-  max_size: 5242880 # 5.megabytes
-  # Git timeout to read commit, in seconds
-  timeout: 10
+  # Use the default values unless you really know what you are doing
+  git:
+    bin_path: /usr/bin/git
+    # Max size of git object like commit, in bytes
+    # This value can be increased if you have a very large commits
+    max_size: 5242880 # 5.megabytes
+    # Git timeout to read commit, in seconds
+    timeout: 10
+
+development:
+  <<: *base
+
+test:
+  <<: *base
+
+staging:
+  <<: *base
diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb
index c1469530024..b3fba99ebf3 100644
--- a/config/initializers/1_settings.rb
+++ b/config/initializers/1_settings.rb
@@ -1,5 +1,6 @@
 class Settings < Settingslogic
   source "#{Rails.root}/config/gitlab.yml"
+  namespace Rails.env
 
   class << self
     def gitlab_on_non_standard_port?
-- 
GitLab