Optimize define_variables for create_deploy_token to avoid unnecessary data loading
## Summary
The `create_deploy_token` action in `Projects::Settings::RepositoryController` currently uses a `before_action :define_variables` callback that loads several variables that are not needed for creating deploy tokens. This causes unnecessary database queries and performance overhead.
## Problem
The `define_variables` method initializes:
- `@deploy_keys` - DeployKeysPresenter
- Deploy token variables (needed ✓)
- `tag_names` - Repository tag names
- `branch_names` - Repository branch names
- Protected refs (branches and tags with access levels)
- `remote_mirror` - First or initialized remote mirror
However, the `create_deploy_token` action only needs the deploy token variables. All other variables are loaded unnecessarily, especially when the action returns JSON responses (which is the common case).
## Current Code
```ruby
before_action :define_variables, only: [:create_deploy_token]
def create_deploy_token
result = Projects::DeployTokens::CreateService.new(@project, current_user, deploy_token_params).execute
# ... handles result and responds with JSON or HTML
end
def define_variables
@deploy_keys = DeployKeysPresenter.new(@project, current_user: current_user)
define_deploy_token_variables
tag_names
branch_names
define_protected_refs
remote_mirror
end
```
## Proposed Solution
Refactor to only load the variables actually needed by `create_deploy_token`:
1. Extract deploy token-specific variable initialization into a separate method
2. Update the `before_action` for `create_deploy_token` to only call the minimal required initialization
3. Keep `define_variables` for the `show` action which needs all variables
## Benefits
- Reduced database queries for deploy token creation
- Improved performance, especially for API/JSON requests
- Clearer separation of concerns between different controller actions
## Related
- Identified in MR !212444 review: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/212444#note_2893579426
issue