Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Edwards-Jones <jedwardsjones@gitlab.com>2017-03-16 01:29:07 +0300
committerJames Edwards-Jones <jedwardsjones@gitlab.com>2017-03-31 21:37:01 +0300
commit91ed8ed687ee9edbda0098475e66ad41f886d7a5 (patch)
tree7a446fa1048484d2ccb25a37e7ce650884b7d76f /app/models/protected_branch.rb
parent1a416a42f1c1b876ecd96687e41696bc915cc2c2 (diff)
Protected tags copy/paste from protected branches
Should provide basic CRUD backend for frontend to work from. Doesn’t include frontend, API, or the internal API used from gitlab-shell
Diffstat (limited to 'app/models/protected_branch.rb')
-rw-r--r--app/models/protected_branch.rb39
1 files changed, 7 insertions, 32 deletions
diff --git a/app/models/protected_branch.rb b/app/models/protected_branch.rb
index 39e979ef15b..7681d5b5112 100644
--- a/app/models/protected_branch.rb
+++ b/app/models/protected_branch.rb
@@ -18,50 +18,25 @@ class ProtectedBranch < ActiveRecord::Base
project.commit(self.name)
end
- # Returns all protected branches that match the given branch name.
- # This realizes all records from the scope built up so far, and does
- # _not_ return a relation.
- #
- # This method optionally takes in a list of `protected_branches` to search
- # through, to avoid calling out to the database.
def self.matching(branch_name, protected_branches: nil)
- (protected_branches || all).select { |protected_branch| protected_branch.matches?(branch_name) }
+ ProtectedRefMatcher.matching(ProtectedBranch, branch_name, protected_refs: protected_branches)
end
- # Returns all branches (among the given list of branches [`Gitlab::Git::Branch`])
- # that match the current protected branch.
def matching(branches)
- branches.select { |branch| self.matches?(branch.name) }
+ ref_matcher.matching(branches)
end
- # Checks if the protected branch matches the given branch name.
def matches?(branch_name)
- return false if self.name.blank?
-
- exact_match?(branch_name) || wildcard_match?(branch_name)
+ ref_matcher.matches?(branch_name)
end
- # Checks if this protected branch contains a wildcard
def wildcard?
- self.name && self.name.include?('*')
+ ref_matcher.wildcard?
end
- protected
-
- def exact_match?(branch_name)
- self.name == branch_name
- end
-
- def wildcard_match?(branch_name)
- wildcard_regex === branch_name
- end
+ private
- def wildcard_regex
- @wildcard_regex ||= begin
- name = self.name.gsub('*', 'STAR_DONT_ESCAPE')
- quoted_name = Regexp.quote(name)
- regex_string = quoted_name.gsub('STAR_DONT_ESCAPE', '.*?')
- /\A#{regex_string}\z/
- end
+ def ref_matcher
+ @ref_matcher ||= ProtectedRefMatcher.new(self)
end
end