_form.html.haml 24.4 KB
Newer Older
1
= form_for @application_setting, url: admin_application_settings_path, html: { class: 'form-horizontal fieldset-form' } do |f|
2
  = form_errors(@application_setting)
3

4
  %fieldset
5
    %legend Visibility and Access Controls
6
    .form-group
7 8 9 10 11 12
      = f.label :default_branch_protection, class: 'control-label col-sm-2'
      .col-sm-10
        = f.select :default_branch_protection, options_for_select(Gitlab::Access.protection_options, @application_setting.default_branch_protection), {}, class: 'form-control'
    .form-group.project-visibility-level-holder
      = f.label :default_project_visibility, class: 'control-label col-sm-2'
      .col-sm-10
13
        = render('shared/visibility_radios', model_method: :default_project_visibility, form: f, selected_level: @application_setting.default_project_visibility, form_model: Project.new)
14 15 16
    .form-group.project-visibility-level-holder
      = f.label :default_snippet_visibility, class: 'control-label col-sm-2'
      .col-sm-10
17
        = render('shared/visibility_radios', model_method: :default_snippet_visibility, form: f, selected_level: @application_setting.default_snippet_visibility, form_model: ProjectSnippet.new)
18
    .form-group.project-visibility-level-holder
19 20 21
      = f.label :default_group_visibility, class: 'control-label col-sm-2'
      .col-sm-10
        = render('shared/visibility_radios', model_method: :default_group_visibility, form: f, selected_level: @application_setting.default_group_visibility, form_model: Group.new)
22 23 24
    .form-group
      = f.label :restricted_visibility_levels, class: 'control-label col-sm-2'
      .col-sm-10
25 26
        - restricted_level_checkboxes('restricted-visibility-help').each do |level|
          .checkbox
27
            = level
28 29
        %span.help-block#restricted-visibility-help
          Selected levels cannot be used by non-admin users for projects or snippets.
30
          If the public level is restricted, user profiles are only visible to logged in users.
31 32 33
    .form-group
      = f.label :import_sources, class: 'control-label col-sm-2'
      .col-sm-10
34 35
        - import_sources_checkboxes('import-sources-help').each do |source|
          .checkbox= source
36 37
        %span.help-block#import-sources-help
          Enabled sources for code import during project creation. OmniAuth must be configured for GitHub
38
          = link_to "(?)", help_page_path("integration/github")
39
          , Bitbucket
40
          = link_to "(?)", help_page_path("integration/bitbucket")
41
          and GitLab.com
42
          = link_to "(?)", help_page_path("integration/gitlab")
43 44 45
    .form-group
      %label.control-label.col-sm-2 Enabled Git access protocols
      .col-sm-10
46
        = select(:application_setting, :enabled_git_access_protocol, [['Both SSH and HTTP(S)', nil], ['Only SSH', 'ssh'], ['Only HTTP(S)', 'http']], {}, class: 'form-control')
47 48
        %span.help-block#clone-protocol-help
          Allow only the selected protocols to be used for Git access.
49 50 51

  %fieldset
    %legend Account and Limit Settings
52
    .form-group
53 54 55 56 57
      .col-sm-offset-2.col-sm-10
        .checkbox
          = f.label :gravatar_enabled do
            = f.check_box :gravatar_enabled
            Gravatar enabled
58
    .form-group
59
      = f.label :default_projects_limit, class: 'control-label col-sm-2'
60 61
      .col-sm-10
        = f.number_field :default_projects_limit, class: 'form-control'
62
    .form-group
63
      = f.label :max_attachment_size, 'Maximum attachment size (MB)', class: 'control-label col-sm-2'
V
Vinnie Okada 已提交
64
      .col-sm-10
65 66 67
        = f.number_field :max_attachment_size, class: 'form-control'
    .form-group
      = f.label :session_expire_delay, 'Session duration (minutes)', class: 'control-label col-sm-2'
V
Vinnie Okada 已提交
68
      .col-sm-10
69 70
        = f.number_field :session_expire_delay, class: 'form-control'
        %span.help-block#session_expire_delay_help_block GitLab restart is required to apply changes
71
    .form-group
72
      = f.label :user_oauth_applications, 'User OAuth applications', class: 'control-label col-sm-2'
73
      .col-sm-10
74 75 76 77
        .checkbox
          = f.label :user_oauth_applications do
            = f.check_box :user_oauth_applications
            Allow users to register any application to use GitLab as an OAuth provider
