Skip to content

Commit 76f164a

Browse files
author
Nicolas Rodriguez
authored
Merge pull request #727 from AlphaNodes/4.0-stable
Redmine 4 changes
2 parents 28d46c3 + fe170fa commit 76f164a

File tree

402 files changed

+12794
-8327
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

402 files changed

+12794
-8327
lines changed

Diff for: .rubocop.yml

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
require:
2+
- rubocop-rspec
3+
- rubocop-performance
4+
5+
Rails:
6+
Enabled: true
7+
8+
AllCops:
9+
TargetRubyVersion: 2.3
10+
TargetRailsVersion: 5.2
11+
Include:
12+
- '**/*.ruby'
13+
- '**/*.rake'
14+
- '**/*.rb'
15+
- '**/*.rsb'
16+
- '**/Rakefile'
17+
- '**/Gemfile'
18+
19+
Metrics/AbcSize:
20+
Max: 65
21+
22+
Metrics/BlockLength:
23+
Max: 60
24+
25+
Metrics/ClassLength:
26+
Enabled: false
27+
28+
Metrics/CyclomaticComplexity:
29+
Max: 20
30+
31+
Metrics/LineLength:
32+
Max: 140
33+
34+
Metrics/MethodLength:
35+
Max: 60
36+
37+
Metrics/ModuleLength:
38+
Enabled: false
39+
40+
Metrics/PerceivedComplexity:
41+
Max: 25
42+
43+
Rails/SkipsModelValidations:
44+
Enabled: false
45+
46+
Rails/CreateTableWithTimestamps:
47+
Enabled: false
48+
49+
# app/model/application_record.rb is missing in redmine, we can't use ApplicationRecord
50+
Rails/ApplicationRecord:
51+
Enabled: false
52+
53+
Style/FrozenStringLiteralComment:
54+
Enabled: false
55+
56+
Style/AutoResourceCleanup:
57+
Enabled: true
58+
59+
Style/Documentation:
60+
Enabled: false

Diff for: .travis.yml

+4-15
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ language: ruby
22
sudo: required
33
cache: bundler
44
rvm:
5-
- 2.5.3
6-
- 2.4.5
5+
- 2.6.3
6+
- 2.4.6
77
- 2.3.8
88
gemfile:
99
- Gemfile
@@ -23,19 +23,8 @@ env:
2323
- POSTGRES_DATABASE=redmine
2424
- POSTGRES_USER=postgres
2525
matrix:
26-
- REDMINE_VERSION=3.4-stable USE_SVN=true DATABASE_ADAPTER=mysql
27-
- REDMINE_VERSION=3.4-stable USE_SVN=true DATABASE_ADAPTER=postgresql
28-
- REDMINE_VERSION=3.3-stable USE_SVN=true DATABASE_ADAPTER=mysql
29-
- REDMINE_VERSION=3.3-stable USE_SVN=true DATABASE_ADAPTER=postgresql
30-
31-
- REDMINE_VERSION=3.4.6 DATABASE_ADAPTER=mysql
32-
- REDMINE_VERSION=3.4.6 DATABASE_ADAPTER=postgresql
33-
- REDMINE_VERSION=3.3.8 DATABASE_ADAPTER=mysql
34-
- REDMINE_VERSION=3.3.8 DATABASE_ADAPTER=postgresql
35-
matrix:
36-
allow_failures:
37-
- rvm: 2.5.3
38-
- rvm: 2.4.5
26+
- REDMINE_VERSION=4.0-stable DATABASE_ADAPTER=mysql USE_SVN=true
27+
- REDMINE_VERSION=4.0-stable DATABASE_ADAPTER=postgresql USE_SVN=true
3928
before_install:
4029
- cd ../..
4130
- sudo apt-get update -qq

Diff for: CHANGELOG.md

+10-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
## CHANGELOG
22

3+
### 4.0.0
4+
5+
* compatible with Redmine 4 (drop Redmine 3.x support)
6+
* drop redmine_bootstrap_kit required plugin
7+
* requires additionals plugin for latest fontawesome, slim and deface support -> and better maintenance
8+
* switch from haml to slim templates (because this is already used in additionals plugin)
9+
* libraries high_charts and bootstrap are moved to this plugin (TODO: high_charts should be migrationed to charts.js, which comes with Redmine 4. Bootstrap should be drop to vanila redmine, to get better theme support)
10+
311
### 1.2.3 - 2017-07-17
412

