Tweak checking branches in Project#open_branches
This changes 4 things: 1. Project#protected_branches_names has been renamed to Project#protected_branch_names. 2. Project#open_branches uses a Set for the branch names as checking values in a Set is faster than checking values in a (large) Array. 3. Some redundant code in Project#open_branches has been removed. 4. Project#protected_branch_names now uses #pluck instead of #map, removing the need for loading entire DB records into memory.
This commit is contained in:
parent
e28d1fa3cc
commit
b6a18f1093
|
@ -1,6 +1,7 @@
|
|||
Please view this file on the master branch, on stable branches it's out of date.
|
||||
|
||||
v 8.8.0 (unreleased)
|
||||
- Project#open_branches has been cleaned up and no longer loads entire records into memory.
|
||||
- Make build status canceled if any of the jobs was canceled and none failed
|
||||
- Remove future dates from contribution calendar graph.
|
||||
- Use ActionDispatch Remote IP for Akismet checking
|
||||
|
|
|
@ -735,19 +735,17 @@ class Project < ActiveRecord::Base
|
|||
end
|
||||
|
||||
def open_branches
|
||||
all_branches = repository.branches
|
||||
# We're using a Set here as checking values in a large Set is faster than
|
||||
# checking values in a large Array.
|
||||
protected_set = Set.new(protected_branch_names)
|
||||
|
||||
if protected_branches.present?
|
||||
all_branches.reject! do |branch|
|
||||
protected_branches_names.include?(branch.name)
|
||||
end
|
||||
repository.branches.reject do |branch|
|
||||
protected_set.include?(branch.name)
|
||||
end
|
||||
|
||||
all_branches
|
||||
end
|
||||
|
||||
def protected_branches_names
|
||||
@protected_branches_names ||= protected_branches.map(&:name)
|
||||
def protected_branch_names
|
||||
@protected_branch_names ||= protected_branches.pluck(:name)
|
||||
end
|
||||
|
||||
def root_ref?(branch)
|
||||
|
|
Loading…
Reference in New Issue