78 79 80 81 82 83 84
    .form-group
      = f.label :user_default_external, 'New users set to external', class: 'control-label col-sm-2'
      .col-sm-10
        .checkbox
          = f.label :user_default_external do
            = f.check_box :user_default_external
            Newly registered users will by default be external
85 86

  %fieldset
87
    %legend Sign-up Restrictions
88 89 90
    .form-group
      .col-sm-offset-2.col-sm-10
        .checkbox
91 92 93
          = f.label :signup_enabled do
            = f.check_box :signup_enabled
            Sign-up enabled
94 95 96
    .form-group
      .col-sm-offset-2.col-sm-10
        .checkbox
97
          = f.label :send_user_confirmation_email do
98
            = f.check_box :send_user_confirmation_email
99
            Send confirmation email on sign-up
100
    .form-group
101
      = f.label :domain_whitelist, 'Whitelisted domains for sign-ups', class: 'control-label col-sm-2'
102
      .col-sm-10
103
        = f.text_area :domain_whitelist_raw, placeholder: 'domain.com', class: 'form-control', rows: 8
104 105 106 107 108 109 110 111 112 113 114 115
        .help-block ONLY users with e-mail addresses that match these domain(s) will be able to sign-up. Wildcards allowed. Use separate lines for multiple entries. Ex: domain.com, *.domain.com
    .form-group
      = f.label :domain_blacklist_enabled, 'Domain Blacklist', class: 'control-label col-sm-2'
      .col-sm-10
        .checkbox
          = f.label :domain_blacklist_enabled do
            = f.check_box :domain_blacklist_enabled
            Enable domain blacklist for sign ups
    .form-group
      .col-sm-offset-2.col-sm-10
        .radio
          = label_tag :blacklist_type_file do
116
            = radio_button_tag :blacklist_type, :file
117 118 119 120
            .option-title
              Upload blacklist file
        .radio
          = label_tag :blacklist_type_raw do
121
            = radio_button_tag :blacklist_type, :raw, @application_setting.domain_blacklist.present? || @application_setting.domain_blacklist.blank?
122 123 124 125 126 127 128 129
            .option-title
              Enter blacklist manually
    .form-group.blacklist-file
      = f.label :domain_blacklist_file, 'Blacklist file', class: 'control-label col-sm-2'
      .col-sm-10
        = f.file_field :domain_blacklist_file, class: 'form-control', accept: '.txt,.conf'
        .help-block Users with e-mail addresses that match these domain(s) will NOT be able to sign-up. Wildcards allowed. Use separate lines or commas for multiple entries.
    .form-group.blacklist-raw
130
      = f.label :domain_blacklist, 'Blacklisted domains for sign-ups', class: 'control-label col-sm-2'
131
      .col-sm-10
132
        = f.text_area :domain_blacklist_raw, placeholder: 'domain.com', class: 'form-control', rows: 8
133 134 135 136 137 138 139 140 141 142
        .help-block Users with e-mail addresses that match these domain(s) will NOT be able to sign-up. Wildcards allowed. Use separate lines for multiple entries. Ex: domain.com, *.domain.com

    .form-group
      = f.label :after_sign_up_text, class: 'control-label col-sm-2'
      .col-sm-10
        = f.text_area :after_sign_up_text, class: 'form-control', rows: 4
        .help-block Markdown enabled

  %fieldset
    %legend Sign-in Restrictions
143 144 145 146 147 148
    .form-group
      .col-sm-offset-2.col-sm-10
        .checkbox
          = f.label :signin_enabled do
            = f.check_box :signin_enabled
            Sign-in enabled
149
    - if omniauth_enabled? && button_based_providers.any?
150
      .form-group
151
        = f.label :enabled_oauth_sign_in_sources, 'Enabled OAuth Sign-In sources', class: 'control-label col-sm-2'
152
        .col-sm-10
153
          .btn-group{ data: { toggle: 'buttons' } }
154
            - oauth_providers_checkboxes.each do |source|
155
              = source
156
    .form-group
157
      = f.label :two_factor_authentication, 'Two-factor authentication', class: 'control-label col-sm-2'
158 159 160 161
      .col-sm-10
        .checkbox
          = f.label :require_two_factor_authentication do
            = f.check_box :require_two_factor_authentication
162
            Require all users to setup Two-factor authentication
163
    .form-group
