Mirroring interface improvements
Push and pull mirroring have similar but quite separate interfaces. This makes it difficult to configure bi-directional mirroring. It would be much more convenient to be able to configure push and pull mirroring in the same interface
Also the backend supports multiple push mirroring locations but the current interface only permits one. It would be ideal for the new interface to support this capability.
Additionally, the interfaces for authentication are inconsistent. Particularly the way credentials for HTTP are input. We should make sure they are collected in form fields, not the URL, so that once the password is set it cannot be retrieved from the interface.
Proposal
- Allow project owners and admins to configure one pull mirror
- Allow project owners and admins to configure multiple push mirrors
- Consolidate push and pull mirroring into a single mirroring interface
- Allow username and password to be set in form fields (not the URL) for push mirroring. This is already implemented for pull mirroring.
Design
Rather than having two separate areas for configuring push and pull mirroring to make bidirectional mirroring work, I think it would make more sense to have single Mirroring area, where I can add the details of the repos I can mirror to and from.
Perhaps it might be a list of repositories, that the user can add and remove repos from.
------------------------------------------------------------
https://github.com/gitlab/example.git [ pull ]
Protect branches only - Last updated 2 minutes ago
------------------------------------------------------------
https://internal.com/example/example.git [ push ]
All branches - Last updated 5 minutes ago
------------------------------------------------------------
https://example.com/foo/bar.git [ push ]
All branches - Last updated 5 minutes ago
------------------------------------------------------------
There would need to be way add, edit and remove mirrors.
Links / references
https://gitlab.com/gitlab-org/gitlab-ee/issues/3745
Design
As this is such a difficult complicated piece of UI (many different states), I thought it best to show this off as a prototype rather than static mockups.
This is the interactive url: https://framer.cloud/MWgDp/index.html
Gif preview (doesn't do it justice, as there are so many states):
Note: Appear in and appear out animations are appreciated if it can be made to look good