Check that hooks directory exists before attempting to call realpath
This MR checks that the hooks directories actually exist before attempting to resolve their `realpath`.
Users who attempted to restore from source to an omnibus installation would get ugly errors when running `gitlab-rake gitlab:check`:
```
Errno::ENOENT: No such file or directory @ realpath_rec - /var/opt/gitlab/git-data/repositories/Wanda/www.git/hooks
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/check.rake:488:in `realpath'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/check.rake:488:in `block in check_repos_hooks_directory_is_link'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/activerecord-4.1.11/lib/active_record/relation/batches.rb:52:in `block (2 levels) in find_each'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/activerecord-4.1.11/lib/active_record/relation/batches.rb:52:in `each'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/activerecord-4.1.11/lib/active_record/relation/batches.rb:52:in `block in find_each'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/activerecord-4.1.11/lib/active_record/relation/batches.rb:126:in `find_in_batches'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/activerecord-4.1.11/lib/active_record/relation/batches.rb:51:in `find_each'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/activerecord-4.1.11/lib/active_record/querying.rb:9:in `find_each'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/check.rake:482:in `check_repos_hooks_directory_is_link'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/check.rake:343:in `block (3 levels) in <top (required)>'
Tasks: TOP => gitlab:check => gitlab:gitlab_shell:check
```
Closes#2121#2082
See merge request !1068
Add gitlab-shell to error message to give user a clue that something may be wrong there.
Ran into this in #2082. User was told that repositories were created when they were
not due to hooks symlink being wrong.
This custom formatter for rouge is needed to generate HTML output
specifically for gitlab. Since its usecase is mostly suitable for
gitlab it had been rejected upstream:
https://github.com/jneen/rouge/pull/268
Thanks a lot to @stanhu, @jneen and @tsigo for review!
I have mainly created the rugments fork for the purpose of improving
gitlab's highlighting. Nowadays IMO it works way better than the old
highlight.js solution. But the development is stuck on my side because
of a couple of personal reasons:
* I have finished my studies; last months I was writing my master
thesis. So there was a huge time problem. I am sorry for that.
* I had to move to Munich due to getting a (paid) job. Searching a
flat here is horrible... :)
* Last but not least, maintaining the same code base in two seperate
projects is a mess.
I have decided to switch back to rouge due to several reasons:
* In the beginning I was quite motivated, but since I start
working on my new job next week, the best solution IMO is
switching back to upstream rouge.
* Rouge is continously improving:
https://github.com/jneen/rouge/blob/master/CHANGELOG.mdhttp://rouge.jneen.net/
* There should be absolutely no regressions with this change. Most
likely this pull request will almost fix some minor bugs.
* One less gem in gitlab is a good thing. since Gitlab is quite a
huge bundle of gems. Reducing complexity should be a major
milestone.
Thanks a lot to @stanhu and @jneen for the review!
https://gitlab.com/gitlab-org/gitlab-git-http-server
This change introduces the GITLAB_GRACK_AUTH_ONLY environment
variable. When set, Grack requests to GitLab will only respond with
the user's GL_ID (if the request is OK) or an error. This allows
gitlab-git-http-server to use the main GitLab application as an
authentication and authorization backend.
If we like how this works we should drop the GITLAB_GRACK_AUTH_ONLY
variable at some point in the future.
Starting with migration `20150717130904` commit count is stored in the
database. For existing projects it defaults to `0` and is updated to the
correct value when commits are pushed.
The newly introduced rake task updates the commit count for all projects
which have not been updated yet.
Refs !986, !989, #2040.
Changes for gmail inbox actions
Related to the ongoing efforts to get Gmail inbox actions for GitLab.com in #1517
Not using `mdash` would break the rendering of the html email by switching `Content-Transfer-Encoding` to `quoted-printable` for every email.
Removed the rake task and docs to prevent users from sending dummy emails which might cause application rejection.
See merge request !1024
The existing behavior of the backups is to overwrite whatever data
was still there in the scratch directories. This broke when we added
a 'gzip' step because 'gzip database.sql' will fail if 'database.sql.gz'
already exists. Doing 'rm -f database.sql.gz' before the 'gzip'
avoids this failure.
GoogleCode importer: Do not care about casing of image file extensions
When a GoogleCode repository contains an attached image with an UPPERCASE file extension, it's not inlined.
/CC @DouweM
See merge request !1003
Use native Postgres database cleaning during backup restore
We were using hacks to drop tables etc during a Postgres backup
restore. With this change, we let pg_dump insert the DROP TABLE
statements it needs at the start of the SQL dump.
See merge request !1891
We were using hacks to drop tables etc during a Postgres backup
restore. With this change, we let pg_dump insert the DROP TABLE
statements it needs at the start of the SQL dump.
Compress database backup
Restore handles both cases: uncompressed and compressed backup. As an improvement `IO.popen` can be used.
/cc @jacobvosmaer
See merge request !873
Fix wrong order of issues when importing from github
### 1. What does this MR do?
The order of issues imported from GitHub is fixed.
### 2. Are there points in the code the reviewer needs to double check?
Nothing.
### 3. Why was this MR needed?
The default behaviors of GitHub API at listing issues are sort: :created and direction: :desc.
See GitHub API details at https://developer.github.com/v3/issues/#list-issues.
### 4. What are the relevant issue numbers / Feature requests?
Fixes#1791
### 5. Screenshots (if relevant)
Nothing
See merge request !898
Rename abilities to correspond contoller/model action names
write_ was renamed to create_
modify_ was renamed to update_
So now in update action we have next code
```
def create
can?(current_user, :create_issue, @issue)
end
def update
can?(current_user, :update_issue, @issue)
end
```
See merge request !896
write_ was renamed to create_
modify_ was renamed to update_
So now in update action we have next code
def create
can?(current_user, :create_issue, @issue)
end
def update
can?(current_user, :update_issue, @issue)
end
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Fix downloading of patches on public merge requests when user logged out
### What does this MR do?
This MR makes it possible to download a diff patch on a public merge request when a user is logged out.
### Why was this MR needed?
An Error 500 would result when a user attempted to click on the "Email Patches" or "Plain Diff" button:
```
NoMethodError - undefined method `id' for nil:NilClass:
lib/gitlab/backend/shell_env.rb:9:in `set_env'
lib/gitlab/satellite/action.rb:20:in `in_locked_and_timed_satellite'
lib/gitlab/satellite/merge_action.rb:49:in `diff_in_satellite'
app/models/merge_request.rb:219:in `to_diff'
app/controllers/projects/merge_requests_controller.rb:42:in `block (2 levels) in show'
```
### What are the relevant issue numbers?
* Closes#1225
* Closes#1854 (dup)
* Closes#1858 (dup)
See merge request !872
Close#178 Nginx conf default_host documentation
This closes#178
We're just making it clear that some nginx installs such as by default on recent Ubuntu's, the /etc/nginx/sites-enabled/default file will conflict the listen line of the gitlab nginx conf's due to the default_server directive.
changed installation.md to identify the issue to a user
added notes to both nginx configs for gitlab and gitlab-ssl
[ci-skip
See merge request !225
Avoid "cannot copy directory ... to itself" error on restore (on Docker?)
rake gitlab:backup:restore fails for me in my Docker-hosted Gitlab-CE instance; during the restore, any existing "uploads" directory is backed up by [this code](https://gitlab.com/gitlab-org/gitlab-ce/blob/833bc30/lib/backup/uploads.rb#L23) --
```ruby
def backup_existing_uploads_dir
timestamped_uploads_path = File.join(app_uploads_dir, '..', "uploads.#{Time.now.to_i}")
if File.exists?(app_uploads_dir)
FileUtils.mv(app_uploads_dir, timestamped_uploads_path)
end
end
```
When this executes for me, the ```FileUtils.mv``` parameters are "/home/git/gitlab/public/uploads" and "/home/git/gitlab/public/uploads/../uploads.1407019546"; an exception is raised, producing this double stacktrace:
```
ArgumentError: cannot copy directory /home/git/gitlab/public/uploads to itself /home/git/gitlab/public/uploads/../uploads.1407019546
/home/git/gitlab/lib/backup/uploads.rb:26:in `backup_existing_uploads_dir'
/home/git/gitlab/lib/backup/uploads.rb:18:in `restore'
/home/git/gitlab/lib/tasks/gitlab/backup.rake:73:in `block (4 levels) in <top (required)>'
/home/git/gitlab/lib/tasks/gitlab/backup.rake:30:in `block (3 levels) in <top (required)>'
Errno::EXDEV: Invalid cross-device link @ sys_fail2 - (/home/git/gitlab/public/uploads, /home/git/gitlab/public/uploads/../uploads.1407019546)
/home/git/gitlab/lib/backup/uploads.rb:26:in `backup_existing_uploads_dir'
/home/git/gitlab/lib/backup/uploads.rb:18:in `restore'
/home/git/gitlab/lib/tasks/gitlab/backup.rake:73:in `block (4 levels) in <top (required)>'
/home/git/gitlab/lib/tasks/gitlab/backup.rake:30:in `block (3 levels) in <top (required)>'
Tasks: TOP => gitlab:backup:uploads:restore
(See full trace by running task with --trace)
```
I'm guessing from the first message that ```mv``` walks the destination path to ensure that we're not moving the source into itself -- it doesn't get as far as interpreting the '..', but throws when it sees that the destination appears to start with the source path.
The second stacktrace I have no clue about - maybe it's AUFS- or Docker-related?
I attempted to reproduce this separately with the omnibus distribution in a fresh Ubuntu 14.04 install without Docker involved, and was unable to - backup and restore worked fine. I then tested my theory by FileUtils.expand_path-ing the destination in my own Docker setup code, and that made the problem go away, so that's what this merge request does.
(I'm using backups created and restored on gitlab-ce 7-1-stable, at facfec4b2; this is on Ubuntu 14.04 with Docker 1.1.1)
I know I'd look askance at a PR without tests for an unreproducable problem, but even if this is rejected, I'm submitting it anyway because maybe someone else will Google it and find it useful. I'm happy to do more work to improve this if you have suggestions.
See merge request !165
Code tweaks in 45e9150a caused the ldap_person method to not return expected results.
Improved tests to cover the ldap_person method, which was previously stubbed.
Update ssl ciphers
Removing all DHE suites from Nginx template SSL ciphers.
This will deny forward secrecy for Android 2.3.7, Java 6 and OpenSSL 0.9.8. but will give A+ rating on SSL labs.
Google sites also do not have DHE suites, [source](https://community.qualys.com/blogs/securitylabs/2013/06/25/ssl-labs-deploying-forward-secrecy)
> Google's sites, for example, tend to not have any DHE suites in their configuration. [2013]
See merge request !814
Now we can simply loop through all themes, among other things.
This also removes the `dark_theme` / `light_theme` classes and the
`theme_type` helper, since they weren't used anywhere.
Add a note that changing example configuration files requires changing omnibus-gitlab.
Keeping track of changes in these files is not easy and they usually require change in omnibus-gitlab.
Added a note so everyone is aware of this.
Similar is added to gitlab-shell and gitlab-ci.
Discussed in gitlab-org/omnibus-gitlab#605
See merge request !800
Changes back-ported from rspec3 branch
This is just breaking up the large `road-to-rspec-3` branch a bit. Each of these commits have been cherry-picked and would be good to have in place before the upgrade.
See merge request !792
update fog to 1.25.0 and add multipart upload support
This merge will fix backup uploading problems to s3, closing gitlab-org/gitlab-ce#1059
See merge request !789