164
      = f.label :two_factor_authentication, 'Two-factor grace period (hours)', class: 'control-label col-sm-2'
165 166 167
      .col-sm-10
        = f.number_field :two_factor_grace_period, min: 0, class: 'form-control', placeholder: '0'
        .help-block Amount of time (in hours) that users are allowed to skip forced configuration of two-factor authentication
168
    .form-group
169
      = f.label :home_page_url, 'Home page URL', class: 'control-label col-sm-2'
170
      .col-sm-10
171 172
        = f.text_field :home_page_url, class: 'form-control', placeholder: 'http://company.example.com', :'aria-describedby' => 'home_help_block'
        %span.help-block#home_help_block We will redirect non-logged in users to this page
173 174 175 176 177
    .form-group
      = f.label :after_sign_out_path, class: 'control-label col-sm-2'
      .col-sm-10
        = f.text_field :after_sign_out_path, class: 'form-control', placeholder: 'http://company.example.com', :'aria-describedby' => 'after_sign_out_path_help_block'
        %span.help-block#after_sign_out_path_help_block We will redirect users to this page after they sign out
178
    .form-group
179
      = f.label :sign_in_text, class: 'control-label col-sm-2'
180
      .col-sm-10
181 182
        = f.text_area :sign_in_text, class: 'form-control', rows: 4
        .help-block Markdown enabled
183 184 185 186 187
    .form-group
      = f.label :help_page_text, class: 'control-label col-sm-2'
      .col-sm-10
        = f.text_area :help_page_text, class: 'form-control', rows: 4
        .help-block Markdown enabled
188

K
Kamil Trzcinski 已提交
189 190 191 192 193 194
  %fieldset
    %legend Pages
    .form-group
      = f.label :max_pages_size, 'Maximum size of pages (MB)', class: 'control-label col-sm-2'
      .col-sm-10
        = f.number_field :max_pages_size, class: 'form-control'
195
        .help-block 0 for unlimited
K
Kamil Trzcinski 已提交
196

197 198 199 200 201 202 203
  %fieldset
    %legend Continuous Integration
    .form-group
      .col-sm-offset-2.col-sm-10
        .checkbox
          = f.label :shared_runners_enabled do
            = f.check_box :shared_runners_enabled
S
Steffen Köhler 已提交
204
            Enable shared runners for new projects
205 206 207 208 209
    .form-group
      = f.label :shared_runners_text, class: 'control-label col-sm-2'
      .col-sm-10
        = f.text_area :shared_runners_text, class: 'form-control', rows: 4
        .help-block Markdown enabled
K
Kamil Trzcinski 已提交
210 211 212 213
    .form-group
      = f.label :max_artifacts_size, 'Maximum artifacts size (MB)', class: 'control-label col-sm-2'
      .col-sm-10
        = f.number_field :max_artifacts_size, class: 'form-control'
214
        .help-block
215
          Set the maximum file size for each job's artifacts
216
          = link_to icon('question-circle'), help_page_path('user/admin_area/settings/continuous_integration', anchor: 'maximum-artifacts-size')
217
    .form-group
218
      = f.label :default_artifacts_expire_in, 'Default artifacts expiration', class: 'control-label col-sm-2'
219
      .col-sm-10
220
        = f.text_field :default_artifacts_expire_in, class: 'form-control'
221
        .help-block
222 223 224
          Set the default expiration time for each job's artifacts.
          0 for unlimited.
          = link_to icon('question-circle'), help_page_path('user/admin_area/settings/continuous_integration', anchor: 'default-artifacts-expiration')
K
Kamil Trzcinski 已提交
225

226 227 228 229 230 231 232 233
  - if Gitlab.config.registry.enabled
    %fieldset
      %legend Container Registry
      .form-group
        = f.label :container_registry_token_expire_delay, 'Authorization token duration (minutes)', class: 'control-label col-sm-2'
        .col-sm-10
          = f.number_field :container_registry_token_expire_delay, class: 'form-control'

234 235 236
  %fieldset
    %legend Metrics
    %p
237 238 239 240 241
      Setup InfluxDB to measure a wide variety of statistics like the time spent
      in running SQL queries. These settings require a
      = link_to 'restart', help_page_path('administration/restart_gitlab')
      to take effect.
      = link_to icon('question-circle'), help_page_path('administration/monitoring/performance/introduction')
