Use Redis cache for branch existence checks
What does this MR do?
Repository#branch_exists? so that it uses
Repository#branch_names, which is cached in Redis.
Are there points in the code the reviewer needs to double check?
Why was this MR needed?
Memoizing in the Repository instance lead to a performance degradation. https://gitlab.com/gitlab-org/gitlab-ce/issues/40349.
Screenshots (if relevant)
Does this MR meet the acceptance criteria?
- Changelog entry added, if necessary
- Documentation created/updated
- API support added
- Tests added for this feature/bug
- Has been reviewed by UX
- Has been reviewed by Frontend
- Has been reviewed by Backend
- Has been reviewed by Database
- Conform by the merge request performance guides
- Conform by the style guides
- Squashed related commits together
- Internationalization required/considered