513
* Merge [#640](https://github.com/jbox-web/redmine_git_hosting/pull/640) ([Views] Fix typo while rendering partial repositories/download_revision)
@@ -46,7 +54,7 @@
4654
### 1.2.0 - 2015-11-18
4755

4856
* Enhance protected branches permissions support : [#389](https://github.com/jbox-web/redmine_git_hosting/issues/389), [#414](https://github.com/jbox-web/redmine_git_hosting/issues/414)
49-
* Add support for [Gitolite options](http://gitolite.com/gitolite/options.html) : [#415](https://github.com/jbox-web/redmine_git_hosting/issues/415)
57+
* Add support for [Gitolite options](https://gitolite.com/gitolite/options.html) : [#415](https://github.com/jbox-web/redmine_git_hosting/issues/415)
5058
* Enhance global repository access : [#465](https://github.com/jbox-web/redmine_git_hosting/issues/465). You can now choose if Redmine has RW access on all repositories.
5159
* Improve validation of plugin settings. Validation errors are now displayed in the view.
5260
* Use our own Rack implementation to render Gitolite hooks
@@ -333,7 +341,7 @@ gitolite-admin.git/
333341

334342
**Important !**
335343

336-
As explained in [Gitolite documentation](http://gitolite.com/gitolite/non-core.html#localcode) hooks should be installed in a separate directory.
344+
As explained in [Gitolite documentation](https://gitolite.com/gitolite/non-core.html#localcode) hooks should be installed in a separate directory.
337345
This new version fixes Gitolite hooks install path for Gitolite v3.
338346

339347
Hooks are now stored by default in ```<gitolite user home dir>/local```. You can override this in the plugin settings.

Diff for: Gemfile

+14-16
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@ gem 'gitolite-rugged', git: 'https://github.com/jbox-web/gitolite-rugged.git', t
44
# Ruby/Rack Git Smart-HTTP Server Handler
55
gem 'gitlab-grack', '~> 2.0.0', git: 'https://github.com/jbox-web/grack.git', require: 'grack', branch: 'fix_gemfile'
66

7-
# HAML views
8-
gem 'haml-rails'
9-
107
# Memcached client for GitCache
118
gem 'dalli'
129

@@ -15,45 +12,46 @@ gem 'redis'
1512
gem 'hiredis'
1613

1714
# Markdown rendering
15+
gem 'escape_utils'
1816
gem 'html-pipeline'
19-
gem 'rouge'
20-
gem 'task_list'
2117
gem 'rinku'
18+
gem 'task_list'
2219

2320
# Syntaxic coloration
2421
gem 'github-markup'
2522
gem 'RedCloth'
2623
gem 'org-ruby'
2724
gem 'creole'
2825
gem 'asciidoctor'
29-
gem 'rdoc', '>= 2.4.2'
3026

3127
# Rack parser for Hrack
3228
gem 'rack-parser', require: 'rack/parser'
3329

30+
# temp autoloading fix
31+
gem 'sidekiq'
32+
gem 'sshkey'
33+
3434
group :development, :test do
3535
gem 'rspec'
36-
gem 'rspec-rails'
36+
gem 'rspec-rails', '~> 3.5', '>= 3.5.2'
3737

3838
gem 'shoulda', '~> 3.5.0'
39-
gem 'shoulda-matchers', '~> 2.7.0'
4039
gem 'shoulda-context'
40+
gem 'shoulda-matchers', '~> 2.7.0'
4141

42-
gem 'factory_girl'
43-
gem 'factory_girl_rails'
44-
gem 'faker', '1.7.3'
45-
gem 'sshkey'
4642
gem 'database_cleaner'
43+
gem 'factory_bot_rails', '< 5.0'
44+
45+
gem 'rubocop', require: false
46+
gem 'rubocop-rspec'
4747

4848
# Publish to CodeClimate
4949
gem 'codeclimate-test-reporter', require: false
5050
end
5151

5252
group :development do
53-
gem 'spring'
54-
gem 'spring-commands-rspec'
55-
gem 'quiet_assets'
56-
5753
gem 'brakeman'
5854
gem 'bullet'
55+
gem 'spring'
56+
gem 'spring-commands-rspec'
5957
end

Diff for: app/controllers/archived_repositories_controller.rb

+6-11
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,16 @@
11
class ArchivedRepositoriesController < RepositoriesController
2+
skip_before_action :authorize
3+
skip_before_action :find_project_repository, only: :index
24

3-
skip_before_filter :authorize
4-
skip_before_filter :find_project_repository, only: :index
5-
6-
before_filter :can_view_archived_projects
7-
5+
before_action :can_view_archived_projects
86

97
def index
108
@archived_projects = Project.where("status = #{Project::STATUS_ARCHIVED}").includes(:repositories)
119
end
1210

13-
1411
private
1512

16-
17-
def can_view_archived_projects
18-
render_403 unless User.current.admin?
19-
end
20-
13+
def can_view_archived_projects
14+
render_403 unless User.current.admin?
15+
end
2116
end

Diff for: app/controllers/download_git_revision_controller.rb

+5-6
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@ class DownloadGitRevisionController < ApplicationController
22

33
include XitoliteRepositoryFinder
44

5-
before_filter :find_xitolite_repository
6-
before_filter :can_download_git_revision
7-
before_filter :set_download
8-
before_filter :validate_download
9-
10-
helper :redmine_bootstrap_kit
5+
before_action :find_xitolite_repository
6+
before_action :can_download_git_revision
7+
before_action :set_download
8+
before_action :validate_download
119

10+
helper :bootstrap_kit
1211

1312
def index
1413
begin

Diff for: app/controllers/gitolite_public_keys_controller.rb

+47-59
Original file line numberDiff line numberDiff line change
@@ -1,100 +1,88 @@
11
class GitolitePublicKeysController < ApplicationController
2-
32
include RedmineGitHosting::GitoliteAccessor::Methods
43

5-
before_filter :require_login
6-
before_filter :find_user
7-
before_filter :find_gitolite_public_key, only: [:destroy]
4+
before_action :require_login
5+
before_action :find_user
6+
before_action :find_gitolite_public_key, only: [:destroy]
87

98
helper :gitolite_public_keys
10-
helper :redmine_bootstrap_kit
11-
9+
helper :bootstrap_kit
1210

1311
def index
1412
@gitolite_user_keys = @user.gitolite_public_keys.user_key.order('title ASC, created_at ASC')
1513
@gitolite_deploy_keys = @user.gitolite_public_keys.deploy_key.order('title ASC, created_at ASC')
1614
end
1715

18-
1916
def create
2017
if params[:create_button]
21-
@gitolite_public_key = @user.gitolite_public_keys.new(params[:gitolite_public_key])
18+
@gitolite_public_key = @user.gitolite_public_keys.new
19+
@gitolite_public_key.safe_attributes = params[:gitolite_public_key]
2220
if @gitolite_public_key.save
2321
create_ssh_key(@gitolite_public_key)
2422
flash[:notice] = l(:notice_public_key_created, title: view_context.keylabel(@gitolite_public_key))
25-
redirect_to @redirect_url
2623
else
2724
flash[:error] = @gitolite_public_key.errors.full_messages.to_sentence
28-
redirect_to @redirect_url
2925
end
26+
redirect_to @redirect_url
3027
else
3128
redirect_to @cancel_url
3229
end
3330
end
3431

35-
3632
def destroy
37-
if request.delete?
38-
if @gitolite_public_key.user == @user || @user.admin?
39-
if @gitolite_public_key.destroy
40-
destroy_ssh_key(@gitolite_public_key)
41-
flash[:notice] = l(:notice_public_key_deleted, title: view_context.keylabel(@gitolite_public_key))
42-
end
43-
redirect_to @redirect_url
44-
else
45-
render_403
33+
return unless request.delete?
34+
35+
if @gitolite_public_key.user == @user || @user.admin?
36+
if @gitolite_public_key.destroy
37+
destroy_ssh_key(@gitolite_public_key)
38+
flash[:notice] = l(:notice_public_key_deleted, title: view_context.keylabel(@gitolite_public_key))
4639
end
40+
redirect_to @redirect_url
41+
else
42+
render_403
4743
end
4844
end
4945

50-
5146
private
5247

53-
54-
def find_user
55-
if params[:user_id]
56-
set_user_from_params
57-
else
58-
set_user_from_current_user
59-
end
60-
end
61-
62-
63-
def set_user_from_params
64-
@user = (params[:user_id] == 'current') ? User.current : User.find_by_id(params[:user_id])
65-
if @user
66-
@cancel_url = @redirect_url = url_for(controller: 'users', action: 'edit', id: params[:user_id], tab: 'keys')
67-
else
68-
render_404
69-
end
70-
end
71-
72-
73-
def set_user_from_current_user
74-
if User.current.allowed_to_create_ssh_keys?
75-
@user = User.current
76-
@redirect_url = url_for(controller: 'gitolite_public_keys', action: 'index')
77-
@cancel_url = url_for(controller: 'my', action: 'account')
78-
else
79-
render_403
80-
end
48+
def find_user
49+
if params[:user_id]
50+
set_user_from_params
51+
else
52+
set_user_from_current_user
8153
end
54+
end
8255

83-
84-
def find_gitolite_public_key
85-
@gitolite_public_key = @user.gitolite_public_keys.find(params[:id])
86-
rescue ActiveRecord::RecordNotFound => e
56+
def set_user_from_params
57+
@user = params[:user_id] == 'current' ? User.current : User.find_by(id: params[:user_id])
58+
if @user
59+
@cancel_url = @redirect_url = url_for(controller: 'users', action: 'edit', id: params[:user_id], tab: 'keys')
60+
else
8761
render_404
8862
end
63+
end
8964

90-
91-
def create_ssh_key(ssh_key)
92-
gitolite_accessor.create_ssh_key(ssh_key)
65+
def set_user_from_current_user
66+
if User.current.allowed_to_create_ssh_keys?
67+
@user = User.current
68+
@redirect_url = url_for(controller: 'gitolite_public_keys', action: 'index')
69+
@cancel_url = url_for(controller: 'my', action: 'account')
70+
else
71+
render_403
9372
end
73+
end
9474

75+
def find_gitolite_public_key
76+
@gitolite_public_key = @user.gitolite_public_keys.find(params[:id])
77+
rescue ActiveRecord::RecordNotFound
78+
render_404
79+
end
9580

96-
def destroy_ssh_key(ssh_key)
97-
gitolite_accessor.destroy_ssh_key(ssh_key)
98-
end
81+
def create_ssh_key(ssh_key)
82+
gitolite_accessor.create_ssh_key(ssh_key)
83+
end
9984

85+
def destroy_ssh_key(ssh_key)
86+
gitolite_accessor.destroy_ssh_key(ssh_key)
87+
end
10088
end

0 commit comments

Comments
 (0)