242 243 244 245 246 247 248 249 250 251 252
    .form-group
      .col-sm-offset-2.col-sm-10
        .checkbox
          = f.label :metrics_enabled do
            = f.check_box :metrics_enabled
            Enable InfluxDB Metrics
    .form-group
      = f.label :metrics_host, 'InfluxDB host', class: 'control-label col-sm-2'
      .col-sm-10
        = f.text_field :metrics_host, class: 'form-control', placeholder: 'influxdb.example.com'
    .form-group
253
      = f.label :metrics_port, 'InfluxDB port', class: 'control-label col-sm-2'
254
      .col-sm-10
255
        = f.text_field :metrics_port, class: 'form-control', placeholder: '8089'
256
        .help-block
257 258 259 260
          The UDP port to use for connecting to InfluxDB. InfluxDB requires that
          your server configuration specifies a database to store data in when
          sending messages to this port, without it metrics data will not be
          saved.
261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283
    .form-group
      = f.label :metrics_pool_size, 'Connection pool size', class: 'control-label col-sm-2'
      .col-sm-10
        = f.number_field :metrics_pool_size, class: 'form-control'
        .help-block
          The amount of InfluxDB connections to open. Connections are opened
          lazily. Users using multi-threaded application servers should ensure
          enough connections are available (at minimum the amount of application
          server threads).
    .form-group
      = f.label :metrics_timeout, 'Connection timeout', class: 'control-label col-sm-2'
      .col-sm-10
        = f.number_field :metrics_timeout, class: 'form-control'
        .help-block
          The amount of seconds after which an InfluxDB connection will time
          out.
    .form-group
      = f.label :metrics_method_call_threshold, 'Method Call Threshold (ms)', class: 'control-label col-sm-2'
      .col-sm-10
        = f.number_field :metrics_method_call_threshold, class: 'form-control'
        .help-block
          A method call is only tracked when it takes longer to complete than
          the given amount of milliseconds.
284 285 286 287 288 289 290
    .form-group
      = f.label :metrics_sample_interval, 'Sampler Interval (sec)', class: 'control-label col-sm-2'
      .col-sm-10
        = f.number_field :metrics_sample_interval, class: 'form-control'
        .help-block
          The sampling interval in seconds. Sampled data includes memory usage,
          retained Ruby objects, file descriptors and so on.
291 292 293 294 295 296 297
    .form-group
      = f.label :metrics_packet_size, 'Metrics per packet', class: 'control-label col-sm-2'
      .col-sm-10
        = f.number_field :metrics_packet_size, class: 'form-control'
        .help-block
          The amount of points to store in a single UDP packet. More points
          results in fewer but larger UDP packets being sent.
298

299 300 301 302 303 304 305 306 307 308 309 310
  %fieldset
    %legend Background Jobs
    %p
      These settings require a restart to take effect.
    .form-group
      .col-sm-offset-2.col-sm-10
        .checkbox
          = f.label :sidekiq_throttling_enabled do
            = f.check_box :sidekiq_throttling_enabled
            Enable Sidekiq Job Throttling
          .help-block
            Limit the amount of resources slow running jobs are assigned.
311 312 313 314 315 316 317 318 319
    .form-group
      = f.label :sidekiq_throttling_queues, 'Sidekiq queues to throttle', class: 'control-label col-sm-2'
      .col-sm-10
        = f.select :sidekiq_throttling_queues, sidekiq_queue_options_for_select, { include_hidden: false }, multiple: true, class: 'select2 select-wide', data: { field: 'sidekiq_throttling_queues' }
        .help-block
          Choose which queues you wish to throttle.
    .form-group
      = f.label :sidekiq_throttling_factor, 'Throttling Factor', class: 'control-label col-sm-2'
      .col-sm-10
320
        = f.number_field :sidekiq_throttling_factor, class: 'form-control', min: '0.01', max: '0.99', step: '0.01'
321
        .help-block
322
          The factor by which the queues should be throttled. A value between 0.0 and 1.0, exclusive.
323

324 325 326 327 328 329 330 331
  %fieldset
    %legend Spam and Anti-bot Protection
    .form-group
      .col-sm-offset-2.col-sm-10
        .checkbox
          = f.label :recaptcha_enabled do
            = f.check_box :recaptcha_enabled
            Enable reCAPTCHA
332
          %span.help-block#recaptcha_help_block Helps prevent bots from creating accounts
