diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/api/files.rb | 4 | ||||
| -rw-r--r-- | lib/backup/builds.rb | 2 | ||||
| -rw-r--r-- | lib/backup/uploads.rb | 2 | ||||
| -rw-r--r-- | lib/ci/gitlab_ci_yaml_processor.rb | 64 | ||||
| -rw-r--r-- | lib/gitlab/project_search_results.rb | 16 | ||||
| -rw-r--r-- | lib/tasks/spinach.rake | 6 | 
6 files changed, 59 insertions, 35 deletions
| diff --git a/lib/api/files.rb b/lib/api/files.rb index 308c84dd135..a7a768f8895 100644 --- a/lib/api/files.rb +++ b/lib/api/files.rb @@ -43,7 +43,8 @@ module API        #   "content": "IyA9PSBTY2hlbWEgSW5mb3...",        #   "ref": "master",        #   "blob_id": "79f7bbd25901e8334750839545a9bd021f0e4c83", -      #   "commit_id": "d5a3ff139356ce33e37e73add446f16869741b50" +      #   "commit_id": "d5a3ff139356ce33e37e73add446f16869741b50", +      #   "last_commit_id": "570e7b2abdd848b95f2f578043fc23bd6f6fd24d",        # }        #        get ":id/repository/files" do @@ -71,6 +72,7 @@ module API              ref: ref,              blob_id: blob.id,              commit_id: commit.id, +            last_commit_id: user_project.repository.last_commit_for_path(commit.sha, file_path).id            }          else            not_found! 'File' diff --git a/lib/backup/builds.rb b/lib/backup/builds.rb index 800f30c2144..635967f4bd4 100644 --- a/lib/backup/builds.rb +++ b/lib/backup/builds.rb @@ -1,3 +1,5 @@ +require 'backup/files' +  module Backup    class Builds < Files      def initialize diff --git a/lib/backup/uploads.rb b/lib/backup/uploads.rb index 0a0ec564ba4..9261f77f3c9 100644 --- a/lib/backup/uploads.rb +++ b/lib/backup/uploads.rb @@ -1,3 +1,5 @@ +require 'backup/files' +  module Backup    class Uploads < Files diff --git a/lib/ci/gitlab_ci_yaml_processor.rb b/lib/ci/gitlab_ci_yaml_processor.rb index efcd2faffc7..0f57a4f53ab 100644 --- a/lib/ci/gitlab_ci_yaml_processor.rb +++ b/lib/ci/gitlab_ci_yaml_processor.rb @@ -7,10 +7,11 @@ module Ci      ALLOWED_YAML_KEYS = [:before_script, :image, :services, :types, :stages, :variables]      ALLOWED_JOB_KEYS = [:tags, :script, :only, :except, :type, :image, :services, :allow_failure, :type, :stage, :when] -    attr_reader :before_script, :image, :services, :variables +    attr_reader :before_script, :image, :services, :variables, :path -    def initialize(config) +    def initialize(config, path = nil)        @config = YAML.load(config) +      @path = path        unless @config.is_a? Hash          raise ValidationError, "YAML should be a hash" @@ -63,26 +64,6 @@ module Ci        end      end -    def process?(only_params, except_params, ref, tag) -      return true if only_params.nil? && except_params.nil? - -      if only_params -        return true if tag && only_params.include?("tags") -        return true if !tag && only_params.include?("branches") -         -        only_params.find do |pattern| -          match_ref?(pattern, ref) -        end -      else -        return false if tag && except_params.include?("tags") -        return false if !tag && except_params.include?("branches") - -        except_params.each do |pattern| -          return false if match_ref?(pattern, ref) -        end -      end -    end -      def build_job(name, job)        {          stage_idx: stages.index(job[:stage]), @@ -101,14 +82,6 @@ module Ci        }      end -    def match_ref?(pattern, ref) -      if pattern.first == "/" && pattern.last == "/" -        Regexp.new(pattern[1...-1]) =~ ref -      else -        pattern == ref -      end -    end -      def normalize_script(script)        if script.is_a? Array          script.join("\n") @@ -208,5 +181,36 @@ module Ci      def validate_string(value)        value.is_a?(String) || value.is_a?(Symbol)      end + +    def process?(only_params, except_params, ref, tag) +      if only_params.present? +        return false unless matching?(only_params, ref, tag) +      end + +      if except_params.present? +        return false if matching?(except_params, ref, tag) +      end + +      true +    end + +    def matching?(patterns, ref, tag) +      patterns.any? do |pattern| +        match_ref?(pattern, ref, tag) +      end +    end + +    def match_ref?(pattern, ref, tag) +      pattern, path = pattern.split('@', 2) +      return false if path && path != self.path +      return true if tag && pattern == 'tags' +      return true if !tag && pattern == 'branches' + +      if pattern.first == "/" && pattern.last == "/" +        Regexp.new(pattern[1...-1]) =~ ref +      else +        pattern == ref +      end +    end    end  end diff --git a/lib/gitlab/project_search_results.rb b/lib/gitlab/project_search_results.rb index 0a2be605af9..70de6a74e76 100644 --- a/lib/gitlab/project_search_results.rb +++ b/lib/gitlab/project_search_results.rb @@ -20,6 +20,8 @@ module Gitlab          Kaminari.paginate_array(blobs).page(page).per(per_page)        when 'wiki_blobs'          Kaminari.paginate_array(wiki_blobs).page(page).per(per_page) +      when 'commits' +        Kaminari.paginate_array(commits).page(page).per(per_page)        else          super        end @@ -27,7 +29,7 @@ module Gitlab      def total_count        @total_count ||= issues_count + merge_requests_count + blobs_count + -                       notes_count + wiki_blobs_count +                       notes_count + wiki_blobs_count + commits_count      end      def blobs_count @@ -42,6 +44,10 @@ module Gitlab        @wiki_blobs_count ||= wiki_blobs.count      end +    def commits_count +      @commits_count ||= commits.count +    end +      private      def blobs @@ -70,6 +76,14 @@ module Gitlab        Note.where(project_id: limit_project_ids).user.search(query).order('updated_at DESC')      end +    def commits +      if project.empty_repo? || query.blank? +        [] +      else +        project.repository.find_commits_by_message(query).compact +      end +    end +      def limit_project_ids        [project.id]      end diff --git a/lib/tasks/spinach.rake b/lib/tasks/spinach.rake index c8881be0954..d5a96fd38f4 100644 --- a/lib/tasks/spinach.rake +++ b/lib/tasks/spinach.rake @@ -5,7 +5,7 @@ namespace :spinach do    task :project do      cmds = [        %W(rake gitlab:setup), -      %W(spinach --tags ~@admin,~@dashboard,~@profile,~@public,~@snippets), +      %W(spinach --tags ~@admin,~@dashboard,~@profile,~@public,~@snippets,~@commits),      ]      run_commands(cmds)    end @@ -14,7 +14,7 @@ namespace :spinach do    task :other do      cmds = [        %W(rake gitlab:setup), -      %W(spinach --tags @admin,@dashboard,@profile,@public,@snippets), +      %W(spinach --tags @admin,@dashboard,@profile,@public,@snippets,@commits),      ]      run_commands(cmds)    end @@ -33,4 +33,4 @@ def run_commands(cmds)    cmds.each do |cmd|      system({'RAILS_ENV' => 'test', 'force' => 'yes'}, *cmd) or raise("#{cmd} failed!")    end -end +end
\ No newline at end of file | 
