summaryrefslogtreecommitdiff
path: root/app/views
diff options
context:
space:
mode:
authorTimothy Andrew <mail@timothyandrew.net>2016-06-15 11:15:01 +0530
committerTimothy Andrew <mail@timothyandrew.net>2016-07-05 10:50:34 +0530
commitf51af496769f2fe181d4633f810b85103efd181e (patch)
treeb95805a0f52389d752174948434f0196d2194ba6 /app/views
parentba9ef7f3935cfaa42fcdb2317567cc383c7e9c22 (diff)
downloadgitlab-ce-f51af496769f2fe181d4633f810b85103efd181e.tar.gz
Support wildcard matches for protected branches at the model level.
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.
Diffstat (limited to 'app/views')
0 files changed, 0 insertions, 0 deletions