333 334 335 336 337 338

    .form-group
      = f.label :recaptcha_site_key, 'reCAPTCHA Site Key', class: 'control-label col-sm-2'
      .col-sm-10
        = f.text_field :recaptcha_site_key, class: 'form-control'
        .help-block
339
          Generate site and private keys at
340
          %a{ href: 'http://www.google.com/recaptcha', target: 'blank' } http://www.google.com/recaptcha
341

342 343 344 345 346
    .form-group
      = f.label :recaptcha_private_key, 'reCAPTCHA Private Key', class: 'control-label col-sm-2'
      .col-sm-10
        = f.text_field :recaptcha_private_key, class: 'form-control'

347 348 349 350 351 352 353 354 355 356 357 358 359 360
    .form-group
      .col-sm-offset-2.col-sm-10
        .checkbox
          = f.label :akismet_enabled do
            = f.check_box :akismet_enabled
            Enable Akismet
          %span.help-block#akismet_help_block Helps prevent bots from creating issues

    .form-group
      = f.label :akismet_api_key, 'Akismet API Key', class: 'control-label col-sm-2'
      .col-sm-10
        = f.text_field :akismet_api_key, class: 'form-control'
        .help-block
          Generate API key at
361
          %a{ href: 'http://www.akismet.com', target: 'blank' } http://www.akismet.com
362

363 364 365 366 367 368 369 370 371
  %fieldset
    %legend Abuse reports
    .form-group
      = f.label :admin_notification_email, 'Abuse reports notification email', class: 'control-label col-sm-2'
      .col-sm-10
        = f.text_field :admin_notification_email, class: 'form-control'
        .help-block
          Abuse reports will be sent to this address if it is set. Abuse reports are always available in the admin area.

J
Jeroen Nijhof 已提交
372 373 374 375 376 377 378 379 380 381
  %fieldset
    %legend Error Reporting and Logging
    %p
      These settings require a restart to take effect.
    .form-group
      .col-sm-offset-2.col-sm-10
        .checkbox
          = f.label :sentry_enabled do
            = f.check_box :sentry_enabled
            Enable Sentry
382 383
          .help-block
            Sentry is an error reporting and logging tool which is currently not shipped with GitLab, get it here:
D
Douwe Maan 已提交
384
            %a{ href: 'https://getsentry.com', target: '_blank' } https://getsentry.com
J
Jeroen Nijhof 已提交
385 386 387 388 389 390

    .form-group
      = f.label :sentry_dsn, 'Sentry DSN', class: 'control-label col-sm-2'
      .col-sm-10
        = f.text_field :sentry_dsn, class: 'form-control'

391 392 393
  %fieldset
    %legend Repository Storage
    .form-group
394
      = f.label :repository_storages, 'Storage paths for new projects', class: 'control-label col-sm-2'
395
      .col-sm-10
396
        = f.select :repository_storages, repository_storages_options_for_select, {include_hidden: false}, multiple: true, class: 'form-control'
397
        .help-block
398 399 400
          Manage repository storage paths. Learn more in the
          = succeed "." do
            = link_to "repository storages documentation", help_page_path("administration/repository_storages")
401

402 403 404 405 406 407 408 409 410
  %fieldset
    %legend Repository Checks
    .form-group
      .col-sm-offset-2.col-sm-10
        .checkbox
          = f.label :repository_checks_enabled do
            = f.check_box :repository_checks_enabled
            Enable Repository Checks
          .help-block
411
            GitLab will periodically run
412 413
            %a{ href: 'https://www.kernel.org/pub/software/scm/git/docs/git-fsck.html', target: 'blank' } 'git fsck'
            in all project and wiki repositories to look for silent disk corruption issues.
414 415 416 417
    .form-group
      .col-sm-offset-2.col-sm-10
        = link_to 'Clear all repository checks', clear_repository_check_states_admin_application_settings_path, data: { confirm: 'This will clear repository check states for ALL projects in the database. This cannot be undone. Are you sure?' }, method: :put, class: "btn btn-sm btn-remove"
        .help-block
J
Jacob Vosmaer 已提交
418
          If you got a lot of false alarms from repository checks you can choose to clear all repository check information from the database.
419

