diff options
author | Yorick Peterse <yorickpeterse@gmail.com> | 2016-05-09 09:48:28 +0000 |
---|---|---|
committer | Yorick Peterse <yorickpeterse@gmail.com> | 2016-05-09 09:48:28 +0000 |
commit | 0a103e983cccc9bb9a7a28fb4eacff8d624010f8 (patch) | |
tree | fe2bd0071bccf95cb803e124ed077ba45468cac3 /lib | |
parent | 7d95d3cde79683fda221e3108d80e7d1fe86e81a (diff) | |
parent | 4be77d0b057e3b26f48fbaee947bf8f91a755f41 (diff) | |
download | gitlab-ce-0a103e983cccc9bb9a7a28fb4eacff8d624010f8.tar.gz |
Merge branch 'improve-multiple-branch-push-performance' into 'master'
Improve multiple branch push performance by memoizing permission checking
See merge request !4091
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/git_access.rb | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/gitlab/git_access.rb b/lib/gitlab/git_access.rb index 6cb41239871..d2a0e316cbe 100644 --- a/lib/gitlab/git_access.rb +++ b/lib/gitlab/git_access.rb @@ -122,6 +122,11 @@ module Gitlab build_status_object(true) end + def can_user_do_action?(action) + @permission_cache ||= {} + @permission_cache[action] ||= user.can?(action, project) + end + def change_access_check(change) oldrev, newrev, ref = change.split(' ') @@ -135,7 +140,7 @@ module Gitlab :push_code end - unless user.can?(action, project) + unless can_user_do_action?(action) status = case action when :force_push_code_to_protected_branches |