Commit a1e5d4e8b5788087cba478530e3a0352cdef363e

Authored by Dmitriy Zaporozhets
2 parents d36669d8 bb35c2d3

Merge pull request #6382 from jvanbaarsen/contribution-guide-link

Contribution guide link
Gemfile
... ... @@ -32,7 +32,7 @@ gem 'omniauth-github'
32 32  
33 33 # Extracting information from a git repository
34 34 # Provide access to Gitlab::Git library
35   -gem "gitlab_git", '~> 5.4.0'
  35 +gem "gitlab_git", '~> 5.5.0'
36 36  
37 37 # Ruby/Rack Git Smart-HTTP Server Handler
38 38 gem 'gitlab-grack', '~> 2.0.0.pre', require: 'grack'
... ...
Gemfile.lock
... ... @@ -181,7 +181,7 @@ GEM
181 181 charlock_holmes (~> 0.6.6)
182 182 escape_utils (~> 0.2.4)
183 183 mime-types (~> 1.19)
184   - gitlab_git (5.4.0)
  184 + gitlab_git (5.5.0)
185 185 activesupport (~> 4.0.0)
186 186 charlock_holmes (~> 0.6.9)
187 187 gitlab-grit (~> 2.6.1)
... ... @@ -590,7 +590,7 @@ DEPENDENCIES
590 590 gitlab-gollum-lib (~> 1.1.0)
591 591 gitlab-grack (~> 2.0.0.pre)
592 592 gitlab-linguist (~> 3.0.0)
593   - gitlab_git (~> 5.4.0)
  593 + gitlab_git (~> 5.5.0)
594 594 gitlab_meta (= 6.0)
595 595 gitlab_omniauth-ldap (= 1.0.4)
596 596 gon (~> 5.0.0)
... ...
app/models/repository.rb
... ... @@ -134,6 +134,7 @@ class Repository
134 134 Rails.cache.delete(cache_key(:commit_count))
135 135 Rails.cache.delete(cache_key(:graph_log))
136 136 Rails.cache.delete(cache_key(:readme))
  137 + Rails.cache.delete(cache_key(:contribution_guide))
137 138 end
138 139  
139 140 def graph_log
... ... @@ -167,6 +168,12 @@ class Repository
167 168 end
168 169 end
169 170  
  171 + def contribution_guide
  172 + Rails.cache.fetch(cache_key(:contribution_guide)) do
  173 + tree(:head).contribution_guide
  174 + end
  175 + end
  176 +
170 177 def head_commit
171 178 commit(self.root_ref)
172 179 end
... ...
app/models/tree.rb
1 1 class Tree
2   - attr_accessor :entries, :readme
  2 + attr_accessor :entries, :readme, :contribution_guide
3 3  
4 4 def initialize(repository, sha, path = '/')
5 5 path = '/' if path.blank?
... ... @@ -10,6 +10,11 @@ class Tree
10 10 readme_path = path == '/' ? readme_tree.name : File.join(path, readme_tree.name)
11 11 @readme = Gitlab::Git::Blob.find(git_repo, sha, readme_path)
12 12 end
  13 +
  14 + if contribution_tree = @entries.find(&:contribution?)
  15 + contribution_path = path == '/' ? contribution_tree.name : File.join(path, contribution_tree.name)
  16 + @contribution_guide = Gitlab::Git::Blob.find(git_repo, sha, contribution_path)
  17 + end
13 18 end
14 19  
15 20 def trees
... ...
app/views/projects/issues/_form.html.haml
1 1 %div.issue-form-holder
2 2 %h3.page-title= @issue.new_record? ? "New Issue" : "Edit Issue ##{@issue.iid}"
3 3 %hr
  4 + - if @repository.contribution_guide && !@issue.persisted?
  5 + - contribution_guide_url = project_blob_path(@project, tree_join(@repository.root_ref, @repository.contribution_guide.name))
  6 + .alert.alert-info.col-sm-10.col-sm-offset-2
  7 + ="Please review the <strong>#{link_to "guidelines for contribution", contribution_guide_url}</strong> to this repository.".html_safe
4 8 = form_for [@project, @issue], html: { class: 'form-horizontal issue-form' } do |f|
5 9 -if @issue.errors.any?
6 10 .alert.alert-danger
... ...
app/views/projects/merge_requests/_form.html.haml
  1 +- if @repository.contribution_guide && !@merge_request.persisted?
  2 + - contribution_guide_url = project_blob_path(@project, tree_join(@repository.root_ref, @repository.contribution_guide.name))
  3 + .alert.alert-info.col-sm-10.col-sm-offset-2
  4 + ="Please review the <strong>#{link_to "guidelines for contribution", contribution_guide_url}</strong> to this repository.".html_safe
1 5 = form_for [@project, @merge_request], html: { class: "merge-request-form form-horizontal" } do |f|
2 6 -if @merge_request.errors.any?
3 7 .alert.alert-danger
... ...