Integrate new Vue mirror table
What does this MR do and why?
Contributes to #595303
Problem
The final step of the Haml to Vue migration for mirror
repositories wires the MirrorTable component into the
repository settings page.
Solution
- Wire
mountMirrorTableinto the CE and EE repository settings pages behind thevue_mirror_tablefeature flag, keeping the legacy HAML table when the flag is disabled. - Add frontend, helper, and view specs covering the new path.
References
Add enabled/disabled toggle for push mirrors in... (#595303)
Screenshots or screen recordings
| Before | After |
|---|---|
![]() |
![]() |
How to set up and validate locally
This change is behind the vue_mirror_table feature flag (disabled by default).
- Enable the feature flag in a Rails console:
Feature.enable(:vue_mirror_table) - Go to a project's Settings > Repository and expand the Mirroring repositories section.
- Add one or more push mirrors (and, on EE with the
repository_mirrorslicense, a pull mirror) and confirm the new Vue table renders with:- Repository URL, Direction, Last update attempt, Last successful update, Status, and Actions columns populated correctly (timestamps show a relative time, not "Never", once a sync has run).
- On EE: the branch-settings badge appears when a branch filter is set, and the pull mirror row appears with the correct direction.
- Exercise the row actions and confirm they work and reflect state:
- Update now triggers a sync.
- Disable/Enable toggles a push mirror.
- Remove deletes the mirror (deleting the pull mirror re-enables the mirror direction selector in the form).
- Verify the empty state ("There are currently no mirrored repositories.") shows when no mirrors exist.
- Disable the flag (
Feature.disable(:vue_mirror_table)) and confirm the legacy HAML table still renders unchanged.
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Edited by Vasilii Iakliushin

