BigW Consortium Gitlab
1. The main implementation is in the `ProtectedBranch` model. The wildcard is converted to a Regex and compared. This has been tested thoroughly. - While `Project#protected_branch?` is the main entry point, `project#open_branches` and `project#developers_can_push_to_protected_branch?` have also been modified to work with wildcard protected branches. - The regex is memoized (within the `ProtectedBranch` instance) 2. Improve the performance of `Project#protected_branch?` - This method is called from `Project#open_branches` once _per branch_ in the project, to check if that branch is protected or not. - Before, `#protected_branch?` was making a database call every time it was invoked (in the above case, that amounts to once per branch), which is expensive. - This commit caches the list of protected branches in memory, which reduces the number of database calls down to 1. - A downside to this approach is that `#protected_branch?` _could_ return a stale value (due to the caching), but this is an acceptable tradeoff. 3. Remove the (now) unused `Project#protected_branch_names` method. - This was previously used to check for protected branch status.
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
ci | Loading commit data... | |
concerns | Loading commit data... | |
hooks | Loading commit data... | |
members | Loading commit data... | |
project_services | Loading commit data... | |
ability_spec.rb | Loading commit data... | |
abuse_report_spec.rb | Loading commit data... | |
appearance_spec.rb | Loading commit data... | |
application_setting_spec.rb | Loading commit data... | |
award_emoji_spec.rb | Loading commit data... | |
blob_spec.rb | Loading commit data... | |
broadcast_message_spec.rb | Loading commit data... | |
build_spec.rb | Loading commit data... | |
commit_range_spec.rb | Loading commit data... | |
commit_spec.rb | Loading commit data... | |
commit_status_spec.rb | Loading commit data... | |
deploy_key_spec.rb | Loading commit data... | |
deploy_keys_project_spec.rb | Loading commit data... | |
deployment_spec.rb | Loading commit data... | |
email_spec.rb | Loading commit data... | |
environment_spec.rb | Loading commit data... | |
event_spec.rb | Loading commit data... | |
external_issue_spec.rb | Loading commit data... | |
forked_project_link_spec.rb | Loading commit data... | |
generic_commit_status_spec.rb | Loading commit data... | |
global_milestone_spec.rb | Loading commit data... | |
group_spec.rb | Loading commit data... | |
identity_spec.rb | Loading commit data... | |
issue_spec.rb | Loading commit data... | |
key_spec.rb | Loading commit data... | |
label_link_spec.rb | Loading commit data... | |
label_spec.rb | Loading commit data... | |
legacy_diff_note_spec.rb | Loading commit data... | |
member_spec.rb | Loading commit data... | |
merge_request_spec.rb | Loading commit data... | |
milestone_spec.rb | Loading commit data... | |
namespace_spec.rb | Loading commit data... | |
note_spec.rb | Loading commit data... | |
notification_setting_spec.rb | Loading commit data... | |
personal_access_token_spec.rb | Loading commit data... | |
project_group_link_spec.rb | Loading commit data... | |
project_security_spec.rb | Loading commit data... | |
project_snippet_spec.rb | Loading commit data... | |
project_spec.rb | Loading commit data... | |
project_team_spec.rb | Loading commit data... | |
project_wiki_spec.rb | Loading commit data... | |
protected_branch_spec.rb | Loading commit data... | |
release_spec.rb | Loading commit data... | |
repository_spec.rb | Loading commit data... | |
service_spec.rb | Loading commit data... | |
snippet_spec.rb | Loading commit data... | |
spam_log_spec.rb | Loading commit data... | |
todo_spec.rb | Loading commit data... | |
tree_spec.rb | Loading commit data... | |
user_spec.rb | Loading commit data... | |
wiki_page_spec.rb | Loading commit data... |