GitLab Migration - Select multiple top groups for bulk import
Problem to solve
When managing the migration of many groups, it is tedious to have to click the individual Import
buttons for each group.
Proposed Solution
We will introduce a reusable solution, which will include:
- simple checkboxes for selecting rows:
- tri-state checkbox for "Select all":
- Removal of "Import all" button and replacing it with "Import selected" logic (import all on the page will require two clicks - clicking "select all" and "import selected" which feels like ok trade-off for me while keeping UI simple and making sure we're not providing too many ways to do the same thing
All of this will be done as a part of gitlab-ui component or shared gitlab component and will be communicated to the teams, who might be interested in that (according to gitlab-design#1444 (closed))
Outside of scope for first iteration:
- Adding "import all on current page" vs "import all repositories"
Since this will require backend support for ~"group::import" I will suggest splitting this part to prevent issue growing too big
- Select more than one top group to migrate (using checkboxes).
- CTA should state
Import xx groups
. - CTA would be disabled if no groups are selected.
- CTA would be clickable as long as there are groups selected for import.
- Clicking the button would be equivalent to clicking all the individual
Import
buttons for each selected group. - If an individual import is triggered, that group would no longer be selectable and the
xx
would be updated. - If an individual group import is in progress, that group is no longer selectable for
Import all
.
Out of scope
- This solution does not implement the ability to import more groups than are visible on the page - this will be a separate issue. - TBD
- This solution still only shows the top-level groups from the source instance. Subgroups are not available for individual import. The ability to select subgroups is in this issue - #267952
Testing
- Update existing e2e test bulk_import to validate new behaviour.
This page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.