Commit 6ace422c298eef2c592d64c08f59b3da3d8d8a6d

Authored by Dmitriy Zaporozhets
2 parents 2882d16e 6f5f5e7e

Merge branch 'master' into 6-0-dev

Conflicts:
	Gemfile
	Gemfile.lock
CONTRIBUTING.md
... ... @@ -8,6 +8,8 @@ GitLab is a popular open source project and the capacity to deal with issues and
8 8  
9 9 Please treat our volunteers with courtesy and respect, it will go a long way towards getting your issue resolved.
10 10  
  11 +Issues and pull requests should be in English and contain appropriate language for audiences of all ages.
  12 +
11 13 ## Issue tracker
12 14  
13 15 To get support for your particular problem please use the channels as detailed in [the getting help section of the readme](https://github.com/gitlabhq/gitlabhq#getting-help). Professional [support subscriptions](http://www.gitlab.com/subscription/) and [consulting services](http://www.gitlab.com/consultancy/) are available from [GitLab.com](http://www.gitlab.com/).
... ... @@ -16,7 +18,7 @@ The [issue tracker](https://github.com/gitlabhq/gitlabhq/issues) is only for obv
16 18  
17 19 Do not use the issue tracker for feature requests. We have a specific [feedback and suggestions forum](http://feedback.gitlab.com) for this purpose.
18 20  
19   -Please send a pull request with a tested solution or a pull request with a failing test instead of opening an issue if you can. If you're unsure where to post, post to the [Support Forum](https://groups.google.com/forum/#!forum/gitlabhq) or [Stack Overflow](http://stackoverflow.com/questions/tagged/gitlab) first. There are a lot of helpful GitLab users there who may be able to help you quickly. If your particular issue turns out to be a bug, it will find its way from there.
  21 +Please send a pull request with a tested solution or a pull request with a failing test instead of opening an issue if you can. If you're unsure where to post, post to the [mailing list](https://groups.google.com/forum/#!forum/gitlabhq) or [Stack Overflow](http://stackoverflow.com/questions/tagged/gitlab) first. There are a lot of helpful GitLab users there who may be able to help you quickly. If your particular issue turns out to be a bug, it will find its way from there.
20 22  
21 23 ### Issue tracker guidelines
22 24  
... ... @@ -26,7 +28,7 @@ Please send a pull request with a tested solution or a pull request with a faili
26 28 2. **Steps to reproduce:** How can we reproduce the issue, preferably on the [GitLab Vagrant virtual machine](https://github.com/gitlabhq/gitlab-vagrant-vm) (start with: `vagrant destroy && vagrant up && vagrant ssh`)
27 29 3. **Expected behavior:** Describe your issue in detail
28 30 4. **Observed behavior**
29   -5. **Relevant logs and/or screen shots:** Please use code blocks (-5. **Relevant logs and/or screen -5. **Relevant logs and/or screen -5. **Relevant logs and/or screen ) to format console output, logs, and code as it's very hard to read otherwise.
  31 +5. **Relevant logs and/or screenshots:** Please use code blocks (+5. **Relevant logs and/or screen+5. **Relevant logs and/or screen+5. **Relevant logs and/or screen) to format console output, logs, and code as it's very hard to read otherwise.
30 32 6. **Output of checks**
31 33 * Results of GitLab [Application Check](doc/install/installation.md#check-application-status) (`sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production`); we will only investigate if the tests are passing
32 34 * Version of GitLab you are running; we will only investigate issues in the latest stable and development releases as per the [maintenance policy](MAINTENANCE.md)
... ... @@ -45,6 +47,7 @@ If you can, please submit a pull request with the fix or improvements including
45 47 1. Fork the project on GitHub
46 48 1. Create a feature branch
47 49 1. Write [tests](README.md#run-the-tests) and code
  50 +1. Add your changes to the [CHANGELOG](CHANGELOG)
48 51 1. If you have multiple commits please combine them into one commit by [squashing them](http://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)
49 52 1. Push the commit to your fork
50 53 1. Submit a pull request
... ... @@ -54,12 +57,13 @@ We will accept pull requests if:
54 57  
55 58 * The code has proper tests and all tests pass (or it is a test exposing a failure in existing code)
56 59 * It can be merged without problems (if not please use: `git rebase master`)
57   -* It doesn't break any existing functionality
  60 +* It does not break any existing functionality
58 61 * It's quality code that conforms to the [Ruby](https://github.com/bbatsov/ruby-style-guide) and [Rails](https://github.com/bbatsov/rails-style-guide) style guides and best practices
59 62 * The description includes a motive for your change and the method you used to achieve it
  63 +* It is not a catch all pull request but rather fixes a specific issue or implements a specific feature
60 64 * It keeps the GitLab code base clean and well structured
61 65 * We think other users will benefit from the same functionality
62 66 * If it makes changes to the UI the pull request should include screenshots
63   -* It is a single commit (please use git rebase -i to squash commits)
  67 +* It is a single commit (please use `git rebase -i` to squash commits)
64 68  
65 69 For examples of feedback on pull requests please look at already [closed pull requests](https://github.com/gitlabhq/gitlabhq/pulls?direction=desc&page=1&sort=created&state=closed).
... ...
Gemfile
... ... @@ -59,8 +59,9 @@ gem "haml-rails"
59 59  
60 60 # Files attachments
61 61 gem "carrierwave"
  62 +
62 63 # for aws storage
63   -# gem "fog", "~> 1.3.1"
  64 +gem "fog", "~> 1.3.1", group: :aws
64 65  
65 66 # Authorization
66 67 gem "six"
... ... @@ -76,7 +77,8 @@ gem "github-markup", "~> 0.7.4", require: 'github/markup'
76 77 gem "asciidoctor"
77 78  
78 79 # Servers
79   -gem "puma", '~> 2.3.1'
  80 +gem "puma", '~> 2.3.1', group: :puma
  81 +gem "unicorn", '~> 4.6.3', group: :unicorn
80 82  
81 83 # State machine
82 84 gem "state_machine"
... ...
Gemfile.lock
... ... @@ -117,6 +117,7 @@ GEM
117 117 erubis (2.7.0)
118 118 escape_utils (0.2.4)
119 119 eventmachine (1.0.3)
  120 + excon (0.13.4)
120 121 execjs (1.4.0)
121 122 multi_json (~> 1.0)
122 123 factory_girl (4.2.0)
... ... @@ -132,6 +133,16 @@ GEM
132 133 eventmachine (>= 0.12.0)
133 134 ffaker (1.16.1)
134 135 ffi (1.9.0)
  136 + fog (1.3.1)
  137 + builder
  138 + excon (~> 0.13.0)
  139 + formatador (~> 0.2.0)
  140 + mime-types
  141 + multi_json (~> 1.0)
  142 + net-scp (~> 1.0.4)
  143 + net-ssh (>= 2.1.3)
  144 + nokogiri (~> 1.5.0)
  145 + ruby-hmac
135 146 font-awesome-rails (3.1.1.3)
136 147 railties (>= 3.2, < 5.0)
137 148 foreman (0.63.0)
... ... @@ -245,6 +256,7 @@ GEM
245 256 kaminari (0.14.1)
246 257 actionpack (>= 3.0.0)
247 258 activesupport (>= 3.0.0)
  259 + kgio (2.8.0)
248 260 launchy (2.3.0)
249 261 addressable (~> 2.3)
250 262 letter_opener (1.1.1)
... ... @@ -268,6 +280,9 @@ GEM
268 280 multipart-post (1.2.0)
269 281 mysql2 (0.3.11)
270 282 net-ldap (0.3.1)
  283 + net-scp (1.0.4)
  284 + net-ssh (>= 1.99.1)
  285 + net-ssh (2.6.8)
271 286 nokogiri (1.5.10)
272 287 oauth (0.4.7)
273 288 oauth2 (0.8.1)
... ... @@ -355,6 +370,7 @@ GEM
355 370 rake (>= 0.8.7)
356 371 rdoc (~> 3.4)
357 372 thor (>= 0.14.6, < 2.0)
  373 + raindrops (0.11.0)
358 374 rake (10.1.0)
359 375 rb-fsevent (0.9.3)
360 376 rb-inotify (0.9.0)
... ... @@ -401,6 +417,7 @@ GEM
401 417 rspec-core (~> 2.13.0)
402 418 rspec-expectations (~> 2.13.0)
403 419 rspec-mocks (~> 2.13.0)
  420 + ruby-hmac (0.4.0)
404 421 ruby-progressbar (1.1.1)
405 422 rubyntlm (0.1.1)
406 423 rubyzip (0.9.9)
... ... @@ -501,6 +518,10 @@ GEM
501 518 execjs (>= 0.3.0)
502 519 multi_json (~> 1.0, >= 1.0.2)
503 520 underscore-rails (1.4.4)
  521 + unicorn (4.6.3)
  522 + kgio (~> 2.6)
  523 + rack
  524 + raindrops (~> 0.7)
504 525 virtus (0.5.5)
505 526 backports (~> 3.3)
506 527 descendants_tracker (~> 0.0.1)
... ... @@ -538,6 +559,7 @@ DEPENDENCIES
538 559 enumerize
539 560 factory_girl_rails
540 561 ffaker
  562 + fog (~> 1.3.1)
541 563 font-awesome-rails (~> 3.1.1)
542 564 foreman
543 565 gemoji (~> 1.2.1)
... ... @@ -610,4 +632,5 @@ DEPENDENCIES
610 632 turbolinks
611 633 uglifier
612 634 underscore-rails (~> 1.4.4)
  635 + unicorn (~> 4.6.3)
613 636 webmock
... ...
README.md
... ... @@ -145,7 +145,7 @@ or start each component separately
145 145  
146 146 * [Troubleshooting guide](https://github.com/gitlabhq/gitlab-public-wiki/wiki/Trouble-Shooting-Guide) contains solutions to common problems.
147 147  
148   -* [Support forum](https://groups.google.com/forum/#!forum/gitlabhq) and [Stack Overflow](http://stackoverflow.com/questions/tagged/gitlab) are the best places to ask questions. For example you can use it if you have questions about: permission denied errors, invisible repos, can't clone/pull/push or with web hooks that don't fire. Please search for similar issues before posting your own, there's a good chance somebody else had the same issue you have now and has resolved it. There are a lot of helpful GitLab users there who may be able to help you quickly. If your particular issue turns out to be a bug, it will find its way from there to a fix.
  148 +* [Mailing list](https://groups.google.com/forum/#!forum/gitlabhq) and [Stack Overflow](http://stackoverflow.com/questions/tagged/gitlab) are the best places to ask questions. For example you can use it if you have questions about: permission denied errors, invisible repos, can't clone/pull/push or with web hooks that don't fire. Please search for similar issues before posting your own, there's a good chance somebody else had the same issue you have now and has resolved it. There are a lot of helpful GitLab users there who may be able to help you quickly. If your particular issue turns out to be a bug, it will find its way from there to a fix.
149 149  
150 150 * [Feedback and suggestions forum](http://feedback.gitlab.com) is the place to propose and discuss new features for GitLab.
151 151  
... ...
app/views/admin/hooks/_data_ex.html.erb
1 1 <% data_ex_str = <<eos
2 2 1. Project created:
3 3 {
4   - "created_at": "2012-07-21T07:30:54Z",
5   - "event_name": "project_create",
6   - "name": "StoreCloud",
7   - "owner_email": "johnsmith@gmail.com",
8   - "owner_name": "John Smith",
9   - "path": "storecloud",
10   - "project_id": 74
  4 + "created_at": "2012-07-21T07:30:54Z",
  5 + "event_name": "project_create",
  6 + "name": "StoreCloud",
  7 + "owner_email": "johnsmith@gmail.com"
  8 + "owner_name": "John Smit",
  9 + "path": "stormcloud",
  10 + "path_with_namespace": "jsmith/stormcloud",
  11 + "project_id": 74,
11 12 }
12 13  
13 14 2. Project destroyed:
14 15 {
15   - "event_name": "project_destroy",
16   - "name": "Underscore",
17   - "owner_email": "johnsmith@gmail.com",
18   - "owner_name": "John Smith",
19   - "path": "underscore",
20   - "project_id": 73
  16 + "created_at": "2012-07-21T07:30:58Z",
  17 + "event_name": "project_destroy",
  18 + "name": "Underscore",
  19 + "owner_email": "johnsmith@gmail.com"
  20 + "owner_name": "John Smith",
  21 + "path": "underscore",
  22 + "path_with_namespace": "jsmith/underscore",
  23 + "project_id": 73,
21 24 }
22 25  
23 26 3. New Team Member:
... ...
app/views/help/index.html.haml
... ... @@ -26,7 +26,7 @@
26 26 on the top of this page
27 27 %li
28 28 Ask in our
29   - = link_to "support forum", "https://groups.google.com/forum/#!forum/gitlabhq"
  29 + = link_to "mailing list", "https://groups.google.com/forum/#!forum/gitlabhq"
30 30 or on
31 31 = link_to "Stack Overflow", "http://stackoverflow.com/questions/tagged/gitlab"
32 32 %li
... ...
app/views/profiles/account.html.haml
... ... @@ -3,7 +3,7 @@
3 3 %fieldset
4 4 %legend Social Accounts
5 5 .oauth_select_holder
6   - %p.hint Tip: Click on icon to activate sigin with one of the following services
  6 + %p.hint Tip: Click on icon to activate signin with one of the following services
7 7 - enabled_social_providers.each do |provider|
8 8 %span{class: oauth_active_class(provider) }
9 9 = link_to authbutton(provider, 32), omniauth_authorize_path(User, provider)
... ...
config/puma.rb.example
... ... @@ -61,6 +61,13 @@ bind &quot;unix://#{application_path}/tmp/sockets/gitlab.socket&quot;
61 61 #
62 62 # workers 2
63 63  
  64 +# GitLab cluster mode recommendations
  65 +# If you have more than 1 GB RAM, uncomment one of the following lines:
  66 +#
  67 +# workers 2 # if you have at least 1.5 GB RAM
  68 +# workers 3 # if you have at least 2 GB RAM
  69 +# workers 4 # if you have at least 2.5 GB RAM
  70 +
64 71 # Code to run when a worker boots to setup the process before booting
65 72 # the app.
66 73 #
... ...
config/unicorn.rb.example 0 → 100644
... ... @@ -0,0 +1,102 @@
  1 +# Sample verbose configuration file for Unicorn (not Rack)
  2 +#
  3 +# This configuration file documents many features of Unicorn
  4 +# that may not be needed for some applications. See
  5 +# http://unicorn.bogomips.org/examples/unicorn.conf.minimal.rb
  6 +# for a much simpler configuration file.
  7 +#
  8 +# See http://unicorn.bogomips.org/Unicorn/Configurator.html for complete
  9 +# documentation.
  10 +
  11 +# Use at least one worker per core if you're on a dedicated server,
  12 +# more will usually help for _short_ waits on databases/caches.
  13 +worker_processes 2
  14 +
  15 +# Since Unicorn is never exposed to outside clients, it does not need to
  16 +# run on the standard HTTP port (80), there is no reason to start Unicorn
  17 +# as root unless it's from system init scripts.
  18 +# If running the master process as root and the workers as an unprivileged
  19 +# user, do this to switch euid/egid in the workers (also chowns logs):
  20 +# user "unprivileged_user", "unprivileged_group"
  21 +
  22 +# Help ensure your application will always spawn in the symlinked
  23 +# "current" directory that Capistrano sets up.
  24 +working_directory "/home/git/gitlab/current" # available in 0.94.0+
  25 +
  26 +# listen on both a Unix domain socket and a TCP port,
  27 +# we use a shorter backlog for quicker failover when busy
  28 +listen "/home/git/gitlab/tmp/sockets/gitlab.socket", :backlog => 64
  29 +listen 8080, :tcp_nopush => true
  30 +
  31 +# nuke workers after 30 seconds instead of 60 seconds (the default)
  32 +timeout 30
  33 +
  34 +# feel free to point this anywhere accessible on the filesystem
  35 +pid "/home/git/gitlab/tmp/pids/unicorn.pid"
  36 +
  37 +# By default, the Unicorn logger will write to stderr.
  38 +# Additionally, ome applications/frameworks log to stderr or stdout,
  39 +# so prevent them from going to /dev/null when daemonized here:
  40 +stderr_path "/home/git/gitlab/log/unicorn.stderr.log"
  41 +stdout_path "/home/git/gitlab/log/unicorn.stdout.log"
  42 +
  43 +# combine Ruby 2.0.0dev or REE with "preload_app true" for memory savings
  44 +# http://rubyenterpriseedition.com/faq.html#adapt_apps_for_cow
  45 +preload_app true
  46 +GC.respond_to?(:copy_on_write_friendly=) and
  47 + GC.copy_on_write_friendly = true
  48 +
  49 +# Enable this flag to have unicorn test client connections by writing the
  50 +# beginning of the HTTP headers before calling the application. This
  51 +# prevents calling the application for connections that have disconnected
  52 +# while queued. This is only guaranteed to detect clients on the same
  53 +# host unicorn runs on, and unlikely to detect disconnects even on a
  54 +# fast LAN.
  55 +check_client_connection false
  56 +
  57 +before_fork do |server, worker|
  58 + # the following is highly recomended for Rails + "preload_app true"
  59 + # as there's no need for the master process to hold a connection
  60 + defined?(ActiveRecord::Base) and
  61 + ActiveRecord::Base.connection.disconnect!
  62 +
  63 + # The following is only recommended for memory/DB-constrained
  64 + # installations. It is not needed if your system can house
  65 + # twice as many worker_processes as you have configured.
  66 + #
  67 + # # This allows a new master process to incrementally
  68 + # # phase out the old master process with SIGTTOU to avoid a
  69 + # # thundering herd (especially in the "preload_app false" case)
  70 + # # when doing a transparent upgrade. The last worker spawned
  71 + # # will then kill off the old master process with a SIGQUIT.
  72 + # old_pid = "#{server.config[:pid]}.oldbin"
  73 + # if old_pid != server.pid
  74 + # begin
  75 + # sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
  76 + # Process.kill(sig, File.read(old_pid).to_i)
  77 + # rescue Errno::ENOENT, Errno::ESRCH
  78 + # end
  79 + # end
  80 + #
  81 + # Throttle the master from forking too quickly by sleeping. Due
  82 + # to the implementation of standard Unix signal handlers, this
  83 + # helps (but does not completely) prevent identical, repeated signals
  84 + # from being lost when the receiving process is busy.
  85 + # sleep 1
  86 +end
  87 +
  88 +after_fork do |server, worker|
  89 + # per-process listener ports for debugging/admin/migrations
  90 + # addr = "127.0.0.1:#{9293 + worker.nr}"
  91 + # server.listen(addr, :tries => -1, :delay => 5, :tcp_nopush => true)
  92 +
  93 + # the following is *required* for Rails + "preload_app true",
  94 + defined?(ActiveRecord::Base) and
  95 + ActiveRecord::Base.establish_connection
  96 +
  97 + # if preload_app is true, then you may also want to check and
  98 + # restart any other shared sockets/descriptors such as Memcached,
  99 + # and Redis. TokyoCabinet file handles are safe to reuse
  100 + # between any number of forked children (assuming your kernel
  101 + # correctly implements pread()/pwrite() system calls)
  102 +end
... ...
doc/api/README.md
... ... @@ -81,3 +81,8 @@ When listing resources you can pass the following parameters:
81 81 + [System Hooks](system_hooks.md)
82 82 + [Groups](groups.md)
83 83 + [User Teams](user_teams.md)
  84 +
  85 +## Clients
  86 +
  87 ++ [php-gitlab-api](https://github.com/m4tthumphrey/php-gitlab-api) - PHP
  88 ++ [Ruby Wrapper](https://github.com/NARKOZ/gitlab) - Ruby
... ...
doc/install/installation.md
... ... @@ -173,9 +173,6 @@ You can change `5-3-stable` to `master` if you want the *bleeding edge* version,
173 173 # Create directory for satellites
174 174 sudo -u git -H mkdir /home/git/gitlab-satellites
175 175  
176   - # Make config/database.yml readable to git only
177   - sudo -u git -H chmod o-rwx config/database.yml
178   -
179 176 # Create directories for sockets/pids and make sure GitLab can write to them
180 177 sudo -u git -H mkdir tmp/pids/
181 178 sudo -u git -H mkdir tmp/sockets/
... ... @@ -218,6 +215,9 @@ Make sure to edit both `gitlab.yml` and `puma.rb` to match your setup.
218 215 # Change 'secure password' with the value you have given to $password
219 216 # You can keep the double quotes around the password
220 217 sudo -u git -H vim config/database.yml
  218 +
  219 + # Make config/database.yml readable to git only
  220 + sudo -u git -H chmod o-rwx config/database.yml
221 221  
222 222 ## Install Gems
223 223  
... ... @@ -226,10 +226,10 @@ Make sure to edit both `gitlab.yml` and `puma.rb` to match your setup.
226 226 sudo gem install charlock_holmes --version '0.6.9.4'
227 227  
228 228 # For MySQL (note, the option says "without ... postgres")
229   - sudo -u git -H bundle install --deployment --without development test postgres
  229 + sudo -u git -H bundle install --deployment --without development test postgres unicorn aws
230 230  
231 231 # Or for PostgreSQL (note, the option says "without ... mysql")
232   - sudo -u git -H bundle install --deployment --without development test mysql
  232 + sudo -u git -H bundle install --deployment --without development test mysql unicorn aws
233 233  
234 234  
235 235 ## Initialize Database and Activate Advanced Features
... ...
lib/gitlab/blacklist.rb
... ... @@ -3,7 +3,7 @@ module Gitlab
3 3 extend self
4 4  
5 5 def path
6   - %w(admin dashboard groups help profile projects search public assets u s teams merge_requests issues users snippets )
  6 + %w(admin dashboard groups help profile projects search public assets u s teams merge_requests issues users snippets services)
7 7 end
8 8 end
9 9 end
... ...