420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436
  %fieldset
    %legend Koding
    .form-group
      .col-sm-offset-2.col-sm-10
        .checkbox
          = f.label :koding_enabled do
            = f.check_box :koding_enabled
            Enable Koding
    .form-group
      = f.label :koding_url, 'Koding URL', class: 'control-label col-sm-2'
      .col-sm-10
        = f.text_field :koding_url, class: 'form-control', placeholder: 'http://gitlab.your-koding-instance.com:8090'
        .help-block
          Koding has integration enabled out of the box for the
          %strong gitlab
          team, and you need to provide that team's URL here. Learn more in the
          = succeed "." do
437
            = link_to "Koding administration documentation", help_page_path("administration/integration/koding")
438

439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455
  %fieldset
    %legend PlantUML
    .form-group
      .col-sm-offset-2.col-sm-10
        .checkbox
          = f.label :plantuml_enabled do
            = f.check_box :plantuml_enabled
            Enable PlantUML
    .form-group
      = f.label :plantuml_url, 'PlantUML URL', class: 'control-label col-sm-2'
      .col-sm-10
        = f.text_field :plantuml_url, class: 'form-control', placeholder: 'http://gitlab.your-plantuml-instance.com:8080'
        .help-block
          Allow rendering of
          = link_to "PlantUML", "http://plantuml.com"
          diagrams in Asciidoc documents using an external PlantUML service.

456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478
  %fieldset
    %legend Usage statistics
    .form-group
      .col-sm-offset-2.col-sm-10
        .checkbox
          = f.label :version_check_enabled do
            = f.check_box :version_check_enabled
            Version check enabled
          .help-block
            Let GitLab inform you when an update is available.

  %fieldset
    %legend Email
    .form-group
      .col-sm-offset-2.col-sm-10
        .checkbox
          = f.label :email_author_in_body do
            = f.check_box :email_author_in_body
            Include author name in notification email body
          .help-block
            Some email servers do not support overriding the email sender name.
            Enable this option to include the name of the author of the issue,
            merge request or comment in the email body instead.
479 480 481 482 483 484 485 486 487 488
    .form-group
      .col-sm-offset-2.col-sm-10
        .checkbox
          = f.label :html_emails_enabled do
            = f.check_box :html_emails_enabled
            Enable HTML emails
          .help-block
            By default GitLab sends emails in HTML and plain text formats so mail
            clients can choose what format to use. Disable this option if you only
            want to send emails in plain text format.
J
Jacob Vosmaer 已提交
489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527
  %fieldset
    %legend Automatic Git repository housekeeping
    .form-group
      .col-sm-offset-2.col-sm-10
        .checkbox
          = f.label :housekeeping_enabled do
            = f.check_box :housekeeping_enabled
            Enable automatic repository housekeeping (git repack, git gc)
          .help-block
            If you keep automatic housekeeping disabled for a long time Git
            repository access on your GitLab server will become slower and your
            repositories will use more disk space. We recommend to always leave
            this enabled.
        .checkbox
          = f.label :housekeeping_bitmaps_enabled do
            = f.check_box :housekeeping_bitmaps_enabled
            Enable Git pack file bitmap creation
          .help-block
            Creating pack file bitmaps makes housekeeping take a little longer but
            bitmaps should accelerate 'git clone' performance.
    .form-group
      = f.label :housekeeping_incremental_repack_period, 'Incremental repack period', class: 'control-label col-sm-2'
      .col-sm-10
        = f.number_field :housekeeping_incremental_repack_period, class: 'form-control'
        .help-block
          Number of Git pushes after which an incremental 'git repack' is run.
    .form-group
      = f.label :housekeeping_full_repack_period, 'Full repack period', class: 'control-label col-sm-2'
      .col-sm-10
        = f.number_field :housekeeping_full_repack_period, class: 'form-control'
        .help-block
          Number of Git pushes after which a full 'git repack' is run.
    .form-group
      = f.label :housekeeping_gc_period, 'Git GC period', class: 'control-label col-sm-2'
      .col-sm-10
        = f.number_field :housekeeping_gc_period, class: 'form-control'
        .help-block
          Number of Git pushes after which 'git gc' is run.

528 529 530 531 532 533 534 535
  %fieldset
    %legend Web terminal
    .form-group
      = f.label :terminal_max_session_time, 'Max session time', class: 'control-label col-sm-2'
      .col-sm-10
        = f.number_field :terminal_max_session_time, class: 'form-control'
        .help-block
          Maximum time for web terminal websocket connection (in seconds).
536
          0 for unlimited.
537

538
  .form-actions
539
    = f.submit 'Save', class: 'btn btn-save'